@windstream/react-shared-components 0.1.87 → 0.1.89

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 (211) hide show
  1. package/README.md +635 -635
  2. package/dist/contentful/index.esm.js +3 -3
  3. package/dist/contentful/index.esm.js.map +1 -1
  4. package/dist/contentful/index.js +3 -3
  5. package/dist/contentful/index.js.map +1 -1
  6. package/dist/core.d.ts +2 -2
  7. package/dist/index.d.ts +2 -2
  8. package/dist/index.esm.js +5 -13
  9. package/dist/index.esm.js.map +1 -1
  10. package/dist/index.js +5 -13
  11. package/dist/index.js.map +1 -1
  12. package/dist/next/index.esm.js +2 -2
  13. package/dist/next/index.esm.js.map +1 -1
  14. package/dist/next/index.js +2 -2
  15. package/dist/next/index.js.map +1 -1
  16. package/dist/styles.css +1 -1
  17. package/dist/utils/index.esm.js +1 -1
  18. package/dist/utils/index.esm.js.map +1 -1
  19. package/dist/utils/index.js +1 -1
  20. package/dist/utils/index.js.map +1 -1
  21. package/package.json +185 -185
  22. package/src/components/accordion/Accordion.stories.tsx +230 -230
  23. package/src/components/accordion/index.tsx +70 -70
  24. package/src/components/accordion/types.ts +12 -12
  25. package/src/components/alert-card/AlertCard.stories.tsx +171 -171
  26. package/src/components/alert-card/index.tsx +41 -41
  27. package/src/components/alert-card/types.ts +13 -13
  28. package/src/components/animation-wrapper/index.tsx +129 -129
  29. package/src/components/animation-wrapper/types.ts +11 -11
  30. package/src/components/brand-button/BrandButton.stories.tsx +223 -223
  31. package/src/components/brand-button/helpers.ts +35 -35
  32. package/src/components/brand-button/index.tsx +120 -120
  33. package/src/components/brand-button/types.ts +38 -38
  34. package/src/components/button/Button.stories.tsx +108 -108
  35. package/src/components/button/index.tsx +27 -27
  36. package/src/components/button/types.ts +14 -14
  37. package/src/components/call-button/CallButton.stories.tsx +324 -324
  38. package/src/components/call-button/index.tsx +106 -106
  39. package/src/components/call-button/types.ts +16 -16
  40. package/src/components/checkbox/Checkbox.stories.tsx +247 -247
  41. package/src/components/checkbox/index.tsx +197 -197
  42. package/src/components/checkbox/types.ts +27 -27
  43. package/src/components/checklist/Checklist.stories.tsx +150 -150
  44. package/src/components/checklist/index.tsx +61 -61
  45. package/src/components/checklist/types.ts +17 -17
  46. package/src/components/collapse/Collapse.stories.tsx +255 -255
  47. package/src/components/collapse/index.tsx +46 -46
  48. package/src/components/collapse/types.ts +6 -6
  49. package/src/components/divider/Divider.stories.tsx +205 -205
  50. package/src/components/divider/index.tsx +22 -22
  51. package/src/components/divider/type.ts +3 -3
  52. package/src/components/image/Image.stories.tsx +113 -113
  53. package/src/components/image/index.tsx +25 -25
  54. package/src/components/image/types.ts +40 -40
  55. package/src/components/input/Input.stories.tsx +325 -325
  56. package/src/components/input/index.tsx +177 -177
  57. package/src/components/input/types.ts +37 -37
  58. package/src/components/link/Link.stories.tsx +163 -163
  59. package/src/components/link/index.tsx +116 -116
  60. package/src/components/link/types.ts +25 -25
  61. package/src/components/list/List.stories.tsx +272 -272
  62. package/src/components/list/index.tsx +88 -88
  63. package/src/components/list/list-item/index.tsx +38 -38
  64. package/src/components/list/list-item/types.ts +13 -13
  65. package/src/components/list/types.ts +29 -29
  66. package/src/components/material-icon/MaterialIcon.stories.tsx +322 -322
  67. package/src/components/material-icon/constants.ts +99 -99
  68. package/src/components/material-icon/index.tsx +47 -47
  69. package/src/components/material-icon/types.ts +31 -31
  70. package/src/components/modal/Modal.stories.tsx +171 -171
  71. package/src/components/modal/index.tsx +164 -164
  72. package/src/components/modal/types.ts +24 -24
  73. package/src/components/next-image/index.tsx +74 -74
  74. package/src/components/next-image/types.ts +1 -1
  75. package/src/components/pagination/index.tsx +91 -91
  76. package/src/components/pagination/types.ts +6 -6
  77. package/src/components/radio-button/RadioButton.stories.tsx +307 -307
  78. package/src/components/radio-button/index.tsx +75 -75
  79. package/src/components/radio-button/types.ts +21 -21
  80. package/src/components/see-more/SeeMore.stories.tsx +181 -181
  81. package/src/components/see-more/index.tsx +44 -44
  82. package/src/components/see-more/types.ts +4 -4
  83. package/src/components/select/Select.stories.tsx +411 -411
  84. package/src/components/select/index.tsx +155 -155
  85. package/src/components/select/types.ts +36 -36
  86. package/src/components/select-plan-button/SelectPlanButton.stories.tsx +184 -184
  87. package/src/components/select-plan-button/index.tsx +63 -63
  88. package/src/components/select-plan-button/types.ts +17 -17
  89. package/src/components/skeleton/Skeleton.stories.tsx +179 -179
  90. package/src/components/skeleton/index.tsx +61 -61
  91. package/src/components/skeleton/types.ts +4 -4
  92. package/src/components/spinner/Spinner.stories.tsx +335 -335
  93. package/src/components/spinner/index.tsx +44 -44
  94. package/src/components/spinner/types.ts +5 -5
  95. package/src/components/text/Text.stories.tsx +321 -321
  96. package/src/components/text/index.tsx +25 -25
  97. package/src/components/text/types.ts +45 -45
  98. package/src/components/tooltip/Tooltip.stories.tsx +219 -219
  99. package/src/components/tooltip/index.tsx +74 -74
  100. package/src/components/tooltip/types.ts +7 -7
  101. package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
  102. package/src/components/view-cart-button/index.tsx +42 -42
  103. package/src/components/view-cart-button/types.ts +5 -5
  104. package/src/contentful/blocks/accordion/Accordion.stories.mocks.tsx +128 -128
  105. package/src/contentful/blocks/accordion/Accordion.stories.tsx +98 -98
  106. package/src/contentful/blocks/accordion/index.tsx +112 -112
  107. package/src/contentful/blocks/accordion/types.ts +34 -34
  108. package/src/contentful/blocks/address-input-banner/index.tsx +52 -52
  109. package/src/contentful/blocks/address-input-banner/types.ts +14 -14
  110. package/src/contentful/blocks/anchored-bottom-banner/index.tsx +181 -181
  111. package/src/contentful/blocks/anchored-bottom-banner/types.ts +13 -13
  112. package/src/contentful/blocks/blogs-grid/BlogGrid.stories.mocks.tsx +144 -144
  113. package/src/contentful/blocks/blogs-grid/BlogGrid.stories.tsx +156 -156
  114. package/src/contentful/blocks/blogs-grid/index.tsx +134 -134
  115. package/src/contentful/blocks/blogs-grid/types.ts +26 -26
  116. package/src/contentful/blocks/blogs-grid-base/index.tsx +119 -119
  117. package/src/contentful/blocks/blogs-grid-base/types.ts +36 -36
  118. package/src/contentful/blocks/breadcrumbs/BreadcrumbNavigation.stories.tsx +147 -147
  119. package/src/contentful/blocks/breadcrumbs/index.tsx +95 -95
  120. package/src/contentful/blocks/breadcrumbs/types.ts +8 -8
  121. package/src/contentful/blocks/button/Button.stories.tsx +40 -40
  122. package/src/contentful/blocks/button/index.tsx +131 -131
  123. package/src/contentful/blocks/button/types.ts +39 -39
  124. package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
  125. package/src/contentful/blocks/callout/index.tsx +279 -279
  126. package/src/contentful/blocks/callout/types.ts +78 -78
  127. package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
  128. package/src/contentful/blocks/cards/blog-card/index.tsx +129 -129
  129. package/src/contentful/blocks/cards/blog-card/types.ts +34 -34
  130. package/src/contentful/blocks/cards/floating-image-card/index.tsx +119 -119
  131. package/src/contentful/blocks/cards/floating-image-card/types.ts +30 -30
  132. package/src/contentful/blocks/cards/full-image-card/index.tsx +130 -130
  133. package/src/contentful/blocks/cards/full-image-card/types.ts +29 -29
  134. package/src/contentful/blocks/cards/index.tsx +13 -13
  135. package/src/contentful/blocks/cards/product-card/index.tsx +251 -251
  136. package/src/contentful/blocks/cards/product-card/types.ts +28 -28
  137. package/src/contentful/blocks/cards/simple-card/index.tsx +325 -325
  138. package/src/contentful/blocks/cards/simple-card/types.ts +71 -71
  139. package/src/contentful/blocks/cards/testimonial-card/index.tsx +90 -90
  140. package/src/contentful/blocks/cards/testimonial-card/types.tsx +12 -12
  141. package/src/contentful/blocks/cards/types.ts +1 -1
  142. package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
  143. package/src/contentful/blocks/carousel/helper.tsx +494 -494
  144. package/src/contentful/blocks/carousel/index.tsx +87 -87
  145. package/src/contentful/blocks/carousel/types.ts +145 -145
  146. package/src/contentful/blocks/cart-retention-banner/index.tsx +109 -105
  147. package/src/contentful/blocks/cart-retention-banner/types.ts +11 -11
  148. package/src/contentful/blocks/comparison-table/index.tsx +29 -29
  149. package/src/contentful/blocks/comparison-table/types.ts +6 -6
  150. package/src/contentful/blocks/cookiebanner/index.tsx +146 -146
  151. package/src/contentful/blocks/cookiebanner/type.ts +7 -7
  152. package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
  153. package/src/contentful/blocks/cta-callout/index.tsx +71 -71
  154. package/src/contentful/blocks/cta-callout/types.ts +26 -26
  155. package/src/contentful/blocks/dynamic-tabs/index.tsx +204 -204
  156. package/src/contentful/blocks/dynamic-tabs/types.ts +21 -21
  157. package/src/contentful/blocks/email-input-block/index.tsx +116 -116
  158. package/src/contentful/blocks/email-input-block/types.ts +16 -16
  159. package/src/contentful/blocks/find-kinetic/FindKinetic.stories.tsx +23 -23
  160. package/src/contentful/blocks/find-kinetic/index.tsx +130 -130
  161. package/src/contentful/blocks/find-kinetic/types.ts +19 -19
  162. package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
  163. package/src/contentful/blocks/floating-banner/index.tsx +97 -97
  164. package/src/contentful/blocks/floating-banner/types.ts +22 -22
  165. package/src/contentful/blocks/footer/Footer.stories.tsx +317 -317
  166. package/src/contentful/blocks/footer/index.tsx +91 -91
  167. package/src/contentful/blocks/footer/types.ts +13 -13
  168. package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
  169. package/src/contentful/blocks/image-promo-bar/helper.tsx +28 -28
  170. package/src/contentful/blocks/image-promo-bar/index.tsx +246 -246
  171. package/src/contentful/blocks/image-promo-bar/types.ts +44 -44
  172. package/src/contentful/blocks/image-promo-bar/vimeo-embed.tsx +93 -93
  173. package/src/contentful/blocks/image-promo-bar/youtube-embed.tsx +46 -46
  174. package/src/contentful/blocks/modal/constants.ts +53 -53
  175. package/src/contentful/blocks/modal/index.tsx +107 -107
  176. package/src/contentful/blocks/modal/types.ts +12 -12
  177. package/src/contentful/blocks/navigation/desktop-link-groups.tsx/index.tsx +139 -139
  178. package/src/contentful/blocks/navigation/index.tsx +568 -568
  179. package/src/contentful/blocks/navigation/mobile-link-groups.tsx/index.tsx +82 -82
  180. package/src/contentful/blocks/navigation/types.ts +71 -71
  181. package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
  182. package/src/contentful/blocks/primary-hero/index.tsx +236 -236
  183. package/src/contentful/blocks/primary-hero/types.ts +37 -37
  184. package/src/contentful/blocks/search-block/index.tsx +90 -90
  185. package/src/contentful/blocks/search-block/types.ts +15 -15
  186. package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
  187. package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
  188. package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
  189. package/src/contentful/blocks/text/Text.stories.tsx +23 -23
  190. package/src/contentful/blocks/text/index.tsx +12 -12
  191. package/src/contentful/blocks/text/types.ts +1 -1
  192. package/src/contentful/index.ts +105 -105
  193. package/src/hooks/contentful/use-contentful-rich-text.tsx +309 -309
  194. package/src/hooks/contentful/use-processed-check-list.ts +63 -63
  195. package/src/hooks/use-body-scroll-lock.ts +34 -34
  196. package/src/hooks/use-carousel-swipe.ts +264 -264
  197. package/src/hooks/use-outside-click.ts +17 -17
  198. package/src/index.ts +107 -107
  199. package/src/next/index.ts +5 -5
  200. package/src/setupTests.ts +46 -46
  201. package/src/stories/DocsTemplate.tsx +24 -24
  202. package/src/styles/globals.css +343 -343
  203. package/src/types/global.d.ts +9 -9
  204. package/src/types/micro-components.ts +99 -99
  205. package/src/types/utm.ts +49 -49
  206. package/src/utils/contentful/to-document.ts +24 -24
  207. package/src/utils/cookie.ts +84 -84
  208. package/src/utils/cx.ts +49 -49
  209. package/src/utils/index.ts +41 -41
  210. package/src/utils/speed-card-bg.ts +24 -24
  211. package/src/utils/utm.ts +221 -221
