@windstream/react-shared-components 0.1.90 → 0.1.91

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 (210) 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/index.d.ts +2 -2
  7. package/dist/index.esm.js +13 -5
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/index.js +13 -5
  10. package/dist/index.js.map +1 -1
  11. package/dist/next/index.esm.js +2 -2
  12. package/dist/next/index.esm.js.map +1 -1
  13. package/dist/next/index.js +2 -2
  14. package/dist/next/index.js.map +1 -1
  15. package/dist/styles.css +1 -1
  16. package/dist/utils/index.esm.js +1 -1
  17. package/dist/utils/index.esm.js.map +1 -1
  18. package/dist/utils/index.js +1 -1
  19. package/dist/utils/index.js.map +1 -1
  20. package/package.json +185 -185
  21. package/src/components/accordion/Accordion.stories.tsx +230 -230
  22. package/src/components/accordion/index.tsx +70 -70
  23. package/src/components/accordion/types.ts +12 -12
  24. package/src/components/alert-card/AlertCard.stories.tsx +171 -171
  25. package/src/components/alert-card/index.tsx +41 -41
  26. package/src/components/alert-card/types.ts +13 -13
  27. package/src/components/animation-wrapper/index.tsx +129 -129
  28. package/src/components/animation-wrapper/types.ts +11 -11
  29. package/src/components/brand-button/BrandButton.stories.tsx +223 -223
  30. package/src/components/brand-button/helpers.ts +35 -35
  31. package/src/components/brand-button/index.tsx +120 -120
  32. package/src/components/brand-button/types.ts +38 -38
  33. package/src/components/button/Button.stories.tsx +108 -108
  34. package/src/components/button/index.tsx +27 -27
  35. package/src/components/button/types.ts +14 -14
  36. package/src/components/call-button/CallButton.stories.tsx +324 -324
  37. package/src/components/call-button/index.tsx +106 -106
  38. package/src/components/call-button/types.ts +16 -16
  39. package/src/components/checkbox/Checkbox.stories.tsx +247 -247
  40. package/src/components/checkbox/index.tsx +197 -197
  41. package/src/components/checkbox/types.ts +27 -27
  42. package/src/components/checklist/Checklist.stories.tsx +150 -150
  43. package/src/components/checklist/index.tsx +61 -61
  44. package/src/components/checklist/types.ts +17 -17
  45. package/src/components/collapse/Collapse.stories.tsx +255 -255
  46. package/src/components/collapse/index.tsx +46 -46
  47. package/src/components/collapse/types.ts +6 -6
  48. package/src/components/divider/Divider.stories.tsx +205 -205
  49. package/src/components/divider/index.tsx +22 -22
  50. package/src/components/divider/type.ts +3 -3
  51. package/src/components/image/Image.stories.tsx +113 -113
  52. package/src/components/image/index.tsx +25 -25
  53. package/src/components/image/types.ts +40 -40
  54. package/src/components/input/Input.stories.tsx +325 -325
  55. package/src/components/input/index.tsx +177 -177
  56. package/src/components/input/types.ts +37 -37
  57. package/src/components/link/Link.stories.tsx +163 -163
  58. package/src/components/link/index.tsx +116 -116
  59. package/src/components/link/types.ts +25 -25
  60. package/src/components/list/List.stories.tsx +272 -272
  61. package/src/components/list/index.tsx +88 -88
  62. package/src/components/list/list-item/index.tsx +38 -38
  63. package/src/components/list/list-item/types.ts +13 -13
  64. package/src/components/list/types.ts +29 -29
  65. package/src/components/material-icon/MaterialIcon.stories.tsx +322 -322
  66. package/src/components/material-icon/constants.ts +99 -99
  67. package/src/components/material-icon/index.tsx +47 -47
  68. package/src/components/material-icon/types.ts +31 -31
  69. package/src/components/modal/Modal.stories.tsx +171 -171
  70. package/src/components/modal/index.tsx +164 -164
  71. package/src/components/modal/types.ts +24 -24
  72. package/src/components/next-image/index.tsx +74 -74
  73. package/src/components/next-image/types.ts +1 -1
  74. package/src/components/pagination/index.tsx +91 -91
  75. package/src/components/pagination/types.ts +6 -6
  76. package/src/components/radio-button/RadioButton.stories.tsx +307 -307
  77. package/src/components/radio-button/index.tsx +75 -75
  78. package/src/components/radio-button/types.ts +21 -21
  79. package/src/components/see-more/SeeMore.stories.tsx +181 -181
  80. package/src/components/see-more/index.tsx +44 -44
  81. package/src/components/see-more/types.ts +4 -4
  82. package/src/components/select/Select.stories.tsx +411 -411
  83. package/src/components/select/index.tsx +155 -155
  84. package/src/components/select/types.ts +36 -36
  85. package/src/components/select-plan-button/SelectPlanButton.stories.tsx +184 -184
  86. package/src/components/select-plan-button/index.tsx +63 -63
  87. package/src/components/select-plan-button/types.ts +17 -17
  88. package/src/components/skeleton/Skeleton.stories.tsx +179 -179
  89. package/src/components/skeleton/index.tsx +61 -61
  90. package/src/components/skeleton/types.ts +4 -4
  91. package/src/components/spinner/Spinner.stories.tsx +335 -335
  92. package/src/components/spinner/index.tsx +44 -44
  93. package/src/components/spinner/types.ts +5 -5
  94. package/src/components/text/Text.stories.tsx +321 -321
  95. package/src/components/text/index.tsx +25 -25
  96. package/src/components/text/types.ts +45 -45
  97. package/src/components/tooltip/Tooltip.stories.tsx +219 -219
  98. package/src/components/tooltip/index.tsx +74 -74
  99. package/src/components/tooltip/types.ts +7 -7
  100. package/src/components/view-cart-button/ViewCartButton.stories.tsx +252 -252
  101. package/src/components/view-cart-button/index.tsx +42 -42
  102. package/src/components/view-cart-button/types.ts +5 -5
  103. package/src/contentful/blocks/accordion/Accordion.stories.mocks.tsx +128 -128
  104. package/src/contentful/blocks/accordion/Accordion.stories.tsx +98 -98
  105. package/src/contentful/blocks/accordion/index.tsx +112 -112
  106. package/src/contentful/blocks/accordion/types.ts +34 -34
  107. package/src/contentful/blocks/address-input-banner/index.tsx +52 -52
  108. package/src/contentful/blocks/address-input-banner/types.ts +14 -14
  109. package/src/contentful/blocks/anchored-bottom-banner/index.tsx +181 -181
  110. package/src/contentful/blocks/anchored-bottom-banner/types.ts +13 -13
  111. package/src/contentful/blocks/blogs-grid/BlogGrid.stories.mocks.tsx +144 -144
  112. package/src/contentful/blocks/blogs-grid/BlogGrid.stories.tsx +156 -156
  113. package/src/contentful/blocks/blogs-grid/index.tsx +134 -134
  114. package/src/contentful/blocks/blogs-grid/types.ts +26 -26
  115. package/src/contentful/blocks/blogs-grid-base/index.tsx +119 -119
  116. package/src/contentful/blocks/blogs-grid-base/types.ts +36 -36
  117. package/src/contentful/blocks/breadcrumbs/BreadcrumbNavigation.stories.tsx +147 -147
  118. package/src/contentful/blocks/breadcrumbs/index.tsx +95 -95
  119. package/src/contentful/blocks/breadcrumbs/types.ts +8 -8
  120. package/src/contentful/blocks/button/Button.stories.tsx +40 -40
  121. package/src/contentful/blocks/button/index.tsx +131 -131
  122. package/src/contentful/blocks/button/types.ts +39 -39
  123. package/src/contentful/blocks/callout/Callout.stories.tsx +23 -23
  124. package/src/contentful/blocks/callout/index.tsx +277 -279
  125. package/src/contentful/blocks/callout/types.ts +78 -78
  126. package/src/contentful/blocks/cards/Cards.stories.tsx +23 -23
  127. package/src/contentful/blocks/cards/blog-card/index.tsx +129 -129
  128. package/src/contentful/blocks/cards/blog-card/types.ts +34 -34
  129. package/src/contentful/blocks/cards/floating-image-card/index.tsx +119 -119
  130. package/src/contentful/blocks/cards/floating-image-card/types.ts +30 -30
  131. package/src/contentful/blocks/cards/full-image-card/index.tsx +130 -130
  132. package/src/contentful/blocks/cards/full-image-card/types.ts +29 -29
  133. package/src/contentful/blocks/cards/index.tsx +13 -13
  134. package/src/contentful/blocks/cards/product-card/index.tsx +251 -251
  135. package/src/contentful/blocks/cards/product-card/types.ts +28 -28
  136. package/src/contentful/blocks/cards/simple-card/index.tsx +325 -325
  137. package/src/contentful/blocks/cards/simple-card/types.ts +71 -71
  138. package/src/contentful/blocks/cards/testimonial-card/index.tsx +90 -90
  139. package/src/contentful/blocks/cards/testimonial-card/types.tsx +12 -12
  140. package/src/contentful/blocks/cards/types.ts +1 -1
  141. package/src/contentful/blocks/carousel/Carousel.stories.tsx +23 -23
  142. package/src/contentful/blocks/carousel/helper.tsx +494 -494
  143. package/src/contentful/blocks/carousel/index.tsx +87 -87
  144. package/src/contentful/blocks/carousel/types.ts +145 -145
  145. package/src/contentful/blocks/cart-retention-banner/index.tsx +109 -109
  146. package/src/contentful/blocks/cart-retention-banner/types.ts +11 -11
  147. package/src/contentful/blocks/comparison-table/index.tsx +29 -29
  148. package/src/contentful/blocks/comparison-table/types.ts +6 -6
  149. package/src/contentful/blocks/cookiebanner/index.tsx +146 -146
  150. package/src/contentful/blocks/cookiebanner/type.ts +7 -7
  151. package/src/contentful/blocks/cta-callout/CtaCallout.stories.tsx +46 -46
  152. package/src/contentful/blocks/cta-callout/index.tsx +73 -71
  153. package/src/contentful/blocks/cta-callout/types.ts +26 -26
  154. package/src/contentful/blocks/dynamic-tabs/index.tsx +204 -204
  155. package/src/contentful/blocks/dynamic-tabs/types.ts +21 -21
  156. package/src/contentful/blocks/email-input-block/index.tsx +116 -116
  157. package/src/contentful/blocks/email-input-block/types.ts +16 -16
  158. package/src/contentful/blocks/find-kinetic/FindKinetic.stories.tsx +23 -23
  159. package/src/contentful/blocks/find-kinetic/index.tsx +130 -130
  160. package/src/contentful/blocks/find-kinetic/types.ts +19 -19
  161. package/src/contentful/blocks/floating-banner/FloatingBanner.stories.tsx +34 -34
  162. package/src/contentful/blocks/floating-banner/index.tsx +97 -97
  163. package/src/contentful/blocks/floating-banner/types.ts +22 -22
  164. package/src/contentful/blocks/footer/Footer.stories.tsx +317 -317
  165. package/src/contentful/blocks/footer/index.tsx +91 -91
  166. package/src/contentful/blocks/footer/types.ts +13 -13
  167. package/src/contentful/blocks/image-promo-bar/ImagePromoBar.stories.tsx +23 -23
  168. package/src/contentful/blocks/image-promo-bar/helper.tsx +28 -28
  169. package/src/contentful/blocks/image-promo-bar/index.tsx +246 -246
  170. package/src/contentful/blocks/image-promo-bar/types.ts +44 -44
  171. package/src/contentful/blocks/image-promo-bar/vimeo-embed.tsx +93 -93
  172. package/src/contentful/blocks/image-promo-bar/youtube-embed.tsx +46 -46
  173. package/src/contentful/blocks/modal/constants.ts +53 -53
  174. package/src/contentful/blocks/modal/index.tsx +107 -107
  175. package/src/contentful/blocks/modal/types.ts +12 -12
  176. package/src/contentful/blocks/navigation/desktop-link-groups.tsx/index.tsx +139 -139
  177. package/src/contentful/blocks/navigation/index.tsx +568 -568
  178. package/src/contentful/blocks/navigation/mobile-link-groups.tsx/index.tsx +82 -82
  179. package/src/contentful/blocks/navigation/types.ts +71 -71
  180. package/src/contentful/blocks/primary-hero/PrimaryHero.stories.tsx +23 -23
  181. package/src/contentful/blocks/primary-hero/index.tsx +236 -236
  182. package/src/contentful/blocks/primary-hero/types.ts +37 -37
  183. package/src/contentful/blocks/search-block/index.tsx +90 -90
  184. package/src/contentful/blocks/search-block/types.ts +15 -15
  185. package/src/contentful/blocks/shape-background-wrapper/ShapeBackgroundWrapper.stories.tsx +26 -26
  186. package/src/contentful/blocks/shape-background-wrapper/index.tsx +124 -124
  187. package/src/contentful/blocks/shape-background-wrapper/types.ts +36 -36
  188. package/src/contentful/blocks/text/Text.stories.tsx +23 -23
  189. package/src/contentful/blocks/text/index.tsx +12 -12
  190. package/src/contentful/blocks/text/types.ts +1 -1
  191. package/src/contentful/index.ts +105 -105
  192. package/src/hooks/contentful/use-contentful-rich-text.tsx +309 -309
  193. package/src/hooks/contentful/use-processed-check-list.ts +63 -63
  194. package/src/hooks/use-body-scroll-lock.ts +34 -34
  195. package/src/hooks/use-carousel-swipe.ts +264 -264
  196. package/src/hooks/use-outside-click.ts +17 -17
  197. package/src/index.ts +107 -107
  198. package/src/next/index.ts +5 -5
  199. package/src/setupTests.ts +46 -46
  200. package/src/stories/DocsTemplate.tsx +24 -24
  201. package/src/styles/globals.css +343 -343
  202. package/src/types/global.d.ts +9 -9
  203. package/src/types/micro-components.ts +99 -99
  204. package/src/types/utm.ts +49 -49
  205. package/src/utils/contentful/to-document.ts +24 -24
  206. package/src/utils/cookie.ts +84 -84
  207. package/src/utils/cx.ts +49 -49
  208. package/src/utils/index.ts +41 -41
  209. package/src/utils/speed-card-bg.ts +24 -24
  210. package/src/utils/utm.ts +221 -221
