@timmbr/ui 1.4.1 → 1.5.0

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 (176) hide show
  1. package/dist/components/Accordion/Accordion.js +1 -1
  2. package/dist/components/Accordion/Accordion.styles.d.ts.map +1 -1
  3. package/dist/components/Accordion/Accordion.styles.js +3 -3
  4. package/dist/components/Alert/Alert.js +2 -2
  5. package/dist/components/Alert/Alert.styles.js +4 -4
  6. package/dist/components/AlertDialog/AlertDialog.styles.js +4 -4
  7. package/dist/components/AuthModal/AuthModal.d.ts +4 -0
  8. package/dist/components/AuthModal/AuthModal.d.ts.map +1 -0
  9. package/dist/components/AuthModal/AuthModal.js +89 -0
  10. package/dist/components/AuthModal/AuthModal.labels.d.ts +6 -0
  11. package/dist/components/AuthModal/AuthModal.labels.d.ts.map +1 -0
  12. package/dist/components/AuthModal/AuthModal.labels.js +52 -0
  13. package/dist/components/AuthModal/AuthModal.styles.d.ts +12 -0
  14. package/dist/components/AuthModal/AuthModal.styles.d.ts.map +1 -0
  15. package/dist/components/AuthModal/AuthModal.styles.js +38 -0
  16. package/dist/components/AuthModal/AuthModal.types.d.ts +158 -0
  17. package/dist/components/AuthModal/AuthModal.types.d.ts.map +1 -0
  18. package/dist/components/AuthModal/index.d.ts +6 -0
  19. package/dist/components/AuthModal/index.d.ts.map +1 -0
  20. package/dist/components/AuthModal/subcomponents/AuthModalBanner.d.ts +11 -0
  21. package/dist/components/AuthModal/subcomponents/AuthModalBanner.d.ts.map +1 -0
  22. package/dist/components/AuthModal/subcomponents/AuthModalBanner.js +58 -0
  23. package/dist/components/AuthModal/subcomponents/AuthModalIdentifierForm.d.ts +11 -0
  24. package/dist/components/AuthModal/subcomponents/AuthModalIdentifierForm.d.ts.map +1 -0
  25. package/dist/components/AuthModal/subcomponents/AuthModalIdentifierForm.js +62 -0
  26. package/dist/components/AuthModal/subcomponents/AuthModalOAuth.d.ts +11 -0
  27. package/dist/components/AuthModal/subcomponents/AuthModalOAuth.d.ts.map +1 -0
  28. package/dist/components/AuthModal/subcomponents/AuthModalOAuth.js +19 -0
  29. package/dist/components/AuthModal/subcomponents/AuthModalOtpForm.d.ts +10 -0
  30. package/dist/components/AuthModal/subcomponents/AuthModalOtpForm.d.ts.map +1 -0
  31. package/dist/components/AuthModal/subcomponents/AuthModalOtpForm.js +62 -0
  32. package/dist/components/AuthModal/subcomponents/AuthModalParts.d.ts +44 -0
  33. package/dist/components/AuthModal/subcomponents/AuthModalParts.d.ts.map +1 -0
  34. package/dist/components/AuthModal/subcomponents/AuthModalParts.js +134 -0
  35. package/dist/components/AuthModal/subcomponents/AuthModalPasswordForm.d.ts +10 -0
  36. package/dist/components/AuthModal/subcomponents/AuthModalPasswordForm.d.ts.map +1 -0
  37. package/dist/components/AuthModal/subcomponents/AuthModalPasswordForm.js +54 -0
  38. package/dist/components/AuthModal/subcomponents/AuthModalSetPasswordForm.d.ts +10 -0
  39. package/dist/components/AuthModal/subcomponents/AuthModalSetPasswordForm.d.ts.map +1 -0
  40. package/dist/components/AuthModal/subcomponents/AuthModalSetPasswordForm.js +79 -0
  41. package/dist/components/AuthModal/subcomponents/AuthModalSuccess.d.ts +10 -0
  42. package/dist/components/AuthModal/subcomponents/AuthModalSuccess.d.ts.map +1 -0
  43. package/dist/components/AuthModal/subcomponents/AuthModalSuccess.js +26 -0
  44. package/dist/components/AuthModal/subcomponents/OAuthButton.d.ts +12 -0
  45. package/dist/components/AuthModal/subcomponents/OAuthButton.d.ts.map +1 -0
  46. package/dist/components/AuthModal/subcomponents/OAuthButton.js +38 -0
  47. package/dist/components/AuthModal/subcomponents/index.d.ts +9 -0
  48. package/dist/components/AuthModal/subcomponents/index.d.ts.map +1 -0
  49. package/dist/components/Avatar/Avatar.styles.js +11 -11
  50. package/dist/components/Badge/Badge.styles.js +8 -8
  51. package/dist/components/Button/Button.styles.js +7 -7
  52. package/dist/components/Card/Card.styles.d.ts.map +1 -1
  53. package/dist/components/Card/Card.styles.js +5 -5
  54. package/dist/components/Checkbox/Checkbox.js +4 -4
  55. package/dist/components/Checkbox/Checkbox.styles.js +1 -1
  56. package/dist/components/Chip/Chip.js +1 -1
  57. package/dist/components/Chip/Chip.styles.js +5 -5
  58. package/dist/components/DataList/DataList.styles.js +3 -3
  59. package/dist/components/Dialog/Dialog.styles.js +6 -6
  60. package/dist/components/Divider/Divider.js +1 -1
  61. package/dist/components/Drawer/Drawer.styles.js +2 -2
  62. package/dist/components/Dropdown/Dropdown.js +2 -2
  63. package/dist/components/Dropdown/Dropdown.styles.js +2 -2
  64. package/dist/components/EmptyState/EmptyState.js +2 -2
  65. package/dist/components/EmptyState/EmptyState.styles.js +3 -3
  66. package/dist/components/FormField/FormField.js +1 -1
  67. package/dist/components/Heading/Heading.styles.d.ts.map +1 -1
  68. package/dist/components/Heading/Heading.styles.js +12 -10
  69. package/dist/components/Icon/Icon.styles.js +6 -6
  70. package/dist/components/ImageUpload/ImageUpload.js +6 -6
  71. package/dist/components/ImageUpload/subcomponents/ImageUploadDropzone.js +10 -10
  72. package/dist/components/ImageUpload/subcomponents/ImageUploadModal.js +8 -8
  73. package/dist/components/ImageUpload/subcomponents/ImageUploadSinglePreview.js +7 -7
  74. package/dist/components/ImageUpload/subcomponents/ImageUploadThumbnailCard.js +10 -10
  75. package/dist/components/Input/Input.js +4 -4
  76. package/dist/components/Input/Input.styles.js +6 -6
  77. package/dist/components/Label/Label.styles.js +4 -4
  78. package/dist/components/LinkButton/LinkButton.styles.js +6 -6
  79. package/dist/components/List/List.js +1 -1
  80. package/dist/components/List/List.styles.js +3 -3
  81. package/dist/components/NavFooter/NavFooter.styles.js +9 -9
  82. package/dist/components/NavFooter/subcomponents/FooterBrand.js +3 -3
  83. package/dist/components/NavFooter/subcomponents/FooterLegalBar.js +1 -1
  84. package/dist/components/NavFooter/subcomponents/FooterNavSection.js +4 -4
  85. package/dist/components/NavFooter/subcomponents/FooterNewsletter.js +7 -7
  86. package/dist/components/NavFooter/subcomponents/FooterOffice.js +5 -5
  87. package/dist/components/NavFooter/subcomponents/FooterSocial.js +3 -3
  88. package/dist/components/NavHeader/NavHeader.d.ts.map +1 -1
  89. package/dist/components/NavHeader/NavHeader.js +11 -3
  90. package/dist/components/NavHeader/NavHeader.styles.js +16 -16
  91. package/dist/components/NavHeader/NavHeader.types.d.ts +19 -0
  92. package/dist/components/NavHeader/NavHeader.types.d.ts.map +1 -1
  93. package/dist/components/NavHeader/subcomponents/NavActionLabelSkeleton.d.ts +4 -0
  94. package/dist/components/NavHeader/subcomponents/NavActionLabelSkeleton.d.ts.map +1 -0
  95. package/dist/components/NavHeader/subcomponents/NavActionLabelSkeleton.js +16 -0
  96. package/dist/components/NavHeader/subcomponents/NavActionOverflow.d.ts.map +1 -1
  97. package/dist/components/NavHeader/subcomponents/NavActionOverflow.js +6 -5
  98. package/dist/components/NavHeader/subcomponents/NavActions.d.ts +9 -0
  99. package/dist/components/NavHeader/subcomponents/NavActions.d.ts.map +1 -1
  100. package/dist/components/NavHeader/subcomponents/NavActions.js +51 -15
  101. package/dist/components/NavHeader/subcomponents/NavBrand.d.ts.map +1 -1
  102. package/dist/components/NavHeader/subcomponents/NavBrand.js +14 -15
  103. package/dist/components/NavHeader/subcomponents/NavItems.js +3 -3
  104. package/dist/components/NavHeader/subcomponents/NavItemsOverflow.js +7 -7
  105. package/dist/components/NavHeader/subcomponents/NavMobileSearchDrawer.js +5 -5
  106. package/dist/components/NavHeader/subcomponents/NavMobileTabSlider.js +2 -2
  107. package/dist/components/NavHeader/subcomponents/NavSearch.js +5 -5
  108. package/dist/components/NavHeader/subcomponents/OfferBanner.js +1 -1
  109. package/dist/components/OtpInput/OtpInput.d.ts +4 -0
  110. package/dist/components/OtpInput/OtpInput.d.ts.map +1 -0
  111. package/dist/components/OtpInput/OtpInput.js +114 -0
  112. package/dist/components/OtpInput/OtpInput.styles.d.ts +10 -0
  113. package/dist/components/OtpInput/OtpInput.styles.d.ts.map +1 -0
  114. package/dist/components/OtpInput/OtpInput.styles.js +49 -0
  115. package/dist/components/OtpInput/OtpInput.types.d.ts +40 -0
  116. package/dist/components/OtpInput/OtpInput.types.d.ts.map +1 -0
  117. package/dist/components/OtpInput/index.d.ts +4 -0
  118. package/dist/components/OtpInput/index.d.ts.map +1 -0
  119. package/dist/components/Pagination/Pagination.styles.js +3 -3
  120. package/dist/components/Popover/Popover.styles.js +1 -1
  121. package/dist/components/Progress/Progress.js +2 -2
  122. package/dist/components/Radio/Radio.js +4 -4
  123. package/dist/components/Radio/Radio.styles.js +1 -1
  124. package/dist/components/RangeSlider/RangeSlider.js +3 -3
  125. package/dist/components/RangeSlider/RangeSlider.styles.js +1 -1
  126. package/dist/components/Select/Select.js +2 -2
  127. package/dist/components/Select/Select.styles.js +8 -8
  128. package/dist/components/SideBarNavigation/SideBarNavigation.styles.js +8 -8
  129. package/dist/components/SideBarNavigation/subcomponents/SidebarBranding.js +3 -3
  130. package/dist/components/SideBarNavigation/subcomponents/SidebarFooter.js +1 -1
  131. package/dist/components/SideBarNavigation/subcomponents/SidebarPopoverMenu.js +4 -4
  132. package/dist/components/SideBarNavigation/subcomponents/SidebarProfile.js +9 -9
  133. package/dist/components/SideBarNavigation/subcomponents/SidebarSubItem.js +2 -2
  134. package/dist/components/Skeleton/Skeleton.styles.js +1 -1
  135. package/dist/components/Spinner/Spinner.d.ts.map +1 -1
  136. package/dist/components/Spinner/Spinner.js +9 -7
  137. package/dist/components/Spinner/Spinner.styles.d.ts +8 -2
  138. package/dist/components/Spinner/Spinner.styles.d.ts.map +1 -1
  139. package/dist/components/Spinner/Spinner.styles.js +27 -24
  140. package/dist/components/Spinner/Spinner.types.d.ts +9 -0
  141. package/dist/components/Spinner/Spinner.types.d.ts.map +1 -1
  142. package/dist/components/Stat/Stat.styles.js +4 -4
  143. package/dist/components/Switch/Switch.js +2 -2
  144. package/dist/components/Switch/Switch.styles.js +1 -1
  145. package/dist/components/Table/Table.js +1 -1
  146. package/dist/components/Table/Table.styles.js +5 -5
  147. package/dist/components/Table/TablePagination.js +4 -4
  148. package/dist/components/Tabs/Tabs.js +2 -2
  149. package/dist/components/Tabs/Tabs.styles.js +8 -8
  150. package/dist/components/Text/Text.d.ts.map +1 -1
  151. package/dist/components/Text/Text.js +2 -0
  152. package/dist/components/Text/Text.styles.d.ts +1 -0
  153. package/dist/components/Text/Text.styles.d.ts.map +1 -1
  154. package/dist/components/Text/Text.styles.js +21 -13
  155. package/dist/components/Text/Text.types.d.ts +5 -0
  156. package/dist/components/Text/Text.types.d.ts.map +1 -1
  157. package/dist/components/Textarea/Textarea.js +4 -4
  158. package/dist/components/Textarea/Textarea.styles.js +6 -6
  159. package/dist/components/Toast/Toast.js +3 -3
  160. package/dist/components/Toast/Toast.styles.js +5 -5
  161. package/dist/components/Toast/ToastContainer.js +1 -1
  162. package/dist/components/Tooltip/Tooltip.styles.js +1 -1
  163. package/dist/index.d.ts +2 -0
  164. package/dist/index.d.ts.map +1 -1
  165. package/dist/index.js +14 -1
  166. package/package.json +7 -6
  167. package/dist/components/CrossZoneLink/CrossZoneLink.d.ts +0 -10
  168. package/dist/components/CrossZoneLink/CrossZoneLink.d.ts.map +0 -1
  169. package/dist/components/CrossZoneLink/CrossZoneLink.js +0 -111
  170. package/dist/components/CrossZoneLink/CrossZoneLink.styles.d.ts +0 -8
  171. package/dist/components/CrossZoneLink/CrossZoneLink.styles.d.ts.map +0 -1
  172. package/dist/components/CrossZoneLink/CrossZoneLink.styles.js +0 -33
  173. package/dist/components/CrossZoneLink/CrossZoneLink.types.d.ts +0 -31
  174. package/dist/components/CrossZoneLink/CrossZoneLink.types.d.ts.map +0 -1
  175. package/dist/components/CrossZoneLink/index.d.ts +0 -4
  176. package/dist/components/CrossZoneLink/index.d.ts.map +0 -1
