@goliapkg/gds 1.0.10 → 1.4.2

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 (108) hide show
  1. package/README.md +10 -6
  2. package/dist/{avatar-By0U5Vts.js → avatar-l3SaMCmU.js} +10 -10
  3. package/dist/avatar-l3SaMCmU.js.map +1 -0
  4. package/dist/index.js +25 -25
  5. package/dist/l2-primitives/divider.d.ts +11 -2
  6. package/dist/l2-primitives/divider.d.ts.map +1 -1
  7. package/dist/l2-primitives/index.d.ts +1 -1
  8. package/dist/l2-primitives/index.d.ts.map +1 -1
  9. package/dist/l2-primitives/index.js +10 -10
  10. package/dist/l2-primitives/input.d.ts +6 -0
  11. package/dist/l2-primitives/input.d.ts.map +1 -1
  12. package/dist/l2-primitives/number-input.d.ts +4 -0
  13. package/dist/l2-primitives/number-input.d.ts.map +1 -1
  14. package/dist/{l2-primitives-BIiL8hFH.js → l2-primitives-Le0006ck.js} +105 -81
  15. package/dist/l2-primitives-Le0006ck.js.map +1 -0
  16. package/dist/l3-atoms/avatar-badge.d.ts +1 -0
  17. package/dist/l3-atoms/avatar-badge.d.ts.map +1 -1
  18. package/dist/l3-atoms/avatar.d.ts +2 -0
  19. package/dist/l3-atoms/avatar.d.ts.map +1 -1
  20. package/dist/l3-atoms/checkbox.d.ts +7 -0
  21. package/dist/l3-atoms/checkbox.d.ts.map +1 -1
  22. package/dist/l3-atoms/index.d.ts +4 -4
  23. package/dist/l3-atoms/index.d.ts.map +1 -1
  24. package/dist/l3-atoms/index.js +6 -6
  25. package/dist/l3-atoms/status-badge.d.ts +8 -0
  26. package/dist/l3-atoms/status-badge.d.ts.map +1 -1
  27. package/dist/l3-atoms/status-dot.d.ts +4 -0
  28. package/dist/l3-atoms/status-dot.d.ts.map +1 -1
  29. package/dist/l3-atoms/toggle-group.d.ts +16 -2
  30. package/dist/l3-atoms/toggle-group.d.ts.map +1 -1
  31. package/dist/{l3-atoms-CsN9IA9J.js → l3-atoms-BxDg3rXt.js} +196 -189
  32. package/dist/{l3-atoms-CsN9IA9J.js.map → l3-atoms-BxDg3rXt.js.map} +1 -1
  33. package/dist/l4-molecules/alert.d.ts +7 -1
  34. package/dist/l4-molecules/alert.d.ts.map +1 -1
  35. package/dist/l4-molecules/dialog.d.ts +8 -2
  36. package/dist/l4-molecules/dialog.d.ts.map +1 -1
  37. package/dist/l4-molecules/index.d.ts +3 -3
  38. package/dist/l4-molecules/index.d.ts.map +1 -1
  39. package/dist/l4-molecules/index.js +3 -3
  40. package/dist/l4-molecules/tabs.d.ts +1 -2
  41. package/dist/l4-molecules/tabs.d.ts.map +1 -1
  42. package/dist/{l4-molecules-DHsPjYhl.js → l4-molecules-DftsX-gO.js} +212 -205
  43. package/dist/l4-molecules-DftsX-gO.js.map +1 -0
  44. package/dist/l5-organisms/data-table/data-table-body.d.ts +31 -0
  45. package/dist/l5-organisms/data-table/data-table-body.d.ts.map +1 -0
  46. package/dist/l5-organisms/data-table/data-table-head.d.ts +22 -0
  47. package/dist/l5-organisms/data-table/data-table-head.d.ts.map +1 -0
  48. package/dist/l5-organisms/data-table/data-table-pagination.d.ts +13 -0
  49. package/dist/l5-organisms/data-table/data-table-pagination.d.ts.map +1 -0
  50. package/dist/l5-organisms/data-table/data-table-toolbar.d.ts +19 -0
  51. package/dist/l5-organisms/data-table/data-table-toolbar.d.ts.map +1 -0
  52. package/dist/l5-organisms/data-table/data-table-types.d.ts +88 -0
  53. package/dist/l5-organisms/data-table/data-table-types.d.ts.map +1 -0
  54. package/dist/l5-organisms/data-table/data-table-utils.d.ts +13 -0
  55. package/dist/l5-organisms/data-table/data-table-utils.d.ts.map +1 -0
  56. package/dist/l5-organisms/data-table/data-table.d.ts +6 -0
  57. package/dist/l5-organisms/data-table/data-table.d.ts.map +1 -0
  58. package/dist/l5-organisms/data-table/index.d.ts +4 -0
  59. package/dist/l5-organisms/data-table/index.d.ts.map +1 -0
  60. package/dist/l5-organisms/gantt-chart/gantt-chart-types.d.ts +52 -0
  61. package/dist/l5-organisms/gantt-chart/gantt-chart-types.d.ts.map +1 -0
  62. package/dist/l5-organisms/gantt-chart/gantt-chart-utils.d.ts +11 -0
  63. package/dist/l5-organisms/gantt-chart/gantt-chart-utils.d.ts.map +1 -0
  64. package/dist/l5-organisms/gantt-chart/gantt-chart.d.ts +3 -0
  65. package/dist/l5-organisms/gantt-chart/gantt-chart.d.ts.map +1 -0
  66. package/dist/l5-organisms/gantt-chart/index.d.ts +3 -0
  67. package/dist/l5-organisms/gantt-chart/index.d.ts.map +1 -0
  68. package/dist/l5-organisms/index.d.ts +4 -2
  69. package/dist/l5-organisms/index.d.ts.map +1 -1
  70. package/dist/l5-organisms/index.js +2 -2
  71. package/dist/l5-organisms/table.d.ts +12 -0
  72. package/dist/l5-organisms/table.d.ts.map +1 -1
  73. package/dist/{l5-organisms-z8mU4eoy.js → l5-organisms-Di1Bm_R6.js} +1352 -292
  74. package/dist/l5-organisms-Di1Bm_R6.js.map +1 -0
  75. package/dist/l6-charts/annotated-chart.d.ts +18 -0
  76. package/dist/l6-charts/annotated-chart.d.ts.map +1 -0
  77. package/dist/l6-charts/bullet-chart.d.ts +11 -0
  78. package/dist/l6-charts/bullet-chart.d.ts.map +1 -0
  79. package/dist/l6-charts/donut-gauge.d.ts +14 -0
  80. package/dist/l6-charts/donut-gauge.d.ts.map +1 -0
  81. package/dist/l6-charts/flame-chart.d.ts +13 -0
  82. package/dist/l6-charts/flame-chart.d.ts.map +1 -0
  83. package/dist/l6-charts/index.d.ts +12 -0
  84. package/dist/l6-charts/index.d.ts.map +1 -1
  85. package/dist/l6-charts/index.js +2 -2
  86. package/dist/l6-charts/realtime-chart.d.ts +13 -0
  87. package/dist/l6-charts/realtime-chart.d.ts.map +1 -0
  88. package/dist/l6-charts/waterfall-chart.d.ts +12 -0
  89. package/dist/l6-charts/waterfall-chart.d.ts.map +1 -0
  90. package/dist/l6-charts-Bn9RQLbe.js +2145 -0
  91. package/dist/l6-charts-Bn9RQLbe.js.map +1 -0
  92. package/dist/l7-patterns/index.js +1 -1
  93. package/dist/{l7-patterns-E9ls7Nw6.js → l7-patterns-BCpw0-CS.js} +4 -4
  94. package/dist/{l7-patterns-E9ls7Nw6.js.map → l7-patterns-BCpw0-CS.js.map} +1 -1
  95. package/dist/{resize-handle-CktEYqwi.js → resize-handle-ilSc7QRM.js} +6 -3
  96. package/dist/{resize-handle-CktEYqwi.js.map → resize-handle-ilSc7QRM.js.map} +1 -1
  97. package/dist/{spinner-D8Ti-TFe.js → spinner-N7UNjdsQ.js} +66 -23
  98. package/dist/spinner-N7UNjdsQ.js.map +1 -0
  99. package/package.json +1 -1
  100. package/dist/avatar-By0U5Vts.js.map +0 -1
  101. package/dist/l2-primitives-BIiL8hFH.js.map +0 -1
  102. package/dist/l4-molecules-DHsPjYhl.js.map +0 -1
  103. package/dist/l5-organisms/data-table.d.ts +0 -24
  104. package/dist/l5-organisms/data-table.d.ts.map +0 -1
  105. package/dist/l5-organisms-z8mU4eoy.js.map +0 -1
  106. package/dist/l6-charts-DYnr5B9X.js +0 -1743
  107. package/dist/l6-charts-DYnr5B9X.js.map +0 -1
  108. package/dist/spinner-D8Ti-TFe.js.map +0 -1
