@gbmtech/aurora-ui 0.4.31 → 0.4.33

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 (87) hide show
  1. package/dist/cjs/components/button.cjs +1 -1
  2. package/dist/cjs/components/button.cjs.map +1 -1
  3. package/dist/cjs/components/button.d.ts +6 -3
  4. package/dist/cjs/components/button.d.ts.map +1 -1
  5. package/dist/cjs/components/combobox.cjs +1 -1
  6. package/dist/cjs/components/combobox.cjs.map +1 -1
  7. package/dist/cjs/components/combobox.d.ts.map +1 -1
  8. package/dist/cjs/components/data-table/data-table-action-bar.cjs +1 -1
  9. package/dist/cjs/components/data-table/data-table-action-bar.cjs.map +1 -1
  10. package/dist/cjs/components/data-table/data-table-date-filter.cjs +1 -1
  11. package/dist/cjs/components/data-table/data-table-date-filter.cjs.map +1 -1
  12. package/dist/cjs/components/data-table/data-table-faceted-filter.cjs +1 -1
  13. package/dist/cjs/components/data-table/data-table-faceted-filter.cjs.map +1 -1
  14. package/dist/cjs/components/data-table/data-table-filter-list.cjs +1 -1
  15. package/dist/cjs/components/data-table/data-table-filter-list.cjs.map +1 -1
  16. package/dist/cjs/components/data-table/data-table-pagination.cjs +1 -1
  17. package/dist/cjs/components/data-table/data-table-pagination.cjs.map +1 -1
  18. package/dist/cjs/components/data-table/data-table-sort-list.cjs +1 -1
  19. package/dist/cjs/components/data-table/data-table-sort-list.cjs.map +1 -1
  20. package/dist/cjs/components/data-table/data-table-toolbar.cjs +1 -1
  21. package/dist/cjs/components/data-table/data-table-toolbar.cjs.map +1 -1
  22. package/dist/cjs/components/data-table/data-table-view-options.cjs +1 -1
  23. package/dist/cjs/components/data-table/data-table-view-options.cjs.map +1 -1
  24. package/dist/cjs/components/data-table/index.cjs +1 -1
  25. package/dist/cjs/components/data-table/index.cjs.map +1 -1
  26. package/dist/cjs/components/date-picker-with-range.cjs +1 -1
  27. package/dist/cjs/components/date-picker-with-range.cjs.map +1 -1
  28. package/dist/cjs/components/date-picker.cjs +1 -1
  29. package/dist/cjs/components/date-picker.cjs.map +1 -1
  30. package/dist/cjs/components/date-time-picker-with-range.cjs +1 -1
  31. package/dist/cjs/components/date-time-picker-with-range.cjs.map +1 -1
  32. package/dist/cjs/components/datetime-picker/datetime-picker.cjs +1 -1
  33. package/dist/cjs/components/datetime-picker/datetime-picker.cjs.map +1 -1
  34. package/dist/cjs/components/datetime-picker/datetime-picker.d.ts.map +1 -1
  35. package/dist/cjs/components/select.cjs +1 -1
  36. package/dist/cjs/components/select.cjs.map +1 -1
  37. package/dist/cjs/components/select.d.ts +11 -13
  38. package/dist/cjs/components/select.d.ts.map +1 -1
  39. package/dist/cjs/components/sheet/sheet.cjs +1 -1
  40. package/dist/cjs/components/sheet/sheet.cjs.map +1 -1
  41. package/dist/cjs/components/sheet/sheet.d.ts.map +1 -1
  42. package/dist/cjs/components/theme-toggle.cjs +1 -1
  43. package/dist/cjs/components/theme-toggle.cjs.map +1 -1
  44. package/dist/esm/components/button.d.ts +6 -3
  45. package/dist/esm/components/button.d.ts.map +1 -1
  46. package/dist/esm/components/button.js +1 -1
  47. package/dist/esm/components/button.js.map +1 -1
  48. package/dist/esm/components/combobox.d.ts.map +1 -1
  49. package/dist/esm/components/combobox.js +1 -1
  50. package/dist/esm/components/combobox.js.map +1 -1
  51. package/dist/esm/components/data-table/data-table-action-bar.js +1 -1
  52. package/dist/esm/components/data-table/data-table-action-bar.js.map +1 -1
  53. package/dist/esm/components/data-table/data-table-date-filter.js +1 -1
  54. package/dist/esm/components/data-table/data-table-date-filter.js.map +1 -1
  55. package/dist/esm/components/data-table/data-table-faceted-filter.js +1 -1
  56. package/dist/esm/components/data-table/data-table-faceted-filter.js.map +1 -1
  57. package/dist/esm/components/data-table/data-table-filter-list.js +1 -1
  58. package/dist/esm/components/data-table/data-table-filter-list.js.map +1 -1
  59. package/dist/esm/components/data-table/data-table-pagination.js +1 -1
  60. package/dist/esm/components/data-table/data-table-pagination.js.map +1 -1
  61. package/dist/esm/components/data-table/data-table-sort-list.js +1 -1
  62. package/dist/esm/components/data-table/data-table-sort-list.js.map +1 -1
  63. package/dist/esm/components/data-table/data-table-toolbar.js +1 -1
  64. package/dist/esm/components/data-table/data-table-toolbar.js.map +1 -1
  65. package/dist/esm/components/data-table/data-table-view-options.js +1 -1
  66. package/dist/esm/components/data-table/data-table-view-options.js.map +1 -1
  67. package/dist/esm/components/date-picker-with-range.js +1 -1
  68. package/dist/esm/components/date-picker-with-range.js.map +1 -1
  69. package/dist/esm/components/date-picker.js +1 -1
  70. package/dist/esm/components/date-picker.js.map +1 -1
  71. package/dist/esm/components/date-time-picker-with-range.js +1 -1
  72. package/dist/esm/components/date-time-picker-with-range.js.map +1 -1
  73. package/dist/esm/components/datetime-picker/datetime-picker.d.ts.map +1 -1
  74. package/dist/esm/components/datetime-picker/datetime-picker.js +1 -1
  75. package/dist/esm/components/datetime-picker/datetime-picker.js.map +1 -1
  76. package/dist/esm/components/select.d.ts +11 -13
  77. package/dist/esm/components/select.d.ts.map +1 -1
  78. package/dist/esm/components/select.js +1 -1
  79. package/dist/esm/components/select.js.map +1 -1
  80. package/dist/esm/components/sheet/sheet.d.ts.map +1 -1
  81. package/dist/esm/components/sheet/sheet.js +1 -1
  82. package/dist/esm/components/sheet/sheet.js.map +1 -1
  83. package/dist/esm/components/theme-toggle.js +1 -1
  84. package/dist/esm/components/theme-toggle.js.map +1 -1
  85. package/dist/esm/lib/index.js +1 -1
  86. package/dist/styles/index.css +2 -0
  87. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import*as e from"react/jsx-runtime";import*as r from"@radix-ui/react-slot";import*as t from"../lib/utils.js";import*as i from"./spinner.js";let n=(0,t.tv)({base:"cursor-pointer flex rounded-md items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 max-lg:text-sm",variants:{variant:{primary:"bg-primary text-primary-foreground hover:bg-primary/90",secondary:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",tertiary:"border border-input bg-white text-primary hover:bg-accent",outline:"border border-primary bg-white text-primary hover:bg-primary hover:text-white",ghost:"hover:bg-accent hover:text-accent-foreground",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",link:"text-foreground underline-offset-4 hover:underline"},size:{xs:"h-8 gap-1 px-2.5 rounded text-xs",sm:"h-10 gap-1.5 px-4 text-sm",md:"h-12 gap-4 px-6 py-2",lg:"h-14 gap-6 px-8",icon:"h-9 w-9"},rounded:{true:"rounded-full"},loading:{true:"pointer-events-none",false:""}},defaultVariants:{variant:"primary",size:"md",rounded:!1,loading:!1}});function o({children:o,className:a,disabled:s,loaderPosition:d,loading:u,prefix:p,size:c,spinner:l,suffix:b,variant:g,asChild:m,rounded:x,...v}){let f=m?r.Slot:"button";return(0,e.jsxs)(f,{className:(0,t.cn)(n({variant:g,size:c,rounded:x,loading:u,className:a})),"data-slot":"button","data-variant":g,disabled:u||s,type:"button",...v,children:[u&&"prefix"===d?l||(0,e.jsx)(i.Spinner,{}):p,(0,e.jsx)(r.Slottable,{children:u&&!d?(0,e.jsx)(i.Spinner,{}):o}),u&&"suffix"===d?l||(0,e.jsx)(i.Spinner,{}):b]})}o.displayName="Button";export{o as Button,n as buttonVariants};
