@acronis-platform/ui-react 0.38.0 → 0.44.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 (83) hide show
  1. package/dist/components/ui/checkbox/checkbox.js +3 -1
  2. package/dist/components/ui/checkbox/checkbox.js.map +1 -1
  3. package/dist/components/ui/data-table/data-table-column-header.js +48 -0
  4. package/dist/components/ui/data-table/data-table-column-header.js.map +1 -0
  5. package/dist/components/ui/data-table/data-table-pagination.js +89 -0
  6. package/dist/components/ui/data-table/data-table-pagination.js.map +1 -0
  7. package/dist/components/ui/data-table/data-table-toolbar.js +46 -0
  8. package/dist/components/ui/data-table/data-table-toolbar.js.map +1 -0
  9. package/dist/components/ui/data-table/data-table-view-options.js +40 -0
  10. package/dist/components/ui/data-table/data-table-view-options.js.map +1 -0
  11. package/dist/components/ui/data-table/data-table.js +89 -0
  12. package/dist/components/ui/data-table/data-table.js.map +1 -0
  13. package/dist/components/ui/dropdown-menu/dropdown-menu.js +159 -0
  14. package/dist/components/ui/dropdown-menu/dropdown-menu.js.map +1 -0
  15. package/dist/components/ui/empty/empty.js +78 -0
  16. package/dist/components/ui/empty/empty.js.map +1 -0
  17. package/dist/components/ui/label/label.js +12 -0
  18. package/dist/components/ui/label/label.js.map +1 -0
  19. package/dist/components/ui/popover/popover.js +48 -0
  20. package/dist/components/ui/popover/popover.js.map +1 -0
  21. package/dist/components/ui/progress/progress.js +30 -0
  22. package/dist/components/ui/progress/progress.js.map +1 -0
  23. package/dist/components/ui/separator/separator.js +22 -0
  24. package/dist/components/ui/separator/separator.js.map +1 -0
  25. package/dist/components/ui/sheet/sheet.js +138 -0
  26. package/dist/components/ui/sheet/sheet.js.map +1 -0
  27. package/dist/components/ui/spinner/spinner.js +38 -0
  28. package/dist/components/ui/spinner/spinner.js.map +1 -0
  29. package/dist/components/ui/tabs/tabs.js +44 -0
  30. package/dist/components/ui/tabs/tabs.js.map +1 -0
  31. package/dist/components/ui/toast/toast.js +83 -0
  32. package/dist/components/ui/toast/toast.js.map +1 -0
  33. package/dist/components/ui/widget-placeholder/widget-placeholder.js +106 -0
  34. package/dist/components/ui/widget-placeholder/widget-placeholder.js.map +1 -0
  35. package/dist/index.js +234 -140
  36. package/dist/index.js.map +1 -1
  37. package/dist/node_modules/.pnpm/@tanstack_react-table@8.21.3_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@tanstack/react-table/build/lib/index.js +104 -0
  38. package/dist/node_modules/.pnpm/@tanstack_react-table@8.21.3_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@tanstack/react-table/build/lib/index.js.map +1 -0
  39. package/dist/node_modules/.pnpm/@tanstack_table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.js +1900 -0
  40. package/dist/node_modules/.pnpm/@tanstack_table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.js.map +1 -0
  41. package/dist/react.js +234 -140
  42. package/dist/react.js.map +1 -1
  43. package/dist/src/components/ui/data-table/data-table-column-header.d.ts +8 -0
  44. package/dist/src/components/ui/data-table/data-table-pagination.d.ts +8 -0
  45. package/dist/src/components/ui/data-table/data-table-toolbar.d.ts +9 -0
  46. package/dist/src/components/ui/data-table/data-table-view-options.d.ts +6 -0
  47. package/dist/src/components/ui/data-table/data-table.d.ts +24 -0
  48. package/dist/src/components/ui/data-table/data-table.docs.d.ts +22 -0
  49. package/dist/src/components/ui/data-table/index.d.ts +5 -0
  50. package/dist/src/components/ui/dropdown-menu/dropdown-menu.d.ts +39 -0
  51. package/dist/src/components/ui/dropdown-menu/dropdown-menu.docs.d.ts +25 -0
  52. package/dist/src/components/ui/dropdown-menu/index.d.ts +1 -0
  53. package/dist/src/components/ui/empty/empty.d.ts +9 -0
  54. package/dist/src/components/ui/empty/index.d.ts +1 -0
  55. package/dist/src/components/ui/label/index.d.ts +1 -0
  56. package/dist/src/components/ui/label/label.d.ts +5 -0
  57. package/dist/src/components/ui/label/label.docs.d.ts +10 -0
  58. package/dist/src/components/ui/popover/index.d.ts +1 -0
  59. package/dist/src/components/ui/popover/popover.d.ts +27 -0
  60. package/dist/src/components/ui/popover/popover.docs.d.ts +25 -0
  61. package/dist/src/components/ui/progress/index.d.ts +1 -0
  62. package/dist/src/components/ui/progress/progress.d.ts +9 -0
  63. package/dist/src/components/ui/progress/progress.docs.d.ts +16 -0
  64. package/dist/src/components/ui/separator/index.d.ts +1 -0
  65. package/dist/src/components/ui/separator/separator.d.ts +3 -0
  66. package/dist/src/components/ui/sheet/index.d.ts +2 -0
  67. package/dist/src/components/ui/sheet/sheet.d.ts +36 -0
  68. package/dist/src/components/ui/sheet/sheet.docs.d.ts +21 -0
  69. package/dist/src/components/ui/spinner/index.d.ts +1 -0
  70. package/dist/src/components/ui/spinner/spinner.d.ts +9 -0
  71. package/dist/src/components/ui/tabs/index.d.ts +1 -0
  72. package/dist/src/components/ui/tabs/tabs.d.ts +6 -0
  73. package/dist/src/components/ui/tabs/tabs.docs.d.ts +25 -0
  74. package/dist/src/components/ui/tag/tag.d.ts +1 -1
  75. package/dist/src/components/ui/toast/index.d.ts +1 -0
  76. package/dist/src/components/ui/toast/toast.d.ts +48 -0
  77. package/dist/src/components/ui/toast/toast.docs.d.ts +12 -0
  78. package/dist/src/components/ui/widget-placeholder/index.d.ts +1 -0
  79. package/dist/src/components/ui/widget-placeholder/widget-placeholder.d.ts +18 -0
  80. package/dist/src/components/ui/widget-placeholder/widget-placeholder.docs.d.ts +14 -0
  81. package/dist/src/index.d.ts +13 -0
  82. package/dist/ui-react.css +1 -1
  83. package/package.json +5 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.js","sources":["../../../../src/components/ui/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Menu as MenuPrimitive } from '@base-ui/react/menu';\nimport { CheckIcon, ChevronRightIcon } from '@acronis-platform/icons-react/stroke-mono';\n\nimport { cn } from '@/lib/utils';\n\n// Ported from `@acronis-platform/shadcn-uikit`'s `dropdown-menu`\n// (packages/ui-legacy/src/components/ui/dropdown-menu.tsx). A menu of actions\n// anchored to a trigger, built on the Base UI Menu primitive (positioning, focus\n// management, typeahead, outside-press / Esc dismissal, ARIA). No `--ui-menu-*`\n// token tier exists yet, so this design-pending v1 themes from the shared\n// semantic tokens:\n// • popup surface -> bg-background / text-foreground / border-border, shadow-md\n// (legacy `bg-popover` / `text-popover-foreground` have no ui-react bridge)\n// • item highlight -> bg-accent on data-[highlighted] (Base UI sets it on both\n// pointer hover and keyboard nav; replaces legacy hover:bg-primary/10)\n// • separator -> bg-border · shortcut -> text-muted-foreground (no opacity hack)\n// Enter/exit animations use `tw-animate-css` keyed to data-[open]/[closed]/[side].\n// Reconcile with `/figma-component DropdownMenu <url> --update` once a mockup lands.\n\nconst DropdownMenu = MenuPrimitive.Root;\nconst DropdownMenuTrigger = MenuPrimitive.Trigger;\nconst DropdownMenuGroup = MenuPrimitive.Group;\nconst DropdownMenuPortal = MenuPrimitive.Portal;\nconst DropdownMenuSub = MenuPrimitive.SubmenuRoot;\nconst DropdownMenuRadioGroup = MenuPrimitive.RadioGroup;\n\nconst popupClassName =\n 'z-50 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border border-border bg-background py-1 text-foreground shadow-md outline-none duration-200 data-[open]:animate-in data-[closed]:animate-out data-[open]:fade-in-0 data-[closed]:fade-out-0 data-[open]:zoom-in-95 data-[closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2';\n\nconst itemClassName =\n 'relative flex cursor-default select-none items-center gap-2 px-4 py-2 text-sm leading-6 outline-none transition-colors data-[highlighted]:bg-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0';\n\nexport interface DropdownMenuContentProps\n extends React.ComponentPropsWithoutRef<typeof MenuPrimitive.Popup> {\n side?: MenuPrimitive.Positioner.Props['side'];\n align?: MenuPrimitive.Positioner.Props['align'];\n sideOffset?: number;\n /** Render inside a portal (default `true`). */\n portal?: boolean;\n /** Portal container — pass a shadow-root mount for isolated-style previews. */\n portalContainer?: MenuPrimitive.Portal.Props['container'];\n keepMounted?: MenuPrimitive.Portal.Props['keepMounted'];\n}\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof MenuPrimitive.Popup>,\n DropdownMenuContentProps\n>(\n (\n {\n className,\n side,\n align,\n sideOffset = 4,\n portal = true,\n portalContainer,\n keepMounted,\n ...props\n },\n ref\n ) => {\n const positioner = (\n <MenuPrimitive.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n className=\"z-50\"\n >\n <MenuPrimitive.Popup\n ref={ref}\n className={cn(popupClassName, className)}\n {...props}\n />\n </MenuPrimitive.Positioner>\n );\n return portal ? (\n <MenuPrimitive.Portal container={portalContainer} keepMounted={keepMounted}>\n {positioner}\n </MenuPrimitive.Portal>\n ) : (\n positioner\n );\n }\n);\nDropdownMenuContent.displayName = 'DropdownMenuContent';\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof MenuPrimitive.Popup>,\n React.ComponentPropsWithoutRef<typeof MenuPrimitive.Popup> & {\n sideOffset?: number;\n }\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <MenuPrimitive.Positioner sideOffset={sideOffset} className=\"z-50\">\n <MenuPrimitive.Popup\n ref={ref}\n className={cn(popupClassName, className)}\n {...props}\n />\n </MenuPrimitive.Positioner>\n));\nDropdownMenuSubContent.displayName = 'DropdownMenuSubContent';\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof MenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof MenuPrimitive.Item> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n <MenuPrimitive.Item\n ref={ref}\n className={cn(itemClassName, inset && 'pl-8', className)}\n {...props}\n />\n));\nDropdownMenuItem.displayName = 'DropdownMenuItem';\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof MenuPrimitive.SubmenuTrigger>,\n React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubmenuTrigger> & {\n inset?: boolean;\n }\n>(({ className, inset, children, ...props }, ref) => (\n <MenuPrimitive.SubmenuTrigger\n ref={ref}\n className={cn(\n itemClassName,\n 'data-[popup-open]:bg-accent',\n inset && 'pl-8',\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </MenuPrimitive.SubmenuTrigger>\n));\nDropdownMenuSubTrigger.displayName = 'DropdownMenuSubTrigger';\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof MenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>\n>(({ className, children, ...props }, ref) => (\n <MenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center py-2 pl-8 pr-4 text-sm leading-6 outline-none transition-colors data-[highlighted]:bg-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <MenuPrimitive.CheckboxItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = 'DropdownMenuCheckboxItem';\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof MenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <MenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center py-2 pl-8 pr-4 text-sm leading-6 outline-none transition-colors data-[highlighted]:bg-accent data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex size-3.5 items-center justify-center\">\n <MenuPrimitive.RadioItemIndicator>\n <span className=\"size-2 rounded-full bg-current\" />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = 'DropdownMenuRadioItem';\n\nconst DropdownMenuLabel = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'px-4 py-2 text-sm font-semibold leading-6',\n inset && 'pl-8',\n className\n )}\n {...props}\n />\n));\nDropdownMenuLabel.displayName = 'DropdownMenuLabel';\n\nconst DropdownMenuSeparator = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n role=\"separator\"\n className={cn('my-1 h-px bg-border', className)}\n {...props}\n />\n));\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator';\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) {\n return (\n <span\n className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)}\n {...props}\n />\n );\n}\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n};\n"],"names":["DropdownMenu","MenuPrimitive","DropdownMenuTrigger","DropdownMenuGroup","DropdownMenuPortal","DropdownMenuSub","DropdownMenuRadioGroup","popupClassName","itemClassName","DropdownMenuContent","React","className","side","align","sideOffset","portal","portalContainer","keepMounted","props","ref","positioner","jsx","cn","DropdownMenuSubContent","DropdownMenuItem","inset","DropdownMenuSubTrigger","children","jsxs","ChevronRightIcon","DropdownMenuCheckboxItem","CheckIcon","DropdownMenuRadioItem","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut"],"mappings":";;;;;AAoBA,MAAMA,IAAeC,EAAc,MAC7BC,IAAsBD,EAAc,SACpCE,IAAoBF,EAAc,OAClCG,IAAqBH,EAAc,QACnCI,IAAkBJ,EAAc,aAChCK,IAAyBL,EAAc,YAEvCM,IACJ,2cAEIC,IACJ,kRAcIC,IAAsBC,EAAM;AAAA,EAIhC,CACE;AAAA,IACE,WAAAC;AAAA,IACA,MAAAC;AAAA,IACA,OAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,QAAAC,IAAS;AAAA,IACT,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IACJ,gBAAAC;AAAA,MAACpB,EAAc;AAAA,MAAd;AAAA,QACC,MAAAW;AAAA,QACA,OAAAC;AAAA,QACA,YAAAC;AAAA,QACA,WAAU;AAAA,QAEV,UAAA,gBAAAO;AAAA,UAACpB,EAAc;AAAA,UAAd;AAAA,YACC,KAAAkB;AAAA,YACA,WAAWG,EAAGf,GAAgBI,CAAS;AAAA,YACtC,GAAGO;AAAA,UAAA;AAAA,QAAA;AAAA,MACN;AAAA,IAAA;AAGJ,WAAOH,sBACJd,EAAc,QAAd,EAAqB,WAAWe,GAAiB,aAAAC,GAC/C,UAAAG,EAAA,CACH,IAEAA;AAAA,EAEJ;AACF;AACAX,EAAoB,cAAc;AAElC,MAAMc,IAAyBb,EAAM,WAKnC,CAAC,EAAE,WAAAC,GAAW,YAAAG,IAAa,GAAG,GAAGI,EAAA,GAASC,MAC1C,gBAAAE,EAACpB,EAAc,YAAd,EAAyB,YAAAa,GAAwB,WAAU,QAC1D,UAAA,gBAAAO;AAAA,EAACpB,EAAc;AAAA,EAAd;AAAA,IACC,KAAAkB;AAAA,IACA,WAAWG,EAAGf,GAAgBI,CAAS;AAAA,IACtC,GAAGO;AAAA,EAAA;AACN,GACF,CACD;AACDK,EAAuB,cAAc;AAErC,MAAMC,IAAmBd,EAAM,WAG7B,CAAC,EAAE,WAAAC,GAAW,OAAAc,GAAO,GAAGP,KAASC,MACjC,gBAAAE;AAAA,EAACpB,EAAc;AAAA,EAAd;AAAA,IACC,KAAAkB;AAAA,IACA,WAAWG,EAAGd,GAAeiB,KAAS,QAAQd,CAAS;AAAA,IACtD,GAAGO;AAAA,EAAA;AACN,CACD;AACDM,EAAiB,cAAc;AAE/B,MAAME,IAAyBhB,EAAM,WAKnC,CAAC,EAAE,WAAAC,GAAW,OAAAc,GAAO,UAAAE,GAAU,GAAGT,KAASC,MAC3C,gBAAAS;AAAA,EAAC3B,EAAc;AAAA,EAAd;AAAA,IACC,KAAAkB;AAAA,IACA,WAAWG;AAAA,MACTd;AAAA,MACA;AAAA,MACAiB,KAAS;AAAA,MACTd;AAAA,IAAA;AAAA,IAED,GAAGO;AAAA,IAEH,UAAA;AAAA,MAAAS;AAAA,MACD,gBAAAN,EAACQ,GAAA,EAAiB,WAAU,UAAA,CAAU;AAAA,IAAA;AAAA,EAAA;AACxC,CACD;AACDH,EAAuB,cAAc;AAErC,MAAMI,IAA2BpB,EAAM,WAGrC,CAAC,EAAE,WAAAC,GAAW,UAAAgB,GAAU,GAAGT,KAASC,MACpC,gBAAAS;AAAA,EAAC3B,EAAc;AAAA,EAAd;AAAA,IACC,KAAAkB;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAX;AAAA,IAAA;AAAA,IAED,GAAGO;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,6DACd,UAAA,gBAAAA,EAACpB,EAAc,uBAAd,EACC,UAAA,gBAAAoB,EAACU,GAAA,EAAU,WAAU,SAAA,CAAS,EAAA,CAChC,GACF;AAAA,MACCJ;AAAA,IAAA;AAAA,EAAA;AACH,CACD;AACDG,EAAyB,cAAc;AAEvC,MAAME,IAAwBtB,EAAM,WAGlC,CAAC,EAAE,WAAAC,GAAW,UAAAgB,GAAU,GAAGT,KAASC,MACpC,gBAAAS;AAAA,EAAC3B,EAAc;AAAA,EAAd;AAAA,IACC,KAAAkB;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAX;AAAA,IAAA;AAAA,IAED,GAAGO;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,6DACd,UAAA,gBAAAA,EAACpB,EAAc,oBAAd,EACC,UAAA,gBAAAoB,EAAC,QAAA,EAAK,WAAU,iCAAA,CAAiC,EAAA,CACnD,GACF;AAAA,MACCM;AAAA,IAAA;AAAA,EAAA;AACH,CACD;AACDK,EAAsB,cAAc;AAEpC,MAAMC,IAAoBvB,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,OAAAc,GAAO,GAAGP,KAASC,MACjC,gBAAAE;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAG,KAAS;AAAA,MACTd;AAAA,IAAA;AAAA,IAED,GAAGO;AAAA,EAAA;AACN,CACD;AACDe,EAAkB,cAAc;AAEhC,MAAMC,IAAwBxB,EAAM,WAGlC,CAAC,EAAE,WAAAC,GAAW,GAAGO,EAAA,GAASC,MAC1B,gBAAAE;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,MAAK;AAAA,IACL,WAAWG,EAAG,uBAAuBX,CAAS;AAAA,IAC7C,GAAGO;AAAA,EAAA;AACN,CACD;AACDgB,EAAsB,cAAc;AAEpC,SAASC,EAAqB;AAAA,EAC5B,WAAAxB;AAAA,EACA,GAAGO;AACL,GAA0C;AACxC,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAG,yDAAyDX,CAAS;AAAA,MAC/E,GAAGO;AAAA,IAAA;AAAA,EAAA;AAGV;AACAiB,EAAqB,cAAc;"}
