@acronis-platform/ui-react 0.51.0 → 0.53.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 (43) hide show
  1. package/dist/components/ui/app-shell/app-shell.js +75 -0
  2. package/dist/components/ui/app-shell/app-shell.js.map +1 -0
  3. package/dist/components/ui/auth-layout/auth-layout.js +56 -0
  4. package/dist/components/ui/auth-layout/auth-layout.js.map +1 -0
  5. package/dist/components/ui/grid/grid.js +69 -0
  6. package/dist/components/ui/grid/grid.js.map +1 -0
  7. package/dist/components/ui/page-content/page-content.js +19 -0
  8. package/dist/components/ui/page-content/page-content.js.map +1 -0
  9. package/dist/components/ui/page-header/page-header.js +74 -0
  10. package/dist/components/ui/page-header/page-header.js.map +1 -0
  11. package/dist/components/ui/pagination/pagination.js +87 -0
  12. package/dist/components/ui/pagination/pagination.js.map +1 -0
  13. package/dist/components/ui/section/section.js +37 -0
  14. package/dist/components/ui/section/section.js.map +1 -0
  15. package/dist/components/ui/stack/stack.js +61 -0
  16. package/dist/components/ui/stack/stack.js.map +1 -0
  17. package/dist/components/ui/toggle-group/toggle-group.js +47 -0
  18. package/dist/components/ui/toggle-group/toggle-group.js.map +1 -0
  19. package/dist/index.js +343 -298
  20. package/dist/index.js.map +1 -1
  21. package/dist/react.js +343 -298
  22. package/dist/react.js.map +1 -1
  23. package/dist/src/components/ui/app-shell/app-shell.d.ts +8 -0
  24. package/dist/src/components/ui/app-shell/index.d.ts +1 -0
  25. package/dist/src/components/ui/auth-layout/auth-layout.d.ts +6 -0
  26. package/dist/src/components/ui/auth-layout/index.d.ts +1 -0
  27. package/dist/src/components/ui/grid/grid.d.ts +15 -0
  28. package/dist/src/components/ui/grid/index.d.ts +1 -0
  29. package/dist/src/components/ui/page-content/index.d.ts +1 -0
  30. package/dist/src/components/ui/page-content/page-content.d.ts +4 -0
  31. package/dist/src/components/ui/page-header/index.d.ts +1 -0
  32. package/dist/src/components/ui/page-header/page-header.d.ts +8 -0
  33. package/dist/src/components/ui/pagination/index.d.ts +2 -0
  34. package/dist/src/components/ui/pagination/pagination.d.ts +25 -0
  35. package/dist/src/components/ui/section/index.d.ts +1 -0
  36. package/dist/src/components/ui/section/section.d.ts +7 -0
  37. package/dist/src/components/ui/stack/index.d.ts +1 -0
  38. package/dist/src/components/ui/stack/stack.d.ts +13 -0
  39. package/dist/src/components/ui/toggle-group/index.d.ts +1 -0
  40. package/dist/src/components/ui/toggle-group/toggle-group.d.ts +7 -0
  41. package/dist/src/index.d.ts +9 -0
  42. package/dist/ui-react.css +1 -1
  43. package/package.json +1 -1
