@etus/ui 0.4.0-beta.20 → 0.4.0-beta.22
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.
- package/dist/{chunk-KBU4KJKC.js → chunk-2DFFIU44.js} +4 -4
- package/dist/{chunk-KBU4KJKC.js.map → chunk-2DFFIU44.js.map} +1 -1
- package/dist/{chunk-YMCKML6D.js → chunk-2JDLQ4VR.js} +4 -4
- package/dist/{chunk-YMCKML6D.js.map → chunk-2JDLQ4VR.js.map} +1 -1
- package/dist/{chunk-JE46MFMN.js → chunk-2LVRSLWI.js} +4 -4
- package/dist/{chunk-JE46MFMN.js.map → chunk-2LVRSLWI.js.map} +1 -1
- package/dist/{chunk-GRODCJS4.js → chunk-2VOKY2TU.js} +4 -4
- package/dist/{chunk-GRODCJS4.js.map → chunk-2VOKY2TU.js.map} +1 -1
- package/dist/{chunk-UC5J6GWG.js → chunk-3TRT6TKW.js} +6 -6
- package/dist/chunk-3TRT6TKW.js.map +1 -0
- package/dist/{chunk-UZZCEQH4.js → chunk-3XVOI4HK.js} +3 -3
- package/dist/{chunk-UZZCEQH4.js.map → chunk-3XVOI4HK.js.map} +1 -1
- package/dist/{chunk-WGKOYZRI.js → chunk-4S6CPTSO.js} +5 -5
- package/dist/chunk-4S6CPTSO.js.map +1 -0
- package/dist/{chunk-GVNG5ME6.js → chunk-6CO3FRGG.js} +201 -17
- package/dist/chunk-6CO3FRGG.js.map +1 -0
- package/dist/chunk-7MJS37Q4.js +135 -0
- package/dist/chunk-7MJS37Q4.js.map +1 -0
- package/dist/{chunk-QXET2TML.js → chunk-A33MLHXO.js} +3 -3
- package/dist/{chunk-QXET2TML.js.map → chunk-A33MLHXO.js.map} +1 -1
- package/dist/{chunk-STADVFL2.js → chunk-A6BDDZ27.js} +3 -3
- package/dist/{chunk-STADVFL2.js.map → chunk-A6BDDZ27.js.map} +1 -1
- package/dist/{chunk-WSDWJX4Y.js → chunk-AGXEGVSY.js} +3 -3
- package/dist/{chunk-WSDWJX4Y.js.map → chunk-AGXEGVSY.js.map} +1 -1
- package/dist/{chunk-R42LSLJL.js → chunk-AOLVER6U.js} +3 -3
- package/dist/{chunk-R42LSLJL.js.map → chunk-AOLVER6U.js.map} +1 -1
- package/dist/{chunk-YMQDTTO7.js → chunk-CEUARW3D.js} +3 -3
- package/dist/{chunk-YMQDTTO7.js.map → chunk-CEUARW3D.js.map} +1 -1
- package/dist/{chunk-LDK6ADKM.js → chunk-DZV32N5V.js} +4 -4
- package/dist/{chunk-LDK6ADKM.js.map → chunk-DZV32N5V.js.map} +1 -1
- package/dist/{chunk-2SUZS6GZ.js → chunk-E5UFATRY.js} +11 -3
- package/dist/chunk-E5UFATRY.js.map +1 -0
- package/dist/{chunk-RQBYBBMP.js → chunk-EINYBB7T.js} +5 -5
- package/dist/{chunk-RQBYBBMP.js.map → chunk-EINYBB7T.js.map} +1 -1
- package/dist/{chunk-4LZ53BAG.js → chunk-EKKJXJX7.js} +4 -2
- package/dist/chunk-EKKJXJX7.js.map +1 -0
- package/dist/{chunk-4OWRNWHW.js → chunk-FCVFYUCL.js} +14 -5
- package/dist/chunk-FCVFYUCL.js.map +1 -0
- package/dist/{chunk-6QVXMYKH.js → chunk-FGTYI4ZG.js} +3 -3
- package/dist/{chunk-6QVXMYKH.js.map → chunk-FGTYI4ZG.js.map} +1 -1
- package/dist/{chunk-6G5QK3SU.js → chunk-FLXU5LWR.js} +44 -4
- package/dist/chunk-FLXU5LWR.js.map +1 -0
- package/dist/{chunk-P4WMDGAQ.js → chunk-G5JO3Q3K.js} +3 -3
- package/dist/{chunk-P4WMDGAQ.js.map → chunk-G5JO3Q3K.js.map} +1 -1
- package/dist/{chunk-RMJVCJ6U.js → chunk-GKG2LRGY.js} +6 -6
- package/dist/chunk-GKG2LRGY.js.map +1 -0
- package/dist/{chunk-N7VMQWM3.js → chunk-GN6B4W3G.js} +4 -4
- package/dist/{chunk-N7VMQWM3.js.map → chunk-GN6B4W3G.js.map} +1 -1
- package/dist/chunk-GX2VJT7D.js +136 -0
- package/dist/chunk-GX2VJT7D.js.map +1 -0
- package/dist/{chunk-MNYU5MHO.js → chunk-H4KC2YSL.js} +5 -5
- package/dist/{chunk-MNYU5MHO.js.map → chunk-H4KC2YSL.js.map} +1 -1
- package/dist/{chunk-GLHKHYJY.js → chunk-IARO2PPN.js} +55 -15
- package/dist/chunk-IARO2PPN.js.map +1 -0
- package/dist/{chunk-ELRIFGMN.js → chunk-JWXZFGNT.js} +30 -6
- package/dist/chunk-JWXZFGNT.js.map +1 -0
- package/dist/{chunk-Y4FEW7SR.js → chunk-K5RHYIFF.js} +16 -6
- package/dist/chunk-K5RHYIFF.js.map +1 -0
- package/dist/{chunk-T3LWBCVR.js → chunk-LKCOHB3C.js} +36 -3
- package/dist/chunk-LKCOHB3C.js.map +1 -0
- package/dist/{chunk-7PX3WBR3.js → chunk-LWIIO75I.js} +5 -3
- package/dist/chunk-LWIIO75I.js.map +1 -0
- package/dist/{chunk-U7TPJMGY.js → chunk-MR3IPJAO.js} +6 -2
- package/dist/chunk-MR3IPJAO.js.map +1 -0
- package/dist/chunk-MVL4DVRW.js +177 -0
- package/dist/chunk-MVL4DVRW.js.map +1 -0
- package/dist/{chunk-L4OQ6BJ5.js → chunk-N3DBRKUS.js} +3 -3
- package/dist/{chunk-L4OQ6BJ5.js.map → chunk-N3DBRKUS.js.map} +1 -1
- package/dist/{chunk-TIPKU427.js → chunk-N7DAU4LE.js} +3 -3
- package/dist/{chunk-TIPKU427.js.map → chunk-N7DAU4LE.js.map} +1 -1
- package/dist/{chunk-ZVSMLMMS.js → chunk-NORI6ECA.js} +44 -4
- package/dist/chunk-NORI6ECA.js.map +1 -0
- package/dist/{chunk-NLPVF34P.js → chunk-NT4GLWNR.js} +14 -9
- package/dist/chunk-NT4GLWNR.js.map +1 -0
- package/dist/{chunk-7AR5QRRX.js → chunk-NZNAR4HJ.js} +27 -11
- package/dist/chunk-NZNAR4HJ.js.map +1 -0
- package/dist/{chunk-TNSMTINE.js → chunk-OJIFG4LW.js} +3 -3
- package/dist/{chunk-TNSMTINE.js.map → chunk-OJIFG4LW.js.map} +1 -1
- package/dist/{chunk-PTXC4KPQ.js → chunk-OSHGYI2O.js} +4 -4
- package/dist/{chunk-PTXC4KPQ.js.map → chunk-OSHGYI2O.js.map} +1 -1
- package/dist/chunk-OW5R4KST.js +108 -0
- package/dist/chunk-OW5R4KST.js.map +1 -0
- package/dist/{chunk-QJOWG2D4.js → chunk-PVF23ZX2.js} +3 -3
- package/dist/{chunk-QJOWG2D4.js.map → chunk-PVF23ZX2.js.map} +1 -1
- package/dist/{chunk-KHCHATTD.js → chunk-PYCQBP4O.js} +4 -4
- package/dist/{chunk-KHCHATTD.js.map → chunk-PYCQBP4O.js.map} +1 -1
- package/dist/{chunk-KDNTSZF5.js → chunk-Q4E7OG7J.js} +3 -3
- package/dist/{chunk-KDNTSZF5.js.map → chunk-Q4E7OG7J.js.map} +1 -1
- package/dist/{chunk-KLFYTLF3.js → chunk-Q7MAQ7MO.js} +3 -3
- package/dist/{chunk-KLFYTLF3.js.map → chunk-Q7MAQ7MO.js.map} +1 -1
- package/dist/{chunk-S6BREP2G.js → chunk-QMCQIOCP.js} +21 -7
- package/dist/chunk-QMCQIOCP.js.map +1 -0
- package/dist/{chunk-SSKSWSVO.js → chunk-R2Z64IC3.js} +4 -4
- package/dist/{chunk-SSKSWSVO.js.map → chunk-R2Z64IC3.js.map} +1 -1
- package/dist/{chunk-UNHPLKMR.js → chunk-RK27HS7W.js} +3 -3
- package/dist/{chunk-UNHPLKMR.js.map → chunk-RK27HS7W.js.map} +1 -1
- package/dist/{chunk-IKLFWGFS.js → chunk-RTSAERFS.js} +7 -7
- package/dist/{chunk-IKLFWGFS.js.map → chunk-RTSAERFS.js.map} +1 -1
- package/dist/{chunk-EO4NGM5W.js → chunk-S7HXZ5T3.js} +65 -16
- package/dist/chunk-S7HXZ5T3.js.map +1 -0
- package/dist/{chunk-I5RDX6O3.js → chunk-TBPPBA3S.js} +31 -25
- package/dist/chunk-TBPPBA3S.js.map +1 -0
- package/dist/{chunk-TDANAN5A.js → chunk-TD2EFGHO.js} +7 -3
- package/dist/chunk-TD2EFGHO.js.map +1 -0
- package/dist/{chunk-3R6MY3YJ.js → chunk-TVAIT3F5.js} +3 -3
- package/dist/{chunk-3R6MY3YJ.js.map → chunk-TVAIT3F5.js.map} +1 -1
- package/dist/{chunk-VHJ6ALIE.js → chunk-TX4GUAZ6.js} +11 -3
- package/dist/chunk-TX4GUAZ6.js.map +1 -0
- package/dist/{chunk-7XJQYAGY.js → chunk-U55YU7DB.js} +22 -6
- package/dist/chunk-U55YU7DB.js.map +1 -0
- package/dist/{chunk-5GV4LDX7.js → chunk-VI3QWOII.js} +4 -2
- package/dist/chunk-VI3QWOII.js.map +1 -0
- package/dist/{chunk-PXR6CZIL.js → chunk-VYCXCOUH.js} +3 -3
- package/dist/{chunk-PXR6CZIL.js.map → chunk-VYCXCOUH.js.map} +1 -1
- package/dist/{chunk-SKI25Q7O.js → chunk-W72PXQDH.js} +4 -4
- package/dist/{chunk-SKI25Q7O.js.map → chunk-W72PXQDH.js.map} +1 -1
- package/dist/{chunk-4SFBDK4E.js → chunk-WTKHA2NF.js} +3 -3
- package/dist/{chunk-4SFBDK4E.js.map → chunk-WTKHA2NF.js.map} +1 -1
- package/dist/{chunk-KXJ3SEW7.js → chunk-YNZ6T4IU.js} +13 -5
- package/dist/chunk-YNZ6T4IU.js.map +1 -0
- package/dist/{chunk-7QEFKWUR.js → chunk-YZBCJDYO.js} +4 -4
- package/dist/{chunk-7QEFKWUR.js.map → chunk-YZBCJDYO.js.map} +1 -1
- package/dist/{chunk-PVIIIQJI.js → chunk-ZTD3QXLY.js} +4 -4
- package/dist/{chunk-PVIIIQJI.js.map → chunk-ZTD3QXLY.js.map} +1 -1
- package/dist/{chunk-HHWUROMA.js → chunk-ZZFCKHE2.js} +4 -4
- package/dist/{chunk-HHWUROMA.js.map → chunk-ZZFCKHE2.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +3 -3
- package/dist/components/advanced/Command/index.js +2 -2
- package/dist/components/advanced/EventCalendar/index.js +3 -3
- package/dist/components/advanced/FilterBuilder/index.js +5 -5
- package/dist/components/advanced/MarkdownEditor/index.js +3 -3
- package/dist/components/advanced/ReportBuilder/index.js +4 -4
- package/dist/components/advanced/index.js +17 -17
- package/dist/components/data-display/Banner/index.js +1 -1
- package/dist/components/data-display/BarChart/index.js +1 -1
- package/dist/components/data-display/Carousel/index.js +3 -3
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +5 -5
- package/dist/components/data-display/DataTable/index.js +9 -9
- package/dist/components/data-display/ImageGallery/index.js +4 -4
- package/dist/components/data-display/Item/index.js +1 -1
- package/dist/components/data-display/KPICard/index.js +1 -1
- package/dist/components/data-display/List/index.js +2 -2
- package/dist/components/data-display/RadarChart/index.js +1 -1
- package/dist/components/data-display/RadialChart/index.js +1 -1
- package/dist/components/data-display/index.js +35 -35
- package/dist/components/feedback/AlertDialog/index.js +3 -3
- package/dist/components/feedback/ConfirmModal/index.js +4 -4
- package/dist/components/feedback/Dialog/index.js +1 -1
- package/dist/components/feedback/ErrorPage/index.js +1 -1
- package/dist/components/feedback/Notification/index.js +2 -2
- package/dist/components/feedback/index.js +9 -9
- package/dist/components/forms/DatePicker/index.js +4 -4
- package/dist/components/forms/DateRangePicker/index.js +5 -5
- package/dist/components/forms/EmailInput/index.js +3 -3
- package/dist/components/forms/InputGroup/index.js +5 -5
- package/dist/components/forms/NumberInput/index.js +2 -2
- package/dist/components/forms/PasswordInput/index.js +3 -3
- package/dist/components/forms/PaymentInput/index.js +1 -1
- package/dist/components/forms/PhoneInput/index.js +1 -1
- package/dist/components/forms/RadioGroup/index.js +1 -1
- package/dist/components/forms/Rating/index.js +1 -1
- package/dist/components/forms/SearchInput/index.js +3 -3
- package/dist/components/forms/Switch/index.js +1 -1
- package/dist/components/forms/TagsInput/index.js +1 -1
- package/dist/components/forms/TextInput/index.js +2 -2
- package/dist/components/forms/URLInput/index.js +3 -3
- package/dist/components/forms/index.js +33 -33
- package/dist/components/index.js +159 -159
- package/dist/components/layout/Collapsible/index.js +1 -1
- package/dist/components/layout/index.js +5 -5
- package/dist/components/navigation/AccountSwitch/index.js +3 -3
- package/dist/components/navigation/Breadcrumb/index.js +1 -1
- package/dist/components/navigation/ContextMenu/index.js +1 -1
- package/dist/components/navigation/DropdownMenu/index.js +1 -1
- package/dist/components/navigation/Pagination/index.js +3 -3
- package/dist/components/navigation/Sidebar/index.js +8 -7
- package/dist/components/navigation/index.js +18 -17
- package/dist/components/primitives/Avatar/index.js +1 -1
- package/dist/components/primitives/Button/index.js +2 -2
- package/dist/components/primitives/ButtonGroup/index.js +1 -1
- package/dist/components/primitives/ConfirmButton/index.js +4 -4
- package/dist/components/primitives/Icon/index.js +1 -1
- package/dist/components/primitives/Kbd/index.js +1 -1
- package/dist/components/primitives/Link/index.js +1 -1
- package/dist/components/primitives/ProgressCircle/index.js +1 -1
- package/dist/components/primitives/SplitButton/index.js +2 -2
- package/dist/components/primitives/Text/index.js +1 -1
- package/dist/components/primitives/index.js +18 -18
- package/dist/components/workflow/ApprovalFlow/index.js +4 -4
- package/dist/components/workflow/CommentSystem/index.js +4 -4
- package/dist/components/workflow/Dashboard/index.js +3 -3
- package/dist/components/workflow/DashboardBuilder/index.js +5 -5
- package/dist/components/workflow/KanbanBoard/index.js +4 -4
- package/dist/components/workflow/ReportGenerator/index.js +3 -3
- package/dist/components/workflow/TaskStatus/index.js +2 -2
- package/dist/components/workflow/Wizard/index.js +3 -3
- package/dist/components/workflow/index.js +17 -17
- package/dist/hooks/index.js +1 -1
- package/dist/index.d.ts +322 -49
- package/dist/index.js +159 -159
- package/dist/styles.css +27 -8
- package/package.json +2 -2
- package/dist/chunk-2SUZS6GZ.js.map +0 -1
- package/dist/chunk-4LZ53BAG.js.map +0 -1
- package/dist/chunk-4OWRNWHW.js.map +0 -1
- package/dist/chunk-5GV4LDX7.js.map +0 -1
- package/dist/chunk-6G5QK3SU.js.map +0 -1
- package/dist/chunk-6VEQLD2P.js +0 -75
- package/dist/chunk-6VEQLD2P.js.map +0 -1
- package/dist/chunk-7AR5QRRX.js.map +0 -1
- package/dist/chunk-7PX3WBR3.js.map +0 -1
- package/dist/chunk-7XJQYAGY.js.map +0 -1
- package/dist/chunk-ELRIFGMN.js.map +0 -1
- package/dist/chunk-EO4NGM5W.js.map +0 -1
- package/dist/chunk-GLHKHYJY.js.map +0 -1
- package/dist/chunk-GVNG5ME6.js.map +0 -1
- package/dist/chunk-I5RDX6O3.js.map +0 -1
- package/dist/chunk-JUZ4JQWH.js +0 -69
- package/dist/chunk-JUZ4JQWH.js.map +0 -1
- package/dist/chunk-K4UCALQQ.js +0 -67
- package/dist/chunk-K4UCALQQ.js.map +0 -1
- package/dist/chunk-KXJ3SEW7.js.map +0 -1
- package/dist/chunk-NLPVF34P.js.map +0 -1
- package/dist/chunk-RMJVCJ6U.js.map +0 -1
- package/dist/chunk-S6BREP2G.js.map +0 -1
- package/dist/chunk-T3LWBCVR.js.map +0 -1
- package/dist/chunk-TDANAN5A.js.map +0 -1
- package/dist/chunk-U7TPJMGY.js.map +0 -1
- package/dist/chunk-UC5J6GWG.js.map +0 -1
- package/dist/chunk-VHJ6ALIE.js.map +0 -1
- package/dist/chunk-WGKOYZRI.js.map +0 -1
- package/dist/chunk-WUS45IZW.js +0 -36
- package/dist/chunk-WUS45IZW.js.map +0 -1
- package/dist/chunk-Y4FEW7SR.js.map +0 -1
- package/dist/chunk-ZVSMLMMS.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/workflow/TaskStatus/TaskStatus.variants.ts","../src/components/workflow/TaskStatus/TaskStatus.tsx"],"names":[],"mappings":"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","file":"chunk-PXR6CZIL.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * TaskStatus container variants\n */\nexport const taskStatusVariants = cva(\n \"inline-flex items-center gap-1.5 font-medium transition-all duration-200\",\n {\n compoundVariants: [\n // Interactive states\n {\n className: \"cursor-pointer hover:opacity-80\",\n interactive: true,\n },\n {\n className: \"cursor-not-allowed opacity-50\",\n disabled: true,\n },\n ],\n defaultVariants: {\n disabled: false,\n interactive: false,\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n disabled: {\n false: \"\",\n true: \"\",\n },\n interactive: {\n false: \"\",\n true: \"\",\n },\n size: {\n default: \"px-3 py-1.5 text-sm\",\n lg: \"px-4 py-2 text-base\",\n sm: \"px-2 py-1 text-xs\",\n },\n variant: {\n default: \"rounded-md bg-muted\",\n outline: \"rounded-md border border-current bg-transparent\",\n pill: \"rounded-full bg-muted\",\n subtle: \"rounded-md bg-muted/30\",\n },\n },\n }\n)\n\n/**\n * Status-specific color variants using semantic tokens\n * Only applies text colors - background is controlled by variant prop\n */\nexport const taskStatusColorVariants = cva(\"\", {\n defaultVariants: {\n status: \"todo\",\n },\n variants: {\n status: {\n backlog: \"text-[color:var(--task-status-backlog-text)]\",\n blocked: \"text-[color:var(--task-status-blocked-text)]\",\n done: \"text-[color:var(--task-status-done-text)]\",\n \"in-progress\": \"text-[color:var(--task-status-in-progress-text)]\",\n \"in-review\": \"text-[color:var(--task-status-in-review-text)]\",\n todo: \"text-[color:var(--task-status-todo-text)]\",\n },\n },\n})\n\n/**\n * Icon container variants\n */\nexport const taskStatusIconVariants = cva(\"shrink-0\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n sm: \"h-3.5 w-3.5\",\n },\n },\n})\n\n/**\n * Label variants\n */\nexport const taskStatusLabelVariants = cva(\"font-medium leading-none\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"text-sm\",\n lg: \"text-base\",\n sm: \"text-xs\",\n },\n },\n})\n\n/**\n * Trigger button variants (for interactive mode)\n */\nexport const taskStatusTriggerVariants = cva(\n \"ml-1 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n sm: \"h-3 w-3\",\n },\n },\n }\n)\n\n/**\n * Dropdown menu item variants\n */\nexport const taskStatusMenuItemVariants = cva(\n \"flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\n {\n defaultVariants: {\n selected: false,\n },\n variants: {\n selected: {\n false: \"\",\n true: \"bg-accent/50\",\n },\n },\n }\n)\n\n// Export variant prop types\nexport type TaskStatusVariantProps = VariantProps<typeof taskStatusVariants>\nexport type TaskStatusColorVariantProps = VariantProps<typeof taskStatusColorVariants>\nexport type TaskStatusIconVariantProps = VariantProps<typeof taskStatusIconVariants>\nexport type TaskStatusLabelVariantProps = VariantProps<typeof taskStatusLabelVariants>\nexport type TaskStatusTriggerVariantProps = VariantProps<typeof taskStatusTriggerVariants>\nexport type TaskStatusMenuItemVariantProps = VariantProps<typeof taskStatusMenuItemVariants>\n","\"use client\"\n\nimport type { StatusType, TaskStatusConfigMap, TaskStatusProps } from \"./TaskStatus.types\"\n\nimport {\n AlertCircleIcon,\n ArchiveIcon,\n CheckIcon,\n ChevronDownIcon,\n ClockIcon,\n EyeIcon,\n} from \"lucide-react\"\nimport { useId, useMemo, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../../navigation/DropdownMenu\"\nimport {\n taskStatusColorVariants,\n taskStatusIconVariants,\n taskStatusLabelVariants,\n taskStatusTriggerVariants,\n taskStatusVariants,\n} from \"./TaskStatus.variants\"\n\n/**\n * Default status configurations with labels, colors, and icons\n */\nconst DEFAULT_STATUS_CONFIGS: TaskStatusConfigMap = {\n backlog: {\n color: \"text-muted-foreground\",\n icon: <ArchiveIcon />,\n label: \"Backlog\",\n },\n blocked: {\n color: \"text-destructive\",\n icon: <AlertCircleIcon />,\n label: \"Blocked\",\n },\n done: {\n color: \"text-green-600 dark:text-green-400\",\n icon: <CheckIcon />,\n label: \"Done\",\n },\n \"in-progress\": {\n color: \"text-blue-600 dark:text-blue-400\",\n icon: <ClockIcon />,\n label: \"In Progress\",\n },\n \"in-review\": {\n color: \"text-yellow-600 dark:text-yellow-400\",\n icon: <EyeIcon />,\n label: \"In Review\",\n },\n todo: {\n color: \"text-muted-foreground\",\n icon: null,\n label: \"To Do\",\n },\n}\n\n/**\n * List of all available statuses for the dropdown\n */\nconst ALL_STATUSES: StatusType[] = [\n \"todo\",\n \"in-progress\",\n \"in-review\",\n \"done\",\n \"blocked\",\n \"backlog\",\n]\n\n/**\n * TaskStatus - A component that displays the status of a task visually.\n *\n * Can be used as a simple badge or as an interactive dropdown to change status.\n * Supports multiple visual variants and sizes.\n *\n * @example\n * // Simple status badge\n * <TaskStatus status=\"in-progress\" />\n *\n * @example\n * // Interactive status dropdown\n * <TaskStatus\n * status={status}\n * interactive\n * onChange={setStatus}\n * />\n *\n * @example\n * // Pill variant without icon\n * <TaskStatus\n * status=\"done\"\n * variant=\"pill\"\n * showIcon={false}\n * />\n */\nfunction TaskStatus({\n children,\n className,\n customStatuses,\n disabled = false,\n interactive = false,\n onChange,\n ref,\n showIcon = true,\n showLabel = true,\n size = \"default\",\n status,\n variant = \"default\",\n ...props\n}: TaskStatusProps) {\n const id = useId()\n const [isOpen, setIsOpen] = useState(false)\n\n // Merge custom status configs with defaults\n const statusConfigs = useMemo(\n () => ({\n ...DEFAULT_STATUS_CONFIGS,\n ...customStatuses,\n }),\n [customStatuses]\n )\n\n const currentConfig = statusConfigs[status]\n\n const handleStatusSelect = (newStatus: StatusType) => {\n if (!disabled && onChange) {\n onChange(newStatus)\n }\n setIsOpen(false)\n }\n\n // Render content (icon + label)\n const renderContent = () => {\n if (children) {\n return children\n }\n\n return (\n <>\n {showIcon && currentConfig.icon && (\n <span\n className={cn(taskStatusIconVariants({ size }))}\n data-slot=\"task-status-icon\"\n >\n {currentConfig.icon}\n </span>\n )}\n {showLabel && (\n <span\n className={cn(taskStatusLabelVariants({ size }))}\n data-slot=\"task-status-label\"\n >\n {currentConfig.label}\n </span>\n )}\n </>\n )\n }\n\n // Base status element\n const statusElement = (\n <div\n ref={ref}\n className={cn(\n taskStatusVariants({ disabled, interactive, size, variant }),\n taskStatusColorVariants({ status }),\n className\n )}\n aria-disabled={disabled}\n aria-label={`Status: ${currentConfig.label}`}\n aria-live=\"polite\"\n data-slot=\"task-status\"\n data-status={status}\n id={`task-status-${id}`}\n role=\"status\"\n {...props}\n >\n {renderContent()}\n {interactive && !disabled && (\n <ChevronDownIcon\n className={cn(\n taskStatusTriggerVariants({ size }),\n isOpen && \"rotate-180 transition-transform\"\n )}\n data-slot=\"task-status-trigger\"\n />\n )}\n </div>\n )\n\n // If not interactive, just return the status element\n if (!interactive || disabled) {\n return statusElement\n }\n\n // Interactive mode with dropdown\n return (\n <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenuTrigger asChild disabled={disabled}>\n {statusElement}\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"min-w-36\">\n {ALL_STATUSES.map((statusOption) => {\n const config = statusConfigs[statusOption]\n const isSelected = statusOption === status\n\n return (\n <DropdownMenuItem\n key={statusOption}\n className={cn(\n \"flex items-center gap-2\",\n isSelected && \"bg-accent/50\"\n )}\n onClick={() => { handleStatusSelect(statusOption); }}\n >\n {config.icon && (\n <span\n className={cn(\n taskStatusIconVariants({ size: \"sm\" }),\n config.color\n )}\n >\n {config.icon}\n </span>\n )}\n <span className=\"flex-1\">{config.label}</span>\n {isSelected && (\n <CheckIcon className=\"h-4 w-4 text-primary\" />\n )}\n </DropdownMenuItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport { ALL_STATUSES, DEFAULT_STATUS_CONFIGS, TaskStatus }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/workflow/TaskStatus/TaskStatus.variants.ts","../src/components/workflow/TaskStatus/TaskStatus.tsx"],"names":[],"mappings":"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","file":"chunk-VYCXCOUH.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * TaskStatus container variants\n */\nexport const taskStatusVariants = cva(\n \"inline-flex items-center gap-1.5 font-medium transition-all duration-200\",\n {\n compoundVariants: [\n // Interactive states\n {\n className: \"cursor-pointer hover:opacity-80\",\n interactive: true,\n },\n {\n className: \"cursor-not-allowed opacity-50\",\n disabled: true,\n },\n ],\n defaultVariants: {\n disabled: false,\n interactive: false,\n size: \"default\",\n variant: \"default\",\n },\n variants: {\n disabled: {\n false: \"\",\n true: \"\",\n },\n interactive: {\n false: \"\",\n true: \"\",\n },\n size: {\n default: \"px-3 py-1.5 text-sm\",\n lg: \"px-4 py-2 text-base\",\n sm: \"px-2 py-1 text-xs\",\n },\n variant: {\n default: \"rounded-md bg-muted\",\n outline: \"rounded-md border border-current bg-transparent\",\n pill: \"rounded-full bg-muted\",\n subtle: \"rounded-md bg-muted/30\",\n },\n },\n }\n)\n\n/**\n * Status-specific color variants using semantic tokens\n * Only applies text colors - background is controlled by variant prop\n */\nexport const taskStatusColorVariants = cva(\"\", {\n defaultVariants: {\n status: \"todo\",\n },\n variants: {\n status: {\n backlog: \"text-[color:var(--task-status-backlog-text)]\",\n blocked: \"text-[color:var(--task-status-blocked-text)]\",\n done: \"text-[color:var(--task-status-done-text)]\",\n \"in-progress\": \"text-[color:var(--task-status-in-progress-text)]\",\n \"in-review\": \"text-[color:var(--task-status-in-review-text)]\",\n todo: \"text-[color:var(--task-status-todo-text)]\",\n },\n },\n})\n\n/**\n * Icon container variants\n */\nexport const taskStatusIconVariants = cva(\"shrink-0\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n sm: \"h-3.5 w-3.5\",\n },\n },\n})\n\n/**\n * Label variants\n */\nexport const taskStatusLabelVariants = cva(\"font-medium leading-none\", {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"text-sm\",\n lg: \"text-base\",\n sm: \"text-xs\",\n },\n },\n})\n\n/**\n * Trigger button variants (for interactive mode)\n */\nexport const taskStatusTriggerVariants = cva(\n \"ml-1 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n defaultVariants: {\n size: \"default\",\n },\n variants: {\n size: {\n default: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n sm: \"h-3 w-3\",\n },\n },\n }\n)\n\n/**\n * Dropdown menu item variants\n */\nexport const taskStatusMenuItemVariants = cva(\n \"flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground\",\n {\n defaultVariants: {\n selected: false,\n },\n variants: {\n selected: {\n false: \"\",\n true: \"bg-accent/50\",\n },\n },\n }\n)\n\n// Export variant prop types\nexport type TaskStatusVariantProps = VariantProps<typeof taskStatusVariants>\nexport type TaskStatusColorVariantProps = VariantProps<typeof taskStatusColorVariants>\nexport type TaskStatusIconVariantProps = VariantProps<typeof taskStatusIconVariants>\nexport type TaskStatusLabelVariantProps = VariantProps<typeof taskStatusLabelVariants>\nexport type TaskStatusTriggerVariantProps = VariantProps<typeof taskStatusTriggerVariants>\nexport type TaskStatusMenuItemVariantProps = VariantProps<typeof taskStatusMenuItemVariants>\n","\"use client\"\n\nimport type { StatusType, TaskStatusConfigMap, TaskStatusProps } from \"./TaskStatus.types\"\n\nimport {\n AlertCircleIcon,\n ArchiveIcon,\n CheckIcon,\n ChevronDownIcon,\n ClockIcon,\n EyeIcon,\n} from \"lucide-react\"\nimport { useId, useMemo, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../../navigation/DropdownMenu\"\nimport {\n taskStatusColorVariants,\n taskStatusIconVariants,\n taskStatusLabelVariants,\n taskStatusTriggerVariants,\n taskStatusVariants,\n} from \"./TaskStatus.variants\"\n\n/**\n * Default status configurations with labels, colors, and icons\n */\nconst DEFAULT_STATUS_CONFIGS: TaskStatusConfigMap = {\n backlog: {\n color: \"text-muted-foreground\",\n icon: <ArchiveIcon />,\n label: \"Backlog\",\n },\n blocked: {\n color: \"text-destructive\",\n icon: <AlertCircleIcon />,\n label: \"Blocked\",\n },\n done: {\n color: \"text-green-600 dark:text-green-400\",\n icon: <CheckIcon />,\n label: \"Done\",\n },\n \"in-progress\": {\n color: \"text-blue-600 dark:text-blue-400\",\n icon: <ClockIcon />,\n label: \"In Progress\",\n },\n \"in-review\": {\n color: \"text-yellow-600 dark:text-yellow-400\",\n icon: <EyeIcon />,\n label: \"In Review\",\n },\n todo: {\n color: \"text-muted-foreground\",\n icon: null,\n label: \"To Do\",\n },\n}\n\n/**\n * List of all available statuses for the dropdown\n */\nconst ALL_STATUSES: StatusType[] = [\n \"todo\",\n \"in-progress\",\n \"in-review\",\n \"done\",\n \"blocked\",\n \"backlog\",\n]\n\n/**\n * TaskStatus - A component that displays the status of a task visually.\n *\n * Can be used as a simple badge or as an interactive dropdown to change status.\n * Supports multiple visual variants and sizes.\n *\n * @example\n * // Simple status badge\n * <TaskStatus status=\"in-progress\" />\n *\n * @example\n * // Interactive status dropdown\n * <TaskStatus\n * status={status}\n * interactive\n * onChange={setStatus}\n * />\n *\n * @example\n * // Pill variant without icon\n * <TaskStatus\n * status=\"done\"\n * variant=\"pill\"\n * showIcon={false}\n * />\n */\nfunction TaskStatus({\n children,\n className,\n customStatuses,\n disabled = false,\n interactive = false,\n onChange,\n ref,\n showIcon = true,\n showLabel = true,\n size = \"default\",\n status,\n variant = \"default\",\n ...props\n}: TaskStatusProps) {\n const id = useId()\n const [isOpen, setIsOpen] = useState(false)\n\n // Merge custom status configs with defaults\n const statusConfigs = useMemo(\n () => ({\n ...DEFAULT_STATUS_CONFIGS,\n ...customStatuses,\n }),\n [customStatuses]\n )\n\n const currentConfig = statusConfigs[status]\n\n const handleStatusSelect = (newStatus: StatusType) => {\n if (!disabled && onChange) {\n onChange(newStatus)\n }\n setIsOpen(false)\n }\n\n // Render content (icon + label)\n const renderContent = () => {\n if (children) {\n return children\n }\n\n return (\n <>\n {showIcon && currentConfig.icon && (\n <span\n className={cn(taskStatusIconVariants({ size }))}\n data-slot=\"task-status-icon\"\n >\n {currentConfig.icon}\n </span>\n )}\n {showLabel && (\n <span\n className={cn(taskStatusLabelVariants({ size }))}\n data-slot=\"task-status-label\"\n >\n {currentConfig.label}\n </span>\n )}\n </>\n )\n }\n\n // Base status element\n const statusElement = (\n <div\n ref={ref}\n className={cn(\n taskStatusVariants({ disabled, interactive, size, variant }),\n taskStatusColorVariants({ status }),\n className\n )}\n aria-disabled={disabled}\n aria-label={`Status: ${currentConfig.label}`}\n aria-live=\"polite\"\n data-slot=\"task-status\"\n data-status={status}\n id={`task-status-${id}`}\n role=\"status\"\n {...props}\n >\n {renderContent()}\n {interactive && !disabled && (\n <ChevronDownIcon\n className={cn(\n taskStatusTriggerVariants({ size }),\n isOpen && \"rotate-180 transition-transform\"\n )}\n data-slot=\"task-status-trigger\"\n />\n )}\n </div>\n )\n\n // If not interactive, just return the status element\n if (!interactive || disabled) {\n return statusElement\n }\n\n // Interactive mode with dropdown\n return (\n <DropdownMenu open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenuTrigger asChild disabled={disabled}>\n {statusElement}\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"min-w-36\">\n {ALL_STATUSES.map((statusOption) => {\n const config = statusConfigs[statusOption]\n const isSelected = statusOption === status\n\n return (\n <DropdownMenuItem\n key={statusOption}\n className={cn(\n \"flex items-center gap-2\",\n isSelected && \"bg-accent/50\"\n )}\n onClick={() => { handleStatusSelect(statusOption); }}\n >\n {config.icon && (\n <span\n className={cn(\n taskStatusIconVariants({ size: \"sm\" }),\n config.color\n )}\n >\n {config.icon}\n </span>\n )}\n <span className=\"flex-1\">{config.label}</span>\n {isSelected && (\n <CheckIcon className=\"h-4 w-4 text-primary\" />\n )}\n </DropdownMenuItem>\n )\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n\nexport { ALL_STATUSES, DEFAULT_STATUS_CONFIGS, TaskStatus }\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-5W3T767A.js';
|
|
2
|
-
import { TextInput } from './chunk-
|
|
3
|
-
import { Button } from './chunk-
|
|
2
|
+
import { TextInput } from './chunk-GX2VJT7D.js';
|
|
3
|
+
import { Button } from './chunk-N3DBRKUS.js';
|
|
4
4
|
import { cn } from './chunk-RVAYDRMA.js';
|
|
5
5
|
import { X, PlusCircle, Trash2 } from 'lucide-react';
|
|
6
6
|
import * as React from 'react';
|
|
@@ -478,5 +478,5 @@ function FilterBuilder({
|
|
|
478
478
|
FilterBuilder.displayName = "FilterBuilder";
|
|
479
479
|
|
|
480
480
|
export { FilterBuilder, isFilterCondition, isFilterGroup };
|
|
481
|
-
//# sourceMappingURL=chunk-
|
|
482
|
-
//# sourceMappingURL=chunk-
|
|
481
|
+
//# sourceMappingURL=chunk-W72PXQDH.js.map
|
|
482
|
+
//# sourceMappingURL=chunk-W72PXQDH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.types.ts","../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.tsx"],"names":["Fragment"],"mappings":"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","file":"chunk-SKI25Q7O.js","sourcesContent":["/**\n * Filter operators for different field types\n */\nexport type FilterOperator =\n // Text operators\n | \"after\"\n | \"before\"\n | \"between\"\n | \"contains\"\n | \"dateBetween\"\n | \"endsWith\"\n | \"equals\"\n | \"gt\"\n // Number operators\n | \"gte\"\n | \"in\"\n | \"isEmpty\"\n | \"isNotEmpty\"\n | \"lt\"\n // Date operators\n | \"lte\"\n | \"notContains\"\n | \"notEquals\"\n // Select operators\n | \"notIn\"\n | \"startsWith\"\n\n/**\n * A single filter condition\n */\nexport interface FilterCondition {\n /** Column/field to filter on */\n column: string\n /** Unique identifier for the condition */\n id: string\n /** Comparison operator */\n operator: FilterOperator\n /** Primary value for comparison */\n value: unknown\n /** Secondary value for \"between\" operators */\n value2?: unknown\n}\n\n/**\n * A group of filter conditions with AND/OR logic\n */\nexport interface FilterGroup {\n /** Conditions or nested groups */\n conditions: (FilterCondition | FilterGroup)[]\n /** Unique identifier for the group */\n id: string\n /** Logical operator for combining conditions */\n logic: \"AND\" | \"OR\"\n}\n\n/**\n * A saved filter preset\n */\nexport interface FilterPreset {\n /** The filter configuration */\n filter: FilterGroup\n /** Unique identifier for the preset */\n id: string\n /** Display name for the preset */\n name: string\n}\n\n/**\n * Column configuration for the filter builder\n */\nexport interface FilterBuilderColumn {\n /** Column identifier */\n id: string\n /** Display label */\n label: string\n /** Options for select type columns */\n options?: string[]\n /** Data type for operator selection */\n type: \"date\" | \"number\" | \"select\" | \"text\"\n}\n\n/**\n * FilterBuilder component props\n */\nexport interface FilterBuilderProps {\n /** Additional CSS classes */\n className?: string\n /** Available columns for filtering */\n columns: FilterBuilderColumn[]\n /** Current filter configuration */\n filter: FilterGroup\n /** Callback to delete a preset */\n onDeletePreset?: (presetId: string) => void\n /** Callback when filter changes */\n onFilterChange: (filter: FilterGroup) => void\n /** Callback to save a new preset */\n onSavePreset?: (preset: FilterPreset) => void\n /** Saved filter presets */\n presets?: FilterPreset[]\n}\n\n/**\n * Type guard to check if an item is a FilterGroup\n */\nexport function isFilterGroup(\n item: FilterCondition | FilterGroup\n): item is FilterGroup {\n return \"logic\" in item && \"conditions\" in item\n}\n\n/**\n * Type guard to check if an item is a FilterCondition\n */\nexport function isFilterCondition(\n item: FilterCondition | FilterGroup\n): item is FilterCondition {\n return \"column\" in item && \"operator\" in item\n}\n","// FilterBuilder/FilterBuilder.tsx\n\"use client\"\n\nimport type {\n FilterBuilderColumn,\n FilterBuilderProps,\n FilterCondition,\n FilterGroup,\n FilterOperator,\n FilterPreset,\n} from \"./FilterBuilder.types\"\n\nimport { PlusCircle, Trash2, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../../lib/utils\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../forms/Select\"\nimport { TextInput } from \"../../../forms/TextInput\"\nimport { Button } from \"../../../primitives/Button\"\nimport { isFilterCondition, isFilterGroup } from \"./FilterBuilder.types\"\n\n// ============================================\n// CONSTANTS\n// ============================================\n\n/**\n * Operator labels for display\n */\nconst OPERATOR_LABELS: Record<FilterOperator, string> = {\n // Text\n contains: \"Contains\",\n notContains: \"Does not contain\",\n equals: \"Equals\",\n notEquals: \"Does not equal\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n isEmpty: \"Is empty\",\n isNotEmpty: \"Is not empty\",\n // Number\n gt: \"Greater than\",\n gte: \"Greater than or equal\",\n lt: \"Less than\",\n lte: \"Less than or equal\",\n between: \"Between\",\n // Date\n before: \"Before\",\n after: \"After\",\n dateBetween: \"Date between\",\n // Select\n in: \"Is any of\",\n notIn: \"Is none of\",\n}\n\n/**\n * Operators available by column type\n */\nconst OPERATORS_BY_TYPE: Record<FilterBuilderColumn[\"type\"], FilterOperator[]> = {\n text: [\"contains\", \"notContains\", \"equals\", \"notEquals\", \"startsWith\", \"endsWith\", \"isEmpty\", \"isNotEmpty\"],\n number: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n date: [\"equals\", \"notEquals\", \"before\", \"after\", \"dateBetween\"],\n select: [\"equals\", \"notEquals\", \"in\", \"notIn\"],\n}\n\n/**\n * Generate a unique ID\n */\nfunction generateId(): string {\n return Math.random().toString(36).slice(2, 11)\n}\n\n/**\n * Create an empty condition\n */\nfunction createEmptyCondition(columnId?: string): FilterCondition {\n return {\n id: generateId(),\n column: columnId ?? \"\",\n operator: \"contains\",\n value: \"\",\n }\n}\n\n/**\n * Create an empty group\n */\nfunction createEmptyGroup(): FilterGroup {\n return {\n id: generateId(),\n logic: \"AND\",\n conditions: [],\n }\n}\n\n// ============================================\n// FILTER CONDITION COMPONENT\n// ============================================\n\ninterface FilterConditionRowProps {\n columns: FilterBuilderColumn[]\n condition: FilterCondition\n onChange: (condition: FilterCondition) => void\n onRemove: () => void\n}\n\nfunction FilterConditionRow({\n condition,\n columns,\n onChange,\n onRemove,\n}: FilterConditionRowProps) {\n const selectedColumn = columns.find((col) => col.id === condition.column)\n const availableOperators = selectedColumn\n ? OPERATORS_BY_TYPE[selectedColumn.type]\n : OPERATORS_BY_TYPE.text\n\n const needsValue = ![\"isEmpty\", \"isNotEmpty\"].includes(condition.operator)\n const needsSecondValue = [\"between\", \"dateBetween\"].includes(condition.operator)\n\n const handleColumnChange = (columnId: string) => {\n const newColumn = columns.find((col) => col.id === columnId)\n const newOperators = newColumn\n ? OPERATORS_BY_TYPE[newColumn.type]\n : OPERATORS_BY_TYPE.text\n\n onChange({\n ...condition,\n column: columnId,\n operator: newOperators[0] ?? \"equals\",\n value: \"\",\n value2: undefined,\n })\n }\n\n const handleOperatorChange = (operator: string) => {\n onChange({\n ...condition,\n operator: operator as FilterOperator,\n value: [\"isEmpty\", \"isNotEmpty\"].includes(operator) ? \"\" : condition.value,\n value2: undefined,\n })\n }\n\n const handleValueChange = (value: string) => {\n onChange({ ...condition, value })\n }\n\n const handleValue2Change = (value2: string) => {\n onChange({ ...condition, value2 })\n }\n\n return (\n <div\n aria-label={`Filter condition: ${selectedColumn?.label ?? \"Select column\"}`}\n className=\"flex flex-wrap items-center gap-2\"\n data-slot=\"filter-condition\"\n role=\"group\"\n >\n {/* Column Select */}\n <Select value={condition.column} onValueChange={handleColumnChange}>\n <SelectTrigger\n aria-label=\"Column\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select column\" />\n </SelectTrigger>\n <SelectContent>\n {columns.map((col) => (\n <SelectItem key={col.id} value={col.id}>\n {col.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Operator Select */}\n {condition.column && (\n <Select value={condition.operator} onValueChange={handleOperatorChange}>\n <SelectTrigger\n aria-label=\"Operator\"\n className=\"w-40\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {availableOperators.map((op) => (\n <SelectItem key={op} value={op}>\n {OPERATOR_LABELS[op]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n\n {/* Value Input */}\n {needsValue && condition.column && (\n selectedColumn?.type === \"select\" && selectedColumn.options ? (\n <Select\n value={condition.value as string}\n onValueChange={handleValueChange}\n >\n <SelectTrigger\n aria-label=\"Value\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n {selectedColumn.options.map((option) => (\n <SelectItem key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : (\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={condition.value as string}\n onChange={(e) => { handleValueChange(e.target.value); }}\n />\n )\n )}\n\n {/* Second Value (for between operators) */}\n {needsSecondValue && condition.column && (\n <>\n <span className=\"text-sm text-[color:var(--text-muted)]\">and</span>\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={typeof condition.value2 === \"string\" ? condition.value2 : typeof condition.value2 === \"number\" ? condition.value2.toString() : \"\"}\n onChange={(e) => { handleValue2Change(e.target.value); }}\n />\n </>\n )}\n\n {/* Remove Button */}\n <Button\n aria-label=\"Remove condition\"\n className=\"text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n )\n}\n\n// ============================================\n// FILTER GROUP COMPONENT\n// ============================================\n\ninterface FilterGroupComponentProps {\n columns: FilterBuilderColumn[]\n depth: number\n group: FilterGroup\n isRoot?: boolean\n onChange: (group: FilterGroup) => void\n onRemove?: () => void\n}\n\nfunction FilterGroupComponent({\n group,\n columns,\n depth,\n onChange,\n onRemove,\n isRoot = false,\n}: FilterGroupComponentProps) {\n const handleLogicToggle = () => {\n onChange({\n ...group,\n logic: group.logic === \"AND\" ? \"OR\" : \"AND\",\n })\n }\n\n const handleAddCondition = () => {\n const defaultColumn = columns[0]?.id ?? \"\"\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyCondition(defaultColumn)],\n })\n }\n\n const handleAddGroup = () => {\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyGroup()],\n })\n }\n\n const handleConditionChange = (index: number, item: FilterCondition | FilterGroup) => {\n const newConditions = [...group.conditions]\n newConditions[index] = item\n onChange({ ...group, conditions: newConditions })\n }\n\n const handleConditionRemove = (index: number) => {\n onChange({\n ...group,\n conditions: group.conditions.filter((_, i) => i !== index),\n })\n }\n\n return (\n <div\n className={cn(\n \"rounded-md border p-3\",\n isRoot\n ? \"border-[color:var(--border-default)] bg-[color:var(--surface-default)]\"\n : \"border-dashed border-[color:var(--border-muted)] bg-[color:var(--surface-muted)] ml-4\"\n )}\n aria-label={`Filter group with ${group.logic} logic`}\n data-slot=\"filter-group\"\n role=\"group\"\n >\n {/* Group Header */}\n <div className=\"mb-3 flex items-center gap-2\">\n {/* Logic Toggle */}\n <Button\n aria-label={group.logic}\n aria-pressed={group.logic === \"AND\"}\n className=\"min-w-16 font-medium\"\n size=\"sm\"\n type=\"button\"\n variant={group.logic === \"AND\" ? \"secondary-color\" : \"outline\"}\n onClick={handleLogicToggle}\n >\n {group.logic}\n </Button>\n\n {/* Remove Group Button */}\n {!isRoot && onRemove && (\n <Button\n aria-label=\"Remove group\"\n className=\"ml-auto text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <Trash2 className=\"size-4\" />\n </Button>\n )}\n </div>\n\n {/* Conditions */}\n <div className=\"space-y-2\">\n {group.conditions.length === 0 ? (\n <div className=\"py-4 text-center text-sm text-[color:var(--text-muted)]\">\n No conditions. Click "Add Condition" to create one.\n </div>\n ) : (\n group.conditions.map((item, index) => (\n <React.Fragment key={item.id}>\n {/* Logic label between conditions */}\n {index > 0 && (\n <div className=\"flex items-center gap-2 py-1\">\n <span className=\"text-xs font-medium uppercase text-[color:var(--text-muted)]\">\n {group.logic}\n </span>\n <div className=\"h-px flex-1 bg-[color:var(--border-muted)]\" />\n </div>\n )}\n\n {isFilterGroup(item) ? (\n <FilterGroupComponent\n columns={columns}\n depth={depth + 1}\n group={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : isFilterCondition(item) ? (\n <FilterConditionRow\n columns={columns}\n condition={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : null}\n </React.Fragment>\n ))\n )}\n </div>\n\n {/* Action Buttons */}\n <div className=\"mt-3 flex items-center gap-2\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddCondition}\n >\n <PlusCircle className=\"size-3\" />\n Add Condition\n </Button>\n\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddGroup}\n >\n <PlusCircle className=\"size-3\" />\n Add Group\n </Button>\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN FILTER BUILDER COMPONENT\n// ============================================\n\n/**\n * FilterBuilder - Visual interface for building complex filter conditions\n *\n * Supports AND/OR logic with nested groups, multiple operators per field type,\n * and various value input types.\n *\n * @example\n * ```tsx\n * const columns = [\n * { id: \"name\", label: \"Name\", type: \"text\" },\n * { id: \"age\", label: \"Age\", type: \"number\" },\n * { id: \"status\", label: \"Status\", type: \"select\", options: [\"active\", \"inactive\"] },\n * ]\n *\n * <FilterBuilder\n * columns={columns}\n * filter={filter}\n * onFilterChange={setFilter}\n * />\n * ```\n */\nfunction FilterBuilder({\n className,\n columns,\n filter,\n onDeletePreset,\n onFilterChange,\n onSavePreset,\n presets,\n}: FilterBuilderProps) {\n const [presetName, setPresetName] = React.useState(\"\")\n const [showSaveInput, setShowSaveInput] = React.useState(false)\n\n const handleFilterChange = (updatedFilter: FilterGroup) => {\n onFilterChange(updatedFilter)\n }\n\n const handleSavePreset = () => {\n if (!onSavePreset || !presetName.trim()) return\n onSavePreset({\n id: Math.random().toString(36).slice(2, 11),\n name: presetName.trim(),\n filter: structuredClone(filter),\n })\n setPresetName(\"\")\n setShowSaveInput(false)\n }\n\n const handleLoadPreset = (preset: FilterPreset) => {\n onFilterChange(structuredClone(preset.filter))\n }\n\n return (\n <div\n aria-label=\"Filter builder\"\n className={cn(\"space-y-3\", className)}\n data-slot=\"filter-builder\"\n role=\"region\"\n >\n {/* Filter Presets */}\n {(presets && presets.length > 0) || onSavePreset ? (\n <div className=\"flex flex-wrap items-center gap-2\" data-slot=\"filter-presets\">\n {presets?.map((preset) => (\n <div key={preset.id} className=\"flex items-center gap-1\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { handleLoadPreset(preset); }}\n >\n {preset.name}\n </Button>\n {onDeletePreset && (\n <Button\n aria-label={`Delete preset ${preset.name}`}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { onDeletePreset(preset.id); }}\n >\n <X className=\"size-3\" />\n </Button>\n )}\n </div>\n ))}\n {onSavePreset && (\n showSaveInput ? (\n <div className=\"flex items-center gap-1\">\n <TextInput\n aria-label=\"Preset name\"\n className=\"h-7 w-32\"\n placeholder=\"Preset name\"\n size=\"sm\"\n value={presetName}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { setPresetName(e.target.value); }}\n onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") handleSavePreset()\n if (e.key === \"Escape\") { setShowSaveInput(false); setPresetName(\"\"); }\n }}\n />\n <Button\n disabled={!presetName.trim()}\n size=\"sm\"\n type=\"button\"\n variant=\"secondary-color\"\n onClick={handleSavePreset}\n >\n Save\n </Button>\n <Button\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { setShowSaveInput(false); setPresetName(\"\"); }}\n >\n Cancel\n </Button>\n </div>\n ) : (\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { setShowSaveInput(true); }}\n >\n <PlusCircle className=\"size-3\" />\n Save Preset\n </Button>\n )\n )}\n </div>\n ) : null}\n\n <FilterGroupComponent\n isRoot\n columns={columns}\n depth={0}\n group={filter}\n onChange={handleFilterChange}\n />\n </div>\n )\n}\n\nFilterBuilder.displayName = \"FilterBuilder\"\n\nexport { FilterBuilder }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.types.ts","../src/components/data-display/DataTable/FilterBuilder/FilterBuilder.tsx"],"names":["Fragment"],"mappings":"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","file":"chunk-W72PXQDH.js","sourcesContent":["/**\n * Filter operators for different field types\n */\nexport type FilterOperator =\n // Text operators\n | \"after\"\n | \"before\"\n | \"between\"\n | \"contains\"\n | \"dateBetween\"\n | \"endsWith\"\n | \"equals\"\n | \"gt\"\n // Number operators\n | \"gte\"\n | \"in\"\n | \"isEmpty\"\n | \"isNotEmpty\"\n | \"lt\"\n // Date operators\n | \"lte\"\n | \"notContains\"\n | \"notEquals\"\n // Select operators\n | \"notIn\"\n | \"startsWith\"\n\n/**\n * A single filter condition\n */\nexport interface FilterCondition {\n /** Column/field to filter on */\n column: string\n /** Unique identifier for the condition */\n id: string\n /** Comparison operator */\n operator: FilterOperator\n /** Primary value for comparison */\n value: unknown\n /** Secondary value for \"between\" operators */\n value2?: unknown\n}\n\n/**\n * A group of filter conditions with AND/OR logic\n */\nexport interface FilterGroup {\n /** Conditions or nested groups */\n conditions: (FilterCondition | FilterGroup)[]\n /** Unique identifier for the group */\n id: string\n /** Logical operator for combining conditions */\n logic: \"AND\" | \"OR\"\n}\n\n/**\n * A saved filter preset\n */\nexport interface FilterPreset {\n /** The filter configuration */\n filter: FilterGroup\n /** Unique identifier for the preset */\n id: string\n /** Display name for the preset */\n name: string\n}\n\n/**\n * Column configuration for the filter builder\n */\nexport interface FilterBuilderColumn {\n /** Column identifier */\n id: string\n /** Display label */\n label: string\n /** Options for select type columns */\n options?: string[]\n /** Data type for operator selection */\n type: \"date\" | \"number\" | \"select\" | \"text\"\n}\n\n/**\n * FilterBuilder component props\n */\nexport interface FilterBuilderProps {\n /** Additional CSS classes */\n className?: string\n /** Available columns for filtering */\n columns: FilterBuilderColumn[]\n /** Current filter configuration */\n filter: FilterGroup\n /** Callback to delete a preset */\n onDeletePreset?: (presetId: string) => void\n /** Callback when filter changes */\n onFilterChange: (filter: FilterGroup) => void\n /** Callback to save a new preset */\n onSavePreset?: (preset: FilterPreset) => void\n /** Saved filter presets */\n presets?: FilterPreset[]\n}\n\n/**\n * Type guard to check if an item is a FilterGroup\n */\nexport function isFilterGroup(\n item: FilterCondition | FilterGroup\n): item is FilterGroup {\n return \"logic\" in item && \"conditions\" in item\n}\n\n/**\n * Type guard to check if an item is a FilterCondition\n */\nexport function isFilterCondition(\n item: FilterCondition | FilterGroup\n): item is FilterCondition {\n return \"column\" in item && \"operator\" in item\n}\n","// FilterBuilder/FilterBuilder.tsx\n\"use client\"\n\nimport type {\n FilterBuilderColumn,\n FilterBuilderProps,\n FilterCondition,\n FilterGroup,\n FilterOperator,\n FilterPreset,\n} from \"./FilterBuilder.types\"\n\nimport { PlusCircle, Trash2, X } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../../lib/utils\"\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../../forms/Select\"\nimport { TextInput } from \"../../../forms/TextInput\"\nimport { Button } from \"../../../primitives/Button\"\nimport { isFilterCondition, isFilterGroup } from \"./FilterBuilder.types\"\n\n// ============================================\n// CONSTANTS\n// ============================================\n\n/**\n * Operator labels for display\n */\nconst OPERATOR_LABELS: Record<FilterOperator, string> = {\n // Text\n contains: \"Contains\",\n notContains: \"Does not contain\",\n equals: \"Equals\",\n notEquals: \"Does not equal\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n isEmpty: \"Is empty\",\n isNotEmpty: \"Is not empty\",\n // Number\n gt: \"Greater than\",\n gte: \"Greater than or equal\",\n lt: \"Less than\",\n lte: \"Less than or equal\",\n between: \"Between\",\n // Date\n before: \"Before\",\n after: \"After\",\n dateBetween: \"Date between\",\n // Select\n in: \"Is any of\",\n notIn: \"Is none of\",\n}\n\n/**\n * Operators available by column type\n */\nconst OPERATORS_BY_TYPE: Record<FilterBuilderColumn[\"type\"], FilterOperator[]> = {\n text: [\"contains\", \"notContains\", \"equals\", \"notEquals\", \"startsWith\", \"endsWith\", \"isEmpty\", \"isNotEmpty\"],\n number: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n date: [\"equals\", \"notEquals\", \"before\", \"after\", \"dateBetween\"],\n select: [\"equals\", \"notEquals\", \"in\", \"notIn\"],\n}\n\n/**\n * Generate a unique ID\n */\nfunction generateId(): string {\n return Math.random().toString(36).slice(2, 11)\n}\n\n/**\n * Create an empty condition\n */\nfunction createEmptyCondition(columnId?: string): FilterCondition {\n return {\n id: generateId(),\n column: columnId ?? \"\",\n operator: \"contains\",\n value: \"\",\n }\n}\n\n/**\n * Create an empty group\n */\nfunction createEmptyGroup(): FilterGroup {\n return {\n id: generateId(),\n logic: \"AND\",\n conditions: [],\n }\n}\n\n// ============================================\n// FILTER CONDITION COMPONENT\n// ============================================\n\ninterface FilterConditionRowProps {\n columns: FilterBuilderColumn[]\n condition: FilterCondition\n onChange: (condition: FilterCondition) => void\n onRemove: () => void\n}\n\nfunction FilterConditionRow({\n condition,\n columns,\n onChange,\n onRemove,\n}: FilterConditionRowProps) {\n const selectedColumn = columns.find((col) => col.id === condition.column)\n const availableOperators = selectedColumn\n ? OPERATORS_BY_TYPE[selectedColumn.type]\n : OPERATORS_BY_TYPE.text\n\n const needsValue = ![\"isEmpty\", \"isNotEmpty\"].includes(condition.operator)\n const needsSecondValue = [\"between\", \"dateBetween\"].includes(condition.operator)\n\n const handleColumnChange = (columnId: string) => {\n const newColumn = columns.find((col) => col.id === columnId)\n const newOperators = newColumn\n ? OPERATORS_BY_TYPE[newColumn.type]\n : OPERATORS_BY_TYPE.text\n\n onChange({\n ...condition,\n column: columnId,\n operator: newOperators[0] ?? \"equals\",\n value: \"\",\n value2: undefined,\n })\n }\n\n const handleOperatorChange = (operator: string) => {\n onChange({\n ...condition,\n operator: operator as FilterOperator,\n value: [\"isEmpty\", \"isNotEmpty\"].includes(operator) ? \"\" : condition.value,\n value2: undefined,\n })\n }\n\n const handleValueChange = (value: string) => {\n onChange({ ...condition, value })\n }\n\n const handleValue2Change = (value2: string) => {\n onChange({ ...condition, value2 })\n }\n\n return (\n <div\n aria-label={`Filter condition: ${selectedColumn?.label ?? \"Select column\"}`}\n className=\"flex flex-wrap items-center gap-2\"\n data-slot=\"filter-condition\"\n role=\"group\"\n >\n {/* Column Select */}\n <Select value={condition.column} onValueChange={handleColumnChange}>\n <SelectTrigger\n aria-label=\"Column\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select column\" />\n </SelectTrigger>\n <SelectContent>\n {columns.map((col) => (\n <SelectItem key={col.id} value={col.id}>\n {col.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n {/* Operator Select */}\n {condition.column && (\n <Select value={condition.operator} onValueChange={handleOperatorChange}>\n <SelectTrigger\n aria-label=\"Operator\"\n className=\"w-40\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {availableOperators.map((op) => (\n <SelectItem key={op} value={op}>\n {OPERATOR_LABELS[op]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n\n {/* Value Input */}\n {needsValue && condition.column && (\n selectedColumn?.type === \"select\" && selectedColumn.options ? (\n <Select\n value={condition.value as string}\n onValueChange={handleValueChange}\n >\n <SelectTrigger\n aria-label=\"Value\"\n className=\"w-36\"\n size=\"sm\"\n >\n <SelectValue placeholder=\"Select value\" />\n </SelectTrigger>\n <SelectContent>\n {selectedColumn.options.map((option) => (\n <SelectItem key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ) : (\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={condition.value as string}\n onChange={(e) => { handleValueChange(e.target.value); }}\n />\n )\n )}\n\n {/* Second Value (for between operators) */}\n {needsSecondValue && condition.column && (\n <>\n <span className=\"text-sm text-[color:var(--text-muted)]\">and</span>\n <TextInput\n aria-label=\"Value\"\n className=\"w-36\"\n placeholder=\"Enter value\"\n size=\"sm\"\n type={selectedColumn?.type === \"number\" ? \"number\" : selectedColumn?.type === \"date\" ? \"date\" : \"text\"}\n value={typeof condition.value2 === \"string\" ? condition.value2 : typeof condition.value2 === \"number\" ? condition.value2.toString() : \"\"}\n onChange={(e) => { handleValue2Change(e.target.value); }}\n />\n </>\n )}\n\n {/* Remove Button */}\n <Button\n aria-label=\"Remove condition\"\n className=\"text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <X className=\"size-4\" />\n </Button>\n </div>\n )\n}\n\n// ============================================\n// FILTER GROUP COMPONENT\n// ============================================\n\ninterface FilterGroupComponentProps {\n columns: FilterBuilderColumn[]\n depth: number\n group: FilterGroup\n isRoot?: boolean\n onChange: (group: FilterGroup) => void\n onRemove?: () => void\n}\n\nfunction FilterGroupComponent({\n group,\n columns,\n depth,\n onChange,\n onRemove,\n isRoot = false,\n}: FilterGroupComponentProps) {\n const handleLogicToggle = () => {\n onChange({\n ...group,\n logic: group.logic === \"AND\" ? \"OR\" : \"AND\",\n })\n }\n\n const handleAddCondition = () => {\n const defaultColumn = columns[0]?.id ?? \"\"\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyCondition(defaultColumn)],\n })\n }\n\n const handleAddGroup = () => {\n onChange({\n ...group,\n conditions: [...group.conditions, createEmptyGroup()],\n })\n }\n\n const handleConditionChange = (index: number, item: FilterCondition | FilterGroup) => {\n const newConditions = [...group.conditions]\n newConditions[index] = item\n onChange({ ...group, conditions: newConditions })\n }\n\n const handleConditionRemove = (index: number) => {\n onChange({\n ...group,\n conditions: group.conditions.filter((_, i) => i !== index),\n })\n }\n\n return (\n <div\n className={cn(\n \"rounded-md border p-3\",\n isRoot\n ? \"border-[color:var(--border-default)] bg-[color:var(--surface-default)]\"\n : \"border-dashed border-[color:var(--border-muted)] bg-[color:var(--surface-muted)] ml-4\"\n )}\n aria-label={`Filter group with ${group.logic} logic`}\n data-slot=\"filter-group\"\n role=\"group\"\n >\n {/* Group Header */}\n <div className=\"mb-3 flex items-center gap-2\">\n {/* Logic Toggle */}\n <Button\n aria-label={group.logic}\n aria-pressed={group.logic === \"AND\"}\n className=\"min-w-16 font-medium\"\n size=\"sm\"\n type=\"button\"\n variant={group.logic === \"AND\" ? \"secondary-color\" : \"outline\"}\n onClick={handleLogicToggle}\n >\n {group.logic}\n </Button>\n\n {/* Remove Group Button */}\n {!isRoot && onRemove && (\n <Button\n aria-label=\"Remove group\"\n className=\"ml-auto text-[color:var(--text-muted)] hover:text-[color:var(--text-destructive)]\"\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={onRemove}\n >\n <Trash2 className=\"size-4\" />\n </Button>\n )}\n </div>\n\n {/* Conditions */}\n <div className=\"space-y-2\">\n {group.conditions.length === 0 ? (\n <div className=\"py-4 text-center text-sm text-[color:var(--text-muted)]\">\n No conditions. Click "Add Condition" to create one.\n </div>\n ) : (\n group.conditions.map((item, index) => (\n <React.Fragment key={item.id}>\n {/* Logic label between conditions */}\n {index > 0 && (\n <div className=\"flex items-center gap-2 py-1\">\n <span className=\"text-xs font-medium uppercase text-[color:var(--text-muted)]\">\n {group.logic}\n </span>\n <div className=\"h-px flex-1 bg-[color:var(--border-muted)]\" />\n </div>\n )}\n\n {isFilterGroup(item) ? (\n <FilterGroupComponent\n columns={columns}\n depth={depth + 1}\n group={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : isFilterCondition(item) ? (\n <FilterConditionRow\n columns={columns}\n condition={item}\n onChange={(updated) => { handleConditionChange(index, updated); }}\n onRemove={() => { handleConditionRemove(index); }}\n />\n ) : null}\n </React.Fragment>\n ))\n )}\n </div>\n\n {/* Action Buttons */}\n <div className=\"mt-3 flex items-center gap-2\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddCondition}\n >\n <PlusCircle className=\"size-3\" />\n Add Condition\n </Button>\n\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={handleAddGroup}\n >\n <PlusCircle className=\"size-3\" />\n Add Group\n </Button>\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN FILTER BUILDER COMPONENT\n// ============================================\n\n/**\n * FilterBuilder - Visual interface for building complex filter conditions\n *\n * Supports AND/OR logic with nested groups, multiple operators per field type,\n * and various value input types.\n *\n * @example\n * ```tsx\n * const columns = [\n * { id: \"name\", label: \"Name\", type: \"text\" },\n * { id: \"age\", label: \"Age\", type: \"number\" },\n * { id: \"status\", label: \"Status\", type: \"select\", options: [\"active\", \"inactive\"] },\n * ]\n *\n * <FilterBuilder\n * columns={columns}\n * filter={filter}\n * onFilterChange={setFilter}\n * />\n * ```\n */\nfunction FilterBuilder({\n className,\n columns,\n filter,\n onDeletePreset,\n onFilterChange,\n onSavePreset,\n presets,\n}: FilterBuilderProps) {\n const [presetName, setPresetName] = React.useState(\"\")\n const [showSaveInput, setShowSaveInput] = React.useState(false)\n\n const handleFilterChange = (updatedFilter: FilterGroup) => {\n onFilterChange(updatedFilter)\n }\n\n const handleSavePreset = () => {\n if (!onSavePreset || !presetName.trim()) return\n onSavePreset({\n id: Math.random().toString(36).slice(2, 11),\n name: presetName.trim(),\n filter: structuredClone(filter),\n })\n setPresetName(\"\")\n setShowSaveInput(false)\n }\n\n const handleLoadPreset = (preset: FilterPreset) => {\n onFilterChange(structuredClone(preset.filter))\n }\n\n return (\n <div\n aria-label=\"Filter builder\"\n className={cn(\"space-y-3\", className)}\n data-slot=\"filter-builder\"\n role=\"region\"\n >\n {/* Filter Presets */}\n {(presets && presets.length > 0) || onSavePreset ? (\n <div className=\"flex flex-wrap items-center gap-2\" data-slot=\"filter-presets\">\n {presets?.map((preset) => (\n <div key={preset.id} className=\"flex items-center gap-1\">\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { handleLoadPreset(preset); }}\n >\n {preset.name}\n </Button>\n {onDeletePreset && (\n <Button\n aria-label={`Delete preset ${preset.name}`}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { onDeletePreset(preset.id); }}\n >\n <X className=\"size-3\" />\n </Button>\n )}\n </div>\n ))}\n {onSavePreset && (\n showSaveInput ? (\n <div className=\"flex items-center gap-1\">\n <TextInput\n aria-label=\"Preset name\"\n className=\"h-7 w-32\"\n placeholder=\"Preset name\"\n size=\"sm\"\n value={presetName}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { setPresetName(e.target.value); }}\n onKeyDown={(e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") handleSavePreset()\n if (e.key === \"Escape\") { setShowSaveInput(false); setPresetName(\"\"); }\n }}\n />\n <Button\n disabled={!presetName.trim()}\n size=\"sm\"\n type=\"button\"\n variant=\"secondary-color\"\n onClick={handleSavePreset}\n >\n Save\n </Button>\n <Button\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => { setShowSaveInput(false); setPresetName(\"\"); }}\n >\n Cancel\n </Button>\n </div>\n ) : (\n <Button\n className=\"gap-1\"\n size=\"sm\"\n type=\"button\"\n variant=\"outline\"\n onClick={() => { setShowSaveInput(true); }}\n >\n <PlusCircle className=\"size-3\" />\n Save Preset\n </Button>\n )\n )}\n </div>\n ) : null}\n\n <FilterGroupComponent\n isRoot\n columns={columns}\n depth={0}\n group={filter}\n onChange={handleFilterChange}\n />\n </div>\n )\n}\n\nFilterBuilder.displayName = \"FilterBuilder\"\n\nexport { FilterBuilder }\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TextInput } from './chunk-
|
|
1
|
+
import { TextInput } from './chunk-GX2VJT7D.js';
|
|
2
2
|
import { cn } from './chunk-RVAYDRMA.js';
|
|
3
3
|
import { CheckCircle2Icon, XCircleIcon } from 'lucide-react';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
@@ -68,5 +68,5 @@ function EmailInput({
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
export { EmailInput, emailValidationIconVariants };
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-WTKHA2NF.js.map
|
|
72
|
+
//# sourceMappingURL=chunk-WTKHA2NF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/forms/EmailInput/EmailInput.variants.ts","../src/components/forms/EmailInput/EmailInput.tsx"],"names":[],"mappings":";;;;;;AAKO,IAAM,2BAAA,GAA8B,GAAA;AAAA,EACzC,oDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,eAAA,EAAiB;AAAA,QACf,IAAA,EAAM,uBAAA;AAAA,QACN,KAAA,EAAO,cAAA;AAAA,QACP,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,eAAA,EAAiB,MAAA;AAAA,MACjB,IAAA,EAAM;AAAA;AACR;AAEJ;ACRA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,OAAA;AAAA,EACA,eAAA,GAAkB,MAAA;AAAA,EAClB,kBAAA,GAAqB,KAAA;AAAA,EACrB,SAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,MAAM,QAAA,GAAW,sBAAsB,eAAA,KAAoB,MAAA;AAE3D,EAAA,MAAM,WAAW,QAAA,mBACf,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAW,EAAA,CAAG,2BAAA,CAA4B,EAAE,IAAA,EAAM,eAAA,EAAiB,CAAC,CAAA;AAAA,MACpE,WAAA,EAAU,uBAAA;AAAA,MAET,QAAA,EAAA;AAAA,QAAA,eAAA,KAAoB,OAAA,KAAY,SAAA,oBAAa,GAAA,CAAC,gBAAA,EAAA,EAAiB,CAAA,CAAA;AAAA,QAC/D,eAAA,KAAoB,SAAA,KAAc,WAAA,oBAAe,GAAA,CAAC,WAAA,EAAA,EAAY,CAAA;AAAA;AAAA;AAAA,GACjE,GACE,MAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,cAAA,EAAc,eAAA,KAAoB,SAAA,GAAY,IAAA,GAAO,MAAA;AAAA,MACrD,SAAA;AAAA,MACA,WAAA,EAAU,aAAA;AAAA,MACV,QAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA,EAAc,QAAA;AAAA,MACd,IAAA,EAAK,OAAA;AAAA,MACL,OAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/components/forms/EmailInput/EmailInput.variants.ts","../src/components/forms/EmailInput/EmailInput.tsx"],"names":[],"mappings":";;;;;;AAKO,IAAM,2BAAA,GAA8B,GAAA;AAAA,EACzC,oDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,eAAA,EAAiB;AAAA,QACf,IAAA,EAAM,uBAAA;AAAA,QACN,KAAA,EAAO,cAAA;AAAA,QACP,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,gBAAA;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,eAAA,EAAiB,MAAA;AAAA,MACjB,IAAA,EAAM;AAAA;AACR;AAEJ;ACRA,SAAS,UAAA,CAAW;AAAA,EAClB,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,OAAA;AAAA,EACA,eAAA,GAAkB,MAAA;AAAA,EAClB,kBAAA,GAAqB,KAAA;AAAA,EACrB,SAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAoB;AAClB,EAAA,MAAM,QAAA,GAAW,sBAAsB,eAAA,KAAoB,MAAA;AAE3D,EAAA,MAAM,WAAW,QAAA,mBACf,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,WAAW,EAAA,CAAG,2BAAA,CAA4B,EAAE,IAAA,EAAM,eAAA,EAAiB,CAAC,CAAA;AAAA,MACpE,WAAA,EAAU,uBAAA;AAAA,MAET,QAAA,EAAA;AAAA,QAAA,eAAA,KAAoB,OAAA,KAAY,SAAA,oBAAa,GAAA,CAAC,gBAAA,EAAA,EAAiB,CAAA,CAAA;AAAA,QAC/D,eAAA,KAAoB,SAAA,KAAc,WAAA,oBAAe,GAAA,CAAC,WAAA,EAAA,EAAY,CAAA;AAAA;AAAA;AAAA,GACjE,GACE,MAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,cAAA,EAAc,eAAA,KAAoB,SAAA,GAAY,IAAA,GAAO,MAAA;AAAA,MACrD,SAAA;AAAA,MACA,WAAA,EAAU,aAAA;AAAA,MACV,QAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA,EAAc,QAAA;AAAA,MACd,IAAA,EAAK,OAAA;AAAA,MACL,OAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-WTKHA2NF.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Email validation icon visual variants\n */\nexport const emailValidationIconVariants = cva(\n \"flex items-center justify-center transition-colors\",\n {\n variants: {\n validationState: {\n idle: \"text-muted-foreground\",\n valid: \"text-success\",\n invalid: \"text-destructive\",\n },\n size: {\n xs: \"[&_svg]:size-3\",\n sm: \"[&_svg]:size-3.5\",\n md: \"[&_svg]:size-4\",\n lg: \"[&_svg]:size-4.5\",\n xl: \"[&_svg]:size-5\",\n },\n },\n defaultVariants: {\n validationState: \"idle\",\n size: \"md\",\n },\n }\n)\n\nexport type EmailValidationIconVariantProps = VariantProps<typeof emailValidationIconVariants>\n","\"use client\"\n\nimport type { EmailInputProps } from \"./EmailInput.types\"\n\nimport { CheckCircle2Icon, XCircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { TextInput } from \"../TextInput\"\nimport { emailValidationIconVariants } from \"./EmailInput.variants\"\n\n/**\n * EmailInput component with optional validation state indicator.\n * Now uses TextInput internally for consistency.\n *\n * @example\n * ```tsx\n * <EmailInput placeholder=\"Enter email\" />\n * ```\n */\nfunction EmailInput({\n className,\n size = \"md\",\n variant,\n validationState = \"idle\",\n showValidationIcon = false,\n validIcon,\n invalidIcon,\n disabled,\n ...props\n}: EmailInputProps) {\n const showIcon = showValidationIcon && validationState !== \"idle\"\n\n const trailing = showIcon ? (\n <div\n aria-hidden=\"true\"\n className={cn(emailValidationIconVariants({ size, validationState }))}\n data-slot=\"email-validation-icon\"\n >\n {validationState === \"valid\" && (validIcon ?? <CheckCircle2Icon />)}\n {validationState === \"invalid\" && (invalidIcon ?? <XCircleIcon />)}\n </div>\n ) : undefined\n\n return (\n <TextInput\n aria-invalid={validationState === \"invalid\" ? true : undefined}\n className={className}\n data-slot=\"email-input\"\n disabled={disabled}\n size={size}\n trailingIcon={trailing}\n type=\"email\"\n variant={variant}\n {...props}\n />\n )\n}\n\nexport { EmailInput }"]}
|
|
@@ -20,19 +20,27 @@ var kbdVariants = cva(
|
|
|
20
20
|
default: "bg-[color:var(--kbd-variant-default-background)] text-[color:var(--kbd-variant-default-color)]",
|
|
21
21
|
outline: "bg-[color:var(--kbd-variant-outline-background)] border-[color:var(--kbd-variant-outline-border-color)] text-[color:var(--kbd-variant-outline-color)]",
|
|
22
22
|
ghost: "bg-[color:var(--kbd-variant-ghost-background)] text-[color:var(--kbd-variant-ghost-color)]"
|
|
23
|
+
},
|
|
24
|
+
// Figma Status=Disabled (1285:6859): bg/fg dos tokens status-disabled;
|
|
25
|
+
// vence a variante visual (por isso vem depois no cn)
|
|
26
|
+
disabled: {
|
|
27
|
+
true: "bg-[color:var(--status-disabled-disabled)] text-[color:var(--status-disabled-foreground)] border-[color:var(--status-disabled-border)]",
|
|
28
|
+
false: ""
|
|
23
29
|
}
|
|
24
30
|
},
|
|
25
31
|
defaultVariants: {
|
|
26
32
|
size: "sm",
|
|
27
|
-
variant: "default"
|
|
33
|
+
variant: "default",
|
|
34
|
+
disabled: false
|
|
28
35
|
}
|
|
29
36
|
}
|
|
30
37
|
);
|
|
31
|
-
function Kbd({ className, size, variant, ...props }) {
|
|
38
|
+
function Kbd({ className, size, variant, disabled, ...props }) {
|
|
32
39
|
return /* @__PURE__ */ jsx(
|
|
33
40
|
"kbd",
|
|
34
41
|
{
|
|
35
|
-
className: cn(kbdVariants({ size, variant }), className),
|
|
42
|
+
className: cn(kbdVariants({ size, variant, disabled }), className),
|
|
43
|
+
"data-disabled": disabled ? "" : void 0,
|
|
36
44
|
"data-slot": "kbd",
|
|
37
45
|
...props
|
|
38
46
|
}
|
|
@@ -50,5 +58,5 @@ function KbdGroup({ className, ...props }) {
|
|
|
50
58
|
}
|
|
51
59
|
|
|
52
60
|
export { Kbd, KbdGroup, kbdVariants };
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
61
|
+
//# sourceMappingURL=chunk-YNZ6T4IU.js.map
|
|
62
|
+
//# sourceMappingURL=chunk-YNZ6T4IU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/primitives/Kbd/Kbd.variants.ts","../src/components/primitives/Kbd/Kbd.tsx"],"names":[],"mappings":";;;;AAKO,IAAM,WAAA,GAAc,GAAA;AAAA,EACzB;AAAA,IACE,6MAAA;AAAA,IACA,sCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,4LAAA;AAAA,QACJ,EAAA,EAAI,4LAAA;AAAA,QACJ,EAAA,EAAI,4LAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gGAAA;AAAA,QACT,OAAA,EAAS,uJAAA;AAAA,QACT,KAAA,EAAO;AAAA,OACT;AAAA;AAAA;AAAA,MAGA,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,wIAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,OAAA,EAAS,SAAA;AAAA,MACT,QAAA,EAAU;AAAA;AACZ;AAEJ;ACjBA,SAAS,GAAA,CAAI,EAAE,SAAA,EAAW,IAAA,EAAM,SAAS,QAAA,EAAU,GAAG,OAAM,EAAa;AACvE,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,GAAG,WAAA,CAAY,EAAE,MAAM,OAAA,EAAS,QAAA,EAAU,CAAA,EAAG,SAAS,CAAA;AAAA,MACjE,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,MAC/B,WAAA,EAAU,KAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ;AAcA,SAAS,QAAA,CAAS,EAAE,SAAA,EAAW,GAAG,OAAM,EAAkB;AACxD,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA;AAAA,MACzD,WAAA,EAAU,WAAA;AAAA,MACT,GAAG;AAAA;AAAA,GACN;AAEJ","file":"chunk-YNZ6T4IU.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * Kbd variants using CVA\n */\nexport const kbdVariants = cva(\n [\n \"pointer-events-none inline-flex items-center justify-center align-middle gap-[var(--kbd-root-gap)] font-[number:var(--kbd-root-font-weight)] select-none border border-[color:var(--kbd-root-border-color)]\",\n \"[&_svg:not([class*='size-'])]:size-3\",\n \"[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10\",\n ],\n {\n variants: {\n size: {\n xs: \"h-[var(--kbd-size-xs-height)] min-w-[var(--kbd-size-xs-min-width)] rounded-[var(--kbd-size-xs-border-radius)] px-[var(--kbd-size-xs-padding-x)] text-[length:var(--kbd-size-xs-font-size)]\",\n sm: \"h-[var(--kbd-size-sm-height)] min-w-[var(--kbd-size-sm-min-width)] rounded-[var(--kbd-size-sm-border-radius)] px-[var(--kbd-size-sm-padding-x)] text-[length:var(--kbd-size-sm-font-size)]\",\n md: \"h-[var(--kbd-size-md-height)] min-w-[var(--kbd-size-md-min-width)] rounded-[var(--kbd-size-md-border-radius)] px-[var(--kbd-size-md-padding-x)] text-[length:var(--kbd-size-md-font-size)]\",\n lg: \"h-[var(--kbd-size-lg-height)] min-w-[var(--kbd-size-lg-min-width)] rounded-[var(--kbd-size-lg-border-radius)] px-[var(--kbd-size-lg-padding-x)] text-[length:var(--kbd-size-lg-font-size)]\",\n },\n variant: {\n default: \"bg-[color:var(--kbd-variant-default-background)] text-[color:var(--kbd-variant-default-color)]\",\n outline: \"bg-[color:var(--kbd-variant-outline-background)] border-[color:var(--kbd-variant-outline-border-color)] text-[color:var(--kbd-variant-outline-color)]\",\n ghost: \"bg-[color:var(--kbd-variant-ghost-background)] text-[color:var(--kbd-variant-ghost-color)]\",\n },\n // Figma Status=Disabled (1285:6859): bg/fg dos tokens status-disabled;\n // vence a variante visual (por isso vem depois no cn)\n disabled: {\n true: \"bg-[color:var(--status-disabled-disabled)] text-[color:var(--status-disabled-foreground)] border-[color:var(--status-disabled-border)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n variant: \"default\",\n disabled: false,\n },\n }\n)\n\nexport type KbdVariants = VariantProps<typeof kbdVariants>\n","import type { KbdGroupProps, KbdProps } from \"./Kbd.types\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { kbdVariants } from \"./Kbd.variants\"\n\n/**\n * Kbd component for displaying keyboard keys and shortcuts.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Kbd>⌘</Kbd>\n *\n * // Different sizes\n * <Kbd size=\"lg\">Enter</Kbd>\n *\n * // Outline variant\n * <Kbd variant=\"outline\">Esc</Kbd>\n * ```\n */\nfunction Kbd({ className, size, variant, disabled, ...props }: KbdProps) {\n return (\n <kbd\n className={cn(kbdVariants({ size, variant, disabled }), className)}\n data-disabled={disabled ? \"\" : undefined}\n data-slot=\"kbd\"\n {...props}\n />\n )\n}\n\n/**\n * KbdGroup component for grouping keyboard shortcuts.\n *\n * @example\n * ```tsx\n * <KbdGroup>\n * <Kbd>⌘</Kbd>\n * <Kbd>Shift</Kbd>\n * <Kbd>P</Kbd>\n * </KbdGroup>\n * ```\n */\nfunction KbdGroup({ className, ...props }: KbdGroupProps) {\n return (\n <span\n className={cn(\"inline-flex items-center gap-1\", className)}\n data-slot=\"kbd-group\"\n {...props}\n />\n )\n}\n\nexport { Kbd, KbdGroup, kbdVariants }\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ScrollArea } from './chunk-HM6TEHA6.js';
|
|
2
|
-
import { Calendar } from './chunk-
|
|
2
|
+
import { Calendar } from './chunk-OJIFG4LW.js';
|
|
3
3
|
import { Popover, PopoverTrigger, PopoverContent } from './chunk-EQ4YAADN.js';
|
|
4
|
-
import { Button } from './chunk-
|
|
4
|
+
import { Button } from './chunk-N3DBRKUS.js';
|
|
5
5
|
import { cn } from './chunk-RVAYDRMA.js';
|
|
6
6
|
import { format, startOfDay, isBefore, isAfter, setMinutes, setHours } from 'date-fns';
|
|
7
7
|
import { CalendarIcon, XIcon } from 'lucide-react';
|
|
@@ -491,5 +491,5 @@ function DatePicker({
|
|
|
491
491
|
}
|
|
492
492
|
|
|
493
493
|
export { DatePicker, datePickerTriggerVariants };
|
|
494
|
-
//# sourceMappingURL=chunk-
|
|
495
|
-
//# sourceMappingURL=chunk-
|
|
494
|
+
//# sourceMappingURL=chunk-YZBCJDYO.js.map
|
|
495
|
+
//# sourceMappingURL=chunk-YZBCJDYO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/forms/DatePicker/DatePicker.variants.ts","../src/components/forms/DatePicker/DatePicker.tsx"],"names":["format","formatDate"],"mappings":"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","file":"chunk-7QEFKWUR.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * DatePicker trigger variant styles using CVA\n */\nexport const datePickerTriggerVariants = cva(\n // Base styles\n [\n \"inline-flex w-full items-center justify-between gap-2 rounded-[var(--date-picker-trigger-radius)] border bg-transparent font-normal transition-[color,box-shadow] outline-none\",\n \"text-left\",\n \"placeholder:text-muted-foreground\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-[color:var(--date-picker-trigger-disabled-bg)] disabled:text-[color:var(--date-picker-trigger-disabled-fg)] disabled:border-[color:var(--date-picker-trigger-disabled-border)]\",\n \"focus-visible:border-[color:var(--date-picker-trigger-border-focus)] focus-visible:ring-[color:var(--date-picker-trigger-ring-primary)]/50 focus-visible:ring-[length:var(--date-picker-trigger-ring-width)]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n \"data-[state=open]:border-ring data-[state=open]:ring-ring/50 data-[state=open]:ring-[3px]\",\n \"min-w-[var(--date-picker-trigger-min-width)]\",\n ],\n {\n variants: {\n size: {\n sm: \"h-[var(--date-picker-trigger-height-sm)] px-[var(--date-picker-trigger-padding-x-sm)] py-[var(--date-picker-trigger-padding-y-sm)] text-[length:var(--date-picker-trigger-text-sm)]\",\n md: \"h-[var(--date-picker-trigger-height-md)] px-[var(--date-picker-trigger-padding-x-md)] py-[var(--date-picker-trigger-padding-y-md)] text-[length:var(--date-picker-trigger-text-md)]\",\n lg: \"h-[var(--date-picker-trigger-height-lg)] px-[var(--date-picker-trigger-padding-x-lg)] py-[var(--date-picker-trigger-padding-y-lg)] text-[length:var(--date-picker-trigger-text-lg)]\",\n },\n variant: {\n default: \"border-input shadow-xs dark:bg-input/30\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * DatePicker clear button styles using CVA.\n *\n * The clear control is a sibling of the trigger (never nested inside the\n * trigger button — button-in-button is invalid). It is absolutely positioned\n * so it overlays the trigger's trailing-icon slot, sitting at the same inset\n * as the calendar icon for each size/variant.\n */\nexport const datePickerClearButtonVariants = cva(\n [\n \"absolute top-1/2 inline-flex size-4 -translate-y-1/2 items-center justify-center rounded-sm outline-none\",\n \"text-muted-foreground opacity-70 transition-opacity\",\n \"hover:opacity-100 focus-visible:opacity-100\",\n \"focus-visible:ring-[color:var(--date-picker-trigger-ring-primary)]/50 focus-visible:ring-[length:var(--date-picker-trigger-ring-width)]\",\n ],\n {\n variants: {\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n variant: {\n default: \"\",\n filled: \"\",\n flushed: \"\",\n },\n },\n compoundVariants: [\n // Non-flushed variants inset the trailing slot by the trigger's px token\n { variant: [\"default\", \"filled\"], size: \"sm\", className: \"right-[var(--date-picker-trigger-padding-x-sm)]\" },\n { variant: [\"default\", \"filled\"], size: \"md\", className: \"right-[var(--date-picker-trigger-padding-x-md)]\" },\n { variant: [\"default\", \"filled\"], size: \"lg\", className: \"right-[var(--date-picker-trigger-padding-x-lg)]\" },\n // Flushed removes horizontal padding, so the slot sits at the edge\n { variant: \"flushed\", className: \"right-0\" },\n ],\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\nexport type DatePickerTriggerVariantProps = VariantProps<typeof datePickerTriggerVariants>\n","import type { DatePickerProps } from \"./DatePicker.types\"\n\nimport { format as formatDate, isAfter, isBefore, setHours, setMinutes, startOfDay } from \"date-fns\"\nimport { CalendarIcon, XIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Calendar } from \"../../advanced/Calendar\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../../feedback/Popover\"\nimport { ScrollArea } from \"../../layout/ScrollArea\"\nimport { Button } from \"../../primitives/Button\"\nimport { datePickerClearButtonVariants, datePickerTriggerVariants } from \"./DatePicker.variants\"\n\n/**\n * Convert 24h hours to 12h format with period\n */\nfunction to12Hour(hours: number): { hour12: number; period: \"AM\" | \"PM\" } {\n const period = hours >= 12 ? \"PM\" : \"AM\"\n let hour12 = hours % 12\n if (hour12 === 0) hour12 = 12\n return { hour12, period }\n}\n\n/**\n * Convert 12h format to 24h hours\n */\nfunction to24Hour(hour12: number, period: \"AM\" | \"PM\"): number {\n if (period === \"AM\") {\n return hour12 === 12 ? 0 : hour12\n }\n return hour12 === 12 ? 12 : hour12 + 12\n}\n\n/**\n * Generate array of hour options\n */\nfunction getHourOptions(use12Hour: boolean): number[] {\n if (use12Hour) {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]\n }\n return Array.from({ length: 24 }, (_, i) => i)\n}\n\n/**\n * Generate array of minute options based on step\n */\nfunction getMinuteOptions(step: number): number[] {\n const options: number[] = []\n for (let i = 0; i < 60; i += step) {\n options.push(i)\n }\n return options\n}\n\nfunction DatePicker({\n ref,\n className,\n align = \"start\",\n dialogLabel = \"Choose date\",\n value,\n defaultValue,\n placeholder = \"Select date\",\n disabled = false,\n disabledDates,\n readOnly = false,\n showTimePicker = false,\n showToday = false,\n timeLabel = \"Time\",\n timeMinuteStep = 1,\n timeUse12Hour = false,\n todayLabel = \"Today\",\n minDate,\n maxDate,\n format = \"PPP\",\n locale,\n onChange,\n onOpenChange,\n onClear,\n size = \"md\",\n variant = \"default\",\n required = false,\n invalid = false,\n clearable = false,\n calendarProps,\n id,\n name,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby,\n ...props\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n const [internalDate, setInternalDate] = React.useState<Date | undefined>(defaultValue)\n\n // Time state for when showTimePicker is enabled\n const [internalHours, setInternalHours] = React.useState<number>(\n defaultValue ? defaultValue.getHours() : 0\n )\n const [internalMinutes, setInternalMinutes] = React.useState<number>(\n defaultValue ? defaultValue.getMinutes() : 0\n )\n const [internalPeriod, setInternalPeriod] = React.useState<\"AM\" | \"PM\">(() =>\n defaultValue ? to12Hour(defaultValue.getHours()).period : \"AM\"\n )\n\n // Refs for auto-scrolling time columns\n const hourListRef = React.useRef<HTMLDivElement>(null)\n const minuteListRef = React.useRef<HTMLDivElement>(null)\n\n // Use controlled value if provided, otherwise use internal state\n const selectedDate = value ?? internalDate\n\n // Get time from selected date or internal state\n const currentHours = selectedDate ? selectedDate.getHours() : internalHours\n const currentMinutes = selectedDate ? selectedDate.getMinutes() : internalMinutes\n const currentPeriod = selectedDate\n ? to12Hour(selectedDate.getHours()).period\n : internalPeriod\n\n // Compute defaultMonth once for clarity\n const defaultMonth = selectedDate ?? minDate\n\n // Scroll to selected time items when popover opens\n React.useEffect(() => {\n if (!open || !showTimePicker) return\n\n const timeoutId = setTimeout(() => {\n const selectedHour = hourListRef.current?.querySelector('[data-selected=\"true\"]')\n selectedHour?.scrollIntoView({ block: \"center\", behavior: \"instant\" })\n\n const selectedMinute = minuteListRef.current?.querySelector('[data-selected=\"true\"]')\n selectedMinute?.scrollIntoView({ block: \"center\", behavior: \"instant\" })\n }, 0)\n\n return () => { clearTimeout(timeoutId) }\n }, [open, showTimePicker, currentHours, currentMinutes])\n\n const applyTimeToDate = (date: Date | undefined, hours: number, minutes: number): Date | undefined => {\n if (!date) return undefined\n return setMinutes(setHours(date, hours), minutes)\n }\n\n const handleSelect = (date: Date | undefined) => {\n let finalDate = date\n if (showTimePicker && date) {\n // Apply current time to the selected date\n finalDate = applyTimeToDate(date, currentHours, currentMinutes)\n }\n\n if (value === undefined) {\n setInternalDate(finalDate)\n }\n onChange?.(finalDate)\n\n // Only close if not showing time picker, or close after date selection\n if (!showTimePicker) {\n setOpen(false)\n }\n }\n\n const handleTimeChange = (hours: number, minutes: number) => {\n if (value === undefined) {\n setInternalHours(hours)\n setInternalMinutes(minutes)\n }\n\n if (selectedDate) {\n const newDate = applyTimeToDate(selectedDate, hours, minutes)\n if (value === undefined) {\n setInternalDate(newDate)\n }\n onChange?.(newDate)\n }\n }\n\n const handleHourSelect = (hour: number) => {\n let newHours = hour\n if (timeUse12Hour) {\n newHours = to24Hour(hour, currentPeriod)\n }\n if (value === undefined) {\n setInternalHours(newHours)\n }\n handleTimeChange(newHours, currentMinutes)\n }\n\n const handleMinuteSelect = (minute: number) => {\n if (value === undefined) {\n setInternalMinutes(minute)\n }\n handleTimeChange(currentHours, minute)\n }\n\n const handlePeriodSelect = (period: \"AM\" | \"PM\") => {\n if (value === undefined) {\n setInternalPeriod(period)\n }\n const hour12 = timeUse12Hour\n ? currentHours % 12 || 12\n : to12Hour(currentHours).hour12\n const newHours = to24Hour(hour12, period)\n if (value === undefined) {\n setInternalHours(newHours)\n }\n handleTimeChange(newHours, currentMinutes)\n }\n\n const handleOpenChange = (isOpen: boolean) => {\n // Don't open if readOnly\n if (readOnly && isOpen) return\n\n setOpen(isOpen)\n onOpenChange?.(isOpen)\n }\n\n const handleClear = (event: React.MouseEvent) => {\n event.stopPropagation()\n if (value === undefined) {\n setInternalDate(undefined)\n }\n onChange?.()\n onClear?.()\n }\n\n // Format display value with time if showTimePicker is enabled\n const displayValue = React.useMemo(() => {\n if (!selectedDate) return null\n\n const dateStr = formatDate(selectedDate, format, locale ? { locale } : undefined)\n\n if (showTimePicker) {\n const timeStr = timeUse12Hour\n ? `${String(to12Hour(currentHours).hour12)}:${currentMinutes.toString().padStart(2, \"0\")} ${currentPeriod}`\n : `${currentHours.toString().padStart(2, \"0\")}:${currentMinutes.toString().padStart(2, \"0\")}`\n return `${dateStr} ${timeStr}`\n }\n\n return dateStr\n }, [selectedDate, format, locale, showTimePicker, timeUse12Hour, currentHours, currentMinutes, currentPeriod])\n\n // Memoize time options\n const hourOptions = React.useMemo(() => getHourOptions(timeUse12Hour), [timeUse12Hour])\n const minuteOptions = React.useMemo(() => getMinuteOptions(timeMinuteStep), [timeMinuteStep])\n\n // Calculate display hour for matching in 12h mode\n const displayHour = timeUse12Hour\n ? to12Hour(currentHours).hour12\n : currentHours\n\n // Signal for the filled field state (date selected). The `filled` style\n // variant is independent — this is the data hook consumers/tests rely on.\n const hasValue = Boolean(selectedDate)\n\n const showClearButton = clearable && hasValue && !disabled && !readOnly\n\n // Combined date disabled check\n const isDateDisabled = React.useCallback(\n (date: Date): boolean => {\n const normalizedDate = startOfDay(date)\n if (minDate && isBefore(normalizedDate, startOfDay(minDate))) return true\n if (maxDate && isAfter(normalizedDate, startOfDay(maxDate))) return true\n if (disabledDates?.(date)) return true\n return false\n },\n [minDate, maxDate, disabledDates]\n )\n\n // Check if today is disabled\n const isTodayDisabled = React.useMemo(() => {\n return isDateDisabled(new Date())\n }, [isDateDisabled])\n\n // Handle selecting today\n const handleSelectToday = () => {\n const today = startOfDay(new Date())\n if (!isDateDisabled(today)) {\n handleSelect(today)\n }\n }\n\n return (\n <div className={cn(\"relative\", className)} data-slot=\"date-picker\" {...props}>\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n className={cn(\n datePickerTriggerVariants({ size, variant }),\n !displayValue && \"text-muted-foreground\"\n )}\n aria-describedby={ariaDescribedby}\n aria-disabled={readOnly || undefined}\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n aria-invalid={invalid}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-required={required}\n data-has-value={hasValue}\n data-readonly={readOnly || undefined}\n data-size={size}\n data-slot=\"date-picker-trigger\"\n data-state={open ? \"open\" : \"closed\"}\n data-variant={variant}\n disabled={disabled}\n id={id}\n type=\"button\"\n >\n <span className=\"flex-1 truncate\">\n {displayValue ?? placeholder}\n </span>\n <CalendarIcon\n aria-hidden=\"true\"\n className={cn(\"size-4 shrink-0 opacity-50\", showClearButton && \"invisible\")}\n />\n </button>\n </PopoverTrigger>\n <PopoverContent\n align={align}\n aria-label={dialogLabel}\n className=\"w-auto p-0\"\n data-slot=\"date-picker-calendar\"\n >\n <Calendar\n autoFocus\n footer={\n showToday ? (\n <div className=\"border-t border-border p-2\" data-slot=\"date-picker-footer\">\n <Button\n className=\"w-full\"\n disabled={isTodayDisabled}\n size=\"sm\"\n variant=\"ghost\"\n onClick={handleSelectToday}\n >\n {todayLabel}\n </Button>\n </div>\n ) : undefined\n }\n defaultMonth={defaultMonth}\n disabled={isDateDisabled}\n locale={locale}\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleSelect}\n {...calendarProps}\n />\n\n {/* Time Picker Section */}\n {showTimePicker && (\n <div\n className=\"border-t border-border\"\n data-slot=\"date-picker-time\"\n >\n <div className=\"px-3 py-2 text-xs font-medium text-muted-foreground\">\n {timeLabel}\n </div>\n <div\n aria-label=\"Time selection\"\n className=\"flex divide-x border-t border-border\"\n role=\"listbox\"\n >\n {/* Hours Column */}\n <div className=\"flex flex-col\">\n <div className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground text-center border-b\">\n {timeUse12Hour ? \"Hour\" : \"Hours\"}\n </div>\n <ScrollArea className=\"h-36\">\n <div\n ref={hourListRef}\n aria-label=\"Hours\"\n className=\"flex flex-col items-stretch p-1\"\n role=\"group\"\n >\n {hourOptions.map((hour) => {\n const isSelected = displayHour === hour\n return (\n <button\n key={hour}\n className={cn(\n \"flex h-[var(--date-picker-preset-item-height)] w-12 items-center justify-center rounded-sm text-sm\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n isSelected && \"bg-primary text-primary-foreground\"\n )}\n aria-selected={isSelected}\n data-selected={isSelected}\n role=\"option\"\n type=\"button\"\n onClick={() => { handleHourSelect(hour); }}\n >\n {timeUse12Hour ? hour : hour.toString().padStart(2, \"0\")}\n </button>\n )\n })}\n </div>\n </ScrollArea>\n </div>\n\n {/* Minutes Column */}\n <div className=\"flex flex-col\">\n <div className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground text-center border-b\">\n Min\n </div>\n <ScrollArea className=\"h-36\">\n <div\n ref={minuteListRef}\n aria-label=\"Minutes\"\n className=\"flex flex-col items-stretch p-1\"\n role=\"group\"\n >\n {minuteOptions.map((minute) => {\n const isSelected = currentMinutes === minute\n return (\n <button\n key={minute}\n className={cn(\n \"flex h-[var(--date-picker-preset-item-height)] w-12 items-center justify-center rounded-sm text-sm\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n isSelected && \"bg-primary text-primary-foreground\"\n )}\n aria-selected={isSelected}\n data-selected={isSelected}\n role=\"option\"\n type=\"button\"\n onClick={() => { handleMinuteSelect(minute); }}\n >\n {minute.toString().padStart(2, \"0\")}\n </button>\n )\n })}\n </div>\n </ScrollArea>\n </div>\n\n {/* AM/PM Column (12-hour mode only) */}\n {timeUse12Hour && (\n <div className=\"flex flex-col\">\n <div className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground text-center border-b\">\n \n </div>\n <div\n aria-label=\"Period\"\n className=\"flex flex-col items-stretch p-1\"\n role=\"group\"\n >\n {([\"AM\", \"PM\"] as const).map((period) => {\n const isSelected = currentPeriod === period\n return (\n <button\n key={period}\n className={cn(\n \"flex h-[var(--date-picker-preset-item-height)] w-12 items-center justify-center rounded-sm text-sm\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n isSelected && \"bg-primary text-primary-foreground\"\n )}\n aria-selected={isSelected}\n data-selected={isSelected}\n role=\"option\"\n type=\"button\"\n onClick={() => { handlePeriodSelect(period); }}\n >\n {period}\n </button>\n )\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n )}\n </PopoverContent>\n </Popover>\n {showClearButton && (\n <button\n aria-label=\"Clear date\"\n className={cn(datePickerClearButtonVariants({ size, variant }))}\n data-slot=\"date-picker-clear\"\n type=\"button\"\n onClick={handleClear}\n >\n <XIcon className=\"size-4\" />\n </button>\n )}\n {name && (\n <input\n name={name}\n type=\"hidden\"\n value={selectedDate?.toISOString() ?? \"\"}\n />\n )}\n </div>\n )\n}\n\nexport { DatePicker }\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/forms/DatePicker/DatePicker.variants.ts","../src/components/forms/DatePicker/DatePicker.tsx"],"names":["format","formatDate"],"mappings":"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","file":"chunk-YZBCJDYO.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * DatePicker trigger variant styles using CVA\n */\nexport const datePickerTriggerVariants = cva(\n // Base styles\n [\n \"inline-flex w-full items-center justify-between gap-2 rounded-[var(--date-picker-trigger-radius)] border bg-transparent font-normal transition-[color,box-shadow] outline-none\",\n \"text-left\",\n \"placeholder:text-muted-foreground\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-[color:var(--date-picker-trigger-disabled-bg)] disabled:text-[color:var(--date-picker-trigger-disabled-fg)] disabled:border-[color:var(--date-picker-trigger-disabled-border)]\",\n \"focus-visible:border-[color:var(--date-picker-trigger-border-focus)] focus-visible:ring-[color:var(--date-picker-trigger-ring-primary)]/50 focus-visible:ring-[length:var(--date-picker-trigger-ring-width)]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n \"data-[state=open]:border-ring data-[state=open]:ring-ring/50 data-[state=open]:ring-[3px]\",\n \"min-w-[var(--date-picker-trigger-min-width)]\",\n ],\n {\n variants: {\n size: {\n sm: \"h-[var(--date-picker-trigger-height-sm)] px-[var(--date-picker-trigger-padding-x-sm)] py-[var(--date-picker-trigger-padding-y-sm)] text-[length:var(--date-picker-trigger-text-sm)]\",\n md: \"h-[var(--date-picker-trigger-height-md)] px-[var(--date-picker-trigger-padding-x-md)] py-[var(--date-picker-trigger-padding-y-md)] text-[length:var(--date-picker-trigger-text-md)]\",\n lg: \"h-[var(--date-picker-trigger-height-lg)] px-[var(--date-picker-trigger-padding-x-lg)] py-[var(--date-picker-trigger-padding-y-lg)] text-[length:var(--date-picker-trigger-text-lg)]\",\n },\n variant: {\n default: \"border-input shadow-xs dark:bg-input/30\",\n filled: \"border-transparent bg-muted\",\n flushed: \"rounded-none border-x-0 border-t-0 border-b-input px-0\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * DatePicker clear button styles using CVA.\n *\n * The clear control is a sibling of the trigger (never nested inside the\n * trigger button — button-in-button is invalid). It is absolutely positioned\n * so it overlays the trigger's trailing-icon slot, sitting at the same inset\n * as the calendar icon for each size/variant.\n */\nexport const datePickerClearButtonVariants = cva(\n [\n \"absolute top-1/2 inline-flex size-4 -translate-y-1/2 items-center justify-center rounded-sm outline-none\",\n \"text-muted-foreground opacity-70 transition-opacity\",\n \"hover:opacity-100 focus-visible:opacity-100\",\n \"focus-visible:ring-[color:var(--date-picker-trigger-ring-primary)]/50 focus-visible:ring-[length:var(--date-picker-trigger-ring-width)]\",\n ],\n {\n variants: {\n size: {\n sm: \"\",\n md: \"\",\n lg: \"\",\n },\n variant: {\n default: \"\",\n filled: \"\",\n flushed: \"\",\n },\n },\n compoundVariants: [\n // Non-flushed variants inset the trailing slot by the trigger's px token\n { variant: [\"default\", \"filled\"], size: \"sm\", className: \"right-[var(--date-picker-trigger-padding-x-sm)]\" },\n { variant: [\"default\", \"filled\"], size: \"md\", className: \"right-[var(--date-picker-trigger-padding-x-md)]\" },\n { variant: [\"default\", \"filled\"], size: \"lg\", className: \"right-[var(--date-picker-trigger-padding-x-lg)]\" },\n // Flushed removes horizontal padding, so the slot sits at the edge\n { variant: \"flushed\", className: \"right-0\" },\n ],\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\nexport type DatePickerTriggerVariantProps = VariantProps<typeof datePickerTriggerVariants>\n","import type { DatePickerProps } from \"./DatePicker.types\"\n\nimport { format as formatDate, isAfter, isBefore, setHours, setMinutes, startOfDay } from \"date-fns\"\nimport { CalendarIcon, XIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Calendar } from \"../../advanced/Calendar\"\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../../feedback/Popover\"\nimport { ScrollArea } from \"../../layout/ScrollArea\"\nimport { Button } from \"../../primitives/Button\"\nimport { datePickerClearButtonVariants, datePickerTriggerVariants } from \"./DatePicker.variants\"\n\n/**\n * Convert 24h hours to 12h format with period\n */\nfunction to12Hour(hours: number): { hour12: number; period: \"AM\" | \"PM\" } {\n const period = hours >= 12 ? \"PM\" : \"AM\"\n let hour12 = hours % 12\n if (hour12 === 0) hour12 = 12\n return { hour12, period }\n}\n\n/**\n * Convert 12h format to 24h hours\n */\nfunction to24Hour(hour12: number, period: \"AM\" | \"PM\"): number {\n if (period === \"AM\") {\n return hour12 === 12 ? 0 : hour12\n }\n return hour12 === 12 ? 12 : hour12 + 12\n}\n\n/**\n * Generate array of hour options\n */\nfunction getHourOptions(use12Hour: boolean): number[] {\n if (use12Hour) {\n return [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]\n }\n return Array.from({ length: 24 }, (_, i) => i)\n}\n\n/**\n * Generate array of minute options based on step\n */\nfunction getMinuteOptions(step: number): number[] {\n const options: number[] = []\n for (let i = 0; i < 60; i += step) {\n options.push(i)\n }\n return options\n}\n\nfunction DatePicker({\n ref,\n className,\n align = \"start\",\n dialogLabel = \"Choose date\",\n value,\n defaultValue,\n placeholder = \"Select date\",\n disabled = false,\n disabledDates,\n readOnly = false,\n showTimePicker = false,\n showToday = false,\n timeLabel = \"Time\",\n timeMinuteStep = 1,\n timeUse12Hour = false,\n todayLabel = \"Today\",\n minDate,\n maxDate,\n format = \"PPP\",\n locale,\n onChange,\n onOpenChange,\n onClear,\n size = \"md\",\n variant = \"default\",\n required = false,\n invalid = false,\n clearable = false,\n calendarProps,\n id,\n name,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby,\n \"aria-describedby\": ariaDescribedby,\n ...props\n}: DatePickerProps) {\n const [open, setOpen] = React.useState(false)\n const [internalDate, setInternalDate] = React.useState<Date | undefined>(defaultValue)\n\n // Time state for when showTimePicker is enabled\n const [internalHours, setInternalHours] = React.useState<number>(\n defaultValue ? defaultValue.getHours() : 0\n )\n const [internalMinutes, setInternalMinutes] = React.useState<number>(\n defaultValue ? defaultValue.getMinutes() : 0\n )\n const [internalPeriod, setInternalPeriod] = React.useState<\"AM\" | \"PM\">(() =>\n defaultValue ? to12Hour(defaultValue.getHours()).period : \"AM\"\n )\n\n // Refs for auto-scrolling time columns\n const hourListRef = React.useRef<HTMLDivElement>(null)\n const minuteListRef = React.useRef<HTMLDivElement>(null)\n\n // Use controlled value if provided, otherwise use internal state\n const selectedDate = value ?? internalDate\n\n // Get time from selected date or internal state\n const currentHours = selectedDate ? selectedDate.getHours() : internalHours\n const currentMinutes = selectedDate ? selectedDate.getMinutes() : internalMinutes\n const currentPeriod = selectedDate\n ? to12Hour(selectedDate.getHours()).period\n : internalPeriod\n\n // Compute defaultMonth once for clarity\n const defaultMonth = selectedDate ?? minDate\n\n // Scroll to selected time items when popover opens\n React.useEffect(() => {\n if (!open || !showTimePicker) return\n\n const timeoutId = setTimeout(() => {\n const selectedHour = hourListRef.current?.querySelector('[data-selected=\"true\"]')\n selectedHour?.scrollIntoView({ block: \"center\", behavior: \"instant\" })\n\n const selectedMinute = minuteListRef.current?.querySelector('[data-selected=\"true\"]')\n selectedMinute?.scrollIntoView({ block: \"center\", behavior: \"instant\" })\n }, 0)\n\n return () => { clearTimeout(timeoutId) }\n }, [open, showTimePicker, currentHours, currentMinutes])\n\n const applyTimeToDate = (date: Date | undefined, hours: number, minutes: number): Date | undefined => {\n if (!date) return undefined\n return setMinutes(setHours(date, hours), minutes)\n }\n\n const handleSelect = (date: Date | undefined) => {\n let finalDate = date\n if (showTimePicker && date) {\n // Apply current time to the selected date\n finalDate = applyTimeToDate(date, currentHours, currentMinutes)\n }\n\n if (value === undefined) {\n setInternalDate(finalDate)\n }\n onChange?.(finalDate)\n\n // Only close if not showing time picker, or close after date selection\n if (!showTimePicker) {\n setOpen(false)\n }\n }\n\n const handleTimeChange = (hours: number, minutes: number) => {\n if (value === undefined) {\n setInternalHours(hours)\n setInternalMinutes(minutes)\n }\n\n if (selectedDate) {\n const newDate = applyTimeToDate(selectedDate, hours, minutes)\n if (value === undefined) {\n setInternalDate(newDate)\n }\n onChange?.(newDate)\n }\n }\n\n const handleHourSelect = (hour: number) => {\n let newHours = hour\n if (timeUse12Hour) {\n newHours = to24Hour(hour, currentPeriod)\n }\n if (value === undefined) {\n setInternalHours(newHours)\n }\n handleTimeChange(newHours, currentMinutes)\n }\n\n const handleMinuteSelect = (minute: number) => {\n if (value === undefined) {\n setInternalMinutes(minute)\n }\n handleTimeChange(currentHours, minute)\n }\n\n const handlePeriodSelect = (period: \"AM\" | \"PM\") => {\n if (value === undefined) {\n setInternalPeriod(period)\n }\n const hour12 = timeUse12Hour\n ? currentHours % 12 || 12\n : to12Hour(currentHours).hour12\n const newHours = to24Hour(hour12, period)\n if (value === undefined) {\n setInternalHours(newHours)\n }\n handleTimeChange(newHours, currentMinutes)\n }\n\n const handleOpenChange = (isOpen: boolean) => {\n // Don't open if readOnly\n if (readOnly && isOpen) return\n\n setOpen(isOpen)\n onOpenChange?.(isOpen)\n }\n\n const handleClear = (event: React.MouseEvent) => {\n event.stopPropagation()\n if (value === undefined) {\n setInternalDate(undefined)\n }\n onChange?.()\n onClear?.()\n }\n\n // Format display value with time if showTimePicker is enabled\n const displayValue = React.useMemo(() => {\n if (!selectedDate) return null\n\n const dateStr = formatDate(selectedDate, format, locale ? { locale } : undefined)\n\n if (showTimePicker) {\n const timeStr = timeUse12Hour\n ? `${String(to12Hour(currentHours).hour12)}:${currentMinutes.toString().padStart(2, \"0\")} ${currentPeriod}`\n : `${currentHours.toString().padStart(2, \"0\")}:${currentMinutes.toString().padStart(2, \"0\")}`\n return `${dateStr} ${timeStr}`\n }\n\n return dateStr\n }, [selectedDate, format, locale, showTimePicker, timeUse12Hour, currentHours, currentMinutes, currentPeriod])\n\n // Memoize time options\n const hourOptions = React.useMemo(() => getHourOptions(timeUse12Hour), [timeUse12Hour])\n const minuteOptions = React.useMemo(() => getMinuteOptions(timeMinuteStep), [timeMinuteStep])\n\n // Calculate display hour for matching in 12h mode\n const displayHour = timeUse12Hour\n ? to12Hour(currentHours).hour12\n : currentHours\n\n // Signal for the filled field state (date selected). The `filled` style\n // variant is independent — this is the data hook consumers/tests rely on.\n const hasValue = Boolean(selectedDate)\n\n const showClearButton = clearable && hasValue && !disabled && !readOnly\n\n // Combined date disabled check\n const isDateDisabled = React.useCallback(\n (date: Date): boolean => {\n const normalizedDate = startOfDay(date)\n if (minDate && isBefore(normalizedDate, startOfDay(minDate))) return true\n if (maxDate && isAfter(normalizedDate, startOfDay(maxDate))) return true\n if (disabledDates?.(date)) return true\n return false\n },\n [minDate, maxDate, disabledDates]\n )\n\n // Check if today is disabled\n const isTodayDisabled = React.useMemo(() => {\n return isDateDisabled(new Date())\n }, [isDateDisabled])\n\n // Handle selecting today\n const handleSelectToday = () => {\n const today = startOfDay(new Date())\n if (!isDateDisabled(today)) {\n handleSelect(today)\n }\n }\n\n return (\n <div className={cn(\"relative\", className)} data-slot=\"date-picker\" {...props}>\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild>\n <button\n ref={ref}\n className={cn(\n datePickerTriggerVariants({ size, variant }),\n !displayValue && \"text-muted-foreground\"\n )}\n aria-describedby={ariaDescribedby}\n aria-disabled={readOnly || undefined}\n aria-expanded={open}\n aria-haspopup=\"dialog\"\n aria-invalid={invalid}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-required={required}\n data-has-value={hasValue}\n data-readonly={readOnly || undefined}\n data-size={size}\n data-slot=\"date-picker-trigger\"\n data-state={open ? \"open\" : \"closed\"}\n data-variant={variant}\n disabled={disabled}\n id={id}\n type=\"button\"\n >\n <span className=\"flex-1 truncate\">\n {displayValue ?? placeholder}\n </span>\n <CalendarIcon\n aria-hidden=\"true\"\n className={cn(\"size-4 shrink-0 opacity-50\", showClearButton && \"invisible\")}\n />\n </button>\n </PopoverTrigger>\n <PopoverContent\n align={align}\n aria-label={dialogLabel}\n className=\"w-auto p-0\"\n data-slot=\"date-picker-calendar\"\n >\n <Calendar\n autoFocus\n footer={\n showToday ? (\n <div className=\"border-t border-border p-2\" data-slot=\"date-picker-footer\">\n <Button\n className=\"w-full\"\n disabled={isTodayDisabled}\n size=\"sm\"\n variant=\"ghost\"\n onClick={handleSelectToday}\n >\n {todayLabel}\n </Button>\n </div>\n ) : undefined\n }\n defaultMonth={defaultMonth}\n disabled={isDateDisabled}\n locale={locale}\n mode=\"single\"\n selected={selectedDate}\n onSelect={handleSelect}\n {...calendarProps}\n />\n\n {/* Time Picker Section */}\n {showTimePicker && (\n <div\n className=\"border-t border-border\"\n data-slot=\"date-picker-time\"\n >\n <div className=\"px-3 py-2 text-xs font-medium text-muted-foreground\">\n {timeLabel}\n </div>\n <div\n aria-label=\"Time selection\"\n className=\"flex divide-x border-t border-border\"\n role=\"listbox\"\n >\n {/* Hours Column */}\n <div className=\"flex flex-col\">\n <div className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground text-center border-b\">\n {timeUse12Hour ? \"Hour\" : \"Hours\"}\n </div>\n <ScrollArea className=\"h-36\">\n <div\n ref={hourListRef}\n aria-label=\"Hours\"\n className=\"flex flex-col items-stretch p-1\"\n role=\"group\"\n >\n {hourOptions.map((hour) => {\n const isSelected = displayHour === hour\n return (\n <button\n key={hour}\n className={cn(\n \"flex h-[var(--date-picker-preset-item-height)] w-12 items-center justify-center rounded-sm text-sm\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n isSelected && \"bg-primary text-primary-foreground\"\n )}\n aria-selected={isSelected}\n data-selected={isSelected}\n role=\"option\"\n type=\"button\"\n onClick={() => { handleHourSelect(hour); }}\n >\n {timeUse12Hour ? hour : hour.toString().padStart(2, \"0\")}\n </button>\n )\n })}\n </div>\n </ScrollArea>\n </div>\n\n {/* Minutes Column */}\n <div className=\"flex flex-col\">\n <div className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground text-center border-b\">\n Min\n </div>\n <ScrollArea className=\"h-36\">\n <div\n ref={minuteListRef}\n aria-label=\"Minutes\"\n className=\"flex flex-col items-stretch p-1\"\n role=\"group\"\n >\n {minuteOptions.map((minute) => {\n const isSelected = currentMinutes === minute\n return (\n <button\n key={minute}\n className={cn(\n \"flex h-[var(--date-picker-preset-item-height)] w-12 items-center justify-center rounded-sm text-sm\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n isSelected && \"bg-primary text-primary-foreground\"\n )}\n aria-selected={isSelected}\n data-selected={isSelected}\n role=\"option\"\n type=\"button\"\n onClick={() => { handleMinuteSelect(minute); }}\n >\n {minute.toString().padStart(2, \"0\")}\n </button>\n )\n })}\n </div>\n </ScrollArea>\n </div>\n\n {/* AM/PM Column (12-hour mode only) */}\n {timeUse12Hour && (\n <div className=\"flex flex-col\">\n <div className=\"px-2 py-1.5 text-xs font-medium text-muted-foreground text-center border-b\">\n \n </div>\n <div\n aria-label=\"Period\"\n className=\"flex flex-col items-stretch p-1\"\n role=\"group\"\n >\n {([\"AM\", \"PM\"] as const).map((period) => {\n const isSelected = currentPeriod === period\n return (\n <button\n key={period}\n className={cn(\n \"flex h-[var(--date-picker-preset-item-height)] w-12 items-center justify-center rounded-sm text-sm\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n isSelected && \"bg-primary text-primary-foreground\"\n )}\n aria-selected={isSelected}\n data-selected={isSelected}\n role=\"option\"\n type=\"button\"\n onClick={() => { handlePeriodSelect(period); }}\n >\n {period}\n </button>\n )\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n )}\n </PopoverContent>\n </Popover>\n {showClearButton && (\n <button\n aria-label=\"Clear date\"\n className={cn(datePickerClearButtonVariants({ size, variant }))}\n data-slot=\"date-picker-clear\"\n type=\"button\"\n onClick={handleClear}\n >\n <XIcon className=\"size-4\" />\n </button>\n )}\n {name && (\n <input\n name={name}\n type=\"hidden\"\n value={selectedDate?.toISOString() ?? \"\"}\n />\n )}\n </div>\n )\n}\n\nexport { DatePicker }\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Textarea } from './chunk-ARJAIH7Q.js';
|
|
2
|
-
import { TextInput } from './chunk-
|
|
3
|
-
import { Button } from './chunk-
|
|
2
|
+
import { TextInput } from './chunk-GX2VJT7D.js';
|
|
3
|
+
import { Button } from './chunk-N3DBRKUS.js';
|
|
4
4
|
import { cn } from './chunk-RVAYDRMA.js';
|
|
5
5
|
import * as React from 'react';
|
|
6
6
|
import { cva } from 'class-variance-authority';
|
|
@@ -179,5 +179,5 @@ function InputGroupTextarea({
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, inputGroupAddonVariants, inputGroupButtonVariants, inputGroupInputVariants, inputGroupTextareaVariants, inputGroupVariants };
|
|
182
|
-
//# sourceMappingURL=chunk-
|
|
183
|
-
//# sourceMappingURL=chunk-
|
|
182
|
+
//# sourceMappingURL=chunk-ZTD3QXLY.js.map
|
|
183
|
+
//# sourceMappingURL=chunk-ZTD3QXLY.js.map
|