@epilot/zenith-react 0.2.0-next.0 → 0.2.0-next.1

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 (131) hide show
  1. package/dist/components/accordion/accordion.js +57 -48
  2. package/dist/components/accordion/accordion.js.map +1 -1
  3. package/dist/components/alert-dialog/alert-dialog.js +120 -92
  4. package/dist/components/alert-dialog/alert-dialog.js.map +1 -1
  5. package/dist/components/avatar/avatar-group.js +38 -35
  6. package/dist/components/avatar/avatar-group.js.map +1 -1
  7. package/dist/components/avatar/avatar.js +78 -71
  8. package/dist/components/avatar/avatar.js.map +1 -1
  9. package/dist/components/badge/badge.js +60 -55
  10. package/dist/components/badge/badge.js.map +1 -1
  11. package/dist/components/breadcrumb/breadcrumb.js +99 -54
  12. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  13. package/dist/components/button/button.js +87 -77
  14. package/dist/components/button/button.js.map +1 -1
  15. package/dist/components/button-group/button-group.js +36 -32
  16. package/dist/components/button-group/button-group.js.map +1 -1
  17. package/dist/components/callout/callout.js +105 -98
  18. package/dist/components/callout/callout.js.map +1 -1
  19. package/dist/components/card/card.js +62 -52
  20. package/dist/components/card/card.js.map +1 -1
  21. package/dist/components/checkbox/checkbox.js +22 -19
  22. package/dist/components/checkbox/checkbox.js.map +1 -1
  23. package/dist/components/code-block/code-block.js +135 -123
  24. package/dist/components/code-block/code-block.js.map +1 -1
  25. package/dist/components/code-editor/code-editor.js +276 -260
  26. package/dist/components/code-editor/code-editor.js.map +1 -1
  27. package/dist/components/collapsible-sidebar/collapsible-sidebar.js +62 -56
  28. package/dist/components/collapsible-sidebar/collapsible-sidebar.js.map +1 -1
  29. package/dist/components/command/command.js +116 -105
  30. package/dist/components/command/command.js.map +1 -1
  31. package/dist/components/data-table/data-table-body.js +38 -34
  32. package/dist/components/data-table/data-table-body.js.map +1 -1
  33. package/dist/components/data-table/data-table-column-header.js +30 -26
  34. package/dist/components/data-table/data-table-column-header.js.map +1 -1
  35. package/dist/components/data-table/data-table-column-order.js +79 -73
  36. package/dist/components/data-table/data-table-column-order.js.map +1 -1
  37. package/dist/components/data-table/data-table-column-visibility.js +25 -22
  38. package/dist/components/data-table/data-table-column-visibility.js.map +1 -1
  39. package/dist/components/data-table/data-table-content.js +47 -44
  40. package/dist/components/data-table/data-table-content.js.map +1 -1
  41. package/dist/components/data-table/data-table-error.js +36 -32
  42. package/dist/components/data-table/data-table-error.js.map +1 -1
  43. package/dist/components/data-table/data-table-footer.js +10 -8
  44. package/dist/components/data-table/data-table-footer.js.map +1 -1
  45. package/dist/components/data-table/data-table-header-draggable.js +40 -36
  46. package/dist/components/data-table/data-table-header-draggable.js.map +1 -1
  47. package/dist/components/data-table/data-table-loading.js +21 -18
  48. package/dist/components/data-table/data-table-loading.js.map +1 -1
  49. package/dist/components/data-table/data-table-resize-handle.js +13 -11
  50. package/dist/components/data-table/data-table-resize-handle.js.map +1 -1
  51. package/dist/components/data-table/data-table-row.js +47 -44
  52. package/dist/components/data-table/data-table-row.js.map +1 -1
  53. package/dist/components/data-table/data-table-toolbar.js +9 -7
  54. package/dist/components/data-table/data-table-toolbar.js.map +1 -1
  55. package/dist/components/data-table/data-table.js +48 -46
  56. package/dist/components/data-table/data-table.js.map +1 -1
  57. package/dist/components/date-range-picker/date-range-picker.js +173 -164
  58. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  59. package/dist/components/date-range-picker/range-calendar.js +36 -34
  60. package/dist/components/date-range-picker/range-calendar.js.map +1 -1
  61. package/dist/components/date-time-picker/calendar.js +290 -272
  62. package/dist/components/date-time-picker/calendar.js.map +1 -1
  63. package/dist/components/date-time-picker/date-time-picker-input.js +22 -20
  64. package/dist/components/date-time-picker/date-time-picker-input.js.map +1 -1
  65. package/dist/components/date-time-picker/date-time-picker-panel.js +126 -120
  66. package/dist/components/date-time-picker/date-time-picker-panel.js.map +1 -1
  67. package/dist/components/date-time-picker/date-time-picker.js +42 -40
  68. package/dist/components/date-time-picker/date-time-picker.js.map +1 -1
  69. package/dist/components/date-time-picker/time-picker.js +95 -87
  70. package/dist/components/date-time-picker/time-picker.js.map +1 -1
  71. package/dist/components/dialog/dialog.js +115 -95
  72. package/dist/components/dialog/dialog.js.map +1 -1
  73. package/dist/components/drawer/drawer.js +144 -109
  74. package/dist/components/drawer/drawer.js.map +1 -1
  75. package/dist/components/dropdown-menu/dropdown-menu.js +141 -112
  76. package/dist/components/dropdown-menu/dropdown-menu.js.map +1 -1
  77. package/dist/components/field/field-combobox.js +196 -176
  78. package/dist/components/field/field-combobox.js.map +1 -1
  79. package/dist/components/field/field.js +137 -126
  80. package/dist/components/field/field.js.map +1 -1
  81. package/dist/components/list/list.js +237 -219
  82. package/dist/components/list/list.js.map +1 -1
  83. package/dist/components/option-card/option-card.js +129 -116
  84. package/dist/components/option-card/option-card.js.map +1 -1
  85. package/dist/components/pill/pill.js +55 -51
  86. package/dist/components/pill/pill.js.map +1 -1
  87. package/dist/components/popover/popover.js +53 -36
  88. package/dist/components/popover/popover.js.map +1 -1
  89. package/dist/components/radio/radio.js +38 -34
  90. package/dist/components/radio/radio.js.map +1 -1
  91. package/dist/components/scroll-area/scroll-area.js +38 -35
  92. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  93. package/dist/components/scroll-overflow/scroll-overflow.js +166 -151
  94. package/dist/components/scroll-overflow/scroll-overflow.js.map +1 -1
  95. package/dist/components/segmented-control/segmented-control.js +93 -85
  96. package/dist/components/segmented-control/segmented-control.js.map +1 -1
  97. package/dist/components/select/select.js +149 -128
  98. package/dist/components/select/select.js.map +1 -1
  99. package/dist/components/separator/separator.js +19 -16
  100. package/dist/components/separator/separator.js.map +1 -1
  101. package/dist/components/skeleton/skeleton.js +34 -30
  102. package/dist/components/skeleton/skeleton.js.map +1 -1
  103. package/dist/components/spinner/spinner.js +22 -17
  104. package/dist/components/spinner/spinner.js.map +1 -1
  105. package/dist/components/surface/surface.js +25 -22
  106. package/dist/components/surface/surface.js.map +1 -1
  107. package/dist/components/switch/switch.js +66 -57
  108. package/dist/components/switch/switch.js.map +1 -1
  109. package/dist/components/table/table-pagination.js +139 -129
  110. package/dist/components/table/table-pagination.js.map +1 -1
  111. package/dist/components/table/table.js +104 -90
  112. package/dist/components/table/table.js.map +1 -1
  113. package/dist/components/tabs/tabs.js +206 -128
  114. package/dist/components/tabs/tabs.js.map +1 -1
  115. package/dist/components/toast/toast.js +112 -100
  116. package/dist/components/toast/toast.js.map +1 -1
  117. package/dist/components/toggle/toggle.js +32 -30
  118. package/dist/components/toggle/toggle.js.map +1 -1
  119. package/dist/components/tooltip/tooltip.js +59 -46
  120. package/dist/components/tooltip/tooltip.js.map +1 -1
  121. package/dist/index.d.ts +12 -0
  122. package/dist/lib/clear-button.js +18 -17
  123. package/dist/lib/clear-button.js.map +1 -1
  124. package/dist/styles/host-reset.js +47 -0
  125. package/dist/styles/host-reset.js.map +1 -0
  126. package/dist/styles/overlay-layer.js +5 -0
  127. package/dist/styles/overlay-layer.js.map +1 -0
  128. package/dist/tokens.json +1 -1
  129. package/package.json +8 -7
  130. package/scripts/migration-diagnostics.mjs +42 -7
  131. package/scripts/migration-sweep.mjs +9 -1
