@windstream/react-shared-components 0.0.10 → 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 +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 +2 -2
- 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,221 +1,221 @@
|
|
|
1
|
-
import { BrandButton } from "./index";
|
|
2
|
-
import { DocsPage } from "@shared/stories/DocsTemplate";
|
|
3
|
-
|
|
4
|
-
import type { Meta, StoryObj } from "@storybook/react";
|
|
5
|
-
|
|
6
|
-
const meta: Meta<typeof BrandButton> = {
|
|
7
|
-
title: "Components/BrandButton",
|
|
8
|
-
component: BrandButton,
|
|
9
|
-
tags: ["autodocs"],
|
|
10
|
-
parameters: {
|
|
11
|
-
layout: "centered",
|
|
12
|
-
docs: {
|
|
13
|
-
page: DocsPage,
|
|
14
|
-
description: {
|
|
15
|
-
component:
|
|
16
|
-
"A branded button component with predefined variants, responsive sizing, and loading states. Designed for consistent brand styling across the application.",
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
argTypes: {
|
|
21
|
-
variant: {
|
|
22
|
-
control: { type: "select" },
|
|
23
|
-
options: ["primary_brand", "primary_inverse", "secondary"],
|
|
24
|
-
description: "Button styling variant",
|
|
25
|
-
},
|
|
26
|
-
isLoading: {
|
|
27
|
-
control: { type: "boolean" },
|
|
28
|
-
description: "Show loading spinner",
|
|
29
|
-
},
|
|
30
|
-
disabled: {
|
|
31
|
-
control: { type: "boolean" },
|
|
32
|
-
description: "Disable the button",
|
|
33
|
-
},
|
|
34
|
-
text: {
|
|
35
|
-
control: { type: "text" },
|
|
36
|
-
description: "Button text content",
|
|
37
|
-
},
|
|
38
|
-
label: {
|
|
39
|
-
control: { type: "text" },
|
|
40
|
-
description: "Button label (displayed above text)",
|
|
41
|
-
},
|
|
42
|
-
fullWidth: {
|
|
43
|
-
control: { type: "boolean" },
|
|
44
|
-
description: "Make button full width",
|
|
45
|
-
},
|
|
46
|
-
size: {
|
|
47
|
-
control: { type: "object" },
|
|
48
|
-
description: "Responsive size configuration",
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
args: {
|
|
52
|
-
text: "Button",
|
|
53
|
-
variant: "primary_brand",
|
|
54
|
-
isLoading: false,
|
|
55
|
-
disabled: false,
|
|
56
|
-
fullWidth: false,
|
|
57
|
-
},
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
export default meta;
|
|
61
|
-
type Story = StoryObj<typeof meta>;
|
|
62
|
-
|
|
63
|
-
// Default button
|
|
64
|
-
export const Default: Story = {
|
|
65
|
-
args: {},
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
// Primary brand variant
|
|
69
|
-
export const PrimaryBrand: Story = {
|
|
70
|
-
args: {
|
|
71
|
-
variant: "primary_brand",
|
|
72
|
-
text: "Primary Brand Button",
|
|
73
|
-
},
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
// Primary inverse variant
|
|
77
|
-
export const PrimaryInverse: Story = {
|
|
78
|
-
args: {
|
|
79
|
-
variant: "primary_inverse",
|
|
80
|
-
text: "Primary Inverse Button",
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
// Secondary variant
|
|
85
|
-
export const Secondary: Story = {
|
|
86
|
-
args: {
|
|
87
|
-
variant: "secondary",
|
|
88
|
-
text: "Secondary Button",
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
// With label
|
|
93
|
-
export const WithLabel: Story = {
|
|
94
|
-
args: {
|
|
95
|
-
variant: "primary_brand",
|
|
96
|
-
label: "Label",
|
|
97
|
-
text: "Button Text",
|
|
98
|
-
},
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
// Loading state
|
|
102
|
-
export const Loading: Story = {
|
|
103
|
-
args: {
|
|
104
|
-
variant: "primary_brand",
|
|
105
|
-
text: "Loading...",
|
|
106
|
-
isLoading: true,
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
// Disabled state
|
|
111
|
-
export const Disabled: Story = {
|
|
112
|
-
args: {
|
|
113
|
-
variant: "primary_brand",
|
|
114
|
-
text: "Disabled Button",
|
|
115
|
-
disabled: true,
|
|
116
|
-
},
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
// Full width
|
|
120
|
-
export const FullWidth: Story = {
|
|
121
|
-
args: {
|
|
122
|
-
variant: "primary_brand",
|
|
123
|
-
text: "Full Width Button",
|
|
124
|
-
fullWidth: true,
|
|
125
|
-
},
|
|
126
|
-
render: (args) => (
|
|
127
|
-
<div className="w-64">
|
|
128
|
-
<BrandButton {...args} />
|
|
129
|
-
</div>
|
|
130
|
-
),
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
// Responsive sizes
|
|
134
|
-
export const ResponsiveSizes: Story = {
|
|
135
|
-
render: () => (
|
|
136
|
-
<div className="space-y-4">
|
|
137
|
-
<div>
|
|
138
|
-
<h4 className="mb-2 text-sm font-medium">Base: small, MD: medium, LG: large</h4>
|
|
139
|
-
<BrandButton
|
|
140
|
-
variant="primary_brand"
|
|
141
|
-
text="Responsive Button"
|
|
142
|
-
size={{ base: "small", md: "medium", lg: "large" }}
|
|
143
|
-
/>
|
|
144
|
-
</div>
|
|
145
|
-
<div>
|
|
146
|
-
<h4 className="mb-2 text-sm font-medium">Base: medium, MD: large</h4>
|
|
147
|
-
<BrandButton
|
|
148
|
-
variant="primary_brand"
|
|
149
|
-
text="Responsive Button"
|
|
150
|
-
size={{ base: "medium", md: "large" }}
|
|
151
|
-
/>
|
|
152
|
-
</div>
|
|
153
|
-
<div>
|
|
154
|
-
<h4 className="mb-2 text-sm font-medium">Base only</h4>
|
|
155
|
-
<BrandButton
|
|
156
|
-
variant="primary_brand"
|
|
157
|
-
text="Responsive Button"
|
|
158
|
-
size={{ base: "medium" }}
|
|
159
|
-
/>
|
|
160
|
-
</div>
|
|
161
|
-
</div>
|
|
162
|
-
),
|
|
163
|
-
parameters: {
|
|
164
|
-
docs: {
|
|
165
|
-
description: {
|
|
166
|
-
story:
|
|
167
|
-
"BrandButton supports responsive sizing that adapts to different screen sizes.",
|
|
168
|
-
},
|
|
169
|
-
},
|
|
170
|
-
},
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
// All variants showcase
|
|
174
|
-
export const AllVariants: Story = {
|
|
175
|
-
render: () => (
|
|
176
|
-
<div className="space-y-6">
|
|
177
|
-
<div>
|
|
178
|
-
<h3 className="mb-4 text-lg font-semibold">Variants</h3>
|
|
179
|
-
<div className="flex flex-col gap-3">
|
|
180
|
-
<BrandButton variant="primary_brand" text="Primary Brand" />
|
|
181
|
-
<BrandButton variant="primary_inverse" text="Primary Inverse" />
|
|
182
|
-
<BrandButton variant="secondary" text="Secondary" />
|
|
183
|
-
</div>
|
|
184
|
-
</div>
|
|
185
|
-
<div>
|
|
186
|
-
<h3 className="mb-4 text-lg font-semibold">States</h3>
|
|
187
|
-
<div className="flex flex-col gap-3">
|
|
188
|
-
<BrandButton variant="primary_brand" text="Normal" />
|
|
189
|
-
<BrandButton variant="primary_brand" text="Loading" isLoading />
|
|
190
|
-
<BrandButton variant="primary_brand" text="Disabled" disabled />
|
|
191
|
-
</div>
|
|
192
|
-
</div>
|
|
193
|
-
<div>
|
|
194
|
-
<h3 className="mb-4 text-lg font-semibold">With Label</h3>
|
|
195
|
-
<BrandButton
|
|
196
|
-
variant="primary_brand"
|
|
197
|
-
label="Label"
|
|
198
|
-
text="Button Text"
|
|
199
|
-
/>
|
|
200
|
-
</div>
|
|
201
|
-
<div>
|
|
202
|
-
<h3 className="mb-4 text-lg font-semibold">Full Width</h3>
|
|
203
|
-
<div className="w-64">
|
|
204
|
-
<BrandButton
|
|
205
|
-
variant="primary_brand"
|
|
206
|
-
text="Full Width Button"
|
|
207
|
-
fullWidth
|
|
208
|
-
/>
|
|
209
|
-
</div>
|
|
210
|
-
</div>
|
|
211
|
-
</div>
|
|
212
|
-
),
|
|
213
|
-
parameters: {
|
|
214
|
-
docs: {
|
|
215
|
-
description: {
|
|
216
|
-
story: "Complete showcase of all BrandButton variants, sizes, and states.",
|
|
217
|
-
},
|
|
218
|
-
},
|
|
219
|
-
},
|
|
220
|
-
};
|
|
221
|
-
|
|
1
|
+
import { BrandButton } from "./index";
|
|
2
|
+
import { DocsPage } from "@shared/stories/DocsTemplate";
|
|
3
|
+
|
|
4
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof BrandButton> = {
|
|
7
|
+
title: "Components/BrandButton",
|
|
8
|
+
component: BrandButton,
|
|
9
|
+
tags: ["autodocs"],
|
|
10
|
+
parameters: {
|
|
11
|
+
layout: "centered",
|
|
12
|
+
docs: {
|
|
13
|
+
page: DocsPage,
|
|
14
|
+
description: {
|
|
15
|
+
component:
|
|
16
|
+
"A branded button component with predefined variants, responsive sizing, and loading states. Designed for consistent brand styling across the application.",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
argTypes: {
|
|
21
|
+
variant: {
|
|
22
|
+
control: { type: "select" },
|
|
23
|
+
options: ["primary_brand", "primary_inverse", "secondary"],
|
|
24
|
+
description: "Button styling variant",
|
|
25
|
+
},
|
|
26
|
+
isLoading: {
|
|
27
|
+
control: { type: "boolean" },
|
|
28
|
+
description: "Show loading spinner",
|
|
29
|
+
},
|
|
30
|
+
disabled: {
|
|
31
|
+
control: { type: "boolean" },
|
|
32
|
+
description: "Disable the button",
|
|
33
|
+
},
|
|
34
|
+
text: {
|
|
35
|
+
control: { type: "text" },
|
|
36
|
+
description: "Button text content",
|
|
37
|
+
},
|
|
38
|
+
label: {
|
|
39
|
+
control: { type: "text" },
|
|
40
|
+
description: "Button label (displayed above text)",
|
|
41
|
+
},
|
|
42
|
+
fullWidth: {
|
|
43
|
+
control: { type: "boolean" },
|
|
44
|
+
description: "Make button full width",
|
|
45
|
+
},
|
|
46
|
+
size: {
|
|
47
|
+
control: { type: "object" },
|
|
48
|
+
description: "Responsive size configuration",
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
args: {
|
|
52
|
+
text: "Button",
|
|
53
|
+
variant: "primary_brand",
|
|
54
|
+
isLoading: false,
|
|
55
|
+
disabled: false,
|
|
56
|
+
fullWidth: false,
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export default meta;
|
|
61
|
+
type Story = StoryObj<typeof meta>;
|
|
62
|
+
|
|
63
|
+
// Default button
|
|
64
|
+
export const Default: Story = {
|
|
65
|
+
args: {},
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
// Primary brand variant
|
|
69
|
+
export const PrimaryBrand: Story = {
|
|
70
|
+
args: {
|
|
71
|
+
variant: "primary_brand",
|
|
72
|
+
text: "Primary Brand Button",
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// Primary inverse variant
|
|
77
|
+
export const PrimaryInverse: Story = {
|
|
78
|
+
args: {
|
|
79
|
+
variant: "primary_inverse",
|
|
80
|
+
text: "Primary Inverse Button",
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// Secondary variant
|
|
85
|
+
export const Secondary: Story = {
|
|
86
|
+
args: {
|
|
87
|
+
variant: "secondary",
|
|
88
|
+
text: "Secondary Button",
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
// With label
|
|
93
|
+
export const WithLabel: Story = {
|
|
94
|
+
args: {
|
|
95
|
+
variant: "primary_brand",
|
|
96
|
+
label: "Label",
|
|
97
|
+
text: "Button Text",
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// Loading state
|
|
102
|
+
export const Loading: Story = {
|
|
103
|
+
args: {
|
|
104
|
+
variant: "primary_brand",
|
|
105
|
+
text: "Loading...",
|
|
106
|
+
isLoading: true,
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
// Disabled state
|
|
111
|
+
export const Disabled: Story = {
|
|
112
|
+
args: {
|
|
113
|
+
variant: "primary_brand",
|
|
114
|
+
text: "Disabled Button",
|
|
115
|
+
disabled: true,
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// Full width
|
|
120
|
+
export const FullWidth: Story = {
|
|
121
|
+
args: {
|
|
122
|
+
variant: "primary_brand",
|
|
123
|
+
text: "Full Width Button",
|
|
124
|
+
fullWidth: true,
|
|
125
|
+
},
|
|
126
|
+
render: (args) => (
|
|
127
|
+
<div className="w-64">
|
|
128
|
+
<BrandButton {...args} />
|
|
129
|
+
</div>
|
|
130
|
+
),
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
// Responsive sizes
|
|
134
|
+
export const ResponsiveSizes: Story = {
|
|
135
|
+
render: () => (
|
|
136
|
+
<div className="space-y-4">
|
|
137
|
+
<div>
|
|
138
|
+
<h4 className="mb-2 text-sm font-medium">Base: small, MD: medium, LG: large</h4>
|
|
139
|
+
<BrandButton
|
|
140
|
+
variant="primary_brand"
|
|
141
|
+
text="Responsive Button"
|
|
142
|
+
size={{ base: "small", md: "medium", lg: "large" }}
|
|
143
|
+
/>
|
|
144
|
+
</div>
|
|
145
|
+
<div>
|
|
146
|
+
<h4 className="mb-2 text-sm font-medium">Base: medium, MD: large</h4>
|
|
147
|
+
<BrandButton
|
|
148
|
+
variant="primary_brand"
|
|
149
|
+
text="Responsive Button"
|
|
150
|
+
size={{ base: "medium", md: "large" }}
|
|
151
|
+
/>
|
|
152
|
+
</div>
|
|
153
|
+
<div>
|
|
154
|
+
<h4 className="mb-2 text-sm font-medium">Base only</h4>
|
|
155
|
+
<BrandButton
|
|
156
|
+
variant="primary_brand"
|
|
157
|
+
text="Responsive Button"
|
|
158
|
+
size={{ base: "medium" }}
|
|
159
|
+
/>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
),
|
|
163
|
+
parameters: {
|
|
164
|
+
docs: {
|
|
165
|
+
description: {
|
|
166
|
+
story:
|
|
167
|
+
"BrandButton supports responsive sizing that adapts to different screen sizes.",
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
// All variants showcase
|
|
174
|
+
export const AllVariants: Story = {
|
|
175
|
+
render: () => (
|
|
176
|
+
<div className="space-y-6">
|
|
177
|
+
<div>
|
|
178
|
+
<h3 className="mb-4 text-lg font-semibold">Variants</h3>
|
|
179
|
+
<div className="flex flex-col gap-3">
|
|
180
|
+
<BrandButton variant="primary_brand" text="Primary Brand" />
|
|
181
|
+
<BrandButton variant="primary_inverse" text="Primary Inverse" />
|
|
182
|
+
<BrandButton variant="secondary" text="Secondary" />
|
|
183
|
+
</div>
|
|
184
|
+
</div>
|
|
185
|
+
<div>
|
|
186
|
+
<h3 className="mb-4 text-lg font-semibold">States</h3>
|
|
187
|
+
<div className="flex flex-col gap-3">
|
|
188
|
+
<BrandButton variant="primary_brand" text="Normal" />
|
|
189
|
+
<BrandButton variant="primary_brand" text="Loading" isLoading />
|
|
190
|
+
<BrandButton variant="primary_brand" text="Disabled" disabled />
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
<div>
|
|
194
|
+
<h3 className="mb-4 text-lg font-semibold">With Label</h3>
|
|
195
|
+
<BrandButton
|
|
196
|
+
variant="primary_brand"
|
|
197
|
+
label="Label"
|
|
198
|
+
text="Button Text"
|
|
199
|
+
/>
|
|
200
|
+
</div>
|
|
201
|
+
<div>
|
|
202
|
+
<h3 className="mb-4 text-lg font-semibold">Full Width</h3>
|
|
203
|
+
<div className="w-64">
|
|
204
|
+
<BrandButton
|
|
205
|
+
variant="primary_brand"
|
|
206
|
+
text="Full Width Button"
|
|
207
|
+
fullWidth
|
|
208
|
+
/>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
</div>
|
|
212
|
+
),
|
|
213
|
+
parameters: {
|
|
214
|
+
docs: {
|
|
215
|
+
description: {
|
|
216
|
+
story: "Complete showcase of all BrandButton variants, sizes, and states.",
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
};
|
|
221
|
+
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { ResponsiveSize } from "./types";
|
|
2
|
-
|
|
3
|
-
// Using a simple, intentional workaround to handle the Tailwind scan issue.
|
|
4
|
-
const getClassNames = (size:string) =>{
|
|
5
|
-
switch (size) {
|
|
6
|
-
case "small":
|
|
7
|
-
return "md:btn-small"
|
|
8
|
-
case "medium":
|
|
9
|
-
return "md:btn-medium"
|
|
10
|
-
case "large":
|
|
11
|
-
return "md:btn-large"
|
|
12
|
-
case "x-large":
|
|
13
|
-
return "md:btn-x-large"
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export const sizeToClassNames = (size: ResponsiveSize) => {
|
|
18
|
-
let classes = "";
|
|
19
|
-
|
|
20
|
-
if (size.base) classes = `btn-${size.base} `;
|
|
21
|
-
if (size.md) classes += `${getClassNames(size.md)} `;
|
|
22
|
-
if (size.lg) classes += `lg:btn-${size.lg} `;
|
|
23
|
-
|
|
24
|
-
return classes.trim();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export const getLabelSizeBasedOnButtonSize = (size: ResponsiveSize) => {
|
|
28
|
-
let classes = "";
|
|
29
|
-
|
|
30
|
-
if (size.base) classes = size.base === "x-large" ? `label3 ` : "label4 ";
|
|
31
|
-
if (size.md) classes += size.md === "x-large" ? `md:label3 ` : "md:label4 ";
|
|
32
|
-
if (size.lg) classes += size.lg === "x-large" ? `lg:label3 ` : "lg:label4 ";
|
|
33
|
-
|
|
34
|
-
return classes.trim();
|
|
35
|
-
}
|
|
1
|
+
import { ResponsiveSize } from "./types";
|
|
2
|
+
|
|
3
|
+
// Using a simple, intentional workaround to handle the Tailwind scan issue.
|
|
4
|
+
const getClassNames = (size:string) =>{
|
|
5
|
+
switch (size) {
|
|
6
|
+
case "small":
|
|
7
|
+
return "md:btn-small"
|
|
8
|
+
case "medium":
|
|
9
|
+
return "md:btn-medium"
|
|
10
|
+
case "large":
|
|
11
|
+
return "md:btn-large"
|
|
12
|
+
case "x-large":
|
|
13
|
+
return "md:btn-x-large"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const sizeToClassNames = (size: ResponsiveSize) => {
|
|
18
|
+
let classes = "";
|
|
19
|
+
|
|
20
|
+
if (size.base) classes = `btn-${size.base} `;
|
|
21
|
+
if (size.md) classes += `${getClassNames(size.md)} `;
|
|
22
|
+
if (size.lg) classes += `lg:btn-${size.lg} `;
|
|
23
|
+
|
|
24
|
+
return classes.trim();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const getLabelSizeBasedOnButtonSize = (size: ResponsiveSize) => {
|
|
28
|
+
let classes = "";
|
|
29
|
+
|
|
30
|
+
if (size.base) classes = size.base === "x-large" ? `label3 ` : "label4 ";
|
|
31
|
+
if (size.md) classes += size.md === "x-large" ? `md:label3 ` : "md:label4 ";
|
|
32
|
+
if (size.lg) classes += size.lg === "x-large" ? `lg:label3 ` : "lg:label4 ";
|
|
33
|
+
|
|
34
|
+
return classes.trim();
|
|
35
|
+
}
|