@jiwambe/components 0.2.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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +367 -0
  3. package/dist/client.d.ts +40 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +46 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/components/Accordion/Accordion.d.ts +74 -0
  8. package/dist/components/Accordion/Accordion.d.ts.map +1 -0
  9. package/dist/components/Accordion/Accordion.js +297 -0
  10. package/dist/components/Accordion/Accordion.js.map +1 -0
  11. package/dist/components/Box/Box.d.ts +56 -0
  12. package/dist/components/Box/Box.d.ts.map +1 -0
  13. package/dist/components/Box/Box.js +51 -0
  14. package/dist/components/Box/Box.js.map +1 -0
  15. package/dist/components/Breadcrumb/Breadcrumb.d.ts +66 -0
  16. package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -0
  17. package/dist/components/Button/Button.d.ts +54 -0
  18. package/dist/components/Button/Button.d.ts.map +1 -0
  19. package/dist/components/Button/Button.js +92 -0
  20. package/dist/components/Button/Button.js.map +1 -0
  21. package/dist/components/Card/Card.d.ts +54 -0
  22. package/dist/components/Card/Card.d.ts.map +1 -0
  23. package/dist/components/Card/Card.js +98 -0
  24. package/dist/components/Card/Card.js.map +1 -0
  25. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +61 -0
  26. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -0
  27. package/dist/components/CheckboxGroup/CheckboxGroup.js +205 -0
  28. package/dist/components/CheckboxGroup/CheckboxGroup.js.map +1 -0
  29. package/dist/components/Container/Container.d.ts +72 -0
  30. package/dist/components/Container/Container.d.ts.map +1 -0
  31. package/dist/components/Container/Container.js +69 -0
  32. package/dist/components/Container/Container.js.map +1 -0
  33. package/dist/components/DateInput/DateInput.d.ts +61 -0
  34. package/dist/components/DateInput/DateInput.d.ts.map +1 -0
  35. package/dist/components/DateInput/DateInput.js +234 -0
  36. package/dist/components/DateInput/DateInput.js.map +1 -0
  37. package/dist/components/Divider/Divider.d.ts +44 -0
  38. package/dist/components/Divider/Divider.d.ts.map +1 -0
  39. package/dist/components/Divider/Divider.js +35 -0
  40. package/dist/components/Divider/Divider.js.map +1 -0
  41. package/dist/components/Drawer/Drawer.d.ts +35 -0
  42. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  43. package/dist/components/Drawer/Drawer.js +37 -0
  44. package/dist/components/Drawer/Drawer.js.map +1 -0
  45. package/dist/components/FAQ/FAQ.d.ts +40 -0
  46. package/dist/components/FAQ/FAQ.d.ts.map +1 -0
  47. package/dist/components/FAQ/FAQ.js +161 -0
  48. package/dist/components/FAQ/FAQ.js.map +1 -0
  49. package/dist/components/Grid/Grid.d.ts +61 -0
  50. package/dist/components/Grid/Grid.d.ts.map +1 -0
  51. package/dist/components/Grid/Grid.js +95 -0
  52. package/dist/components/Grid/Grid.js.map +1 -0
  53. package/dist/components/Icon/Icon.d.ts +21 -0
  54. package/dist/components/Icon/Icon.d.ts.map +1 -0
  55. package/dist/components/Icon/Icon.js +167 -0
  56. package/dist/components/Icon/Icon.js.map +1 -0
  57. package/dist/components/Link/Link.d.ts +49 -0
  58. package/dist/components/Link/Link.d.ts.map +1 -0
  59. package/dist/components/Link/Link.js +70 -0
  60. package/dist/components/Link/Link.js.map +1 -0
  61. package/dist/components/List/List.d.ts +36 -0
  62. package/dist/components/List/List.d.ts.map +1 -0
  63. package/dist/components/List/List.js +42 -0
  64. package/dist/components/List/List.js.map +1 -0
  65. package/dist/components/List/index.d.ts +3 -0
  66. package/dist/components/List/index.d.ts.map +1 -0
  67. package/dist/components/Overlay/Overlay.d.ts +35 -0
  68. package/dist/components/Overlay/Overlay.d.ts.map +1 -0
  69. package/dist/components/Overlay/Overlay.js +51 -0
  70. package/dist/components/Overlay/Overlay.js.map +1 -0
  71. package/dist/components/PhoneInput/PhoneInput.d.ts +55 -0
  72. package/dist/components/PhoneInput/PhoneInput.d.ts.map +1 -0
  73. package/dist/components/PhoneInput/PhoneInput.js +255 -0
  74. package/dist/components/PhoneInput/PhoneInput.js.map +1 -0
  75. package/dist/components/Popover/Popover.d.ts +46 -0
  76. package/dist/components/Popover/Popover.d.ts.map +1 -0
  77. package/dist/components/Popover/Popover.js +57 -0
  78. package/dist/components/Popover/Popover.js.map +1 -0
  79. package/dist/components/ProductImage/ProductImage.d.ts +78 -0
  80. package/dist/components/ProductImage/ProductImage.d.ts.map +1 -0
  81. package/dist/components/ProductImage/ProductImage.js +220 -0
  82. package/dist/components/ProductImage/ProductImage.js.map +1 -0
  83. package/dist/components/RadioGroup/RadioGroup.d.ts +63 -0
  84. package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -0
  85. package/dist/components/RadioGroup/RadioGroup.js +233 -0
  86. package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
  87. package/dist/components/Section/Section.d.ts +44 -0
  88. package/dist/components/Section/Section.d.ts.map +1 -0
  89. package/dist/components/Section/Section.js +48 -0
  90. package/dist/components/Section/Section.js.map +1 -0
  91. package/dist/components/Select/Select.d.ts +47 -0
  92. package/dist/components/Select/Select.d.ts.map +1 -0
  93. package/dist/components/Select/Select.js +153 -0
  94. package/dist/components/Select/Select.js.map +1 -0
  95. package/dist/components/SelectTab/SelectTab.d.ts +62 -0
  96. package/dist/components/SelectTab/SelectTab.d.ts.map +1 -0
  97. package/dist/components/SelectTab/SelectTab.js +192 -0
  98. package/dist/components/SelectTab/SelectTab.js.map +1 -0
  99. package/dist/components/Skeleton/Skeleton.d.ts +87 -0
  100. package/dist/components/Skeleton/Skeleton.d.ts.map +1 -0
  101. package/dist/components/Skeleton/Skeleton.js +97 -0
  102. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  103. package/dist/components/Skeleton/index.d.ts +3 -0
  104. package/dist/components/Skeleton/index.d.ts.map +1 -0
  105. package/dist/components/Slider/Slider.d.ts +47 -0
  106. package/dist/components/Slider/Slider.d.ts.map +1 -0
  107. package/dist/components/Slider/Slider.js +147 -0
  108. package/dist/components/Slider/Slider.js.map +1 -0
  109. package/dist/components/Stack/Stack.d.ts +145 -0
  110. package/dist/components/Stack/Stack.d.ts.map +1 -0
  111. package/dist/components/Stack/Stack.js +80 -0
  112. package/dist/components/Stack/Stack.js.map +1 -0
  113. package/dist/components/Tab/Tab.d.ts +38 -0
  114. package/dist/components/Tab/Tab.d.ts.map +1 -0
  115. package/dist/components/Tab/Tab.js +146 -0
  116. package/dist/components/Tab/Tab.js.map +1 -0
  117. package/dist/components/TextArea/TextArea.d.ts +32 -0
  118. package/dist/components/TextArea/TextArea.d.ts.map +1 -0
  119. package/dist/components/TextArea/TextArea.js +118 -0
  120. package/dist/components/TextArea/TextArea.js.map +1 -0
  121. package/dist/components/TextInput/TextInput.d.ts +35 -0
  122. package/dist/components/TextInput/TextInput.d.ts.map +1 -0
  123. package/dist/components/TextInput/TextInput.js +128 -0
  124. package/dist/components/TextInput/TextInput.js.map +1 -0
  125. package/dist/components/Toggle/Toggle.d.ts +83 -0
  126. package/dist/components/Toggle/Toggle.d.ts.map +1 -0
  127. package/dist/components/Toggle/Toggle.js +121 -0
  128. package/dist/components/Toggle/Toggle.js.map +1 -0
  129. package/dist/components/Typography/Typography.d.ts +321 -0
  130. package/dist/components/Typography/Typography.d.ts.map +1 -0
  131. package/dist/components/Typography/Typography.js +21 -0
  132. package/dist/components/Typography/Typography.js.map +1 -0
  133. package/dist/components/UploadInput/UploadInput.d.ts +39 -0
  134. package/dist/components/UploadInput/UploadInput.d.ts.map +1 -0
  135. package/dist/components/UploadInput/UploadInput.js +297 -0
  136. package/dist/components/UploadInput/UploadInput.js.map +1 -0
  137. package/dist/components/index.d.ts +65 -0
  138. package/dist/components/index.d.ts.map +1 -0
  139. package/dist/index.d.ts +7 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +69 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/plugin/jiwambe-plugin.d.ts +37 -0
  144. package/dist/plugin/jiwambe-plugin.d.ts.map +1 -0
  145. package/dist/plugin/jiwambe-plugin.js +640 -0
  146. package/dist/plugin/jiwambe-plugin.js.map +1 -0
  147. package/dist/server.d.ts +22 -0
  148. package/dist/server.d.ts.map +1 -0
  149. package/dist/server.js +23 -0
  150. package/dist/server.js.map +1 -0
  151. package/dist/types/index.d.ts +103 -0
  152. package/dist/types/index.d.ts.map +1 -0
  153. package/dist/types/layout.d.ts +138 -0
  154. package/dist/types/layout.d.ts.map +1 -0
  155. package/dist/types/list.d.ts +69 -0
  156. package/dist/types/list.d.ts.map +1 -0
  157. package/dist/types/list.js +9 -0
  158. package/dist/types/list.js.map +1 -0
  159. package/dist/types/skeleton.d.ts +38 -0
  160. package/dist/types/skeleton.d.ts.map +1 -0
  161. package/dist/types/skeleton.js +13 -0
  162. package/dist/types/skeleton.js.map +1 -0
  163. package/dist/types/spacing.d.ts +105 -0
  164. package/dist/types/spacing.d.ts.map +1 -0
  165. package/dist/utils/layoutClasses.d.ts +44 -0
  166. package/dist/utils/layoutClasses.d.ts.map +1 -0
  167. package/dist/utils/layoutClasses.js +88 -0
  168. package/dist/utils/layoutClasses.js.map +1 -0
  169. package/dist/utils/responsive-props.d.ts +60 -0
  170. package/dist/utils/responsive-props.d.ts.map +1 -0
  171. package/dist/utils/responsive-props.js +184 -0
  172. package/dist/utils/responsive-props.js.map +1 -0
  173. package/dist/utils/spacing.d.ts +52 -0
  174. package/dist/utils/spacing.d.ts.map +1 -0
  175. package/dist/utils/spacing.js +625 -0
  176. package/dist/utils/spacing.js.map +1 -0
  177. package/package.json +96 -0
  178. package/tailwind.preset.d.ts +3 -0
  179. package/tailwind.preset.ts +21 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jiwambe-plugin.js","sources":["../../src/plugin/jiwambe-plugin.ts"],"sourcesContent":["import plugin from 'tailwindcss/plugin';\n\n// ---------------------------------------------------------------------------\n// Public types\n// ---------------------------------------------------------------------------\n\nexport interface TypographyDef {\n fontFamily: string;\n fontSize: string;\n fontWeight: string;\n lineHeight: string;\n letterSpacing?: string;\n textWrap?: string;\n}\n\nexport interface JiwambePluginOptions {\n /** Override or extend semantic color token mappings. */\n colors?: Record<string, string>;\n /** Override or extend spacing tokens. */\n spacing?: Record<string, string>;\n /** Override or extend border width tokens. */\n borderWidth?: Record<string, string>;\n /** Override or extend border radius tokens. */\n borderRadius?: Record<string, string>;\n /** Override or extend elevation (box-shadow) tokens. */\n elevation?: Record<string, string>;\n /** Override or extend typography definitions. Partial overrides are merged with defaults. */\n typography?: Record<string, Partial<TypographyDef>>;\n /** Override primary and/or secondary font families. */\n fontFamily?: { primary?: string; secondary?: string };\n}\n\n// ---------------------------------------------------------------------------\n// Base color palette\n// ---------------------------------------------------------------------------\n\nconst baseColors: Record<string, string> = {\n // Neutral\n 'neutral-0': '#FFFFFF',\n 'neutral-25': '#FAFBFB',\n 'neutral-50': '#F5F6F6',\n 'neutral-100': '#E5E8E7',\n 'neutral-150': '#DADEDC',\n 'neutral-200': '#CED3D2',\n 'neutral-250': '#BDC4C3',\n 'neutral-300': '#ABB5B3',\n 'neutral-350': '#97A2A0',\n 'neutral-400': '#828E8C',\n 'neutral-450': '#74817F',\n 'neutral-500': '#667472',\n 'neutral-600': '#586261',\n 'neutral-700': '#4B5353',\n 'neutral-800': '#424847',\n 'neutral-850': '#393F3E',\n 'neutral-900': '#303635',\n 'neutral-950': '#181B1B',\n 'neutral-950--t75': 'rgba(24, 27, 27, 0.75)',\n 'neutral-950--t50': 'rgba(24, 27, 27, 0.50)',\n 'neutral-950--t25': 'rgba(24, 27, 27, 0.25)',\n 'neutral-950--t10': 'rgba(24, 27, 27, 0.10)',\n\n // Green\n 'green-50': '#ECF9F3',\n 'green-100': '#D9F2E7',\n 'green-150': '#C7ECDE',\n 'green-200': '#B4E6D4',\n 'green-250': '#9ADEC8',\n 'green-300': '#80D5BB',\n 'green-350': '#64C9AB',\n 'green-400': '#4DC2A3',\n 'green-450': '#33B897',\n 'green-500': '#19AE8A',\n 'green-600': '#109274',\n 'green-700': '#0D755F',\n 'green-800': '#0B6556',\n 'green-850': '#065E4F',\n 'green-900': '#005748',\n 'green-950': '#00332A',\n 'green-950--t75': 'rgba(0, 51, 42, 0.75)',\n 'green-950--t50': 'rgba(0, 51, 42, 0.50)',\n 'green-950--t25': 'rgba(0, 51, 42, 0.25)',\n 'green-950--t10': 'rgba(0, 51, 42, 0.10)',\n\n // Red\n 'red-50': '#FEF3F1',\n 'red-100': '#FCE6E3',\n 'red-150': '#FAD5D1',\n 'red-200': '#F8C4BF',\n 'red-250': '#F9ADA5',\n 'red-300': '#F9958B',\n 'red-400': '#F67265',\n 'red-500': '#F34F3F',\n 'red-600': '#E52B19',\n 'red-700': '#CF2717',\n 'red-800': '#93251A',\n 'red-850': '#791F16',\n 'red-900': '#5F1811',\n 'red-950': '#340D09',\n 'red-950--t75': 'rgba(52, 13, 9, 0.75)',\n 'red-950--t50': 'rgba(52, 13, 9, 0.50)',\n 'red-950--t25': 'rgba(52, 13, 9, 0.25)',\n 'red-950--t10': 'rgba(52, 13, 9, 0.10)',\n\n // Yellow\n 'yellow-50': '#FEFCF1',\n 'yellow-100': '#FCF8E3',\n 'yellow-150': '#FAF4D1',\n 'yellow-200': '#F8EFBF',\n 'yellow-250': '#F9EBA5',\n 'yellow-300': '#F9E68B',\n 'yellow-350': '#F8E278',\n 'yellow-400': '#F7DE64',\n 'yellow-500': '#F3D53F',\n 'yellow-600': '#EBC714',\n 'yellow-700': '#BC8E10',\n 'yellow-800': '#826217',\n 'yellow-850': '#6D5213',\n 'yellow-900': '#57410F',\n 'yellow-950': '#2B2108',\n 'yellow-950--t75': 'rgba(43, 33, 8, 0.75)',\n 'yellow-950--t50': 'rgba(43, 33, 8, 0.50)',\n 'yellow-950--t25': 'rgba(43, 33, 8, 0.25)',\n 'yellow-950--t10': 'rgba(43, 33, 8, 0.10)',\n};\n\n// ---------------------------------------------------------------------------\n// Helper – resolve a base color reference to its hex, with optional opacity\n// ---------------------------------------------------------------------------\n\nexport function resolve(ref: string, opacity?: number): string {\n const hex = baseColors[ref];\n if (!hex) return ref; // pass through raw hex / css value\n\n if (opacity === undefined || opacity === 100) return hex;\n\n // Convert hex to rgb then apply opacity via rgba()\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n return `rgba(${r}, ${g}, ${b}, ${(opacity / 100).toFixed(2)})`;\n}\n\n// ---------------------------------------------------------------------------\n// Default semantic token mappings\n// ---------------------------------------------------------------------------\n\nfunction defaultSemanticColors(): Record<string, string> {\n return {\n // Text\n 'text-primary': resolve('neutral-950'),\n 'text-secondary': resolve('neutral-950', 75),\n 'text-disabled': resolve('neutral-950', 50),\n 'text-primary-inverse': resolve('neutral-0'),\n 'text-secondary-inverse': resolve('neutral-0', 75),\n 'text-inverse-disabled': resolve('neutral-0', 50),\n 'text-action-primary': resolve('neutral-0'),\n 'text-action-primary-disabled': resolve('neutral-0', 50),\n 'text-action-secondary': resolve('neutral-950'),\n 'text-action-secondary-disabled': resolve('neutral-950', 50),\n 'text-action-tertiary': resolve('neutral-0'),\n 'text-action-tertiary-hover': resolve('neutral-0', 75),\n 'text-action-tertiary-disabled': resolve('neutral-0', 50),\n 'text-err': resolve('red-950'),\n 'text-err-disabled': resolve('red-950', 50),\n\n // Link\n 'link-primary': resolve('green-900'),\n 'link-primary-hover': resolve('green-950', 75),\n 'link-primary-disabled': resolve('green-950', 50),\n 'link-secondary': resolve('neutral-950'),\n 'link-secondary-hover': resolve('neutral-950', 75),\n 'link-secondary-disabled': resolve('neutral-950', 50),\n 'link-tertiary': resolve('neutral-950', 50),\n 'link-tertiary-hover': resolve('neutral-950', 25),\n 'link-tertiary-disabled': resolve('neutral-950', 25),\n 'link-inverse': resolve('neutral-0'),\n 'link-inverse-hover': resolve('neutral-0', 75),\n 'link-inverse-disabled': resolve('neutral-0', 50),\n\n // Background fills\n 'fill-bg-primary': resolve('neutral-0'),\n 'fill-bg-secondary': resolve('neutral-50'),\n 'fill-bg-tertiary': resolve('green-900'),\n 'fill-bg-err': resolve('red-100'),\n 'fill-bg-info': resolve('neutral-0'),\n 'fill-bg-dimmer': resolve('neutral-950', 75),\n\n // Action fills\n 'fill-action-primary': resolve('green-900'),\n 'fill-action-primary-hover': resolve('green-950'),\n 'fill-action-primary-active': resolve('green-950'),\n 'fill-action-primary-focus': resolve('green-900'),\n 'fill-action-primary-selected': resolve('green-900'),\n 'fill-action-primary-disabled': resolve('green-900'),\n 'fill-action-secondary': resolve('neutral-100'),\n 'fill-action-secondary-hover': resolve('neutral-200'),\n 'fill-action-secondary-active': resolve('neutral-200'),\n 'fill-action-secondary-focus': resolve('neutral-100'),\n 'fill-action-secondary-selected': resolve('neutral-100'),\n 'fill-action-secondary-disabled': resolve('neutral-100'),\n 'fill-action-inverse': resolve('neutral-0'),\n 'fill-action-inverse-hover': resolve('neutral-0', 90),\n 'fill-action-inverse-active': resolve('neutral-0', 90),\n 'fill-action-inverse-focus': resolve('neutral-0'),\n 'fill-action-inverse-selected': resolve('neutral-0'),\n 'fill-action-inverse-disabled': resolve('neutral-0'),\n 'fill-action-ghost': resolve('neutral-0', 0),\n 'fill-action-ghost-hover': resolve('neutral-0', 10),\n 'fill-action-ghost-active': resolve('neutral-0', 10),\n 'fill-action-ghost-focus': resolve('neutral-0', 0),\n 'fill-action-ghost-selected': resolve('neutral-0', 0),\n 'fill-action-ghost-disabled': resolve('neutral-0', 0),\n\n // Form fills\n 'fill-form-primary': resolve('neutral-0'),\n 'fill-form-primary-hover': resolve('neutral-0'),\n 'fill-form-primary-active': resolve('neutral-0'),\n 'fill-form-primary-focus': resolve('neutral-0'),\n 'fill-form-primary-selected': resolve('neutral-0'),\n 'fill-form-primary-disabled': resolve('neutral-0'),\n\n // Borders\n 'border-light': resolve('neutral-100'),\n 'border-heavy': resolve('neutral-200'),\n 'border-inverse': resolve('neutral-0'),\n 'border-focus': resolve('green-900'),\n 'border-err': resolve('red-800'),\n\n // Form borders\n 'border-form-primary': resolve('neutral-300'),\n 'border-form-primary-hover': resolve('neutral-600'),\n 'border-form-primary-active': resolve('green-900'),\n 'border-form-primary-focus': resolve('green-900'),\n 'border-form-primary-selected': resolve('green-900'),\n 'border-form-primary-disabled': resolve('neutral-200'),\n\n // Icons\n 'icon-primary': resolve('neutral-950'),\n 'icon-primary-disabled': resolve('neutral-950', 50),\n 'icon-inverse': resolve('neutral-0'),\n 'icon-inverse-disabled': resolve('neutral-0', 50),\n 'icon-err': resolve('red-950'),\n 'icon-err-disabled': resolve('red-950', 50),\n };\n}\n\n// ---------------------------------------------------------------------------\n// Typography token definitions\n// ---------------------------------------------------------------------------\n\nconst fontFamilyPrimary = '\"Instrument Sans\", sans-serif';\nconst fontFamilySecondary = '\"Inter\", sans-serif';\n\nconst typographyTokens: Record<string, TypographyDef> = {\n 'title-sm': {\n fontFamily: fontFamilyPrimary,\n fontSize: '1.0625rem',\n fontWeight: '600',\n lineHeight: '1.2',\n letterSpacing: '-0.005em',\n textWrap: 'balance',\n },\n 'title-md': {\n fontFamily: fontFamilyPrimary,\n fontSize: '1.1875rem',\n fontWeight: '600',\n lineHeight: '1.2',\n letterSpacing: '0.02em',\n textWrap: 'balance',\n },\n 'title-lg': {\n fontFamily: fontFamilyPrimary,\n fontSize: 'clamp(1.5625rem, 1.4375rem + 0.625vw, 2rem)',\n fontWeight: '600',\n lineHeight: '1.1',\n letterSpacing: '-0.005em',\n textWrap: 'balance',\n },\n 'title-xl': {\n fontFamily: fontFamilyPrimary,\n fontSize: 'clamp(3rem, 2.7857rem + 1.0714vw, 3.75rem)',\n fontWeight: '680',\n lineHeight: '1.1',\n letterSpacing: '-0.005em',\n textWrap: 'balance',\n },\n 'text-xs': {\n fontFamily: fontFamilySecondary,\n fontSize: '0.75rem',\n fontWeight: '400',\n lineHeight: '1.4',\n letterSpacing: '-0.005em',\n textWrap: 'pretty',\n },\n 'text-xs-bold': {\n fontFamily: fontFamilySecondary,\n fontSize: '0.75rem',\n fontWeight: '600',\n lineHeight: '1.4',\n letterSpacing: '-0.005em',\n textWrap: 'pretty',\n },\n 'text-sm': {\n fontFamily: fontFamilySecondary,\n fontSize: '1rem',\n fontWeight: '400',\n lineHeight: '1.4',\n textWrap: 'pretty',\n },\n 'text-sm-bold': {\n fontFamily: fontFamilySecondary,\n fontSize: '1rem',\n fontWeight: '600',\n lineHeight: '1.4',\n textWrap: 'pretty',\n },\n 'text-md': {\n fontFamily: fontFamilySecondary,\n fontSize: '1.125rem',\n fontWeight: '400',\n lineHeight: '1.4',\n textWrap: 'pretty',\n },\n 'text-md-bold': {\n fontFamily: fontFamilySecondary,\n fontSize: '1.125rem',\n fontWeight: '600',\n lineHeight: '1.4',\n textWrap: 'pretty',\n },\n 'text-xl': {\n fontFamily: fontFamilyPrimary,\n fontSize: 'clamp(3rem, 2.7857rem + 1.0714vw, 3.75rem)',\n fontWeight: '680',\n lineHeight: '1.1',\n letterSpacing: '-0.005em',\n textWrap: 'pretty',\n },\n 'form-text': {\n fontFamily: fontFamilySecondary,\n fontSize: '1.125rem',\n fontWeight: '400',\n lineHeight: '1.4',\n textWrap: 'pretty',\n },\n 'form-label': {\n fontFamily: fontFamilyPrimary,\n fontSize: '1.1875rem',\n fontWeight: '600',\n lineHeight: '1.2',\n letterSpacing: '-0.005em',\n textWrap: 'balance',\n },\n 'btn-small': {\n fontFamily: fontFamilySecondary,\n fontSize: '1rem',\n fontWeight: '500',\n lineHeight: '1.4',\n },\n 'btn-reg': {\n fontFamily: fontFamilySecondary,\n fontSize: '1.125rem',\n fontWeight: '500',\n lineHeight: '1.4',\n },\n 'link-md': {\n fontFamily: fontFamilyPrimary,\n fontSize: '1.1875rem',\n fontWeight: '600',\n lineHeight: '1.2',\n letterSpacing: '0.02em',\n },\n};\n\n// ---------------------------------------------------------------------------\n// Spacing tokens\n// ---------------------------------------------------------------------------\n\nconst spacingTokens: Record<string, string> = {\n // Fixed\n 'space-0': '0rem',\n 'space-0-25': '0.0625rem',\n 'space-1': '0.25rem',\n 'space-2': '0.5rem',\n 'space-3': '0.75rem',\n 'space-4': '1rem',\n 'space-5': '1.25rem',\n 'space-6': '1.5rem',\n 'space-8': '2rem',\n 'space-9': '2.25rem',\n 'space-12': '3rem',\n 'space-16': '4rem',\n 'space-18': '4.5rem',\n 'space-24': '6rem',\n 'space-30': '7.5rem',\n 'space-36': '9rem',\n 'space-48': '12rem',\n 'space-72': '18rem',\n\n // Fluid\n 'space-fluid-1-2': 'clamp(0.25rem, 0.1706rem + 0.3968vw, 0.5rem)',\n 'space-fluid-2-4': 'clamp(0.5rem, 0.3413rem + 0.7937vw, 1rem)',\n 'space-fluid-4-5': 'clamp(1rem, 0.9206rem + 0.3968vw, 1.25rem)',\n 'space-fluid-4-6': 'clamp(1rem, 0.8413rem + 0.7937vw, 1.5rem)',\n 'space-fluid-4-8': 'clamp(1rem, 0.6825rem + 1.5873vw, 2rem)',\n 'space-fluid-4-9': 'clamp(1rem, 0.6032rem + 1.9841vw, 2.25rem)',\n 'space-fluid-5-6': 'clamp(1.25rem, 1.1706rem + 0.3968vw, 1.5rem)',\n 'space-fluid-6-9': 'clamp(1.5rem, 1.2619rem + 1.1905vw, 2.25rem)',\n 'space-fluid-8-16': 'clamp(2rem, 1.3651rem + 3.1746vw, 4rem)',\n 'space-fluid-16-18': 'clamp(4rem, 3.8413rem + 0.7937vw, 4.5rem)',\n 'space-fluid-30-36': 'clamp(7.5rem, 7.0238rem + 2.381vw, 9rem)',\n 'space-fluid-48-72': 'clamp(12rem, 10.0952rem + 9.5238vw, 18rem)',\n};\n\n// ---------------------------------------------------------------------------\n// Border width tokens\n// ---------------------------------------------------------------------------\n\nconst borderWidthTokens: Record<string, string> = {\n 'border-none': '0',\n 'border-xs': '.0625rem',\n 'border-sm': '.078125rem',\n 'border-md': '.09375rem',\n};\n\n// ---------------------------------------------------------------------------\n// Border radius tokens\n// ---------------------------------------------------------------------------\n\nconst borderRadiusTokens: Record<string, string> = {\n 'rad-none': '0',\n 'rad-xs': '.375rem',\n 'rad-sm': '.75rem',\n 'rad-md': '1rem',\n 'rad-lg': '1.25rem',\n 'rad-xl': '1.5rem',\n 'rad-rounded': '100rem',\n};\n\n// ---------------------------------------------------------------------------\n// Elevation (box-shadow) tokens\n// ---------------------------------------------------------------------------\n\nconst elevationTokens: Record<string, string> = {\n 'elevation-low': '0 2px 8px 0 var(--col-neutral-950--t10)',\n 'elevation-normal': '0 2px 8px 4px var(--col-neutral-950--t10)',\n};\n\n// ---------------------------------------------------------------------------\n// Canonical design token primitives (source of truth)\n// ---------------------------------------------------------------------------\n\nconst canonicalColourPrimitives: Record<string, string> = {\n 'col-neutral-0': 'hsla(0, 0%, 100%, 1)',\n 'col-neutral-0--t0': 'hsla(0, 0%, 100%, 0)',\n 'col-neutral-0--t10': 'hsla(0, 0%, 100%, 0.1)',\n 'col-neutral-0--t25': 'hsla(0, 0%, 100%, 0.25)',\n 'col-neutral-0--t50': 'hsla(0, 0%, 100%, 0.5)',\n 'col-neutral-0--t75': 'hsla(0, 0%, 100%, 0.75)',\n 'col-neutral-0--t90': 'hsla(0, 0%, 100%, 0.9)',\n 'col-neutral-50': 'hsla(180, 5%, 96%, 1)',\n 'col-neutral-100': 'hsla(160, 6%, 90%, 1)',\n 'col-neutral-200': 'hsla(168, 5%, 82%, 1)',\n 'col-neutral-300': 'hsla(168, 6%, 69%, 1)',\n 'col-neutral-400': 'hsla(170, 5%, 53%, 1)',\n 'col-neutral-500': 'hsla(171, 6%, 43%, 1)',\n 'col-neutral-600': 'hsla(174, 5%, 36%, 1)',\n 'col-neutral-700': 'hsla(180, 5%, 31%, 1)',\n 'col-neutral-800': 'hsla(170, 4%, 27%, 1)',\n 'col-neutral-900': 'hsla(170, 6%, 20%, 1)',\n 'col-neutral-950': 'hsla(180, 5%, 10%, 1)',\n 'col-neutral-950--t10': 'hsla(180, 5%, 10%, 0.1)',\n 'col-neutral-950--t25': 'hsla(180, 5%, 10%, 0.25)',\n 'col-neutral-950--t50': 'hsla(180, 5%, 10%, 0.5)',\n 'col-neutral-950--t75': 'hsla(180, 5%, 10%, 0.75)',\n 'col-neutral-950--t90': 'hsla(180, 5%, 10%, 0.9)',\n 'col-green-50': 'hsla(156, 24%, 96%, 1)',\n 'col-green-100': 'hsla(154, 49%, 90%, 1)',\n 'col-green-200': 'hsla(158, 50%, 80%, 1)',\n 'col-green-300': 'hsla(162, 50%, 67%, 1)',\n 'col-green-400': 'hsla(164, 52%, 52%, 1)',\n 'col-green-500': 'hsla(166, 75%, 39%, 1)',\n 'col-green-600': 'hsla(166, 80%, 32%, 1)',\n 'col-green-700': 'hsla(167, 80%, 25%, 1)',\n 'col-green-800': 'hsla(170, 80%, 22%, 1)',\n 'col-green-900': 'hsla(170, 100%, 17%, 1)',\n 'col-green-950': 'hsla(170, 100%, 10%, 1)',\n 'col-green-950--t10': 'hsla(170, 100%, 10%, 0.1)',\n 'col-green-950--t50': 'hsla(170, 100%, 10%, 0.5)',\n 'col-green-950--t75': 'hsla(170, 100%, 10%, 0.75)',\n 'col-green-950--t90': 'hsla(170, 100%, 10%, 0.9)',\n 'col-red-50': 'hsla(7, 60%, 97%, 1)',\n 'col-red-100': 'hsla(7, 81%, 94%, 1)',\n 'col-red-200': 'hsla(5, 80%, 86%, 1)',\n 'col-red-300': 'hsla(5, 90%, 76%, 1)',\n 'col-red-400': 'hsla(5, 90%, 68%, 1)',\n 'col-red-500': 'hsla(5, 88%, 60%, 1)',\n 'col-red-600': 'hsla(5, 80%, 50%, 1)',\n 'col-red-700': 'hsla(5, 80%, 45%, 1)',\n 'col-red-800': 'hsla(5, 70%, 34%, 1)',\n 'col-red-900': 'hsla(5, 70%, 22%, 1)',\n 'col-red-950': 'hsla(5, 70%, 12%, 1)',\n 'col-red-950--t10': 'hsla(5, 70%, 12%, 0.1)',\n 'col-red-950--t50': 'hsla(5, 70%, 12%, 0.5)',\n 'col-red-950--t75': 'hsla(5, 70%, 12%, 0.75)',\n 'col-red-950--t90': 'hsla(5, 70%, 12%, 0.9)',\n 'col-yellow-50': 'hsla(47, 60%, 97%, 1)',\n 'col-yellow-100': 'hsla(50, 81%, 94%, 1)',\n 'col-yellow-200': 'hsla(50, 80%, 86%, 1)',\n 'col-yellow-300': 'hsla(50, 90%, 76%, 1)',\n 'col-yellow-400': 'hsla(50, 90%, 68%, 1)',\n 'col-yellow-500': 'hsla(50, 88%, 60%, 1)',\n 'col-yellow-600': 'hsla(50, 84%, 50%, 1)',\n 'col-yellow-700': 'hsla(44, 84%, 40%, 1)',\n 'col-yellow-800': 'hsla(42, 70%, 30%, 1)',\n 'col-yellow-900': 'hsla(42, 71%, 20%, 1)',\n 'col-yellow-950': 'hsla(42, 69%, 10%, 1)',\n 'col-yellow-950--t10': 'hsla(42, 69%, 10%, 0.1)',\n 'col-yellow-950--t50': 'hsla(42, 69%, 10%, 0.5)',\n 'col-yellow-950--t75': 'hsla(42, 69%, 10%, 0.75)',\n 'col-yellow-950--t90': 'hsla(42, 69%, 10%, 0.9)',\n};\n\nconst canonicalTransitionPrimitives: Record<string, string> = {\n 'trans-timing-light': 'ease-out',\n 'trans-timing-normal': 'ease-out',\n 'trans-timing-heavy': 'ease-in',\n 'trans-duration-snap': '30ms',\n 'trans-duration-normal': '120ms',\n 'trans-duration-slow': '300ms',\n};\n\nconst canonicalTypographyPrimitives: Record<string, string> = {\n 'font-size-fluid-25-32': 'clamp(1.5625rem, 1.4375rem + 0.625vw, 2rem)',\n 'font-size-fluid-48-60': 'clamp(3rem, 2.7857rem + 1.0714vw, 3.75rem)',\n 'font-family-primary': '\"Instrument Sans\", sans-serif',\n 'font-family-secondary': \"'Inter', system-ui, sans-serif\",\n 'font-size-a-sm': '1.0625rem',\n 'font-size-a-md': '1.1875rem',\n 'font-size-a-lg-fluid': 'var(--font-size-fluid-25-32)',\n 'font-size-a-xl-fluid': 'var(--font-size-fluid-48-60)',\n 'font-size-b-xs': '0.75rem',\n 'font-size-b-sm': '1rem',\n 'font-size-b-md': '1.125rem',\n 'font-weight-xs': '400',\n 'font-weight-sm': '500',\n 'font-weight-md': '600',\n 'font-weight-lg': '680',\n 'font-line-tight': '1.1',\n 'font-line-normal': '1.2',\n 'font-line-loose': '1.4',\n 'font-ltrspc-xs': '-0.005em',\n 'font-ltrspc-sm': '0.01em',\n 'font-ltrspc-md': '0.02em',\n};\n\n// ---------------------------------------------------------------------------\n// Breakpoints\n// ---------------------------------------------------------------------------\n\nconst screens: Record<string, string> = {\n xs: '0px',\n sm: '600px',\n md: '800px',\n lg: '940px',\n xl: '1440px',\n};\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\n// ---------------------------------------------------------------------------\n// Merge helpers\n// ---------------------------------------------------------------------------\n\nfunction mergeTypography(\n base: Record<string, TypographyDef>,\n overrides: Record<string, Partial<TypographyDef>> | undefined,\n): Record<string, TypographyDef> {\n if (!overrides) return base;\n const merged = { ...base };\n for (const [key, partial] of Object.entries(overrides)) {\n merged[key] = { ...(merged[key] ?? ({} as TypographyDef)), ...partial };\n }\n return merged;\n}\n\nfunction resolvedFontFamilies(options: JiwambePluginOptions | undefined) {\n return {\n primary: options?.fontFamily?.primary ?? fontFamilyPrimary,\n secondary: options?.fontFamily?.secondary ?? fontFamilySecondary,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Plugin\n// ---------------------------------------------------------------------------\n\nconst jiwambePlugin = plugin.withOptions<JiwambePluginOptions | undefined>(\n (options) => {\n return ({ addBase, addUtilities }) => {\n const fonts = resolvedFontFamilies(options);\n const mergedColors = { ...defaultSemanticColors(), ...(options?.colors ?? {}) };\n const mergedSpacing = { ...spacingTokens, ...(options?.spacing ?? {}) };\n const mergedBorderWidth = { ...borderWidthTokens, ...(options?.borderWidth ?? {}) };\n const mergedBorderRadius = { ...borderRadiusTokens, ...(options?.borderRadius ?? {}) };\n const mergedElevation = { ...elevationTokens, ...(options?.elevation ?? {}) };\n const mergedTypography = mergeTypography(typographyTokens, options?.typography);\n\n // -----------------------------------------------------------------\n // 1. Generate CSS custom properties on :root\n // -----------------------------------------------------------------\n\n const cssVars: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(baseColors)) {\n cssVars[`--color-${key}`] = value;\n }\n for (const [key, value] of Object.entries(mergedColors)) {\n cssVars[`--color-${key}`] = value;\n }\n // Alias for list marker styling (--col-* naming)\n if (mergedColors['text-secondary']) {\n cssVars['--col-text-secondary'] = mergedColors['text-secondary'];\n }\n for (const [key, value] of Object.entries(mergedSpacing)) {\n cssVars[`--${key}`] = value;\n }\n for (const [key, value] of Object.entries(mergedBorderWidth)) {\n cssVars[`--${key}`] = value;\n }\n for (const [key, value] of Object.entries(mergedBorderRadius)) {\n cssVars[`--${key}`] = value;\n }\n for (const [key, value] of Object.entries(mergedElevation)) {\n cssVars[`--${key}`] = value;\n }\n\n cssVars['--font-family-primary'] = fonts.primary;\n cssVars['--font-family-secondary'] = fonts.secondary;\n\n for (const [key, value] of Object.entries(canonicalColourPrimitives)) {\n cssVars[`--${key}`] = value;\n }\n for (const [key, value] of Object.entries(canonicalTransitionPrimitives)) {\n cssVars[`--${key}`] = value;\n }\n for (const [key, value] of Object.entries(canonicalTypographyPrimitives)) {\n cssVars[`--${key}`] = value;\n }\n\n addBase({ ':root': cssVars });\n\n // -----------------------------------------------------------------\n // 1b. Skeleton shimmer keyframe and utility class\n // -----------------------------------------------------------------\n\n addBase({\n '@keyframes jiwambe-shimmer': {\n '0%': {\n backgroundPosition: '-200% 0',\n },\n '100%': {\n backgroundPosition: '200% 0',\n },\n },\n '.jiwambe-skeleton': {\n backgroundColor: 'var(--col-neutral-100)',\n backgroundImage: [\n 'linear-gradient(',\n ' 90deg,',\n ' var(--col-neutral-100) 25%,',\n ' var(--col-neutral-50) 50%,',\n ' var(--col-neutral-100) 75%',\n ')',\n ].join(''),\n backgroundSize: '200% 100%',\n backgroundRepeat: 'no-repeat',\n animation: 'jiwambe-shimmer 1.5s ease-in-out infinite',\n },\n });\n\n // -----------------------------------------------------------------\n // 1c. List marker base styles\n // -----------------------------------------------------------------\n\n addBase({\n '.jiwambe-list': {\n paddingLeft: 'var(--space-6)',\n margin: '0',\n },\n '.jiwambe-list--unstyled': {\n paddingLeft: '0',\n listStyle: 'none',\n },\n '.jiwambe-list--disc li::marker': {\n color: 'var(--col-text-secondary)',\n },\n '.jiwambe-list--decimal li::marker': {\n color: 'var(--col-text-secondary)',\n fontVariantNumeric: 'tabular-nums',\n },\n '.jiwambe-list--none': {\n listStyle: 'none',\n paddingLeft: '0',\n },\n '.jiwambe-list-item': {\n paddingLeft: 'var(--space-1)',\n },\n '.jiwambe-list-item + .jiwambe-list-item': {\n marginTop: 'var(--space-0)',\n },\n });\n\n // -----------------------------------------------------------------\n // 2. Typography utility classes\n // -----------------------------------------------------------------\n\n const typographyUtilities: Record<string, Record<string, string>> = {};\n\n for (const [name, def] of Object.entries(mergedTypography)) {\n const styles: Record<string, string> = {\n 'font-family': def.fontFamily,\n 'font-size': def.fontSize,\n 'font-weight': def.fontWeight,\n 'line-height': def.lineHeight,\n };\n if (def.letterSpacing) styles['letter-spacing'] = def.letterSpacing;\n if (def.textWrap) styles['text-wrap'] = def.textWrap;\n\n typographyUtilities[`.text-${name}`] = styles;\n }\n\n addUtilities(typographyUtilities);\n };\n },\n (options) => {\n const fonts = resolvedFontFamilies(options);\n const mergedColors = { ...defaultSemanticColors(), ...(options?.colors ?? {}) };\n const mergedSpacing = { ...spacingTokens, ...(options?.spacing ?? {}) };\n const mergedBorderWidth = { ...borderWidthTokens, ...(options?.borderWidth ?? {}) };\n const mergedBorderRadius = { ...borderRadiusTokens, ...(options?.borderRadius ?? {}) };\n const mergedElevation = { ...elevationTokens, ...(options?.elevation ?? {}) };\n\n const allColors: Record<string, string> = {};\n for (const [key, value] of Object.entries(baseColors)) {\n allColors[key] = value;\n }\n for (const [key, value] of Object.entries(mergedColors)) {\n allColors[key] = value;\n }\n\n // Spacing theme: each token maps to var(--token) so utilities use CSS variables.\n // Add short keys for fluid tokens so px-fluid-4-9 works alongside px-space-fluid-4-9.\n const spacingExtension: Record<string, string> = {};\n for (const key of Object.keys(mergedSpacing)) {\n spacingExtension[key] = `var(--${key})`;\n if (key.startsWith('space-fluid-')) {\n const shortKey = key.replace(/^space-/, '');\n spacingExtension[shortKey] = `var(--${key})`;\n }\n }\n\n return {\n theme: {\n screens,\n extend: {\n colors: allColors,\n spacing: spacingExtension,\n borderWidth: mergedBorderWidth,\n borderRadius: mergedBorderRadius,\n boxShadow: mergedElevation,\n fontFamily: {\n primary: [fonts.primary],\n secondary: [fonts.secondary],\n },\n },\n },\n };\n },\n);\n\nexport default jiwambePlugin;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export { Typography } from './components/Typography/Typography';
