dgz-ui-shared 1.2.16 → 1.2.17

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 (41) hide show
  1. package/dist/chunks/Actions-25X7c3Kg.es.js +34 -0
  2. package/dist/chunks/Actions-25X7c3Kg.es.js.map +1 -0
  3. package/dist/chunks/Actions-DQPuVKCk.cjs.js +2 -0
  4. package/dist/chunks/Actions-DQPuVKCk.cjs.js.map +1 -0
  5. package/dist/chunks/ExportData-C1Lrr1gH.cjs.js +2 -0
  6. package/dist/chunks/ExportData-C1Lrr1gH.cjs.js.map +1 -0
  7. package/dist/chunks/ExportData-Cuy6BvoM.es.js +36 -0
  8. package/dist/chunks/ExportData-Cuy6BvoM.es.js.map +1 -0
  9. package/dist/chunks/Search-0PkBZIDP.es.js +149 -0
  10. package/dist/chunks/Search-0PkBZIDP.es.js.map +1 -0
  11. package/dist/chunks/Search-CO1xBkv4.cjs.js +2 -0
  12. package/dist/chunks/Search-CO1xBkv4.cjs.js.map +1 -0
  13. package/dist/components/actions/index.cjs.js +1 -1
  14. package/dist/components/actions/index.es.js +1 -1
  15. package/dist/components/datatable/index.cjs.js +1 -1
  16. package/dist/components/datatable/index.es.js +3 -3
  17. package/dist/components/export/index.cjs.js +1 -1
  18. package/dist/components/export/index.es.js +1 -1
  19. package/dist/components/filters/index.cjs.js +1 -1
  20. package/dist/components/filters/index.es.js +1 -1
  21. package/dist/components/theme/index.cjs.js +1 -1
  22. package/dist/components/theme/index.cjs.js.map +1 -1
  23. package/dist/components/theme/index.es.js +1 -1
  24. package/dist/components/theme/index.es.js.map +1 -1
  25. package/dist/styles.css +1 -1
  26. package/dist/types/components/actions/Actions.d.ts.map +1 -1
  27. package/dist/types/components/export/ExportData.d.ts.map +1 -1
  28. package/dist/types/components/filters/FilterWrapper.d.ts.map +1 -1
  29. package/package.json +2 -2
  30. package/dist/chunks/Actions-Bi_vjY5M.es.js +0 -30
  31. package/dist/chunks/Actions-Bi_vjY5M.es.js.map +0 -1
  32. package/dist/chunks/Actions-CXOiCjx0.cjs.js +0 -2
  33. package/dist/chunks/Actions-CXOiCjx0.cjs.js.map +0 -1
  34. package/dist/chunks/ExportData-CHPKm-ZY.es.js +0 -32
  35. package/dist/chunks/ExportData-CHPKm-ZY.es.js.map +0 -1
  36. package/dist/chunks/ExportData-CrB0H1Ts.cjs.js +0 -2
  37. package/dist/chunks/ExportData-CrB0H1Ts.cjs.js.map +0 -1
  38. package/dist/chunks/Search-CjVcBFAN.es.js +0 -149
  39. package/dist/chunks/Search-CjVcBFAN.es.js.map +0 -1
  40. package/dist/chunks/Search-hHeGlXqd.cjs.js +0 -2
  41. package/dist/chunks/Search-hHeGlXqd.cjs.js.map +0 -1
