@windstream/react-shared-components 0.0.10 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +623 -623
- package/dist/contentful/index.d.ts +6 -2
- package/dist/contentful/index.esm.js +1 -1
- package/dist/contentful/index.esm.js.map +1 -1
- package/dist/contentful/index.js +1 -1
- package/dist/contentful/index.js.map +1 -1
- package/dist/core.d.ts +5 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +159 -159
- package/src/components/accordion/Accordion.stories.tsx +225 -225
- package/src/components/accordion/index.tsx +36 -36
- package/src/components/accordion/types.ts +9 -9
- package/src/components/alert-card/types.ts +9 -9
- package/src/components/brand-button/BrandButton.stories.tsx +221 -221
- package/src/components/brand-button/helpers.ts +35 -35
- package/src/components/brand-button/index.tsx +90 -90
- package/src/components/brand-button/types.ts +26 -26
- package/src/components/button/Button.stories.tsx +108 -108
- package/src/components/button/index.tsx +23 -23
- package/src/components/button/types.ts +14 -14
- package/src/components/call-button/CallButton.stories.tsx +324 -324
- package/src/components/call-button/index.tsx +80 -80
- package/src/components/call-button/types.ts +9 -9
- package/src/components/checkbox/Checkbox.stories.tsx +248 -248
- package/src/components/checkbox/types.ts +23 -23
- package/src/components/checklist/Checklist.stories.tsx +151 -151
- package/src/components/checklist/index.tsx +33 -33
- package/src/components/checklist/types.ts +5 -5
- package/src/components/collapse/Collapse.stories.tsx +256 -256
- package/src/components/collapse/index.tsx +44 -44
- package/src/components/collapse/types.ts +5 -5
- package/src/components/divider/Divider.stories.tsx +206 -206
- package/src/components/divider/index.tsx +23 -23
- package/src/components/divider/type.ts +2 -2
- package/src/components/input/Input.stories.tsx +358 -358
- package/src/components/input/index.tsx +174 -174
- package/src/components/input/types.ts +36 -36
- package/src/components/link/Link.stories.tsx +163 -163
- package/src/components/link/index.tsx +96 -96
- package/src/components/link/types.ts +25 -25
- package/src/components/list/List.stories.tsx +272 -272
- package/src/components/list/index.tsx +86 -86
- package/src/components/list/list-item/index.tsx +36 -36
- package/src/components/list/list-item/types.ts +13 -13
- package/src/components/list/types.ts +29 -29
- package/src/components/material-icon/MaterialIcon.stories.tsx +330 -330
- package/src/components/material-icon/constants.ts +95 -95
- package/src/components/material-icon/index.tsx +44 -44
- package/src/components/material-icon/types.ts +31 -31
- package/src/components/modal/Modal.stories.tsx +171 -171
- package/src/components/modal/index.tsx +168 -168
- package/src/components/modal/types.ts +23 -23
- package/src/components/radio-button/index.tsx +73 -73
- package/src/components/radio-button/types.ts +21 -21
- package/src/components/see-more/SeeMore.stories.tsx +182 -182
- package/src/components/see-more/index.tsx +38 -38
- package/src/components/see-more/types.ts +3 -3
- package/src/components/select/Select.stories.tsx +410 -410
- package/src/components/select/index.tsx +150 -150
- package/src/components/select/types.ts +34 -34
- package/src/components/select-plan-button/SelectPlanButton.stories.tsx +160 -160
- package/src/components/select-plan-button/index.tsx +20 -20
- package/src/components/select-plan-button/types.ts +3 -3
- package/src/components/skeleton/Skeleton.stories.tsx +180 -180
- package/src/components/skeleton/index.tsx +61 -61
- package/src/components/skeleton/types.ts +3 -3
- package/src/components/spinner/Spinner.stories.tsx +335 -335
- package/src/components/spinner/index.tsx +44 -44
- package/src/components/spinner/types.ts +4 -4
- package/src/components/text/Text.stories.tsx +302 -302
- package/src/components/text/index.tsx +26 -26
- package/src/components/text/types.ts +45 -45
- package/src/components/tooltip/Tooltip.stories.tsx +220 -220
- package/src/components/tooltip/index.tsx +78 -78
- package/src/components/tooltip/types.ts +6 -6
- package/src/components/view-cart-button/ViewCartButton.stories.tsx +241 -241
- package/src/components/view-cart-button/index.tsx +38 -38
- package/src/components/view-cart-button/types.ts +4 -4
- package/src/contentful/blocks/accordion/index.tsx +7 -7
- package/src/contentful/blocks/button/index.tsx +5 -5
- package/src/contentful/blocks/callout/index.tsx +7 -7
- package/src/contentful/blocks/cards/index.tsx +7 -7
- package/src/contentful/blocks/carousel/index.tsx +7 -7
- package/src/contentful/blocks/cta-callout/index.tsx +6 -0
- package/src/contentful/blocks/cta-callout/types.ts +1 -0
- package/src/contentful/blocks/floating-banner/index.tsx +7 -7
- package/src/contentful/blocks/footer/index.tsx +7 -7
- package/src/contentful/blocks/image-promo-bar/index.tsx +7 -7
- package/src/contentful/blocks/modal/index.tsx +5 -5
- package/src/contentful/blocks/navigation/index.tsx +7 -7
- package/src/contentful/blocks/primary-hero/index.tsx +7 -7
- package/src/contentful/blocks/shape-background-wrapper/index.tsx +123 -123
- package/src/contentful/blocks/shape-background-wrapper/types.ts +35 -35
- package/src/contentful/blocks/text/index.tsx +6 -6
- package/src/contentful/index.ts +4 -1
- package/src/hooks/use-body-scroll-lock.ts +31 -31
- package/src/index.ts +81 -81
- package/src/setupTests.ts +46 -46
- package/src/styles/globals.css +275 -319
- package/src/types/global.d.ts +9 -9
- package/src/utils/index.ts +49 -49
|
@@ -1,330 +1,330 @@
|
|
|
1
|
-
import { MaterialIcon } from "./index";
|
|
2
|
-
import { DocsPage } from "@shared/stories/DocsTemplate";
|
|
3
|
-
|
|
4
|
-
import type { Meta, StoryObj } from "@storybook/react";
|
|
5
|
-
|
|
6
|
-
const meta: Meta<typeof MaterialIcon> = {
|
|
7
|
-
title: "Components/MaterialIcon",
|
|
8
|
-
component: MaterialIcon,
|
|
9
|
-
tags: ["autodocs"],
|
|
10
|
-
parameters: {
|
|
11
|
-
layout: "centered",
|
|
12
|
-
docs: {
|
|
13
|
-
page: DocsPage,
|
|
14
|
-
description: {
|
|
15
|
-
component:
|
|
16
|
-
"Material Design icon component with customizable size, color, and styling.",
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
argTypes: {
|
|
21
|
-
name: {
|
|
22
|
-
control: { type: "select" },
|
|
23
|
-
options: [
|
|
24
|
-
"home",
|
|
25
|
-
"search",
|
|
26
|
-
"check",
|
|
27
|
-
"settings",
|
|
28
|
-
"groups",
|
|
29
|
-
"mail",
|
|
30
|
-
"call",
|
|
31
|
-
"info",
|
|
32
|
-
],
|
|
33
|
-
description: "Material icon name",
|
|
34
|
-
},
|
|
35
|
-
size: {
|
|
36
|
-
control: { type: "select" },
|
|
37
|
-
options: [20, 24, 32, 40, 48],
|
|
38
|
-
description: "Icon size",
|
|
39
|
-
},
|
|
40
|
-
weight: {
|
|
41
|
-
control: { type: "select" },
|
|
42
|
-
options: [100, 200, 300, 400, 500, 600, 700],
|
|
43
|
-
description: "Icon weight",
|
|
44
|
-
},
|
|
45
|
-
color: {
|
|
46
|
-
control: { type: "color" },
|
|
47
|
-
description: "Icon color",
|
|
48
|
-
},
|
|
49
|
-
className: {
|
|
50
|
-
control: { type: "text" },
|
|
51
|
-
description: "Additional CSS classes",
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
args: {
|
|
55
|
-
name: "home",
|
|
56
|
-
size: 24,
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
export default meta;
|
|
61
|
-
type Story = StoryObj<typeof meta>;
|
|
62
|
-
|
|
63
|
-
// Default icon
|
|
64
|
-
export const Default: Story = {
|
|
65
|
-
args: {},
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
// Different sizes
|
|
69
|
-
export const Sizes: Story = {
|
|
70
|
-
render: () => (
|
|
71
|
-
<div className="flex items-center gap-6">
|
|
72
|
-
<div className="text-center">
|
|
73
|
-
<MaterialIcon name="home" size={20} />
|
|
74
|
-
<p className="mt-1 text-xs">20px</p>
|
|
75
|
-
</div>
|
|
76
|
-
<div className="text-center">
|
|
77
|
-
<MaterialIcon name="home" size={24} />
|
|
78
|
-
<p className="mt-1 text-xs">24px</p>
|
|
79
|
-
</div>
|
|
80
|
-
<div className="text-center">
|
|
81
|
-
<MaterialIcon name="home" size={40} />
|
|
82
|
-
<p className="mt-1 text-xs">40px</p>
|
|
83
|
-
</div>
|
|
84
|
-
<div className="text-center">
|
|
85
|
-
<MaterialIcon name="home" size={48} />
|
|
86
|
-
<p className="mt-1 text-xs">48px</p>
|
|
87
|
-
</div>
|
|
88
|
-
</div>
|
|
89
|
-
),
|
|
90
|
-
parameters: {
|
|
91
|
-
docs: {
|
|
92
|
-
description: {
|
|
93
|
-
story: "All available icon sizes.",
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
},
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
// Common icons
|
|
100
|
-
export const CommonIcons: Story = {
|
|
101
|
-
render: () => (
|
|
102
|
-
<div className="grid grid-cols-4 gap-4">
|
|
103
|
-
<div className="rounded-lg border p-4 text-center">
|
|
104
|
-
<MaterialIcon name="home" size={40} />
|
|
105
|
-
<p className="mt-2 text-sm">home</p>
|
|
106
|
-
</div>
|
|
107
|
-
<div className="rounded-lg border p-4 text-center">
|
|
108
|
-
<MaterialIcon name="search" size={40} />
|
|
109
|
-
<p className="mt-2 text-sm">search</p>
|
|
110
|
-
</div>
|
|
111
|
-
<div className="rounded-lg border p-4 text-center">
|
|
112
|
-
<MaterialIcon name="check" size={40} />
|
|
113
|
-
<p className="mt-2 text-sm">check</p>
|
|
114
|
-
</div>
|
|
115
|
-
<div className="rounded-lg border p-4 text-center">
|
|
116
|
-
<MaterialIcon name="settings" size={40} />
|
|
117
|
-
<p className="mt-2 text-sm">settings</p>
|
|
118
|
-
</div>
|
|
119
|
-
<div className="rounded-lg border p-4 text-center">
|
|
120
|
-
<MaterialIcon name="groups" size={40} />
|
|
121
|
-
<p className="mt-2 text-sm">groups</p>
|
|
122
|
-
</div>
|
|
123
|
-
<div className="rounded-lg border p-4 text-center">
|
|
124
|
-
<MaterialIcon name="mail" size={40} />
|
|
125
|
-
<p className="mt-2 text-sm">mail</p>
|
|
126
|
-
</div>
|
|
127
|
-
<div className="rounded-lg border p-4 text-center">
|
|
128
|
-
<MaterialIcon name="call" size={40} />
|
|
129
|
-
<p className="mt-2 text-sm">call</p>
|
|
130
|
-
</div>
|
|
131
|
-
<div className="rounded-lg border p-4 text-center">
|
|
132
|
-
<MaterialIcon name="info" size={40} />
|
|
133
|
-
<p className="mt-2 text-sm">info</p>
|
|
134
|
-
</div>
|
|
135
|
-
</div>
|
|
136
|
-
),
|
|
137
|
-
parameters: {
|
|
138
|
-
docs: {
|
|
139
|
-
description: {
|
|
140
|
-
story: "Common Material Design icons.",
|
|
141
|
-
},
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
// Colored icons
|
|
147
|
-
export const ColoredIcons: Story = {
|
|
148
|
-
render: () => (
|
|
149
|
-
<div className="grid grid-cols-4 gap-4">
|
|
150
|
-
<div className="text-center">
|
|
151
|
-
<MaterialIcon name="check" size={40} color="#ef4444" />
|
|
152
|
-
<p className="mt-2 text-sm text-red-500">Red</p>
|
|
153
|
-
</div>
|
|
154
|
-
<div className="text-center">
|
|
155
|
-
<MaterialIcon name="check_circle" size={40} color="#10b981" />
|
|
156
|
-
<p className="mt-2 text-sm text-green-500">Green</p>
|
|
157
|
-
</div>
|
|
158
|
-
<div className="text-center">
|
|
159
|
-
<MaterialIcon name="info" size={40} color="#3b82f6" />
|
|
160
|
-
<p className="mt-2 text-sm text-blue-500">Blue</p>
|
|
161
|
-
</div>
|
|
162
|
-
<div className="text-center">
|
|
163
|
-
<MaterialIcon name="error" size={40} color="#f59e0b" />
|
|
164
|
-
<p className="mt-2 text-sm text-yellow-500">Yellow</p>
|
|
165
|
-
</div>
|
|
166
|
-
</div>
|
|
167
|
-
),
|
|
168
|
-
parameters: {
|
|
169
|
-
docs: {
|
|
170
|
-
description: {
|
|
171
|
-
story: "Icons with different colors.",
|
|
172
|
-
},
|
|
173
|
-
},
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
// Icon with text
|
|
178
|
-
export const IconWithText: Story = {
|
|
179
|
-
render: () => (
|
|
180
|
-
<div className="space-y-4">
|
|
181
|
-
<div className="flex items-center gap-2">
|
|
182
|
-
<MaterialIcon name="mail" />
|
|
183
|
-
<span>Email notifications</span>
|
|
184
|
-
</div>
|
|
185
|
-
<div className="flex items-center gap-2">
|
|
186
|
-
<MaterialIcon name="call" />
|
|
187
|
-
<span>Phone support</span>
|
|
188
|
-
</div>
|
|
189
|
-
<div className="flex items-center gap-2">
|
|
190
|
-
<MaterialIcon name="forum" />
|
|
191
|
-
<span>Live chat</span>
|
|
192
|
-
</div>
|
|
193
|
-
<div className="flex items-center gap-2">
|
|
194
|
-
<MaterialIcon name="help" />
|
|
195
|
-
<span>Help center</span>
|
|
196
|
-
</div>
|
|
197
|
-
</div>
|
|
198
|
-
),
|
|
199
|
-
parameters: {
|
|
200
|
-
docs: {
|
|
201
|
-
description: {
|
|
202
|
-
story: "Icons used alongside text content.",
|
|
203
|
-
},
|
|
204
|
-
},
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
|
|
208
|
-
// Interactive icons
|
|
209
|
-
export const InteractiveIcons: Story = {
|
|
210
|
-
render: () => (
|
|
211
|
-
<div className="grid grid-cols-3 gap-4">
|
|
212
|
-
<button className="rounded-lg border p-3 transition-colors hover:bg-gray-50">
|
|
213
|
-
<MaterialIcon name="check_box_outline_blank" size={40} />
|
|
214
|
-
<p className="mt-2 text-sm">Like</p>
|
|
215
|
-
</button>
|
|
216
|
-
<button className="rounded-lg border p-3 transition-colors hover:bg-gray-50">
|
|
217
|
-
<MaterialIcon name="share" size={40} />
|
|
218
|
-
<p className="mt-2 text-sm">Share</p>
|
|
219
|
-
</button>
|
|
220
|
-
<button className="rounded-lg border p-3 transition-colors hover:bg-gray-50">
|
|
221
|
-
<MaterialIcon name="check" size={40} />
|
|
222
|
-
<p className="mt-2 text-sm">Bookmark</p>
|
|
223
|
-
</button>
|
|
224
|
-
</div>
|
|
225
|
-
),
|
|
226
|
-
parameters: {
|
|
227
|
-
docs: {
|
|
228
|
-
description: {
|
|
229
|
-
story: "Interactive icon buttons.",
|
|
230
|
-
},
|
|
231
|
-
},
|
|
232
|
-
},
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
// Status icons
|
|
236
|
-
export const StatusIcons: Story = {
|
|
237
|
-
render: () => (
|
|
238
|
-
<div className="grid grid-cols-4 gap-4">
|
|
239
|
-
<div className="text-center">
|
|
240
|
-
<MaterialIcon name="check_circle" size={40} />
|
|
241
|
-
<p className="mt-2 text-sm text-green-600">Success</p>
|
|
242
|
-
</div>
|
|
243
|
-
<div className="text-center">
|
|
244
|
-
<MaterialIcon name="error" size={40} />
|
|
245
|
-
<p className="mt-2 text-sm text-red-600">Error</p>
|
|
246
|
-
</div>
|
|
247
|
-
<div className="text-center">
|
|
248
|
-
<MaterialIcon name="error" size={40} />
|
|
249
|
-
<p className="mt-2 text-sm text-yellow-600">Warning</p>
|
|
250
|
-
</div>
|
|
251
|
-
<div className="text-center">
|
|
252
|
-
<MaterialIcon name="info" size={40} />
|
|
253
|
-
<p className="mt-2 text-sm text-blue-600">Info</p>
|
|
254
|
-
</div>
|
|
255
|
-
</div>
|
|
256
|
-
),
|
|
257
|
-
parameters: {
|
|
258
|
-
docs: {
|
|
259
|
-
description: {
|
|
260
|
-
story: "Status and feedback icons.",
|
|
261
|
-
},
|
|
262
|
-
},
|
|
263
|
-
},
|
|
264
|
-
};
|
|
265
|
-
|
|
266
|
-
// All sizes showcase
|
|
267
|
-
export const AllSizes: Story = {
|
|
268
|
-
render: () => (
|
|
269
|
-
<div className="space-y-6">
|
|
270
|
-
<div>
|
|
271
|
-
<h3 className="mb-3 text-lg font-semibold">Icon Sizes</h3>
|
|
272
|
-
<div className="flex items-center gap-6">
|
|
273
|
-
<div className="text-center">
|
|
274
|
-
<MaterialIcon name="check" size={20} />
|
|
275
|
-
<p className="mt-1 text-xs">Small</p>
|
|
276
|
-
</div>
|
|
277
|
-
<div className="text-center">
|
|
278
|
-
<MaterialIcon name="check" size={24} />
|
|
279
|
-
<p className="mt-1 text-xs">Medium</p>
|
|
280
|
-
</div>
|
|
281
|
-
<div className="text-center">
|
|
282
|
-
<MaterialIcon name="check" size={40} />
|
|
283
|
-
<p className="mt-1 text-xs">Large</p>
|
|
284
|
-
</div>
|
|
285
|
-
<div className="text-center">
|
|
286
|
-
<MaterialIcon name="check" size={48} />
|
|
287
|
-
<p className="mt-1 text-xs">XLarge</p>
|
|
288
|
-
</div>
|
|
289
|
-
</div>
|
|
290
|
-
</div>
|
|
291
|
-
|
|
292
|
-
<div>
|
|
293
|
-
<h3 className="mb-3 text-lg font-semibold">Common Icons</h3>
|
|
294
|
-
<div className="grid grid-cols-6 gap-4">
|
|
295
|
-
<div className="text-center">
|
|
296
|
-
<MaterialIcon name="home" />
|
|
297
|
-
<p className="mt-1 text-xs">home</p>
|
|
298
|
-
</div>
|
|
299
|
-
<div className="text-center">
|
|
300
|
-
<MaterialIcon name="search" />
|
|
301
|
-
<p className="mt-1 text-xs">search</p>
|
|
302
|
-
</div>
|
|
303
|
-
<div className="text-center">
|
|
304
|
-
<MaterialIcon name="check" />
|
|
305
|
-
<p className="mt-1 text-xs">check</p>
|
|
306
|
-
</div>
|
|
307
|
-
<div className="text-center">
|
|
308
|
-
<MaterialIcon name="settings" />
|
|
309
|
-
<p className="mt-1 text-xs">settings</p>
|
|
310
|
-
</div>
|
|
311
|
-
<div className="text-center">
|
|
312
|
-
<MaterialIcon name="groups" />
|
|
313
|
-
<p className="mt-1 text-xs">groups</p>
|
|
314
|
-
</div>
|
|
315
|
-
<div className="text-center">
|
|
316
|
-
<MaterialIcon name="mail" />
|
|
317
|
-
<p className="mt-1 text-xs">mail</p>
|
|
318
|
-
</div>
|
|
319
|
-
</div>
|
|
320
|
-
</div>
|
|
321
|
-
</div>
|
|
322
|
-
),
|
|
323
|
-
parameters: {
|
|
324
|
-
docs: {
|
|
325
|
-
description: {
|
|
326
|
-
story: "Complete showcase of all icon sizes and common icons.",
|
|
327
|
-
},
|
|
328
|
-
},
|
|
329
|
-
},
|
|
330
|
-
};
|
|
1
|
+
import { MaterialIcon } from "./index";
|
|
2
|
+
import { DocsPage } from "@shared/stories/DocsTemplate";
|
|
3
|
+
|
|
4
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof MaterialIcon> = {
|
|
7
|
+
title: "Components/MaterialIcon",
|
|
8
|
+
component: MaterialIcon,
|
|
9
|
+
tags: ["autodocs"],
|
|
10
|
+
parameters: {
|
|
11
|
+
layout: "centered",
|
|
12
|
+
docs: {
|
|
13
|
+
page: DocsPage,
|
|
14
|
+
description: {
|
|
15
|
+
component:
|
|
16
|
+
"Material Design icon component with customizable size, color, and styling.",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
argTypes: {
|
|
21
|
+
name: {
|
|
22
|
+
control: { type: "select" },
|
|
23
|
+
options: [
|
|
24
|
+
"home",
|
|
25
|
+
"search",
|
|
26
|
+
"check",
|
|
27
|
+
"settings",
|
|
28
|
+
"groups",
|
|
29
|
+
"mail",
|
|
30
|
+
"call",
|
|
31
|
+
"info",
|
|
32
|
+
],
|
|
33
|
+
description: "Material icon name",
|
|
34
|
+
},
|
|
35
|
+
size: {
|
|
36
|
+
control: { type: "select" },
|
|
37
|
+
options: [20, 24, 32, 40, 48],
|
|
38
|
+
description: "Icon size",
|
|
39
|
+
},
|
|
40
|
+
weight: {
|
|
41
|
+
control: { type: "select" },
|
|
42
|
+
options: [100, 200, 300, 400, 500, 600, 700],
|
|
43
|
+
description: "Icon weight",
|
|
44
|
+
},
|
|
45
|
+
color: {
|
|
46
|
+
control: { type: "color" },
|
|
47
|
+
description: "Icon color",
|
|
48
|
+
},
|
|
49
|
+
className: {
|
|
50
|
+
control: { type: "text" },
|
|
51
|
+
description: "Additional CSS classes",
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
args: {
|
|
55
|
+
name: "home",
|
|
56
|
+
size: 24,
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export default meta;
|
|
61
|
+
type Story = StoryObj<typeof meta>;
|
|
62
|
+
|
|
63
|
+
// Default icon
|
|
64
|
+
export const Default: Story = {
|
|
65
|
+
args: {},
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// Different sizes
|
|
69
|
+
export const Sizes: Story = {
|
|
70
|
+
render: () => (
|
|
71
|
+
<div className="flex items-center gap-6">
|
|
72
|
+
<div className="text-center">
|
|
73
|
+
<MaterialIcon name="home" size={20} />
|
|
74
|
+
<p className="mt-1 text-xs">20px</p>
|
|
75
|
+
</div>
|
|
76
|
+
<div className="text-center">
|
|
77
|
+
<MaterialIcon name="home" size={24} />
|
|
78
|
+
<p className="mt-1 text-xs">24px</p>
|
|
79
|
+
</div>
|
|
80
|
+
<div className="text-center">
|
|
81
|
+
<MaterialIcon name="home" size={40} />
|
|
82
|
+
<p className="mt-1 text-xs">40px</p>
|
|
83
|
+
</div>
|
|
84
|
+
<div className="text-center">
|
|
85
|
+
<MaterialIcon name="home" size={48} />
|
|
86
|
+
<p className="mt-1 text-xs">48px</p>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
),
|
|
90
|
+
parameters: {
|
|
91
|
+
docs: {
|
|
92
|
+
description: {
|
|
93
|
+
story: "All available icon sizes.",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// Common icons
|
|
100
|
+
export const CommonIcons: Story = {
|
|
101
|
+
render: () => (
|
|
102
|
+
<div className="grid grid-cols-4 gap-4">
|
|
103
|
+
<div className="rounded-lg border p-4 text-center">
|
|
104
|
+
<MaterialIcon name="home" size={40} />
|
|
105
|
+
<p className="mt-2 text-sm">home</p>
|
|
106
|
+
</div>
|
|
107
|
+
<div className="rounded-lg border p-4 text-center">
|
|
108
|
+
<MaterialIcon name="search" size={40} />
|
|
109
|
+
<p className="mt-2 text-sm">search</p>
|
|
110
|
+
</div>
|
|
111
|
+
<div className="rounded-lg border p-4 text-center">
|
|
112
|
+
<MaterialIcon name="check" size={40} />
|
|
113
|
+
<p className="mt-2 text-sm">check</p>
|
|
114
|
+
</div>
|
|
115
|
+
<div className="rounded-lg border p-4 text-center">
|
|
116
|
+
<MaterialIcon name="settings" size={40} />
|
|
117
|
+
<p className="mt-2 text-sm">settings</p>
|
|
118
|
+
</div>
|
|
119
|
+
<div className="rounded-lg border p-4 text-center">
|
|
120
|
+
<MaterialIcon name="groups" size={40} />
|
|
121
|
+
<p className="mt-2 text-sm">groups</p>
|
|
122
|
+
</div>
|
|
123
|
+
<div className="rounded-lg border p-4 text-center">
|
|
124
|
+
<MaterialIcon name="mail" size={40} />
|
|
125
|
+
<p className="mt-2 text-sm">mail</p>
|
|
126
|
+
</div>
|
|
127
|
+
<div className="rounded-lg border p-4 text-center">
|
|
128
|
+
<MaterialIcon name="call" size={40} />
|
|
129
|
+
<p className="mt-2 text-sm">call</p>
|
|
130
|
+
</div>
|
|
131
|
+
<div className="rounded-lg border p-4 text-center">
|
|
132
|
+
<MaterialIcon name="info" size={40} />
|
|
133
|
+
<p className="mt-2 text-sm">info</p>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
),
|
|
137
|
+
parameters: {
|
|
138
|
+
docs: {
|
|
139
|
+
description: {
|
|
140
|
+
story: "Common Material Design icons.",
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
// Colored icons
|
|
147
|
+
export const ColoredIcons: Story = {
|
|
148
|
+
render: () => (
|
|
149
|
+
<div className="grid grid-cols-4 gap-4">
|
|
150
|
+
<div className="text-center">
|
|
151
|
+
<MaterialIcon name="check" size={40} color="#ef4444" />
|
|
152
|
+
<p className="mt-2 text-sm text-red-500">Red</p>
|
|
153
|
+
</div>
|
|
154
|
+
<div className="text-center">
|
|
155
|
+
<MaterialIcon name="check_circle" size={40} color="#10b981" />
|
|
156
|
+
<p className="mt-2 text-sm text-green-500">Green</p>
|
|
157
|
+
</div>
|
|
158
|
+
<div className="text-center">
|
|
159
|
+
<MaterialIcon name="info" size={40} color="#3b82f6" />
|
|
160
|
+
<p className="mt-2 text-sm text-blue-500">Blue</p>
|
|
161
|
+
</div>
|
|
162
|
+
<div className="text-center">
|
|
163
|
+
<MaterialIcon name="error" size={40} color="#f59e0b" />
|
|
164
|
+
<p className="mt-2 text-sm text-yellow-500">Yellow</p>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
),
|
|
168
|
+
parameters: {
|
|
169
|
+
docs: {
|
|
170
|
+
description: {
|
|
171
|
+
story: "Icons with different colors.",
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
// Icon with text
|
|
178
|
+
export const IconWithText: Story = {
|
|
179
|
+
render: () => (
|
|
180
|
+
<div className="space-y-4">
|
|
181
|
+
<div className="flex items-center gap-2">
|
|
182
|
+
<MaterialIcon name="mail" />
|
|
183
|
+
<span>Email notifications</span>
|
|
184
|
+
</div>
|
|
185
|
+
<div className="flex items-center gap-2">
|
|
186
|
+
<MaterialIcon name="call" />
|
|
187
|
+
<span>Phone support</span>
|
|
188
|
+
</div>
|
|
189
|
+
<div className="flex items-center gap-2">
|
|
190
|
+
<MaterialIcon name="forum" />
|
|
191
|
+
<span>Live chat</span>
|
|
192
|
+
</div>
|
|
193
|
+
<div className="flex items-center gap-2">
|
|
194
|
+
<MaterialIcon name="help" />
|
|
195
|
+
<span>Help center</span>
|
|
196
|
+
</div>
|
|
197
|
+
</div>
|
|
198
|
+
),
|
|
199
|
+
parameters: {
|
|
200
|
+
docs: {
|
|
201
|
+
description: {
|
|
202
|
+
story: "Icons used alongside text content.",
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
// Interactive icons
|
|
209
|
+
export const InteractiveIcons: Story = {
|
|
210
|
+
render: () => (
|
|
211
|
+
<div className="grid grid-cols-3 gap-4">
|
|
212
|
+
<button className="rounded-lg border p-3 transition-colors hover:bg-gray-50">
|
|
213
|
+
<MaterialIcon name="check_box_outline_blank" size={40} />
|
|
214
|
+
<p className="mt-2 text-sm">Like</p>
|
|
215
|
+
</button>
|
|
216
|
+
<button className="rounded-lg border p-3 transition-colors hover:bg-gray-50">
|
|
217
|
+
<MaterialIcon name="share" size={40} />
|
|
218
|
+
<p className="mt-2 text-sm">Share</p>
|
|
219
|
+
</button>
|
|
220
|
+
<button className="rounded-lg border p-3 transition-colors hover:bg-gray-50">
|
|
221
|
+
<MaterialIcon name="check" size={40} />
|
|
222
|
+
<p className="mt-2 text-sm">Bookmark</p>
|
|
223
|
+
</button>
|
|
224
|
+
</div>
|
|
225
|
+
),
|
|
226
|
+
parameters: {
|
|
227
|
+
docs: {
|
|
228
|
+
description: {
|
|
229
|
+
story: "Interactive icon buttons.",
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
// Status icons
|
|
236
|
+
export const StatusIcons: Story = {
|
|
237
|
+
render: () => (
|
|
238
|
+
<div className="grid grid-cols-4 gap-4">
|
|
239
|
+
<div className="text-center">
|
|
240
|
+
<MaterialIcon name="check_circle" size={40} />
|
|
241
|
+
<p className="mt-2 text-sm text-green-600">Success</p>
|
|
242
|
+
</div>
|
|
243
|
+
<div className="text-center">
|
|
244
|
+
<MaterialIcon name="error" size={40} />
|
|
245
|
+
<p className="mt-2 text-sm text-red-600">Error</p>
|
|
246
|
+
</div>
|
|
247
|
+
<div className="text-center">
|
|
248
|
+
<MaterialIcon name="error" size={40} />
|
|
249
|
+
<p className="mt-2 text-sm text-yellow-600">Warning</p>
|
|
250
|
+
</div>
|
|
251
|
+
<div className="text-center">
|
|
252
|
+
<MaterialIcon name="info" size={40} />
|
|
253
|
+
<p className="mt-2 text-sm text-blue-600">Info</p>
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
),
|
|
257
|
+
parameters: {
|
|
258
|
+
docs: {
|
|
259
|
+
description: {
|
|
260
|
+
story: "Status and feedback icons.",
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
// All sizes showcase
|
|
267
|
+
export const AllSizes: Story = {
|
|
268
|
+
render: () => (
|
|
269
|
+
<div className="space-y-6">
|
|
270
|
+
<div>
|
|
271
|
+
<h3 className="mb-3 text-lg font-semibold">Icon Sizes</h3>
|
|
272
|
+
<div className="flex items-center gap-6">
|
|
273
|
+
<div className="text-center">
|
|
274
|
+
<MaterialIcon name="check" size={20} />
|
|
275
|
+
<p className="mt-1 text-xs">Small</p>
|
|
276
|
+
</div>
|
|
277
|
+
<div className="text-center">
|
|
278
|
+
<MaterialIcon name="check" size={24} />
|
|
279
|
+
<p className="mt-1 text-xs">Medium</p>
|
|
280
|
+
</div>
|
|
281
|
+
<div className="text-center">
|
|
282
|
+
<MaterialIcon name="check" size={40} />
|
|
283
|
+
<p className="mt-1 text-xs">Large</p>
|
|
284
|
+
</div>
|
|
285
|
+
<div className="text-center">
|
|
286
|
+
<MaterialIcon name="check" size={48} />
|
|
287
|
+
<p className="mt-1 text-xs">XLarge</p>
|
|
288
|
+
</div>
|
|
289
|
+
</div>
|
|
290
|
+
</div>
|
|
291
|
+
|
|
292
|
+
<div>
|
|
293
|
+
<h3 className="mb-3 text-lg font-semibold">Common Icons</h3>
|
|
294
|
+
<div className="grid grid-cols-6 gap-4">
|
|
295
|
+
<div className="text-center">
|
|
296
|
+
<MaterialIcon name="home" />
|
|
297
|
+
<p className="mt-1 text-xs">home</p>
|
|
298
|
+
</div>
|
|
299
|
+
<div className="text-center">
|
|
300
|
+
<MaterialIcon name="search" />
|
|
301
|
+
<p className="mt-1 text-xs">search</p>
|
|
302
|
+
</div>
|
|
303
|
+
<div className="text-center">
|
|
304
|
+
<MaterialIcon name="check" />
|
|
305
|
+
<p className="mt-1 text-xs">check</p>
|
|
306
|
+
</div>
|
|
307
|
+
<div className="text-center">
|
|
308
|
+
<MaterialIcon name="settings" />
|
|
309
|
+
<p className="mt-1 text-xs">settings</p>
|
|
310
|
+
</div>
|
|
311
|
+
<div className="text-center">
|
|
312
|
+
<MaterialIcon name="groups" />
|
|
313
|
+
<p className="mt-1 text-xs">groups</p>
|
|
314
|
+
</div>
|
|
315
|
+
<div className="text-center">
|
|
316
|
+
<MaterialIcon name="mail" />
|
|
317
|
+
<p className="mt-1 text-xs">mail</p>
|
|
318
|
+
</div>
|
|
319
|
+
</div>
|
|
320
|
+
</div>
|
|
321
|
+
</div>
|
|
322
|
+
),
|
|
323
|
+
parameters: {
|
|
324
|
+
docs: {
|
|
325
|
+
description: {
|
|
326
|
+
story: "Complete showcase of all icon sizes and common icons.",
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
};
|