2
+ export type { TypographyProps } from './components/Typography/Typography';
3
+ export { Link } from './components/Link/Link';
4
+ export type { LinkProps } from './components/Link/Link';
5
+ export { Grid } from './components/Grid/Grid';
6
+ export type { GridProps } from './components/Grid/Grid';
7
+ export { Container } from './components/Container/Container';
8
+ export type { ContainerProps, ContainerMaxWidth } from './components/Container/Container';
9
+ export { Box } from './components/Box/Box';
10
+ export type { BoxProps, ResponsiveValue } from './components/Box/Box';
11
+ export { Stack } from './components/Stack/Stack';
12
+ export type { StackProps, StackDirection, StackAlign, StackJustify } from './components/Stack/Stack';
13
+ export { Divider } from './components/Divider/Divider';
14
+ export type { DividerProps, DividerOrientation, DividerVariant } from './components/Divider/Divider';
15
+ export { Card } from './components/Card/Card';
16
+ export type { CardProps, CardType } from './components/Card/Card';
17
+ export { Icon } from './components/Icon/Icon';
18
+ export type { IconProps, IconName } from './components/Icon/Icon';
19
+ export { Section } from './components/Section/Section';
20
+ export type { SectionProps, SectionSize } from './components/Section/Section';
21
+ export type { TypographyVariant, TypographyElement, LinkVariant, } from './types';
22
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAErG,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAErG,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE9E,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,GACZ,MAAM,SAAS,CAAC"}
package/dist/server.js ADDED
@@ -0,0 +1,23 @@
1
+ import { Typography } from "./components/Typography/Typography.js";
2
+ import { Link } from "./components/Link/Link.js";
3
+ import { Grid } from "./components/Grid/Grid.js";
4
+ import { Container } from "./components/Container/Container.js";
5
+ import { Box } from "./components/Box/Box.js";
6
+ import { Stack } from "./components/Stack/Stack.js";
7
+ import { Divider } from "./components/Divider/Divider.js";
8
+ import { Card } from "./components/Card/Card.js";
9
+ import { Icon } from "./components/Icon/Icon.js";
10
+ import { Section } from "./components/Section/Section.js";
11
+ export {
12
+ Box,
13
+ Card,
14
+ Container,
15
+ Divider,
16
+ Grid,
17
+ Icon,
18
+ Link,
19
+ Section,
20
+ Stack,
21
+ Typography
22
+ };
23
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Typography variant names matching design system tokens. Each value maps to
3
+ * a .text-{variant} utility class injected by jiwambe-plugin with font family,
4
+ * size, weight, line-height, and optional letter-spacing.
5
+ *
6
+ * - title-sm … title-xl Heading scale (Instrument Sans, semibold).
7
+ * - text-xs, text-xs-bold 0.75rem body/caption.
8
+ * - text-sm, text-sm-bold 1rem body.
9
+ * - text-md, text-md-bold 1.125rem body.
10
+ * - text-xl Large display (fluid).
11
+ * - form-text, form-label Form field text and labels.
12
+ * - btn-small, btn-reg Button typography.
13
+ * - link-md Link typography (1.1875rem, semibold).
14
+ */
15
+ export type TypographyVariant = 'title-sm' | 'title-md' | 'title-lg' | 'title-xl' | 'text-xs' | 'text-xs-bold' | 'text-sm' | 'text-sm-bold' | 'text-md' | 'text-md-bold' | 'text-xl' | 'form-text' | 'form-label' | 'btn-small' | 'btn-reg' | 'link-md';
16
+ /**
17
+ * HTML element types allowed for the Typography `as` prop. Use the element
18
+ * that matches the content role (h1–h6 for headings, p for paragraphs,
19
+ * label for form labels, span for inline text, etc.).
20
+ */
21
+ export type TypographyElement = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'div' | 'label' | 'li' | 'dt' | 'dd' | 'figcaption' | 'blockquote' | 'cite' | 'em' | 'strong' | 'small' | 'mark' | 'time';
22
+ /**
23
+ * Button visual variant. Controls background and text colour tokens.
24
+ * - 'primary' Filled primary (green). Use for main actions.
25
+ * - 'secondary' Light fill. Use for secondary actions.
26
+ * - 'inverse' For use on dark backgrounds.
27
+ * - 'ghost' Transparent; hover reveals background.
28
+ */
29
+ export type ButtonVariant = 'primary' | 'secondary' | 'inverse' | 'ghost';
30
+ /**
31
+ * Button size. Affects height, padding, and typography.
32
+ * - 'small' Compact (e.g. 40px height).
33
+ * - 'large' Larger touch target and text.
34
+ */
35
+ export type ButtonSize = 'small' | 'large';
36
+ /**
37
+ * Link visual variant. Controls link colour tokens.
38
+ * - 'default' Primary link (green).
39
+ * - 'secondary' Neutral text with link behaviour.
40
+ * - 'tertiary' Muted; use for low-emphasis links.
41
+ * - 'inverse' For use on dark backgrounds.
42
+ */
43
+ export type LinkVariant = 'default' | 'secondary' | 'tertiary' | 'inverse';
44
+ /**
45
+ * Link text size. Maps to typography class (link-md or text-xs).
46
+ * - 'sm' Standard link size.
47
+ * - 'xs' Smaller link size.
48
+ */
49
+ export type LinkSize = 'md' | 'sm' | 'xs';
50
+ /**
51
+ * Accordion style variant. Matches Button variants (primary, secondary, inverse).
52
+ * Controls header and panel background/text tokens.
53
+ */
54
+ export type AccordionVariant = 'primary' | 'secondary' | 'inverse';
55
+ /**
56
+ * Shape of a single accordion item. Pass an array of these to Accordion's items prop.
57
+ */
58
+ export interface AccordionItem {
59
+ /** Title shown in the accordion trigger. */
60
+ title: string;
61
+ /** Content revealed when the item is expanded. */
62
+ content: React.ReactNode;
63
+ /** When true, the item cannot be opened. @default undefined */
64
+ disabled?: boolean;
65
+ }
66
+ /**
67
+ * Shape of a single accordion item for AccordionSpecs. Shows label-value pairs when expanded.
68
+ */
69
+ export interface AccordionSpecItem {
70
+ /** Title shown in the accordion trigger. */
71
+ title: string;
72
+ /** Label-value pairs shown when expanded (e.g. "Engine" / "1.2L"). */
73
+ specs: {
74
+ label: string;
75
+ value: string;
76
+ }[];
77
+ /** When true, the item cannot be opened. @default undefined */
78
+ disabled?: boolean;
79
+ }
80
+ /**
81
+ * Shape of a single FAQ item. Pass an array of these to FAQ's items prop.
82
+ */
83
+ export interface FAQItem {
84
+ /** The question displayed in the accordion trigger. */
85
+ question: string;
86
+ /** The answer revealed when expanded. Accepts text or JSX. */
87
+ answer: React.ReactNode;
88
+ /** When true, the item cannot be opened. @default undefined */
89
+ disabled?: boolean;
90
+ }
91
+ /**
92
+ * Shape of a single tab. Pass an array of these to Tab's items prop.
93
+ */
94
+ export interface TabItem {
95
+ /** Label displayed on the tab button. */
96
+ label: string;
97
+ /** Content rendered when the tab is active. */
98
+ content: React.ReactNode;
99
+ /** When true, the tab cannot be selected. @default undefined */
100
+ disabled?: boolean;
101
+ }
102
+ export type { DisplayValue, AlignItemsValue, JustifyContentValue, FlexDirectionValue, FlexWrapValue, AlignSelfValue, LayoutProps, StackLayoutProps, } from './layout';
103
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,SAAS,GACT,cAAc,GACd,SAAS,GACT,cAAc,GACd,SAAS,GACT,cAAc,GACd,SAAS,GACT,WAAW,GACX,YAAY,GACZ,WAAW,GACX,SAAS,GACT,SAAS,CAAC;AAEd;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GACzB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,GAAG,GACH,MAAM,GACN,KAAK,GACL,OAAO,GACP,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,YAAY,GACZ,YAAY,GACZ,MAAM,GACN,IAAI,GACJ,QAAQ,GACR,OAAO,GACP,MAAM,GACN,MAAM,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,YAAY,EACV,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,gBAAgB,GACjB,MAAM,UAAU,CAAC"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Valid CSS display values accepted by the display prop on Box.
3
+ * Controls how the element participates in layout flow.
4
+ *
5
+ * - 'block' Default block-level box. Full available width.
6
+ * - 'inline-block' Inline but accepts width/height. Use for span-level
7
+ * wrappers that need box-model control.
8
+ * - 'inline' Inline flow, no width/height control.
9
+ * - 'flex' Block-level flex container.
10
+ * - 'inline-flex' Inline flex container. Use when the Box is inside
11
+ * a line of text or another flex row.
12
+ * - 'grid' Block-level grid container. Prefer the Grid component
13
+ * for grid layouts; use this only for one-off cases.
14
+ * - 'inline-grid' Inline grid container.
15
+ * - 'none' Hidden from layout and accessibility tree.
16
+ * - 'contents' Element is not rendered; its children participate in the
17
+ * parent's layout. Use with caution — has accessibility
18
+ * implications (e.g. focus order, semantics).
19
+ */
20
+ export type DisplayValue = 'block' | 'inline-block' | 'inline' | 'flex' | 'inline-flex' | 'grid' | 'inline-grid' | 'none' | 'contents';
21
+ /**
22
+ * CSS align-items property values. Aligns flex/grid children along the
23
+ * cross axis (perpendicular to the main axis).
24
+ *
25
+ * - 'flex-start' Align to start of cross axis (top in row, left in column).
26
+ * - 'flex-end' Align to end of cross axis.
27
+ * - 'center' Centre along the cross axis.
28
+ * - 'baseline' Align text baselines of children.
29
+ * - 'stretch' Stretch children to fill the cross axis (default for flex).
30
+ */
31
+ export type AlignItemsValue = 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch';
32
+ /**
33
+ * CSS justify-content property values. Distributes flex/grid children
34
+ * along the main axis.
35
+ *
36
+ * - 'flex-start' Pack at start (default).
37
+ * - 'flex-end' Pack at end.
38
+ * - 'center' Centre along the main axis.
39
+ * - 'space-between' Equal space between items, none at edges.
40
+ * - 'space-around' Equal space around each item (half at edges).
41
+ * - 'space-evenly' Equal space between items and at edges.
42
+ */
43
+ export type JustifyContentValue = 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly';
44
+ /**
45
+ * CSS flex-direction property values.
46
+ * Note: Stack already has a direction prop ('row' | 'column').
47
+ * flexDirection is the explicit CSS-value version for Box and Grid.
48
+ * On Stack, direction remains the primary API. flexDirection is not
49
+ * added to Stack — use direction instead.
50
+ *
51
+ * - 'row' Main axis horizontal, left to right.
52
+ * - 'row-reverse' Main axis horizontal, right to left.
53
+ * - 'column' Main axis vertical, top to bottom.
54
+ * - 'column-reverse' Main axis vertical, bottom to top.
55
+ */
56
+ export type FlexDirectionValue = 'row' | 'row-reverse' | 'column' | 'column-reverse';
57
+ /**
58
+ * CSS flex-wrap property values. Controls whether flex children wrap
59
+ * onto multiple lines.
60
+ *
61
+ * - 'nowrap' Single line (default). May overflow.
62
+ * - 'wrap' Wrap onto next line when needed. Prefer for most cases.
63
+ * - 'wrap-reverse' Wrap onto previous line when needed. Rarely needed.
64
+ */
65
+ export type FlexWrapValue = 'nowrap' | 'wrap' | 'wrap-reverse';
66
+ /**
67
+ * CSS align-self property values. Controls this single element's position
68
+ * on the cross axis within its flex/grid parent — unlike alignItems, which
69
+ * controls how the container aligns all children. Only effective when the
70
+ * element is a direct child of a flex or grid container.
71
+ *
72
+ * - 'auto' Use the container's alignItems.
73
+ * - 'flex-start' Align to start of cross axis.
74
+ * - 'flex-end' Align to end of cross axis.
75
+ * - 'center' Centre along the cross axis.
76
+ * - 'baseline' Align to baseline.
77
+ * - 'stretch' Stretch to fill the cross axis.
78
+ */
79
+ export type AlignSelfValue = 'auto' | 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch';
80
+ /**
81
+ * Layout and alignment props accepted by Box, Grid, and Container.
82
+ * Values are CSS value strings (e.g. "center", "space-between") —
83
+ * not Tailwind class names. Internally mapped to Tailwind utilities.
84
+ *
85
+ * Not all props are available on every component:
86
+ * - Box accepts the full LayoutProps set
87
+ * - Grid accepts alignItems, justifyContent, alignSelf only
88
+ * - Container accepts alignItems, justifyContent only
89
+ * - Stack exposes alignItems and justifyContent as aliases for its
90
+ * existing align and justify props
91
+ *
92
+ * @example
93
+ * <Box display="inline-flex" alignItems="center" />
94
+ * @example
95
+ * <Box alignSelf="flex-end" flexGrow={1} />
96
+ */
97
+ export interface LayoutProps {
98
+ /** How the element participates in layout. @default undefined */
99
+ display?: DisplayValue;
100
+ /** Aligns children along the cross axis (flex/grid). @default undefined */
101
+ alignItems?: AlignItemsValue;
102
+ /** Distributes children along the main axis (flex/grid). @default undefined */
103
+ justifyContent?: JustifyContentValue;
104
+ /** Main axis direction for flex layout. Not available on Stack — use direction. @default undefined */
105
+ flexDirection?: FlexDirectionValue;
106
+ /** Whether flex children wrap onto multiple lines. @default undefined */
107
+ flexWrap?: FlexWrapValue;
108
+ /** Overrides container alignItems for this child. @default undefined */
109
+ alignSelf?: AlignSelfValue;
110
+ /**
111
+ * Controls whether the element grows to fill available space in a
112
+ * flex container. 1 = grow, 0 = do not grow.
113
+ * Only effective when the element is a direct child of a flex container
114
+ * (e.g. inside a Stack with direction="row").
115
+ * @default undefined (browser default: 0)
116
+ */
117
+ flexGrow?: 0 | 1;
118
+ /**
119
+ * Controls whether the element shrinks when the flex container is
120
+ * smaller than its content. 1 = shrink, 0 = do not shrink.
121
+ * Only effective when the element is a direct child of a flex container.
122
+ * @default undefined (browser default: 1)
123
+ */
124
+ flexShrink?: 0 | 1;
125
+ }
126
+ /**
127
+ * StackLayoutProps — the alignment props available on Stack.
128
+ * Stack keeps its existing align/justify/wrap/direction props and adds
129
+ * alignItems and justifyContent as CSS-value aliases that take precedence
130
+ * when both are provided.
131
+ */
132
+ export interface StackLayoutProps {
133
+ /** CSS value alias for align. Cross-axis alignment. Takes precedence over align. @default undefined */
134
+ alignItems?: AlignItemsValue;
135
+ /** CSS value alias for justify. Main-axis distribution. Takes precedence over justify. @default undefined */
136
+ justifyContent?: JustifyContentValue;
137
+ }
138
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/types/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,YAAY,GACpB,OAAO,GACP,cAAc,GACd,QAAQ,GACR,MAAM,GACN,aAAa,GACb,MAAM,GACN,aAAa,GACb,MAAM,GACN,UAAU,CAAC;AAEf;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,CAAC;AAEd;;;;;;;;;;GAUG;AACH,MAAM,MAAM,mBAAmB,GAC3B,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,eAAe,GACf,cAAc,GACd,cAAc,CAAC;AAEnB;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,GAC1B,KAAK,GACL,aAAa,GACb,QAAQ,GACR,gBAAgB,CAAC;AAErB;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;AAE/D;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,CAAC;AAEd;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,+EAA+E;IAC/E,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,sGAAsG;IACtG,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,wEAAwE;IACxE,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uGAAuG;IACvG,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,6GAA6G;IAC7G,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Controls the marker rendered before each list item.
3
+ *
4
+ * - 'disc' Filled circle bullet. Renders a <ul>.
5
+ * Default for unordered content.
6
+ * - 'decimal' Numeric counter. Renders an <ol>.
7
+ * Use for ordered steps or ranked content.
8
+ * - 'none' No marker. Renders a <ul> with list-style removed and
9
+ * left padding cleared. Use for navigation lists or
10
+ * custom-styled lists where markers are unwanted.
11
+ */
12
+ export type ListMarker = 'disc' | 'decimal' | 'none';
13
+ /**
14
+ * Typography size applied to List.Item content. Maps to design system
15
+ * typography class sets; size controls the class applied, not a raw
16
+ * font-size value.
17
+ *
18
+ * - 'xs' .text-xs — 0.75rem, weight 400, line-height 1.4
19
+ * - 'sm' .text-sm — 1rem, weight 400, line-height 1.4 (default)
20
+ * - 'md' .text-md — 1.125rem, weight 400, line-height 1.4
21
+ */
22
+ export type ListItemSize = 'xs' | 'sm' | 'md';
23
+ declare const listItemSizeClassMap: Record<ListItemSize, string>;
24
+ export { listItemSizeClassMap };
25
+ /**
26
+ * Props for the List container. List owns semantic structure (ul/ol) and
27
+ * marker styling only. Typography is controlled per item via List.Item's
28
+ * size prop. Outer layout (e.g. margin, max-width) is not List's concern —
29
+ * wrap List in Stack or Grid as needed.
30
+ */
31
+ export interface ListProps {
32
+ /**
33
+ * Marker style. Determines the HTML element rendered.
34
+ * 'disc' and 'none' render <ul>; 'decimal' renders <ol>.
35
+ * @default 'disc'
36
+ */
37
+ marker?: ListMarker;
38
+ /**
39
+ * Gap between list items (CSS gap), not padding on the list itself.
40
+ * Accepts any SpacingToken. Controls spacing between List.Item children.
41
+ * @default 'space-2'
42
+ */
43
+ spacing?: import('./spacing').SpacingToken;
44
+ /** Additional className appended after internal classes. @default undefined */
45
+ className?: string;
46
+ /** Inline styles merged with internal styles. @default undefined */
47
+ style?: React.CSSProperties;
48
+ /** List items. Use List.Item as direct children. */
49
+ children: React.ReactNode;
50
+ }
51
+ /**
52
+ * Props for List.Item. Renders a single <li> with typography and
53
+ * marker styling applied.
54
+ */
55
+ export interface ListItemProps {
56
+ /**
57
+ * Typography size for this item. Controls the typography class applied
58
+ * (e.g. .text-sm), not a font-size value directly.
59
+ * @default 'sm'
60
+ */
61
+ size?: ListItemSize;
62
+ /** Additional className appended after internal classes. @default undefined */
63
+ className?: string;
64
+ /** Inline styles. @default undefined */
65
+ style?: React.CSSProperties;
66
+ /** Item content (text, links, or other elements). */
67
+ children: React.ReactNode;
68
+ }
69
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/types/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,QAAA,MAAM,oBAAoB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAItD,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,WAAW,EAAE,YAAY,CAAC;IAC3C,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,oDAAoD;IACpD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B"}
@@ -0,0 +1,9 @@
1
+ const listItemSizeClassMap = {
2
+ xs: "text-text-xs",
3
+ sm: "text-text-sm",
4
+ md: "text-text-md"
5
+ };
6
+ export {
7
+ listItemSizeClassMap
8
+ };
9
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sources":["../../src/types/list.ts"],"sourcesContent":["/**\n * Controls the marker rendered before each list item.\n *\n * - 'disc' Filled circle bullet. Renders a <ul>.\n * Default for unordered content.\n * - 'decimal' Numeric counter. Renders an <ol>.\n * Use for ordered steps or ranked content.\n * - 'none' No marker. Renders a <ul> with list-style removed and\n * left padding cleared. Use for navigation lists or\n * custom-styled lists where markers are unwanted.\n */\nexport type ListMarker = 'disc' | 'decimal' | 'none';\n\n/**\n * Typography size applied to List.Item content. Maps to design system\n * typography class sets; size controls the class applied, not a raw\n * font-size value.\n *\n * - 'xs' .text-xs — 0.75rem, weight 400, line-height 1.4\n * - 'sm' .text-sm — 1rem, weight 400, line-height 1.4 (default)\n * - 'md' .text-md — 1.125rem, weight 400, line-height 1.4\n */\nexport type ListItemSize = 'xs' | 'sm' | 'md';\n\nconst listItemSizeClassMap: Record<ListItemSize, string> = {\n xs: 'text-text-xs',\n sm: 'text-text-sm',\n md: 'text-text-md',\n};\n\nexport { listItemSizeClassMap };\n\n/**\n * Props for the List container. List owns semantic structure (ul/ol) and\n * marker styling only. Typography is controlled per item via List.Item's\n * size prop. Outer layout (e.g. margin, max-width) is not List's concern —\n * wrap List in Stack or Grid as needed.\n */\nexport interface ListProps {\n /**\n * Marker style. Determines the HTML element rendered.\n * 'disc' and 'none' render <ul>; 'decimal' renders <ol>.\n * @default 'disc'\n */\n marker?: ListMarker;\n /**\n * Gap between list items (CSS gap), not padding on the list itself.\n * Accepts any SpacingToken. Controls spacing between List.Item children.\n * @default 'space-2'\n */\n spacing?: import('./spacing').SpacingToken;\n /** Additional className appended after internal classes. @default undefined */\n className?: string;\n /** Inline styles merged with internal styles. @default undefined */\n style?: React.CSSProperties;\n /** List items. Use List.Item as direct children. */\n children: React.ReactNode;\n}\n\n/**\n * Props for List.Item. Renders a single <li> with typography and\n * marker styling applied.\n */\nexport interface ListItemProps {\n /**\n * Typography size for this item. Controls the typography class applied\n * (e.g. .text-sm), not a font-size value directly.\n * @default 'sm'\n */\n size?: ListItemSize;\n /** Additional className appended after internal classes. @default undefined */\n className?: string;\n /** Inline styles. @default undefined */\n style?: React.CSSProperties;\n /** Item content (text, links, or other elements). */\n children: React.ReactNode;\n}\n"],"names":[],"mappings":"AAwBA,MAAM,uBAAqD;AAAA,EACzD,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Border radius token for Skeleton shapes. Maps to --rad-* CSS custom
3
+ * properties from the Jiwambe design system.
4
+ *
5
+ * - 'none' 0 — sharp corners, rarely needed
6
+ * - 'xs' var(--rad-xs) 0.375rem — subtle rounding, use for text placeholders
7
+ * - 'sm' var(--rad-sm) 0.75rem
8
+ * - 'md' var(--rad-md) 1rem — use for card placeholders
9
+ * - 'lg' var(--rad-lg) 1.25rem
10
+ * - 'xl' var(--rad-xl) 1.5rem
11
+ * - 'rounded' var(--rad-rounded) 100rem — fully circular, use for Skeleton.Avatar
12
+ */
13
+ export type SkeletonRadius = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'rounded';
14
+ export declare const skeletonRadiusMap: Record<SkeletonRadius, string>;
15
+ /**
16
+ * Props for the Skeleton primitive. Renders a single shimmer placeholder
17
+ * div with optional width, height, and radius. Used directly for custom
18
+ * shapes or via Skeleton.Text, Skeleton.Avatar, Skeleton.Card.
19
+ */
20
+ export interface SkeletonProps {
21
+ /** Width of the skeleton shape. Number = rem, string = used as-is. @default '100%' */
22
+ width?: string | number;
23
+ /** Height of the skeleton shape. Number = rem, string = used as-is. @default '1rem' */
24
+ height?: string | number;
25
+ /** Border radius token. @default 'xs' */
26
+ radius?: SkeletonRadius;
27
+ /**
28
+ * Accessible label announced to screen readers via aria-label. Describe
29
+ * what is loading: "Loading article title" is more useful than the default.
30
+ * @default 'Loading...'
31
+ */
32
+ label?: string;
33
+ /** Additional className. Appended after internal skeleton class. @default undefined */
34
+ className?: string;
35
+ /** Additional inline styles. Merged after internal styles. @default undefined */
36
+ style?: React.CSSProperties;
37
+ }
38
+ //# sourceMappingURL=skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/types/skeleton.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,SAAS,CAAC;AAEd,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAQ5D,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,yCAAyC;IACzC,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uFAAuF;IACvF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B"}
@@ -0,0 +1,13 @@
1
+ const skeletonRadiusMap = {
2
+ none: "var(--rad-none)",
3
+ xs: "var(--rad-xs)",
4
+ sm: "var(--rad-sm)",
5
+ md: "var(--rad-md)",
6
+ lg: "var(--rad-lg)",
7
+ xl: "var(--rad-xl)",
8
+ rounded: "var(--rad-rounded)"
9
+ };
10
+ export {
11
+ skeletonRadiusMap
12
+ };
13
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","sources":["../../src/types/skeleton.ts"],"sourcesContent":["/**\n * Border radius token for Skeleton shapes. Maps to --rad-* CSS custom\n * properties from the Jiwambe design system.\n *\n * - 'none' 0 — sharp corners, rarely needed\n * - 'xs' var(--rad-xs) 0.375rem — subtle rounding, use for text placeholders\n * - 'sm' var(--rad-sm) 0.75rem\n * - 'md' var(--rad-md) 1rem — use for card placeholders\n * - 'lg' var(--rad-lg) 1.25rem\n * - 'xl' var(--rad-xl) 1.5rem\n * - 'rounded' var(--rad-rounded) 100rem — fully circular, use for Skeleton.Avatar\n */\nexport type SkeletonRadius =\n | 'none'\n | 'xs'\n | 'sm'\n | 'md'\n | 'lg'\n | 'xl'\n | 'rounded';\n\nexport const skeletonRadiusMap: Record<SkeletonRadius, string> = {\n none: 'var(--rad-none)',\n xs: 'var(--rad-xs)',\n sm: 'var(--rad-sm)',\n md: 'var(--rad-md)',\n lg: 'var(--rad-lg)',\n xl: 'var(--rad-xl)',\n rounded: 'var(--rad-rounded)',\n};\n\n/**\n * Props for the Skeleton primitive. Renders a single shimmer placeholder\n * div with optional width, height, and radius. Used directly for custom\n * shapes or via Skeleton.Text, Skeleton.Avatar, Skeleton.Card.\n */\nexport interface SkeletonProps {\n /** Width of the skeleton shape. Number = rem, string = used as-is. @default '100%' */\n width?: string | number;\n /** Height of the skeleton shape. Number = rem, string = used as-is. @default '1rem' */\n height?: string | number;\n /** Border radius token. @default 'xs' */\n radius?: SkeletonRadius;\n /**\n * Accessible label announced to screen readers via aria-label. Describe\n * what is loading: \"Loading article title\" is more useful than the default.\n * @default 'Loading...'\n */\n label?: string;\n /** Additional className. Appended after internal skeleton class. @default undefined */\n className?: string;\n /** Additional inline styles. Merged after internal styles. @default undefined */\n style?: React.CSSProperties;\n}\n"],"names":[],"mappings":"AAqBO,MAAM,oBAAoD;AAAA,EAC/D,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,SAAS;AACX;"}