@@ -0,0 +1,34 @@
1
+ import { jsxs as o, jsx as n } from "react/jsx-runtime";
2
+ import { W as d, f as m } from "./index-E1NtSoNr.es.js";
3
+ import { Button as c } from "dgz-ui/button";
4
+ import { DropdownMenu as p, DropdownMenuTrigger as u, DropdownMenuContent as h, DropdownMenuItem as f } from "dgz-ui/dropdown";
5
+ import { useTranslation as g } from "react-i18next";
6
+ const A = ({
7
+ actions: e,
8
+ triggerProps: i,
9
+ contentProps: s,
10
+ title: t
11
+ }) => {
12
+ const { t: l } = g();
13
+ return /* @__PURE__ */ o(p, { children: [
14
+ /* @__PURE__ */ n(u, { asChild: !0, ...i, children: /* @__PURE__ */ o(
15
+ c,
16
+ {
17
+ variant: "secondary",
18
+ size: "sm",
19
+ className: "ml-auto rounded-lg px-3",
20
+ children: [
21
+ /* @__PURE__ */ n(d, {}),
22
+ " ",
23
+ /* @__PURE__ */ n("span", { className: "hidden lg:inline!", children: t || l("Actions") }),
24
+ /* @__PURE__ */ n(m, {})
25
+ ]
26
+ }
27
+ ) }),
28
+ /* @__PURE__ */ n(h, { align: "end", ...s, children: e.map((r, a) => /* @__PURE__ */ n(f, { onClick: () => r.onClick(), children: r.label }, a)) })
29
+ ] });
30
+ };
31
+ export {
32
+ A
33
+ };
34
+ //# sourceMappingURL=Actions-25X7c3Kg.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Actions-25X7c3Kg.es.js","sources":["../../src/components/actions/Actions.tsx"],"sourcesContent":["import { RiArrowDownSLine, RiPlayList2Line } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n/**\n * Interface representing a single action item.\n */\nexport interface ActionInterface {\n /** The content to display for the action item. */\n label: ReactNode;\n /** Callback function to execute when the action is clicked. */\n onClick: () => void;\n}\n\n/**\n * Props for the Actions component.\n */\nexport interface ActionsProps extends DropdownContainerProps {\n /** Array of action items to be displayed in the dropdown. */\n actions: ActionInterface[];\n /** Title for the actions button. */\n title?: ReactNode;\n}\n\n/**\n * Actions renders a dropdown menu with a list of action items.\n *\n * @param props.actions - Array of actions with label and onClick handler.\n * @returns React element rendering the actions dropdown.\n */\nexport const Actions = ({\n actions,\n triggerProps,\n contentProps,\n title,\n}: ActionsProps) => {\n const { t } = useTranslation();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild {...triggerProps}>\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n <RiPlayList2Line />{' '}\n <span className={'hidden lg:inline!'}>{title || t('Actions')}</span>\n <RiArrowDownSLine />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" {...contentProps}>\n {actions.map((action, index) => {\n return (\n <DropdownMenuItem key={index} onClick={() => action.onClick()}>\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["Actions","actions","triggerProps","contentProps","title","t","useTranslation","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","RiPlayList2Line","RiArrowDownSLine","DropdownMenuContent","action","index","DropdownMenuItem"],"mappings":";;;;;AAsCO,MAAMA,IAAU,CAAC;AAAA,EACtB,SAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AACF,MAAoB;AAClB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA;AAEd,2BACGC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAoB,SAAO,IAAE,GAAGP,GAC/B,UAAA,gBAAAQ;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAM;AAAA,QACN,WAAW;AAAA,QAEX,UAAA;AAAA,UAAA,gBAAAH,EAACI,GAAA,EAAgB;AAAA,UAAG;AAAA,4BACnB,QAAA,EAAK,WAAW,qBAAsB,UAAAR,KAASC,EAAE,SAAS,GAAE;AAAA,4BAC5DQ,GAAA,CAAA,CAAiB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEtB;AAAA,IACA,gBAAAL,EAACM,GAAA,EAAoB,OAAM,OAAO,GAAGX,GAClC,UAAAF,EAAQ,IAAI,CAACc,GAAQC,MAElB,gBAAAR,EAACS,KAA6B,SAAS,MAAMF,EAAO,QAAA,GACjD,UAAAA,EAAO,MAAA,GADaC,CAEvB,CAEH,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const n=require("react/jsx-runtime"),s=require("./index-ClQFzqcq.cjs.js"),u=require("dgz-ui/button"),e=require("dgz-ui/dropdown"),a=require("react-i18next"),x=({actions:o,triggerProps:t,contentProps:i,title:c})=>{const{t:d}=a.useTranslation();return n.jsxs(e.DropdownMenu,{children:[n.jsx(e.DropdownMenuTrigger,{asChild:!0,...t,children:n.jsxs(u.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:[n.jsx(s.Wg,{})," ",n.jsx("span",{className:"hidden lg:inline!",children:c||d("Actions")}),n.jsx(s.f1,{})]})}),n.jsx(e.DropdownMenuContent,{align:"end",...i,children:o.map((r,l)=>n.jsx(e.DropdownMenuItem,{onClick:()=>r.onClick(),children:r.label},l))})]})};exports.Actions=x;
2
+ //# sourceMappingURL=Actions-DQPuVKCk.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Actions-DQPuVKCk.cjs.js","sources":["../../src/components/actions/Actions.tsx"],"sourcesContent":["import { RiArrowDownSLine, RiPlayList2Line } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n/**\n * Interface representing a single action item.\n */\nexport interface ActionInterface {\n /** The content to display for the action item. */\n label: ReactNode;\n /** Callback function to execute when the action is clicked. */\n onClick: () => void;\n}\n\n/**\n * Props for the Actions component.\n */\nexport interface ActionsProps extends DropdownContainerProps {\n /** Array of action items to be displayed in the dropdown. */\n actions: ActionInterface[];\n /** Title for the actions button. */\n title?: ReactNode;\n}\n\n/**\n * Actions renders a dropdown menu with a list of action items.\n *\n * @param props.actions - Array of actions with label and onClick handler.\n * @returns React element rendering the actions dropdown.\n */\nexport const Actions = ({\n actions,\n triggerProps,\n contentProps,\n title,\n}: ActionsProps) => {\n const { t } = useTranslation();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild {...triggerProps}>\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n <RiPlayList2Line />{' '}\n <span className={'hidden lg:inline!'}>{title || t('Actions')}</span>\n <RiArrowDownSLine />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" {...contentProps}>\n {actions.map((action, index) => {\n return (\n <DropdownMenuItem key={index} onClick={() => action.onClick()}>\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["Actions","actions","triggerProps","contentProps","title","t","useTranslation","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","RiPlayList2Line","RiArrowDownSLine","DropdownMenuContent","action","index","DropdownMenuItem"],"mappings":"0KAsCaA,EAAU,CAAC,CACtB,QAAAC,EACA,aAAAC,EACA,aAAAC,EACA,MAAAC,CACF,IAAoB,CAClB,KAAM,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EAEd,cACGC,eAAA,CACC,SAAA,CAAAC,EAAAA,IAACC,EAAAA,oBAAA,CAAoB,QAAO,GAAE,GAAGP,EAC/B,SAAAQ,EAAAA,KAACC,EAAAA,OAAA,CACC,QAAQ,YACR,KAAM,KACN,UAAW,0BAEX,SAAA,CAAAH,EAAAA,IAACI,EAAAA,GAAA,EAAgB,EAAG,UACnB,OAAA,CAAK,UAAW,oBAAsB,SAAAR,GAASC,EAAE,SAAS,EAAE,QAC5DQ,EAAAA,GAAA,CAAA,CAAiB,CAAA,CAAA,CAAA,EAEtB,EACAL,EAAAA,IAACM,EAAAA,oBAAA,CAAoB,MAAM,MAAO,GAAGX,EAClC,SAAAF,EAAQ,IAAI,CAACc,EAAQC,IAElBR,MAACS,EAAAA,kBAA6B,QAAS,IAAMF,EAAO,QAAA,EACjD,SAAAA,EAAO,KAAA,EADaC,CAEvB,CAEH,CAAA,CACH,CAAA,EACF,CAEJ"}
@@ -0,0 +1,2 @@
1
+ "use strict";const n=require("react/jsx-runtime"),s=require("./index-ClQFzqcq.cjs.js"),u=require("dgz-ui/button"),e=require("dgz-ui/dropdown"),x=require("react-i18next"),p=require("./Spin-DUK1prd9.cjs.js"),j=({options:t,loading:o=!1,triggerProps:i,contentProps:a,title:c})=>{const{t:d}=x.useTranslation();return n.jsxs(e.DropdownMenu,{children:[n.jsx(e.DropdownMenuTrigger,{asChild:!0,...i,children:n.jsxs(u.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:[o?n.jsx(p.Spin,{}):n.jsx(s.ZC,{})," ",n.jsx("span",{className:"hidden lg:inline!",children:c||d("Export")}),n.jsx(s.f1,{})]})}),n.jsx(e.DropdownMenuContent,{align:"end",...a,children:t.map((r,l)=>n.jsx(e.DropdownMenuItem,{onClick:()=>r.onClick(),children:r.label},l))})]})};exports.ExportData=j;
2
+ //# sourceMappingURL=ExportData-C1Lrr1gH.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportData-C1Lrr1gH.cjs.js","sources":["../../src/components/export/ExportData.tsx"],"sourcesContent":["import { RiArrowDownSLine, RiFileChartLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Spin } from '../loader';\n\n/**\n * Describes a single export option in the ExportData dropdown.\n *\n * - Use `label` to render the visible option content (text or any React node).\n * - Provide `onClick` to trigger the export logic (CSV/XLS/PDF, etc.).\n */\nexport interface ExportDataInterface {\n /** Visible content for the dropdown item (text, icon, etc.). */\n label: ReactNode;\n /** Callback executed when the export option is selected. */\n onClick: () => void;\n}\n\n/**\n * Props for the `ExportData` component.\n *\n * - `options` — A list of export actions displayed in the dropdown.\n * - `loading` — When `true`, shows a small spinner in the button to indicate an export is in progress.\n */\nexport interface ExportDataProps extends DropdownContainerProps {\n /** Export actions displayed in the dropdown. */\n options: ExportDataInterface[];\n /** If `true`, renders a spinner icon in the button. */\n loading?: boolean;\n /** Title for the export button. */\n title?: ReactNode;\n}\n\n/**\n * ExportData renders a compact dropdown button for exporting data in various formats.\n *\n * Behavior\n * - Shows a button with an export icon and localized \"Export\" label.\n * - Clicking opens a dropdown with the provided `options` list.\n * - Each option calls its `onClick` handler when selected.\n *\n * Accessibility\n * - Uses the shared Dropdown primitives and Button which provide keyboard and ARIA support.\n *\n * Internationalization\n * - The button label is translated via `react-i18next` using the `Export` key.\n */\nexport const ExportData = ({\n options,\n loading = false,\n triggerProps,\n contentProps,\n title,\n}: ExportDataProps) => {\n const { t } = useTranslation();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild {...triggerProps}>\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n {loading ? <Spin /> : <RiFileChartLine />}{' '}\n <span className={'hidden lg:inline!'}>{title || t('Export')}</span>\n <RiArrowDownSLine />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" {...contentProps}>\n {options.map((option, index) => {\n return (\n <DropdownMenuItem key={index} onClick={() => option.onClick()}>\n {option.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["ExportData","options","loading","triggerProps","contentProps","title","t","useTranslation","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","Spin","RiFileChartLine","RiArrowDownSLine","DropdownMenuContent","option","index","DropdownMenuItem"],"mappings":"8MAuDaA,EAAa,CAAC,CACzB,QAAAC,EACA,QAAAC,EAAU,GACV,aAAAC,EACA,aAAAC,EACA,MAAAC,CACF,IAAuB,CACrB,KAAM,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EAEd,cACGC,eAAA,CACC,SAAA,CAAAC,EAAAA,IAACC,EAAAA,oBAAA,CAAoB,QAAO,GAAE,GAAGP,EAC/B,SAAAQ,EAAAA,KAACC,EAAAA,OAAA,CACC,QAAQ,YACR,KAAM,KACN,UAAW,0BAEV,SAAA,CAAAV,EAAUO,EAAAA,IAACI,OAAA,CAAA,CAAK,EAAKJ,EAAAA,IAACK,EAAAA,GAAA,EAAgB,EAAI,UAC1C,OAAA,CAAK,UAAW,oBAAsB,SAAAT,GAASC,EAAE,QAAQ,EAAE,QAC3DS,EAAAA,GAAA,CAAA,CAAiB,CAAA,CAAA,CAAA,EAEtB,EACAN,EAAAA,IAACO,EAAAA,oBAAA,CAAoB,MAAM,MAAO,GAAGZ,EAClC,SAAAH,EAAQ,IAAI,CAACgB,EAAQC,IAElBT,MAACU,EAAAA,kBAA6B,QAAS,IAAMF,EAAO,QAAA,EACjD,SAAAA,EAAO,KAAA,EADaC,CAEvB,CAEH,CAAA,CACH,CAAA,EACF,CAEJ"}
@@ -0,0 +1,36 @@
1
+ import { jsxs as o, jsx as r } from "react/jsx-runtime";
2
+ import { Z as d, f as p } from "./index-E1NtSoNr.es.js";
3
+ import { Button as c } from "dgz-ui/button";
4
+ import { DropdownMenu as u, DropdownMenuTrigger as f, DropdownMenuContent as h, DropdownMenuItem as x } from "dgz-ui/dropdown";
5
+ import { useTranslation as g } from "react-i18next";
6
+ import { S as C } from "./Spin-DtW_edOq.es.js";
7
+ const N = ({
8
+ options: e,
9
+ loading: i = !1,
10
+ triggerProps: t,
11
+ contentProps: a,
12
+ title: s
13
+ }) => {
14
+ const { t: l } = g();
15
+ return /* @__PURE__ */ o(u, { children: [
16
+ /* @__PURE__ */ r(f, { asChild: !0, ...t, children: /* @__PURE__ */ o(
17
+ c,
18
+ {
19
+ variant: "secondary",
20
+ size: "sm",
21
+ className: "ml-auto rounded-lg px-3",
22
+ children: [
23
+ i ? /* @__PURE__ */ r(C, {}) : /* @__PURE__ */ r(d, {}),
24
+ " ",
25
+ /* @__PURE__ */ r("span", { className: "hidden lg:inline!", children: s || l("Export") }),
26
+ /* @__PURE__ */ r(p, {})
27
+ ]
28
+ }
29
+ ) }),
30
+ /* @__PURE__ */ r(h, { align: "end", ...a, children: e.map((n, m) => /* @__PURE__ */ r(x, { onClick: () => n.onClick(), children: n.label }, m)) })
31
+ ] });
32
+ };
33
+ export {
34
+ N as E
35
+ };
36
+ //# sourceMappingURL=ExportData-Cuy6BvoM.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExportData-Cuy6BvoM.es.js","sources":["../../src/components/export/ExportData.tsx"],"sourcesContent":["import { RiArrowDownSLine, RiFileChartLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Spin } from '../loader';\n\n/**\n * Describes a single export option in the ExportData dropdown.\n *\n * - Use `label` to render the visible option content (text or any React node).\n * - Provide `onClick` to trigger the export logic (CSV/XLS/PDF, etc.).\n */\nexport interface ExportDataInterface {\n /** Visible content for the dropdown item (text, icon, etc.). */\n label: ReactNode;\n /** Callback executed when the export option is selected. */\n onClick: () => void;\n}\n\n/**\n * Props for the `ExportData` component.\n *\n * - `options` — A list of export actions displayed in the dropdown.\n * - `loading` — When `true`, shows a small spinner in the button to indicate an export is in progress.\n */\nexport interface ExportDataProps extends DropdownContainerProps {\n /** Export actions displayed in the dropdown. */\n options: ExportDataInterface[];\n /** If `true`, renders a spinner icon in the button. */\n loading?: boolean;\n /** Title for the export button. */\n title?: ReactNode;\n}\n\n/**\n * ExportData renders a compact dropdown button for exporting data in various formats.\n *\n * Behavior\n * - Shows a button with an export icon and localized \"Export\" label.\n * - Clicking opens a dropdown with the provided `options` list.\n * - Each option calls its `onClick` handler when selected.\n *\n * Accessibility\n * - Uses the shared Dropdown primitives and Button which provide keyboard and ARIA support.\n *\n * Internationalization\n * - The button label is translated via `react-i18next` using the `Export` key.\n */\nexport const ExportData = ({\n options,\n loading = false,\n triggerProps,\n contentProps,\n title,\n}: ExportDataProps) => {\n const { t } = useTranslation();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild {...triggerProps}>\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n {loading ? <Spin /> : <RiFileChartLine />}{' '}\n <span className={'hidden lg:inline!'}>{title || t('Export')}</span>\n <RiArrowDownSLine />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" {...contentProps}>\n {options.map((option, index) => {\n return (\n <DropdownMenuItem key={index} onClick={() => option.onClick()}>\n {option.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["ExportData","options","loading","triggerProps","contentProps","title","t","useTranslation","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","Spin","RiFileChartLine","RiArrowDownSLine","DropdownMenuContent","option","index","DropdownMenuItem"],"mappings":";;;;;;AAuDO,MAAMA,IAAa,CAAC;AAAA,EACzB,SAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AACF,MAAuB;AACrB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA;AAEd,2BACGC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAoB,SAAO,IAAE,GAAGP,GAC/B,UAAA,gBAAAQ;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,MAAM;AAAA,QACN,WAAW;AAAA,QAEV,UAAA;AAAA,UAAAV,IAAU,gBAAAO,EAACI,GAAA,CAAA,CAAK,IAAK,gBAAAJ,EAACK,GAAA,EAAgB;AAAA,UAAI;AAAA,4BAC1C,QAAA,EAAK,WAAW,qBAAsB,UAAAT,KAASC,EAAE,QAAQ,GAAE;AAAA,4BAC3DS,GAAA,CAAA,CAAiB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEtB;AAAA,IACA,gBAAAN,EAACO,GAAA,EAAoB,OAAM,OAAO,GAAGZ,GAClC,UAAAH,EAAQ,IAAI,CAACgB,GAAQC,MAElB,gBAAAT,EAACU,KAA6B,SAAS,MAAMF,EAAO,QAAA,GACjD,UAAAA,EAAO,MAAA,GADaC,CAEvB,CAEH,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;"}
@@ -0,0 +1,149 @@
1
+ import { jsxs as l, jsx as s } from "react/jsx-runtime";
2
+ import { Button as c } from "dgz-ui/button";
3
+ import { Form as B, Input as O } from "dgz-ui/form";
4
+ import { Popover as C, PopoverTrigger as L, PopoverContent as W } from "dgz-ui/popover";
5
+ import { l as k } from "./lodash-CRDOWzbs.es.js";
6
+ import { ListFilterPlusIcon as U, ListFilterIcon as $, ChevronDown as q } from "lucide-react";
7
+ import { memo as G, useState as h, useEffect as x, useCallback as E } from "react";
8
+ import { useTranslation as I } from "react-i18next";
9
+ import { u as H } from "./useFilter-C_K_3fQu.es.js";
10
+ import { M as J } from "./MyInput-Wb0DSWo_.es.js";
11
+ import { M as Q } from "./MySelect-D8ML7nhM.es.js";
12
+ import { p as V } from "./index-E1NtSoNr.es.js";
13
+ import { cn as X } from "dgz-ui/utils";
14
+ import { K as S } from "./Keyboard-CJVAJWdO.es.js";
15
+ const pe = G(function({
16
+ filters: a,
17
+ params: r,
18
+ onFilter: t,
19
+ onChange: n,
20
+ onCancel: y,
21
+ triggerProps: i,
22
+ contentProps: m,
23
+ title: o,
24
+ resetText: M,
25
+ applyText: P,
26
+ ...z
27
+ }) {
28
+ const { t: p } = I(), [T, j] = h(!1), [w, d] = h(!1), { form: v } = H({ params: r }), { watch: D, handleSubmit: F, control: b, reset: N } = v;
29
+ x(() => {
30
+ let e = !1;
31
+ a.map((A) => {
32
+ const u = k.get(r, `${A.name}`);
33
+ (Array.isArray(u) ? u.length > 0 : u) && (e = !0), j(e);
34
+ });
35
+ }, [a, r]);
36
+ const g = D();
37
+ x(() => {
38
+ n == null || n(g);
39
+ }, [g, n]);
40
+ const K = E(
41
+ (e = {}) => {
42
+ t == null || t(e), d(!1);
43
+ },
44
+ [t]
45
+ ), R = E(() => {
46
+ N(), t && r && t({
47
+ ...r,
48
+ ...Object.fromEntries(
49
+ a.map((e) => [e.name, void 0])
50
+ )
51
+ }), d(!1);
52
+ }, [t, N, r, a]);
53
+ return /* @__PURE__ */ l(C, { open: w, onOpenChange: d, children: [
54
+ /* @__PURE__ */ s(L, { ...i, children: /* @__PURE__ */ s(
55
+ c,
56
+ {
57
+ asChild: !0,
58
+ size: "sm",
59
+ variant: "secondary",
60
+ className: "ml-auto px-3",
61
+ ...z,
62
+ children: /* @__PURE__ */ l("div", { className: "flex items-center", children: [
63
+ T ? /* @__PURE__ */ s(U, { className: "size-5" }) : /* @__PURE__ */ s($, { className: "size-5" }),
64
+ " ",
65
+ /* @__PURE__ */ s("span", { className: "hidden lg:inline!", children: o || p("Filter") }),
66
+ /* @__PURE__ */ s(q, {})
67
+ ] })
68
+ }
69
+ ) }),
70
+ /* @__PURE__ */ s(W, { side: "bottom", align: "end", ...m, children: /* @__PURE__ */ s(B, { ...v, children: /* @__PURE__ */ l("form", { onSubmit: F(K), className: "space-y-4", children: [
71
+ /* @__PURE__ */ s("div", { className: "h-full shrink space-y-6 p-1", children: a.map(
72
+ (e) => e.options ? /* @__PURE__ */ s(
73
+ Q,
74
+ {
75
+ control: b,
76
+ name: e.name,
77
+ isSearchable: !!e.isSearchable,
78
+ placeholder: e.placeholder,
79
+ isMulti: e.isMulti,
80
+ options: e.options,
81
+ label: e.label
82
+ },
83
+ e.name
84
+ ) : /* @__PURE__ */ s(
85
+ J,
86
+ {
87
+ control: b,
88
+ placeholder: e.placeholder,
89
+ name: e.name,
90
+ label: e.label
91
+ },
92
+ e.name
93
+ )
94
+ ) }),
95
+ /* @__PURE__ */ l("div", { className: "flex shrink-0 justify-end gap-2", children: [
96
+ /* @__PURE__ */ s(
97
+ c,
98
+ {
99
+ variant: "destructive",
100
+ type: "reset",
101
+ size: "sm",
102
+ onClick: R,
103
+ children: M || p("Reset")
104
+ }
105
+ ),
106
+ /* @__PURE__ */ s(c, { type: "submit", size: "sm", children: P || p("Apply") })
107
+ ] })
108
+ ] }) }) })
109
+ ] });
110
+ }), de = ({
111
+ placeholder: f,
112
+ onSearchChange: a,
113
+ className: r,
114
+ inputProps: t,
115
+ ...n
116
+ }) => {
117
+ const { t: y } = I(), [i, m] = h("");
118
+ return /* @__PURE__ */ l("div", { ...n, className: X("relative w-full", r), children: [
119
+ /* @__PURE__ */ s(
120
+ O,
121
+ {
122
+ ...t,
123
+ placeholder: f || y("Type text and press Enter"),
124
+ onInput: (o) => m(k.get(o, "target.value", "")),
125
+ onKeyUp: (o) => {
126
+ o.key === S.ENTER && (a(i || void 0), o.stopPropagation(), o.preventDefault());
127
+ },
128
+ onKeyDown: (o) => {
129
+ o.key === S.ENTER && (o.stopPropagation(), o.preventDefault());
130
+ }
131
+ }
132
+ ),
133
+ /* @__PURE__ */ s(
134
+ c,
135
+ {
136
+ type: "button",
137
+ variant: "ghost",
138
+ className: "text-foreground absolute top-0 right-0 cursor-pointer rounded-md bg-transparent!",
139
+ onClick: () => a(i),
140
+ children: /* @__PURE__ */ s(V, {})
141
+ }
142
+ )
143
+ ] });
144
+ };
145
+ export {
146
+ pe as F,
147
+ de as S
148
+ };
149
+ //# sourceMappingURL=Search-0PkBZIDP.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Search-0PkBZIDP.es.js","sources":["../../src/components/filters/FilterWrapper.tsx","../../src/components/filters/Search.tsx"],"sourcesContent":["import { Button, type ButtonProps } from 'dgz-ui/button';\nimport { Form, type Option } from 'dgz-ui/form';\nimport {\n Popover,\n type PopoverContainerProps,\n PopoverContent,\n PopoverTrigger,\n} from 'dgz-ui/popover';\nimport { get } from 'lodash';\nimport { ChevronDown, ListFilterIcon, ListFilterPlusIcon } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useState } from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useFilter } from '../../hooks';\nimport { MyInput, MySelect } from '../form';\n\n/**\n * Interface representing a filter configuration.\n */\nexport interface FilterInterface {\n /** Label for the filter field. */\n label?: ReactNode;\n /** Placeholder text for the input/select. */\n placeholder?: string;\n /** Default value for the filter. */\n value?: string | string[];\n /** Name of the filter field (used as key). */\n name: string;\n /** Whether the filter supports multiple values (for select inputs). */\n isMulti?: boolean;\n /** Whether the filter supports searchable inputs (for select inputs). */\n isSearchable?: boolean;\n /** Options for select inputs. */\n options?: Option[];\n}\n\n/**\n * Props for the FilterWrapper component.\n */\nexport interface FilterWrapperProps\n extends Omit<ButtonProps, 'title'>, PopoverContainerProps {\n /** Array of filter definitions to render. */\n filters: FilterInterface[];\n /** Current active parameters/filters. */\n params?: Record<string, unknown>;\n /** Callback fired when filters are applied. */\n onFilter?: (filters: Record<string, unknown>) => void;\n /** Callback fired when the filter popover is closed/cancelled. */\n onCancel?: () => void;\n /** Callback fired when filter form values change. */\n onChange?: (filters: FieldValues) => void;\n /** Title for the filter button. */\n title?: ReactNode;\n /** Text for the reset button. */\n resetText?: ReactNode;\n /** Text for the apply button. */\n applyText?: ReactNode;\n}\n\n/**\n * FilterWrapper shows a popover with a dynamic list of field filters and emits selected filter values.\n *\n * @param props.filters - Array of filter definitions to render.\n * @param props.params - Current params used to detect active filters.\n * @param props.onFilter - Callback fired when user applies filters.\n * @param props.onCancel - Callback fired on cancel.\n * @param props.onChange - Callback fired whenever filter form values change.\n */\nexport const FilterWrapper = memo(function FilterWrapper({\n filters,\n params,\n onFilter,\n onChange,\n onCancel,\n triggerProps,\n contentProps,\n title,\n resetText,\n applyText,\n ...btnProps\n}: FilterWrapperProps) {\n const { t } = useTranslation();\n const [isFiltered, setIsFiltered] = useState(false);\n const [open, setOpen] = useState(false);\n const { form } = useFilter({ params });\n\n const { watch, handleSubmit, control, reset } = form;\n\n useEffect(() => {\n let hasFilter = false;\n filters.map((filter) => {\n const value = get(params, `${filter.name}`);\n if (Array.isArray(value) ? value.length > 0 : Boolean(value)) {\n hasFilter = true;\n }\n\n setIsFiltered(hasFilter);\n });\n }, [filters, params]);\n\n const values = watch();\n\n useEffect(() => {\n onChange?.(values);\n }, [values, onChange]);\n\n const handleFilter = useCallback(\n (data = {}) => {\n onFilter?.(data);\n setOpen(false);\n },\n [onFilter]\n );\n\n const handleReset = useCallback(() => {\n reset();\n if (onFilter && params) {\n onFilter({\n ...params,\n ...Object.fromEntries(\n filters.map((filter) => [filter.name, undefined])\n ),\n });\n }\n setOpen(false);\n }, [onFilter, reset, params, filters]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger {...triggerProps}>\n <Button\n asChild\n size={'sm'}\n variant=\"secondary\"\n className={'ml-auto px-3'}\n {...btnProps}\n >\n <div className={'flex items-center'}>\n {isFiltered ? (\n <ListFilterPlusIcon className={'size-5'} />\n ) : (\n <ListFilterIcon className={'size-5'} />\n )}{' '}\n <span className={'hidden lg:inline!'}>{title || t('Filter')}</span>\n <ChevronDown />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent side={'bottom'} align={'end'} {...contentProps}>\n <Form {...form}>\n <form onSubmit={handleSubmit(handleFilter)} className={'space-y-4'}>\n <div className={'h-full shrink space-y-6 p-1'}>\n {filters.map((filter) =>\n filter.options ? (\n <MySelect\n key={filter.name}\n control={control}\n name={filter.name}\n isSearchable={Boolean(filter.isSearchable)}\n placeholder={filter.placeholder}\n isMulti={filter.isMulti}\n options={filter.options}\n label={filter.label}\n />\n ) : (\n <MyInput\n key={filter.name}\n control={control}\n placeholder={filter.placeholder}\n name={filter.name}\n label={filter.label}\n />\n )\n )}\n </div>\n <div className={'flex shrink-0 justify-end gap-2'}>\n <Button\n variant={'destructive'}\n type=\"reset\"\n size={'sm'}\n onClick={handleReset}\n >\n {resetText || t('Reset')}\n </Button>\n <Button type=\"submit\" size={'sm'}>\n {applyText || t('Apply')}\n </Button>\n </div>\n </form>\n </Form>\n </PopoverContent>\n </Popover>\n );\n});\n","import { RiSearchLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport type { CardProps } from 'dgz-ui/card';\nimport { Input, type InputProps } from 'dgz-ui/form';\nimport { cn } from 'dgz-ui/utils';\nimport { get } from 'lodash';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Keyboard } from '../../enums';\n\n/**\n * Props for the Search component.\n */\nexport type SearchProps = Omit<CardProps, 'title'> & {\n /** Custom placeholder text for the input. */\n placeholder?: string;\n /** Callback fired when the search is triggered. */\n onSearchChange: (search?: string) => void;\n inputProps?: InputProps;\n};\n\n/**\n * Search input with a submit button that triggers a search action.\n *\n * This component renders a search input field and a search button. The search\n * is triggered when the user presses Enter or clicks the button. The search\n * value is then passed to the `onSearchChange` callback.\n *\n * @param {SearchProps} props - The props for the component.\n * @param {string} [props.placeholder] - Optional placeholder text for the input field.\n * @param {Function} props.onSearchChange - Callback function that is called when a search is performed.\n * @param {string} [props.className] - Optional class name for the component.\n * @param {InputProps} [props.inputProps] - Optional props to pass to the underlying Input component.\n */\nexport const Search = ({\n placeholder,\n onSearchChange,\n className,\n inputProps,\n ...props\n}: SearchProps) => {\n const { t } = useTranslation();\n const [search, setSearch] = useState('');\n\n return (\n <div {...props} className={cn('relative w-full', className)}>\n <Input\n {...inputProps}\n placeholder={placeholder || t('Type text and press Enter')}\n onInput={(evt) => setSearch(get(evt, 'target.value', ''))}\n onKeyUp={(evt) => {\n if (evt.key === Keyboard.ENTER) {\n onSearchChange(search || undefined);\n evt.stopPropagation();\n evt.preventDefault();\n }\n }}\n onKeyDown={(event) => {\n if (event.key === Keyboard.ENTER) {\n event.stopPropagation();\n event.preventDefault();\n }\n }}\n />\n <Button\n type={'button'}\n variant={'ghost'}\n className={\n 'text-foreground absolute top-0 right-0 cursor-pointer rounded-md bg-transparent!'\n }\n onClick={() => onSearchChange(search)}\n >\n <RiSearchLine />\n </Button>\n </div>\n );\n};\n"],"names":["FilterWrapper","memo","filters","params","onFilter","onChange","onCancel","triggerProps","contentProps","title","resetText","applyText","btnProps","t","useTranslation","isFiltered","setIsFiltered","useState","open","setOpen","form","useFilter","watch","handleSubmit","control","reset","useEffect","hasFilter","filter","value","get","values","handleFilter","useCallback","data","handleReset","jsxs","Popover","jsx","PopoverTrigger","Button","ListFilterPlusIcon","ListFilterIcon","ChevronDown","PopoverContent","Form","MySelect","MyInput","Search","placeholder","onSearchChange","className","inputProps","props","search","setSearch","cn","Input","evt","Keyboard","event","RiSearchLine"],"mappings":";;;;;;;;;;;;;;AAoEO,MAAMA,KAAgBC,EAAK,SAAuB;AAAA,EACvD,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAAuB;AACrB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACR,CAACC,GAAYC,CAAa,IAAIC,EAAS,EAAK,GAC5C,CAACC,GAAMC,CAAO,IAAIF,EAAS,EAAK,GAChC,EAAE,MAAAG,EAAA,IAASC,EAAU,EAAE,QAAAlB,GAAQ,GAE/B,EAAE,OAAAmB,GAAO,cAAAC,GAAc,SAAAC,GAAS,OAAAC,MAAUL;AAEhD,EAAAM,EAAU,MAAM;AACd,QAAIC,IAAY;AAChB,IAAAzB,EAAQ,IAAI,CAAC0B,MAAW;AACtB,YAAMC,IAAQC,EAAAA,IAAI3B,GAAQ,GAAGyB,EAAO,IAAI,EAAE;AAC1C,OAAI,MAAM,QAAQC,CAAK,IAAIA,EAAM,SAAS,IAAYA,OACpDF,IAAY,KAGdX,EAAcW,CAAS;AAAA,IACzB,CAAC;AAAA,EACH,GAAG,CAACzB,GAASC,CAAM,CAAC;AAEpB,QAAM4B,IAAST,EAAA;AAEf,EAAAI,EAAU,MAAM;AACd,IAAArB,KAAA,QAAAA,EAAW0B;AAAA,EACb,GAAG,CAACA,GAAQ1B,CAAQ,CAAC;AAErB,QAAM2B,IAAeC;AAAA,IACnB,CAACC,IAAO,CAAA,MAAO;AACb,MAAA9B,KAAA,QAAAA,EAAW8B,IACXf,EAAQ,EAAK;AAAA,IACf;AAAA,IACA,CAACf,CAAQ;AAAA,EAAA,GAGL+B,IAAcF,EAAY,MAAM;AACpC,IAAAR,EAAA,GACIrB,KAAYD,KACdC,EAAS;AAAA,MACP,GAAGD;AAAA,MACH,GAAG,OAAO;AAAA,QACRD,EAAQ,IAAI,CAAC0B,MAAW,CAACA,EAAO,MAAM,MAAS,CAAC;AAAA,MAAA;AAAA,IAClD,CACD,GAEHT,EAAQ,EAAK;AAAA,EACf,GAAG,CAACf,GAAUqB,GAAOtB,GAAQD,CAAO,CAAC;AAErC,SACE,gBAAAkC,EAACC,GAAA,EAAQ,MAAAnB,GAAY,cAAcC,GACjC,UAAA;AAAA,IAAA,gBAAAmB,EAACC,GAAA,EAAgB,GAAGhC,GAClB,UAAA,gBAAA+B;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,SAAO;AAAA,QACP,MAAM;AAAA,QACN,SAAQ;AAAA,QACR,WAAW;AAAA,QACV,GAAG5B;AAAA,QAEJ,UAAA,gBAAAwB,EAAC,OAAA,EAAI,WAAW,qBACb,UAAA;AAAA,UAAArB,IACC,gBAAAuB,EAACG,KAAmB,WAAW,SAAA,CAAU,IAEzC,gBAAAH,EAACI,GAAA,EAAe,WAAW,SAAA,CAAU;AAAA,UACpC;AAAA,4BACF,QAAA,EAAK,WAAW,qBAAsB,UAAAjC,KAASI,EAAE,QAAQ,GAAE;AAAA,4BAC3D8B,GAAA,CAAA,CAAY;AAAA,QAAA,EAAA,CACf;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,sBACCC,GAAA,EAAe,MAAM,UAAU,OAAO,OAAQ,GAAGpC,GAChD,UAAA,gBAAA8B,EAACO,KAAM,GAAGzB,GACR,4BAAC,QAAA,EAAK,UAAUG,EAAaS,CAAY,GAAG,WAAW,aACrD,UAAA;AAAA,MAAA,gBAAAM,EAAC,OAAA,EAAI,WAAW,+BACb,UAAApC,EAAQ;AAAA,QAAI,CAAC0B,MACZA,EAAO,UACL,gBAAAU;AAAA,UAACQ;AAAA,UAAA;AAAA,YAEC,SAAAtB;AAAA,YACA,MAAMI,EAAO;AAAA,YACb,cAAc,EAAQA,EAAO;AAAA,YAC7B,aAAaA,EAAO;AAAA,YACpB,SAASA,EAAO;AAAA,YAChB,SAASA,EAAO;AAAA,YAChB,OAAOA,EAAO;AAAA,UAAA;AAAA,UAPTA,EAAO;AAAA,QAAA,IAUd,gBAAAU;AAAA,UAACS;AAAA,UAAA;AAAA,YAEC,SAAAvB;AAAA,YACA,aAAaI,EAAO;AAAA,YACpB,MAAMA,EAAO;AAAA,YACb,OAAOA,EAAO;AAAA,UAAA;AAAA,UAJTA,EAAO;AAAA,QAAA;AAAA,MAKd,GAGN;AAAA,MACA,gBAAAQ,EAAC,OAAA,EAAI,WAAW,mCACd,UAAA;AAAA,QAAA,gBAAAE;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,MAAK;AAAA,YACL,MAAM;AAAA,YACN,SAASL;AAAA,YAER,UAAAzB,KAAaG,EAAE,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAEzB,gBAAAyB,EAACE,KAAO,MAAK,UAAS,MAAM,MACzB,UAAA7B,KAAaE,EAAE,OAAO,EAAA,CACzB;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CACF,GACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ,CAAC,GC/JYmC,KAAS,CAAC;AAAA,EACrB,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,GAAGC;AACL,MAAmB;AACjB,QAAM,EAAE,GAAAxC,EAAA,IAAMC,EAAA,GACR,CAACwC,GAAQC,CAAS,IAAItC,EAAS,EAAE;AAEvC,SACE,gBAAAmB,EAAC,SAAK,GAAGiB,GAAO,WAAWG,EAAG,mBAAmBL,CAAS,GACxD,UAAA;AAAA,IAAA,gBAAAb;AAAA,MAACmB;AAAA,MAAA;AAAA,QACE,GAAGL;AAAA,QACJ,aAAaH,KAAepC,EAAE,2BAA2B;AAAA,QACzD,SAAS,CAAC6C,MAAQH,EAAUzB,EAAAA,IAAI4B,GAAK,gBAAgB,EAAE,CAAC;AAAA,QACxD,SAAS,CAACA,MAAQ;AAChB,UAAIA,EAAI,QAAQC,EAAS,UACvBT,EAAeI,KAAU,MAAS,GAClCI,EAAI,gBAAA,GACJA,EAAI,eAAA;AAAA,QAER;AAAA,QACA,WAAW,CAACE,MAAU;AACpB,UAAIA,EAAM,QAAQD,EAAS,UACzBC,EAAM,gBAAA,GACNA,EAAM,eAAA;AAAA,QAEV;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,gBAAAtB;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,QACT,WACE;AAAA,QAEF,SAAS,MAAMU,EAAeI,CAAM;AAAA,QAEpC,4BAACO,GAAA,CAAA,CAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EAChB,GACF;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("react/jsx-runtime"),i=require("dgz-ui/button"),S=require("dgz-ui/form"),m=require("dgz-ui/popover"),g=require("./lodash-BjH0kD7j.cjs.js"),x=require("lucide-react"),o=require("react"),E=require("react-i18next"),D=require("./useFilter-CsOF1_hM.cjs.js"),$=require("./MyInput-C9PNyYby.cjs.js"),A=require("./MySelect-Ovb1pK5c.cjs.js"),C=require("./index-ClQFzqcq.cjs.js"),O=require("dgz-ui/utils"),N=require("./Keyboard-kyPAAQWP.cjs.js"),W=o.memo(function({filters:r,params:a,onFilter:n,onChange:c,onCancel:y,triggerProps:l,contentProps:u,title:t,resetText:k,applyText:I,...B}){const{t:d}=E.useTranslation(),[M,P]=o.useState(!1),[R,p]=o.useState(!1),{form:b}=D.useFilter({params:a}),{watch:T,handleSubmit:z,control:v,reset:q}=b;o.useEffect(()=>{let s=!1;r.map(w=>{const h=g.lodashExports.get(a,`${w.name}`);(Array.isArray(h)?h.length>0:h)&&(s=!0),P(s)})},[r,a]);const f=T();o.useEffect(()=>{c==null||c(f)},[f,c]);const F=o.useCallback((s={})=>{n==null||n(s),p(!1)},[n]),K=o.useCallback(()=>{q(),n&&a&&n({...a,...Object.fromEntries(r.map(s=>[s.name,void 0]))}),p(!1)},[n,q,a,r]);return e.jsxs(m.Popover,{open:R,onOpenChange:p,children:[e.jsx(m.PopoverTrigger,{...l,children:e.jsx(i.Button,{asChild:!0,size:"sm",variant:"secondary",className:"ml-auto px-3",...B,children:e.jsxs("div",{className:"flex items-center",children:[M?e.jsx(x.ListFilterPlusIcon,{className:"size-5"}):e.jsx(x.ListFilterIcon,{className:"size-5"})," ",e.jsx("span",{className:"hidden lg:inline!",children:t||d("Filter")}),e.jsx(x.ChevronDown,{})]})})}),e.jsx(m.PopoverContent,{side:"bottom",align:"end",...u,children:e.jsx(S.Form,{...b,children:e.jsxs("form",{onSubmit:z(F),className:"space-y-4",children:[e.jsx("div",{className:"h-full shrink space-y-6 p-1",children:r.map(s=>s.options?e.jsx(A.MySelect,{control:v,name:s.name,isSearchable:!!s.isSearchable,placeholder:s.placeholder,isMulti:s.isMulti,options:s.options,label:s.label},s.name):e.jsx($.MyInput,{control:v,placeholder:s.placeholder,name:s.name,label:s.label},s.name))}),e.jsxs("div",{className:"flex shrink-0 justify-end gap-2",children:[e.jsx(i.Button,{variant:"destructive",type:"reset",size:"sm",onClick:K,children:k||d("Reset")}),e.jsx(i.Button,{type:"submit",size:"sm",children:I||d("Apply")})]})]})})})]})}),L=({placeholder:j,onSearchChange:r,className:a,inputProps:n,...c})=>{const{t:y}=E.useTranslation(),[l,u]=o.useState("");return e.jsxs("div",{...c,className:O.cn("relative w-full",a),children:[e.jsx(S.Input,{...n,placeholder:j||y("Type text and press Enter"),onInput:t=>u(g.lodashExports.get(t,"target.value","")),onKeyUp:t=>{t.key===N.Keyboard.ENTER&&(r(l||void 0),t.stopPropagation(),t.preventDefault())},onKeyDown:t=>{t.key===N.Keyboard.ENTER&&(t.stopPropagation(),t.preventDefault())}}),e.jsx(i.Button,{type:"button",variant:"ghost",className:"text-foreground absolute top-0 right-0 cursor-pointer rounded-md bg-transparent!",onClick:()=>r(l),children:e.jsx(C.pv,{})})]})};exports.FilterWrapper=W;exports.Search=L;
2
+ //# sourceMappingURL=Search-CO1xBkv4.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Search-CO1xBkv4.cjs.js","sources":["../../src/components/filters/FilterWrapper.tsx","../../src/components/filters/Search.tsx"],"sourcesContent":["import { Button, type ButtonProps } from 'dgz-ui/button';\nimport { Form, type Option } from 'dgz-ui/form';\nimport {\n Popover,\n type PopoverContainerProps,\n PopoverContent,\n PopoverTrigger,\n} from 'dgz-ui/popover';\nimport { get } from 'lodash';\nimport { ChevronDown, ListFilterIcon, ListFilterPlusIcon } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useState } from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useFilter } from '../../hooks';\nimport { MyInput, MySelect } from '../form';\n\n/**\n * Interface representing a filter configuration.\n */\nexport interface FilterInterface {\n /** Label for the filter field. */\n label?: ReactNode;\n /** Placeholder text for the input/select. */\n placeholder?: string;\n /** Default value for the filter. */\n value?: string | string[];\n /** Name of the filter field (used as key). */\n name: string;\n /** Whether the filter supports multiple values (for select inputs). */\n isMulti?: boolean;\n /** Whether the filter supports searchable inputs (for select inputs). */\n isSearchable?: boolean;\n /** Options for select inputs. */\n options?: Option[];\n}\n\n/**\n * Props for the FilterWrapper component.\n */\nexport interface FilterWrapperProps\n extends Omit<ButtonProps, 'title'>, PopoverContainerProps {\n /** Array of filter definitions to render. */\n filters: FilterInterface[];\n /** Current active parameters/filters. */\n params?: Record<string, unknown>;\n /** Callback fired when filters are applied. */\n onFilter?: (filters: Record<string, unknown>) => void;\n /** Callback fired when the filter popover is closed/cancelled. */\n onCancel?: () => void;\n /** Callback fired when filter form values change. */\n onChange?: (filters: FieldValues) => void;\n /** Title for the filter button. */\n title?: ReactNode;\n /** Text for the reset button. */\n resetText?: ReactNode;\n /** Text for the apply button. */\n applyText?: ReactNode;\n}\n\n/**\n * FilterWrapper shows a popover with a dynamic list of field filters and emits selected filter values.\n *\n * @param props.filters - Array of filter definitions to render.\n * @param props.params - Current params used to detect active filters.\n * @param props.onFilter - Callback fired when user applies filters.\n * @param props.onCancel - Callback fired on cancel.\n * @param props.onChange - Callback fired whenever filter form values change.\n */\nexport const FilterWrapper = memo(function FilterWrapper({\n filters,\n params,\n onFilter,\n onChange,\n onCancel,\n triggerProps,\n contentProps,\n title,\n resetText,\n applyText,\n ...btnProps\n}: FilterWrapperProps) {\n const { t } = useTranslation();\n const [isFiltered, setIsFiltered] = useState(false);\n const [open, setOpen] = useState(false);\n const { form } = useFilter({ params });\n\n const { watch, handleSubmit, control, reset } = form;\n\n useEffect(() => {\n let hasFilter = false;\n filters.map((filter) => {\n const value = get(params, `${filter.name}`);\n if (Array.isArray(value) ? value.length > 0 : Boolean(value)) {\n hasFilter = true;\n }\n\n setIsFiltered(hasFilter);\n });\n }, [filters, params]);\n\n const values = watch();\n\n useEffect(() => {\n onChange?.(values);\n }, [values, onChange]);\n\n const handleFilter = useCallback(\n (data = {}) => {\n onFilter?.(data);\n setOpen(false);\n },\n [onFilter]\n );\n\n const handleReset = useCallback(() => {\n reset();\n if (onFilter && params) {\n onFilter({\n ...params,\n ...Object.fromEntries(\n filters.map((filter) => [filter.name, undefined])\n ),\n });\n }\n setOpen(false);\n }, [onFilter, reset, params, filters]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger {...triggerProps}>\n <Button\n asChild\n size={'sm'}\n variant=\"secondary\"\n className={'ml-auto px-3'}\n {...btnProps}\n >\n <div className={'flex items-center'}>\n {isFiltered ? (\n <ListFilterPlusIcon className={'size-5'} />\n ) : (\n <ListFilterIcon className={'size-5'} />\n )}{' '}\n <span className={'hidden lg:inline!'}>{title || t('Filter')}</span>\n <ChevronDown />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent side={'bottom'} align={'end'} {...contentProps}>\n <Form {...form}>\n <form onSubmit={handleSubmit(handleFilter)} className={'space-y-4'}>\n <div className={'h-full shrink space-y-6 p-1'}>\n {filters.map((filter) =>\n filter.options ? (\n <MySelect\n key={filter.name}\n control={control}\n name={filter.name}\n isSearchable={Boolean(filter.isSearchable)}\n placeholder={filter.placeholder}\n isMulti={filter.isMulti}\n options={filter.options}\n label={filter.label}\n />\n ) : (\n <MyInput\n key={filter.name}\n control={control}\n placeholder={filter.placeholder}\n name={filter.name}\n label={filter.label}\n />\n )\n )}\n </div>\n <div className={'flex shrink-0 justify-end gap-2'}>\n <Button\n variant={'destructive'}\n type=\"reset\"\n size={'sm'}\n onClick={handleReset}\n >\n {resetText || t('Reset')}\n </Button>\n <Button type=\"submit\" size={'sm'}>\n {applyText || t('Apply')}\n </Button>\n </div>\n </form>\n </Form>\n </PopoverContent>\n </Popover>\n );\n});\n","import { RiSearchLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport type { CardProps } from 'dgz-ui/card';\nimport { Input, type InputProps } from 'dgz-ui/form';\nimport { cn } from 'dgz-ui/utils';\nimport { get } from 'lodash';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Keyboard } from '../../enums';\n\n/**\n * Props for the Search component.\n */\nexport type SearchProps = Omit<CardProps, 'title'> & {\n /** Custom placeholder text for the input. */\n placeholder?: string;\n /** Callback fired when the search is triggered. */\n onSearchChange: (search?: string) => void;\n inputProps?: InputProps;\n};\n\n/**\n * Search input with a submit button that triggers a search action.\n *\n * This component renders a search input field and a search button. The search\n * is triggered when the user presses Enter or clicks the button. The search\n * value is then passed to the `onSearchChange` callback.\n *\n * @param {SearchProps} props - The props for the component.\n * @param {string} [props.placeholder] - Optional placeholder text for the input field.\n * @param {Function} props.onSearchChange - Callback function that is called when a search is performed.\n * @param {string} [props.className] - Optional class name for the component.\n * @param {InputProps} [props.inputProps] - Optional props to pass to the underlying Input component.\n */\nexport const Search = ({\n placeholder,\n onSearchChange,\n className,\n inputProps,\n ...props\n}: SearchProps) => {\n const { t } = useTranslation();\n const [search, setSearch] = useState('');\n\n return (\n <div {...props} className={cn('relative w-full', className)}>\n <Input\n {...inputProps}\n placeholder={placeholder || t('Type text and press Enter')}\n onInput={(evt) => setSearch(get(evt, 'target.value', ''))}\n onKeyUp={(evt) => {\n if (evt.key === Keyboard.ENTER) {\n onSearchChange(search || undefined);\n evt.stopPropagation();\n evt.preventDefault();\n }\n }}\n onKeyDown={(event) => {\n if (event.key === Keyboard.ENTER) {\n event.stopPropagation();\n event.preventDefault();\n }\n }}\n />\n <Button\n type={'button'}\n variant={'ghost'}\n className={\n 'text-foreground absolute top-0 right-0 cursor-pointer rounded-md bg-transparent!'\n }\n onClick={() => onSearchChange(search)}\n >\n <RiSearchLine />\n </Button>\n </div>\n );\n};\n"],"names":["FilterWrapper","memo","filters","params","onFilter","onChange","onCancel","triggerProps","contentProps","title","resetText","applyText","btnProps","t","useTranslation","isFiltered","setIsFiltered","useState","open","setOpen","form","useFilter","watch","handleSubmit","control","reset","useEffect","hasFilter","filter","value","get","values","handleFilter","useCallback","data","handleReset","jsxs","Popover","jsx","PopoverTrigger","Button","ListFilterPlusIcon","ListFilterIcon","ChevronDown","PopoverContent","Form","MySelect","MyInput","Search","placeholder","onSearchChange","className","inputProps","props","search","setSearch","cn","Input","evt","Keyboard","event","RiSearchLine"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../chunks/Actions-CXOiCjx0.cjs.js");exports.Actions=t.Actions;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../chunks/Actions-DQPuVKCk.cjs.js");exports.Actions=t.Actions;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { A as s } from "../../chunks/Actions-Bi_vjY5M.es.js";
1
+ import { A as s } from "../../chunks/Actions-25X7c3Kg.es.js";
2
2
  export {
3
3
  s as Actions
4
4
  };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("../../chunks/index-ClQFzqcq.cjs.js"),m=require("dgz-ui/button"),M=require("dgz-ui/dropdown"),b=require("dgz-ui/utils"),A=require("../../chunks/lodash-BjH0kD7j.cjs.js"),o=require("lucide-react"),y=require("react"),P=require("react-i18next"),B=require("../../chunks/useSortable-B3LF1tg8.cjs.js"),ee=require("../../chunks/Actions-CXOiCjx0.cjs.js"),le=require("../../chunks/ExportData-CrB0H1Ts.cjs.js"),G=require("../../chunks/Search-hHeGlXqd.cjs.js"),se=require("../../chunks/Loader-D_jX_Wgx.cjs.js"),u=require("../../chunks/MyPagination-CnF3468f.cjs.js"),I=require("dgz-ui/form"),i=require("dgz-ui/table"),Q=require("../../chunks/SortOrder-81BrXp3i.cjs.js"),te=require("../../chunks/Empty-BYOOFAab.cjs.js"),X=({rows:s=[],columns:T,onRowClick:E,rowKey:N,params:c={page:1,limit:u.DEFAULT_LIMIT},hasNumbers:k=!1,hasCheckbox:w=!1,selectedItems:R,onSelectedItemsChange:v,onSortOrderChange:F,isStickyHeader:t,className:H,...O})=>{const{sortObject:r,handleSort:p}=B.useSortable({sortField:c==null?void 0:c.sortField,sortOrder:c==null?void 0:c.sortOrder,onSortOrderChange:F}),{selectedRows:g,isRowSelected:h,isAllRowsSelected:j,handleSelectAllRows:$,handleSelectRow:D}=B.useDataTable({rows:s,defaultSelectedRows:R});return y.useEffect(()=>{JSON.stringify(R)!==JSON.stringify(g)&&g&&(v==null||v(g))},[g,R,v]),e.jsxs(i.Table,{...O,className:b.cn("relative",H),children:[e.jsx(i.TableHeader,{className:b.cn("bg-bg",t&&"sticky top-0 z-1"),children:e.jsxs(i.TableRow,{children:[w&&e.jsx(i.TableHead,{className:"w-12 p-3",children:e.jsx(I.Checkbox,{className:"mt-1",checked:j(N),onCheckedChange:l=>$(N,!!l),"aria-label":"Select all"})}),k&&e.jsx(i.TableHead,{className:"w-12 p-2",children:"#"}),T.filter(l=>!l.hidden).map(l=>e.jsx(i.TableHead,{style:l.styles,className:b.cn("p-2",l.sortable&&"cursor-pointer"),onClick:()=>l.sortable&&p(l.dataIndex),children:e.jsxs("div",{className:"flex items-center gap-2",children:[l.name," ",l.sortable&&((r==null?void 0:r.sortField)===l.key?e.jsxs(e.Fragment,{children:[(r==null?void 0:r.sortOrder)===Q.SortOrder.DESC&&e.jsx(o.ArrowDownWideNarrow,{size:15}),(r==null?void 0:r.sortOrder)===Q.SortOrder.ASC&&e.jsx(o.ArrowUpWideNarrow,{size:15})]}):e.jsx(o.ArrowUpDown,{size:15}))]})},l.key))]})}),e.jsx(i.TableBody,{className:"[&>tr:nth-child(even)]:bg-bg-secondary",children:s.length?s.map((l,q)=>e.jsxs(i.TableRow,{onClick:()=>E==null?void 0:E(l),className:b.cn(E&&"cursor-pointer"),"data-state":h(l[N])&&"selected",children:[w&&e.jsx(i.TableCell,{className:"w-12 p-3",onClick:x=>x.stopPropagation(),children:e.jsx(I.Checkbox,{className:"mt-1",checked:h(l[N]),onCheckedChange:x=>D(l[N],!!x),"aria-label":"Select row"})}),k&&e.jsx(i.TableCell,{className:"w-12 p-2",children:(c.page-1)*(c.limit||u.DEFAULT_LIMIT)+q+1}),T.filter(x=>!x.hidden).map(x=>e.jsx(i.TableCell,{className:"text-body-xs-medium max-w-xs p-2",style:x.styles,children:x.render?x.render(A.lodashExports.get(l,x.dataIndex),l):A.lodashExports.get(l,x.dataIndex,"")},`${q}-${x.key}`))]},`${l[N]}`)):e.jsx(i.TableRow,{children:e.jsx(i.TableCell,{colSpan:k?w?T.length+2:T.length+1:T.length,children:e.jsx(te.Empty,{})})})})]})},de=({dataSource:s,columns:T,onRowClick:E,rowKey:N,hasNumbers:c,hasSearch:k,exportOptions:w,hasCheckbox:R,hasPagination:v,isStickyHeader:F,onParamChange:t,dataKey:H="docs",loading:O,tableKey:r,filters:p,actions:g,handleFilterChange:h,params:j,exportLoading:$=!1,onColumnsUpdate:D,hasColumnsVisibilityDropdown:l,onSelectedItemsChange:q,actionProps:x,filterWrapperProps:Y,exportOptionsProps:Z,columnsVisibilityProps:n,paginationProps:U,searchProps:f,...K})=>{var J;const{t:W}=P.useTranslation(),[z,S]=y.useState([]),{formattedColumns:L,handleColumnsChange:C,resetColumns:V}=B.useColumns({key:r,columns:T});return y.useEffect(()=>{D==null||D(L)},[L,D]),y.useEffect(()=>{q==null||q(z)},[z,q]),e.jsxs("div",{className:"border-border-alpha-light flex grow flex-col overflow-auto rounded-xl border shadow-xs",children:[(k||l&&r||!A.lodashExports.isEmpty(w)||!A.lodashExports.isEmpty(p))&&e.jsxs("div",{className:"flex shrink-0 flex-col items-center justify-between gap-3 p-4 lg:flex-row",children:[e.jsx("div",{className:"w-full shrink",children:k&&e.jsx(G.Search,{...f,inputProps:{...f==null?void 0:f.inputProps,className:b.cn("h-8",(J=f==null?void 0:f.inputProps)==null?void 0:J.className)},className:b.cn("max-w-78 [&_button]:-top-1",f==null?void 0:f.className),defaultValue:A.lodashExports.get(j,"search",""),onSearchChange:d=>t==null?void 0:t({...j,search:d,page:1})})}),e.jsxs("div",{className:"flex shrink-0 items-center justify-end gap-3",children:[w&&e.jsx(le.ExportData,{...Z,options:w,loading:$}),l&&r&&e.jsxs(M.DropdownMenu,{children:[e.jsx(M.DropdownMenuTrigger,{asChild:!0,...n==null?void 0:n.triggerProps,children:e.jsx(m.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:(n==null?void 0:n.title)||e.jsxs(e.Fragment,{children:[e.jsx(a.yn,{})," ",e.jsx("span",{className:"hidden lg:inline!",children:W("Customize columns")}),e.jsx(a.f1,{})]})})}),e.jsxs(M.DropdownMenuContent,{align:"end",...n==null?void 0:n.contentProps,children:[e.jsxs(M.DropdownMenuItem,{className:"capitalize",onClick:V,children:[e.jsx(o.RefreshCw,{})," ",(n==null?void 0:n.resetText)||W("Reset columns")]}),e.jsx(M.DropdownMenuSeparator,{}),L.map(d=>e.jsx(M.DropdownMenuCheckboxItem,{className:"capitalize",checked:!d.hidden,onCheckedChange:_=>C(d,!_),children:d.name},d.key))]})]}),g&&e.jsx(ee.Actions,{...x,actions:g}),p&&e.jsx(G.FilterWrapper,{...Y,filters:p,params:j,onChange:h,onFilter:d=>{t==null||t({...j,...d,page:1}),h==null||h(d)}})]})]}),e.jsx("div",{className:"flex flex-col overflow-auto border-y",children:O?e.jsx(se.Loader,{}):e.jsx(X,{...K,params:{page:(s==null?void 0:s.page)||1,limit:s==null?void 0:s.limit,...j},rows:A.lodashExports.get(s,H,[]),rowKey:N,selectedItems:z,isStickyHeader:F,columns:L,hasCheckbox:R,hasNumbers:c,onRowClick:E,onSelectedItemsChange:S,onSortOrderChange:({sortField:d,sortOrder:_})=>{t==null||t({...j,sortField:d,sortOrder:_})}})}),v&&e.jsxs("div",{className:"flex shrink-0 flex-col items-center justify-between gap-3 p-4 lg:flex-row",children:[e.jsx("div",{className:"text-sm",children:e.jsx(u.MyLimitSelect,{onLimitChange:d=>t==null?void 0:t({...j,limit:d,page:1}),defaultValue:s==null?void 0:s.limit})}),e.jsx("div",{className:"text-muted-foreground text-sm",children:W("{{selectedCount}} of {{total}} row(s) selected",{selectedCount:z.length,total:(s==null?void 0:s.total)||0})}),e.jsx("div",{children:e.jsx(u.MyPagination,{...U,onPageChange:d=>t==null?void 0:t({...j,page:d}),currentPage:s==null?void 0:s.page,totalPages:s==null?void 0:s.totalPages})})]})]})};exports.DataTable=de;exports.MyTable=X;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("../../chunks/index-ClQFzqcq.cjs.js"),m=require("dgz-ui/button"),M=require("dgz-ui/dropdown"),b=require("dgz-ui/utils"),A=require("../../chunks/lodash-BjH0kD7j.cjs.js"),o=require("lucide-react"),y=require("react"),P=require("react-i18next"),B=require("../../chunks/useSortable-B3LF1tg8.cjs.js"),ee=require("../../chunks/Actions-DQPuVKCk.cjs.js"),le=require("../../chunks/ExportData-C1Lrr1gH.cjs.js"),G=require("../../chunks/Search-CO1xBkv4.cjs.js"),se=require("../../chunks/Loader-D_jX_Wgx.cjs.js"),u=require("../../chunks/MyPagination-CnF3468f.cjs.js"),I=require("dgz-ui/form"),i=require("dgz-ui/table"),Q=require("../../chunks/SortOrder-81BrXp3i.cjs.js"),te=require("../../chunks/Empty-BYOOFAab.cjs.js"),X=({rows:s=[],columns:T,onRowClick:E,rowKey:N,params:c={page:1,limit:u.DEFAULT_LIMIT},hasNumbers:k=!1,hasCheckbox:w=!1,selectedItems:R,onSelectedItemsChange:v,onSortOrderChange:F,isStickyHeader:t,className:H,...O})=>{const{sortObject:r,handleSort:p}=B.useSortable({sortField:c==null?void 0:c.sortField,sortOrder:c==null?void 0:c.sortOrder,onSortOrderChange:F}),{selectedRows:g,isRowSelected:h,isAllRowsSelected:j,handleSelectAllRows:$,handleSelectRow:D}=B.useDataTable({rows:s,defaultSelectedRows:R});return y.useEffect(()=>{JSON.stringify(R)!==JSON.stringify(g)&&g&&(v==null||v(g))},[g,R,v]),e.jsxs(i.Table,{...O,className:b.cn("relative",H),children:[e.jsx(i.TableHeader,{className:b.cn("bg-bg",t&&"sticky top-0 z-1"),children:e.jsxs(i.TableRow,{children:[w&&e.jsx(i.TableHead,{className:"w-12 p-3",children:e.jsx(I.Checkbox,{className:"mt-1",checked:j(N),onCheckedChange:l=>$(N,!!l),"aria-label":"Select all"})}),k&&e.jsx(i.TableHead,{className:"w-12 p-2",children:"#"}),T.filter(l=>!l.hidden).map(l=>e.jsx(i.TableHead,{style:l.styles,className:b.cn("p-2",l.sortable&&"cursor-pointer"),onClick:()=>l.sortable&&p(l.dataIndex),children:e.jsxs("div",{className:"flex items-center gap-2",children:[l.name," ",l.sortable&&((r==null?void 0:r.sortField)===l.key?e.jsxs(e.Fragment,{children:[(r==null?void 0:r.sortOrder)===Q.SortOrder.DESC&&e.jsx(o.ArrowDownWideNarrow,{size:15}),(r==null?void 0:r.sortOrder)===Q.SortOrder.ASC&&e.jsx(o.ArrowUpWideNarrow,{size:15})]}):e.jsx(o.ArrowUpDown,{size:15}))]})},l.key))]})}),e.jsx(i.TableBody,{className:"[&>tr:nth-child(even)]:bg-bg-secondary",children:s.length?s.map((l,q)=>e.jsxs(i.TableRow,{onClick:()=>E==null?void 0:E(l),className:b.cn(E&&"cursor-pointer"),"data-state":h(l[N])&&"selected",children:[w&&e.jsx(i.TableCell,{className:"w-12 p-3",onClick:x=>x.stopPropagation(),children:e.jsx(I.Checkbox,{className:"mt-1",checked:h(l[N]),onCheckedChange:x=>D(l[N],!!x),"aria-label":"Select row"})}),k&&e.jsx(i.TableCell,{className:"w-12 p-2",children:(c.page-1)*(c.limit||u.DEFAULT_LIMIT)+q+1}),T.filter(x=>!x.hidden).map(x=>e.jsx(i.TableCell,{className:"text-body-xs-medium max-w-xs p-2",style:x.styles,children:x.render?x.render(A.lodashExports.get(l,x.dataIndex),l):A.lodashExports.get(l,x.dataIndex,"")},`${q}-${x.key}`))]},`${l[N]}`)):e.jsx(i.TableRow,{children:e.jsx(i.TableCell,{colSpan:k?w?T.length+2:T.length+1:T.length,children:e.jsx(te.Empty,{})})})})]})},de=({dataSource:s,columns:T,onRowClick:E,rowKey:N,hasNumbers:c,hasSearch:k,exportOptions:w,hasCheckbox:R,hasPagination:v,isStickyHeader:F,onParamChange:t,dataKey:H="docs",loading:O,tableKey:r,filters:p,actions:g,handleFilterChange:h,params:j,exportLoading:$=!1,onColumnsUpdate:D,hasColumnsVisibilityDropdown:l,onSelectedItemsChange:q,actionProps:x,filterWrapperProps:Y,exportOptionsProps:Z,columnsVisibilityProps:n,paginationProps:U,searchProps:f,...K})=>{var J;const{t:W}=P.useTranslation(),[z,S]=y.useState([]),{formattedColumns:L,handleColumnsChange:C,resetColumns:V}=B.useColumns({key:r,columns:T});return y.useEffect(()=>{D==null||D(L)},[L,D]),y.useEffect(()=>{q==null||q(z)},[z,q]),e.jsxs("div",{className:"border-border-alpha-light flex grow flex-col overflow-auto rounded-xl border shadow-xs",children:[(k||l&&r||!A.lodashExports.isEmpty(w)||!A.lodashExports.isEmpty(p))&&e.jsxs("div",{className:"flex shrink-0 flex-col items-center justify-between gap-3 p-4 lg:flex-row",children:[e.jsx("div",{className:"w-full shrink",children:k&&e.jsx(G.Search,{...f,inputProps:{...f==null?void 0:f.inputProps,className:b.cn("h-8",(J=f==null?void 0:f.inputProps)==null?void 0:J.className)},className:b.cn("max-w-78 [&_button]:-top-1",f==null?void 0:f.className),defaultValue:A.lodashExports.get(j,"search",""),onSearchChange:d=>t==null?void 0:t({...j,search:d,page:1})})}),e.jsxs("div",{className:"flex shrink-0 items-center justify-end gap-3",children:[w&&e.jsx(le.ExportData,{...Z,options:w,loading:$}),l&&r&&e.jsxs(M.DropdownMenu,{children:[e.jsx(M.DropdownMenuTrigger,{asChild:!0,...n==null?void 0:n.triggerProps,children:e.jsx(m.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:(n==null?void 0:n.title)||e.jsxs(e.Fragment,{children:[e.jsx(a.yn,{})," ",e.jsx("span",{className:"hidden lg:inline!",children:W("Customize columns")}),e.jsx(a.f1,{})]})})}),e.jsxs(M.DropdownMenuContent,{align:"end",...n==null?void 0:n.contentProps,children:[e.jsxs(M.DropdownMenuItem,{className:"capitalize",onClick:V,children:[e.jsx(o.RefreshCw,{})," ",(n==null?void 0:n.resetText)||W("Reset columns")]}),e.jsx(M.DropdownMenuSeparator,{}),L.map(d=>e.jsx(M.DropdownMenuCheckboxItem,{className:"capitalize",checked:!d.hidden,onCheckedChange:_=>C(d,!_),children:d.name},d.key))]})]}),g&&e.jsx(ee.Actions,{...x,actions:g}),p&&e.jsx(G.FilterWrapper,{...Y,filters:p,params:j,onChange:h,onFilter:d=>{t==null||t({...j,...d,page:1}),h==null||h(d)}})]})]}),e.jsx("div",{className:"flex flex-col overflow-auto border-y",children:O?e.jsx(se.Loader,{}):e.jsx(X,{...K,params:{page:(s==null?void 0:s.page)||1,limit:s==null?void 0:s.limit,...j},rows:A.lodashExports.get(s,H,[]),rowKey:N,selectedItems:z,isStickyHeader:F,columns:L,hasCheckbox:R,hasNumbers:c,onRowClick:E,onSelectedItemsChange:S,onSortOrderChange:({sortField:d,sortOrder:_})=>{t==null||t({...j,sortField:d,sortOrder:_})}})}),v&&e.jsxs("div",{className:"flex shrink-0 flex-col items-center justify-between gap-3 p-4 lg:flex-row",children:[e.jsx("div",{className:"text-sm",children:e.jsx(u.MyLimitSelect,{onLimitChange:d=>t==null?void 0:t({...j,limit:d,page:1}),defaultValue:s==null?void 0:s.limit})}),e.jsx("div",{className:"text-muted-foreground text-sm",children:W("{{selectedCount}} of {{total}} row(s) selected",{selectedCount:z.length,total:(s==null?void 0:s.total)||0})}),e.jsx("div",{children:e.jsx(u.MyPagination,{...U,onPageChange:d=>t==null?void 0:t({...j,page:d}),currentPage:s==null?void 0:s.page,totalPages:s==null?void 0:s.totalPages})})]})]})};exports.DataTable=de;exports.MyTable=X;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -8,9 +8,9 @@ import { ArrowDownWideNarrow as ie, ArrowUpWideNarrow as re, ArrowUpDown as se,
8
8
  import { useEffect as q, useState as xe } from "react";
9
9
  import { useTranslation as ne } from "react-i18next";
10
10
  import { u as we, a as ce, b as pe } from "../../chunks/useSortable-BXNk8Wth.es.js";
11
- import { A as ge } from "../../chunks/Actions-Bi_vjY5M.es.js";
12
- import { E as ke } from "../../chunks/ExportData-CHPKm-ZY.es.js";
13
- import { S as ve, F as Te } from "../../chunks/Search-CjVcBFAN.es.js";
11
+ import { A as ge } from "../../chunks/Actions-25X7c3Kg.es.js";
12
+ import { E as ke } from "../../chunks/ExportData-Cuy6BvoM.es.js";
13
+ import { S as ve, F as Te } from "../../chunks/Search-0PkBZIDP.es.js";
14
14
  import { L as me } from "../../chunks/Loader-zvzAi0F6.es.js";
15
15
  import { D as Q, M as De, a as he } from "../../chunks/MyPagination-B0czoGZK.es.js";
16
16
  import { Checkbox as X } from "dgz-ui/form";
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../chunks/ExportData-CrB0H1Ts.cjs.js");exports.ExportData=t.ExportData;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../../chunks/ExportData-C1Lrr1gH.cjs.js");exports.ExportData=t.ExportData;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { E as r } from "../../chunks/ExportData-CHPKm-ZY.es.js";
1
+ import { E as r } from "../../chunks/ExportData-Cuy6BvoM.es.js";
2
2
  export {
3
3
  r as ExportData
4
4
  };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../chunks/Search-hHeGlXqd.cjs.js"),r=require("react/jsx-runtime"),p=require("../../chunks/index-ClQFzqcq.cjs.js"),d=require("dgz-ui/button"),h=require("dgz-ui/form"),q=require("dgz-ui/utils"),x=require("../../chunks/lodash-BjH0kD7j.cjs.js"),y=require("react"),b=require("react-i18next"),g=require("../../chunks/Keyboard-kyPAAQWP.cjs.js"),S=({placeholder:n,onSearchChange:t,className:a,inputProps:i,...c})=>{const{t:u}=b.useTranslation(),[o,l]=y.useState("");return r.jsxs("div",{...c,className:q.cn("relative w-full",a),children:[r.jsx(h.Input,{...i,placeholder:n||u("Type text and press CTRL + Enter"),onInput:e=>l(x.lodashExports.get(e,"target.value","")),onKeyUp:e=>{e.key===g.Keyboard.ENTER&&(e.ctrlKey&&t(o||void 0),e.stopPropagation(),e.preventDefault())}}),r.jsx(d.Button,{type:"button",variant:"ghost",className:"text-foreground absolute top-0 right-0 cursor-pointer rounded-md bg-transparent!",onClick:()=>t(o),children:r.jsx(p.pv,{})})]})};exports.FilterWrapper=s.FilterWrapper;exports.Search=s.Search;exports.SearchWithCtrl=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../chunks/Search-CO1xBkv4.cjs.js"),r=require("react/jsx-runtime"),p=require("../../chunks/index-ClQFzqcq.cjs.js"),d=require("dgz-ui/button"),h=require("dgz-ui/form"),q=require("dgz-ui/utils"),x=require("../../chunks/lodash-BjH0kD7j.cjs.js"),y=require("react"),b=require("react-i18next"),g=require("../../chunks/Keyboard-kyPAAQWP.cjs.js"),S=({placeholder:n,onSearchChange:t,className:a,inputProps:i,...c})=>{const{t:u}=b.useTranslation(),[o,l]=y.useState("");return r.jsxs("div",{...c,className:q.cn("relative w-full",a),children:[r.jsx(h.Input,{...i,placeholder:n||u("Type text and press CTRL + Enter"),onInput:e=>l(x.lodashExports.get(e,"target.value","")),onKeyUp:e=>{e.key===g.Keyboard.ENTER&&(e.ctrlKey&&t(o||void 0),e.stopPropagation(),e.preventDefault())}}),r.jsx(d.Button,{type:"button",variant:"ghost",className:"text-foreground absolute top-0 right-0 cursor-pointer rounded-md bg-transparent!",onClick:()=>t(o),children:r.jsx(p.pv,{})})]})};exports.FilterWrapper=s.FilterWrapper;exports.Search=s.Search;exports.SearchWithCtrl=S;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { F as R, S as W } from "../../chunks/Search-CjVcBFAN.es.js";
