@windstream/react-shared-components 0.0.9 → 0.0.11
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 +10 -6
- 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 +3 -3
- package/dist/index.d.ts +4 -4
- 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 -101
- package/src/contentful/blocks/shape-background-wrapper/types.ts +35 -29
- 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 -269
- package/src/types/global.d.ts +9 -9
- package/src/utils/index.ts +49 -49
|
@@ -1,324 +1,324 @@
|
|
|
1
|
-
import { CallButton } from "./index";
|
|
2
|
-
import { DocsPage } from "@shared/stories/DocsTemplate";
|
|
3
|
-
|
|
4
|
-
import type { Meta, StoryObj } from "@storybook/react";
|
|
5
|
-
|
|
6
|
-
const meta: Meta<typeof CallButton> = {
|
|
7
|
-
title: "Components/CallButton",
|
|
8
|
-
component: CallButton,
|
|
9
|
-
tags: ["autodocs"],
|
|
10
|
-
parameters: {
|
|
11
|
-
layout: "centered",
|
|
12
|
-
docs: {
|
|
13
|
-
page: DocsPage,
|
|
14
|
-
description: {
|
|
15
|
-
component:
|
|
16
|
-
"A call button component that extends the Link component with a call icon and optional blinking dot.",
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
argTypes: {
|
|
21
|
-
showBlinkDot: {
|
|
22
|
-
control: { type: "boolean" },
|
|
23
|
-
description: "Show a blinking dot indicator",
|
|
24
|
-
},
|
|
25
|
-
buttonStyle: {
|
|
26
|
-
control: { type: "select" },
|
|
27
|
-
options: ["primary"],
|
|
28
|
-
description: "Visual style variant",
|
|
29
|
-
},
|
|
30
|
-
size: {
|
|
31
|
-
control: { type: "select" },
|
|
32
|
-
options: ["sm", "md", "lg"],
|
|
33
|
-
description: "Button size",
|
|
34
|
-
},
|
|
35
|
-
href: {
|
|
36
|
-
control: { type: "text" },
|
|
37
|
-
description: "Link destination",
|
|
38
|
-
},
|
|
39
|
-
children: {
|
|
40
|
-
control: { type: "text" },
|
|
41
|
-
description: "Button text content",
|
|
42
|
-
},
|
|
43
|
-
className: {
|
|
44
|
-
control: { type: "text" },
|
|
45
|
-
description: "Additional CSS classes",
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
args: {
|
|
49
|
-
href: "tel:+1234567890",
|
|
50
|
-
children: "Call Now",
|
|
51
|
-
showBlinkDot: false,
|
|
52
|
-
buttonStyle: "primary",
|
|
53
|
-
size: "md",
|
|
54
|
-
},
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
export default meta;
|
|
58
|
-
type Story = StoryObj<typeof meta>;
|
|
59
|
-
|
|
60
|
-
// All variants showcase - Real visual variants
|
|
61
|
-
export const AllVariants: Story = {
|
|
62
|
-
render: () => (
|
|
63
|
-
<div className="space-y-8">
|
|
64
|
-
<div>
|
|
65
|
-
<h3 className="mb-4 text-lg font-semibold">Style Variants</h3>
|
|
66
|
-
<div className="grid grid-cols-2 gap-4">
|
|
67
|
-
<div className="space-y-3">
|
|
68
|
-
<h4 className="text-sm font-medium text-gray-600">
|
|
69
|
-
Primary (Default)
|
|
70
|
-
</h4>
|
|
71
|
-
<CallButton href="tel:+1234567890" buttonStyle="primary">
|
|
72
|
-
Call Now
|
|
73
|
-
</CallButton>
|
|
74
|
-
</div>
|
|
75
|
-
</div>
|
|
76
|
-
</div>
|
|
77
|
-
|
|
78
|
-
<div>
|
|
79
|
-
<h3 className="mb-4 text-lg font-semibold">Size Variants</h3>
|
|
80
|
-
<div className="grid grid-cols-3 gap-4">
|
|
81
|
-
<div className="space-y-3">
|
|
82
|
-
<h4 className="text-sm font-medium text-gray-600">Small</h4>
|
|
83
|
-
<CallButton href="tel:+1234567890" size="sm">
|
|
84
|
-
Call
|
|
85
|
-
</CallButton>
|
|
86
|
-
</div>
|
|
87
|
-
<div className="space-y-3">
|
|
88
|
-
<h4 className="text-sm font-medium text-gray-600">
|
|
89
|
-
Medium (Default)
|
|
90
|
-
</h4>
|
|
91
|
-
<CallButton href="tel:+1234567890" size="md">
|
|
92
|
-
Call Now
|
|
93
|
-
</CallButton>
|
|
94
|
-
</div>
|
|
95
|
-
<div className="space-y-3">
|
|
96
|
-
<h4 className="text-sm font-medium text-gray-600">Large</h4>
|
|
97
|
-
<CallButton href="tel:+1234567890" size="lg">
|
|
98
|
-
Call Now
|
|
99
|
-
</CallButton>
|
|
100
|
-
</div>
|
|
101
|
-
</div>
|
|
102
|
-
</div>
|
|
103
|
-
|
|
104
|
-
<div>
|
|
105
|
-
<h3 className="mb-4 text-lg font-semibold">Blinking Dot Variant</h3>
|
|
106
|
-
<div className="space-y-3">
|
|
107
|
-
<CallButton
|
|
108
|
-
href="tel:+1234567890"
|
|
109
|
-
showBlinkDot={true}
|
|
110
|
-
buttonStyle="primary"
|
|
111
|
-
>
|
|
112
|
-
Emergency Hotline
|
|
113
|
-
</CallButton>
|
|
114
|
-
</div>
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
117
|
-
),
|
|
118
|
-
parameters: {
|
|
119
|
-
docs: {
|
|
120
|
-
description: {
|
|
121
|
-
story:
|
|
122
|
-
"Complete showcase of all CallButton visual variants: styles, sizes, and blinking dot.",
|
|
123
|
-
},
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
// Default call button
|
|
129
|
-
export const Default: Story = {
|
|
130
|
-
args: {
|
|
131
|
-
buttonStyle: "primary",
|
|
132
|
-
size: "md",
|
|
133
|
-
showBlinkDot: false,
|
|
134
|
-
},
|
|
135
|
-
parameters: {
|
|
136
|
-
docs: {
|
|
137
|
-
description: {
|
|
138
|
-
story: "Default CallButton with primary style and medium size.",
|
|
139
|
-
},
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
// Call button with blinking dot
|
|
145
|
-
export const WithBlinkDot: Story = {
|
|
146
|
-
args: {
|
|
147
|
-
showBlinkDot: true,
|
|
148
|
-
children: "Call Now",
|
|
149
|
-
buttonStyle: "primary",
|
|
150
|
-
size: "md",
|
|
151
|
-
},
|
|
152
|
-
parameters: {
|
|
153
|
-
docs: {
|
|
154
|
-
description: {
|
|
155
|
-
story:
|
|
156
|
-
"CallButton with blinking dot indicator for emergency or priority calls.",
|
|
157
|
-
},
|
|
158
|
-
},
|
|
159
|
-
},
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
// Style variations
|
|
163
|
-
export const StyleVariations: Story = {
|
|
164
|
-
render: () => (
|
|
165
|
-
<div className="space-y-4">
|
|
166
|
-
<div className="space-y-2">
|
|
167
|
-
<h4 className="text-sm font-medium text-gray-600">Primary Style</h4>
|
|
168
|
-
<CallButton href="tel:+1234567890" buttonStyle="primary">
|
|
169
|
-
Call Support
|
|
170
|
-
</CallButton>
|
|
171
|
-
</div>
|
|
172
|
-
</div>
|
|
173
|
-
),
|
|
174
|
-
parameters: {
|
|
175
|
-
docs: {
|
|
176
|
-
description: {
|
|
177
|
-
story:
|
|
178
|
-
"All four CallButton style variants: primary, secondary, outline, and ghost.",
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
},
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
// Size variations
|
|
185
|
-
export const SizeVariations: Story = {
|
|
186
|
-
render: () => (
|
|
187
|
-
<div className="space-y-4">
|
|
188
|
-
<div className="space-y-2">
|
|
189
|
-
<h4 className="text-sm font-medium text-gray-600">Small Size</h4>
|
|
190
|
-
<CallButton href="tel:+1234567890" size="sm">
|
|
191
|
-
Call
|
|
192
|
-
</CallButton>
|
|
193
|
-
</div>
|
|
194
|
-
<div className="space-y-2">
|
|
195
|
-
<h4 className="text-sm font-medium text-gray-600">
|
|
196
|
-
Medium Size (Default)
|
|
197
|
-
</h4>
|
|
198
|
-
<CallButton href="tel:+1234567890" size="md">
|
|
199
|
-
Call Now
|
|
200
|
-
</CallButton>
|
|
201
|
-
</div>
|
|
202
|
-
<div className="space-y-2">
|
|
203
|
-
<h4 className="text-sm font-medium text-gray-600">Large Size</h4>
|
|
204
|
-
<CallButton href="tel:+1234567890" size="lg">
|
|
205
|
-
Call Now
|
|
206
|
-
</CallButton>
|
|
207
|
-
</div>
|
|
208
|
-
</div>
|
|
209
|
-
),
|
|
210
|
-
parameters: {
|
|
211
|
-
docs: {
|
|
212
|
-
description: {
|
|
213
|
-
story: "All three CallButton size variants: small, medium, and large.",
|
|
214
|
-
},
|
|
215
|
-
},
|
|
216
|
-
},
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
// Interactive combinations
|
|
220
|
-
export const Interactive: Story = {
|
|
221
|
-
render: () => (
|
|
222
|
-
<div className="space-y-6">
|
|
223
|
-
<div>
|
|
224
|
-
<h3 className="mb-3 text-lg font-semibold">Emergency Contacts</h3>
|
|
225
|
-
<div className="space-y-3">
|
|
226
|
-
<CallButton
|
|
227
|
-
href="tel:+1234567890"
|
|
228
|
-
showBlinkDot={true}
|
|
229
|
-
buttonStyle="primary"
|
|
230
|
-
size="lg"
|
|
231
|
-
>
|
|
232
|
-
Emergency Hotline
|
|
233
|
-
</CallButton>
|
|
234
|
-
</div>
|
|
235
|
-
</div>
|
|
236
|
-
</div>
|
|
237
|
-
),
|
|
238
|
-
parameters: {
|
|
239
|
-
docs: {
|
|
240
|
-
description: {
|
|
241
|
-
story:
|
|
242
|
-
"Interactive examples showing combinations of CallButton variants for different use cases.",
|
|
243
|
-
},
|
|
244
|
-
},
|
|
245
|
-
},
|
|
246
|
-
};
|
|
247
|
-
|
|
248
|
-
// States and interactions
|
|
249
|
-
export const StatesAndInteractions: Story = {
|
|
250
|
-
render: () => (
|
|
251
|
-
<div className="space-y-6">
|
|
252
|
-
<div>
|
|
253
|
-
<h3 className="mb-3 text-lg font-semibold">Hover States</h3>
|
|
254
|
-
<p className="mb-2 text-sm text-gray-600">
|
|
255
|
-
Hover over the buttons to see interactive states
|
|
256
|
-
</p>
|
|
257
|
-
<div className="space-y-3">
|
|
258
|
-
<CallButton href="tel:+1234567890" showBlinkDot={true}>
|
|
259
|
-
Hover Me
|
|
260
|
-
</CallButton>
|
|
261
|
-
<CallButton href="tel:+1234567890">Hover Me Too</CallButton>
|
|
262
|
-
</div>
|
|
263
|
-
</div>
|
|
264
|
-
|
|
265
|
-
<div>
|
|
266
|
-
<h3 className="mb-3 text-lg font-semibold">Focus States</h3>
|
|
267
|
-
<p className="mb-2 text-sm text-gray-600">
|
|
268
|
-
Tab to focus and see keyboard navigation states
|
|
269
|
-
</p>
|
|
270
|
-
<div className="space-y-3">
|
|
271
|
-
<CallButton href="tel:+1234567890">Focus Me</CallButton>
|
|
272
|
-
<CallButton href="tel:+1234567890">Focus Me Too</CallButton>
|
|
273
|
-
</div>
|
|
274
|
-
</div>
|
|
275
|
-
</div>
|
|
276
|
-
),
|
|
277
|
-
parameters: {
|
|
278
|
-
docs: {
|
|
279
|
-
description: {
|
|
280
|
-
story:
|
|
281
|
-
"Demonstrates hover, focus, and interaction states of the CallButton component.",
|
|
282
|
-
},
|
|
283
|
-
},
|
|
284
|
-
},
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
// Accessibility showcase
|
|
288
|
-
export const Accessibility: Story = {
|
|
289
|
-
render: () => (
|
|
290
|
-
<div className="space-y-4">
|
|
291
|
-
<div>
|
|
292
|
-
<h3 className="mb-3 text-lg font-semibold">Screen Reader Friendly</h3>
|
|
293
|
-
<p className="mb-2 text-sm text-gray-600">
|
|
294
|
-
These buttons include proper ARIA labels and descriptions
|
|
295
|
-
</p>
|
|
296
|
-
<div className="space-y-3">
|
|
297
|
-
<CallButton
|
|
298
|
-
href="tel:+1234567890"
|
|
299
|
-
showBlinkDot={true}
|
|
300
|
-
aria-label="Call emergency support line"
|
|
301
|
-
aria-description="24/7 emergency hotline with priority response"
|
|
302
|
-
>
|
|
303
|
-
Emergency Support
|
|
304
|
-
</CallButton>
|
|
305
|
-
<CallButton
|
|
306
|
-
href="tel:+1234567890"
|
|
307
|
-
aria-label="Call customer service"
|
|
308
|
-
aria-description="General customer support and inquiries"
|
|
309
|
-
>
|
|
310
|
-
Customer Service
|
|
311
|
-
</CallButton>
|
|
312
|
-
</div>
|
|
313
|
-
</div>
|
|
314
|
-
</div>
|
|
315
|
-
),
|
|
316
|
-
parameters: {
|
|
317
|
-
docs: {
|
|
318
|
-
description: {
|
|
319
|
-
story:
|
|
320
|
-
"Accessibility features including ARIA labels and screen reader support.",
|
|
321
|
-
},
|
|
322
|
-
},
|
|
323
|
-
},
|
|
324
|
-
};
|
|
1
|
+
import { CallButton } from "./index";
|
|
2
|
+
import { DocsPage } from "@shared/stories/DocsTemplate";
|
|
3
|
+
|
|
4
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof CallButton> = {
|
|
7
|
+
title: "Components/CallButton",
|
|
8
|
+
component: CallButton,
|
|
9
|
+
tags: ["autodocs"],
|
|
10
|
+
parameters: {
|
|
11
|
+
layout: "centered",
|
|
12
|
+
docs: {
|
|
13
|
+
page: DocsPage,
|
|
14
|
+
description: {
|
|
15
|
+
component:
|
|
16
|
+
"A call button component that extends the Link component with a call icon and optional blinking dot.",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
argTypes: {
|
|
21
|
+
showBlinkDot: {
|
|
22
|
+
control: { type: "boolean" },
|
|
23
|
+
description: "Show a blinking dot indicator",
|
|
24
|
+
},
|
|
25
|
+
buttonStyle: {
|
|
26
|
+
control: { type: "select" },
|
|
27
|
+
options: ["primary"],
|
|
28
|
+
description: "Visual style variant",
|
|
29
|
+
},
|
|
30
|
+
size: {
|
|
31
|
+
control: { type: "select" },
|
|
32
|
+
options: ["sm", "md", "lg"],
|
|
33
|
+
description: "Button size",
|
|
34
|
+
},
|
|
35
|
+
href: {
|
|
36
|
+
control: { type: "text" },
|
|
37
|
+
description: "Link destination",
|
|
38
|
+
},
|
|
39
|
+
children: {
|
|
40
|
+
control: { type: "text" },
|
|
41
|
+
description: "Button text content",
|
|
42
|
+
},
|
|
43
|
+
className: {
|
|
44
|
+
control: { type: "text" },
|
|
45
|
+
description: "Additional CSS classes",
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
args: {
|
|
49
|
+
href: "tel:+1234567890",
|
|
50
|
+
children: "Call Now",
|
|
51
|
+
showBlinkDot: false,
|
|
52
|
+
buttonStyle: "primary",
|
|
53
|
+
size: "md",
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export default meta;
|
|
58
|
+
type Story = StoryObj<typeof meta>;
|
|
59
|
+
|
|
60
|
+
// All variants showcase - Real visual variants
|
|
61
|
+
export const AllVariants: Story = {
|
|
62
|
+
render: () => (
|
|
63
|
+
<div className="space-y-8">
|
|
64
|
+
<div>
|
|
65
|
+
<h3 className="mb-4 text-lg font-semibold">Style Variants</h3>
|
|
66
|
+
<div className="grid grid-cols-2 gap-4">
|
|
67
|
+
<div className="space-y-3">
|
|
68
|
+
<h4 className="text-sm font-medium text-gray-600">
|
|
69
|
+
Primary (Default)
|
|
70
|
+
</h4>
|
|
71
|
+
<CallButton href="tel:+1234567890" buttonStyle="primary">
|
|
72
|
+
Call Now
|
|
73
|
+
</CallButton>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
<div>
|
|
79
|
+
<h3 className="mb-4 text-lg font-semibold">Size Variants</h3>
|
|
80
|
+
<div className="grid grid-cols-3 gap-4">
|
|
81
|
+
<div className="space-y-3">
|
|
82
|
+
<h4 className="text-sm font-medium text-gray-600">Small</h4>
|
|
83
|
+
<CallButton href="tel:+1234567890" size="sm">
|
|
84
|
+
Call
|
|
85
|
+
</CallButton>
|
|
86
|
+
</div>
|
|
87
|
+
<div className="space-y-3">
|
|
88
|
+
<h4 className="text-sm font-medium text-gray-600">
|
|
89
|
+
Medium (Default)
|
|
90
|
+
</h4>
|
|
91
|
+
<CallButton href="tel:+1234567890" size="md">
|
|
92
|
+
Call Now
|
|
93
|
+
</CallButton>
|
|
94
|
+
</div>
|
|
95
|
+
<div className="space-y-3">
|
|
96
|
+
<h4 className="text-sm font-medium text-gray-600">Large</h4>
|
|
97
|
+
<CallButton href="tel:+1234567890" size="lg">
|
|
98
|
+
Call Now
|
|
99
|
+
</CallButton>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<div>
|
|
105
|
+
<h3 className="mb-4 text-lg font-semibold">Blinking Dot Variant</h3>
|
|
106
|
+
<div className="space-y-3">
|
|
107
|
+
<CallButton
|
|
108
|
+
href="tel:+1234567890"
|
|
109
|
+
showBlinkDot={true}
|
|
110
|
+
buttonStyle="primary"
|
|
111
|
+
>
|
|
112
|
+
Emergency Hotline
|
|
113
|
+
</CallButton>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
),
|
|
118
|
+
parameters: {
|
|
119
|
+
docs: {
|
|
120
|
+
description: {
|
|
121
|
+
story:
|
|
122
|
+
"Complete showcase of all CallButton visual variants: styles, sizes, and blinking dot.",
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
// Default call button
|
|
129
|
+
export const Default: Story = {
|
|
130
|
+
args: {
|
|
131
|
+
buttonStyle: "primary",
|
|
132
|
+
size: "md",
|
|
133
|
+
showBlinkDot: false,
|
|
134
|
+
},
|
|
135
|
+
parameters: {
|
|
136
|
+
docs: {
|
|
137
|
+
description: {
|
|
138
|
+
story: "Default CallButton with primary style and medium size.",
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// Call button with blinking dot
|
|
145
|
+
export const WithBlinkDot: Story = {
|
|
146
|
+
args: {
|
|
147
|
+
showBlinkDot: true,
|
|
148
|
+
children: "Call Now",
|
|
149
|
+
buttonStyle: "primary",
|
|
150
|
+
size: "md",
|
|
151
|
+
},
|
|
152
|
+
parameters: {
|
|
153
|
+
docs: {
|
|
154
|
+
description: {
|
|
155
|
+
story:
|
|
156
|
+
"CallButton with blinking dot indicator for emergency or priority calls.",
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
// Style variations
|
|
163
|
+
export const StyleVariations: Story = {
|
|
164
|
+
render: () => (
|
|
165
|
+
<div className="space-y-4">
|
|
166
|
+
<div className="space-y-2">
|
|
167
|
+
<h4 className="text-sm font-medium text-gray-600">Primary Style</h4>
|
|
168
|
+
<CallButton href="tel:+1234567890" buttonStyle="primary">
|
|
169
|
+
Call Support
|
|
170
|
+
</CallButton>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
),
|
|
174
|
+
parameters: {
|
|
175
|
+
docs: {
|
|
176
|
+
description: {
|
|
177
|
+
story:
|
|
178
|
+
"All four CallButton style variants: primary, secondary, outline, and ghost.",
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
// Size variations
|
|
185
|
+
export const SizeVariations: Story = {
|
|
186
|
+
render: () => (
|
|
187
|
+
<div className="space-y-4">
|
|
188
|
+
<div className="space-y-2">
|
|
189
|
+
<h4 className="text-sm font-medium text-gray-600">Small Size</h4>
|
|
190
|
+
<CallButton href="tel:+1234567890" size="sm">
|
|
191
|
+
Call
|
|
192
|
+
</CallButton>
|
|
193
|
+
</div>
|
|
194
|
+
<div className="space-y-2">
|
|
195
|
+
<h4 className="text-sm font-medium text-gray-600">
|
|
196
|
+
Medium Size (Default)
|
|
197
|
+
</h4>
|
|
198
|
+
<CallButton href="tel:+1234567890" size="md">
|
|
199
|
+
Call Now
|
|
200
|
+
</CallButton>
|
|
201
|
+
</div>
|
|
202
|
+
<div className="space-y-2">
|
|
203
|
+
<h4 className="text-sm font-medium text-gray-600">Large Size</h4>
|
|
204
|
+
<CallButton href="tel:+1234567890" size="lg">
|
|
205
|
+
Call Now
|
|
206
|
+
</CallButton>
|
|
207
|
+
</div>
|
|
208
|
+
</div>
|
|
209
|
+
),
|
|
210
|
+
parameters: {
|
|
211
|
+
docs: {
|
|
212
|
+
description: {
|
|
213
|
+
story: "All three CallButton size variants: small, medium, and large.",
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
// Interactive combinations
|
|
220
|
+
export const Interactive: Story = {
|
|
221
|
+
render: () => (
|
|
222
|
+
<div className="space-y-6">
|
|
223
|
+
<div>
|
|
224
|
+
<h3 className="mb-3 text-lg font-semibold">Emergency Contacts</h3>
|
|
225
|
+
<div className="space-y-3">
|
|
226
|
+
<CallButton
|
|
227
|
+
href="tel:+1234567890"
|
|
228
|
+
showBlinkDot={true}
|
|
229
|
+
buttonStyle="primary"
|
|
230
|
+
size="lg"
|
|
231
|
+
>
|
|
232
|
+
Emergency Hotline
|
|
233
|
+
</CallButton>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
),
|
|
238
|
+
parameters: {
|
|
239
|
+
docs: {
|
|
240
|
+
description: {
|
|
241
|
+
story:
|
|
242
|
+
"Interactive examples showing combinations of CallButton variants for different use cases.",
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
// States and interactions
|
|
249
|
+
export const StatesAndInteractions: Story = {
|
|
250
|
+
render: () => (
|
|
251
|
+
<div className="space-y-6">
|
|
252
|
+
<div>
|
|
253
|
+
<h3 className="mb-3 text-lg font-semibold">Hover States</h3>
|
|
254
|
+
<p className="mb-2 text-sm text-gray-600">
|
|
255
|
+
Hover over the buttons to see interactive states
|
|
256
|
+
</p>
|
|
257
|
+
<div className="space-y-3">
|
|
258
|
+
<CallButton href="tel:+1234567890" showBlinkDot={true}>
|
|
259
|
+
Hover Me
|
|
260
|
+
</CallButton>
|
|
261
|
+
<CallButton href="tel:+1234567890">Hover Me Too</CallButton>
|
|
262
|
+
</div>
|
|
263
|
+
</div>
|
|
264
|
+
|
|
265
|
+
<div>
|
|
266
|
+
<h3 className="mb-3 text-lg font-semibold">Focus States</h3>
|
|
267
|
+
<p className="mb-2 text-sm text-gray-600">
|
|
268
|
+
Tab to focus and see keyboard navigation states
|
|
269
|
+
</p>
|
|
270
|
+
<div className="space-y-3">
|
|
271
|
+
<CallButton href="tel:+1234567890">Focus Me</CallButton>
|
|
272
|
+
<CallButton href="tel:+1234567890">Focus Me Too</CallButton>
|
|
273
|
+
</div>
|
|
274
|
+
</div>
|
|
275
|
+
</div>
|
|
276
|
+
),
|
|
277
|
+
parameters: {
|
|
278
|
+
docs: {
|
|
279
|
+
description: {
|
|
280
|
+
story:
|
|
281
|
+
"Demonstrates hover, focus, and interaction states of the CallButton component.",
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
},
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
// Accessibility showcase
|
|
288
|
+
export const Accessibility: Story = {
|
|
289
|
+
render: () => (
|
|
290
|
+
<div className="space-y-4">
|
|
291
|
+
<div>
|
|
292
|
+
<h3 className="mb-3 text-lg font-semibold">Screen Reader Friendly</h3>
|
|
293
|
+
<p className="mb-2 text-sm text-gray-600">
|
|
294
|
+
These buttons include proper ARIA labels and descriptions
|
|
295
|
+
</p>
|
|
296
|
+
<div className="space-y-3">
|
|
297
|
+
<CallButton
|
|
298
|
+
href="tel:+1234567890"
|
|
299
|
+
showBlinkDot={true}
|
|
300
|
+
aria-label="Call emergency support line"
|
|
301
|
+
aria-description="24/7 emergency hotline with priority response"
|
|
302
|
+
>
|
|
303
|
+
Emergency Support
|
|
304
|
+
</CallButton>
|
|
305
|
+
<CallButton
|
|
306
|
+
href="tel:+1234567890"
|
|
307
|
+
aria-label="Call customer service"
|
|
308
|
+
aria-description="General customer support and inquiries"
|
|
309
|
+
>
|
|
310
|
+
Customer Service
|
|
311
|
+
</CallButton>
|
|
312
|
+
</div>
|
|
313
|
+
</div>
|
|
314
|
+
</div>
|
|
315
|
+
),
|
|
316
|
+
parameters: {
|
|
317
|
+
docs: {
|
|
318
|
+
description: {
|
|
319
|
+
story:
|
|
320
|
+
"Accessibility features including ARIA labels and screen reader support.",
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
},
|
|
324
|
+
};
|