@@ -0,0 +1,75 @@
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ import * as r from "react";
3
+ import { cn as o } from "../../../lib/utils.js";
4
+ const s = r.forwardRef(({ className: e, ...a }, l) => /* @__PURE__ */ p(
5
+ "div",
6
+ {
7
+ ref: l,
8
+ "data-slot": "app-shell",
9
+ className: o("flex min-h-screen w-full bg-background", e),
10
+ ...a
11
+ }
12
+ ));
13
+ s.displayName = "AppShell";
14
+ const d = r.forwardRef(({ className: e, ...a }, l) => /* @__PURE__ */ p(
15
+ "aside",
16
+ {
17
+ ref: l,
18
+ "data-slot": "app-shell-sidebar",
19
+ className: o("flex shrink-0", e),
20
+ ...a
21
+ }
22
+ ));
23
+ d.displayName = "AppShellSidebar";
24
+ const t = r.forwardRef(({ className: e, ...a }, l) => /* @__PURE__ */ p(
25
+ "div",
26
+ {
27
+ ref: l,
28
+ "data-slot": "app-shell-body",
29
+ className: o("flex min-w-0 flex-1 flex-col", e),
30
+ ...a
31
+ }
32
+ ));
33
+ t.displayName = "AppShellBody";
34
+ const f = r.forwardRef(({ className: e, ...a }, l) => /* @__PURE__ */ p(
35
+ "header",
36
+ {
37
+ ref: l,
38
+ "data-slot": "app-shell-header",
39
+ className: o(
40
+ "sticky top-0 z-10 flex h-16 shrink-0 items-center gap-4 border-b border-border bg-background px-6",
41
+ e
42
+ ),
43
+ ...a
44
+ }
45
+ ));
46
+ f.displayName = "AppShellHeader";
47
+ const i = r.forwardRef(({ className: e, ...a }, l) => /* @__PURE__ */ p(
48
+ "main",
49
+ {
50
+ ref: l,
51
+ "data-slot": "app-shell-main",
52
+ className: o("flex-1 overflow-auto", e),
53
+ ...a
54
+ }
55
+ ));
56
+ i.displayName = "AppShellMain";
57
+ const h = r.forwardRef(({ className: e, ...a }, l) => /* @__PURE__ */ p(
58
+ "footer",
59
+ {
60
+ ref: l,
61
+ "data-slot": "app-shell-footer",
62
+ className: o("shrink-0 border-t border-border bg-background px-6 py-4", e),
63
+ ...a
64
+ }
65
+ ));
66
+ h.displayName = "AppShellFooter";
67
+ export {
68
+ s as AppShell,
69
+ t as AppShellBody,
70
+ h as AppShellFooter,
71
+ f as AppShellHeader,
72
+ i as AppShellMain,
73
+ d as AppShellSidebar
74
+ };
75
+ //# sourceMappingURL=app-shell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-shell.js","sources":["../../../../src/components/ui/app-shell/app-shell.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n// The full-page application scaffold from the Figma App Shell (node 2782-1495):\n// a left sidebar column (holds SidebarPrimary, optionally a secondary menu) beside\n// a body column of a sticky header (with the global search) over the scrolling\n// main content. Layout-only — the rich parts come from SidebarPrimary /\n// SidebarSecondary / SearchGlobal placed inside these slots. Surfaces use the\n// shared `--ui-*` tokens (bg-background / border-border; a bare `border` is\n// transparent in ui-react, so borders name `border-border`).\n\nconst AppShell = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"app-shell\"\n className={cn('flex min-h-screen w-full bg-background', className)}\n {...props}\n />\n));\nAppShell.displayName = 'AppShell';\n\nconst AppShellSidebar = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <aside\n ref={ref}\n data-slot=\"app-shell-sidebar\"\n className={cn('flex shrink-0', className)}\n {...props}\n />\n));\nAppShellSidebar.displayName = 'AppShellSidebar';\n\nconst AppShellBody = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"app-shell-body\"\n className={cn('flex min-w-0 flex-1 flex-col', className)}\n {...props}\n />\n));\nAppShellBody.displayName = 'AppShellBody';\n\nconst AppShellHeader = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <header\n ref={ref}\n data-slot=\"app-shell-header\"\n className={cn(\n 'sticky top-0 z-10 flex h-16 shrink-0 items-center gap-4 border-b border-border bg-background px-6',\n className\n )}\n {...props}\n />\n));\nAppShellHeader.displayName = 'AppShellHeader';\n\nconst AppShellMain = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <main\n ref={ref}\n data-slot=\"app-shell-main\"\n className={cn('flex-1 overflow-auto', className)}\n {...props}\n />\n));\nAppShellMain.displayName = 'AppShellMain';\n\nconst AppShellFooter = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <footer\n ref={ref}\n data-slot=\"app-shell-footer\"\n className={cn('shrink-0 border-t border-border bg-background px-6 py-4', className)}\n {...props}\n />\n));\nAppShellFooter.displayName = 'AppShellFooter';\n\nexport {\n AppShell,\n AppShellSidebar,\n AppShellBody,\n AppShellHeader,\n AppShellMain,\n AppShellFooter,\n};\n"],"names":["AppShell","React","className","props","ref","jsx","cn","AppShellSidebar","AppShellBody","AppShellHeader","AppShellMain","AppShellFooter"],"mappings":";;;AAYA,MAAMA,IAAWC,EAAM,WAGrB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,0CAA0CJ,CAAS;AAAA,IAChE,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAS,cAAc;AAEvB,MAAMO,IAAkBN,EAAM,WAG5B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,iBAAiBJ,CAAS;AAAA,IACvC,GAAGC;AAAA,EAAA;AACN,CACD;AACDI,EAAgB,cAAc;AAE9B,MAAMC,IAAeP,EAAM,WAGzB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,gCAAgCJ,CAAS;AAAA,IACtD,GAAGC;AAAA,EAAA;AACN,CACD;AACDK,EAAa,cAAc;AAE3B,MAAMC,IAAiBR,EAAM,WAG3B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDM,EAAe,cAAc;AAE7B,MAAMC,IAAeT,EAAM,WAGzB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,wBAAwBJ,CAAS;AAAA,IAC9C,GAAGC;AAAA,EAAA;AACN,CACD;AACDO,EAAa,cAAc;AAE3B,MAAMC,IAAiBV,EAAM,WAG3B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,2DAA2DJ,CAAS;AAAA,IACjF,GAAGC;AAAA,EAAA;AACN,CACD;AACDQ,EAAe,cAAc;"}
@@ -0,0 +1,56 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import * as r from "react";
3
+ import { cn as u } from "../../../lib/utils.js";
4
+ const s = r.forwardRef(({ className: t, ...a }, o) => /* @__PURE__ */ e(
5
+ "div",
6
+ {
7
+ ref: o,
8
+ "data-slot": "auth-layout",
9
+ className: u(
10
+ "flex min-h-screen w-full items-center justify-center bg-background p-4",
11
+ t
12
+ ),
13
+ ...a
14
+ }
15
+ ));
16
+ s.displayName = "AuthLayout";
17
+ const d = r.forwardRef(({ className: t, ...a }, o) => /* @__PURE__ */ e(
18
+ "div",
19
+ {
20
+ ref: o,
21
+ "data-slot": "auth-layout-card",
22
+ className: u(
23
+ "w-full max-w-sm rounded-lg border border-border bg-background p-6 shadow-sm",
24
+ t
25
+ ),
26
+ ...a
27
+ }
28
+ ));
29
+ d.displayName = "AuthLayoutCard";
30
+ const l = r.forwardRef(({ className: t, ...a }, o) => /* @__PURE__ */ e(
31
+ "div",
32
+ {
33
+ ref: o,
34
+ "data-slot": "auth-layout-logo",
35
+ className: u("mb-6 flex justify-center", t),
36
+ ...a
37
+ }
38
+ ));
39
+ l.displayName = "AuthLayoutLogo";
40
+ const m = r.forwardRef(({ className: t, ...a }, o) => /* @__PURE__ */ e(
41
+ "div",
42
+ {
43
+ ref: o,
44
+ "data-slot": "auth-layout-footer",
45
+ className: u("mt-6 text-center text-sm text-muted-foreground", t),
46
+ ...a
47
+ }
48
+ ));
49
+ m.displayName = "AuthLayoutFooter";
50
+ export {
51
+ s as AuthLayout,
52
+ d as AuthLayoutCard,
53
+ m as AuthLayoutFooter,
54
+ l as AuthLayoutLogo
55
+ };
56
+ //# sourceMappingURL=auth-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-layout.js","sources":["../../../../src/components/ui/auth-layout/auth-layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n// A centered card layout for auth flows (sign-in / sign-up / forgot-password /\n// 2FA), reconciled with the Main-menu-improvements Figma (node 4906-362342).\n// Ported from `@acronis-platform`'s `auth-layout`. Token fixes vs legacy: the card\n// uses `bg-background` (legacy `bg-card` isn't bridged in ui-react) and a named\n// `border-border` (a bare `border` is transparent here).\n//\n// Anatomy:\n// AuthLayout (full-page centered)\n// AuthLayoutCard (centered surface card)\n// AuthLayoutLogo (top brand slot)\n// …children (title + form)…\n// AuthLayoutFooter (bottom links)\n\nconst AuthLayout = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"auth-layout\"\n className={cn(\n 'flex min-h-screen w-full items-center justify-center bg-background p-4',\n className\n )}\n {...props}\n />\n));\nAuthLayout.displayName = 'AuthLayout';\n\nconst AuthLayoutCard = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"auth-layout-card\"\n className={cn(\n 'w-full max-w-sm rounded-lg border border-border bg-background p-6 shadow-sm',\n className\n )}\n {...props}\n />\n));\nAuthLayoutCard.displayName = 'AuthLayoutCard';\n\nconst AuthLayoutLogo = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"auth-layout-logo\"\n className={cn('mb-6 flex justify-center', className)}\n {...props}\n />\n));\nAuthLayoutLogo.displayName = 'AuthLayoutLogo';\n\nconst AuthLayoutFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"auth-layout-footer\"\n className={cn('mt-6 text-center text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nAuthLayoutFooter.displayName = 'AuthLayoutFooter';\n\nexport { AuthLayout, AuthLayoutCard, AuthLayoutLogo, AuthLayoutFooter };\n"],"names":["AuthLayout","React","className","props","ref","jsx","cn","AuthLayoutCard","AuthLayoutLogo","AuthLayoutFooter"],"mappings":";;;AAiBA,MAAMA,IAAaC,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAW,cAAc;AAEzB,MAAMO,IAAiBN,EAAM,WAG3B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE;AAAA,MACT;AAAA,MACAJ;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDI,EAAe,cAAc;AAE7B,MAAMC,IAAiBP,EAAM,WAG3B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,4BAA4BJ,CAAS;AAAA,IAClD,GAAGC;AAAA,EAAA;AACN,CACD;AACDK,EAAe,cAAc;AAE7B,MAAMC,IAAmBR,EAAM,WAG7B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,kDAAkDJ,CAAS;AAAA,IACxE,GAAGC;AAAA,EAAA;AACN,CACD;AACDM,EAAiB,cAAc;"}
@@ -0,0 +1,69 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import * as a from "react";
3
+ import { cva as m } from "../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
4
+ import { cn as o } from "../../../lib/utils.js";
5
+ const t = m("grid", {
6
+ variants: {
7
+ cols: {
8
+ 1: "grid-cols-1",
9
+ 2: "grid-cols-1 sm:grid-cols-2",
10
+ 3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
11
+ 4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",
12
+ 6: "grid-cols-2 sm:grid-cols-3 lg:grid-cols-6",
13
+ 12: "grid-cols-4 sm:grid-cols-6 lg:grid-cols-12"
14
+ },
15
+ gap: {
16
+ none: "gap-0",
17
+ sm: "gap-2",
18
+ md: "gap-4",
19
+ lg: "gap-6",
20
+ xl: "gap-8"
21
+ }
22
+ },
23
+ defaultVariants: {
24
+ cols: 3,
25
+ gap: "md"
26
+ }
27
+ }), n = {
28
+ 1: "grid-cols-1",
29
+ 2: "grid-cols-1 @md/grid:grid-cols-2",
30
+ 3: "grid-cols-1 @md/grid:grid-cols-2 @4xl/grid:grid-cols-3",
31
+ 4: "grid-cols-1 @md/grid:grid-cols-2 @4xl/grid:grid-cols-4",
32
+ 6: "grid-cols-2 @lg/grid:grid-cols-3 @4xl/grid:grid-cols-6",
33
+ 12: "grid-cols-4 @lg/grid:grid-cols-6 @4xl/grid:grid-cols-12"
34
+ }, p = {
35
+ none: "gap-0",
36
+ sm: "gap-2",
37
+ md: "gap-4",
38
+ lg: "gap-6",
39
+ xl: "gap-8"
40
+ }, e = a.forwardRef(
41
+ ({ className: g, cols: d = 3, gap: i = "md", container: c, ...s }, l) => c ? /* @__PURE__ */ r("div", { className: "@container/grid", children: /* @__PURE__ */ r(
42
+ "div",
43
+ {
44
+ ref: l,
45
+ "data-slot": "grid",
46
+ className: o(
47
+ "grid",
48
+ p[i ?? "md"],
49
+ n[d ?? 3],
50
+ g
51
+ ),
52
+ ...s
53
+ }
54
+ ) }) : /* @__PURE__ */ r(
55
+ "div",
56
+ {
57
+ ref: l,
58
+ "data-slot": "grid",
59
+ className: o(t({ cols: d, gap: i }), g),
60
+ ...s
61
+ }
62
+ )
63
+ );
64
+ e.displayName = "Grid";
65
+ export {
66
+ e as Grid,
67
+ t as gridVariants
68
+ };
69
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.js","sources":["../../../../src/components/ui/grid/grid.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\n// A responsive CSS-grid layout primitive. By default columns step down at viewport\n// breakpoints. With `container`, the grid is wrapped in a `@container/grid` and its\n// columns respond to the grid's own available width (its column/content area)\n// rather than the viewport — the right behavior for widget grids inside App Shell,\n// whose width shrinks as the sidebar expands.\nconst gridVariants = cva('grid', {\n variants: {\n cols: {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n 6: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-6',\n 12: 'grid-cols-4 sm:grid-cols-6 lg:grid-cols-12',\n },\n gap: {\n none: 'gap-0',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n },\n },\n defaultVariants: {\n cols: 3,\n gap: 'md',\n },\n});\n\n// Container-query column classes (named container `grid`), mirroring the viewport\n// scale above but keyed to the grid's own width.\nconst containerColsClass: Record<NonNullable<GridProps['cols']>, string> = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-1 @md/grid:grid-cols-2',\n 3: 'grid-cols-1 @md/grid:grid-cols-2 @4xl/grid:grid-cols-3',\n 4: 'grid-cols-1 @md/grid:grid-cols-2 @4xl/grid:grid-cols-4',\n 6: 'grid-cols-2 @lg/grid:grid-cols-3 @4xl/grid:grid-cols-6',\n 12: 'grid-cols-4 @lg/grid:grid-cols-6 @4xl/grid:grid-cols-12',\n};\nconst gapClass: Record<NonNullable<GridProps['gap']>, string> = {\n none: 'gap-0',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n};\n\nexport interface GridProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof gridVariants> {\n /**\n * Size columns by the grid's own width (container queries) instead of the\n * viewport. Wraps the grid in a `@container/grid`.\n */\n container?: boolean;\n}\n\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>(\n ({ className, cols = 3, gap = 'md', container, ...props }, ref) => {\n if (container) {\n return (\n <div className=\"@container/grid\">\n <div\n ref={ref}\n data-slot=\"grid\"\n className={cn(\n 'grid',\n gapClass[gap ?? 'md'],\n containerColsClass[cols ?? 3],\n className\n )}\n {...props}\n />\n </div>\n );\n }\n return (\n <div\n ref={ref}\n data-slot=\"grid\"\n className={cn(gridVariants({ cols, gap }), className)}\n {...props}\n />\n );\n }\n);\nGrid.displayName = 'Grid';\n\nexport { Grid, gridVariants };\n"],"names":["gridVariants","cva","containerColsClass","gapClass","Grid","React","className","cols","gap","container","props","ref","jsx","cn"],"mappings":";;;;AAUA,MAAMA,IAAeC,EAAI,QAAQ;AAAA,EAC/B,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,IAAA;AAAA,IAEN,KAAK;AAAA,MACH,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,KAAK;AAAA,EAAA;AAET,CAAC,GAIKC,IAAqE;AAAA,EACzE,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AACN,GACMC,IAA0D;AAAA,EAC9D,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAYMC,IAAOC,EAAM;AAAA,EACjB,CAAC,EAAE,WAAAC,GAAW,MAAAC,IAAO,GAAG,KAAAC,IAAM,MAAM,WAAAC,GAAW,GAAGC,EAAA,GAASC,MACrDF,IAEA,gBAAAG,EAAC,OAAA,EAAI,WAAU,mBACb,UAAA,gBAAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,aAAU;AAAA,MACV,WAAWE;AAAA,QACT;AAAA,QACAV,EAASK,KAAO,IAAI;AAAA,QACpBN,EAAmBK,KAAQ,CAAC;AAAA,QAC5BD;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,IAAA;AAAA,EAAA,GAER,IAIF,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,aAAU;AAAA,MACV,WAAWE,EAAGb,EAAa,EAAE,MAAAO,GAAM,KAAAC,EAAA,CAAK,GAAGF,CAAS;AAAA,MACnD,GAAGI;AAAA,IAAA;AAAA,EAAA;AAIZ;AACAN,EAAK,cAAc;"}
@@ -0,0 +1,19 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import * as r from "react";
3
+ import { cn as m } from "../../../lib/utils.js";
4
+ const n = r.forwardRef(
5
+ ({ className: t, ...o }, a) => /* @__PURE__ */ e(
6
+ "div",
7
+ {
8
+ ref: a,
9
+ "data-slot": "page-content",
10
+ className: m("flex-1 p-6", t),
11
+ ...o
12
+ }
13
+ )
14
+ );
15
+ n.displayName = "PageContent";
16
+ export {
17
+ n as PageContent
18
+ };
19
+ //# sourceMappingURL=page-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-content.js","sources":["../../../../src/components/ui/page-content/page-content.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n// The page content region — the padded gutter for a page's body. Ported from\n// `@acronis-platform`'s `page-content`. Rendered as a `<div>` (not `<main>`) so it\n// nests inside `AppShellMain` without duplicating the `main` landmark; if used\n// standalone, wrap it in your own `<main>`. Layout-only (flex-1 + page padding).\nexport type PageContentProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst PageContent = React.forwardRef<HTMLDivElement, PageContentProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"page-content\"\n className={cn('flex-1 p-6', className)}\n {...props}\n />\n )\n);\nPageContent.displayName = 'PageContent';\n\nexport { PageContent };\n"],"names":["PageContent","React","className","props","ref","jsx","cn"],"mappings":";;;AAUA,MAAMA,IAAcC,EAAM;AAAA,EACxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MACxB,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,aAAU;AAAA,MACV,WAAWE,EAAG,cAAcJ,CAAS;AAAA,MACpC,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AACAH,EAAY,cAAc;"}
@@ -0,0 +1,74 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import * as d from "react";
3
+ import { cn as s } from "../../../lib/utils.js";
4
+ const o = d.forwardRef(({ className: e, ...a }, r) => /* @__PURE__ */ t(
5
+ "div",
6
+ {
7
+ ref: r,
8
+ "data-slot": "page-header",
9
+ role: "banner",
10
+ className: s("flex flex-col gap-2 pb-4", e),
11
+ ...a
12
+ }
13
+ ));
14
+ o.displayName = "PageHeader";
15
+ const i = d.forwardRef(({ className: e, ...a }, r) => /* @__PURE__ */ t(
16
+ "nav",
17
+ {
18
+ ref: r,
19
+ "data-slot": "page-header-breadcrumb",
20
+ "aria-label": "Breadcrumb",
21
+ className: s("text-sm text-muted-foreground", e),
22
+ ...a
23
+ }
24
+ ));
25
+ i.displayName = "PageHeaderBreadcrumb";
26
+ const l = d.forwardRef(({ className: e, ...a }, r) => /* @__PURE__ */ t(
27
+ "div",
28
+ {
29
+ ref: r,
30
+ "data-slot": "page-header-row",
31
+ className: s("flex items-center justify-between gap-4", e),
32
+ ...a
33
+ }
34
+ ));
35
+ l.displayName = "PageHeaderRow";
36
+ const m = d.forwardRef(({ className: e, ...a }, r) => /* @__PURE__ */ t(
37
+ "h1",
38
+ {
39
+ ref: r,
40
+ "data-slot": "page-header-title",
41
+ className: s("text-lg font-semibold leading-tight tracking-tight", e),
42
+ ...a
43
+ }
44
+ ));
45
+ m.displayName = "PageHeaderTitle";
46
+ const c = d.forwardRef(({ className: e, ...a }, r) => /* @__PURE__ */ t(
47
+ "p",
48
+ {
49
+ ref: r,
50
+ "data-slot": "page-header-description",
51
+ className: s("text-sm text-muted-foreground", e),
52
+ ...a
53
+ }
54
+ ));
55
+ c.displayName = "PageHeaderDescription";
56
+ const g = d.forwardRef(({ className: e, ...a }, r) => /* @__PURE__ */ t(
57
+ "div",
58
+ {
59
+ ref: r,
60
+ "data-slot": "page-header-actions",
61
+ className: s("flex shrink-0 items-center gap-2", e),
62
+ ...a
63
+ }
64
+ ));
65
+ g.displayName = "PageHeaderActions";
66
+ export {
67
+ o as PageHeader,
68
+ g as PageHeaderActions,
69
+ i as PageHeaderBreadcrumb,
70
+ c as PageHeaderDescription,
71
+ l as PageHeaderRow,
72
+ m as PageHeaderTitle
73
+ };
74
+ //# sourceMappingURL=page-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-header.js","sources":["../../../../src/components/ui/page-header/page-header.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n// The page header region from the Figma (shadcn-uikit node 2850-701): an optional\n// breadcrumb, a title row (title left, actions right), and an optional description.\n// Ported from `@acronis-platform`'s `page-header` and reconciled with the Figma —\n// the title is a moderate page title (not the legacy 2xl). Markup-only; the only\n// color is the muted breadcrumb/description (text-muted-foreground →\n// --ui-text-on-surface-secondary).\n\nconst PageHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"page-header\"\n role=\"banner\"\n className={cn('flex flex-col gap-2 pb-4', className)}\n {...props}\n />\n));\nPageHeader.displayName = 'PageHeader';\n\nconst PageHeaderBreadcrumb = React.forwardRef<\n HTMLElement,\n React.HTMLAttributes<HTMLElement>\n>(({ className, ...props }, ref) => (\n <nav\n ref={ref}\n data-slot=\"page-header-breadcrumb\"\n aria-label=\"Breadcrumb\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nPageHeaderBreadcrumb.displayName = 'PageHeaderBreadcrumb';\n\n// The title + actions row: title on the left, actions pushed to the right.\nconst PageHeaderRow = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"page-header-row\"\n className={cn('flex items-center justify-between gap-4', className)}\n {...props}\n />\n));\nPageHeaderRow.displayName = 'PageHeaderRow';\n\nconst PageHeaderTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h1\n ref={ref}\n data-slot=\"page-header-title\"\n className={cn('text-lg font-semibold leading-tight tracking-tight', className)}\n {...props}\n />\n));\nPageHeaderTitle.displayName = 'PageHeaderTitle';\n\nconst PageHeaderDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n data-slot=\"page-header-description\"\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nPageHeaderDescription.displayName = 'PageHeaderDescription';\n\nconst PageHeaderActions = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-slot=\"page-header-actions\"\n className={cn('flex shrink-0 items-center gap-2', className)}\n {...props}\n />\n));\nPageHeaderActions.displayName = 'PageHeaderActions';\n\nexport {\n PageHeader,\n PageHeaderBreadcrumb,\n PageHeaderRow,\n PageHeaderTitle,\n PageHeaderDescription,\n PageHeaderActions,\n};\n"],"names":["PageHeader","React","className","props","ref","jsx","cn","PageHeaderBreadcrumb","PageHeaderRow","PageHeaderTitle","PageHeaderDescription","PageHeaderActions"],"mappings":";;;AAWA,MAAMA,IAAaC,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,MAAK;AAAA,IACL,WAAWE,EAAG,4BAA4BJ,CAAS;AAAA,IAClD,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAW,cAAc;AAEzB,MAAMO,IAAuBN,EAAM,WAGjC,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,cAAW;AAAA,IACX,WAAWE,EAAG,iCAAiCJ,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDI,EAAqB,cAAc;AAGnC,MAAMC,IAAgBP,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,2CAA2CJ,CAAS;AAAA,IACjE,GAAGC;AAAA,EAAA;AACN,CACD;AACDK,EAAc,cAAc;AAE5B,MAAMC,IAAkBR,EAAM,WAG5B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,sDAAsDJ,CAAS;AAAA,IAC5E,GAAGC;AAAA,EAAA;AACN,CACD;AACDM,EAAgB,cAAc;AAE9B,MAAMC,IAAwBT,EAAM,WAGlC,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,iCAAiCJ,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDO,EAAsB,cAAc;AAEpC,MAAMC,IAAoBV,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,aAAU;AAAA,IACV,WAAWE,EAAG,oCAAoCJ,CAAS;AAAA,IAC1D,GAAGC;AAAA,EAAA;AACN,CACD;AACDQ,EAAkB,cAAc;"}
@@ -0,0 +1,87 @@
1
+ import { jsx as e, jsxs as s } from "react/jsx-runtime";
2
+ import * as r from "react";
3
+ import { EllipsisIcon as l, ChevronRightIcon as c, ChevronLeftIcon as m } from "@acronis-platform/icons-react/stroke-mono";
4
+ import { cn as t } from "../../../lib/utils.js";
5
+ function y({ className: a, ...i }) {
6
+ return /* @__PURE__ */ e(
7
+ "nav",
8
+ {
9
+ role: "navigation",
10
+ "aria-label": "pagination",
11
+ className: t("mx-auto flex w-full justify-center", a),
12
+ ...i
13
+ }
14
+ );
15
+ }
16
+ const u = r.forwardRef(({ className: a, ...i }, n) => /* @__PURE__ */ e(
17
+ "ul",
18
+ {
19
+ ref: n,
20
+ className: t("flex flex-row items-center gap-1", a),
21
+ ...i
22
+ }
23
+ ));
24
+ u.displayName = "PaginationContent";
25
+ const g = r.forwardRef(({ className: a, ...i }, n) => /* @__PURE__ */ e("li", { ref: n, className: a, ...i }));
26
+ g.displayName = "PaginationItem";
27
+ const f = (a) => t(
28
+ "inline-flex h-8 min-w-8 select-none items-center justify-center rounded-md px-2 text-sm font-medium text-[var(--ui-text-on-surface-primary)] transition-colors outline-none",
29
+ "focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)]",
30
+ a ? "bg-[var(--ui-background-surface-active)]" : "hover:bg-[var(--ui-background-surface-hover)]"
31
+ ), o = ({
32
+ className: a,
33
+ isActive: i,
34
+ ...n
35
+ }) => /* @__PURE__ */ e(
36
+ "a",
37
+ {
38
+ "aria-current": i ? "page" : void 0,
39
+ className: t(f(i), a),
40
+ ...n
41
+ }
42
+ );
43
+ o.displayName = "PaginationLink";
44
+ const p = ({
45
+ className: a,
46
+ ...i
47
+ }) => /* @__PURE__ */ e(
48
+ o,
49
+ {
50
+ "aria-label": "Go to previous page",
51
+ className: a,
52
+ ...i,
53
+ children: /* @__PURE__ */ e(m, { size: 16 })
54
+ }
55
+ );
56
+ p.displayName = "PaginationPrevious";
57
+ const d = ({ className: a, ...i }) => /* @__PURE__ */ e(o, { "aria-label": "Go to next page", className: a, ...i, children: /* @__PURE__ */ e(c, { size: 16 }) });
58
+ d.displayName = "PaginationNext";
59
+ const x = ({
60
+ className: a,
61
+ ...i
62
+ }) => /* @__PURE__ */ s(
63
+ "span",
64
+ {
65
+ "aria-hidden": !0,
66
+ className: t(
67
+ "flex h-8 w-8 items-center justify-center text-[var(--ui-text-on-surface-secondary)]",
68
+ a
69
+ ),
70
+ ...i,
71
+ children: [
72
+ /* @__PURE__ */ e(l, { size: 16 }),
73
+ /* @__PURE__ */ e("span", { className: "sr-only", children: "More pages" })
74
+ ]
75
+ }
76
+ );
77
+ x.displayName = "PaginationEllipsis";
78
+ export {
79
+ y as Pagination,
80
+ u as PaginationContent,
81
+ x as PaginationEllipsis,
82
+ g as PaginationItem,
83
+ o as PaginationLink,
84
+ d as PaginationNext,
85
+ p as PaginationPrevious
86
+ };
87
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sources":["../../../../src/components/ui/pagination/pagination.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n EllipsisIcon,\n} from '@acronis-platform/icons-react/stroke-mono';\n\nimport { cn } from '@/lib/utils';\n\n// Ported from `@acronis-platform`'s `pagination`. Markup-only (no Base UI\n// primitive). The page links are styled directly with semantic tokens (rather than\n// the Button cva, whose min-width tokens don't fit a compact square link): neutral\n// foreground page numbers, the active surface for the current page, and the hover\n// surface on hover.\nfunction Pagination({ className, ...props }: React.ComponentProps<'nav'>) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n />\n );\n}\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<'ul'>\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn('flex flex-row items-center gap-1', className)}\n {...props}\n />\n));\nPaginationContent.displayName = 'PaginationContent';\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<'li'>\n>(({ className, ...props }, ref) => <li ref={ref} className={className} {...props} />);\nPaginationItem.displayName = 'PaginationItem';\n\nexport interface PaginationLinkProps extends React.ComponentProps<'a'> {\n /** Marks the current page (sets aria-current and the selected treatment). */\n isActive?: boolean;\n}\n\nconst paginationLinkClassName = (isActive?: boolean) =>\n cn(\n 'inline-flex h-8 min-w-8 select-none items-center justify-center rounded-md px-2 text-sm font-medium text-[var(--ui-text-on-surface-primary)] transition-colors outline-none',\n 'focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)]',\n isActive\n ? 'bg-[var(--ui-background-surface-active)]'\n : 'hover:bg-[var(--ui-background-surface-hover)]'\n );\n\nconst PaginationLink = ({\n className,\n isActive,\n ...props\n}: PaginationLinkProps) => (\n <a\n aria-current={isActive ? 'page' : undefined}\n className={cn(paginationLinkClassName(isActive), className)}\n {...props}\n />\n);\nPaginationLink.displayName = 'PaginationLink';\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: PaginationLinkProps) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n className={className}\n {...props}\n >\n <ChevronLeftIcon size={16} />\n </PaginationLink>\n);\nPaginationPrevious.displayName = 'PaginationPrevious';\n\nconst PaginationNext = ({ className, ...props }: PaginationLinkProps) => (\n <PaginationLink aria-label=\"Go to next page\" className={className} {...props}>\n <ChevronRightIcon size={16} />\n </PaginationLink>\n);\nPaginationNext.displayName = 'PaginationNext';\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<'span'>) => (\n <span\n aria-hidden\n className={cn(\n 'flex h-8 w-8 items-center justify-center text-[var(--ui-text-on-surface-secondary)]',\n className\n )}\n {...props}\n >\n <EllipsisIcon size={16} />\n <span className=\"sr-only\">More pages</span>\n </span>\n);\nPaginationEllipsis.displayName = 'PaginationEllipsis';\n\nexport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n};\n"],"names":["Pagination","className","props","jsx","cn","PaginationContent","React","ref","PaginationItem","paginationLinkClassName","isActive","PaginationLink","PaginationPrevious","ChevronLeftIcon","PaginationNext","ChevronRightIcon","PaginationEllipsis","jsxs","EllipsisIcon"],"mappings":";;;;AAcA,SAASA,EAAW,EAAE,WAAAC,GAAW,GAAGC,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAWC,EAAG,sCAAsCH,CAAS;AAAA,MAC5D,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,MAAMG,IAAoBC,EAAM,WAG9B,CAAC,EAAE,WAAAL,GAAW,GAAGC,EAAA,GAASK,MAC1B,gBAAAJ;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAI;AAAA,IACA,WAAWH,EAAG,oCAAoCH,CAAS;AAAA,IAC1D,GAAGC;AAAA,EAAA;AACN,CACD;AACDG,EAAkB,cAAc;AAEhC,MAAMG,IAAiBF,EAAM,WAG3B,CAAC,EAAE,WAAAL,GAAW,GAAGC,EAAA,GAASK,wBAAS,MAAA,EAAG,KAAAA,GAAU,WAAAN,GAAuB,GAAGC,GAAO,CAAE;AACrFM,EAAe,cAAc;AAO7B,MAAMC,IAA0B,CAACC,MAC/BN;AAAA,EACE;AAAA,EACA;AAAA,EACAM,IACI,6CACA;AACN,GAEIC,IAAiB,CAAC;AAAA,EACtB,WAAAV;AAAA,EACA,UAAAS;AAAA,EACA,GAAGR;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,gBAAcO,IAAW,SAAS;AAAA,IAClC,WAAWN,EAAGK,EAAwBC,CAAQ,GAAGT,CAAS;AAAA,IACzD,GAAGC;AAAA,EAAA;AACN;AAEFS,EAAe,cAAc;AAE7B,MAAMC,IAAqB,CAAC;AAAA,EAC1B,WAAAX;AAAA,EACA,GAAGC;AACL,MACE,gBAAAC;AAAA,EAACQ;AAAA,EAAA;AAAA,IACC,cAAW;AAAA,IACX,WAAAV;AAAA,IACC,GAAGC;AAAA,IAEJ,UAAA,gBAAAC,EAACU,GAAA,EAAgB,MAAM,GAAA,CAAI;AAAA,EAAA;AAC7B;AAEFD,EAAmB,cAAc;AAEjC,MAAME,IAAiB,CAAC,EAAE,WAAAb,GAAW,GAAGC,EAAA,MACtC,gBAAAC,EAACQ,GAAA,EAAe,cAAW,mBAAkB,WAAAV,GAAuB,GAAGC,GACrE,4BAACa,GAAA,EAAiB,MAAM,IAAI,EAAA,CAC9B;AAEFD,EAAe,cAAc;AAE7B,MAAME,IAAqB,CAAC;AAAA,EAC1B,WAAAf;AAAA,EACA,GAAGC;AACL,MACE,gBAAAe;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,eAAW;AAAA,IACX,WAAWb;AAAA,MACT;AAAA,MACAH;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAC,EAACe,GAAA,EAAa,MAAM,GAAA,CAAI;AAAA,MACxB,gBAAAf,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,aAAA,CAAU;AAAA,IAAA;AAAA,EAAA;AACtC;AAEFa,EAAmB,cAAc;"}
@@ -0,0 +1,37 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import * as i from "react";
3
+ import { cn as n } from "../../../lib/utils.js";
4
+ const s = i.forwardRef(
5
+ ({ className: e, ...t }, o) => /* @__PURE__ */ a("section", { ref: o, className: n("space-y-4", e), ...t })
6
+ );
7
+ s.displayName = "Section";
8
+ const c = i.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a("div", { ref: o, className: n("space-y-1", e), ...t }));
9
+ c.displayName = "SectionHeader";
10
+ const r = i.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
11
+ "h2",
12
+ {
13
+ ref: o,
14
+ className: n("text-lg font-semibold leading-none tracking-tight", e),
15
+ ...t
16
+ }
17
+ ));
18
+ r.displayName = "SectionTitle";
19
+ const m = i.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a(
20
+ "p",
21
+ {
22
+ ref: o,
23
+ className: n("text-sm text-muted-foreground", e),
24
+ ...t
25
+ }
26
+ ));
27
+ m.displayName = "SectionDescription";
28
+ const d = i.forwardRef(({ className: e, ...t }, o) => /* @__PURE__ */ a("div", { ref: o, className: n("pt-2", e), ...t }));
29
+ d.displayName = "SectionContent";
30
+ export {
31
+ s as Section,
32
+ d as SectionContent,
33
+ m as SectionDescription,
34
+ c as SectionHeader,
35
+ r as SectionTitle
36
+ };
37
+ //# sourceMappingURL=section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"section.js","sources":["../../../../src/components/ui/section/section.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n// Ported 1:1 from `@acronis-platform`'s `section`. A titled content block —\n// semantic markup parts; the only color is the muted description\n// (`text-muted-foreground` → --ui-text-on-surface-secondary).\nconst Section = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n ({ className, ...props }, ref) => (\n <section ref={ref} className={cn('space-y-4', className)} {...props} />\n )\n);\nSection.displayName = 'Section';\n\nconst SectionHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('space-y-1', className)} {...props} />\n));\nSectionHeader.displayName = 'SectionHeader';\n\nconst SectionTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h2\n ref={ref}\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nSectionTitle.displayName = 'SectionTitle';\n\nconst SectionDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n));\nSectionDescription.displayName = 'SectionDescription';\n\nconst SectionContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('pt-2', className)} {...props} />\n));\nSectionContent.displayName = 'SectionContent';\n\nexport {\n Section,\n SectionHeader,\n SectionTitle,\n SectionDescription,\n SectionContent,\n};\n"],"names":["Section","React","className","props","ref","jsx","cn","SectionHeader","SectionTitle","SectionDescription","SectionContent"],"mappings":";;;AAOA,MAAMA,IAAUC,EAAM;AAAA,EACpB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MACxB,gBAAAC,EAAC,WAAA,EAAQ,KAAAD,GAAU,WAAWE,EAAG,aAAaJ,CAAS,GAAI,GAAGC,EAAA,CAAO;AAEzE;AACAH,EAAQ,cAAc;AAEtB,MAAMO,IAAgBN,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGC,KAASC,wBACzB,OAAA,EAAI,KAAAA,GAAU,WAAWE,EAAG,aAAaJ,CAAS,GAAI,GAAGC,GAAO,CAClE;AACDI,EAAc,cAAc;AAE5B,MAAMC,IAAeP,EAAM,WAGzB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,qDAAqDJ,CAAS;AAAA,IAC3E,GAAGC;AAAA,EAAA;AACN,CACD;AACDK,EAAa,cAAc;AAE3B,MAAMC,IAAqBR,EAAM,WAG/B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWE,EAAG,iCAAiCJ,CAAS;AAAA,IACvD,GAAGC;AAAA,EAAA;AACN,CACD;AACDM,EAAmB,cAAc;AAEjC,MAAMC,IAAiBT,EAAM,WAG3B,CAAC,EAAE,WAAAC,GAAW,GAAGC,KAASC,wBACzB,OAAA,EAAI,KAAAA,GAAU,WAAWE,EAAG,QAAQJ,CAAS,GAAI,GAAGC,GAAO,CAC7D;AACDO,EAAe,cAAc;"}
@@ -0,0 +1,61 @@
1
+ import { jsx as f } from "react/jsx-runtime";
2
+ import * as o from "react";
3
+ import { cva as l } from "../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.js";
4
+ import { cn as p } from "../../../lib/utils.js";
5
+ const m = l("flex", {
6
+ variants: {
7
+ direction: {
8
+ vertical: "flex-col",
9
+ horizontal: "flex-row"
10
+ },
11
+ gap: {
12
+ none: "gap-0",
13
+ xs: "gap-1",
14
+ sm: "gap-2",
15
+ md: "gap-4",
16
+ lg: "gap-6",
17
+ xl: "gap-8"
18
+ },
19
+ align: {
20
+ start: "items-start",
21
+ center: "items-center",
22
+ end: "items-end",
23
+ stretch: "items-stretch"
24
+ },
25
+ justify: {
26
+ start: "justify-start",
27
+ center: "justify-center",
28
+ end: "justify-end",
29
+ between: "justify-between"
30
+ },
31
+ wrap: {
32
+ true: "flex-wrap",
33
+ false: "flex-nowrap"
34
+ }
35
+ },
36
+ defaultVariants: {
37
+ direction: "vertical",
38
+ gap: "md",
39
+ align: "stretch",
40
+ justify: "start",
41
+ wrap: !1
42
+ }
43
+ }), d = o.forwardRef(
44
+ ({ className: t, direction: e, gap: a, align: r, justify: s, wrap: i, ...n }, c) => /* @__PURE__ */ f(
45
+ "div",
46
+ {
47
+ ref: c,
48
+ className: p(
49
+ m({ direction: e, gap: a, align: r, justify: s, wrap: i }),
50
+ t
51
+ ),
52
+ ...n
53
+ }
54
+ )
55
+ );
56
+ d.displayName = "Stack";
57
+ export {
58
+ d as Stack,
59
+ m as stackVariants
60
+ };
61
+ //# sourceMappingURL=stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.js","sources":["../../../../src/components/ui/stack/stack.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\n\n// Ported 1:1 from `@acronis-platform`'s `stack`. A flexbox layout primitive — no\n// color, just direction / gap / alignment utilities.\nconst stackVariants = cva('flex', {\n variants: {\n direction: {\n vertical: 'flex-col',\n horizontal: 'flex-row',\n },\n gap: {\n none: 'gap-0',\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n },\n align: {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n },\n justify: {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n },\n wrap: {\n true: 'flex-wrap',\n false: 'flex-nowrap',\n },\n },\n defaultVariants: {\n direction: 'vertical',\n gap: 'md',\n align: 'stretch',\n justify: 'start',\n wrap: false,\n },\n});\n\nexport interface StackProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof stackVariants> {}\n\nconst Stack = React.forwardRef<HTMLDivElement, StackProps>(\n ({ className, direction, gap, align, justify, wrap, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n stackVariants({ direction, gap, align, justify, wrap }),\n className\n )}\n {...props}\n />\n )\n);\nStack.displayName = 'Stack';\n\nexport { Stack, stackVariants };\n"],"names":["stackVariants","cva","Stack","React","className","direction","gap","align","justify","wrap","props","ref","jsx","cn"],"mappings":";;;;AAOA,MAAMA,IAAgBC,EAAI,QAAQ;AAAA,EAChC,UAAU;AAAA,IACR,WAAW;AAAA,MACT,UAAU;AAAA,MACV,YAAY;AAAA,IAAA;AAAA,IAEd,KAAK;AAAA,MACH,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,OAAO;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,SAAS;AAAA,IAAA;AAAA,IAEX,SAAS;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,SAAS;AAAA,IAAA;AAAA,IAEX,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,IAAA;AAAA,EACT;AAAA,EAEF,iBAAiB;AAAA,IACf,WAAW;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,IACP,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAEV,CAAC,GAMKC,IAAQC,EAAM;AAAA,EAClB,CAAC,EAAE,WAAAC,GAAW,WAAAC,GAAW,KAAAC,GAAK,OAAAC,GAAO,SAAAC,GAAS,MAAAC,GAAM,GAAGC,KAASC,MAC9D,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAD;AAAA,MACA,WAAWE;AAAA,QACTb,EAAc,EAAE,WAAAK,GAAW,KAAAC,GAAK,OAAAC,GAAO,SAAAC,GAAS,MAAAC,GAAM;AAAA,QACtDL;AAAA,MAAA;AAAA,MAED,GAAGM;AAAA,IAAA;AAAA,EAAA;AAGV;AACAR,EAAM,cAAc;"}
@@ -0,0 +1,47 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import * as s from "react";
3
+ import { Toggle as i } from "@base-ui/react/toggle";
4
+ import { ToggleGroup as l } from "@base-ui/react/toggle-group";
5
+ import { cn as a } from "../../../lib/utils.js";
6
+ const n = a(
7
+ "inline-flex h-9 select-none items-center justify-center gap-2 rounded-md border border-transparent bg-transparent px-3 text-sm font-medium text-[var(--ui-text-on-surface-primary)] transition-colors outline-none",
8
+ "not-disabled:hover:bg-[var(--ui-background-surface-hover)]",
9
+ "focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)]",
10
+ "data-pressed:bg-[var(--ui-background-surface-active)] data-pressed:text-[var(--ui-text-on-surface-primary)]",
11
+ "disabled:pointer-events-none disabled:opacity-50"
12
+ ), g = s.forwardRef(({ className: e, ...r }, o) => /* @__PURE__ */ t(
13
+ i,
14
+ {
15
+ ref: o,
16
+ className: a(n, e),
17
+ ...r
18
+ }
19
+ ));
20
+ g.displayName = "Toggle";
21
+ const m = s.forwardRef(({ className: e, ...r }, o) => /* @__PURE__ */ t(
22
+ l,
23
+ {
24
+ ref: o,
25
+ className: a(
26
+ "inline-flex items-center gap-1 data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch",
27
+ e
28
+ ),
29
+ ...r
30
+ }
31
+ ));
32
+ m.displayName = "ToggleGroup";
33
+ const c = s.forwardRef(({ className: e, ...r }, o) => /* @__PURE__ */ t(
34
+ i,
35
+ {
36
+ ref: o,
37
+ className: a(n, e),
38
+ ...r
39
+ }
40
+ ));
41
+ c.displayName = "ToggleGroupItem";
42
+ export {
43
+ g as Toggle,
44
+ m as ToggleGroup,
45
+ c as ToggleGroupItem
46
+ };
47
+ //# sourceMappingURL=toggle-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group.js","sources":["../../../../src/components/ui/toggle-group/toggle-group.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle';\nimport { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group';\n\nimport { cn } from '@/lib/utils';\n\n// Ported from `@acronis-platform`'s `toggle-group`, on Base UI's Toggle /\n// ToggleGroup. No `--ui-toggle-*` tier — semantic tokens. The shared item style is\n// transparent when idle, the hover surface on hover, and the active surface +\n// foreground when pressed (legacy's `bg-muted` hover is near-white in ui-react, so\n// hover uses the visible surface-hover and the pressed state uses surface-active so\n// it reads as selected, distinct from hover).\nconst toggleItemClassName = cn(\n 'inline-flex h-9 select-none items-center justify-center gap-2 rounded-md border border-transparent bg-transparent px-3 text-sm font-medium text-[var(--ui-text-on-surface-primary)] transition-colors outline-none',\n 'not-disabled:hover:bg-[var(--ui-background-surface-hover)]',\n 'focus-visible:ring-2 focus-visible:ring-[var(--ui-focus-primary)]',\n 'data-pressed:bg-[var(--ui-background-surface-active)] data-pressed:text-[var(--ui-text-on-surface-primary)]',\n 'disabled:pointer-events-none disabled:opacity-50'\n);\n\nconst Toggle = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<typeof TogglePrimitive>\n>(({ className, ...props }, ref) => (\n <TogglePrimitive\n ref={ref}\n className={cn(toggleItemClassName, className)}\n {...props}\n />\n));\nToggle.displayName = 'Toggle';\n\nconst ToggleGroup = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive>\n>(({ className, ...props }, ref) => (\n <ToggleGroupPrimitive\n ref={ref}\n className={cn(\n 'inline-flex items-center gap-1 data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch',\n className\n )}\n {...props}\n />\n));\nToggleGroup.displayName = 'ToggleGroup';\n\nconst ToggleGroupItem = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<typeof TogglePrimitive>\n>(({ className, ...props }, ref) => (\n <TogglePrimitive\n ref={ref}\n className={cn(toggleItemClassName, className)}\n {...props}\n />\n));\nToggleGroupItem.displayName = 'ToggleGroupItem';\n\nexport { Toggle, ToggleGroup, ToggleGroupItem };\n"],"names":["toggleItemClassName","cn","Toggle","React","className","props","ref","jsx","TogglePrimitive","ToggleGroup","ToggleGroupPrimitive","ToggleGroupItem"],"mappings":";;;;;AAcA,MAAMA,IAAsBC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEMC,IAASC,EAAM,WAGnB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACC;AAAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,WAAWL,EAAGD,GAAqBI,CAAS;AAAA,IAC3C,GAAGC;AAAA,EAAA;AACN,CACD;AACDH,EAAO,cAAc;AAErB,MAAMO,IAAcN,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACG;AAAAA,EAAA;AAAA,IACC,KAAAJ;AAAA,IACA,WAAWL;AAAA,MACT;AAAA,MACAG;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AACN,CACD;AACDI,EAAY,cAAc;AAE1B,MAAME,IAAkBR,EAAM,WAG5B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAC1B,gBAAAC;AAAA,EAACC;AAAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,WAAWL,EAAGD,GAAqBI,CAAS;AAAA,IAC3C,GAAGC;AAAA,EAAA;AACN,CACD;AACDM,EAAgB,cAAc;"}