一键导入
mint-css-preloader
Shimmer/placeholder loading animations for skeleton screens. Use for loading states, content placeholders, or skeleton UI during data fetching.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Shimmer/placeholder loading animations for skeleton screens. Use for loading states, content placeholders, or skeleton UI during data fetching.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Accordion component with collapsible sections. Use for FAQs, nested content, or expandable details sections.
Button component with variants, sizes, loading states, and icon support. Use when creating clickable actions, forms, or navigation buttons.
Calendar component for date and month selection. Use when building date pickers, scheduling interfaces, or date range selectors.
Carousel component for image/content sliders with navigation controls. Use for image galleries, hero sections, or content that scrolls horizontally.
Checkbox component for boolean or multi-select inputs. Use when building forms with boolean toggles or multiple selection lists.
Dropdown menu component with trigger and content pattern. Use when building selectable menus, action menus, or nested navigation.
| name | mint-css-preloader |
| description | Shimmer/placeholder loading animations for skeleton screens. Use for loading states, content placeholders, or skeleton UI during data fetching. |
import '@groww-tech/mint-css/dist/index.css';
/* or specific */
@import '@groww-tech/mint-css/dist/base/preloader.css';
The shimmer effect creates placeholder animations that indicate loading:
ph-item (container)
├── ph-row (row 1)
│ ├── ph-col-2/4/6/8/10/12 (columns)
│ └── ph-avatar (optional)
├── ph-row (row 2)
└── ph-picture (optional)
| Class | Description |
|---|---|
.ph-item | Placeholder item container |
.ph-item::before | Shimmer animation base |
| Class | Description |
|---|---|
.ph-row | Row placeholder container |
.ph-row div | Individual row elements |
| Class | Description |
|---|---|
.ph-col-2 | 2 column width (16.66%) |
.ph-col-4 | 4 column width (33.33%) |
.ph-col-6 | 6 column width (50%) |
.ph-col-8 | 8 column width (66.66%) |
.ph-col-10 | 10 column width (83.33%) |
.ph-col-12 | 12 column width (100%) |
| Class | Description |
|---|---|
.ph-avatar | Avatar placeholder |
.ph-picture | Image/picture placeholder |
.ph-row .big | Big placeholder element |
.ph-row .empty | Empty placeholder |
<div class="ph-item">
<div class="ph-row">
<div class="ph-col-12">
<div class="ph-picture"></div>
</div>
</div>
<div class="ph-row">
<div class="ph-col-8">
<div class="ph-row big"></div>
</div>
</div>
<div class="ph-row">
<div class="ph-col-6"></div>
</div>
</div>
<div class="ph-item">
<div class="ph-row">
<div class="ph-col-12"></div>
</div>
<div class="ph-row">
<div class="ph-col-12"></div>
</div>
<div class="ph-row">
<div class="ph-col-8"></div>
</div>
</div>
<div class="ph-item" style="display: flex; gap: 16px;">
<div class="ph-avatar" style="width: 48px; height: 48px;"></div>
<div style="flex: 1;">
<div class="ph-row">
<div class="ph-col-6"></div>
</div>
<div class="ph-row">
<div class="ph-col-4"></div>
</div>
</div>
</div>
<!-- Item 1 -->
<div class="ph-item">
<div class="ph-row">
<div class="ph-avatar"></div>
<div class="ph-col-10">
<div class="ph-row big"></div>
<div class="ph-row"></div>
</div>
</div>
</div>
<!-- Repeat for more items -->
<div class="ph-item">
<!-- Header -->
<div class="ph-row">
<div class="ph-col-3"></div>
<div class="ph-col-3"></div>
<div class="ph-col-3"></div>
<div class="ph-col-3"></div>
</div>
<!-- Rows -->
<div class="ph-row">
<div class="ph-col-3"></div>
<div class="ph-col-3"></div>
<div class="ph-col-3"></div>
<div class="ph-col-3"></div>
</div>
<!-- More rows... -->
</div>
<div class="ph-item">
<div class="ph-row">
<div class="ph-picture" style="height: 150px;"></div>
</div>
<div class="ph-row">
<div class="ph-col-10 big"></div>
</div>
<div class="ph-row">
ph-col-6"></div>
<div class=" </div>
<div class="ph-row">
<div class="ph-col-4"></div>
</div>
</div>
The shimmer effect uses CSS animation:
.ph-item::before {
background: linear-gradient(
90deg,
rgba(0, 0, 0, 0.06) 0%,
rgba(0, 0, 0, 0.1) 50%,
rgba(0, 0, 0, 0.06) 100%
);
/* Animation applied */
}
const SkeletonCard = () => (
<div className="ph-item">
<div className="ph-row">
<div className="ph-picture" style={{ height: 150 }} />
</div>
<div className="ph-row">
<div className="ph-col-10 big" />
</div>
<div className="ph-row">
<div className="ph-col-6" />
</div>
</div>
);
const ProductList = ({ loading }) => {
if (loading) {
return (
<div style={{ display: 'grid', gap: 16 }}>
<SkeletonCard />
<SkeletonCard />
<SkeletonCard />
</div>
);
}
return <ProductList />;
};