@invergent/ui-sdk 0.0.0-stage → 2.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/README.md +62 -2
  2. package/dist/accordion.cjs +97 -0
  3. package/dist/accordion.cjs.map +1 -0
  4. package/dist/accordion.d.cts +10 -0
  5. package/dist/accordion.d.ts +10 -0
  6. package/dist/accordion.js +92 -0
  7. package/dist/accordion.js.map +1 -0
  8. package/dist/alert.cjs +82 -0
  9. package/dist/alert.cjs.map +1 -0
  10. package/dist/alert.d.cts +14 -0
  11. package/dist/alert.d.ts +14 -0
  12. package/dist/alert.js +77 -0
  13. package/dist/alert.js.map +1 -0
  14. package/dist/avatar.cjs +110 -0
  15. package/dist/avatar.cjs.map +1 -0
  16. package/dist/avatar.d.cts +14 -0
  17. package/dist/avatar.d.ts +14 -0
  18. package/dist/avatar.js +103 -0
  19. package/dist/avatar.js.map +1 -0
  20. package/dist/badge.cjs +47 -0
  21. package/dist/badge.cjs.map +1 -0
  22. package/dist/badge.d.cts +13 -0
  23. package/dist/badge.d.ts +13 -0
  24. package/dist/badge.js +44 -0
  25. package/dist/badge.js.map +1 -0
  26. package/dist/brand-beam.cjs +2303 -0
  27. package/dist/brand-beam.cjs.map +1 -0
  28. package/dist/brand-beam.d.cts +36 -0
  29. package/dist/brand-beam.d.ts +36 -0
  30. package/dist/brand-beam.js +2301 -0
  31. package/dist/brand-beam.js.map +1 -0
  32. package/dist/button.cjs +17 -0
  33. package/dist/button.cjs.map +1 -0
  34. package/dist/button.d.cts +14 -0
  35. package/dist/button.d.ts +14 -0
  36. package/dist/button.js +4 -0
  37. package/dist/button.js.map +1 -0
  38. package/dist/card.cjs +109 -0
  39. package/dist/card.cjs.map +1 -0
  40. package/dist/card.d.cts +14 -0
  41. package/dist/card.d.ts +14 -0
  42. package/dist/card.js +101 -0
  43. package/dist/card.js.map +1 -0
  44. package/dist/chart.cjs +275 -0
  45. package/dist/chart.cjs.map +1 -0
  46. package/dist/chart.d.cts +47 -0
  47. package/dist/chart.d.ts +47 -0
  48. package/dist/chart.js +247 -0
  49. package/dist/chart.js.map +1 -0
  50. package/dist/checkbox.cjs +41 -0
  51. package/dist/checkbox.cjs.map +1 -0
  52. package/dist/checkbox.d.cts +7 -0
  53. package/dist/checkbox.d.ts +7 -0
  54. package/dist/checkbox.js +39 -0
  55. package/dist/checkbox.js.map +1 -0
  56. package/dist/chip.cjs +92 -0
  57. package/dist/chip.cjs.map +1 -0
  58. package/dist/chip.d.cts +33 -0
  59. package/dist/chip.d.ts +33 -0
  60. package/dist/chip.js +86 -0
  61. package/dist/chip.js.map +1 -0
  62. package/dist/choice-card.cjs +127 -0
  63. package/dist/choice-card.cjs.map +1 -0
  64. package/dist/choice-card.d.cts +20 -0
  65. package/dist/choice-card.d.ts +20 -0
  66. package/dist/choice-card.js +124 -0
  67. package/dist/choice-card.js.map +1 -0
  68. package/dist/chunk-2UHRDVPT.cjs +183 -0
  69. package/dist/chunk-2UHRDVPT.cjs.map +1 -0
  70. package/dist/chunk-5CRE35VX.js +20 -0
  71. package/dist/chunk-5CRE35VX.js.map +1 -0
  72. package/dist/chunk-6ARYCL4L.cjs +30 -0
  73. package/dist/chunk-6ARYCL4L.cjs.map +1 -0
  74. package/dist/chunk-6JCVTRUK.js +21 -0
  75. package/dist/chunk-6JCVTRUK.js.map +1 -0
  76. package/dist/chunk-6YHDDRIM.cjs +13 -0
  77. package/dist/chunk-6YHDDRIM.cjs.map +1 -0
  78. package/dist/chunk-A44JJ6NH.js +58 -0
  79. package/dist/chunk-A44JJ6NH.js.map +1 -0
  80. package/dist/chunk-CPAFEXKR.js +63 -0
  81. package/dist/chunk-CPAFEXKR.js.map +1 -0
  82. package/dist/chunk-CTIEUG5L.js +28 -0
  83. package/dist/chunk-CTIEUG5L.js.map +1 -0
  84. package/dist/chunk-DSDDDYG3.cjs +60 -0
  85. package/dist/chunk-DSDDDYG3.cjs.map +1 -0
  86. package/dist/chunk-IB7LTHEQ.js +55 -0
  87. package/dist/chunk-IB7LTHEQ.js.map +1 -0
  88. package/dist/chunk-ID7MWMJO.cjs +162 -0
  89. package/dist/chunk-ID7MWMJO.cjs.map +1 -0
  90. package/dist/chunk-IVMZANP7.cjs +67 -0
  91. package/dist/chunk-IVMZANP7.cjs.map +1 -0
  92. package/dist/chunk-L73QIINW.js +157 -0
  93. package/dist/chunk-L73QIINW.js.map +1 -0
  94. package/dist/chunk-LZGII7SX.js +11 -0
  95. package/dist/chunk-LZGII7SX.js.map +1 -0
  96. package/dist/chunk-M677T75H.js +24 -0
  97. package/dist/chunk-M677T75H.js.map +1 -0
  98. package/dist/chunk-OAVCB3MR.cjs +26 -0
  99. package/dist/chunk-OAVCB3MR.cjs.map +1 -0
  100. package/dist/chunk-RVX6SN4U.cjs +23 -0
  101. package/dist/chunk-RVX6SN4U.cjs.map +1 -0
  102. package/dist/chunk-T74Z3WTK.js +151 -0
  103. package/dist/chunk-T74Z3WTK.js.map +1 -0
  104. package/dist/chunk-UOUXW63J.cjs +22 -0
  105. package/dist/chunk-UOUXW63J.cjs.map +1 -0
  106. package/dist/chunk-VBICNC43.cjs +61 -0
  107. package/dist/chunk-VBICNC43.cjs.map +1 -0
  108. package/dist/collapsible-header.cjs +66 -0
  109. package/dist/collapsible-header.cjs.map +1 -0
  110. package/dist/collapsible-header.d.cts +15 -0
  111. package/dist/collapsible-header.d.ts +15 -0
  112. package/dist/collapsible-header.js +63 -0
  113. package/dist/collapsible-header.js.map +1 -0
  114. package/dist/collapsible.cjs +38 -0
  115. package/dist/collapsible.cjs.map +1 -0
  116. package/dist/collapsible.d.cts +8 -0
  117. package/dist/collapsible.d.ts +8 -0
  118. package/dist/collapsible.js +34 -0
  119. package/dist/collapsible.js.map +1 -0
  120. package/dist/color-picker.cjs +60 -0
  121. package/dist/color-picker.cjs.map +1 -0
  122. package/dist/color-picker.d.cts +12 -0
  123. package/dist/color-picker.d.ts +12 -0
  124. package/dist/color-picker.js +57 -0
  125. package/dist/color-picker.js.map +1 -0
  126. package/dist/confirm-dialog.cjs +72 -0
  127. package/dist/confirm-dialog.cjs.map +1 -0
  128. package/dist/confirm-dialog.d.cts +19 -0
  129. package/dist/confirm-dialog.d.ts +19 -0
  130. package/dist/confirm-dialog.js +70 -0
  131. package/dist/confirm-dialog.js.map +1 -0
  132. package/dist/control-styles.cjs +16 -0
  133. package/dist/control-styles.cjs.map +1 -0
  134. package/dist/control-styles.d.cts +7 -0
  135. package/dist/control-styles.d.ts +7 -0
  136. package/dist/control-styles.js +10 -0
  137. package/dist/control-styles.js.map +1 -0
  138. package/dist/dialog.cjs +50 -0
  139. package/dist/dialog.cjs.map +1 -0
  140. package/dist/dialog.d.cts +20 -0
  141. package/dist/dialog.d.ts +20 -0
  142. package/dist/dialog.js +5 -0
  143. package/dist/dialog.js.map +1 -0
  144. package/dist/dropdown-menu.cjs +265 -0
  145. package/dist/dropdown-menu.cjs.map +1 -0
  146. package/dist/dropdown-menu.d.cts +32 -0
  147. package/dist/dropdown-menu.d.ts +32 -0
  148. package/dist/dropdown-menu.js +249 -0
  149. package/dist/dropdown-menu.js.map +1 -0
  150. package/dist/empty-state.cjs +50 -0
  151. package/dist/empty-state.cjs.map +1 -0
  152. package/dist/empty-state.d.cts +23 -0
  153. package/dist/empty-state.d.ts +23 -0
  154. package/dist/empty-state.js +47 -0
  155. package/dist/empty-state.js.map +1 -0
  156. package/dist/field.cjs +221 -0
  157. package/dist/field.cjs.map +1 -0
  158. package/dist/field.d.cts +30 -0
  159. package/dist/field.d.ts +30 -0
  160. package/dist/field.js +210 -0
  161. package/dist/field.js.map +1 -0
  162. package/dist/input-group.cjs +148 -0
  163. package/dist/input-group.cjs.map +1 -0
  164. package/dist/input-group.d.cts +20 -0
  165. package/dist/input-group.d.ts +20 -0
  166. package/dist/input-group.js +141 -0
  167. package/dist/input-group.js.map +1 -0
  168. package/dist/input.cjs +13 -0
  169. package/dist/input.cjs.map +1 -0
  170. package/dist/input.d.cts +6 -0
  171. package/dist/input.d.ts +6 -0
  172. package/dist/input.js +4 -0
  173. package/dist/input.js.map +1 -0
  174. package/dist/label.cjs +13 -0
  175. package/dist/label.cjs.map +1 -0
  176. package/dist/label.d.cts +7 -0
  177. package/dist/label.d.ts +7 -0
  178. package/dist/label.js +4 -0
  179. package/dist/label.js.map +1 -0
  180. package/dist/lib/utils.cjs +12 -0
  181. package/dist/lib/utils.cjs.map +1 -0
  182. package/dist/lib/utils.d.cts +5 -0
  183. package/dist/lib/utils.d.ts +5 -0
  184. package/dist/lib/utils.js +3 -0
  185. package/dist/lib/utils.js.map +1 -0
  186. package/dist/list-row.cjs +188 -0
  187. package/dist/list-row.cjs.map +1 -0
  188. package/dist/list-row.d.cts +51 -0
  189. package/dist/list-row.d.ts +51 -0
  190. package/dist/list-row.js +164 -0
  191. package/dist/list-row.js.map +1 -0
  192. package/dist/pill-tabs.cjs +109 -0
  193. package/dist/pill-tabs.cjs.map +1 -0
  194. package/dist/pill-tabs.d.cts +24 -0
  195. package/dist/pill-tabs.d.ts +24 -0
  196. package/dist/pill-tabs.js +107 -0
  197. package/dist/pill-tabs.js.map +1 -0
  198. package/dist/popover.cjs +88 -0
  199. package/dist/popover.cjs.map +1 -0
  200. package/dist/popover.d.cts +13 -0
  201. package/dist/popover.d.ts +13 -0
  202. package/dist/popover.js +80 -0
  203. package/dist/popover.js.map +1 -0
  204. package/dist/progress-bar.cjs +28 -0
  205. package/dist/progress-bar.cjs.map +1 -0
  206. package/dist/progress-bar.d.cts +11 -0
  207. package/dist/progress-bar.d.ts +11 -0
  208. package/dist/progress-bar.js +26 -0
  209. package/dist/progress-bar.js.map +1 -0
  210. package/dist/scroll-area.cjs +63 -0
  211. package/dist/scroll-area.cjs.map +1 -0
  212. package/dist/scroll-area.d.cts +8 -0
  213. package/dist/scroll-area.d.ts +8 -0
  214. package/dist/scroll-area.js +60 -0
  215. package/dist/scroll-area.js.map +1 -0
  216. package/dist/section-label.cjs +30 -0
  217. package/dist/section-label.cjs.map +1 -0
  218. package/dist/section-label.d.cts +13 -0
  219. package/dist/section-label.d.ts +13 -0
  220. package/dist/section-label.js +28 -0
  221. package/dist/section-label.js.map +1 -0
  222. package/dist/segmented-control.cjs +75 -0
  223. package/dist/segmented-control.cjs.map +1 -0
  224. package/dist/segmented-control.d.cts +26 -0
  225. package/dist/segmented-control.d.ts +26 -0
  226. package/dist/segmented-control.js +53 -0
  227. package/dist/segmented-control.js.map +1 -0
  228. package/dist/select.cjs +193 -0
  229. package/dist/select.cjs.map +1 -0
  230. package/dist/select.d.cts +18 -0
  231. package/dist/select.d.ts +18 -0
  232. package/dist/select.js +182 -0
  233. package/dist/select.js.map +1 -0
  234. package/dist/separator.cjs +13 -0
  235. package/dist/separator.cjs.map +1 -0
  236. package/dist/separator.d.cts +7 -0
  237. package/dist/separator.d.ts +7 -0
  238. package/dist/separator.js +4 -0
  239. package/dist/separator.js.map +1 -0
  240. package/dist/sidebar.cjs +29 -0
  241. package/dist/sidebar.cjs.map +1 -0
  242. package/dist/sidebar.d.cts +58 -0
  243. package/dist/sidebar.d.ts +58 -0
  244. package/dist/sidebar.js +4 -0
  245. package/dist/sidebar.js.map +1 -0
  246. package/dist/skeleton.cjs +19 -0
  247. package/dist/skeleton.cjs.map +1 -0
  248. package/dist/skeleton.d.cts +5 -0
  249. package/dist/skeleton.d.ts +5 -0
  250. package/dist/skeleton.js +17 -0
  251. package/dist/skeleton.js.map +1 -0
  252. package/dist/sonner.cjs +40 -0
  253. package/dist/sonner.cjs.map +1 -0
  254. package/dist/sonner.d.cts +6 -0
  255. package/dist/sonner.d.ts +6 -0
  256. package/dist/sonner.js +38 -0
  257. package/dist/sonner.js.map +1 -0
  258. package/dist/sparkline.cjs +44 -0
  259. package/dist/sparkline.cjs.map +1 -0
  260. package/dist/sparkline.d.cts +12 -0
  261. package/dist/sparkline.d.ts +12 -0
  262. package/dist/sparkline.js +42 -0
  263. package/dist/sparkline.js.map +1 -0
  264. package/dist/spinner.cjs +13 -0
  265. package/dist/spinner.cjs.map +1 -0
  266. package/dist/spinner.d.cts +5 -0
  267. package/dist/spinner.d.ts +5 -0
  268. package/dist/spinner.js +11 -0
  269. package/dist/spinner.js.map +1 -0
  270. package/dist/stat-card.cjs +65 -0
  271. package/dist/stat-card.cjs.map +1 -0
  272. package/dist/stat-card.d.cts +22 -0
  273. package/dist/stat-card.d.ts +22 -0
  274. package/dist/stat-card.js +61 -0
  275. package/dist/stat-card.js.map +1 -0
  276. package/dist/status-dot.cjs +32 -0
  277. package/dist/status-dot.cjs.map +1 -0
  278. package/dist/status-dot.d.cts +11 -0
  279. package/dist/status-dot.d.ts +11 -0
  280. package/dist/status-dot.js +29 -0
  281. package/dist/status-dot.js.map +1 -0
  282. package/dist/switch.cjs +38 -0
  283. package/dist/switch.cjs.map +1 -0
  284. package/dist/switch.d.cts +9 -0
  285. package/dist/switch.d.ts +9 -0
  286. package/dist/switch.js +36 -0
  287. package/dist/switch.js.map +1 -0
  288. package/dist/table.cjs +118 -0
  289. package/dist/table.cjs.map +1 -0
  290. package/dist/table.d.cts +13 -0
  291. package/dist/table.d.ts +13 -0
  292. package/dist/table.js +109 -0
  293. package/dist/table.js.map +1 -0
  294. package/dist/tabs.cjs +124 -0
  295. package/dist/tabs.cjs.map +1 -0
  296. package/dist/tabs.d.cts +15 -0
  297. package/dist/tabs.d.ts +15 -0
  298. package/dist/tabs.js +118 -0
  299. package/dist/tabs.js.map +1 -0
  300. package/dist/text-link.cjs +51 -0
  301. package/dist/text-link.cjs.map +1 -0
  302. package/dist/text-link.d.cts +15 -0
  303. package/dist/text-link.d.ts +15 -0
  304. package/dist/text-link.js +48 -0
  305. package/dist/text-link.js.map +1 -0
  306. package/dist/textarea.cjs +13 -0
  307. package/dist/textarea.cjs.map +1 -0
  308. package/dist/textarea.d.cts +6 -0
  309. package/dist/textarea.d.ts +6 -0
  310. package/dist/textarea.js +4 -0
  311. package/dist/textarea.js.map +1 -0
  312. package/dist/theme.css +109 -0
  313. package/dist/toggle-group.cjs +155 -0
  314. package/dist/toggle-group.cjs.map +1 -0
  315. package/dist/toggle-group.d.cts +31 -0
  316. package/dist/toggle-group.d.ts +31 -0
  317. package/dist/toggle-group.js +130 -0
  318. package/dist/toggle-group.js.map +1 -0
  319. package/dist/toggle.cjs +21 -0
  320. package/dist/toggle.cjs.map +1 -0
  321. package/dist/toggle.d.cts +23 -0
  322. package/dist/toggle.d.ts +23 -0
  323. package/dist/toggle.js +4 -0
  324. package/dist/toggle.js.map +1 -0
  325. package/dist/tokens.css +77 -0
  326. package/dist/tooltip.cjs +25 -0
  327. package/dist/tooltip.cjs.map +1 -0
  328. package/dist/tooltip.d.cts +10 -0
  329. package/dist/tooltip.d.ts +10 -0
  330. package/dist/tooltip.js +4 -0
  331. package/dist/tooltip.js.map +1 -0
  332. package/package.json +60 -4
