@tetrascience-npm/tetrascience-react-ui 0.5.0-beta.28.1 → 0.5.0-beta.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/components/ui/alert.cjs +1 -1
  2. package/dist/components/ui/alert.cjs.map +1 -1
  3. package/dist/components/ui/alert.js +23 -20
  4. package/dist/components/ui/alert.js.map +1 -1
  5. package/dist/components/ui/badge.cjs +1 -1
  6. package/dist/components/ui/badge.cjs.map +1 -1
  7. package/dist/components/ui/badge.js +10 -10
  8. package/dist/components/ui/badge.js.map +1 -1
  9. package/dist/components/ui/data-table/data-table-column-toggle.cjs +2 -0
  10. package/dist/components/ui/data-table/data-table-column-toggle.cjs.map +1 -0
  11. package/dist/components/ui/data-table/data-table-column-toggle.js +142 -0
  12. package/dist/components/ui/data-table/data-table-column-toggle.js.map +1 -0
  13. package/dist/components/ui/data-table/data-table-pagination.cjs +2 -0
  14. package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -0
  15. package/dist/components/ui/data-table/data-table-pagination.js +88 -0
  16. package/dist/components/ui/data-table/data-table-pagination.js.map +1 -0
  17. package/dist/components/ui/data-table/data-table.cjs +2 -0
  18. package/dist/components/ui/data-table/data-table.cjs.map +1 -0
  19. package/dist/components/ui/data-table/data-table.js +293 -0
  20. package/dist/components/ui/data-table/data-table.js.map +1 -0
  21. package/dist/components/ui/dialog.cjs +1 -1
  22. package/dist/components/ui/dialog.cjs.map +1 -1
  23. package/dist/components/ui/dialog.js +62 -51
  24. package/dist/components/ui/dialog.js.map +1 -1
  25. package/dist/components/ui/table.cjs +1 -1
  26. package/dist/components/ui/table.cjs.map +1 -1
  27. package/dist/components/ui/table.js +68 -36
  28. package/dist/components/ui/table.js.map +1 -1
  29. package/dist/components/ui/tabs.cjs +1 -1
  30. package/dist/components/ui/tabs.cjs.map +1 -1
  31. package/dist/components/ui/tabs.js +28 -27
  32. package/dist/components/ui/tabs.js.map +1 -1
  33. package/dist/index.cjs +1 -1
  34. package/dist/index.css +1 -1
  35. package/dist/index.d.ts +73 -5
  36. package/dist/index.js +338 -329
  37. package/dist/index.js.map +1 -1
  38. package/dist/index.tailwind.css +1 -1
  39. package/package.json +6 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),l=require("class-variance-authority"),a=require("../../lib/utils.cjs"),n=l.cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"}},defaultVariants:{variant:"default"}});function i({className:t,variant:e,...s}){return r.jsx("div",{"data-slot":"alert",role:"alert",className:a.cn(n({variant:e}),t),...s})}function o({className:t,...e}){return r.jsx("div",{"data-slot":"alert-title",className:a.cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",t),...e})}function c({className:t,...e}){return r.jsx("div",{"data-slot":"alert-description",className:a.cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",t),...e})}function d({className:t,...e}){return r.jsx("div",{"data-slot":"alert-action",className:a.cn("absolute top-2 right-2",t),...e})}exports.Alert=i;exports.AlertAction=d;exports.AlertDescription=c;exports.AlertTitle=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),a=require("class-variance-authority"),i=require("../../lib/utils.cjs"),s=a.cva("group/alert relative flex w-full flex-wrap items-center gap-3 rounded-lg border px-4 py-3 text-left text-sm [&>svg]:mt-0.5 [&>svg]:shrink-0 [&>svg]:size-4",{variants:{variant:{default:"bg-card text-card-foreground [&>svg]:text-foreground",destructive:"bg-destructive/10 border-destructive/20 text-destructive [&>svg]:text-destructive",info:"bg-info/10 border-info/20 text-info [&>svg]:text-info",positive:"bg-positive/10 border-positive/20 text-positive [&>svg]:text-positive",warning:"bg-warning/10 border-warning/20 text-warning [&>svg]:text-warning"}},defaultVariants:{variant:"default"}});function o({className:t,variant:e,...n}){return r.jsx("div",{"data-slot":"alert",role:"alert",className:i.cn(s({variant:e}),t),...n})}function l({className:t,...e}){return r.jsx("div",{"data-slot":"alert-title",className:i.cn("flex-1 min-w-0 font-medium leading-none tracking-tight [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",t),...e})}function d({className:t,...e}){return r.jsx("div",{"data-slot":"alert-description",className:i.cn("w-full pl-7 text-sm text-balance text-current/80 md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",t),...e})}function u({className:t,...e}){return r.jsx("div",{"data-slot":"alert-action",className:i.cn("absolute top-2 right-2",t),...e})}exports.Alert=o;exports.AlertAction=u;exports.AlertDescription=d;exports.AlertTitle=l;
2
2
  //# sourceMappingURL=alert.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert.cjs","sources":["../../../src/components/ui/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn(\"absolute top-2 right-2\", className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"],"names":["alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription","AlertAction"],"mappings":"4LAKMA,EAAgBC,EAAAA,IACpB,4TACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,+BACT,YACE,mGAAA,CACJ,EAEF,gBAAiB,CACf,QAAS,SAAA,CACX,CAEJ,EAEA,SAASC,EAAM,CACb,UAAAC,EACA,QAAAC,EACA,GAAGC,CACL,EAAqE,CACnE,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,QACV,KAAK,QACL,UAAWC,EAAAA,GAAGP,EAAc,CAAE,QAAAI,CAAA,CAAS,EAAGD,CAAS,EAClD,GAAGE,CAAA,CAAA,CAGV,CAEA,SAASG,EAAW,CAAE,UAAAL,EAAW,GAAGE,GAAsC,CACxE,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,cACV,UAAWC,EAAAA,GACT,sHACAJ,CAAA,EAED,GAAGE,CAAA,CAAA,CAGV,CAEA,SAASI,EAAiB,CACxB,UAAAN,EACA,GAAGE,CACL,EAAgC,CAC9B,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,oBACV,UAAWC,EAAAA,GACT,6JACAJ,CAAA,EAED,GAAGE,CAAA,CAAA,CAGV,CAEA,SAASK,EAAY,CAAE,UAAAP,EAAW,GAAGE,GAAsC,CACzE,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,eACV,UAAWC,EAAAA,GAAG,yBAA0BJ,CAAS,EAChD,GAAGE,CAAA,CAAA,CAGV"}
1
+ {"version":3,"file":"alert.cjs","sources":["../../../src/components/ui/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"group/alert relative flex w-full flex-wrap items-center gap-3 rounded-lg border px-4 py-3 text-left text-sm [&>svg]:mt-0.5 [&>svg]:shrink-0 [&>svg]:size-4\",\n {\n variants: {\n variant: {\n default:\n \"bg-card text-card-foreground [&>svg]:text-foreground\",\n destructive:\n \"bg-destructive/10 border-destructive/20 text-destructive [&>svg]:text-destructive\",\n info:\n \"bg-info/10 border-info/20 text-info [&>svg]:text-info\",\n positive:\n \"bg-positive/10 border-positive/20 text-positive [&>svg]:text-positive\",\n warning:\n \"bg-warning/10 border-warning/20 text-warning [&>svg]:text-warning\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"flex-1 min-w-0 font-medium leading-none tracking-tight [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"w-full pl-7 text-sm text-balance text-current/80 md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn(\"absolute top-2 right-2\", className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"],"names":["alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription","AlertAction"],"mappings":"4LAKMA,EAAgBC,EAAAA,IACpB,8JACA,CACE,SAAU,CACR,QAAS,CACP,QACE,uDACF,YACE,oFACF,KACE,wDACF,SACE,wEACF,QACE,mEAAA,CACJ,EAEF,gBAAiB,CACf,QAAS,SAAA,CACX,CAEJ,EAEA,SAASC,EAAM,CACb,UAAAC,EACA,QAAAC,EACA,GAAGC,CACL,EAAqE,CACnE,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,QACV,KAAK,QACL,UAAWC,EAAAA,GAAGP,EAAc,CAAE,QAAAI,CAAA,CAAS,EAAGD,CAAS,EAClD,GAAGE,CAAA,CAAA,CAGV,CAEA,SAASG,EAAW,CAAE,UAAAL,EAAW,GAAGE,GAAsC,CACxE,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,cACV,UAAWC,EAAAA,GACT,8HACAJ,CAAA,EAED,GAAGE,CAAA,CAAA,CAGV,CAEA,SAASI,EAAiB,CACxB,UAAAN,EACA,GAAGE,CACL,EAAgC,CAC9B,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,oBACV,UAAWC,EAAAA,GACT,mKACAJ,CAAA,EAED,GAAGE,CAAA,CAAA,CAGV,CAEA,SAASK,EAAY,CAAE,UAAAP,EAAW,GAAGE,GAAsC,CACzE,OACEC,EAAAA,IAAC,MAAA,CACC,YAAU,eACV,UAAWC,EAAAA,GAAG,yBAA0BJ,CAAS,EAChD,GAAGE,CAAA,CAAA,CAGV"}
@@ -1,13 +1,16 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
- import { cva as o } from "class-variance-authority";
3
- import { cn as a } from "../../lib/utils.js";
4
- const l = o(
5
- "group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",
2
+ import { cva as a } from "class-variance-authority";
3
+ import { cn as i } from "../../lib/utils.js";
4
+ const o = a(
5
+ "group/alert relative flex w-full flex-wrap items-center gap-3 rounded-lg border px-4 py-3 text-left text-sm [&>svg]:mt-0.5 [&>svg]:shrink-0 [&>svg]:size-4",
6
6
  {
7
7
  variants: {
8
8
  variant: {
9
- default: "bg-card text-card-foreground",
10
- destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
9
+ default: "bg-card text-card-foreground [&>svg]:text-foreground",
10
+ destructive: "bg-destructive/10 border-destructive/20 text-destructive [&>svg]:text-destructive",
11
+ info: "bg-info/10 border-info/20 text-info [&>svg]:text-info",
12
+ positive: "bg-positive/10 border-positive/20 text-positive [&>svg]:text-positive",
13
+ warning: "bg-warning/10 border-warning/20 text-warning [&>svg]:text-warning"
11
14
  }
12
15
  },
13
16
  defaultVariants: {
@@ -18,32 +21,32 @@ const l = o(
18
21
  function u({
19
22
  className: t,
20
23
  variant: e,
21
- ...s
24
+ ...n
22
25
  }) {
23
26
  return /* @__PURE__ */ r(
24
27
  "div",
25
28
  {
26
29
  "data-slot": "alert",
27
30
  role: "alert",
28
- className: a(l({ variant: e }), t),
29
- ...s
31
+ className: i(o({ variant: e }), t),
32
+ ...n
30
33
  }
31
34
  );
32
35
  }
33
- function c({ className: t, ...e }) {
36
+ function f({ className: t, ...e }) {
34
37
  return /* @__PURE__ */ r(
35
38
  "div",
36
39
  {
37
40
  "data-slot": "alert-title",
38
- className: a(
39
- "font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",
41
+ className: i(
42
+ "flex-1 min-w-0 font-medium leading-none tracking-tight [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground",
40
43
  t
41
44
  ),
42
45
  ...e
43
46
  }
44
47
  );
45
48
  }
46
- function v({
49
+ function g({
47
50
  className: t,
48
51
  ...e
49
52
  }) {
@@ -51,28 +54,28 @@ function v({
51
54
  "div",
52
55
  {
53
56
  "data-slot": "alert-description",
54
- className: a(
55
- "text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",
57
+ className: i(
58
+ "w-full pl-7 text-sm text-balance text-current/80 md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",
56
59
  t
57
60
  ),
58
61
  ...e
59
62
  }
60
63
  );
61
64
  }
62
- function f({ className: t, ...e }) {
65
+ function v({ className: t, ...e }) {
63
66
  return /* @__PURE__ */ r(
64
67
  "div",
65
68
  {
66
69
  "data-slot": "alert-action",
67
- className: a("absolute top-2 right-2", t),
70
+ className: i("absolute top-2 right-2", t),
68
71
  ...e
69
72
  }
70
73
  );
71
74
  }
72
75
  export {
73
76
  u as Alert,
74
- f as AlertAction,
75
- v as AlertDescription,
76
- c as AlertTitle
77
+ v as AlertAction,
78
+ g as AlertDescription,
79
+ f as AlertTitle
77
80
  };
78
81
  //# sourceMappingURL=alert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert.js","sources":["../../../src/components/ui/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground\",\n destructive:\n \"bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn(\"absolute top-2 right-2\", className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"],"names":["alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription","AlertAction"],"mappings":";;;AAKA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,SAASC,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAqE;AACnE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAWC,EAAGP,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS;AAAA,MAClD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASG,EAAW,EAAE,WAAAL,GAAW,GAAGE,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAiB;AAAA,EACxB,WAAAN;AAAA,EACA,GAAGE;AACL,GAAgC;AAC9B,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASK,EAAY,EAAE,WAAAP,GAAW,GAAGE,KAAsC;AACzE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,0BAA0BJ,CAAS;AAAA,MAChD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;"}
1
+ {"version":3,"file":"alert.js","sources":["../../../src/components/ui/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"group/alert relative flex w-full flex-wrap items-center gap-3 rounded-lg border px-4 py-3 text-left text-sm [&>svg]:mt-0.5 [&>svg]:shrink-0 [&>svg]:size-4\",\n {\n variants: {\n variant: {\n default:\n \"bg-card text-card-foreground [&>svg]:text-foreground\",\n destructive:\n \"bg-destructive/10 border-destructive/20 text-destructive [&>svg]:text-destructive\",\n info:\n \"bg-info/10 border-info/20 text-info [&>svg]:text-info\",\n positive:\n \"bg-positive/10 border-positive/20 text-positive [&>svg]:text-positive\",\n warning:\n \"bg-warning/10 border-warning/20 text-warning [&>svg]:text-warning\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n \"flex-1 min-w-0 font-medium leading-none tracking-tight [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\n \"w-full pl-7 text-sm text-balance text-current/80 md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-action\"\n className={cn(\"absolute top-2 right-2\", className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"],"names":["alertVariants","cva","Alert","className","variant","props","jsx","cn","AlertTitle","AlertDescription","AlertAction"],"mappings":";;;AAKA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SACE;AAAA,QACF,aACE;AAAA,QACF,MACE;AAAA,QACF,UACE;AAAA,QACF,SACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,SAASC,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,GAAGC;AACL,GAAqE;AACnE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,MAAK;AAAA,MACL,WAAWC,EAAGP,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS;AAAA,MAClD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASG,EAAW,EAAE,WAAAL,GAAW,GAAGE,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAiB;AAAA,EACxB,WAAAN;AAAA,EACA,GAAGE;AACL,GAAgC;AAC9B,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASK,EAAY,EAAE,WAAAP,GAAW,GAAGE,KAAsC;AACzE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,0BAA0BJ,CAAS;AAAA,MAChD,GAAGE;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),s=require("class-variance-authority"),d=require("radix-ui"),g=require("../../lib/utils.cjs"),r=s.cva("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",info:"bg-info focus-visible:ring-info/20 dark:bg-info/20 dark:text-info dark:focus-visible:ring-info/40 [a]:hover:bg-info/20",destructive:"bg-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",positive:"bg-positive focus-visible:ring-positive/20 dark:bg-positive/20 dark:text-positive dark:focus-visible:ring-positive/40 [a]:hover:bg-positive/20",warning:"bg-warning focus-visible:ring-warning/20 dark:bg-warning/20 dark:text-warning dark:focus-visible:ring-warning/40 [a]:hover:bg-warning/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function u({className:i,variant:e="default",asChild:t=!1,...n}){const a=t?d.Slot.Root:"span";return o.jsx(a,{"data-slot":"badge","data-variant":e,className:g.cn(r({variant:e}),i),...n})}exports.Badge=u;exports.badgeVariants=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),s=require("class-variance-authority"),d=require("radix-ui"),g=require("../../lib/utils.cjs"),i=s.cva("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",info:"bg-info/15 text-info focus-visible:ring-info/20 dark:bg-info/20 dark:text-info dark:focus-visible:ring-info/40 [a]:hover:bg-info/25",destructive:"bg-destructive/15 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:text-destructive dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/25",positive:"bg-positive/15 text-positive focus-visible:ring-positive/20 dark:bg-positive/20 dark:text-positive dark:focus-visible:ring-positive/40 [a]:hover:bg-positive/25",warning:"bg-warning/15 text-warning focus-visible:ring-warning/20 dark:bg-warning/20 dark:text-warning dark:focus-visible:ring-warning/40 [a]:hover:bg-warning/25",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});function u({className:r,variant:e="default",asChild:t=!1,...n}){const a=t?d.Slot.Root:"span";return o.jsx(a,{"data-slot":"badge","data-variant":e,className:g.cn(i({variant:e}),r),...n})}exports.Badge=u;exports.badgeVariants=i;
2
2
  //# sourceMappingURL=badge.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.cjs","sources":["../../../src/components/ui/badge.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n info:\n \"bg-info focus-visible:ring-info/20 dark:bg-info/20 dark:text-info dark:focus-visible:ring-info/40 [a]:hover:bg-info/20\",\n destructive:\n \"bg-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n positive:\n \"bg-positive focus-visible:ring-positive/20 dark:bg-positive/20 dark:text-positive dark:focus-visible:ring-positive/40 [a]:hover:bg-positive/20\",\n warning:\n \"bg-warning focus-visible:ring-warning/20 dark:bg-warning/20 dark:text-warning dark:focus-visible:ring-warning/40 [a]:hover:bg-warning/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n"],"names":["badgeVariants","cva","Badge","className","variant","asChild","props","Comp","Slot","jsx","cn"],"mappings":"kNAMMA,EAAgBC,EAAAA,IACpB,6eACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,6DACT,UACE,mEACF,KACE,yHACF,YACE,6IACF,SACE,iJACF,QACE,2IACF,QACE,mFACF,MACE,oEACF,KAAM,iDAAA,CACR,EAEF,gBAAiB,CACf,QAAS,SAAA,CACX,CAEJ,EAEA,SAASC,EAAM,CACb,UAAAC,EACA,QAAAC,EAAW,UACX,QAAAC,EAAU,GACV,GAAGC,CACL,EAC8D,CAC5D,MAAMC,EAAOF,EAAUG,EAAAA,KAAK,KAAO,OAEnC,OACEC,EAAAA,IAACF,EAAA,CACC,YAAU,QACV,eAAcH,EACd,UAAWM,EAAAA,GAAGV,EAAc,CAAE,QAAAI,CAAA,CAAS,EAAGD,CAAS,EAClD,GAAGG,CAAA,CAAA,CAGV"}
1
+ {"version":3,"file":"badge.cjs","sources":["../../../src/components/ui/badge.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n info:\n \"bg-info/15 text-info focus-visible:ring-info/20 dark:bg-info/20 dark:text-info dark:focus-visible:ring-info/40 [a]:hover:bg-info/25\",\n destructive:\n \"bg-destructive/15 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:text-destructive dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/25\",\n positive:\n \"bg-positive/15 text-positive focus-visible:ring-positive/20 dark:bg-positive/20 dark:text-positive dark:focus-visible:ring-positive/40 [a]:hover:bg-positive/25\",\n warning:\n \"bg-warning/15 text-warning focus-visible:ring-warning/20 dark:bg-warning/20 dark:text-warning dark:focus-visible:ring-warning/40 [a]:hover:bg-warning/25\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n"],"names":["badgeVariants","cva","Badge","className","variant","asChild","props","Comp","Slot","jsx","cn"],"mappings":"kNAMMA,EAAgBC,EAAAA,IACpB,6eACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,6DACT,UACE,mEACF,KACE,sIACF,YACE,uLACF,SACE,kKACF,QACE,2JACF,QACE,mFACF,MACE,oEACF,KAAM,iDAAA,CACR,EAEF,gBAAiB,CACf,QAAS,SAAA,CACX,CAEJ,EAEA,SAASC,EAAM,CACb,UAAAC,EACA,QAAAC,EAAW,UACX,QAAAC,EAAU,GACV,GAAGC,CACL,EAC8D,CAC5D,MAAMC,EAAOF,EAAUG,EAAAA,KAAK,KAAO,OAEnC,OACEC,EAAAA,IAACF,EAAA,CACC,YAAU,QACV,eAAcH,EACd,UAAWM,EAAAA,GAAGV,EAAc,CAAE,QAAAI,CAAA,CAAS,EAAGD,CAAS,EAClD,GAAGG,CAAA,CAAA,CAGV"}
@@ -9,10 +9,10 @@ const g = a(
9
9
  variant: {
10
10
  default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
11
11
  secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
12
- info: "bg-info focus-visible:ring-info/20 dark:bg-info/20 dark:text-info dark:focus-visible:ring-info/40 [a]:hover:bg-info/20",
13
- destructive: "bg-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
14
- positive: "bg-positive focus-visible:ring-positive/20 dark:bg-positive/20 dark:text-positive dark:focus-visible:ring-positive/40 [a]:hover:bg-positive/20",
15
- warning: "bg-warning focus-visible:ring-warning/20 dark:bg-warning/20 dark:text-warning dark:focus-visible:ring-warning/40 [a]:hover:bg-warning/20",
12
+ info: "bg-info/15 text-info focus-visible:ring-info/20 dark:bg-info/20 dark:text-info dark:focus-visible:ring-info/40 [a]:hover:bg-info/25",
13
+ destructive: "bg-destructive/15 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:text-destructive dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/25",
14
+ positive: "bg-positive/15 text-positive focus-visible:ring-positive/20 dark:bg-positive/20 dark:text-positive dark:focus-visible:ring-positive/40 [a]:hover:bg-positive/25",
15
+ warning: "bg-warning/15 text-warning focus-visible:ring-warning/20 dark:bg-warning/20 dark:text-warning dark:focus-visible:ring-warning/40 [a]:hover:bg-warning/25",
16
16
  outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
17
17
  ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
18
18
  link: "text-primary underline-offset-4 hover:underline"
@@ -24,18 +24,18 @@ const g = a(
24
24
  }
25
25
  );
26
26
  function c({
27
- className: i,
28
- variant: r = "default",
29
- asChild: e = !1,
27
+ className: r,
28
+ variant: e = "default",
29
+ asChild: i = !1,
30
30
  ...t
31
31
  }) {
32
- const n = e ? s.Root : "span";
32
+ const n = i ? s.Root : "span";
33
33
  return /* @__PURE__ */ o(
34
34
  n,
35
35
  {
36
36
  "data-slot": "badge",
37
- "data-variant": r,
38
- className: d(g({ variant: r }), i),
37
+ "data-variant": e,
38
+ className: d(g({ variant: e }), r),
39
39
  ...t
40
40
  }
41
41
  );
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sources":["../../../src/components/ui/badge.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n info:\n \"bg-info focus-visible:ring-info/20 dark:bg-info/20 dark:text-info dark:focus-visible:ring-info/40 [a]:hover:bg-info/20\",\n destructive:\n \"bg-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n positive:\n \"bg-positive focus-visible:ring-positive/20 dark:bg-positive/20 dark:text-positive dark:focus-visible:ring-positive/40 [a]:hover:bg-positive/20\",\n warning:\n \"bg-warning focus-visible:ring-warning/20 dark:bg-warning/20 dark:text-warning dark:focus-visible:ring-warning/40 [a]:hover:bg-warning/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n"],"names":["badgeVariants","cva","Badge","className","variant","asChild","props","Comp","Slot","jsx","cn"],"mappings":";;;;AAMA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WACE;AAAA,QACF,MACE;AAAA,QACF,aACE;AAAA,QACF,UACE;AAAA,QACF,SACE;AAAA,QACF,SACE;AAAA,QACF,OACE;AAAA,QACF,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,SAASC,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,SAAAC,IAAW;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,GAAGC;AACL,GAC8D;AAC5D,QAAMC,IAAOF,IAAUG,EAAK,OAAO;AAEnC,SACE,gBAAAC;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAcH;AAAA,MACd,WAAWM,EAAGV,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS;AAAA,MAClD,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV;"}
1
+ {"version":3,"file":"badge.js","sources":["../../../src/components/ui/badge.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n info:\n \"bg-info/15 text-info focus-visible:ring-info/20 dark:bg-info/20 dark:text-info dark:focus-visible:ring-info/40 [a]:hover:bg-info/25\",\n destructive:\n \"bg-destructive/15 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:text-destructive dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/25\",\n positive:\n \"bg-positive/15 text-positive focus-visible:ring-positive/20 dark:bg-positive/20 dark:text-positive dark:focus-visible:ring-positive/40 [a]:hover:bg-positive/25\",\n warning:\n \"bg-warning/15 text-warning focus-visible:ring-warning/20 dark:bg-warning/20 dark:text-warning dark:focus-visible:ring-warning/40 [a]:hover:bg-warning/25\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"span\"> &\n VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n const Comp = asChild ? Slot.Root : \"span\"\n\n return (\n <Comp\n data-slot=\"badge\"\n data-variant={variant}\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n}\n\nexport { Badge, badgeVariants }\n"],"names":["badgeVariants","cva","Badge","className","variant","asChild","props","Comp","Slot","jsx","cn"],"mappings":";;;;AAMA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,WACE;AAAA,QACF,MACE;AAAA,QACF,aACE;AAAA,QACF,UACE;AAAA,QACF,SACE;AAAA,QACF,SACE;AAAA,QACF,OACE;AAAA,QACF,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;AAEA,SAASC,EAAM;AAAA,EACb,WAAAC;AAAA,EACA,SAAAC,IAAW;AAAA,EACX,SAAAC,IAAU;AAAA,EACV,GAAGC;AACL,GAC8D;AAC5D,QAAMC,IAAOF,IAAUG,EAAK,OAAO;AAEnC,SACE,gBAAAC;AAAA,IAACF;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,gBAAcH;AAAA,MACd,WAAWM,EAAGV,EAAc,EAAE,SAAAI,EAAA,CAAS,GAAGD,CAAS;AAAA,MAClD,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),u=require("@dnd-kit/core"),D=require("@dnd-kit/modifiers"),b=require("@dnd-kit/sortable"),O=require("@dnd-kit/utilities"),j=require("lucide-react"),k=require("react"),T=require("./data-table.cjs"),q=require("../button.cjs"),y=require("../../../lib/utils.cjs");function w(s){const i=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const a in s)if(a!=="default"){const o=Object.getOwnPropertyDescriptor(s,a);Object.defineProperty(i,a,o.get?o:{enumerable:!0,get:()=>s[a]})}}return i.default=s,Object.freeze(i)}const C=w(k);function N({id:s,label:i,visible:a,onToggle:o}){const{attributes:p,listeners:g,setNodeRef:h,transform:l,transition:f,isDragging:c}=b.useSortable({id:s}),v={transform:O.CSS.Transform.toString(l),transition:f};return n.jsxs("div",{ref:h,style:v,role:"checkbox","aria-checked":a,tabIndex:0,onClick:o,onKeyDown:d=>{(d.key==="Enter"||d.key===" ")&&o()},className:y.cn("group/col-item flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground",c&&"z-50 bg-accent text-accent-foreground shadow-sm"),children:[n.jsx("button",{type:"button",className:y.cn("cursor-grab touch-none text-muted-foreground group-hover/col-item:text-accent-foreground active:cursor-grabbing",!c&&"opacity-0 group-hover/col-item:opacity-100 transition-opacity"),onClick:d=>d.stopPropagation(),...p,...g,children:n.jsx(j.GripVerticalIcon,{className:"size-3.5"})}),n.jsx("span",{className:"flex-1 truncate",children:i}),n.jsx(j.CheckIcon,{className:y.cn("size-4 shrink-0",a?"text-muted-foreground group-hover/col-item:text-accent-foreground":"text-transparent")})]})}function z({className:s}){const{table:i,columnLabels:a}=T.useDataTable(),[o,p]=C.useState(!1),g=C.useRef(null),h=u.useSensors(u.useSensor(u.PointerSensor),u.useSensor(u.KeyboardSensor,{coordinateGetter:b.sortableKeyboardCoordinates})),l=i.getAllColumns().filter(t=>t.getCanHide()),f=i.getState().columnOrder,c=f&&f.length>0?f.filter(t=>l.some(e=>e.id===t)):l.map(t=>t.id);if(C.useEffect(()=>{if(!o)return;function t(e){g.current&&!g.current.contains(e.target)&&p(!1)}return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[o]),l.length===0)return null;function v(t){const e=l.find(r=>r.id===t);return e?a[e.id]??e.columnDef.meta?.label??(typeof e.columnDef.header=="string"?e.columnDef.header:e.id):t}const d=t=>{const{active:e,over:r}=t;if(!r||e.id===r.id)return;const m=c.indexOf(String(e.id)),x=c.indexOf(String(r.id));if(m===-1||x===-1)return;const S=b.arrayMove(c,m,x);i.setColumnOrder(S)};return n.jsxs("div",{className:"relative",ref:g,children:[n.jsxs(q.Button,{variant:"ghost",size:"sm",className:s,"data-slot":"data-table-column-toggle",onClick:()=>p(t=>!t),"aria-expanded":o,children:[n.jsx(j.SlidersHorizontalIcon,{"data-icon":"inline-start"}),"Columns"]}),o&&n.jsx("div",{className:"absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-md",role:"group","aria-label":"Toggle and reorder columns",children:n.jsx(u.DndContext,{sensors:h,collisionDetection:u.closestCenter,modifiers:[D.restrictToVerticalAxis],onDragEnd:d,children:n.jsx(b.SortableContext,{items:c,strategy:b.verticalListSortingStrategy,children:(()=>{const t=c.filter(e=>l.find(r=>r.id===e)?.getIsVisible()).length;return c.map(e=>{const r=l.find(S=>S.id===e);if(!r)return null;const m=r.getIsVisible(),x=m&&t<=1;return n.jsx(N,{id:e,label:v(e),visible:m,onToggle:x?()=>{}:()=>r.toggleVisibility()},e)})})()})})})]})}exports.DataTableColumnToggle=z;
2
+ //# sourceMappingURL=data-table-column-toggle.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-column-toggle.cjs","sources":["../../../../src/components/ui/data-table/data-table-column-toggle.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { CheckIcon, GripVerticalIcon, SlidersHorizontalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { useDataTable } from \"./data-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\ninterface DataTableColumnToggleProps {\n className?: string\n}\n\ninterface SortableColumnItemProps {\n id: string\n label: string\n visible: boolean\n onToggle: () => void\n}\n\nfunction SortableColumnItem({ id, label, visible, onToggle }: SortableColumnItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n role=\"checkbox\"\n aria-checked={visible}\n tabIndex={0}\n onClick={onToggle}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n onToggle();\n }\n }}\n className={cn(\n \"group/col-item flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground\",\n isDragging && \"z-50 bg-accent text-accent-foreground shadow-sm\",\n )}\n >\n <button\n type=\"button\"\n className={cn(\n \"cursor-grab touch-none text-muted-foreground group-hover/col-item:text-accent-foreground active:cursor-grabbing\",\n !isDragging && \"opacity-0 group-hover/col-item:opacity-100 transition-opacity\",\n )}\n onClick={(e) => e.stopPropagation()}\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n <span className=\"flex-1 truncate\">{label}</span>\n <CheckIcon className={cn(\"size-4 shrink-0\", visible ? \"text-muted-foreground group-hover/col-item:text-accent-foreground\" : \"text-transparent\")} />\n </div>\n )\n}\n\nfunction DataTableColumnToggle({ className }: DataTableColumnToggleProps) {\n const { table, columnLabels } = useDataTable()\n const [open, setOpen] = React.useState(false)\n const panelRef = React.useRef<HTMLDivElement>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const allColumns = table.getAllColumns().filter((col) => col.getCanHide())\n const stateOrder = table.getState().columnOrder\n const orderedIds =\n stateOrder && stateOrder.length > 0\n ? stateOrder.filter((id) => allColumns.some((c) => c.id === id))\n : allColumns.map((c) => c.id)\n\n // Close on outside click\n React.useEffect(() => {\n if (!open) return\n function handleClick(e: MouseEvent) {\n if (panelRef.current && !panelRef.current.contains(e.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClick)\n return () => document.removeEventListener(\"mousedown\", handleClick)\n }, [open])\n\n if (allColumns.length === 0) return null\n\n function getLabel(colId: string) {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return colId\n return (\n columnLabels[col.id] ??\n (col.columnDef.meta as { label?: string } | undefined)?.label ??\n (typeof col.columnDef.header === \"string\" ? col.columnDef.header : col.id)\n )\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = orderedIds.indexOf(String(active.id))\n const newIndex = orderedIds.indexOf(String(over.id))\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(orderedIds, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n }\n\n return (\n <div className=\"relative\" ref={panelRef}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={className}\n data-slot=\"data-table-column-toggle\"\n onClick={() => setOpen((prev) => !prev)}\n aria-expanded={open}\n >\n <SlidersHorizontalIcon data-icon=\"inline-start\" />\n Columns\n </Button>\n\n {open && (\n <div\n className=\"absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-md\"\n role=\"group\"\n aria-label=\"Toggle and reorder columns\"\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToVerticalAxis]}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={orderedIds} strategy={verticalListSortingStrategy}>\n {(() => {\n const visibleCount = orderedIds.filter((colId) => allColumns.find((c) => c.id === colId)?.getIsVisible()).length\n return orderedIds.map((colId) => {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return null\n const isVisible = col.getIsVisible()\n const isLastVisible = isVisible && visibleCount <= 1\n return (\n <SortableColumnItem\n key={colId}\n id={colId}\n label={getLabel(colId)}\n visible={isVisible}\n onToggle={isLastVisible ? () => { } : () => col.toggleVisibility()}\n />\n )\n })\n })()}\n </SortableContext>\n </DndContext>\n </div>\n )}\n </div>\n )\n}\n\nexport { DataTableColumnToggle }\nexport type { DataTableColumnToggleProps }\n"],"names":["SortableColumnItem","id","label","visible","onToggle","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsxs","e","cn","jsx","GripVerticalIcon","CheckIcon","DataTableColumnToggle","className","table","columnLabels","useDataTable","open","setOpen","React","panelRef","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","allColumns","col","stateOrder","orderedIds","c","handleClick","getLabel","colId","handleDragEnd","event","active","over","oldIndex","newIndex","newOrder","arrayMove","Button","prev","SlidersHorizontalIcon","DndContext","closestCenter","restrictToVerticalAxis","SortableContext","verticalListSortingStrategy","visibleCount","isVisible","isLastVisible"],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ import { jsxs as S, jsx as n } from "react/jsx-runtime";
2
+ import { useSensors as D, useSensor as y, PointerSensor as k, KeyboardSensor as w, DndContext as N, closestCenter as E } from "@dnd-kit/core";
3
+ import { restrictToVerticalAxis as O } from "@dnd-kit/modifiers";
4
+ import { sortableKeyboardCoordinates as V, SortableContext as z, verticalListSortingStrategy as I, arrayMove as L, useSortable as T } from "@dnd-kit/sortable";
5
+ import { CSS as R } from "@dnd-kit/utilities";
6
+ import { SlidersHorizontalIcon as K, GripVerticalIcon as j, CheckIcon as A } from "lucide-react";
7
+ import * as v from "react";
8
+ import { useDataTable as G } from "./data-table.js";
9
+ import { Button as H } from "../button.js";
10
+ import { cn as C } from "../../../lib/utils.js";
11
+ function P({ id: p, label: a, visible: m, onToggle: s }) {
12
+ const {
13
+ attributes: f,
14
+ listeners: l,
15
+ setNodeRef: b,
16
+ transform: i,
17
+ transition: c,
18
+ isDragging: o
19
+ } = T({ id: p }), h = {
20
+ transform: R.Transform.toString(i),
21
+ transition: c
22
+ };
23
+ return /* @__PURE__ */ S(
24
+ "div",
25
+ {
26
+ ref: b,
27
+ style: h,
28
+ role: "checkbox",
29
+ "aria-checked": m,
30
+ tabIndex: 0,
31
+ onClick: s,
32
+ onKeyDown: (d) => {
33
+ (d.key === "Enter" || d.key === " ") && s();
34
+ },
35
+ className: C(
36
+ "group/col-item flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground",
37
+ o && "z-50 bg-accent text-accent-foreground shadow-sm"
38
+ ),
39
+ children: [
40
+ /* @__PURE__ */ n(
41
+ "button",
42
+ {
43
+ type: "button",
44
+ className: C(
45
+ "cursor-grab touch-none text-muted-foreground group-hover/col-item:text-accent-foreground active:cursor-grabbing",
46
+ !o && "opacity-0 group-hover/col-item:opacity-100 transition-opacity"
47
+ ),
48
+ onClick: (d) => d.stopPropagation(),
49
+ ...f,
50
+ ...l,
51
+ children: /* @__PURE__ */ n(j, { className: "size-3.5" })
52
+ }
53
+ ),
54
+ /* @__PURE__ */ n("span", { className: "flex-1 truncate", children: a }),
55
+ /* @__PURE__ */ n(A, { className: C("size-4 shrink-0", m ? "text-muted-foreground group-hover/col-item:text-accent-foreground" : "text-transparent") })
56
+ ]
57
+ }
58
+ );
59
+ }
60
+ function Y({ className: p }) {
61
+ const { table: a, columnLabels: m } = G(), [s, f] = v.useState(!1), l = v.useRef(null), b = D(
62
+ y(k),
63
+ y(w, {
64
+ coordinateGetter: V
65
+ })
66
+ ), i = a.getAllColumns().filter((t) => t.getCanHide()), c = a.getState().columnOrder, o = c && c.length > 0 ? c.filter((t) => i.some((e) => e.id === t)) : i.map((t) => t.id);
67
+ if (v.useEffect(() => {
68
+ if (!s) return;
69
+ function t(e) {
70
+ l.current && !l.current.contains(e.target) && f(!1);
71
+ }
72
+ return document.addEventListener("mousedown", t), () => document.removeEventListener("mousedown", t);
73
+ }, [s]), i.length === 0) return null;
74
+ function h(t) {
75
+ const e = i.find((r) => r.id === t);
76
+ return e ? m[e.id] ?? e.columnDef.meta?.label ?? (typeof e.columnDef.header == "string" ? e.columnDef.header : e.id) : t;
77
+ }
78
+ return /* @__PURE__ */ S("div", { className: "relative", ref: l, children: [
79
+ /* @__PURE__ */ S(
80
+ H,
81
+ {
82
+ variant: "ghost",
83
+ size: "sm",
84
+ className: p,
85
+ "data-slot": "data-table-column-toggle",
86
+ onClick: () => f((t) => !t),
87
+ "aria-expanded": s,
88
+ children: [
89
+ /* @__PURE__ */ n(K, { "data-icon": "inline-start" }),
90
+ "Columns"
91
+ ]
92
+ }
93
+ ),
94
+ s && /* @__PURE__ */ n(
95
+ "div",
96
+ {
97
+ className: "absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-md",
98
+ role: "group",
99
+ "aria-label": "Toggle and reorder columns",
100
+ children: /* @__PURE__ */ n(
101
+ N,
102
+ {
103
+ sensors: b,
104
+ collisionDetection: E,
105
+ modifiers: [O],
106
+ onDragEnd: (t) => {
107
+ const { active: e, over: r } = t;
108
+ if (!r || e.id === r.id) return;
109
+ const u = o.indexOf(String(e.id)), g = o.indexOf(String(r.id));
110
+ if (u === -1 || g === -1) return;
111
+ const x = L(o, u, g);
112
+ a.setColumnOrder(x);
113
+ },
114
+ children: /* @__PURE__ */ n(z, { items: o, strategy: I, children: (() => {
115
+ const t = o.filter((e) => i.find((r) => r.id === e)?.getIsVisible()).length;
116
+ return o.map((e) => {
117
+ const r = i.find((x) => x.id === e);
118
+ if (!r) return null;
119
+ const u = r.getIsVisible(), g = u && t <= 1;
120
+ return /* @__PURE__ */ n(
121
+ P,
122
+ {
123
+ id: e,
124
+ label: h(e),
125
+ visible: u,
126
+ onToggle: g ? () => {
127
+ } : () => r.toggleVisibility()
128
+ },
129
+ e
130
+ );
131
+ });
132
+ })() })
133
+ }
134
+ )
135
+ }
136
+ )
137
+ ] });
138
+ }
139
+ export {
140
+ Y as DataTableColumnToggle
141
+ };
142
+ //# sourceMappingURL=data-table-column-toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-column-toggle.js","sources":["../../../../src/components/ui/data-table/data-table-column-toggle.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\"\nimport { restrictToVerticalAxis } from \"@dnd-kit/modifiers\"\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\"\nimport { CSS } from \"@dnd-kit/utilities\"\nimport { CheckIcon, GripVerticalIcon, SlidersHorizontalIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { useDataTable } from \"./data-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport { cn } from \"@/lib/utils\"\n\ninterface DataTableColumnToggleProps {\n className?: string\n}\n\ninterface SortableColumnItemProps {\n id: string\n label: string\n visible: boolean\n onToggle: () => void\n}\n\nfunction SortableColumnItem({ id, label, visible, onToggle }: SortableColumnItemProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n }\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n role=\"checkbox\"\n aria-checked={visible}\n tabIndex={0}\n onClick={onToggle}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n onToggle();\n }\n }}\n className={cn(\n \"group/col-item flex cursor-pointer items-center gap-2 rounded-md px-2 py-1.5 text-sm select-none hover:bg-accent hover:text-accent-foreground\",\n isDragging && \"z-50 bg-accent text-accent-foreground shadow-sm\",\n )}\n >\n <button\n type=\"button\"\n className={cn(\n \"cursor-grab touch-none text-muted-foreground group-hover/col-item:text-accent-foreground active:cursor-grabbing\",\n !isDragging && \"opacity-0 group-hover/col-item:opacity-100 transition-opacity\",\n )}\n onClick={(e) => e.stopPropagation()}\n {...attributes}\n {...listeners}\n >\n <GripVerticalIcon className=\"size-3.5\" />\n </button>\n <span className=\"flex-1 truncate\">{label}</span>\n <CheckIcon className={cn(\"size-4 shrink-0\", visible ? \"text-muted-foreground group-hover/col-item:text-accent-foreground\" : \"text-transparent\")} />\n </div>\n )\n}\n\nfunction DataTableColumnToggle({ className }: DataTableColumnToggleProps) {\n const { table, columnLabels } = useDataTable()\n const [open, setOpen] = React.useState(false)\n const panelRef = React.useRef<HTMLDivElement>(null)\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n )\n\n const allColumns = table.getAllColumns().filter((col) => col.getCanHide())\n const stateOrder = table.getState().columnOrder\n const orderedIds =\n stateOrder && stateOrder.length > 0\n ? stateOrder.filter((id) => allColumns.some((c) => c.id === id))\n : allColumns.map((c) => c.id)\n\n // Close on outside click\n React.useEffect(() => {\n if (!open) return\n function handleClick(e: MouseEvent) {\n if (panelRef.current && !panelRef.current.contains(e.target as Node)) {\n setOpen(false)\n }\n }\n document.addEventListener(\"mousedown\", handleClick)\n return () => document.removeEventListener(\"mousedown\", handleClick)\n }, [open])\n\n if (allColumns.length === 0) return null\n\n function getLabel(colId: string) {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return colId\n return (\n columnLabels[col.id] ??\n (col.columnDef.meta as { label?: string } | undefined)?.label ??\n (typeof col.columnDef.header === \"string\" ? col.columnDef.header : col.id)\n )\n }\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event\n if (!over || active.id === over.id) return\n\n const oldIndex = orderedIds.indexOf(String(active.id))\n const newIndex = orderedIds.indexOf(String(over.id))\n if (oldIndex === -1 || newIndex === -1) return\n\n const newOrder = arrayMove(orderedIds, oldIndex, newIndex)\n table.setColumnOrder(newOrder)\n }\n\n return (\n <div className=\"relative\" ref={panelRef}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={className}\n data-slot=\"data-table-column-toggle\"\n onClick={() => setOpen((prev) => !prev)}\n aria-expanded={open}\n >\n <SlidersHorizontalIcon data-icon=\"inline-start\" />\n Columns\n </Button>\n\n {open && (\n <div\n className=\"absolute right-0 top-full z-50 mt-1 w-56 rounded-lg border bg-popover p-1 shadow-md\"\n role=\"group\"\n aria-label=\"Toggle and reorder columns\"\n >\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n modifiers={[restrictToVerticalAxis]}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={orderedIds} strategy={verticalListSortingStrategy}>\n {(() => {\n const visibleCount = orderedIds.filter((colId) => allColumns.find((c) => c.id === colId)?.getIsVisible()).length\n return orderedIds.map((colId) => {\n const col = allColumns.find((c) => c.id === colId)\n if (!col) return null\n const isVisible = col.getIsVisible()\n const isLastVisible = isVisible && visibleCount <= 1\n return (\n <SortableColumnItem\n key={colId}\n id={colId}\n label={getLabel(colId)}\n visible={isVisible}\n onToggle={isLastVisible ? () => { } : () => col.toggleVisibility()}\n />\n )\n })\n })()}\n </SortableContext>\n </DndContext>\n </div>\n )}\n </div>\n )\n}\n\nexport { DataTableColumnToggle }\nexport type { DataTableColumnToggleProps }\n"],"names":["SortableColumnItem","id","label","visible","onToggle","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","jsxs","e","cn","jsx","GripVerticalIcon","CheckIcon","DataTableColumnToggle","className","table","columnLabels","useDataTable","open","setOpen","React","panelRef","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","allColumns","col","stateOrder","orderedIds","c","handleClick","getLabel","colId","Button","prev","SlidersHorizontalIcon","DndContext","closestCenter","restrictToVerticalAxis","event","active","over","oldIndex","newIndex","newOrder","arrayMove","SortableContext","verticalListSortingStrategy","visibleCount","isVisible","isLastVisible"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),g=require("lucide-react"),p=require("./data-table.cjs"),o=require("../button.cjs"),s=require("../select.cjs"),m=require("../../../lib/utils.cjs"),j=5,b=10,P=25;function S({pageSizeOptions:u=[j,b,P],className:d}){const{table:t}=p.useDataTable(),c=t.getPageCount(),{pageIndex:i,pageSize:r}=t.getState().pagination,l=t.getFilteredRowModel().rows.length;if(l===0)return null;const x=i*r+1,h=Math.min((i+1)*r,l);return e.jsxs("div",{"data-slot":"data-table-pagination",className:m.cn("flex items-center justify-between gap-4 text-sm text-muted-foreground",d),children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"whitespace-nowrap",children:"Rows per page:"}),e.jsxs(s.Select,{value:String(r),onValueChange:a=>t.setPageSize(Number(a)),children:[e.jsx(s.SelectTrigger,{className:"h-7 w-16",children:e.jsx(s.SelectValue,{})}),e.jsx(s.SelectContent,{children:u.map(a=>e.jsx(s.SelectItem,{value:String(a),children:a},a))})]}),e.jsxs("span",{className:"whitespace-nowrap tabular-nums",children:[x,"–",h," of ",l]})]}),c>1&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(o.Button,{variant:"ghost",size:"icon-sm",onClick:()=>t.previousPage(),disabled:!t.getCanPreviousPage(),"aria-label":"Previous page",children:e.jsx(g.ChevronLeftIcon,{})}),Array.from({length:c},(a,n)=>e.jsx(o.Button,{variant:n===i?"default":"link",size:"icon-xs",onClick:()=>t.setPageIndex(n),"aria-label":`Page ${n+1}`,"aria-current":n===i?"page":void 0,children:n+1},n)),e.jsx(o.Button,{variant:"ghost",size:"icon-sm",onClick:()=>t.nextPage(),disabled:!t.getCanNextPage(),"aria-label":"Next page",children:e.jsx(g.ChevronRightIcon,{})})]})]})}exports.DataTablePagination=S;
2
+ //# sourceMappingURL=data-table-pagination.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-pagination.cjs","sources":["../../../../src/components/ui/data-table/data-table-pagination.tsx"],"sourcesContent":["\"use client\"\n\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\n\nimport { useDataTable } from \"./data-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\"\nimport { cn } from \"@/lib/utils\"\n\ninterface DataTablePaginationProps {\n pageSizeOptions?: number[]\n className?: string\n}\n\nconst DEFAULT_PAGE_SIZE_SMALL = 5\nconst DEFAULT_PAGE_SIZE_MEDIUM = 10\nconst DEFAULT_PAGE_SIZE_LARGE = 25\n\nfunction DataTablePagination({\n pageSizeOptions = [DEFAULT_PAGE_SIZE_SMALL, DEFAULT_PAGE_SIZE_MEDIUM, DEFAULT_PAGE_SIZE_LARGE],\n className,\n}: DataTablePaginationProps) {\n const { table } = useDataTable()\n\n const pageCount = table.getPageCount()\n const { pageIndex, pageSize } = table.getState().pagination\n const totalRows = table.getFilteredRowModel().rows.length\n\n if (totalRows === 0) return null\n\n const start = pageIndex * pageSize + 1\n const end = Math.min((pageIndex + 1) * pageSize, totalRows)\n\n return (\n <div\n data-slot=\"data-table-pagination\"\n className={cn(\n \"flex items-center justify-between gap-4 text-sm text-muted-foreground\",\n className,\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"whitespace-nowrap\">Rows per page:</span>\n <Select\n value={String(pageSize)}\n onValueChange={(value) => table.setPageSize(Number(value))}\n >\n <SelectTrigger className=\"h-7 w-16\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <span className=\"whitespace-nowrap tabular-nums\">\n {start}&ndash;{end} of {totalRows}\n </span>\n </div>\n\n {pageCount > 1 && (\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n aria-label=\"Previous page\"\n >\n <ChevronLeftIcon />\n </Button>\n\n {Array.from({ length: pageCount }, (_, i) => (\n <Button\n key={i}\n variant={i === pageIndex ? \"default\" : \"link\"}\n size=\"icon-xs\"\n onClick={() => table.setPageIndex(i)}\n aria-label={`Page ${i + 1}`}\n aria-current={i === pageIndex ? \"page\" : undefined}\n >\n {i + 1}\n </Button>\n ))}\n\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n aria-label=\"Next page\"\n >\n <ChevronRightIcon />\n </Button>\n </div>\n )}\n </div>\n )\n}\n\nexport { DataTablePagination }\nexport type { DataTablePaginationProps }\n"],"names":["DEFAULT_PAGE_SIZE_SMALL","DEFAULT_PAGE_SIZE_MEDIUM","DEFAULT_PAGE_SIZE_LARGE","DataTablePagination","pageSizeOptions","className","table","useDataTable","pageCount","pageIndex","pageSize","totalRows","start","end","jsxs","cn","jsx","Select","value","SelectTrigger","SelectValue","SelectContent","size","SelectItem","Button","ChevronLeftIcon","_","i","ChevronRightIcon"],"mappings":"uQAqBMA,EAA0B,EAC1BC,EAA2B,GAC3BC,EAA0B,GAEhC,SAASC,EAAoB,CAC3B,gBAAAC,EAAkB,CAACJ,EAAyBC,EAA0BC,CAAuB,EAC7F,UAAAG,CACF,EAA6B,CAC3B,KAAM,CAAE,MAAAC,CAAA,EAAUC,eAAA,EAEZC,EAAYF,EAAM,aAAA,EAClB,CAAE,UAAAG,EAAW,SAAAC,CAAA,EAAaJ,EAAM,WAAW,WAC3CK,EAAYL,EAAM,oBAAA,EAAsB,KAAK,OAEnD,GAAIK,IAAc,EAAG,OAAO,KAE5B,MAAMC,EAAQH,EAAYC,EAAW,EAC/BG,EAAM,KAAK,KAAKJ,EAAY,GAAKC,EAAUC,CAAS,EAE1D,OACEG,EAAAA,KAAC,MAAA,CACC,YAAU,wBACV,UAAWC,EAAAA,GACT,wEACAV,CAAA,EAGF,SAAA,CAAAS,EAAAA,KAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAE,EAAAA,IAAC,OAAA,CAAK,UAAU,oBAAoB,SAAA,iBAAc,EAClDF,EAAAA,KAACG,EAAAA,OAAA,CACC,MAAO,OAAOP,CAAQ,EACtB,cAAgBQ,GAAUZ,EAAM,YAAY,OAAOY,CAAK,CAAC,EAEzD,SAAA,CAAAF,MAACG,EAAAA,cAAA,CAAc,UAAU,WACvB,SAAAH,MAACI,EAAAA,cAAY,EACf,EACAJ,EAAAA,IAACK,EAAAA,cAAA,CACE,SAAAjB,EAAgB,IAAKkB,GACpBN,MAACO,EAAAA,WAAA,CAAsB,MAAO,OAAOD,CAAI,EACtC,SAAAA,CAAA,EADcA,CAEjB,CACD,CAAA,CACH,CAAA,CAAA,CAAA,EAEFR,EAAAA,KAAC,OAAA,CAAK,UAAU,iCACb,SAAA,CAAAF,EAAM,IAAQC,EAAI,OAAKF,CAAA,CAAA,CAC1B,CAAA,EACF,EAECH,EAAY,GACXM,OAAC,MAAA,CAAI,UAAU,0BACb,SAAA,CAAAE,EAAAA,IAACQ,EAAAA,OAAA,CACC,QAAQ,QACR,KAAK,UACL,QAAS,IAAMlB,EAAM,aAAA,EACrB,SAAU,CAACA,EAAM,mBAAA,EACjB,aAAW,gBAEX,eAACmB,EAAAA,gBAAA,CAAA,CAAgB,CAAA,CAAA,EAGlB,MAAM,KAAK,CAAE,OAAQjB,GAAa,CAACkB,EAAGC,IACrCX,EAAAA,IAACQ,EAAAA,OAAA,CAEC,QAASG,IAAMlB,EAAY,UAAY,OACvC,KAAK,UACL,QAAS,IAAMH,EAAM,aAAaqB,CAAC,EACnC,aAAY,QAAQA,EAAI,CAAC,GACzB,eAAcA,IAAMlB,EAAY,OAAS,OAExC,SAAAkB,EAAI,CAAA,EAPAA,CAAA,CASR,EAEDX,EAAAA,IAACQ,EAAAA,OAAA,CACC,QAAQ,QACR,KAAK,UACL,QAAS,IAAMlB,EAAM,SAAA,EACrB,SAAU,CAACA,EAAM,eAAA,EACjB,aAAW,YAEX,eAACsB,EAAAA,iBAAA,CAAA,CAAiB,CAAA,CAAA,CACpB,CAAA,CACF,CAAA,CAAA,CAAA,CAIR"}
@@ -0,0 +1,88 @@
1
+ import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
+ import { ChevronLeftIcon as h, ChevronRightIcon as u } from "lucide-react";
3
+ import { useDataTable as f } from "./data-table.js";
4
+ import { Button as s } from "../button.js";
5
+ import { Select as v, SelectTrigger as x, SelectValue as P, SelectContent as S, SelectItem as b } from "../select.js";
6
+ import { cn as C } from "../../../lib/utils.js";
7
+ const E = 5, w = 10, _ = 25;
8
+ function M({
9
+ pageSizeOptions: g = [E, w, _],
10
+ className: m
11
+ }) {
12
+ const { table: a } = f(), c = a.getPageCount(), { pageIndex: o, pageSize: i } = a.getState().pagination, l = a.getFilteredRowModel().rows.length;
13
+ if (l === 0) return null;
14
+ const d = o * i + 1, p = Math.min((o + 1) * i, l);
15
+ return /* @__PURE__ */ r(
16
+ "div",
17
+ {
18
+ "data-slot": "data-table-pagination",
19
+ className: C(
20
+ "flex items-center justify-between gap-4 text-sm text-muted-foreground",
21
+ m
22
+ ),
23
+ children: [
24
+ /* @__PURE__ */ r("div", { className: "flex items-center gap-2", children: [
25
+ /* @__PURE__ */ e("span", { className: "whitespace-nowrap", children: "Rows per page:" }),
26
+ /* @__PURE__ */ r(
27
+ v,
28
+ {
29
+ value: String(i),
30
+ onValueChange: (t) => a.setPageSize(Number(t)),
31
+ children: [
32
+ /* @__PURE__ */ e(x, { className: "h-7 w-16", children: /* @__PURE__ */ e(P, {}) }),
33
+ /* @__PURE__ */ e(S, { children: g.map((t) => /* @__PURE__ */ e(b, { value: String(t), children: t }, t)) })
34
+ ]
35
+ }
36
+ ),
37
+ /* @__PURE__ */ r("span", { className: "whitespace-nowrap tabular-nums", children: [
38
+ d,
39
+ "–",
40
+ p,
41
+ " of ",
42
+ l
43
+ ] })
44
+ ] }),
45
+ c > 1 && /* @__PURE__ */ r("div", { className: "flex items-center gap-1", children: [
46
+ /* @__PURE__ */ e(
47
+ s,
48
+ {
49
+ variant: "ghost",
50
+ size: "icon-sm",
51
+ onClick: () => a.previousPage(),
52
+ disabled: !a.getCanPreviousPage(),
53
+ "aria-label": "Previous page",
54
+ children: /* @__PURE__ */ e(h, {})
55
+ }
56
+ ),
57
+ Array.from({ length: c }, (t, n) => /* @__PURE__ */ e(
58
+ s,
59
+ {
60
+ variant: n === o ? "default" : "link",
61
+ size: "icon-xs",
62
+ onClick: () => a.setPageIndex(n),
63
+ "aria-label": `Page ${n + 1}`,
64
+ "aria-current": n === o ? "page" : void 0,
65
+ children: n + 1
66
+ },
67
+ n
68
+ )),
69
+ /* @__PURE__ */ e(
70
+ s,
71
+ {
72
+ variant: "ghost",
73
+ size: "icon-sm",
74
+ onClick: () => a.nextPage(),
75
+ disabled: !a.getCanNextPage(),
76
+ "aria-label": "Next page",
77
+ children: /* @__PURE__ */ e(u, {})
78
+ }
79
+ )
80
+ ] })
81
+ ]
82
+ }
83
+ );
84
+ }
85
+ export {
86
+ M as DataTablePagination
87
+ };
88
+ //# sourceMappingURL=data-table-pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-pagination.js","sources":["../../../../src/components/ui/data-table/data-table-pagination.tsx"],"sourcesContent":["\"use client\"\n\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\n\nimport { useDataTable } from \"./data-table\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\"\nimport { cn } from \"@/lib/utils\"\n\ninterface DataTablePaginationProps {\n pageSizeOptions?: number[]\n className?: string\n}\n\nconst DEFAULT_PAGE_SIZE_SMALL = 5\nconst DEFAULT_PAGE_SIZE_MEDIUM = 10\nconst DEFAULT_PAGE_SIZE_LARGE = 25\n\nfunction DataTablePagination({\n pageSizeOptions = [DEFAULT_PAGE_SIZE_SMALL, DEFAULT_PAGE_SIZE_MEDIUM, DEFAULT_PAGE_SIZE_LARGE],\n className,\n}: DataTablePaginationProps) {\n const { table } = useDataTable()\n\n const pageCount = table.getPageCount()\n const { pageIndex, pageSize } = table.getState().pagination\n const totalRows = table.getFilteredRowModel().rows.length\n\n if (totalRows === 0) return null\n\n const start = pageIndex * pageSize + 1\n const end = Math.min((pageIndex + 1) * pageSize, totalRows)\n\n return (\n <div\n data-slot=\"data-table-pagination\"\n className={cn(\n \"flex items-center justify-between gap-4 text-sm text-muted-foreground\",\n className,\n )}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"whitespace-nowrap\">Rows per page:</span>\n <Select\n value={String(pageSize)}\n onValueChange={(value) => table.setPageSize(Number(value))}\n >\n <SelectTrigger className=\"h-7 w-16\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <span className=\"whitespace-nowrap tabular-nums\">\n {start}&ndash;{end} of {totalRows}\n </span>\n </div>\n\n {pageCount > 1 && (\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n aria-label=\"Previous page\"\n >\n <ChevronLeftIcon />\n </Button>\n\n {Array.from({ length: pageCount }, (_, i) => (\n <Button\n key={i}\n variant={i === pageIndex ? \"default\" : \"link\"}\n size=\"icon-xs\"\n onClick={() => table.setPageIndex(i)}\n aria-label={`Page ${i + 1}`}\n aria-current={i === pageIndex ? \"page\" : undefined}\n >\n {i + 1}\n </Button>\n ))}\n\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n aria-label=\"Next page\"\n >\n <ChevronRightIcon />\n </Button>\n </div>\n )}\n </div>\n )\n}\n\nexport { DataTablePagination }\nexport type { DataTablePaginationProps }\n"],"names":["DEFAULT_PAGE_SIZE_SMALL","DEFAULT_PAGE_SIZE_MEDIUM","DEFAULT_PAGE_SIZE_LARGE","DataTablePagination","pageSizeOptions","className","table","useDataTable","pageCount","pageIndex","pageSize","totalRows","start","end","jsxs","cn","jsx","Select","value","SelectTrigger","SelectValue","SelectContent","size","SelectItem","Button","ChevronLeftIcon","_","i","ChevronRightIcon"],"mappings":";;;;;;AAqBA,MAAMA,IAA0B,GAC1BC,IAA2B,IAC3BC,IAA0B;AAEhC,SAASC,EAAoB;AAAA,EAC3B,iBAAAC,IAAkB,CAACJ,GAAyBC,GAA0BC,CAAuB;AAAA,EAC7F,WAAAG;AACF,GAA6B;AAC3B,QAAM,EAAE,OAAAC,EAAA,IAAUC,EAAA,GAEZC,IAAYF,EAAM,aAAA,GAClB,EAAE,WAAAG,GAAW,UAAAC,EAAA,IAAaJ,EAAM,WAAW,YAC3CK,IAAYL,EAAM,oBAAA,EAAsB,KAAK;AAEnD,MAAIK,MAAc,EAAG,QAAO;AAE5B,QAAMC,IAAQH,IAAYC,IAAW,GAC/BG,IAAM,KAAK,KAAKJ,IAAY,KAAKC,GAAUC,CAAS;AAE1D,SACE,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAV;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,gBAAAS,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,UAAA,gBAAAE,EAAC,QAAA,EAAK,WAAU,qBAAoB,UAAA,kBAAc;AAAA,UAClD,gBAAAF;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,OAAO,OAAOP,CAAQ;AAAA,cACtB,eAAe,CAACQ,MAAUZ,EAAM,YAAY,OAAOY,CAAK,CAAC;AAAA,cAEzD,UAAA;AAAA,gBAAA,gBAAAF,EAACG,GAAA,EAAc,WAAU,YACvB,UAAA,gBAAAH,EAACI,KAAY,GACf;AAAA,gBACA,gBAAAJ,EAACK,GAAA,EACE,UAAAjB,EAAgB,IAAI,CAACkB,MACpB,gBAAAN,EAACO,GAAA,EAAsB,OAAO,OAAOD,CAAI,GACtC,UAAAA,EAAA,GADcA,CAEjB,CACD,EAAA,CACH;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAEF,gBAAAR,EAAC,QAAA,EAAK,WAAU,kCACb,UAAA;AAAA,YAAAF;AAAA,YAAM;AAAA,YAAQC;AAAA,YAAI;AAAA,YAAKF;AAAA,UAAA,EAAA,CAC1B;AAAA,QAAA,GACF;AAAA,QAECH,IAAY,KACX,gBAAAM,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,UAAA,gBAAAE;AAAA,YAACQ;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS,MAAMlB,EAAM,aAAA;AAAA,cACrB,UAAU,CAACA,EAAM,mBAAA;AAAA,cACjB,cAAW;AAAA,cAEX,4BAACmB,GAAA,CAAA,CAAgB;AAAA,YAAA;AAAA,UAAA;AAAA,UAGlB,MAAM,KAAK,EAAE,QAAQjB,KAAa,CAACkB,GAAGC,MACrC,gBAAAX;AAAA,YAACQ;AAAA,YAAA;AAAA,cAEC,SAASG,MAAMlB,IAAY,YAAY;AAAA,cACvC,MAAK;AAAA,cACL,SAAS,MAAMH,EAAM,aAAaqB,CAAC;AAAA,cACnC,cAAY,QAAQA,IAAI,CAAC;AAAA,cACzB,gBAAcA,MAAMlB,IAAY,SAAS;AAAA,cAExC,UAAAkB,IAAI;AAAA,YAAA;AAAA,YAPAA;AAAA,UAAA,CASR;AAAA,UAED,gBAAAX;AAAA,YAACQ;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,SAAS,MAAMlB,EAAM,SAAA;AAAA,cACrB,UAAU,CAACA,EAAM,eAAA;AAAA,cACjB,cAAW;AAAA,cAEX,4BAACsB,GAAA,CAAA,CAAiB;AAAA,YAAA;AAAA,UAAA;AAAA,QACpB,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}