@@ -0,0 +1,78 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import * as m from "react";
3
+ import { cn as l } from "../../../lib/utils.js";
4
+ const r = m.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a(
5
+ "div",
6
+ {
7
+ ref: s,
8
+ className: l(
9
+ "flex w-full max-w-[448px] flex-col items-center justify-center text-center text-muted-foreground",
10
+ e
11
+ ),
12
+ ...t
13
+ }
14
+ ));
15
+ r.displayName = "Empty";
16
+ const o = m.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a(
17
+ "div",
18
+ {
19
+ ref: s,
20
+ className: l(
21
+ "mb-4 flex size-[72px] items-center justify-center [&_svg]:size-full",
22
+ e
23
+ ),
24
+ ...t
25
+ }
26
+ ));
27
+ o.displayName = "EmptyIcon";
28
+ const i = m.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a(
29
+ "div",
30
+ {
31
+ ref: s,
32
+ className: l(
33
+ "flex w-full flex-col items-center gap-2 text-center",
34
+ e
35
+ ),
36
+ ...t
37
+ }
38
+ ));
39
+ i.displayName = "EmptyHeader";
40
+ const c = m.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a(
41
+ "h3",
42
+ {
43
+ ref: s,
44
+ className: l("text-lg font-normal leading-6 text-foreground", e),
45
+ ...t
46
+ }
47
+ ));
48
+ c.displayName = "EmptyTitle";
49
+ const f = m.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a("p", { ref: s, className: l("text-sm leading-6", e), ...t }));
50
+ f.displayName = "EmptyDescription";
51
+ const p = m.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a(
52
+ "div",
53
+ {
54
+ ref: s,
55
+ className: l("mt-4 flex flex-col items-center gap-4", e),
56
+ ...t
57
+ }
58
+ ));
59
+ p.displayName = "EmptyActions";
60
+ const n = m.forwardRef(({ className: e, ...t }, s) => /* @__PURE__ */ a(
61
+ "div",
62
+ {
63
+ ref: s,
64
+ className: l("flex flex-col items-center gap-2", e),
65
+ ...t
66
+ }
67
+ ));
68
+ n.displayName = "EmptyLinks";
69
+ export {
70
+ r as Empty,
71
+ p as EmptyActions,
72
+ f as EmptyDescription,
73
+ i as EmptyHeader,
74
+ o as EmptyIcon,
75
+ n as EmptyLinks,
76
+ c as EmptyTitle
77
+ };
78
+ //# sourceMappingURL=empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty.js","sources":["../../../../src/components/ui/empty/empty.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n// Composable empty-state parts ported from `@acronis-platform/shadcn-uikit`'s\n// `empty` (packages/ui-legacy/src/components/ui/empty.tsx). Plain styled\n// elements — no Base UI primitive. No `--ui-empty-*` token tier exists yet, so\n// this design-pending v1 themes from the shared semantic text tokens:\n// • title -> text-foreground (--ui-text-on-surface-primary)\n// • description / icon -> text-muted-foreground (--ui-text-on-surface-secondary)\n// (Legacy used a single `--empty-foreground` for the whole block; this splits it\n// into an emphasized title over muted supporting content.) The legacy\n// `--empty-icon-size` (72px) becomes a fixed size. Reconcile with\n// `/figma-component Empty <url> --update` once a mockup lands.\n\nconst Empty = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex w-full max-w-[448px] flex-col items-center justify-center text-center text-muted-foreground',\n className\n )}\n {...props}\n />\n));\nEmpty.displayName = 'Empty';\n\nconst EmptyIcon = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'mb-4 flex size-[72px] items-center justify-center [&_svg]:size-full',\n className\n )}\n {...props}\n />\n));\nEmptyIcon.displayName = 'EmptyIcon';\n\nconst EmptyHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex w-full flex-col items-center gap-2 text-center',\n className\n )}\n {...props}\n />\n));\nEmptyHeader.displayName = 'EmptyHeader';\n\nconst EmptyTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn('text-lg font-normal leading-6 text-foreground', className)}\n {...props}\n />\n));\nEmptyTitle.displayName = 'EmptyTitle';\n\nconst EmptyDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p ref={ref} className={cn('text-sm leading-6', className)} {...props} />\n));\nEmptyDescription.displayName = 'EmptyDescription';\n\nconst EmptyActions = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('mt-4 flex flex-col items-center gap-4', className)}\n {...props}\n />\n));\nEmptyActions.displayName = 'EmptyActions';\n\nconst EmptyLinks = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('flex flex-col items-center gap-2', className)}\n {...props}\n />\n));\nEmptyLinks.displayName = 'EmptyLinks';\n\nexport {\n Empty,\n EmptyIcon,\n EmptyHeader,\n EmptyTitle,\n EmptyDescription,\n EmptyActions,\n EmptyLinks,\n};\n"],"names":["Empty","React","className","props","ref","jsx","cn","EmptyIcon","EmptyHeader","EmptyTitle","EmptyDescription","EmptyActions","EmptyLinks"],"mappings":";;;AAeA,MAAMA,IAAQC,EAAM,WAGlB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAM,cAAc;AAEpB,MAAMO,IAAYN,EAAM,WAGtB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDI,EAAU,cAAc;AAExB,MAAMC,IAAcP,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDK,EAAY,cAAc;AAE1B,MAAMC,IAAaR,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,iDAAiDJ,CAAS;AAAA,IACvE,GAAGC;AAAA,EAAA;AACN,CACD;AACDM,EAAW,cAAc;AAEzB,MAAMC,IAAmBT,EAAM,WAG7B,CAAC,EAAE,WAAAC,GAAW,GAAGC,KAASC,wBACzB,KAAA,EAAE,KAAAA,GAAU,WAAWE,EAAG,qBAAqBJ,CAAS,GAAI,GAAGC,GAAO,CACxE;AACDO,EAAiB,cAAc;AAE/B,MAAMC,IAAeV,EAAM,WAGzB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,yCAAyCJ,CAAS;AAAA,IAC/D,GAAGC;AAAA,EAAA;AACN,CACD;AACDQ,EAAa,cAAc;AAE3B,MAAMC,IAAaX,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,oCAAoCJ,CAAS;AAAA,IAC1D,GAAGC;AAAA,EAAA;AACN,CACD;AACDS,EAAW,cAAc;"}
@@ -0,0 +1,12 @@
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import * as r from "react";
3
+ import { cn as s } from "../../../lib/utils.js";
4
+ const m = "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", t = r.forwardRef(
5
+ ({ className: e, ...a }, o) => /* @__PURE__ */ l("label", { ref: o, className: s(m, e), ...a })
6
+ );
7
+ t.displayName = "Label";
8
+ export {
9
+ t as Label,
10
+ m as labelClassName
11
+ };
12
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sources":["../../../../src/components/ui/label/label.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n// Ported from `@acronis-platform/shadcn-uikit`'s `label`\n// (packages/ui-legacy/src/components/ui/label.tsx). A caption for a form\n// control — a plain `<label>`, no Base UI primitive. The text color is\n// inherited (`text-foreground` from context), so no `--ui-label-*` tier is\n// needed. `peer-disabled:*` dims the label when an associated `peer`-marked\n// control is disabled, mirroring the legacy behavior.\nconst labelClassName =\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70';\n\nexport type LabelProps = React.ComponentPropsWithoutRef<'label'>;\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, ...props }, ref) => (\n <label ref={ref} className={cn(labelClassName, className)} {...props} />\n )\n);\nLabel.displayName = 'Label';\n\nexport { Label, labelClassName };\n"],"names":["labelClassName","Label","React","className","props","ref","jsx","cn"],"mappings":";;;AAUA,MAAMA,IACJ,8FAIIC,IAAQC,EAAM;AAAA,EAClB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MACxB,gBAAAC,EAAC,SAAA,EAAM,KAAAD,GAAU,WAAWE,EAAGP,GAAgBG,CAAS,GAAI,GAAGC,EAAA,CAAO;AAE1E;AACAH,EAAM,cAAc;"}
@@ -0,0 +1,48 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import * as c from "react";
3
+ import { Popover as o } from "@base-ui/react/popover";
4
+ import { cn as f } from "../../../lib/utils.js";
5
+ const v = o.Root, h = o.Trigger, w = o.Portal, P = c.forwardRef(
6
+ ({
7
+ className: r,
8
+ side: a = "bottom",
9
+ align: d = "center",
10
+ sideOffset: n = 4,
11
+ portal: i = !0,
12
+ portalContainer: s,
13
+ keepMounted: m,
14
+ ...p
15
+ }, l) => {
16
+ const e = /* @__PURE__ */ t(
17
+ o.Positioner,
18
+ {
19
+ side: a,
20
+ align: d,
21
+ sideOffset: n,
22
+ className: "z-50",
23
+ children: /* @__PURE__ */ t(
24
+ o.Popup,
25
+ {
26
+ ref: l,
27
+ className: f(
28
+ "w-72 rounded-md border border-border bg-background p-4 text-foreground shadow-md outline-none",
29
+ "duration-200 data-[open]:animate-in data-[closed]:animate-out data-[open]:fade-in-0 data-[closed]:fade-out-0 data-[open]:zoom-in-95 data-[closed]:zoom-out-95",
30
+ "data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2",
31
+ r
32
+ ),
33
+ ...p
34
+ }
35
+ )
36
+ }
37
+ );
38
+ return i ? /* @__PURE__ */ t(o.Portal, { container: s, keepMounted: m, children: e }) : e;
39
+ }
40
+ );
41
+ P.displayName = "PopoverContent";
42
+ export {
43
+ v as Popover,
44
+ P as PopoverContent,
45
+ w as PopoverPortal,
46
+ h as PopoverTrigger
47
+ };
48
+ //# sourceMappingURL=popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover.js","sources":["../../../../src/components/ui/popover/popover.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Popover as PopoverPrimitive } from '@base-ui/react/popover';\n\nimport { cn } from '@/lib/utils';\n\n// Ported from `@acronis-platform/shadcn-uikit`'s `popover`\n// (packages/ui-legacy/src/components/ui/popover.tsx). A floating panel anchored\n// to a trigger, built on the Base UI Popover primitive (positioning, focus\n// management, outside-press / Esc dismissal, ARIA come from Base UI). No\n// `--ui-popover-*` token tier exists yet, so this design-pending v1 themes from\n// the shared semantic tokens:\n// • surface -> bg-background (--ui-background-surface-primary) (legacy `bg-popover`)\n// • text -> text-foreground (--ui-text-on-surface-primary) (legacy `text-popover-foreground`)\n// • border -> border-border (--ui-border-on-surface-border) (legacy bare `border`)\n// Enter/exit animations use `tw-animate-css` keyed to Base UI's data-[open] /\n// data-[closed] / data-[side] attributes. Reconcile (and a possible\n// `--ui-popover-*` tier) with `/figma-component Popover <url> --update`.\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverPortal = PopoverPrimitive.Portal;\n\nexport interface PopoverContentProps\n extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Popup> {\n /** Which side of the trigger to render on. */\n side?: PopoverPrimitive.Positioner.Props['side'];\n /** Alignment along the chosen side. */\n align?: PopoverPrimitive.Positioner.Props['align'];\n /** Distance in px from the trigger. */\n sideOffset?: number;\n /**\n * Render inside a portal (default `true`). Set `false` for inline usage\n * (e.g. when supplying your own `PopoverPortal`).\n */\n portal?: boolean;\n /**\n * Portal container. Pass a shadow-root mount for isolated-style previews\n * (the docs demos do this via `useShadowMount`).\n */\n portalContainer?: PopoverPrimitive.Portal.Props['container'];\n /** Keep the content mounted while closed (Base UI `Portal` prop). */\n keepMounted?: PopoverPrimitive.Portal.Props['keepMounted'];\n}\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Popup>,\n PopoverContentProps\n>(\n (\n {\n className,\n side = 'bottom',\n align = 'center',\n sideOffset = 4,\n portal = true,\n portalContainer,\n keepMounted,\n ...props\n },\n ref\n ) => {\n const positioner = (\n <PopoverPrimitive.Positioner\n side={side}\n align={align}\n sideOffset={sideOffset}\n className=\"z-50\"\n >\n <PopoverPrimitive.Popup\n ref={ref}\n className={cn(\n 'w-72 rounded-md border border-border bg-background p-4 text-foreground shadow-md outline-none',\n 'duration-200 data-[open]:animate-in data-[closed]:animate-out data-[open]:fade-in-0 data-[closed]:fade-out-0 data-[open]:zoom-in-95 data-[closed]:zoom-out-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Positioner>\n );\n\n return portal ? (\n <PopoverPrimitive.Portal container={portalContainer} keepMounted={keepMounted}>\n {positioner}\n </PopoverPrimitive.Portal>\n ) : (\n positioner\n );\n }\n);\nPopoverContent.displayName = 'PopoverContent';\n\nexport { Popover, PopoverTrigger, PopoverPortal, PopoverContent };\n"],"names":["Popover","PopoverPrimitive","PopoverTrigger","PopoverPortal","PopoverContent","React","className","side","align","sideOffset","portal","portalContainer","keepMounted","props","ref","positioner","jsx","cn"],"mappings":";;;;AAkBA,MAAMA,IAAUC,EAAiB,MAE3BC,IAAiBD,EAAiB,SAElCE,IAAgBF,EAAiB,QAwBjCG,IAAiBC,EAAM;AAAA,EAI3B,CACE;AAAA,IACE,WAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,YAAAC,IAAa;AAAA,IACb,QAAAC,IAAS;AAAA,IACT,iBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IACJ,gBAAAC;AAAA,MAACf,EAAiB;AAAA,MAAjB;AAAA,QACC,MAAAM;AAAA,QACA,OAAAC;AAAA,QACA,YAAAC;AAAA,QACA,WAAU;AAAA,QAEV,UAAA,gBAAAO;AAAA,UAACf,EAAiB;AAAA,UAAjB;AAAA,YACC,KAAAa;AAAA,YACA,WAAWG;AAAA,cACT;AAAA,cACA;AAAA,cACA;AAAA,cACAX;AAAA,YAAA;AAAA,YAED,GAAGO;AAAA,UAAA;AAAA,QAAA;AAAA,MACN;AAAA,IAAA;AAIJ,WAAOH,sBACJT,EAAiB,QAAjB,EAAwB,WAAWU,GAAiB,aAAAC,GAClD,UAAAG,EAAA,CACH,IAEAA;AAAA,EAEJ;AACF;AACAX,EAAe,cAAc;"}
@@ -0,0 +1,30 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import * as i from "react";
3
+ import { Progress as r } from "@base-ui/react";
4
+ import { cn as n } from "../../../lib/utils.js";
5
+ const s = i.forwardRef(
6
+ ({ className: o, value: a, ...l }, t) => /* @__PURE__ */ e(
7
+ r.Root,
8
+ {
9
+ ref: t,
10
+ value: a ?? null,
11
+ className: n(
12
+ "relative h-2 w-full overflow-hidden rounded-full",
13
+ o
14
+ ),
15
+ ...l,
16
+ children: /* @__PURE__ */ e(r.Track, { className: "relative h-full w-full overflow-hidden bg-input", children: /* @__PURE__ */ e(
17
+ r.Indicator,
18
+ {
19
+ className: "h-full bg-secondary transition-all data-[indeterminate]:animate-indeterminate-progress data-[indeterminate]:transition-none",
20
+ style: a == null ? { width: "33%" } : void 0
21
+ }
22
+ ) })
23
+ }
24
+ )
25
+ );
26
+ s.displayName = "Progress";
27
+ export {
28
+ s as Progress
29
+ };
30
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sources":["../../../../src/components/ui/progress/progress.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Progress as ProgressPrimitive } from '@base-ui/react';\n\nimport { cn } from '@/lib/utils';\n\n// Ported from `@acronis-platform/shadcn-uikit`'s `progress`\n// (packages/ui-legacy/src/components/ui/progress.tsx). Wraps Base UI's Progress\n// primitive (Root → Track → Indicator). No `--ui-progress-*` tier yet: the\n// track uses the shared border token via `bg-input`, and the filled indicator\n// uses the brand action blue via `bg-secondary` (--ui-background-brand-secondary,\n// the same remap Spinner uses — ui-react's `primary` is the dark navy, not the\n// action color legacy's `bg-primary` meant). When `value` is `null` the bar is\n// indeterminate: Base UI sets `data-indeterminate`, which swaps the determinate\n// width transition for the sliding `indeterminate-progress` keyframe (registered\n// in src/styles/index.css).\n// Base UI types `value` as required; we make it optional so `<Progress />`\n// renders an indeterminate bar (the `value ?? null` below normalizes it).\nexport type ProgressProps = Omit<\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>,\n 'value'\n> & {\n value?: number | null;\n};\n\nconst Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n ({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n value={value ?? null}\n className={cn(\n 'relative h-2 w-full overflow-hidden rounded-full',\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Track className=\"relative h-full w-full overflow-hidden bg-input\">\n <ProgressPrimitive.Indicator\n className=\"h-full bg-secondary transition-all data-[indeterminate]:animate-indeterminate-progress data-[indeterminate]:transition-none\"\n style={value == null ? { width: '33%' } : undefined}\n />\n </ProgressPrimitive.Track>\n </ProgressPrimitive.Root>\n )\n);\nProgress.displayName = 'Progress';\n\nexport { Progress };\n"],"names":["Progress","React","className","value","props","ref","jsx","ProgressPrimitive","cn"],"mappings":";;;;AA0BA,MAAMA,IAAWC,EAAM;AAAA,EACrB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,GAAGC,EAAA,GAASC,MAC/B,gBAAAC;AAAA,IAACC,EAAkB;AAAA,IAAlB;AAAA,MACC,KAAAF;AAAA,MACA,OAAOF,KAAS;AAAA,MAChB,WAAWK;AAAA,QACT;AAAA,QACAN;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,MAEJ,UAAA,gBAAAE,EAACC,EAAkB,OAAlB,EAAwB,WAAU,mDACjC,UAAA,gBAAAD;AAAA,QAACC,EAAkB;AAAA,QAAlB;AAAA,UACC,WAAU;AAAA,UACV,OAAOJ,KAAS,OAAO,EAAE,OAAO,UAAU;AAAA,QAAA;AAAA,MAAA,EAC5C,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;AACAH,EAAS,cAAc;"}
@@ -0,0 +1,22 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import * as m from "react";
3
+ import { Separator as e } from "@base-ui/react/separator";
4
+ import { cn as f } from "../../../lib/utils.js";
5
+ const l = m.forwardRef(({ className: o, orientation: r = "horizontal", ...a }, p) => /* @__PURE__ */ t(
6
+ e,
7
+ {
8
+ ref: p,
9
+ orientation: r,
10
+ className: f(
11
+ "shrink-0 bg-border",
12
+ r === "horizontal" ? "h-px w-full" : "h-full w-px",
13
+ o
14
+ ),
15
+ ...a
16
+ }
17
+ ));
18
+ l.displayName = "Separator";
19
+ export {
20
+ l as Separator
21
+ };
22
+ //# sourceMappingURL=separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.js","sources":["../../../../src/components/ui/separator/separator.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Separator as SeparatorPrimitive } from '@base-ui/react/separator';\n\nimport { cn } from '@/lib/utils';\n\n// Ported from `@acronis-platform/shadcn-uikit`'s `separator`\n// (packages/ui-legacy/src/components/ui/separator.tsx). A thin divider built on\n// the Base UI Separator primitive (sets the `separator` role + aria-orientation).\n// No `--ui-separator-*` tier; the line uses the shared divider token `bg-border`\n// (--ui-border-on-surface-border), replacing the legacy `bg-primary/10` hack.\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive>\n>(({ className, orientation = 'horizontal', ...props }, ref) => (\n <SeparatorPrimitive\n ref={ref}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-px w-full' : 'h-full w-px',\n className\n )}\n {...props}\n />\n));\nSeparator.displayName = 'Separator';\n\nexport { Separator };\n"],"names":["Separator","React","className","orientation","props","ref","jsx","SeparatorPrimitive","cn"],"mappings":";;;;AAWA,MAAMA,IAAYC,EAAM,WAGtB,CAAC,EAAE,WAAAC,GAAW,aAAAC,IAAc,cAAc,GAAGC,KAASC,MACtD,gBAAAC;AAAA,EAACC;AAAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,aAAAF;AAAA,IACA,WAAWK;AAAA,MACT;AAAA,MACAL,MAAgB,eAAe,gBAAgB;AAAA,MAC/CD;AAAA,IAAA;AAAA,IAED,GAAGE;AAAA,EAAA;AACN,CACD;AACDJ,EAAU,cAAc;"}
@@ -0,0 +1,138 @@
1
+ import { jsx as r, jsxs as n, Fragment as u } from "react/jsx-runtime";
2
+ import * as d from "react";
3
+ import { Dialog as a } from "@base-ui/react/dialog";
4
+ import { TimesIcon as b } from "@acronis-platform/icons-react/stroke-mono";
5
+ import { cva as g } from "../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
6
+ import { cn as s } from "../../../lib/utils.js";
7
+ const x = g(
8
+ "fixed z-50 flex flex-col overflow-hidden bg-muted text-foreground shadow-lg duration-300 data-[open]:animate-in data-[closed]:animate-out",
9
+ {
10
+ variants: {
11
+ side: {
12
+ top: "inset-x-0 top-0 max-h-[80vh] border-b border-border data-[open]:slide-in-from-top data-[closed]:slide-out-to-top",
13
+ bottom: "inset-x-0 bottom-0 max-h-[80vh] border-t border-border data-[open]:slide-in-from-bottom data-[closed]:slide-out-to-bottom",
14
+ left: "inset-y-0 left-0 h-full w-3/4 border-r border-border data-[open]:slide-in-from-left data-[closed]:slide-out-to-left sm:max-w-md",
15
+ right: "inset-y-0 right-0 h-full w-3/4 border-l border-border data-[open]:slide-in-from-right data-[closed]:slide-out-to-right sm:max-w-md"
16
+ }
17
+ },
18
+ defaultVariants: {
19
+ side: "right"
20
+ }
21
+ }
22
+ ), j = a.Root, z = a.Trigger, F = a.Portal, H = a.Close, l = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r(
23
+ a.Backdrop,
24
+ {
25
+ ref: t,
26
+ className: s(
27
+ "fixed inset-0 z-50 bg-[var(--ui-background-overlay-primary)] duration-200 data-[open]:animate-in data-[open]:fade-in-0 data-[closed]:animate-out data-[closed]:fade-out-0",
28
+ e
29
+ ),
30
+ ...o
31
+ }
32
+ ));
33
+ l.displayName = "SheetOverlay";
34
+ const y = d.forwardRef(
35
+ ({
36
+ className: e,
37
+ children: o,
38
+ side: t,
39
+ portal: m = !0,
40
+ portalContainer: f,
41
+ keepMounted: c,
42
+ ...p
43
+ }, h) => {
44
+ const i = /* @__PURE__ */ n(u, { children: [
45
+ /* @__PURE__ */ r(l, {}),
46
+ /* @__PURE__ */ r(
47
+ a.Popup,
48
+ {
49
+ ref: h,
50
+ className: s(x({ side: t }), e),
51
+ ...p,
52
+ children: o
53
+ }
54
+ )
55
+ ] });
56
+ return m ? /* @__PURE__ */ r(a.Portal, { container: f, keepMounted: c, children: i }) : i;
57
+ }
58
+ );
59
+ y.displayName = "SheetContent";
60
+ const S = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r(
61
+ "div",
62
+ {
63
+ ref: t,
64
+ className: s(
65
+ "flex h-16 shrink-0 items-center gap-4 border-b border-border bg-background px-5 py-4",
66
+ e
67
+ ),
68
+ ...o
69
+ }
70
+ ));
71
+ S.displayName = "SheetHeader";
72
+ const v = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r(
73
+ "div",
74
+ {
75
+ ref: t,
76
+ className: s(
77
+ "flex h-16 shrink-0 items-center justify-end gap-4 border-t border-border bg-background px-6 py-4",
78
+ e
79
+ ),
80
+ ...o
81
+ }
82
+ ));
83
+ v.displayName = "SheetFooter";
84
+ const N = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r("div", { ref: t, className: s("flex-1 overflow-auto p-6", e), ...o }));
85
+ N.displayName = "SheetBody";
86
+ const w = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r(
87
+ a.Title,
88
+ {
89
+ ref: t,
90
+ className: s(
91
+ "flex-1 text-lg font-semibold leading-7 text-foreground",
92
+ e
93
+ ),
94
+ ...o
95
+ }
96
+ ));
97
+ w.displayName = "SheetTitle";
98
+ const R = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ r(
99
+ a.Description,
100
+ {
101
+ ref: t,
102
+ className: s("text-sm text-muted-foreground", e),
103
+ ...o
104
+ }
105
+ ));
106
+ R.displayName = "SheetDescription";
107
+ const C = d.forwardRef(({ className: e, ...o }, t) => /* @__PURE__ */ n(
108
+ a.Close,
109
+ {
110
+ ref: t,
111
+ className: s(
112
+ "rounded p-1 text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)] disabled:pointer-events-none",
113
+ e
114
+ ),
115
+ ...o,
116
+ children: [
117
+ /* @__PURE__ */ r(b, { size: 24 }),
118
+ /* @__PURE__ */ r("span", { className: "sr-only", children: "Close" })
119
+ ]
120
+ }
121
+ ));
122
+ C.displayName = "SheetCloseButton";
123
+ export {
124
+ j as Sheet,
125
+ N as SheetBody,
126
+ H as SheetClose,
127
+ C as SheetCloseButton,
128
+ y as SheetContent,
129
+ R as SheetDescription,
130
+ v as SheetFooter,
131
+ S as SheetHeader,
132
+ l as SheetOverlay,
133
+ F as SheetPortal,
134
+ w as SheetTitle,
135
+ z as SheetTrigger,
136
+ x as sheetVariants
137
+ };
138
+ //# sourceMappingURL=sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.js","sources":["../../../../src/components/ui/sheet/sheet.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { TimesIcon } from '@acronis-platform/icons-react/stroke-mono';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\n// Initial version ported from `@acronis-platform/shadcn-uikit`'s `sheet`\n// (packages/ui-legacy/src/components/ui/sheet.tsx). A modal side panel — the\n// same Base UI Dialog primitive the `Dialog` component uses (keyboard, focus\n// trap, scroll lock, ARIA come from Base UI), but anchored to a screen edge with\n// a slide transition. In the Vue kit this was `Details`; it's re-exported under\n// `Details*` aliases for a 1:1 drop-in. No `--ui-sheet-*` token tier exists yet,\n// so this design-pending v1 mirrors the Dialog family's semantic theming:\n// • overlay -> var(--ui-background-overlay-primary)\n// • panel -> bg-muted = --ui-background-surface-secondary\n// • header / footer -> bg-background = --ui-background-surface-primary bars,\n// divided by border-border\n// • title -> text-foreground / description -> text-muted-foreground\n// • close -> text-muted-foreground → hover text-foreground, focus ring\n// var(--ui-focus-primary)\n// Enter/exit slide animations use `tw-animate-css` (imported in styles/index.css),\n// keyed to Base UI's data-[open] / data-[closed] state attributes. Reconcile\n// against the real design with `/figma-component Sheet <url> --update`\n// (Cyber-Compliance node 3442-31542) once the mockup is ready for dev.\n\nconst sheetVariants = cva(\n 'fixed z-50 flex flex-col overflow-hidden bg-muted text-foreground shadow-lg duration-300 data-[open]:animate-in data-[closed]:animate-out',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 max-h-[80vh] border-b border-border data-[open]:slide-in-from-top data-[closed]:slide-out-to-top',\n bottom:\n 'inset-x-0 bottom-0 max-h-[80vh] border-t border-border data-[open]:slide-in-from-bottom data-[closed]:slide-out-to-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r border-border data-[open]:slide-in-from-left data-[closed]:slide-out-to-left sm:max-w-md',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l border-border data-[open]:slide-in-from-right data-[closed]:slide-out-to-right sm:max-w-md',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n }\n);\n\nconst Sheet = DialogPrimitive.Root;\n\nconst SheetTrigger = DialogPrimitive.Trigger;\n\nconst SheetPortal = DialogPrimitive.Portal;\n\nconst SheetClose = DialogPrimitive.Close;\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Backdrop>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Backdrop>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Backdrop\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-[var(--ui-background-overlay-primary)] duration-200 data-[open]:animate-in data-[open]:fade-in-0 data-[closed]:animate-out data-[closed]:fade-out-0',\n className\n )}\n {...props}\n />\n));\nSheetOverlay.displayName = 'SheetOverlay';\n\nexport interface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Popup>,\n VariantProps<typeof sheetVariants> {\n /** Screen edge the panel anchors to. Defaults to `right`. */\n side?: VariantProps<typeof sheetVariants>['side'];\n /**\n * Render the content inside a portal (default `true`). Base UI requires the\n * Popup to sit in a Portal for correct stacking; set `false` for inline usage\n * (e.g. when the caller supplies its own `SheetPortal`, or in tests).\n */\n portal?: boolean;\n /**\n * Portal container. Pass a shadow-root mount for isolated-style previews\n * (the docs demos do this via `useShadowMount`).\n */\n portalContainer?: DialogPrimitive.Portal.Props['container'];\n /** Keep the content mounted while closed (Base UI `Portal` prop). */\n keepMounted?: DialogPrimitive.Portal.Props['keepMounted'];\n}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Popup>,\n SheetContentProps\n>(\n (\n {\n className,\n children,\n side,\n portal = true,\n portalContainer,\n keepMounted,\n ...props\n },\n ref\n ) => {\n const popup = (\n <>\n <SheetOverlay />\n <DialogPrimitive.Popup\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n {children}\n </DialogPrimitive.Popup>\n </>\n );\n\n return portal ? (\n <DialogPrimitive.Portal container={portalContainer} keepMounted={keepMounted}>\n {popup}\n </DialogPrimitive.Portal>\n ) : (\n popup\n );\n }\n);\nSheetContent.displayName = 'SheetContent';\n\nconst SheetHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex h-16 shrink-0 items-center gap-4 border-b border-border bg-background px-5 py-4',\n className\n )}\n {...props}\n />\n));\nSheetHeader.displayName = 'SheetHeader';\n\nconst SheetFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'flex h-16 shrink-0 items-center justify-end gap-4 border-t border-border bg-background px-6 py-4',\n className\n )}\n {...props}\n />\n));\nSheetFooter.displayName = 'SheetFooter';\n\nconst SheetBody = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex-1 overflow-auto p-6', className)} {...props} />\n));\nSheetBody.displayName = 'SheetBody';\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n 'flex-1 text-lg font-semibold leading-7 text-foreground',\n className\n )}\n {...props}\n />\n));\nSheetTitle.displayName = 'SheetTitle';\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nSheetDescription.displayName = 'SheetDescription';\n\nconst SheetCloseButton = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Close\n ref={ref}\n className={cn(\n 'rounded p-1 text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)] disabled:pointer-events-none',\n className\n )}\n {...props}\n >\n <TimesIcon size={24} />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n));\nSheetCloseButton.displayName = 'SheetCloseButton';\n\nexport {\n Sheet,\n SheetTrigger,\n SheetPortal,\n SheetClose,\n SheetCloseButton,\n SheetOverlay,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetBody,\n SheetTitle,\n SheetDescription,\n sheetVariants,\n};\n"],"names":["sheetVariants","cva","Sheet","DialogPrimitive","SheetTrigger","SheetPortal","SheetClose","SheetOverlay","React","className","props","ref","jsx","cn","SheetContent","children","side","portal","portalContainer","keepMounted","popup","jsxs","Fragment","SheetHeader","SheetFooter","SheetBody","SheetTitle","SheetDescription","SheetCloseButton","TimesIcon"],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import * as n from "react";
3
+ import { cva as o } from "../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
4
+ import { cn as t } from "../../../lib/utils.js";
5
+ const d = o(
6
+ "inline-block animate-spin rounded-full border-2 border-solid border-current border-r-transparent text-secondary",
7
+ {
8
+ variants: {
9
+ size: {
10
+ sm: "size-4",
11
+ md: "size-6",
12
+ lg: "size-8",
13
+ xl: "size-12"
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ size: "md"
18
+ }
19
+ }
20
+ ), l = n.forwardRef(
21
+ ({ className: e, size: a, ...i }, s) => /* @__PURE__ */ r(
22
+ "div",
23
+ {
24
+ ref: s,
25
+ role: "status",
26
+ "aria-label": "Loading",
27
+ className: t(d({ size: a }), e),
28
+ ...i,
29
+ children: /* @__PURE__ */ r("span", { className: "sr-only", children: "Loading…" })
30
+ }
31
+ )
32
+ );
33
+ l.displayName = "Spinner";
34
+ export {
35
+ l as Spinner,
36
+ d as spinnerVariants
37
+ };
38
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sources":["../../../../src/components/ui/spinner/spinner.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\n// Ported from `@acronis-platform/shadcn-uikit`'s `spinner`\n// (packages/ui-legacy/src/components/ui/spinner.tsx). A CSS loading spinner — no\n// Base UI primitive. No `--ui-spinner-*` tier; the ring color defaults to the\n// brand action blue via `text-secondary` (--ui-background-brand-secondary, used\n// through `border-current`), replacing the legacy `--spinner-color` var.\n// Override the color with a `text-*` class. `size` mirrors the legacy scale.\nconst spinnerVariants = cva(\n 'inline-block animate-spin rounded-full border-2 border-solid border-current border-r-transparent text-secondary',\n {\n variants: {\n size: {\n sm: 'size-4',\n md: 'size-6',\n lg: 'size-8',\n xl: 'size-12',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n }\n);\n\nexport interface SpinnerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof spinnerVariants> {}\n\nconst Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size, ...props }, ref) => (\n <div\n ref={ref}\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(spinnerVariants({ size }), className)}\n {...props}\n >\n <span className=\"sr-only\">Loading…</span>\n </div>\n )\n);\nSpinner.displayName = 'Spinner';\n\nexport { Spinner, spinnerVariants };\n"],"names":["spinnerVariants","cva","Spinner","React","className","size","props","ref","jsx","cn"],"mappings":";;;;AAWA,MAAMA,IAAkBC;AAAA,EACtB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAMMC,IAAUC,EAAM;AAAA,EACpB,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,GAAGC,EAAA,GAASC,MAC9B,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAWE,EAAGT,EAAgB,EAAE,MAAAK,EAAA,CAAM,GAAGD,CAAS;AAAA,MACjD,GAAGE;AAAA,MAEJ,UAAA,gBAAAE,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,WAAA,CAAQ;AAAA,IAAA;AAAA,EAAA;AAGxC;AACAN,EAAQ,cAAc;"}
@@ -0,0 +1,44 @@
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import * as o from "react";
3
+ import { Tabs as a } from "@base-ui/react/tabs";
4
+ import { cn as t } from "../../../lib/utils.js";
5
+ const b = a.Root, n = o.forwardRef(({ className: e, ...s }, r) => /* @__PURE__ */ i(
6
+ a.List,
7
+ {
8
+ ref: r,
9
+ className: t("inline-flex items-stretch rounded-md", e),
10
+ ...s
11
+ }
12
+ ));
13
+ n.displayName = "TabsList";
14
+ const d = o.forwardRef(({ className: e, ...s }, r) => /* @__PURE__ */ i(
15
+ a.Tab,
16
+ {
17
+ ref: r,
18
+ className: t(
19
+ "-mr-px inline-flex flex-1 items-center justify-center whitespace-nowrap border border-secondary px-2 py-1 text-sm font-semibold text-secondary transition-colors first:rounded-l-md last:-mr-0 last:rounded-r-md outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)] disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-secondary data-[active]:text-primary-foreground",
20
+ e
21
+ ),
22
+ ...s
23
+ }
24
+ ));
25
+ d.displayName = "TabsTrigger";
26
+ const m = o.forwardRef(({ className: e, ...s }, r) => /* @__PURE__ */ i(
27
+ a.Panel,
28
+ {
29
+ ref: r,
30
+ className: t(
31
+ "mt-2 outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)]",
32
+ e
33
+ ),
34
+ ...s
35
+ }
36
+ ));
37
+ m.displayName = "TabsContent";
38
+ export {
39
+ b as Tabs,
40
+ m as TabsContent,
41
+ n as TabsList,
42
+ d as TabsTrigger
43
+ };
44
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sources":["../../../../src/components/ui/tabs/tabs.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Tabs as TabsPrimitive } from '@base-ui/react/tabs';\n\nimport { cn } from '@/lib/utils';\n\n// Ported from `@acronis-platform/shadcn-uikit`'s `tabs`\n// (packages/ui-legacy/src/components/ui/tabs.tsx). A bordered segmented-control\n// tab group built on the Base UI Tabs primitive (keyboard nav, roving focus,\n// ARIA come from Base UI). No `--ui-tabs-*` token tier exists yet, so this\n// design-pending v1 themes from the shared semantic tokens:\n// • trigger idle -> border-secondary + text-secondary (brand outline segment)\n// • trigger active -> bg-secondary + text-primary-foreground (data-[active])\n// — pure-white label (glyph-on-brand-primary), like the default Button;\n// NOT text-secondary-foreground, which is a dimmed 60% white.\n// • focus ring -> var(--ui-focus-primary)\n// NB: the brand action blue is the `secondary` bridge (--ui-background-brand-\n// secondary, the same blue Button's primary uses); `primary` bridges to the\n// dark navy --ui-background-brand-primary, so it is NOT used here.\n// The legacy active treatment was a `bg-primary/10` tint; the opacity hack is\n// dropped for a token-pure filled segment. Reconcile (and a possible\n// `--ui-tabs-*` tier / underline-indicator variant) with\n// `/figma-component Tabs <url> --update` once a mockup lands.\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n ref={ref}\n className={cn('inline-flex items-stretch rounded-md', className)}\n {...props}\n />\n));\nTabsList.displayName = 'TabsList';\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Tab>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Tab>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Tab\n ref={ref}\n className={cn(\n '-mr-px inline-flex flex-1 items-center justify-center whitespace-nowrap border border-secondary px-2 py-1 text-sm font-semibold text-secondary transition-colors first:rounded-l-md last:-mr-0 last:rounded-r-md outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)] disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-secondary data-[active]:text-primary-foreground',\n className\n )}\n {...props}\n />\n));\nTabsTrigger.displayName = 'TabsTrigger';\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Panel>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Panel>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Panel\n ref={ref}\n className={cn(\n 'mt-2 outline-none focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)]',\n className\n )}\n {...props}\n />\n));\nTabsContent.displayName = 'TabsContent';\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"],"names":["Tabs","TabsPrimitive","TabsList","React","className","props","ref","jsx","cn","TabsTrigger","TabsContent"],"mappings":";;;;AAuBA,MAAMA,IAAOC,EAAc,MAErBC,IAAWC,EAAM,WAGrB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACN,EAAc;AAAA,EAAd;AAAA,IACC,KAAAK;AAAA,IACA,WAAWE,EAAG,wCAAwCJ,CAAS;AAAA,IAC9D,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAS,cAAc;AAEvB,MAAMO,IAAcN,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACN,EAAc;AAAA,EAAd;AAAA,IACC,KAAAK;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDI,EAAY,cAAc;AAE1B,MAAMC,IAAcP,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACN,EAAc;AAAA,EAAd;AAAA,IACC,KAAAK;AAAA,IACA,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDK,EAAY,cAAc;"}
@@ -0,0 +1,83 @@
1
+ import { jsx as s, jsxs as l } from "react/jsx-runtime";
2
+ import { Toast as o } from "@base-ui/react/toast";
3
+ import { TimesIcon as d, CircleTimesIcon as m, TriangleWarningIcon as u, CircleInfoIcon as f, CircleCheckIcon as g } from "@acronis-platform/icons-react/stroke-mono";
4
+ import { cn as x } from "../../../lib/utils.js";
5
+ import { Spinner as p } from "../spinner/spinner.js";
6
+ const r = o.createToastManager();
7
+ function n(t, e, a = {}) {
8
+ const { action: i, ...c } = a;
9
+ return r.add({
10
+ title: t,
11
+ type: e,
12
+ actionProps: i ? { children: i.label, onClick: i.onClick } : void 0,
13
+ ...c
14
+ });
15
+ }
16
+ const C = Object.assign(
17
+ (t, e) => n(t, void 0, e),
18
+ {
19
+ success: (t, e) => n(t, "success", e),
20
+ info: (t, e) => n(t, "info", e),
21
+ warning: (t, e) => n(t, "warning", e),
22
+ error: (t, e) => n(t, "error", e),
23
+ loading: (t, e) => n(t, "loading", { timeout: 0, ...e }),
24
+ dismiss: (t) => r.close(t),
25
+ promise: r.promise
26
+ }
27
+ ), v = {
28
+ success: /* @__PURE__ */ s(g, { className: "size-4 text-[var(--ui-text-on-status-success)]" }),
29
+ info: /* @__PURE__ */ s(f, { className: "size-4 text-[var(--ui-text-on-status-info)]" }),
30
+ warning: /* @__PURE__ */ s(u, { className: "size-4 text-[var(--ui-text-on-status-warning)]" }),
31
+ error: /* @__PURE__ */ s(m, { className: "size-4 text-[var(--ui-text-on-status-danger)]" }),
32
+ loading: /* @__PURE__ */ s(p, { size: "sm", className: "size-4" })
33
+ };
34
+ function h() {
35
+ const { toasts: t } = o.useToastManager();
36
+ return t.map((e) => {
37
+ const a = v[e.type];
38
+ return /* @__PURE__ */ l(
39
+ o.Root,
40
+ {
41
+ toast: e,
42
+ className: x(
43
+ "relative flex w-full items-start gap-3 rounded border border-border bg-background p-4 shadow-md",
44
+ "transition-all data-[ending-style]:opacity-0 data-[starting-style]:opacity-0",
45
+ "data-[starting-style]:translate-x-4 data-[ending-style]:translate-x-4"
46
+ ),
47
+ children: [
48
+ a ? /* @__PURE__ */ s("span", { className: "mt-0.5 shrink-0", children: a }) : null,
49
+ /* @__PURE__ */ l("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
50
+ /* @__PURE__ */ s(o.Title, { className: "text-sm font-semibold leading-5 text-foreground" }),
51
+ /* @__PURE__ */ s(o.Description, { className: "text-sm leading-5 text-muted-foreground" }),
52
+ e.actionProps ? /* @__PURE__ */ s(o.Action, { className: "mt-1 self-start text-sm font-semibold text-secondary hover:underline" }) : null
53
+ ] }),
54
+ /* @__PURE__ */ s(
55
+ o.Close,
56
+ {
57
+ "aria-label": "Close",
58
+ className: "shrink-0 rounded text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--ui-focus-primary)]",
59
+ children: /* @__PURE__ */ s(d, { className: "size-4" })
60
+ }
61
+ )
62
+ ]
63
+ },
64
+ e.id
65
+ );
66
+ });
67
+ }
68
+ function z({ timeout: t, limit: e, portalContainer: a }) {
69
+ return /* @__PURE__ */ s(
70
+ o.Provider,
71
+ {
72
+ toastManager: r,
73
+ timeout: t,
74
+ limit: e,
75
+ children: /* @__PURE__ */ s(o.Portal, { container: a, children: /* @__PURE__ */ s(o.Viewport, { className: "fixed bottom-4 right-4 z-[100] flex w-[384px] max-w-[calc(100vw-2rem)] flex-col gap-3 outline-none", children: /* @__PURE__ */ s(h, {}) }) })
76
+ }
77
+ );
78
+ }
79
+ export {
80
+ z as Toaster,
81
+ C as toast
82
+ };
83
+ //# sourceMappingURL=toast.js.map