@windstream/react-shared-components 0.0.38 → 0.0.40

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.
Files changed (129) hide show
  1. package/dist/contentful/index.d.ts +31 -7
  2. package/dist/contentful/index.esm.js +1 -1
  3. package/dist/contentful/index.esm.js.map +1 -1
  4. package/dist/contentful/index.js +1 -1
  5. package/dist/contentful/index.js.map +1 -1
  6. package/dist/core.d.ts +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.esm.js +1 -1
  9. package/dist/index.esm.js.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/next/index.esm.js +1 -1
  13. package/dist/next/index.esm.js.map +1 -1
  14. package/dist/next/index.js +1 -1
  15. package/dist/next/index.js.map +1 -1
  16. package/dist/styles.css +1 -1
  17. package/package.json +1 -1
  18. package/src/components/accordion/Accordion.stories.tsx +230 -230
  19. package/src/components/accordion/types.ts +9 -9
  20. package/src/components/alert-card/AlertCard.stories.tsx +171 -171
  21. package/src/components/alert-card/index.tsx +32 -32
  22. package/src/components/brand-button/BrandButton.stories.tsx +219 -219
  23. package/src/components/brand-button/helpers.ts +35 -35
  24. package/src/components/brand-button/types.ts +25 -25
  25. package/src/components/button/Button.stories.tsx +108 -108
  26. package/src/components/call-button/CallButton.stories.tsx +324 -324
  27. package/src/components/call-button/index.tsx +79 -79
  28. package/src/components/call-button/types.ts +10 -10
  29. package/src/components/checkbox/Checkbox.stories.tsx +247 -247
  30. package/src/components/checkbox/types.ts +27 -27
  31. package/src/components/checklist/Checklist.stories.tsx +150 -150
  32. package/src/components/checklist/index.tsx +39 -39
  33. package/src/components/checklist/types.ts +6 -6
  34. package/src/components/collapse/Collapse.stories.tsx +255 -255
  35. package/src/components/collapse/types.ts +6 -6
  36. package/src/components/divider/Divider.stories.tsx +205 -205
  37. package/src/components/divider/index.tsx +22 -22
  38. package/src/components/divider/type.ts +3 -3
  39. package/src/components/image/Image.stories.tsx +113 -113
  40. package/src/components/image/index.tsx +25 -25
  41. package/src/components/image/types.ts +10 -3
  42. package/src/components/input/Input.stories.tsx +325 -325
  43. package/src/components/input/index.tsx +177 -177
  44. package/src/components/input/types.ts +37 -37
  45. package/src/components/link/Link.stories.tsx +163 -163
  46. package/src/components/list/List.stories.tsx +272 -272
  47. package/src/components/material-icon/MaterialIcon.stories.tsx +330 -330
  48. package/src/components/material-icon/constants.ts +95 -95
  49. package/src/components/modal/Modal.stories.tsx +171 -171
  50. package/src/components/modal/types.ts +24 -24
  51. package/src/components/next-image/index.tsx +32 -25
  52. package/src/components/next-image/types.ts +1 -1
  53. package/src/components/radio-button/RadioButton.stories.tsx +307 -307
  54. package/src/components/radio-button/index.tsx +75 -75
  55. package/src/components/radio-button/types.ts +21 -21
  56. package/src/components/see-more/SeeMore.stories.tsx +181 -181
  57. package/src/components/see-more/types.ts +4 -4
  58. package/src/components/select/Select.stories.tsx +411 -411
  59. package/src/components/select/types.ts +35 -35
  60. package/src/components/select-plan-button/SelectPlanButton.stories.tsx +168 -168
  61. package/src/components/select-plan-button/index.tsx +29 -29
  62. package/src/components/select-plan-button/types.ts +4 -4
  63. package/src/components/skeleton/Skeleton.stories.tsx +179 -179
  64. package/src/components/skeleton/types.ts +4 -4
  65. package/src/components/spinner/Spinner.stories.tsx +335 -335
  66. package/src/components/spinner/index.tsx +44 -44
  67. package/src/components/spinner/types.ts +5 -5
  68. package/src/components/text/Text.stories.tsx +321 -321
  69. package/src/components/tooltip/Tooltip.stories.tsx +219 -219
  70. package/src/components/tooltip/index.tsx +74 -74
  71. package/src/components/tooltip/types.ts +7 -7
  72. package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
  73. package/src/components/view-cart-button/index.tsx +44 -44
  74. package/src/components/view-cart-button/types.ts +5 -5
  75. package/src/contentful/blocks/accordion/Accordion.stories.tsx +29 -29
  76. package/src/contentful/blocks/accordion/index.tsx +52 -52
  77. package/src/contentful/blocks/accordion/types.ts +17 -17
  78. package/src/contentful/blocks/button/Button.stories.tsx +40 -40
  79. package/src/contentful/blocks/button/index.tsx +64 -53
  80. package/src/contentful/blocks/button/types.ts +24 -21
  81. package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
  82. package/src/contentful/blocks/callout/index.tsx +52 -15
  83. package/src/contentful/blocks/callout/types.ts +14 -1
  84. package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
  85. package/src/contentful/blocks/cards/index.tsx +13 -13
  86. package/src/contentful/blocks/cards/simple-card/index.tsx +45 -0
  87. package/src/contentful/blocks/cards/simple-card/types.ts +11 -0
  88. package/src/contentful/blocks/cards/types.ts +1 -1
  89. package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
  90. package/src/contentful/blocks/carousel/index.tsx +13 -13
  91. package/src/contentful/blocks/carousel/types.ts +1 -1
  92. package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
  93. package/src/contentful/blocks/cta-callout/index.tsx +54 -54
  94. package/src/contentful/blocks/cta-callout/types.ts +22 -22
  95. package/src/contentful/blocks/find-kinetic/FindKinetic.stories.tsx +23 -23
  96. package/src/contentful/blocks/find-kinetic/index.tsx +80 -80
  97. package/src/contentful/blocks/find-kinetic/types.ts +18 -18
  98. package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
  99. package/src/contentful/blocks/floating-banner/index.tsx +102 -99
  100. package/src/contentful/blocks/floating-banner/types.ts +22 -22
  101. package/src/contentful/blocks/footer/Footer.stories.tsx +30 -30
  102. package/src/contentful/blocks/footer/index.tsx +88 -79
  103. package/src/contentful/blocks/footer/types.ts +13 -10
  104. package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
  105. package/src/contentful/blocks/image-promo-bar/index.tsx +154 -154
  106. package/src/contentful/blocks/image-promo-bar/types.ts +25 -25
  107. package/src/contentful/blocks/modal/Modal.stories.tsx +23 -23
  108. package/src/contentful/blocks/modal/index.tsx +12 -12
  109. package/src/contentful/blocks/modal/types.ts +1 -1
  110. package/src/contentful/blocks/navigation/Navigation.stories.tsx +23 -23
  111. package/src/contentful/blocks/navigation/index.tsx +56 -55
  112. package/src/contentful/blocks/navigation/link-groups.tsx/index.tsx +62 -64
  113. package/src/contentful/blocks/navigation/types.ts +21 -21
  114. package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
  115. package/src/contentful/blocks/primary-hero/index.tsx +160 -177
  116. package/src/contentful/blocks/primary-hero/types.ts +30 -30
  117. package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
  118. package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
  119. package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
  120. package/src/contentful/blocks/text/Text.stories.tsx +23 -23
  121. package/src/contentful/blocks/text/index.tsx +12 -12
  122. package/src/contentful/blocks/text/types.ts +1 -1
  123. package/src/contentful/index.ts +48 -45
  124. package/src/index.ts +96 -96
  125. package/src/next/index.ts +5 -5
  126. package/src/stories/DocsTemplate.tsx +24 -24
  127. package/src/styles/globals.css +275 -275
  128. package/src/types/global.d.ts +9 -9
  129. package/src/utils/index.ts +49 -49
