@health-samurai/react-components 0.0.0-alpha.18 → 0.0.0-alpha.20

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 (74) hide show
  1. package/LICENSE +21 -0
  2. package/dist/bundle.css +51 -33
  3. package/dist/src/components/code-editor/fhir-autocomplete.d.ts +70 -0
  4. package/dist/src/components/code-editor/fhir-autocomplete.d.ts.map +1 -0
  5. package/dist/src/components/code-editor/fhir-autocomplete.js +1849 -0
  6. package/dist/src/components/code-editor/fhir-autocomplete.js.map +1 -0
  7. package/dist/src/components/code-editor/fhir-autocomplete.test.js +1099 -0
  8. package/dist/src/components/code-editor/fhir-autocomplete.test.js.map +1 -0
  9. package/dist/src/components/code-editor/http/index.d.ts +9 -1
  10. package/dist/src/components/code-editor/http/index.d.ts.map +1 -1
  11. package/dist/src/components/code-editor/http/index.js +423 -3
  12. package/dist/src/components/code-editor/http/index.js.map +1 -1
  13. package/dist/src/components/code-editor/index.d.ts +13 -4
  14. package/dist/src/components/code-editor/index.d.ts.map +1 -1
  15. package/dist/src/components/code-editor/index.js +505 -96
  16. package/dist/src/components/code-editor/index.js.map +1 -1
  17. package/dist/src/components/code-editor/json-ast.d.ts +46 -0
  18. package/dist/src/components/code-editor/json-ast.d.ts.map +1 -0
  19. package/dist/src/components/code-editor/json-ast.js +465 -0
  20. package/dist/src/components/code-editor/json-ast.js.map +1 -0
  21. package/dist/src/components/code-editor/json-ast.test.js +206 -0
  22. package/dist/src/components/code-editor/json-ast.test.js.map +1 -0
  23. package/dist/src/components/code-editor/sql-completion.d.ts +22 -0
  24. package/dist/src/components/code-editor/sql-completion.d.ts.map +1 -0
  25. package/dist/src/components/code-editor/sql-completion.js +895 -0
  26. package/dist/src/components/code-editor/sql-completion.js.map +1 -0
  27. package/dist/src/components/date-picker-input.d.ts +10 -0
  28. package/dist/src/components/date-picker-input.d.ts.map +1 -0
  29. package/dist/src/components/date-picker-input.js +90 -0
  30. package/dist/src/components/date-picker-input.js.map +1 -0
  31. package/dist/src/components/date-picker-input.stories.js +76 -0
  32. package/dist/src/components/date-picker-input.stories.js.map +1 -0
  33. package/dist/src/index.d.ts +1 -0
  34. package/dist/src/index.d.ts.map +1 -1
  35. package/dist/src/index.js +1 -0
  36. package/dist/src/index.js.map +1 -1
  37. package/dist/src/shadcn/components/ui/alert-dialog.d.ts +1 -1
  38. package/dist/src/shadcn/components/ui/calendar.d.ts +1 -1
  39. package/dist/src/shadcn/components/ui/carousel.d.ts +1 -1
  40. package/dist/src/shadcn/components/ui/chart.d.ts +3 -3
  41. package/dist/src/shadcn/components/ui/chart.d.ts.map +1 -1
  42. package/dist/src/shadcn/components/ui/chart.js +1 -1
  43. package/dist/src/shadcn/components/ui/chart.js.map +1 -1
  44. package/dist/src/shadcn/components/ui/command.d.ts +1 -1
  45. package/dist/src/shadcn/components/ui/pagination.d.ts +1 -1
  46. package/dist/src/shadcn/components/ui/resizable.stories.js +2 -2
  47. package/dist/src/shadcn/components/ui/resizable.stories.js.map +1 -1
  48. package/dist/src/shadcn/components/ui/sidebar.d.ts +4 -4
  49. package/dist/src/shadcn/components/ui/tabs.d.ts +3 -1
  50. package/dist/src/shadcn/components/ui/tabs.d.ts.map +1 -1
  51. package/dist/src/shadcn/components/ui/tabs.js +129 -2
  52. package/dist/src/shadcn/components/ui/tabs.js.map +1 -1
  53. package/dist/src/shadcn/components/ui/tabs.stories.js +1 -1
  54. package/dist/src/shadcn/components/ui/tabs.stories.js.map +1 -1
  55. package/dist/src/shadcn/components/ui/toggle-group.d.ts +1 -1
  56. package/dist/src/typography.css +1 -1
  57. package/package.json +24 -19
  58. package/src/components/code-editor/fhir-autocomplete.test.ts +993 -0
  59. package/src/components/code-editor/fhir-autocomplete.ts +2321 -0
  60. package/src/components/code-editor/http/index.ts +339 -2
  61. package/src/components/code-editor/index.tsx +593 -102
  62. package/src/components/code-editor/json-ast.test.ts +230 -0
  63. package/src/components/code-editor/json-ast.ts +590 -0
  64. package/src/components/code-editor/sql-completion.ts +1105 -0
  65. package/src/components/date-picker-input.stories.tsx +79 -0
  66. package/src/components/date-picker-input.tsx +104 -0
  67. package/src/index.tsx +1 -0
  68. package/src/shadcn/components/ui/chart.tsx +6 -3
  69. package/src/shadcn/components/ui/resizable.stories.tsx +2 -2
  70. package/src/shadcn/components/ui/tabs.stories.tsx +1 -1
  71. package/src/shadcn/components/ui/tabs.tsx +160 -2
  72. package/src/typography.css +1 -1
  73. package/dist/src/components/code-editor/http/grammar/http.test.d.ts +0 -2
  74. package/dist/src/components/code-editor/http/grammar/http.test.d.ts.map +0 -1
