@jiwambe/components 0.3.1 → 0.3.3

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 (40) hide show
  1. package/README.md +84 -0
  2. package/dist/components/Box/Box.d.ts +10 -32
  3. package/dist/components/Box/Box.d.ts.map +1 -1
  4. package/dist/components/Box/Box.js +9 -13
  5. package/dist/components/Box/Box.js.map +1 -1
  6. package/dist/components/Card/Card.d.ts.map +1 -1
  7. package/dist/components/Card/Card.js +33 -32
  8. package/dist/components/Card/Card.js.map +1 -1
  9. package/dist/components/FAQ/FAQ.d.ts.map +1 -1
  10. package/dist/components/FAQ/FAQ.js +7 -7
  11. package/dist/components/FAQ/FAQ.js.map +1 -1
  12. package/dist/components/List/List.d.ts +10 -9
  13. package/dist/components/List/List.d.ts.map +1 -1
  14. package/dist/components/List/List.js +20 -5
  15. package/dist/components/List/List.js.map +1 -1
  16. package/dist/components/List/index.d.ts +1 -1
  17. package/dist/components/List/index.d.ts.map +1 -1
  18. package/dist/components/ProductCard/ProductCard.d.ts +81 -0
  19. package/dist/components/ProductCard/ProductCard.d.ts.map +1 -0
  20. package/dist/components/ProductCard/index.d.ts +3 -0
  21. package/dist/components/ProductCard/index.d.ts.map +1 -0
  22. package/dist/components/Typography/Typography.d.ts +10 -293
  23. package/dist/components/Typography/Typography.d.ts.map +1 -1
  24. package/dist/components/Typography/Typography.js +6 -11
  25. package/dist/components/Typography/Typography.js.map +1 -1
  26. package/dist/components/index.d.ts +3 -1
  27. package/dist/components/index.d.ts.map +1 -1
  28. package/dist/index.d.ts +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/plugin/jiwambe-plugin.d.ts.map +1 -1
  31. package/dist/plugin/jiwambe-plugin.js +55 -2
  32. package/dist/plugin/jiwambe-plugin.js.map +1 -1
  33. package/dist/server.d.ts +1 -1
  34. package/dist/server.d.ts.map +1 -1
  35. package/dist/types/index.d.ts +0 -6
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/types/list.d.ts +21 -2
  38. package/dist/types/list.d.ts.map +1 -1
  39. package/dist/types/list.js.map +1 -1
  40. package/package.json +3 -2