1
+ import { F as R, S as W } from "../../chunks/Search-0PkBZIDP.es.js";
2
2
  import { jsxs as l, jsx as t } from "react/jsx-runtime";
3
3
  import { p as c } from "../../chunks/index-E1NtSoNr.es.js";
4
4
  import { Button as f } from "dgz-ui/button";
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("dgz-ui/button"),r=require("dgz-ui/dropdown"),s=require("lucide-react"),c=require("react-i18next"),t=require("../../chunks/ThemeMode-BO6tit_Z.cjs.js"),l=require("../../chunks/useTheme-hjEZ-FC3.cjs.js");function d({className:i}){const{t:n}=c.useTranslation(),{setTheme:o}=l.useTheme();return e.jsxs(r.DropdownMenu,{children:[e.jsx(r.DropdownMenuTrigger,{asChild:!0,children:e.jsxs(a.Button,{variant:"tertiary",size:"icon",className:i,children:[e.jsx(s.Sun,{className:"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90"}),e.jsx(s.Moon,{className:"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0"}),e.jsx("span",{className:"sr-only",children:"Toggle theme"})]})}),e.jsxs(r.DropdownMenuContent,{align:"end",children:[e.jsx(r.DropdownMenuItem,{onClick:()=>o(t.ThemeMode.LIGHT),children:n("Light")}),e.jsx(r.DropdownMenuItem,{onClick:()=>o(t.ThemeMode.DARK),children:n("Dark")}),e.jsx(r.DropdownMenuItem,{onClick:()=>o(t.ThemeMode.SYSTEM),children:n("System")})]})]})}exports.ThemeToggle=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("dgz-ui/button"),r=require("dgz-ui/dropdown"),s=require("lucide-react"),c=require("react-i18next"),t=require("../../chunks/ThemeMode-BO6tit_Z.cjs.js"),l=require("../../chunks/useTheme-hjEZ-FC3.cjs.js");function d({className:i}){const{t:n}=c.useTranslation(),{setTheme:o}=l.useTheme();return e.jsxs(r.DropdownMenu,{children:[e.jsx(r.DropdownMenuTrigger,{asChild:!0,children:e.jsxs(a.Button,{variant:"tertiary",size:"icon",className:i,children:[e.jsx(s.Sun,{className:"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90"}),e.jsx(s.Moon,{className:"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0"}),e.jsx("span",{className:"sr-only",children:n("Toggle theme")})]})}),e.jsxs(r.DropdownMenuContent,{align:"end",children:[e.jsx(r.DropdownMenuItem,{onClick:()=>o(t.ThemeMode.LIGHT),children:n("Light")}),e.jsx(r.DropdownMenuItem,{onClick:()=>o(t.ThemeMode.DARK),children:n("Dark")}),e.jsx(r.DropdownMenuItem,{onClick:()=>o(t.ThemeMode.SYSTEM),children:n("System")})]})]})}exports.ThemeToggle=d;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../src/components/theme/theme-toggle.tsx"],"sourcesContent":["import { Button } from 'dgz-ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport { Moon, Sun } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { ThemeMode } from '../../enums';\nimport { useTheme } from '../../hooks';\n\n/**\n * Props for the ThemeToggle component.\n */\nexport interface ThemeToggleProps {\n /** Optional className passed to the trigger button. */\n className?: string;\n}\n\n/**\n * ThemeToggle provides a dropdown to switch between Light, Dark, and System themes.\n *\n * @param className - Optional className passed to the trigger button.\n * @returns A dropdown menu to switch themes.\n */\nexport function ThemeToggle({ className }: ThemeToggleProps) {\n const { t } = useTranslation();\n const { setTheme } = useTheme();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"tertiary\" size=\"icon\" className={className}>\n <Sun className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n <Moon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.LIGHT)}>\n {t('Light')}\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.DARK)}>\n {t('Dark')}\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.SYSTEM)}>\n {t('System')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"names":["ThemeToggle","className","t","useTranslation","setTheme","useTheme","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","Sun","Moon","DropdownMenuContent","DropdownMenuItem","ThemeMode"],"mappings":"yUA0BO,SAASA,EAAY,CAAE,UAAAC,GAA+B,CAC3D,KAAM,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EACR,CAAE,SAAAC,CAAA,EAAaC,WAAA,EAErB,cACGC,eAAA,CACC,SAAA,CAAAC,EAAAA,IAACC,EAAAA,oBAAA,CAAoB,QAAO,GAC1B,SAAAC,EAAAA,KAACC,EAAAA,QAAO,QAAQ,WAAW,KAAK,OAAO,UAAAT,EACrC,SAAA,CAAAM,EAAAA,IAACI,EAAAA,IAAA,CAAI,UAAU,sFAAA,CAAuF,EACtGJ,EAAAA,IAACK,EAAAA,KAAA,CAAK,UAAU,8FAAA,CAA+F,EAC/GL,EAAAA,IAAC,OAAA,CAAK,UAAU,UAAU,SAAA,cAAA,CAAY,CAAA,CAAA,CACxC,CAAA,CACF,EACAE,EAAAA,KAACI,EAAAA,oBAAA,CAAoB,MAAM,MACzB,SAAA,CAAAN,EAAAA,IAACO,EAAAA,iBAAA,CAAiB,QAAS,IAAMV,EAASW,EAAAA,UAAU,KAAK,EACtD,SAAAb,EAAE,OAAO,CAAA,CACZ,EACAK,EAAAA,IAACO,EAAAA,iBAAA,CAAiB,QAAS,IAAMV,EAASW,EAAAA,UAAU,IAAI,EACrD,SAAAb,EAAE,MAAM,CAAA,CACX,EACAK,EAAAA,IAACO,EAAAA,iBAAA,CAAiB,QAAS,IAAMV,EAASW,YAAU,MAAM,EACvD,SAAAb,EAAE,QAAQ,CAAA,CACb,CAAA,CAAA,CACF,CAAA,EACF,CAEJ"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../src/components/theme/theme-toggle.tsx"],"sourcesContent":["import { Button } from 'dgz-ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport { Moon, Sun } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { ThemeMode } from '../../enums';\nimport { useTheme } from '../../hooks';\n\n/**\n * Props for the ThemeToggle component.\n */\nexport interface ThemeToggleProps {\n /** Optional className passed to the trigger button. */\n className?: string;\n}\n\n/**\n * ThemeToggle provides a dropdown to switch between Light, Dark, and System themes.\n *\n * @param className - Optional className passed to the trigger button.\n * @returns A dropdown menu to switch themes.\n */\nexport function ThemeToggle({ className }: ThemeToggleProps) {\n const { t } = useTranslation();\n const { setTheme } = useTheme();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"tertiary\" size=\"icon\" className={className}>\n <Sun className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n <Moon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n <span className=\"sr-only\">{t('Toggle theme')}</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.LIGHT)}>\n {t('Light')}\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.DARK)}>\n {t('Dark')}\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.SYSTEM)}>\n {t('System')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"names":["ThemeToggle","className","t","useTranslation","setTheme","useTheme","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","Sun","Moon","DropdownMenuContent","DropdownMenuItem","ThemeMode"],"mappings":"yUA0BO,SAASA,EAAY,CAAE,UAAAC,GAA+B,CAC3D,KAAM,CAAE,EAAAC,CAAA,EAAMC,iBAAA,EACR,CAAE,SAAAC,CAAA,EAAaC,WAAA,EAErB,cACGC,eAAA,CACC,SAAA,CAAAC,EAAAA,IAACC,EAAAA,oBAAA,CAAoB,QAAO,GAC1B,SAAAC,EAAAA,KAACC,EAAAA,QAAO,QAAQ,WAAW,KAAK,OAAO,UAAAT,EACrC,SAAA,CAAAM,EAAAA,IAACI,EAAAA,IAAA,CAAI,UAAU,sFAAA,CAAuF,EACtGJ,EAAAA,IAACK,EAAAA,KAAA,CAAK,UAAU,8FAAA,CAA+F,QAC9G,OAAA,CAAK,UAAU,UAAW,SAAAV,EAAE,cAAc,CAAA,CAAE,CAAA,CAAA,CAC/C,CAAA,CACF,EACAO,EAAAA,KAACI,EAAAA,oBAAA,CAAoB,MAAM,MACzB,SAAA,CAAAN,EAAAA,IAACO,EAAAA,iBAAA,CAAiB,QAAS,IAAMV,EAASW,EAAAA,UAAU,KAAK,EACtD,SAAAb,EAAE,OAAO,CAAA,CACZ,EACAK,EAAAA,IAACO,EAAAA,iBAAA,CAAiB,QAAS,IAAMV,EAASW,EAAAA,UAAU,IAAI,EACrD,SAAAb,EAAE,MAAM,CAAA,CACX,EACAK,EAAAA,IAACO,EAAAA,iBAAA,CAAiB,QAAS,IAAMV,EAASW,YAAU,MAAM,EACvD,SAAAb,EAAE,QAAQ,CAAA,CACb,CAAA,CAAA,CACF,CAAA,EACF,CAEJ"}
@@ -11,7 +11,7 @@ function C({ className: i }) {
11
11
  /* @__PURE__ */ e(m, { asChild: !0, children: /* @__PURE__ */ n(l, { variant: "tertiary", size: "icon", className: i, children: [
12
12
  /* @__PURE__ */ e(d, { className: "h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90" }),
13
13
  /* @__PURE__ */ e(h, { className: "absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0" }),
14
- /* @__PURE__ */ e("span", { className: "sr-only", children: "Toggle theme" })
14
+ /* @__PURE__ */ e("span", { className: "sr-only", children: r("Toggle theme") })
15
15
  ] }) }),
16
16
  /* @__PURE__ */ n(c, { align: "end", children: [
17
17
  /* @__PURE__ */ e(t, { onClick: () => o(a.LIGHT), children: r("Light") }),
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../src/components/theme/theme-toggle.tsx"],"sourcesContent":["import { Button } from 'dgz-ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport { Moon, Sun } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { ThemeMode } from '../../enums';\nimport { useTheme } from '../../hooks';\n\n/**\n * Props for the ThemeToggle component.\n */\nexport interface ThemeToggleProps {\n /** Optional className passed to the trigger button. */\n className?: string;\n}\n\n/**\n * ThemeToggle provides a dropdown to switch between Light, Dark, and System themes.\n *\n * @param className - Optional className passed to the trigger button.\n * @returns A dropdown menu to switch themes.\n */\nexport function ThemeToggle({ className }: ThemeToggleProps) {\n const { t } = useTranslation();\n const { setTheme } = useTheme();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"tertiary\" size=\"icon\" className={className}>\n <Sun className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n <Moon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.LIGHT)}>\n {t('Light')}\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.DARK)}>\n {t('Dark')}\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.SYSTEM)}>\n {t('System')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"names":["ThemeToggle","className","t","useTranslation","setTheme","useTheme","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","Sun","Moon","DropdownMenuContent","DropdownMenuItem","ThemeMode"],"mappings":";;;;;;;AA0BO,SAASA,EAAY,EAAE,WAAAC,KAA+B;AAC3D,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACR,EAAE,UAAAC,EAAA,IAAaC,EAAA;AAErB,2BACGC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAoB,SAAO,IAC1B,UAAA,gBAAAC,EAACC,KAAO,SAAQ,YAAW,MAAK,QAAO,WAAAT,GACrC,UAAA;AAAA,MAAA,gBAAAM,EAACI,GAAA,EAAI,WAAU,uFAAA,CAAuF;AAAA,MACtG,gBAAAJ,EAACK,GAAA,EAAK,WAAU,+FAAA,CAA+F;AAAA,MAC/G,gBAAAL,EAAC,QAAA,EAAK,WAAU,WAAU,UAAA,eAAA,CAAY;AAAA,IAAA,EAAA,CACxC,EAAA,CACF;AAAA,IACA,gBAAAE,EAACI,GAAA,EAAoB,OAAM,OACzB,UAAA;AAAA,MAAA,gBAAAN,EAACO,GAAA,EAAiB,SAAS,MAAMV,EAASW,EAAU,KAAK,GACtD,UAAAb,EAAE,OAAO,EAAA,CACZ;AAAA,MACA,gBAAAK,EAACO,GAAA,EAAiB,SAAS,MAAMV,EAASW,EAAU,IAAI,GACrD,UAAAb,EAAE,MAAM,EAAA,CACX;AAAA,MACA,gBAAAK,EAACO,GAAA,EAAiB,SAAS,MAAMV,EAASW,EAAU,MAAM,GACvD,UAAAb,EAAE,QAAQ,EAAA,CACb;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/components/theme/theme-toggle.tsx"],"sourcesContent":["import { Button } from 'dgz-ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport { Moon, Sun } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { ThemeMode } from '../../enums';\nimport { useTheme } from '../../hooks';\n\n/**\n * Props for the ThemeToggle component.\n */\nexport interface ThemeToggleProps {\n /** Optional className passed to the trigger button. */\n className?: string;\n}\n\n/**\n * ThemeToggle provides a dropdown to switch between Light, Dark, and System themes.\n *\n * @param className - Optional className passed to the trigger button.\n * @returns A dropdown menu to switch themes.\n */\nexport function ThemeToggle({ className }: ThemeToggleProps) {\n const { t } = useTranslation();\n const { setTheme } = useTheme();\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"tertiary\" size=\"icon\" className={className}>\n <Sun className=\"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90\" />\n <Moon className=\"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0\" />\n <span className=\"sr-only\">{t('Toggle theme')}</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.LIGHT)}>\n {t('Light')}\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.DARK)}>\n {t('Dark')}\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setTheme(ThemeMode.SYSTEM)}>\n {t('System')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"names":["ThemeToggle","className","t","useTranslation","setTheme","useTheme","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","Sun","Moon","DropdownMenuContent","DropdownMenuItem","ThemeMode"],"mappings":";;;;;;;AA0BO,SAASA,EAAY,EAAE,WAAAC,KAA+B;AAC3D,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACR,EAAE,UAAAC,EAAA,IAAaC,EAAA;AAErB,2BACGC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAoB,SAAO,IAC1B,UAAA,gBAAAC,EAACC,KAAO,SAAQ,YAAW,MAAK,QAAO,WAAAT,GACrC,UAAA;AAAA,MAAA,gBAAAM,EAACI,GAAA,EAAI,WAAU,uFAAA,CAAuF;AAAA,MACtG,gBAAAJ,EAACK,GAAA,EAAK,WAAU,+FAAA,CAA+F;AAAA,wBAC9G,QAAA,EAAK,WAAU,WAAW,UAAAV,EAAE,cAAc,EAAA,CAAE;AAAA,IAAA,EAAA,CAC/C,EAAA,CACF;AAAA,IACA,gBAAAO,EAACI,GAAA,EAAoB,OAAM,OACzB,UAAA;AAAA,MAAA,gBAAAN,EAACO,GAAA,EAAiB,SAAS,MAAMV,EAASW,EAAU,KAAK,GACtD,UAAAb,EAAE,OAAO,EAAA,CACZ;AAAA,MACA,gBAAAK,EAACO,GAAA,EAAiB,SAAS,MAAMV,EAASW,EAAU,IAAI,GACrD,UAAAb,EAAE,MAAM,EAAA,CACX;AAAA,MACA,gBAAAK,EAACO,GAAA,EAAiB,SAAS,MAAMV,EAASW,EAAU,MAAM,GACvD,UAAAb,EAAE,QAAQ,EAAA,CACb;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;"}
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-gray-200:oklch(92.8% .006 264.531);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--font-weight-semibold:600;--radius-xs:.125rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--primary:var(--color-neutral-950);--secondary:var(--color-neutral-alpha-13);--background:var(--color-neutral-0);--background-secondary:var(--color-neutral-50);--foreground:0 0% 3.9%;--card:0 0% 100%;--card-foreground:0 0% 3.9%;--popover:0 0% 100%;--popover-foreground:0 0% 3.9%;--muted:0 0% 96.1%;--muted-foreground:0 0% 45.1%;--accent:0 0% 96.1%;--accent-foreground:0 0% 9%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:#30303033;--input:0 0% 89.8%;--ring:0 0% 3.9%;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%;--radius-xs:.125rem;--color-neutral-alpha-0:rgb(from var(--color-neutral-alpha-base)r g b/.01%);--color-neutral-alpha-1:rgb(from var(--color-neutral-alpha-base)r g b/3%);--color-neutral-alpha-2:rgb(from var(--color-neutral-alpha-base)r g b/5%);--color-neutral-alpha-3:rgb(from var(--color-neutral-alpha-base)r g b/7%);--color-neutral-alpha-4:rgb(from var(--color-neutral-alpha-base)r g b/10%);--color-neutral-alpha-5:rgb(from var(--color-neutral-alpha-base)r g b/16%);--color-neutral-alpha-6:rgb(from var(--color-neutral-alpha-base)r g b/20%);--color-neutral-alpha-7:rgb(from var(--color-neutral-alpha-base)r g b/24%);--color-neutral-alpha-8:rgb(from var(--color-neutral-alpha-base)r g b/28%);--color-neutral-alpha-9:rgb(from var(--color-neutral-alpha-base)r g b/32%);--color-neutral-alpha-10:rgb(from var(--color-neutral-alpha-base)r g b/40%);--color-neutral-alpha-11:rgb(from var(--color-neutral-alpha-base)r g b/48%);--color-neutral-alpha-12:rgb(from var(--color-neutral-alpha-base)r g b/56%);--color-neutral-alpha-13:rgb(from var(--color-neutral-alpha-base)r g b/64%);--color-neutral-alpha-14:rgb(from var(--color-neutral-alpha-base)r g b/72%);--color-neutral-alpha-15:rgb(from var(--color-neutral-alpha-base)r g b/80%);--color-neutral-alpha-16:rgb(from var(--color-neutral-alpha-base)r g b/88%);--color-neutral-inverted-0:rgb(from var(--color-neutral-base)r g b/.01%);--color-neutral-inverted-1:rgb(from var(--color-neutral-base)r g b/3%);--color-neutral-inverted-2:rgb(from var(--color-neutral-base)r g b/5%);--color-neutral-inverted-3:rgb(from var(--color-neutral-base)r g b/7%);--color-neutral-inverted-4:rgb(from var(--color-neutral-base)r g b/10%);--color-neutral-inverted-5:rgb(from var(--color-neutral-base)r g b/16%);--color-neutral-inverted-6:rgb(from var(--color-neutral-base)r g b/20%);--color-neutral-inverted-7:rgb(from var(--color-neutral-base)r g b/24%);--color-neutral-inverted-8:rgb(from var(--color-neutral-base)r g b/28%);--color-neutral-inverted-9:rgb(from var(--color-neutral-base)r g b/32%);--color-neutral-inverted-10:rgb(from var(--color-neutral-base)r g b/40%);--color-neutral-inverted-11:rgb(from var(--color-neutral-base)r g b/48%);--color-neutral-inverted-12:rgb(from var(--color-neutral-base)r g b/56%);--color-neutral-inverted-13:rgb(from var(--color-neutral-base)r g b/64%);--color-neutral-inverted-14:rgb(from var(--color-neutral-base)r g b/72%);--color-neutral-inverted-15:rgb(from var(--color-neutral-base)r g b/80%);--color-neutral-inverted-16:rgb(from var(--color-neutral-base)r g b/88%);--color-item-primary:var(--color-neutral-950);--color-item-secondary:var(--color-neutral-alpha-13);--color-item-tertiary:var(--color-neutral-alpha-10);--color-item-quaternary:var(--color-neutral-alpha-7);--color-item-primary-primary:var(--color-blue-600);--color-item-primary-primary-hover:var(--color-blue-700);--color-item-primary-primary-active:var(--color-blue-600);--color-item-primary-primary-focus:var(--color-blue-200);--color-item-primary-secondary:var(--color-neutral-0);--color-item-primary-secondary-hover:var(--color-neutral-50);--color-item-primary-secondary-active:var(--color-neutral-100);--color-item-primary-tertiary:var(--color-neutral-alpha-1);--color-item-primary-tertiary-hover:var(--color-neutral-alpha-2);--color-item-primary-tertiary-active:var(--color-neutral-alpha-3);--color-item-primary-ghost:var(--color-neutral-alpha-0);--color-item-primary-ghost-hover:var(--color-neutral-alpha-2);--color-item-primary-ghost-active:var(--color-neutral-alpha-3);--color-item-primary-destructive:var(--color-red-600);--color-item-primary-destructive-hover:var(--color-red-700);--color-item-primary-destructive-active:var(--color-red-600);--color-item-primary-destructive-focus:var(--color-red-200);--color-item-inverted:var(--color-neutral-0);--color-item-inverted-secondary:var(--color-neutral-inverted-13);--color-item-inverted-tertiary:var(--color-neutral-inverted-10);--color-item-inverted-quaternary:var(--color-neutral-inverted-7);--color-item-fixed:#090a0c;--color-item-fixed-secondary:#16191da3;--color-item-fixed-tertiary:#16191d66;--color-item-fixed-quaternary:#16191d3d;--color-item-fixed-inverted:var(--color-neutral-0);--color-item-fixed-inverted-secondary:var(--color-neutral-inverted-13);--color-item-fixed-inverted-tertiary:var(--color-neutral-inverted-10);--color-item-fixed-inverted-quaternary:var(--color-neutral-inverted-7);--color-surface-base-primary:var(--color-neutral-0);--color-surface-base-secondary:var(--color-neutral-50);--color-surface-base-tertiary:var(--color-neutral-100);--color-surface-component-primary:var(--color-neutral-0);--color-surface-component-secondary:var(--color-neutral-0);--color-surface-component-tertiary:var(--color-neutral-0);--color-surface-base-inverted:var(--color-neutral-950);--color-surface-overlay:#343434;--color-surface-muted:var(--color-neutral-0);--color-surface-muted-hover:var(--color-neutral-50);--color-surface-muted-pressed:var(--color-neutral-100);--color-shadows-inner-0:rgba(var(--color-neutral-base),0);--color-shadows-inner-1:#16191d;--color-shadows-inner-2:#16191d;--color-shadows-drop-1:#16191d;--color-shadows-drop-2:#16191d;--color-shadows-drop-3:#16191d;--color-shadows-drop-4:#16191d;--color-shadows-highlight-1:var(--color-blue-200);--color-shadows-highlight-2:var(--color-blue-500);--color-shadows-danger-1:var(--color-red-200);--color-shadows-danger-2:#ee3a3a;--color-shadows-card-border:#16191d;--color-shadows-card-border-2:#16191d;--color-border-base:var(--border);--color-border-alpha-strong:var(--color-neutral-alpha-6);--color-border-alpha-light:var(--color-neutral-alpha-3);--color-border-alpha-subtle:var(--color-neutral-alpha-4);--color-border-light:var(--color-neutral-200)}.dark{--background:var(--color-neutral-0);--background-secondary:var(--color-neutral-alpha-base);--foreground:0 0% 98%;--card:0 0% 3.9%;--card-foreground:0 0% 98%;--popover:0 0% 3.9%;--popover-foreground:0 0% 98%;--secondary:0 0% 14.9%;--secondary-foreground:0 0% 98%;--muted:0 0% 14.9%;--muted-foreground:0 0% 63.9%;--accent:0 0% 14.9%;--accent-foreground:0 0% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:#fff3;--input:0 0% 14.9%;--ring:0 0% 83.1%;--chart-1:220 70% 50%;--chart-2:160 60% 45%;--chart-3:30 80% 55%;--chart-4:280 65% 60%;--chart-5:340 75% 55%;--sidebar:var(--background);--sidebar-foreground:#f4f4f5;--sidebar-primary:#1d4ed8;--sidebar-primary-foreground:#fff;--sidebar-accent:#27272a;--sidebar-accent-foreground:#f4f4f5;--sidebar-border:#27272a;--sidebar-ring:#3b82f6;--color-item-secondary:var(--color-neutral-inverted-13);--color-item-primary-tertiary:var(--color-neutral-inverted-2);--color-item-primary-tertiary-hover:var(--color-neutral-inverted-3);--color-item-primary-tertiary-active:var(--color-neutral-inverted-4);--color-surface-base-secondary:var(--color-neutral-inverted-2);--color-surface-base-tertiary:var(--color-neutral-200);--color-surface-component-primary:var(--color-neutral-100);--color-surface-component-secondary:var(--color-neutral-200);--color-surface-component-tertiary:#383838;--color-surface-base-inverted:var(--color-neutral-base);--color-surface-overlay:var(--color-neutral-inverted-3);--color-surface-muted:var(--color-neutral-100);--color-surface-muted-hover:var(--color-neutral-200);--color-surface-muted-pressed:#383838;--color-border-strong:var(--color-neutral-inverted-6);--color-shadow-inner-0:rgb(from var(--color-neutral-base)r g b/12%);--color-shadow-inner-1:rgb(from var(--color-neutral-base)r g b/8%);--color-shadow-inner-2:rgb(from var(--color-neutral-base)r g b/12%);--color-shadow-drop-1:#0000001f;--color-shadow-drop-2:#0003;--color-shadow-drop-3:#00000047;--color-shadow-drop-4:#0000005c;--color-shadow-card-border:rgb(from var(--color-neutral-base)r g b/12%);--color-shadow-card-border-2:rgb(from var(--color-neutral-base)r g b/0%);--color-border-alpha-strong:var(--color-neutral-inverted-6);--color-border-alpha-light:var(--color-neutral-inverted-4);--color-border-alpha-subtle:var(--color-neutral-inverted-5)}:root{--sidebar:var(--background-secondary);--sidebar-foreground:var(--primary);--sidebar-primary:#18181b;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#f4f4f5;--sidebar-accent-foreground:#18181b;--sidebar-border:#e5e7eb;--sidebar-ring:#3b82f6}*{border-color:var(--color-border-alpha-light)}body{background-color:var(--background);font-family:var(--font-family-base);color:var(--color-item-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2\.5{top:calc(var(--spacing)*2.5)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-8{right:calc(var(--spacing)*8)}.-bottom-5{bottom:calc(var(--spacing)*-5)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-auto{bottom:auto}.left-2{left:calc(var(--spacing)*2)}.z-1{z-index:1}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.m-0\!{margin:calc(var(--spacing)*0)!important}.mx-auto{margin-inline:auto}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mr-1{margin-right:calc(var(--spacing)*1)}.mb-0{margin-bottom:calc(var(--spacing)*0)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.table{display:table}.aspect-video{aspect-ratio:var(--aspect-video)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-full{width:100%;height:100%}.h-8{height:calc(var(--spacing)*8)}.h-8\.5{height:calc(var(--spacing)*8.5)}.h-16{height:calc(var(--spacing)*16)}.h-\[1\.2rem\]{height:1.2rem}.h-full{height:100%}.max-h-\[calc\(100vh-2rem\)\]{max-height:calc(100vh - 2rem)}.max-h-full{max-height:100%}.min-h-10{min-height:calc(var(--spacing)*10)}.w-9{width:calc(var(--spacing)*9)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-17{width:calc(var(--spacing)*17)}.w-\[1\.2rem\]{width:1.2rem}.w-auto{width:auto}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-78{max-width:calc(var(--spacing)*78)}.max-w-\[95\%\]{max-width:95%}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-16{min-width:calc(var(--spacing)*16)}.min-w-20{min-width:calc(var(--spacing)*20)}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.rotate-0{rotate:none}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-3{border-style:var(--tw-border-style);border-width:3px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-border-alpha-light{border-color:var(--color-border-alpha-light)}.border-item-primary{border-color:var(--color-item-primary-primary)}.border-transparent{border-color:#0000}.bg-bg,.bg-bg\/70{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-bg\/70{background-color:color-mix(in oklab,var(--background)70%,transparent)}}.bg-gray-200{background-color:var(--color-gray-200)}.bg-transparent\!{background-color:#0000!important}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-3{padding-inline:calc(var(--spacing)*3)}.py-1{padding-block:calc(var(--spacing)*1)}.text-center{text-align:center}.text-start{text-align:start}.text-body-sm-medium{font-size:.875rem;line-height:var(--tw-leading,1.25rem);font-weight:var(--tw-font-weight,500)}.text-body-xs-medium{font-size:.75rem;line-height:var(--tw-leading,1.125rem);font-weight:var(--tw-font-weight,500)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-foreground{color:var(--foreground)}.text-item-primary{color:var(--color-item-primary-primary)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-red-600{color:var(--color-red-600)}.text-secondary{color:var(--color-item-secondary)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.accent-foreground{accent-color:var(--foreground)}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:border-item-primary:hover{border-color:var(--color-item-primary-primary)}.hover\:opacity-80:hover{opacity:.8}}@media(min-width:64rem){.lg\:\!inline,.lg\:inline\!{display:inline!important}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}}@media(min-width:80rem){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:96rem){.\32xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:scale-0:is(.dark *){--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:scale-100:is(.dark *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:-rotate-90:is(.dark *){rotate:-90deg}.dark\:rotate-0:is(.dark *){rotate:none}.\[\&_button\]\:-top-1 button{top:calc(var(--spacing)*-1)}.\[\&\>tr\:nth-child\(even\)\]\:bg-bg-secondary>tr:nth-child(2n){background-color:var(--background-secondary)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--color-neutral-base:#fff;--color-neutral-0:var(--color-neutral-base);--color-neutral-50:#f9f9f9;--color-neutral-100:#f6f6f6;--color-neutral-200:#efefef;--color-neutral-300:#d8d8d8;--color-neutral-400:#a5a5a5;--color-neutral-500:#757575;--color-neutral-600:#525252;--color-neutral-700:#404040;--color-neutral-800:#252525;--color-neutral-900:#202020;--color-neutral-950:#171717;--color-neutral-alpha-base:#303030;--color-blue-50:#f0f7ff;--color-blue-100:#e5f2ff;--color-blue-200:#cce5ff;--color-blue-300:#9cf;--color-blue-400:#66b2ff;--color-blue-500:#1487fa;--color-blue-600:#1380ed;--color-blue-700:#1a79d8;--color-blue-800:#1d67b0;--color-blue-900:#1f558a;--color-blue-950:#173654;--color-green-50:#e8fcef;--color-green-100:#dcfce7;--color-green-200:#bbf7d0;--color-green-300:#81eea8;--color-green-400:#41dd7a;--color-green-500:#22c55d;--color-green-600:#17a34a;--color-green-700:#1a8f44;--color-green-800:#176936;--color-green-900:#14532d;--color-green-950:#052e16;--color-lime-50:#f3fddd;--color-lime-100:#ecfbcb;--color-lime-200:#d6f995;--color-lime-300:#bff164;--color-lime-400:#a3e635;--color-lime-500:#84cc15;--color-lime-600:#6bad0d;--color-lime-700:#581;--color-lime-800:#426713;--color-lime-900:#365313;--color-lime-950:#1b2d06;--color-cyan-50:#ecfeff;--color-cyan-100:#cefafe;--color-cyan-200:#a5f3fc;--color-cyan-300:#67e8f9;--color-cyan-400:#24d3ee;--color-cyan-500:#00c3e4;--color-cyan-600:#02abd3;--color-cyan-700:#0586a9;--color-cyan-800:#0d6783;--color-cyan-900:#164e63;--color-cyan-950:#093344;--color-orange-50:#fff7d6;--color-orange-100:#fef0b9;--color-orange-200:#fde277;--color-orange-300:#fbd44c;--color-orange-400:#fbbf24;--color-orange-500:#f59e0c;--color-orange-600:#d97708;--color-orange-700:#b4540a;--color-orange-800:#92400d;--color-orange-900:#78350f;--color-orange-950:#451b03;--color-red-50:#fef6f6;--color-red-100:#fee7e6;--color-red-200:#fed7d7;--color-red-300:#fdb9b9;--color-red-400:#f87171;--color-red-500:#ef4444;--color-red-600:#dc2625;--color-red-700:#c81e1d;--color-red-800:#a01c1c;--color-red-900:#7f1c1d;--color-red-950:#450a0a;--color-purple-50:#f5f3ff;--color-purple-100:#ede9fe;--color-purple-200:#ddd6fe;--color-purple-300:#c3b6fd;--color-purple-400:#a88bfa;--color-purple-500:#8b5cf6;--color-purple-600:#7c3aed;--color-purple-700:#6d28d9;--color-purple-800:#5b21b6;--color-purple-900:#4c1d95;--color-purple-950:#2e1065;--color-indigo-50:#eef2ff;--color-indigo-100:#ede9fe;--color-indigo-200:#ddd6fe;--color-indigo-300:#a5b4fc;--color-indigo-400:#818cf8;--color-indigo-500:#6366f1;--color-indigo-600:#4f46e5;--color-indigo-700:#4338ca;--color-indigo-800:#3730a3;--color-indigo-900:#312e81;--color-indigo-950:#1e1b4b}.dark{--color-neutral-0:#131313;--color-neutral-50:#161616;--color-neutral-100:#202020;--color-neutral-200:#252525;--color-neutral-300:#404040;--color-neutral-400:#525252;--color-neutral-500:#757575;--color-neutral-600:#a3a3a3;--color-neutral-700:#e5e5e5;--color-neutral-800:#f5f5f5;--color-neutral-900:#f8f8f8;--color-neutral-950:#fff;--color-neutral-alpha-base:#202020;--color-blue-50:#11273c;--color-blue-100:#1d4f81;--color-blue-200:#1b61a6;--color-blue-300:#1b76d0;--color-blue-400:#1282f3;--color-blue-500:#0078f0;--color-blue-600:#5cadff;--color-blue-700:#8fc7ff;--color-blue-800:#c2e0ff;--color-blue-900:#dbedff;--color-blue-950:#e5f2ff;--color-green-50:#042512;--color-green-100:#124a28;--color-green-200:#176936;--color-green-300:#1a8f44;--color-green-400:#17a34a;--color-green-500:#20bb58;--color-green-600:#41dd7a;--color-green-700:#78eda2;--color-green-800:#adf5c6;--color-green-900:#d5fbe2;--color-green-950:#e4fcec;--color-lime-50:#1e3107;--color-lime-100:#333;--color-lime-200:#436813;--color-lime-300:#558910;--color-lime-400:#66a60d;--color-lime-500:#81c714;--color-lime-600:#9ce425;--color-lime-700:#b9f057;--color-lime-800:#d4f890;--color-lime-900:#e7fabd;--color-lime-950:#f2fdd8;--color-cyan-50:#072936;--color-cyan-100:#134558;--color-cyan-200:#0c5b74;--color-cyan-300:#047e9f;--color-cyan-400:#02a4ca;--color-cyan-500:#00bbdb;--color-cyan-600:#1cd1ed;--color-cyan-700:#5de7f9;--color-cyan-800:#9cf2fc;--color-cyan-900:#c8f9fe;--color-cyan-950:#e5feff;--color-orange-50:#3b1703;--color-orange-100:#6d300e;--color-orange-200:#883c0c;--color-orange-300:#a94f09;--color-orange-400:#cf7108;--color-orange-500:#eb970a;--color-orange-600:#fbba14;--color-orange-700:#fbcf37;--color-orange-800:#fde37d;--color-orange-900:#fef0b9;--color-orange-950:#fff6d1;--color-red-50:#430909;--color-red-100:#751a1b;--color-red-200:#8f1919;--color-red-300:#bb1c1b;--color-red-400:#dc2423;--color-red-500:#ee3a3a;--color-red-600:#f75959;--color-red-700:#fc7373;--color-red-800:#fec8c8;--color-red-900:#fee2e1;--color-red-950:#fef1f1;--color-purple-50:#2a0f5c;--color-purple-100:#481b8d;--color-purple-200:#561fad;--color-purple-300:#6825d0;--color-purple-400:#7936ed;--color-purple-500:#8756f6;--color-purple-600:#a385fa;--color-purple-700:#beb0fd;--color-purple-800:#dad2fe;--color-purple-900:#e7e2fe;--color-purple-950:#f2f0ff;--color-indigo-50:#1e1b4b;--color-indigo-100:#312e81;--color-indigo-200:#3730a3;--color-indigo-300:#4338ca;--color-indigo-400:#4f46e5;--color-indigo-500:#6366f1;--color-indigo-600:#818cf8;--color-indigo-700:#a5b4fc;--color-indigo-800:#ddd6fe;--color-indigo-900:#ede9fe;--color-indigo-950:#eef2ff}.Toastify__toast-container.Toastify__toast-container--bottom-left{display:none}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
1
+ /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-gray-200:oklch(92.8% .006 264.531);--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--font-weight-semibold:600;--radius-xs:.125rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--primary:var(--color-neutral-950);--secondary:var(--color-neutral-alpha-13);--background:var(--color-neutral-0);--background-secondary:var(--color-neutral-50);--foreground:0 0% 3.9%;--card:0 0% 100%;--card-foreground:0 0% 3.9%;--popover:0 0% 100%;--popover-foreground:0 0% 3.9%;--muted:0 0% 96.1%;--muted-foreground:0 0% 45.1%;--accent:0 0% 96.1%;--accent-foreground:0 0% 9%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:#30303033;--input:0 0% 89.8%;--ring:0 0% 3.9%;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%;--radius-xs:.125rem;--color-neutral-alpha-0:rgb(from var(--color-neutral-alpha-base)r g b/.01%);--color-neutral-alpha-1:rgb(from var(--color-neutral-alpha-base)r g b/3%);--color-neutral-alpha-2:rgb(from var(--color-neutral-alpha-base)r g b/5%);--color-neutral-alpha-3:rgb(from var(--color-neutral-alpha-base)r g b/7%);--color-neutral-alpha-4:rgb(from var(--color-neutral-alpha-base)r g b/10%);--color-neutral-alpha-5:rgb(from var(--color-neutral-alpha-base)r g b/16%);--color-neutral-alpha-6:rgb(from var(--color-neutral-alpha-base)r g b/20%);--color-neutral-alpha-7:rgb(from var(--color-neutral-alpha-base)r g b/24%);--color-neutral-alpha-8:rgb(from var(--color-neutral-alpha-base)r g b/28%);--color-neutral-alpha-9:rgb(from var(--color-neutral-alpha-base)r g b/32%);--color-neutral-alpha-10:rgb(from var(--color-neutral-alpha-base)r g b/40%);--color-neutral-alpha-11:rgb(from var(--color-neutral-alpha-base)r g b/48%);--color-neutral-alpha-12:rgb(from var(--color-neutral-alpha-base)r g b/56%);--color-neutral-alpha-13:rgb(from var(--color-neutral-alpha-base)r g b/64%);--color-neutral-alpha-14:rgb(from var(--color-neutral-alpha-base)r g b/72%);--color-neutral-alpha-15:rgb(from var(--color-neutral-alpha-base)r g b/80%);--color-neutral-alpha-16:rgb(from var(--color-neutral-alpha-base)r g b/88%);--color-neutral-inverted-0:rgb(from var(--color-neutral-base)r g b/.01%);--color-neutral-inverted-1:rgb(from var(--color-neutral-base)r g b/3%);--color-neutral-inverted-2:rgb(from var(--color-neutral-base)r g b/5%);--color-neutral-inverted-3:rgb(from var(--color-neutral-base)r g b/7%);--color-neutral-inverted-4:rgb(from var(--color-neutral-base)r g b/10%);--color-neutral-inverted-5:rgb(from var(--color-neutral-base)r g b/16%);--color-neutral-inverted-6:rgb(from var(--color-neutral-base)r g b/20%);--color-neutral-inverted-7:rgb(from var(--color-neutral-base)r g b/24%);--color-neutral-inverted-8:rgb(from var(--color-neutral-base)r g b/28%);--color-neutral-inverted-9:rgb(from var(--color-neutral-base)r g b/32%);--color-neutral-inverted-10:rgb(from var(--color-neutral-base)r g b/40%);--color-neutral-inverted-11:rgb(from var(--color-neutral-base)r g b/48%);--color-neutral-inverted-12:rgb(from var(--color-neutral-base)r g b/56%);--color-neutral-inverted-13:rgb(from var(--color-neutral-base)r g b/64%);--color-neutral-inverted-14:rgb(from var(--color-neutral-base)r g b/72%);--color-neutral-inverted-15:rgb(from var(--color-neutral-base)r g b/80%);--color-neutral-inverted-16:rgb(from var(--color-neutral-base)r g b/88%);--color-item-primary:var(--color-neutral-950);--color-item-secondary:var(--color-neutral-alpha-13);--color-item-tertiary:var(--color-neutral-alpha-10);--color-item-quaternary:var(--color-neutral-alpha-7);--color-item-primary-primary:var(--color-blue-600);--color-item-primary-primary-hover:var(--color-blue-700);--color-item-primary-primary-active:var(--color-blue-600);--color-item-primary-primary-focus:var(--color-blue-200);--color-item-primary-secondary:var(--color-neutral-0);--color-item-primary-secondary-hover:var(--color-neutral-50);--color-item-primary-secondary-active:var(--color-neutral-100);--color-item-primary-tertiary:var(--color-neutral-alpha-1);--color-item-primary-tertiary-hover:var(--color-neutral-alpha-2);--color-item-primary-tertiary-active:var(--color-neutral-alpha-3);--color-item-primary-ghost:var(--color-neutral-alpha-0);--color-item-primary-ghost-hover:var(--color-neutral-alpha-2);--color-item-primary-ghost-active:var(--color-neutral-alpha-3);--color-item-primary-destructive:var(--color-red-600);--color-item-primary-destructive-hover:var(--color-red-700);--color-item-primary-destructive-active:var(--color-red-600);--color-item-primary-destructive-focus:var(--color-red-200);--color-item-inverted:var(--color-neutral-0);--color-item-inverted-secondary:var(--color-neutral-inverted-13);--color-item-inverted-tertiary:var(--color-neutral-inverted-10);--color-item-inverted-quaternary:var(--color-neutral-inverted-7);--color-item-fixed:#090a0c;--color-item-fixed-secondary:#16191da3;--color-item-fixed-tertiary:#16191d66;--color-item-fixed-quaternary:#16191d3d;--color-item-fixed-inverted:var(--color-neutral-0);--color-item-fixed-inverted-secondary:var(--color-neutral-inverted-13);--color-item-fixed-inverted-tertiary:var(--color-neutral-inverted-10);--color-item-fixed-inverted-quaternary:var(--color-neutral-inverted-7);--color-surface-base-primary:var(--color-neutral-0);--color-surface-base-secondary:var(--color-neutral-50);--color-surface-base-tertiary:var(--color-neutral-100);--color-surface-component-primary:var(--color-neutral-0);--color-surface-component-secondary:var(--color-neutral-0);--color-surface-component-tertiary:var(--color-neutral-0);--color-surface-base-inverted:var(--color-neutral-950);--color-surface-overlay:#343434;--color-surface-muted:var(--color-neutral-0);--color-surface-muted-hover:var(--color-neutral-50);--color-surface-muted-pressed:var(--color-neutral-100);--color-shadows-inner-0:rgba(var(--color-neutral-base),0);--color-shadows-inner-1:#16191d;--color-shadows-inner-2:#16191d;--color-shadows-drop-1:#16191d;--color-shadows-drop-2:#16191d;--color-shadows-drop-3:#16191d;--color-shadows-drop-4:#16191d;--color-shadows-highlight-1:var(--color-blue-200);--color-shadows-highlight-2:var(--color-blue-500);--color-shadows-danger-1:var(--color-red-200);--color-shadows-danger-2:#ee3a3a;--color-shadows-card-border:#16191d;--color-shadows-card-border-2:#16191d;--color-border-base:var(--border);--color-border-alpha-strong:var(--color-neutral-alpha-6);--color-border-alpha-light:var(--color-neutral-alpha-3);--color-border-alpha-subtle:var(--color-neutral-alpha-4);--color-border-light:var(--color-neutral-200)}.dark{--background:var(--color-neutral-0);--background-secondary:var(--color-neutral-alpha-base);--foreground:0 0% 98%;--card:0 0% 3.9%;--card-foreground:0 0% 98%;--popover:0 0% 3.9%;--popover-foreground:0 0% 98%;--secondary:0 0% 14.9%;--secondary-foreground:0 0% 98%;--muted:0 0% 14.9%;--muted-foreground:0 0% 63.9%;--accent:0 0% 14.9%;--accent-foreground:0 0% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:#fff3;--input:0 0% 14.9%;--ring:0 0% 83.1%;--chart-1:220 70% 50%;--chart-2:160 60% 45%;--chart-3:30 80% 55%;--chart-4:280 65% 60%;--chart-5:340 75% 55%;--sidebar:var(--background);--sidebar-foreground:#f4f4f5;--sidebar-primary:#1d4ed8;--sidebar-primary-foreground:#fff;--sidebar-accent:#27272a;--sidebar-accent-foreground:#f4f4f5;--sidebar-border:#27272a;--sidebar-ring:#3b82f6;--color-item-secondary:var(--color-neutral-inverted-13);--color-item-primary-tertiary:var(--color-neutral-inverted-2);--color-item-primary-tertiary-hover:var(--color-neutral-inverted-3);--color-item-primary-tertiary-active:var(--color-neutral-inverted-4);--color-surface-base-secondary:var(--color-neutral-inverted-2);--color-surface-base-tertiary:var(--color-neutral-200);--color-surface-component-primary:var(--color-neutral-100);--color-surface-component-secondary:var(--color-neutral-200);--color-surface-component-tertiary:#383838;--color-surface-base-inverted:var(--color-neutral-base);--color-surface-overlay:var(--color-neutral-inverted-3);--color-surface-muted:var(--color-neutral-100);--color-surface-muted-hover:var(--color-neutral-200);--color-surface-muted-pressed:#383838;--color-border-strong:var(--color-neutral-inverted-6);--color-shadow-inner-0:rgb(from var(--color-neutral-base)r g b/12%);--color-shadow-inner-1:rgb(from var(--color-neutral-base)r g b/8%);--color-shadow-inner-2:rgb(from var(--color-neutral-base)r g b/12%);--color-shadow-drop-1:#0000001f;--color-shadow-drop-2:#0003;--color-shadow-drop-3:#00000047;--color-shadow-drop-4:#0000005c;--color-shadow-card-border:rgb(from var(--color-neutral-base)r g b/12%);--color-shadow-card-border-2:rgb(from var(--color-neutral-base)r g b/0%);--color-border-alpha-strong:var(--color-neutral-inverted-6);--color-border-alpha-light:var(--color-neutral-inverted-4);--color-border-alpha-subtle:var(--color-neutral-inverted-5)}:root{--sidebar:var(--background-secondary);--sidebar-foreground:var(--primary);--sidebar-primary:#18181b;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#f4f4f5;--sidebar-accent-foreground:#18181b;--sidebar-border:#e5e7eb;--sidebar-ring:#3b82f6}*{border-color:var(--color-border-alpha-light)}body{background-color:var(--background);font-family:var(--font-family-base);color:var(--color-item-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-2\.5{top:calc(var(--spacing)*2.5)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-8{right:calc(var(--spacing)*8)}.-bottom-5{bottom:calc(var(--spacing)*-5)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-auto{bottom:auto}.left-2{left:calc(var(--spacing)*2)}.z-1{z-index:1}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.m-0\!{margin:calc(var(--spacing)*0)!important}.mx-auto{margin-inline:auto}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mr-1{margin-right:calc(var(--spacing)*1)}.mb-0{margin-bottom:calc(var(--spacing)*0)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.table{display:table}.aspect-video{aspect-ratio:var(--aspect-video)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6{width:calc(var(--spacing)*6);height:calc(var(--spacing)*6)}.size-full{width:100%;height:100%}.h-8{height:calc(var(--spacing)*8)}.h-8\.5{height:calc(var(--spacing)*8.5)}.h-16{height:calc(var(--spacing)*16)}.h-\[1\.2rem\]{height:1.2rem}.h-full{height:100%}.max-h-\[calc\(100vh-2rem\)\]{max-height:calc(100vh - 2rem)}.max-h-full{max-height:100%}.min-h-10{min-height:calc(var(--spacing)*10)}.w-9{width:calc(var(--spacing)*9)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-17{width:calc(var(--spacing)*17)}.w-\[1\.2rem\]{width:1.2rem}.w-auto{width:auto}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-78{max-width:calc(var(--spacing)*78)}.max-w-\[95\%\]{max-width:95%}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-16{min-width:calc(var(--spacing)*16)}.min-w-20{min-width:calc(var(--spacing)*20)}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.rotate-0{rotate:none}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*0)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*0)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-3{border-style:var(--tw-border-style);border-width:3px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-border-alpha-light{border-color:var(--color-border-alpha-light)}.border-item-primary{border-color:var(--color-item-primary-primary)}.border-transparent{border-color:#0000}.bg-bg,.bg-bg\/70{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-bg\/70{background-color:color-mix(in oklab,var(--background)70%,transparent)}}.bg-gray-200{background-color:var(--color-gray-200)}.bg-transparent\!{background-color:#0000!important}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-3{padding-inline:calc(var(--spacing)*3)}.py-1{padding-block:calc(var(--spacing)*1)}.text-center{text-align:center}.text-start{text-align:start}.text-body-sm-medium{font-size:.875rem;line-height:var(--tw-leading,1.25rem);font-weight:var(--tw-font-weight,500)}.text-body-xs-medium{font-size:.75rem;line-height:var(--tw-leading,1.125rem);font-weight:var(--tw-font-weight,500)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-foreground{color:var(--foreground)}.text-item-primary{color:var(--color-item-primary-primary)}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-red-600{color:var(--color-red-600)}.text-secondary{color:var(--color-item-secondary)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.accent-foreground{accent-color:var(--foreground)}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:border-item-primary:hover{border-color:var(--color-item-primary-primary)}.hover\:opacity-80:hover{opacity:.8}}@media(min-width:64rem){.lg\:inline\!{display:inline!important}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}}@media(min-width:80rem){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:96rem){.\32xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.dark\:scale-0:is(.dark *){--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:scale-100:is(.dark *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:-rotate-90:is(.dark *){rotate:-90deg}.dark\:rotate-0:is(.dark *){rotate:none}.\[\&_button\]\:-top-1 button{top:calc(var(--spacing)*-1)}.\[\&\>tr\:nth-child\(even\)\]\:bg-bg-secondary>tr:nth-child(2n){background-color:var(--background-secondary)}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--color-neutral-base:#fff;--color-neutral-0:var(--color-neutral-base);--color-neutral-50:#f9f9f9;--color-neutral-100:#f6f6f6;--color-neutral-200:#efefef;--color-neutral-300:#d8d8d8;--color-neutral-400:#a5a5a5;--color-neutral-500:#757575;--color-neutral-600:#525252;--color-neutral-700:#404040;--color-neutral-800:#252525;--color-neutral-900:#202020;--color-neutral-950:#171717;--color-neutral-alpha-base:#303030;--color-blue-50:#f0f7ff;--color-blue-100:#e5f2ff;--color-blue-200:#cce5ff;--color-blue-300:#9cf;--color-blue-400:#66b2ff;--color-blue-500:#1487fa;--color-blue-600:#1380ed;--color-blue-700:#1a79d8;--color-blue-800:#1d67b0;--color-blue-900:#1f558a;--color-blue-950:#173654;--color-green-50:#e8fcef;--color-green-100:#dcfce7;--color-green-200:#bbf7d0;--color-green-300:#81eea8;--color-green-400:#41dd7a;--color-green-500:#22c55d;--color-green-600:#17a34a;--color-green-700:#1a8f44;--color-green-800:#176936;--color-green-900:#14532d;--color-green-950:#052e16;--color-lime-50:#f3fddd;--color-lime-100:#ecfbcb;--color-lime-200:#d6f995;--color-lime-300:#bff164;--color-lime-400:#a3e635;--color-lime-500:#84cc15;--color-lime-600:#6bad0d;--color-lime-700:#581;--color-lime-800:#426713;--color-lime-900:#365313;--color-lime-950:#1b2d06;--color-cyan-50:#ecfeff;--color-cyan-100:#cefafe;--color-cyan-200:#a5f3fc;--color-cyan-300:#67e8f9;--color-cyan-400:#24d3ee;--color-cyan-500:#00c3e4;--color-cyan-600:#02abd3;--color-cyan-700:#0586a9;--color-cyan-800:#0d6783;--color-cyan-900:#164e63;--color-cyan-950:#093344;--color-orange-50:#fff7d6;--color-orange-100:#fef0b9;--color-orange-200:#fde277;--color-orange-300:#fbd44c;--color-orange-400:#fbbf24;--color-orange-500:#f59e0c;--color-orange-600:#d97708;--color-orange-700:#b4540a;--color-orange-800:#92400d;--color-orange-900:#78350f;--color-orange-950:#451b03;--color-red-50:#fef6f6;--color-red-100:#fee7e6;--color-red-200:#fed7d7;--color-red-300:#fdb9b9;--color-red-400:#f87171;--color-red-500:#ef4444;--color-red-600:#dc2625;--color-red-700:#c81e1d;--color-red-800:#a01c1c;--color-red-900:#7f1c1d;--color-red-950:#450a0a;--color-purple-50:#f5f3ff;--color-purple-100:#ede9fe;--color-purple-200:#ddd6fe;--color-purple-300:#c3b6fd;--color-purple-400:#a88bfa;--color-purple-500:#8b5cf6;--color-purple-600:#7c3aed;--color-purple-700:#6d28d9;--color-purple-800:#5b21b6;--color-purple-900:#4c1d95;--color-purple-950:#2e1065;--color-indigo-50:#eef2ff;--color-indigo-100:#ede9fe;--color-indigo-200:#ddd6fe;--color-indigo-300:#a5b4fc;--color-indigo-400:#818cf8;--color-indigo-500:#6366f1;--color-indigo-600:#4f46e5;--color-indigo-700:#4338ca;--color-indigo-800:#3730a3;--color-indigo-900:#312e81;--color-indigo-950:#1e1b4b}.dark{--color-neutral-0:#131313;--color-neutral-50:#161616;--color-neutral-100:#202020;--color-neutral-200:#252525;--color-neutral-300:#404040;--color-neutral-400:#525252;--color-neutral-500:#757575;--color-neutral-600:#a3a3a3;--color-neutral-700:#e5e5e5;--color-neutral-800:#f5f5f5;--color-neutral-900:#f8f8f8;--color-neutral-950:#fff;--color-neutral-alpha-base:#202020;--color-blue-50:#11273c;--color-blue-100:#1d4f81;--color-blue-200:#1b61a6;--color-blue-300:#1b76d0;--color-blue-400:#1282f3;--color-blue-500:#0078f0;--color-blue-600:#5cadff;--color-blue-700:#8fc7ff;--color-blue-800:#c2e0ff;--color-blue-900:#dbedff;--color-blue-950:#e5f2ff;--color-green-50:#042512;--color-green-100:#124a28;--color-green-200:#176936;--color-green-300:#1a8f44;--color-green-400:#17a34a;--color-green-500:#20bb58;--color-green-600:#41dd7a;--color-green-700:#78eda2;--color-green-800:#adf5c6;--color-green-900:#d5fbe2;--color-green-950:#e4fcec;--color-lime-50:#1e3107;--color-lime-100:#333;--color-lime-200:#436813;--color-lime-300:#558910;--color-lime-400:#66a60d;--color-lime-500:#81c714;--color-lime-600:#9ce425;--color-lime-700:#b9f057;--color-lime-800:#d4f890;--color-lime-900:#e7fabd;--color-lime-950:#f2fdd8;--color-cyan-50:#072936;--color-cyan-100:#134558;--color-cyan-200:#0c5b74;--color-cyan-300:#047e9f;--color-cyan-400:#02a4ca;--color-cyan-500:#00bbdb;--color-cyan-600:#1cd1ed;--color-cyan-700:#5de7f9;--color-cyan-800:#9cf2fc;--color-cyan-900:#c8f9fe;--color-cyan-950:#e5feff;--color-orange-50:#3b1703;--color-orange-100:#6d300e;--color-orange-200:#883c0c;--color-orange-300:#a94f09;--color-orange-400:#cf7108;--color-orange-500:#eb970a;--color-orange-600:#fbba14;--color-orange-700:#fbcf37;--color-orange-800:#fde37d;--color-orange-900:#fef0b9;--color-orange-950:#fff6d1;--color-red-50:#430909;--color-red-100:#751a1b;--color-red-200:#8f1919;--color-red-300:#bb1c1b;--color-red-400:#dc2423;--color-red-500:#ee3a3a;--color-red-600:#f75959;--color-red-700:#fc7373;--color-red-800:#fec8c8;--color-red-900:#fee2e1;--color-red-950:#fef1f1;--color-purple-50:#2a0f5c;--color-purple-100:#481b8d;--color-purple-200:#561fad;--color-purple-300:#6825d0;--color-purple-400:#7936ed;--color-purple-500:#8756f6;--color-purple-600:#a385fa;--color-purple-700:#beb0fd;--color-purple-800:#dad2fe;--color-purple-900:#e7e2fe;--color-purple-950:#f2f0ff;--color-indigo-50:#1e1b4b;--color-indigo-100:#312e81;--color-indigo-200:#3730a3;--color-indigo-300:#4338ca;--color-indigo-400:#4f46e5;--color-indigo-500:#6366f1;--color-indigo-600:#818cf8;--color-indigo-700:#a5b4fc;--color-indigo-800:#ddd6fe;--color-indigo-900:#ede9fe;--color-indigo-950:#eef2ff}.Toastify__toast-container.Toastify__toast-container--bottom-left{display:none}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/Actions.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,sBAAsB,EAK5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,KAAK,EAAE,SAAS,CAAC;IACjB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,sBAAsB;IAC1D,6DAA6D;IAC7D,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,oCAAoC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,iDAKrB,YAAY,4CAyBd,CAAC"}
1
+ {"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../../src/components/actions/Actions.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,sBAAsB,EAK5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,KAAK,EAAE,SAAS,CAAC;IACjB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,sBAAsB;IAC1D,6DAA6D;IAC7D,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,oCAAoC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,OAAO,GAAI,iDAKrB,YAAY,4CA2Bd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ExportData.d.ts","sourceRoot":"","sources":["../../../../src/components/export/ExportData.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,sBAAsB,EAK5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,KAAK,EAAE,SAAS,CAAC;IACjB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,sBAAsB;IAC7D,gDAAgD;IAChD,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,GAAI,0DAMxB,eAAe,4CAyBjB,CAAC"}
1
+ {"version":3,"file":"ExportData.d.ts","sourceRoot":"","sources":["../../../../src/components/export/ExportData.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,sBAAsB,EAK5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,gEAAgE;IAChE,KAAK,EAAE,SAAS,CAAC;IACjB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,sBAAsB;IAC7D,gDAAgD;IAChD,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,GAAI,0DAMxB,eAAe,4CA2BjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterWrapper.d.ts","sourceRoot":"","sources":["../../../../src/components/filters/FilterWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAEL,KAAK,qBAAqB,EAG3B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAQ,KAAK,SAAS,EAAoC,MAAM,OAAO,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,qBAAqB;IACzD,6CAA6C;IAC7C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACtD,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C,mCAAmC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,iCAAiC;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iCAAiC;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,0DA4HxB,CAAC"}
1
+ {"version":3,"file":"FilterWrapper.d.ts","sourceRoot":"","sources":["../../../../src/components/filters/FilterWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAEL,KAAK,qBAAqB,EAG3B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAQ,KAAK,SAAS,EAAoC,MAAM,OAAO,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAKnD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,qBAAqB;IACzD,6CAA6C;IAC7C,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACtD,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C,mCAAmC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,iCAAiC;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iCAAiC;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,0DA6HxB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dgz-ui-shared",
3
- "version": "1.2.16",
3
+ "version": "1.2.17",
4
4
  "description": "Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript, dgz-ui library",
5
5
  "keywords": [
6
6
  "dgz-ui",
@@ -177,7 +177,7 @@
177
177
  "dependencies": {
178
178
  "@hookform/resolvers": "^5.0.1",
179
179
  "dayjs": "^1.11.19",
180
- "dgz-ui": "^1.4.8",
180
+ "dgz-ui": "^1.4.9",
181
181
  "file-saver": "^2.0.5",
182
182
  "lodash": "^4.17.21",
183
183
  "lucide-react": "^0.563.0",
@@ -1,30 +0,0 @@
1
- import { jsxs as e, jsx as n } from "react/jsx-runtime";
2
- import { W as t, f as a } from "./index-E1NtSoNr.es.js";
3
- import { Button as m } from "dgz-ui/button";
4
- import { DropdownMenu as c, DropdownMenuTrigger as p, DropdownMenuContent as u, DropdownMenuItem as h } from "dgz-ui/dropdown";
5
- const C = ({
6
- actions: o,
7
- triggerProps: i,
8
- contentProps: l,
9
- title: s
10
- }) => /* @__PURE__ */ e(c, { children: [
11
- /* @__PURE__ */ n(p, { asChild: !0, ...i, children: /* @__PURE__ */ e(
12
- m,
13
- {
14
- variant: "secondary",
15
- size: "sm",
16
- className: "ml-auto rounded-lg px-3",
17
- children: [
18
- /* @__PURE__ */ n(t, {}),
19
- " ",
20
- /* @__PURE__ */ n("span", { className: "hidden lg:!inline", children: s || "Actions" }),
21
- /* @__PURE__ */ n(a, {})
22
- ]
23
- }
24
- ) }),
25
- /* @__PURE__ */ n(u, { align: "end", ...l, children: o.map((r, d) => /* @__PURE__ */ n(h, { onClick: () => r.onClick(), children: r.label }, d)) })
26
- ] });
27
- export {
28
- C as A
29
- };
30
- //# sourceMappingURL=Actions-Bi_vjY5M.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Actions-Bi_vjY5M.es.js","sources":["../../src/components/actions/Actions.tsx"],"sourcesContent":["import { RiArrowDownSLine, RiPlayList2Line } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport type { ReactNode } from 'react';\n\n/**\n * Interface representing a single action item.\n */\nexport interface ActionInterface {\n /** The content to display for the action item. */\n label: ReactNode;\n /** Callback function to execute when the action is clicked. */\n onClick: () => void;\n}\n\n/**\n * Props for the Actions component.\n */\nexport interface ActionsProps extends DropdownContainerProps {\n /** Array of action items to be displayed in the dropdown. */\n actions: ActionInterface[];\n /** Title for the actions button. */\n title?: ReactNode;\n}\n\n/**\n * Actions renders a dropdown menu with a list of action items.\n *\n * @param props.actions - Array of actions with label and onClick handler.\n * @returns React element rendering the actions dropdown.\n */\nexport const Actions = ({\n actions,\n triggerProps,\n contentProps,\n title,\n}: ActionsProps) => {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild {...triggerProps}>\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n <RiPlayList2Line />{' '}\n <span className={'hidden lg:!inline'}>{title || 'Actions'}</span>\n <RiArrowDownSLine />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" {...contentProps}>\n {actions.map((action, index) => {\n return (\n <DropdownMenuItem key={index} onClick={() => action.onClick()}>\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["Actions","actions","triggerProps","contentProps","title","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","RiPlayList2Line","RiArrowDownSLine","DropdownMenuContent","action","index","DropdownMenuItem"],"mappings":";;;;AAqCO,MAAMA,IAAU,CAAC;AAAA,EACtB,SAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AACF,wBAEKC,GAAA,EACC,UAAA;AAAA,EAAA,gBAAAC,EAACC,GAAA,EAAoB,SAAO,IAAE,GAAGL,GAC/B,UAAA,gBAAAM;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAM;AAAA,MACN,WAAW;AAAA,MAEX,UAAA;AAAA,QAAA,gBAAAH,EAACI,GAAA,EAAgB;AAAA,QAAG;AAAA,QACpB,gBAAAJ,EAAC,QAAA,EAAK,WAAW,qBAAsB,eAAS,WAAU;AAAA,0BACzDK,GAAA,CAAA,CAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEtB;AAAA,EACA,gBAAAL,EAACM,GAAA,EAAoB,OAAM,OAAO,GAAGT,GAClC,UAAAF,EAAQ,IAAI,CAACY,GAAQC,MAElB,gBAAAR,EAACS,KAA6B,SAAS,MAAMF,EAAO,QAAA,GACjD,UAAAA,EAAO,MAAA,GADaC,CAEvB,CAEH,EAAA,CACH;AAAA,GACF;"}
@@ -1,2 +0,0 @@
1
- "use strict";const n=require("react/jsx-runtime"),s=require("./index-ClQFzqcq.cjs.js"),l=require("dgz-ui/button"),e=require("dgz-ui/dropdown"),u=({actions:i,triggerProps:o,contentProps:t,title:d})=>n.jsxs(e.DropdownMenu,{children:[n.jsx(e.DropdownMenuTrigger,{asChild:!0,...o,children:n.jsxs(l.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:[n.jsx(s.Wg,{})," ",n.jsx("span",{className:"hidden lg:!inline",children:d||"Actions"}),n.jsx(s.f1,{})]})}),n.jsx(e.DropdownMenuContent,{align:"end",...t,children:i.map((r,c)=>n.jsx(e.DropdownMenuItem,{onClick:()=>r.onClick(),children:r.label},c))})]});exports.Actions=u;
2
- //# sourceMappingURL=Actions-CXOiCjx0.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Actions-CXOiCjx0.cjs.js","sources":["../../src/components/actions/Actions.tsx"],"sourcesContent":["import { RiArrowDownSLine, RiPlayList2Line } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport type { ReactNode } from 'react';\n\n/**\n * Interface representing a single action item.\n */\nexport interface ActionInterface {\n /** The content to display for the action item. */\n label: ReactNode;\n /** Callback function to execute when the action is clicked. */\n onClick: () => void;\n}\n\n/**\n * Props for the Actions component.\n */\nexport interface ActionsProps extends DropdownContainerProps {\n /** Array of action items to be displayed in the dropdown. */\n actions: ActionInterface[];\n /** Title for the actions button. */\n title?: ReactNode;\n}\n\n/**\n * Actions renders a dropdown menu with a list of action items.\n *\n * @param props.actions - Array of actions with label and onClick handler.\n * @returns React element rendering the actions dropdown.\n */\nexport const Actions = ({\n actions,\n triggerProps,\n contentProps,\n title,\n}: ActionsProps) => {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild {...triggerProps}>\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n <RiPlayList2Line />{' '}\n <span className={'hidden lg:!inline'}>{title || 'Actions'}</span>\n <RiArrowDownSLine />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" {...contentProps}>\n {actions.map((action, index) => {\n return (\n <DropdownMenuItem key={index} onClick={() => action.onClick()}>\n {action.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["Actions","actions","triggerProps","contentProps","title","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","RiPlayList2Line","RiArrowDownSLine","DropdownMenuContent","action","index","DropdownMenuItem"],"mappings":"+IAqCaA,EAAU,CAAC,CACtB,QAAAC,EACA,aAAAC,EACA,aAAAC,EACA,MAAAC,CACF,WAEKC,eAAA,CACC,SAAA,CAAAC,EAAAA,IAACC,EAAAA,oBAAA,CAAoB,QAAO,GAAE,GAAGL,EAC/B,SAAAM,EAAAA,KAACC,EAAAA,OAAA,CACC,QAAQ,YACR,KAAM,KACN,UAAW,0BAEX,SAAA,CAAAH,EAAAA,IAACI,EAAAA,GAAA,EAAgB,EAAG,IACpBJ,EAAAA,IAAC,OAAA,CAAK,UAAW,oBAAsB,YAAS,UAAU,QACzDK,EAAAA,GAAA,CAAA,CAAiB,CAAA,CAAA,CAAA,EAEtB,EACAL,EAAAA,IAACM,EAAAA,oBAAA,CAAoB,MAAM,MAAO,GAAGT,EAClC,SAAAF,EAAQ,IAAI,CAACY,EAAQC,IAElBR,MAACS,EAAAA,kBAA6B,QAAS,IAAMF,EAAO,QAAA,EACjD,SAAAA,EAAO,KAAA,EADaC,CAEvB,CAEH,CAAA,CACH,CAAA,EACF"}
@@ -1,32 +0,0 @@
1
- import { jsxs as e, jsx as r } from "react/jsx-runtime";
2
- import { Z as d, f as m } from "./index-E1NtSoNr.es.js";
3
- import { Button as p } from "dgz-ui/button";
4
- import { DropdownMenu as c, DropdownMenuTrigger as u, DropdownMenuContent as f, DropdownMenuItem as h } from "dgz-ui/dropdown";
5
- import { S as x } from "./Spin-DtW_edOq.es.js";
6
- const E = ({
7
- options: o,
8
- loading: i = !1,
9
- triggerProps: a,
10
- contentProps: l,
11
- title: t
12
- }) => /* @__PURE__ */ e(c, { children: [
13
- /* @__PURE__ */ r(u, { asChild: !0, ...a, children: /* @__PURE__ */ e(
14
- p,
15
- {
16
- variant: "secondary",
17
- size: "sm",
18
- className: "ml-auto rounded-lg px-3",
19
- children: [
20
- i ? /* @__PURE__ */ r(x, {}) : /* @__PURE__ */ r(d, {}),
21
- " ",
22
- /* @__PURE__ */ r("span", { className: "hidden lg:!inline", children: t || "Export" }),
23
- /* @__PURE__ */ r(m, {})
24
- ]
25
- }
26
- ) }),
27
- /* @__PURE__ */ r(f, { align: "end", ...l, children: o.map((n, s) => /* @__PURE__ */ r(h, { onClick: () => n.onClick(), children: n.label }, s)) })
28
- ] });
29
- export {
30
- E
31
- };
32
- //# sourceMappingURL=ExportData-CHPKm-ZY.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExportData-CHPKm-ZY.es.js","sources":["../../src/components/export/ExportData.tsx"],"sourcesContent":["import { RiArrowDownSLine, RiFileChartLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport type { ReactNode } from 'react';\nimport { Spin } from '../loader';\n\n/**\n * Describes a single export option in the ExportData dropdown.\n *\n * - Use `label` to render the visible option content (text or any React node).\n * - Provide `onClick` to trigger the export logic (CSV/XLS/PDF, etc.).\n */\nexport interface ExportDataInterface {\n /** Visible content for the dropdown item (text, icon, etc.). */\n label: ReactNode;\n /** Callback executed when the export option is selected. */\n onClick: () => void;\n}\n\n/**\n * Props for the `ExportData` component.\n *\n * - `options` — A list of export actions displayed in the dropdown.\n * - `loading` — When `true`, shows a small spinner in the button to indicate an export is in progress.\n */\nexport interface ExportDataProps extends DropdownContainerProps {\n /** Export actions displayed in the dropdown. */\n options: ExportDataInterface[];\n /** If `true`, renders a spinner icon in the button. */\n loading?: boolean;\n /** Title for the export button. */\n title?: ReactNode;\n}\n\n/**\n * ExportData renders a compact dropdown button for exporting data in various formats.\n *\n * Behavior\n * - Shows a button with an export icon and localized \"Export\" label.\n * - Clicking opens a dropdown with the provided `options` list.\n * - Each option calls its `onClick` handler when selected.\n *\n * Accessibility\n * - Uses the shared Dropdown primitives and Button which provide keyboard and ARIA support.\n *\n * Internationalization\n * - The button label is translated via `react-i18next` using the `Export` key.\n */\nexport const ExportData = ({\n options,\n loading = false,\n triggerProps,\n contentProps,\n title,\n}: ExportDataProps) => {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild {...triggerProps}>\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n {loading ? <Spin /> : <RiFileChartLine />}{' '}\n <span className={'hidden lg:!inline'}>{title || 'Export'}</span>\n <RiArrowDownSLine />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" {...contentProps}>\n {options.map((option, index) => {\n return (\n <DropdownMenuItem key={index} onClick={() => option.onClick()}>\n {option.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["ExportData","options","loading","triggerProps","contentProps","title","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","Spin","RiFileChartLine","RiArrowDownSLine","DropdownMenuContent","option","index","DropdownMenuItem"],"mappings":";;;;;AAsDO,MAAMA,IAAa,CAAC;AAAA,EACzB,SAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAC;AACF,wBAEKC,GAAA,EACC,UAAA;AAAA,EAAA,gBAAAC,EAACC,GAAA,EAAoB,SAAO,IAAE,GAAGL,GAC/B,UAAA,gBAAAM;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,MAAM;AAAA,MACN,WAAW;AAAA,MAEV,UAAA;AAAA,QAAAR,IAAU,gBAAAK,EAACI,GAAA,CAAA,CAAK,IAAK,gBAAAJ,EAACK,GAAA,EAAgB;AAAA,QAAI;AAAA,QAC3C,gBAAAL,EAAC,QAAA,EAAK,WAAW,qBAAsB,eAAS,UAAS;AAAA,0BACxDM,GAAA,CAAA,CAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEtB;AAAA,EACA,gBAAAN,EAACO,GAAA,EAAoB,OAAM,OAAO,GAAGV,GAClC,UAAAH,EAAQ,IAAI,CAACc,GAAQC,MAElB,gBAAAT,EAACU,KAA6B,SAAS,MAAMF,EAAO,QAAA,GACjD,UAAAA,EAAO,MAAA,GADaC,CAEvB,CAEH,EAAA,CACH;AAAA,GACF;"}
@@ -1,2 +0,0 @@
1
- "use strict";const n=require("react/jsx-runtime"),s=require("./index-ClQFzqcq.cjs.js"),c=require("dgz-ui/button"),e=require("dgz-ui/dropdown"),u=require("./Spin-DUK1prd9.cjs.js"),x=({options:i,loading:o=!1,triggerProps:t,contentProps:d,title:l})=>n.jsxs(e.DropdownMenu,{children:[n.jsx(e.DropdownMenuTrigger,{asChild:!0,...t,children:n.jsxs(c.Button,{variant:"secondary",size:"sm",className:"ml-auto rounded-lg px-3",children:[o?n.jsx(u.Spin,{}):n.jsx(s.ZC,{})," ",n.jsx("span",{className:"hidden lg:!inline",children:l||"Export"}),n.jsx(s.f1,{})]})}),n.jsx(e.DropdownMenuContent,{align:"end",...d,children:i.map((r,a)=>n.jsx(e.DropdownMenuItem,{onClick:()=>r.onClick(),children:r.label},a))})]});exports.ExportData=x;
2
- //# sourceMappingURL=ExportData-CrB0H1Ts.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExportData-CrB0H1Ts.cjs.js","sources":["../../src/components/export/ExportData.tsx"],"sourcesContent":["import { RiArrowDownSLine, RiFileChartLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport {\n type DropdownContainerProps,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from 'dgz-ui/dropdown';\nimport type { ReactNode } from 'react';\nimport { Spin } from '../loader';\n\n/**\n * Describes a single export option in the ExportData dropdown.\n *\n * - Use `label` to render the visible option content (text or any React node).\n * - Provide `onClick` to trigger the export logic (CSV/XLS/PDF, etc.).\n */\nexport interface ExportDataInterface {\n /** Visible content for the dropdown item (text, icon, etc.). */\n label: ReactNode;\n /** Callback executed when the export option is selected. */\n onClick: () => void;\n}\n\n/**\n * Props for the `ExportData` component.\n *\n * - `options` — A list of export actions displayed in the dropdown.\n * - `loading` — When `true`, shows a small spinner in the button to indicate an export is in progress.\n */\nexport interface ExportDataProps extends DropdownContainerProps {\n /** Export actions displayed in the dropdown. */\n options: ExportDataInterface[];\n /** If `true`, renders a spinner icon in the button. */\n loading?: boolean;\n /** Title for the export button. */\n title?: ReactNode;\n}\n\n/**\n * ExportData renders a compact dropdown button for exporting data in various formats.\n *\n * Behavior\n * - Shows a button with an export icon and localized \"Export\" label.\n * - Clicking opens a dropdown with the provided `options` list.\n * - Each option calls its `onClick` handler when selected.\n *\n * Accessibility\n * - Uses the shared Dropdown primitives and Button which provide keyboard and ARIA support.\n *\n * Internationalization\n * - The button label is translated via `react-i18next` using the `Export` key.\n */\nexport const ExportData = ({\n options,\n loading = false,\n triggerProps,\n contentProps,\n title,\n}: ExportDataProps) => {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild {...triggerProps}>\n <Button\n variant=\"secondary\"\n size={'sm'}\n className={'ml-auto rounded-lg px-3'}\n >\n {loading ? <Spin /> : <RiFileChartLine />}{' '}\n <span className={'hidden lg:!inline'}>{title || 'Export'}</span>\n <RiArrowDownSLine />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" {...contentProps}>\n {options.map((option, index) => {\n return (\n <DropdownMenuItem key={index} onClick={() => option.onClick()}>\n {option.label}\n </DropdownMenuItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"],"names":["ExportData","options","loading","triggerProps","contentProps","title","DropdownMenu","jsx","DropdownMenuTrigger","jsxs","Button","Spin","RiFileChartLine","RiArrowDownSLine","DropdownMenuContent","option","index","DropdownMenuItem"],"mappings":"mLAsDaA,EAAa,CAAC,CACzB,QAAAC,EACA,QAAAC,EAAU,GACV,aAAAC,EACA,aAAAC,EACA,MAAAC,CACF,WAEKC,eAAA,CACC,SAAA,CAAAC,EAAAA,IAACC,EAAAA,oBAAA,CAAoB,QAAO,GAAE,GAAGL,EAC/B,SAAAM,EAAAA,KAACC,EAAAA,OAAA,CACC,QAAQ,YACR,KAAM,KACN,UAAW,0BAEV,SAAA,CAAAR,EAAUK,EAAAA,IAACI,OAAA,CAAA,CAAK,EAAKJ,EAAAA,IAACK,EAAAA,GAAA,EAAgB,EAAI,IAC3CL,EAAAA,IAAC,OAAA,CAAK,UAAW,oBAAsB,YAAS,SAAS,QACxDM,EAAAA,GAAA,CAAA,CAAiB,CAAA,CAAA,CAAA,EAEtB,EACAN,EAAAA,IAACO,EAAAA,oBAAA,CAAoB,MAAM,MAAO,GAAGV,EAClC,SAAAH,EAAQ,IAAI,CAACc,EAAQC,IAElBT,MAACU,EAAAA,kBAA6B,QAAS,IAAMF,EAAO,QAAA,EACjD,SAAAA,EAAO,KAAA,EADaC,CAEvB,CAEH,CAAA,CACH,CAAA,EACF"}
@@ -1,149 +0,0 @@
1
- import { jsxs as l, jsx as s } from "react/jsx-runtime";
2
- import { Button as c } from "dgz-ui/button";
3
- import { Form as R, Input as A } from "dgz-ui/form";
4
- import { Popover as B, PopoverTrigger as O, PopoverContent as C } from "dgz-ui/popover";
5
- import { l as S } from "./lodash-CRDOWzbs.es.js";
6
- import { ListFilterPlusIcon as L, ListFilterIcon as W, ChevronDown as U } from "lucide-react";
7
- import { memo as $, useState as u, useEffect as g, useCallback as x } from "react";
8
- import { u as q } from "./useFilter-C_K_3fQu.es.js";
9
- import { M as G } from "./MyInput-Wb0DSWo_.es.js";
10
- import { M as H } from "./MySelect-D8ML7nhM.es.js";
11
- import { p as J } from "./index-E1NtSoNr.es.js";
12
- import { cn as Q } from "dgz-ui/utils";
13
- import { useTranslation as V } from "react-i18next";
14
- import { K as E } from "./Keyboard-CJVAJWdO.es.js";
15
- const me = $(function({
16
- filters: a,
17
- params: r,
18
- onFilter: t,
19
- onChange: n,
20
- onCancel: f,
21
- triggerProps: i,
22
- contentProps: m,
23
- title: o,
24
- resetText: k,
25
- applyText: I,
26
- ...M
27
- }) {
28
- const [P, z] = u(!1), [T, p] = u(!1), { form: y } = q({ params: r }), { watch: j, handleSubmit: w, control: v, reset: b } = y;
29
- g(() => {
30
- let e = !1;
31
- a.map((K) => {
32
- const d = S.get(r, `${K.name}`);
33
- (Array.isArray(d) ? d.length > 0 : d) && (e = !0), z(e);
34
- });
35
- }, [a, r]);
36
- const N = j();
37
- g(() => {
38
- n == null || n(N);
39
- }, [N, n]);
40
- const D = x(
41
- (e = {}) => {
42
- t == null || t(e), p(!1);
43
- },
44
- [t]
45
- ), F = x(() => {
46
- b(), t && r && t({
47
- ...r,
48
- ...Object.fromEntries(
49
- a.map((e) => [e.name, void 0])
50
- )
51
- }), p(!1);
52
- }, [t, b, r, a]);
53
- return /* @__PURE__ */ l(B, { open: T, onOpenChange: p, children: [
54
- /* @__PURE__ */ s(O, { ...i, children: /* @__PURE__ */ s(
55
- c,
56
- {
57
- asChild: !0,
58
- size: "sm",
59
- variant: "secondary",
60
- className: "ml-auto px-3",
61
- ...M,
62
- children: /* @__PURE__ */ l("div", { className: "flex items-center", children: [
63
- P ? /* @__PURE__ */ s(L, { className: "size-5" }) : /* @__PURE__ */ s(W, { className: "size-5" }),
64
- " ",
65
- /* @__PURE__ */ s("span", { className: "hidden lg:inline!", children: o || "Filter" }),
66
- /* @__PURE__ */ s(U, {})
67
- ] })
68
- }
69
- ) }),
70
- /* @__PURE__ */ s(C, { side: "bottom", align: "end", ...m, children: /* @__PURE__ */ s(R, { ...y, children: /* @__PURE__ */ l("form", { onSubmit: w(D), className: "space-y-4", children: [
71
- /* @__PURE__ */ s("div", { className: "h-full shrink space-y-6 p-1", children: a.map(
72
- (e) => e.options ? /* @__PURE__ */ s(
73
- H,
74
- {
75
- control: v,
76
- name: e.name,
77
- isSearchable: !!e.isSearchable,
78
- placeholder: e.placeholder,
79
- isMulti: e.isMulti,
80
- options: e.options,
81
- label: e.label
82
- },
83
- e.name
84
- ) : /* @__PURE__ */ s(
85
- G,
86
- {
87
- control: v,
88
- placeholder: e.placeholder,
89
- name: e.name,
90
- label: e.label
91
- },
92
- e.name
93
- )
94
- ) }),
95
- /* @__PURE__ */ l("div", { className: "flex shrink-0 justify-end gap-2", children: [
96
- /* @__PURE__ */ s(
97
- c,
98
- {
99
- variant: "destructive",
100
- type: "reset",
101
- size: "sm",
102
- onClick: F,
103
- children: k || "Reset"
104
- }
105
- ),
106
- /* @__PURE__ */ s(c, { type: "submit", size: "sm", children: I || "Apply" })
107
- ] })
108
- ] }) }) })
109
- ] });
110
- }), pe = ({
111
- placeholder: h,
112
- onSearchChange: a,
113
- className: r,
114
- inputProps: t,
115
- ...n
116
- }) => {
117
- const { t: f } = V(), [i, m] = u("");
118
- return /* @__PURE__ */ l("div", { ...n, className: Q("relative w-full", r), children: [
119
- /* @__PURE__ */ s(
120
- A,
121
- {
122
- ...t,
123
- placeholder: h || f("Type text and press Enter"),
124
- onInput: (o) => m(S.get(o, "target.value", "")),
125
- onKeyUp: (o) => {
126
- o.key === E.ENTER && (a(i || void 0), o.stopPropagation(), o.preventDefault());
127
- },
128
- onKeyDown: (o) => {
129
- o.key === E.ENTER && (o.stopPropagation(), o.preventDefault());
130
- }
131
- }
132
- ),
133
- /* @__PURE__ */ s(
134
- c,
135
- {
136
- type: "button",
137
- variant: "ghost",
138
- className: "text-foreground absolute top-0 right-0 cursor-pointer rounded-md bg-transparent!",
139
- onClick: () => a(i),
140
- children: /* @__PURE__ */ s(J, {})
141
- }
142
- )
143
- ] });
144
- };
145
- export {
146
- me as F,
147
- pe as S
148
- };
149
- //# sourceMappingURL=Search-CjVcBFAN.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Search-CjVcBFAN.es.js","sources":["../../src/components/filters/FilterWrapper.tsx","../../src/components/filters/Search.tsx"],"sourcesContent":["import { Button, type ButtonProps } from 'dgz-ui/button';\nimport { Form, type Option } from 'dgz-ui/form';\nimport {\n Popover,\n type PopoverContainerProps,\n PopoverContent,\n PopoverTrigger,\n} from 'dgz-ui/popover';\nimport { get } from 'lodash';\nimport { ChevronDown, ListFilterIcon, ListFilterPlusIcon } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useState } from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport { useFilter } from '../../hooks';\nimport { MyInput, MySelect } from '../form';\n\n/**\n * Interface representing a filter configuration.\n */\nexport interface FilterInterface {\n /** Label for the filter field. */\n label?: ReactNode;\n /** Placeholder text for the input/select. */\n placeholder?: string;\n /** Default value for the filter. */\n value?: string | string[];\n /** Name of the filter field (used as key). */\n name: string;\n /** Whether the filter supports multiple values (for select inputs). */\n isMulti?: boolean;\n /** Whether the filter supports searchable inputs (for select inputs). */\n isSearchable?: boolean;\n /** Options for select inputs. */\n options?: Option[];\n}\n\n/**\n * Props for the FilterWrapper component.\n */\nexport interface FilterWrapperProps\n extends Omit<ButtonProps, 'title'>, PopoverContainerProps {\n /** Array of filter definitions to render. */\n filters: FilterInterface[];\n /** Current active parameters/filters. */\n params?: Record<string, unknown>;\n /** Callback fired when filters are applied. */\n onFilter?: (filters: Record<string, unknown>) => void;\n /** Callback fired when the filter popover is closed/cancelled. */\n onCancel?: () => void;\n /** Callback fired when filter form values change. */\n onChange?: (filters: FieldValues) => void;\n /** Title for the filter button. */\n title?: ReactNode;\n /** Text for the reset button. */\n resetText?: ReactNode;\n /** Text for the apply button. */\n applyText?: ReactNode;\n}\n\n/**\n * FilterWrapper shows a popover with a dynamic list of field filters and emits selected filter values.\n *\n * @param props.filters - Array of filter definitions to render.\n * @param props.params - Current params used to detect active filters.\n * @param props.onFilter - Callback fired when user applies filters.\n * @param props.onCancel - Callback fired on cancel.\n * @param props.onChange - Callback fired whenever filter form values change.\n */\nexport const FilterWrapper = memo(function FilterWrapper({\n filters,\n params,\n onFilter,\n onChange,\n onCancel,\n triggerProps,\n contentProps,\n title,\n resetText,\n applyText,\n ...btnProps\n}: FilterWrapperProps) {\n const [isFiltered, setIsFiltered] = useState(false);\n const [open, setOpen] = useState(false);\n const { form } = useFilter({ params });\n\n const { watch, handleSubmit, control, reset } = form;\n\n useEffect(() => {\n let hasFilter = false;\n filters.map((filter) => {\n const value = get(params, `${filter.name}`);\n if (Array.isArray(value) ? value.length > 0 : Boolean(value)) {\n hasFilter = true;\n }\n\n setIsFiltered(hasFilter);\n });\n }, [filters, params]);\n\n const values = watch();\n\n useEffect(() => {\n onChange?.(values);\n }, [values, onChange]);\n\n const handleFilter = useCallback(\n (data = {}) => {\n onFilter?.(data);\n setOpen(false);\n },\n [onFilter]\n );\n\n const handleReset = useCallback(() => {\n reset();\n if (onFilter && params) {\n onFilter({\n ...params,\n ...Object.fromEntries(\n filters.map((filter) => [filter.name, undefined])\n ),\n });\n }\n setOpen(false);\n }, [onFilter, reset, params, filters]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger {...triggerProps}>\n <Button\n asChild\n size={'sm'}\n variant=\"secondary\"\n className={'ml-auto px-3'}\n {...btnProps}\n >\n <div className={'flex items-center'}>\n {isFiltered ? (\n <ListFilterPlusIcon className={'size-5'} />\n ) : (\n <ListFilterIcon className={'size-5'} />\n )}{' '}\n <span className={'hidden lg:inline!'}>{title || 'Filter'}</span>\n <ChevronDown />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent side={'bottom'} align={'end'} {...contentProps}>\n <Form {...form}>\n <form onSubmit={handleSubmit(handleFilter)} className={'space-y-4'}>\n <div className={'h-full shrink space-y-6 p-1'}>\n {filters.map((filter) =>\n filter.options ? (\n <MySelect\n key={filter.name}\n control={control}\n name={filter.name}\n isSearchable={Boolean(filter.isSearchable)}\n placeholder={filter.placeholder}\n isMulti={filter.isMulti}\n options={filter.options}\n label={filter.label}\n />\n ) : (\n <MyInput\n key={filter.name}\n control={control}\n placeholder={filter.placeholder}\n name={filter.name}\n label={filter.label}\n />\n )\n )}\n </div>\n <div className={'flex shrink-0 justify-end gap-2'}>\n <Button\n variant={'destructive'}\n type=\"reset\"\n size={'sm'}\n onClick={handleReset}\n >\n {resetText || 'Reset'}\n </Button>\n <Button type=\"submit\" size={'sm'}>\n {applyText || 'Apply'}\n </Button>\n </div>\n </form>\n </Form>\n </PopoverContent>\n </Popover>\n );\n});\n","import { RiSearchLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport type { CardProps } from 'dgz-ui/card';\nimport { Input, type InputProps } from 'dgz-ui/form';\nimport { cn } from 'dgz-ui/utils';\nimport { get } from 'lodash';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Keyboard } from '../../enums';\n\n/**\n * Props for the Search component.\n */\nexport type SearchProps = Omit<CardProps, 'title'> & {\n /** Custom placeholder text for the input. */\n placeholder?: string;\n /** Callback fired when the search is triggered. */\n onSearchChange: (search?: string) => void;\n inputProps?: InputProps;\n};\n\n/**\n * Search input with a submit button that triggers a search action.\n *\n * This component renders a search input field and a search button. The search\n * is triggered when the user presses Enter or clicks the button. The search\n * value is then passed to the `onSearchChange` callback.\n *\n * @param {SearchProps} props - The props for the component.\n * @param {string} [props.placeholder] - Optional placeholder text for the input field.\n * @param {Function} props.onSearchChange - Callback function that is called when a search is performed.\n * @param {string} [props.className] - Optional class name for the component.\n * @param {InputProps} [props.inputProps] - Optional props to pass to the underlying Input component.\n */\nexport const Search = ({\n placeholder,\n onSearchChange,\n className,\n inputProps,\n ...props\n}: SearchProps) => {\n const { t } = useTranslation();\n const [search, setSearch] = useState('');\n\n return (\n <div {...props} className={cn('relative w-full', className)}>\n <Input\n {...inputProps}\n placeholder={placeholder || t('Type text and press Enter')}\n onInput={(evt) => setSearch(get(evt, 'target.value', ''))}\n onKeyUp={(evt) => {\n if (evt.key === Keyboard.ENTER) {\n onSearchChange(search || undefined);\n evt.stopPropagation();\n evt.preventDefault();\n }\n }}\n onKeyDown={(event) => {\n if (event.key === Keyboard.ENTER) {\n event.stopPropagation();\n event.preventDefault();\n }\n }}\n />\n <Button\n type={'button'}\n variant={'ghost'}\n className={\n 'text-foreground absolute top-0 right-0 cursor-pointer rounded-md bg-transparent!'\n }\n onClick={() => onSearchChange(search)}\n >\n <RiSearchLine />\n </Button>\n </div>\n );\n};\n"],"names":["FilterWrapper","memo","filters","params","onFilter","onChange","onCancel","triggerProps","contentProps","title","resetText","applyText","btnProps","isFiltered","setIsFiltered","useState","open","setOpen","form","useFilter","watch","handleSubmit","control","reset","useEffect","hasFilter","filter","value","get","values","handleFilter","useCallback","data","handleReset","jsxs","Popover","jsx","PopoverTrigger","Button","ListFilterPlusIcon","ListFilterIcon","ChevronDown","PopoverContent","Form","MySelect","MyInput","Search","placeholder","onSearchChange","className","inputProps","props","t","useTranslation","search","setSearch","cn","Input","evt","Keyboard","event","RiSearchLine"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";const e=require("react/jsx-runtime"),i=require("dgz-ui/button"),N=require("dgz-ui/form"),h=require("dgz-ui/popover"),S=require("./lodash-BjH0kD7j.cjs.js"),m=require("lucide-react"),o=require("react"),T=require("./useFilter-CsOF1_hM.cjs.js"),w=require("./MyInput-C9PNyYby.cjs.js"),D=require("./MySelect-Ovb1pK5c.cjs.js"),A=require("./index-ClQFzqcq.cjs.js"),C=require("dgz-ui/utils"),O=require("react-i18next"),f=require("./Keyboard-kyPAAQWP.cjs.js"),W=o.memo(function({filters:r,params:a,onFilter:n,onChange:c,onCancel:j,triggerProps:l,contentProps:u,title:t,resetText:g,applyText:E,...k}){const[I,B]=o.useState(!1),[M,d]=o.useState(!1),{form:y}=T.useFilter({params:a}),{watch:P,handleSubmit:R,control:b,reset:v}=y;o.useEffect(()=>{let s=!1;r.map(K=>{const p=S.lodashExports.get(a,`${K.name}`);(Array.isArray(p)?p.length>0:p)&&(s=!0),B(s)})},[r,a]);const q=P();o.useEffect(()=>{c==null||c(q)},[q,c]);const z=o.useCallback((s={})=>{n==null||n(s),d(!1)},[n]),F=o.useCallback(()=>{v(),n&&a&&n({...a,...Object.fromEntries(r.map(s=>[s.name,void 0]))}),d(!1)},[n,v,a,r]);return e.jsxs(h.Popover,{open:M,onOpenChange:d,children:[e.jsx(h.PopoverTrigger,{...l,children:e.jsx(i.Button,{asChild:!0,size:"sm",variant:"secondary",className:"ml-auto px-3",...k,children:e.jsxs("div",{className:"flex items-center",children:[I?e.jsx(m.ListFilterPlusIcon,{className:"size-5"}):e.jsx(m.ListFilterIcon,{className:"size-5"})," ",e.jsx("span",{className:"hidden lg:inline!",children:t||"Filter"}),e.jsx(m.ChevronDown,{})]})})}),e.jsx(h.PopoverContent,{side:"bottom",align:"end",...u,children:e.jsx(N.Form,{...y,children:e.jsxs("form",{onSubmit:R(z),className:"space-y-4",children:[e.jsx("div",{className:"h-full shrink space-y-6 p-1",children:r.map(s=>s.options?e.jsx(D.MySelect,{control:b,name:s.name,isSearchable:!!s.isSearchable,placeholder:s.placeholder,isMulti:s.isMulti,options:s.options,label:s.label},s.name):e.jsx(w.MyInput,{control:b,placeholder:s.placeholder,name:s.name,label:s.label},s.name))}),e.jsxs("div",{className:"flex shrink-0 justify-end gap-2",children:[e.jsx(i.Button,{variant:"destructive",type:"reset",size:"sm",onClick:F,children:g||"Reset"}),e.jsx(i.Button,{type:"submit",size:"sm",children:E||"Apply"})]})]})})})]})}),$=({placeholder:x,onSearchChange:r,className:a,inputProps:n,...c})=>{const{t:j}=O.useTranslation(),[l,u]=o.useState("");return e.jsxs("div",{...c,className:C.cn("relative w-full",a),children:[e.jsx(N.Input,{...n,placeholder:x||j("Type text and press Enter"),onInput:t=>u(S.lodashExports.get(t,"target.value","")),onKeyUp:t=>{t.key===f.Keyboard.ENTER&&(r(l||void 0),t.stopPropagation(),t.preventDefault())},onKeyDown:t=>{t.key===f.Keyboard.ENTER&&(t.stopPropagation(),t.preventDefault())}}),e.jsx(i.Button,{type:"button",variant:"ghost",className:"text-foreground absolute top-0 right-0 cursor-pointer rounded-md bg-transparent!",onClick:()=>r(l),children:e.jsx(A.pv,{})})]})};exports.FilterWrapper=W;exports.Search=$;
2
- //# sourceMappingURL=Search-hHeGlXqd.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Search-hHeGlXqd.cjs.js","sources":["../../src/components/filters/FilterWrapper.tsx","../../src/components/filters/Search.tsx"],"sourcesContent":["import { Button, type ButtonProps } from 'dgz-ui/button';\nimport { Form, type Option } from 'dgz-ui/form';\nimport {\n Popover,\n type PopoverContainerProps,\n PopoverContent,\n PopoverTrigger,\n} from 'dgz-ui/popover';\nimport { get } from 'lodash';\nimport { ChevronDown, ListFilterIcon, ListFilterPlusIcon } from 'lucide-react';\nimport { memo, type ReactNode, useCallback, useEffect, useState } from 'react';\nimport type { FieldValues } from 'react-hook-form';\nimport { useFilter } from '../../hooks';\nimport { MyInput, MySelect } from '../form';\n\n/**\n * Interface representing a filter configuration.\n */\nexport interface FilterInterface {\n /** Label for the filter field. */\n label?: ReactNode;\n /** Placeholder text for the input/select. */\n placeholder?: string;\n /** Default value for the filter. */\n value?: string | string[];\n /** Name of the filter field (used as key). */\n name: string;\n /** Whether the filter supports multiple values (for select inputs). */\n isMulti?: boolean;\n /** Whether the filter supports searchable inputs (for select inputs). */\n isSearchable?: boolean;\n /** Options for select inputs. */\n options?: Option[];\n}\n\n/**\n * Props for the FilterWrapper component.\n */\nexport interface FilterWrapperProps\n extends Omit<ButtonProps, 'title'>, PopoverContainerProps {\n /** Array of filter definitions to render. */\n filters: FilterInterface[];\n /** Current active parameters/filters. */\n params?: Record<string, unknown>;\n /** Callback fired when filters are applied. */\n onFilter?: (filters: Record<string, unknown>) => void;\n /** Callback fired when the filter popover is closed/cancelled. */\n onCancel?: () => void;\n /** Callback fired when filter form values change. */\n onChange?: (filters: FieldValues) => void;\n /** Title for the filter button. */\n title?: ReactNode;\n /** Text for the reset button. */\n resetText?: ReactNode;\n /** Text for the apply button. */\n applyText?: ReactNode;\n}\n\n/**\n * FilterWrapper shows a popover with a dynamic list of field filters and emits selected filter values.\n *\n * @param props.filters - Array of filter definitions to render.\n * @param props.params - Current params used to detect active filters.\n * @param props.onFilter - Callback fired when user applies filters.\n * @param props.onCancel - Callback fired on cancel.\n * @param props.onChange - Callback fired whenever filter form values change.\n */\nexport const FilterWrapper = memo(function FilterWrapper({\n filters,\n params,\n onFilter,\n onChange,\n onCancel,\n triggerProps,\n contentProps,\n title,\n resetText,\n applyText,\n ...btnProps\n}: FilterWrapperProps) {\n const [isFiltered, setIsFiltered] = useState(false);\n const [open, setOpen] = useState(false);\n const { form } = useFilter({ params });\n\n const { watch, handleSubmit, control, reset } = form;\n\n useEffect(() => {\n let hasFilter = false;\n filters.map((filter) => {\n const value = get(params, `${filter.name}`);\n if (Array.isArray(value) ? value.length > 0 : Boolean(value)) {\n hasFilter = true;\n }\n\n setIsFiltered(hasFilter);\n });\n }, [filters, params]);\n\n const values = watch();\n\n useEffect(() => {\n onChange?.(values);\n }, [values, onChange]);\n\n const handleFilter = useCallback(\n (data = {}) => {\n onFilter?.(data);\n setOpen(false);\n },\n [onFilter]\n );\n\n const handleReset = useCallback(() => {\n reset();\n if (onFilter && params) {\n onFilter({\n ...params,\n ...Object.fromEntries(\n filters.map((filter) => [filter.name, undefined])\n ),\n });\n }\n setOpen(false);\n }, [onFilter, reset, params, filters]);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger {...triggerProps}>\n <Button\n asChild\n size={'sm'}\n variant=\"secondary\"\n className={'ml-auto px-3'}\n {...btnProps}\n >\n <div className={'flex items-center'}>\n {isFiltered ? (\n <ListFilterPlusIcon className={'size-5'} />\n ) : (\n <ListFilterIcon className={'size-5'} />\n )}{' '}\n <span className={'hidden lg:inline!'}>{title || 'Filter'}</span>\n <ChevronDown />\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent side={'bottom'} align={'end'} {...contentProps}>\n <Form {...form}>\n <form onSubmit={handleSubmit(handleFilter)} className={'space-y-4'}>\n <div className={'h-full shrink space-y-6 p-1'}>\n {filters.map((filter) =>\n filter.options ? (\n <MySelect\n key={filter.name}\n control={control}\n name={filter.name}\n isSearchable={Boolean(filter.isSearchable)}\n placeholder={filter.placeholder}\n isMulti={filter.isMulti}\n options={filter.options}\n label={filter.label}\n />\n ) : (\n <MyInput\n key={filter.name}\n control={control}\n placeholder={filter.placeholder}\n name={filter.name}\n label={filter.label}\n />\n )\n )}\n </div>\n <div className={'flex shrink-0 justify-end gap-2'}>\n <Button\n variant={'destructive'}\n type=\"reset\"\n size={'sm'}\n onClick={handleReset}\n >\n {resetText || 'Reset'}\n </Button>\n <Button type=\"submit\" size={'sm'}>\n {applyText || 'Apply'}\n </Button>\n </div>\n </form>\n </Form>\n </PopoverContent>\n </Popover>\n );\n});\n","import { RiSearchLine } from '@remixicon/react';\nimport { Button } from 'dgz-ui/button';\nimport type { CardProps } from 'dgz-ui/card';\nimport { Input, type InputProps } from 'dgz-ui/form';\nimport { cn } from 'dgz-ui/utils';\nimport { get } from 'lodash';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Keyboard } from '../../enums';\n\n/**\n * Props for the Search component.\n */\nexport type SearchProps = Omit<CardProps, 'title'> & {\n /** Custom placeholder text for the input. */\n placeholder?: string;\n /** Callback fired when the search is triggered. */\n onSearchChange: (search?: string) => void;\n inputProps?: InputProps;\n};\n\n/**\n * Search input with a submit button that triggers a search action.\n *\n * This component renders a search input field and a search button. The search\n * is triggered when the user presses Enter or clicks the button. The search\n * value is then passed to the `onSearchChange` callback.\n *\n * @param {SearchProps} props - The props for the component.\n * @param {string} [props.placeholder] - Optional placeholder text for the input field.\n * @param {Function} props.onSearchChange - Callback function that is called when a search is performed.\n * @param {string} [props.className] - Optional class name for the component.\n * @param {InputProps} [props.inputProps] - Optional props to pass to the underlying Input component.\n */\nexport const Search = ({\n placeholder,\n onSearchChange,\n className,\n inputProps,\n ...props\n}: SearchProps) => {\n const { t } = useTranslation();\n const [search, setSearch] = useState('');\n\n return (\n <div {...props} className={cn('relative w-full', className)}>\n <Input\n {...inputProps}\n placeholder={placeholder || t('Type text and press Enter')}\n onInput={(evt) => setSearch(get(evt, 'target.value', ''))}\n onKeyUp={(evt) => {\n if (evt.key === Keyboard.ENTER) {\n onSearchChange(search || undefined);\n evt.stopPropagation();\n evt.preventDefault();\n }\n }}\n onKeyDown={(event) => {\n if (event.key === Keyboard.ENTER) {\n event.stopPropagation();\n event.preventDefault();\n }\n }}\n />\n <Button\n type={'button'}\n variant={'ghost'}\n className={\n 'text-foreground absolute top-0 right-0 cursor-pointer rounded-md bg-transparent!'\n }\n onClick={() => onSearchChange(search)}\n >\n <RiSearchLine />\n </Button>\n </div>\n );\n};\n"],"names":["FilterWrapper","memo","filters","params","onFilter","onChange","onCancel","triggerProps","contentProps","title","resetText","applyText","btnProps","isFiltered","setIsFiltered","useState","open","setOpen","form","useFilter","watch","handleSubmit","control","reset","useEffect","hasFilter","filter","value","get","values","handleFilter","useCallback","data","handleReset","jsxs","Popover","jsx","PopoverTrigger","Button","ListFilterPlusIcon","ListFilterIcon","ChevronDown","PopoverContent","Form","MySelect","MyInput","Search","placeholder","onSearchChange","className","inputProps","props","t","useTranslation","search","setSearch","cn","Input","evt","Keyboard","event","RiSearchLine"],"mappings":"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"}