1
+ import*as e from"react/jsx-runtime";import*as r from"@radix-ui/react-slot";import*as t from"../lib/utils.js";import*as n from"./spinner.js";let i=(0,t.tv)({base:"cursor-pointer flex rounded-md items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 max-lg:text-sm",variants:{variant:{primary:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",tertiary:"border bg-background shadow-xs hover:bg-accent text-primary dark:bg-input/30 dark:border-input dark:hover:bg-input/50",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{xxs:"h-7 text-[0.8125rem] gap-1 px-2 rounded",xs:"h-8 gap-1 px-2.5 text-xs",sm:"h-9 gap-1.5 px-4 text-sm",md:"h-10 gap-4 px-6 py-2",lg:"h-11 gap-6 px-8",icon:"size-10"},rounded:{true:"rounded-full"},loading:{true:"pointer-events-none",false:""}},defaultVariants:{variant:"primary",size:"md",rounded:!1,loading:!1}});function o({children:o,className:a,disabled:s,loaderPosition:d,loading:u,prefix:c,size:p,spinner:b,suffix:g,variant:x,asChild:l,rounded:v,...m}){let h=l?r.Slot:"button";return(0,e.jsxs)(h,{className:(0,t.cn)(i({variant:x,size:p,rounded:v,loading:u,className:a})),"data-slot":"button","data-variant":x,disabled:u||s,type:"button",...m,children:[u&&"prefix"===d?b||(0,e.jsx)(n.Spinner,{}):c,(0,e.jsx)(r.Slottable,{children:u&&!d?(0,e.jsx)(n.Spinner,{}):o}),u&&"suffix"===d?b||(0,e.jsx)(n.Spinner,{}):g]})}o.displayName="Button";export{o as Button,i as buttonVariants};
2
2
  //# sourceMappingURL=button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components\\button.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/button.tsx"],"sourcesContent":["import { Slot, Slottable } from '@radix-ui/react-slot'\r\nimport { ComponentProps, JSX, ReactNode } from 'react'\r\n\r\nimport type { VariantProps } from '../lib/utils'\r\n\r\nimport { cn, tv } from '@/lib/utils'\r\nimport { Spinner } from './spinner'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Variant: Button\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst buttonVariants = tv({\r\n base: 'cursor-pointer flex rounded-md items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 max-lg:text-sm',\r\n variants: {\r\n variant: {\r\n primary: 'bg-primary text-primary-foreground hover:bg-primary/90',\r\n secondary:\r\n 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\r\n tertiary: 'border border-input bg-white text-primary hover:bg-accent',\r\n outline:\r\n 'border border-primary bg-white text-primary hover:bg-primary hover:text-white',\r\n ghost: 'hover:bg-accent hover:text-accent-foreground',\r\n destructive:\r\n 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\r\n link: 'text-foreground underline-offset-4 hover:underline',\r\n },\r\n size: {\r\n xs: 'h-8 gap-1 px-2.5 rounded text-xs',\r\n sm: 'h-10 gap-1.5 px-4 text-sm',\r\n md: 'h-12 gap-4 px-6 py-2',\r\n lg: 'h-14 gap-6 px-8',\r\n icon: 'h-9 w-9',\r\n },\r\n rounded: {\r\n true: 'rounded-full',\r\n },\r\n loading: {\r\n true: 'pointer-events-none',\r\n false: '',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'primary',\r\n size: 'md',\r\n rounded: false,\r\n loading: false,\r\n },\r\n})\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Button\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport type ButtonProps = ComponentProps<'button'> &\r\n VariantProps<typeof buttonVariants> & {\r\n asChild?: boolean\r\n }\r\n\r\nfunction Button({\r\n children,\r\n className,\r\n disabled,\r\n loaderPosition,\r\n loading,\r\n prefix,\r\n size,\r\n spinner,\r\n suffix,\r\n variant,\r\n asChild,\r\n rounded,\r\n ...props\r\n}: Omit<ComponentProps<'button'>, 'prefix'> &\r\n VariantProps<typeof buttonVariants> & {\r\n loaderPosition?: 'prefix' | 'suffix'\r\n loading?: boolean\r\n prefix?: ReactNode\r\n spinner?: ReactNode\r\n suffix?: ReactNode\r\n asChild?: boolean\r\n rounded?: boolean\r\n }): JSX.Element {\r\n const Comp = asChild ? Slot : 'button'\r\n\r\n return (\r\n <Comp\r\n className={cn(\r\n buttonVariants({ variant, size, rounded, loading, className })\r\n )}\r\n data-slot=\"button\"\r\n data-variant={variant}\r\n disabled={loading || disabled}\r\n type=\"button\"\r\n {...props}\r\n >\r\n {loading && loaderPosition === 'prefix' ? spinner || <Spinner /> : prefix}\r\n <Slottable>\r\n {loading && !loaderPosition ? <Spinner /> : children}\r\n </Slottable>\r\n {loading && loaderPosition === 'suffix' ? spinner || <Spinner /> : suffix}\r\n </Comp>\r\n )\r\n}\r\nButton.displayName = 'Button'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport { Button, buttonVariants }\r\n"],"names":["buttonVariants","tv","Button","children","className","disabled","loaderPosition","loading","prefix","size","spinner","suffix","variant","asChild","rounded","props","Comp","Slot","cn","Spinner","Slottable"],"mappings":"4IAYA,IAAMA,EAAiBC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,CACxB,KAAM,qPACN,SAAU,CACR,QAAS,CACP,QAAS,yDACT,UACE,iFACF,SAAU,4DACV,QACE,gFACF,MAAO,+CACP,YACE,8JACF,KAAM,oDACR,EACA,KAAM,CACJ,GAAI,mCACJ,GAAI,4BACJ,GAAI,uBACJ,GAAI,kBACJ,KAAM,SACR,EACA,QAAS,CACP,KAAM,cACR,EACA,QAAS,CACP,KAAM,sBACN,MAAO,EACT,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,KACN,QAAS,GACT,QAAS,EACX,CACF,GAWA,SAASC,EAAO,CACdC,SAAAA,CAAQ,CACRC,UAAAA,CAAS,CACTC,SAAAA,CAAQ,CACRC,eAAAA,CAAc,CACdC,QAAAA,CAAO,CACPC,OAAAA,CAAM,CACNC,KAAAA,CAAI,CACJC,QAAAA,CAAO,CACPC,OAAAA,CAAM,CACNC,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACP,GAAGC,EAUF,EACD,IAAMC,EAAOH,EAAUI,EAAAA,IAAIA,CAAG,SAE9B,MACE,WAACD,EAAAA,CACC,UAAWE,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACTlB,EAAe,CAAEY,QAAAA,EAASH,KAAAA,EAAMK,QAAAA,EAASP,QAAAA,EAASH,UAAAA,CAAU,IAE9D,YAAU,SACV,eAAcQ,EACd,SAAUL,GAAWF,EACrB,KAAK,SACJ,GAAGU,CAAK,C,UAERR,GAAWD,AAAmB,WAAnBA,EAA8BI,GAAW,UAACS,EAAAA,OAAOA,CAAAA,CAAAA,GAAMX,EACnE,UAACY,EAAAA,SAASA,CAAAA,C,SACPb,GAAW,CAACD,EAAiB,UAACa,EAAAA,OAAOA,CAAAA,CAAAA,GAAMhB,C,GAE7CI,GAAWD,AAAmB,WAAnBA,EAA8BI,GAAW,UAACS,EAAAA,OAAOA,CAAAA,CAAAA,GAAMR,E,EAGzE,CACAT,EAAO,WAAW,CAAG,gB"}
1
+ {"version":3,"file":"components\\button.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/button.tsx"],"sourcesContent":["import { Slot, Slottable } from '@radix-ui/react-slot'\r\nimport { ComponentProps, JSX, ReactNode } from 'react'\r\n\r\nimport type { VariantProps } from '../lib/utils'\r\n\r\nimport { cn, tv } from '@/lib/utils'\r\nimport { Spinner } from './spinner'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Variant: Button\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst buttonVariants = tv({\r\n base: 'cursor-pointer flex rounded-md items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 max-lg:text-sm',\r\n variants: {\r\n variant: {\r\n primary:\r\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\r\n secondary:\r\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\r\n tertiary:\r\n \"border bg-background shadow-xs hover:bg-accent text-primary dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\r\n destructive:\r\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\r\n outline:\r\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\r\n ghost:\r\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\r\n link: \"text-primary underline-offset-4 hover:underline\",\r\n },\r\n size: {\r\n xxs: 'h-7 text-[0.8125rem] gap-1 px-2 rounded',\r\n xs: 'h-8 gap-1 px-2.5 text-xs',\r\n sm: 'h-9 gap-1.5 px-4 text-sm',\r\n md: 'h-10 gap-4 px-6 py-2',\r\n lg: 'h-11 gap-6 px-8',\r\n icon: 'size-10',\r\n },\r\n rounded: {\r\n true: 'rounded-full',\r\n },\r\n loading: {\r\n true: 'pointer-events-none',\r\n false: '',\r\n },\r\n },\r\n defaultVariants: {\r\n variant: 'primary',\r\n size: 'md',\r\n rounded: false,\r\n loading: false,\r\n },\r\n})\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Button\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport type ButtonProps = ComponentProps<'button'> &\r\n VariantProps<typeof buttonVariants> & {\r\n asChild?: boolean\r\n }\r\n\r\nfunction Button({\r\n children,\r\n className,\r\n disabled,\r\n loaderPosition,\r\n loading,\r\n prefix,\r\n size,\r\n spinner,\r\n suffix,\r\n variant,\r\n asChild,\r\n rounded,\r\n ...props\r\n}: Omit<ComponentProps<'button'>, 'prefix'> &\r\n VariantProps<typeof buttonVariants> & {\r\n loaderPosition?: 'prefix' | 'suffix'\r\n loading?: boolean\r\n prefix?: ReactNode\r\n spinner?: ReactNode\r\n suffix?: ReactNode\r\n asChild?: boolean\r\n rounded?: boolean\r\n }): JSX.Element {\r\n const Comp = asChild ? Slot : 'button'\r\n\r\n return (\r\n <Comp\r\n className={cn(\r\n buttonVariants({ variant, size, rounded, loading, className })\r\n )}\r\n data-slot=\"button\"\r\n data-variant={variant}\r\n disabled={loading || disabled}\r\n type=\"button\"\r\n {...props}\r\n >\r\n {loading && loaderPosition === 'prefix' ? spinner || <Spinner /> : prefix}\r\n <Slottable>\r\n {loading && !loaderPosition ? <Spinner /> : children}\r\n </Slottable>\r\n {loading && loaderPosition === 'suffix' ? spinner || <Spinner /> : suffix}\r\n </Comp>\r\n )\r\n}\r\nButton.displayName = 'Button'\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport { Button, buttonVariants }\r\n"],"names":["buttonVariants","tv","Button","children","className","disabled","loaderPosition","loading","prefix","size","spinner","suffix","variant","asChild","rounded","props","Comp","Slot","cn","Spinner","Slottable"],"mappings":"4IAYA,IAAMA,EAAiBC,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EAAG,CACxB,KAAM,qPACN,SAAU,CACR,QAAS,CACP,QACE,mEACF,UACI,yEACJ,SACE,wHACF,YACE,8JACF,QACE,wIACF,MACE,uEACF,KAAM,iDACV,EACE,KAAM,CACJ,IAAK,0CACL,GAAI,2BACJ,GAAI,2BACJ,GAAI,uBACJ,GAAI,kBACJ,KAAM,SACR,EACA,QAAS,CACP,KAAM,cACR,EACA,QAAS,CACP,KAAM,sBACN,MAAO,EACT,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,KACN,QAAS,GACT,QAAS,EACX,CACF,GAWA,SAASC,EAAO,CACdC,SAAAA,CAAQ,CACRC,UAAAA,CAAS,CACTC,SAAAA,CAAQ,CACRC,eAAAA,CAAc,CACdC,QAAAA,CAAO,CACPC,OAAAA,CAAM,CACNC,KAAAA,CAAI,CACJC,QAAAA,CAAO,CACPC,OAAAA,CAAM,CACNC,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACPC,QAAAA,CAAO,CACP,GAAGC,EAUF,EACD,IAAMC,EAAOH,EAAUI,EAAAA,IAAIA,CAAG,SAE9B,MACE,WAACD,EAAAA,CACC,UAAWE,AAAAA,GAAAA,EAAAA,EAAAA,AAAAA,EACTlB,EAAe,CAAEY,QAAAA,EAASH,KAAAA,EAAMK,QAAAA,EAASP,QAAAA,EAASH,UAAAA,CAAU,IAE9D,YAAU,SACV,eAAcQ,EACd,SAAUL,GAAWF,EACrB,KAAK,SACJ,GAAGU,CAAK,C,UAERR,GAAWD,AAAmB,WAAnBA,EAA8BI,GAAW,UAACS,EAAAA,OAAOA,CAAAA,CAAAA,GAAMX,EACnE,UAACY,EAAAA,SAASA,CAAAA,C,SACPb,GAAW,CAACD,EAAiB,UAACa,EAAAA,OAAOA,CAAAA,CAAAA,GAAMhB,C,GAE7CI,GAAWD,AAAmB,WAAnBA,EAA8BI,GAAW,UAACS,EAAAA,OAAOA,CAAAA,CAAAA,GAAMR,E,EAGzE,CACAT,EAAO,WAAW,CAAG,gB"}
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox.tsx"],"names":[],"mappings":"AAkBA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;IACnC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,EAAE,CAAA;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC;AAMD,QAAA,MAAM,QAAQ,GAAI,uEAQf,aAAa,4CAkGf,CAAA;AAMD,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox.tsx"],"names":[],"mappings":"AAkBA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;IACnC,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,EAAE,CAAA;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC;AAMD,QAAA,MAAM,QAAQ,GAAI,uEAQf,aAAa,4CAiGf,CAAA;AAMD,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -1,3 +1,3 @@
1
1
  'use client'
2
- import*as e from"react/jsx-runtime";import*as a from"@phosphor-icons/react";import*as o from"react";import*as r from"../lib/utils.js";import*as s from"./button.js";import*as n from"./command.js";import*as t from"./popover.js";import*as l from"./scroll-area.js";let c=({items:c,name:i,value:p,valueIcon:m,language:d="pt-br",disabled:u=!1,onValueChange:h})=>{let[x,j]=(0,o.useState)(!1),[b,f]=(0,o.useState)(""),g=c?.filter(e=>e.label.toLowerCase().includes(b?.toLowerCase()));return(0,e.jsxs)(t.Popover,{open:x,onOpenChange:j,children:[(0,e.jsx)(t.PopoverTrigger,{asChild:!0,className:"group",children:(0,e.jsxs)(s.Button,{variant:"secondary",role:"combobox",disabled:u,className:(0,r.cn)("h-12 w-full justify-between",!p&&"text-dark-gray/50"),onClick:e=>e.stopPropagation(),children:[(0,e.jsxs)("div",{className:"flex flex-row items-center gap-4 truncate",children:[p&&m&&(0,e.jsx)("span",{children:m}),p?(0,e.jsx)("p",{className:"font-normal",children:c?.find(e=>e.value===p)?.label}):(0,e.jsx)("p",{children:"pt-br"===d?"Selecione uma op\xe7\xe3o":"en-us"===d?"Select an option":"Seleccione una opci\xf3"})]}),(0,e.jsx)(a.CaretDown,{weight:"bold",className:"h-4 w-4 text-dark-gray group-data-[state=open]:rotate-180"})]})}),(0,e.jsx)(t.PopoverContent,{className:"w-full min-w-[var(--radix-popover-trigger-width)] p-0",align:"start",children:(0,e.jsxs)(n.Command,{children:[(0,e.jsx)(n.CommandInput,{name:i,value:b,onValueChange:f,placeholder:"pt-br"===d?"Digite para buscar...":"en-us"===d?"Type to search...":"Buscar por palabra clave..."}),(0,e.jsx)(l.ScrollArea,{className:"h-[200px] overflow-y-auto",children:g?.length===0?(0,e.jsx)(n.CommandEmpty,{children:"pt-br"===d?"Nenhuma op\xe7\xe3o encontrada":"en-us"===d?"No options found":"No se encontraron opciones"}):(0,e.jsx)(n.CommandGroup,{children:g?.map(o=>(0,e.jsxs)(n.CommandItem,{value:o.label,onSelect:()=>{h&&h(o.value),j(!1)},children:[(0,e.jsx)(a.Check,{className:(0,r.cn)("mr-2 h-4 w-4",o.value===p?"opacity-100":"opacity-0")}),!!o.icon&&(0,e.jsx)("span",{className:"mr-2",children:o.icon}),o.label]},o.value))})})]})})]})};export{c as ComboBox};
2
+ import*as e from"react/jsx-runtime";import*as a from"@phosphor-icons/react";import*as o from"react";import*as r from"../lib/utils.js";import*as s from"./button.js";import*as n from"./command.js";import*as t from"./popover.js";import*as l from"./scroll-area.js";let i=({items:i,name:c,value:p,valueIcon:m,language:d="pt-br",disabled:u=!1,onValueChange:h})=>{let[x,j]=(0,o.useState)(!1),[b,f]=(0,o.useState)(""),g=i?.filter(e=>e.label.toLowerCase().includes(b?.toLowerCase()));return(0,e.jsxs)(t.Popover,{open:x,onOpenChange:j,children:[(0,e.jsx)(t.PopoverTrigger,{asChild:!0,className:"group",children:(0,e.jsxs)(s.Button,{variant:"outline",role:"combobox",disabled:u,className:(0,r.cn)("h-12 w-full justify-between",!p&&"text-dark-gray/50"),onClick:e=>e.stopPropagation(),children:[(0,e.jsxs)("div",{className:"flex flex-row items-center gap-4 truncate",children:[p&&m&&(0,e.jsx)("span",{children:m}),p?(0,e.jsx)("p",{className:"font-normal",children:i?.find(e=>e.value===p)?.label}):(0,e.jsx)("p",{children:"pt-br"===d?"Selecione uma op\xe7\xe3o":"en-us"===d?"Select an option":"Seleccione una opci\xf3"})]}),(0,e.jsx)(a.CaretDown,{weight:"bold",className:"h-4 w-4 text-dark-gray group-data-[state=open]:rotate-180"})]})}),(0,e.jsx)(t.PopoverContent,{className:"w-full min-w-[var(--radix-popover-trigger-width)] p-0",align:"start",children:(0,e.jsxs)(n.Command,{children:[(0,e.jsx)(n.CommandInput,{name:c,value:b,onValueChange:f,placeholder:"pt-br"===d?"Digite para buscar...":"en-us"===d?"Type to search...":"Buscar por palabra clave..."}),(0,e.jsx)(l.ScrollArea,{className:"h-[200px] overflow-y-auto",children:g?.length===0?(0,e.jsx)(n.CommandEmpty,{children:"pt-br"===d?"Nenhuma op\xe7\xe3o encontrada":"en-us"===d?"No options found":"No se encontraron opciones"}):(0,e.jsx)(n.CommandGroup,{children:g?.map(o=>(0,e.jsxs)(n.CommandItem,{value:o.label,onSelect:()=>{h&&h(o.value),j(!1)},children:[(0,e.jsx)(a.Check,{className:(0,r.cn)("mr-2 h-4 w-4",o.value===p?"opacity-100":"opacity-0")}),!!o.icon&&(0,e.jsx)("span",{className:"mr-2",children:o.icon}),o.label]},o.value))})})]})})]})};export{i as ComboBox};
3
3
  //# sourceMappingURL=combobox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components\\combobox.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/combobox.tsx"],"sourcesContent":["\r\n\r\nimport { CaretDown, Check } from '@phosphor-icons/react'\r\nimport { useState } from 'react'\r\n\r\nimport { cn } from '@/lib/utils'\r\n\r\nimport { Button } from './button'\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n} from './command'\r\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\r\nimport { ScrollArea } from './scroll-area'\r\n\r\ninterface ComboBoxProps {\r\n name?: string\r\n value: string | number | undefined\r\n language?: 'pt-br' | 'en-us' | 'es'\r\n valueIcon?: React.ReactNode\r\n items: { value: string; label: string; icon?: React.ReactNode }[]\r\n disabled?: boolean\r\n onValueChange?: (value: string) => void\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Checkbox\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst ComboBox = ({\r\n items,\r\n name,\r\n value,\r\n valueIcon,\r\n language = 'pt-br',\r\n disabled = false,\r\n onValueChange,\r\n}: ComboBoxProps) => {\r\n const [open, setOpen] = useState(false)\r\n const [search, setSearch] = useState('')\r\n\r\n const filteredItems = items?.filter(item =>\r\n item.label.toLowerCase().includes(search?.toLowerCase())\r\n )\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild className=\"group\">\r\n <Button\r\n variant=\"secondary\"\r\n // biome-ignore lint/a11y/useSemanticElements: <explanation>\r\n role=\"combobox\"\r\n disabled={disabled}\r\n className={cn(\r\n 'h-12 w-full justify-between',\r\n !value && 'text-dark-gray/50'\r\n )}\r\n onClick={e => e.stopPropagation()}\r\n >\r\n <div className=\"flex flex-row items-center gap-4 truncate\">\r\n {value && valueIcon && <span>{valueIcon}</span>}\r\n {value ? (\r\n <p className=\"font-normal\">\r\n {items?.find(item => item.value === value)?.label}\r\n </p>\r\n ) : (\r\n <p>\r\n {language === 'pt-br'\r\n ? 'Selecione uma opção'\r\n : language === 'en-us'\r\n ? 'Select an option'\r\n : 'Seleccione una opció'}\r\n </p>\r\n )}\r\n </div>\r\n <CaretDown\r\n weight=\"bold\"\r\n className=\"h-4 w-4 text-dark-gray group-data-[state=open]:rotate-180\"\r\n />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent\r\n className=\"w-full min-w-[var(--radix-popover-trigger-width)] p-0\"\r\n align=\"start\"\r\n >\r\n <Command>\r\n <CommandInput\r\n name={name}\r\n value={search}\r\n onValueChange={setSearch}\r\n placeholder={\r\n language === 'pt-br'\r\n ? 'Digite para buscar...'\r\n : language === 'en-us'\r\n ? 'Type to search...'\r\n : 'Buscar por palabra clave...'\r\n }\r\n />\r\n <ScrollArea className=\"h-[200px] overflow-y-auto\">\r\n {filteredItems?.length === 0 ? (\r\n <CommandEmpty>\r\n {language === 'pt-br'\r\n ? 'Nenhuma opção encontrada'\r\n : language === 'en-us'\r\n ? 'No options found'\r\n : 'No se encontraron opciones'}\r\n </CommandEmpty>\r\n ) : (\r\n <CommandGroup>\r\n {filteredItems?.map(item => (\r\n <CommandItem\r\n key={item.value}\r\n value={item.label}\r\n onSelect={() => {\r\n if (onValueChange) onValueChange(item.value)\r\n setOpen(false)\r\n }}\r\n >\r\n <Check\r\n className={cn(\r\n 'mr-2 h-4 w-4',\r\n item.value === value ? 'opacity-100' : 'opacity-0'\r\n )}\r\n />\r\n {!!item.icon && <span className=\"mr-2\">{item.icon}</span>}\r\n {item.label}\r\n </CommandItem>\r\n ))}\r\n </CommandGroup>\r\n )}\r\n </ScrollArea>\r\n </Command>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport { ComboBox }\r\n"],"names":["ComboBox","items","name","value","valueIcon","language","disabled","onValueChange","open","setOpen","useState","search","setSearch","filteredItems","item","Popover","PopoverTrigger","Button","cn","e","CaretDown","PopoverContent","Command","CommandInput","ScrollArea","CommandEmpty","CommandGroup","CommandItem","Check"],"mappings":";qQAgCA,IAAMA,EAAW,CAAC,CAChBC,MAAAA,CAAK,CACLC,KAAAA,CAAI,CACJC,MAAAA,CAAK,CACLC,UAAAA,CAAS,CACTC,SAAAA,EAAW,OAAO,CAClBC,SAAAA,EAAW,EAAK,CAChBC,cAAAA,CAAa,CACC,IACd,GAAM,CAACC,EAAMC,EAAQ,CAAGC,GAAAA,EAAAA,QAAAA,EAAS,IAC3B,CAACC,EAAQC,EAAU,CAAGF,GAAAA,EAAAA,QAAAA,EAAS,IAE/BG,EAAgBZ,GAAO,OAAOa,GAClCA,EAAK,KAAK,CAAC,WAAW,GAAG,QAAQ,CAACH,GAAQ,gBAG5C,MACE,WAACI,EAAAA,OAAOA,CAAAA,CAAC,KAAMP,EAAM,aAAcC,E,UACjC,UAACO,EAAAA,cAAcA,CAAAA,CAAC,QAAO,GAAC,UAAU,Q,SAChC,WAACC,EAAAA,MAAMA,CAAAA,CACL,QAAQ,YAER,KAAK,WACL,SAAUX,EACV,UAAWY,GAAAA,EAAAA,EAAAA,EACT,8BACA,CAACf,GAAS,qBAEZ,QAASgB,GAAKA,EAAE,eAAe,G,UAE/B,WAAC,OAAI,UAAU,4C,UACZhB,GAASC,GAAa,UAAC,Q,SAAMA,C,GAC7BD,EACC,UAAC,KAAE,UAAU,c,SACVF,GAAO,KAAKa,GAAQA,EAAK,KAAK,GAAKX,IAAQ,K,GAG9C,UAAC,K,SACEE,UAAAA,EACG,4BACAA,UAAAA,EACE,mBACA,yB,MAIZ,UAACe,EAAAA,SAASA,CAAAA,CACR,OAAO,OACP,UAAU,2D,QAIhB,UAACC,EAAAA,cAAcA,CAAAA,CACb,UAAU,wDACV,MAAM,Q,SAEN,WAACC,EAAAA,OAAOA,CAAAA,C,UACN,UAACC,EAAAA,YAAYA,CAAAA,CACX,KAAMrB,EACN,MAAOS,EACP,cAAeC,EACf,YACEP,UAAAA,EACI,wBACAA,UAAAA,EACE,oBACA,6B,GAGV,UAACmB,EAAAA,UAAUA,CAAAA,CAAC,UAAU,4B,SACnBX,GAAe,SAAW,EACzB,UAACY,EAAAA,YAAYA,CAAAA,C,SACVpB,UAAAA,EACG,iCACAA,UAAAA,EACE,mBACA,4B,GAGR,UAACqB,EAAAA,YAAYA,CAAAA,C,SACVb,GAAe,IAAIC,GAClB,WAACa,EAAAA,WAAWA,CAAAA,CAEV,MAAOb,EAAK,KAAK,CACjB,SAAU,KACJP,GAAeA,EAAcO,EAAK,KAAK,EAC3CL,EAAQ,GACV,E,UAEA,UAACmB,EAAAA,KAAKA,CAAAA,CACJ,UAAWV,GAAAA,EAAAA,EAAAA,EACT,eACAJ,EAAK,KAAK,GAAKX,EAAQ,cAAgB,Y,GAG1C,CAAC,CAACW,EAAK,IAAI,EAAI,UAAC,QAAK,UAAU,O,SAAQA,EAAK,IAAI,GAChDA,EAAK,KAAK,C,EAdNA,EAAK,KAAK,E,YAwBnC,S"}
1
+ {"version":3,"file":"components\\combobox.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/combobox.tsx"],"sourcesContent":["\r\n\r\nimport { CaretDown, Check } from '@phosphor-icons/react'\r\nimport { useState } from 'react'\r\n\r\nimport { cn } from '@/lib/utils'\r\n\r\nimport { Button } from './button'\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n} from './command'\r\nimport { Popover, PopoverContent, PopoverTrigger } from './popover'\r\nimport { ScrollArea } from './scroll-area'\r\n\r\ninterface ComboBoxProps {\r\n name?: string\r\n value: string | number | undefined\r\n language?: 'pt-br' | 'en-us' | 'es'\r\n valueIcon?: React.ReactNode\r\n items: { value: string; label: string; icon?: React.ReactNode }[]\r\n disabled?: boolean\r\n onValueChange?: (value: string) => void\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Component: Checkbox\r\n * -------------------------------------------------------------------------- */\r\n\r\nconst ComboBox = ({\r\n items,\r\n name,\r\n value,\r\n valueIcon,\r\n language = 'pt-br',\r\n disabled = false,\r\n onValueChange,\r\n}: ComboBoxProps) => {\r\n const [open, setOpen] = useState(false)\r\n const [search, setSearch] = useState('')\r\n\r\n const filteredItems = items?.filter(item =>\r\n item.label.toLowerCase().includes(search?.toLowerCase())\r\n )\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild className=\"group\">\r\n <Button\r\n variant=\"outline\"\r\n role=\"combobox\"\r\n disabled={disabled}\r\n className={cn(\r\n 'h-12 w-full justify-between',\r\n !value && 'text-dark-gray/50'\r\n )}\r\n onClick={e => e.stopPropagation()}\r\n >\r\n <div className=\"flex flex-row items-center gap-4 truncate\">\r\n {value && valueIcon && <span>{valueIcon}</span>}\r\n {value ? (\r\n <p className=\"font-normal\">\r\n {items?.find(item => item.value === value)?.label}\r\n </p>\r\n ) : (\r\n <p>\r\n {language === 'pt-br'\r\n ? 'Selecione uma opção'\r\n : language === 'en-us'\r\n ? 'Select an option'\r\n : 'Seleccione una opció'}\r\n </p>\r\n )}\r\n </div>\r\n <CaretDown\r\n weight=\"bold\"\r\n className=\"h-4 w-4 text-dark-gray group-data-[state=open]:rotate-180\"\r\n />\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent\r\n className=\"w-full min-w-[var(--radix-popover-trigger-width)] p-0\"\r\n align=\"start\"\r\n >\r\n <Command>\r\n <CommandInput\r\n name={name}\r\n value={search}\r\n onValueChange={setSearch}\r\n placeholder={\r\n language === 'pt-br'\r\n ? 'Digite para buscar...'\r\n : language === 'en-us'\r\n ? 'Type to search...'\r\n : 'Buscar por palabra clave...'\r\n }\r\n />\r\n <ScrollArea className=\"h-[200px] overflow-y-auto\">\r\n {filteredItems?.length === 0 ? (\r\n <CommandEmpty>\r\n {language === 'pt-br'\r\n ? 'Nenhuma opção encontrada'\r\n : language === 'en-us'\r\n ? 'No options found'\r\n : 'No se encontraron opciones'}\r\n </CommandEmpty>\r\n ) : (\r\n <CommandGroup>\r\n {filteredItems?.map(item => (\r\n <CommandItem\r\n key={item.value}\r\n value={item.label}\r\n onSelect={() => {\r\n if (onValueChange) onValueChange(item.value)\r\n setOpen(false)\r\n }}\r\n >\r\n <Check\r\n className={cn(\r\n 'mr-2 h-4 w-4',\r\n item.value === value ? 'opacity-100' : 'opacity-0'\r\n )}\r\n />\r\n {!!item.icon && <span className=\"mr-2\">{item.icon}</span>}\r\n {item.label}\r\n </CommandItem>\r\n ))}\r\n </CommandGroup>\r\n )}\r\n </ScrollArea>\r\n </Command>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n\r\n/* -----------------------------------------------------------------------------\r\n * Exports\r\n * -------------------------------------------------------------------------- */\r\n\r\nexport { ComboBox }\r\n"],"names":["ComboBox","items","name","value","valueIcon","language","disabled","onValueChange","open","setOpen","useState","search","setSearch","filteredItems","item","Popover","PopoverTrigger","Button","cn","e","CaretDown","PopoverContent","Command","CommandInput","ScrollArea","CommandEmpty","CommandGroup","CommandItem","Check"],"mappings":";qQAgCA,IAAMA,EAAW,CAAC,CAChBC,MAAAA,CAAK,CACLC,KAAAA,CAAI,CACJC,MAAAA,CAAK,CACLC,UAAAA,CAAS,CACTC,SAAAA,EAAW,OAAO,CAClBC,SAAAA,EAAW,EAAK,CAChBC,cAAAA,CAAa,CACC,IACd,GAAM,CAACC,EAAMC,EAAQ,CAAGC,GAAAA,EAAAA,QAAAA,EAAS,IAC3B,CAACC,EAAQC,EAAU,CAAGF,GAAAA,EAAAA,QAAAA,EAAS,IAE/BG,EAAgBZ,GAAO,OAAOa,GAClCA,EAAK,KAAK,CAAC,WAAW,GAAG,QAAQ,CAACH,GAAQ,gBAG5C,MACE,WAACI,EAAAA,OAAOA,CAAAA,CAAC,KAAMP,EAAM,aAAcC,E,UACjC,UAACO,EAAAA,cAAcA,CAAAA,CAAC,QAAO,GAAC,UAAU,Q,SAChC,WAACC,EAAAA,MAAMA,CAAAA,CACL,QAAQ,UACR,KAAK,WACL,SAAUX,EACV,UAAWY,GAAAA,EAAAA,EAAAA,EACT,8BACA,CAACf,GAAS,qBAEZ,QAASgB,GAAKA,EAAE,eAAe,G,UAE/B,WAAC,OAAI,UAAU,4C,UACZhB,GAASC,GAAa,UAAC,Q,SAAMA,C,GAC7BD,EACC,UAAC,KAAE,UAAU,c,SACVF,GAAO,KAAKa,GAAQA,EAAK,KAAK,GAAKX,IAAQ,K,GAG9C,UAAC,K,SACEE,UAAAA,EACG,4BACAA,UAAAA,EACE,mBACA,yB,MAIZ,UAACe,EAAAA,SAASA,CAAAA,CACR,OAAO,OACP,UAAU,2D,QAIhB,UAACC,EAAAA,cAAcA,CAAAA,CACb,UAAU,wDACV,MAAM,Q,SAEN,WAACC,EAAAA,OAAOA,CAAAA,C,UACN,UAACC,EAAAA,YAAYA,CAAAA,CACX,KAAMrB,EACN,MAAOS,EACP,cAAeC,EACf,YACEP,UAAAA,EACI,wBACAA,UAAAA,EACE,oBACA,6B,GAGV,UAACmB,EAAAA,UAAUA,CAAAA,CAAC,UAAU,4B,SACnBX,GAAe,SAAW,EACzB,UAACY,EAAAA,YAAYA,CAAAA,C,SACVpB,UAAAA,EACG,iCACAA,UAAAA,EACE,mBACA,4B,GAGR,UAACqB,EAAAA,YAAYA,CAAAA,C,SACVb,GAAe,IAAIC,GAClB,WAACa,EAAAA,WAAWA,CAAAA,CAEV,MAAOb,EAAK,KAAK,CACjB,SAAU,KACJP,GAAeA,EAAcO,EAAK,KAAK,EAC3CL,EAAQ,GACV,E,UAEA,UAACmB,EAAAA,KAAKA,CAAAA,CACJ,UAAWV,GAAAA,EAAAA,EAAAA,EACT,eACAJ,EAAK,KAAK,GAAKX,EAAQ,cAAgB,Y,GAG1C,CAAC,CAACW,EAAK,IAAI,EAAI,UAAC,QAAK,UAAU,O,SAAQA,EAAK,IAAI,GAChDA,EAAK,KAAK,C,EAdNA,EAAK,KAAK,E,YAwBnC,S"}
@@ -1,3 +1,3 @@
1
1
  'use client'
2
- import*as e from"react/jsx-runtime";import*as t from"../button.js";import*as o from"../separator.js";import*as r from"../tooltip.js";import*as s from"../../lib/utils.js";import*as i from"@phosphor-icons/react";import*as a from"motion/react";import*as n from"react";import*as l from"react-dom";import*as c from"../spinner.js";function d({table:t,visible:o,container:r,children:i,className:c,...d}){let[m,p]=n.useState(!1);n.useLayoutEffect(()=>{p(!0)},[]),n.useEffect(()=>{function e(e){"Escape"===e.key&&t.toggleAllRowsSelected(!1)}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[t]);let x=r??(m?globalThis.document?.body:null);if(!x)return null;let h=o??t.getFilteredSelectedRowModel().rows.length>0;return l.createPortal((0,e.jsx)(a.AnimatePresence,{children:h&&(0,e.jsx)(a.motion.div,{role:"toolbar","aria-orientation":"horizontal",initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:20},transition:{duration:.2,ease:"easeInOut"},className:(0,s.cn)("fixed inset-x-0 bottom-6 z-50 mx-auto flex w-fit flex-wrap items-center justify-center gap-2 rounded-md border bg-background p-2 text-gbm-dark shadow-sm",c),...d,children:i})}),x)}function m({size:o="sm",tooltip:i,isPending:a,disabled:n,className:l,children:d,...m}){let p=(0,e.jsx)(t.Button,{variant:"secondary",size:o,className:(0,s.cn)("gap-1.5 [&>svg]:size-3.5","icon"===o?"size-8":"h-8",l),disabled:n||a,...m,children:a?(0,e.jsx)(c.Spinner,{}):d});return i?(0,e.jsxs)(r.Tooltip,{children:[(0,e.jsx)(r.TooltipTrigger,{asChild:!0,children:p}),(0,e.jsx)(r.TooltipContent,{sideOffset:6,className:"[&>span]:hidden",children:(0,e.jsx)("p",{children:i})})]}):p}function p({table:s}){let a=n.useCallback(()=>{s.toggleAllRowsSelected(!1)},[s]);return(0,e.jsxs)("div",{className:"flex h-8 items-center rounded-md border pr-1 pl-2.5",children:[(0,e.jsxs)("span",{className:"whitespace-nowrap text-xs",children:[s.getFilteredSelectedRowModel().rows.length," ",1===s.getFilteredSelectedRowModel().rows.length?"selecionado":"selecionados"]}),(0,e.jsx)(o.Separator,{orientation:"vertical",className:"mr-1 ml-2 data-[orientation=vertical]:h-4"}),(0,e.jsxs)(r.Tooltip,{children:[(0,e.jsx)(r.TooltipTrigger,{asChild:!0,children:(0,e.jsx)(t.Button,{variant:"ghost",size:"icon",className:"size-5",onClick:a,children:(0,e.jsx)(i.X,{className:"size-4"})})}),(0,e.jsxs)(r.TooltipContent,{sideOffset:10,className:"flex items-center gap-2 border bg-gray-50 px-2 py-1 font-semibold text-gbm-dark [&>span]:hidden",children:[(0,e.jsx)("p",{children:"Limpar sele\xe7\xe3o"}),(0,e.jsx)("kbd",{className:"select-none rounded border bg-background px-1.5 py-px font-mono font-normal text-[0.7rem] text-gbm-dark shadow-xs",children:(0,e.jsx)("abbr",{title:"Escape",className:"no-underline",children:"Esc"})})]})]})]})}export{d as DataTableActionBar,m as DataTableActionBarAction,p as DataTableActionBarSelection};
2
+ import*as e from"react/jsx-runtime";import*as t from"../button.js";import*as o from"../separator.js";import*as r from"../tooltip.js";import*as s from"../../lib/utils.js";import*as i from"@phosphor-icons/react";import*as a from"motion/react";import*as n from"react";import*as l from"react-dom";import*as c from"../spinner.js";function d({table:t,visible:o,container:r,children:i,className:c,...d}){let[m,p]=n.useState(!1);n.useLayoutEffect(()=>{p(!0)},[]),n.useEffect(()=>{function e(e){"Escape"===e.key&&t.toggleAllRowsSelected(!1)}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[t]);let x=r??(m?globalThis.document?.body:null);if(!x)return null;let h=o??t.getFilteredSelectedRowModel().rows.length>0;return l.createPortal((0,e.jsx)(a.AnimatePresence,{children:h&&(0,e.jsx)(a.motion.div,{role:"toolbar","aria-orientation":"horizontal",initial:{opacity:0,y:20},animate:{opacity:1,y:0},exit:{opacity:0,y:20},transition:{duration:.2,ease:"easeInOut"},className:(0,s.cn)("fixed inset-x-0 bottom-6 z-50 mx-auto flex w-fit flex-wrap items-center justify-center gap-2 rounded-md border bg-background p-2 text-gbm-dark shadow-sm",c),...d,children:i})}),x)}function m({size:o="sm",tooltip:i,isPending:a,disabled:n,className:l,children:d,...m}){let p=(0,e.jsx)(t.Button,{variant:"outline",size:o,className:(0,s.cn)("gap-1.5 [&>svg]:size-3.5","icon"===o?"size-8":"h-8",l),disabled:n||a,...m,children:a?(0,e.jsx)(c.Spinner,{}):d});return i?(0,e.jsxs)(r.Tooltip,{children:[(0,e.jsx)(r.TooltipTrigger,{asChild:!0,children:p}),(0,e.jsx)(r.TooltipContent,{sideOffset:6,className:"[&>span]:hidden",children:(0,e.jsx)("p",{children:i})})]}):p}function p({table:s}){let a=n.useCallback(()=>{s.toggleAllRowsSelected(!1)},[s]);return(0,e.jsxs)("div",{className:"flex h-8 items-center rounded-md border pr-1 pl-2.5",children:[(0,e.jsxs)("span",{className:"whitespace-nowrap text-xs",children:[s.getFilteredSelectedRowModel().rows.length," ",1===s.getFilteredSelectedRowModel().rows.length?"selecionado":"selecionados"]}),(0,e.jsx)(o.Separator,{orientation:"vertical",className:"mr-1 ml-2 data-[orientation=vertical]:h-4"}),(0,e.jsxs)(r.Tooltip,{children:[(0,e.jsx)(r.TooltipTrigger,{asChild:!0,children:(0,e.jsx)(t.Button,{variant:"ghost",size:"icon",className:"size-5",onClick:a,children:(0,e.jsx)(i.X,{className:"size-4"})})}),(0,e.jsxs)(r.TooltipContent,{sideOffset:10,className:"flex items-center gap-2 border bg-gray-50 px-2 py-1 font-semibold text-gbm-dark [&>span]:hidden",children:[(0,e.jsx)("p",{children:"Limpar sele\xe7\xe3o"}),(0,e.jsx)("kbd",{className:"select-none rounded border bg-background px-1.5 py-px font-mono font-normal text-[0.7rem] text-gbm-dark shadow-xs",children:(0,e.jsx)("abbr",{title:"Escape",className:"no-underline",children:"Esc"})})]})]})]})}export{d as DataTableActionBar,m as DataTableActionBarAction,p as DataTableActionBarSelection};
3
3
  //# sourceMappingURL=data-table-action-bar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components\\data-table\\data-table-action-bar.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/data-table/data-table-action-bar.tsx"],"sourcesContent":["\r\n\r\nimport { Button } from '@/components/button'\r\nimport { Separator } from '@/components/separator'\r\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/tooltip'\r\nimport { cn } from '@/lib/utils'\r\nimport { X } from '@phosphor-icons/react'\r\nimport type { Table } from '@tanstack/react-table'\r\nimport { AnimatePresence, motion } from 'motion/react'\r\nimport * as React from 'react'\r\nimport * as ReactDOM from 'react-dom'\r\nimport { Spinner } from '../spinner'\r\n\r\ninterface DataTableActionBarProps<TData>\r\n extends React.ComponentProps<typeof motion.div> {\r\n table: Table<TData>\r\n visible?: boolean\r\n container?: Element | DocumentFragment | null\r\n}\r\n\r\nfunction DataTableActionBar<TData>({\r\n table,\r\n visible: visibleProp,\r\n container: containerProp,\r\n children,\r\n className,\r\n ...props\r\n}: DataTableActionBarProps<TData>) {\r\n const [mounted, setMounted] = React.useState(false)\r\n\r\n React.useLayoutEffect(() => {\r\n setMounted(true)\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n function onKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n table.toggleAllRowsSelected(false)\r\n }\r\n }\r\n\r\n window.addEventListener('keydown', onKeyDown)\r\n return () => window.removeEventListener('keydown', onKeyDown)\r\n }, [table])\r\n\r\n const container =\r\n containerProp ?? (mounted ? globalThis.document?.body : null)\r\n\r\n if (!container) return null\r\n\r\n const visible =\r\n visibleProp ?? table.getFilteredSelectedRowModel().rows.length > 0\r\n\r\n return ReactDOM.createPortal(\r\n <AnimatePresence>\r\n {visible && (\r\n <motion.div\r\n role=\"toolbar\"\r\n aria-orientation=\"horizontal\"\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: 20 }}\r\n transition={{ duration: 0.2, ease: 'easeInOut' }}\r\n className={cn(\r\n 'fixed inset-x-0 bottom-6 z-50 mx-auto flex w-fit flex-wrap items-center justify-center gap-2 rounded-md border bg-background p-2 text-gbm-dark shadow-sm',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>,\r\n container\r\n )\r\n}\r\n\r\ninterface DataTableActionBarActionProps\r\n extends React.ComponentProps<typeof Button> {\r\n tooltip?: string\r\n isPending?: boolean\r\n}\r\n\r\nfunction DataTableActionBarAction({\r\n size = 'sm',\r\n tooltip,\r\n isPending,\r\n disabled,\r\n className,\r\n children,\r\n ...props\r\n}: DataTableActionBarActionProps) {\r\n const trigger = (\r\n <Button\r\n variant=\"secondary\"\r\n size={size}\r\n className={cn(\r\n 'gap-1.5 [&>svg]:size-3.5',\r\n size === 'icon' ? 'size-8' : 'h-8',\r\n className\r\n )}\r\n disabled={disabled || isPending}\r\n {...props}\r\n >\r\n {isPending ? <Spinner /> : children}\r\n </Button>\r\n )\r\n\r\n if (!tooltip) return trigger\r\n\r\n return (\r\n <Tooltip>\r\n <TooltipTrigger asChild>{trigger}</TooltipTrigger>\r\n <TooltipContent sideOffset={6} className=\"[&>span]:hidden\">\r\n <p>{tooltip}</p>\r\n </TooltipContent>\r\n </Tooltip>\r\n )\r\n}\r\n\r\ninterface DataTableActionBarSelectionProps<TData> {\r\n table: Table<TData>\r\n}\r\n\r\nfunction DataTableActionBarSelection<TData>({\r\n table,\r\n}: DataTableActionBarSelectionProps<TData>) {\r\n const onClearSelection = React.useCallback(() => {\r\n table.toggleAllRowsSelected(false)\r\n }, [table])\r\n\r\n return (\r\n <div className=\"flex h-8 items-center rounded-md border pr-1 pl-2.5\">\r\n <span className=\"whitespace-nowrap text-xs\">\r\n {table.getFilteredSelectedRowModel().rows.length}{' '}\r\n {table.getFilteredSelectedRowModel().rows.length === 1\r\n ? 'selecionado'\r\n : 'selecionados'}\r\n </span>\r\n <Separator\r\n orientation=\"vertical\"\r\n className=\"mr-1 ml-2 data-[orientation=vertical]:h-4\"\r\n />\r\n <Tooltip>\r\n <TooltipTrigger asChild>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"size-5\"\r\n onClick={onClearSelection}\r\n >\r\n <X className=\"size-4\" />\r\n </Button>\r\n </TooltipTrigger>\r\n <TooltipContent\r\n sideOffset={10}\r\n className=\"flex items-center gap-2 border bg-gray-50 px-2 py-1 font-semibold text-gbm-dark [&>span]:hidden\"\r\n >\r\n <p>Limpar seleção</p>\r\n <kbd className=\"select-none rounded border bg-background px-1.5 py-px font-mono font-normal text-[0.7rem] text-gbm-dark shadow-xs\">\r\n <abbr title=\"Escape\" className=\"no-underline\">\r\n Esc\r\n </abbr>\r\n </kbd>\r\n </TooltipContent>\r\n </Tooltip>\r\n </div>\r\n )\r\n}\r\n\r\nexport {\r\n DataTableActionBar,\r\n DataTableActionBarAction,\r\n DataTableActionBarSelection,\r\n}\r\n"],"names":["DataTableActionBar","table","visibleProp","containerProp","children","className","props","mounted","setMounted","React","onKeyDown","event","window","container","globalThis","visible","ReactDOM","AnimatePresence","motion","cn","DataTableActionBarAction","size","tooltip","isPending","disabled","trigger","Button","Spinner","Tooltip","TooltipTrigger","TooltipContent","DataTableActionBarSelection","onClearSelection","Separator","X"],"mappings":"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"}
1
+ {"version":3,"file":"components\\data-table\\data-table-action-bar.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/data-table/data-table-action-bar.tsx"],"sourcesContent":["\r\n\r\nimport { Button } from '@/components/button'\r\nimport { Separator } from '@/components/separator'\r\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/components/tooltip'\r\nimport { cn } from '@/lib/utils'\r\nimport { X } from '@phosphor-icons/react'\r\nimport type { Table } from '@tanstack/react-table'\r\nimport { AnimatePresence, motion } from 'motion/react'\r\nimport * as React from 'react'\r\nimport * as ReactDOM from 'react-dom'\r\nimport { Spinner } from '../spinner'\r\n\r\ninterface DataTableActionBarProps<TData>\r\n extends React.ComponentProps<typeof motion.div> {\r\n table: Table<TData>\r\n visible?: boolean\r\n container?: Element | DocumentFragment | null\r\n}\r\n\r\nfunction DataTableActionBar<TData>({\r\n table,\r\n visible: visibleProp,\r\n container: containerProp,\r\n children,\r\n className,\r\n ...props\r\n}: DataTableActionBarProps<TData>) {\r\n const [mounted, setMounted] = React.useState(false)\r\n\r\n React.useLayoutEffect(() => {\r\n setMounted(true)\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n function onKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n table.toggleAllRowsSelected(false)\r\n }\r\n }\r\n\r\n window.addEventListener('keydown', onKeyDown)\r\n return () => window.removeEventListener('keydown', onKeyDown)\r\n }, [table])\r\n\r\n const container =\r\n containerProp ?? (mounted ? globalThis.document?.body : null)\r\n\r\n if (!container) return null\r\n\r\n const visible =\r\n visibleProp ?? table.getFilteredSelectedRowModel().rows.length > 0\r\n\r\n return ReactDOM.createPortal(\r\n <AnimatePresence>\r\n {visible && (\r\n <motion.div\r\n role=\"toolbar\"\r\n aria-orientation=\"horizontal\"\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n exit={{ opacity: 0, y: 20 }}\r\n transition={{ duration: 0.2, ease: 'easeInOut' }}\r\n className={cn(\r\n 'fixed inset-x-0 bottom-6 z-50 mx-auto flex w-fit flex-wrap items-center justify-center gap-2 rounded-md border bg-background p-2 text-gbm-dark shadow-sm',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>,\r\n container\r\n )\r\n}\r\n\r\ninterface DataTableActionBarActionProps\r\n extends React.ComponentProps<typeof Button> {\r\n tooltip?: string\r\n isPending?: boolean\r\n}\r\n\r\nfunction DataTableActionBarAction({\r\n size = 'sm',\r\n tooltip,\r\n isPending,\r\n disabled,\r\n className,\r\n children,\r\n ...props\r\n}: DataTableActionBarActionProps) {\r\n const trigger = (\r\n <Button\r\n variant=\"outline\"\r\n size={size}\r\n className={cn(\r\n 'gap-1.5 [&>svg]:size-3.5',\r\n size === 'icon' ? 'size-8' : 'h-8',\r\n className\r\n )}\r\n disabled={disabled || isPending}\r\n {...props}\r\n >\r\n {isPending ? <Spinner /> : children}\r\n </Button>\r\n )\r\n\r\n if (!tooltip) return trigger\r\n\r\n return (\r\n <Tooltip>\r\n <TooltipTrigger asChild>{trigger}</TooltipTrigger>\r\n <TooltipContent sideOffset={6} className=\"[&>span]:hidden\">\r\n <p>{tooltip}</p>\r\n </TooltipContent>\r\n </Tooltip>\r\n )\r\n}\r\n\r\ninterface DataTableActionBarSelectionProps<TData> {\r\n table: Table<TData>\r\n}\r\n\r\nfunction DataTableActionBarSelection<TData>({\r\n table,\r\n}: DataTableActionBarSelectionProps<TData>) {\r\n const onClearSelection = React.useCallback(() => {\r\n table.toggleAllRowsSelected(false)\r\n }, [table])\r\n\r\n return (\r\n <div className=\"flex h-8 items-center rounded-md border pr-1 pl-2.5\">\r\n <span className=\"whitespace-nowrap text-xs\">\r\n {table.getFilteredSelectedRowModel().rows.length}{' '}\r\n {table.getFilteredSelectedRowModel().rows.length === 1\r\n ? 'selecionado'\r\n : 'selecionados'}\r\n </span>\r\n <Separator\r\n orientation=\"vertical\"\r\n className=\"mr-1 ml-2 data-[orientation=vertical]:h-4\"\r\n />\r\n <Tooltip>\r\n <TooltipTrigger asChild>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n className=\"size-5\"\r\n onClick={onClearSelection}\r\n >\r\n <X className=\"size-4\" />\r\n </Button>\r\n </TooltipTrigger>\r\n <TooltipContent\r\n sideOffset={10}\r\n className=\"flex items-center gap-2 border bg-gray-50 px-2 py-1 font-semibold text-gbm-dark [&>span]:hidden\"\r\n >\r\n <p>Limpar seleção</p>\r\n <kbd className=\"select-none rounded border bg-background px-1.5 py-px font-mono font-normal text-[0.7rem] text-gbm-dark shadow-xs\">\r\n <abbr title=\"Escape\" className=\"no-underline\">\r\n Esc\r\n </abbr>\r\n </kbd>\r\n </TooltipContent>\r\n </Tooltip>\r\n </div>\r\n )\r\n}\r\n\r\nexport {\r\n DataTableActionBar,\r\n DataTableActionBarAction,\r\n DataTableActionBarSelection,\r\n}\r\n"],"names":["DataTableActionBar","table","visibleProp","containerProp","children","className","props","mounted","setMounted","React","onKeyDown","event","window","container","globalThis","visible","ReactDOM","AnimatePresence","motion","cn","DataTableActionBarAction","size","tooltip","isPending","disabled","trigger","Button","Spinner","Tooltip","TooltipTrigger","TooltipContent","DataTableActionBarSelection","onClearSelection","Separator","X"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  'use client'
2
- import*as e from"react/jsx-runtime";import*as r from"@phosphor-icons/react";import*as t from"react";import*as a from"../button.js";import*as o from"../calendar.js";import*as i from"../popover.js";import*as n from"../separator.js";import*as s from"../../lib/format.js";function l(e){return e&&"object"==typeof e&&!Array.isArray(e)}function m(e){if(!e)return;let r=new Date("string"==typeof e?Number(e):e);return Number.isNaN(r.getTime())?void 0:r}function c(e){return null==e?[]:Array.isArray(e)?e.map(e=>{if("number"==typeof e||"string"==typeof e)return e}):"string"==typeof e||"number"==typeof e?[e]:[]}function f({column:f,title:u,multiple:d}){let p=f.getFilterValue(),g=t.useMemo(()=>{if(!p)return d?{from:void 0,to:void 0}:[];if(d){let e=c(p);return{from:m(e[0]),to:m(e[1])}}let e=m(c(p)[0]);return e?[e]:[]},[p,d]),j=t.useCallback(e=>{if(!e)return void f.setFilterValue(void 0);if(!d||"getTime"in e)!d&&"getTime"in e&&f.setFilterValue(e.getTime());else{let r=e.from?.getTime(),t=e.to?.getTime();f.setFilterValue(r||t?[r,t]:void 0)}},[f,d]),x=t.useCallback(e=>{e.stopPropagation(),f.setFilterValue(void 0)},[f]),v=t.useMemo(()=>d?!!l(g)&&(g.from||g.to):!!Array.isArray(g)&&g.length>0,[d,g]),h=t.useCallback(e=>e.from||e.to?e.from&&e.to?`${(0,s.formatDate)(e.from)} - ${(0,s.formatDate)(e.to)}`:(0,s.formatDate)(e.from??e.to):"",[]),b=t.useMemo(()=>{if(d){if(!l(g))return null;let r=g.from||g.to,t=r?h(g):"Select date range";return(0,e.jsxs)("span",{className:"flex items-center gap-2",children:[(0,e.jsx)("span",{children:u}),r&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(n.Separator,{orientation:"vertical",className:"mx-0.5 data-[orientation=vertical]:h-4"}),(0,e.jsx)("span",{children:t})]})]})}if(l(g))return null;let r=g.length>0,t=r?(0,s.formatDate)(g[0]):"Select date";return(0,e.jsxs)("span",{className:"flex items-center gap-2",children:[(0,e.jsx)("span",{children:u}),r&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(n.Separator,{orientation:"vertical",className:"mx-0.5 data-[orientation=vertical]:h-4"}),(0,e.jsx)("span",{children:t})]})]})},[g,d,h,u]);return(0,e.jsxs)(i.Popover,{children:[(0,e.jsx)(i.PopoverTrigger,{asChild:!0,children:(0,e.jsxs)(a.Button,{variant:"secondary",size:"sm",children:[v?(0,e.jsx)("div",{role:"button","aria-label":`Clear ${u} filter`,tabIndex:0,onClick:x,className:"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",children:(0,e.jsx)(r.XCircle,{})}):(0,e.jsx)(r.CalendarBlank,{}),b]})}),(0,e.jsx)(i.PopoverContent,{className:"w-auto p-0",align:"start",children:d?(0,e.jsx)(o.Calendar,{initialFocus:!0,mode:"range",selected:l(g)?g:{from:void 0,to:void 0},onSelect:j}):(0,e.jsx)(o.Calendar,{initialFocus:!0,mode:"single",selected:l(g)?void 0:g[0],onSelect:j})})]})}export{f as DataTableDateFilter};
2
+ import*as e from"react/jsx-runtime";import*as r from"@phosphor-icons/react";import*as t from"react";import*as a from"../button.js";import*as i from"../calendar.js";import*as o from"../popover.js";import*as n from"../separator.js";import*as s from"../../lib/format.js";function l(e){return e&&"object"==typeof e&&!Array.isArray(e)}function m(e){if(!e)return;let r=new Date("string"==typeof e?Number(e):e);return Number.isNaN(r.getTime())?void 0:r}function c(e){return null==e?[]:Array.isArray(e)?e.map(e=>{if("number"==typeof e||"string"==typeof e)return e}):"string"==typeof e||"number"==typeof e?[e]:[]}function u({column:u,title:f,multiple:d}){let p=u.getFilterValue(),g=t.useMemo(()=>{if(!p)return d?{from:void 0,to:void 0}:[];if(d){let e=c(p);return{from:m(e[0]),to:m(e[1])}}let e=m(c(p)[0]);return e?[e]:[]},[p,d]),j=t.useCallback(e=>{if(!e)return void u.setFilterValue(void 0);if(!d||"getTime"in e)!d&&"getTime"in e&&u.setFilterValue(e.getTime());else{let r=e.from?.getTime(),t=e.to?.getTime();u.setFilterValue(r||t?[r,t]:void 0)}},[u,d]),x=t.useCallback(e=>{e.stopPropagation(),u.setFilterValue(void 0)},[u]),v=t.useMemo(()=>d?!!l(g)&&(g.from||g.to):!!Array.isArray(g)&&g.length>0,[d,g]),h=t.useCallback(e=>e.from||e.to?e.from&&e.to?`${(0,s.formatDate)(e.from)} - ${(0,s.formatDate)(e.to)}`:(0,s.formatDate)(e.from??e.to):"",[]),b=t.useMemo(()=>{if(d){if(!l(g))return null;let r=g.from||g.to,t=r?h(g):"Select date range";return(0,e.jsxs)("span",{className:"flex items-center gap-2",children:[(0,e.jsx)("span",{children:f}),r&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(n.Separator,{orientation:"vertical",className:"mx-0.5 data-[orientation=vertical]:h-4"}),(0,e.jsx)("span",{children:t})]})]})}if(l(g))return null;let r=g.length>0,t=r?(0,s.formatDate)(g[0]):"Select date";return(0,e.jsxs)("span",{className:"flex items-center gap-2",children:[(0,e.jsx)("span",{children:f}),r&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(n.Separator,{orientation:"vertical",className:"mx-0.5 data-[orientation=vertical]:h-4"}),(0,e.jsx)("span",{children:t})]})]})},[g,d,h,f]);return(0,e.jsxs)(o.Popover,{children:[(0,e.jsx)(o.PopoverTrigger,{asChild:!0,children:(0,e.jsxs)(a.Button,{variant:"outline",size:"sm",children:[v?(0,e.jsx)("div",{role:"button","aria-label":`Clear ${f} filter`,tabIndex:0,onClick:x,className:"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",children:(0,e.jsx)(r.XCircle,{})}):(0,e.jsx)(r.CalendarBlank,{}),b]})}),(0,e.jsx)(o.PopoverContent,{className:"w-auto p-0",align:"start",children:d?(0,e.jsx)(i.Calendar,{initialFocus:!0,mode:"range",selected:l(g)?g:{from:void 0,to:void 0},onSelect:j}):(0,e.jsx)(i.Calendar,{initialFocus:!0,mode:"single",selected:l(g)?void 0:g[0],onSelect:j})})]})}export{u as DataTableDateFilter};
3
3
  //# sourceMappingURL=data-table-date-filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components\\data-table\\data-table-date-filter.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/data-table/data-table-date-filter.tsx"],"sourcesContent":["\r\n\r\nimport { CalendarBlank, XCircle } from '@phosphor-icons/react'\r\nimport type { Column } from '@tanstack/react-table'\r\nimport * as React from 'react'\r\nimport type { DateRange } from 'react-day-picker'\r\n\r\nimport { Button } from '@/components/button'\r\nimport { Calendar } from '@/components/calendar'\r\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/popover'\r\nimport { Separator } from '@/components/separator'\r\nimport { formatDate } from '@/lib/format'\r\n\r\ntype DateSelection = Date[] | DateRange\r\n\r\nfunction getIsDateRange(value: DateSelection): value is DateRange {\r\n return value && typeof value === 'object' && !Array.isArray(value)\r\n}\r\n\r\nfunction parseAsDate(timestamp: number | string | undefined): Date | undefined {\r\n if (!timestamp) return undefined\r\n const numericTimestamp =\r\n typeof timestamp === 'string' ? Number(timestamp) : timestamp\r\n const date = new Date(numericTimestamp)\r\n return !Number.isNaN(date.getTime()) ? date : undefined\r\n}\r\n\r\nfunction parseColumnFilterValue(value: unknown) {\r\n if (value === null || value === undefined) {\r\n return []\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.map(item => {\r\n if (typeof item === 'number' || typeof item === 'string') {\r\n return item\r\n }\r\n return undefined\r\n })\r\n }\r\n\r\n if (typeof value === 'string' || typeof value === 'number') {\r\n return [value]\r\n }\r\n\r\n return []\r\n}\r\n\r\ninterface DataTableDateFilterProps<TData> {\r\n column: Column<TData, unknown>\r\n title?: string\r\n multiple?: boolean\r\n}\r\n\r\nexport function DataTableDateFilter<TData>({\r\n column,\r\n title,\r\n multiple,\r\n}: DataTableDateFilterProps<TData>) {\r\n const columnFilterValue = column.getFilterValue()\r\n\r\n const selectedDates = React.useMemo<DateSelection>(() => {\r\n if (!columnFilterValue) {\r\n return multiple ? { from: undefined, to: undefined } : []\r\n }\r\n\r\n if (multiple) {\r\n const timestamps = parseColumnFilterValue(columnFilterValue)\r\n return {\r\n from: parseAsDate(timestamps[0]),\r\n to: parseAsDate(timestamps[1]),\r\n }\r\n }\r\n\r\n const timestamps = parseColumnFilterValue(columnFilterValue)\r\n const date = parseAsDate(timestamps[0])\r\n return date ? [date] : []\r\n }, [columnFilterValue, multiple])\r\n\r\n const onSelect = React.useCallback(\r\n (date: Date | DateRange | undefined) => {\r\n if (!date) {\r\n column.setFilterValue(undefined)\r\n return\r\n }\r\n\r\n if (multiple && !('getTime' in date)) {\r\n const from = date.from?.getTime()\r\n const to = date.to?.getTime()\r\n column.setFilterValue(from || to ? [from, to] : undefined)\r\n } else if (!multiple && 'getTime' in date) {\r\n column.setFilterValue(date.getTime())\r\n }\r\n },\r\n [column, multiple]\r\n )\r\n\r\n const onReset = React.useCallback(\r\n (event: React.MouseEvent) => {\r\n event.stopPropagation()\r\n column.setFilterValue(undefined)\r\n },\r\n [column]\r\n )\r\n\r\n const hasValue = React.useMemo(() => {\r\n if (multiple) {\r\n if (!getIsDateRange(selectedDates)) return false\r\n return selectedDates.from || selectedDates.to\r\n }\r\n if (!Array.isArray(selectedDates)) return false\r\n return selectedDates.length > 0\r\n }, [multiple, selectedDates])\r\n\r\n const formatDateRange = React.useCallback((range: DateRange) => {\r\n if (!range.from && !range.to) return ''\r\n if (range.from && range.to) {\r\n return `${formatDate(range.from)} - ${formatDate(range.to)}`\r\n }\r\n return formatDate(range.from ?? range.to)\r\n }, [])\r\n\r\n const label = React.useMemo(() => {\r\n if (multiple) {\r\n if (!getIsDateRange(selectedDates)) return null\r\n\r\n const hasSelectedDates = selectedDates.from || selectedDates.to\r\n const dateText = hasSelectedDates\r\n ? formatDateRange(selectedDates)\r\n : 'Select date range'\r\n\r\n return (\r\n <span className=\"flex items-center gap-2\">\r\n <span>{title}</span>\r\n {hasSelectedDates && (\r\n <>\r\n <Separator\r\n orientation=\"vertical\"\r\n className=\"mx-0.5 data-[orientation=vertical]:h-4\"\r\n />\r\n <span>{dateText}</span>\r\n </>\r\n )}\r\n </span>\r\n )\r\n }\r\n\r\n if (getIsDateRange(selectedDates)) return null\r\n\r\n const hasSelectedDate = selectedDates.length > 0\r\n const dateText = hasSelectedDate\r\n ? formatDate(selectedDates[0])\r\n : 'Select date'\r\n\r\n return (\r\n <span className=\"flex items-center gap-2\">\r\n <span>{title}</span>\r\n {hasSelectedDate && (\r\n <>\r\n <Separator\r\n orientation=\"vertical\"\r\n className=\"mx-0.5 data-[orientation=vertical]:h-4\"\r\n />\r\n <span>{dateText}</span>\r\n </>\r\n )}\r\n </span>\r\n )\r\n }, [selectedDates, multiple, formatDateRange, title])\r\n\r\n return (\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button variant=\"secondary\" size=\"sm\">\r\n {hasValue ? (\r\n <div\r\n role=\"button\"\r\n aria-label={`Clear ${title} filter`}\r\n tabIndex={0}\r\n onClick={onReset}\r\n className=\"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\r\n >\r\n <XCircle />\r\n </div>\r\n ) : (\r\n <CalendarBlank />\r\n )}\r\n {label}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\r\n {multiple ? (\r\n <Calendar\r\n initialFocus\r\n mode=\"range\"\r\n selected={\r\n getIsDateRange(selectedDates)\r\n ? selectedDates\r\n : { from: undefined, to: undefined }\r\n }\r\n onSelect={onSelect}\r\n />\r\n ) : (\r\n <Calendar\r\n initialFocus\r\n mode=\"single\"\r\n selected={\r\n !getIsDateRange(selectedDates) ? selectedDates[0] : undefined\r\n }\r\n onSelect={onSelect}\r\n />\r\n )}\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n"],"names":["getIsDateRange","value","Array","parseAsDate","timestamp","date","Date","Number","undefined","parseColumnFilterValue","item","DataTableDateFilter","column","title","multiple","columnFilterValue","selectedDates","React","timestamps","onSelect","from","to","onReset","event","hasValue","formatDateRange","range","formatDate","label","hasSelectedDates","dateText","Separator","hasSelectedDate","Popover","PopoverTrigger","Button","XCircle","CalendarBlank","PopoverContent","Calendar"],"mappings":"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"}