@@ -0,0 +1,24 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface PillTab<T extends string> {
4
+ id: T;
5
+ label: string;
6
+ /** Getting-started spotlight anchor rendered as ``data-onboarding``. */
7
+ onboarding?: string;
8
+ }
9
+ declare function PillTabs<T extends string>({ tabs, activeId, onSelect, label, flush, }: {
10
+ tabs: readonly PillTab<T>[];
11
+ activeId: T;
12
+ onSelect: (id: T) => void;
13
+ /** Names the tablist for screen readers. */
14
+ label?: string;
15
+ /** Drop the horizontal padding.
16
+ *
17
+ * The default gutter is for a full-bleed page, where this strip spans the
18
+ * viewport and supplies its own inset. Inside a container that already pads
19
+ * — a detail view nested in a padded page — that gutter indents the tabs
20
+ * relative to everything above and below them. */
21
+ flush?: boolean;
22
+ }): react_jsx_runtime.JSX.Element;
23
+
24
+ export { type PillTab, PillTabs };
@@ -0,0 +1,24 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface PillTab<T extends string> {
4
+ id: T;
5
+ label: string;
6
+ /** Getting-started spotlight anchor rendered as ``data-onboarding``. */
7
+ onboarding?: string;
8
+ }
9
+ declare function PillTabs<T extends string>({ tabs, activeId, onSelect, label, flush, }: {
10
+ tabs: readonly PillTab<T>[];
11
+ activeId: T;
12
+ onSelect: (id: T) => void;
13
+ /** Names the tablist for screen readers. */
14
+ label?: string;
15
+ /** Drop the horizontal padding.
16
+ *
17
+ * The default gutter is for a full-bleed page, where this strip spans the
18
+ * viewport and supplies its own inset. Inside a container that already pads
19
+ * — a detail view nested in a padded page — that gutter indents the tabs
20
+ * relative to everything above and below them. */
21
+ flush?: boolean;
22
+ }): react_jsx_runtime.JSX.Element;
23
+
24
+ export { type PillTab, PillTabs };
@@ -0,0 +1,107 @@
1
+ import { cn } from './chunk-LZGII7SX.js';
2
+ import { useRef, useState, useEffect } from 'react';
3
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
4
+
5
+ var RING_MASK = {
6
+ WebkitMask: "linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)",
7
+ WebkitMaskComposite: "xor",
8
+ maskComposite: "exclude"
9
+ };
10
+ function PillTabs({
11
+ tabs,
12
+ activeId,
13
+ onSelect,
14
+ label = "Sections",
15
+ flush = false
16
+ }) {
17
+ const activeRef = useRef(null);
18
+ const [scrolled, setScrolled] = useState(false);
19
+ useEffect(() => {
20
+ activeRef.current?.scrollIntoView({
21
+ behavior: "smooth",
22
+ inline: "center",
23
+ block: "nearest"
24
+ });
25
+ }, [activeId]);
26
+ return /* @__PURE__ */ jsxs("div", { "data-slot": "pill-tabs", className: "relative shrink-0 border-b border-line", children: [
27
+ /* @__PURE__ */ jsx(
28
+ "div",
29
+ {
30
+ role: "tablist",
31
+ "aria-label": label,
32
+ onScroll: (e) => setScrolled(e.currentTarget.scrollLeft > 4),
33
+ className: cn(
34
+ "no-scrollbar flex snap-x snap-proximity gap-1.5 overflow-x-auto py-2 md:py-2.5",
35
+ !flush && "px-4 md:px-7"
36
+ ),
37
+ children: tabs.map((tab) => {
38
+ const isActive = tab.id === activeId;
39
+ return /* @__PURE__ */ jsxs(
40
+ "button",
41
+ {
42
+ ref: isActive ? activeRef : void 0,
43
+ type: "button",
44
+ role: "tab",
45
+ "data-slot": "pill-tabs-tab",
46
+ "aria-selected": isActive,
47
+ "data-onboarding": tab.onboarding,
48
+ onClick: () => onSelect(tab.id),
49
+ className: cn(
50
+ "relative flex min-h-11 shrink-0 snap-center items-center whitespace-nowrap rounded-[10px] px-3.5 text-sm font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/40 pointer-fine:min-h-0 md:px-3 md:py-1.5",
51
+ isActive ? "bg-surface text-foreground" : "text-muted-foreground active:bg-surface/60 md:hover:bg-surface/60 md:hover:text-foreground"
52
+ ),
53
+ children: [
54
+ isActive && /* @__PURE__ */ jsxs(Fragment, { children: [
55
+ /* @__PURE__ */ jsx(
56
+ "span",
57
+ {
58
+ "aria-hidden": "true",
59
+ className: "pointer-events-none absolute inset-0 rounded-[10px] blur-[2px]",
60
+ style: {
61
+ padding: "2px",
62
+ background: "linear-gradient(to top, rgba(245,158,11,0.75) 10%, rgba(245,158,11,0) 40%)",
63
+ ...RING_MASK
64
+ }
65
+ }
66
+ ),
67
+ /* @__PURE__ */ jsx(
68
+ "span",
69
+ {
70
+ "aria-hidden": "true",
71
+ className: "pointer-events-none absolute inset-0 rounded-[10px]",
72
+ style: {
73
+ padding: "1px",
74
+ background: "linear-gradient(to top, rgba(245,158,11,1) 10%, rgba(245,158,11,0) 40%)",
75
+ ...RING_MASK
76
+ }
77
+ }
78
+ )
79
+ ] }),
80
+ /* @__PURE__ */ jsx("span", { className: "relative", children: tab.label })
81
+ ]
82
+ },
83
+ tab.id
84
+ );
85
+ })
86
+ }
87
+ ),
88
+ scrolled && /* @__PURE__ */ jsx(
89
+ "div",
90
+ {
91
+ "aria-hidden": "true",
92
+ className: "pointer-events-none absolute inset-y-0 left-0 w-8 bg-gradient-to-r from-background to-transparent md:hidden"
93
+ }
94
+ ),
95
+ /* @__PURE__ */ jsx(
96
+ "div",
97
+ {
98
+ "aria-hidden": "true",
99
+ className: "pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-background to-transparent md:hidden"
100
+ }
101
+ )
102
+ ] });
103
+ }
104
+
105
+ export { PillTabs };
106
+ //# sourceMappingURL=pill-tabs.js.map
107
+ //# sourceMappingURL=pill-tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/pill-tabs.tsx"],"names":[],"mappings":";;;;AASA,IAAM,SAAA,GAA2B;AAAA,EAC/B,UAAA,EACE,kEAAA;AAAA,EACF,mBAAA,EAAqB,KAAA;AAAA,EACrB,aAAA,EAAe;AACjB,CAAA;AAqBO,SAAS,QAAA,CAA2B;AAAA,EACzC,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,GAAQ,UAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,EAaG;AACD,EAAA,MAAM,SAAA,GAAY,OAAiC,IAAI,CAAA;AAGvD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAE9C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,SAAA,CAAU,SAAS,cAAA,CAAe;AAAA,MAChC,QAAA,EAAU,QAAA;AAAA,MACV,MAAA,EAAQ,QAAA;AAAA,MACR,KAAA,EAAO;AAAA,KACR,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,WAAA,EAAY,WAAU,wCAAA,EACnC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,SAAA;AAAA,QACL,YAAA,EAAY,KAAA;AAAA,QACZ,UAAU,CAAC,CAAA,KAAM,YAAY,CAAA,CAAE,aAAA,CAAc,aAAa,CAAC,CAAA;AAAA,QAC3D,SAAA,EAAW,EAAA;AAAA,UACT,gFAAA;AAAA,UACA,CAAC,KAAA,IAAS;AAAA,SACZ;AAAA,QAEC,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ;AACjB,UAAA,MAAM,QAAA,GAAW,IAAI,EAAA,KAAO,QAAA;AAC5B,UAAA,uBACE,IAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cAEC,GAAA,EAAK,WAAW,SAAA,GAAY,MAAA;AAAA,cAC5B,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,KAAA;AAAA,cACL,WAAA,EAAU,eAAA;AAAA,cACV,eAAA,EAAe,QAAA;AAAA,cACf,mBAAiB,GAAA,CAAI,UAAA;AAAA,cACrB,OAAA,EAAS,MAAM,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA;AAAA,cAC9B,SAAA,EAAW,EAAA;AAAA,gBACT,4OAAA;AAAA,gBACA,WACI,4BAAA,GACA;AAAA,eACN;AAAA,cAIC,QAAA,EAAA;AAAA,gBAAA,QAAA,oBACC,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,aAAA,EAAY,MAAA;AAAA,sBACZ,SAAA,EAAU,gEAAA;AAAA,sBACV,KAAA,EAAO;AAAA,wBACL,OAAA,EAAS,KAAA;AAAA,wBACT,UAAA,EACE,4EAAA;AAAA,wBACF,GAAG;AAAA;AACL;AAAA,mBACF;AAAA,kCACA,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,aAAA,EAAY,MAAA;AAAA,sBACZ,SAAA,EAAU,qDAAA;AAAA,sBACV,KAAA,EAAO;AAAA,wBACL,OAAA,EAAS,KAAA;AAAA,wBACT,UAAA,EACE,yEAAA;AAAA,wBACF,GAAG;AAAA;AACL;AAAA;AACF,iBAAA,EACF,CAAA;AAAA,gCAEF,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,cAAI,KAAA,EAAM;AAAA;AAAA,aAAA;AAAA,YAzCjC,GAAA,CAAI;AAAA,WA0CX;AAAA,QAEJ,CAAC;AAAA;AAAA,KACH;AAAA,IAGC,QAAA,oBACC,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAU;AAAA;AAAA,KACZ;AAAA,oBAEF,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,aAAA,EAAY,MAAA;AAAA,QACZ,SAAA,EAAU;AAAA;AAAA;AACZ,GAAA,EACF,CAAA;AAEJ","file":"pill-tabs.js","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\nimport { cn } from \"./lib/utils\";\nimport { type CSSProperties, useEffect, useRef, useState } from \"react\";\n\n// CSS mask that keeps only the border ring of a box: a gradient set as the\n// element's background then fills just the border (the interior is masked out).\n// Pair with a `padding` equal to the desired border thickness.\nconst RING_MASK: CSSProperties = {\n WebkitMask:\n \"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\",\n WebkitMaskComposite: \"xor\",\n maskComposite: \"exclude\",\n};\n\nexport interface PillTab<T extends string> {\n id: T;\n label: string;\n /** Getting-started spotlight anchor rendered as ``data-onboarding``. */\n onboarding?: string;\n}\n\n// The product's horizontal tab bar (Figma \"tabBar\"): the inner header on every\n// detail page that has sub-sections — agent Configure, models, training runs,\n// datasets, knowledge bases. Active tab gets a subtle surface fill, foreground\n// text and an amber border-glow; inactive tabs are muted.\n//\n// `tabs` draws the same pills over Radix Tabs (with panels); this one is a\n// bare strip for a page that swaps its own content by id.\n//\n// A dozen tabs never fit a phone, so the strip scrolls horizontally there. Two\n// things make that usable: the active tab scrolls itself into view (a\n// deep-linked `?tab=monetize` would otherwise land off-screen with nothing to\n// hint it exists), and a fade on the trailing edge advertises the overflow.\nexport function PillTabs<T extends string>({\n tabs,\n activeId,\n onSelect,\n label = \"Sections\",\n flush = false,\n}: {\n tabs: readonly PillTab<T>[];\n activeId: T;\n onSelect: (id: T) => void;\n /** Names the tablist for screen readers. */\n label?: string;\n /** Drop the horizontal padding.\n *\n * The default gutter is for a full-bleed page, where this strip spans the\n * viewport and supplies its own inset. Inside a container that already pads\n * — a detail view nested in a padded page — that gutter indents the tabs\n * relative to everything above and below them. */\n flush?: boolean;\n}) {\n const activeRef = useRef<HTMLButtonElement | null>(null);\n // Scrolled past the first tab: a matching fade on the leading edge says\n // there is more that way, instead of a word cut in half.\n const [scrolled, setScrolled] = useState(false);\n\n useEffect(() => {\n activeRef.current?.scrollIntoView({\n behavior: \"smooth\",\n inline: \"center\",\n block: \"nearest\",\n });\n }, [activeId]);\n\n return (\n <div data-slot=\"pill-tabs\" className=\"relative shrink-0 border-b border-line\">\n <div\n role=\"tablist\"\n aria-label={label}\n onScroll={(e) => setScrolled(e.currentTarget.scrollLeft > 4)}\n className={cn(\n \"no-scrollbar flex snap-x snap-proximity gap-1.5 overflow-x-auto py-2 md:py-2.5\",\n !flush && \"px-4 md:px-7\",\n )}\n >\n {tabs.map((tab) => {\n const isActive = tab.id === activeId;\n return (\n <button\n key={tab.id}\n ref={isActive ? activeRef : undefined}\n type=\"button\"\n role=\"tab\"\n data-slot=\"pill-tabs-tab\"\n aria-selected={isActive}\n data-onboarding={tab.onboarding}\n onClick={() => onSelect(tab.id)}\n className={cn(\n \"relative flex min-h-11 shrink-0 snap-center items-center whitespace-nowrap rounded-[10px] px-3.5 text-sm font-medium transition-colors outline-none focus-visible:ring-2 focus-visible:ring-ring/40 pointer-fine:min-h-0 md:px-3 md:py-1.5\",\n isActive\n ? \"bg-surface text-foreground\"\n : \"text-muted-foreground active:bg-surface/60 md:hover:bg-surface/60 md:hover:text-foreground\",\n )}\n >\n {/* Amber border-glow: bright along the bottom edge, fading upward\n along the rounded corners. The blurred copy adds the bloom. */}\n {isActive && (\n <>\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 rounded-[10px] blur-[2px]\"\n style={{\n padding: \"2px\",\n background:\n \"linear-gradient(to top, rgba(245,158,11,0.75) 10%, rgba(245,158,11,0) 40%)\",\n ...RING_MASK,\n }}\n />\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0 rounded-[10px]\"\n style={{\n padding: \"1px\",\n background:\n \"linear-gradient(to top, rgba(245,158,11,1) 10%, rgba(245,158,11,0) 40%)\",\n ...RING_MASK,\n }}\n />\n </>\n )}\n <span className=\"relative\">{tab.label}</span>\n </button>\n );\n })}\n </div>\n {/* Overflow hints. Decorative and non-interactive, so taps still reach\n the tab underneath. */}\n {scrolled && (\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-y-0 left-0 w-8 bg-gradient-to-r from-background to-transparent md:hidden\"\n />\n )}\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-y-0 right-0 w-8 bg-gradient-to-l from-background to-transparent md:hidden\"\n />\n </div>\n );\n}\n"]}
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ var chunk6YHDDRIM_cjs = require('./chunk-6YHDDRIM.cjs');
4
+ var radixUi = require('radix-ui');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function Popover({
8
+ ...props
9
+ }) {
10
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Root, { "data-slot": "popover", ...props });
11
+ }
12
+ function PopoverTrigger({
13
+ ...props
14
+ }) {
15
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Trigger, { "data-slot": "popover-trigger", ...props });
16
+ }
17
+ function PopoverContent({
18
+ className,
19
+ align = "center",
20
+ sideOffset = 4,
21
+ ...props
22
+ }) {
23
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
24
+ radixUi.Popover.Content,
25
+ {
26
+ "data-slot": "popover-content",
27
+ align,
28
+ sideOffset,
29
+ className: chunk6YHDDRIM_cjs.cn(
30
+ // The surface of Work's menus, at panel padding.
31
+ "z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-4 rounded-[12px] border border-foreground/10 bg-popover p-4 text-sm text-popover-foreground shadow-[0px_10px_24px_0px_rgba(0,0,0,0.12)] outline-hidden duration-100 dark:shadow-[0px_10px_24px_0px_rgba(0,0,0,0.5)] data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
32
+ className
33
+ ),
34
+ ...props
35
+ }
36
+ ) });
37
+ }
38
+ function PopoverAnchor({
39
+ ...props
40
+ }) {
41
+ return /* @__PURE__ */ jsxRuntime.jsx(radixUi.Popover.Anchor, { "data-slot": "popover-anchor", ...props });
42
+ }
43
+ function PopoverHeader({ className, ...props }) {
44
+ return /* @__PURE__ */ jsxRuntime.jsx(
45
+ "div",
46
+ {
47
+ "data-slot": "popover-header",
48
+ className: chunk6YHDDRIM_cjs.cn("flex flex-col gap-1 text-sm", className),
49
+ ...props
50
+ }
51
+ );
52
+ }
53
+ function PopoverTitle({ className, ...props }) {
54
+ return /* @__PURE__ */ jsxRuntime.jsx(
55
+ "div",
56
+ {
57
+ "data-slot": "popover-title",
58
+ className: chunk6YHDDRIM_cjs.cn("text-[13px] font-semibold text-foreground", className),
59
+ ...props
60
+ }
61
+ );
62
+ }
63
+ function PopoverDescription({
64
+ className,
65
+ ...props
66
+ }) {
67
+ return /* @__PURE__ */ jsxRuntime.jsx(
68
+ "p",
69
+ {
70
+ "data-slot": "popover-description",
71
+ className: chunk6YHDDRIM_cjs.cn(
72
+ "text-[12.5px] leading-relaxed text-muted-foreground",
73
+ className
74
+ ),
75
+ ...props
76
+ }
77
+ );
78
+ }
79
+
80
+ exports.Popover = Popover;
81
+ exports.PopoverAnchor = PopoverAnchor;
82
+ exports.PopoverContent = PopoverContent;
83
+ exports.PopoverDescription = PopoverDescription;
84
+ exports.PopoverHeader = PopoverHeader;
85
+ exports.PopoverTitle = PopoverTitle;
86
+ exports.PopoverTrigger = PopoverTrigger;
87
+ //# sourceMappingURL=popover.cjs.map
88
+ //# sourceMappingURL=popover.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/popover.tsx"],"names":["PopoverPrimitive","jsx","cn"],"mappings":";;;;;;AAKA,SAAS,OAAA,CAAQ;AAAA,EACf,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,sCAAQA,eAAA,CAAiB,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC/D;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,sCAAQA,eAAA,CAAiB,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACEC,cAAA,CAACD,eAAA,CAAiB,MAAA,EAAjB,EACC,QAAA,kBAAAC,cAAA;AAAA,IAACD,eAAA,CAAiB,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAWE,oBAAA;AAAA;AAAA,QAET,okBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,sCAAQF,eAAA,CAAiB,MAAA,EAAjB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACxE;AAEA,SAAS,aAAA,CAAc,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC3E,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAWC,oBAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,MACrD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACzE,EAAA,uBACED,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAWC,oBAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA;AAAA,MACnE,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA8B;AAC5B,EAAA,uBACED,cAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAWC,oBAAA;AAAA,QACT,qDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"popover.cjs","sourcesContent":["import * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"./lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n // The surface of Work's menus, at panel padding.\n \"z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-4 rounded-[12px] border border-foreground/10 bg-popover p-4 text-sm text-popover-foreground shadow-[0px_10px_24px_0px_rgba(0,0,0,0.12)] outline-hidden duration-100 dark:shadow-[0px_10px_24px_0px_rgba(0,0,0,0.5)] data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-1 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n return (\n <div\n data-slot=\"popover-title\"\n className={cn(\"text-[13px] font-semibold text-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"popover-description\"\n className={cn(\n \"text-[12.5px] leading-relaxed text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverAnchor,\n PopoverContent,\n PopoverDescription,\n PopoverHeader,\n PopoverTitle,\n PopoverTrigger,\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Popover as Popover$1 } from 'radix-ui';
4
+
5
+ declare function Popover({ ...props }: React.ComponentProps<typeof Popover$1.Root>): react_jsx_runtime.JSX.Element;
6
+ declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof Popover$1.Trigger>): react_jsx_runtime.JSX.Element;
7
+ declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof Popover$1.Content>): react_jsx_runtime.JSX.Element;
8
+ declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof Popover$1.Anchor>): react_jsx_runtime.JSX.Element;
9
+ declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
10
+ declare function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">): react_jsx_runtime.JSX.Element;
11
+ declare function PopoverDescription({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
12
+
13
+ export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
@@ -0,0 +1,13 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Popover as Popover$1 } from 'radix-ui';
4
+
5
+ declare function Popover({ ...props }: React.ComponentProps<typeof Popover$1.Root>): react_jsx_runtime.JSX.Element;
6
+ declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof Popover$1.Trigger>): react_jsx_runtime.JSX.Element;
7
+ declare function PopoverContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof Popover$1.Content>): react_jsx_runtime.JSX.Element;
8
+ declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof Popover$1.Anchor>): react_jsx_runtime.JSX.Element;
9
+ declare function PopoverHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
10
+ declare function PopoverTitle({ className, ...props }: React.ComponentProps<"h2">): react_jsx_runtime.JSX.Element;
11
+ declare function PopoverDescription({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
12
+
13
+ export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
@@ -0,0 +1,80 @@
1
+ import { cn } from './chunk-LZGII7SX.js';
2
+ import { Popover as Popover$1 } from 'radix-ui';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ function Popover({
6
+ ...props
7
+ }) {
8
+ return /* @__PURE__ */ jsx(Popover$1.Root, { "data-slot": "popover", ...props });
9
+ }
10
+ function PopoverTrigger({
11
+ ...props
12
+ }) {
13
+ return /* @__PURE__ */ jsx(Popover$1.Trigger, { "data-slot": "popover-trigger", ...props });
14
+ }
15
+ function PopoverContent({
16
+ className,
17
+ align = "center",
18
+ sideOffset = 4,
19
+ ...props
20
+ }) {
21
+ return /* @__PURE__ */ jsx(Popover$1.Portal, { children: /* @__PURE__ */ jsx(
22
+ Popover$1.Content,
23
+ {
24
+ "data-slot": "popover-content",
25
+ align,
26
+ sideOffset,
27
+ className: cn(
28
+ // The surface of Work's menus, at panel padding.
29
+ "z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-4 rounded-[12px] border border-foreground/10 bg-popover p-4 text-sm text-popover-foreground shadow-[0px_10px_24px_0px_rgba(0,0,0,0.12)] outline-hidden duration-100 dark:shadow-[0px_10px_24px_0px_rgba(0,0,0,0.5)] data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
30
+ className
31
+ ),
32
+ ...props
33
+ }
34
+ ) });
35
+ }
36
+ function PopoverAnchor({
37
+ ...props
38
+ }) {
39
+ return /* @__PURE__ */ jsx(Popover$1.Anchor, { "data-slot": "popover-anchor", ...props });
40
+ }
41
+ function PopoverHeader({ className, ...props }) {
42
+ return /* @__PURE__ */ jsx(
43
+ "div",
44
+ {
45
+ "data-slot": "popover-header",
46
+ className: cn("flex flex-col gap-1 text-sm", className),
47
+ ...props
48
+ }
49
+ );
50
+ }
51
+ function PopoverTitle({ className, ...props }) {
52
+ return /* @__PURE__ */ jsx(
53
+ "div",
54
+ {
55
+ "data-slot": "popover-title",
56
+ className: cn("text-[13px] font-semibold text-foreground", className),
57
+ ...props
58
+ }
59
+ );
60
+ }
61
+ function PopoverDescription({
62
+ className,
63
+ ...props
64
+ }) {
65
+ return /* @__PURE__ */ jsx(
66
+ "p",
67
+ {
68
+ "data-slot": "popover-description",
69
+ className: cn(
70
+ "text-[12.5px] leading-relaxed text-muted-foreground",
71
+ className
72
+ ),
73
+ ...props
74
+ }
75
+ );
76
+ }
77
+
78
+ export { Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger };
79
+ //# sourceMappingURL=popover.js.map
80
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/popover.tsx"],"names":["PopoverPrimitive"],"mappings":";;;;AAKA,SAAS,OAAA,CAAQ;AAAA,EACf,GAAG;AACL,CAAA,EAAuD;AACrD,EAAA,2BAAQA,SAAA,CAAiB,IAAA,EAAjB,EAAsB,WAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAO,CAAA;AAC/D;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,2BAAQA,SAAA,CAAiB,OAAA,EAAjB,EAAyB,WAAA,EAAU,iBAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AAC1E;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,SAAA;AAAA,EACA,KAAA,GAAQ,QAAA;AAAA,EACR,UAAA,GAAa,CAAA;AAAA,EACb,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACE,GAAA,CAACA,SAAA,CAAiB,MAAA,EAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,IAACA,SAAA,CAAiB,OAAA;AAAA,IAAjB;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,KAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA;AAAA,QAET,okBAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAEA,SAAS,aAAA,CAAc;AAAA,EACrB,GAAG;AACL,CAAA,EAAyD;AACvD,EAAA,2BAAQA,SAAA,CAAiB,MAAA,EAAjB,EAAwB,WAAA,EAAU,gBAAA,EAAkB,GAAG,KAAA,EAAO,CAAA;AACxE;AAEA,SAAS,aAAA,CAAc,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,6BAAA,EAA+B,SAAS,CAAA;AAAA,MACrD,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAA+B;AACzE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA;AAAA,MACnE,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA8B;AAC5B,EAAA,uBACE,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,qDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"popover.js","sourcesContent":["import * as React from \"react\"\nimport { Popover as PopoverPrimitive } from \"radix-ui\"\n\nimport { cn } from \"./lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n // The surface of Work's menus, at panel padding.\n \"z-50 flex w-72 origin-(--radix-popover-content-transform-origin) flex-col gap-4 rounded-[12px] border border-foreground/10 bg-popover p-4 text-sm text-popover-foreground shadow-[0px_10px_24px_0px_rgba(0,0,0,0.12)] outline-hidden duration-100 dark:shadow-[0px_10px_24px_0px_rgba(0,0,0,0.5)] data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nfunction PopoverHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"popover-header\"\n className={cn(\"flex flex-col gap-1 text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverTitle({ className, ...props }: React.ComponentProps<\"h2\">) {\n return (\n <div\n data-slot=\"popover-title\"\n className={cn(\"text-[13px] font-semibold text-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction PopoverDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"popover-description\"\n className={cn(\n \"text-[12.5px] leading-relaxed text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Popover,\n PopoverAnchor,\n PopoverContent,\n PopoverDescription,\n PopoverHeader,\n PopoverTitle,\n PopoverTrigger,\n}\n"]}
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ // src/progress-bar.tsx
6
+ function ProgressBar({
7
+ value,
8
+ max = 100,
9
+ color = "var(--primary)",
10
+ animated = false
11
+ }) {
12
+ const pct = Math.min(value / max * 100, 100);
13
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-1 bg-line rounded-sm overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
14
+ "div",
15
+ {
16
+ className: "h-full rounded-sm transition-[width] duration-500 ease-out",
17
+ style: {
18
+ width: `${pct}%`,
19
+ backgroundColor: color,
20
+ animation: animated ? "progress-bar 1s ease" : void 0
21
+ }
22
+ }
23
+ ) });
24
+ }
25
+
26
+ exports.ProgressBar = ProgressBar;
27
+ //# sourceMappingURL=progress-bar.cjs.map
28
+ //# sourceMappingURL=progress-bar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/progress-bar.tsx"],"names":["jsx"],"mappings":";;;;;AAWO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,GAAA,GAAM,GAAA;AAAA,EACN,KAAA,GAAQ,gBAAA;AAAA,EACR,QAAA,GAAW;AACb,CAAA,EAAqB;AACnB,EAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAK,KAAA,GAAQ,GAAA,GAAO,KAAK,GAAG,CAAA;AAE7C,EAAA,uBACEA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACb,QAAA,kBAAAA,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,4DAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,QACb,eAAA,EAAiB,KAAA;AAAA,QACjB,SAAA,EAAW,WAAW,sBAAA,GAAyB;AAAA;AACjD;AAAA,GACF,EACF,CAAA;AAEJ","file":"progress-bar.cjs","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\n\ninterface ProgressBarProps {\n value: number;\n max?: number;\n color?: string;\n animated?: boolean;\n}\n\nexport function ProgressBar({\n value,\n max = 100,\n color = \"var(--primary)\",\n animated = false,\n}: ProgressBarProps) {\n const pct = Math.min((value / max) * 100, 100);\n\n return (\n <div className=\"h-1 bg-line rounded-sm overflow-hidden\">\n <div\n className=\"h-full rounded-sm transition-[width] duration-500 ease-out\"\n style={{\n width: `${pct}%`,\n backgroundColor: color,\n animation: animated ? \"progress-bar 1s ease\" : undefined,\n }}\n />\n </div>\n );\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface ProgressBarProps {
4
+ value: number;
5
+ max?: number;
6
+ color?: string;
7
+ animated?: boolean;
8
+ }
9
+ declare function ProgressBar({ value, max, color, animated, }: ProgressBarProps): react_jsx_runtime.JSX.Element;
10
+
11
+ export { ProgressBar };
@@ -0,0 +1,11 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ interface ProgressBarProps {
4
+ value: number;
5
+ max?: number;
6
+ color?: string;
7
+ animated?: boolean;
8
+ }
9
+ declare function ProgressBar({ value, max, color, animated, }: ProgressBarProps): react_jsx_runtime.JSX.Element;
10
+
11
+ export { ProgressBar };
@@ -0,0 +1,26 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+
3
+ // src/progress-bar.tsx
4
+ function ProgressBar({
5
+ value,
6
+ max = 100,
7
+ color = "var(--primary)",
8
+ animated = false
9
+ }) {
10
+ const pct = Math.min(value / max * 100, 100);
11
+ return /* @__PURE__ */ jsx("div", { className: "h-1 bg-line rounded-sm overflow-hidden", children: /* @__PURE__ */ jsx(
12
+ "div",
13
+ {
14
+ className: "h-full rounded-sm transition-[width] duration-500 ease-out",
15
+ style: {
16
+ width: `${pct}%`,
17
+ backgroundColor: color,
18
+ animation: animated ? "progress-bar 1s ease" : void 0
19
+ }
20
+ }
21
+ ) });
22
+ }
23
+
24
+ export { ProgressBar };
25
+ //# sourceMappingURL=progress-bar.js.map
26
+ //# sourceMappingURL=progress-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/progress-bar.tsx"],"names":[],"mappings":";;;AAWO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,GAAA,GAAM,GAAA;AAAA,EACN,KAAA,GAAQ,gBAAA;AAAA,EACR,QAAA,GAAW;AACb,CAAA,EAAqB;AACnB,EAAA,MAAM,MAAM,IAAA,CAAK,GAAA,CAAK,KAAA,GAAQ,GAAA,GAAO,KAAK,GAAG,CAAA;AAE7C,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACb,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,4DAAA;AAAA,MACV,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,QACb,eAAA,EAAiB,KAAA;AAAA,QACjB,SAAA,EAAW,WAAW,sBAAA,GAAyB;AAAA;AACjD;AAAA,GACF,EACF,CAAA;AAEJ","file":"progress-bar.js","sourcesContent":["// Copyright (c) 2026, Invergent SA, developed by Flavius Burca\n// SPDX-License-Identifier: AGPL-3.0-only\n//\n\ninterface ProgressBarProps {\n value: number;\n max?: number;\n color?: string;\n animated?: boolean;\n}\n\nexport function ProgressBar({\n value,\n max = 100,\n color = \"var(--primary)\",\n animated = false,\n}: ProgressBarProps) {\n const pct = Math.min((value / max) * 100, 100);\n\n return (\n <div className=\"h-1 bg-line rounded-sm overflow-hidden\">\n <div\n className=\"h-full rounded-sm transition-[width] duration-500 ease-out\"\n style={{\n width: `${pct}%`,\n backgroundColor: color,\n animation: animated ? \"progress-bar 1s ease\" : undefined,\n }}\n />\n </div>\n );\n}\n"]}
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ var chunk6YHDDRIM_cjs = require('./chunk-6YHDDRIM.cjs');
4
+ var radixUi = require('radix-ui');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function ScrollArea({
8
+ className,
9
+ children,
10
+ ...props
11
+ }) {
12
+ return /* @__PURE__ */ jsxRuntime.jsxs(
13
+ radixUi.ScrollArea.Root,
14
+ {
15
+ "data-slot": "scroll-area",
16
+ className: chunk6YHDDRIM_cjs.cn("relative", className),
17
+ ...props,
18
+ children: [
19
+ /* @__PURE__ */ jsxRuntime.jsx(
20
+ radixUi.ScrollArea.Viewport,
21
+ {
22
+ "data-slot": "scroll-area-viewport",
23
+ className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
24
+ children
25
+ }
26
+ ),
27
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollBar, {}),
28
+ /* @__PURE__ */ jsxRuntime.jsx(radixUi.ScrollArea.Corner, {})
29
+ ]
30
+ }
31
+ );
32
+ }
33
+ function ScrollBar({
34
+ className,
35
+ orientation = "vertical",
36
+ ...props
37
+ }) {
38
+ return /* @__PURE__ */ jsxRuntime.jsx(
39
+ radixUi.ScrollArea.ScrollAreaScrollbar,
40
+ {
41
+ "data-slot": "scroll-area-scrollbar",
42
+ "data-orientation": orientation,
43
+ orientation,
44
+ className: chunk6YHDDRIM_cjs.cn(
45
+ "flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",
46
+ className
47
+ ),
48
+ ...props,
49
+ children: /* @__PURE__ */ jsxRuntime.jsx(
50
+ radixUi.ScrollArea.ScrollAreaThumb,
51
+ {
52
+ "data-slot": "scroll-area-thumb",
53
+ className: "relative flex-1 rounded-none bg-border"
54
+ }
55
+ )
56
+ }
57
+ );
58
+ }
59
+
60
+ exports.ScrollArea = ScrollArea;
61
+ exports.ScrollBar = ScrollBar;
62
+ //# sourceMappingURL=scroll-area.cjs.map
63
+ //# sourceMappingURL=scroll-area.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/scroll-area.tsx"],"names":["jsxs","ScrollAreaPrimitive","cn","jsx"],"mappings":";;;;;;AAOA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0D;AACxD,EAAA,uBACEA,eAAA;AAAA,IAACC,kBAAA,CAAoB,IAAA;AAAA,IAApB;AAAA,MACC,WAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAWC,oBAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,MAClC,GAAG,KAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAC,cAAA;AAAA,UAACF,kBAAA,CAAoB,QAAA;AAAA,UAApB;AAAA,YACC,WAAA,EAAU,sBAAA;AAAA,YACV,SAAA,EAAU,oJAAA;AAAA,YAET;AAAA;AAAA,SACH;AAAA,uCACC,SAAA,EAAA,EAAU,CAAA;AAAA,wBACXE,cAAA,CAACF,kBAAA,CAAoB,MAAA,EAApB,EAA2B;AAAA;AAAA;AAAA,GAC9B;AAEJ;AAEA,SAAS,SAAA,CAAU;AAAA,EACjB,SAAA;AAAA,EACA,WAAA,GAAc,UAAA;AAAA,EACd,GAAG;AACL,CAAA,EAAyE;AACvE,EAAA,uBACEE,cAAA;AAAA,IAACF,kBAAA,CAAoB,mBAAA;AAAA,IAApB;AAAA,MACC,WAAA,EAAU,uBAAA;AAAA,MACV,kBAAA,EAAkB,WAAA;AAAA,MAClB,WAAA;AAAA,MACA,SAAA,EAAWC,oBAAA;AAAA,QACT,oQAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAC,cAAA;AAAA,QAACF,kBAAA,CAAoB,eAAA;AAAA,QAApB;AAAA,UACC,WAAA,EAAU,mBAAA;AAAA,UACV,SAAA,EAAU;AAAA;AAAA;AACZ;AAAA,GACF;AAEJ","file":"scroll-area.cjs","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { ScrollArea as ScrollAreaPrimitive } from \"radix-ui\"\n\nimport { cn } from \"./lib/utils\"\n\nfunction ScrollArea({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.Root>) {\n return (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\"relative\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n data-slot=\"scroll-area-viewport\"\n className=\"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1\"\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n )\n}\n\nfunction ScrollBar({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>) {\n return (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n data-slot=\"scroll-area-scrollbar\"\n data-orientation={orientation}\n orientation={orientation}\n className={cn(\n \"flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n data-slot=\"scroll-area-thumb\"\n className=\"relative flex-1 rounded-none bg-border\"\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n )\n}\n\nexport { ScrollArea, ScrollBar }\n"]}
@@ -0,0 +1,8 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { ScrollArea as ScrollArea$1 } from 'radix-ui';
4
+
5
+ declare function ScrollArea({ className, children, ...props }: React.ComponentProps<typeof ScrollArea$1.Root>): react_jsx_runtime.JSX.Element;
6
+ declare function ScrollBar({ className, orientation, ...props }: React.ComponentProps<typeof ScrollArea$1.ScrollAreaScrollbar>): react_jsx_runtime.JSX.Element;
7
+
8
+ export { ScrollArea, ScrollBar };
@@ -0,0 +1,8 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { ScrollArea as ScrollArea$1 } from 'radix-ui';
4
+
5
+ declare function ScrollArea({ className, children, ...props }: React.ComponentProps<typeof ScrollArea$1.Root>): react_jsx_runtime.JSX.Element;
6
+ declare function ScrollBar({ className, orientation, ...props }: React.ComponentProps<typeof ScrollArea$1.ScrollAreaScrollbar>): react_jsx_runtime.JSX.Element;
7
+
8
+ export { ScrollArea, ScrollBar };
@@ -0,0 +1,60 @@
1
+ import { cn } from './chunk-LZGII7SX.js';
2
+ import { ScrollArea as ScrollArea$1 } from 'radix-ui';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
+
5
+ function ScrollArea({
6
+ className,
7
+ children,
8
+ ...props
9
+ }) {
10
+ return /* @__PURE__ */ jsxs(
11
+ ScrollArea$1.Root,
12
+ {
13
+ "data-slot": "scroll-area",
14
+ className: cn("relative", className),
15
+ ...props,
16
+ children: [
17
+ /* @__PURE__ */ jsx(
18
+ ScrollArea$1.Viewport,
19
+ {
20
+ "data-slot": "scroll-area-viewport",
21
+ className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",
22
+ children
23
+ }
24
+ ),
25
+ /* @__PURE__ */ jsx(ScrollBar, {}),
26
+ /* @__PURE__ */ jsx(ScrollArea$1.Corner, {})
27
+ ]
28
+ }
29
+ );
30
+ }
31
+ function ScrollBar({
32
+ className,
33
+ orientation = "vertical",
34
+ ...props
35
+ }) {
36
+ return /* @__PURE__ */ jsx(
37
+ ScrollArea$1.ScrollAreaScrollbar,
38
+ {
39
+ "data-slot": "scroll-area-scrollbar",
40
+ "data-orientation": orientation,
41
+ orientation,
42
+ className: cn(
43
+ "flex touch-none p-px transition-colors select-none data-horizontal:h-2.5 data-horizontal:flex-col data-horizontal:border-t data-horizontal:border-t-transparent data-vertical:h-full data-vertical:w-2.5 data-vertical:border-l data-vertical:border-l-transparent",
44
+ className
45
+ ),
46
+ ...props,
47
+ children: /* @__PURE__ */ jsx(
48
+ ScrollArea$1.ScrollAreaThumb,
49
+ {
50
+ "data-slot": "scroll-area-thumb",
51
+ className: "relative flex-1 rounded-none bg-border"
52
+ }
53
+ )
54
+ }
55
+ );
56
+ }
57
+
58
+ export { ScrollArea, ScrollBar };
59
+ //# sourceMappingURL=scroll-area.js.map
60
+ //# sourceMappingURL=scroll-area.js.map