@@ -40,7 +40,10 @@ var c = n(function({ checked: n = !1, checkIcon: r, className: i, disabled: c =
40
40
  children: l
41
41
  })]
42
42
  });
43
- }), l = n(function({ className: t, disabled: n, onResize: o, onResizeEnd: s, orientation: c = "vertical", ...l }, u) {
43
+ }), l = { state: {
44
+ checked: "border-accent bg-accent",
45
+ unchecked: "border-border bg-bg hover:border-accent/50"
46
+ } }, u = n(function({ className: t, disabled: n, onResize: o, onResizeEnd: s, orientation: c = "vertical", ...l }, u) {
44
47
  let d = i(0), f = r((e) => {
45
48
  if (n) return;
46
49
  e.preventDefault();
@@ -72,6 +75,6 @@ var c = n(function({ checked: n = !1, checkIcon: r, className: i, disabled: c =
72
75
  });
73
76
  });
74
77
  //#endregion
75
- export { c as n, l as t };
78
+ export { c as n, l as r, u as t };
76
79
 
77
- //# sourceMappingURL=resize-handle-CktEYqwi.js.map
80
+ //# sourceMappingURL=resize-handle-ilSc7QRM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resize-handle-CktEYqwi.js","names":[],"sources":["../src/l3-atoms/checkbox.tsx","../src/l3-atoms/resize-handle.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\ntype CheckboxProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> & {\n checked?: boolean\n checkIcon?: ReactNode\n label?: string\n onChange?: (checked: boolean) => void\n}\n\n// default check SVG (no lucide dependency)\nfunction DefaultCheck() {\n return (\n <svg className=\"h-3 w-3 text-accent-fg\" fill=\"none\" stroke=\"currentColor\" strokeWidth={3} viewBox=\"0 0 24 24\">\n <path d=\"M5 13l4 4L19 7\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )\n}\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n function Checkbox(\n { checked = false, checkIcon, className, disabled = false, label, onChange, ...props },\n ref,\n ) {\n return (\n <button\n aria-checked={checked}\n className={cx(\n 'inline-flex select-none items-center gds-gap-sm',\n disabled && 'cursor-not-allowed opacity-50',\n className,\n )}\n data-component=\"checkbox\"\n data-state={checked ? 'checked' : 'unchecked'}\n disabled={disabled}\n onClick={() => onChange?.(!checked)}\n ref={ref}\n role=\"checkbox\"\n type=\"button\"\n {...props}\n >\n <span\n className={cx(\n 'inline-flex gds-icon shrink-0 items-center justify-center gds-radius-button border transition-colors',\n focusCls,\n checked\n ? 'border-accent bg-accent'\n : 'border-border bg-bg hover:border-accent/50',\n )}\n >\n <span className={cx('transition-opacity', checked ? 'opacity-100' : 'opacity-0')}>\n {checkIcon ?? <DefaultCheck />}\n </span>\n </span>\n {label !== undefined && (\n <span className=\"gds-text-body text-fg\">{label}</span>\n )}\n </button>\n )\n },\n)\n\nexport type { CheckboxProps }\n","import { forwardRef, useCallback, useRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype ResizeHandleProps = React.HTMLAttributes<HTMLDivElement> & {\n orientation?: 'horizontal' | 'vertical'\n onResize: (delta: number) => void\n onResizeEnd?: () => void\n disabled?: boolean\n}\n\nexport const ResizeHandle = forwardRef<HTMLDivElement, ResizeHandleProps>(\n function ResizeHandle(\n {\n className,\n disabled,\n onResize,\n onResizeEnd,\n orientation = 'vertical',\n ...props\n },\n ref,\n ) {\n const startPos = useRef(0)\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n if (disabled) return\n e.preventDefault()\n\n const isVertical = orientation === 'vertical'\n startPos.current = isVertical ? e.clientX : e.clientY\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n const current = isVertical ? moveEvent.clientX : moveEvent.clientY\n const delta = current - startPos.current\n startPos.current = current\n onResize(delta)\n }\n\n const handleMouseUp = () => {\n document.removeEventListener('mousemove', handleMouseMove)\n document.removeEventListener('mouseup', handleMouseUp)\n onResizeEnd?.()\n }\n\n document.addEventListener('mousemove', handleMouseMove)\n document.addEventListener('mouseup', handleMouseUp)\n },\n [disabled, onResize, onResizeEnd, orientation],\n )\n\n return (\n <div\n className={cx(\n 'group relative flex items-center justify-center select-none',\n orientation === 'vertical'\n ? 'w-2 cursor-col-resize flex-col self-stretch'\n : 'h-2 cursor-row-resize self-stretch',\n disabled && 'pointer-events-none opacity-40',\n className,\n )}\n data-component=\"resize-handle\"\n data-orientation={orientation}\n onMouseDown={handleMouseDown}\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n {...props}\n >\n <div\n className={cx(\n 'transition-colors',\n orientation === 'vertical'\n ? 'h-full w-0.5 bg-border group-hover:bg-accent/50 group-active:bg-accent'\n : 'h-0.5 w-full bg-border group-hover:bg-accent/50 group-active:bg-accent',\n )}\n />\n </div>\n )\n },\n)\n\nexport type { ResizeHandleProps }\n"],"mappings":";;;;;AAcA,SAAS,IAAe;AACtB,QACE,kBAAC,OAAD;EAAK,WAAU;EAAyB,MAAK;EAAO,QAAO;EAAe,aAAa;EAAG,SAAQ;YAChG,kBAAC,QAAD;GAAM,GAAE;GAAiB,eAAc;GAAQ,gBAAe;GAAU,CAAA;EACpE,CAAA;;AAIV,IAAa,IAAW,EACtB,SACE,EAAE,aAAU,IAAO,cAAW,cAAW,cAAW,IAAO,UAAO,aAAU,GAAG,KAC/E,GACA;AACA,QACE,kBAAC,UAAD;EACE,gBAAc;EACd,WAAW,EACT,mDACA,KAAY,iCACZ,EACD;EACD,kBAAe;EACf,cAAY,IAAU,YAAY;EACxB;EACV,eAAe,IAAW,CAAC,EAAQ;EAC9B;EACL,MAAK;EACL,MAAK;EACL,GAAI;YAdN,CAgBE,kBAAC,QAAD;GACE,WAAW,EACT,wGACA,GACA,IACI,4BACA,6CACL;aAED,kBAAC,QAAD;IAAM,WAAW,EAAG,sBAAsB,IAAU,gBAAgB,YAAY;cAC7E,KAAa,kBAAC,GAAD,EAAgB,CAAA;IACzB,CAAA;GACF,CAAA,EACN,MAAU,KAAA,KACT,kBAAC,QAAD;GAAM,WAAU;aAAyB;GAAa,CAAA,CAEjD;;EAGd,ECpDY,IAAe,EAC1B,SACE,EACE,cACA,aACA,aACA,gBACA,iBAAc,YACd,GAAG,KAEL,GACA;CACA,IAAM,IAAW,EAAO,EAAE,EAEpB,IAAkB,GACrB,MAAwB;AACvB,MAAI,EAAU;AACd,IAAE,gBAAgB;EAElB,IAAM,IAAa,MAAgB;AACnC,IAAS,UAAU,IAAa,EAAE,UAAU,EAAE;EAE9C,IAAM,KAAmB,MAA0B;GACjD,IAAM,IAAU,IAAa,EAAU,UAAU,EAAU,SACrD,IAAQ,IAAU,EAAS;AAEjC,GADA,EAAS,UAAU,GACnB,EAAS,EAAM;KAGX,UAAsB;AAG1B,GAFA,SAAS,oBAAoB,aAAa,EAAgB,EAC1D,SAAS,oBAAoB,WAAW,EAAc,EACtD,KAAe;;AAIjB,EADA,SAAS,iBAAiB,aAAa,EAAgB,EACvD,SAAS,iBAAiB,WAAW,EAAc;IAErD;EAAC;EAAU;EAAU;EAAa;EAAY,CAC/C;AAED,QACE,kBAAC,OAAD;EACE,WAAW,EACT,+DACA,MAAgB,aACZ,gDACA,sCACJ,KAAY,kCACZ,EACD;EACD,kBAAe;EACf,oBAAkB;EAClB,aAAa;EACR;EACL,MAAK;EACL,oBAAkB;EAClB,GAAI;YAEJ,kBAAC,OAAD,EACE,WAAW,EACT,qBACA,MAAgB,aACZ,2EACA,yEACL,EACD,CAAA;EACE,CAAA;EAGX"}
1
+ {"version":3,"file":"resize-handle-ilSc7QRM.js","names":[],"sources":["../src/l3-atoms/checkbox.tsx","../src/l3-atoms/resize-handle.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\ntype CheckboxProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> & {\n checked?: boolean\n checkIcon?: ReactNode\n label?: string\n onChange?: (checked: boolean) => void\n}\n\n// default check SVG (no lucide dependency)\nfunction DefaultCheck() {\n return (\n <svg className=\"h-3 w-3 text-accent-fg\" fill=\"none\" stroke=\"currentColor\" strokeWidth={3} viewBox=\"0 0 24 24\">\n <path d=\"M5 13l4 4L19 7\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )\n}\n\nexport const Checkbox = forwardRef<HTMLButtonElement, CheckboxProps>(\n function Checkbox(\n { checked = false, checkIcon, className, disabled = false, label, onChange, ...props },\n ref,\n ) {\n return (\n <button\n aria-checked={checked}\n className={cx(\n 'inline-flex select-none items-center gds-gap-sm',\n disabled && 'cursor-not-allowed opacity-50',\n className,\n )}\n data-component=\"checkbox\"\n data-state={checked ? 'checked' : 'unchecked'}\n disabled={disabled}\n onClick={() => onChange?.(!checked)}\n ref={ref}\n role=\"checkbox\"\n type=\"button\"\n {...props}\n >\n <span\n className={cx(\n 'inline-flex gds-icon shrink-0 items-center justify-center gds-radius-button border transition-colors',\n focusCls,\n checked\n ? 'border-accent bg-accent'\n : 'border-border bg-bg hover:border-accent/50',\n )}\n >\n <span className={cx('transition-opacity', checked ? 'opacity-100' : 'opacity-0')}>\n {checkIcon ?? <DefaultCheck />}\n </span>\n </span>\n {label !== undefined && (\n <span className=\"gds-text-body text-fg\">{label}</span>\n )}\n </button>\n )\n },\n)\n\nconst checkboxVariants = {\n state: {\n checked: 'border-accent bg-accent',\n unchecked: 'border-border bg-bg hover:border-accent/50',\n },\n} as const\n\nexport { checkboxVariants }\nexport type { CheckboxProps }\n","import { forwardRef, useCallback, useRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype ResizeHandleProps = React.HTMLAttributes<HTMLDivElement> & {\n orientation?: 'horizontal' | 'vertical'\n onResize: (delta: number) => void\n onResizeEnd?: () => void\n disabled?: boolean\n}\n\nexport const ResizeHandle = forwardRef<HTMLDivElement, ResizeHandleProps>(\n function ResizeHandle(\n {\n className,\n disabled,\n onResize,\n onResizeEnd,\n orientation = 'vertical',\n ...props\n },\n ref,\n ) {\n const startPos = useRef(0)\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n if (disabled) return\n e.preventDefault()\n\n const isVertical = orientation === 'vertical'\n startPos.current = isVertical ? e.clientX : e.clientY\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n const current = isVertical ? moveEvent.clientX : moveEvent.clientY\n const delta = current - startPos.current\n startPos.current = current\n onResize(delta)\n }\n\n const handleMouseUp = () => {\n document.removeEventListener('mousemove', handleMouseMove)\n document.removeEventListener('mouseup', handleMouseUp)\n onResizeEnd?.()\n }\n\n document.addEventListener('mousemove', handleMouseMove)\n document.addEventListener('mouseup', handleMouseUp)\n },\n [disabled, onResize, onResizeEnd, orientation],\n )\n\n return (\n <div\n className={cx(\n 'group relative flex items-center justify-center select-none',\n orientation === 'vertical'\n ? 'w-2 cursor-col-resize flex-col self-stretch'\n : 'h-2 cursor-row-resize self-stretch',\n disabled && 'pointer-events-none opacity-40',\n className,\n )}\n data-component=\"resize-handle\"\n data-orientation={orientation}\n onMouseDown={handleMouseDown}\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n {...props}\n >\n <div\n className={cx(\n 'transition-colors',\n orientation === 'vertical'\n ? 'h-full w-0.5 bg-border group-hover:bg-accent/50 group-active:bg-accent'\n : 'h-0.5 w-full bg-border group-hover:bg-accent/50 group-active:bg-accent',\n )}\n />\n </div>\n )\n },\n)\n\nexport type { ResizeHandleProps }\n"],"mappings":";;;;;AAcA,SAAS,IAAe;AACtB,QACE,kBAAC,OAAD;EAAK,WAAU;EAAyB,MAAK;EAAO,QAAO;EAAe,aAAa;EAAG,SAAQ;YAChG,kBAAC,QAAD;GAAM,GAAE;GAAiB,eAAc;GAAQ,gBAAe;GAAU,CAAA;EACpE,CAAA;;AAIV,IAAa,IAAW,EACtB,SACE,EAAE,aAAU,IAAO,cAAW,cAAW,cAAW,IAAO,UAAO,aAAU,GAAG,KAC/E,GACA;AACA,QACE,kBAAC,UAAD;EACE,gBAAc;EACd,WAAW,EACT,mDACA,KAAY,iCACZ,EACD;EACD,kBAAe;EACf,cAAY,IAAU,YAAY;EACxB;EACV,eAAe,IAAW,CAAC,EAAQ;EAC9B;EACL,MAAK;EACL,MAAK;EACL,GAAI;YAdN,CAgBE,kBAAC,QAAD;GACE,WAAW,EACT,wGACA,GACA,IACI,4BACA,6CACL;aAED,kBAAC,QAAD;IAAM,WAAW,EAAG,sBAAsB,IAAU,gBAAgB,YAAY;cAC7E,KAAa,kBAAC,GAAD,EAAgB,CAAA;IACzB,CAAA;GACF,CAAA,EACN,MAAU,KAAA,KACT,kBAAC,QAAD;GAAM,WAAU;aAAyB;GAAa,CAAA,CAEjD;;EAGd,EAEK,IAAmB,EACvB,OAAO;CACL,SAAS;CACT,WAAW;CACZ,EACF,EC3DY,IAAe,EAC1B,SACE,EACE,cACA,aACA,aACA,gBACA,iBAAc,YACd,GAAG,KAEL,GACA;CACA,IAAM,IAAW,EAAO,EAAE,EAEpB,IAAkB,GACrB,MAAwB;AACvB,MAAI,EAAU;AACd,IAAE,gBAAgB;EAElB,IAAM,IAAa,MAAgB;AACnC,IAAS,UAAU,IAAa,EAAE,UAAU,EAAE;EAE9C,IAAM,KAAmB,MAA0B;GACjD,IAAM,IAAU,IAAa,EAAU,UAAU,EAAU,SACrD,IAAQ,IAAU,EAAS;AAEjC,GADA,EAAS,UAAU,GACnB,EAAS,EAAM;KAGX,UAAsB;AAG1B,GAFA,SAAS,oBAAoB,aAAa,EAAgB,EAC1D,SAAS,oBAAoB,WAAW,EAAc,EACtD,KAAe;;AAIjB,EADA,SAAS,iBAAiB,aAAa,EAAgB,EACvD,SAAS,iBAAiB,WAAW,EAAc;IAErD;EAAC;EAAU;EAAU;EAAa;EAAY,CAC/C;AAED,QACE,kBAAC,OAAD;EACE,WAAW,EACT,+DACA,MAAgB,aACZ,gDACA,sCACJ,KAAY,kCACZ,EACD;EACD,kBAAe;EACf,oBAAkB;EAClB,aAAa;EACR;EACL,MAAK;EACL,oBAAkB;EAClB,GAAI;YAEJ,kBAAC,OAAD,EACE,WAAW,EACT,qBACA,MAAgB,aACZ,2EACA,yEACL,EACD,CAAA;EACE,CAAA;EAGX"}
@@ -23,39 +23,82 @@ var s = n("w-full gds-radius-input border bg-bg text-fg transition-colors placeh
23
23
  sm: "gds-h-sm gds-text-label"
24
24
  }
25
25
  }
26
- }), c = i(function({ className: n, error: r, glass: i, icon: c, inputSize: l, rightIcon: u, ...d }, f) {
27
- let p = c !== void 0, m = u !== void 0;
28
- return !p && !m ? /* @__PURE__ */ a("input", {
26
+ });
27
+ function c() {
28
+ return /* @__PURE__ */ o("svg", {
29
+ className: "h-3.5 w-3.5 animate-spin text-fg-muted",
30
+ fill: "none",
31
+ viewBox: "0 0 24 24",
32
+ children: [/* @__PURE__ */ a("circle", {
33
+ className: "opacity-25",
34
+ cx: "12",
35
+ cy: "12",
36
+ r: "10",
37
+ stroke: "currentColor",
38
+ strokeWidth: "4"
39
+ }), /* @__PURE__ */ a("path", {
40
+ className: "opacity-75",
41
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z",
42
+ fill: "currentColor"
43
+ })]
44
+ });
45
+ }
46
+ function l() {
47
+ return /* @__PURE__ */ a("svg", {
48
+ className: "h-3.5 w-3.5",
49
+ fill: "none",
50
+ stroke: "currentColor",
51
+ strokeWidth: "2",
52
+ viewBox: "0 0 24 24",
53
+ children: /* @__PURE__ */ a("path", {
54
+ d: "M18 6L6 18M6 6l12 12",
55
+ strokeLinecap: "round",
56
+ strokeLinejoin: "round"
57
+ })
58
+ });
59
+ }
60
+ var u = i(function({ className: n, clearable: r, error: i, glass: u, icon: d, inputSize: f, loading: p, onClear: m, rightIcon: h, value: g, ..._ }, v) {
61
+ let y = d !== void 0, b = r === !0 && g !== void 0 && g !== "", x = p === !0, S = h !== void 0 || b || x, C = x ? /* @__PURE__ */ a(c, {}) : b ? /* @__PURE__ */ a("button", {
62
+ "aria-label": "Clear",
63
+ className: "text-fg-muted/50 hover:text-fg-muted transition-colors",
64
+ onClick: m,
65
+ tabIndex: -1,
66
+ type: "button",
67
+ children: /* @__PURE__ */ a(l, {})
68
+ }) : h;
69
+ return !y && !S ? /* @__PURE__ */ a("input", {
29
70
  className: e(s({
30
- error: r,
31
- inputSize: l
32
- }), "gds-pad-x", t(i), i === !0 && "border-white/10 bg-bg/60", n),
71
+ error: i,
72
+ inputSize: f
73
+ }), "gds-pad-x", t(u), u === !0 && "border-white/10 bg-bg/60", n),
33
74
  "data-component": "input",
34
- ref: f,
35
- ...d
75
+ ref: v,
76
+ value: g,
77
+ ..._
36
78
  }) : /* @__PURE__ */ o("div", {
37
79
  className: "relative",
38
80
  "data-component": "input",
39
81
  children: [
40
- p && /* @__PURE__ */ a("span", {
82
+ y && /* @__PURE__ */ a("span", {
41
83
  className: "absolute top-1/2 left-2.5 -translate-y-1/2 text-fg-muted/50 gds-icon-child-sm",
42
- children: c
84
+ children: d
43
85
  }),
44
86
  /* @__PURE__ */ a("input", {
45
87
  className: e(s({
46
- error: r,
47
- inputSize: l
48
- }), p ? "pl-8" : "gds-pad-x", m ? "pr-8" : "gds-pad-x", t(i), i === !0 && "border-white/10 bg-bg/60", n),
49
- ref: f,
50
- ...d
88
+ error: i,
89
+ inputSize: f
90
+ }), y ? "pl-8" : "gds-pad-x", S ? "pr-8" : "gds-pad-x", t(u), u === !0 && "border-white/10 bg-bg/60", n),
91
+ ref: v,
92
+ value: g,
93
+ ..._
51
94
  }),
52
- m && /* @__PURE__ */ a("span", {
95
+ S && /* @__PURE__ */ a("span", {
53
96
  className: "absolute top-1/2 right-2.5 -translate-y-1/2 text-fg-muted/50 gds-icon-child-sm",
54
- children: u
97
+ children: C
55
98
  })
56
99
  ]
57
100
  });
58
- }), l = i(function({ children: t, className: n, required: r = !1, ...i }, s) {
101
+ }), d = i(function({ children: t, className: n, required: r = !1, ...i }, s) {
59
102
  return /* @__PURE__ */ o("label", {
60
103
  className: e("block select-none gds-text-body font-medium text-fg", n),
61
104
  "data-component": "label",
@@ -66,16 +109,16 @@ var s = n("w-full gds-radius-input border bg-bg text-fg transition-colors placeh
66
109
  children: "*"
67
110
  })]
68
111
  });