@@ -1,219 +1,219 @@
1
- import { BrandButton } from "./index";
2
-
3
- import { DocsPage } from "@shared/stories/DocsTemplate";
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">
139
- Base: small, MD: medium, LG: large
140
- </h4>
141
- <BrandButton
142
- variant="primary_brand"
143
- text="Responsive Button"
144
- size={{ base: "small", md: "medium", lg: "large" }}
145
- />
146
- </div>
147
- <div>
148
- <h4 className="mb-2 text-sm font-medium">Base: medium, MD: large</h4>
149
- <BrandButton
150
- variant="primary_brand"
151
- text="Responsive Button"
152
- size={{ base: "medium", md: "large" }}
153
- />
154
- </div>
155
- <div>
156
- <h4 className="mb-2 text-sm font-medium">Base only</h4>
157
- <BrandButton
158
- variant="primary_brand"
159
- text="Responsive Button"
160
- size={{ base: "medium" }}
161
- />
162
- </div>
163
- </div>
164
- ),
165
- parameters: {
166
- docs: {
167
- description: {
168
- story:
169
- "BrandButton supports responsive sizing that adapts to different screen sizes.",
170
- },
171
- },
172
- },
173
- };
174
-
175
- // All variants showcase
176
- export const AllVariants: Story = {
177
- render: () => (
178
- <div className="space-y-6">
179
- <div>
180
- <h3 className="mb-4 text-lg font-semibold">Variants</h3>
181
- <div className="flex flex-col gap-3">
182
- <BrandButton variant="primary_brand" text="Primary Brand" />
183
- <BrandButton variant="primary_inverse" text="Primary Inverse" />
184
- <BrandButton variant="secondary" text="Secondary" />
185
- </div>
186
- </div>
187
- <div>
188
- <h3 className="mb-4 text-lg font-semibold">States</h3>
189
- <div className="flex flex-col gap-3">
190
- <BrandButton variant="primary_brand" text="Normal" />
191
- <BrandButton variant="primary_brand" text="Loading" isLoading />
192
- <BrandButton variant="primary_brand" text="Disabled" disabled />
193
- </div>
194
- </div>
195
- <div>
196
- <h3 className="mb-4 text-lg font-semibold">With Label</h3>
197
- <BrandButton variant="primary_brand" label="Label" text="Button Text" />
198
- </div>
199
- <div>
200
- <h3 className="mb-4 text-lg font-semibold">Full Width</h3>
201
- <div className="w-64">
202
- <BrandButton
203
- variant="primary_brand"
204
- text="Full Width Button"
205
- fullWidth
206
- />
207
- </div>
208
- </div>
209
- </div>
210
- ),
211
- parameters: {
212
- docs: {
213
- description: {
214
- story:
215
- "Complete showcase of all BrandButton variants, sizes, and states.",
216
- },
217
- },
218
- },
219
- };
1
+ import { BrandButton } from "./index";
2
+
3
+ import { DocsPage } from "@shared/stories/DocsTemplate";
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">
139
+ Base: small, MD: medium, LG: large
140
+ </h4>
141
+ <BrandButton
142
+ variant="primary_brand"
143
+ text="Responsive Button"
144
+ size={{ base: "small", md: "medium", lg: "large" }}
145
+ />
146
+ </div>
147
+ <div>
148
+ <h4 className="mb-2 text-sm font-medium">Base: medium, MD: large</h4>
149
+ <BrandButton
150
+ variant="primary_brand"
151
+ text="Responsive Button"
152
+ size={{ base: "medium", md: "large" }}
153
+ />
154
+ </div>
155
+ <div>
156
+ <h4 className="mb-2 text-sm font-medium">Base only</h4>
157
+ <BrandButton
158
+ variant="primary_brand"
159
+ text="Responsive Button"
160
+ size={{ base: "medium" }}
161
+ />
162
+ </div>
163
+ </div>
164
+ ),
165
+ parameters: {
166
+ docs: {
167
+ description: {
168
+ story:
169
+ "BrandButton supports responsive sizing that adapts to different screen sizes.",
170
+ },
171
+ },
172
+ },
173
+ };
174
+
175
+ // All variants showcase
176
+ export const AllVariants: Story = {
177
+ render: () => (
178
+ <div className="space-y-6">
179
+ <div>
180
+ <h3 className="mb-4 text-lg font-semibold">Variants</h3>
181
+ <div className="flex flex-col gap-3">
182
+ <BrandButton variant="primary_brand" text="Primary Brand" />
183
+ <BrandButton variant="primary_inverse" text="Primary Inverse" />
184
+ <BrandButton variant="secondary" text="Secondary" />
185
+ </div>
186
+ </div>
187
+ <div>
188
+ <h3 className="mb-4 text-lg font-semibold">States</h3>
189
+ <div className="flex flex-col gap-3">
190
+ <BrandButton variant="primary_brand" text="Normal" />
191
+ <BrandButton variant="primary_brand" text="Loading" isLoading />
192
+ <BrandButton variant="primary_brand" text="Disabled" disabled />
193
+ </div>
194
+ </div>
195
+ <div>
196
+ <h3 className="mb-4 text-lg font-semibold">With Label</h3>
197
+ <BrandButton variant="primary_brand" label="Label" text="Button Text" />
198
+ </div>
199
+ <div>
200
+ <h3 className="mb-4 text-lg font-semibold">Full Width</h3>
201
+ <div className="w-64">
202
+ <BrandButton
203
+ variant="primary_brand"
204
+ text="Full Width Button"
205
+ fullWidth
206
+ />
207
+ </div>
208
+ </div>
209
+ </div>
210
+ ),
211
+ parameters: {
212
+ docs: {
213
+ description: {
214
+ story:
215
+ "Complete showcase of all BrandButton variants, sizes, and states.",
216
+ },
217
+ },
218
+ },
219
+ };
@@ -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
+ };
@@ -1,25 +1,25 @@
1
- import { type ButtonHTMLAttributes } from "react";
2
-
3
- export type ButtonVariantsT = "primary_brand" | "primary_inverse" | "secondary";
4
-
5
- export type ButtonSizeT = "small" | "medium" | "large" | "x-large";
6
-
7
- export type ResponsiveSize = {
8
- base?: ButtonSizeT;
9
- md?: ButtonSizeT;
10
- lg?: ButtonSizeT;
11
- };
12
-
13
- export type ButtonCustomProps = {
14
- /** Button styling variant */
15
- variant?: ButtonVariantsT;
16
- /** Loading state - shows spinner and disables button */
17
- isLoading?: boolean;
18
- label?: string;
19
- text?: string;
20
- fullWidth?: boolean;
21
- size?: ResponsiveSize;
22
- };
23
-
24
- export type ButtonProps = ButtonCustomProps &
25
- Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "className">;
1
+ import { type ButtonHTMLAttributes } from "react";
2
+
3
+ export type ButtonVariantsT = "primary_brand" | "primary_inverse" | "secondary";
4
+
5
+ export type ButtonSizeT = "small" | "medium" | "large" | "x-large";
6
+
7
+ export type ResponsiveSize = {
8
+ base?: ButtonSizeT;
9
+ md?: ButtonSizeT;
10
+ lg?: ButtonSizeT;
11
+ };
12
+
13
+ export type ButtonCustomProps = {
14
+ /** Button styling variant */
15
+ variant?: ButtonVariantsT;
16
+ /** Loading state - shows spinner and disables button */
17
+ isLoading?: boolean;
18
+ label?: string;
19
+ text?: string;
20
+ fullWidth?: boolean;
21
+ size?: ResponsiveSize;
22
+ };
23
+
24
+ export type ButtonProps = ButtonCustomProps &
25
+ Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "className">;