@@ -1,10 +1,10 @@
1
1
  import { cva } from 'class-variance-authority';
2
2
 
3
3
  const offerBannerVariants = cva(
4
- "w-full bg-[#1A1714] text-[#F7F1E6] font-title text-xs font-semibold uppercase tracking-[0.14em] py-2 px-4 flex items-center justify-center relative transition-all duration-200 z-50 border-b border-black/20"
4
+ "w-full bg-surface-dark text-bg-2 font-title! text-body-3 font-semibold uppercase tracking-[0.14em] py-2 px-4 flex items-center justify-center relative transition-all duration-200 z-50 border-b border-grey-1000/20"
5
5
  );
6
6
  const navHeaderVariants = cva(
7
- "w-full bg-[var(--color-bg-2,#F7F1E6)] text-[var(--color-grey-800,#3C3C3C)] border-b border-[#E7DFD3] relative z-40 transition-colors",
7
+ "w-full bg-[var(--color-bg-2,#F7F1E6)] text-[var(--color-grey-800,#3C3C3C)] border-b border-border-warm relative z-40 transition-colors",
8
8
  {
9
9
  variants: {
10
10
  sticky: {
@@ -36,12 +36,12 @@ const navHeaderContainerVariants = cva(
36
36
  }
37
37
  );
38
38
  const navHeaderItemVariants = cva(
39
- "font-sans font-bold text-[13.5px] xl:text-[14.5px] 2xl:text-[15px] text-[#404040] hover:text-[#C0643A] transition-colors relative py-2 px-1 xl:px-1.5 flex items-center gap-1.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 rounded select-none cursor-pointer whitespace-nowrap",
39
+ "font-bold text-body-2 xl:text-body-2 2xl:text-body-2 text-grey-800 hover:text-primary transition-colors relative py-2 px-1 xl:px-1.5 flex items-center gap-1.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 rounded select-none cursor-pointer whitespace-nowrap",
40
40
  {
41
41
  variants: {
42
42
  active: {
43
- true: "text-[#C0643A]",
44
- false: "text-[#404040]"
43
+ true: "text-primary",
44
+ false: "text-grey-800"
45
45
  },
46
46
  disabled: {
47
47
  true: "opacity-40 cursor-not-allowed pointer-events-none",
@@ -55,12 +55,12 @@ const navHeaderItemVariants = cva(
55
55
  }
56
56
  );
57
57
  const navActionVariants = cva(
58
- "group flex flex-col items-center justify-center gap-[3.5px] min-w-[36px] sm:min-w-[40px] lg:min-w-[52px] text-[#3C3C3C] hover:text-[#C0643A] transition-colors relative focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 rounded py-1 px-1 lg:px-1.5 select-none cursor-pointer",
58
+ "group flex flex-col items-center justify-center gap-[3.5px] min-w-[36px] sm:min-w-[40px] lg:min-w-[52px] text-grey-800 hover:text-primary transition-colors relative focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 rounded py-1 px-1 lg:px-1.5 select-none cursor-pointer",
59
59
  {
60
60
  variants: {
61
61
  active: {
62
- true: "text-[#C0643A]",
63
- false: "text-[#3C3C3C]"
62
+ true: "text-primary",
63
+ false: "text-grey-800"
64
64
  }
65
65
  },
66
66
  defaultVariants: {
@@ -69,16 +69,16 @@ const navActionVariants = cva(
69
69
  }
70
70
  );
71
71
  const megaMenuCardVariants = cva(
72
- "w-full max-w-[1216px] mx-auto bg-[#FFFFFE] border border-grey-200/80 shadow-2xl rounded-b-xl z-50 overflow-hidden"
72
+ "w-full max-w-[1216px] mx-auto bg-grey-50 border border-grey-200/80 shadow-2xl rounded-b-xl z-50 overflow-hidden"
73
73
  );
74
74
  const searchPopoverCardVariants = cva(
75
- "absolute top-full left-0 right-0 w-full mt-2 bg-white border border-grey-200 shadow-2xl rounded-2xl p-4 sm:p-5 z-50 text-left"
75
+ "absolute top-full left-0 right-0 w-full mt-2 bg-grey-50 border border-grey-200 shadow-2xl rounded-2xl p-4 sm:p-5 z-50 text-left"
76
76
  );
77
77
  const actionOverflowPopoverVariants = cva(
78
- "absolute top-full right-0 mt-3 w-60 bg-white border border-[#E7DFD3] shadow-2xl rounded-2xl p-2 z-50 text-left overflow-hidden divide-y divide-grey-100"
78
+ "absolute top-full right-0 mt-3 w-60 bg-grey-50 border border-border-warm shadow-2xl rounded-2xl p-2 z-50 text-left overflow-hidden divide-y divide-grey-100"
79
79
  );
80
80
  const actionOverflowItemVariants = cva(
81
- "w-full flex items-center justify-between gap-3 px-3 py-2.5 text-xs font-semibold text-[#3C3C3C] hover:text-[#C0643A] hover:bg-[#F7F1E6]/60 rounded-xl transition-colors cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#C0643A]",
81
+ "w-full flex items-center justify-between gap-3 px-3 py-2.5 text-body-3 font-semibold text-grey-800 hover:text-primary hover:bg-bg-2/60 rounded-xl transition-colors cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",
82
82
  {
83
83
  variants: {
84
84
  disabled: {
@@ -92,14 +92,14 @@ const actionOverflowItemVariants = cva(
92
92
  }
93
93
  );
94
94
  const mobileTabSliderVariants = cva(
95
- "w-full overflow-x-auto flex items-center gap-6 px-4 py-2 border-b border-[#E7DFD3] bg-[var(--color-bg-2,#F7F1E6)] select-none scroll-smooth [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]"
95
+ "w-full overflow-x-auto flex items-center gap-6 px-4 py-2 border-b border-border-warm bg-[var(--color-bg-2,#F7F1E6)] select-none scroll-smooth [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]"
96
96
  );
97
97
  const mobileTabItemVariants = cva(
98
- "relative font-sans text-xs sm:text-sm tracking-tight whitespace-nowrap py-1.5 px-1 font-semibold transition-colors cursor-pointer select-none",
98
+ "relative text-body-3 sm:text-body-2 tracking-tight whitespace-nowrap py-1.5 px-1 font-semibold transition-colors cursor-pointer select-none",
99
99
  {
100
100
  variants: {
101
101
  active: {
102
- true: "text-[#C0643A] font-bold",
102
+ true: "text-primary font-bold",
103
103
  false: "text-grey-600 hover:text-grey-900"
104
104
  },
105
105
  disabled: {
@@ -114,7 +114,7 @@ const mobileTabItemVariants = cva(
114
114
  }
115
115
  );
116
116
  const mobileTabContentPanelVariants = cva(
117
- "w-full bg-[#FFFFFE] border-b border-[#E7DFD3] shadow-md overflow-hidden"
117
+ "w-full bg-grey-50 border-b border-border-warm shadow-md overflow-hidden"
118
118
  );
119
119
  const mobileSearchDrawerVariants = cva(
120
120
  "fixed inset-0 z-[9999] h-[100dvh] w-screen bg-[var(--color-bg-2,#F7F1E6)] flex flex-col overflow-hidden"
@@ -144,6 +144,17 @@ export interface NavActionItem {
144
144
  disabled?: boolean;
145
145
  /** Priority level determining which items resist collapsing into overflow */
146
146
  priority?: 'high' | 'normal' | 'low';
147
+ /**
148
+ * Label not known yet (e.g. session still loading): renders a skeleton in
149
+ * the label slot instead of `label`.
150
+ */
151
+ isLoading?: boolean;
152
+ /**
153
+ * Extra classes for the label slot. Give labels that change at runtime a
154
+ * fixed width (the profile action defaults to `w-16 truncate`) so the
155
+ * header doesn't shift when the text swaps.
156
+ */
157
+ labelClassName?: string;
147
158
  /** Optional custom renderer for complex items */
148
159
  render?: (props: {
149
160
  item: NavActionItem;
@@ -192,6 +203,10 @@ export interface NavActionsConfig {
192
203
  cart?: Partial<NavActionItem> & {
193
204
  count?: number;
194
205
  };
206
+ /** Auth trigger mode: 'modal' triggers popup flow, 'redirect' fallbacks to /auth page */
207
+ authMode?: 'modal' | 'redirect';
208
+ /** Callback fired when user triggers auth in modal mode */
209
+ onAuthTrigger?: () => void;
195
210
  }
196
211
  /**
197
212
  * Mobile and tablet responsive navigation (< 1024px) configuration object.
@@ -299,6 +314,10 @@ export interface NavHeaderProps extends MotionProps, Omit<React.HTMLAttributes<H
299
314
  cartAction?: Partial<NavActionItem> & {
300
315
  count?: number;
301
316
  };
317
+ /** Shorthand auth mode: 'modal' triggers modal popup, 'redirect' falls back to /auth page. Defaults to 'modal'. */
318
+ authMode?: 'modal' | 'redirect';
319
+ /** Shorthand callback fired when user triggers auth in modal mode. */
320
+ onAuthTrigger?: () => void;
302
321
  /** Shorthand toggle for mobile horizontal tab slider. Defaults to true. */
303
322
  mobileTabSlider?: boolean;
304
323
  /** Shorthand search display style on mobile/tablet screens (< 1024px). */
@@ -1 +1 @@
1
- {"version":3,"file":"NavHeader.types.d.ts","sourceRoot":"","sources":["../../../src/components/NavHeader/NavHeader.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NavHeader.types.d.ts","sourceRoot":"","sources":["../../../src/components/NavHeader/NavHeader.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ /** Placeholder for an action label that isn't known yet (fills the label slot). */
3
+ export declare function NavActionLabelSkeleton(): React.JSX.Element;
4
+ //# sourceMappingURL=NavActionLabelSkeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavActionLabelSkeleton.d.ts","sourceRoot":"","sources":["../../../../src/components/NavHeader/subcomponents/NavActionLabelSkeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,mFAAmF;AACnF,wBAAgB,sBAAsB,sBAQrC"}
@@ -0,0 +1,16 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { cn } from '@timmbr/utils';
3
+ import { skeletonVariants } from '../../Skeleton/Skeleton.styles.js';
4
+
5
+ function NavActionLabelSkeleton() {
6
+ return /* @__PURE__ */ jsx(
7
+ "span",
8
+ {
9
+ "aria-hidden": "true",
10
+ "data-slot": "nav-action-label-skeleton",
11
+ className: cn(skeletonVariants({ variant: "text" }), "block h-3 align-middle")
12
+ }
13
+ );
14
+ }
15
+
16
+ export { NavActionLabelSkeleton };
@@ -1 +1 @@
1
- {"version":3,"file":"NavActionOverflow.d.ts","sourceRoot":"","sources":["../../../../src/components/NavHeader/subcomponents/NavActionOverflow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAiM9D,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"NavActionOverflow.d.ts","sourceRoot":"","sources":["../../../../src/components/NavHeader/subcomponents/NavActionOverflow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAmM9D,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -5,6 +5,7 @@ import { AnimatePresence, motion } from '@timmbr/motion';
5
5
  import { MoreHorizontal } from '@timmbr/icons';
6
6
  import { cn } from '@timmbr/utils';
7
7
  import { navActionVariants, actionOverflowItemVariants, actionOverflowPopoverVariants } from '../NavHeader.styles.js';
8
+ import { NavActionLabelSkeleton } from './NavActionLabelSkeleton.js';
8
9
  import { resolveNavDestination, isCrossZoneNavigation } from '../NavHeader.helpers.js';
9
10
  import { useTimmbrConfig } from '../../../providers/TimmbrConfigProvider.js';
10
11
 
@@ -71,13 +72,13 @@ const NavActionOverflow = ({
71
72
  totalBadges > 0 && /* @__PURE__ */ jsx(
72
73
  "span",
73
74
  {
74
- className: "absolute -top-1 -right-2 min-w-[16px] h-4 px-1 rounded-full bg-[#C0643A] text-white text-[10px] font-bold flex items-center justify-center",
75
+ className: "absolute -top-1 -right-2 min-w-[16px] h-4 px-1 rounded-full bg-primary text-grey-50 text-caption font-bold flex items-center justify-center",
75
76
  "aria-label": `${totalBadges} items in overflow menu`,
76
77
  children: totalBadges
77
78
  }
78
79
  )
79
80
  ] }),
80
- /* @__PURE__ */ jsx("span", { className: "hidden lg:inline font-sans font-bold text-[10px] tracking-[0.0926em] uppercase whitespace-nowrap", children: label })
81
+ /* @__PURE__ */ jsx("span", { className: "hidden lg:inline font-bold text-caption tracking-[0.0926em] uppercase whitespace-nowrap", children: label })
81
82
  ]
82
83
  }
83
84
  ),
@@ -104,10 +105,10 @@ const NavActionOverflow = ({
104
105
  const requiresCrossZone = isCrossZoneNavigation(item.zone, config.zones?.currentZone, item.crossZone);
105
106
  const itemRowContent = /* @__PURE__ */ jsxs(Fragment, { children: [
106
107
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5 truncate", children: [
107
- /* @__PURE__ */ jsx("span", { className: "shrink-0 text-grey-500 group-hover:text-[#C0643A] transition-colors", children: item.icon }),
108
- /* @__PURE__ */ jsx("span", { className: "truncate", children: item.label })
108
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 text-grey-500 group-hover:text-primary transition-colors", children: item.icon }),
109
+ /* @__PURE__ */ jsx("span", { className: "truncate", children: item.isLoading ? /* @__PURE__ */ jsx(NavActionLabelSkeleton, {}) : item.label })
109
110
  ] }),
110
- typeof item.badge !== "undefined" && item.badge !== null && /* @__PURE__ */ jsx("span", { className: "shrink-0 px-1.5 py-0.5 rounded-full bg-[#C0643A] text-white text-[10px] font-bold", children: item.badge })
111
+ typeof item.badge !== "undefined" && item.badge !== null && /* @__PURE__ */ jsx("span", { className: "shrink-0 px-1.5 py-0.5 rounded-full bg-primary text-grey-50 text-caption font-bold", children: item.badge })
111
112
  ] });
112
113
  const itemClass = cn(
113
114
  actionOverflowItemVariants({ disabled: item.disabled }),
@@ -1,5 +1,12 @@
1
1
  import * as React from 'react';
2
2
  import type { NavActionItem } from '../NavHeader.types';
3
+ /**
4
+ * Profile label slot: sized to its text, so gaps stay even, but
5
+ * - at least as wide as "LOGIN" (34.6px): the loading skeleton and LOGIN are
6
+ * the same width, so signed-out visitors see no shift at all;
7
+ * - at most 64px: longer names are cut with "…" (full name in `title`).
8
+ */
9
+ export declare const PROFILE_LABEL_CLASS = "min-w-[35px] max-w-16 truncate text-center";
3
10
  export interface NavActionsProps {
4
11
  actions?: NavActionItem[];
5
12
  profileAction?: Partial<NavActionItem>;
@@ -9,6 +16,8 @@ export interface NavActionsProps {
9
16
  cartAction?: Partial<NavActionItem> & {
10
17
  count?: number;
11
18
  };
19
+ authMode?: 'modal' | 'redirect';
20
+ onAuthTrigger?: () => void;
12
21
  maxVisibleActions?: number | 'auto';
13
22
  overflowActionLabel?: React.ReactNode;
14
23
  overflowActionIcon?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"NavActions.d.ts","sourceRoot":"","sources":["../../../../src/components/NavHeader/subcomponents/NavActions.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACrC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAsRhD,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"NavActions.d.ts","sourceRoot":"","sources":["../../../../src/components/NavHeader/subcomponents/NavActions.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,+CAA+C,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,QAAQ,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpC,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACrC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA6ThD,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,18 +1,23 @@
1
1
  "use client";
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import * as React from 'react';
4
- import { User, Heart, ShoppingCart } from '@timmbr/icons';
4
+ import { openAuthModal } from '@timmbr/hooks';
5
+ import { Heart, ShoppingCart, User } from '@timmbr/icons';
5
6
  import { cn } from '@timmbr/utils';
6
7
  import { navActionVariants } from '../NavHeader.styles.js';
8
+ import { NavActionLabelSkeleton } from './NavActionLabelSkeleton.js';
7
9
  import { resolveNavDestination, isCrossZoneNavigation } from '../NavHeader.helpers.js';
8
10
  import { NavActionOverflow } from './NavActionOverflow.js';
9
11
  import { useTimmbrConfig } from '../../../providers/TimmbrConfigProvider.js';
10
12
 
13
+ const PROFILE_LABEL_CLASS = "min-w-[35px] max-w-16 truncate text-center";
11
14
  const NavActions = ({
12
15
  actions,
13
16
  profileAction,
14
17
  wishlistAction,
15
18
  cartAction,
19
+ authMode = "modal",
20
+ onAuthTrigger,
16
21
  maxVisibleActions = "auto",
17
22
  overflowActionLabel,
18
23
  overflowActionIcon,
@@ -30,16 +35,21 @@ const NavActions = ({
30
35
  }
31
36
  const defaultItems = [];
32
37
  const customItems = actions ?? [];
33
- defaultItems.push({
34
- id: "profile",
35
- label: profileAction?.label ?? "PROFILE",
36
- icon: profileAction?.icon ?? /* @__PURE__ */ jsx(User, { size: 22, className: "stroke-[1.8]" }),
37
- href: profileAction?.href ?? "/account",
38
- zone: profileAction?.zone,
39
- crossZone: profileAction?.crossZone,
40
- onClick: profileAction?.onClick,
41
- ariaLabel: profileAction?.ariaLabel ?? "User Account"
42
- });
38
+ const isExplicitAccountLink = Boolean(profileAction?.href) && profileAction?.href !== "/auth" && profileAction?.href !== "/login";
39
+ const profileHref = authMode === "modal" && !isExplicitAccountLink ? void 0 : profileAction?.href ?? "/auth";
40
+ const handleProfileClick = (e) => {
41
+ if (profileAction?.onClick) {
42
+ profileAction.onClick(e);
43
+ }
44
+ if (authMode === "modal" && !isExplicitAccountLink) {
45
+ e.preventDefault();
46
+ if (onAuthTrigger) {
47
+ onAuthTrigger();
48
+ } else {
49
+ openAuthModal();
50
+ }
51
+ }
52
+ };
43
53
  const wishCount = wishlistAction?.count;
44
54
  defaultItems.push({
45
55
  id: "wishlist",
@@ -65,8 +75,22 @@ const NavActions = ({
65
75
  ariaLabel: cartAction?.ariaLabel ?? (cartCount ? `Shopping cart with ${cartCount} items` : "Shopping cart"),
66
76
  priority: "high"
67
77
  });
78
+ defaultItems.push({
79
+ id: "profile",
80
+ label: profileAction?.label ?? "LOGIN",
81
+ icon: profileAction?.icon ?? /* @__PURE__ */ jsx(User, { size: 22, className: "stroke-[1.8]" }),
82
+ href: profileHref,
83
+ zone: profileAction?.zone,
84
+ crossZone: profileAction?.crossZone,
85
+ onClick: handleProfileClick,
86
+ ariaLabel: profileAction?.ariaLabel ?? "User Account",
87
+ priority: "high",
88
+ isLoading: profileAction?.isLoading,
89
+ // LOGIN / skeleton / first name share one fixed-width slot: no layout shift
90
+ labelClassName: profileAction?.labelClassName ?? PROFILE_LABEL_CLASS
91
+ });
68
92
  return [...customItems, ...defaultItems];
69
- }, [actions, profileAction, wishlistAction, cartAction]);
93
+ }, [actions, profileAction, wishlistAction, cartAction, authMode, onAuthTrigger]);
70
94
  React.useEffect(() => {
71
95
  if (maxVisibleActions !== "auto") {
72
96
  setMeasuredMaxVisible(null);
@@ -154,9 +178,20 @@ const NavActions = ({
154
178
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
155
179
  /* @__PURE__ */ jsxs("div", { className: "relative flex items-center justify-center", children: [
156
180
  item.icon,
157
- typeof item.badge !== "undefined" && item.badge !== null && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-2 min-w-[16px] h-4 px-1 rounded-full bg-[#C0643A] text-white text-[10px] font-bold flex items-center justify-center", children: item.badge })
181
+ typeof item.badge !== "undefined" && item.badge !== null && /* @__PURE__ */ jsx("span", { className: "absolute -top-1 -right-2 min-w-[16px] h-4 px-1 rounded-full bg-primary text-grey-50 text-caption font-bold flex items-center justify-center", children: item.badge })
158
182
  ] }),
159
- /* @__PURE__ */ jsx("span", { className: "hidden lg:inline font-sans font-bold text-[10px] tracking-[0.0926em] uppercase whitespace-nowrap", children: item.label })
183
+ /* @__PURE__ */ jsx(
184
+ "span",
185
+ {
186
+ className: cn(
187
+ "hidden lg:inline-block font-bold text-caption tracking-[0.0926em] uppercase whitespace-nowrap",
188
+ item.labelClassName
189
+ ),
190
+ title: !item.isLoading && typeof item.label === "string" ? item.label : void 0,
191
+ "data-slot": "nav-action-label",
192
+ children: item.isLoading ? /* @__PURE__ */ jsx(NavActionLabelSkeleton, {}) : item.label
193
+ }
194
+ )
160
195
  ] });
161
196
  const actionClass = cn(
162
197
  navActionVariants(),
@@ -200,6 +235,7 @@ const NavActions = ({
200
235
  type: "button",
201
236
  disabled: item.disabled,
202
237
  "aria-label": item.ariaLabel,
238
+ "aria-busy": item.isLoading || void 0,
203
239
  onClick: item.onClick,
204
240
  className: actionClass,
205
241
  "data-slot": "nav-action-button",
@@ -225,4 +261,4 @@ const NavActions = ({
225
261
  );
226
262
  };
227
263
 
228
- export { NavActions };
264
+ export { NavActions, PROFILE_LABEL_CLASS };
@@ -1 +1 @@
1
- {"version":3,"file":"NavBrand.d.ts","sourceRoot":"","sources":["../../../../src/components/NavHeader/subcomponents/NavBrand.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAiG5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"NavBrand.d.ts","sourceRoot":"","sources":["../../../../src/components/NavHeader/subcomponents/NavBrand.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAK5D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA4F5C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -5,6 +5,7 @@ import { cn } from '@timmbr/utils';
5
5
  import { resolveNavDestination, isCrossZoneNavigation } from '../NavHeader.helpers.js';
6
6
  import { useTimmbrConfig } from '../../../providers/TimmbrConfigProvider.js';
7
7
 
8
+ const BRAND_FADE = { duration: 0.2, ease: [0.16, 1, 0.3, 1] };
8
9
  const NavBrand = ({
9
10
  branding,
10
11
  isSearchOpen = false,
@@ -17,6 +18,8 @@ const NavBrand = ({
17
18
  const resolvedHref = resolveNavDestination(href, zone, config.zones?.zones) ?? "/";
18
19
  const requiresCrossZone = isCrossZoneNavigation(zone, config.zones?.currentZone);
19
20
  const showMini = Boolean(isSearchOpen && miniLogo);
21
+ const visible = { opacity: 1, scale: 1 };
22
+ const hidden = { opacity: 0, scale: 0.92 };
20
23
  const logoNode = /* @__PURE__ */ jsxs(
21
24
  "div",
22
25
  {
@@ -27,31 +30,27 @@ const NavBrand = ({
27
30
  motion.div,
28
31
  {
29
32
  initial: false,
30
- animate: shouldAnimate ? {
31
- opacity: showMini ? 0 : 1,
32
- scale: showMini ? 0.92 : 1
33
- } : void 0,
34
- transition: { duration: 0.2, ease: [0.16, 1, 0.3, 1] },
33
+ animate: showMini ? hidden : visible,
34
+ transition: shouldAnimate ? BRAND_FADE : { duration: 0 },
35
+ "aria-hidden": showMini || void 0,
35
36
  className: cn(
36
- "flex items-center justify-center shrink-0 transition-opacity",
37
+ "flex items-center justify-center shrink-0 will-change-[opacity,transform]",
37
38
  showMini ? "pointer-events-none" : "pointer-events-auto",
38
- !shouldAnimate && (showMini ? "opacity-0" : "opacity-100"),
39
39
  motionClass
40
40
  ),
41
41
  children: logo
42
42
  }
43
43
  ),
44
- showMini && /* @__PURE__ */ jsx(
44
+ miniLogo && /* @__PURE__ */ jsx(
45
45
  motion.div,
46
46
  {
47
- initial: shouldAnimate ? { opacity: 0, scale: 0.92 } : false,
48
- animate: shouldAnimate ? {
49
- opacity: 1,
50
- scale: 1
51
- } : void 0,
52
- transition: { duration: 0.2, ease: [0.16, 1, 0.3, 1] },
47
+ initial: false,
48
+ animate: showMini ? visible : hidden,
49
+ transition: shouldAnimate ? BRAND_FADE : { duration: 0 },
50
+ "aria-hidden": !showMini || void 0,
53
51
  className: cn(
54
- "absolute inset-0 flex items-center justify-center shrink-0 pointer-events-auto",
52
+ "absolute inset-0 flex items-center justify-center shrink-0 will-change-[opacity,transform]",
53
+ showMini ? "pointer-events-auto" : "pointer-events-none",
55
54
  motionClass
56
55
  ),
57
56
  children: miniLogo
@@ -60,16 +60,16 @@ const NavItems = ({
60
60
  };
61
61
  const itemContent = /* @__PURE__ */ jsxs(Fragment, { children: [
62
62
  /* @__PURE__ */ jsx("span", { children: item.label }),
63
- item.badge && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center justify-center text-xs font-semibold px-1.5 py-0.5 rounded-full bg-primary-100 text-primary-800", children: item.badge }),
63
+ item.badge && /* @__PURE__ */ jsx("span", { className: "inline-flex items-center justify-center text-body-3 font-semibold px-1.5 py-0.5 rounded-full bg-primary-100 text-primary-800", children: item.badge }),
64
64
  isActive && shouldAnimate && /* @__PURE__ */ jsx(
65
65
  motion.div,
66
66
  {
67
67
  layoutId: "nav-header-active-indicator",
68
- className: "absolute bottom-0 left-0 right-0 h-[2.5px] bg-[#C0643A] rounded-full",
68
+ className: "absolute bottom-0 left-0 right-0 h-[2.5px] bg-primary rounded-full",
69
69
  transition: { type: "spring", stiffness: 500, damping: 35 }
70
70
  }
71
71
  ),
72
- isActive && !shouldAnimate && /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 right-0 h-[2.5px] bg-[#C0643A] rounded-full" })
72
+ isActive && !shouldAnimate && /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 right-0 h-[2.5px] bg-primary rounded-full" })
73
73
  ] });
74
74
  const className = cn(
75
75
  navHeaderItemVariants({ active: isActive, disabled: item.disabled }),
@@ -59,14 +59,14 @@ const NavItemsOverflow = ({
59
59
  onClick: () => setIsOpen((prev) => !prev),
60
60
  className: cn(
61
61
  navHeaderItemVariants({ active: isOpen || isChildActive }),
62
- "px-2 py-2 flex items-center justify-center rounded-lg hover:bg-black/5 transition-colors",
62
+ "px-2 py-2 flex items-center justify-center rounded-lg hover:bg-grey-1000/5 transition-colors",
63
63
  !shouldAnimate && "transition-none",
64
64
  motionClass
65
65
  ),
66
66
  "data-slot": "nav-items-overflow-trigger",
67
67
  children: [
68
68
  /* @__PURE__ */ jsx(MoreHorizontal, { size: 20, className: "stroke-[2]" }),
69
- (isOpen || isChildActive) && /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-2 right-2 h-[2.5px] bg-[#C0643A] rounded-full" })
69
+ (isOpen || isChildActive) && /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-2 right-2 h-[2.5px] bg-primary rounded-full" })
70
70
  ]
71
71
  }
72
72
  ),
@@ -78,7 +78,7 @@ const NavItemsOverflow = ({
78
78
  exit: shouldAnimate ? { opacity: 0, y: 6, scale: 0.97 } : void 0,
79
79
  transition: { duration: 0.18, ease: [0.25, 1, 0.5, 1] },
80
80
  className: cn(
81
- "absolute top-full left-0 mt-2 w-56 bg-white border border-[#E7DFD3] shadow-2xl rounded-2xl p-2 z-50 text-left overflow-hidden divide-y divide-grey-100",
81
+ "absolute top-full left-0 mt-2 w-56 bg-grey-50 border border-border-warm shadow-2xl rounded-2xl p-2 z-50 text-left overflow-hidden divide-y divide-grey-100",
82
82
  !shouldAnimate && "transition-none",
83
83
  motionClass
84
84
  ),
@@ -98,13 +98,13 @@ const NavItemsOverflow = ({
98
98
  item.crossZone
99
99
  );
100
100
  const itemRowContent = /* @__PURE__ */ jsxs(Fragment, { children: [
101
- /* @__PURE__ */ jsx("span", { className: cn("truncate", isActive && "text-[#C0643A] font-bold"), children: item.label }),
102
- item.badge && /* @__PURE__ */ jsx("span", { className: "shrink-0 px-1.5 py-0.5 rounded-full bg-primary-100 text-primary-800 text-[10px] font-bold", children: item.badge })
101
+ /* @__PURE__ */ jsx("span", { className: cn("truncate", isActive && "text-primary font-bold"), children: item.label }),
102
+ item.badge && /* @__PURE__ */ jsx("span", { className: "shrink-0 px-1.5 py-0.5 rounded-full bg-primary-100 text-primary-800 text-caption font-bold", children: item.badge })
103
103
  ] });
104
104
  const itemClass = cn(
105
- "w-full flex items-center justify-between gap-3 px-3 py-2 text-xs font-semibold text-[#3C3C3C] hover:text-[#C0643A] hover:bg-[#F7F1E6]/60 rounded-xl transition-colors cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[#C0643A]",
105
+ "w-full flex items-center justify-between gap-3 px-3 py-2 text-body-3 font-semibold text-grey-800 hover:text-primary hover:bg-bg-2/60 rounded-xl transition-colors cursor-pointer text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",
106
106
  item.disabled && "opacity-40 cursor-not-allowed pointer-events-none",
107
- isActive && "bg-[#F7F1E6]/80 text-[#C0643A]",
107
+ isActive && "bg-bg-2/80 text-primary",
108
108
  item.className
109
109
  );
110
110
  const handleClick = (e) => {
@@ -78,14 +78,14 @@ const NavMobileSearchDrawer = ({
78
78
  className: cn(mobileSearchDrawerVariants(), motionClass),
79
79
  "data-slot": "nav-mobile-search-drawer",
80
80
  children: [
81
- /* @__PURE__ */ jsxs("div", { className: "w-full bg-[var(--color-bg-2,#F7F1E6)] border-b border-[#E7DFD3] px-3 py-3 flex items-center gap-3 shrink-0 shadow-xs", children: [
81
+ /* @__PURE__ */ jsxs("div", { className: "w-full bg-[var(--color-bg-2,#F7F1E6)] border-b border-border-warm px-3 py-3 flex items-center gap-3 shrink-0 shadow-xs", children: [
82
82
  /* @__PURE__ */ jsx(
83
83
  "button",
84
84
  {
85
85
  type: "button",
86
86
  onClick: onClose,
87
87
  "aria-label": "Close search and go back",
88
- className: "w-10 h-10 rounded-full flex items-center justify-center text-grey-800 hover:text-[#C0643A] hover:bg-black/5 transition-colors cursor-pointer shrink-0",
88
+ className: "w-10 h-10 rounded-full flex items-center justify-center text-grey-800 hover:text-primary hover:bg-grey-1000/5 transition-colors cursor-pointer shrink-0",
89
89
  "data-slot": "nav-mobile-search-back-btn",
90
90
  children: /* @__PURE__ */ jsx(ArrowLeft, { size: 22, className: "stroke-[2]" })
91
91
  }
@@ -108,7 +108,7 @@ const NavMobileSearchDrawer = ({
108
108
  value,
109
109
  onChange: (e) => onChange(e.target.value),
110
110
  placeholder: searchConfig.placeholder ?? "Search for furniture, decor, and more...",
111
- className: "w-full h-11 pl-10 pr-9 rounded-full bg-white border border-[#E7DFD3] text-sm text-grey-900 placeholder:text-grey-400 focus:outline-none focus:border-[#C0643A] focus:ring-2 focus:ring-[#C0643A]/20 transition-all shadow-xs"
111
+ className: "w-full h-11 pl-10 pr-9 rounded-full bg-grey-50 border border-border-warm text-body-2 text-grey-900 placeholder:text-grey-400 focus:outline-none focus:border-primary focus:ring-2 focus:ring-primary/20 transition-all shadow-xs"
112
112
  }
113
113
  ),
114
114
  value.length > 0 && /* @__PURE__ */ jsx(
@@ -125,13 +125,13 @@ const NavMobileSearchDrawer = ({
125
125
  ] }),
126
126
  /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto p-4 sm:p-6 space-y-6 bg-[var(--color-bg-2,#F7F1E6)]", children: [
127
127
  searchConfig.popularSearches && searchConfig.popularSearches.length > 0 && /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
128
- /* @__PURE__ */ jsx("h4", { className: "font-title text-xs font-semibold text-grey-500 uppercase tracking-wider", children: "POPULAR SEARCHES" }),
128
+ /* @__PURE__ */ jsx("h4", { className: "font-title! text-body-3 font-semibold text-grey-500 uppercase tracking-wider", children: "POPULAR SEARCHES" }),
129
129
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: searchConfig.popularSearches.map((item) => /* @__PURE__ */ jsx(
130
130
  "button",
131
131
  {
132
132
  type: "button",
133
133
  onClick: () => handlePopularSearchClick(item.label),
134
- className: "px-3.5 py-1.5 rounded-full bg-white border border-[#E7DFD3] text-xs font-semibold text-grey-700 hover:border-[#C0643A] hover:text-[#C0643A] hover:bg-white transition-colors cursor-pointer shadow-xs",
134
+ className: "px-3.5 py-1.5 rounded-full bg-grey-50 border border-border-warm text-body-3 font-semibold text-grey-700 hover:border-primary hover:text-primary hover:bg-grey-50 transition-colors cursor-pointer shadow-xs",
135
135
  children: item.label
136
136
  },
137
137
  item.id
@@ -41,10 +41,10 @@ const NavMobileTabSlider = ({
41
41
  motion.div,
42
42
  {
43
43
  layoutId: "active-mobile-tab-indicator",
44
- className: "absolute bottom-0 left-0 right-0 h-[2.5px] bg-[#C0643A] rounded-full",
44
+ className: "absolute bottom-0 left-0 right-0 h-[2.5px] bg-primary rounded-full",
45
45
  transition: { type: "spring", stiffness: 380, damping: 30 }
46
46
  }
47
- ) : isActive ? /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 right-0 h-[2.5px] bg-[#C0643A] rounded-full" }) : null;
47
+ ) : isActive ? /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 right-0 h-[2.5px] bg-primary rounded-full" }) : null;
48
48
  if (resolvedHref && !item.content && !item.disabled) {
49
49
  if (CustomLink && !requiresCrossZone) {
50
50
  return /* @__PURE__ */ jsxs(