69
- }), u = n("animate-spin text-accent", {
112
+ }), f = n("animate-spin text-accent", {
70
113
  defaultVariants: { size: "default" },
71
114
  variants: { size: {
72
115
  default: "gds-icon",
73
116
  lg: "gds-icon-lg",
74
117
  sm: "gds-icon-sm"
75
118
  } }
76
- }), d = i(function({ className: t, size: n }, r) {
119
+ }), p = i(function({ className: t, size: n }, r) {
77
120
  return /* @__PURE__ */ o("svg", {
78
- className: e(u({ size: n }), t),
121
+ className: e(f({ size: n }), t),
79
122
  "data-component": "spinner",
80
123
  fill: "none",
81
124
  ref: r,
@@ -96,6 +139,6 @@ var s = n("w-full gds-radius-input border bg-bg text-fg transition-colors placeh
96
139
  });
97
140
  });
98
141
  //#endregion
99
- export { s as a, c as i, u as n, l as r, d as t };
142
+ export { s as a, u as i, f as n, d as r, p as t };
100
143
 
101
- //# sourceMappingURL=spinner-D8Ti-TFe.js.map
144
+ //# sourceMappingURL=spinner-N7UNjdsQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner-N7UNjdsQ.js","names":[],"sources":["../src/l2-primitives/input.tsx","../src/l2-primitives/label.tsx","../src/l2-primitives/spinner.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\nimport type { VariantProps } from '../utils/types'\n\nconst inputVariants = cva(\n 'w-full gds-radius-input border bg-bg text-fg transition-colors placeholder:text-fg-muted/50 outline-none disabled:cursor-not-allowed disabled:opacity-50 ' +\n focusCls,\n {\n compoundVariants: [\n {\n error: true,\n className: 'focus-visible:ring-danger',\n },\n ],\n defaultVariants: {\n error: false,\n inputSize: 'default',\n },\n variants: {\n error: {\n false: 'border-border hover:border-border-strong',\n true: 'border-danger',\n },\n inputSize: {\n default: 'gds-h gds-text-body',\n sm: 'gds-h-sm gds-text-label',\n },\n },\n },\n)\n\ntype InputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> &\n VariantProps<typeof inputVariants> & {\n clearable?: boolean\n glass?: boolean\n icon?: ReactNode\n loading?: boolean\n onClear?: () => void\n rightIcon?: ReactNode\n }\n\n// inline spinner SVG (no lucide dependency at L2)\nfunction InlineSpinner() {\n return (\n <svg className=\"h-3.5 w-3.5 animate-spin text-fg-muted\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\" />\n <path className=\"opacity-75\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\" fill=\"currentColor\" />\n </svg>\n )\n}\n\n// inline X SVG for clear button\nfunction InlineClear() {\n return (\n <svg className=\"h-3.5 w-3.5\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" viewBox=\"0 0 24 24\">\n <path d=\"M18 6L6 18M6 6l12 12\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n function Input(\n { className, clearable, error, glass, icon, inputSize, loading, onClear, rightIcon, value, ...props },\n ref,\n ) {\n const hasLeft = icon !== undefined\n const showClear = clearable === true && value !== undefined && value !== ''\n const showLoading = loading === true\n const hasRight = rightIcon !== undefined || showClear || showLoading\n\n // rightmost element: loading > clear > rightIcon\n const rightElement = showLoading\n ? <InlineSpinner />\n : showClear\n ? (\n <button\n aria-label=\"Clear\"\n className=\"text-fg-muted/50 hover:text-fg-muted transition-colors\"\n onClick={onClear}\n tabIndex={-1}\n type=\"button\"\n >\n <InlineClear />\n </button>\n )\n : rightIcon\n\n if (!hasLeft && !hasRight) {\n return (\n <input\n className={cx(\n inputVariants({ error, inputSize }),\n 'gds-pad-x',\n glassClass(glass),\n glass === true && 'border-white/10 bg-bg/60',\n className,\n )}\n data-component=\"input\"\n ref={ref}\n value={value}\n {...props}\n />\n )\n }\n\n return (\n <div className=\"relative\" data-component=\"input\">\n {hasLeft && (\n <span className=\"absolute top-1/2 left-2.5 -translate-y-1/2 text-fg-muted/50 gds-icon-child-sm\">\n {icon}\n </span>\n )}\n <input\n className={cx(\n inputVariants({ error, inputSize }),\n hasLeft ? 'pl-8' : 'gds-pad-x',\n hasRight ? 'pr-8' : 'gds-pad-x',\n glassClass(glass),\n glass === true && 'border-white/10 bg-bg/60',\n className,\n )}\n ref={ref}\n value={value}\n {...props}\n />\n {hasRight && (\n <span className=\"absolute top-1/2 right-2.5 -translate-y-1/2 text-fg-muted/50 gds-icon-child-sm\">\n {rightElement}\n </span>\n )}\n </div>\n )\n },\n)\n\nexport { inputVariants }\nexport type { InputProps }\n","import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype LabelProps = React.LabelHTMLAttributes<HTMLLabelElement> & {\n required?: boolean\n}\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\n function Label({ children, className, required = false, ...props }, ref) {\n return (\n <label\n className={cx('block select-none gds-text-body font-medium text-fg', className)}\n data-component=\"label\"\n ref={ref}\n {...props}\n >\n {children}\n {required && <span className=\"ml-0.5 text-danger\">*</span>}\n </label>\n )\n },\n)\n\nexport type { LabelProps }\n","import { cva } from 'class-variance-authority'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst spinnerVariants = cva('animate-spin text-accent', {\n defaultVariants: { size: 'default' },\n variants: {\n size: {\n default: 'gds-icon',\n lg: 'gds-icon-lg',\n sm: 'gds-icon-sm',\n },\n },\n})\n\ntype SpinnerProps = VariantProps<typeof spinnerVariants> & {\n className?: string\n}\n\nexport const Spinner = forwardRef<SVGSVGElement, SpinnerProps>(\n function Spinner({ className, size }, ref) {\n return (\n <svg\n className={cx(spinnerVariants({ size }), className)}\n data-component=\"spinner\"\n fill=\"none\"\n ref={ref}\n role=\"status\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n }\n)\n\nexport { spinnerVariants }\nexport type { SpinnerProps }\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goliapkg/gds",
3
- "version": "1.0.10",
3
+ "version": "1.4.2",
4
4
  "description": "GOLIA Design System — enterprise-grade UI component library with contextual depth, glass materials, AI-native structure, and 10 design principles",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1 +0,0 @@
1
- {"version":3,"file":"avatar-By0U5Vts.js","names":[],"sources":["../src/l3-atoms/avatar.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\nimport type { VariantProps } from '../utils/types'\n\nconst avatarVariants = cva(\n 'relative inline-flex shrink-0 select-none items-center justify-center rounded-full font-medium',\n {\n defaultVariants: { size: 'default' },\n variants: {\n size: {\n default: 'h-8 w-8 text-xs',\n lg: 'h-10 w-10 text-sm',\n sm: 'h-6 w-6 text-[10px]',\n xs: 'h-5 w-5 text-[9px]',\n },\n },\n },\n)\n\nconst paletteColors = [\n 'bg-palette-0', 'bg-palette-1', 'bg-palette-2', 'bg-palette-3', 'bg-palette-4',\n 'bg-palette-5', 'bg-palette-6', 'bg-palette-7', 'bg-palette-8', 'bg-palette-9',\n]\n\nconst statusColors: Record<string, string> = {\n away: 'bg-warning',\n busy: 'bg-danger',\n offline: 'bg-fg-muted/30',\n online: 'bg-success',\n}\n\nconst statusSizeMap: Record<string, string> = {\n default: 'h-2.5 w-2.5',\n lg: 'h-3 w-3',\n sm: 'h-2 w-2',\n xs: 'h-1.5 w-1.5',\n}\n\nfunction getInitials(name: string): string {\n const parts = name.trim().split(/\\s+/)\n if (parts.length >= 2) return `${parts[0][0]}${parts[1][0]}`.toUpperCase()\n return name.slice(0, 2).toUpperCase()\n}\n\nfunction hashName(name: string): number {\n let hash = 0\n for (let i = 0; i < name.length; i++) {\n hash = (hash * 31 + name.charCodeAt(i)) | 0\n }\n return Math.abs(hash)\n}\n\ntype AvatarStatus = 'away' | 'busy' | 'offline' | 'online'\n\ntype AvatarProps = React.HTMLAttributes<HTMLSpanElement> &\n VariantProps<typeof avatarVariants> & {\n glass?: boolean\n name?: string\n src?: string\n status?: AvatarStatus\n }\n\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(\n function Avatar({ className, glass, name, size = 'default', src, status, ...props }, ref) {\n const sizeKey = size ?? 'default'\n const colorIdx = name !== undefined ? hashName(name) % 10 : 0\n\n return (\n <span\n className={cx(\n avatarVariants({ size }),\n src === undefined && paletteColors[colorIdx],\n src === undefined && 'text-accent-fg',\n glassClass(glass),\n className,\n )}\n data-component=\"avatar\"\n ref={ref}\n {...props}\n >\n {src !== undefined ? (\n <img alt={name ?? ''} className=\"absolute inset-0 h-full w-full rounded-full object-cover\" src={src} />\n ) : (\n <span>{name !== undefined ? getInitials(name) : '?'}</span>\n )}\n {status !== undefined && (\n <span\n className={cx(\n 'absolute right-0 bottom-0 rounded-full ring-2 ring-bg',\n statusSizeMap[sizeKey],\n statusColors[status],\n )}\n />\n )}\n </span>\n )\n },\n)\n\ntype AvatarGroupProps = React.HTMLAttributes<HTMLDivElement> & {\n max?: number\n}\n\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(\n function AvatarGroup({ children, className, max, ...props }, ref) {\n const items = Array.isArray(children) ? children : [children]\n const visible = max !== undefined ? items.slice(0, max) : items\n const overflow = max !== undefined ? items.length - max : 0\n\n return (\n <div\n className={cx('flex -space-x-2', className)}\n data-component=\"avatar-group\"\n ref={ref}\n {...props}\n >\n {visible}\n {overflow > 0 && (\n <span className=\"inline-flex gds-sq items-center justify-center rounded-full bg-bg-tertiary gds-text-body font-medium text-fg-muted ring-2 ring-bg\">\n +{overflow}\n </span>\n )}\n </div>\n )\n },\n)\n\nexport { avatarVariants }\nexport type { AvatarGroupProps, AvatarProps, AvatarStatus }\n"],"mappings":";;;;;AAOA,IAAM,IAAiB,EACrB,kGACA;CACE,iBAAiB,EAAE,MAAM,WAAW;CACpC,UAAU,EACR,MAAM;EACJ,SAAS;EACT,IAAI;EACJ,IAAI;EACJ,IAAI;EACL,EACF;CACF,CACF,EAEK,IAAgB;CACpB;CAAgB;CAAgB;CAAgB;CAAgB;CAChE;CAAgB;CAAgB;CAAgB;CAAgB;CACjE,EAEK,IAAuC;CAC3C,MAAM;CACN,MAAM;CACN,SAAS;CACT,QAAQ;CACT,EAEK,IAAwC;CAC5C,SAAS;CACT,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,SAAS,EAAY,GAAsB;CACzC,IAAM,IAAQ,EAAK,MAAM,CAAC,MAAM,MAAM;AAEtC,QADI,EAAM,UAAU,IAAU,GAAG,EAAM,GAAG,KAAK,EAAM,GAAG,KAAK,aAAa,GACnE,EAAK,MAAM,GAAG,EAAE,CAAC,aAAa;;AAGvC,SAAS,EAAS,GAAsB;CACtC,IAAI,IAAO;AACX,MAAK,IAAI,IAAI,GAAG,IAAI,EAAK,QAAQ,IAC/B,KAAQ,IAAO,KAAK,EAAK,WAAW,EAAE,GAAI;AAE5C,QAAO,KAAK,IAAI,EAAK;;AAavB,IAAa,IAAS,EACpB,SAAgB,EAAE,cAAW,UAAO,SAAM,UAAO,WAAW,QAAK,WAAQ,GAAG,KAAS,GAAK;CACxF,IAAM,IAAU,KAAQ,WAClB,IAAW,MAAS,KAAA,IAAkC,IAAtB,EAAS,EAAK,GAAG;AAEvD,QACE,kBAAC,QAAD;EACE,WAAW,EACT,EAAe,EAAE,SAAM,CAAC,EACxB,MAAQ,KAAA,KAAa,EAAc,IACnC,MAAQ,KAAA,KAAa,kBACrB,EAAW,EAAM,EACjB,EACD;EACD,kBAAe;EACV;EACL,GAAI;YAVN,CAYG,MAAQ,KAAA,IAGP,kBAAC,QAAD,EAAA,UAAO,MAAS,KAAA,IAAgC,MAApB,EAAY,EAAK,EAAc,CAAA,GAF3D,kBAAC,OAAD;GAAK,KAAK,KAAQ;GAAI,WAAU;GAAgE;GAAO,CAAA,EAIxG,MAAW,KAAA,KACV,kBAAC,QAAD,EACE,WAAW,EACT,yDACA,EAAc,IACd,EAAa,GACd,EACD,CAAA,CAEC;;EAGZ,EAMY,IAAc,EACzB,SAAqB,EAAE,aAAU,cAAW,QAAK,GAAG,KAAS,GAAK;CAChE,IAAM,IAAQ,MAAM,QAAQ,EAAS,GAAG,IAAW,CAAC,EAAS,EACvD,IAAU,MAAQ,KAAA,IAAkC,IAAtB,EAAM,MAAM,GAAG,EAAI,EACjD,IAAW,MAAQ,KAAA,IAAiC,IAArB,EAAM,SAAS;AAEpD,QACE,kBAAC,OAAD;EACE,WAAW,EAAG,mBAAmB,EAAU;EAC3C,kBAAe;EACV;EACL,GAAI;YAJN,CAMG,GACA,IAAW,KACV,kBAAC,QAAD;GAAM,WAAU;aAAhB,CAAoJ,KAChJ,EACG;KAEL;;EAGX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"l2-primitives-BIiL8hFH.js","names":[],"sources":["../src/l2-primitives/anchor.tsx","../src/l2-primitives/badge-dot.tsx","../src/l2-primitives/container.tsx","../src/l2-primitives/divider.tsx","../src/l2-primitives/dot.tsx","../src/l2-primitives/focus-ring.tsx","../src/l2-primitives/glow-effect.tsx","../src/l2-primitives/gradient-border.tsx","../src/l2-primitives/loading.tsx","../src/l2-primitives/number-stepper.tsx","../src/l2-primitives/number-input.tsx","../src/l2-primitives/screen-overlay.tsx","../src/l2-primitives/scroll-area.tsx","../src/l2-primitives/shimmer.tsx","../src/l2-primitives/skip-nav.tsx","../src/l2-primitives/slider.tsx","../src/l2-primitives/truncate.tsx","../src/l2-primitives/visually-hidden.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst anchorVariants = cva(\n 'inline-flex items-center gds-gap-xs underline-offset-2 transition-colors hover:underline ' +\n focusCls,\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: 'text-accent hover:text-accent/80',\n muted: 'text-fg-muted hover:text-fg',\n },\n },\n },\n)\n\ntype AnchorProps = React.AnchorHTMLAttributes<HTMLAnchorElement> &\n VariantProps<typeof anchorVariants> & {\n external?: boolean\n externalIcon?: ReactNode\n }\n\nexport const Anchor = forwardRef<HTMLAnchorElement, AnchorProps>(\n function Anchor(\n { children, className, external = false, externalIcon, variant, ...props },\n ref,\n ) {\n return (\n <a\n className={cx(anchorVariants({ variant }), className)}\n data-component=\"anchor\"\n ref={ref}\n {...(external && {\n rel: 'noopener noreferrer',\n target: '_blank',\n })}\n {...props}\n >\n {children}\n {external && externalIcon !== undefined && (\n <span className=\"gds-icon-child-xs\">{externalIcon}</span>\n )}\n </a>\n )\n },\n)\n\nexport { anchorVariants }\nexport type { AnchorProps }\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nconst colorMap = {\n accent: 'bg-accent',\n danger: 'bg-danger',\n success: 'bg-success',\n} as const\n\ntype BadgeDotProps = React.HTMLAttributes<HTMLDivElement> & {\n children: ReactNode\n color?: 'accent' | 'danger' | 'success'\n show?: boolean\n}\n\nexport const BadgeDot = forwardRef<HTMLDivElement, BadgeDotProps>(\n function BadgeDot({ children, className, color = 'danger', show = true, ...props }, ref) {\n return (\n <div\n className={cx('relative inline-flex', className)}\n data-component=\"badge-dot\"\n ref={ref}\n {...props}\n >\n {children}\n {show && (\n <span\n className={cx('absolute -right-0.5 -top-0.5 h-1.5 w-1.5 rounded-full', colorMap[color])}\n />\n )}\n </div>\n )\n },\n)\n\nexport type { BadgeDotProps }\n","// container — responsive max-width wrapper with size variants\nimport { cva } from 'class-variance-authority'\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst containerVariants = cva('mx-auto w-full px-4', {\n defaultVariants: { size: 'default' },\n variants: {\n size: {\n default: 'max-w-screen-md',\n full: 'max-w-full',\n lg: 'max-w-screen-lg',\n sm: 'max-w-screen-sm',\n xl: 'max-w-screen-xl',\n },\n },\n})\n\ntype ContainerProps = React.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof containerVariants> & {\n children: ReactNode\n }\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n function Container({ children, className, size, ...props }, ref) {\n return (\n <div\n className={cx(containerVariants({ size }), className)}\n data-component=\"container\"\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nexport { containerVariants }\nexport type { ContainerProps }\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype DividerProps = React.HTMLAttributes<HTMLDivElement> & {\n icon?: ReactNode\n orientation?: 'horizontal' | 'vertical'\n}\n\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(\n function Divider({ className, icon, orientation = 'horizontal', ...props }, ref) {\n if (orientation === 'vertical') {\n return (\n <div\n className={cx('inline-flex h-full flex-col items-center', icon !== undefined && 'gds-gap-sm', className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n >\n {icon !== undefined ? (\n <>\n <div className=\"flex-1 border-l border-border\" />\n <span className=\"shrink-0 text-fg-muted/50 gds-icon-child-sm\">{icon}</span>\n <div className=\"flex-1 border-l border-border\" />\n </>\n ) : (\n <div className=\"h-full border-l border-border\" />\n )}\n </div>\n )\n }\n\n if (icon !== undefined) {\n return (\n <div\n className={cx('flex items-center gds-gap-sm', className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n >\n <div className=\"flex-1 border-t border-border\" />\n <span className=\"shrink-0 text-fg-muted/50 gds-icon-child-sm\">{icon}</span>\n <div className=\"flex-1 border-t border-border\" />\n </div>\n )\n }\n\n return (\n <div\n className={cx('h-px w-full bg-border/50', className)}\n data-component=\"divider\"\n ref={ref}\n {...props}\n />\n )\n },\n)\n\nexport type { DividerProps }\n","import { cva } from 'class-variance-authority'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport type { VariantProps } from '../utils/types'\n\nconst dotVariants = cva('inline-block shrink-0 gds-radius-badge', {\n defaultVariants: {\n color: 'accent',\n size: 'default',\n },\n variants: {\n color: {\n accent: 'bg-accent',\n danger: 'bg-danger',\n muted: 'bg-fg-muted/30',\n success: 'bg-success',\n warning: 'bg-warning',\n },\n size: {\n default: 'h-2 w-2',\n lg: 'h-3 w-3',\n sm: 'h-1.5 w-1.5',\n },\n },\n})\n\ntype DotProps = React.HTMLAttributes<HTMLSpanElement> &\n VariantProps<typeof dotVariants> & {\n label?: string\n pulse?: boolean\n }\n\nexport const Dot = forwardRef<HTMLSpanElement, DotProps>(\n function Dot({ className, color, label, pulse = false, size, ...props }, ref) {\n return (\n <span\n className={cx('relative inline-flex items-center', label !== undefined && 'gds-gap-sm', className)}\n data-component=\"dot\"\n ref={ref}\n {...props}\n >\n <span className={dotVariants({ color, size })} />\n {pulse && (\n <span\n className={cx(\n 'absolute inset-0 animate-ping gds-radius-badge opacity-40',\n dotVariants({ color, size }),\n )}\n />\n )}\n {label !== undefined && (\n <span className=\"gds-text-label text-fg-muted\">{label}</span>\n )}\n </span>\n )\n },\n)\n\nexport { dotVariants }\nexport type { DotProps }\n","import type { CSSProperties, ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype FocusRingProps = {\n children: ReactNode\n color?: string\n width?: number\n offset?: number\n className?: string\n}\n\nconst FocusRing = forwardRef<HTMLSpanElement, FocusRingProps>(function FocusRing(\n { children, color = 'var(--gds-accent)', width = 2, offset = 2, className },\n ref,\n) {\n const style: CSSProperties = {\n '--focus-ring-color': color,\n '--focus-ring-width': `${width}px`,\n '--focus-ring-offset': `${offset}px`,\n } as CSSProperties\n\n return (\n <span\n ref={ref}\n className={cx(\n 'relative inline-flex [&:focus-within]:outline [&:focus-within]:outline-[length:var(--focus-ring-width)] [&:focus-within]:outline-[color:var(--focus-ring-color)] [&:focus-within]:outline-offset-[var(--focus-ring-offset)]',\n className,\n )}\n data-component=\"focus-ring\"\n style={style}\n >\n {children}\n </span>\n )\n})\n\nexport { FocusRing }\nexport type { FocusRingProps }\n","// glow-effect — container that adds a colored glow/aura behind its content via box-shadow\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype GlowIntensity = 'sm' | 'default' | 'lg'\n\ntype IntensityConfig = {\n blur: number\n opacity: number\n spread: number\n}\n\nconst intensityMap: Record<GlowIntensity, IntensityConfig> = {\n sm: { blur: 20, opacity: 15, spread: 4 },\n default: { blur: 32, opacity: 18, spread: 8 },\n lg: { blur: 48, opacity: 25, spread: 12 },\n}\n\nfunction buildShadow(color: string, config: IntensityConfig): string {\n const outer = `0 0 ${config.blur}px ${config.spread}px color-mix(in srgb, ${color} ${config.opacity}%, transparent)`\n const innerBlur = Math.round(config.blur * 0.4)\n const innerSpread = Math.round(config.spread * 0.5)\n const innerOpacity = Math.round(config.opacity * 1.5)\n const inner = `0 0 ${innerBlur}px ${innerSpread}px color-mix(in srgb, ${color} ${innerOpacity}%, transparent)`\n return `${outer}, ${inner}`\n}\n\nexport type GlowEffectProps = {\n children: React.ReactNode\n className?: string\n color?: string\n intensity?: GlowIntensity\n radius?: number\n}\n\nexport const GlowEffect = forwardRef<HTMLDivElement, GlowEffectProps>(\n function GlowEffect(\n { children, className, color = 'var(--gds-accent)', intensity = 'default', radius },\n ref,\n ) {\n const config = intensityMap[intensity]\n return (\n <div\n ref={ref}\n data-component=\"glow-effect\"\n className={cx('relative', className)}\n style={{\n borderRadius: radius !== undefined ? `${radius}px` : undefined,\n boxShadow: buildShadow(color, config),\n }}\n >\n {children}\n </div>\n )\n },\n)\n","// gradient-border — container with a gradient border via background-clip trick\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nexport type GradientBorderProps = {\n children: React.ReactNode\n gradient?: string\n width?: number\n radius?: number\n className?: string\n}\n\nexport const GradientBorder = forwardRef<HTMLDivElement, GradientBorderProps>(\n function GradientBorder(\n {\n children,\n gradient = 'linear-gradient(135deg, var(--gds-accent), var(--gds-success))',\n width = 1,\n radius = 12,\n className,\n },\n ref,\n ) {\n const innerRadius = Math.max(0, radius - width)\n\n return (\n <div\n ref={ref}\n data-component=\"gradient-border\"\n className={cx(className)}\n style={{ background: gradient, padding: width, borderRadius: radius }}\n >\n <div\n className=\"bg-bg\"\n style={{ borderRadius: innerRadius }}\n >\n {children}\n </div>\n </div>\n )\n },\n)\n","// loading — loading indicator variants (dots, bars, pulse, ring, wave)\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype LoadingSize = 'default' | 'lg' | 'sm'\n\ntype LoadingProps = {\n className?: string\n size?: LoadingSize\n}\n\nconst sizeClasses: Record<LoadingSize, { container: string; dot: string }> = {\n default: { container: 'gap-1.5', dot: 'h-2 w-2' },\n lg: { container: 'gap-2', dot: 'h-3 w-3' },\n sm: { container: 'gap-1', dot: 'h-1.5 w-1.5' },\n}\n\nconst barSizeClasses: Record<LoadingSize, { bar: string; container: string }> = {\n default: { bar: 'w-1 h-4', container: 'gap-1 h-4' },\n lg: { bar: 'w-1.5 h-6', container: 'gap-1.5 h-6' },\n sm: { bar: 'w-0.5 h-3', container: 'gap-0.5 h-3' },\n}\n\nconst pulseSizeClasses: Record<LoadingSize, string> = {\n default: 'h-4 w-4',\n lg: 'h-6 w-6',\n sm: 'h-3 w-3',\n}\n\nconst ringSizeClasses: Record<LoadingSize, string> = {\n default: 'h-4 w-4 border-2',\n lg: 'h-6 w-6 border-[3px]',\n sm: 'h-3 w-3 border-[1.5px]',\n}\n\nexport const LoadingDots = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingDots({ className, size = 'default' }, ref) {\n const s = sizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-center', s.container, className)}\n data-component=\"loading-dots\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2].map((i) => (\n <span\n className={cx('rounded-full bg-accent', s.dot)}\n key={i}\n style={{\n animation: 'loading-dots 1.4s infinite ease-in-out both',\n animationDelay: `${i * 0.16}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport const LoadingBars = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingBars({ className, size = 'default' }, ref) {\n const s = barSizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-center', s.container, className)}\n data-component=\"loading-bars\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2, 3, 4].map((i) => (\n <span\n className={cx('rounded-sm bg-accent', s.bar)}\n key={i}\n style={{\n animation: 'loading-bars 1.2s infinite ease-in-out',\n animationDelay: `${i * 0.1}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport const LoadingPulse = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingPulse({ className, size = 'default' }, ref) {\n return (\n <div\n className={cx('inline-flex items-center justify-center', className)}\n data-component=\"loading-pulse\"\n ref={ref}\n role=\"status\"\n >\n <span\n className={cx('rounded-full bg-accent', pulseSizeClasses[size])}\n style={{ animation: 'loading-pulse 2s infinite ease-in-out' }}\n />\n </div>\n )\n },\n)\n\nexport const LoadingRing = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingRing({ className, size = 'default' }, ref) {\n return (\n <div\n className={cx('inline-flex items-center justify-center', className)}\n data-component=\"loading-ring\"\n ref={ref}\n role=\"status\"\n >\n <span\n className={cx(\n 'animate-spin rounded-full border-accent border-t-transparent',\n ringSizeClasses[size],\n )}\n />\n </div>\n )\n },\n)\n\nexport const LoadingWave = forwardRef<HTMLDivElement, LoadingProps>(\n function LoadingWave({ className, size = 'default' }, ref) {\n const s = sizeClasses[size]\n return (\n <div\n className={cx('inline-flex items-end', s.container, className)}\n data-component=\"loading-wave\"\n ref={ref}\n role=\"status\"\n >\n {[0, 1, 2, 3, 4].map((i) => (\n <span\n className={cx('rounded-full bg-fg-muted', s.dot)}\n key={i}\n style={{\n animation: 'loading-wave 1.2s infinite ease-in-out',\n animationDelay: `${i * 0.1}s`,\n }}\n />\n ))}\n </div>\n )\n },\n)\n\nexport type { LoadingProps, LoadingSize }\n","// number-stepper — increment/decrement buttons for number-input\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype NumberStepperProps = {\n direction: 'decrement' | 'increment'\n disabled?: boolean\n onClick: () => void\n}\n\nconst btnBase =\n 'flex items-center justify-center select-none px-2 text-fg-muted hover:text-fg hover:bg-bg-tertiary transition-colors disabled:cursor-not-allowed disabled:opacity-50'\n\nconst NumberStepper = forwardRef<HTMLButtonElement, NumberStepperProps>(function NumberStepper(\n { direction, disabled, onClick },\n ref,\n) {\n const isDecrement = direction === 'decrement'\n return (\n <button\n ref={ref}\n aria-label={direction}\n className={cx(\n btnBase,\n isDecrement ? 'rounded-l-[inherit] border-r border-border' : 'rounded-r-[inherit] border-l border-border',\n )}\n disabled={disabled}\n onClick={onClick}\n tabIndex={-1}\n type=\"button\"\n >\n {isDecrement ? '-' : '+'}\n </button>\n )\n})\n\nexport { NumberStepper }\nexport type { NumberStepperProps }\n","import { cva } from 'class-variance-authority'\nimport { forwardRef, useCallback } from 'react'\n\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\nimport type { VariantProps } from '../utils/types'\nimport { NumberStepper } from './number-stepper'\n\nconst numberInputVariants = cva(\n 'flex items-center gds-radius-input border bg-bg text-fg transition-colors ' +\n '[&:has(input:focus-visible)]:ring-2 [&:has(input:focus-visible)]:ring-accent [&:has(input:focus-visible)]:ring-offset-1 [&:has(input:focus-visible)]:ring-offset-bg',\n {\n compoundVariants: [\n {\n error: true,\n className:\n '[&:has(input:focus-visible)]:ring-danger',\n },\n ],\n defaultVariants: {\n error: false,\n inputSize: 'default',\n },\n variants: {\n error: {\n false: 'border-border hover:border-border-strong',\n true: 'border-danger',\n },\n inputSize: {\n default: 'gds-h gds-text-body',\n sm: 'gds-h-sm gds-text-label',\n },\n },\n },\n)\n\ntype NumberInputProps = VariantProps<typeof numberInputVariants> & {\n className?: string\n disabled?: boolean\n glass?: boolean\n max?: number\n min?: number\n onChange: (value: number | null) => void\n placeholder?: string\n step?: number\n value: number | null\n}\n\nfunction clamp(val: number, min?: number, max?: number): number {\n let result = val\n if (min !== undefined && result < min) {\n result = min\n }\n if (max !== undefined && result > max) {\n result = max\n }\n return result\n}\n\nconst NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n function NumberInput(\n { className, disabled, error, glass, inputSize, max, min, onChange, placeholder, step = 1, value },\n ref,\n ) {\n const handleDecrement = useCallback(() => {\n const base = value ?? 0\n onChange(clamp(base - step, min, max))\n }, [value, step, min, max, onChange])\n\n const handleIncrement = useCallback(() => {\n const base = value ?? 0\n onChange(clamp(base + step, min, max))\n }, [value, step, min, max, onChange])\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const raw = e.target.value\n if (raw === '') {\n onChange(null)\n return\n }\n const parsed = Number(raw)\n if (Number.isNaN(parsed)) {\n return\n }\n onChange(clamp(parsed, min, max))\n },\n [min, max, onChange],\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault()\n handleIncrement()\n }\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n handleDecrement()\n }\n },\n [handleIncrement, handleDecrement],\n )\n\n return (\n <div\n className={cx(\n numberInputVariants({ error, inputSize }),\n glassClass(glass),\n glass === true && 'border-white/10 bg-bg/60',\n disabled === true && 'cursor-not-allowed opacity-50',\n className,\n )}\n data-component=\"number-input\"\n >\n <NumberStepper direction=\"decrement\" disabled={disabled} onClick={handleDecrement} />\n <input\n className={cx(\n 'min-w-0 flex-1 bg-transparent text-center outline-none placeholder:text-fg-muted/50',\n '[appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none',\n )}\n disabled={disabled}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={ref}\n type=\"number\"\n value={value ?? ''}\n />\n <NumberStepper direction=\"increment\" disabled={disabled} onClick={handleIncrement} />\n </div>\n )\n },\n)\n\nexport { NumberInput,numberInputVariants }\nexport type { NumberInputProps }\n","import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\nimport { glassClass } from '../utils/glass'\nimport { renderPortal } from '../utils/portal'\n\ntype ScreenOverlayProps = {\n visible: boolean\n glass?: boolean\n onClick?: () => void\n className?: string\n}\n\nconst ScreenOverlayInner = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n function ScreenOverlayInner({ visible, glass, onClick, className }, ref) {\n if (!visible) return null\n\n return (\n <div\n className={cx(\n 'fixed inset-0 z-40',\n glass === true ? glassClass(true) : 'bg-black/50',\n className,\n )}\n data-component=\"screen-overlay\"\n onClick={onClick}\n ref={ref}\n />\n )\n },\n)\n\nexport const ScreenOverlay = forwardRef<HTMLDivElement, ScreenOverlayProps>(\n function ScreenOverlay(props, ref) {\n return renderPortal(<ScreenOverlayInner ref={ref} {...props} />)\n },\n)\n\nexport type { ScreenOverlayProps }\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype ScrollAreaProps = React.HTMLAttributes<HTMLDivElement> & {\n children: ReactNode\n maxHeight?: number | string\n orientation?: 'both' | 'horizontal' | 'vertical'\n}\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n function ScrollArea(\n { children, className, maxHeight, orientation = 'vertical', style, ...props },\n ref,\n ) {\n return (\n <div\n className={cx(\n orientation === 'vertical' && 'overflow-x-hidden overflow-y-auto',\n orientation === 'horizontal' && 'overflow-x-auto overflow-y-hidden',\n orientation === 'both' && 'overflow-auto',\n className,\n )}\n data-component=\"scroll-area\"\n ref={ref}\n style={{\n ...style,\n maxHeight:\n maxHeight !== undefined\n ? typeof maxHeight === 'number'\n ? `${maxHeight}px`\n : maxHeight\n : undefined,\n }}\n {...props}\n >\n {children}\n </div>\n )\n },\n)\n\nexport type { ScrollAreaProps }\n","// shimmer — skeleton shimmer placeholder effect\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype ShimmerProps = React.HTMLAttributes<HTMLDivElement> & {\n height?: string\n rounded?: boolean\n width?: string\n}\n\nexport const Shimmer = forwardRef<HTMLDivElement, ShimmerProps>(\n function Shimmer({ className, height = '20px', rounded = false, width = '100%', ...props }, ref) {\n return (\n <div\n className={cx(\n 'relative overflow-hidden bg-fg-muted/10',\n rounded ? 'rounded-full' : 'rounded-md',\n className,\n )}\n data-component=\"shimmer\"\n ref={ref}\n style={{ width, height }}\n {...props}\n >\n <div className=\"absolute inset-0 animate-[shimmer_1.5s_ease-in-out_infinite] bg-gradient-to-r from-transparent via-fg-muted/5 to-transparent\" />\n </div>\n )\n },\n)\n\nexport type { ShimmerProps }\n","import { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\ntype SkipNavProps = {\n targetId?: string\n label?: string\n className?: string\n}\n\nconst SkipNav = forwardRef<HTMLAnchorElement, SkipNavProps>(function SkipNav(\n { targetId = 'main-content', label = 'Skip to content', className },\n ref,\n) {\n return (\n <a\n ref={ref}\n className={cx(\n 'absolute left-2 top-2 z-50 -translate-y-full rounded bg-accent px-3 py-2 text-sm font-medium text-accent-fg transition-transform focus:translate-y-0 focus:outline-none',\n className,\n )}\n data-component=\"skip-nav\"\n href={`#${targetId}`}\n >\n {label}\n </a>\n )\n})\n\nexport { SkipNav }\nexport type { SkipNavProps }\n","// slider — native range input with value display\nimport { forwardRef } from 'react'\n\nimport { focusCls } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\ntype SliderProps = Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> & {\n disabled?: boolean\n max?: number\n min?: number\n onChange?: (value: number) => void\n step?: number\n value?: number\n}\n\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n function Slider(\n { className, disabled = false, max = 100, min = 0, onChange, step = 1, value = 0, ...props },\n ref,\n ) {\n return (\n <div className={cx('flex items-center gap-3', className)} data-component=\"slider\" {...props}>\n <input\n className={cx(\n 'h-1.5 w-full cursor-pointer appearance-none rounded-full bg-bg-tertiary accent-accent',\n disabled && 'cursor-not-allowed opacity-50',\n focusCls,\n )}\n disabled={disabled}\n max={max}\n min={min}\n onChange={(e) => onChange?.(Number(e.target.value))}\n ref={ref}\n step={step}\n type=\"range\"\n value={value}\n />\n <span className=\"w-8 shrink-0 text-right font-mono text-xs text-fg-muted tabular-nums\">\n {value}\n </span>\n </div>\n )\n },\n)\n\nexport type { SliderProps }\n","// truncate — text truncation with ellipsis, single or multi-line clamp\nimport type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { cx } from '../utils/cx'\n\nexport type TruncateProps = {\n children: ReactNode\n lines?: number\n expanded?: boolean\n onToggle?: () => void\n className?: string\n}\n\nexport const Truncate = forwardRef<HTMLDivElement, TruncateProps>(\n function Truncate(\n { children, lines = 1, expanded = false, onToggle, className },\n ref,\n ) {\n const shouldClamp = !expanded\n const isSingleLine = lines === 1\n const isInteractive = onToggle !== undefined\n\n const clampStyle = !isSingleLine && shouldClamp\n ? {\n display: '-webkit-box' as const,\n WebkitLineClamp: lines,\n WebkitBoxOrient: 'vertical' as const,\n overflow: 'hidden' as const,\n }\n : undefined\n\n return (\n <div\n ref={ref}\n className={cx(\n isSingleLine && shouldClamp && 'truncate',\n isInteractive && 'cursor-pointer',\n className,\n )}\n style={clampStyle}\n onClick={isInteractive ? onToggle : undefined}\n data-component=\"truncate\"\n data-expanded={expanded ? 'true' : undefined}\n role={isInteractive ? 'button' : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n >\n {children}\n </div>\n )\n },\n)\n","import type { ReactNode } from 'react'\nimport { forwardRef } from 'react'\n\nimport { srOnly } from '../utils/a11y'\nimport { cx } from '../utils/cx'\n\ntype VisuallyHiddenProps = {\n as?: 'div' | 'span'\n children: ReactNode\n className?: string\n}\n\nconst VisuallyHidden = forwardRef<HTMLElement, VisuallyHiddenProps>(function VisuallyHidden(\n { as: Tag = 'span', children, className },\n ref,\n) {\n return (\n <Tag ref={ref as never} className={cx(srOnly, className)} data-component=\"visually-hidden\">\n {children}\n </Tag>\n )\n})\n\nexport { VisuallyHidden }\nexport type { VisuallyHiddenProps }\n"],"mappings":"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"}