@brycks/core-front 0.1.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 (192) hide show
  1. package/README.md +163 -0
  2. package/dist/colors-B_8a3coi.js +106 -0
  3. package/dist/colors-B_8a3coi.js.map +1 -0
  4. package/dist/colors-Bp6ROxvx.cjs +2 -0
  5. package/dist/colors-Bp6ROxvx.cjs.map +1 -0
  6. package/dist/components/feedback/Alert/Alert.d.ts +29 -0
  7. package/dist/components/feedback/Alert/Alert.d.ts.map +1 -0
  8. package/dist/components/feedback/Alert/index.d.ts +3 -0
  9. package/dist/components/feedback/Alert/index.d.ts.map +1 -0
  10. package/dist/components/feedback/Modal/Modal.d.ts +28 -0
  11. package/dist/components/feedback/Modal/Modal.d.ts.map +1 -0
  12. package/dist/components/feedback/Modal/index.d.ts +3 -0
  13. package/dist/components/feedback/Modal/index.d.ts.map +1 -0
  14. package/dist/components/feedback/Tooltip/Tooltip.d.ts +20 -0
  15. package/dist/components/feedback/Tooltip/Tooltip.d.ts.map +1 -0
  16. package/dist/components/feedback/Tooltip/index.d.ts +3 -0
  17. package/dist/components/feedback/Tooltip/index.d.ts.map +1 -0
  18. package/dist/components/feedback/index.d.ts +9 -0
  19. package/dist/components/feedback/index.d.ts.map +1 -0
  20. package/dist/components/form/Checkbox/Checkbox.d.ts +20 -0
  21. package/dist/components/form/Checkbox/Checkbox.d.ts.map +1 -0
  22. package/dist/components/form/Checkbox/index.d.ts +3 -0
  23. package/dist/components/form/Checkbox/index.d.ts.map +1 -0
  24. package/dist/components/form/Input/Input.d.ts +21 -0
  25. package/dist/components/form/Input/Input.d.ts.map +1 -0
  26. package/dist/components/form/Input/index.d.ts +3 -0
  27. package/dist/components/form/Input/index.d.ts.map +1 -0
  28. package/dist/components/form/Select/Select.d.ts +21 -0
  29. package/dist/components/form/Select/Select.d.ts.map +1 -0
  30. package/dist/components/form/Select/index.d.ts +3 -0
  31. package/dist/components/form/Select/index.d.ts.map +1 -0
  32. package/dist/components/form/Switch/Switch.d.ts +16 -0
  33. package/dist/components/form/Switch/Switch.d.ts.map +1 -0
  34. package/dist/components/form/Switch/index.d.ts +3 -0
  35. package/dist/components/form/Switch/index.d.ts.map +1 -0
  36. package/dist/components/form/TextField/TextField.d.ts +16 -0
  37. package/dist/components/form/TextField/TextField.d.ts.map +1 -0
  38. package/dist/components/form/TextField/index.d.ts +3 -0
  39. package/dist/components/form/TextField/index.d.ts.map +1 -0
  40. package/dist/components/form/Textarea/Textarea.d.ts +27 -0
  41. package/dist/components/form/Textarea/Textarea.d.ts.map +1 -0
  42. package/dist/components/form/Textarea/index.d.ts +3 -0
  43. package/dist/components/form/Textarea/index.d.ts.map +1 -0
  44. package/dist/components/form/index.d.ts +12 -0
  45. package/dist/components/form/index.d.ts.map +1 -0
  46. package/dist/components/index.d.ts +12 -0
  47. package/dist/components/index.d.ts.map +1 -0
  48. package/dist/components/layout/Box/Box.d.ts +11 -0
  49. package/dist/components/layout/Box/Box.d.ts.map +1 -0
  50. package/dist/components/layout/Box/Box.styles.d.ts +4 -0
  51. package/dist/components/layout/Box/Box.styles.d.ts.map +1 -0
  52. package/dist/components/layout/Box/Box.types.d.ts +38 -0
  53. package/dist/components/layout/Box/Box.types.d.ts.map +1 -0
  54. package/dist/components/layout/Box/index.d.ts +3 -0
  55. package/dist/components/layout/Box/index.d.ts.map +1 -0
  56. package/dist/components/layout/Container/Container.d.ts +31 -0
  57. package/dist/components/layout/Container/Container.d.ts.map +1 -0
  58. package/dist/components/layout/Container/index.d.ts +3 -0
  59. package/dist/components/layout/Container/index.d.ts.map +1 -0
  60. package/dist/components/layout/Grid/Grid.d.ts +80 -0
  61. package/dist/components/layout/Grid/Grid.d.ts.map +1 -0
  62. package/dist/components/layout/Grid/index.d.ts +3 -0
  63. package/dist/components/layout/Grid/index.d.ts.map +1 -0
  64. package/dist/components/layout/Stack/Stack.d.ts +13 -0
  65. package/dist/components/layout/Stack/Stack.d.ts.map +1 -0
  66. package/dist/components/layout/Stack/Stack.types.d.ts +33 -0
  67. package/dist/components/layout/Stack/Stack.types.d.ts.map +1 -0
  68. package/dist/components/layout/Stack/index.d.ts +3 -0
  69. package/dist/components/layout/Stack/index.d.ts.map +1 -0
  70. package/dist/components/layout/index.d.ts +10 -0
  71. package/dist/components/layout/index.d.ts.map +1 -0
  72. package/dist/components/primitives/Button/Button.d.ts +12 -0
  73. package/dist/components/primitives/Button/Button.d.ts.map +1 -0
  74. package/dist/components/primitives/Button/Button.styles.d.ts +29 -0
  75. package/dist/components/primitives/Button/Button.styles.d.ts.map +1 -0
  76. package/dist/components/primitives/Button/Button.types.d.ts +37 -0
  77. package/dist/components/primitives/Button/Button.types.d.ts.map +1 -0
  78. package/dist/components/primitives/Button/index.d.ts +3 -0
  79. package/dist/components/primitives/Button/index.d.ts.map +1 -0
  80. package/dist/components/primitives/index.d.ts +7 -0
  81. package/dist/components/primitives/index.d.ts.map +1 -0
  82. package/dist/components/typography/Heading/Heading.d.ts +38 -0
  83. package/dist/components/typography/Heading/Heading.d.ts.map +1 -0
  84. package/dist/components/typography/Heading/index.d.ts +3 -0
  85. package/dist/components/typography/Heading/index.d.ts.map +1 -0
  86. package/dist/components/typography/Text/Text.d.ts +41 -0
  87. package/dist/components/typography/Text/Text.d.ts.map +1 -0
  88. package/dist/components/typography/Text/index.d.ts +3 -0
  89. package/dist/components/typography/Text/index.d.ts.map +1 -0
  90. package/dist/components/typography/index.d.ts +8 -0
  91. package/dist/components/typography/index.d.ts.map +1 -0
  92. package/dist/components/utility/Badge/Badge.d.ts +20 -0
  93. package/dist/components/utility/Badge/Badge.d.ts.map +1 -0
  94. package/dist/components/utility/Badge/index.d.ts +3 -0
  95. package/dist/components/utility/Badge/index.d.ts.map +1 -0
  96. package/dist/components/utility/Divider/Divider.d.ts +19 -0
  97. package/dist/components/utility/Divider/Divider.d.ts.map +1 -0
  98. package/dist/components/utility/Divider/index.d.ts +3 -0
  99. package/dist/components/utility/Divider/index.d.ts.map +1 -0
  100. package/dist/components/utility/EmptyState/EmptyState.d.ts +26 -0
  101. package/dist/components/utility/EmptyState/EmptyState.d.ts.map +1 -0
  102. package/dist/components/utility/EmptyState/index.d.ts +3 -0
  103. package/dist/components/utility/EmptyState/index.d.ts.map +1 -0
  104. package/dist/components/utility/Loader/Loader.d.ts +21 -0
  105. package/dist/components/utility/Loader/Loader.d.ts.map +1 -0
  106. package/dist/components/utility/Loader/index.d.ts +3 -0
  107. package/dist/components/utility/Loader/index.d.ts.map +1 -0
  108. package/dist/components/utility/Skeleton/Skeleton.d.ts +35 -0
  109. package/dist/components/utility/Skeleton/Skeleton.d.ts.map +1 -0
  110. package/dist/components/utility/Skeleton/index.d.ts +3 -0
  111. package/dist/components/utility/Skeleton/index.d.ts.map +1 -0
  112. package/dist/components/utility/index.d.ts +11 -0
  113. package/dist/components/utility/index.d.ts.map +1 -0
  114. package/dist/cssVariables-CU3jCd8f.js +273 -0
  115. package/dist/cssVariables-CU3jCd8f.js.map +1 -0
  116. package/dist/cssVariables-D_naqeoR.cjs +2 -0
  117. package/dist/cssVariables-D_naqeoR.cjs.map +1 -0
  118. package/dist/design-system/index.d.ts +16 -0
  119. package/dist/design-system/index.d.ts.map +1 -0
  120. package/dist/design-system/primitives/focus.d.ts +67 -0
  121. package/dist/design-system/primitives/focus.d.ts.map +1 -0
  122. package/dist/design-system/primitives/index.d.ts +14 -0
  123. package/dist/design-system/primitives/index.d.ts.map +1 -0
  124. package/dist/design-system/primitives/opacity.d.ts +88 -0
  125. package/dist/design-system/primitives/opacity.d.ts.map +1 -0
  126. package/dist/design-system/primitives/sizing.d.ts +155 -0
  127. package/dist/design-system/primitives/sizing.d.ts.map +1 -0
  128. package/dist/design-system/primitives/transitions.d.ts +92 -0
  129. package/dist/design-system/primitives/transitions.d.ts.map +1 -0
  130. package/dist/design-system/primitives/typography.d.ts +164 -0
  131. package/dist/design-system/primitives/typography.d.ts.map +1 -0
  132. package/dist/design-system/themes/ThemeProvider.d.ts +18 -0
  133. package/dist/design-system/themes/ThemeProvider.d.ts.map +1 -0
  134. package/dist/design-system/themes/cssVariables.d.ts +52 -0
  135. package/dist/design-system/themes/cssVariables.d.ts.map +1 -0
  136. package/dist/design-system/themes/darkTheme.d.ts +3 -0
  137. package/dist/design-system/themes/darkTheme.d.ts.map +1 -0
  138. package/dist/design-system/themes/index.d.ts +11 -0
  139. package/dist/design-system/themes/index.d.ts.map +1 -0
  140. package/dist/design-system/themes/lightTheme.d.ts +3 -0
  141. package/dist/design-system/themes/lightTheme.d.ts.map +1 -0
  142. package/dist/design-system/themes/types.d.ts +134 -0
  143. package/dist/design-system/themes/types.d.ts.map +1 -0
  144. package/dist/design-system/tokens/borders.d.ts +86 -0
  145. package/dist/design-system/tokens/borders.d.ts.map +1 -0
  146. package/dist/design-system/tokens/breakpoints.d.ts +66 -0
  147. package/dist/design-system/tokens/breakpoints.d.ts.map +1 -0
  148. package/dist/design-system/tokens/colors.d.ts +206 -0
  149. package/dist/design-system/tokens/colors.d.ts.map +1 -0
  150. package/dist/design-system/tokens/index.d.ts +23 -0
  151. package/dist/design-system/tokens/index.d.ts.map +1 -0
  152. package/dist/design-system/tokens/motion.d.ts +204 -0
  153. package/dist/design-system/tokens/motion.d.ts.map +1 -0
  154. package/dist/design-system/tokens/shadows.d.ts +55 -0
  155. package/dist/design-system/tokens/shadows.d.ts.map +1 -0
  156. package/dist/design-system/tokens/spacing.d.ts +104 -0
  157. package/dist/design-system/tokens/spacing.d.ts.map +1 -0
  158. package/dist/design-system/tokens/typography.d.ts +214 -0
  159. package/dist/design-system/tokens/typography.d.ts.map +1 -0
  160. package/dist/design-system/tokens/zIndex.d.ts +36 -0
  161. package/dist/design-system/tokens/zIndex.d.ts.map +1 -0
  162. package/dist/hooks/index.d.ts +8 -0
  163. package/dist/hooks/index.d.ts.map +1 -0
  164. package/dist/hooks/useDisclosure.d.ts +19 -0
  165. package/dist/hooks/useDisclosure.d.ts.map +1 -0
  166. package/dist/hooks/useMediaQuery.d.ts +13 -0
  167. package/dist/hooks/useMediaQuery.d.ts.map +1 -0
  168. package/dist/index.cjs +89 -0
  169. package/dist/index.cjs.map +1 -0
  170. package/dist/index.d.ts +60 -0
  171. package/dist/index.d.ts.map +1 -0
  172. package/dist/index.js +3215 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/themes.cjs +2 -0
  175. package/dist/themes.cjs.map +1 -0
  176. package/dist/themes.d.ts +2 -0
  177. package/dist/themes.js +11 -0
  178. package/dist/themes.js.map +1 -0
  179. package/dist/tokens.cjs +2 -0
  180. package/dist/tokens.cjs.map +1 -0
  181. package/dist/tokens.d.ts +2 -0
  182. package/dist/tokens.js +627 -0
  183. package/dist/tokens.js.map +1 -0
  184. package/dist/types/common.d.ts +90 -0
  185. package/dist/types/common.d.ts.map +1 -0
  186. package/dist/types/index.d.ts +7 -0
  187. package/dist/types/index.d.ts.map +1 -0
  188. package/dist/utils/index.d.ts +7 -0
  189. package/dist/utils/index.d.ts.map +1 -0
  190. package/dist/utils/styles.d.ts +17 -0
  191. package/dist/utils/styles.d.ts.map +1 -0
  192. package/package.json +78 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/design-system/primitives/sizing.ts","../src/design-system/primitives/focus.ts","../src/design-system/primitives/transitions.ts","../src/design-system/primitives/typography.ts","../src/design-system/primitives/opacity.ts","../src/utils/styles.ts","../src/components/layout/Box/Box.styles.ts","../src/components/layout/Box/Box.tsx","../src/components/layout/Stack/Stack.tsx","../src/components/layout/Grid/Grid.tsx","../src/components/layout/Container/Container.tsx","../src/components/typography/Text/Text.tsx","../src/components/typography/Heading/Heading.tsx","../src/components/primitives/Button/Button.styles.ts","../src/components/primitives/Button/Button.tsx","../src/components/form/Input/Input.tsx","../src/components/form/TextField/TextField.tsx","../src/components/form/Select/Select.tsx","../src/components/form/Checkbox/Checkbox.tsx","../src/components/form/Switch/Switch.tsx","../src/components/form/Textarea/Textarea.tsx","../src/components/feedback/Modal/Modal.tsx","../src/components/feedback/Alert/Alert.tsx","../src/components/feedback/Tooltip/Tooltip.tsx","../src/components/utility/Badge/Badge.tsx","../src/components/utility/Loader/Loader.tsx","../src/components/utility/Skeleton/Skeleton.tsx","../src/components/utility/Divider/Divider.tsx","../src/components/utility/EmptyState/EmptyState.tsx","../src/hooks/useMediaQuery.ts","../src/hooks/useDisclosure.ts"],"sourcesContent":["/**\r\n * Brycks Design System - Component Sizing Primitives\r\n *\r\n * Standardized sizing scales for consistent component dimensions.\r\n * All values are derived from the spacing token system (4px grid).\r\n *\r\n * RULE: Components MUST use these scales. Never hardcode dimensions.\r\n */\r\n\r\nimport { spacing } from '../tokens/spacing'\r\n\r\n/**\r\n * Standard component heights for interactive elements.\r\n * Based on touch-target guidelines (minimum 44px for accessibility).\r\n */\r\nexport const componentHeights = {\r\n /** 24px - Micro elements (tags, small badges) */\r\n xs: spacing[6],\r\n /** 32px - Small inputs, compact buttons */\r\n sm: spacing[8],\r\n /** 40px - Default size for most interactive elements */\r\n md: spacing[10],\r\n /** 48px - Large inputs, prominent buttons */\r\n lg: spacing[12],\r\n /** 56px - Extra large, hero CTAs */\r\n xl: spacing[14],\r\n} as const\r\n\r\n/**\r\n * Icon sizes that align with component heights.\r\n */\r\nexport const iconSizes = {\r\n /** 12px */\r\n xs: spacing[3],\r\n /** 16px */\r\n sm: spacing[4],\r\n /** 20px */\r\n md: spacing[5],\r\n /** 24px */\r\n lg: spacing[6],\r\n /** 32px */\r\n xl: spacing[8],\r\n} as const\r\n\r\n/**\r\n * Standard padding for interactive components (horizontal).\r\n * Follows a progressive scale for visual balance.\r\n */\r\nexport const componentPaddingX = {\r\n /** 8px */\r\n xs: spacing[2],\r\n /** 12px */\r\n sm: spacing[3],\r\n /** 16px */\r\n md: spacing[4],\r\n /** 20px */\r\n lg: spacing[5],\r\n /** 24px */\r\n xl: spacing[6],\r\n} as const\r\n\r\n/**\r\n * Standard padding for interactive components (vertical).\r\n */\r\nexport const componentPaddingY = {\r\n /** 4px */\r\n xs: spacing[1],\r\n /** 6px */\r\n sm: spacing[1.5],\r\n /** 8px */\r\n md: spacing[2],\r\n /** 10px */\r\n lg: spacing[2.5],\r\n /** 12px */\r\n xl: spacing[3],\r\n} as const\r\n\r\n/**\r\n * Standard gap values for component internals.\r\n */\r\nexport const componentGap = {\r\n /** 4px - Tight spacing between icons and text */\r\n xs: spacing[1],\r\n /** 6px */\r\n sm: spacing[1.5],\r\n /** 8px - Default internal spacing */\r\n md: spacing[2],\r\n /** 10px */\r\n lg: spacing[2.5],\r\n /** 12px - Spacious internal spacing */\r\n xl: spacing[3],\r\n} as const\r\n\r\n/**\r\n * Modal/dialog width presets.\r\n */\r\nexport const modalWidths = {\r\n /** 400px - Small dialogs, confirmations */\r\n sm: 400,\r\n /** 500px - Medium dialogs */\r\n md: 500,\r\n /** 640px - Large dialogs */\r\n lg: 640,\r\n /** 800px - Extra large dialogs */\r\n xl: 800,\r\n /** Full width minus margins */\r\n full: 'calc(100vw - 48px)',\r\n} as const\r\n\r\n/**\r\n * Tooltip and popover constraints.\r\n */\r\nexport const popoverSizing = {\r\n /** Default tooltip max width */\r\n tooltipMaxWidth: 300,\r\n /** Default popover max width */\r\n popoverMaxWidth: 400,\r\n /** Arrow size for tooltips */\r\n arrowSize: spacing[2],\r\n /** Gap between trigger and popover */\r\n offset: spacing[2],\r\n} as const\r\n\r\n/**\r\n * Checkbox and radio sizes.\r\n */\r\nexport const controlSizes = {\r\n sm: {\r\n box: 16,\r\n icon: 10,\r\n },\r\n md: {\r\n box: 18,\r\n icon: 12,\r\n },\r\n lg: {\r\n box: 22,\r\n icon: 14,\r\n },\r\n} as const\r\n\r\n/**\r\n * Switch/toggle sizes.\r\n */\r\nexport const switchSizes = {\r\n sm: {\r\n width: 36,\r\n height: 20,\r\n thumb: 16,\r\n },\r\n md: {\r\n width: 44,\r\n height: 24,\r\n thumb: 20,\r\n },\r\n lg: {\r\n width: 52,\r\n height: 28,\r\n thumb: 24,\r\n },\r\n} as const\r\n\r\nexport type ComponentSize = keyof typeof componentHeights\r\nexport type IconSize = keyof typeof iconSizes\r\nexport type ControlSize = keyof typeof controlSizes\r\nexport type SwitchSize = keyof typeof switchSizes\r\n","/**\r\n * Brycks Design System - Focus State Primitives\r\n *\r\n * Centralized focus ring and state definitions.\r\n * Ensures consistent accessibility across all interactive elements.\r\n *\r\n * RULE: All focusable elements MUST use these focus styles.\r\n */\r\n\r\n/**\r\n * Focus ring box-shadow values.\r\n * Uses CSS variables for theme-aware colors.\r\n */\r\nexport const focusRing = {\r\n /** Default focus ring - primary color */\r\n default: '0 0 0 3px var(--brycks-focus-ring-color, rgba(85, 120, 244, 0.35))',\r\n /** Error state focus ring */\r\n error: '0 0 0 3px var(--brycks-focus-ring-error, rgba(239, 68, 68, 0.35))',\r\n /** Success state focus ring */\r\n success: '0 0 0 3px var(--brycks-focus-ring-success, rgba(16, 185, 129, 0.35))',\r\n /** Subtle focus ring - for nested elements */\r\n subtle: '0 0 0 2px var(--brycks-focus-ring-color, rgba(85, 120, 244, 0.25))',\r\n /** None - explicitly no focus ring */\r\n none: 'none',\r\n} as const\r\n\r\n/**\r\n * Focus ring with offset (for elements with borders).\r\n */\r\nexport const focusRingOffset = {\r\n default: '0 0 0 2px var(--brycks-background-app), 0 0 0 4px var(--brycks-primary-default)',\r\n error: '0 0 0 2px var(--brycks-background-app), 0 0 0 4px var(--brycks-error-default)',\r\n} as const\r\n\r\n/**\r\n * CSS custom properties that should be set by ThemeProvider.\r\n * These enable theme-aware focus rings.\r\n */\r\nexport const focusRingCSSVars = {\r\n color: '--brycks-focus-ring-color',\r\n error: '--brycks-focus-ring-error',\r\n success: '--brycks-focus-ring-success',\r\n} as const\r\n\r\n/**\r\n * Complete focus styles object for spreading.\r\n */\r\nexport const focusStyles = {\r\n /** Outline-based focus (native) */\r\n outline: {\r\n outline: '2px solid var(--brycks-border-focus)',\r\n outlineOffset: '2px',\r\n },\r\n /** Box-shadow based focus (custom) */\r\n ring: {\r\n outline: 'none',\r\n boxShadow: focusRing.default,\r\n },\r\n /** Error state focus */\r\n ringError: {\r\n outline: 'none',\r\n boxShadow: focusRing.error,\r\n },\r\n /** Remove focus styles (use sparingly) */\r\n none: {\r\n outline: 'none',\r\n boxShadow: 'none',\r\n },\r\n} as const\r\n\r\nexport type FocusRingVariant = keyof typeof focusRing\r\n","/**\r\n * Brycks Design System - Transition Primitives\r\n *\r\n * Standardized transition definitions for consistent motion.\r\n * All values derived from motion tokens.\r\n *\r\n * RULE: Components MUST use these transitions. Never hardcode timing.\r\n */\r\n\r\nimport { durations, easings } from '../tokens/motion'\r\n\r\n/**\r\n * Pre-composed CSS transition strings for common use cases.\r\n */\r\nexport const transition = {\r\n /** No transition */\r\n none: 'none',\r\n\r\n /** Ultra-fast - for micro-interactions (50ms) */\r\n instant: `all ${durations.faster}ms ${easings.easeOut}`,\r\n\r\n /** Fast - for hover states, toggles (100ms) */\r\n fast: `all ${durations.fast}ms ${easings.easeOut}`,\r\n\r\n /** Quick - standard interactive feedback (150ms) */\r\n quick: `all ${durations.quick}ms ${easings.easeOut}`,\r\n\r\n /** Default - most state changes (200ms) */\r\n default: `all ${durations.normal}ms ${easings.easeOut}`,\r\n\r\n /** Smooth - focus states, form elements (300ms) */\r\n smooth: `all ${durations.relaxed}ms ${easings.smooth}`,\r\n\r\n /** Slow - reveals, modals (400ms) */\r\n slow: `all ${durations.slow}ms ${easings.easeOut}`,\r\n\r\n /** Spring - bouncy, tactile feel (300ms) */\r\n spring: `all ${durations.relaxed}ms ${easings.softSpring}`,\r\n\r\n /** Colors only - optimized for color transitions */\r\n colors: `color ${durations.fast}ms ${easings.easeOut}, background-color ${durations.fast}ms ${easings.easeOut}, border-color ${durations.fast}ms ${easings.easeOut}`,\r\n\r\n /** Transform only - for scale, translate */\r\n transform: `transform ${durations.normal}ms ${easings.easeOut}`,\r\n\r\n /** Opacity only - for fade effects */\r\n opacity: `opacity ${durations.normal}ms ${easings.easeOut}`,\r\n\r\n /** Shadow only - for elevation changes */\r\n shadow: `box-shadow ${durations.normal}ms ${easings.easeOut}`,\r\n} as const\r\n\r\n/**\r\n * CSS transition property groups.\r\n */\r\nexport const transitionProperties = {\r\n all: 'all',\r\n colors: 'color, background-color, border-color, fill, stroke',\r\n opacity: 'opacity',\r\n shadow: 'box-shadow',\r\n transform: 'transform',\r\n dimensions: 'width, height, padding, margin',\r\n} as const\r\n\r\n/**\r\n * Duration values in milliseconds for use in JS.\r\n */\r\nexport const duration = {\r\n instant: durations.faster,\r\n fast: durations.fast,\r\n quick: durations.quick,\r\n default: durations.normal,\r\n smooth: durations.relaxed,\r\n slow: durations.slow,\r\n slower: durations.slower,\r\n} as const\r\n\r\n/**\r\n * Easing functions for use in JS animations.\r\n */\r\nexport const easing = {\r\n linear: easings.linear,\r\n ease: easings.ease,\r\n easeIn: easings.easeIn,\r\n easeOut: easings.easeOut,\r\n easeInOut: easings.easeInOut,\r\n spring: easings.spring,\r\n softSpring: easings.softSpring,\r\n smooth: easings.smooth,\r\n snappy: easings.snappy,\r\n} as const\r\n\r\n/**\r\n * CSS animation keyframes (as strings for style injection).\r\n */\r\nexport const keyframes = {\r\n fadeIn: `\r\n @keyframes brycks-fade-in {\r\n from { opacity: 0; }\r\n to { opacity: 1; }\r\n }\r\n `,\r\n fadeOut: `\r\n @keyframes brycks-fade-out {\r\n from { opacity: 1; }\r\n to { opacity: 0; }\r\n }\r\n `,\r\n scaleIn: `\r\n @keyframes brycks-scale-in {\r\n from { opacity: 0; transform: scale(0.95); }\r\n to { opacity: 1; transform: scale(1); }\r\n }\r\n `,\r\n scaleOut: `\r\n @keyframes brycks-scale-out {\r\n from { opacity: 1; transform: scale(1); }\r\n to { opacity: 0; transform: scale(0.95); }\r\n }\r\n `,\r\n slideUp: `\r\n @keyframes brycks-slide-up {\r\n from { opacity: 0; transform: translateY(8px); }\r\n to { opacity: 1; transform: translateY(0); }\r\n }\r\n `,\r\n slideDown: `\r\n @keyframes brycks-slide-down {\r\n from { opacity: 0; transform: translateY(-8px); }\r\n to { opacity: 1; transform: translateY(0); }\r\n }\r\n `,\r\n spin: `\r\n @keyframes brycks-spin {\r\n from { transform: rotate(0deg); }\r\n to { transform: rotate(360deg); }\r\n }\r\n `,\r\n pulse: `\r\n @keyframes brycks-pulse {\r\n 0%, 100% { opacity: 1; }\r\n 50% { opacity: 0.5; }\r\n }\r\n `,\r\n shimmer: `\r\n @keyframes brycks-shimmer {\r\n 0% { transform: translateX(-100%); }\r\n 100% { transform: translateX(100%); }\r\n }\r\n `,\r\n bounce: `\r\n @keyframes brycks-bounce {\r\n 0%, 80%, 100% { transform: scale(0); opacity: 0.5; }\r\n 40% { transform: scale(1); opacity: 1; }\r\n }\r\n `,\r\n} as const\r\n\r\nexport type TransitionPreset = keyof typeof transition\r\nexport type KeyframeName = keyof typeof keyframes\r\n","/**\r\n * Brycks Design System - Component Typography Primitives\r\n *\r\n * Typography scales specifically for component contexts.\r\n * Derived from base typography tokens.\r\n *\r\n * RULE: Components MUST use these scales. Never hardcode font values.\r\n */\r\n\r\nimport { fontSizes, fontWeights, lineHeights, fontFamilies } from '../tokens/typography'\r\n\r\n/**\r\n * Font sizes mapped to component size variants.\r\n * Ensures consistent text sizing across all components.\r\n */\r\nexport const componentFontSize = {\r\n /** 11px - Extra small labels, badges */\r\n xs: fontSizes.xs,\r\n /** 12px - Small text, captions, helper text */\r\n sm: fontSizes.sm,\r\n /** 14px - Default component text */\r\n md: fontSizes.base,\r\n /** 15px - Large component text */\r\n lg: 15,\r\n /** 16px - Extra large component text */\r\n xl: fontSizes.md,\r\n} as const\r\n\r\n/**\r\n * Font weights for component states.\r\n */\r\nexport const componentFontWeight = {\r\n /** 400 - Regular body text */\r\n regular: fontWeights.regular,\r\n /** 500 - Labels, emphasized text */\r\n medium: fontWeights.medium,\r\n /** 600 - Headings, titles */\r\n semibold: fontWeights.semibold,\r\n /** 700 - Strong emphasis */\r\n bold: fontWeights.bold,\r\n} as const\r\n\r\n/**\r\n * Line heights for component text.\r\n */\r\nexport const componentLineHeight = {\r\n /** 1 - Single line, badges */\r\n none: lineHeights.none,\r\n /** 1.25 - Tight, headings */\r\n tight: lineHeights.snug,\r\n /** 1.4 - Slightly relaxed, labels */\r\n snug: 1.4,\r\n /** 1.5 - Default body text */\r\n normal: lineHeights.normal,\r\n /** 1.6 - Relaxed, helper text */\r\n relaxed: 1.6,\r\n} as const\r\n\r\n/**\r\n * Pre-composed typography styles for common component elements.\r\n */\r\nexport const componentTypography = {\r\n /** Form field labels */\r\n label: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.sm,\r\n fontWeight: componentFontWeight.medium,\r\n lineHeight: componentLineHeight.normal,\r\n },\r\n /** Helper/hint text below inputs */\r\n helperText: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.xs,\r\n fontWeight: componentFontWeight.regular,\r\n lineHeight: componentLineHeight.relaxed,\r\n },\r\n /** Error messages */\r\n errorText: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.xs,\r\n fontWeight: componentFontWeight.regular,\r\n lineHeight: componentLineHeight.relaxed,\r\n },\r\n /** Button text - small */\r\n buttonSm: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.sm,\r\n fontWeight: componentFontWeight.medium,\r\n lineHeight: componentLineHeight.none,\r\n },\r\n /** Button text - medium (default) */\r\n buttonMd: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.md,\r\n fontWeight: componentFontWeight.medium,\r\n lineHeight: componentLineHeight.none,\r\n },\r\n /** Button text - large */\r\n buttonLg: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.lg,\r\n fontWeight: componentFontWeight.medium,\r\n lineHeight: componentLineHeight.none,\r\n },\r\n /** Badge text */\r\n badge: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.xs,\r\n fontWeight: componentFontWeight.medium,\r\n lineHeight: componentLineHeight.none,\r\n },\r\n /** Tooltip text */\r\n tooltip: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.xs,\r\n fontWeight: componentFontWeight.medium,\r\n lineHeight: componentLineHeight.snug,\r\n },\r\n /** Alert title */\r\n alertTitle: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.md,\r\n fontWeight: componentFontWeight.semibold,\r\n lineHeight: componentLineHeight.tight,\r\n },\r\n /** Alert description */\r\n alertDescription: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.md,\r\n fontWeight: componentFontWeight.regular,\r\n lineHeight: componentLineHeight.normal,\r\n },\r\n /** Modal title */\r\n modalTitle: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: fontSizes.lg,\r\n fontWeight: componentFontWeight.semibold,\r\n lineHeight: componentLineHeight.tight,\r\n },\r\n /** Modal description */\r\n modalDescription: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.md,\r\n fontWeight: componentFontWeight.regular,\r\n lineHeight: componentLineHeight.normal,\r\n },\r\n /** Empty state title */\r\n emptyStateTitle: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: fontSizes.lg,\r\n fontWeight: componentFontWeight.semibold,\r\n lineHeight: componentLineHeight.tight,\r\n },\r\n /** Empty state description */\r\n emptyStateDescription: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.md,\r\n fontWeight: componentFontWeight.regular,\r\n lineHeight: componentLineHeight.normal,\r\n },\r\n /** Divider label */\r\n dividerLabel: {\r\n fontFamily: fontFamilies.sans,\r\n fontSize: componentFontSize.xs,\r\n fontWeight: componentFontWeight.medium,\r\n lineHeight: componentLineHeight.normal,\r\n },\r\n} as const\r\n\r\nexport type ComponentTypographyKey = keyof typeof componentTypography\r\n","/**\r\n * Brycks Design System - Opacity Primitives\r\n *\r\n * Standardized opacity values for consistent visual states.\r\n *\r\n * RULE: Components MUST use these values. Never hardcode opacity.\r\n */\r\n\r\n/**\r\n * Opacity scale for various visual states.\r\n */\r\nexport const opacity = {\r\n /** 0 - Fully transparent */\r\n transparent: 0,\r\n /** 0.05 - Barely visible */\r\n 5: 0.05,\r\n /** 0.1 - Subtle hint */\r\n 10: 0.1,\r\n /** 0.15 - Light overlay */\r\n 15: 0.15,\r\n /** 0.2 - Soft background */\r\n 20: 0.2,\r\n /** 0.25 - Quarter visible */\r\n 25: 0.25,\r\n /** 0.3 - Light emphasis */\r\n 30: 0.3,\r\n /** 0.4 - Medium-light */\r\n 40: 0.4,\r\n /** 0.5 - Half visible (disabled) */\r\n 50: 0.5,\r\n /** 0.6 - Medium */\r\n 60: 0.6,\r\n /** 0.7 - Medium-strong */\r\n 70: 0.7,\r\n /** 0.75 - Three-quarter visible */\r\n 75: 0.75,\r\n /** 0.8 - Strong */\r\n 80: 0.8,\r\n /** 0.9 - Almost opaque */\r\n 90: 0.9,\r\n /** 0.95 - Nearly opaque */\r\n 95: 0.95,\r\n /** 1 - Fully opaque */\r\n opaque: 1,\r\n} as const\r\n\r\n/**\r\n * Semantic opacity values for common states.\r\n */\r\nexport const stateOpacity = {\r\n /** Disabled elements */\r\n disabled: opacity[50],\r\n /** Placeholder text */\r\n placeholder: opacity[50],\r\n /** Hover overlay */\r\n hoverOverlay: opacity[5],\r\n /** Active/pressed overlay */\r\n activeOverlay: opacity[10],\r\n /** Modal backdrop */\r\n backdrop: opacity[40],\r\n /** Loading state */\r\n loading: opacity[70],\r\n /** Secondary text */\r\n muted: opacity[60],\r\n /** Subtle decorative elements */\r\n subtle: opacity[30],\r\n} as const\r\n\r\n/**\r\n * Scale transform values for interactive states.\r\n */\r\nexport const scale = {\r\n /** Pressed state - subtle shrink */\r\n pressed: 0.98,\r\n /** Strong pressed - more noticeable */\r\n pressedStrong: 0.95,\r\n /** Checkbox pressed */\r\n controlPressed: 0.92,\r\n /** Hidden/initial state for animations */\r\n hidden: 0.95,\r\n /** Normal state */\r\n normal: 1,\r\n /** Slight grow on hover */\r\n hover: 1.02,\r\n /** Emphasized grow */\r\n emphasized: 1.05,\r\n} as const\r\n\r\nexport type OpacityValue = keyof typeof opacity\r\nexport type StateOpacity = keyof typeof stateOpacity\r\nexport type ScaleValue = keyof typeof scale\r\n","/**\r\n * Brycks Design System - Style Utilities\r\n *\r\n * Helper functions for building component styles.\r\n * All values derive from design system - NO hardcoded values.\r\n *\r\n * @module utils/styles\r\n */\r\n\r\nimport type { CSSProperties } from 'react'\r\nimport type { SpacingProps } from '../types/common'\r\nimport { spacing } from '../design-system'\r\n\r\n/** Merge class names, filtering out falsy values */\r\nexport function cx(...classes: (string | boolean | undefined | null)[]): string {\r\n return classes.filter(Boolean).join(' ')\r\n}\r\n\r\n/** Convert spacing key to pixel value */\r\nexport function getSpacingValue(key: keyof typeof spacing): number {\r\n return spacing[key]\r\n}\r\n\r\n/** Convert spacing key to CSS value with px unit */\r\nexport function spacingToCss(key: keyof typeof spacing | undefined): string | undefined {\r\n if (key === undefined) return undefined\r\n const value = spacing[key]\r\n return value === 0 ? '0' : `${value}px`\r\n}\r\n\r\n/** Build spacing styles from props */\r\nexport function buildSpacingStyles(props: SpacingProps): CSSProperties {\r\n const styles: CSSProperties = {}\r\n\r\n if (props.m !== undefined) styles.margin = spacingToCss(props.m)\r\n if (props.mx !== undefined) {\r\n styles.marginLeft = spacingToCss(props.mx)\r\n styles.marginRight = spacingToCss(props.mx)\r\n }\r\n if (props.my !== undefined) {\r\n styles.marginTop = spacingToCss(props.my)\r\n styles.marginBottom = spacingToCss(props.my)\r\n }\r\n if (props.mt !== undefined) styles.marginTop = spacingToCss(props.mt)\r\n if (props.mr !== undefined) styles.marginRight = spacingToCss(props.mr)\r\n if (props.mb !== undefined) styles.marginBottom = spacingToCss(props.mb)\r\n if (props.ml !== undefined) styles.marginLeft = spacingToCss(props.ml)\r\n\r\n if (props.p !== undefined) styles.padding = spacingToCss(props.p)\r\n if (props.px !== undefined) {\r\n styles.paddingLeft = spacingToCss(props.px)\r\n styles.paddingRight = spacingToCss(props.px)\r\n }\r\n if (props.py !== undefined) {\r\n styles.paddingTop = spacingToCss(props.py)\r\n styles.paddingBottom = spacingToCss(props.py)\r\n }\r\n if (props.pt !== undefined) styles.paddingTop = spacingToCss(props.pt)\r\n if (props.pr !== undefined) styles.paddingRight = spacingToCss(props.pr)\r\n if (props.pb !== undefined) styles.paddingBottom = spacingToCss(props.pb)\r\n if (props.pl !== undefined) styles.paddingLeft = spacingToCss(props.pl)\r\n\r\n return styles\r\n}\r\n\r\n/** Create CSS-in-JS style object with typed tokens */\r\nexport function createStyles<T extends Record<string, CSSProperties>>(styles: T): T {\r\n return styles\r\n}\r\n\r\n/** Generate a unique ID for accessibility */\r\nlet idCounter = 0\r\nexport function generateId(prefix = 'brycks'): string {\r\n return `${prefix}-${++idCounter}`\r\n}\r\n\r\n/** Convert hex color to rgba */\r\nexport function hexToRgba(hex: string, alpha: number): string {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\r\n if (!result) return hex\r\n\r\n const r = parseInt(result[1], 16)\r\n const g = parseInt(result[2], 16)\r\n const b = parseInt(result[3], 16)\r\n\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`\r\n}\r\n","/**\r\n * Box Component Styles\r\n */\r\n\r\nimport type { CSSProperties } from 'react'\r\nimport type { BoxOwnProps } from './Box.types'\r\nimport { buildSpacingStyles } from '../../../utils/styles'\r\n\r\nconst radiusMap: Record<NonNullable<BoxOwnProps['radius']>, string> = {\r\n none: '0',\r\n xs: 'var(--brycks-radius-xs)',\r\n sm: 'var(--brycks-radius-sm)',\r\n md: 'var(--brycks-radius-md)',\r\n lg: 'var(--brycks-radius-lg)',\r\n xl: 'var(--brycks-radius-xl)',\r\n '2xl': 'var(--brycks-radius-2xl)',\r\n '3xl': 'var(--brycks-radius-3xl)',\r\n full: 'var(--brycks-radius-full)',\r\n}\r\n\r\nconst shadowMap: Record<NonNullable<BoxOwnProps['shadow']>, string> = {\r\n none: 'none',\r\n xs: 'var(--brycks-shadow-xs)',\r\n sm: 'var(--brycks-shadow-sm)',\r\n md: 'var(--brycks-shadow-md)',\r\n lg: 'var(--brycks-shadow-lg)',\r\n xl: 'var(--brycks-shadow-xl)',\r\n '2xl': 'var(--brycks-shadow-2xl)',\r\n}\r\n\r\nexport function buildBoxStyles(props: BoxOwnProps): CSSProperties {\r\n const spacingStyles = buildSpacingStyles(props)\r\n\r\n const styles: CSSProperties = {\r\n ...spacingStyles,\r\n }\r\n\r\n if (props.display) styles.display = props.display\r\n if (props.position) styles.position = props.position\r\n if (props.width) styles.width = props.width\r\n if (props.height) styles.height = props.height\r\n if (props.minWidth) styles.minWidth = props.minWidth\r\n if (props.maxWidth) styles.maxWidth = props.maxWidth\r\n if (props.minHeight) styles.minHeight = props.minHeight\r\n if (props.maxHeight) styles.maxHeight = props.maxHeight\r\n if (props.overflow) styles.overflow = props.overflow\r\n if (props.bg) styles.backgroundColor = props.bg\r\n if (props.radius) styles.borderRadius = radiusMap[props.radius]\r\n if (props.shadow) styles.boxShadow = shadowMap[props.shadow]\r\n\r\n return styles\r\n}\r\n","/**\r\n * Box Component\r\n *\r\n * A polymorphic layout primitive that serves as the foundation for all other components.\r\n * Provides spacing, sizing, and visual styling through props.\r\n */\r\n\r\nimport React, { forwardRef, type ElementType, type ComponentPropsWithRef } from 'react'\r\nimport type { BoxProps, BoxOwnProps } from './Box.types'\r\nimport { buildBoxStyles } from './Box.styles'\r\nimport { cx } from '../../../utils/styles'\r\n\r\ninterface BoxComponent {\r\n <E extends ElementType = 'div'>(\r\n props: BoxProps<E> & { ref?: ComponentPropsWithRef<E>['ref'] }\r\n ): JSX.Element | null\r\n displayName?: string\r\n}\r\n\r\n// Keys to omit from props before spreading\r\nconst boxOwnPropKeys: (keyof BoxOwnProps)[] = [\r\n 'm',\r\n 'mx',\r\n 'my',\r\n 'mt',\r\n 'mr',\r\n 'mb',\r\n 'ml',\r\n 'p',\r\n 'px',\r\n 'py',\r\n 'pt',\r\n 'pr',\r\n 'pb',\r\n 'pl',\r\n 'display',\r\n 'position',\r\n 'width',\r\n 'height',\r\n 'minWidth',\r\n 'maxWidth',\r\n 'minHeight',\r\n 'maxHeight',\r\n 'overflow',\r\n 'bg',\r\n 'radius',\r\n 'shadow',\r\n 'testId',\r\n]\r\n\r\nfunction omitBoxProps<P extends Record<string, unknown>>(\r\n props: P\r\n): Omit<P, (typeof boxOwnPropKeys)[number]> {\r\n const result = { ...props }\r\n for (const key of boxOwnPropKeys) {\r\n delete result[key]\r\n }\r\n return result\r\n}\r\n\r\nconst BoxInner = <E extends ElementType = 'div'>(\r\n { as, className, style, children, testId, ...props }: BoxProps<E>,\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n const Component = as || 'div'\r\n const boxStyles = buildBoxStyles(props as BoxOwnProps)\r\n const filteredProps = omitBoxProps(props)\r\n\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cx('brycks-box', className)}\r\n style={{ ...boxStyles, ...style }}\r\n data-testid={testId}\r\n {...filteredProps}\r\n >\r\n {children}\r\n </Component>\r\n )\r\n}\r\n\r\nexport const Box = forwardRef(BoxInner) as BoxComponent\r\n\r\nBox.displayName = 'Box'\r\n","/**\r\n * Stack Component\r\n *\r\n * A flexbox layout component for stacking elements vertically or horizontally.\r\n * Provides consistent spacing between children.\r\n */\r\n\r\nimport React, { forwardRef, type ElementType, type ComponentPropsWithRef, type CSSProperties } from 'react'\r\nimport type { StackProps, StackOwnProps } from './Stack.types'\r\nimport { buildSpacingStyles, spacingToCss, cx } from '../../../utils/styles'\r\n\r\ninterface StackComponent {\r\n <E extends ElementType = 'div'>(\r\n props: StackProps<E> & { ref?: ComponentPropsWithRef<E>['ref'] }\r\n ): JSX.Element | null\r\n displayName?: string\r\n}\r\n\r\nconst stackOwnPropKeys: (keyof StackOwnProps)[] = [\r\n 'm',\r\n 'mx',\r\n 'my',\r\n 'mt',\r\n 'mr',\r\n 'mb',\r\n 'ml',\r\n 'p',\r\n 'px',\r\n 'py',\r\n 'pt',\r\n 'pr',\r\n 'pb',\r\n 'pl',\r\n 'direction',\r\n 'gap',\r\n 'gapX',\r\n 'gapY',\r\n 'align',\r\n 'justify',\r\n 'wrap',\r\n 'inline',\r\n 'testId',\r\n]\r\n\r\nfunction omitStackProps<P extends Record<string, unknown>>(\r\n props: P\r\n): Omit<P, (typeof stackOwnPropKeys)[number]> {\r\n const result = { ...props }\r\n for (const key of stackOwnPropKeys) {\r\n delete result[key]\r\n }\r\n return result\r\n}\r\n\r\nfunction buildStackStyles(props: StackOwnProps): CSSProperties {\r\n const spacingStyles = buildSpacingStyles(props)\r\n\r\n const styles: CSSProperties = {\r\n ...spacingStyles,\r\n display: props.inline ? 'inline-flex' : 'flex',\r\n flexDirection: props.direction ?? 'column',\r\n }\r\n\r\n if (props.gap !== undefined) {\r\n styles.gap = spacingToCss(props.gap)\r\n } else {\r\n if (props.gapX !== undefined) styles.columnGap = spacingToCss(props.gapX)\r\n if (props.gapY !== undefined) styles.rowGap = spacingToCss(props.gapY)\r\n }\r\n\r\n if (props.align) styles.alignItems = props.align\r\n if (props.justify) styles.justifyContent = props.justify\r\n if (props.wrap) styles.flexWrap = props.wrap\r\n\r\n return styles\r\n}\r\n\r\nconst StackInner = <E extends ElementType = 'div'>(\r\n { as, className, style, children, testId, ...props }: StackProps<E>,\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n const Component = as || 'div'\r\n const stackStyles = buildStackStyles(props as StackOwnProps)\r\n const filteredProps = omitStackProps(props)\r\n\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cx('brycks-stack', className)}\r\n style={{ ...stackStyles, ...style }}\r\n data-testid={testId}\r\n {...filteredProps}\r\n >\r\n {children}\r\n </Component>\r\n )\r\n}\r\n\r\nexport const Stack = forwardRef(StackInner) as StackComponent\r\n\r\nStack.displayName = 'Stack'\r\n\r\n/** Horizontal stack shorthand */\r\nconst HStackInner = <E extends ElementType = 'div'>(\r\n props: Omit<StackProps<E>, 'direction'> & { ref?: ComponentPropsWithRef<E>['ref'] },\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n return <Stack ref={ref} direction=\"row\" align=\"center\" {...props} />\r\n}\r\n\r\nexport const HStack = forwardRef(HStackInner) as StackComponent\r\n\r\nHStack.displayName = 'HStack'\r\n\r\n/** Vertical stack shorthand */\r\nconst VStackInner = <E extends ElementType = 'div'>(\r\n props: Omit<StackProps<E>, 'direction'> & { ref?: ComponentPropsWithRef<E>['ref'] },\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n return <Stack ref={ref} direction=\"column\" {...props} />\r\n}\r\n\r\nexport const VStack = forwardRef(VStackInner) as StackComponent\r\n\r\nVStack.displayName = 'VStack'\r\n","/**\r\n * Grid Component\r\n *\r\n * A CSS Grid layout component for creating responsive grid layouts.\r\n */\r\n\r\nimport React, {\r\n forwardRef,\r\n type ElementType,\r\n type ComponentPropsWithRef,\r\n type CSSProperties,\r\n type ReactNode,\r\n type ComponentPropsWithoutRef,\r\n} from 'react'\r\nimport type { SpacingProps } from '../../../types/common'\r\nimport type { SpacingKey } from '../../../design-system/tokens/spacing'\r\nimport { buildSpacingStyles, spacingToCss, cx } from '../../../utils/styles'\r\n\r\nexport interface GridOwnProps extends SpacingProps {\r\n /** The element type to render */\r\n as?: ElementType\r\n /** Custom class name */\r\n className?: string\r\n /** Custom inline styles */\r\n style?: CSSProperties\r\n /** Number of columns */\r\n columns?: number | string\r\n /** Number of rows */\r\n rows?: number | string\r\n /** Gap between items */\r\n gap?: SpacingKey\r\n /** Column gap */\r\n gapX?: SpacingKey\r\n /** Row gap */\r\n gapY?: SpacingKey\r\n /** Align items */\r\n align?: CSSProperties['alignItems']\r\n /** Justify items */\r\n justify?: CSSProperties['justifyItems']\r\n /** Template columns (CSS value) */\r\n templateColumns?: string\r\n /** Template rows (CSS value) */\r\n templateRows?: string\r\n /** Auto flow */\r\n flow?: CSSProperties['gridAutoFlow']\r\n /** Whether to render as inline-grid */\r\n inline?: boolean\r\n /** Children */\r\n children?: ReactNode\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nexport type GridProps<E extends ElementType = 'div'> = GridOwnProps &\r\n Omit<ComponentPropsWithoutRef<E>, keyof GridOwnProps>\r\n\r\ninterface GridComponent {\r\n <E extends ElementType = 'div'>(\r\n props: GridProps<E> & { ref?: ComponentPropsWithRef<E>['ref'] }\r\n ): JSX.Element | null\r\n displayName?: string\r\n}\r\n\r\nconst gridOwnPropKeys: (keyof GridOwnProps)[] = [\r\n 'm',\r\n 'mx',\r\n 'my',\r\n 'mt',\r\n 'mr',\r\n 'mb',\r\n 'ml',\r\n 'p',\r\n 'px',\r\n 'py',\r\n 'pt',\r\n 'pr',\r\n 'pb',\r\n 'pl',\r\n 'columns',\r\n 'rows',\r\n 'gap',\r\n 'gapX',\r\n 'gapY',\r\n 'align',\r\n 'justify',\r\n 'templateColumns',\r\n 'templateRows',\r\n 'flow',\r\n 'inline',\r\n 'testId',\r\n]\r\n\r\nfunction omitGridProps<P extends Record<string, unknown>>(\r\n props: P\r\n): Omit<P, (typeof gridOwnPropKeys)[number]> {\r\n const result = { ...props }\r\n for (const key of gridOwnPropKeys) {\r\n delete result[key]\r\n }\r\n return result\r\n}\r\n\r\nfunction buildGridStyles(props: GridOwnProps): CSSProperties {\r\n const spacingStyles = buildSpacingStyles(props)\r\n\r\n const styles: CSSProperties = {\r\n ...spacingStyles,\r\n display: props.inline ? 'inline-grid' : 'grid',\r\n }\r\n\r\n if (props.columns !== undefined) {\r\n styles.gridTemplateColumns =\r\n typeof props.columns === 'number' ? `repeat(${props.columns}, 1fr)` : props.columns\r\n }\r\n\r\n if (props.rows !== undefined) {\r\n styles.gridTemplateRows =\r\n typeof props.rows === 'number' ? `repeat(${props.rows}, 1fr)` : props.rows\r\n }\r\n\r\n if (props.templateColumns) styles.gridTemplateColumns = props.templateColumns\r\n if (props.templateRows) styles.gridTemplateRows = props.templateRows\r\n\r\n if (props.gap !== undefined) {\r\n styles.gap = spacingToCss(props.gap)\r\n } else {\r\n if (props.gapX !== undefined) styles.columnGap = spacingToCss(props.gapX)\r\n if (props.gapY !== undefined) styles.rowGap = spacingToCss(props.gapY)\r\n }\r\n\r\n if (props.align) styles.alignItems = props.align\r\n if (props.justify) styles.justifyItems = props.justify\r\n if (props.flow) styles.gridAutoFlow = props.flow\r\n\r\n return styles\r\n}\r\n\r\nconst GridInner = <E extends ElementType = 'div'>(\r\n { as, className, style, children, testId, ...props }: GridProps<E>,\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n const Component = as || 'div'\r\n const gridStyles = buildGridStyles(props as GridOwnProps)\r\n const filteredProps = omitGridProps(props)\r\n\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cx('brycks-grid', className)}\r\n style={{ ...gridStyles, ...style }}\r\n data-testid={testId}\r\n {...filteredProps}\r\n >\r\n {children}\r\n </Component>\r\n )\r\n}\r\n\r\nexport const Grid = forwardRef(GridInner) as GridComponent\r\n\r\nGrid.displayName = 'Grid'\r\n\r\n/** Grid Item Component */\r\nexport interface GridItemOwnProps {\r\n /** Column span */\r\n colSpan?: number | 'full'\r\n /** Row span */\r\n rowSpan?: number\r\n /** Column start */\r\n colStart?: number\r\n /** Column end */\r\n colEnd?: number\r\n /** Row start */\r\n rowStart?: number\r\n /** Row end */\r\n rowEnd?: number\r\n /** Custom class name */\r\n className?: string\r\n /** Custom inline styles */\r\n style?: CSSProperties\r\n /** Children */\r\n children?: ReactNode\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nexport type GridItemProps<E extends ElementType = 'div'> = GridItemOwnProps &\r\n Omit<ComponentPropsWithoutRef<E>, keyof GridItemOwnProps> & {\r\n as?: E\r\n }\r\n\r\ninterface GridItemComponent {\r\n <E extends ElementType = 'div'>(\r\n props: GridItemProps<E> & { ref?: ComponentPropsWithRef<E>['ref'] }\r\n ): JSX.Element | null\r\n displayName?: string\r\n}\r\n\r\nconst GridItemInner = <E extends ElementType = 'div'>(\r\n {\r\n as,\r\n className,\r\n style,\r\n children,\r\n testId,\r\n colSpan,\r\n rowSpan,\r\n colStart,\r\n colEnd,\r\n rowStart,\r\n rowEnd,\r\n ...props\r\n }: GridItemProps<E>,\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n const Component = as || 'div'\r\n\r\n const itemStyles: CSSProperties = {}\r\n\r\n if (colSpan !== undefined) {\r\n itemStyles.gridColumn = colSpan === 'full' ? '1 / -1' : `span ${colSpan}`\r\n }\r\n if (rowSpan !== undefined) itemStyles.gridRow = `span ${rowSpan}`\r\n if (colStart !== undefined) itemStyles.gridColumnStart = colStart\r\n if (colEnd !== undefined) itemStyles.gridColumnEnd = colEnd\r\n if (rowStart !== undefined) itemStyles.gridRowStart = rowStart\r\n if (rowEnd !== undefined) itemStyles.gridRowEnd = rowEnd\r\n\r\n return (\r\n <Component\r\n ref={ref as React.LegacyRef<HTMLDivElement>}\r\n className={cx('brycks-grid-item', className)}\r\n style={{ ...itemStyles, ...style }}\r\n data-testid={testId}\r\n {...props}\r\n >\r\n {children}\r\n </Component>\r\n )\r\n}\r\n\r\nexport const GridItem = forwardRef(GridItemInner) as GridItemComponent\r\n\r\nGridItem.displayName = 'GridItem'\r\n","/**\r\n * Container Component\r\n *\r\n * A responsive container that centers content and provides consistent max-widths.\r\n * All values derive from design system - NO hardcoded values.\r\n *\r\n * @module components/layout/Container\r\n */\r\n\r\nimport React, {\r\n forwardRef,\r\n type ElementType,\r\n type ComponentPropsWithRef,\r\n type CSSProperties,\r\n type ReactNode,\r\n type ComponentPropsWithoutRef,\r\n} from 'react'\r\nimport type { SpacingProps } from '../../../types/common'\r\nimport { containers } from '../../../design-system'\r\nimport { buildSpacingStyles, cx } from '../../../utils/styles'\r\n\r\nexport interface ContainerOwnProps extends SpacingProps {\r\n /** The element type to render */\r\n as?: ElementType\r\n /** Custom class name */\r\n className?: string\r\n /** Custom inline styles */\r\n style?: CSSProperties\r\n /** Container size / max-width */\r\n size?: keyof typeof containers\r\n /** Whether to center the container */\r\n centered?: boolean\r\n /** Whether to add default horizontal padding */\r\n padded?: boolean\r\n /** Children */\r\n children?: ReactNode\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nexport type ContainerProps<E extends ElementType = 'div'> = ContainerOwnProps &\r\n Omit<ComponentPropsWithoutRef<E>, keyof ContainerOwnProps>\r\n\r\ninterface ContainerComponent {\r\n <E extends ElementType = 'div'>(\r\n props: ContainerProps<E> & { ref?: ComponentPropsWithRef<E>['ref'] }\r\n ): JSX.Element | null\r\n displayName?: string\r\n}\r\n\r\nconst containerOwnPropKeys: (keyof ContainerOwnProps)[] = [\r\n 'm',\r\n 'mx',\r\n 'my',\r\n 'mt',\r\n 'mr',\r\n 'mb',\r\n 'ml',\r\n 'p',\r\n 'px',\r\n 'py',\r\n 'pt',\r\n 'pr',\r\n 'pb',\r\n 'pl',\r\n 'size',\r\n 'centered',\r\n 'padded',\r\n 'testId',\r\n]\r\n\r\nfunction omitContainerProps<P extends Record<string, unknown>>(\r\n props: P\r\n): Omit<P, (typeof containerOwnPropKeys)[number]> {\r\n const result = { ...props }\r\n for (const key of containerOwnPropKeys) {\r\n delete result[key]\r\n }\r\n return result\r\n}\r\n\r\nfunction buildContainerStyles(props: ContainerOwnProps): CSSProperties {\r\n const spacingStyles = buildSpacingStyles(props)\r\n\r\n const size = props.size ?? 'xl'\r\n const maxWidth = containers[size]\r\n\r\n const styles: CSSProperties = {\r\n ...spacingStyles,\r\n width: '100%',\r\n maxWidth: typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth,\r\n }\r\n\r\n if (props.centered !== false) {\r\n styles.marginLeft = 'auto'\r\n styles.marginRight = 'auto'\r\n }\r\n\r\n if (props.padded !== false) {\r\n styles.paddingLeft = 'var(--brycks-space-4)'\r\n styles.paddingRight = 'var(--brycks-space-4)'\r\n }\r\n\r\n return styles\r\n}\r\n\r\nconst ContainerInner = <E extends ElementType = 'div'>(\r\n { as, className, style, children, testId, ...props }: ContainerProps<E>,\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n const Component = as || 'div'\r\n const containerStyles = buildContainerStyles(props as ContainerOwnProps)\r\n const filteredProps = omitContainerProps(props)\r\n\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cx('brycks-container', className)}\r\n style={{ ...containerStyles, ...style }}\r\n data-testid={testId}\r\n {...filteredProps}\r\n >\r\n {children}\r\n </Component>\r\n )\r\n}\r\n\r\nexport const Container = forwardRef(ContainerInner) as ContainerComponent\r\n\r\nContainer.displayName = 'Container'\r\n","/**\r\n * Text Component\r\n *\r\n * A polymorphic text component for rendering body text with consistent styling.\r\n * Supports all text styles from the design system.\r\n * All values derive from design system - NO hardcoded values.\r\n *\r\n * @module components/typography/Text\r\n */\r\n\r\nimport React, {\r\n forwardRef,\r\n type ElementType,\r\n type ComponentPropsWithRef,\r\n type CSSProperties,\r\n type ReactNode,\r\n type ComponentPropsWithoutRef,\r\n} from 'react'\r\nimport {\r\n fontSizes,\r\n fontWeights,\r\n lineHeights,\r\n textStyles,\r\n spacing,\r\n type FontSize,\r\n type FontWeight,\r\n type LineHeight,\r\n} from '../../../design-system'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport interface TextOwnProps {\r\n /** The element type to render */\r\n as?: ElementType\r\n /** Text style preset */\r\n variant?: 'body' | 'bodyLarge' | 'bodySmall' | 'label' | 'caption' | 'overline' | 'code'\r\n /** Font size */\r\n size?: FontSize\r\n /** Font weight */\r\n weight?: FontWeight\r\n /** Line height */\r\n leading?: LineHeight\r\n /** Text alignment */\r\n align?: CSSProperties['textAlign']\r\n /** Text color (CSS variable or direct value) */\r\n color?: string\r\n /** Whether text should truncate with ellipsis */\r\n truncate?: boolean\r\n /** Max number of lines before truncating */\r\n lineClamp?: number\r\n /** Custom class name */\r\n className?: string\r\n /** Custom inline styles */\r\n style?: CSSProperties\r\n /** Children */\r\n children?: ReactNode\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nexport type TextProps<E extends ElementType = 'p'> = TextOwnProps &\r\n Omit<ComponentPropsWithoutRef<E>, keyof TextOwnProps>\r\n\r\ninterface TextComponent {\r\n <E extends ElementType = 'p'>(\r\n props: TextProps<E> & { ref?: ComponentPropsWithRef<E>['ref'] }\r\n ): JSX.Element | null\r\n displayName?: string\r\n}\r\n\r\nconst variantMap: Record<\r\n NonNullable<TextOwnProps['variant']>,\r\n { element: ElementType; styles: CSSProperties }\r\n> = {\r\n body: { element: 'p', styles: textStyles.bodyDefault },\r\n bodyLarge: { element: 'p', styles: textStyles.bodyLarge },\r\n bodySmall: { element: 'p', styles: textStyles.bodySmall },\r\n label: { element: 'span', styles: textStyles.label },\r\n caption: { element: 'span', styles: textStyles.caption },\r\n overline: { element: 'span', styles: textStyles.overline },\r\n code: { element: 'code', styles: textStyles.code },\r\n}\r\n\r\nfunction buildTextStyles(props: TextOwnProps): CSSProperties {\r\n const variant = props.variant ?? 'body'\r\n const baseStyles = variantMap[variant].styles\r\n\r\n const styles: CSSProperties = {\r\n fontFamily: baseStyles.fontFamily,\r\n fontSize: props.size ? fontSizes[props.size] : baseStyles.fontSize,\r\n fontWeight: props.weight ? fontWeights[props.weight] : baseStyles.fontWeight,\r\n lineHeight: props.leading ? lineHeights[props.leading] : baseStyles.lineHeight,\r\n letterSpacing: baseStyles.letterSpacing,\r\n }\r\n\r\n if ('textTransform' in baseStyles) {\r\n styles.textTransform = baseStyles.textTransform\r\n }\r\n\r\n if (props.align) styles.textAlign = props.align\r\n if (props.color) styles.color = props.color\r\n\r\n if (props.truncate) {\r\n styles.overflow = 'hidden'\r\n styles.textOverflow = 'ellipsis'\r\n styles.whiteSpace = 'nowrap'\r\n }\r\n\r\n if (props.lineClamp) {\r\n styles.display = '-webkit-box'\r\n styles.WebkitLineClamp = props.lineClamp\r\n styles.WebkitBoxOrient = 'vertical'\r\n styles.overflow = 'hidden'\r\n }\r\n\r\n return styles\r\n}\r\n\r\nconst TextInner = <E extends ElementType = 'p'>(\r\n { as, variant = 'body', className, style, children, testId, ...props }: TextProps<E>,\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n const Component = as || variantMap[variant].element\r\n const builtTextStyles = buildTextStyles({ variant, ...props } as TextOwnProps)\r\n\r\n // Remove custom props before spreading\r\n const {\r\n size: _size,\r\n weight: _weight,\r\n leading: _leading,\r\n align: _align,\r\n color: _color,\r\n truncate: _truncate,\r\n lineClamp: _lineClamp,\r\n ...rest\r\n } = props\r\n\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cx('brycks-text', `brycks-text--${variant}`, className)}\r\n style={{ ...builtTextStyles, ...style }}\r\n data-testid={testId}\r\n {...rest}\r\n >\r\n {children}\r\n </Component>\r\n )\r\n}\r\n\r\nexport const Text = forwardRef(TextInner) as TextComponent\r\n\r\nText.displayName = 'Text'\r\n\r\n/** Monospace code text shorthand */\r\nconst CodeInner = (\r\n props: Omit<TextProps<'code'>, 'variant'>,\r\n ref: React.ForwardedRef<HTMLElement>\r\n) => {\r\n return (\r\n <Text\r\n {...props}\r\n ref={ref as ComponentPropsWithRef<'p'>['ref']}\r\n variant=\"code\"\r\n style={{\r\n backgroundColor: 'var(--brycks-background-muted)',\r\n padding: `${spacing[0.5]}px ${spacing[1.5]}px`,\r\n borderRadius: 'var(--brycks-radius-sm)',\r\n ...props.style,\r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport const Code = forwardRef(CodeInner) as TextComponent\r\n\r\nCode.displayName = 'Code'\r\n","/**\r\n * Heading Component\r\n *\r\n * Semantic heading component with consistent typography styles.\r\n * Maps heading levels (h1-h6) to appropriate visual styles.\r\n */\r\n\r\nimport React, {\r\n forwardRef,\r\n type ElementType,\r\n type ComponentPropsWithRef,\r\n type CSSProperties,\r\n type ReactNode,\r\n type ComponentPropsWithoutRef,\r\n} from 'react'\r\nimport {\r\n fontWeights,\r\n textStyles,\r\n type FontWeight,\r\n} from '../../../design-system/tokens/typography'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6\r\n\r\nexport interface HeadingOwnProps {\r\n /** The element type to render */\r\n as?: ElementType\r\n /** Heading level (1-6) - determines semantic element and default styling */\r\n level?: HeadingLevel\r\n /** Visual size override - use a different visual style than the semantic level */\r\n size?: HeadingLevel | 'display' | 'displayLarge' | 'displaySmall'\r\n /** Font weight override */\r\n weight?: FontWeight\r\n /** Text alignment */\r\n align?: CSSProperties['textAlign']\r\n /** Text color (CSS variable or direct value) */\r\n color?: string\r\n /** Whether text should truncate with ellipsis */\r\n truncate?: boolean\r\n /** Custom class name */\r\n className?: string\r\n /** Custom inline styles */\r\n style?: CSSProperties\r\n /** Children */\r\n children?: ReactNode\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nexport type HeadingProps<E extends ElementType = 'h2'> = HeadingOwnProps &\r\n Omit<ComponentPropsWithoutRef<E>, keyof HeadingOwnProps>\r\n\r\ninterface HeadingComponent {\r\n <E extends ElementType = 'h2'>(\r\n props: HeadingProps<E> & { ref?: ComponentPropsWithRef<E>['ref'] }\r\n ): JSX.Element | null\r\n displayName?: string\r\n}\r\n\r\ntype StyleKey =\r\n | 'h1'\r\n | 'h2'\r\n | 'h3'\r\n | 'h4'\r\n | 'h5'\r\n | 'h6'\r\n | 'displayLarge'\r\n | 'displayMedium'\r\n | 'displaySmall'\r\n\r\nconst sizeToStyleMap: Record<NonNullable<HeadingOwnProps['size']>, StyleKey> = {\r\n 1: 'h1',\r\n 2: 'h2',\r\n 3: 'h3',\r\n 4: 'h4',\r\n 5: 'h5',\r\n 6: 'h6',\r\n display: 'displayMedium',\r\n displayLarge: 'displayLarge',\r\n displaySmall: 'displaySmall',\r\n}\r\n\r\nfunction buildHeadingStyles(props: HeadingOwnProps): CSSProperties {\r\n const level = props.level ?? 2\r\n const visualSize = props.size ?? level\r\n const styleKey = sizeToStyleMap[visualSize]\r\n const baseStyles = textStyles[styleKey]\r\n\r\n const styles: CSSProperties = {\r\n fontFamily: baseStyles.fontFamily,\r\n fontSize: baseStyles.fontSize,\r\n fontWeight: props.weight ? fontWeights[props.weight] : baseStyles.fontWeight,\r\n lineHeight: baseStyles.lineHeight,\r\n letterSpacing: baseStyles.letterSpacing,\r\n margin: 0,\r\n }\r\n\r\n if (props.align) styles.textAlign = props.align\r\n if (props.color) styles.color = props.color\r\n\r\n if (props.truncate) {\r\n styles.overflow = 'hidden'\r\n styles.textOverflow = 'ellipsis'\r\n styles.whiteSpace = 'nowrap'\r\n }\r\n\r\n return styles\r\n}\r\n\r\nconst HeadingInner = <E extends ElementType = 'h2'>(\r\n { as, level = 2, className, style, children, testId, ...props }: HeadingProps<E>,\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n const Component = as || (`h${level}` as ElementType)\r\n const headingStyles = buildHeadingStyles({ level, ...props } as HeadingOwnProps)\r\n\r\n // Remove custom props before spreading\r\n const {\r\n size: _size,\r\n weight: _weight,\r\n align: _align,\r\n color: _color,\r\n truncate: _truncate,\r\n ...rest\r\n } = props\r\n\r\n return (\r\n <Component\r\n ref={ref}\r\n className={cx('brycks-heading', `brycks-heading--${level}`, className)}\r\n style={{ ...headingStyles, ...style }}\r\n data-testid={testId}\r\n {...rest}\r\n >\r\n {children}\r\n </Component>\r\n )\r\n}\r\n\r\nexport const Heading = forwardRef(HeadingInner) as HeadingComponent\r\n\r\nHeading.displayName = 'Heading'\r\n\r\n/** Display heading for hero sections */\r\nconst DisplayInner = <E extends ElementType = 'h1'>(\r\n { size = 'display', ...props }: HeadingProps<E>,\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n return <Heading ref={ref as React.ForwardedRef<HTMLHeadingElement>} level={1} size={size} {...(props as HeadingProps<'h1'>)} />\r\n}\r\n\r\nexport const Display = forwardRef(DisplayInner) as HeadingComponent\r\n\r\nDisplay.displayName = 'Display'\r\n","/**\r\n * Button Component Styles\r\n *\r\n * Apple-inspired button styles with smooth transitions and tactile feedback.\r\n * All values derive from the design system - NO hardcoded values.\r\n *\r\n * @module components/primitives/Button\r\n */\r\n\r\nimport type { CSSProperties } from 'react'\r\nimport type { ButtonVariant, ButtonIntent, ButtonSize } from './Button.types'\r\nimport {\r\n componentHeights,\r\n componentPaddingX,\r\n componentGap,\r\n iconSizes,\r\n componentFontSize,\r\n componentFontWeight,\r\n componentLineHeight,\r\n transition,\r\n stateOpacity,\r\n scale,\r\n} from '../../../design-system'\r\n\r\n/** Size dimension values - derived from design system primitives */\r\nconst sizeConfig: Record<\r\n ButtonSize,\r\n {\r\n height: number\r\n paddingX: number\r\n fontSize: number\r\n iconSize: number\r\n gap: number\r\n radius: string\r\n }\r\n> = {\r\n xs: {\r\n height: componentHeights.xs,\r\n paddingX: componentPaddingX.xs,\r\n fontSize: componentFontSize.xs,\r\n iconSize: iconSizes.xs,\r\n gap: componentGap.xs,\r\n radius: 'var(--brycks-radius-md)',\r\n },\r\n sm: {\r\n height: componentHeights.sm,\r\n paddingX: componentPaddingX.sm,\r\n fontSize: componentFontSize.sm,\r\n iconSize: iconSizes.sm,\r\n gap: componentGap.sm,\r\n radius: 'var(--brycks-radius-md)',\r\n },\r\n md: {\r\n height: componentHeights.md,\r\n paddingX: componentPaddingX.md,\r\n fontSize: componentFontSize.md,\r\n iconSize: iconSizes.md,\r\n gap: componentGap.md,\r\n radius: 'var(--brycks-radius-default)',\r\n },\r\n lg: {\r\n height: componentHeights.lg,\r\n paddingX: componentPaddingX.lg,\r\n fontSize: componentFontSize.lg,\r\n iconSize: iconSizes.lg,\r\n gap: componentGap.md,\r\n radius: 'var(--brycks-radius-lg)',\r\n },\r\n xl: {\r\n height: componentHeights.xl,\r\n paddingX: componentPaddingX.xl,\r\n fontSize: componentFontSize.xl,\r\n iconSize: iconSizes.xl,\r\n gap: componentGap.lg,\r\n radius: 'var(--brycks-radius-xl)',\r\n },\r\n}\r\n\r\n/** Color values for each intent */\r\nconst intentColors: Record<\r\n ButtonIntent,\r\n {\r\n solid: { bg: string; hoverBg: string; activeBg: string; text: string }\r\n outline: { border: string; hoverBg: string; text: string }\r\n ghost: { hoverBg: string; text: string }\r\n soft: { bg: string; hoverBg: string; text: string }\r\n link: { text: string; hoverText: string }\r\n }\r\n> = {\r\n primary: {\r\n solid: {\r\n bg: 'var(--brycks-primary-default)',\r\n hoverBg: 'var(--brycks-primary-hover)',\r\n activeBg: 'var(--brycks-primary-active)',\r\n text: 'var(--brycks-primary-foreground)',\r\n },\r\n outline: {\r\n border: 'var(--brycks-primary-default)',\r\n hoverBg: 'var(--brycks-primary-muted)',\r\n text: 'var(--brycks-primary-default)',\r\n },\r\n ghost: {\r\n hoverBg: 'var(--brycks-primary-muted)',\r\n text: 'var(--brycks-primary-default)',\r\n },\r\n soft: {\r\n bg: 'var(--brycks-primary-muted)',\r\n hoverBg: 'var(--brycks-primary-soft-hover)',\r\n text: 'var(--brycks-primary-default)',\r\n },\r\n link: {\r\n text: 'var(--brycks-primary-default)',\r\n hoverText: 'var(--brycks-primary-hover)',\r\n },\r\n },\r\n accent: {\r\n solid: {\r\n bg: 'var(--brycks-accent-default)',\r\n hoverBg: 'var(--brycks-accent-hover)',\r\n activeBg: 'var(--brycks-accent-active)',\r\n text: 'var(--brycks-accent-foreground)',\r\n },\r\n outline: {\r\n border: 'var(--brycks-accent-default)',\r\n hoverBg: 'var(--brycks-accent-muted)',\r\n text: 'var(--brycks-accent-default)',\r\n },\r\n ghost: {\r\n hoverBg: 'var(--brycks-accent-muted)',\r\n text: 'var(--brycks-accent-default)',\r\n },\r\n soft: {\r\n bg: 'var(--brycks-accent-muted)',\r\n hoverBg: 'var(--brycks-accent-soft-hover)',\r\n text: 'var(--brycks-accent-default)',\r\n },\r\n link: {\r\n text: 'var(--brycks-accent-default)',\r\n hoverText: 'var(--brycks-accent-hover)',\r\n },\r\n },\r\n neutral: {\r\n solid: {\r\n bg: 'var(--brycks-foreground-default)',\r\n hoverBg: 'var(--brycks-foreground-muted)',\r\n activeBg: 'var(--brycks-foreground-subtle)',\r\n text: 'var(--brycks-background-app)',\r\n },\r\n outline: {\r\n border: 'var(--brycks-border-strong)',\r\n hoverBg: 'var(--brycks-background-muted)',\r\n text: 'var(--brycks-foreground-default)',\r\n },\r\n ghost: {\r\n hoverBg: 'var(--brycks-background-muted)',\r\n text: 'var(--brycks-foreground-default)',\r\n },\r\n soft: {\r\n bg: 'var(--brycks-background-muted)',\r\n hoverBg: 'var(--brycks-background-subtle)',\r\n text: 'var(--brycks-foreground-default)',\r\n },\r\n link: {\r\n text: 'var(--brycks-foreground-default)',\r\n hoverText: 'var(--brycks-foreground-muted)',\r\n },\r\n },\r\n success: {\r\n solid: {\r\n bg: 'var(--brycks-success-default)',\r\n hoverBg: 'var(--brycks-success-hover)',\r\n activeBg: 'var(--brycks-success-hover)',\r\n text: 'var(--brycks-success-foreground)',\r\n },\r\n outline: {\r\n border: 'var(--brycks-success-default)',\r\n hoverBg: 'var(--brycks-success-muted)',\r\n text: 'var(--brycks-success-default)',\r\n },\r\n ghost: {\r\n hoverBg: 'var(--brycks-success-muted)',\r\n text: 'var(--brycks-success-default)',\r\n },\r\n soft: {\r\n bg: 'var(--brycks-success-muted)',\r\n hoverBg: 'var(--brycks-success-soft-hover)',\r\n text: 'var(--brycks-success-default)',\r\n },\r\n link: {\r\n text: 'var(--brycks-success-default)',\r\n hoverText: 'var(--brycks-success-hover)',\r\n },\r\n },\r\n warning: {\r\n solid: {\r\n bg: 'var(--brycks-warning-default)',\r\n hoverBg: 'var(--brycks-warning-hover)',\r\n activeBg: 'var(--brycks-warning-hover)',\r\n text: 'var(--brycks-warning-foreground)',\r\n },\r\n outline: {\r\n border: 'var(--brycks-warning-default)',\r\n hoverBg: 'var(--brycks-warning-muted)',\r\n text: 'var(--brycks-warning-default)',\r\n },\r\n ghost: {\r\n hoverBg: 'var(--brycks-warning-muted)',\r\n text: 'var(--brycks-warning-default)',\r\n },\r\n soft: {\r\n bg: 'var(--brycks-warning-muted)',\r\n hoverBg: 'var(--brycks-warning-soft-hover)',\r\n text: 'var(--brycks-warning-default)',\r\n },\r\n link: {\r\n text: 'var(--brycks-warning-default)',\r\n hoverText: 'var(--brycks-warning-hover)',\r\n },\r\n },\r\n error: {\r\n solid: {\r\n bg: 'var(--brycks-error-default)',\r\n hoverBg: 'var(--brycks-error-hover)',\r\n activeBg: 'var(--brycks-error-hover)',\r\n text: 'var(--brycks-error-foreground)',\r\n },\r\n outline: {\r\n border: 'var(--brycks-error-default)',\r\n hoverBg: 'var(--brycks-error-muted)',\r\n text: 'var(--brycks-error-default)',\r\n },\r\n ghost: {\r\n hoverBg: 'var(--brycks-error-muted)',\r\n text: 'var(--brycks-error-default)',\r\n },\r\n soft: {\r\n bg: 'var(--brycks-error-muted)',\r\n hoverBg: 'var(--brycks-error-soft-hover)',\r\n text: 'var(--brycks-error-default)',\r\n },\r\n link: {\r\n text: 'var(--brycks-error-default)',\r\n hoverText: 'var(--brycks-error-hover)',\r\n },\r\n },\r\n}\r\n\r\nexport interface ButtonStyleProps {\r\n variant: ButtonVariant\r\n intent: ButtonIntent\r\n size: ButtonSize\r\n fullWidth?: boolean\r\n isIconOnly?: boolean\r\n isDisabled?: boolean\r\n isLoading?: boolean\r\n}\r\n\r\nexport function getButtonStyles(props: ButtonStyleProps): {\r\n base: CSSProperties\r\n hover: CSSProperties\r\n active: CSSProperties\r\n disabled: CSSProperties\r\n loading: CSSProperties\r\n} {\r\n const { variant, intent, size, fullWidth, isIconOnly } = props\r\n const sizeValues = sizeConfig[size]\r\n const colors = intentColors[intent][variant]\r\n\r\n // Base styles common to all buttons\r\n const base: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: sizeValues.gap,\r\n height: sizeValues.height,\r\n minWidth: isIconOnly ? sizeValues.height : undefined,\r\n width: fullWidth ? '100%' : undefined,\r\n padding: isIconOnly ? 0 : `0 ${sizeValues.paddingX}px`,\r\n fontSize: sizeValues.fontSize,\r\n fontWeight: componentFontWeight.medium,\r\n fontFamily: 'var(--brycks-font-sans)',\r\n lineHeight: componentLineHeight.none,\r\n borderRadius: sizeValues.radius,\r\n border: 'none',\r\n outline: 'none',\r\n cursor: 'pointer',\r\n userSelect: 'none',\r\n textDecoration: 'none',\r\n transition: transition.quick,\r\n WebkitTapHighlightColor: 'transparent',\r\n }\r\n\r\n // Apply variant-specific base styles\r\n switch (variant) {\r\n case 'solid': {\r\n const solidColors = colors as { bg: string; hoverBg: string; activeBg: string; text: string }\r\n Object.assign(base, {\r\n backgroundColor: solidColors.bg,\r\n color: solidColors.text,\r\n boxShadow: 'var(--brycks-shadow-xs)',\r\n })\r\n break\r\n }\r\n\r\n case 'outline': {\r\n const outlineColors = colors as { border: string; hoverBg: string; text: string }\r\n Object.assign(base, {\r\n backgroundColor: 'transparent',\r\n color: outlineColors.text,\r\n border: `1px solid ${outlineColors.border}`,\r\n })\r\n break\r\n }\r\n\r\n case 'ghost': {\r\n const ghostColors = colors as { hoverBg: string; text: string }\r\n Object.assign(base, {\r\n backgroundColor: 'transparent',\r\n color: ghostColors.text,\r\n })\r\n break\r\n }\r\n\r\n case 'soft': {\r\n const softColors = colors as { bg: string; hoverBg: string; text: string }\r\n Object.assign(base, {\r\n backgroundColor: softColors.bg,\r\n color: softColors.text,\r\n })\r\n break\r\n }\r\n\r\n case 'link': {\r\n const linkColors = colors as { text: string; hoverText: string }\r\n Object.assign(base, {\r\n backgroundColor: 'transparent',\r\n color: linkColors.text,\r\n height: 'auto',\r\n padding: 0,\r\n borderRadius: 0,\r\n })\r\n break\r\n }\r\n }\r\n\r\n // Hover styles\r\n const hover: CSSProperties = {}\r\n switch (variant) {\r\n case 'solid': {\r\n const solidColors = colors as { bg: string; hoverBg: string; activeBg: string; text: string }\r\n hover.backgroundColor = solidColors.hoverBg\r\n hover.boxShadow = 'var(--brycks-shadow-sm)'\r\n break\r\n }\r\n case 'outline': {\r\n const outlineColors = colors as { border: string; hoverBg: string; text: string }\r\n hover.backgroundColor = outlineColors.hoverBg\r\n break\r\n }\r\n case 'ghost': {\r\n const ghostColors = colors as { hoverBg: string; text: string }\r\n hover.backgroundColor = ghostColors.hoverBg\r\n break\r\n }\r\n case 'soft': {\r\n const softColors = colors as { bg: string; hoverBg: string; text: string }\r\n hover.backgroundColor = softColors.hoverBg\r\n break\r\n }\r\n case 'link': {\r\n const linkColors = colors as { text: string; hoverText: string }\r\n hover.color = linkColors.hoverText\r\n hover.textDecoration = 'underline'\r\n break\r\n }\r\n }\r\n\r\n // Active/pressed styles\r\n const active: CSSProperties = {\r\n transform: variant !== 'link' ? `scale(${scale.pressed})` : undefined,\r\n }\r\n if (variant === 'solid') {\r\n const solidColors = colors as { bg: string; hoverBg: string; activeBg: string; text: string }\r\n active.backgroundColor = solidColors.activeBg\r\n active.boxShadow = 'var(--brycks-shadow-xs)'\r\n }\r\n\r\n // Disabled styles\r\n const disabled: CSSProperties = {\r\n opacity: stateOpacity.disabled,\r\n cursor: 'not-allowed',\r\n pointerEvents: 'none',\r\n }\r\n\r\n // Loading styles\r\n const loading: CSSProperties = {\r\n cursor: 'wait',\r\n pointerEvents: 'none',\r\n }\r\n\r\n return { base, hover, active, disabled, loading }\r\n}\r\n\r\nexport { sizeConfig }\r\n","/**\r\n * Button Component\r\n *\r\n * A versatile, polymorphic button component with multiple variants,\r\n * sizes, and states. Designed with Apple-inspired aesthetics -\r\n * smooth transitions, tactile feedback, and refined visual details.\r\n */\r\n\r\nimport React, {\r\n forwardRef,\r\n useState,\r\n type ElementType,\r\n type ComponentPropsWithRef,\r\n type CSSProperties,\r\n} from 'react'\r\nimport type { ButtonProps } from './Button.types'\r\nimport { getButtonStyles, sizeConfig } from './Button.styles'\r\nimport { cx } from '../../../utils/styles'\r\n\r\ninterface ButtonComponent {\r\n <E extends ElementType = 'button'>(\r\n props: ButtonProps<E> & { ref?: ComponentPropsWithRef<E>['ref'] }\r\n ): JSX.Element | null\r\n displayName?: string\r\n}\r\n\r\n/** Loading spinner component */\r\nfunction LoadingSpinner({ size }: { size: number }) {\r\n return (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n style={{\r\n animation: 'brycks-spin 1s linear infinite',\r\n }}\r\n >\r\n <style>\r\n {`\r\n @keyframes brycks-spin {\r\n from { transform: rotate(0deg); }\r\n to { transform: rotate(360deg); }\r\n }\r\n `}\r\n </style>\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray=\"31.4 31.4\"\r\n opacity=\"0.25\"\r\n />\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeDasharray=\"31.4 31.4\"\r\n strokeDashoffset=\"62.8\"\r\n style={{ transform: 'rotate(-90deg)', transformOrigin: 'center' }}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nconst ButtonInner = <E extends ElementType = 'button'>(\r\n {\r\n as,\r\n variant = 'solid',\r\n intent = 'primary',\r\n size = 'md',\r\n fullWidth,\r\n isLoading,\r\n isDisabled,\r\n leftIcon,\r\n rightIcon,\r\n isIconOnly,\r\n className,\r\n style,\r\n children,\r\n testId,\r\n onMouseEnter,\r\n onMouseLeave,\r\n onMouseDown,\r\n onMouseUp,\r\n ...props\r\n }: ButtonProps<E>,\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n const Component = (as || 'button') as ElementType\r\n const [isHovered, setIsHovered] = useState(false)\r\n const [isPressed, setIsPressed] = useState(false)\r\n\r\n const disabled = isDisabled || isLoading\r\n\r\n const styles = getButtonStyles({\r\n variant,\r\n intent,\r\n size,\r\n fullWidth,\r\n isIconOnly,\r\n isDisabled: disabled,\r\n isLoading,\r\n })\r\n\r\n // Build final style object\r\n const computedStyle: CSSProperties = {\r\n ...styles.base,\r\n ...(isHovered && !disabled ? styles.hover : {}),\r\n ...(isPressed && !disabled ? styles.active : {}),\r\n ...(disabled ? styles.disabled : {}),\r\n ...(isLoading ? styles.loading : {}),\r\n ...style,\r\n }\r\n\r\n const sizeValues = sizeConfig[size]\r\n\r\n const handleMouseEnter = (e: React.MouseEvent) => {\r\n setIsHovered(true)\r\n onMouseEnter?.(e as never)\r\n }\r\n\r\n const handleMouseLeave = (e: React.MouseEvent) => {\r\n setIsHovered(false)\r\n setIsPressed(false)\r\n onMouseLeave?.(e as never)\r\n }\r\n\r\n const handleMouseDown = (e: React.MouseEvent) => {\r\n setIsPressed(true)\r\n onMouseDown?.(e as never)\r\n }\r\n\r\n const handleMouseUp = (e: React.MouseEvent) => {\r\n setIsPressed(false)\r\n onMouseUp?.(e as never)\r\n }\r\n\r\n // Build class name\r\n const buttonClassName = cx(\r\n 'brycks-button',\r\n `brycks-button--${variant}`,\r\n `brycks-button--${intent}`,\r\n `brycks-button--${size}`,\r\n fullWidth && 'brycks-button--full-width',\r\n isIconOnly && 'brycks-button--icon-only',\r\n isLoading && 'brycks-button--loading',\r\n disabled && 'brycks-button--disabled',\r\n className\r\n )\r\n\r\n const isButton = Component === 'button' || as === undefined\r\n const buttonProps = isButton\r\n ? {\r\n type: (props as { type?: string }).type ?? 'button',\r\n disabled,\r\n }\r\n : {\r\n 'aria-disabled': disabled || undefined,\r\n role: 'button',\r\n tabIndex: disabled ? -1 : 0,\r\n }\r\n\r\n return (\r\n <Component\r\n ref={ref}\r\n className={buttonClassName}\r\n style={computedStyle}\r\n data-testid={testId}\r\n onMouseEnter={handleMouseEnter}\r\n onMouseLeave={handleMouseLeave}\r\n onMouseDown={handleMouseDown}\r\n onMouseUp={handleMouseUp}\r\n {...buttonProps}\r\n {...props}\r\n >\r\n {isLoading && (\r\n <span\r\n style={{\r\n display: 'inline-flex',\r\n position: isIconOnly ? 'absolute' : 'relative',\r\n }}\r\n >\r\n <LoadingSpinner size={sizeValues.iconSize} />\r\n </span>\r\n )}\r\n\r\n {!isLoading && leftIcon && (\r\n <span\r\n style={{\r\n display: 'inline-flex',\r\n width: sizeValues.iconSize,\r\n height: sizeValues.iconSize,\r\n }}\r\n >\r\n {leftIcon}\r\n </span>\r\n )}\r\n\r\n {!isIconOnly && (\r\n <span\r\n style={{\r\n opacity: isLoading && !isIconOnly ? 0.5 : 1,\r\n }}\r\n >\r\n {children}\r\n </span>\r\n )}\r\n\r\n {!isLoading && rightIcon && (\r\n <span\r\n style={{\r\n display: 'inline-flex',\r\n width: sizeValues.iconSize,\r\n height: sizeValues.iconSize,\r\n }}\r\n >\r\n {rightIcon}\r\n </span>\r\n )}\r\n\r\n {isIconOnly && !isLoading && children}\r\n </Component>\r\n )\r\n}\r\n\r\nexport const Button = forwardRef(ButtonInner) as ButtonComponent\r\n\r\nButton.displayName = 'Button'\r\n\r\n/** Icon button shorthand */\r\nconst IconButtonInner = <E extends ElementType = 'button'>(\r\n props: Omit<ButtonProps<E>, 'isIconOnly'>,\r\n ref: React.ForwardedRef<Element>\r\n) => {\r\n return <Button ref={ref as React.ForwardedRef<HTMLButtonElement>} isIconOnly {...(props as ButtonProps<'button'>)} />\r\n}\r\n\r\nexport const IconButton = forwardRef(IconButtonInner) as ButtonComponent\r\n\r\nIconButton.displayName = 'IconButton'\r\n","/**\r\n * Input Component\r\n *\r\n * Base input component with Apple-inspired styling.\r\n * Clean, minimal design with smooth focus transitions.\r\n *\r\n * @module components/form/Input\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n useState,\r\n type CSSProperties,\r\n type InputHTMLAttributes,\r\n type ReactNode,\r\n} from 'react'\r\nimport {\r\n componentHeights,\r\n componentPaddingX,\r\n componentGap,\r\n componentFontSize,\r\n focusRing,\r\n transition,\r\n stateOpacity,\r\n} from '../../../design-system'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type InputSize = 'sm' | 'md' | 'lg'\r\nexport type InputVariant = 'outline' | 'filled' | 'flushed'\r\n\r\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\r\n /** Input size */\r\n size?: InputSize\r\n /** Visual variant */\r\n variant?: InputVariant\r\n /** Error state */\r\n isInvalid?: boolean\r\n /** Left element/icon */\r\n leftElement?: ReactNode\r\n /** Right element/icon */\r\n rightElement?: ReactNode\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\n/** Size configuration derived from design tokens */\r\nconst sizeConfig: Record<InputSize, { height: number; fontSize: number; paddingX: number; radius: string }> = {\r\n sm: {\r\n height: componentHeights.sm,\r\n fontSize: componentFontSize.sm,\r\n paddingX: componentPaddingX.sm,\r\n radius: 'var(--brycks-radius-md)',\r\n },\r\n md: {\r\n height: componentHeights.md,\r\n fontSize: componentFontSize.md,\r\n paddingX: componentPaddingX.md,\r\n radius: 'var(--brycks-radius-default)',\r\n },\r\n lg: {\r\n height: componentHeights.lg,\r\n fontSize: componentFontSize.lg,\r\n paddingX: componentPaddingX.lg,\r\n radius: 'var(--brycks-radius-lg)',\r\n },\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\r\n {\r\n size = 'md',\r\n variant = 'outline',\r\n isInvalid,\r\n leftElement,\r\n rightElement,\r\n className,\r\n style,\r\n testId,\r\n disabled,\r\n onFocus,\r\n onBlur,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const [isFocused, setIsFocused] = useState(false)\r\n\r\n const config = sizeConfig[size]\r\n\r\n const getWrapperStyles = (): CSSProperties => {\r\n const base: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: '100%',\r\n position: 'relative',\r\n height: config.height,\r\n borderRadius: config.radius,\r\n transition: transition.default,\r\n }\r\n\r\n switch (variant) {\r\n case 'outline':\r\n Object.assign(base, {\r\n backgroundColor: 'var(--brycks-background-app)',\r\n border: `1px solid ${\r\n isInvalid\r\n ? 'var(--brycks-error-default)'\r\n : isFocused\r\n ? 'var(--brycks-border-focus)'\r\n : 'var(--brycks-border-default)'\r\n }`,\r\n boxShadow: isFocused\r\n ? isInvalid\r\n ? focusRing.error\r\n : focusRing.default\r\n : focusRing.none,\r\n })\r\n break\r\n\r\n case 'filled':\r\n Object.assign(base, {\r\n backgroundColor: 'var(--brycks-background-muted)',\r\n border: '1px solid transparent',\r\n borderColor: isInvalid\r\n ? 'var(--brycks-error-default)'\r\n : isFocused\r\n ? 'var(--brycks-border-focus)'\r\n : 'transparent',\r\n })\r\n break\r\n\r\n case 'flushed':\r\n Object.assign(base, {\r\n backgroundColor: 'transparent',\r\n borderRadius: 0,\r\n borderBottom: `2px solid ${\r\n isInvalid\r\n ? 'var(--brycks-error-default)'\r\n : isFocused\r\n ? 'var(--brycks-border-focus)'\r\n : 'var(--brycks-border-default)'\r\n }`,\r\n })\r\n break\r\n }\r\n\r\n if (disabled) {\r\n Object.assign(base, {\r\n opacity: stateOpacity.disabled,\r\n cursor: 'not-allowed',\r\n })\r\n }\r\n\r\n return base\r\n }\r\n\r\n const inputStyles: CSSProperties = {\r\n width: '100%',\r\n height: config.height,\r\n fontFamily: 'var(--brycks-font-sans)',\r\n fontSize: config.fontSize,\r\n color: 'var(--brycks-foreground-default)',\r\n backgroundColor: 'transparent',\r\n border: 'none',\r\n outline: 'none',\r\n borderRadius: config.radius,\r\n paddingLeft: leftElement ? componentGap.md : config.paddingX,\r\n paddingRight: rightElement ? componentGap.md : config.paddingX,\r\n cursor: disabled ? 'not-allowed' : 'text',\r\n transition: transition.default,\r\n }\r\n\r\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\r\n setIsFocused(true)\r\n onFocus?.(e)\r\n }\r\n\r\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\r\n setIsFocused(false)\r\n onBlur?.(e)\r\n }\r\n\r\n const elementStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: 'var(--brycks-foreground-muted)',\r\n flexShrink: 0,\r\n }\r\n\r\n return (\r\n <div\r\n className={cx(\r\n 'brycks-input-wrapper',\r\n `brycks-input-wrapper--${variant}`,\r\n `brycks-input-wrapper--${size}`,\r\n isInvalid && 'brycks-input-wrapper--invalid',\r\n disabled && 'brycks-input-wrapper--disabled',\r\n className\r\n )}\r\n style={{ ...getWrapperStyles(), ...style }}\r\n >\r\n {leftElement && (\r\n <span\r\n className=\"brycks-input-left-element\"\r\n style={{ ...elementStyle, paddingLeft: config.paddingX }}\r\n >\r\n {leftElement}\r\n </span>\r\n )}\r\n\r\n <input\r\n ref={ref}\r\n className=\"brycks-input\"\r\n style={inputStyles}\r\n disabled={disabled}\r\n aria-invalid={isInvalid}\r\n data-testid={testId}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n {...props}\r\n />\r\n\r\n {rightElement && (\r\n <span\r\n className=\"brycks-input-right-element\"\r\n style={{ ...elementStyle, paddingRight: config.paddingX }}\r\n >\r\n {rightElement}\r\n </span>\r\n )}\r\n </div>\r\n )\r\n})\r\n\r\nInput.displayName = 'Input'\r\n","/**\r\n * TextField Component\r\n *\r\n * Complete text input field with label, helper text, and error handling.\r\n * Combines Input with proper accessibility and form structure.\r\n */\r\n\r\nimport { forwardRef, useId, type ReactNode } from 'react'\r\nimport { Input, type InputProps } from '../Input'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport interface TextFieldProps extends InputProps {\r\n /** Field label */\r\n label?: ReactNode\r\n /** Helper text below the input */\r\n helperText?: ReactNode\r\n /** Error message (also sets isInvalid) */\r\n errorMessage?: ReactNode\r\n /** Whether the field is required */\r\n isRequired?: boolean\r\n /** Whether to hide the label visually (still accessible) */\r\n hideLabel?: boolean\r\n}\r\n\r\nexport const TextField = forwardRef<HTMLInputElement, TextFieldProps>(function TextField(\r\n {\r\n label,\r\n helperText,\r\n errorMessage,\r\n isRequired,\r\n hideLabel,\r\n isInvalid,\r\n id,\r\n className,\r\n testId,\r\n ...inputProps\r\n },\r\n ref\r\n) {\r\n const generatedId = useId()\r\n const fieldId = id ?? generatedId\r\n const helperId = `${fieldId}-helper`\r\n const errorId = `${fieldId}-error`\r\n\r\n const hasError = Boolean(errorMessage) || isInvalid\r\n const describedBy = [hasError && errorId, helperText && helperId].filter(Boolean).join(' ')\r\n\r\n const labelStyle: React.CSSProperties = {\r\n display: 'block',\r\n marginBottom: 6,\r\n fontSize: 13,\r\n fontWeight: 500,\r\n color: 'var(--brycks-foreground-default)',\r\n ...(hideLabel && {\r\n position: 'absolute',\r\n width: 1,\r\n height: 1,\r\n padding: 0,\r\n margin: -1,\r\n overflow: 'hidden',\r\n clip: 'rect(0, 0, 0, 0)',\r\n whiteSpace: 'nowrap',\r\n border: 0,\r\n }),\r\n }\r\n\r\n const helperStyle: React.CSSProperties = {\r\n display: 'block',\r\n marginTop: 6,\r\n fontSize: 12,\r\n lineHeight: 1.5,\r\n color: 'var(--brycks-foreground-muted)',\r\n }\r\n\r\n const errorStyle: React.CSSProperties = {\r\n ...helperStyle,\r\n color: 'var(--brycks-error-default)',\r\n }\r\n\r\n return (\r\n <div\r\n className={cx(\r\n 'brycks-text-field',\r\n hasError && 'brycks-text-field--error',\r\n className\r\n )}\r\n data-testid={testId}\r\n >\r\n {label && (\r\n <label htmlFor={fieldId} style={labelStyle}>\r\n {label}\r\n {isRequired && (\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n color: 'var(--brycks-error-default)',\r\n marginLeft: 2,\r\n }}\r\n >\r\n *\r\n </span>\r\n )}\r\n </label>\r\n )}\r\n\r\n <Input\r\n ref={ref}\r\n id={fieldId}\r\n isInvalid={hasError}\r\n aria-describedby={describedBy || undefined}\r\n aria-required={isRequired}\r\n {...inputProps}\r\n />\r\n\r\n {hasError && errorMessage && (\r\n <span id={errorId} role=\"alert\" style={errorStyle}>\r\n {errorMessage}\r\n </span>\r\n )}\r\n\r\n {!hasError && helperText && (\r\n <span id={helperId} style={helperStyle}>\r\n {helperText}\r\n </span>\r\n )}\r\n </div>\r\n )\r\n})\r\n\r\nTextField.displayName = 'TextField'\r\n","/**\r\n * Select Component\r\n *\r\n * Native select with custom styling for cross-browser consistency.\r\n * Maintains accessibility while providing Apple-inspired visuals.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n useState,\r\n type CSSProperties,\r\n type SelectHTMLAttributes,\r\n type ReactNode,\r\n} from 'react'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type SelectSize = 'sm' | 'md' | 'lg'\r\nexport type SelectVariant = 'outline' | 'filled'\r\n\r\nexport interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size'> {\r\n /** Select size */\r\n size?: SelectSize\r\n /** Visual variant */\r\n variant?: SelectVariant\r\n /** Error state */\r\n isInvalid?: boolean\r\n /** Placeholder option */\r\n placeholder?: string\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n /** Children (option elements) */\r\n children?: ReactNode\r\n}\r\n\r\nconst sizeStyles: Record<SelectSize, { height: number; fontSize: number; padding: number }> = {\r\n sm: { height: 32, fontSize: 13, padding: 10 },\r\n md: { height: 40, fontSize: 14, padding: 12 },\r\n lg: { height: 48, fontSize: 15, padding: 14 },\r\n}\r\n\r\n/** Chevron down icon */\r\nfunction ChevronIcon() {\r\n return (\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M2.5 4.5L6 8L9.5 4.5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(\r\n {\r\n size = 'md',\r\n variant = 'outline',\r\n isInvalid,\r\n placeholder,\r\n className,\r\n style,\r\n testId,\r\n disabled,\r\n children,\r\n onFocus,\r\n onBlur,\r\n value,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const [isFocused, setIsFocused] = useState(false)\r\n\r\n const sizeValue = sizeStyles[size]\r\n const hasValue = value !== undefined && value !== ''\r\n\r\n const wrapperStyle: CSSProperties = {\r\n position: 'relative',\r\n display: 'inline-flex',\r\n width: '100%',\r\n }\r\n\r\n const getSelectStyle = (): CSSProperties => {\r\n const base: CSSProperties = {\r\n width: '100%',\r\n height: sizeValue.height,\r\n paddingLeft: sizeValue.padding,\r\n paddingRight: sizeValue.padding + 24,\r\n fontSize: sizeValue.fontSize,\r\n fontFamily: 'var(--brycks-font-sans)',\r\n color: hasValue || !placeholder ? 'var(--brycks-foreground-default)' : 'var(--brycks-foreground-muted)',\r\n backgroundColor: variant === 'filled' ? 'var(--brycks-background-muted)' : 'var(--brycks-background-app)',\r\n border: `1px solid ${\r\n isInvalid\r\n ? 'var(--brycks-error-default)'\r\n : isFocused\r\n ? 'var(--brycks-border-focus)'\r\n : variant === 'filled'\r\n ? 'transparent'\r\n : 'var(--brycks-border-default)'\r\n }`,\r\n borderRadius: 'var(--brycks-radius-default)',\r\n outline: 'none',\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n appearance: 'none',\r\n WebkitAppearance: 'none',\r\n transition: 'all 200ms ease-out',\r\n boxShadow: isFocused\r\n ? isInvalid\r\n ? '0 0 0 3px rgba(239, 68, 68, 0.15)'\r\n : '0 0 0 3px rgba(85, 120, 244, 0.15)'\r\n : 'none',\r\n }\r\n\r\n if (disabled) {\r\n base.opacity = 0.5\r\n }\r\n\r\n return base\r\n }\r\n\r\n const iconStyle: CSSProperties = {\r\n position: 'absolute',\r\n right: sizeValue.padding,\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n pointerEvents: 'none',\r\n color: 'var(--brycks-foreground-muted)',\r\n transition: 'transform 200ms ease-out',\r\n }\r\n\r\n const handleFocus = (e: React.FocusEvent<HTMLSelectElement>) => {\r\n setIsFocused(true)\r\n onFocus?.(e)\r\n }\r\n\r\n const handleBlur = (e: React.FocusEvent<HTMLSelectElement>) => {\r\n setIsFocused(false)\r\n onBlur?.(e)\r\n }\r\n\r\n return (\r\n <div\r\n className={cx(\r\n 'brycks-select-wrapper',\r\n `brycks-select-wrapper--${variant}`,\r\n `brycks-select-wrapper--${size}`,\r\n isInvalid && 'brycks-select-wrapper--invalid',\r\n disabled && 'brycks-select-wrapper--disabled',\r\n className\r\n )}\r\n style={{ ...wrapperStyle, ...style }}\r\n >\r\n <select\r\n ref={ref}\r\n className=\"brycks-select\"\r\n style={getSelectStyle()}\r\n disabled={disabled}\r\n aria-invalid={isInvalid}\r\n data-testid={testId}\r\n value={value}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n {...props}\r\n >\r\n {placeholder && (\r\n <option value=\"\" disabled>\r\n {placeholder}\r\n </option>\r\n )}\r\n {children}\r\n </select>\r\n\r\n <span style={iconStyle}>\r\n <ChevronIcon />\r\n </span>\r\n </div>\r\n )\r\n})\r\n\r\nSelect.displayName = 'Select'\r\n","/**\r\n * Checkbox Component\r\n *\r\n * Apple-inspired checkbox with smooth animations and tactile feedback.\r\n *\r\n * @module components/form/Checkbox\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n useState,\r\n type CSSProperties,\r\n type InputHTMLAttributes,\r\n type ReactNode,\r\n} from 'react'\r\nimport {\r\n controlSizes,\r\n componentGap,\r\n componentFontSize,\r\n componentLineHeight,\r\n focusRing,\r\n transition,\r\n stateOpacity,\r\n scale,\r\n} from '../../../design-system'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type CheckboxSize = 'sm' | 'md' | 'lg'\r\n\r\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\r\n /** Checkbox size */\r\n size?: CheckboxSize\r\n /** Label text */\r\n label?: ReactNode\r\n /** Description below label */\r\n description?: ReactNode\r\n /** Error state */\r\n isInvalid?: boolean\r\n /** Indeterminate state */\r\n isIndeterminate?: boolean\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\n/** Checkmark icon */\r\nfunction CheckIcon({ size }: { size: number }) {\r\n return (\r\n <svg width={size} height={size} viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M2.5 6L5 8.5L9.5 4\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\n/** Indeterminate/minus icon */\r\nfunction MinusIcon({ size }: { size: number }) {\r\n return (\r\n <svg width={size} height={size} viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M2.5 6H9.5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\r\n {\r\n size = 'md',\r\n label,\r\n description,\r\n isInvalid,\r\n isIndeterminate,\r\n className,\r\n style,\r\n testId,\r\n disabled,\r\n checked,\r\n onChange,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const [isFocused, setIsFocused] = useState(false)\r\n const [isHovered, setIsHovered] = useState(false)\r\n const [isPressed, setIsPressed] = useState(false)\r\n\r\n const config = controlSizes[size]\r\n const fontSize = componentFontSize[size]\r\n\r\n const isCheckedOrIndeterminate = checked || isIndeterminate\r\n\r\n const wrapperStyle: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'flex-start',\r\n gap: componentGap.lg,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n opacity: disabled ? stateOpacity.disabled : 1,\r\n }\r\n\r\n const boxStyle: CSSProperties = {\r\n position: 'relative',\r\n width: config.box,\r\n height: config.box,\r\n borderRadius: 'var(--brycks-radius-sm)',\r\n border: `1.5px solid ${\r\n isInvalid\r\n ? 'var(--brycks-error-default)'\r\n : isCheckedOrIndeterminate\r\n ? 'var(--brycks-primary-default)'\r\n : isFocused\r\n ? 'var(--brycks-border-focus)'\r\n : 'var(--brycks-border-default)'\r\n }`,\r\n backgroundColor: isCheckedOrIndeterminate\r\n ? 'var(--brycks-primary-default)'\r\n : isHovered\r\n ? 'var(--brycks-background-subtle)'\r\n : 'var(--brycks-background-app)',\r\n transition: transition.quick,\r\n transform: isPressed ? `scale(${scale.controlPressed})` : `scale(${scale.normal})`,\r\n boxShadow: isFocused ? focusRing.default : focusRing.none,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flexShrink: 0,\r\n }\r\n\r\n const iconStyle: CSSProperties = {\r\n color: 'var(--brycks-primary-foreground)',\r\n opacity: isCheckedOrIndeterminate ? 1 : 0,\r\n transform: isCheckedOrIndeterminate ? `scale(${scale.normal})` : `scale(${scale.hidden})`,\r\n transition: transition.quick,\r\n }\r\n\r\n const inputStyle: CSSProperties = {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n opacity: 0,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n margin: 0,\r\n }\r\n\r\n const labelContainerStyle: CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: componentGap.xs,\r\n paddingTop: (config.box - fontSize) / 2,\r\n }\r\n\r\n const labelTextStyle: CSSProperties = {\r\n fontSize,\r\n lineHeight: componentLineHeight.snug,\r\n color: 'var(--brycks-foreground-default)',\r\n userSelect: 'none',\r\n }\r\n\r\n const descriptionStyle: CSSProperties = {\r\n fontSize: fontSize - 1,\r\n lineHeight: componentLineHeight.snug,\r\n color: 'var(--brycks-foreground-muted)',\r\n userSelect: 'none',\r\n }\r\n\r\n return (\r\n <label\r\n className={cx(\r\n 'brycks-checkbox',\r\n `brycks-checkbox--${size}`,\r\n isCheckedOrIndeterminate && 'brycks-checkbox--checked',\r\n isInvalid && 'brycks-checkbox--invalid',\r\n disabled && 'brycks-checkbox--disabled',\r\n className\r\n )}\r\n style={{ ...wrapperStyle, ...style }}\r\n data-testid={testId}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => {\r\n setIsHovered(false)\r\n setIsPressed(false)\r\n }}\r\n onMouseDown={() => setIsPressed(true)}\r\n onMouseUp={() => setIsPressed(false)}\r\n >\r\n <span style={boxStyle}>\r\n <input\r\n ref={ref}\r\n type=\"checkbox\"\r\n style={inputStyle}\r\n checked={checked}\r\n disabled={disabled}\r\n aria-invalid={isInvalid}\r\n onChange={onChange}\r\n onFocus={() => setIsFocused(true)}\r\n onBlur={() => setIsFocused(false)}\r\n {...props}\r\n />\r\n <span style={iconStyle}>\r\n {isIndeterminate ? <MinusIcon size={config.icon} /> : <CheckIcon size={config.icon} />}\r\n </span>\r\n </span>\r\n\r\n {(label || description) && (\r\n <span style={labelContainerStyle}>\r\n {label && <span style={labelTextStyle}>{label}</span>}\r\n {description && <span style={descriptionStyle}>{description}</span>}\r\n </span>\r\n )}\r\n </label>\r\n )\r\n})\r\n\r\nCheckbox.displayName = 'Checkbox'\r\n","/**\r\n * Switch Component\r\n *\r\n * Apple-inspired toggle switch with smooth spring animation.\r\n * Clean, tactile design with satisfying micro-interactions.\r\n *\r\n * @module components/form/Switch\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n useState,\r\n type CSSProperties,\r\n type InputHTMLAttributes,\r\n type ReactNode,\r\n} from 'react'\r\nimport {\r\n switchSizes,\r\n componentGap,\r\n componentFontSize,\r\n componentLineHeight,\r\n focusRing,\r\n transition,\r\n stateOpacity,\r\n scale,\r\n} from '../../../design-system'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type SwitchSize = 'sm' | 'md' | 'lg'\r\n\r\nexport interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\r\n /** Switch size */\r\n size?: SwitchSize\r\n /** Label text */\r\n label?: ReactNode\r\n /** Description below label */\r\n description?: ReactNode\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\r\n {\r\n size = 'md',\r\n label,\r\n description,\r\n className,\r\n style,\r\n testId,\r\n disabled,\r\n checked,\r\n onChange,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const [isFocused, setIsFocused] = useState(false)\r\n const [isPressed, setIsPressed] = useState(false)\r\n\r\n const config = switchSizes[size]\r\n const fontSize = componentFontSize[size]\r\n\r\n const padding = (config.height - config.thumb) / 2\r\n const travel = config.width - config.thumb - padding * 2\r\n\r\n const wrapperStyle: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'flex-start',\r\n gap: componentGap.xl,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n opacity: disabled ? stateOpacity.disabled : 1,\r\n }\r\n\r\n const trackStyle: CSSProperties = {\r\n position: 'relative',\r\n width: config.width,\r\n height: config.height,\r\n borderRadius: config.height / 2,\r\n backgroundColor: checked\r\n ? 'var(--brycks-primary-default)'\r\n : 'var(--brycks-background-muted)',\r\n border: `1px solid ${checked ? 'var(--brycks-primary-default)' : 'var(--brycks-border-default)'}`,\r\n transition: transition.spring,\r\n boxShadow: isFocused ? focusRing.default : 'inset 0 1px 2px rgba(0,0,0,0.05)',\r\n flexShrink: 0,\r\n }\r\n\r\n const thumbStyle: CSSProperties = {\r\n position: 'absolute',\r\n top: padding,\r\n left: checked ? padding + travel : padding,\r\n width: isPressed ? config.thumb + 4 : config.thumb,\r\n height: config.thumb,\r\n borderRadius: config.thumb / 2,\r\n backgroundColor: 'var(--brycks-background-elevated)',\r\n boxShadow: 'var(--brycks-shadow-sm)',\r\n transition: transition.spring,\r\n transform: isPressed ? `scale(${scale.pressedStrong})` : `scale(${scale.normal})`,\r\n }\r\n\r\n const inputStyle: CSSProperties = {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n opacity: 0,\r\n cursor: disabled ? 'not-allowed' : 'pointer',\r\n margin: 0,\r\n }\r\n\r\n const labelContainerStyle: CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: componentGap.xs,\r\n paddingTop: (config.height - fontSize * componentLineHeight.snug) / 2,\r\n }\r\n\r\n const labelStyle: CSSProperties = {\r\n fontSize,\r\n lineHeight: componentLineHeight.snug,\r\n color: 'var(--brycks-foreground-default)',\r\n userSelect: 'none',\r\n }\r\n\r\n const descriptionStyle: CSSProperties = {\r\n fontSize: fontSize - 1,\r\n lineHeight: componentLineHeight.snug,\r\n color: 'var(--brycks-foreground-muted)',\r\n userSelect: 'none',\r\n }\r\n\r\n return (\r\n <label\r\n className={cx(\r\n 'brycks-switch',\r\n `brycks-switch--${size}`,\r\n checked && 'brycks-switch--checked',\r\n disabled && 'brycks-switch--disabled',\r\n className\r\n )}\r\n style={{ ...wrapperStyle, ...style }}\r\n data-testid={testId}\r\n onMouseDown={() => setIsPressed(true)}\r\n onMouseUp={() => setIsPressed(false)}\r\n onMouseLeave={() => setIsPressed(false)}\r\n >\r\n <span style={trackStyle}>\r\n <input\r\n ref={ref}\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n style={inputStyle}\r\n checked={checked}\r\n disabled={disabled}\r\n aria-checked={checked}\r\n onChange={onChange}\r\n onFocus={() => setIsFocused(true)}\r\n onBlur={() => setIsFocused(false)}\r\n {...props}\r\n />\r\n <span style={thumbStyle} />\r\n </span>\r\n\r\n {(label || description) && (\r\n <span style={labelContainerStyle}>\r\n {label && <span style={labelStyle}>{label}</span>}\r\n {description && <span style={descriptionStyle}>{description}</span>}\r\n </span>\r\n )}\r\n </label>\r\n )\r\n})\r\n\r\nSwitch.displayName = 'Switch'\r\n","/**\r\n * Textarea Component\r\n *\r\n * Multi-line text input with Apple-inspired styling.\r\n * Supports auto-resize and character counting.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n useState,\r\n useEffect,\r\n useRef,\r\n useCallback,\r\n type CSSProperties,\r\n type TextareaHTMLAttributes,\r\n} from 'react'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type TextareaSize = 'sm' | 'md' | 'lg'\r\nexport type TextareaVariant = 'outline' | 'filled'\r\n\r\nexport interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\r\n /** Textarea size */\r\n size?: TextareaSize\r\n /** Visual variant */\r\n variant?: TextareaVariant\r\n /** Error state */\r\n isInvalid?: boolean\r\n /** Auto resize based on content */\r\n autoResize?: boolean\r\n /** Minimum rows */\r\n minRows?: number\r\n /** Maximum rows */\r\n maxRows?: number\r\n /** Show character count */\r\n showCount?: boolean\r\n /** Max character length */\r\n maxLength?: number\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nconst sizeStyles: Record<TextareaSize, { fontSize: number; padding: number; lineHeight: number }> = {\r\n sm: { fontSize: 13, padding: 10, lineHeight: 1.5 },\r\n md: { fontSize: 14, padding: 12, lineHeight: 1.5 },\r\n lg: { fontSize: 15, padding: 14, lineHeight: 1.5 },\r\n}\r\n\r\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\r\n {\r\n size = 'md',\r\n variant = 'outline',\r\n isInvalid,\r\n autoResize,\r\n minRows = 3,\r\n maxRows = 10,\r\n showCount,\r\n maxLength,\r\n className,\r\n style,\r\n testId,\r\n disabled,\r\n value,\r\n defaultValue,\r\n onChange,\r\n onFocus,\r\n onBlur,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const [isFocused, setIsFocused] = useState(false)\r\n const [charCount, setCharCount] = useState(0)\r\n const internalRef = useRef<HTMLTextAreaElement>(null)\r\n const textareaRef = (ref as React.RefObject<HTMLTextAreaElement>) || internalRef\r\n\r\n const sizeValue = sizeStyles[size]\r\n const lineHeightPx = sizeValue.fontSize * sizeValue.lineHeight\r\n const minHeight = lineHeightPx * minRows + sizeValue.padding * 2\r\n const maxHeight = lineHeightPx * maxRows + sizeValue.padding * 2\r\n\r\n const adjustHeight = useCallback(() => {\r\n const textarea = textareaRef.current\r\n if (!textarea || !autoResize) return\r\n\r\n textarea.style.height = 'auto'\r\n const scrollHeight = textarea.scrollHeight\r\n const newHeight = Math.min(Math.max(scrollHeight, minHeight), maxHeight)\r\n textarea.style.height = `${newHeight}px`\r\n }, [autoResize, minHeight, maxHeight, textareaRef])\r\n\r\n useEffect(() => {\r\n adjustHeight()\r\n }, [value, adjustHeight])\r\n\r\n useEffect(() => {\r\n const initialValue = String(value ?? defaultValue ?? '')\r\n setCharCount(initialValue.length)\r\n }, [value, defaultValue])\r\n\r\n const getTextareaStyle = (): CSSProperties => {\r\n const base: CSSProperties = {\r\n width: '100%',\r\n minHeight,\r\n maxHeight: autoResize ? maxHeight : undefined,\r\n padding: sizeValue.padding,\r\n fontSize: sizeValue.fontSize,\r\n lineHeight: sizeValue.lineHeight,\r\n fontFamily: 'var(--brycks-font-sans)',\r\n color: 'var(--brycks-foreground-default)',\r\n backgroundColor: variant === 'filled' ? 'var(--brycks-background-muted)' : 'var(--brycks-background-app)',\r\n border: `1px solid ${\r\n isInvalid\r\n ? 'var(--brycks-error-default)'\r\n : isFocused\r\n ? 'var(--brycks-border-focus)'\r\n : variant === 'filled'\r\n ? 'transparent'\r\n : 'var(--brycks-border-default)'\r\n }`,\r\n borderRadius: 'var(--brycks-radius-default)',\r\n outline: 'none',\r\n resize: autoResize ? 'none' : 'vertical',\r\n transition: 'all 200ms ease-out',\r\n boxShadow: isFocused\r\n ? isInvalid\r\n ? '0 0 0 3px rgba(239, 68, 68, 0.15)'\r\n : '0 0 0 3px rgba(85, 120, 244, 0.15)'\r\n : 'none',\r\n }\r\n\r\n if (disabled) {\r\n base.opacity = 0.5\r\n base.cursor = 'not-allowed'\r\n base.resize = 'none'\r\n }\r\n\r\n return base\r\n }\r\n\r\n const wrapperStyle: CSSProperties = {\r\n position: 'relative',\r\n width: '100%',\r\n }\r\n\r\n const countStyle: CSSProperties = {\r\n position: 'absolute',\r\n bottom: 8,\r\n right: 12,\r\n fontSize: 11,\r\n color: charCount >= (maxLength ?? Infinity)\r\n ? 'var(--brycks-error-default)'\r\n : 'var(--brycks-foreground-muted)',\r\n pointerEvents: 'none',\r\n transition: 'color 150ms ease-out',\r\n }\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n setCharCount(e.target.value.length)\r\n onChange?.(e)\r\n }\r\n\r\n const handleFocus = (e: React.FocusEvent<HTMLTextAreaElement>) => {\r\n setIsFocused(true)\r\n onFocus?.(e)\r\n }\r\n\r\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\r\n setIsFocused(false)\r\n onBlur?.(e)\r\n }\r\n\r\n return (\r\n <div\r\n className={cx(\r\n 'brycks-textarea-wrapper',\r\n `brycks-textarea-wrapper--${variant}`,\r\n `brycks-textarea-wrapper--${size}`,\r\n isInvalid && 'brycks-textarea-wrapper--invalid',\r\n disabled && 'brycks-textarea-wrapper--disabled',\r\n className\r\n )}\r\n style={{ ...wrapperStyle, ...style }}\r\n >\r\n <textarea\r\n ref={textareaRef}\r\n className=\"brycks-textarea\"\r\n style={getTextareaStyle()}\r\n disabled={disabled}\r\n aria-invalid={isInvalid}\r\n data-testid={testId}\r\n value={value}\r\n defaultValue={defaultValue}\r\n maxLength={maxLength}\r\n onChange={handleChange}\r\n onFocus={handleFocus}\r\n onBlur={handleBlur}\r\n {...props}\r\n />\r\n\r\n {showCount && (\r\n <span style={countStyle}>\r\n {charCount}{maxLength ? `/${maxLength}` : ''}\r\n </span>\r\n )}\r\n </div>\r\n )\r\n})\r\n\r\nTextarea.displayName = 'Textarea'\r\n","/**\r\n * Modal Component\r\n *\r\n * Accessible modal dialog with smooth Apple-inspired animations.\r\n * Supports focus trapping and keyboard navigation.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n useEffect,\r\n useRef,\r\n useCallback,\r\n type CSSProperties,\r\n type ReactNode,\r\n type HTMLAttributes,\r\n} from 'react'\r\nimport { createPortal } from 'react-dom'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full'\r\n\r\nexport interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\r\n /** Whether the modal is open */\r\n isOpen: boolean\r\n /** Callback when modal should close */\r\n onClose: () => void\r\n /** Modal size */\r\n size?: ModalSize\r\n /** Modal title */\r\n title?: ReactNode\r\n /** Modal description */\r\n description?: ReactNode\r\n /** Whether to close on overlay click */\r\n closeOnOverlayClick?: boolean\r\n /** Whether to close on escape key */\r\n closeOnEscape?: boolean\r\n /** Whether to show close button */\r\n showCloseButton?: boolean\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n /** Modal content */\r\n children?: ReactNode\r\n}\r\n\r\nconst sizeWidths: Record<ModalSize, string> = {\r\n sm: '400px',\r\n md: '500px',\r\n lg: '640px',\r\n xl: '800px',\r\n full: 'calc(100vw - 48px)',\r\n}\r\n\r\n/** Close icon */\r\nfunction CloseIcon() {\r\n return (\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\r\n <path\r\n d=\"M4 4L12 12M12 4L4 12\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(function Modal(\r\n {\r\n isOpen,\r\n onClose,\r\n size = 'md',\r\n title,\r\n description,\r\n closeOnOverlayClick = true,\r\n closeOnEscape = true,\r\n showCloseButton = true,\r\n className,\r\n style,\r\n testId,\r\n children,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const modalRef = useRef<HTMLDivElement>(null)\r\n const previousActiveElement = useRef<HTMLElement | null>(null)\r\n\r\n // Focus trap and keyboard handling\r\n useEffect(() => {\r\n if (!isOpen) return\r\n\r\n previousActiveElement.current = document.activeElement as HTMLElement\r\n const modal = modalRef.current\r\n if (modal) {\r\n modal.focus()\r\n }\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (e.key === 'Escape' && closeOnEscape) {\r\n onClose()\r\n return\r\n }\r\n\r\n if (e.key === 'Tab' && modal) {\r\n const focusableElements = modal.querySelectorAll<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n )\r\n const firstElement = focusableElements[0]\r\n const lastElement = focusableElements[focusableElements.length - 1]\r\n\r\n if (e.shiftKey && document.activeElement === firstElement) {\r\n e.preventDefault()\r\n lastElement?.focus()\r\n } else if (!e.shiftKey && document.activeElement === lastElement) {\r\n e.preventDefault()\r\n firstElement?.focus()\r\n }\r\n }\r\n }\r\n\r\n document.addEventListener('keydown', handleKeyDown)\r\n document.body.style.overflow = 'hidden'\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleKeyDown)\r\n document.body.style.overflow = ''\r\n previousActiveElement.current?.focus()\r\n }\r\n }, [isOpen, closeOnEscape, onClose])\r\n\r\n const handleOverlayClick = useCallback(\r\n (e: React.MouseEvent) => {\r\n if (e.target === e.currentTarget && closeOnOverlayClick) {\r\n onClose()\r\n }\r\n },\r\n [closeOnOverlayClick, onClose]\r\n )\r\n\r\n if (!isOpen) return null\r\n\r\n const overlayStyle: CSSProperties = {\r\n position: 'fixed',\r\n inset: 0,\r\n zIndex: 'var(--brycks-z-modal)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: 24,\r\n backgroundColor: 'var(--brycks-background-overlay)',\r\n backdropFilter: 'blur(4px)',\r\n animation: 'brycks-fade-in 200ms ease-out',\r\n }\r\n\r\n const modalStyle: CSSProperties = {\r\n position: 'relative',\r\n width: '100%',\r\n maxWidth: sizeWidths[size],\r\n maxHeight: size === 'full' ? 'calc(100vh - 48px)' : '85vh',\r\n backgroundColor: 'var(--brycks-background-elevated)',\r\n borderRadius: 'var(--brycks-radius-xl)',\r\n boxShadow: 'var(--brycks-shadow-2xl)',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n overflow: 'hidden',\r\n animation: 'brycks-scale-in 200ms cubic-bezier(0.34, 1.56, 0.64, 1)',\r\n outline: 'none',\r\n ...style,\r\n }\r\n\r\n const headerStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n justifyContent: 'space-between',\r\n padding: '20px 24px',\r\n borderBottom: '1px solid var(--brycks-border-muted)',\r\n }\r\n\r\n const titleContainerStyle: CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: 4,\r\n }\r\n\r\n const titleStyle: CSSProperties = {\r\n fontSize: 18,\r\n fontWeight: 600,\r\n color: 'var(--brycks-foreground-default)',\r\n margin: 0,\r\n lineHeight: 1.3,\r\n }\r\n\r\n const descriptionStyle: CSSProperties = {\r\n fontSize: 14,\r\n color: 'var(--brycks-foreground-muted)',\r\n margin: 0,\r\n }\r\n\r\n const closeButtonStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 32,\r\n height: 32,\r\n borderRadius: 'var(--brycks-radius-md)',\r\n color: 'var(--brycks-foreground-muted)',\r\n transition: 'all 150ms ease-out',\r\n marginLeft: 12,\r\n flexShrink: 0,\r\n }\r\n\r\n const contentStyle: CSSProperties = {\r\n flex: 1,\r\n overflow: 'auto',\r\n padding: 24,\r\n }\r\n\r\n const modalContent = (\r\n <>\r\n <style>\r\n {`\r\n @keyframes brycks-fade-in {\r\n from { opacity: 0; }\r\n to { opacity: 1; }\r\n }\r\n @keyframes brycks-scale-in {\r\n from { opacity: 0; transform: scale(0.95); }\r\n to { opacity: 1; transform: scale(1); }\r\n }\r\n `}\r\n </style>\r\n <div\r\n className=\"brycks-modal-overlay\"\r\n style={overlayStyle}\r\n onClick={handleOverlayClick}\r\n aria-hidden=\"true\"\r\n >\r\n <div\r\n ref={(node) => {\r\n (modalRef as React.MutableRefObject<HTMLDivElement | null>).current = node\r\n if (typeof ref === 'function') ref(node)\r\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node\r\n }}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={title ? 'brycks-modal-title' : undefined}\r\n aria-describedby={description ? 'brycks-modal-description' : undefined}\r\n className={cx('brycks-modal', `brycks-modal--${size}`, className)}\r\n style={modalStyle}\r\n tabIndex={-1}\r\n data-testid={testId}\r\n {...props}\r\n >\r\n {(title || showCloseButton) && (\r\n <div className=\"brycks-modal-header\" style={headerStyle}>\r\n <div style={titleContainerStyle}>\r\n {title && (\r\n <h2 id=\"brycks-modal-title\" style={titleStyle}>\r\n {title}\r\n </h2>\r\n )}\r\n {description && (\r\n <p id=\"brycks-modal-description\" style={descriptionStyle}>\r\n {description}\r\n </p>\r\n )}\r\n </div>\r\n {showCloseButton && (\r\n <button\r\n type=\"button\"\r\n className=\"brycks-modal-close\"\r\n style={closeButtonStyle}\r\n onClick={onClose}\r\n aria-label=\"Close modal\"\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.backgroundColor = 'var(--brycks-background-muted)'\r\n e.currentTarget.style.color = 'var(--brycks-foreground-default)'\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.backgroundColor = 'transparent'\r\n e.currentTarget.style.color = 'var(--brycks-foreground-muted)'\r\n }}\r\n >\r\n <CloseIcon />\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div className=\"brycks-modal-content\" style={contentStyle}>\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n )\r\n\r\n return createPortal(modalContent, document.body)\r\n})\r\n\r\nModal.displayName = 'Modal'\r\n","/**\r\n * Alert Component\r\n *\r\n * Contextual feedback message for user actions and states.\r\n * Clean design with subtle color coding and optional icons.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n type CSSProperties,\r\n type ReactNode,\r\n type HTMLAttributes,\r\n} from 'react'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type AlertIntent = 'info' | 'success' | 'warning' | 'error'\r\nexport type AlertVariant = 'subtle' | 'solid' | 'outline'\r\n\r\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\r\n /** Visual intent/status */\r\n intent?: AlertIntent\r\n /** Visual variant */\r\n variant?: AlertVariant\r\n /** Alert title */\r\n title?: ReactNode\r\n /** Custom icon */\r\n icon?: ReactNode\r\n /** Whether to show default icon */\r\n showIcon?: boolean\r\n /** Action element (button, link) */\r\n action?: ReactNode\r\n /** Whether alert can be dismissed */\r\n isDismissible?: boolean\r\n /** Callback when dismissed */\r\n onDismiss?: () => void\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n /** Alert content */\r\n children?: ReactNode\r\n}\r\n\r\nconst intentConfig: Record<AlertIntent, { icon: JSX.Element; colors: Record<AlertVariant, CSSProperties> }> = {\r\n info: {\r\n icon: (\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <circle cx=\"9\" cy=\"9\" r=\"7.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\r\n <path d=\"M9 8V12\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\r\n <circle cx=\"9\" cy=\"5.5\" r=\"0.75\" fill=\"currentColor\" />\r\n </svg>\r\n ),\r\n colors: {\r\n subtle: {\r\n backgroundColor: 'var(--brycks-info-muted)',\r\n color: 'var(--brycks-info-default)',\r\n borderColor: 'transparent',\r\n },\r\n solid: {\r\n backgroundColor: 'var(--brycks-info-default)',\r\n color: 'var(--brycks-info-foreground)',\r\n borderColor: 'transparent',\r\n },\r\n outline: {\r\n backgroundColor: 'transparent',\r\n color: 'var(--brycks-info-default)',\r\n borderColor: 'var(--brycks-info-default)',\r\n },\r\n },\r\n },\r\n success: {\r\n icon: (\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <circle cx=\"9\" cy=\"9\" r=\"7.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\r\n <path d=\"M6 9L8 11L12 7\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n ),\r\n colors: {\r\n subtle: {\r\n backgroundColor: 'var(--brycks-success-muted)',\r\n color: 'var(--brycks-success-default)',\r\n borderColor: 'transparent',\r\n },\r\n solid: {\r\n backgroundColor: 'var(--brycks-success-default)',\r\n color: 'var(--brycks-success-foreground)',\r\n borderColor: 'transparent',\r\n },\r\n outline: {\r\n backgroundColor: 'transparent',\r\n color: 'var(--brycks-success-default)',\r\n borderColor: 'var(--brycks-success-default)',\r\n },\r\n },\r\n },\r\n warning: {\r\n icon: (\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path d=\"M9 2L16.5 15H1.5L9 2Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\r\n <path d=\"M9 7V10\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\r\n <circle cx=\"9\" cy=\"12.5\" r=\"0.75\" fill=\"currentColor\" />\r\n </svg>\r\n ),\r\n colors: {\r\n subtle: {\r\n backgroundColor: 'var(--brycks-warning-muted)',\r\n color: 'var(--brycks-warning-default)',\r\n borderColor: 'transparent',\r\n },\r\n solid: {\r\n backgroundColor: 'var(--brycks-warning-default)',\r\n color: 'var(--brycks-warning-foreground)',\r\n borderColor: 'transparent',\r\n },\r\n outline: {\r\n backgroundColor: 'transparent',\r\n color: 'var(--brycks-warning-default)',\r\n borderColor: 'var(--brycks-warning-default)',\r\n },\r\n },\r\n },\r\n error: {\r\n icon: (\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <circle cx=\"9\" cy=\"9\" r=\"7.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\r\n <path d=\"M6.5 6.5L11.5 11.5M11.5 6.5L6.5 11.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\r\n </svg>\r\n ),\r\n colors: {\r\n subtle: {\r\n backgroundColor: 'var(--brycks-error-muted)',\r\n color: 'var(--brycks-error-default)',\r\n borderColor: 'transparent',\r\n },\r\n solid: {\r\n backgroundColor: 'var(--brycks-error-default)',\r\n color: 'var(--brycks-error-foreground)',\r\n borderColor: 'transparent',\r\n },\r\n outline: {\r\n backgroundColor: 'transparent',\r\n color: 'var(--brycks-error-default)',\r\n borderColor: 'var(--brycks-error-default)',\r\n },\r\n },\r\n },\r\n}\r\n\r\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\r\n {\r\n intent = 'info',\r\n variant = 'subtle',\r\n title,\r\n icon,\r\n showIcon = true,\r\n action,\r\n isDismissible,\r\n onDismiss,\r\n className,\r\n style,\r\n testId,\r\n children,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const config = intentConfig[intent]\r\n const variantColors = config.colors[variant]\r\n\r\n const alertStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n gap: 12,\r\n padding: '12px 16px',\r\n borderRadius: 'var(--brycks-radius-default)',\r\n border: `1px solid ${variantColors.borderColor}`,\r\n backgroundColor: variantColors.backgroundColor,\r\n color: variant === 'solid' ? variantColors.color : 'var(--brycks-foreground-default)',\r\n ...style,\r\n }\r\n\r\n const iconStyle: CSSProperties = {\r\n flexShrink: 0,\r\n color: variantColors.color,\r\n marginTop: 1,\r\n }\r\n\r\n const contentStyle: CSSProperties = {\r\n flex: 1,\r\n minWidth: 0,\r\n }\r\n\r\n const titleStyle: CSSProperties = {\r\n fontSize: 14,\r\n fontWeight: 600,\r\n marginBottom: children ? 4 : 0,\r\n color: variant === 'solid' ? variantColors.color : variantColors.color,\r\n }\r\n\r\n const descriptionStyle: CSSProperties = {\r\n fontSize: 14,\r\n lineHeight: 1.5,\r\n color: variant === 'solid' ? variantColors.color : 'var(--brycks-foreground-muted)',\r\n }\r\n\r\n const actionsStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 8,\r\n flexShrink: 0,\r\n }\r\n\r\n const dismissButtonStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: 24,\r\n height: 24,\r\n borderRadius: 'var(--brycks-radius-sm)',\r\n color: variant === 'solid' ? variantColors.color : 'var(--brycks-foreground-muted)',\r\n transition: 'all 150ms ease-out',\r\n opacity: 0.7,\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n className={cx(\r\n 'brycks-alert',\r\n `brycks-alert--${intent}`,\r\n `brycks-alert--${variant}`,\r\n className\r\n )}\r\n style={alertStyle}\r\n data-testid={testId}\r\n {...props}\r\n >\r\n {showIcon && (\r\n <span className=\"brycks-alert-icon\" style={iconStyle}>\r\n {icon ?? config.icon}\r\n </span>\r\n )}\r\n\r\n <div className=\"brycks-alert-content\" style={contentStyle}>\r\n {title && <div className=\"brycks-alert-title\" style={titleStyle}>{title}</div>}\r\n {children && <div className=\"brycks-alert-description\" style={descriptionStyle}>{children}</div>}\r\n </div>\r\n\r\n {(action || isDismissible) && (\r\n <div className=\"brycks-alert-actions\" style={actionsStyle}>\r\n {action}\r\n {isDismissible && (\r\n <button\r\n type=\"button\"\r\n className=\"brycks-alert-dismiss\"\r\n style={dismissButtonStyle}\r\n onClick={onDismiss}\r\n aria-label=\"Dismiss alert\"\r\n onMouseEnter={(e) => { e.currentTarget.style.opacity = '1' }}\r\n onMouseLeave={(e) => { e.currentTarget.style.opacity = '0.7' }}\r\n >\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\">\r\n <path d=\"M3 3L11 11M11 3L3 11\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n})\r\n\r\nAlert.displayName = 'Alert'\r\n","/**\r\n * Tooltip Component\r\n *\r\n * Lightweight tooltip for displaying additional information on hover.\r\n * Clean animation with proper positioning.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n useState,\r\n useRef,\r\n useEffect,\r\n useCallback,\r\n type CSSProperties,\r\n type ReactNode,\r\n type HTMLAttributes,\r\n} from 'react'\r\nimport { createPortal } from 'react-dom'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right'\r\n\r\nexport interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {\r\n /** Tooltip content */\r\n content: ReactNode\r\n /** Placement relative to trigger */\r\n placement?: TooltipPlacement\r\n /** Delay before showing (ms) */\r\n delay?: number\r\n /** Whether tooltip is disabled */\r\n isDisabled?: boolean\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n /** Trigger element */\r\n children: ReactNode\r\n}\r\n\r\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(function Tooltip(\r\n {\r\n content,\r\n placement = 'top',\r\n delay = 200,\r\n isDisabled,\r\n className,\r\n testId,\r\n children,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const [isVisible, setIsVisible] = useState(false)\r\n const [position, setPosition] = useState({ top: 0, left: 0 })\r\n const triggerRef = useRef<HTMLDivElement>(null)\r\n const tooltipRef = useRef<HTMLDivElement>(null)\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>()\r\n\r\n const calculatePosition = useCallback(() => {\r\n if (!triggerRef.current || !tooltipRef.current) return\r\n\r\n const triggerRect = triggerRef.current.getBoundingClientRect()\r\n const tooltipRect = tooltipRef.current.getBoundingClientRect()\r\n const gap = 8\r\n\r\n let top = 0\r\n let left = 0\r\n\r\n switch (placement) {\r\n case 'top':\r\n top = triggerRect.top - tooltipRect.height - gap\r\n left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2\r\n break\r\n case 'bottom':\r\n top = triggerRect.bottom + gap\r\n left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2\r\n break\r\n case 'left':\r\n top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2\r\n left = triggerRect.left - tooltipRect.width - gap\r\n break\r\n case 'right':\r\n top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2\r\n left = triggerRect.right + gap\r\n break\r\n }\r\n\r\n // Keep tooltip within viewport\r\n const padding = 8\r\n left = Math.max(padding, Math.min(left, window.innerWidth - tooltipRect.width - padding))\r\n top = Math.max(padding, Math.min(top, window.innerHeight - tooltipRect.height - padding))\r\n\r\n setPosition({ top, left })\r\n }, [placement])\r\n\r\n useEffect(() => {\r\n if (isVisible) {\r\n calculatePosition()\r\n window.addEventListener('scroll', calculatePosition, true)\r\n window.addEventListener('resize', calculatePosition)\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('scroll', calculatePosition, true)\r\n window.removeEventListener('resize', calculatePosition)\r\n }\r\n }, [isVisible, calculatePosition])\r\n\r\n const showTooltip = () => {\r\n if (isDisabled) return\r\n timeoutRef.current = setTimeout(() => {\r\n setIsVisible(true)\r\n }, delay)\r\n }\r\n\r\n const hideTooltip = () => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current)\r\n }\r\n setIsVisible(false)\r\n }\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (timeoutRef.current) {\r\n clearTimeout(timeoutRef.current)\r\n }\r\n }\r\n }, [])\r\n\r\n const triggerStyle: CSSProperties = {\r\n display: 'inline-flex',\r\n }\r\n\r\n const tooltipStyle: CSSProperties = {\r\n position: 'fixed',\r\n top: position.top,\r\n left: position.left,\r\n zIndex: 'var(--brycks-z-tooltip)',\r\n maxWidth: 300,\r\n padding: '6px 10px',\r\n fontSize: 12,\r\n fontWeight: 500,\r\n lineHeight: 1.4,\r\n color: 'var(--brycks-foreground-inverse)',\r\n backgroundColor: 'var(--brycks-background-inverse)',\r\n borderRadius: 'var(--brycks-radius-md)',\r\n boxShadow: 'var(--brycks-shadow-lg)',\r\n pointerEvents: 'none',\r\n animation: 'brycks-tooltip-in 150ms ease-out',\r\n }\r\n\r\n const arrowStyle: CSSProperties = {\r\n position: 'absolute',\r\n width: 8,\r\n height: 8,\r\n backgroundColor: 'var(--brycks-background-inverse)',\r\n transform: 'rotate(45deg)',\r\n ...(placement === 'top' && { bottom: -4, left: '50%', marginLeft: -4 }),\r\n ...(placement === 'bottom' && { top: -4, left: '50%', marginLeft: -4 }),\r\n ...(placement === 'left' && { right: -4, top: '50%', marginTop: -4 }),\r\n ...(placement === 'right' && { left: -4, top: '50%', marginTop: -4 }),\r\n }\r\n\r\n return (\r\n <>\r\n <div\r\n ref={triggerRef}\r\n style={triggerStyle}\r\n onMouseEnter={showTooltip}\r\n onMouseLeave={hideTooltip}\r\n onFocus={showTooltip}\r\n onBlur={hideTooltip}\r\n >\r\n {children}\r\n </div>\r\n\r\n {isVisible &&\r\n createPortal(\r\n <>\r\n <style>\r\n {`\r\n @keyframes brycks-tooltip-in {\r\n from { opacity: 0; transform: scale(0.95); }\r\n to { opacity: 1; transform: scale(1); }\r\n }\r\n `}\r\n </style>\r\n <div\r\n ref={(node) => {\r\n (tooltipRef as React.MutableRefObject<HTMLDivElement | null>).current = node\r\n if (typeof ref === 'function') ref(node)\r\n else if (ref) (ref as React.MutableRefObject<HTMLDivElement | null>).current = node\r\n }}\r\n role=\"tooltip\"\r\n className={cx('brycks-tooltip', `brycks-tooltip--${placement}`, className)}\r\n style={tooltipStyle}\r\n data-testid={testId}\r\n {...props}\r\n >\r\n {content}\r\n <span style={arrowStyle} />\r\n </div>\r\n </>,\r\n document.body\r\n )}\r\n </>\r\n )\r\n})\r\n\r\nTooltip.displayName = 'Tooltip'\r\n","/**\r\n * Badge Component\r\n *\r\n * Small label for status, counts, or categorization.\r\n * Clean, minimal design with subtle color coding.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n type CSSProperties,\r\n type ReactNode,\r\n type HTMLAttributes,\r\n} from 'react'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type BadgeVariant = 'solid' | 'subtle' | 'outline'\r\nexport type BadgeIntent = 'neutral' | 'primary' | 'accent' | 'success' | 'warning' | 'error' | 'info'\r\nexport type BadgeSize = 'sm' | 'md' | 'lg'\r\n\r\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\r\n /** Visual variant */\r\n variant?: BadgeVariant\r\n /** Color intent */\r\n intent?: BadgeIntent\r\n /** Size */\r\n size?: BadgeSize\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n /** Badge content */\r\n children?: ReactNode\r\n}\r\n\r\nconst sizeStyles: Record<BadgeSize, CSSProperties> = {\r\n sm: { fontSize: 10, padding: '2px 6px', height: 18 },\r\n md: { fontSize: 11, padding: '3px 8px', height: 22 },\r\n lg: { fontSize: 12, padding: '4px 10px', height: 26 },\r\n}\r\n\r\nconst intentColors: Record<BadgeIntent, Record<BadgeVariant, CSSProperties>> = {\r\n neutral: {\r\n solid: { backgroundColor: 'var(--brycks-foreground-default)', color: 'var(--brycks-background-app)' },\r\n subtle: { backgroundColor: 'var(--brycks-background-muted)', color: 'var(--brycks-foreground-default)' },\r\n outline: { backgroundColor: 'transparent', color: 'var(--brycks-foreground-default)', borderColor: 'var(--brycks-border-default)' },\r\n },\r\n primary: {\r\n solid: { backgroundColor: 'var(--brycks-primary-default)', color: 'var(--brycks-primary-foreground)' },\r\n subtle: { backgroundColor: 'var(--brycks-primary-muted)', color: 'var(--brycks-primary-default)' },\r\n outline: { backgroundColor: 'transparent', color: 'var(--brycks-primary-default)', borderColor: 'var(--brycks-primary-default)' },\r\n },\r\n accent: {\r\n solid: { backgroundColor: 'var(--brycks-accent-default)', color: 'var(--brycks-accent-foreground)' },\r\n subtle: { backgroundColor: 'var(--brycks-accent-muted)', color: 'var(--brycks-accent-default)' },\r\n outline: { backgroundColor: 'transparent', color: 'var(--brycks-accent-default)', borderColor: 'var(--brycks-accent-default)' },\r\n },\r\n success: {\r\n solid: { backgroundColor: 'var(--brycks-success-default)', color: 'var(--brycks-success-foreground)' },\r\n subtle: { backgroundColor: 'var(--brycks-success-muted)', color: 'var(--brycks-success-default)' },\r\n outline: { backgroundColor: 'transparent', color: 'var(--brycks-success-default)', borderColor: 'var(--brycks-success-default)' },\r\n },\r\n warning: {\r\n solid: { backgroundColor: 'var(--brycks-warning-default)', color: 'var(--brycks-warning-foreground)' },\r\n subtle: { backgroundColor: 'var(--brycks-warning-muted)', color: 'var(--brycks-warning-default)' },\r\n outline: { backgroundColor: 'transparent', color: 'var(--brycks-warning-default)', borderColor: 'var(--brycks-warning-default)' },\r\n },\r\n error: {\r\n solid: { backgroundColor: 'var(--brycks-error-default)', color: 'var(--brycks-error-foreground)' },\r\n subtle: { backgroundColor: 'var(--brycks-error-muted)', color: 'var(--brycks-error-default)' },\r\n outline: { backgroundColor: 'transparent', color: 'var(--brycks-error-default)', borderColor: 'var(--brycks-error-default)' },\r\n },\r\n info: {\r\n solid: { backgroundColor: 'var(--brycks-info-default)', color: 'var(--brycks-info-foreground)' },\r\n subtle: { backgroundColor: 'var(--brycks-info-muted)', color: 'var(--brycks-info-default)' },\r\n outline: { backgroundColor: 'transparent', color: 'var(--brycks-info-default)', borderColor: 'var(--brycks-info-default)' },\r\n },\r\n}\r\n\r\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\r\n {\r\n variant = 'subtle',\r\n intent = 'neutral',\r\n size = 'md',\r\n className,\r\n style,\r\n testId,\r\n children,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const sizeValue = sizeStyles[size]\r\n const colorValue = intentColors[intent][variant]\r\n\r\n const badgeStyle: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n fontWeight: 500,\r\n fontFamily: 'var(--brycks-font-sans)',\r\n lineHeight: 1,\r\n borderRadius: 'var(--brycks-radius-full)',\r\n whiteSpace: 'nowrap',\r\n border: variant === 'outline' ? '1px solid' : 'none',\r\n ...sizeValue,\r\n ...colorValue,\r\n ...style,\r\n }\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n className={cx(\r\n 'brycks-badge',\r\n `brycks-badge--${variant}`,\r\n `brycks-badge--${intent}`,\r\n `brycks-badge--${size}`,\r\n className\r\n )}\r\n style={badgeStyle}\r\n data-testid={testId}\r\n {...props}\r\n >\r\n {children}\r\n </span>\r\n )\r\n})\r\n\r\nBadge.displayName = 'Badge'\r\n","/**\r\n * Loader Component\r\n *\r\n * Elegant loading spinner with smooth animation.\r\n * Apple-inspired design with multiple sizes and variants.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n type CSSProperties,\r\n type HTMLAttributes,\r\n} from 'react'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type LoaderSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'\r\nexport type LoaderVariant = 'spinner' | 'dots' | 'pulse'\r\n\r\nexport interface LoaderProps extends HTMLAttributes<HTMLDivElement> {\r\n /** Loader size */\r\n size?: LoaderSize\r\n /** Loader variant */\r\n variant?: LoaderVariant\r\n /** Color (CSS value) */\r\n color?: string\r\n /** Accessible label */\r\n label?: string\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nconst sizeMap: Record<LoaderSize, number> = {\r\n xs: 14,\r\n sm: 18,\r\n md: 24,\r\n lg: 32,\r\n xl: 48,\r\n}\r\n\r\n/** Spinner loader */\r\nfunction SpinnerLoader({ size, color }: { size: number; color: string }) {\r\n return (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n style={{ animation: 'brycks-spin 1s linear infinite' }}\r\n >\r\n <circle\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke={color}\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n opacity=\"0.2\"\r\n />\r\n <path\r\n d=\"M12 2C6.47715 2 2 6.47715 2 12\"\r\n stroke={color}\r\n strokeWidth=\"2.5\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\n/** Dots loader */\r\nfunction Dots({ size, color }: { size: number; color: string }) {\r\n const dotSize = size / 4\r\n const gap = size / 6\r\n\r\n return (\r\n <div\r\n style={{\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap,\r\n height: size,\r\n }}\r\n >\r\n {[0, 1, 2].map((i) => (\r\n <span\r\n key={i}\r\n style={{\r\n width: dotSize,\r\n height: dotSize,\r\n borderRadius: '50%',\r\n backgroundColor: color,\r\n animation: `brycks-bounce 1.4s ease-in-out infinite`,\r\n animationDelay: `${i * 0.16}s`,\r\n }}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\n/** Pulse loader */\r\nfunction Pulse({ size, color }: { size: number; color: string }) {\r\n return (\r\n <span\r\n style={{\r\n display: 'block',\r\n width: size,\r\n height: size,\r\n borderRadius: '50%',\r\n backgroundColor: color,\r\n animation: 'brycks-pulse 1.5s ease-in-out infinite',\r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport const Loader = forwardRef<HTMLDivElement, LoaderProps>(function Loader(\r\n {\r\n size = 'md',\r\n variant = 'spinner',\r\n color = 'var(--brycks-primary-default)',\r\n label = 'Loading',\r\n className,\r\n style,\r\n testId,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const sizeValue = sizeMap[size]\r\n\r\n const wrapperStyle: CSSProperties = {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n ...style,\r\n }\r\n\r\n const renderLoader = () => {\r\n switch (variant) {\r\n case 'dots':\r\n return <Dots size={sizeValue} color={color} />\r\n case 'pulse':\r\n return <Pulse size={sizeValue} color={color} />\r\n default:\r\n return <SpinnerLoader size={sizeValue} color={color} />\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <style>\r\n {`\r\n @keyframes brycks-spin {\r\n from { transform: rotate(0deg); }\r\n to { transform: rotate(360deg); }\r\n }\r\n @keyframes brycks-bounce {\r\n 0%, 80%, 100% { transform: scale(0); opacity: 0.5; }\r\n 40% { transform: scale(1); opacity: 1; }\r\n }\r\n @keyframes brycks-pulse {\r\n 0%, 100% { transform: scale(0.8); opacity: 0.5; }\r\n 50% { transform: scale(1); opacity: 1; }\r\n }\r\n `}\r\n </style>\r\n <div\r\n ref={ref}\r\n role=\"status\"\r\n aria-label={label}\r\n className={cx(\r\n 'brycks-loader',\r\n `brycks-loader--${variant}`,\r\n `brycks-loader--${size}`,\r\n className\r\n )}\r\n style={wrapperStyle}\r\n data-testid={testId}\r\n {...props}\r\n >\r\n {renderLoader()}\r\n <span\r\n style={{\r\n position: 'absolute',\r\n width: 1,\r\n height: 1,\r\n padding: 0,\r\n margin: -1,\r\n overflow: 'hidden',\r\n clip: 'rect(0, 0, 0, 0)',\r\n whiteSpace: 'nowrap',\r\n border: 0,\r\n }}\r\n >\r\n {label}\r\n </span>\r\n </div>\r\n </>\r\n )\r\n})\r\n\r\nLoader.displayName = 'Loader'\r\n\r\n/** Alias for Loader */\r\nexport const Spinner = Loader\r\n","/**\r\n * Skeleton Component\r\n *\r\n * Loading placeholder with shimmer animation.\r\n * Provides visual feedback while content is loading.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n type CSSProperties,\r\n type HTMLAttributes,\r\n} from 'react'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type SkeletonVariant = 'text' | 'circular' | 'rectangular'\r\n\r\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\r\n /** Skeleton variant */\r\n variant?: SkeletonVariant\r\n /** Width */\r\n width?: string | number\r\n /** Height */\r\n height?: string | number\r\n /** Border radius (for rectangular variant) */\r\n radius?: string | number\r\n /** Whether to animate */\r\n animate?: boolean\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(function Skeleton(\r\n {\r\n variant = 'rectangular',\r\n width,\r\n height,\r\n radius,\r\n animate = true,\r\n className,\r\n style,\r\n testId,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const getStyles = (): CSSProperties => {\r\n const base: CSSProperties = {\r\n backgroundColor: 'var(--brycks-background-muted)',\r\n position: 'relative',\r\n overflow: 'hidden',\r\n }\r\n\r\n switch (variant) {\r\n case 'text':\r\n base.width = width ?? '100%'\r\n base.height = height ?? '1em'\r\n base.borderRadius = 'var(--brycks-radius-sm)'\r\n break\r\n case 'circular':\r\n base.width = width ?? 40\r\n base.height = height ?? width ?? 40\r\n base.borderRadius = '50%'\r\n break\r\n case 'rectangular':\r\n base.width = width ?? '100%'\r\n base.height = height ?? 40\r\n base.borderRadius = radius ?? 'var(--brycks-radius-default)'\r\n break\r\n }\r\n\r\n return base\r\n }\r\n\r\n const skeletonStyle: CSSProperties = {\r\n ...getStyles(),\r\n ...style,\r\n }\r\n\r\n const shimmerStyle: CSSProperties = {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n background: 'linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.4) 50%, transparent 100%)',\r\n animation: animate ? 'brycks-shimmer 1.5s infinite' : 'none',\r\n }\r\n\r\n return (\r\n <>\r\n {animate && (\r\n <style>\r\n {`\r\n @keyframes brycks-shimmer {\r\n 0% { transform: translateX(-100%); }\r\n 100% { transform: translateX(100%); }\r\n }\r\n `}\r\n </style>\r\n )}\r\n <div\r\n ref={ref}\r\n className={cx(\r\n 'brycks-skeleton',\r\n `brycks-skeleton--${variant}`,\r\n animate && 'brycks-skeleton--animated',\r\n className\r\n )}\r\n style={skeletonStyle}\r\n data-testid={testId}\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n {animate && <div style={shimmerStyle} />}\r\n </div>\r\n </>\r\n )\r\n})\r\n\r\nSkeleton.displayName = 'Skeleton'\r\n\r\n/** Text skeleton with multiple lines */\r\nexport interface SkeletonTextProps {\r\n /** Number of lines */\r\n lines?: number\r\n /** Gap between lines */\r\n gap?: number\r\n /** Last line width percentage */\r\n lastLineWidth?: string\r\n /** Custom class name */\r\n className?: string\r\n}\r\n\r\nexport function SkeletonText({\r\n lines = 3,\r\n gap = 8,\r\n lastLineWidth = '80%',\r\n className,\r\n}: SkeletonTextProps) {\r\n return (\r\n <div\r\n className={cx('brycks-skeleton-text', className)}\r\n style={{ display: 'flex', flexDirection: 'column', gap }}\r\n >\r\n {Array.from({ length: lines }).map((_, i) => (\r\n <Skeleton\r\n key={i}\r\n variant=\"text\"\r\n width={i === lines - 1 ? lastLineWidth : '100%'}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nSkeletonText.displayName = 'SkeletonText'\r\n","/**\r\n * Divider Component\r\n *\r\n * Visual separator for content sections.\r\n * Supports horizontal and vertical orientations with optional labels.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n type CSSProperties,\r\n type ReactNode,\r\n type HTMLAttributes,\r\n} from 'react'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport type DividerOrientation = 'horizontal' | 'vertical'\r\nexport type DividerVariant = 'solid' | 'dashed' | 'dotted'\r\n\r\nexport interface DividerProps extends HTMLAttributes<HTMLDivElement> {\r\n /** Divider orientation */\r\n orientation?: DividerOrientation\r\n /** Visual variant */\r\n variant?: DividerVariant\r\n /** Label text in the middle */\r\n label?: ReactNode\r\n /** Label position */\r\n labelPosition?: 'start' | 'center' | 'end'\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(function Divider(\r\n {\r\n orientation = 'horizontal',\r\n variant = 'solid',\r\n label,\r\n labelPosition = 'center',\r\n className,\r\n style,\r\n testId,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const isHorizontal = orientation === 'horizontal'\r\n\r\n const wrapperStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: isHorizontal ? '100%' : undefined,\r\n height: isHorizontal ? undefined : '100%',\r\n flexDirection: isHorizontal ? 'row' : 'column',\r\n ...style,\r\n }\r\n\r\n const lineStyle: CSSProperties = {\r\n flex: 1,\r\n backgroundColor: variant === 'solid' ? 'var(--brycks-border-muted)' : 'transparent',\r\n borderStyle: variant,\r\n borderColor: 'var(--brycks-border-muted)',\r\n ...(isHorizontal\r\n ? {\r\n height: 1,\r\n borderWidth: variant === 'solid' ? 0 : '1px 0 0 0',\r\n }\r\n : {\r\n width: 1,\r\n borderWidth: variant === 'solid' ? 0 : '0 0 0 1px',\r\n }),\r\n }\r\n\r\n const labelStyle: CSSProperties = {\r\n padding: isHorizontal ? '0 12px' : '12px 0',\r\n fontSize: 12,\r\n fontWeight: 500,\r\n color: 'var(--brycks-foreground-muted)',\r\n whiteSpace: 'nowrap',\r\n }\r\n\r\n if (!label) {\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"separator\"\r\n aria-orientation={orientation}\r\n className={cx(\r\n 'brycks-divider',\r\n `brycks-divider--${orientation}`,\r\n `brycks-divider--${variant}`,\r\n className\r\n )}\r\n style={{ ...lineStyle, ...style }}\r\n data-testid={testId}\r\n {...props}\r\n />\r\n )\r\n }\r\n\r\n const showStartLine = labelPosition === 'center' || labelPosition === 'end'\r\n const showEndLine = labelPosition === 'center' || labelPosition === 'start'\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"separator\"\r\n aria-orientation={orientation}\r\n className={cx(\r\n 'brycks-divider',\r\n `brycks-divider--${orientation}`,\r\n `brycks-divider--${variant}`,\r\n 'brycks-divider--with-label',\r\n className\r\n )}\r\n style={wrapperStyle}\r\n data-testid={testId}\r\n {...props}\r\n >\r\n {showStartLine && <span style={lineStyle} />}\r\n <span style={labelStyle}>{label}</span>\r\n {showEndLine && <span style={lineStyle} />}\r\n </div>\r\n )\r\n})\r\n\r\nDivider.displayName = 'Divider'\r\n","/**\r\n * EmptyState Component\r\n *\r\n * Placeholder for empty or zero-state content.\r\n * Provides visual feedback with optional actions.\r\n */\r\n\r\nimport {\r\n forwardRef,\r\n type CSSProperties,\r\n type ReactNode,\r\n type HTMLAttributes,\r\n} from 'react'\r\nimport { cx } from '../../../utils/styles'\r\n\r\nexport interface EmptyStateProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\r\n /** Icon or illustration */\r\n icon?: ReactNode\r\n /** Title text */\r\n title?: ReactNode\r\n /** Description text */\r\n description?: ReactNode\r\n /** Action element (button, link) */\r\n action?: ReactNode\r\n /** Secondary action */\r\n secondaryAction?: ReactNode\r\n /** Custom class name */\r\n className?: string\r\n /** Test ID */\r\n testId?: string\r\n}\r\n\r\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState(\r\n {\r\n icon,\r\n title,\r\n description,\r\n action,\r\n secondaryAction,\r\n className,\r\n style,\r\n testId,\r\n children,\r\n ...props\r\n },\r\n ref\r\n) {\r\n const containerStyle: CSSProperties = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n textAlign: 'center',\r\n padding: '48px 24px',\r\n ...style,\r\n }\r\n\r\n const iconStyle: CSSProperties = {\r\n marginBottom: 16,\r\n color: 'var(--brycks-foreground-subtle)',\r\n }\r\n\r\n const titleStyle: CSSProperties = {\r\n fontSize: 18,\r\n fontWeight: 600,\r\n color: 'var(--brycks-foreground-default)',\r\n marginBottom: description ? 8 : 0,\r\n maxWidth: 400,\r\n }\r\n\r\n const descriptionStyle: CSSProperties = {\r\n fontSize: 14,\r\n color: 'var(--brycks-foreground-muted)',\r\n lineHeight: 1.5,\r\n maxWidth: 400,\r\n }\r\n\r\n const actionsStyle: CSSProperties = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: 12,\r\n marginTop: 24,\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={cx('brycks-empty-state', className)}\r\n style={containerStyle}\r\n data-testid={testId}\r\n {...props}\r\n >\r\n {icon && <div style={iconStyle}>{icon}</div>}\r\n\r\n {title && <h3 style={titleStyle}>{title}</h3>}\r\n\r\n {description && <p style={descriptionStyle}>{description}</p>}\r\n\r\n {children}\r\n\r\n {(action || secondaryAction) && (\r\n <div style={actionsStyle}>\r\n {action}\r\n {secondaryAction}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n})\r\n\r\nEmptyState.displayName = 'EmptyState'\r\n\r\n/** Default empty state icon */\r\nexport function EmptyStateIcon({ size = 64 }: { size?: number }) {\r\n return (\r\n <svg\r\n width={size}\r\n height={size}\r\n viewBox=\"0 0 64 64\"\r\n fill=\"none\"\r\n style={{ opacity: 0.5 }}\r\n >\r\n <rect\r\n x=\"8\"\r\n y=\"12\"\r\n width=\"48\"\r\n height=\"40\"\r\n rx=\"4\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n />\r\n <path\r\n d=\"M8 24h48\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n />\r\n <circle cx=\"16\" cy=\"18\" r=\"2\" fill=\"currentColor\" />\r\n <circle cx=\"24\" cy=\"18\" r=\"2\" fill=\"currentColor\" />\r\n <circle cx=\"32\" cy=\"18\" r=\"2\" fill=\"currentColor\" />\r\n <rect\r\n x=\"16\"\r\n y=\"32\"\r\n width=\"32\"\r\n height=\"4\"\r\n rx=\"2\"\r\n fill=\"currentColor\"\r\n opacity=\"0.3\"\r\n />\r\n <rect\r\n x=\"16\"\r\n y=\"40\"\r\n width=\"20\"\r\n height=\"4\"\r\n rx=\"2\"\r\n fill=\"currentColor\"\r\n opacity=\"0.3\"\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nEmptyStateIcon.displayName = 'EmptyStateIcon'\r\n","/**\r\n * useMediaQuery Hook\r\n *\r\n * React hook for responsive design with media queries.\r\n */\r\n\r\nimport { useState, useEffect } from 'react'\r\n\r\nexport function useMediaQuery(query: string): boolean {\r\n const [matches, setMatches] = useState(() => {\r\n if (typeof window === 'undefined') return false\r\n return window.matchMedia(query).matches\r\n })\r\n\r\n useEffect(() => {\r\n if (typeof window === 'undefined') return\r\n\r\n const mediaQuery = window.matchMedia(query)\r\n const handleChange = (e: MediaQueryListEvent) => setMatches(e.matches)\r\n\r\n // Set initial value\r\n setMatches(mediaQuery.matches)\r\n\r\n // Listen for changes\r\n mediaQuery.addEventListener('change', handleChange)\r\n return () => mediaQuery.removeEventListener('change', handleChange)\r\n }, [query])\r\n\r\n return matches\r\n}\r\n\r\n/** Pre-built responsive hooks */\r\nexport function useIsMobile() {\r\n return useMediaQuery('(max-width: 639px)')\r\n}\r\n\r\nexport function useIsTablet() {\r\n return useMediaQuery('(min-width: 640px) and (max-width: 1023px)')\r\n}\r\n\r\nexport function useIsDesktop() {\r\n return useMediaQuery('(min-width: 1024px)')\r\n}\r\n\r\nexport function usePrefersReducedMotion() {\r\n return useMediaQuery('(prefers-reduced-motion: reduce)')\r\n}\r\n\r\nexport function usePrefersDarkMode() {\r\n return useMediaQuery('(prefers-color-scheme: dark)')\r\n}\r\n","/**\r\n * useDisclosure Hook\r\n *\r\n * Manages open/closed state for modals, popovers, drawers, etc.\r\n */\r\n\r\nimport { useState, useCallback } from 'react'\r\n\r\nexport interface UseDisclosureReturn {\r\n isOpen: boolean\r\n onOpen: () => void\r\n onClose: () => void\r\n onToggle: () => void\r\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>\r\n}\r\n\r\nexport interface UseDisclosureOptions {\r\n defaultIsOpen?: boolean\r\n onOpen?: () => void\r\n onClose?: () => void\r\n}\r\n\r\nexport function useDisclosure(options: UseDisclosureOptions = {}): UseDisclosureReturn {\r\n const { defaultIsOpen = false, onOpen: onOpenProp, onClose: onCloseProp } = options\r\n const [isOpen, setIsOpen] = useState(defaultIsOpen)\r\n\r\n const onOpen = useCallback(() => {\r\n setIsOpen(true)\r\n onOpenProp?.()\r\n }, [onOpenProp])\r\n\r\n const onClose = useCallback(() => {\r\n setIsOpen(false)\r\n onCloseProp?.()\r\n }, [onCloseProp])\r\n\r\n const onToggle = useCallback(() => {\r\n const newState = !isOpen\r\n setIsOpen(newState)\r\n if (newState) {\r\n onOpenProp?.()\r\n } else {\r\n onCloseProp?.()\r\n }\r\n }, [isOpen, onOpenProp, onCloseProp])\r\n\r\n return {\r\n isOpen,\r\n onOpen,\r\n onClose,\r\n onToggle,\r\n setIsOpen,\r\n }\r\n}\r\n"],"names":["componentHeights","spacing","iconSizes","componentPaddingX","componentPaddingY","componentGap","modalWidths","popoverSizing","controlSizes","switchSizes","focusRing","focusRingOffset","focusStyles","transition","durations","easings","transitionProperties","duration","easing","keyframes","componentFontSize","fontSizes","componentFontWeight","fontWeights","componentLineHeight","lineHeights","componentTypography","fontFamilies","opacity","stateOpacity","scale","cx","classes","getSpacingValue","key","spacingToCss","value","buildSpacingStyles","props","styles","idCounter","generateId","prefix","hexToRgba","hex","alpha","result","r","g","b","radiusMap","shadowMap","buildBoxStyles","boxOwnPropKeys","omitBoxProps","BoxInner","as","className","style","children","testId","ref","Component","boxStyles","filteredProps","jsx","Box","forwardRef","stackOwnPropKeys","omitStackProps","buildStackStyles","StackInner","stackStyles","Stack","HStackInner","HStack","VStackInner","VStack","gridOwnPropKeys","omitGridProps","buildGridStyles","GridInner","gridStyles","Grid","GridItemInner","colSpan","rowSpan","colStart","colEnd","rowStart","rowEnd","itemStyles","GridItem","containerOwnPropKeys","omitContainerProps","buildContainerStyles","spacingStyles","size","maxWidth","containers","ContainerInner","containerStyles","Container","variantMap","textStyles","buildTextStyles","variant","baseStyles","TextInner","builtTextStyles","_size","_weight","_leading","_align","_color","_truncate","_lineClamp","rest","Text","CodeInner","Code","sizeToStyleMap","buildHeadingStyles","level","visualSize","styleKey","HeadingInner","headingStyles","Heading","DisplayInner","Display","sizeConfig","intentColors","getButtonStyles","intent","fullWidth","isIconOnly","sizeValues","colors","base","solidColors","outlineColors","softColors","hover","ghostColors","linkColors","active","disabled","LoadingSpinner","jsxs","ButtonInner","isLoading","isDisabled","leftIcon","rightIcon","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","isHovered","setIsHovered","useState","isPressed","setIsPressed","computedStyle","handleMouseEnter","e","handleMouseLeave","handleMouseDown","handleMouseUp","buttonClassName","buttonProps","Button","IconButtonInner","IconButton","Input","isInvalid","leftElement","rightElement","onFocus","onBlur","isFocused","setIsFocused","config","getWrapperStyles","inputStyles","handleFocus","handleBlur","elementStyle","TextField","label","helperText","errorMessage","isRequired","hideLabel","id","inputProps","generatedId","useId","fieldId","helperId","errorId","hasError","describedBy","labelStyle","helperStyle","errorStyle","sizeStyles","ChevronIcon","Select","placeholder","sizeValue","hasValue","wrapperStyle","getSelectStyle","iconStyle","CheckIcon","MinusIcon","Checkbox","description","isIndeterminate","checked","onChange","fontSize","isCheckedOrIndeterminate","boxStyle","inputStyle","labelContainerStyle","labelTextStyle","descriptionStyle","Switch","padding","travel","trackStyle","thumbStyle","Textarea","autoResize","minRows","maxRows","showCount","maxLength","defaultValue","charCount","setCharCount","internalRef","useRef","textareaRef","lineHeightPx","minHeight","maxHeight","adjustHeight","useCallback","textarea","scrollHeight","newHeight","useEffect","initialValue","getTextareaStyle","countStyle","handleChange","sizeWidths","CloseIcon","Modal","isOpen","onClose","title","closeOnOverlayClick","closeOnEscape","showCloseButton","modalRef","previousActiveElement","modal","handleKeyDown","focusableElements","firstElement","lastElement","_a","handleOverlayClick","overlayStyle","modalStyle","headerStyle","titleContainerStyle","titleStyle","closeButtonStyle","contentStyle","modalContent","Fragment","node","createPortal","intentConfig","Alert","icon","showIcon","action","isDismissible","onDismiss","variantColors","alertStyle","actionsStyle","dismissButtonStyle","Tooltip","content","placement","delay","isVisible","setIsVisible","position","setPosition","triggerRef","tooltipRef","timeoutRef","calculatePosition","triggerRect","tooltipRect","gap","top","left","showTooltip","hideTooltip","triggerStyle","tooltipStyle","arrowStyle","Badge","colorValue","badgeStyle","sizeMap","SpinnerLoader","color","Dots","dotSize","i","Pulse","Loader","renderLoader","Spinner","Skeleton","width","height","radius","animate","skeletonStyle","shimmerStyle","SkeletonText","lines","lastLineWidth","_","Divider","orientation","labelPosition","isHorizontal","lineStyle","showStartLine","showEndLine","EmptyState","secondaryAction","containerStyle","EmptyStateIcon","useMediaQuery","query","matches","setMatches","mediaQuery","useIsMobile","useIsTablet","useIsDesktop","usePrefersReducedMotion","usePrefersDarkMode","useDisclosure","options","defaultIsOpen","onOpenProp","onCloseProp","setIsOpen","onOpen","onToggle","newState"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./cssVariables-D_naqeoR.cjs");exports.ThemeContext=e.ThemeContext;exports.ThemeProvider=e.ThemeProvider;exports.cssVar=e.cssVar;exports.darkTheme=e.darkTheme;exports.lightTheme=e.lightTheme;exports.useTheme=e.useTheme;exports.useThemeColors=e.useThemeColors;
2
+ //# sourceMappingURL=themes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themes.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './design-system/themes/index'
2
+ export {}
package/dist/themes.js ADDED
@@ -0,0 +1,11 @@
1
+ import { b as a, T as h, c as m, d as r, l as T, u as o, a as t } from "./cssVariables-CU3jCd8f.js";
2
+ export {
3
+ a as ThemeContext,
4
+ h as ThemeProvider,
5
+ m as cssVar,
6
+ r as darkTheme,
7
+ T as lightTheme,
8
+ o as useTheme,
9
+ t as useThemeColors
10
+ };
11
+ //# sourceMappingURL=themes.js.map