1
+ {"version":3,"file":"components\\data-table\\data-table-date-filter.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/data-table/data-table-date-filter.tsx"],"sourcesContent":["\r\n\r\nimport { CalendarBlank, XCircle } from '@phosphor-icons/react'\r\nimport type { Column } from '@tanstack/react-table'\r\nimport * as React from 'react'\r\nimport type { DateRange } from 'react-day-picker'\r\n\r\nimport { Button } from '@/components/button'\r\nimport { Calendar } from '@/components/calendar'\r\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/popover'\r\nimport { Separator } from '@/components/separator'\r\nimport { formatDate } from '@/lib/format'\r\n\r\ntype DateSelection = Date[] | DateRange\r\n\r\nfunction getIsDateRange(value: DateSelection): value is DateRange {\r\n return value && typeof value === 'object' && !Array.isArray(value)\r\n}\r\n\r\nfunction parseAsDate(timestamp: number | string | undefined): Date | undefined {\r\n if (!timestamp) return undefined\r\n const numericTimestamp =\r\n typeof timestamp === 'string' ? Number(timestamp) : timestamp\r\n const date = new Date(numericTimestamp)\r\n return !Number.isNaN(date.getTime()) ? date : undefined\r\n}\r\n\r\nfunction parseColumnFilterValue(value: unknown) {\r\n if (value === null || value === undefined) {\r\n return []\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.map(item => {\r\n if (typeof item === 'number' || typeof item === 'string') {\r\n return item\r\n }\r\n return undefined\r\n })\r\n }\r\n\r\n if (typeof value === 'string' || typeof value === 'number') {\r\n return [value]\r\n }\r\n\r\n return []\r\n}\r\n\r\ninterface DataTableDateFilterProps<TData> {\r\n column: Column<TData, unknown>\r\n title?: string\r\n multiple?: boolean\r\n}\r\n\r\nexport function DataTableDateFilter<TData>({\r\n column,\r\n title,\r\n multiple,\r\n}: DataTableDateFilterProps<TData>) {\r\n const columnFilterValue = column.getFilterValue()\r\n\r\n const selectedDates = React.useMemo<DateSelection>(() => {\r\n if (!columnFilterValue) {\r\n return multiple ? { from: undefined, to: undefined } : []\r\n }\r\n\r\n if (multiple) {\r\n const timestamps = parseColumnFilterValue(columnFilterValue)\r\n return {\r\n from: parseAsDate(timestamps[0]),\r\n to: parseAsDate(timestamps[1]),\r\n }\r\n }\r\n\r\n const timestamps = parseColumnFilterValue(columnFilterValue)\r\n const date = parseAsDate(timestamps[0])\r\n return date ? [date] : []\r\n }, [columnFilterValue, multiple])\r\n\r\n const onSelect = React.useCallback(\r\n (date: Date | DateRange | undefined) => {\r\n if (!date) {\r\n column.setFilterValue(undefined)\r\n return\r\n }\r\n\r\n if (multiple && !('getTime' in date)) {\r\n const from = date.from?.getTime()\r\n const to = date.to?.getTime()\r\n column.setFilterValue(from || to ? [from, to] : undefined)\r\n } else if (!multiple && 'getTime' in date) {\r\n column.setFilterValue(date.getTime())\r\n }\r\n },\r\n [column, multiple]\r\n )\r\n\r\n const onReset = React.useCallback(\r\n (event: React.MouseEvent) => {\r\n event.stopPropagation()\r\n column.setFilterValue(undefined)\r\n },\r\n [column]\r\n )\r\n\r\n const hasValue = React.useMemo(() => {\r\n if (multiple) {\r\n if (!getIsDateRange(selectedDates)) return false\r\n return selectedDates.from || selectedDates.to\r\n }\r\n if (!Array.isArray(selectedDates)) return false\r\n return selectedDates.length > 0\r\n }, [multiple, selectedDates])\r\n\r\n const formatDateRange = React.useCallback((range: DateRange) => {\r\n if (!range.from && !range.to) return ''\r\n if (range.from && range.to) {\r\n return `${formatDate(range.from)} - ${formatDate(range.to)}`\r\n }\r\n return formatDate(range.from ?? range.to)\r\n }, [])\r\n\r\n const label = React.useMemo(() => {\r\n if (multiple) {\r\n if (!getIsDateRange(selectedDates)) return null\r\n\r\n const hasSelectedDates = selectedDates.from || selectedDates.to\r\n const dateText = hasSelectedDates\r\n ? formatDateRange(selectedDates)\r\n : 'Select date range'\r\n\r\n return (\r\n <span className=\"flex items-center gap-2\">\r\n <span>{title}</span>\r\n {hasSelectedDates && (\r\n <>\r\n <Separator\r\n orientation=\"vertical\"\r\n className=\"mx-0.5 data-[orientation=vertical]:h-4\"\r\n />\r\n <span>{dateText}</span>\r\n </>\r\n )}\r\n </span>\r\n )\r\n }\r\n\r\n if (getIsDateRange(selectedDates)) return null\r\n\r\n const hasSelectedDate = selectedDates.length > 0\r\n const dateText = hasSelectedDate\r\n ? formatDate(selectedDates[0])\r\n : 'Select date'\r\n\r\n return (\r\n <span className=\"flex items-center gap-2\">\r\n <span>{title}</span>\r\n {hasSelectedDate && (\r\n <>\r\n <Separator\r\n orientation=\"vertical\"\r\n className=\"mx-0.5 data-[orientation=vertical]:h-4\"\r\n />\r\n <span>{dateText}</span>\r\n </>\r\n )}\r\n </span>\r\n )\r\n }, [selectedDates, multiple, formatDateRange, title])\r\n\r\n return (\r\n <Popover>\r\n <PopoverTrigger asChild>\r\n <Button variant=\"outline\" size=\"sm\">\r\n {hasValue ? (\r\n <div\r\n role=\"button\"\r\n aria-label={`Clear ${title} filter`}\r\n tabIndex={0}\r\n onClick={onReset}\r\n className=\"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\r\n >\r\n <XCircle />\r\n </div>\r\n ) : (\r\n <CalendarBlank />\r\n )}\r\n {label}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\r\n {multiple ? (\r\n <Calendar\r\n initialFocus\r\n mode=\"range\"\r\n selected={\r\n getIsDateRange(selectedDates)\r\n ? selectedDates\r\n : { from: undefined, to: undefined }\r\n }\r\n onSelect={onSelect}\r\n />\r\n ) : (\r\n <Calendar\r\n initialFocus\r\n mode=\"single\"\r\n selected={\r\n !getIsDateRange(selectedDates) ? selectedDates[0] : undefined\r\n }\r\n onSelect={onSelect}\r\n />\r\n )}\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n"],"names":["getIsDateRange","value","Array","parseAsDate","timestamp","date","Date","Number","undefined","parseColumnFilterValue","item","DataTableDateFilter","column","title","multiple","columnFilterValue","selectedDates","React","timestamps","onSelect","from","to","onReset","event","hasValue","formatDateRange","range","formatDate","label","hasSelectedDates","dateText","Separator","hasSelectedDate","Popover","PopoverTrigger","Button","XCircle","CalendarBlank","PopoverContent","Calendar"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  'use client'
2
- import*as e from"react/jsx-runtime";import*as a from"@phosphor-icons/react";import*as s from"../badge.js";import*as r from"../button.js";import*as o from"../command.js";import*as i from"../popover.js";import*as t from"../separator.js";import*as n from"../../lib/utils.js";import*as l from"react";function m({column:m,title:c,options:d,multiple:p}){let[u,x]=l.useState(!1),h=m?.getFilterValue(),j=new Set(Array.isArray(h)?h:[]),f=l.useCallback((e,a)=>{if(m)if(p){let s=new Set(j);a?s.delete(e.value):s.add(e.value);let r=Array.from(s);m.setFilterValue(r.length?r:void 0)}else m.setFilterValue(a?void 0:[e.value]),x(!1)},[m,p,j]),v=l.useCallback(e=>{e?.stopPropagation(),m?.setFilterValue(void 0)},[m]);return(0,e.jsxs)(i.Popover,{open:u,onOpenChange:x,children:[(0,e.jsx)(i.PopoverTrigger,{asChild:!0,children:(0,e.jsxs)(r.Button,{variant:"secondary",size:"sm",children:[j?.size>0?(0,e.jsx)("div",{role:"button","aria-label":`Clear ${c} filter`,tabIndex:0,onClick:v,className:"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",children:(0,e.jsx)(a.XCircle,{})}):(0,e.jsx)(a.PlusCircle,{}),c,j?.size>0&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(t.Separator,{orientation:"vertical",className:"mx-0.5 data-[orientation=vertical]:h-4"}),(0,e.jsx)(s.Badge,{variant:"secondary",className:"rounded-sm px-1 font-normal lg:hidden",children:j.size}),(0,e.jsx)("div",{className:"hidden items-center gap-1 lg:flex",children:j.size>2?(0,e.jsxs)(s.Badge,{variant:"secondary",className:"rounded-sm px-1 font-normal",children:[j.size," selected"]}):d.filter(e=>j.has(e.value)).map(a=>(0,e.jsx)(s.Badge,{variant:"secondary",className:"rounded-sm px-1 font-normal",children:a.label},a.value))})]})]})}),(0,e.jsx)(i.PopoverContent,{className:"w-[12.5rem] p-0",align:"start",children:(0,e.jsxs)(o.Command,{children:[(0,e.jsx)(o.CommandInput,{placeholder:c}),(0,e.jsxs)(o.CommandList,{className:"max-h-full",children:[(0,e.jsx)(o.CommandEmpty,{children:"No results found."}),(0,e.jsx)(o.CommandGroup,{className:"max-h-[18.75rem] overflow-y-auto overflow-x-hidden",children:d.map(s=>{let r=j.has(s.value);return(0,e.jsxs)(o.CommandItem,{onSelect:()=>f(s,r),children:[(0,e.jsx)("div",{className:(0,n.cn)("flex size-4 items-center justify-center rounded-sm border border-primary",r?"bg-primary":"opacity-50 [&_svg]:invisible"),children:(0,e.jsx)(a.Check,{})}),s.icon&&(0,e.jsx)(s.icon,{}),(0,e.jsx)("span",{className:"truncate",children:s.label}),s.count&&(0,e.jsx)("span",{className:"ml-auto font-mono text-xs",children:s.count})]},s.value)})}),j.size>0&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(o.CommandSeparator,{}),(0,e.jsx)(o.CommandGroup,{children:(0,e.jsx)(o.CommandItem,{onSelect:()=>v(),className:"justify-center text-center",children:"Limpar filtros"})})]})]})]})})]})}export{m as DataTableFacetedFilter};
2
+ import*as e from"react/jsx-runtime";import*as a from"@phosphor-icons/react";import*as s from"../badge.js";import*as r from"../button.js";import*as o from"../command.js";import*as n from"../popover.js";import*as i from"../separator.js";import*as t from"../../lib/utils.js";import*as l from"react";function m({column:m,title:c,options:d,multiple:u}){let[p,x]=l.useState(!1),h=m?.getFilterValue(),j=new Set(Array.isArray(h)?h:[]),f=l.useCallback((e,a)=>{if(m)if(u){let s=new Set(j);a?s.delete(e.value):s.add(e.value);let r=Array.from(s);m.setFilterValue(r.length?r:void 0)}else m.setFilterValue(a?void 0:[e.value]),x(!1)},[m,u,j]),v=l.useCallback(e=>{e?.stopPropagation(),m?.setFilterValue(void 0)},[m]);return(0,e.jsxs)(n.Popover,{open:p,onOpenChange:x,children:[(0,e.jsx)(n.PopoverTrigger,{asChild:!0,children:(0,e.jsxs)(r.Button,{variant:"outline",size:"sm",children:[j?.size>0?(0,e.jsx)("div",{role:"button","aria-label":`Clear ${c} filter`,tabIndex:0,onClick:v,className:"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",children:(0,e.jsx)(a.XCircleIcon,{})}):(0,e.jsx)(a.PlusCircleIcon,{}),c,j?.size>0&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(i.Separator,{orientation:"vertical",className:"mx-0.5 data-[orientation=vertical]:h-4"}),(0,e.jsx)(s.Badge,{variant:"secondary",className:"rounded-sm px-1 font-normal lg:hidden",children:j.size}),(0,e.jsx)("div",{className:"hidden items-center gap-1 lg:flex",children:j.size>2?(0,e.jsxs)(s.Badge,{variant:"secondary",className:"rounded-sm px-1 font-normal",children:[j.size," selected"]}):d.filter(e=>j.has(e.value)).map(a=>(0,e.jsx)(s.Badge,{variant:"secondary",className:"rounded-sm px-1 font-normal",children:a.label},a.value))})]})]})}),(0,e.jsx)(n.PopoverContent,{className:"w-[12.5rem] p-0",align:"start",children:(0,e.jsxs)(o.Command,{children:[(0,e.jsx)(o.CommandInput,{placeholder:c}),(0,e.jsxs)(o.CommandList,{className:"max-h-full",children:[(0,e.jsx)(o.CommandEmpty,{children:"No results found."}),(0,e.jsx)(o.CommandGroup,{className:"max-h-[18.75rem] overflow-y-auto overflow-x-hidden",children:d.map(s=>{let r=j.has(s.value);return(0,e.jsxs)(o.CommandItem,{onSelect:()=>f(s,r),children:[(0,e.jsx)("div",{className:(0,t.cn)("flex size-4 items-center justify-center rounded-sm border border-primary",r?"bg-primary":"opacity-50 [&_svg]:invisible"),children:(0,e.jsx)(a.CheckIcon,{})}),s.icon&&(0,e.jsx)(s.icon,{}),(0,e.jsx)("span",{className:"truncate",children:s.label}),s.count&&(0,e.jsx)("span",{className:"ml-auto font-mono text-xs",children:s.count})]},s.value)})}),j.size>0&&(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(o.CommandSeparator,{}),(0,e.jsx)(o.CommandGroup,{children:(0,e.jsx)(o.CommandItem,{onSelect:()=>v(),className:"justify-center text-center",children:"Limpar filtros"})})]})]})]})})]})}export{m as DataTableFacetedFilter};
3
3
  //# sourceMappingURL=data-table-faceted-filter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components\\data-table\\data-table-faceted-filter.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/data-table/data-table-faceted-filter.tsx"],"sourcesContent":["\r\n\r\nimport type { Option } from '@/types/data-table'\r\nimport { Check, PlusCircle, XCircle } from '@phosphor-icons/react'\r\nimport type { Column } from '@tanstack/react-table'\r\n\r\nimport { Badge } from '@/components/badge'\r\nimport { Button } from '@/components/button'\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n CommandList,\r\n CommandSeparator,\r\n} from '@/components/command'\r\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/popover'\r\nimport { Separator } from '@/components/separator'\r\nimport { cn } from '@/lib/utils'\r\nimport * as React from 'react'\r\n\r\ninterface DataTableFacetedFilterProps<TData, TValue> {\r\n column?: Column<TData, TValue>\r\n title?: string\r\n options: Option[]\r\n multiple?: boolean\r\n}\r\n\r\nexport function DataTableFacetedFilter<TData, TValue>({\r\n column,\r\n title,\r\n options,\r\n multiple,\r\n}: DataTableFacetedFilterProps<TData, TValue>) {\r\n const [open, setOpen] = React.useState(false)\r\n\r\n const columnFilterValue = column?.getFilterValue()\r\n const selectedValues = new Set(\r\n Array.isArray(columnFilterValue) ? columnFilterValue : []\r\n )\r\n\r\n const onItemSelect = React.useCallback(\r\n (option: Option, isSelected: boolean) => {\r\n if (!column) return\r\n\r\n if (multiple) {\r\n const newSelectedValues = new Set(selectedValues)\r\n if (isSelected) {\r\n newSelectedValues.delete(option.value)\r\n } else {\r\n newSelectedValues.add(option.value)\r\n }\r\n const filterValues = Array.from(newSelectedValues)\r\n column.setFilterValue(filterValues.length ? filterValues : undefined)\r\n } else {\r\n column.setFilterValue(isSelected ? undefined : [option.value])\r\n setOpen(false)\r\n }\r\n },\r\n [column, multiple, selectedValues]\r\n )\r\n\r\n const onReset = React.useCallback(\r\n (event?: React.MouseEvent) => {\r\n event?.stopPropagation()\r\n column?.setFilterValue(undefined)\r\n },\r\n [column]\r\n )\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button variant=\"secondary\" size=\"sm\">\r\n {selectedValues?.size > 0 ? (\r\n <div\r\n role=\"button\"\r\n aria-label={`Clear ${title} filter`}\r\n tabIndex={0}\r\n onClick={onReset}\r\n className=\"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\r\n >\r\n <XCircle />\r\n </div>\r\n ) : (\r\n <PlusCircle />\r\n )}\r\n {title}\r\n {selectedValues?.size > 0 && (\r\n <>\r\n <Separator\r\n orientation=\"vertical\"\r\n className=\"mx-0.5 data-[orientation=vertical]:h-4\"\r\n />\r\n <Badge\r\n variant=\"secondary\"\r\n className=\"rounded-sm px-1 font-normal lg:hidden\"\r\n >\r\n {selectedValues.size}\r\n </Badge>\r\n <div className=\"hidden items-center gap-1 lg:flex\">\r\n {selectedValues.size > 2 ? (\r\n <Badge\r\n variant=\"secondary\"\r\n className=\"rounded-sm px-1 font-normal\"\r\n >\r\n {selectedValues.size} selected\r\n </Badge>\r\n ) : (\r\n options\r\n .filter(option => selectedValues.has(option.value))\r\n .map(option => (\r\n <Badge\r\n variant=\"secondary\"\r\n key={option.value}\r\n className=\"rounded-sm px-1 font-normal\"\r\n >\r\n {option.label}\r\n </Badge>\r\n ))\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-[12.5rem] p-0\" align=\"start\">\r\n <Command>\r\n <CommandInput placeholder={title} />\r\n <CommandList className=\"max-h-full\">\r\n <CommandEmpty>No results found.</CommandEmpty>\r\n <CommandGroup className=\"max-h-[18.75rem] overflow-y-auto overflow-x-hidden\">\r\n {options.map(option => {\r\n const isSelected = selectedValues.has(option.value)\r\n\r\n return (\r\n <CommandItem\r\n key={option.value}\r\n onSelect={() => onItemSelect(option, isSelected)}\r\n >\r\n <div\r\n className={cn(\r\n 'flex size-4 items-center justify-center rounded-sm border border-primary',\r\n isSelected\r\n ? 'bg-primary'\r\n : 'opacity-50 [&_svg]:invisible'\r\n )}\r\n >\r\n <Check />\r\n </div>\r\n {option.icon && <option.icon />}\r\n <span className=\"truncate\">{option.label}</span>\r\n {option.count && (\r\n <span className=\"ml-auto font-mono text-xs\">\r\n {option.count}\r\n </span>\r\n )}\r\n </CommandItem>\r\n )\r\n })}\r\n </CommandGroup>\r\n {selectedValues.size > 0 && (\r\n <>\r\n <CommandSeparator />\r\n <CommandGroup>\r\n <CommandItem\r\n onSelect={() => onReset()}\r\n className=\"justify-center text-center\"\r\n >\r\n Limpar filtros\r\n </CommandItem>\r\n </CommandGroup>\r\n </>\r\n )}\r\n </CommandList>\r\n </Command>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n"],"names":["DataTableFacetedFilter","column","title","options","multiple","open","setOpen","React","columnFilterValue","selectedValues","Set","Array","onItemSelect","option","isSelected","newSelectedValues","filterValues","undefined","onReset","event","Popover","PopoverTrigger","Button","XCircle","PlusCircle","Separator","Badge","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandItem","cn","Check","CommandSeparator"],"mappings":"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"}