@@ -6,7 +6,7 @@ const meta = {
6
6
  export default meta;
7
7
  export const Demo = {
8
8
  render: ()=>/*#__PURE__*/ _jsxs(ResizablePanelGroup, {
9
- direction: "horizontal",
9
+ orientation: "horizontal",
10
10
  className: "max-w-md rounded-lg border md:min-w-[450px]",
11
11
  children: [
12
12
  /*#__PURE__*/ _jsx(ResizablePanel, {
@@ -23,7 +23,7 @@ export const Demo = {
23
23
  /*#__PURE__*/ _jsx(ResizablePanel, {
24
24
  defaultSize: 50,
25
25
  children: /*#__PURE__*/ _jsxs(ResizablePanelGroup, {
26
- direction: "vertical",
26
+ orientation: "vertical",
27
27
  children: [
28
28
  /*#__PURE__*/ _jsx(ResizablePanel, {
29
29
  defaultSize: 25,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/shadcn/components/ui/resizable.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react-vite\";\nimport {\n\tResizableHandle,\n\tResizablePanel,\n\tResizablePanelGroup,\n} from \"#shadcn/components/ui/resizable\";\n\nconst meta = {\n\ttitle: \"Component/Resizable\",\n} satisfies Meta;\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Demo = {\n\trender: () => (\n\t\t<ResizablePanelGroup\n\t\t\tdirection=\"horizontal\"\n\t\t\tclassName=\"max-w-md rounded-lg border md:min-w-[450px]\"\n\t\t>\n\t\t\t<ResizablePanel defaultSize={50}>\n\t\t\t\t<div className=\"flex h-[200px] items-center justify-center p-6\">\n\t\t\t\t\t<span className=\"font-semibold\">One</span>\n\t\t\t\t</div>\n\t\t\t</ResizablePanel>\n\t\t\t<ResizableHandle />\n\t\t\t<ResizablePanel defaultSize={50}>\n\t\t\t\t<ResizablePanelGroup direction=\"vertical\">\n\t\t\t\t\t<ResizablePanel defaultSize={25}>\n\t\t\t\t\t\t<div className=\"flex h-full items-center justify-center p-6\">\n\t\t\t\t\t\t\t<span className=\"font-semibold\">Two</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ResizablePanel>\n\t\t\t\t\t<ResizableHandle />\n\t\t\t\t\t<ResizablePanel defaultSize={75}>\n\t\t\t\t\t\t<div className=\"flex h-full items-center justify-center p-6\">\n\t\t\t\t\t\t\t<span className=\"font-semibold\">Three</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ResizablePanel>\n\t\t\t\t</ResizablePanelGroup>\n\t\t\t</ResizablePanel>\n\t\t</ResizablePanelGroup>\n\t),\n} satisfies Story;\n"],"names":["ResizableHandle","ResizablePanel","ResizablePanelGroup","meta","title","Demo","render","direction","className","defaultSize","div","span"],"mappings":";AACA,SACCA,eAAe,EACfC,cAAc,EACdC,mBAAmB,QACb,iBAAkC;AAEzC,MAAMC,OAAO;IACZC,OAAO;AACR;AACA,eAAeD,KAAK;AAIpB,OAAO,MAAME,OAAO;IACnBC,QAAQ,kBACP,MAACJ;YACAK,WAAU;YACVC,WAAU;;8BAEV,KAACP;oBAAeQ,aAAa;8BAC5B,cAAA,KAACC;wBAAIF,WAAU;kCACd,cAAA,KAACG;4BAAKH,WAAU;sCAAgB;;;;8BAGlC,KAACR;8BACD,KAACC;oBAAeQ,aAAa;8BAC5B,cAAA,MAACP;wBAAoBK,WAAU;;0CAC9B,KAACN;gCAAeQ,aAAa;0CAC5B,cAAA,KAACC;oCAAIF,WAAU;8CACd,cAAA,KAACG;wCAAKH,WAAU;kDAAgB;;;;0CAGlC,KAACR;0CACD,KAACC;gCAAeQ,aAAa;0CAC5B,cAAA,KAACC;oCAAIF,WAAU;8CACd,cAAA,KAACG;wCAAKH,WAAU;kDAAgB;;;;;;;;;AAOvC,EAAkB"}
1
+ {"version":3,"sources":["../../../../../src/shadcn/components/ui/resizable.stories.tsx"],"sourcesContent":["import type { Meta, StoryObj } from \"@storybook/react-vite\";\nimport {\n\tResizableHandle,\n\tResizablePanel,\n\tResizablePanelGroup,\n} from \"#shadcn/components/ui/resizable\";\n\nconst meta = {\n\ttitle: \"Component/Resizable\",\n} satisfies Meta;\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Demo = {\n\trender: () => (\n\t\t<ResizablePanelGroup\n\t\t\torientation=\"horizontal\"\n\t\t\tclassName=\"max-w-md rounded-lg border md:min-w-[450px]\"\n\t\t>\n\t\t\t<ResizablePanel defaultSize={50}>\n\t\t\t\t<div className=\"flex h-[200px] items-center justify-center p-6\">\n\t\t\t\t\t<span className=\"font-semibold\">One</span>\n\t\t\t\t</div>\n\t\t\t</ResizablePanel>\n\t\t\t<ResizableHandle />\n\t\t\t<ResizablePanel defaultSize={50}>\n\t\t\t\t<ResizablePanelGroup orientation=\"vertical\">\n\t\t\t\t\t<ResizablePanel defaultSize={25}>\n\t\t\t\t\t\t<div className=\"flex h-full items-center justify-center p-6\">\n\t\t\t\t\t\t\t<span className=\"font-semibold\">Two</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ResizablePanel>\n\t\t\t\t\t<ResizableHandle />\n\t\t\t\t\t<ResizablePanel defaultSize={75}>\n\t\t\t\t\t\t<div className=\"flex h-full items-center justify-center p-6\">\n\t\t\t\t\t\t\t<span className=\"font-semibold\">Three</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</ResizablePanel>\n\t\t\t\t</ResizablePanelGroup>\n\t\t\t</ResizablePanel>\n\t\t</ResizablePanelGroup>\n\t),\n} satisfies Story;\n"],"names":["ResizableHandle","ResizablePanel","ResizablePanelGroup","meta","title","Demo","render","orientation","className","defaultSize","div","span"],"mappings":";AACA,SACCA,eAAe,EACfC,cAAc,EACdC,mBAAmB,QACb,iBAAkC;AAEzC,MAAMC,OAAO;IACZC,OAAO;AACR;AACA,eAAeD,KAAK;AAIpB,OAAO,MAAME,OAAO;IACnBC,QAAQ,kBACP,MAACJ;YACAK,aAAY;YACZC,WAAU;;8BAEV,KAACP;oBAAeQ,aAAa;8BAC5B,cAAA,KAACC;wBAAIF,WAAU;kCACd,cAAA,KAACG;4BAAKH,WAAU;sCAAgB;;;;8BAGlC,KAACR;8BACD,KAACC;oBAAeQ,aAAa;8BAC5B,cAAA,MAACP;wBAAoBK,aAAY;;0CAChC,KAACN;gCAAeQ,aAAa;0CAC5B,cAAA,KAACC;oCAAIF,WAAU;8CACd,cAAA,KAACG;wCAAKH,WAAU;kDAAgB;;;;0CAGlC,KAACR;0CACD,KAACC;gCAAeQ,aAAa;0CAC5B,cAAA,KAACC;oCAAIF,WAAU;8CACd,cAAA,KAACG;wCAAKH,WAAU;kDAAgB;;;;;;;;;AAOvC,EAAkB"}
@@ -1,9 +1,9 @@
1
1
  import { type VariantProps } from "class-variance-authority";
2
2
  import * as React from "react";
3
- import { Button } from "#shadcn/components/ui/button";
4
- import { Input } from "#shadcn/components/ui/input";
5
- import { Separator } from "#shadcn/components/ui/separator";
6
- import { TooltipContent } from "#shadcn/components/ui/tooltip";
3
+ import { Button } from "../../components/ui/button";
4
+ import { Input } from "../../components/ui/input";
5
+ import { Separator } from "../../components/ui/separator";
6
+ import { TooltipContent } from "../../components/ui/tooltip";
7
7
  type SidebarContextProps = {
8
8
  state: "expanded" | "collapsed";
9
9
  open: boolean;
@@ -22,7 +22,9 @@ type TabsListProps = {
22
22
  onTabChange?: (mutationRecords: MutationRecord[]) => void;
23
23
  } & React.ComponentProps<typeof TabsPrimitive.List>;
24
24
  declare function TabsList({ className, onLeftEdge, onRightEdge, onResize, onFlow, onTabChange, ...props }: TabsListProps): import("react/jsx-runtime").JSX.Element;
25
- declare function TabsBrowserList({ className, children, ...props }: React.ComponentProps<typeof TabsPrimitive.List>): import("react/jsx-runtime").JSX.Element;
25
+ declare function TabsBrowserList({ className, children, onReorder, ...props }: React.ComponentProps<typeof TabsPrimitive.List> & {
26
+ onReorder?: (fromIndex: number, toIndex: number) => void;
27
+ }): import("react/jsx-runtime").JSX.Element;
26
28
  export declare function TabsListDropdown({ tabs, handleTabSelect, handleCloseTab, }: {
27
29
  tabs: {
28
30
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../../../src/shadcn/components/ui/tabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQlE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AA2ElC,QAAA,MAAM,YAAY;;8EA4DhB,CAAC;AAOH,KAAK,SAAS,CAAC,CAAC,SAAS,MAAM,IAAI,IAAI,CACtC,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,GAC9C,YAAY,CAAC,OAAO,YAAY,CAAC,EAClC,OAAO,GAAG,cAAc,GAAG,eAAe,CAC1C,GAAG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,iBAAS,IAAI,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EACxC,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACR,EAAE,SAAS,CAAC,CAAC,CAAC,2CAYd;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,2CAavE;AAiDD,KAAK,kBAAkB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC7C,KAAK,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AAEzC,KAAK,aAAa,GAAG;IACpB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACpD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACrD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,IAAI,CAAC;IACpD,WAAW,CAAC,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CAC1D,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAEpD,iBAAS,QAAQ,CAAC,EACjB,SAAS,EACT,UAAU,EACV,WAAW,EACX,QAAQ,EACR,MAAM,EACN,WAAW,EACX,GAAG,KAAK,EACR,EAAE,aAAa,2CA6If;AAyCD,iBAAS,eAAe,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,IAAI,CAAC,2CAsEjD;AAED,wBAAgB,gBAAgB,CAAC,EAChC,IAAI,EACJ,eAAe,EACf,cAAc,GACd,EAAE;IACF,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,EAAE,CAAC;IACjD,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,2CA4CA;AAED,iBAAS,WAAW,CAAC,EACpB,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAG;IACvD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,2CAqCA;AAED,iBAAS,WAAW,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,2CAQpD;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../../../src/shadcn/components/ui/tabs.tsx"],"names":[],"mappings":"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"}
@@ -248,11 +248,138 @@ function TabScrollRightButton({ disabled, onClick }) {
248
248
  children: /*#__PURE__*/ _jsx(ChevronRight, {})
249
249
  });
250
250
  }
251
- function TabsBrowserList({ className, children, ...props }) {
251
+ const DRAG_THRESHOLD = 5;
252
+ function useTabReorder(onReorder) {
253
+ const [drag, setDrag] = React.useState(null);
254
+ const dragRef = React.useRef(null);
255
+ const pendingRef = React.useRef(false);
256
+ const itemsRef = React.useRef([]);
257
+ const handlePointerDown = React.useCallback((e, index)=>{
258
+ if (!onReorder || e.button !== 0) return;
259
+ const items = itemsRef.current;
260
+ const widths = items.map((el)=>el?.offsetWidth ?? 0);
261
+ const lefts = [];
262
+ let acc = 0;
263
+ for (const w of widths){
264
+ lefts.push(acc);
265
+ acc += w;
266
+ }
267
+ dragRef.current = {
268
+ index,
269
+ startX: e.clientX,
270
+ offsetX: 0,
271
+ currentIndex: index,
272
+ widths,
273
+ lefts
274
+ };
275
+ pendingRef.current = true;
276
+ e.target.setPointerCapture(e.pointerId);
277
+ }, [
278
+ onReorder
279
+ ]);
280
+ const handlePointerMove = React.useCallback((e)=>{
281
+ const d = dragRef.current;
282
+ if (!d) return;
283
+ const dx = e.clientX - d.startX;
284
+ if (pendingRef.current) {
285
+ if (Math.abs(dx) < DRAG_THRESHOLD) return;
286
+ pendingRef.current = false;
287
+ }
288
+ const draggedLeft = d.lefts[d.index] ?? 0;
289
+ const draggedWidth = d.widths[d.index] ?? 0;
290
+ const draggedRightEdge = draggedLeft + draggedWidth + dx;
291
+ const draggedLeftEdge = draggedLeft + dx;
292
+ let newIndex = d.index;
293
+ const TRIGGER_RATIO = 0.3;
294
+ for(let i = 0; i < d.lefts.length; i++){
295
+ if (i === d.index) continue;
296
+ const left = d.lefts[i] ?? 0;
297
+ const width = d.widths[i] ?? 0;
298
+ if (i > d.index) {
299
+ // Dragging right: trigger when right edge enters 30% of target
300
+ if (draggedRightEdge > left + width * TRIGGER_RATIO) newIndex = i;
301
+ } else {
302
+ // Dragging left: trigger when left edge enters 30% from right
303
+ if (draggedLeftEdge < left + width * (1 - TRIGGER_RATIO)) newIndex = Math.min(newIndex, i);
304
+ }
305
+ }
306
+ const next = {
307
+ ...d,
308
+ offsetX: dx,
309
+ currentIndex: newIndex
310
+ };
311
+ dragRef.current = next;
312
+ setDrag(next);
313
+ }, []);
314
+ const handlePointerUp = React.useCallback(()=>{
315
+ const d = dragRef.current;
316
+ if (d && !pendingRef.current && d.index !== d.currentIndex) {
317
+ onReorder?.(d.index, d.currentIndex);
318
+ }
319
+ dragRef.current = null;
320
+ pendingRef.current = false;
321
+ setDrag(null);
322
+ }, [
323
+ onReorder
324
+ ]);
325
+ const getTransform = React.useCallback((index)=>{
326
+ if (!drag || pendingRef.current) return {};
327
+ if (index === drag.index) {
328
+ return {
329
+ transform: `translateX(${drag.offsetX}px)`,
330
+ zIndex: 10,
331
+ position: "relative",
332
+ background: "var(--color-bg-primary)",
333
+ borderLeft: "1px solid var(--color-border-default)"
334
+ };
335
+ }
336
+ const from = drag.index;
337
+ const to = drag.currentIndex;
338
+ const draggedWidth = drag.widths[from] ?? 0;
339
+ if (from < to && index > from && index <= to) {
340
+ return {
341
+ transform: `translateX(${-draggedWidth}px)`,
342
+ transition: "transform 200ms ease"
343
+ };
344
+ }
345
+ if (from > to && index >= to && index < from) {
346
+ return {
347
+ transform: `translateX(${draggedWidth}px)`,
348
+ transition: "transform 200ms ease"
349
+ };
350
+ }
351
+ return {
352
+ transition: "transform 200ms ease"
353
+ };
354
+ }, [
355
+ drag
356
+ ]);
357
+ return {
358
+ drag,
359
+ itemsRef,
360
+ handlePointerDown,
361
+ handlePointerMove,
362
+ handlePointerUp,
363
+ getTransform
364
+ };
365
+ }
366
+ function TabsBrowserList({ className, children, onReorder, ...props }) {
252
367
  const tabsListRef = React.useRef(null);
253
368
  const [showScrollButtons, setShowScrollButtons] = React.useState(false);
254
369
  const [canScrollLeft, setCanScrollLeft] = React.useState(false);
255
370
  const [canScrollRight, setCanScrollRight] = React.useState(false);
371
+ const { drag, itemsRef, handlePointerDown, handlePointerMove, handlePointerUp, getTransform } = useTabReorder(onReorder);
372
+ const wrappedChildren = onReorder && React.Children.count(children) > 1 ? React.Children.map(children, (child, index)=>/*#__PURE__*/ _jsx("div", {
373
+ ref: (el)=>{
374
+ itemsRef.current[index] = el;
375
+ },
376
+ style: getTransform(index),
377
+ onPointerDown: (e)=>handlePointerDown(e, index),
378
+ onPointerMove: handlePointerMove,
379
+ onPointerUp: handlePointerUp,
380
+ className: cn(drag?.index === index && "cursor-grabbing"),
381
+ children: child
382
+ })) : children;
256
383
  return /*#__PURE__*/ _jsxs(React.Fragment, {
257
384
  children: [
258
385
  showScrollButtons && /*#__PURE__*/ _jsx(TabScrollLeftButton, {
@@ -294,7 +421,7 @@ function TabsBrowserList({ className, children, ...props }) {
294
421
  onWheel: (event)=>horizontalScroll(event),
295
422
  ...props,
296
423
  ref: tabsListRef,
297
- children: children
424
+ children: wrappedChildren
298
425
  }),
299
426
  showScrollButtons && /*#__PURE__*/ _jsx(TabScrollRightButton, {
300
427
  disabled: !canScrollRight,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/shadcn/components/ui/tabs.tsx"],"sourcesContent":["\"use client\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n\tChevronDownIcon,\n\tChevronLeft,\n\tChevronRight,\n\tPlus,\n\tX,\n} from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"#shadcn/lib/utils\";\nimport { Button } from \"./button\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"./command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\n// Base tabs styles\nconst baseTabsStyles = cn(\"flex\", \"flex-col\", \"h-full\");\n\n// Tabs add button container styles\nconst tabsAddButtonContainerStyles = cn(\n\t\"grow\",\n\t\"h-full\",\n\t\"bg-bg-secondary\",\n\t\"border-l\",\n\t\"border-b\",\n);\n\n// Tabs list styles\nconst tabsListStyles = cn(\n\t\"inline-flex\",\n\t\"w-fit\",\n\t\"items-center\",\n\t\"no-scrollbar\",\n);\n\n// Base tabs trigger styles\nconst baseTabsTriggerStyles = cn(\n\t// Layout & Sizing\n\t\"box-border\",\n\t\"flex-1\",\n\t\"h-10\",\n\t\"inline-flex\",\n\t\"items-center\",\n\t\"justify-center\",\n\t\"px-3\",\n\t\"whitespace-nowrap\",\n\t// Spacing & Padding\n\t\"pb-2\",\n\t\"pt-2.5\",\n\t// Typography\n\t\"typo-body\",\n\t// Colors & States\n\t\"cursor-pointer\",\n\t\"text-text-tertiary\",\n\t\"hover:bg-bg-secondary/60\",\n\t\"hover:text-text-tertiary_hover\",\n\t\"data-[state=active]:text-text-primary\",\n\t\"data-[state=active]:border-b-border-brand\",\n\t\"disabled:opacity-50\",\n\t\"disabled:pointer-events-none\",\n\t// Borders\n\t\"border-b-2\",\n\t\"border-b-transparent\",\n\t// Focus & Accessibility\n\t\"focus-visible:ring-2\",\n\t\"focus-visible:ring-utility-blue/70\",\n\t\"focus-visible:outline-1\",\n\t// Transitions\n\t\"transition-[color,box-shadow]\",\n\t// Icons\n\t\"[&_svg]:pointer-events-none\",\n\t\"[&_svg]:shrink-0\",\n\t\"[&_svg:not([class*='size-'])]:size-4\",\n\t// Groups\n\t\"group/tabs-trigger\",\n);\n\n// Tabs content styles\nconst tabsContentStyles = cn(\"grow\", \"outline-none\", \"overflow-auto\");\n\nconst tabsVariants = cva(\"\", {\n\tvariants: {\n\t\tvariant: {\n\t\t\tbrowser: cn(\n\t\t\t\t// Tabs\n\t\t\t\t\"flex-row\",\n\t\t\t\t\"items-center\",\n\t\t\t\t\"h-10\",\n\t\t\t\t// TabsList\n\t\t\t\t\"**:data-[slot=tabs-list]:overflow-x-auto\",\n\t\t\t\t\"**:data-[slot=tabs-list]:divide-x\",\n\t\t\t\t// TabsTrigger\n\t\t\t\t\"**:data-[slot=tabs-trigger]:max-w-80\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:w-60\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:min-w-40\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=inactive]:text-text-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=inactive]:border-b-1\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=inactive]:border-b-border-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=inactive]:pt-[9px]\", // TODO: Try to implement this without using pt-[9px].\n\t\t\t),\n\t\t\tsecondary: cn(\n\t\t\t\t// TabsList\n\t\t\t\t\"**:data-[slot=tabs-list]:h-10\",\n\t\t\t\t\"**:data-[slot=tabs-list]:bg-bg-tertiary\",\n\t\t\t\t// TabsTrigger\n\t\t\t\t\"**:data-[slot=tabs-trigger]:h-10\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:px-3\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:pb-2\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:pt-2\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:text-text-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:hover:text-text-primary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:border-b-2\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:border-b-border-dark\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:text-text-primary\",\n\t\t\t),\n\t\t\ttertiary: cn(\n\t\t\t\t// TabsList\n\t\t\t\t\"**:data-[slot=tabs-list]:bg-bg-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-list]:border-b\",\n\t\t\t\t\"**:data-[slot=tabs-list]:border-b-border-separator\",\n\t\t\t\t\"**:data-[slot=tabs-list]:gap-2\",\n\t\t\t\t\"**:data-[slot=tabs-list]:px-4\",\n\t\t\t\t\"**:data-[slot=tabs-list]:py-2\",\n\t\t\t\t// TabsTrigger\n\t\t\t\t\"**:data-[slot=tabs-trigger]:h-7\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:px-3\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:rounded\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:border-b-0\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:pb-2\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:pt-2\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:border\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:border-transparent\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:text-text-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:hover:text-text-primary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:bg-bg-primary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:border-border-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:text-text-primary\",\n\t\t\t),\n\t\t},\n\t},\n});\n\n// Context for variant\nconst TabsVariantContext = React.createContext<\n\tVariantProps<typeof tabsVariants>[\"variant\"] | undefined\n>(undefined);\n\ntype TabsProps<T extends string> = Omit<\n\tReact.ComponentProps<typeof TabsPrimitive.Root> &\n\t\tVariantProps<typeof tabsVariants>,\n\t\"value\" | \"defaultValue\" | \"onValueChange\"\n> & {\n\tvalue?: T;\n\tdefaultValue?: T;\n\tonValueChange?: (value: T) => void;\n};\n\nfunction Tabs<T extends string = string>({\n\tclassName,\n\tvariant,\n\t...props\n}: TabsProps<T>) {\n\tconst tabProps = {\n\t\t\"data-slot\": \"tabs\",\n\t\tclassName: cn(baseTabsStyles, tabsVariants({ variant }), className),\n\t\t...props,\n\t\tonValueChange: (value: string) => props.onValueChange?.(value as T),\n\t};\n\treturn (\n\t\t<TabsVariantContext.Provider value={variant}>\n\t\t\t<TabsPrimitive.Root {...tabProps} />\n\t\t</TabsVariantContext.Provider>\n\t);\n}\n\nexport function TabsAddButton(props: React.ComponentProps<typeof Button>) {\n\treturn (\n\t\t<div className={tabsAddButtonContainerStyles}>\n\t\t\t<Button\n\t\t\t\tdata-slot=\"tabs-add-button\"\n\t\t\t\tvariant=\"link\"\n\t\t\t\tclassName=\"h-full\"\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<Plus />\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n\nfunction horizontalScroll(event: React.WheelEvent) {\n\tconst mode = event.deltaMode;\n\tlet deltaPx = 0;\n\n\tif (mode === 0) {\n\t\tdeltaPx = event.deltaY;\n\t} else if (mode === 1) {\n\t\tdeltaPx = event.deltaY * 160;\n\t} else if (mode === 2) {\n\t\tdeltaPx = event.currentTarget.clientWidth;\n\t}\n\n\tconst newScrollLeft = event.currentTarget.scrollLeft + deltaPx;\n\n\tevent.currentTarget.scrollTo({\n\t\tleft: newScrollLeft,\n\t\tbehavior: \"smooth\",\n\t});\n}\n\nfunction performHorizontalScroll(\n\ttabsListRef: React.RefObject<HTMLDivElement | null>,\n\tdirection: \"left\" | \"right\",\n) {\n\tif (!tabsListRef.current) return;\n\tconst scrollAmount = 160;\n\tlet newScrollLeft = tabsListRef.current.scrollLeft;\n\n\tif (direction === \"left\") {\n\t\tnewScrollLeft -= scrollAmount;\n\t\tnewScrollLeft -= newScrollLeft % scrollAmount;\n\t} else {\n\t\tnewScrollLeft += scrollAmount;\n\n\t\tconst rightCoord = newScrollLeft + tabsListRef.current.clientWidth;\n\n\t\tif (rightCoord % scrollAmount !== 0) {\n\t\t\tnewScrollLeft += scrollAmount - (rightCoord % scrollAmount);\n\t\t}\n\t}\n\n\ttabsListRef.current.scrollTo({\n\t\tleft: newScrollLeft,\n\t\tbehavior: \"smooth\",\n\t});\n}\n\ntype EdgeScrollPosition = \"touch\" | \"depart\";\ntype FlowType = \"overflow\" | \"underflow\";\n\ntype TabsListProps = {\n\tonLeftEdge?: (position: EdgeScrollPosition) => void;\n\tonRightEdge?: (position: EdgeScrollPosition) => void;\n\tonFlow?: (flow: FlowType) => void;\n\tonResize?: (entries: ResizeObserverEntry[]) => void;\n\tonTabChange?: (mutationRecords: MutationRecord[]) => void;\n} & React.ComponentProps<typeof TabsPrimitive.List>;\n\nfunction TabsList({\n\tclassName,\n\tonLeftEdge,\n\tonRightEdge,\n\tonResize,\n\tonFlow,\n\tonTabChange,\n\t...props\n}: TabsListProps) {\n\tconst tabListRef = React.useRef<HTMLDivElement | null>(null);\n\n\tconst onLeftEdgeRef = React.useRef(onLeftEdge);\n\tReact.useEffect(() => {\n\t\tonLeftEdgeRef.current = onLeftEdge;\n\t}, [onLeftEdge]);\n\n\tconst onResizeRef = React.useRef(onResize);\n\tReact.useEffect(() => {\n\t\tonResizeRef.current = onResize;\n\t}, [onResize]);\n\n\tconst onRightEdgeRef = React.useRef(onRightEdge);\n\tReact.useEffect(() => {\n\t\tonRightEdgeRef.current = onRightEdge;\n\t}, [onRightEdge]);\n\n\tconst onFlowRef = React.useRef(onFlow);\n\tReact.useEffect(() => {\n\t\tonFlowRef.current = onFlow;\n\t}, [onFlow]);\n\n\tconst onTabChangeRef = React.useRef(onTabChange);\n\tReact.useEffect(() => {\n\t\tonTabChangeRef.current = onTabChange;\n\t}, [onTabChange]);\n\n\tReact.useEffect(() => {\n\t\tif (tabListRef.current === null) {\n\t\t\treturn;\n\t\t}\n\t\tconst tabList = tabListRef.current;\n\n\t\tlet last: {\n\t\t\tscrollLeft: number;\n\t\t\tscrollWidth: number;\n\t\t\tclientWidth: number;\n\t\t} | null = null;\n\n\t\tconst handleScroll = () => {\n\t\t\tif (onLeftEdgeRef.current) {\n\t\t\t\tconst newState: EdgeScrollPosition =\n\t\t\t\t\ttabList.scrollLeft < 1 ? \"touch\" : \"depart\";\n\n\t\t\t\tif (last === null) {\n\t\t\t\t\tonLeftEdgeRef.current(newState);\n\t\t\t\t} else {\n\t\t\t\t\tconst lastState: EdgeScrollPosition =\n\t\t\t\t\t\tlast.scrollLeft < 1 ? \"touch\" : \"depart\";\n\n\t\t\t\t\tif (lastState !== newState) {\n\t\t\t\t\t\tonLeftEdgeRef.current(newState);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (onRightEdgeRef.current) {\n\t\t\t\tconst newState: EdgeScrollPosition =\n\t\t\t\t\ttabList.scrollWidth - tabList.clientWidth - tabList.scrollLeft < 1\n\t\t\t\t\t\t? \"touch\"\n\t\t\t\t\t\t: \"depart\";\n\n\t\t\t\tif (last === null) {\n\t\t\t\t\tonRightEdgeRef.current(newState);\n\t\t\t\t} else {\n\t\t\t\t\tconst lastState: EdgeScrollPosition =\n\t\t\t\t\t\tlast.scrollWidth - last.clientWidth - last.scrollLeft < 1\n\t\t\t\t\t\t\t? \"touch\"\n\t\t\t\t\t\t\t: \"depart\";\n\n\t\t\t\t\tif (lastState !== newState) {\n\t\t\t\t\t\tonRightEdgeRef.current(newState);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (onFlowRef.current) {\n\t\t\t\tconst newState: FlowType =\n\t\t\t\t\ttabList.scrollWidth > tabList.clientWidth ? \"overflow\" : \"underflow\";\n\n\t\t\t\tif (last === null) {\n\t\t\t\t\tonFlowRef.current(newState);\n\t\t\t\t} else {\n\t\t\t\t\tconst lastState =\n\t\t\t\t\t\tlast.scrollWidth > last.clientWidth ? \"overflow\" : \"underflow\";\n\t\t\t\t\tif (lastState !== newState) {\n\t\t\t\t\t\tonFlowRef.current(newState);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlast = {\n\t\t\t\tscrollLeft: tabList.scrollLeft,\n\t\t\t\tscrollWidth: tabList.scrollWidth,\n\t\t\t\tclientWidth: tabList.clientWidth,\n\t\t\t};\n\t\t};\n\n\t\tconst scrollCallback = (_ev: unknown) => handleScroll();\n\t\tconst resizeObserver = new ResizeObserver((entries) => {\n\t\t\thandleScroll();\n\t\t\tif (onResizeRef.current) {\n\t\t\t\tonResizeRef.current(entries);\n\t\t\t}\n\t\t});\n\t\tconst mutationObserver = new MutationObserver((mutationRecords) => {\n\t\t\thandleScroll();\n\t\t\tif (onTabChangeRef.current) {\n\t\t\t\tonTabChangeRef.current(mutationRecords);\n\t\t\t}\n\t\t});\n\n\t\ttabList.addEventListener(\"scroll\", scrollCallback, { passive: true });\n\t\tresizeObserver.observe(tabList);\n\t\tmutationObserver.observe(tabList, { childList: true });\n\n\t\treturn () => {\n\t\t\ttabList.removeEventListener(\"scroll\", scrollCallback);\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<TabsPrimitive.List\n\t\t\tdata-slot=\"tabs-list\"\n\t\t\tclassName={cn(\"inline-flex w-fit items-center\", className)}\n\t\t\t{...props}\n\t\t\tref={(element) => {\n\t\t\t\ttabListRef.current = element;\n\t\t\t\tif (props.ref !== undefined && props.ref !== null) {\n\t\t\t\t\tif (typeof props.ref === \"function\") {\n\t\t\t\t\t\tprops.ref(element);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprops.ref.current = element;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}}\n\t\t/>\n\t);\n}\n\ntype TabScrollButtonProps = {\n\tdisabled: boolean;\n\tonClick: () => void;\n};\n\nfunction TabScrollLeftButton({\n\tdisabled,\n\tonClick,\n}: TabScrollButtonProps): React.ReactElement {\n\treturn (\n\t\t<Button\n\t\t\tvariant=\"link\"\n\t\t\tsize=\"small\"\n\t\t\tdisabled={disabled}\n\t\t\tclassName=\"h-full border-r border-b bg-bg-secondary rounded-none\"\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<ChevronLeft />\n\t\t</Button>\n\t);\n}\n\nfunction TabScrollRightButton({\n\tdisabled,\n\tonClick,\n}: TabScrollButtonProps): React.ReactElement {\n\treturn (\n\t\t<Button\n\t\t\tvariant=\"link\"\n\t\t\tsize=\"small\"\n\t\t\tdisabled={disabled}\n\t\t\tclassName=\"h-full border-l border-b bg-bg-secondary rounded-none\"\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<ChevronRight />\n\t\t</Button>\n\t);\n}\n\nfunction TabsBrowserList({\n\tclassName,\n\tchildren,\n\t...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n\tconst tabsListRef = React.useRef<HTMLDivElement | null>(null);\n\n\tconst [showScrollButtons, setShowScrollButtons] = React.useState(false);\n\tconst [canScrollLeft, setCanScrollLeft] = React.useState(false);\n\tconst [canScrollRight, setCanScrollRight] = React.useState(false);\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t{showScrollButtons && (\n\t\t\t\t<TabScrollLeftButton\n\t\t\t\t\tdisabled={!canScrollLeft}\n\t\t\t\t\tonClick={() => performHorizontalScroll(tabsListRef, \"left\")}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<TabsList\n\t\t\t\tonLeftEdge={(edgeState) => {\n\t\t\t\t\tif (edgeState === \"touch\") {\n\t\t\t\t\t\tsetCanScrollLeft(false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetCanScrollLeft(true);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tonRightEdge={(edgeState) => {\n\t\t\t\t\tif (edgeState === \"touch\") {\n\t\t\t\t\t\tsetCanScrollRight(false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetCanScrollRight(true);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tonFlow={(flow) => {\n\t\t\t\t\tif (flow === \"overflow\") {\n\t\t\t\t\t\tsetShowScrollButtons(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetShowScrollButtons(false);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tonResize={() => {\n\t\t\t\t\ttabsListRef.current\n\t\t\t\t\t\t?.querySelector<HTMLButtonElement>('button[data-state=\"active\"]')\n\t\t\t\t\t\t?.scrollIntoView();\n\t\t\t\t}}\n\t\t\t\tonTabChange={(entries) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tentries.filter((entry) => entry.addedNodes.length !== 0).length !==\n\t\t\t\t\t\t0\n\t\t\t\t\t) {\n\t\t\t\t\t\ttabsListRef.current\n\t\t\t\t\t\t\t?.querySelector<HTMLButtonElement>('button[data-state=\"active\"]')\n\t\t\t\t\t\t\t?.scrollIntoView();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tdata-slot=\"tabs-list\"\n\t\t\t\tclassName={cn(tabsListStyles, className)}\n\t\t\t\tonWheel={(event) => horizontalScroll(event)}\n\t\t\t\t{...props}\n\t\t\t\tref={tabsListRef}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</TabsList>\n\n\t\t\t{showScrollButtons && (\n\t\t\t\t<TabScrollRightButton\n\t\t\t\t\tdisabled={!canScrollRight}\n\t\t\t\t\tonClick={() => performHorizontalScroll(tabsListRef, \"right\")}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</React.Fragment>\n\t);\n}\n\nexport function TabsListDropdown({\n\ttabs,\n\thandleTabSelect,\n\thandleCloseTab,\n}: {\n\ttabs: { id: string; content: React.ReactNode }[];\n\thandleTabSelect?: (tabId: string) => void;\n\thandleCloseTab?: (tabId: string) => void;\n}) {\n\tconst [isMenuOpen, setIsMenuOpen] = React.useState(false);\n\treturn (\n\t\t<Popover open={isMenuOpen} onOpenChange={setIsMenuOpen}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button variant=\"link\" className=\"bg-bg-secondary h-full border-b pr-6\">\n\t\t\t\t\t<ChevronDownIcon className=\"size-4\" />\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent className=\"w-80 p-0 mr-3\" align=\"end\">\n\t\t\t\t<Command>\n\t\t\t\t\t<CommandInput placeholder=\"Search tabs...\" />\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>Not tabs found.</CommandEmpty>\n\t\t\t\t\t\t{tabs.map((tab) => (\n\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\tkey={tab.id}\n\t\t\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\t\t\thandleTabSelect?.(tab.id);\n\t\t\t\t\t\t\t\t\tsetIsMenuOpen(false);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"group flex items-center justify-between\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{tab.content}\n\t\t\t\t\t\t\t\t{tabs.length > 1 && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"opacity-0 group-hover:opacity-100 transition-opacity p-1 ml-2\"\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\thandleCloseTab?.(tab.id);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<X className=\"size-3\" />\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n\nfunction TabsTrigger({\n\tclassName,\n\tonClose,\n\t...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger> & {\n\tonClose?: (value: string) => void;\n}) {\n\tconst variant = React.useContext(TabsVariantContext);\n\tconst isSecondary = variant === \"secondary\";\n\tconst isTertiary = variant === \"tertiary\";\n\n\treturn (\n\t\t<TabsPrimitive.Trigger\n\t\t\tdata-slot=\"tabs-trigger\"\n\t\t\tclassName={cn(\n\t\t\t\tbaseTabsTriggerStyles,\n\t\t\t\tonClose ? \"justify-between\" : \"justify-start\",\n\t\t\t\tisSecondary && [\"body14\", \"data-[state=active]:body14bold\"],\n\t\t\t\tisTertiary && [\"typo-body\", \"data-[state=active]:typo-label\"],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{props.children}\n\n\t\t\t{onClose && (\n\t\t\t\t<Button\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tonClose(props.value);\n\t\t\t\t\t}}\n\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tclassName=\"p-0 ml-2 opacity-0 group-hover/tabs-trigger:opacity-100 transition-opacity\"\n\t\t\t\t\tasChild\n\t\t\t\t>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<X />\n\t\t\t\t\t</span>\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</TabsPrimitive.Trigger>\n\t);\n}\n\nfunction TabsContent({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n\treturn (\n\t\t<TabsPrimitive.Content\n\t\t\tdata-slot=\"tabs-content\"\n\t\t\tclassName={cn(tabsContentStyles, className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, TabsBrowserList };\n"],"names":["TabsPrimitive","cva","ChevronDownIcon","ChevronLeft","ChevronRight","Plus","X","React","cn","Button","Command","CommandEmpty","CommandInput","CommandItem","CommandList","Popover","PopoverContent","PopoverTrigger","baseTabsStyles","tabsAddButtonContainerStyles","tabsListStyles","baseTabsTriggerStyles","tabsContentStyles","tabsVariants","variants","variant","browser","secondary","tertiary","TabsVariantContext","createContext","undefined","Tabs","className","props","tabProps","onValueChange","value","Provider","Root","TabsAddButton","div","data-slot","horizontalScroll","event","mode","deltaMode","deltaPx","deltaY","currentTarget","clientWidth","newScrollLeft","scrollLeft","scrollTo","left","behavior","performHorizontalScroll","tabsListRef","direction","current","scrollAmount","rightCoord","TabsList","onLeftEdge","onRightEdge","onResize","onFlow","onTabChange","tabListRef","useRef","onLeftEdgeRef","useEffect","onResizeRef","onRightEdgeRef","onFlowRef","onTabChangeRef","tabList","last","handleScroll","newState","lastState","scrollWidth","scrollCallback","_ev","resizeObserver","ResizeObserver","entries","mutationObserver","MutationObserver","mutationRecords","addEventListener","passive","observe","childList","removeEventListener","disconnect","List","ref","element","TabScrollLeftButton","disabled","onClick","size","TabScrollRightButton","TabsBrowserList","children","showScrollButtons","setShowScrollButtons","useState","canScrollLeft","setCanScrollLeft","canScrollRight","setCanScrollRight","Fragment","edgeState","flow","querySelector","scrollIntoView","filter","entry","addedNodes","length","onWheel","TabsListDropdown","tabs","handleTabSelect","handleCloseTab","isMenuOpen","setIsMenuOpen","open","onOpenChange","asChild","align","placeholder","map","tab","onSelect","id","content","e","stopPropagation","TabsTrigger","onClose","useContext","isSecondary","isTertiary","Trigger","span","TabsContent","Content"],"mappings":"AAAA;;AACA,YAAYA,mBAAmB,uBAAuB;AACtD,SAASC,GAAG,QAA2B,2BAA2B;AAClE,SACCC,eAAe,EACfC,WAAW,EACXC,YAAY,EACZC,IAAI,EACJC,CAAC,QACK,eAAe;AACtB,YAAYC,WAAW,QAAQ;AAC/B,SAASC,EAAE,QAAQ,qBAAoB;AACvC,SAASC,MAAM,QAAQ,cAAW;AAClC,SACCC,OAAO,EACPC,YAAY,EACZC,YAAY,EACZC,WAAW,EACXC,WAAW,QACL,eAAY;AACnB,SAASC,OAAO,EAAEC,cAAc,EAAEC,cAAc,QAAQ,eAAY;AAEpE,mBAAmB;AACnB,MAAMC,iBAAiBV,GAAG,QAAQ,YAAY;AAE9C,mCAAmC;AACnC,MAAMW,+BAA+BX,GACpC,QACA,UACA,mBACA,YACA;AAGD,mBAAmB;AACnB,MAAMY,iBAAiBZ,GACtB,eACA,SACA,gBACA;AAGD,2BAA2B;AAC3B,MAAMa,wBAAwBb,GAC7B,kBAAkB;AAClB,cACA,UACA,QACA,eACA,gBACA,kBACA,QACA,qBACA,oBAAoB;AACpB,QACA,UACA,aAAa;AACb,aACA,kBAAkB;AAClB,kBACA,sBACA,4BACA,kCACA,yCACA,6CACA,uBACA,gCACA,UAAU;AACV,cACA,wBACA,wBAAwB;AACxB,wBACA,sCACA,2BACA,cAAc;AACd,iCACA,QAAQ;AACR,+BACA,oBACA,wCACA,SAAS;AACT;AAGD,sBAAsB;AACtB,MAAMc,oBAAoBd,GAAG,QAAQ,gBAAgB;AAErD,MAAMe,eAAetB,IAAI,IAAI;IAC5BuB,UAAU;QACTC,SAAS;YACRC,SAASlB,GACR,OAAO;YACP,YACA,gBACA,QACA,WAAW;YACX,4CACA,qCACA,cAAc;YACd,wCACA,oCACA,wCACA,yEACA,gEACA,+EACA;YAEDmB,WAAWnB,GACV,WAAW;YACX,iCACA,2CACA,cAAc;YACd,oCACA,oCACA,oCACA,oCACA,mDACA,uDACA,8DACA,wEACA;YAEDoB,UAAUpB,GACT,WAAW;YACX,4CACA,qCACA,sDACA,kCACA,iCACA,iCACA,cAAc;YACd,mCACA,oCACA,uCACA,0CA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"}
1
+ {"version":3,"sources":["../../../../../src/shadcn/components/ui/tabs.tsx"],"sourcesContent":["\"use client\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n\tChevronDownIcon,\n\tChevronLeft,\n\tChevronRight,\n\tPlus,\n\tX,\n} from \"lucide-react\";\nimport * as React from \"react\";\nimport { cn } from \"#shadcn/lib/utils\";\nimport { Button } from \"./button\";\nimport {\n\tCommand,\n\tCommandEmpty,\n\tCommandInput,\n\tCommandItem,\n\tCommandList,\n} from \"./command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\n\n// Base tabs styles\nconst baseTabsStyles = cn(\"flex\", \"flex-col\", \"h-full\");\n\n// Tabs add button container styles\nconst tabsAddButtonContainerStyles = cn(\n\t\"grow\",\n\t\"h-full\",\n\t\"bg-bg-secondary\",\n\t\"border-l\",\n\t\"border-b\",\n);\n\n// Tabs list styles\nconst tabsListStyles = cn(\n\t\"inline-flex\",\n\t\"w-fit\",\n\t\"items-center\",\n\t\"no-scrollbar\",\n);\n\n// Base tabs trigger styles\nconst baseTabsTriggerStyles = cn(\n\t// Layout & Sizing\n\t\"box-border\",\n\t\"flex-1\",\n\t\"h-10\",\n\t\"inline-flex\",\n\t\"items-center\",\n\t\"justify-center\",\n\t\"px-3\",\n\t\"whitespace-nowrap\",\n\t// Spacing & Padding\n\t\"pb-2\",\n\t\"pt-2.5\",\n\t// Typography\n\t\"typo-body\",\n\t// Colors & States\n\t\"cursor-pointer\",\n\t\"text-text-tertiary\",\n\t\"hover:bg-bg-secondary/60\",\n\t\"hover:text-text-tertiary_hover\",\n\t\"data-[state=active]:text-text-primary\",\n\t\"data-[state=active]:border-b-border-brand\",\n\t\"disabled:opacity-50\",\n\t\"disabled:pointer-events-none\",\n\t// Borders\n\t\"border-b-2\",\n\t\"border-b-transparent\",\n\t// Focus & Accessibility\n\t\"focus-visible:ring-2\",\n\t\"focus-visible:ring-utility-blue/70\",\n\t\"focus-visible:outline-1\",\n\t// Transitions\n\t\"transition-[color,box-shadow]\",\n\t// Icons\n\t\"[&_svg]:pointer-events-none\",\n\t\"[&_svg]:shrink-0\",\n\t\"[&_svg:not([class*='size-'])]:size-4\",\n\t// Groups\n\t\"group/tabs-trigger\",\n);\n\n// Tabs content styles\nconst tabsContentStyles = cn(\"grow\", \"outline-none\", \"overflow-auto\");\n\nconst tabsVariants = cva(\"\", {\n\tvariants: {\n\t\tvariant: {\n\t\t\tbrowser: cn(\n\t\t\t\t// Tabs\n\t\t\t\t\"flex-row\",\n\t\t\t\t\"items-center\",\n\t\t\t\t\"h-10\",\n\t\t\t\t// TabsList\n\t\t\t\t\"**:data-[slot=tabs-list]:overflow-x-auto\",\n\t\t\t\t\"**:data-[slot=tabs-list]:divide-x\",\n\t\t\t\t// TabsTrigger\n\t\t\t\t\"**:data-[slot=tabs-trigger]:max-w-80\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:w-60\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:min-w-40\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=inactive]:text-text-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=inactive]:border-b-1\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=inactive]:border-b-border-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=inactive]:pt-[9px]\", // TODO: Try to implement this without using pt-[9px].\n\t\t\t),\n\t\t\tsecondary: cn(\n\t\t\t\t// TabsList\n\t\t\t\t\"**:data-[slot=tabs-list]:h-10\",\n\t\t\t\t\"**:data-[slot=tabs-list]:bg-bg-tertiary\",\n\t\t\t\t// TabsTrigger\n\t\t\t\t\"**:data-[slot=tabs-trigger]:h-10\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:px-3\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:pb-2\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:pt-2\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:text-text-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:hover:text-text-primary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:border-b-2\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:border-b-border-dark\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:text-text-primary\",\n\t\t\t),\n\t\t\ttertiary: cn(\n\t\t\t\t// TabsList\n\t\t\t\t\"**:data-[slot=tabs-list]:bg-bg-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-list]:border-b\",\n\t\t\t\t\"**:data-[slot=tabs-list]:border-b-border-separator\",\n\t\t\t\t\"**:data-[slot=tabs-list]:gap-2\",\n\t\t\t\t\"**:data-[slot=tabs-list]:px-4\",\n\t\t\t\t\"**:data-[slot=tabs-list]:py-2\",\n\t\t\t\t// TabsTrigger\n\t\t\t\t\"**:data-[slot=tabs-trigger]:h-7\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:px-3\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:rounded\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:border-b-0\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:pb-2\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:pt-2\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:border\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:border-transparent\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:text-text-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:hover:text-text-primary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:bg-bg-primary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:border-border-secondary\",\n\t\t\t\t\"**:data-[slot=tabs-trigger]:data-[state=active]:text-text-primary\",\n\t\t\t),\n\t\t},\n\t},\n});\n\n// Context for variant\nconst TabsVariantContext = React.createContext<\n\tVariantProps<typeof tabsVariants>[\"variant\"] | undefined\n>(undefined);\n\ntype TabsProps<T extends string> = Omit<\n\tReact.ComponentProps<typeof TabsPrimitive.Root> &\n\t\tVariantProps<typeof tabsVariants>,\n\t\"value\" | \"defaultValue\" | \"onValueChange\"\n> & {\n\tvalue?: T;\n\tdefaultValue?: T;\n\tonValueChange?: (value: T) => void;\n};\n\nfunction Tabs<T extends string = string>({\n\tclassName,\n\tvariant,\n\t...props\n}: TabsProps<T>) {\n\tconst tabProps = {\n\t\t\"data-slot\": \"tabs\",\n\t\tclassName: cn(baseTabsStyles, tabsVariants({ variant }), className),\n\t\t...props,\n\t\tonValueChange: (value: string) => props.onValueChange?.(value as T),\n\t};\n\treturn (\n\t\t<TabsVariantContext.Provider value={variant}>\n\t\t\t<TabsPrimitive.Root {...tabProps} />\n\t\t</TabsVariantContext.Provider>\n\t);\n}\n\nexport function TabsAddButton(props: React.ComponentProps<typeof Button>) {\n\treturn (\n\t\t<div className={tabsAddButtonContainerStyles}>\n\t\t\t<Button\n\t\t\t\tdata-slot=\"tabs-add-button\"\n\t\t\t\tvariant=\"link\"\n\t\t\t\tclassName=\"h-full\"\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<Plus />\n\t\t\t</Button>\n\t\t</div>\n\t);\n}\n\nfunction horizontalScroll(event: React.WheelEvent) {\n\tconst mode = event.deltaMode;\n\tlet deltaPx = 0;\n\n\tif (mode === 0) {\n\t\tdeltaPx = event.deltaY;\n\t} else if (mode === 1) {\n\t\tdeltaPx = event.deltaY * 160;\n\t} else if (mode === 2) {\n\t\tdeltaPx = event.currentTarget.clientWidth;\n\t}\n\n\tconst newScrollLeft = event.currentTarget.scrollLeft + deltaPx;\n\n\tevent.currentTarget.scrollTo({\n\t\tleft: newScrollLeft,\n\t\tbehavior: \"smooth\",\n\t});\n}\n\nfunction performHorizontalScroll(\n\ttabsListRef: React.RefObject<HTMLDivElement | null>,\n\tdirection: \"left\" | \"right\",\n) {\n\tif (!tabsListRef.current) return;\n\tconst scrollAmount = 160;\n\tlet newScrollLeft = tabsListRef.current.scrollLeft;\n\n\tif (direction === \"left\") {\n\t\tnewScrollLeft -= scrollAmount;\n\t\tnewScrollLeft -= newScrollLeft % scrollAmount;\n\t} else {\n\t\tnewScrollLeft += scrollAmount;\n\n\t\tconst rightCoord = newScrollLeft + tabsListRef.current.clientWidth;\n\n\t\tif (rightCoord % scrollAmount !== 0) {\n\t\t\tnewScrollLeft += scrollAmount - (rightCoord % scrollAmount);\n\t\t}\n\t}\n\n\ttabsListRef.current.scrollTo({\n\t\tleft: newScrollLeft,\n\t\tbehavior: \"smooth\",\n\t});\n}\n\ntype EdgeScrollPosition = \"touch\" | \"depart\";\ntype FlowType = \"overflow\" | \"underflow\";\n\ntype TabsListProps = {\n\tonLeftEdge?: (position: EdgeScrollPosition) => void;\n\tonRightEdge?: (position: EdgeScrollPosition) => void;\n\tonFlow?: (flow: FlowType) => void;\n\tonResize?: (entries: ResizeObserverEntry[]) => void;\n\tonTabChange?: (mutationRecords: MutationRecord[]) => void;\n} & React.ComponentProps<typeof TabsPrimitive.List>;\n\nfunction TabsList({\n\tclassName,\n\tonLeftEdge,\n\tonRightEdge,\n\tonResize,\n\tonFlow,\n\tonTabChange,\n\t...props\n}: TabsListProps) {\n\tconst tabListRef = React.useRef<HTMLDivElement | null>(null);\n\n\tconst onLeftEdgeRef = React.useRef(onLeftEdge);\n\tReact.useEffect(() => {\n\t\tonLeftEdgeRef.current = onLeftEdge;\n\t}, [onLeftEdge]);\n\n\tconst onResizeRef = React.useRef(onResize);\n\tReact.useEffect(() => {\n\t\tonResizeRef.current = onResize;\n\t}, [onResize]);\n\n\tconst onRightEdgeRef = React.useRef(onRightEdge);\n\tReact.useEffect(() => {\n\t\tonRightEdgeRef.current = onRightEdge;\n\t}, [onRightEdge]);\n\n\tconst onFlowRef = React.useRef(onFlow);\n\tReact.useEffect(() => {\n\t\tonFlowRef.current = onFlow;\n\t}, [onFlow]);\n\n\tconst onTabChangeRef = React.useRef(onTabChange);\n\tReact.useEffect(() => {\n\t\tonTabChangeRef.current = onTabChange;\n\t}, [onTabChange]);\n\n\tReact.useEffect(() => {\n\t\tif (tabListRef.current === null) {\n\t\t\treturn;\n\t\t}\n\t\tconst tabList = tabListRef.current;\n\n\t\tlet last: {\n\t\t\tscrollLeft: number;\n\t\t\tscrollWidth: number;\n\t\t\tclientWidth: number;\n\t\t} | null = null;\n\n\t\tconst handleScroll = () => {\n\t\t\tif (onLeftEdgeRef.current) {\n\t\t\t\tconst newState: EdgeScrollPosition =\n\t\t\t\t\ttabList.scrollLeft < 1 ? \"touch\" : \"depart\";\n\n\t\t\t\tif (last === null) {\n\t\t\t\t\tonLeftEdgeRef.current(newState);\n\t\t\t\t} else {\n\t\t\t\t\tconst lastState: EdgeScrollPosition =\n\t\t\t\t\t\tlast.scrollLeft < 1 ? \"touch\" : \"depart\";\n\n\t\t\t\t\tif (lastState !== newState) {\n\t\t\t\t\t\tonLeftEdgeRef.current(newState);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (onRightEdgeRef.current) {\n\t\t\t\tconst newState: EdgeScrollPosition =\n\t\t\t\t\ttabList.scrollWidth - tabList.clientWidth - tabList.scrollLeft < 1\n\t\t\t\t\t\t? \"touch\"\n\t\t\t\t\t\t: \"depart\";\n\n\t\t\t\tif (last === null) {\n\t\t\t\t\tonRightEdgeRef.current(newState);\n\t\t\t\t} else {\n\t\t\t\t\tconst lastState: EdgeScrollPosition =\n\t\t\t\t\t\tlast.scrollWidth - last.clientWidth - last.scrollLeft < 1\n\t\t\t\t\t\t\t? \"touch\"\n\t\t\t\t\t\t\t: \"depart\";\n\n\t\t\t\t\tif (lastState !== newState) {\n\t\t\t\t\t\tonRightEdgeRef.current(newState);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (onFlowRef.current) {\n\t\t\t\tconst newState: FlowType =\n\t\t\t\t\ttabList.scrollWidth > tabList.clientWidth ? \"overflow\" : \"underflow\";\n\n\t\t\t\tif (last === null) {\n\t\t\t\t\tonFlowRef.current(newState);\n\t\t\t\t} else {\n\t\t\t\t\tconst lastState =\n\t\t\t\t\t\tlast.scrollWidth > last.clientWidth ? \"overflow\" : \"underflow\";\n\t\t\t\t\tif (lastState !== newState) {\n\t\t\t\t\t\tonFlowRef.current(newState);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlast = {\n\t\t\t\tscrollLeft: tabList.scrollLeft,\n\t\t\t\tscrollWidth: tabList.scrollWidth,\n\t\t\t\tclientWidth: tabList.clientWidth,\n\t\t\t};\n\t\t};\n\n\t\tconst scrollCallback = (_ev: unknown) => handleScroll();\n\t\tconst resizeObserver = new ResizeObserver((entries) => {\n\t\t\thandleScroll();\n\t\t\tif (onResizeRef.current) {\n\t\t\t\tonResizeRef.current(entries);\n\t\t\t}\n\t\t});\n\t\tconst mutationObserver = new MutationObserver((mutationRecords) => {\n\t\t\thandleScroll();\n\t\t\tif (onTabChangeRef.current) {\n\t\t\t\tonTabChangeRef.current(mutationRecords);\n\t\t\t}\n\t\t});\n\n\t\ttabList.addEventListener(\"scroll\", scrollCallback, { passive: true });\n\t\tresizeObserver.observe(tabList);\n\t\tmutationObserver.observe(tabList, { childList: true });\n\n\t\treturn () => {\n\t\t\ttabList.removeEventListener(\"scroll\", scrollCallback);\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t};\n\t}, []);\n\n\treturn (\n\t\t<TabsPrimitive.List\n\t\t\tdata-slot=\"tabs-list\"\n\t\t\tclassName={cn(\"inline-flex w-fit items-center\", className)}\n\t\t\t{...props}\n\t\t\tref={(element) => {\n\t\t\t\ttabListRef.current = element;\n\t\t\t\tif (props.ref !== undefined && props.ref !== null) {\n\t\t\t\t\tif (typeof props.ref === \"function\") {\n\t\t\t\t\t\tprops.ref(element);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprops.ref.current = element;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}}\n\t\t/>\n\t);\n}\n\ntype TabScrollButtonProps = {\n\tdisabled: boolean;\n\tonClick: () => void;\n};\n\nfunction TabScrollLeftButton({\n\tdisabled,\n\tonClick,\n}: TabScrollButtonProps): React.ReactElement {\n\treturn (\n\t\t<Button\n\t\t\tvariant=\"link\"\n\t\t\tsize=\"small\"\n\t\t\tdisabled={disabled}\n\t\t\tclassName=\"h-full border-r border-b bg-bg-secondary rounded-none\"\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<ChevronLeft />\n\t\t</Button>\n\t);\n}\n\nfunction TabScrollRightButton({\n\tdisabled,\n\tonClick,\n}: TabScrollButtonProps): React.ReactElement {\n\treturn (\n\t\t<Button\n\t\t\tvariant=\"link\"\n\t\t\tsize=\"small\"\n\t\t\tdisabled={disabled}\n\t\t\tclassName=\"h-full border-l border-b bg-bg-secondary rounded-none\"\n\t\t\tonClick={onClick}\n\t\t>\n\t\t\t<ChevronRight />\n\t\t</Button>\n\t);\n}\n\ntype DragState = {\n\tindex: number;\n\tstartX: number;\n\toffsetX: number;\n\tcurrentIndex: number;\n\twidths: number[];\n\tlefts: number[];\n};\n\nconst DRAG_THRESHOLD = 5;\n\nfunction useTabReorder(\n\tonReorder: ((fromIndex: number, toIndex: number) => void) | undefined,\n) {\n\tconst [drag, setDrag] = React.useState<DragState | null>(null);\n\tconst dragRef = React.useRef<DragState | null>(null);\n\tconst pendingRef = React.useRef(false);\n\tconst itemsRef = React.useRef<(HTMLDivElement | null)[]>([]);\n\n\tconst handlePointerDown = React.useCallback(\n\t\t(e: React.PointerEvent, index: number) => {\n\t\t\tif (!onReorder || e.button !== 0) return;\n\t\t\tconst items = itemsRef.current;\n\t\t\tconst widths = items.map((el) => el?.offsetWidth ?? 0);\n\t\t\tconst lefts: number[] = [];\n\t\t\tlet acc = 0;\n\t\t\tfor (const w of widths) {\n\t\t\t\tlefts.push(acc);\n\t\t\t\tacc += w;\n\t\t\t}\n\t\t\tdragRef.current = {\n\t\t\t\tindex,\n\t\t\t\tstartX: e.clientX,\n\t\t\t\toffsetX: 0,\n\t\t\t\tcurrentIndex: index,\n\t\t\t\twidths,\n\t\t\t\tlefts,\n\t\t\t};\n\t\t\tpendingRef.current = true;\n\t\t\t(e.target as HTMLElement).setPointerCapture(e.pointerId);\n\t\t},\n\t\t[onReorder],\n\t);\n\n\tconst handlePointerMove = React.useCallback((e: React.PointerEvent) => {\n\t\tconst d = dragRef.current;\n\t\tif (!d) return;\n\t\tconst dx = e.clientX - d.startX;\n\t\tif (pendingRef.current) {\n\t\t\tif (Math.abs(dx) < DRAG_THRESHOLD) return;\n\t\t\tpendingRef.current = false;\n\t\t}\n\t\tconst draggedLeft = d.lefts[d.index] ?? 0;\n\t\tconst draggedWidth = d.widths[d.index] ?? 0;\n\t\tconst draggedRightEdge = draggedLeft + draggedWidth + dx;\n\t\tconst draggedLeftEdge = draggedLeft + dx;\n\t\tlet newIndex = d.index;\n\t\tconst TRIGGER_RATIO = 0.3;\n\t\tfor (let i = 0; i < d.lefts.length; i++) {\n\t\t\tif (i === d.index) continue;\n\t\t\tconst left = d.lefts[i] ?? 0;\n\t\t\tconst width = d.widths[i] ?? 0;\n\t\t\tif (i > d.index) {\n\t\t\t\t// Dragging right: trigger when right edge enters 30% of target\n\t\t\t\tif (draggedRightEdge > left + width * TRIGGER_RATIO) newIndex = i;\n\t\t\t} else {\n\t\t\t\t// Dragging left: trigger when left edge enters 30% from right\n\t\t\t\tif (draggedLeftEdge < left + width * (1 - TRIGGER_RATIO))\n\t\t\t\t\tnewIndex = Math.min(newIndex, i);\n\t\t\t}\n\t\t}\n\t\tconst next: DragState = { ...d, offsetX: dx, currentIndex: newIndex };\n\t\tdragRef.current = next;\n\t\tsetDrag(next);\n\t}, []);\n\n\tconst handlePointerUp = React.useCallback(() => {\n\t\tconst d = dragRef.current;\n\t\tif (d && !pendingRef.current && d.index !== d.currentIndex) {\n\t\t\tonReorder?.(d.index, d.currentIndex);\n\t\t}\n\t\tdragRef.current = null;\n\t\tpendingRef.current = false;\n\t\tsetDrag(null);\n\t}, [onReorder]);\n\n\tconst getTransform = React.useCallback(\n\t\t(index: number): React.CSSProperties => {\n\t\t\tif (!drag || pendingRef.current) return {};\n\t\t\tif (index === drag.index) {\n\t\t\t\treturn {\n\t\t\t\t\ttransform: `translateX(${drag.offsetX}px)`,\n\t\t\t\t\tzIndex: 10,\n\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\tbackground: \"var(--color-bg-primary)\",\n\t\t\t\t\tborderLeft: \"1px solid var(--color-border-default)\",\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst from = drag.index;\n\t\t\tconst to = drag.currentIndex;\n\t\t\tconst draggedWidth = drag.widths[from] ?? 0;\n\t\t\tif (from < to && index > from && index <= to) {\n\t\t\t\treturn {\n\t\t\t\t\ttransform: `translateX(${-draggedWidth}px)`,\n\t\t\t\t\ttransition: \"transform 200ms ease\",\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (from > to && index >= to && index < from) {\n\t\t\t\treturn {\n\t\t\t\t\ttransform: `translateX(${draggedWidth}px)`,\n\t\t\t\t\ttransition: \"transform 200ms ease\",\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn { transition: \"transform 200ms ease\" };\n\t\t},\n\t\t[drag],\n\t);\n\n\treturn {\n\t\tdrag,\n\t\titemsRef,\n\t\thandlePointerDown,\n\t\thandlePointerMove,\n\t\thandlePointerUp,\n\t\tgetTransform,\n\t};\n}\n\nfunction TabsBrowserList({\n\tclassName,\n\tchildren,\n\tonReorder,\n\t...props\n}: React.ComponentProps<typeof TabsPrimitive.List> & {\n\tonReorder?: (fromIndex: number, toIndex: number) => void;\n}) {\n\tconst tabsListRef = React.useRef<HTMLDivElement | null>(null);\n\n\tconst [showScrollButtons, setShowScrollButtons] = React.useState(false);\n\tconst [canScrollLeft, setCanScrollLeft] = React.useState(false);\n\tconst [canScrollRight, setCanScrollRight] = React.useState(false);\n\n\tconst {\n\t\tdrag,\n\t\titemsRef,\n\t\thandlePointerDown,\n\t\thandlePointerMove,\n\t\thandlePointerUp,\n\t\tgetTransform,\n\t} = useTabReorder(onReorder);\n\n\tconst wrappedChildren =\n\t\tonReorder && React.Children.count(children) > 1\n\t\t\t? React.Children.map(children, (child, index) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\t\titemsRef.current[index] = el;\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstyle={getTransform(index)}\n\t\t\t\t\t\tonPointerDown={(e) => handlePointerDown(e, index)}\n\t\t\t\t\t\tonPointerMove={handlePointerMove}\n\t\t\t\t\t\tonPointerUp={handlePointerUp}\n\t\t\t\t\t\tclassName={cn(drag?.index === index && \"cursor-grabbing\")}\n\t\t\t\t\t>\n\t\t\t\t\t\t{child}\n\t\t\t\t\t</div>\n\t\t\t\t))\n\t\t\t: children;\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t{showScrollButtons && (\n\t\t\t\t<TabScrollLeftButton\n\t\t\t\t\tdisabled={!canScrollLeft}\n\t\t\t\t\tonClick={() => performHorizontalScroll(tabsListRef, \"left\")}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<TabsList\n\t\t\t\tonLeftEdge={(edgeState) => {\n\t\t\t\t\tif (edgeState === \"touch\") {\n\t\t\t\t\t\tsetCanScrollLeft(false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetCanScrollLeft(true);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tonRightEdge={(edgeState) => {\n\t\t\t\t\tif (edgeState === \"touch\") {\n\t\t\t\t\t\tsetCanScrollRight(false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetCanScrollRight(true);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tonFlow={(flow) => {\n\t\t\t\t\tif (flow === \"overflow\") {\n\t\t\t\t\t\tsetShowScrollButtons(true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetShowScrollButtons(false);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tonResize={() => {\n\t\t\t\t\ttabsListRef.current\n\t\t\t\t\t\t?.querySelector<HTMLButtonElement>('button[data-state=\"active\"]')\n\t\t\t\t\t\t?.scrollIntoView();\n\t\t\t\t}}\n\t\t\t\tonTabChange={(entries) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tentries.filter((entry) => entry.addedNodes.length !== 0).length !==\n\t\t\t\t\t\t0\n\t\t\t\t\t) {\n\t\t\t\t\t\ttabsListRef.current\n\t\t\t\t\t\t\t?.querySelector<HTMLButtonElement>('button[data-state=\"active\"]')\n\t\t\t\t\t\t\t?.scrollIntoView();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tdata-slot=\"tabs-list\"\n\t\t\t\tclassName={cn(tabsListStyles, className)}\n\t\t\t\tonWheel={(event) => horizontalScroll(event)}\n\t\t\t\t{...props}\n\t\t\t\tref={tabsListRef}\n\t\t\t>\n\t\t\t\t{wrappedChildren}\n\t\t\t</TabsList>\n\n\t\t\t{showScrollButtons && (\n\t\t\t\t<TabScrollRightButton\n\t\t\t\t\tdisabled={!canScrollRight}\n\t\t\t\t\tonClick={() => performHorizontalScroll(tabsListRef, \"right\")}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</React.Fragment>\n\t);\n}\n\nexport function TabsListDropdown({\n\ttabs,\n\thandleTabSelect,\n\thandleCloseTab,\n}: {\n\ttabs: { id: string; content: React.ReactNode }[];\n\thandleTabSelect?: (tabId: string) => void;\n\thandleCloseTab?: (tabId: string) => void;\n}) {\n\tconst [isMenuOpen, setIsMenuOpen] = React.useState(false);\n\treturn (\n\t\t<Popover open={isMenuOpen} onOpenChange={setIsMenuOpen}>\n\t\t\t<PopoverTrigger asChild>\n\t\t\t\t<Button variant=\"link\" className=\"bg-bg-secondary h-full border-b pr-6\">\n\t\t\t\t\t<ChevronDownIcon className=\"size-4\" />\n\t\t\t\t</Button>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverContent className=\"w-80 p-0 mr-3\" align=\"end\">\n\t\t\t\t<Command>\n\t\t\t\t\t<CommandInput placeholder=\"Search tabs...\" />\n\t\t\t\t\t<CommandList>\n\t\t\t\t\t\t<CommandEmpty>Not tabs found.</CommandEmpty>\n\t\t\t\t\t\t{tabs.map((tab) => (\n\t\t\t\t\t\t\t<CommandItem\n\t\t\t\t\t\t\t\tkey={tab.id}\n\t\t\t\t\t\t\t\tonSelect={() => {\n\t\t\t\t\t\t\t\t\thandleTabSelect?.(tab.id);\n\t\t\t\t\t\t\t\t\tsetIsMenuOpen(false);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tclassName=\"group flex items-center justify-between\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{tab.content}\n\t\t\t\t\t\t\t\t{tabs.length > 1 && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"opacity-0 group-hover:opacity-100 transition-opacity p-1 ml-2\"\n\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\thandleCloseTab?.(tab.id);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<X className=\"size-3\" />\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</CommandItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</CommandList>\n\t\t\t\t</Command>\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n}\n\nfunction TabsTrigger({\n\tclassName,\n\tonClose,\n\t...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger> & {\n\tonClose?: (value: string) => void;\n}) {\n\tconst variant = React.useContext(TabsVariantContext);\n\tconst isSecondary = variant === \"secondary\";\n\tconst isTertiary = variant === \"tertiary\";\n\n\treturn (\n\t\t<TabsPrimitive.Trigger\n\t\t\tdata-slot=\"tabs-trigger\"\n\t\t\tclassName={cn(\n\t\t\t\tbaseTabsTriggerStyles,\n\t\t\t\tonClose ? \"justify-between\" : \"justify-start\",\n\t\t\t\tisSecondary && [\"body14\", \"data-[state=active]:body14bold\"],\n\t\t\t\tisTertiary && [\"typo-body\", \"data-[state=active]:typo-label\"],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{props.children}\n\n\t\t\t{onClose && (\n\t\t\t\t<Button\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tonClose(props.value);\n\t\t\t\t\t}}\n\t\t\t\t\tvariant=\"link\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tclassName=\"p-0 ml-2 opacity-0 group-hover/tabs-trigger:opacity-100 transition-opacity\"\n\t\t\t\t\tasChild\n\t\t\t\t>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<X />\n\t\t\t\t\t</span>\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</TabsPrimitive.Trigger>\n\t);\n}\n\nfunction TabsContent({\n\tclassName,\n\t...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n\treturn (\n\t\t<TabsPrimitive.Content\n\t\t\tdata-slot=\"tabs-content\"\n\t\t\tclassName={cn(tabsContentStyles, className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent, TabsBrowserList };\n"],"names":["TabsPrimitive","cva","ChevronDownIcon","ChevronLeft","ChevronRight","Plus","X","React","cn","Button","Command","CommandEmpty","CommandInput","CommandItem","CommandList","Popover","PopoverContent","PopoverTrigger","baseTabsStyles","tabsAddButtonContainerStyles","tabsListStyles","baseTabsTriggerStyles","tabsContentStyles","tabsVariants","variants","variant","browser","secondary","tertiary","TabsVariantContext","createContext","undefined","Tabs","className","props","tabProps","onValueChange","value","Provider","Root","TabsAddButton","div","data-slot","horizontalScroll","event","mode","deltaMode","deltaPx","deltaY","currentTarget","clientWidth","newScrollLeft","scrollLeft","scrollTo","left","behavior","performHorizontalScroll","tabsListRef","direction","current","scrollAmount","rightCoord","TabsList","onLeftEdge","onRightEdge","onResize","onFlow","onTabChange","tabListRef","useRef","onLeftEdgeRef","useEffect","onResizeRef","onRightEdgeRef","onFlowRef","onTabChangeRef","tabList","last","handleScroll","newState","lastState","scrollWidth","scrollCallback","_ev","resizeObserver","ResizeObserver","entries","mutationObserver","MutationObserver","mutationRecords","addEventListener","passive","observe","childList","removeEventListener","disconnect","List","ref","element","TabScrollLeftButton","disabled","onClick","size","TabScrollRightButton","DRAG_THRESHOLD","useTabReorder","onReorder","drag","setDrag","useState","dragRef","pendingRef","itemsRef","handlePointerDown","useCallback","e","index","button","items","widths","map","el","offsetWidth","lefts","acc","w","push","startX","clientX","offsetX","currentIndex","target","setPointerCapture","pointerId","handlePointerMove","d","dx","Math","abs","draggedLeft","draggedWidth","draggedRightEdge","draggedLeftEdge","newIndex","TRIGGER_RATIO","i","length","width","min","next","handlePointerUp","getTransform","transform","zIndex","position","background","borderLeft","from","to","transition","TabsBrowserList","children","showScrollButtons","setShowScrollButtons","canScrollLeft","setCanScrollLeft","canScrollRight","setCanScrollRight","wrappedChildren","Children","count","child","style","onPointerDown","onPointerMove","onPointerUp","Fragment","edgeState","flow","querySelector","scrollIntoView","filter","entry","addedNodes","onWheel","TabsListDropdown","tabs","handleTabSelect","handleCloseTab","isMenuOpen","setIsMenuOpen","open","onOpenChange","asChild","align","placeholder","tab","onSelect","id","content","stopPropagation","TabsTrigger","onClose","useContext","isSecondary","isTertiary","Trigger","span","TabsContent","Content"],"mappings":"AAAA;;AACA,YAAYA,mBAAmB,uBAAuB;AACtD,SAASC,GAAG,QAA2B,2BAA2B;AAClE,SACCC,eAAe,EACfC,WAAW,EACXC,YAAY,EACZC,IAAI,EACJC,CAAC,QACK,eAAe;AACtB,YAAYC,WAAW,QAAQ;AAC/B,SAASC,EAAE,QAAQ,qBAAoB;AACvC,SAASC,MAAM,QAAQ,cAAW;AAClC,SACCC,OAAO,EACPC,YAAY,EACZC,YAAY,EACZC,WAAW,EACXC,WAAW,QACL,eAAY;AACnB,SAASC,OAAO,EAAEC,cAAc,EAAEC,cAAc,QAAQ,eAAY;AAEpE,mBAAmB;AACnB,MAAMC,iBAAiBV,GAAG,QAAQ,YAAY;AAE9C,mCAAmC;AACnC,MAAMW,+BAA+BX,GACpC,QACA,UACA,mBACA,YACA;AAGD,mBAAmB;AACnB,MAAMY,iBAAiBZ,GACtB,eACA,SACA,gBACA;AAGD,2BAA2B;AAC3B,MAAMa,wBAAwBb,GAC7B,kBAAkB;AAClB,cACA,UACA,QACA,eACA,gBACA,kBACA,QACA,qBACA,oBAAoB;AACpB,QACA,UACA,aAAa;AACb,aACA,kBAAkB;AAClB,kBACA,sBACA,4BACA,kCACA,yCACA,6CACA,uBACA,gCACA,UAAU;AACV,cACA,wBACA,wBAAwB;AACxB,wBACA,sCACA,2BACA,cAAc;AACd,iCACA,QAAQ;AACR,+BACA,oBACA,wCACA,SAAS;AACT;AAGD,sBAAsB;AACtB,MAAMc,oBAAoBd,GAAG,QAAQ,gBAAgB;AAErD,MAAMe,eAAetB,IAAI,IAAI;IAC5BuB,UAAU;QACTC,SAAS;YACRC,SAASlB,GACR,OAAO;YACP,YACA,gBACA,QACA,WAAW;YACX,4CACA,qCACA,cAAc;YACd,wCACA,oCACA,wCACA,yEACA,gEACA,+EACA;YAEDmB,WAAWnB,GACV,WAAW;YACX,iCACA,2CACA,cAAc;YACd,oCACA,oCACA,oCACA,oCACA,mDACA,uDACA,8DACA,wEACA;YAEDoB,UAAUpB,GACT,WAAW;YACX,4CACA,qCACA,sDACA,kCACA,iCACA,iCACA,cAAc;YACd,mCACA,oCACA,uCACA,0CA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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { Controls, Primary, Title } from "@storybook/addon-docs/blocks";
3
- import { action } from "storybook/internal/actions";
3
+ import { action } from "storybook/actions";
4
4
  import { Tabs, TabsAddButton, TabsContent, TabsList, TabsListDropdown, TabsTrigger } from "./tabs.js";
5
5
  function TabsWrapper({ variant = "default" }) {
6
6
  if (variant === "browser") {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/shadcn/components/ui/tabs.stories.tsx"],"sourcesContent":["import { Controls, Primary, Title } from \"@storybook/addon-docs/blocks\";\nimport type { Meta, StoryObj } from \"@storybook/react-vite\";\nimport { action } from \"storybook/internal/actions\";\nimport {\n\tTabs,\n\tTabsAddButton,\n\tTabsContent,\n\tTabsList,\n\tTabsListDropdown,\n\tTabsTrigger,\n} from \"#shadcn/components/ui/tabs\";\n\ninterface TabsWrapperProps {\n\tvariant?: \"default\" | \"browser\" | \"secondary\" | \"tertiary\";\n}\n\nfunction TabsWrapper({ variant = \"default\" }: TabsWrapperProps) {\n\tif (variant === \"browser\") {\n\t\treturn (\n\t\t\t<Tabs defaultValue=\"first\" variant=\"browser\">\n\t\t\t\t<TabsList>\n\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\tvalue=\"first\"\n\t\t\t\t\t\tonClick={() => action(\"onClick\")()}\n\t\t\t\t\t\tonClose={(v) => action(\"onClose\")(v)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t<span className=\"text-utility-green\">GET</span>\n\t\t\t\t\t\t\t<span>/fhir/Patient</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\tvalue=\"second\"\n\t\t\t\t\t\tonClick={() => action(\"onClick\")()}\n\t\t\t\t\t\tonClose={(v) => action(\"onClose\")(v)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t<span className=\"text-utility-yellow\">POST</span>\n\t\t\t\t\t\t\t<span>/fhir</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</TabsTrigger>\n\t\t\t\t</TabsList>\n\t\t\t\t<TabsAddButton onClick={() => action(\"onAdd\")()} />\n\t\t\t\t<TabsContent value=\"first\">\n\t\t\t\t\t<div className=\"p-4\">GET /fhir/Patient content</div>\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"second\">\n\t\t\t\t\t<div className=\"p-4\">POST /fhir content</div>\n\t\t\t\t</TabsContent>\n\t\t\t</Tabs>\n\t\t);\n\t}\n\n\tif (variant === \"secondary\") {\n\t\treturn (\n\t\t\t<Tabs defaultValue=\"tab1\" variant=\"secondary\">\n\t\t\t\t<TabsList>\n\t\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t\t</TabsList>\n\t\t\t\t<TabsContent value=\"tab1\">\n\t\t\t\t\t<div className=\"p-4\">Tab 1 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"tab2\">\n\t\t\t\t\t<div className=\"p-4\">Tab 2 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"tab3\">\n\t\t\t\t\t<div className=\"p-4\">Tab 3 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t</Tabs>\n\t\t);\n\t}\n\n\tif (variant === \"tertiary\") {\n\t\treturn (\n\t\t\t<Tabs defaultValue=\"tab1\" variant=\"tertiary\">\n\t\t\t\t<TabsList>\n\t\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t\t</TabsList>\n\t\t\t\t<TabsContent value=\"tab1\">\n\t\t\t\t\t<div className=\"p-4\">Tab 1 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"tab2\">\n\t\t\t\t\t<div className=\"p-4\">Tab 2 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"tab3\">\n\t\t\t\t\t<div className=\"p-4\">Tab 3 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t</Tabs>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tabs defaultValue=\"tab1\">\n\t\t\t<TabsList>\n\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t</TabsList>\n\t\t\t<TabsContent value=\"tab1\">\n\t\t\t\t<div className=\"p-4\">Tab 1 content</div>\n\t\t\t</TabsContent>\n\t\t\t<TabsContent value=\"tab2\">\n\t\t\t\t<div className=\"p-4\">Tab 2 content</div>\n\t\t\t</TabsContent>\n\t\t\t<TabsContent value=\"tab3\">\n\t\t\t\t<div className=\"p-4\">Tab 3 content</div>\n\t\t\t</TabsContent>\n\t\t</Tabs>\n\t);\n}\n\nconst meta = {\n\ttitle: \"Component/Tabs\",\n\tcomponent: TabsWrapper,\n\tparameters: {\n\t\tdocs: {\n\t\t\tpage: () => (\n\t\t\t\t<>\n\t\t\t\t\t<Title />\n\t\t\t\t\t<Primary />\n\t\t\t\t\t<Controls />\n\t\t\t\t</>\n\t\t\t),\n\t\t},\n\t},\n\targTypes: {\n\t\tvariant: {\n\t\t\tcontrol: \"select\",\n\t\t\toptions: [\"default\", \"browser\", \"secondary\", \"tertiary\"],\n\t\t},\n\t},\n\targs: {\n\t\tvariant: \"default\",\n\t},\n} satisfies Meta<typeof TabsWrapper>;\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default = {\n\ttags: [\"!dev\"],\n\trender: ({ variant = \"default\" }) => <TabsWrapper variant={variant} />,\n} satisfies Story;\n\nexport const Demo = {\n\ttags: [\"!autodocs\"],\n\trender: () => (\n\t\t<div className=\"space-y-8\">\n\t\t\t{/* Default variant */}\n\t\t\t<div>\n\t\t\t\t<h3 className=\"typo-label mb-4\">Default</h3>\n\t\t\t\t<Tabs defaultValue=\"tab1\">\n\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t\t\t</TabsList>\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\n\t\t\t{/* Secondary variant */}\n\t\t\t<div>\n\t\t\t\t<h3 className=\"typo-label mb-4\">Secondary</h3>\n\t\t\t\t<Tabs defaultValue=\"tab1\" variant=\"secondary\">\n\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t\t\t</TabsList>\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\n\t\t\t{/* Tertiary variant */}\n\t\t\t<div>\n\t\t\t\t<h3 className=\"typo-label mb-4\">Tertiary</h3>\n\t\t\t\t<Tabs defaultValue=\"tab1\" variant=\"tertiary\">\n\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t\t\t</TabsList>\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\n\t\t\t{/* Browser variant */}\n\t\t\t<div>\n\t\t\t\t<h3 className=\"typo-label mb-4\">Browser</h3>\n\t\t\t\t<Tabs defaultValue=\"first\" variant=\"browser\">\n\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\t\tvalue=\"first\"\n\t\t\t\t\t\t\tonClick={() => action(\"onClick\")()}\n\t\t\t\t\t\t\tonClose={(v) => action(\"onClose\")(v)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t<span className=\"text-utility-green\">GET</span>\n\t\t\t\t\t\t\t\t<span>/fhir/Patient</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\t\tvalue=\"second\"\n\t\t\t\t\t\t\tonClick={() => action(\"onClick\")()}\n\t\t\t\t\t\t\tonClose={(v) => action(\"onClose\")(v)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t<span className=\"text-utility-yellow\">POST</span>\n\t\t\t\t\t\t\t\t<span>/fhir</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\t\tvalue=\"third\"\n\t\t\t\t\t\t\tonClick={() => action(\"onClick\")()}\n\t\t\t\t\t\t\tonClose={(v) => action(\"onClose\")(v)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t<span className=\"text-utility-yellow\">POST</span>\n\t\t\t\t\t\t\t\t<span>/$graphql</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t</TabsList>\n\t\t\t\t\t<TabsAddButton onClick={() => action(\"onAdd\")()} />\n\t\t\t\t\t<TabsListDropdown\n\t\t\t\t\t\ttabs={[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"first\",\n\t\t\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-utility-green\">GET</span>\n\t\t\t\t\t\t\t\t\t\t<span>/fhir/Patient</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"second\",\n\t\t\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-utility-yellow\">POST</span>\n\t\t\t\t\t\t\t\t\t\t<span>/fhir</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"third\",\n\t\t\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-utility-yellow\">POST</span>\n\t\t\t\t\t\t\t\t\t\t<span>/$graphql</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\t\t</div>\n\t),\n} satisfies Story;\n"],"names":["Controls","Primary","Title","action","Tabs","TabsAddButton","TabsContent","TabsList","TabsListDropdown","TabsTrigger","TabsWrapper","variant","defaultValue","value","onClick","onClose","v","span","className","div","meta","title","component","parameters","docs","page","argTypes","control","options","args","Default","tags","render","Demo","h3","tabs","id","content"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/shadcn/components/ui/tabs.stories.tsx"],"sourcesContent":["import { Controls, Primary, Title } from \"@storybook/addon-docs/blocks\";\nimport type { Meta, StoryObj } from \"@storybook/react-vite\";\nimport { action } from \"storybook/actions\";\nimport {\n\tTabs,\n\tTabsAddButton,\n\tTabsContent,\n\tTabsList,\n\tTabsListDropdown,\n\tTabsTrigger,\n} from \"#shadcn/components/ui/tabs\";\n\ninterface TabsWrapperProps {\n\tvariant?: \"default\" | \"browser\" | \"secondary\" | \"tertiary\";\n}\n\nfunction TabsWrapper({ variant = \"default\" }: TabsWrapperProps) {\n\tif (variant === \"browser\") {\n\t\treturn (\n\t\t\t<Tabs defaultValue=\"first\" variant=\"browser\">\n\t\t\t\t<TabsList>\n\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\tvalue=\"first\"\n\t\t\t\t\t\tonClick={() => action(\"onClick\")()}\n\t\t\t\t\t\tonClose={(v) => action(\"onClose\")(v)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t<span className=\"text-utility-green\">GET</span>\n\t\t\t\t\t\t\t<span>/fhir/Patient</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\tvalue=\"second\"\n\t\t\t\t\t\tonClick={() => action(\"onClick\")()}\n\t\t\t\t\t\tonClose={(v) => action(\"onClose\")(v)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t<span className=\"text-utility-yellow\">POST</span>\n\t\t\t\t\t\t\t<span>/fhir</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</TabsTrigger>\n\t\t\t\t</TabsList>\n\t\t\t\t<TabsAddButton onClick={() => action(\"onAdd\")()} />\n\t\t\t\t<TabsContent value=\"first\">\n\t\t\t\t\t<div className=\"p-4\">GET /fhir/Patient content</div>\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"second\">\n\t\t\t\t\t<div className=\"p-4\">POST /fhir content</div>\n\t\t\t\t</TabsContent>\n\t\t\t</Tabs>\n\t\t);\n\t}\n\n\tif (variant === \"secondary\") {\n\t\treturn (\n\t\t\t<Tabs defaultValue=\"tab1\" variant=\"secondary\">\n\t\t\t\t<TabsList>\n\t\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t\t</TabsList>\n\t\t\t\t<TabsContent value=\"tab1\">\n\t\t\t\t\t<div className=\"p-4\">Tab 1 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"tab2\">\n\t\t\t\t\t<div className=\"p-4\">Tab 2 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"tab3\">\n\t\t\t\t\t<div className=\"p-4\">Tab 3 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t</Tabs>\n\t\t);\n\t}\n\n\tif (variant === \"tertiary\") {\n\t\treturn (\n\t\t\t<Tabs defaultValue=\"tab1\" variant=\"tertiary\">\n\t\t\t\t<TabsList>\n\t\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t\t</TabsList>\n\t\t\t\t<TabsContent value=\"tab1\">\n\t\t\t\t\t<div className=\"p-4\">Tab 1 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"tab2\">\n\t\t\t\t\t<div className=\"p-4\">Tab 2 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"tab3\">\n\t\t\t\t\t<div className=\"p-4\">Tab 3 content</div>\n\t\t\t\t</TabsContent>\n\t\t\t</Tabs>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tabs defaultValue=\"tab1\">\n\t\t\t<TabsList>\n\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t</TabsList>\n\t\t\t<TabsContent value=\"tab1\">\n\t\t\t\t<div className=\"p-4\">Tab 1 content</div>\n\t\t\t</TabsContent>\n\t\t\t<TabsContent value=\"tab2\">\n\t\t\t\t<div className=\"p-4\">Tab 2 content</div>\n\t\t\t</TabsContent>\n\t\t\t<TabsContent value=\"tab3\">\n\t\t\t\t<div className=\"p-4\">Tab 3 content</div>\n\t\t\t</TabsContent>\n\t\t</Tabs>\n\t);\n}\n\nconst meta = {\n\ttitle: \"Component/Tabs\",\n\tcomponent: TabsWrapper,\n\tparameters: {\n\t\tdocs: {\n\t\t\tpage: () => (\n\t\t\t\t<>\n\t\t\t\t\t<Title />\n\t\t\t\t\t<Primary />\n\t\t\t\t\t<Controls />\n\t\t\t\t</>\n\t\t\t),\n\t\t},\n\t},\n\targTypes: {\n\t\tvariant: {\n\t\t\tcontrol: \"select\",\n\t\t\toptions: [\"default\", \"browser\", \"secondary\", \"tertiary\"],\n\t\t},\n\t},\n\targs: {\n\t\tvariant: \"default\",\n\t},\n} satisfies Meta<typeof TabsWrapper>;\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default = {\n\ttags: [\"!dev\"],\n\trender: ({ variant = \"default\" }) => <TabsWrapper variant={variant} />,\n} satisfies Story;\n\nexport const Demo = {\n\ttags: [\"!autodocs\"],\n\trender: () => (\n\t\t<div className=\"space-y-8\">\n\t\t\t{/* Default variant */}\n\t\t\t<div>\n\t\t\t\t<h3 className=\"typo-label mb-4\">Default</h3>\n\t\t\t\t<Tabs defaultValue=\"tab1\">\n\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t\t\t</TabsList>\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\n\t\t\t{/* Secondary variant */}\n\t\t\t<div>\n\t\t\t\t<h3 className=\"typo-label mb-4\">Secondary</h3>\n\t\t\t\t<Tabs defaultValue=\"tab1\" variant=\"secondary\">\n\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t\t\t</TabsList>\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\n\t\t\t{/* Tertiary variant */}\n\t\t\t<div>\n\t\t\t\t<h3 className=\"typo-label mb-4\">Tertiary</h3>\n\t\t\t\t<Tabs defaultValue=\"tab1\" variant=\"tertiary\">\n\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t<TabsTrigger value=\"tab1\">Tab 1</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab2\">Tab 2</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger value=\"tab3\">Tab 3</TabsTrigger>\n\t\t\t\t\t</TabsList>\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\n\t\t\t{/* Browser variant */}\n\t\t\t<div>\n\t\t\t\t<h3 className=\"typo-label mb-4\">Browser</h3>\n\t\t\t\t<Tabs defaultValue=\"first\" variant=\"browser\">\n\t\t\t\t\t<TabsList>\n\t\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\t\tvalue=\"first\"\n\t\t\t\t\t\t\tonClick={() => action(\"onClick\")()}\n\t\t\t\t\t\t\tonClose={(v) => action(\"onClose\")(v)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t<span className=\"text-utility-green\">GET</span>\n\t\t\t\t\t\t\t\t<span>/fhir/Patient</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\t\tvalue=\"second\"\n\t\t\t\t\t\t\tonClick={() => action(\"onClick\")()}\n\t\t\t\t\t\t\tonClose={(v) => action(\"onClose\")(v)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t<span className=\"text-utility-yellow\">POST</span>\n\t\t\t\t\t\t\t\t<span>/fhir</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t\t<TabsTrigger\n\t\t\t\t\t\t\tvalue=\"third\"\n\t\t\t\t\t\t\tonClick={() => action(\"onClick\")()}\n\t\t\t\t\t\t\tonClose={(v) => action(\"onClose\")(v)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t<span className=\"text-utility-yellow\">POST</span>\n\t\t\t\t\t\t\t\t<span>/$graphql</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t</TabsList>\n\t\t\t\t\t<TabsAddButton onClick={() => action(\"onAdd\")()} />\n\t\t\t\t\t<TabsListDropdown\n\t\t\t\t\t\ttabs={[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"first\",\n\t\t\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-utility-green\">GET</span>\n\t\t\t\t\t\t\t\t\t\t<span>/fhir/Patient</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"second\",\n\t\t\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-utility-yellow\">POST</span>\n\t\t\t\t\t\t\t\t\t\t<span>/fhir</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: \"third\",\n\t\t\t\t\t\t\t\tcontent: (\n\t\t\t\t\t\t\t\t\t<span className=\"flex items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t<span className=\"text-utility-yellow\">POST</span>\n\t\t\t\t\t\t\t\t\t\t<span>/$graphql</span>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t</Tabs>\n\t\t\t</div>\n\t\t</div>\n\t),\n} satisfies Story;\n"],"names":["Controls","Primary","Title","action","Tabs","TabsAddButton","TabsContent","TabsList","TabsListDropdown","TabsTrigger","TabsWrapper","variant","defaultValue","value","onClick","onClose","v","span","className","div","meta","title","component","parameters","docs","page","argTypes","control","options","args","Default","tags","render","Demo","h3","tabs","id","content"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
2
2
  import type { VariantProps } from "class-variance-authority";
3
3
  import * as React from "react";
4
- import { toggleVariants } from "#shadcn/components/ui/toggle";
4
+ import { toggleVariants } from "../../components/ui/toggle";
5
5
  declare function ToggleGroup({ className, variant, children, ...props }: React.ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants>): import("react/jsx-runtime").JSX.Element;
6
6
  declare function ToggleGroupItem({ className, children, variant, ...props }: React.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>): import("react/jsx-runtime").JSX.Element;
7
7
  export { ToggleGroup, ToggleGroupItem };
@@ -46,7 +46,7 @@ body {
46
46
  font-size: var(--font-size-xs);
47
47
  font-family: var(--font-family-sans);
48
48
  font-weight: var(--font-weight-normal);
49
- line-height: var(--font-leading-3);
49
+ line-height: var(--font-leading-4);
50
50
  }
51
51
  .typo-label-xs {
52
52
  font-size: var(--font-size-xs);
package/package.json CHANGED
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "name": "@health-samurai/react-components",
3
- "version": "0.0.0-alpha.18",
3
+ "version": "0.0.0-alpha.20",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",
7
7
  "src"
8
8
  ],
9
9
  "exports": {
10
- ".": "./dist/src/index.js",
10
+ ".": {
11
+ "types": "./dist/src/index.d.ts",
12
+ "default": "./dist/src/index.js"
13
+ },
11
14
  "./bundle.css": "./dist/bundle.css",
12
15
  "./css": "./dist/src/index.css",
13
16
  "./deps.css": "./dist/src/deps.css",
@@ -18,15 +21,15 @@
18
21
  },
19
22
  "dependencies": {
20
23
  "@codemirror/autocomplete": "^6.20.1",
21
- "@codemirror/commands": "^6.10.2",
24
+ "@codemirror/commands": "^6.10.3",
22
25
  "@codemirror/lang-json": "^6.0.2",
23
26
  "@codemirror/lang-sql": "^6.10.0",
24
27
  "@codemirror/lang-yaml": "^6.1.2",
25
28
  "@codemirror/language": "^6.12.2",
26
29
  "@codemirror/lint": "^6.9.5",
27
30
  "@codemirror/search": "^6.6.0",
28
- "@codemirror/state": "^6.5.4",
29
- "@codemirror/view": "^6.39.17",
31
+ "@codemirror/state": "^6.6.0",
32
+ "@codemirror/view": "^6.40.0",
30
33
  "@headless-tree/core": "^1.6.3",
31
34
  "@headless-tree/react": "^1.6.3",
32
35
  "@hookform/resolvers": "^5.2.2",
@@ -59,6 +62,7 @@
59
62
  "@radix-ui/react-toggle": "^1.1.10",
60
63
  "@radix-ui/react-toggle-group": "^1.1.11",
61
64
  "@radix-ui/react-tooltip": "^1.2.8",
65
+ "@replit/codemirror-vim": "^6.3.0",
62
66
  "@tanstack/react-table": "^8.21.3",
63
67
  "class-variance-authority": "^0.7.1",
64
68
  "clsx": "^2.1.1",
@@ -66,7 +70,7 @@
66
70
  "date-fns": "^4.1.0",
67
71
  "embla-carousel-react": "^8.6.0",
68
72
  "input-otp": "^1.4.2",
69
- "lucide-react": "^0.539.0",
73
+ "lucide-react": "^0.577.0",
70
74
  "next-themes": "^0.4.6",
71
75
  "radix-ui": "^1.4.3",
72
76
  "react": "^19.2.4",
@@ -74,7 +78,7 @@
74
78
  "react-dom": "^19.2.4",
75
79
  "react-hook-form": "^7.71.2",
76
80
  "react-resizable-panels": "^3.0.6",
77
- "recharts": "2.15.4",
81
+ "recharts": "3.8.0",
78
82
  "sonner": "^2.0.7",
79
83
  "tailwind-merge": "^3.5.0",
80
84
  "vaul": "^1.1.2",
@@ -82,26 +86,27 @@
82
86
  },
83
87
  "devDependencies": {
84
88
  "@lezer/generator": "^1.8.0",
85
- "@storybook/addon-docs": "^9.1.20",
86
- "@storybook/react-vite": "^9.1.20",
87
- "@swc/cli": "^0.7.10",
89
+ "@storybook/addon-docs": "^10.2.17",
90
+ "@storybook/react-vite": "^10.2.17",
91
+ "@swc/cli": "^0.8.0",
88
92
  "@swc/core": "^1.15.18",
89
93
  "@tailwindcss/cli": "^4.2.1",
90
94
  "@tailwindcss/vite": "^4.2.1",
91
- "@types/node": "^24.12.0",
95
+ "@types/node": "^25.4.0",
92
96
  "@types/react": "^19.2.14",
93
97
  "@types/react-dom": "^19.2.3",
94
- "@vitejs/plugin-react-swc": "^3.11.0",
95
- "chokidar": "^4.0.3",
96
- "storybook": "^9.1.20",
98
+ "@vitejs/plugin-react-swc": "^4.2.3",
99
+ "chokidar": "^5.0.0",
100
+ "storybook": "^10.2.17",
97
101
  "tailwindcss": "^4.2.1",
102
+ "tsc-alias": "^1.8.16",
98
103
  "tsx": "^4.21.0",
99
104
  "tw-animate-css": "^1.4.0",
100
- "typescript": "~5.8.3",
105
+ "typescript": "~5.9.3",
101
106
  "vite": "^7.3.1",
102
- "vitest": "^3.2.4",
103
- "@health-samurai/aidbox-client": "0.0.0-alpha.4",
104
- "@health-samurai/aidbox-fhirpath-lsp": "0.0.0-alpha.6"
107
+ "vitest": "^4.0.18",
108
+ "@health-samurai/aidbox-client": "0.0.0-alpha.5",
109
+ "@health-samurai/aidbox-fhirpath-lsp": "0.0.0-alpha.7"
105
110
  },
106
111
  "publishConfig": {
107
112
  "access": "public"
@@ -113,7 +118,7 @@
113
118
  "directory": "packages/react-components"
114
119
  },
115
120
  "scripts": {
116
- "build": "rm -rf dist && mkdir -p dist && swc src -d dist -D && tsc -b --force && tailwindcss --cwd ./src -i ./full.css -o ../dist/bundle.css && echo success",
121
+ "build": "rm -rf dist && mkdir -p dist && swc src -d dist -D && tsc -b --force && tsc-alias -p tsconfig.app.json && tailwindcss --cwd ./src -i ./full.css -o ../dist/bundle.css && echo success",
117
122
  "build:watch": "tsx scripts/watch.node.ts",
118
123
  "build-storybook": "storybook build",
119
124
  "format": "biome format",