@@ -327,6 +327,8 @@ const spacingTokens = {
327
327
  "space-36": "9rem",
328
328
  "space-48": "12rem",
329
329
  "space-72": "18rem",
330
+ /** List indent for legal/body-copy lists (27px). Use with List indent prop. */
331
+ "space-list-indent": "1.6875rem",
330
332
  // Fluid
331
333
  "space-fluid-1-2": "clamp(0.25rem, 0.1706rem + 0.3968vw, 0.5rem)",
332
334
  "space-fluid-2-4": "clamp(0.5rem, 0.3413rem + 0.7937vw, 1rem)",
@@ -485,7 +487,7 @@ function resolvedFontFamilies(options) {
485
487
  }
486
488
  const jiwambePlugin = plugin.withOptions(
487
489
  (options) => {
488
- return ({ addBase, addUtilities }) => {
490
+ return ({ addBase, addComponents }) => {
489
491
  const fonts = resolvedFontFamilies(options);
490
492
  const mergedColors = { ...defaultSemanticColors(), ...(options == null ? void 0 : options.colors) ?? {} };
491
493
  const mergedSpacing = { ...spacingTokens, ...(options == null ? void 0 : options.spacing) ?? {} };
@@ -571,9 +573,17 @@ const jiwambePlugin = plugin.withOptions(
571
573
  paddingLeft: "0",
572
574
  listStyle: "none"
573
575
  },
576
+ ".jiwambe-list--disc": {
577
+ listStyleType: "disc",
578
+ listStylePosition: "outside"
579
+ },
574
580
  ".jiwambe-list--disc li::marker": {
575
581
  color: "var(--col-text-secondary)"
576
582
  },
583
+ ".jiwambe-list--decimal": {
584
+ listStyleType: "decimal",
585
+ listStylePosition: "outside"
586
+ },
577
587
  ".jiwambe-list--decimal li::marker": {
578
588
  color: "var(--col-text-secondary)",
579
589
  fontVariantNumeric: "tabular-nums"
@@ -585,10 +595,53 @@ const jiwambePlugin = plugin.withOptions(
585
595
  ".jiwambe-list-item": {
586
596
  paddingLeft: "var(--space-1)"
587
597
  },
598
+ ".jiwambe-list--item-padding-none .jiwambe-list-item": {
599
+ paddingLeft: "0"
600
+ },
588
601
  ".jiwambe-list-item + .jiwambe-list-item": {
589
602
  marginTop: "var(--space-0)"
590
603
  }
591
604
  });
605
+ const listSpacingTokens = [
606
+ "space-0",
607
+ "space-0-25",
608
+ "space-1",
609
+ "space-2",
610
+ "space-3",
611
+ "space-4",
612
+ "space-5",
613
+ "space-6",
614
+ "space-8",
615
+ "space-9",
616
+ "space-12",
617
+ "space-16",
618
+ "space-18",
619
+ "space-24",
620
+ "space-30",
621
+ "space-36",
622
+ "space-48",
623
+ "space-72",
624
+ "space-list-indent",
625
+ "space-fluid-1-2",
626
+ "space-fluid-2-4",
627
+ "space-fluid-4-5",
628
+ "space-fluid-4-6",
629
+ "space-fluid-4-8",
630
+ "space-fluid-4-9",
631
+ "space-fluid-5-6",
632
+ "space-fluid-6-9",
633
+ "space-fluid-8-16",
634
+ "space-fluid-16-18",
635
+ "space-fluid-30-36",
636
+ "space-fluid-48-72"
637
+ ];
638
+ const listSpacingBase = {};
639
+ for (const token of listSpacingTokens) {
640
+ listSpacingBase[`.jiwambe-list--spacing-${token} > .jiwambe-list-item + .jiwambe-list-item`] = {
641
+ marginTop: `var(--${token})`
642
+ };
643
+ }
644
+ addBase(listSpacingBase);
592
645
  const typographyUtilities = {};
593
646
  for (const [name, def] of Object.entries(mergedTypography)) {
594
647
  const styles = {
@@ -601,7 +654,7 @@ const jiwambePlugin = plugin.withOptions(
601
654
  if (def.textWrap) styles["text-wrap"] = def.textWrap;
602
655
  typographyUtilities[`.text-${name}`] = styles;
603
656
  }
604
- addUtilities(typographyUtilities);
657
+ addComponents(typographyUtilities);
605
658
  };
606
659
  },
607
660
  (options) => {
@@ -1 +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: 'clamp(0.9375rem, 0.8482rem + 0.4464vw, 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: 'clamp(1rem, 0.8661rem + 0.6696vw, 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.0',\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: '800',\n lineHeight: '1.0',\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: '800',\n lineHeight: '1.0',\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-s-sm': '1.0625rem',\n 'font-size-s-md': '1.1875rem',\n 'font-size-s-lg-fluid': 'var(--font-size-fluid-25-32)',\n 'font-size-s-xl-fluid': 'var(--font-size-fluid-48-60)',\n 'font-size-t-xs': '0.75rem',\n 'font-size-t-sm': '1rem',\n 'font-size-t-md': '1.125rem',\n 'font-weight-xs': '400',\n 'font-weight-sm': '500',\n 'font-weight-md': '600',\n 'font-weight-lg': '800',\n 'font-line-tight': '1.0',\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({\n ':root': cssVars,\n body: {\n 'text-rendering': 'optimizeLegibility',\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n 'text-size-adjust': 'none',\n '-webkit-text-size-adjust': 'none',\n '-moz-text-size-adjust': 'none',\n 'font-optical-sizing': 'auto',\n },\n });\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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"}
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: 'clamp(0.9375rem, 0.8482rem + 0.4464vw, 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: 'clamp(1rem, 0.8661rem + 0.6696vw, 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.0',\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: '800',\n lineHeight: '1.0',\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: '800',\n lineHeight: '1.0',\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 /** List indent for legal/body-copy lists (27px). Use with List indent prop. */\n 'space-list-indent': '1.6875rem',\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-s-sm': '1.0625rem',\n 'font-size-s-md': '1.1875rem',\n 'font-size-s-lg-fluid': 'var(--font-size-fluid-25-32)',\n 'font-size-s-xl-fluid': 'var(--font-size-fluid-48-60)',\n 'font-size-t-xs': '0.75rem',\n 'font-size-t-sm': '1rem',\n 'font-size-t-md': '1.125rem',\n 'font-weight-xs': '400',\n 'font-weight-sm': '500',\n 'font-weight-md': '600',\n 'font-weight-lg': '800',\n 'font-line-tight': '1.0',\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, addComponents }) => {\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({\n ':root': cssVars,\n body: {\n 'text-rendering': 'optimizeLegibility',\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n 'text-size-adjust': 'none',\n '-webkit-text-size-adjust': 'none',\n '-moz-text-size-adjust': 'none',\n 'font-optical-sizing': 'auto',\n },\n });\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': {\n listStyleType: 'disc',\n listStylePosition: 'outside',\n },\n '.jiwambe-list--disc li::marker': {\n color: 'var(--col-text-secondary)',\n },\n '.jiwambe-list--decimal': {\n listStyleType: 'decimal',\n listStylePosition: 'outside',\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-padding-none .jiwambe-list-item': {\n paddingLeft: '0',\n },\n '.jiwambe-list-item + .jiwambe-list-item': {\n marginTop: 'var(--space-0)',\n },\n });\n\n // List item spacing (block layout): margin between items per spacing token\n const listSpacingTokens = [\n 'space-0', 'space-0-25', 'space-1', 'space-2', 'space-3', 'space-4',\n 'space-5', 'space-6', 'space-8', 'space-9', 'space-12', 'space-16',\n 'space-18', 'space-24', 'space-30', 'space-36', 'space-48', 'space-72',\n 'space-list-indent',\n 'space-fluid-1-2', 'space-fluid-2-4', 'space-fluid-4-5', 'space-fluid-4-6',\n 'space-fluid-4-8', 'space-fluid-4-9', 'space-fluid-5-6', 'space-fluid-6-9',\n 'space-fluid-8-16', 'space-fluid-16-18', 'space-fluid-30-36', 'space-fluid-48-72',\n ];\n const listSpacingBase: Record<string, Record<string, string>> = {};\n for (const token of listSpacingTokens) {\n listSpacingBase[`.jiwambe-list--spacing-${token} > .jiwambe-list-item + .jiwambe-list-item`] = {\n marginTop: `var(--${token})`,\n };\n }\n addBase(listSpacingBase);\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 addComponents(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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"}
package/dist/server.d.ts CHANGED
@@ -18,5 +18,5 @@ export { Icon } from './components/Icon/Icon';
18
18
  export type { IconProps, IconName } from './components/Icon/Icon';
19
19
  export { Section } from './components/Section/Section';
20
20
  export type { SectionProps, SectionSize } from './components/Section/Section';
21
- export type { TypographyVariant, TypographyElement, LinkVariant, } from './types';
21
+ export type { TypographyVariant, LinkVariant, } from './types';
22
22
  //# sourceMappingURL=server.d.ts.map
@@ -1 +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"}
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,WAAW,GACZ,MAAM,SAAS,CAAC"}
@@ -13,12 +13,6 @@
13
13
  * - link-md Link typography (1.1875rem, semibold).
14
14
  */
15
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
16
  /**
23
17
  * Button visual variant. Controls background and text colour tokens.
24
18
  * - 'primary' Filled primary (green). Use for main actions.
@@ -1 +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"}
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;;;;;;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"}
@@ -22,11 +22,19 @@ export type ListMarker = 'disc' | 'decimal' | 'none';
22
22
  export type ListItemSize = 'xs' | 'sm' | 'md';
23
23
  declare const listItemSizeClassMap: Record<ListItemSize, string>;
24
24
  export { listItemSizeClassMap };
25
+ /** Spacing token or custom CSS length (e.g. '27px') for list indent. */
26
+ export type ListIndent = import('./spacing').SpacingToken | string;
27
+ /** Controls left padding on each list item. 'default' = space-1 (4px); 'none' = 0 for body-copy lists. */
28
+ export type ListItemPadding = 'default' | 'none';
25
29
  /**
26
30
  * Props for the List container. List owns semantic structure (ul/ol) and
27
31
  * marker styling only. Typography is controlled per item via List.Item's
28
32
  * size prop. Outer layout (e.g. margin, max-width) is not List's concern —
29
33
  * wrap List in Stack or Grid as needed.
34
+ *
35
+ * For marker="disc" and marker="decimal", the list uses block layout and
36
+ * item margin (not flex/gap) so list-style-position: outside and markers
37
+ * render reliably. Use indent and itemPadding to match legal/body-copy designs.
30
38
  */
31
39
  export interface ListProps {
32
40
  /**
@@ -36,11 +44,22 @@ export interface ListProps {
36
44
  */
37
45
  marker?: ListMarker;
38
46
  /**
39
- * Gap between list items (CSS gap), not padding on the list itself.
40
- * Accepts any SpacingToken. Controls spacing between List.Item children.
47
+ * Vertical spacing between list items. Uses margin on items (block layout)
48
+ * for disc/decimal so markers render reliably. Accepts any SpacingToken.
41
49
  * @default 'space-2'
42
50
  */
43
51
  spacing?: import('./spacing').SpacingToken;
52
+ /**
53
+ * Left indent (padding-inline-start) of the list. SpacingToken (e.g. 'space-6', 'space-list-indent')
54
+ * or custom value (e.g. '27px'). Omit to use plugin default (24px / space-6).
55
+ */
56
+ indent?: ListIndent;
57
+ /**
58
+ * Left padding on each list item. 'default' = 4px (space-1); 'none' = 0 for
59
+ * body-copy lists where items should align with the marker.
60
+ * @default 'default'
61
+ */
62
+ itemPadding?: ListItemPadding;
44
63
  /** Additional className appended after internal classes. @default undefined */
45
64
  className?: string;
46
65
  /** Inline styles merged with internal styles. @default undefined */
@@ -1 +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"}
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,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,EAAE,YAAY,GAAG,MAAM,CAAC;AAEnE,0GAA0G;AAC1G,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,WAAW,EAAE,YAAY,CAAC;IAC3C;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,+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"}
@@ -1 +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;"}
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/** Spacing token or custom CSS length (e.g. '27px') for list indent. */\nexport type ListIndent = import('./spacing').SpacingToken | string;\n\n/** Controls left padding on each list item. 'default' = space-1 (4px); 'none' = 0 for body-copy lists. */\nexport type ListItemPadding = 'default' | 'none';\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 *\n * For marker=\"disc\" and marker=\"decimal\", the list uses block layout and\n * item margin (not flex/gap) so list-style-position: outside and markers\n * render reliably. Use indent and itemPadding to match legal/body-copy designs.\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 * Vertical spacing between list items. Uses margin on items (block layout)\n * for disc/decimal so markers render reliably. Accepts any SpacingToken.\n * @default 'space-2'\n */\n spacing?: import('./spacing').SpacingToken;\n /**\n * Left indent (padding-inline-start) of the list. SpacingToken (e.g. 'space-6', 'space-list-indent')\n * or custom value (e.g. '27px'). Omit to use plugin default (24px / space-6).\n */\n indent?: ListIndent;\n /**\n * Left padding on each list item. 'default' = 4px (space-1); 'none' = 0 for\n * body-copy lists where items should align with the marker.\n * @default 'default'\n */\n itemPadding?: ListItemPadding;\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;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jiwambe/components",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -76,6 +76,7 @@
76
76
  "autoprefixer": "^10.4.27",
77
77
  "happy-dom": "^15.11.7",
78
78
  "jest-axe": "^9.0.0",
79
+ "@types/jest-axe": "^3.5.9",
79
80
  "postcss": "^8.5.8",
80
81
  "react": "^19.2.4",
81
82
  "react-dom": "^19.2.4",
@@ -91,6 +92,6 @@
91
92
  "test": "vitest run",
92
93
  "test:watch": "vitest",
93
94
  "version-packages": "changeset version",
94
- "release": "pnpm run build && changeset publish"
95
+ "release": "pnpm test && pnpm run build && changeset publish"
95
96
  }
96
97
  }