1
+ {"version":3,"file":"components\\data-table\\data-table-faceted-filter.js","sources":["webpack://@gbmtech/aurora-ui/./src/components/data-table/data-table-faceted-filter.tsx"],"sourcesContent":["\r\n\r\nimport type { Option } from '@/types/data-table'\r\nimport { CheckIcon, PlusCircleIcon, XCircleIcon } from '@phosphor-icons/react'\r\nimport type { Column } from '@tanstack/react-table'\r\n\r\nimport { Badge } from '@/components/badge'\r\nimport { Button } from '@/components/button'\r\nimport {\r\n Command,\r\n CommandEmpty,\r\n CommandGroup,\r\n CommandInput,\r\n CommandItem,\r\n CommandList,\r\n CommandSeparator,\r\n} from '@/components/command'\r\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/popover'\r\nimport { Separator } from '@/components/separator'\r\nimport { cn } from '@/lib/utils'\r\nimport * as React from 'react'\r\n\r\ninterface DataTableFacetedFilterProps<TData, TValue> {\r\n column?: Column<TData, TValue>\r\n title?: string\r\n options: Option[]\r\n multiple?: boolean\r\n}\r\n\r\nexport function DataTableFacetedFilter<TData, TValue>({\r\n column,\r\n title,\r\n options,\r\n multiple,\r\n}: DataTableFacetedFilterProps<TData, TValue>) {\r\n const [open, setOpen] = React.useState(false)\r\n\r\n const columnFilterValue = column?.getFilterValue()\r\n const selectedValues = new Set(\r\n Array.isArray(columnFilterValue) ? columnFilterValue : []\r\n )\r\n\r\n const onItemSelect = React.useCallback(\r\n (option: Option, isSelected: boolean) => {\r\n if (!column) return\r\n\r\n if (multiple) {\r\n const newSelectedValues = new Set(selectedValues)\r\n if (isSelected) {\r\n newSelectedValues.delete(option.value)\r\n } else {\r\n newSelectedValues.add(option.value)\r\n }\r\n const filterValues = Array.from(newSelectedValues)\r\n column.setFilterValue(filterValues.length ? filterValues : undefined)\r\n } else {\r\n column.setFilterValue(isSelected ? undefined : [option.value])\r\n setOpen(false)\r\n }\r\n },\r\n [column, multiple, selectedValues]\r\n )\r\n\r\n const onReset = React.useCallback(\r\n (event?: React.MouseEvent) => {\r\n event?.stopPropagation()\r\n column?.setFilterValue(undefined)\r\n },\r\n [column]\r\n )\r\n\r\n return (\r\n <Popover open={open} onOpenChange={setOpen}>\r\n <PopoverTrigger asChild>\r\n <Button variant=\"outline\" size=\"sm\">\r\n {selectedValues?.size > 0 ? (\r\n <div\r\n role=\"button\"\r\n aria-label={`Clear ${title} filter`}\r\n tabIndex={0}\r\n onClick={onReset}\r\n className=\"rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\r\n >\r\n <XCircleIcon />\r\n </div>\r\n ) : (\r\n <PlusCircleIcon />\r\n )}\r\n {title}\r\n {selectedValues?.size > 0 && (\r\n <>\r\n <Separator\r\n orientation=\"vertical\"\r\n className=\"mx-0.5 data-[orientation=vertical]:h-4\"\r\n />\r\n <Badge\r\n variant=\"secondary\"\r\n className=\"rounded-sm px-1 font-normal lg:hidden\"\r\n >\r\n {selectedValues.size}\r\n </Badge>\r\n <div className=\"hidden items-center gap-1 lg:flex\">\r\n {selectedValues.size > 2 ? (\r\n <Badge\r\n variant=\"secondary\"\r\n className=\"rounded-sm px-1 font-normal\"\r\n >\r\n {selectedValues.size} selected\r\n </Badge>\r\n ) : (\r\n options\r\n .filter(option => selectedValues.has(option.value))\r\n .map(option => (\r\n <Badge\r\n variant=\"secondary\"\r\n key={option.value}\r\n className=\"rounded-sm px-1 font-normal\"\r\n >\r\n {option.label}\r\n </Badge>\r\n ))\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </Button>\r\n </PopoverTrigger>\r\n <PopoverContent className=\"w-[12.5rem] p-0\" align=\"start\">\r\n <Command>\r\n <CommandInput placeholder={title} />\r\n <CommandList className=\"max-h-full\">\r\n <CommandEmpty>No results found.</CommandEmpty>\r\n <CommandGroup className=\"max-h-[18.75rem] overflow-y-auto overflow-x-hidden\">\r\n {options.map(option => {\r\n const isSelected = selectedValues.has(option.value)\r\n\r\n return (\r\n <CommandItem\r\n key={option.value}\r\n onSelect={() => onItemSelect(option, isSelected)}\r\n >\r\n <div\r\n className={cn(\r\n 'flex size-4 items-center justify-center rounded-sm border border-primary',\r\n isSelected\r\n ? 'bg-primary'\r\n : 'opacity-50 [&_svg]:invisible'\r\n )}\r\n >\r\n <CheckIcon />\r\n </div>\r\n {option.icon && <option.icon />}\r\n <span className=\"truncate\">{option.label}</span>\r\n {option.count && (\r\n <span className=\"ml-auto font-mono text-xs\">\r\n {option.count}\r\n </span>\r\n )}\r\n </CommandItem>\r\n )\r\n })}\r\n </CommandGroup>\r\n {selectedValues.size > 0 && (\r\n <>\r\n <CommandSeparator />\r\n <CommandGroup>\r\n <CommandItem\r\n onSelect={() => onReset()}\r\n className=\"justify-center text-center\"\r\n >\r\n Limpar filtros\r\n </CommandItem>\r\n </CommandGroup>\r\n </>\r\n )}\r\n </CommandList>\r\n </Command>\r\n </PopoverContent>\r\n </Popover>\r\n )\r\n}\r\n"],"names":["DataTableFacetedFilter","column","title","options","multiple","open","setOpen","React","columnFilterValue","selectedValues","Set","Array","onItemSelect","option","isSelected","newSelectedValues","filterValues","undefined","onReset","event","Popover","PopoverTrigger","Button","XCircleIcon","PlusCircleIcon","Separator","Badge","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandItem","cn","CheckIcon","CommandSeparator"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  'use client'
2
- import*as e from"react/jsx-runtime";import*as a from"@phosphor-icons/react";import*as t from"nuqs";import*as r from"react";import*as l from"../badge.js";import*as n from"../button.js";import*as s from"../calendar.js";import*as i from"../command.js";import*as o from"./data-table-range-filter.js";import*as d from"../faceted.js";import*as c from"../input.js";import*as m from"../popover.js";import*as u from"../select.js";import*as p from"../sortable.js";import*as f from"../../hooks/use-debounced-callback.js";import*as x from"../../lib/data-table.js";import*as h from"../../lib/data-table-config.js";import*as j from"../../lib/format.js";import*as v from"../../lib/id.js";import*as g from"../../lib/parsers.js";import*as b from"../../lib/utils.js";let w=["backspace","delete"];function y({table:s,debounceMs:i=300,throttleMs:o=50,shallow:d=!0,...c}){let u=r.useId(),h=r.useId(),j=r.useId(),[y,N]=r.useState(!1),S=r.useRef(null),I=r.useMemo(()=>s.getAllColumns().filter(e=>e.columnDef.enableColumnFilter),[s]),[D,F]=(0,t.useQueryState)("filters",(0,g.getFiltersStateParser)(I.map(e=>e.id)).withDefault([]).withOptions({clearOnDefault:!0,shallow:d,throttleMs:o})),k=(0,f.useDebouncedCallback)(F,i),[$,T]=(0,t.useQueryState)("joinOperator",(0,t.parseAsStringEnum)(["e","ou"]).withDefault("e").withOptions({clearOnDefault:!0,shallow:d})),O=r.useCallback(()=>{let e=I[0];e&&k([...D,{id:e.id,value:"",variant:e.columnDef.meta?.variant??"text",operator:(0,x.getDefaultFilterOperator)(e.columnDef.meta?.variant??"text"),filterId:(0,v.generateId)({length:8})}])},[I,D,k]),B=r.useCallback((e,a)=>{k(t=>t.map(t=>t.filterId===e?{...t,...a}:t))},[k]),E=r.useCallback(e=>{F(D.filter(a=>a.filterId!==e)),requestAnimationFrame(()=>{S.current?.focus()})},[D,F]),z=r.useCallback(()=>{F(null),T("e")},[F,T]);r.useEffect(()=>{function e(e){!(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement)&&("f"!==e.key.toLowerCase()||e.ctrlKey||e.metaKey||e.shiftKey||(e.preventDefault(),N(!0)),"f"===e.key.toLowerCase()&&e.shiftKey&&D.length>0&&(e.preventDefault(),E(D[D.length-1]?.filterId??"")))}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[D,E]);let L=r.useCallback(e=>{w.includes(e.key.toLowerCase())&&D.length>0&&(e.preventDefault(),E(D[D.length-1]?.filterId??""))},[D,E]);return(0,e.jsxs)(p.Sortable,{value:D,onValueChange:F,getItemValue:e=>e.filterId,children:[(0,e.jsxs)(m.Popover,{open:y,onOpenChange:N,children:[(0,e.jsx)(m.PopoverTrigger,{asChild:!0,children:(0,e.jsxs)(n.Button,{variant:"secondary",size:"sm",onKeyDown:L,children:[(0,e.jsx)(a.FunnelSimple,{weight:"bold"}),"Filtro",D.length>0&&(0,e.jsx)(l.Badge,{variant:"secondary",className:"h-[18.24px] rounded-[3.2px] px-[5.12px] font-mono font-normal text-[10.4px]",children:D.length})]})}),(0,e.jsxs)(m.PopoverContent,{"aria-describedby":j,"aria-labelledby":h,className:"flex w-full max-w-[var(--radix-popover-content-available-width)] origin-[var(--radix-popover-content-transform-origin)] flex-col gap-3.5 p-4 sm:min-w-[380px]",...c,children:[(0,e.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,e.jsx)("h4",{id:h,className:"font-medium leading-none",children:D.length>0?"Filtros":"Nenhum filtro aplicado"}),(0,e.jsx)("p",{id:j,className:(0,b.cn)("text-gray-400 text-sm",D.length>0&&"sr-only"),children:D.length>0?"Modifique os filtros para filtrar suas linhas.":"Adicione filtros para filtrar suas linhas."})]}),D.length>0?(0,e.jsx)(p.SortableContent,{asChild:!0,children:(0,e.jsx)("div",{role:"list",className:"flex max-h-[300px] flex-col gap-2 overflow-y-auto p-1",children:D.map((a,t)=>(0,e.jsx)(C,{filter:a,index:t,filterItemId:`${u}-filter-${a.filterId}`,joinOperator:$,setJoinOperator:T,columns:I,onFilterUpdate:B,onFilterRemove:E},a.filterId))})}):null,(0,e.jsxs)("div",{className:"flex w-full items-center gap-2",children:[(0,e.jsx)(n.Button,{size:"sm",className:"rounded",ref:S,onClick:O,children:"Adicionar filtro"}),D.length>0?(0,e.jsx)(n.Button,{variant:"secondary",size:"sm",className:"rounded",onClick:z,children:"Resetar filtros"}):null]})]})]}),(0,e.jsx)(p.SortableOverlay,{children:(0,e.jsxs)("div",{className:"flex items-center gap-2",children:[(0,e.jsx)("div",{className:"h-10 min-w-[72px] rounded-sm bg-primary/10"}),(0,e.jsx)("div",{className:"h-10 w-32 rounded-sm bg-primary/10"}),(0,e.jsx)("div",{className:"h-10 w-32 rounded-sm bg-primary/10"}),(0,e.jsx)("div",{className:"h-10 min-w-36 flex-1 rounded-sm bg-primary/10"}),(0,e.jsx)("div",{className:"size-8 shrink-0 rounded-sm bg-primary/10"}),(0,e.jsx)("div",{className:"size-8 shrink-0 rounded-sm bg-primary/10"})]})})]})}function C({filter:t,index:l,filterItemId:f,joinOperator:v,setJoinOperator:g,columns:y,onFilterUpdate:C,onFilterRemove:N}){let[S,I]=r.useState(!1),[D,F]=r.useState(!1),[k,$]=r.useState(!1),T=y.find(e=>e.id===t.id);if(!T)return null;let O=`${f}-join-operator-listbox`,B=`${f}-field-listbox`,E=`${f}-operator-listbox`,z=`${f}-input`,L=T.columnDef.meta,A=(0,x.getFilterOperators)(t.variant),V=r.useCallback(e=>{!(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement)&&(S||D||k||w.includes(e.key.toLowerCase())&&(e.preventDefault(),N(t.filterId)))},[t.filterId,S,D,k,N]);return(0,e.jsx)(p.SortableItem,{value:t.filterId,asChild:!0,children:(0,e.jsxs)("div",{role:"listitem",id:f,tabIndex:-1,className:"flex items-center gap-2",onKeyDown:V,children:[(0,e.jsx)("div",{className:"min-w-[72px] text-center",children:0===l?(0,e.jsx)("span",{className:"text-gray-400 text-sm",children:"Onde"}):1===l?(0,e.jsxs)(u.Select,{value:v,onValueChange:e=>g(e),children:[(0,e.jsx)(u.SelectTrigger,{"aria-label":"Select join operator","aria-controls":O,className:"h-10 rounded lowercase [&[data-size]]:h-10",children:(0,e.jsx)(u.SelectValue,{placeholder:v})}),(0,e.jsx)(u.SelectContent,{id:O,position:"popper",className:"min-w-(--radix-select-trigger-width) lowercase",children:h.dataTableConfig.joinOperators.map(a=>(0,e.jsx)(u.SelectItem,{value:a,children:a},a))})]}):(0,e.jsx)("span",{className:"text-gray-400 text-sm",children:v})}),(0,e.jsxs)(m.Popover,{open:S,onOpenChange:I,children:[(0,e.jsx)(m.PopoverTrigger,{asChild:!0,children:(0,e.jsxs)(n.Button,{role:"combobox","aria-controls":B,variant:"secondary",size:"sm",className:"w-32 justify-between rounded font-normal",children:[(0,e.jsx)("span",{className:"truncate",children:y.find(e=>e.id===t.id)?.columnDef.meta?.label??"Selecione o campo"}),(0,e.jsx)(a.CaretUpDown,{className:"opacity-50"})]})}),(0,e.jsx)(m.PopoverContent,{id:B,align:"start",className:"w-40 origin-[var(--radix-popover-content-transform-origin)] p-0",children:(0,e.jsxs)(i.Command,{children:[(0,e.jsx)(i.CommandInput,{placeholder:"Buscar campo..."}),(0,e.jsxs)(i.CommandList,{children:[(0,e.jsx)(i.CommandEmpty,{children:"Nenhum campo encontrado."}),(0,e.jsx)(i.CommandGroup,{children:y.map(r=>(0,e.jsxs)(i.CommandItem,{value:r.id,onSelect:e=>{C(t.filterId,{id:e,variant:r.columnDef.meta?.variant??"text",operator:(0,x.getDefaultFilterOperator)(r.columnDef.meta?.variant??"text"),value:""}),I(!1)},children:[(0,e.jsx)("span",{className:"truncate",children:r.columnDef.meta?.label}),(0,e.jsx)(a.Check,{className:(0,b.cn)("ml-auto",r.id===t.id?"opacity-100":"opacity-0")})]},r.id))})]})]})})]}),(0,e.jsxs)(u.Select,{open:D,onOpenChange:F,value:t.operator,onValueChange:e=>C(t.filterId,{operator:e,value:"isEmpty"===e||"isNotEmpty"===e?"":t.value}),children:[(0,e.jsx)(u.SelectTrigger,{"aria-controls":E,className:"h-10 w-32 rounded lowercase [&[data-size]]:h-10",children:(0,e.jsx)("div",{className:"truncate",children:(0,e.jsx)(u.SelectValue,{placeholder:t.operator})})}),(0,e.jsx)(u.SelectContent,{id:E,className:"origin-[var(--radix-select-content-transform-origin)]",children:A.map(a=>(0,e.jsx)(u.SelectItem,{value:a.value,className:"lowercase",children:a.label},a.value))})]}),(0,e.jsx)("div",{className:"min-w-36 flex-1",children:function({filter:t,inputId:r,column:l,columnMeta:i,onFilterUpdate:p,showValueSelector:f,setShowValueSelector:x}){if("isEmpty"===t.operator||"isNotEmpty"===t.operator)return(0,e.jsx)("div",{id:r,role:"status","aria-label":`${i?.label} filter is ${"isEmpty"===t.operator?"empty":"not empty"}`,"aria-live":"polite",className:"h-10 w-full rounded border bg-transparent dark:bg-input/30"});switch(t.variant){case"text":case"number":case"range":{if("range"===t.variant&&"isBetween"===t.operator||"isBetween"===t.operator)return(0,e.jsx)(o.DataTableRangeFilter,{filter:t,column:l,inputId:r,onFilterUpdate:p});let a="number"===t.variant||"range"===t.variant;return(0,e.jsx)(c.Input,{id:r,type:a?"number":t.variant,"aria-label":`${i?.label} filter value`,"aria-describedby":`${r}-description`,inputMode:a?"numeric":void 0,placeholder:i?.placeholder??"Enter a value...",className:"h-10 w-full rounded",defaultValue:"string"==typeof t.value?t.value:void 0,onChange:e=>p(t.filterId,{value:e.target.value})})}case"boolean":{if(Array.isArray(t.value))return null;let a=`${r}-listbox`;return(0,e.jsxs)(u.Select,{open:f,onOpenChange:x,value:t.value,onValueChange:e=>p(t.filterId,{value:e}),children:[(0,e.jsx)(u.SelectTrigger,{id:r,"aria-controls":a,"aria-label":`${i?.label} boolean filter`,className:"h-10 w-full rounded [&[data-size]]:h-10",children:(0,e.jsx)(u.SelectValue,{placeholder:t.value?"True":"False"})}),(0,e.jsxs)(u.SelectContent,{id:a,children:[(0,e.jsx)(u.SelectItem,{value:"true",children:"True"}),(0,e.jsx)(u.SelectItem,{value:"false",children:"False"})]})]})}case"select":case"multiSelect":{let a=`${r}-listbox`,l="multiSelect"===t.variant,s=l?Array.isArray(t.value)?t.value:[]:"string"==typeof t.value?t.value:void 0;return(0,e.jsxs)(d.Faceted,{open:f,onOpenChange:x,value:s,onValueChange:e=>{p(t.filterId,{value:e})},multiple:l,children:[(0,e.jsx)(d.FacetedTrigger,{asChild:!0,children:(0,e.jsx)(n.Button,{id:r,"aria-controls":a,"aria-label":`${i?.label} filter value${l?"s":""}`,variant:"outline",size:"sm",className:"w-full rounded font-normal",children:(0,e.jsx)(d.FacetedBadgeList,{options:i?.options,placeholder:i?.placeholder??`Select option${l?"s":""}...`})})}),(0,e.jsxs)(d.FacetedContent,{id:a,className:"w-[200px] origin-[var(--radix-popover-content-transform-origin)]",children:[(0,e.jsx)(d.FacetedInput,{"aria-label":`Search ${i?.label} options`,placeholder:i?.placeholder??"Search options..."}),(0,e.jsxs)(d.FacetedList,{children:[(0,e.jsx)(d.FacetedEmpty,{children:"Nenhum resultado"}),(0,e.jsx)(d.FacetedGroup,{children:i?.options?.map(a=>(0,e.jsxs)(d.FacetedItem,{value:a.value,children:[a.icon&&(0,e.jsx)(a.icon,{}),(0,e.jsx)("span",{children:a.label}),a.count&&(0,e.jsx)("span",{className:"ml-auto font-mono text-xs",children:a.count})]},a.value))})]})]})]})}case"date":case"dateRange":{let l=`${r}-listbox`,o=Array.isArray(t.value)?t.value.filter(Boolean):[t.value,t.value].filter(Boolean),d="isBetween"===t.operator&&2===o.length?`${(0,j.formatDate)(new Date(Number(o[0])))} - ${(0,j.formatDate)(new Date(Number(o[1])))}`:o[0]?(0,j.formatDate)(new Date(Number(o[0]))):"Escolha uma data";return(0,e.jsxs)(m.Popover,{open:f,onOpenChange:x,children:[(0,e.jsx)(m.PopoverTrigger,{asChild:!0,children:(0,e.jsxs)(n.Button,{id:r,"aria-controls":l,"aria-label":`${i?.label} date filter`,variant:"secondary",size:"sm",className:(0,b.cn)("w-full justify-start rounded text-left font-normal",!t.value&&"text-gray-400"),children:[(0,e.jsx)(a.CalendarBlank,{weight:"bold"}),(0,e.jsx)("span",{className:"truncate text-sm",children:d})]})}),(0,e.jsx)(m.PopoverContent,{id:l,align:"start",className:"w-auto origin-[var(--radix-popover-content-transform-origin)] p-0",children:"isBetween"===t.operator?(0,e.jsx)(s.Calendar,{"aria-label":`Select ${i?.label} date range`,mode:"range",selected:2===o.length?{from:new Date(Number(o[0])),to:new Date(Number(o[1]))}:{from:new Date,to:new Date},onSelect:e=>{p(t.filterId,{value:e?[(e.from?.getTime()??"").toString(),(e.to?.getTime()??"").toString()]:[]})}}):(0,e.jsx)(s.Calendar,{"aria-label":`Select ${i?.label} date`,mode:"single",selected:o[0]?new Date(Number(o[0])):void 0,onSelect:e=>{p(t.filterId,{value:(e?.getTime()??"").toString()})}})})]})}default:return null}}({filter:t,inputId:z,column:T,columnMeta:L,onFilterUpdate:C,showValueSelector:k,setShowValueSelector:$})}),(0,e.jsx)(n.Button,{"aria-controls":f,variant:"secondary",size:"icon",className:"size-8 rounded",onClick:()=>N(t.filterId),children:(0,e.jsx)(a.Trash,{weight:"bold"})}),(0,e.jsx)(p.SortableItemHandle,{asChild:!0,children:(0,e.jsx)(n.Button,{variant:"secondary",size:"icon",className:"size-8 rounded",children:(0,e.jsx)(a.DotsSixVertical,{weight:"bold"})})})]})})}export{y as DataTableFilterList};
2
+ import*as e from"react/jsx-runtime";import*as a from"@phosphor-icons/react";import*as t from"nuqs";import*as l from"react";import*as r from"../badge.js";import*as n from"../button.js";import*as i from"../calendar.js";import*as s from"../command.js";import*as o from"./data-table-range-filter.js";import*as d from"../faceted.js";import*as c from"../input.js";import*as m from"../popover.js";import*as u from"../select.js";import*as p from"../sortable.js";import*as f from"../../hooks/use-debounced-callback.js";import*as x from"../../lib/data-table.js";import*as h from"../../lib/data-table-config.js";import*as j from"../../lib/format.js";import*as v from"../../lib/id.js";import*as g from"../../lib/parsers.js";import*as b from"../../lib/utils.js";let w=["backspace","delete"];function C({table:i,debounceMs:s=300,throttleMs:o=50,shallow:d=!0,...c}){let u=l.useId(),h=l.useId(),j=l.useId(),[C,y]=l.useState(!1),I=l.useRef(null),S=l.useMemo(()=>i.getAllColumns().filter(e=>e.columnDef.enableColumnFilter),[i]),[D,F]=(0,t.useQueryState)("filters",(0,g.getFiltersStateParser)(S.map(e=>e.id)).withDefault([]).withOptions({clearOnDefault:!0,shallow:d,throttleMs:o})),k=(0,f.useDebouncedCallback)(F,s),[$,T]=(0,t.useQueryState)("joinOperator",(0,t.parseAsStringEnum)(["e","ou"]).withDefault("e").withOptions({clearOnDefault:!0,shallow:d})),O=l.useCallback(()=>{let e=S[0];e&&k([...D,{id:e.id,value:"",variant:e.columnDef.meta?.variant??"text",operator:(0,x.getDefaultFilterOperator)(e.columnDef.meta?.variant??"text"),filterId:(0,v.generateId)({length:8})}])},[S,D,k]),B=l.useCallback((e,a)=>{k(t=>t.map(t=>t.filterId===e?{...t,...a}:t))},[k]),E=l.useCallback(e=>{F(D.filter(a=>a.filterId!==e)),requestAnimationFrame(()=>{I.current?.focus()})},[D,F]),z=l.useCallback(()=>{F(null),T("e")},[F,T]);l.useEffect(()=>{function e(e){!(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement)&&("f"!==e.key.toLowerCase()||e.ctrlKey||e.metaKey||e.shiftKey||(e.preventDefault(),y(!0)),"f"===e.key.toLowerCase()&&e.shiftKey&&D.length>0&&(e.preventDefault(),E(D[D.length-1]?.filterId??"")))}return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[D,E]);let L=l.useCallback(e=>{w.includes(e.key.toLowerCase())&&D.length>0&&(e.preventDefault(),E(D[D.length-1]?.filterId??""))},[D,E]);return(0,e.jsxs)(p.Sortable,{value:D,onValueChange:F,getItemValue:e=>e.filterId,children:[(0,e.jsxs)(m.Popover,{open:C,onOpenChange:y,children:[(0,e.jsx)(m.PopoverTrigger,{asChild:!0,children:(0,e.jsxs)(n.Button,{variant:"outline",size:"sm",onKeyDown:L,children:[(0,e.jsx)(a.FunnelSimpleIcon,{weight:"bold"}),"Filtro",D.length>0&&(0,e.jsx)(r.Badge,{variant:"secondary",className:"h-[18.24px] rounded-[3.2px] px-[5.12px] font-mono font-normal text-[10.4px]",children:D.length})]})}),(0,e.jsxs)(m.PopoverContent,{"aria-describedby":j,"aria-labelledby":h,className:"flex w-full max-w-[var(--radix-popover-content-available-width)] origin-[var(--radix-popover-content-transform-origin)] flex-col gap-3.5 p-4 sm:min-w-[380px]",...c,children:[(0,e.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,e.jsx)("h4",{id:h,className:"font-medium leading-none",children:D.length>0?"Filtros":"Nenhum filtro aplicado"}),(0,e.jsx)("p",{id:j,className:(0,b.cn)("text-gray-400 text-sm",D.length>0&&"sr-only"),children:D.length>0?"Modifique os filtros para filtrar suas linhas.":"Adicione filtros para filtrar suas linhas."})]}),D.length>0?(0,e.jsx)(p.SortableContent,{asChild:!0,children:(0,e.jsx)("div",{role:"list",className:"flex max-h-[300px] flex-col gap-2 overflow-y-auto p-1",children:D.map((a,t)=>(0,e.jsx)(N,{filter:a,index:t,filterItemId:`${u}-filter-${a.filterId}`,joinOperator:$,setJoinOperator:T,columns:S,onFilterUpdate:B,onFilterRemove:E},a.filterId))})}):null,(0,e.jsxs)("div",{className:"flex w-full items-center gap-2",children:[(0,e.jsx)(n.Button,{size:"sm",className:"rounded",ref:I,onClick:O,children:"Adicionar filtro"}),D.length>0?(0,e.jsx)(n.Button,{variant:"outline",size:"sm",className:"rounded",onClick:z,children:"Resetar filtros"}):null]})]})]}),(0,e.jsx)(p.SortableOverlay,{children:(0,e.jsxs)("div",{className:"flex items-center gap-2",children:[(0,e.jsx)("div",{className:"h-10 min-w-[72px] rounded-sm bg-primary/10"}),(0,e.jsx)("div",{className:"h-10 w-32 rounded-sm bg-primary/10"}),(0,e.jsx)("div",{className:"h-10 w-32 rounded-sm bg-primary/10"}),(0,e.jsx)("div",{className:"h-10 min-w-36 flex-1 rounded-sm bg-primary/10"}),(0,e.jsx)("div",{className:"size-8 shrink-0 rounded-sm bg-primary/10"}),(0,e.jsx)("div",{className:"size-8 shrink-0 rounded-sm bg-primary/10"})]})})]})}function N({filter:t,index:r,filterItemId:f,joinOperator:v,setJoinOperator:g,columns:C,onFilterUpdate:N,onFilterRemove:y}){let[I,S]=l.useState(!1),[D,F]=l.useState(!1),[k,$]=l.useState(!1),T=C.find(e=>e.id===t.id);if(!T)return null;let O=`${f}-join-operator-listbox`,B=`${f}-field-listbox`,E=`${f}-operator-listbox`,z=`${f}-input`,L=T.columnDef.meta,A=(0,x.getFilterOperators)(t.variant),V=l.useCallback(e=>{!(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement)&&(I||D||k||w.includes(e.key.toLowerCase())&&(e.preventDefault(),y(t.filterId)))},[t.filterId,I,D,k,y]);return(0,e.jsx)(p.SortableItem,{value:t.filterId,asChild:!0,children:(0,e.jsxs)("div",{role:"listitem",id:f,tabIndex:-1,className:"flex items-center gap-2",onKeyDown:V,children:[(0,e.jsx)("div",{className:"min-w-[72px] text-center",children:0===r?(0,e.jsx)("span",{className:"text-gray-400 text-sm",children:"Onde"}):1===r?(0,e.jsxs)(u.Select,{value:v,onValueChange:e=>g(e),children:[(0,e.jsx)(u.SelectTrigger,{"aria-label":"Select join operator","aria-controls":O,className:"h-10 rounded lowercase [&[data-size]]:h-10",children:(0,e.jsx)(u.SelectValue,{placeholder:v})}),(0,e.jsx)(u.SelectContent,{id:O,position:"popper",className:"min-w-(--radix-select-trigger-width) lowercase",children:h.dataTableConfig.joinOperators.map(a=>(0,e.jsx)(u.SelectItem,{value:a,children:a},a))})]}):(0,e.jsx)("span",{className:"text-gray-400 text-sm",children:v})}),(0,e.jsxs)(m.Popover,{open:I,onOpenChange:S,children:[(0,e.jsx)(m.PopoverTrigger,{asChild:!0,children:(0,e.jsxs)(n.Button,{role:"combobox","aria-controls":B,variant:"outline",size:"sm",className:"w-32 justify-between rounded font-normal",children:[(0,e.jsx)("span",{className:"truncate",children:C.find(e=>e.id===t.id)?.columnDef.meta?.label??"Selecione o campo"}),(0,e.jsx)(a.CaretUpDownIcon,{className:"opacity-50"})]})}),(0,e.jsx)(m.PopoverContent,{id:B,align:"start",className:"w-40 origin-[var(--radix-popover-content-transform-origin)] p-0",children:(0,e.jsxs)(s.Command,{children:[(0,e.jsx)(s.CommandInput,{placeholder:"Buscar campo..."}),(0,e.jsxs)(s.CommandList,{children:[(0,e.jsx)(s.CommandEmpty,{children:"Nenhum campo encontrado."}),(0,e.jsx)(s.CommandGroup,{children:C.map(l=>(0,e.jsxs)(s.CommandItem,{value:l.id,onSelect:e=>{N(t.filterId,{id:e,variant:l.columnDef.meta?.variant??"text",operator:(0,x.getDefaultFilterOperator)(l.columnDef.meta?.variant??"text"),value:""}),S(!1)},children:[(0,e.jsx)("span",{className:"truncate",children:l.columnDef.meta?.label}),(0,e.jsx)(a.CheckIcon,{className:(0,b.cn)("ml-auto",l.id===t.id?"opacity-100":"opacity-0")})]},l.id))})]})]})})]}),(0,e.jsxs)(u.Select,{open:D,onOpenChange:F,value:t.operator,onValueChange:e=>N(t.filterId,{operator:e,value:"isEmpty"===e||"isNotEmpty"===e?"":t.value}),children:[(0,e.jsx)(u.SelectTrigger,{"aria-controls":E,className:"h-10 w-32 rounded lowercase [&[data-size]]:h-10",children:(0,e.jsx)("div",{className:"truncate",children:(0,e.jsx)(u.SelectValue,{placeholder:t.operator})})}),(0,e.jsx)(u.SelectContent,{id:E,className:"origin-[var(--radix-select-content-transform-origin)]",children:A.map(a=>(0,e.jsx)(u.SelectItem,{value:a.value,className:"lowercase",children:a.label},a.value))})]}),(0,e.jsx)("div",{className:"min-w-36 flex-1",children:function({filter:t,inputId:l,column:r,columnMeta:s,onFilterUpdate:p,showValueSelector:f,setShowValueSelector:x}){if("isEmpty"===t.operator||"isNotEmpty"===t.operator)return(0,e.jsx)("div",{id:l,role:"status","aria-label":`${s?.label} filter is ${"isEmpty"===t.operator?"empty":"not empty"}`,"aria-live":"polite",className:"h-10 w-full rounded border bg-transparent dark:bg-input/30"});switch(t.variant){case"text":case"number":case"range":{if("range"===t.variant&&"isBetween"===t.operator||"isBetween"===t.operator)return(0,e.jsx)(o.DataTableRangeFilter,{filter:t,column:r,inputId:l,onFilterUpdate:p});let a="number"===t.variant||"range"===t.variant;return(0,e.jsx)(c.Input,{id:l,type:a?"number":t.variant,"aria-label":`${s?.label} filter value`,"aria-describedby":`${l}-description`,inputMode:a?"numeric":void 0,placeholder:s?.placeholder??"Enter a value...",className:"h-10 w-full rounded",defaultValue:"string"==typeof t.value?t.value:void 0,onChange:e=>p(t.filterId,{value:e.target.value})})}case"boolean":{if(Array.isArray(t.value))return null;let a=`${l}-listbox`;return(0,e.jsxs)(u.Select,{open:f,onOpenChange:x,value:t.value,onValueChange:e=>p(t.filterId,{value:e}),children:[(0,e.jsx)(u.SelectTrigger,{id:l,"aria-controls":a,"aria-label":`${s?.label} boolean filter`,className:"h-10 w-full rounded [&[data-size]]:h-10",children:(0,e.jsx)(u.SelectValue,{placeholder:t.value?"True":"False"})}),(0,e.jsxs)(u.SelectContent,{id:a,children:[(0,e.jsx)(u.SelectItem,{value:"true",children:"True"}),(0,e.jsx)(u.SelectItem,{value:"false",children:"False"})]})]})}case"select":case"multiSelect":{let a=`${l}-listbox`,r="multiSelect"===t.variant,i=r?Array.isArray(t.value)?t.value:[]:"string"==typeof t.value?t.value:void 0;return(0,e.jsxs)(d.Faceted,{open:f,onOpenChange:x,value:i,onValueChange:e=>{p(t.filterId,{value:e})},multiple:r,children:[(0,e.jsx)(d.FacetedTrigger,{asChild:!0,children:(0,e.jsx)(n.Button,{id:l,"aria-controls":a,"aria-label":`${s?.label} filter value${r?"s":""}`,variant:"outline",size:"sm",className:"w-full rounded font-normal",children:(0,e.jsx)(d.FacetedBadgeList,{options:s?.options,placeholder:s?.placeholder??`Select option${r?"s":""}...`})})}),(0,e.jsxs)(d.FacetedContent,{id:a,className:"w-[200px] origin-[var(--radix-popover-content-transform-origin)]",children:[(0,e.jsx)(d.FacetedInput,{"aria-label":`Search ${s?.label} options`,placeholder:s?.placeholder??"Search options..."}),(0,e.jsxs)(d.FacetedList,{children:[(0,e.jsx)(d.FacetedEmpty,{children:"Nenhum resultado"}),(0,e.jsx)(d.FacetedGroup,{children:s?.options?.map(a=>(0,e.jsxs)(d.FacetedItem,{value:a.value,children:[a.icon&&(0,e.jsx)(a.icon,{}),(0,e.jsx)("span",{children:a.label}),a.count&&(0,e.jsx)("span",{className:"ml-auto font-mono text-xs",children:a.count})]},a.value))})]})]})]})}case"date":case"dateRange":{let r=`${l}-listbox`,o=Array.isArray(t.value)?t.value.filter(Boolean):[t.value,t.value].filter(Boolean),d="isBetween"===t.operator&&2===o.length?`${(0,j.formatDate)(new Date(Number(o[0])))} - ${(0,j.formatDate)(new Date(Number(o[1])))}`:o[0]?(0,j.formatDate)(new Date(Number(o[0]))):"Escolha uma data";return(0,e.jsxs)(m.Popover,{open:f,onOpenChange:x,children:[(0,e.jsx)(m.PopoverTrigger,{asChild:!0,children:(0,e.jsxs)(n.Button,{id:l,"aria-controls":r,"aria-label":`${s?.label} date filter`,variant:"outline",size:"sm",className:(0,b.cn)("w-full justify-start rounded text-left font-normal",!t.value&&"text-gray-400"),children:[(0,e.jsx)(a.CalendarBlankIcon,{weight:"bold"}),(0,e.jsx)("span",{className:"truncate text-sm",children:d})]})}),(0,e.jsx)(m.PopoverContent,{id:r,align:"start",className:"w-auto origin-[var(--radix-popover-content-transform-origin)] p-0",children:"isBetween"===t.operator?(0,e.jsx)(i.Calendar,{"aria-label":`Select ${s?.label} date range`,mode:"range",selected:2===o.length?{from:new Date(Number(o[0])),to:new Date(Number(o[1]))}:{from:new Date,to:new Date},onSelect:e=>{p(t.filterId,{value:e?[(e.from?.getTime()??"").toString(),(e.to?.getTime()??"").toString()]:[]})}}):(0,e.jsx)(i.Calendar,{"aria-label":`Select ${s?.label} date`,mode:"single",selected:o[0]?new Date(Number(o[0])):void 0,onSelect:e=>{p(t.filterId,{value:(e?.getTime()??"").toString()})}})})]})}default:return null}}({filter:t,inputId:z,column:T,columnMeta:L,onFilterUpdate:N,showValueSelector:k,setShowValueSelector:$})}),(0,e.jsx)(n.Button,{"aria-controls":f,variant:"outline",size:"icon",className:"size-8 rounded",onClick:()=>y(t.filterId),children:(0,e.jsx)(a.TrashIcon,{weight:"bold"})}),(0,e.jsx)(p.SortableItemHandle,{asChild:!0,children:(0,e.jsx)(n.Button,{variant:"outline",size:"icon",className:"size-8 rounded",children:(0,e.jsx)(a.DotsSixVerticalIcon,{weight:"bold"})})})]})})}export{C as DataTableFilterList};
3
3
  //# sourceMappingURL=data-table-filter-list.js.map