@@ -1,179 +1,179 @@
1
- import { PageSkeleton, Skeleton } from "./index";
2
-
3
- import { DocsPage } from "@shared/stories/DocsTemplate";
4
- import type { Meta, StoryObj } from "@storybook/react";
5
-
6
- const meta: Meta<typeof Skeleton> = {
7
- title: "Components/Skeleton",
8
- component: Skeleton,
9
- tags: ["autodocs"],
10
- parameters: {
11
- layout: "centered",
12
- docs: {
13
- page: DocsPage,
14
- description: {
15
- component:
16
- "Loading skeleton components for displaying placeholder content while data is being loaded.",
17
- },
18
- },
19
- },
20
- argTypes: {
21
- count: {
22
- control: { type: "number" },
23
- description: "Number of skeleton lines to display",
24
- },
25
- className: {
26
- control: { type: "text" },
27
- description: "Additional CSS classes",
28
- },
29
- },
30
- args: {
31
- count: 1,
32
- },
33
- };
34
-
35
- export default meta;
36
- type Story = StoryObj<typeof meta>;
37
-
38
- // Default skeleton
39
- export const Default: Story = {
40
- args: {},
41
- };
42
-
43
- // Multiple counts
44
- export const Multiple: Story = {
45
- args: {
46
- count: 3,
47
- },
48
- };
49
-
50
- // Custom styling
51
- export const CustomStyling: Story = {
52
- args: {
53
- count: 2,
54
- className: "h-12 rounded-lg",
55
- },
56
- };
57
-
58
- // Different counts
59
- export const DifferentCounts: Story = {
60
- render: () => (
61
- <div className="max-w-md w-full space-y-4">
62
- <div>
63
- <h4 className="mb-2 text-sm font-medium">Single Line</h4>
64
- <Skeleton count={1} />
65
- </div>
66
- <div>
67
- <h4 className="mb-2 text-sm font-medium">Three Lines</h4>
68
- <Skeleton count={3} />
69
- </div>
70
- <div>
71
- <h4 className="mb-2 text-sm font-medium">Five Lines</h4>
72
- <Skeleton count={5} />
73
- </div>
74
- </div>
75
- ),
76
- parameters: {
77
- docs: {
78
- description: {
79
- story: "Skeleton with different line counts.",
80
- },
81
- },
82
- },
83
- };
84
-
85
- // Page skeleton
86
- export const PageSkeletonExample: Story = {
87
- render: () => (
88
- <div className="w-full">
89
- <PageSkeleton />
90
- </div>
91
- ),
92
- parameters: {
93
- layout: "fullscreen",
94
- docs: {
95
- description: {
96
- story: "PageSkeleton component for full page loading states.",
97
- },
98
- },
99
- },
100
- };
101
-
102
- // In card
103
- export const InCard: Story = {
104
- render: () => (
105
- <div className="max-w-sm border-border-default w-full space-y-4 rounded-lg border p-6">
106
- <Skeleton count={1} className="h-6 w-3/4" />
107
- <Skeleton count={2} />
108
- <Skeleton count={1} className="h-10 w-full" />
109
- </div>
110
- ),
111
- parameters: {
112
- docs: {
113
- description: {
114
- story: "Skeleton used within a card layout.",
115
- },
116
- },
117
- },
118
- };
119
-
120
- // List skeleton
121
- export const ListSkeleton: Story = {
122
- render: () => (
123
- <div className="max-w-md w-full space-y-3">
124
- {[1, 2, 3, 4, 5].map(i => (
125
- <div key={i} className="flex items-center gap-3">
126
- <Skeleton count={1} className="h-12 w-12 rounded-full" />
127
- <div className="flex-1 space-y-2">
128
- <Skeleton count={1} className="h-4 w-3/4" />
129
- <Skeleton count={1} className="h-3 w-1/2" />
130
- </div>
131
- </div>
132
- ))}
133
- </div>
134
- ),
135
- parameters: {
136
- docs: {
137
- description: {
138
- story: "Skeleton used for loading list items.",
139
- },
140
- },
141
- },
142
- };
143
-
144
- // All variants showcase
145
- export const AllVariants: Story = {
146
- render: () => (
147
- <div className="max-w-2xl w-full space-y-8">
148
- <div>
149
- <h3 className="mb-3 text-lg font-semibold">Basic Skeleton</h3>
150
- <Skeleton count={3} />
151
- </div>
152
- <div>
153
- <h3 className="mb-3 text-lg font-semibold">Custom Styled</h3>
154
- <Skeleton count={2} className="h-8 rounded-lg" />
155
- </div>
156
- <div>
157
- <h3 className="mb-3 text-lg font-semibold">In Card</h3>
158
- <div className="border-border-default space-y-4 rounded-lg border p-6">
159
- <Skeleton count={1} className="h-6 w-3/4" />
160
- <Skeleton count={2} />
161
- <Skeleton count={1} className="h-10 w-full" />
162
- </div>
163
- </div>
164
- <div>
165
- <h3 className="mb-3 text-lg font-semibold">Page Skeleton</h3>
166
- <div className="border-border-default rounded border p-4">
167
- <PageSkeleton />
168
- </div>
169
- </div>
170
- </div>
171
- ),
172
- parameters: {
173
- docs: {
174
- description: {
175
- story: "Showcase of all skeleton variants and use cases.",
176
- },
177
- },
178
- },
179
- };
1
+ import { PageSkeleton, Skeleton } from "./index";
2
+
3
+ import { DocsPage } from "@shared/stories/DocsTemplate";
4
+ import type { Meta, StoryObj } from "@storybook/react";
5
+
6
+ const meta: Meta<typeof Skeleton> = {
7
+ title: "Components/Skeleton",
8
+ component: Skeleton,
9
+ tags: ["autodocs"],
10
+ parameters: {
11
+ layout: "centered",
12
+ docs: {
13
+ page: DocsPage,
14
+ description: {
15
+ component:
16
+ "Loading skeleton components for displaying placeholder content while data is being loaded.",
17
+ },
18
+ },
19
+ },
20
+ argTypes: {
21
+ count: {
22
+ control: { type: "number" },
23
+ description: "Number of skeleton lines to display",
24
+ },
25
+ className: {
26
+ control: { type: "text" },
27
+ description: "Additional CSS classes",
28
+ },
29
+ },
30
+ args: {
31
+ count: 1,
32
+ },
33
+ };
34
+
35
+ export default meta;
36
+ type Story = StoryObj<typeof meta>;
37
+
38
+ // Default skeleton
39
+ export const Default: Story = {
40
+ args: {},
41
+ };
42
+
43
+ // Multiple counts
44
+ export const Multiple: Story = {
45
+ args: {
46
+ count: 3,
47
+ },
48
+ };
49
+
50
+ // Custom styling
51
+ export const CustomStyling: Story = {
52
+ args: {
53
+ count: 2,
54
+ className: "h-12 rounded-lg",
55
+ },
56
+ };
57
+
58
+ // Different counts
59
+ export const DifferentCounts: Story = {
60
+ render: () => (
61
+ <div className="max-w-md w-full space-y-4">
62
+ <div>
63
+ <h4 className="mb-2 text-sm font-medium">Single Line</h4>
64
+ <Skeleton count={1} />
65
+ </div>
66
+ <div>
67
+ <h4 className="mb-2 text-sm font-medium">Three Lines</h4>
68
+ <Skeleton count={3} />
69
+ </div>
70
+ <div>
71
+ <h4 className="mb-2 text-sm font-medium">Five Lines</h4>
72
+ <Skeleton count={5} />
73
+ </div>
74
+ </div>
75
+ ),
76
+ parameters: {
77
+ docs: {
78
+ description: {
79
+ story: "Skeleton with different line counts.",
80
+ },
81
+ },
82
+ },
83
+ };
84
+
85
+ // Page skeleton
86
+ export const PageSkeletonExample: Story = {
87
+ render: () => (
88
+ <div className="w-full">
89
+ <PageSkeleton />
90
+ </div>
91
+ ),
92
+ parameters: {
93
+ layout: "fullscreen",
94
+ docs: {
95
+ description: {
96
+ story: "PageSkeleton component for full page loading states.",
97
+ },
98
+ },
99
+ },
100
+ };
101
+
102
+ // In card
103
+ export const InCard: Story = {
104
+ render: () => (
105
+ <div className="max-w-sm border-border-default w-full space-y-4 rounded-lg border p-6">
106
+ <Skeleton count={1} className="h-6 w-3/4" />
107
+ <Skeleton count={2} />
108
+ <Skeleton count={1} className="h-10 w-full" />
109
+ </div>
110
+ ),
111
+ parameters: {
112
+ docs: {
113
+ description: {
114
+ story: "Skeleton used within a card layout.",
115
+ },
116
+ },
117
+ },
118
+ };
119
+
120
+ // List skeleton
121
+ export const ListSkeleton: Story = {
122
+ render: () => (
123
+ <div className="max-w-md w-full space-y-3">
124
+ {[1, 2, 3, 4, 5].map(i => (
125
+ <div key={i} className="flex items-center gap-3">
126
+ <Skeleton count={1} className="h-12 w-12 rounded-full" />
127
+ <div className="flex-1 space-y-2">
128
+ <Skeleton count={1} className="h-4 w-3/4" />
129
+ <Skeleton count={1} className="h-3 w-1/2" />
130
+ </div>
131
+ </div>
132
+ ))}
133
+ </div>
134
+ ),
135
+ parameters: {
136
+ docs: {
137
+ description: {
138
+ story: "Skeleton used for loading list items.",
139
+ },
140
+ },
141
+ },
142
+ };
143
+
144
+ // All variants showcase
145
+ export const AllVariants: Story = {
146
+ render: () => (
147
+ <div className="max-w-2xl w-full space-y-8">
148
+ <div>
149
+ <h3 className="mb-3 text-lg font-semibold">Basic Skeleton</h3>
150
+ <Skeleton count={3} />
151
+ </div>
152
+ <div>
153
+ <h3 className="mb-3 text-lg font-semibold">Custom Styled</h3>
154
+ <Skeleton count={2} className="h-8 rounded-lg" />
155
+ </div>
156
+ <div>
157
+ <h3 className="mb-3 text-lg font-semibold">In Card</h3>
158
+ <div className="border-border-default space-y-4 rounded-lg border p-6">
159
+ <Skeleton count={1} className="h-6 w-3/4" />
160
+ <Skeleton count={2} />
161
+ <Skeleton count={1} className="h-10 w-full" />
162
+ </div>
163
+ </div>
164
+ <div>
165
+ <h3 className="mb-3 text-lg font-semibold">Page Skeleton</h3>
166
+ <div className="border-border-default rounded border p-4">
167
+ <PageSkeleton />
168
+ </div>
169
+ </div>
170
+ </div>
171
+ ),
172
+ parameters: {
173
+ docs: {
174
+ description: {
175
+ story: "Showcase of all skeleton variants and use cases.",
176
+ },
177
+ },
178
+ },
179
+ };
@@ -1,61 +1,61 @@
1
- import { FC } from "react";
2
- import { SkeletonProps } from "./types";
3
-
4
- export const Skeleton: FC<SkeletonProps> = ({ className = "", count = 1 }) => {
5
- return (
6
- <div className="animate-pulse space-y-4">
7
- {Array.from({ length: count }).map((_, index) => (
8
- <div
9
- key={index}
10
- className={`h-8 rounded bg-skeleton-bg-start ${className}`}
11
- style={{ opacity: 1 - index * 0.1 }}
12
- />
13
- ))}
14
- </div>
15
- );
16
- };
17
-
18
- Skeleton.displayName = "Skeleton";
19
-
20
- export type { SkeletonProps };
21
-
22
- export const PageSkeleton: FC = () => {
23
- return (
24
- <div
25
- className="item-center mx-auto mt-4 flex animate-pulse flex-col justify-center gap-10 px-1 md:max-w-[48.375rem] md:gap-16 md:px-0"
26
- data-testid="generic-skeleton"
27
- >
28
- {/* Title */}
29
- <div
30
- className="h-12 w-full rounded-lg bg-skeleton-bg-start"
31
- data-testid="title"
32
- />
33
-
34
- {/* Subtitle */}
35
- <div className="item-center flex flex-col gap-6" data-testid="subtitle">
36
- <div className="h-5 w-full rounded-lg bg-skeleton-bg-start" />
37
- <div className="h-5 w-full rounded-lg bg-skeleton-bg-start" />
38
- </div>
39
-
40
- {/* Content */}
41
- <div className="item-center flex flex-col gap-3" data-testid="content">
42
- <div className="h-12 w-full rounded-lg bg-skeleton-bg-start" />
43
- <div className="h-12 w-full rounded-lg bg-skeleton-bg-start" />
44
- </div>
45
-
46
- {/* Additional Information */}
47
- <div
48
- className="item-center flex flex-col gap-6"
49
- data-testid="additional-info"
50
- >
51
- <div className="h-5 w-full rounded-lg bg-skeleton-bg-end" />
52
- <div className="h-5 w-full rounded-lg bg-skeleton-bg-end" />
53
- </div>
54
-
55
- {/* CTA button */}
56
- <div className="item-center flex justify-center" data-testid="cta-button">
57
- <div className="h-12 w-full rounded-lg bg-skeleton-bg-end md:w-[22.125rem]" />
58
- </div>
59
- </div>
60
- );
61
- };
1
+ import { FC } from "react";
2
+ import { SkeletonProps } from "./types";
3
+
4
+ export const Skeleton: FC<SkeletonProps> = ({ className = "", count = 1 }) => {
5
+ return (
6
+ <div className="animate-pulse space-y-4">
7
+ {Array.from({ length: count }).map((_, index) => (
8
+ <div
9
+ key={index}
10
+ className={`h-8 rounded bg-skeleton-bg-start ${className}`}
11
+ style={{ opacity: 1 - index * 0.1 }}
12
+ />
13
+ ))}
14
+ </div>
15
+ );
16
+ };
17
+
18
+ Skeleton.displayName = "Skeleton";
19
+
20
+ export type { SkeletonProps };
21
+
22
+ export const PageSkeleton: FC = () => {
23
+ return (
24
+ <div
25
+ className="item-center mx-auto mt-4 flex animate-pulse flex-col justify-center gap-10 px-1 md:max-w-[48.375rem] md:gap-16 md:px-0"
26
+ data-testid="generic-skeleton"
27
+ >
28
+ {/* Title */}
29
+ <div
30
+ className="h-12 w-full rounded-lg bg-skeleton-bg-start"
31
+ data-testid="title"
32
+ />
33
+
34
+ {/* Subtitle */}
35
+ <div className="item-center flex flex-col gap-6" data-testid="subtitle">
36
+ <div className="h-5 w-full rounded-lg bg-skeleton-bg-start" />
37
+ <div className="h-5 w-full rounded-lg bg-skeleton-bg-start" />
38
+ </div>
39
+
40
+ {/* Content */}
41
+ <div className="item-center flex flex-col gap-3" data-testid="content">
42
+ <div className="h-12 w-full rounded-lg bg-skeleton-bg-start" />
43
+ <div className="h-12 w-full rounded-lg bg-skeleton-bg-start" />
44
+ </div>
45
+
46
+ {/* Additional Information */}
47
+ <div
48
+ className="item-center flex flex-col gap-6"
49
+ data-testid="additional-info"
50
+ >
51
+ <div className="h-5 w-full rounded-lg bg-skeleton-bg-end" />
52
+ <div className="h-5 w-full rounded-lg bg-skeleton-bg-end" />
53
+ </div>
54
+
55
+ {/* CTA button */}
56
+ <div className="item-center flex justify-center" data-testid="cta-button">
57
+ <div className="h-12 w-full rounded-lg bg-skeleton-bg-end md:w-[22.125rem]" />
58
+ </div>
59
+ </div>
60
+ );
61
+ };
@@ -1,4 +1,4 @@
1
- export type SkeletonProps = {
2
- className?: string;
3
- count?: number;
4
- };
1
+ export type SkeletonProps = {
2
+ className?: string;
3
+ count?: number;
4
+ };