@@ -1,9 +1,9 @@
1
- declare module "*.module.css" {
2
- const classes: { [key: string]: string };
3
- export default classes;
4
- }
5
-
6
- declare module "*.css" {
7
- const content: string;
8
- export default content;
9
- }
1
+ declare module "*.module.css" {
2
+ const classes: { [key: string]: string };
3
+ export default classes;
4
+ }
5
+
6
+ declare module "*.css" {
7
+ const content: string;
8
+ export default content;
9
+ }
@@ -1,99 +1,99 @@
1
- import { ButtonProps } from "@shared/contentful";
2
-
3
- export interface Asset {
4
- url?: string | null;
5
- title?: string | null;
6
- description?: string | null;
7
- contentType?: string | null;
8
- width?: number | null;
9
- height?: number | null;
10
- }
11
- export interface Button {
12
- anchorId?: string | null;
13
- showButtonAs?: "solid" | "text" | null;
14
- buttonLabel: string; // required in your model
15
- buttonPrefix?: string | null;
16
- href?: string | null;
17
- target?: "_blank" | "_self" | null;
18
- badge?: string | null;
19
- preserveQueryParameters: boolean; // non-null in your model
20
- badgeIcon?: Asset | null;
21
- buttonVariant?: "primary_brand" | "primary_inverse" | "secondary" | null;
22
- buttonIcon?: Asset | null;
23
- buttonIconPosition?: boolean | null; // matches EntryFieldTypes.Boolean in your model
24
- clickToOpen?: "accordion" | "modal" | "tab" | null;
25
- tabmodalNameToOpen?: string | null;
26
- preDefinedFunctionExecution?: "check availability" | null;
27
- }
28
-
29
- export interface ButtonGroup {
30
- __typename: "ComponentButtonGroup";
31
- anchorId?: string | null;
32
- title?: string | null;
33
- itemsCollection?: {
34
- items: Button[];
35
- };
36
- }
37
- export interface Card {
38
- anchorId?: string;
39
- title?: string;
40
- body?: {
41
- json: any; // Contentful Rich Text
42
- };
43
- image?: Asset;
44
- imageLink?: string;
45
- imageAlignment?: "Left" | "Right" | "Center" | string;
46
- imageView?: "Full" | "Inset" | string;
47
- cta?: Button;
48
- ctaAlignment?: "Left" | "Right" | "Center" | string;
49
- textColor?: string;
50
- backgroundColor?: string;
51
- showBackgroundImage?: boolean;
52
- pinwheelColor?: "blue" | "green" | "navy" | "purple" | "white" | "yellow";
53
- iconToRichTextAlignment?: string;
54
- phoneNumber?: string;
55
- workingHours?: string;
56
- titleLocation?: "Top" | "Bottom" | string;
57
- ctaBottom?: Button;
58
- ctaAlignmentBottom?: "Left" | "Right" | "Center" | string;
59
- imageFloatingType?: boolean;
60
- }
61
-
62
- export interface VideoLink {
63
- image?: Asset;
64
- videoPopup?: boolean;
65
- link?: string;
66
- }
67
-
68
- export interface Checklist {
69
- list?: {
70
- items: {
71
- checkListTitle?: { json: any };
72
- icon?: Asset;
73
- anchorId?: string;
74
- }[];
75
- };
76
- }
77
-
78
- export interface RichTextItem {
79
- title?: string;
80
- isTargetBlank?: boolean;
81
- richText?: { json: any };
82
- }
83
-
84
- export type CheckPlansProps = {
85
- className?: string;
86
- title?: string;
87
- ctaAlignment?: "new-row" | "same-row";
88
- ctaText?: string;
89
- buttonVariant?: "primary_brand" | "secondary" | "primary_inverse";
90
- showButtonAs?: "solid" | "unstyled" | "text" | undefined;
91
- cta?: ButtonProps;
92
- speedCardConfig?: {
93
- isModalOpen?: boolean;
94
- setModalOpen?: () => void;
95
- speed?: string;
96
- techType?: string;
97
- isMax?: boolean;
98
- };
99
- };
1
+ import { ButtonProps } from "@shared/contentful";
2
+
3
+ export interface Asset {
4
+ url?: string | null;
5
+ title?: string | null;
6
+ description?: string | null;
7
+ contentType?: string | null;
8
+ width?: number | null;
9
+ height?: number | null;
10
+ }
11
+ export interface Button {
12
+ anchorId?: string | null;
13
+ showButtonAs?: "solid" | "text" | null;
14
+ buttonLabel: string; // required in your model
15
+ buttonPrefix?: string | null;
16
+ href?: string | null;
17
+ target?: "_blank" | "_self" | null;
18
+ badge?: string | null;
19
+ preserveQueryParameters: boolean; // non-null in your model
20
+ badgeIcon?: Asset | null;
21
+ buttonVariant?: "primary_brand" | "primary_inverse" | "secondary" | null;
22
+ buttonIcon?: Asset | null;
23
+ buttonIconPosition?: boolean | null; // matches EntryFieldTypes.Boolean in your model
24
+ clickToOpen?: "accordion" | "modal" | "tab" | null;
25
+ tabmodalNameToOpen?: string | null;
26
+ preDefinedFunctionExecution?: "check availability" | null;
27
+ }
28
+
29
+ export interface ButtonGroup {
30
+ __typename: "ComponentButtonGroup";
31
+ anchorId?: string | null;
32
+ title?: string | null;
33
+ itemsCollection?: {
34
+ items: Button[];
35
+ };
36
+ }
37
+ export interface Card {
38
+ anchorId?: string;
39
+ title?: string;
40
+ body?: {
41
+ json: any; // Contentful Rich Text
42
+ };
43
+ image?: Asset;
44
+ imageLink?: string;
45
+ imageAlignment?: "Left" | "Right" | "Center" | string;
46
+ imageView?: "Full" | "Inset" | string;
47
+ cta?: Button;
48
+ ctaAlignment?: "Left" | "Right" | "Center" | string;
49
+ textColor?: string;
50
+ backgroundColor?: string;
51
+ showBackgroundImage?: boolean;
52
+ pinwheelColor?: "blue" | "green" | "navy" | "purple" | "white" | "yellow";
53
+ iconToRichTextAlignment?: string;
54
+ phoneNumber?: string;
55
+ workingHours?: string;
56
+ titleLocation?: "Top" | "Bottom" | string;
57
+ ctaBottom?: Button;
58
+ ctaAlignmentBottom?: "Left" | "Right" | "Center" | string;
59
+ imageFloatingType?: boolean;
60
+ }
61
+
62
+ export interface VideoLink {
63
+ image?: Asset;
64
+ videoPopup?: boolean;
65
+ link?: string;
66
+ }
67
+
68
+ export interface Checklist {
69
+ list?: {
70
+ items: {
71
+ checkListTitle?: { json: any };
72
+ icon?: Asset;
73
+ anchorId?: string;
74
+ }[];
75
+ };
76
+ }
77
+
78
+ export interface RichTextItem {
79
+ title?: string;
80
+ isTargetBlank?: boolean;
81
+ richText?: { json: any };
82
+ }
83
+
84
+ export type CheckPlansProps = {
85
+ className?: string;
86
+ title?: string;
87
+ ctaAlignment?: "new-row" | "same-row";
88
+ ctaText?: string;
89
+ buttonVariant?: "primary_brand" | "secondary" | "primary_inverse";
90
+ showButtonAs?: "solid" | "unstyled" | "text" | undefined;
91
+ cta?: ButtonProps;
92
+ speedCardConfig?: {
93
+ isModalOpen?: boolean;
94
+ setModalOpen?: () => void;
95
+ speed?: string;
96
+ techType?: string;
97
+ isMax?: boolean;
98
+ };
99
+ };
package/src/types/utm.ts CHANGED
@@ -1,49 +1,49 @@
1
- /**
2
- * UTM Parameter Types
3
- *
4
- * Type definitions for UTM tracking parameters used across Kinetic applications.
5
- */
6
-
7
- /** All tracked UTM and click-ID parameter names */
8
- export type UTMProperty =
9
- | "utm_content"
10
- | "utm_medium"
11
- | "utm_campaign"
12
- | "utm_source"
13
- | "utm_term"
14
- | "utm_campaign_id"
15
- | "utm_adgroup_id"
16
- | "fbclid"
17
- | "gclid"
18
- | "msclkid";
19
-
20
- /** Partial record of UTM parameter values */
21
- export type UTMProperties = Partial<Record<UTMProperty, string>>;
22
-
23
- /** Segment campaign context schema */
24
- export interface CampaignProperties {
25
- name?: string;
26
- source?: string;
27
- medium?: string;
28
- term?: string;
29
- content?: string;
30
- campaign_id?: string;
31
- adgroup_id?: string;
32
- gclid?: string;
33
- fbclid?: string;
34
- msclkid?: string;
35
- }
36
-
37
- /** List of all UTM parameter names for filtering */
38
- export const UTM_PARAM_NAMES: UTMProperty[] = [
39
- "utm_content",
40
- "utm_medium",
41
- "utm_campaign",
42
- "utm_source",
43
- "utm_term",
44
- "utm_campaign_id",
45
- "utm_adgroup_id",
46
- "fbclid",
47
- "gclid",
48
- "msclkid",
49
- ];
1
+ /**
2
+ * UTM Parameter Types
3
+ *
4
+ * Type definitions for UTM tracking parameters used across Kinetic applications.
5
+ */
6
+
7
+ /** All tracked UTM and click-ID parameter names */
8
+ export type UTMProperty =
9
+ | "utm_content"
10
+ | "utm_medium"
11
+ | "utm_campaign"
12
+ | "utm_source"
13
+ | "utm_term"
14
+ | "utm_campaign_id"
15
+ | "utm_adgroup_id"
16
+ | "fbclid"
17
+ | "gclid"
18
+ | "msclkid";
19
+
20
+ /** Partial record of UTM parameter values */
21
+ export type UTMProperties = Partial<Record<UTMProperty, string>>;
22
+
23
+ /** Segment campaign context schema */
24
+ export interface CampaignProperties {
25
+ name?: string;
26
+ source?: string;
27
+ medium?: string;
28
+ term?: string;
29
+ content?: string;
30
+ campaign_id?: string;
31
+ adgroup_id?: string;
32
+ gclid?: string;
33
+ fbclid?: string;
34
+ msclkid?: string;
35
+ }
36
+
37
+ /** List of all UTM parameter names for filtering */
38
+ export const UTM_PARAM_NAMES: UTMProperty[] = [
39
+ "utm_content",
40
+ "utm_medium",
41
+ "utm_campaign",
42
+ "utm_source",
43
+ "utm_term",
44
+ "utm_campaign_id",
45
+ "utm_adgroup_id",
46
+ "fbclid",
47
+ "gclid",
48
+ "msclkid",
49
+ ];
@@ -1,24 +1,24 @@
1
- import type { Document } from "@contentful/rich-text-types";
2
-
3
- type GraphqlRichText = { json: Document; links?: unknown };
4
-
5
- const isDocument = (v: unknown): v is Document =>
6
- !!v &&
7
- typeof v === "object" &&
8
- "nodeType" in (v as any) &&
9
- "content" in (v as any);
10
-
11
- export const toDocument = (v: unknown | null | undefined): Document | null => {
12
- if (!v) return null;
13
-
14
- // REST/CDA Document
15
- if (isDocument(v)) return v;
16
-
17
- // GraphQL RichText { json: Document, links? }
18
- if (typeof v === "object" && v !== null && "json" in (v as any)) {
19
- const json = (v as GraphqlRichText).json;
20
- return isDocument(json) ? json : null;
21
- }
22
-
23
- return null;
24
- };
1
+ import type { Document } from "@contentful/rich-text-types";
2
+
3
+ type GraphqlRichText = { json: Document; links?: unknown };
4
+
5
+ const isDocument = (v: unknown): v is Document =>
6
+ !!v &&
7
+ typeof v === "object" &&
8
+ "nodeType" in (v as any) &&
9
+ "content" in (v as any);
10
+
11
+ export const toDocument = (v: unknown | null | undefined): Document | null => {
12
+ if (!v) return null;
13
+
14
+ // REST/CDA Document
15
+ if (isDocument(v)) return v;
16
+
17
+ // GraphQL RichText { json: Document, links? }
18
+ if (typeof v === "object" && v !== null && "json" in (v as any)) {
19
+ const json = (v as GraphqlRichText).json;
20
+ return isDocument(json) ? json : null;
21
+ }
22
+
23
+ return null;
24
+ };
@@ -1,84 +1,84 @@
1
- /**
2
- * Cookie Helpers for UTM Parameter Storage
3
- *
4
- * Provides Base64-encoded JSON cookie storage for UTM parameters.
5
- */
6
- import type { UTMProperties } from "../types/utm";
7
- import { Base64 } from "js-base64";
8
- import Cookies from "js-cookie";
9
-
10
- const UTM_COOKIE_KEY = "utm_parameters";
11
- const DEFAULT_DOMAIN = ".gokinetic.com";
12
-
13
- /**
14
- * Reads UTM parameters from the Base64-encoded cookie.
15
- * @returns Parsed UTMProperties or null if cookie doesn't exist / is invalid.
16
- */
17
- export function getUTMs(): UTMProperties | null {
18
- if (typeof window === "undefined") return null;
19
-
20
- const raw = Cookies.get(UTM_COOKIE_KEY);
21
- if (!raw) return null;
22
-
23
- try {
24
- const decoded = Base64.decode(raw);
25
- return JSON.parse(decoded) as UTMProperties;
26
- } catch {
27
- return null;
28
- }
29
- }
30
-
31
- /**
32
- * Stores UTM parameters as a Base64-encoded JSON cookie.
33
- * @param utms - The UTM properties to store.
34
- * @param domain - Cookie domain (defaults to `.gokinetic.com`).
35
- */
36
- export function setUTMs(
37
- utms: UTMProperties,
38
- domain: string = DEFAULT_DOMAIN
39
- ): void {
40
- if (typeof window === "undefined") return;
41
-
42
- const json = JSON.stringify(utms);
43
- const encoded = Base64.encode(json);
44
-
45
- Cookies.set(UTM_COOKIE_KEY, encoded, {
46
- domain,
47
- path: "/",
48
- sameSite: "Lax",
49
- });
50
- }
51
-
52
- /**
53
- * Removes the UTM cookie.
54
- * @param domain - Cookie domain (defaults to `.gokinetic.com`).
55
- */
56
- export function removeUTMs(domain: string = DEFAULT_DOMAIN): void {
57
- Cookies.remove(UTM_COOKIE_KEY, { domain, path: "/" });
58
- }
59
- export function getCookie(key: string): string | null {
60
- if (typeof window === "undefined") return "";
61
- const encryptedValue = Cookies.get(key);
62
-
63
- if (encryptedValue) return Base64.decode(encryptedValue);
64
-
65
- return null;
66
- }
67
- export const getParsedCookie = (key: string) => {
68
- try {
69
- return JSON.parse(getCookie(key) || "");
70
- } catch {
71
- return null;
72
- }
73
- };
74
- export const setCookie = (
75
- key: string,
76
- value: any,
77
- options: Cookies.CookieAttributes
78
- ) => {
79
- if (typeof window === "undefined") return;
80
- const stringValue = JSON.stringify(value);
81
- const encryptedValue = Base64.encode(stringValue);
82
-
83
- Cookies.set(key, encryptedValue, options);
84
- };
1
+ /**
2
+ * Cookie Helpers for UTM Parameter Storage
3
+ *
4
+ * Provides Base64-encoded JSON cookie storage for UTM parameters.
5
+ */
6
+ import type { UTMProperties } from "../types/utm";
7
+ import { Base64 } from "js-base64";
8
+ import Cookies from "js-cookie";
9
+
10
+ const UTM_COOKIE_KEY = "utm_parameters";
11
+ const DEFAULT_DOMAIN = ".gokinetic.com";
12
+
13
+ /**
14
+ * Reads UTM parameters from the Base64-encoded cookie.
15
+ * @returns Parsed UTMProperties or null if cookie doesn't exist / is invalid.
16
+ */
17
+ export function getUTMs(): UTMProperties | null {
18
+ if (typeof window === "undefined") return null;
19
+
20
+ const raw = Cookies.get(UTM_COOKIE_KEY);
21
+ if (!raw) return null;
22
+
23
+ try {
24
+ const decoded = Base64.decode(raw);
25
+ return JSON.parse(decoded) as UTMProperties;
26
+ } catch {
27
+ return null;
28
+ }
29
+ }
30
+
31
+ /**
32
+ * Stores UTM parameters as a Base64-encoded JSON cookie.
33
+ * @param utms - The UTM properties to store.
34
+ * @param domain - Cookie domain (defaults to `.gokinetic.com`).
35
+ */
36
+ export function setUTMs(
37
+ utms: UTMProperties,
38
+ domain: string = DEFAULT_DOMAIN
39
+ ): void {
40
+ if (typeof window === "undefined") return;
41
+
42
+ const json = JSON.stringify(utms);
43
+ const encoded = Base64.encode(json);
44
+
45
+ Cookies.set(UTM_COOKIE_KEY, encoded, {
46
+ domain,
47
+ path: "/",
48
+ sameSite: "Lax",
49
+ });
50
+ }
51
+
52
+ /**
53
+ * Removes the UTM cookie.
54
+ * @param domain - Cookie domain (defaults to `.gokinetic.com`).
55
+ */
56
+ export function removeUTMs(domain: string = DEFAULT_DOMAIN): void {
57
+ Cookies.remove(UTM_COOKIE_KEY, { domain, path: "/" });
58
+ }
59
+ export function getCookie(key: string): string | null {
60
+ if (typeof window === "undefined") return "";
61
+ const encryptedValue = Cookies.get(key);
62
+
63
+ if (encryptedValue) return Base64.decode(encryptedValue);
64
+
65
+ return null;
66
+ }
67
+ export const getParsedCookie = (key: string) => {
68
+ try {
69
+ return JSON.parse(getCookie(key) || "");
70
+ } catch {
71
+ return null;
72
+ }
73
+ };
74
+ export const setCookie = (
75
+ key: string,
76
+ value: any,
77
+ options: Cookies.CookieAttributes
78
+ ) => {
79
+ if (typeof window === "undefined") return;
80
+ const stringValue = JSON.stringify(value);
81
+ const encryptedValue = Base64.encode(stringValue);
82
+
83
+ Cookies.set(key, encryptedValue, options);
84
+ };
package/src/utils/cx.ts CHANGED
@@ -1,49 +1,49 @@
1
- import { clsx, type ClassValue } from "clsx";
2
- import { extendTailwindMerge } from "tailwind-merge";
3
-
4
- const twMerge = extendTailwindMerge({
5
- // Define class groups so twMerge knows which classes override each other
6
- extend: {
7
- classGroups: {
8
- ["font-variants" as any]: [
9
- "heading1",
10
- "heading2",
11
- "heading3",
12
- "heading4",
13
- "heading5",
14
- "heading6",
15
- "subheading1",
16
- "subheading2",
17
- "subheading3",
18
- "subheading4",
19
- "subheading5",
20
- "subheading6",
21
- "body1",
22
- "body2",
23
- "body3",
24
- "footnote",
25
- "micro",
26
- "label1",
27
- "label2",
28
- "label3",
29
- "label4",
30
- ],
31
- ["button-sizes" as any]: [
32
- "btn-small",
33
- "btn-medium",
34
- "btn-large",
35
- "btn-x-large",
36
- ],
37
- },
38
- },
39
- });
40
-
41
- /**
42
- * Utility function to combine class names using clsx
43
- * @param inputs - Class values to combine
44
- * @returns Combined class string
45
- */
46
- export const cx = (...val: ClassValue[]) => twMerge(clsx(...val));
47
-
48
- export { clsx };
49
- export type { ClassValue };
1
+ import { clsx, type ClassValue } from "clsx";
2
+ import { extendTailwindMerge } from "tailwind-merge";
3
+
4
+ const twMerge = extendTailwindMerge({
5
+ // Define class groups so twMerge knows which classes override each other
6
+ extend: {
7
+ classGroups: {
8
+ ["font-variants" as any]: [
9
+ "heading1",
10
+ "heading2",
11
+ "heading3",
12
+ "heading4",
13
+ "heading5",
14
+ "heading6",
15
+ "subheading1",
16
+ "subheading2",
17
+ "subheading3",
18
+ "subheading4",
19
+ "subheading5",
20
+ "subheading6",
21
+ "body1",
22
+ "body2",
23
+ "body3",
24
+ "footnote",
25
+ "micro",
26
+ "label1",
27
+ "label2",
28
+ "label3",
29
+ "label4",
30
+ ],
31
+ ["button-sizes" as any]: [
32
+ "btn-small",
33
+ "btn-medium",
34
+ "btn-large",
35
+ "btn-x-large",
36
+ ],
37
+ },
38
+ },
39
+ });
40
+
41
+ /**
42
+ * Utility function to combine class names using clsx
43
+ * @param inputs - Class values to combine
44
+ * @returns Combined class string
45
+ */
46
+ export const cx = (...val: ClassValue[]) => twMerge(clsx(...val));
47
+
48
+ export { clsx };
49
+ export type { ClassValue };