@@ -1,10 +1,11 @@
1
- import { jsx as e, jsxs as g } from "react/jsx-runtime";
1
+ import { jsx as e, jsxs as h } from "react/jsx-runtime";
2
2
  import * as d from "react";
3
- import { Root as h, Item as b, Indicator as x } from "../../vendor/.bun/@radix-ui_react-radio-group@1.3.8_2b23df507bdda662/vendor/@radix-ui/react-radio-group/dist/index.js";
4
- import { mergeClasses as m, SLOT_ATTR as s, shorthands as t } from "@epilot/zenith-runtime/v1";
5
- import { makeZenithStyles as C } from "../../styles/make-styles.js";
6
- import { accentContrast as l, errorA10 as k, focusRing as u, errorSoft as w, grayA3 as p, accentSolid as R, accentOnSoft as y, accentSoft as v, errorA8 as S, accentA7 as I, spacingElement3 as j } from "../../tokens/index.js";
7
- const A = d.forwardRef(
3
+ import { Root as b, Item as x, Indicator as C } from "../../vendor/.bun/@radix-ui_react-radio-group@1.3.8_2b23df507bdda662/vendor/@radix-ui/react-radio-group/dist/index.js";
4
+ import { mergeClasses as f, SLOT_ATTR as s, shorthands as t } from "@epilot/zenith-runtime/v1";
5
+ import { makeZenithStyles as k } from "../../styles/make-styles.js";
6
+ import { boxModel as l, nativeControl as w } from "../../styles/host-reset.js";
7
+ import { accentContrast as u, errorA10 as R, focusRing as p, errorSoft as y, grayA3 as m, accentSolid as v, accentOnSoft as S, accentSoft as I, errorA8 as j, accentA7 as A, spacingElement3 as G } from "../../tokens/index.js";
8
+ const N = d.forwardRef(
8
9
  function(o, r) {
9
10
  return /* @__PURE__ */ e(
10
11
  "svg",
@@ -22,12 +23,13 @@ const A = d.forwardRef(
22
23
  }
23
24
  );
24
25
  }
25
- ), f = C({
26
+ ), g = k({
26
27
  group: {
27
28
  display: "grid",
28
- ...t.gap(j)
29
+ ...t.gap(G)
29
30
  },
30
31
  item: {
32
+ ...w,
31
33
  boxSizing: "border-box",
32
34
  display: "inline-flex",
33
35
  alignItems: "center",
@@ -38,9 +40,9 @@ const A = d.forwardRef(
38
40
  height: "1rem",
39
41
  flexShrink: 0,
40
42
  borderRadius: "9999px",
41
- ...t.border("1px", "solid", I),
42
- backgroundColor: v,
43
- color: y,
43
+ ...t.border("1px", "solid", A),
44
+ backgroundColor: I,
45
+ color: S,
44
46
  // Tailwind `shadow-xs` — literal per CONVENTIONS B7
45
47
  boxShadow: "0 1px 2px 0 #0000000d",
46
48
  transitionProperty: "color, box-shadow",
@@ -53,31 +55,32 @@ const A = d.forwardRef(
53
55
  outlineOffset: "2px",
54
56
  outlineWidth: "2px",
55
57
  outlineStyle: "solid",
56
- outlineColor: u
58
+ outlineColor: p
57
59
  },
58
60
  "&[data-disabled]": {
59
61
  cursor: "not-allowed",
60
- backgroundColor: p,
62
+ backgroundColor: m,
61
63
  ...t.borderColor("transparent")
62
64
  },
63
65
  "&[data-state='checked']": {
64
- backgroundColor: R,
65
- color: l
66
+ backgroundColor: v,
67
+ color: u
66
68
  },
67
69
  "&[data-state='checked'][data-disabled]": {
68
- backgroundColor: p
70
+ backgroundColor: m
69
71
  },
70
72
  "&[aria-invalid='true'], &[data-invalid]": {
71
- backgroundColor: w,
72
- ...t.borderColor(S),
73
- outlineColor: u
73
+ backgroundColor: y,
74
+ ...t.borderColor(j),
75
+ outlineColor: p
74
76
  },
75
77
  "&[data-state='checked'][aria-invalid='true'], &[data-state='checked'][data-invalid]": {
76
- backgroundColor: k,
78
+ backgroundColor: R,
77
79
  ...t.borderColor("transparent")
78
80
  }
79
81
  },
80
82
  indicator: {
83
+ ...l,
81
84
  position: "relative",
82
85
  display: "flex",
83
86
  alignItems: "center",
@@ -86,7 +89,8 @@ const A = d.forwardRef(
86
89
  height: "100%"
87
90
  },
88
91
  icon: {
89
- color: l,
92
+ ...l,
93
+ color: u,
90
94
  position: "absolute",
91
95
  top: "50%",
92
96
  left: "50%",
@@ -95,36 +99,36 @@ const A = d.forwardRef(
95
99
  transform: "translate(-50%, -50%)",
96
100
  pointerEvents: "none"
97
101
  }
98
- }), z = d.forwardRef(function({ className: o, ...r }, i) {
99
- const a = f();
102
+ }), W = d.forwardRef(function({ className: o, ...r }, i) {
103
+ const a = g();
100
104
  return /* @__PURE__ */ e(
101
- h,
105
+ b,
102
106
  {
103
107
  ref: i,
104
108
  "data-slot": "radio-group",
105
109
  [s]: "radio-group",
106
- className: m(a.group, o),
110
+ className: f(a.group, o),
107
111
  ...r
108
112
  }
109
113
  );
110
- }), D = d.forwardRef(function({ className: o, children: r, ...i }, a) {
111
- const n = f();
112
- return /* @__PURE__ */ g(
113
- b,
114
+ }), B = d.forwardRef(function({ className: o, children: r, ...i }, a) {
115
+ const n = g();
116
+ return /* @__PURE__ */ h(
117
+ x,
114
118
  {
115
119
  ref: a,
116
120
  "data-slot": "radio-group-item",
117
121
  [s]: "radio-group-item",
118
- className: m(n.item, o),
122
+ className: f(n.item, o),
119
123
  ...i,
120
124
  children: [
121
125
  /* @__PURE__ */ e(
122
- x,
126
+ C,
123
127
  {
124
128
  "data-slot": "radio-group-indicator",
125
129
  [s]: "radio-group-indicator",
126
130
  className: n.indicator,
127
- children: /* @__PURE__ */ e(A, { className: n.icon })
131
+ children: /* @__PURE__ */ e(N, { className: n.icon })
128
132
  }
129
133
  ),
130
134
  r
@@ -133,7 +137,7 @@ const A = d.forwardRef(
133
137
  );
134
138
  });
135
139
  export {
136
- z as RadioGroup,
137
- D as RadioGroupItem
140
+ W as RadioGroup,
141
+ B as RadioGroupItem
138
142
  };
139
143
  //# sourceMappingURL=radio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"radio.js","sources":["../../../src/components/radio/radio.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\n\nconst CircleIcon = React.forwardRef<SVGSVGElement, React.ComponentProps<\"svg\">>(\n function CircleIcon(props, ref) {\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n </svg>\n )\n }\n)\n\nconst useStyles = makeZenithStyles({\n group: {\n display: \"grid\",\n ...shorthands.gap(tokens.spacingElement3),\n },\n item: {\n boxSizing: \"border-box\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n aspectRatio: \"1 / 1\",\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n borderRadius: \"9999px\",\n ...shorthands.border(\"1px\", \"solid\", tokens.accentA7),\n backgroundColor: tokens.accentSoft,\n color: tokens.accentOnSoft,\n // Tailwind `shadow-xs` — literal per CONVENTIONS B7\n boxShadow: \"0 1px 2px 0 #0000000d\",\n transitionProperty: \"color, box-shadow\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \"@media (prefers-reduced-motion: reduce)\": {\n transitionDuration: \"0.01ms\",\n },\n \":focus-visible\": {\n outlineOffset: \"2px\",\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.focusRing,\n },\n \"&[data-disabled]\": {\n cursor: \"not-allowed\",\n backgroundColor: tokens.grayA3,\n ...shorthands.borderColor(\"transparent\"),\n },\n \"&[data-state='checked']\": {\n backgroundColor: tokens.accentSolid,\n color: tokens.accentContrast,\n },\n \"&[data-state='checked'][data-disabled]\": {\n backgroundColor: tokens.grayA3,\n },\n \"&[aria-invalid='true'], &[data-invalid]\": {\n backgroundColor: tokens.errorSoft,\n ...shorthands.borderColor(tokens.errorA8),\n outlineColor: tokens.focusRing,\n },\n \"&[data-state='checked'][aria-invalid='true'], &[data-state='checked'][data-invalid]\":\n {\n backgroundColor: tokens.errorA10,\n ...shorthands.borderColor(\"transparent\"),\n },\n },\n indicator: {\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\",\n },\n icon: {\n color: tokens.accentContrast,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n width: \"0.5rem\",\n height: \"0.5rem\",\n transform: \"translate(-50%, -50%)\",\n pointerEvents: \"none\",\n },\n})\n\nexport type RadioGroupProps = React.ComponentProps<\n typeof RadioGroupPrimitive.Root\n>\n\nexport const RadioGroup = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(function RadioGroup({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <RadioGroupPrimitive.Root\n ref={ref}\n data-slot=\"radio-group\"\n {...{ [SLOT_ATTR]: \"radio-group\" }}\n className={mergeClasses(styles.group, className)}\n {...props}\n />\n )\n})\n\nexport type RadioGroupItemProps = React.ComponentProps<\n typeof RadioGroupPrimitive.Item\n>\n\nexport const RadioGroupItem = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(function RadioGroupItem({ className, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n data-slot=\"radio-group-item\"\n {...{ [SLOT_ATTR]: \"radio-group-item\" }}\n className={mergeClasses(styles.item, className)}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n {...{ [SLOT_ATTR]: \"radio-group-indicator\" }}\n className={styles.indicator}\n >\n <CircleIcon className={styles.icon} />\n </RadioGroupPrimitive.Indicator>\n {children}\n </RadioGroupPrimitive.Item>\n )\n})\n"],"names":["CircleIcon","React","props","ref","jsx","useStyles","makeZenithStyles","shorthands","tokens.spacingElement3","tokens.accentA7","tokens.accentSoft","tokens.accentOnSoft","tokens.focusRing","tokens.grayA3","tokens.accentSolid","tokens.accentContrast","tokens.errorSoft","tokens.errorA8","tokens.errorA10","RadioGroup","className","styles","RadioGroupPrimitive.Root","SLOT_ATTR","mergeClasses","RadioGroupItem","children","jsxs","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator"],"mappings":"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"}
1
+ {"version":3,"file":"radio.js","sources":["../../../src/components/radio/radio.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\n\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel, nativeControl } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\n\nconst CircleIcon = React.forwardRef<SVGSVGElement, React.ComponentProps<\"svg\">>(\n function CircleIcon(props, ref) {\n return (\n <svg\n ref={ref}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n </svg>\n )\n }\n)\n\nconst useStyles = makeZenithStyles({\n group: {\n display: \"grid\",\n ...shorthands.gap(tokens.spacingElement3),\n },\n item: {\n ...nativeControl,\n boxSizing: \"border-box\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n aspectRatio: \"1 / 1\",\n width: \"1rem\",\n height: \"1rem\",\n flexShrink: 0,\n borderRadius: \"9999px\",\n ...shorthands.border(\"1px\", \"solid\", tokens.accentA7),\n backgroundColor: tokens.accentSoft,\n color: tokens.accentOnSoft,\n // Tailwind `shadow-xs` — literal per CONVENTIONS B7\n boxShadow: \"0 1px 2px 0 #0000000d\",\n transitionProperty: \"color, box-shadow\",\n transitionDuration: \"150ms\",\n transitionTimingFunction: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n \"@media (prefers-reduced-motion: reduce)\": {\n transitionDuration: \"0.01ms\",\n },\n \":focus-visible\": {\n outlineOffset: \"2px\",\n outlineWidth: \"2px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.focusRing,\n },\n \"&[data-disabled]\": {\n cursor: \"not-allowed\",\n backgroundColor: tokens.grayA3,\n ...shorthands.borderColor(\"transparent\"),\n },\n \"&[data-state='checked']\": {\n backgroundColor: tokens.accentSolid,\n color: tokens.accentContrast,\n },\n \"&[data-state='checked'][data-disabled]\": {\n backgroundColor: tokens.grayA3,\n },\n \"&[aria-invalid='true'], &[data-invalid]\": {\n backgroundColor: tokens.errorSoft,\n ...shorthands.borderColor(tokens.errorA8),\n outlineColor: tokens.focusRing,\n },\n \"&[data-state='checked'][aria-invalid='true'], &[data-state='checked'][data-invalid]\":\n {\n backgroundColor: tokens.errorA10,\n ...shorthands.borderColor(\"transparent\"),\n },\n },\n indicator: {\n ...boxModel,\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\",\n },\n icon: {\n ...boxModel,\n color: tokens.accentContrast,\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n width: \"0.5rem\",\n height: \"0.5rem\",\n transform: \"translate(-50%, -50%)\",\n pointerEvents: \"none\",\n },\n})\n\nexport type RadioGroupProps = React.ComponentProps<\n typeof RadioGroupPrimitive.Root\n>\n\nexport const RadioGroup = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(function RadioGroup({ className, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <RadioGroupPrimitive.Root\n ref={ref}\n data-slot=\"radio-group\"\n {...{ [SLOT_ATTR]: \"radio-group\" }}\n className={mergeClasses(styles.group, className)}\n {...props}\n />\n )\n})\n\nexport type RadioGroupItemProps = React.ComponentProps<\n typeof RadioGroupPrimitive.Item\n>\n\nexport const RadioGroupItem = React.forwardRef<\n React.ComponentRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(function RadioGroupItem({ className, children, ...props }, ref) {\n const styles = useStyles()\n\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n data-slot=\"radio-group-item\"\n {...{ [SLOT_ATTR]: \"radio-group-item\" }}\n className={mergeClasses(styles.item, className)}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n {...{ [SLOT_ATTR]: \"radio-group-indicator\" }}\n className={styles.indicator}\n >\n <CircleIcon className={styles.icon} />\n </RadioGroupPrimitive.Indicator>\n {children}\n </RadioGroupPrimitive.Item>\n )\n})\n"],"names":["CircleIcon","React","props","ref","jsx","useStyles","makeZenithStyles","shorthands","tokens.spacingElement3","nativeControl","tokens.accentA7","tokens.accentSoft","tokens.accentOnSoft","tokens.focusRing","tokens.grayA3","tokens.accentSolid","tokens.accentContrast","tokens.errorSoft","tokens.errorA8","tokens.errorA10","boxModel","RadioGroup","className","styles","RadioGroupPrimitive.Root","SLOT_ATTR","mergeClasses","RadioGroupItem","children","jsxs","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator"],"mappings":"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"}
@@ -1,12 +1,14 @@
1
- import { jsx as f, jsxs as j } from "react/jsx-runtime";
1
+ import { jsx as f, jsxs as H } from "react/jsx-runtime";
2
2
  import * as e from "react";
3
- import { Root as H, Scrollbar as W, Thumb as O, Corner as L, Viewport as q } from "../../vendor/.bun/@radix-ui_react-scroll-area@1.2.10_2b23df507bdda662/vendor/@radix-ui/react-scroll-area/dist/index.js";
4
- import { mergeClasses as b, SLOT_ATTR as o, shorthands as R } from "@epilot/zenith-runtime/v1";
3
+ import { Root as W, Scrollbar as O, Thumb as L, Corner as M, Viewport as q } from "../../vendor/.bun/@radix-ui_react-scroll-area@1.2.10_2b23df507bdda662/vendor/@radix-ui/react-scroll-area/dist/index.js";
4
+ import { mergeClasses as h, SLOT_ATTR as o, shorthands as R } from "@epilot/zenith-runtime/v1";
5
5
  import { makeZenithStyles as I } from "../../styles/make-styles.js";
6
- import { grayA9 as M, grayA11 as Z, grayA10 as _, focusRing as B } from "../../tokens/index.js";
7
- import { useScrollbarStyles as G } from "./scrollbar-styles.js";
8
- const T = e.createContext(null), E = I({
6
+ import { boxModel as T } from "../../styles/host-reset.js";
7
+ import { grayA9 as Z, grayA11 as _, grayA10 as B, focusRing as G } from "../../tokens/index.js";
8
+ import { useScrollbarStyles as J } from "./scrollbar-styles.js";
9
+ const E = e.createContext(null), z = I({
9
10
  root: {
11
+ ...T,
10
12
  position: "relative",
11
13
  minWidth: 0,
12
14
  minHeight: 0,
@@ -33,11 +35,12 @@ const T = e.createContext(null), E = I({
33
35
  ":focus-visible": {
34
36
  outlineWidth: "3px",
35
37
  outlineStyle: "solid",
36
- outlineColor: B,
38
+ outlineColor: G,
37
39
  outlineOffset: "-3px"
38
40
  }
39
41
  },
40
42
  verticalContent: {
43
+ ...T,
41
44
  // Radix's measurement wrapper defaults to display:table, which expands long lines.
42
45
  "& > div": { display: "block", minWidth: "100%" }
43
46
  },
@@ -53,10 +56,10 @@ const T = e.createContext(null), E = I({
53
56
  transitionDuration: "120ms",
54
57
  "@media (prefers-reduced-motion: reduce)": { transitionDuration: "0s" },
55
58
  [`&:hover > [${o}='scroll-area-thumb']`]: {
56
- backgroundColor: _
59
+ backgroundColor: B
57
60
  },
58
61
  [`&:active > [${o}='scroll-area-thumb']`]: {
59
- backgroundColor: Z
62
+ backgroundColor: _
60
63
  },
61
64
  "@media (forced-colors: active)": {
62
65
  [`& > [${o}='scroll-area-thumb']`]: {
@@ -67,11 +70,11 @@ const T = e.createContext(null), E = I({
67
70
  },
68
71
  vertical: { width: "12px" },
69
72
  horizontal: { height: "12px", flexDirection: "column" },
70
- thumb: { backgroundColor: M },
73
+ thumb: { backgroundColor: Z },
71
74
  // Radix owns thumb length (including its 18px minimum) and uses it in drag math.
72
75
  // A CSS-only minimum overrides the paint but not that math, overshooting the track.
73
76
  corner: { backgroundColor: "transparent", pointerEvents: "none" }
74
- }), F = e.forwardRef(
77
+ }), rr = e.forwardRef(
75
78
  function({
76
79
  orientation: a = "vertical",
77
80
  visibility: u = "interaction",
@@ -81,15 +84,15 @@ const T = e.createContext(null), E = I({
81
84
  onPointerLeave: l,
82
85
  onFocusCapture: n,
83
86
  onBlurCapture: x,
84
- ...D
87
+ ...V
85
88
  }, p) {
86
- const d = E(), y = G(), w = e.useRef(null), k = e.useRef(
89
+ const d = z(), y = J(), w = e.useRef(null), k = e.useRef(
87
90
  void 0
88
91
  ), s = e.useRef({
89
92
  hover: !1,
90
93
  focus: !1,
91
94
  drag: !1
92
- }), [V, C] = e.useState(!1), c = e.useCallback(() => {
95
+ }), [N, C] = e.useState(!1), c = e.useCallback(() => {
93
96
  clearTimeout(k.current);
94
97
  }, []), m = e.useCallback(() => {
95
98
  c(), C(!0);
@@ -100,21 +103,21 @@ const T = e.createContext(null), E = I({
100
103
  }, [m, i]);
101
104
  e.useEffect(() => {
102
105
  var A;
103
- const r = (A = w.current) == null ? void 0 : A.ownerDocument, h = () => {
106
+ const r = (A = w.current) == null ? void 0 : A.ownerDocument, b = () => {
104
107
  s.current.drag && (s.current.drag = !1, i());
105
108
  };
106
- return r == null || r.addEventListener("pointerup", h, !0), r == null || r.addEventListener("pointercancel", h, !0), () => {
107
- c(), r == null || r.removeEventListener("pointerup", h, !0), r == null || r.removeEventListener("pointercancel", h, !0);
109
+ return r == null || r.addEventListener("pointerup", b, !0), r == null || r.addEventListener("pointercancel", b, !0), () => {
110
+ c(), r == null || r.removeEventListener("pointerup", b, !0), r == null || r.removeEventListener("pointercancel", b, !0);
108
111
  };
109
112
  }, [c, i]);
110
- const N = e.useMemo(
113
+ const $ = e.useMemo(
111
114
  () => ({ orientation: a, onScroll: S }),
112
115
  [a, S]
113
- ), $ = a === "both" ? ["vertical", "horizontal"] : [a];
114
- return /* @__PURE__ */ f(T.Provider, { value: N, children: /* @__PURE__ */ j(
115
- H,
116
+ ), j = a === "both" ? ["vertical", "horizontal"] : [a];
117
+ return /* @__PURE__ */ f(E.Provider, { value: $, children: /* @__PURE__ */ H(
118
+ W,
116
119
  {
117
- ...D,
120
+ ...V,
118
121
  type: "auto",
119
122
  ref: (r) => {
120
123
  w.current = r, typeof p == "function" ? p(r) : p && (p.current = r);
@@ -122,8 +125,8 @@ const T = e.createContext(null), E = I({
122
125
  "data-slot": "scroll-area",
123
126
  [o]: "scroll-area",
124
127
  "data-orientation": a,
125
- "data-revealed": u === "always" || V,
126
- className: b(d.root, v),
128
+ "data-revealed": u === "always" || N,
129
+ className: h(d.root, v),
127
130
  onPointerEnter: (r) => {
128
131
  r.pointerType !== "touch" && (s.current.hover = !0, m()), t == null || t(r);
129
132
  },
@@ -138,13 +141,13 @@ const T = e.createContext(null), E = I({
138
141
  },
139
142
  children: [
140
143
  g,
141
- $.map((r) => /* @__PURE__ */ f(
142
- W,
144
+ j.map((r) => /* @__PURE__ */ f(
145
+ O,
143
146
  {
144
147
  orientation: r,
145
148
  "data-slot": "scroll-area-scrollbar",
146
149
  [o]: "scroll-area-scrollbar",
147
- className: b(
150
+ className: h(
148
151
  y.track,
149
152
  d.track,
150
153
  d[r]
@@ -153,23 +156,23 @@ const T = e.createContext(null), E = I({
153
156
  s.current.drag = !0, m();
154
157
  },
155
158
  children: /* @__PURE__ */ f(
156
- O,
159
+ L,
157
160
  {
158
161
  "data-slot": "scroll-area-thumb",
159
162
  [o]: "scroll-area-thumb",
160
- className: b(y.thumb, d.thumb)
163
+ className: h(y.thumb, d.thumb)
161
164
  }
162
165
  )
163
166
  },
164
167
  r
165
168
  )),
166
- a === "both" && /* @__PURE__ */ f(L, { className: d.corner })
169
+ a === "both" && /* @__PURE__ */ f(M, { className: d.corner })
167
170
  ]
168
171
  }
169
172
  ) });
170
173
  }
171
- ), P = e.forwardRef(function({ className: a, onScroll: u, ...v }, g) {
172
- const t = e.useContext(T), l = E();
174
+ ), er = e.forwardRef(function({ className: a, onScroll: u, ...v }, g) {
175
+ const t = e.useContext(E), l = z();
173
176
  if (!t)
174
177
  throw new Error("ScrollAreaViewport requires a ScrollArea parent");
175
178
  return /* @__PURE__ */ f(
@@ -179,7 +182,7 @@ const T = e.createContext(null), E = I({
179
182
  ref: g,
180
183
  "data-slot": "scroll-area-viewport",
181
184
  [o]: "scroll-area-viewport",
182
- className: b(
185
+ className: h(
183
186
  l.viewport,
184
187
  t.orientation === "vertical" && l.verticalContent,
185
188
  t.orientation !== "horizontal" && l.reserveVertical,
@@ -193,7 +196,7 @@ const T = e.createContext(null), E = I({
193
196
  );
194
197
  });
195
198
  export {
196
- F as ScrollArea,
197
- P as ScrollAreaViewport
199
+ rr as ScrollArea,
200
+ er as ScrollAreaViewport
198
201
  };
199
202
  //# sourceMappingURL=scroll-area.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-area.js","sources":["../../../src/components/scroll-area/scroll-area.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as Primitive from \"@radix-ui/react-scroll-area\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport * as tokens from \"../../tokens\"\nimport { useScrollbarStyles } from \"./scrollbar-styles\"\n\nexport type ScrollAreaOrientation = \"vertical\" | \"horizontal\" | \"both\"\nexport type ScrollAreaVisibility = \"interaction\" | \"always\"\nexport type ScrollAreaProps = Omit<\n React.ComponentPropsWithoutRef<typeof Primitive.Root>,\n \"asChild\" | \"type\" | \"scrollHideDelay\"\n> & {\n orientation?: ScrollAreaOrientation\n visibility?: ScrollAreaVisibility\n}\nexport type ScrollAreaViewportProps = Omit<\n React.ComponentPropsWithoutRef<typeof Primitive.Viewport>,\n \"asChild\"\n>\n\nconst Context = React.createContext<{\n orientation: ScrollAreaOrientation\n onScroll: () => void\n} | null>(null)\n\nconst useStyles = makeZenithStyles({\n root: {\n position: \"relative\",\n minWidth: 0,\n minHeight: 0,\n ...shorthands.overflow(\"hidden\"),\n [`&[data-revealed='true'] > [${SLOT_ATTR}='scroll-area-scrollbar']`]: {\n opacity: 1,\n pointerEvents: \"auto\",\n },\n \"@media (forced-colors: active)\": {\n [`& > [${SLOT_ATTR}='scroll-area-scrollbar']`]: {\n opacity: 1,\n pointerEvents: \"auto\",\n backgroundColor: \"Canvas\",\n },\n },\n },\n viewport: {\n width: \"100%\",\n height: \"100%\",\n minWidth: 0,\n minHeight: 0,\n boxSizing: \"border-box\",\n borderRadius: \"inherit\",\n \":focus-visible\": {\n outlineWidth: \"3px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.focusRing,\n outlineOffset: \"-3px\",\n },\n },\n verticalContent: {\n // Radix's measurement wrapper defaults to display:table, which expands long lines.\n \"& > div\": { display: \"block\", minWidth: \"100%\" },\n },\n reserveVertical: { paddingInlineEnd: \"12px\" },\n reserveHorizontal: { paddingBottom: \"12px\" },\n track: {\n boxSizing: \"border-box\",\n ...shorthands.padding(\"3px\"),\n backgroundColor: \"transparent\",\n opacity: 0,\n pointerEvents: \"none\",\n transitionProperty: \"opacity\",\n transitionDuration: \"120ms\",\n \"@media (prefers-reduced-motion: reduce)\": { transitionDuration: \"0s\" },\n [`&:hover > [${SLOT_ATTR}='scroll-area-thumb']`]: {\n backgroundColor: tokens.grayA10,\n },\n [`&:active > [${SLOT_ATTR}='scroll-area-thumb']`]: {\n backgroundColor: tokens.grayA11,\n },\n \"@media (forced-colors: active)\": {\n [`& > [${SLOT_ATTR}='scroll-area-thumb']`]: {\n backgroundColor: \"ButtonText\",\n forcedColorAdjust: \"none\",\n },\n },\n },\n vertical: { width: \"12px\" },\n horizontal: { height: \"12px\", flexDirection: \"column\" },\n thumb: { backgroundColor: tokens.grayA9 },\n // Radix owns thumb length (including its 18px minimum) and uses it in drag math.\n // A CSS-only minimum overrides the paint but not that math, overshooting the track.\n corner: { backgroundColor: \"transparent\", pointerEvents: \"none\" },\n})\n\n/** Native scrolling with Radix tracks. Dimensions belong here; scroll refs belong to the viewport. */\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\n function ScrollArea(\n {\n orientation = \"vertical\",\n visibility = \"interaction\",\n className,\n children,\n onPointerEnter,\n onPointerLeave,\n onFocusCapture,\n onBlurCapture,\n ...props\n },\n ref\n ) {\n const styles = useStyles()\n const scrollbar = useScrollbarStyles()\n const root = React.useRef<HTMLDivElement | null>(null)\n const timer = React.useRef<ReturnType<typeof setTimeout> | undefined>(\n undefined\n )\n const interaction = React.useRef({\n hover: false,\n focus: false,\n drag: false,\n })\n const [revealed, setRevealed] = React.useState(false)\n const clear = React.useCallback(() => {\n clearTimeout(timer.current)\n }, [])\n const reveal = React.useCallback(() => {\n clear()\n setRevealed(true)\n }, [clear])\n const settle = React.useCallback(() => {\n clear()\n if (!Object.values(interaction.current).some(Boolean)) {\n timer.current = setTimeout(() => setRevealed(false), 600)\n }\n }, [clear])\n const pulse = React.useCallback(() => {\n reveal()\n settle()\n }, [reveal, settle])\n React.useEffect(() => {\n const doc = root.current?.ownerDocument\n const endDrag = () => {\n if (interaction.current.drag) {\n interaction.current.drag = false\n settle()\n }\n }\n doc?.addEventListener(\"pointerup\", endDrag, true)\n doc?.addEventListener(\"pointercancel\", endDrag, true)\n return () => {\n clear()\n doc?.removeEventListener(\"pointerup\", endDrag, true)\n doc?.removeEventListener(\"pointercancel\", endDrag, true)\n }\n }, [clear, settle])\n const context = React.useMemo(\n () => ({ orientation, onScroll: pulse }),\n [orientation, pulse]\n )\n const tracks =\n orientation === \"both\"\n ? ([\"vertical\", \"horizontal\"] as const)\n : [orientation]\n return (\n <Context.Provider value={context}>\n <Primitive.Root\n {...props}\n type=\"auto\"\n ref={(node) => {\n root.current = node\n if (typeof ref === \"function\") ref(node)\n else if (ref) ref.current = node\n }}\n data-slot=\"scroll-area\"\n {...{ [SLOT_ATTR]: \"scroll-area\" }}\n data-orientation={orientation}\n data-revealed={visibility === \"always\" || revealed}\n className={mergeClasses(styles.root, className)}\n onPointerEnter={(event) => {\n if (event.pointerType !== \"touch\") {\n interaction.current.hover = true\n reveal()\n }\n onPointerEnter?.(event)\n }}\n onPointerLeave={(event) => {\n interaction.current.hover = false\n settle()\n onPointerLeave?.(event)\n }}\n onFocusCapture={(event) => {\n interaction.current.focus = true\n reveal()\n onFocusCapture?.(event)\n }}\n onBlurCapture={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) {\n interaction.current.focus = false\n settle()\n }\n onBlurCapture?.(event)\n }}\n >\n {children}\n {tracks.map((axis) => (\n <Primitive.Scrollbar\n key={axis}\n orientation={axis}\n data-slot=\"scroll-area-scrollbar\"\n {...{ [SLOT_ATTR]: \"scroll-area-scrollbar\" }}\n className={mergeClasses(\n scrollbar.track,\n styles.track,\n styles[axis]\n )}\n onPointerDown={() => {\n interaction.current.drag = true\n reveal()\n }}\n >\n <Primitive.Thumb\n data-slot=\"scroll-area-thumb\"\n {...{ [SLOT_ATTR]: \"scroll-area-thumb\" }}\n className={mergeClasses(scrollbar.thumb, styles.thumb)}\n />\n </Primitive.Scrollbar>\n ))}\n {orientation === \"both\" && (\n <Primitive.Corner className={styles.corner} />\n )}\n </Primitive.Root>\n </Context.Provider>\n )\n }\n)\n\n/** Put keyboard focus, accessible naming and onScroll on this actual scroll element. */\nexport const ScrollAreaViewport = React.forwardRef<\n HTMLDivElement,\n ScrollAreaViewportProps\n>(function ScrollAreaViewport({ className, onScroll, ...props }, ref) {\n const context = React.useContext(Context)\n const styles = useStyles()\n if (!context)\n throw new Error(\"ScrollAreaViewport requires a ScrollArea parent\")\n return (\n <Primitive.Viewport\n {...props}\n ref={ref}\n data-slot=\"scroll-area-viewport\"\n {...{ [SLOT_ATTR]: \"scroll-area-viewport\" }}\n className={mergeClasses(\n styles.viewport,\n context.orientation === \"vertical\" && styles.verticalContent,\n context.orientation !== \"horizontal\" && styles.reserveVertical,\n context.orientation !== \"vertical\" && styles.reserveHorizontal,\n className\n )}\n onScroll={(event) => {\n if (event.target === event.currentTarget) {\n context.onScroll()\n onScroll?.(event)\n }\n }}\n />\n )\n})\n"],"names":["Context","React","useStyles","makeZenithStyles","shorthands","SLOT_ATTR","tokens.focusRing","tokens.grayA10","tokens.grayA11","tokens.grayA9","ScrollArea","orientation","visibility","className","children","onPointerEnter","onPointerLeave","onFocusCapture","onBlurCapture","props","ref","styles","scrollbar","useScrollbarStyles","root","timer","interaction","revealed","setRevealed","clear","reveal","settle","pulse","doc","_a","endDrag","context","tracks","jsx","jsxs","Primitive.Root","node","mergeClasses","event","axis","Primitive.Scrollbar","Primitive.Thumb","Primitive.Corner","ScrollAreaViewport","onScroll","Primitive.Viewport"],"mappings":"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"}
1
+ {"version":3,"file":"scroll-area.js","sources":["../../../src/components/scroll-area/scroll-area.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as Primitive from \"@radix-ui/react-scroll-area\"\nimport { mergeClasses, shorthands } from \"@epilot/zenith-runtime/v1\"\nimport { SLOT_ATTR } from \"../../renderer/contract\"\nimport { makeZenithStyles } from \"../../styles/make-styles\"\nimport { boxModel } from \"../../styles/host-reset\"\nimport * as tokens from \"../../tokens\"\nimport { useScrollbarStyles } from \"./scrollbar-styles\"\n\nexport type ScrollAreaOrientation = \"vertical\" | \"horizontal\" | \"both\"\nexport type ScrollAreaVisibility = \"interaction\" | \"always\"\nexport type ScrollAreaProps = Omit<\n React.ComponentPropsWithoutRef<typeof Primitive.Root>,\n \"asChild\" | \"type\" | \"scrollHideDelay\"\n> & {\n orientation?: ScrollAreaOrientation\n visibility?: ScrollAreaVisibility\n}\nexport type ScrollAreaViewportProps = Omit<\n React.ComponentPropsWithoutRef<typeof Primitive.Viewport>,\n \"asChild\"\n>\n\nconst Context = React.createContext<{\n orientation: ScrollAreaOrientation\n onScroll: () => void\n} | null>(null)\n\nconst useStyles = makeZenithStyles({\n root: {\n ...boxModel,\n position: \"relative\",\n minWidth: 0,\n minHeight: 0,\n ...shorthands.overflow(\"hidden\"),\n [`&[data-revealed='true'] > [${SLOT_ATTR}='scroll-area-scrollbar']`]: {\n opacity: 1,\n pointerEvents: \"auto\",\n },\n \"@media (forced-colors: active)\": {\n [`& > [${SLOT_ATTR}='scroll-area-scrollbar']`]: {\n opacity: 1,\n pointerEvents: \"auto\",\n backgroundColor: \"Canvas\",\n },\n },\n },\n viewport: {\n width: \"100%\",\n height: \"100%\",\n minWidth: 0,\n minHeight: 0,\n boxSizing: \"border-box\",\n borderRadius: \"inherit\",\n \":focus-visible\": {\n outlineWidth: \"3px\",\n outlineStyle: \"solid\",\n outlineColor: tokens.focusRing,\n outlineOffset: \"-3px\",\n },\n },\n verticalContent: {\n ...boxModel,\n // Radix's measurement wrapper defaults to display:table, which expands long lines.\n \"& > div\": { display: \"block\", minWidth: \"100%\" },\n },\n reserveVertical: { paddingInlineEnd: \"12px\" },\n reserveHorizontal: { paddingBottom: \"12px\" },\n track: {\n boxSizing: \"border-box\",\n ...shorthands.padding(\"3px\"),\n backgroundColor: \"transparent\",\n opacity: 0,\n pointerEvents: \"none\",\n transitionProperty: \"opacity\",\n transitionDuration: \"120ms\",\n \"@media (prefers-reduced-motion: reduce)\": { transitionDuration: \"0s\" },\n [`&:hover > [${SLOT_ATTR}='scroll-area-thumb']`]: {\n backgroundColor: tokens.grayA10,\n },\n [`&:active > [${SLOT_ATTR}='scroll-area-thumb']`]: {\n backgroundColor: tokens.grayA11,\n },\n \"@media (forced-colors: active)\": {\n [`& > [${SLOT_ATTR}='scroll-area-thumb']`]: {\n backgroundColor: \"ButtonText\",\n forcedColorAdjust: \"none\",\n },\n },\n },\n vertical: { width: \"12px\" },\n horizontal: { height: \"12px\", flexDirection: \"column\" },\n thumb: { backgroundColor: tokens.grayA9 },\n // Radix owns thumb length (including its 18px minimum) and uses it in drag math.\n // A CSS-only minimum overrides the paint but not that math, overshooting the track.\n corner: { backgroundColor: \"transparent\", pointerEvents: \"none\" },\n})\n\n/** Native scrolling with Radix tracks. Dimensions belong here; scroll refs belong to the viewport. */\nexport const ScrollArea = React.forwardRef<HTMLDivElement, ScrollAreaProps>(\n function ScrollArea(\n {\n orientation = \"vertical\",\n visibility = \"interaction\",\n className,\n children,\n onPointerEnter,\n onPointerLeave,\n onFocusCapture,\n onBlurCapture,\n ...props\n },\n ref\n ) {\n const styles = useStyles()\n const scrollbar = useScrollbarStyles()\n const root = React.useRef<HTMLDivElement | null>(null)\n const timer = React.useRef<ReturnType<typeof setTimeout> | undefined>(\n undefined\n )\n const interaction = React.useRef({\n hover: false,\n focus: false,\n drag: false,\n })\n const [revealed, setRevealed] = React.useState(false)\n const clear = React.useCallback(() => {\n clearTimeout(timer.current)\n }, [])\n const reveal = React.useCallback(() => {\n clear()\n setRevealed(true)\n }, [clear])\n const settle = React.useCallback(() => {\n clear()\n if (!Object.values(interaction.current).some(Boolean)) {\n timer.current = setTimeout(() => setRevealed(false), 600)\n }\n }, [clear])\n const pulse = React.useCallback(() => {\n reveal()\n settle()\n }, [reveal, settle])\n React.useEffect(() => {\n const doc = root.current?.ownerDocument\n const endDrag = () => {\n if (interaction.current.drag) {\n interaction.current.drag = false\n settle()\n }\n }\n doc?.addEventListener(\"pointerup\", endDrag, true)\n doc?.addEventListener(\"pointercancel\", endDrag, true)\n return () => {\n clear()\n doc?.removeEventListener(\"pointerup\", endDrag, true)\n doc?.removeEventListener(\"pointercancel\", endDrag, true)\n }\n }, [clear, settle])\n const context = React.useMemo(\n () => ({ orientation, onScroll: pulse }),\n [orientation, pulse]\n )\n const tracks =\n orientation === \"both\"\n ? ([\"vertical\", \"horizontal\"] as const)\n : [orientation]\n return (\n <Context.Provider value={context}>\n <Primitive.Root\n {...props}\n type=\"auto\"\n ref={(node) => {\n root.current = node\n if (typeof ref === \"function\") ref(node)\n else if (ref) ref.current = node\n }}\n data-slot=\"scroll-area\"\n {...{ [SLOT_ATTR]: \"scroll-area\" }}\n data-orientation={orientation}\n data-revealed={visibility === \"always\" || revealed}\n className={mergeClasses(styles.root, className)}\n onPointerEnter={(event) => {\n if (event.pointerType !== \"touch\") {\n interaction.current.hover = true\n reveal()\n }\n onPointerEnter?.(event)\n }}\n onPointerLeave={(event) => {\n interaction.current.hover = false\n settle()\n onPointerLeave?.(event)\n }}\n onFocusCapture={(event) => {\n interaction.current.focus = true\n reveal()\n onFocusCapture?.(event)\n }}\n onBlurCapture={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) {\n interaction.current.focus = false\n settle()\n }\n onBlurCapture?.(event)\n }}\n >\n {children}\n {tracks.map((axis) => (\n <Primitive.Scrollbar\n key={axis}\n orientation={axis}\n data-slot=\"scroll-area-scrollbar\"\n {...{ [SLOT_ATTR]: \"scroll-area-scrollbar\" }}\n className={mergeClasses(\n scrollbar.track,\n styles.track,\n styles[axis]\n )}\n onPointerDown={() => {\n interaction.current.drag = true\n reveal()\n }}\n >\n <Primitive.Thumb\n data-slot=\"scroll-area-thumb\"\n {...{ [SLOT_ATTR]: \"scroll-area-thumb\" }}\n className={mergeClasses(scrollbar.thumb, styles.thumb)}\n />\n </Primitive.Scrollbar>\n ))}\n {orientation === \"both\" && (\n <Primitive.Corner className={styles.corner} />\n )}\n </Primitive.Root>\n </Context.Provider>\n )\n }\n)\n\n/** Put keyboard focus, accessible naming and onScroll on this actual scroll element. */\nexport const ScrollAreaViewport = React.forwardRef<\n HTMLDivElement,\n ScrollAreaViewportProps\n>(function ScrollAreaViewport({ className, onScroll, ...props }, ref) {\n const context = React.useContext(Context)\n const styles = useStyles()\n if (!context)\n throw new Error(\"ScrollAreaViewport requires a ScrollArea parent\")\n return (\n <Primitive.Viewport\n {...props}\n ref={ref}\n data-slot=\"scroll-area-viewport\"\n {...{ [SLOT_ATTR]: \"scroll-area-viewport\" }}\n className={mergeClasses(\n styles.viewport,\n context.orientation === \"vertical\" && styles.verticalContent,\n context.orientation !== \"horizontal\" && styles.reserveVertical,\n context.orientation !== \"vertical\" && styles.reserveHorizontal,\n className\n )}\n onScroll={(event) => {\n if (event.target === event.currentTarget) {\n context.onScroll()\n onScroll?.(event)\n }\n }}\n />\n )\n})\n"],"names":["Context","React","useStyles","makeZenithStyles","boxModel","shorthands","SLOT_ATTR","tokens.focusRing","tokens.grayA10","tokens.grayA11","tokens.grayA9","ScrollArea","orientation","visibility","className","children","onPointerEnter","onPointerLeave","onFocusCapture","onBlurCapture","props","ref","styles","scrollbar","useScrollbarStyles","root","timer","interaction","revealed","setRevealed","clear","reveal","settle","pulse","doc","_a","endDrag","context","tracks","jsx","jsxs","Primitive.Root","node","mergeClasses","event","axis","Primitive.Scrollbar","Primitive.Thumb","Primitive.Corner","ScrollAreaViewport","onScroll","Primitive.Viewport"],"mappings":"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"}