@mdigital_ui/ui 0.4.8 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/alert/index.d.ts.map +1 -1
- package/dist/alert/index.js +1 -1
- package/dist/autocomplete/index.d.ts.map +1 -1
- package/dist/autocomplete/index.js +3 -2
- package/dist/avatar/index.d.ts.map +1 -1
- package/dist/avatar/index.js +1 -1
- package/dist/breadcrumbs/index.js +4 -4
- package/dist/button/index.js +2 -2
- package/dist/calendar/index.d.ts.map +1 -1
- package/dist/calendar/index.js +2 -1
- package/dist/cascader/index.d.ts.map +1 -1
- package/dist/cascader/index.js +1 -1
- package/dist/checkbox/index.d.ts.map +1 -1
- package/dist/checkbox/index.js +1 -1
- package/dist/checkbox/types.d.ts +2 -0
- package/dist/checkbox/types.d.ts.map +1 -1
- package/dist/{chunk-Z3DIBMBQ.js → chunk-3K4GIXFA.js} +178 -118
- package/dist/chunk-3K4GIXFA.js.map +1 -0
- package/dist/{chunk-SJLH5ZDW.js → chunk-4QLYRAW2.js} +3 -3
- package/dist/{chunk-SJLH5ZDW.js.map → chunk-4QLYRAW2.js.map} +1 -1
- package/dist/{chunk-4TEZWGX7.js → chunk-64OCJYSH.js} +17 -8
- package/dist/chunk-64OCJYSH.js.map +1 -0
- package/dist/{chunk-5YEC6FDN.js → chunk-6CMHCCDO.js} +14 -7
- package/dist/chunk-6CMHCCDO.js.map +1 -0
- package/dist/{chunk-7RT65ZGV.js → chunk-6H2Y3QKP.js} +75 -23
- package/dist/chunk-6H2Y3QKP.js.map +1 -0
- package/dist/{chunk-UFYG3HKL.js → chunk-6K6RGQNL.js} +193 -94
- package/dist/chunk-6K6RGQNL.js.map +1 -0
- package/dist/{chunk-ROQGBDET.js → chunk-6XXAZ6P2.js} +15 -7
- package/dist/chunk-6XXAZ6P2.js.map +1 -0
- package/dist/{chunk-3Z7RLVWD.js → chunk-75T5BISG.js} +7 -13
- package/dist/chunk-75T5BISG.js.map +1 -0
- package/dist/{chunk-XAM5EKOS.js → chunk-7SKAAKBC.js} +13 -12
- package/dist/chunk-7SKAAKBC.js.map +1 -0
- package/dist/{chunk-6RZEJRTC.js → chunk-7ZUIX4NK.js} +3 -3
- package/dist/{chunk-6RZEJRTC.js.map → chunk-7ZUIX4NK.js.map} +1 -1
- package/dist/{chunk-NPK4ESMA.js → chunk-B75ICJCX.js} +9 -16
- package/dist/chunk-B75ICJCX.js.map +1 -0
- package/dist/chunk-CB7YOZWV.js +50 -0
- package/dist/chunk-CB7YOZWV.js.map +1 -0
- package/dist/{chunk-UFC3RGIN.js → chunk-DXAOZB6J.js} +4 -4
- package/dist/chunk-DXAOZB6J.js.map +1 -0
- package/dist/{chunk-75N6T3IS.js → chunk-ECBTSKES.js} +13 -10
- package/dist/chunk-ECBTSKES.js.map +1 -0
- package/dist/{chunk-J2WIZULN.js → chunk-FCIK35OY.js} +3 -3
- package/dist/{chunk-J2WIZULN.js.map → chunk-FCIK35OY.js.map} +1 -1
- package/dist/{chunk-FY2TZ2NT.js → chunk-GP7R3AFC.js} +58 -30
- package/dist/chunk-GP7R3AFC.js.map +1 -0
- package/dist/{chunk-ED4CQZ72.js → chunk-GQM5WLP5.js} +4 -4
- package/dist/{chunk-ED4CQZ72.js.map → chunk-GQM5WLP5.js.map} +1 -1
- package/dist/{chunk-TBKPQOXF.js → chunk-GSLNACUF.js} +3 -3
- package/dist/{chunk-TBKPQOXF.js.map → chunk-GSLNACUF.js.map} +1 -1
- package/dist/{chunk-OJAHIPPP.js → chunk-HGWD63IR.js} +3 -3
- package/dist/{chunk-OJAHIPPP.js.map → chunk-HGWD63IR.js.map} +1 -1
- package/dist/chunk-HKQOAEFY.js +1 -1
- package/dist/{chunk-PD3O6ZH4.js → chunk-JXOLZBXF.js} +19 -8
- package/dist/chunk-JXOLZBXF.js.map +1 -0
- package/dist/{chunk-CUXQZRDI.js → chunk-JZCONCJS.js} +13 -3
- package/dist/chunk-JZCONCJS.js.map +1 -0
- package/dist/{chunk-TDPJYCNI.js → chunk-KBT6UQNA.js} +14 -35
- package/dist/chunk-KBT6UQNA.js.map +1 -0
- package/dist/{chunk-VNH6R5EU.js → chunk-KR3GBSVA.js} +4 -6
- package/dist/chunk-KR3GBSVA.js.map +1 -0
- package/dist/{chunk-JWYBDNC6.js → chunk-KTK7LSKX.js} +7 -8
- package/dist/chunk-KTK7LSKX.js.map +1 -0
- package/dist/{chunk-J4SAIKKZ.js → chunk-L3ZFNHVX.js} +25 -22
- package/dist/chunk-L3ZFNHVX.js.map +1 -0
- package/dist/{chunk-PB5VGXS5.js → chunk-LBOQJHFH.js} +3 -3
- package/dist/{chunk-PB5VGXS5.js.map → chunk-LBOQJHFH.js.map} +1 -1
- package/dist/{chunk-XCK62GVU.js → chunk-LZ2MHSYF.js} +8 -5
- package/dist/chunk-LZ2MHSYF.js.map +1 -0
- package/dist/{chunk-LHZJ2GJU.js → chunk-MHRSK2QC.js} +8 -6
- package/dist/chunk-MHRSK2QC.js.map +1 -0
- package/dist/{chunk-JIXINKUJ.js → chunk-N742SARE.js} +8 -7
- package/dist/chunk-N742SARE.js.map +1 -0
- package/dist/{chunk-3XOHSE3X.js → chunk-NA6EVQ6T.js} +3 -3
- package/dist/{chunk-3XOHSE3X.js.map → chunk-NA6EVQ6T.js.map} +1 -1
- package/dist/{chunk-6ROGWFQ2.js → chunk-NKLKTAUP.js} +3 -3
- package/dist/{chunk-6ROGWFQ2.js.map → chunk-NKLKTAUP.js.map} +1 -1
- package/dist/{chunk-S6HO7HUY.js → chunk-OSD63E6O.js} +15 -19
- package/dist/chunk-OSD63E6O.js.map +1 -0
- package/dist/{chunk-QDJ5PZPP.js → chunk-PHA7SLBY.js} +3 -3
- package/dist/chunk-PHA7SLBY.js.map +1 -0
- package/dist/{chunk-6NXZWLSM.js → chunk-S4BF3Z6O.js} +4 -4
- package/dist/{chunk-6NXZWLSM.js.map → chunk-S4BF3Z6O.js.map} +1 -1
- package/dist/{chunk-C65SCJD6.js → chunk-SK6YMTMA.js} +5 -12
- package/dist/chunk-SK6YMTMA.js.map +1 -0
- package/dist/{chunk-DBPLQZJ2.js → chunk-SSISBOLO.js} +75 -22
- package/dist/chunk-SSISBOLO.js.map +1 -0
- package/dist/{chunk-LWYZCSX4.js → chunk-UBJK5623.js} +12 -11
- package/dist/chunk-UBJK5623.js.map +1 -0
- package/dist/{chunk-74AF6PO2.js → chunk-UEQ3NEVL.js} +48 -12
- package/dist/chunk-UEQ3NEVL.js.map +1 -0
- package/dist/{chunk-A4MYCEGM.js → chunk-UHHCUCEE.js} +19 -8
- package/dist/chunk-UHHCUCEE.js.map +1 -0
- package/dist/{chunk-X7JN7WPF.js → chunk-UIPDAD62.js} +3 -3
- package/dist/chunk-UIPDAD62.js.map +1 -0
- package/dist/{chunk-YUACN5GJ.js → chunk-UPBKLI62.js} +20 -13
- package/dist/chunk-UPBKLI62.js.map +1 -0
- package/dist/{chunk-3B32X5PU.js → chunk-UUXSTLOY.js} +7 -5
- package/dist/chunk-UUXSTLOY.js.map +1 -0
- package/dist/{chunk-HSMO2BR4.js → chunk-VNB7ZHCZ.js} +4 -13
- package/dist/chunk-VNB7ZHCZ.js.map +1 -0
- package/dist/{chunk-TQEMGWZ2.js → chunk-W4RYNHAG.js} +3 -3
- package/dist/{chunk-TQEMGWZ2.js.map → chunk-W4RYNHAG.js.map} +1 -1
- package/dist/{chunk-PRDJLQLB.js → chunk-XNV3YAJK.js} +5 -5
- package/dist/chunk-XNV3YAJK.js.map +1 -0
- package/dist/{chunk-I7HJBHQU.js → chunk-Y3PVWMUN.js} +7 -7
- package/dist/chunk-Y3PVWMUN.js.map +1 -0
- package/dist/clipboard/index.js +2 -2
- package/dist/collapse/index.js +2 -2
- package/dist/color-picker/index.d.ts +3 -3
- package/dist/color-picker/index.d.ts.map +1 -1
- package/dist/color-picker/index.js +3 -2
- package/dist/context-menu/index.d.ts +4 -6
- package/dist/context-menu/index.d.ts.map +1 -1
- package/dist/context-menu/index.js +2 -2
- package/dist/date-picker/PickerWrapper.d.ts +3 -3
- package/dist/date-picker/PickerWrapper.d.ts.map +1 -1
- package/dist/date-picker/index.d.ts.map +1 -1
- package/dist/date-picker/index.js +3 -2
- package/dist/descriptions/index.js +1 -1
- package/dist/dropdown/index.js +3 -3
- package/dist/hooks/useControllable.d.ts +9 -2
- package/dist/hooks/useControllable.d.ts.map +1 -1
- package/dist/hooks/useRipple.d.ts +0 -6
- package/dist/hooks/useRipple.d.ts.map +1 -1
- package/dist/index.js +46 -46
- package/dist/input/index.js +1 -1
- package/dist/input-password/index.js +2 -2
- package/dist/mentions/index.d.ts.map +1 -1
- package/dist/mentions/index.js +2 -1
- package/dist/menubar/index.js +2 -2
- package/dist/multi-select/index.d.ts.map +1 -1
- package/dist/multi-select/index.js +4 -4
- package/dist/navigation-menu/index.d.ts.map +1 -1
- package/dist/navigation-menu/index.js +1 -1
- package/dist/number-input/index.d.ts.map +1 -1
- package/dist/number-input/index.js +3 -3
- package/dist/pagination/index.js +2 -2
- package/dist/popover/index.d.ts +16 -1
- package/dist/popover/index.d.ts.map +1 -1
- package/dist/popover/index.js +1 -1
- package/dist/qr-code/index.d.ts +3 -3
- package/dist/qr-code/index.d.ts.map +1 -1
- package/dist/qr-code/index.js +1 -1
- package/dist/radio/index.d.ts.map +1 -1
- package/dist/radio/index.js +1 -1
- package/dist/rating/index.js +2 -2
- package/dist/resizable/index.d.ts +4 -3
- package/dist/resizable/index.d.ts.map +1 -1
- package/dist/resizable/index.js +1 -1
- package/dist/result/index.d.ts.map +1 -1
- package/dist/result/index.js +1 -1
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +4 -4
- package/dist/skeleton/index.d.ts +3 -3
- package/dist/skeleton/index.d.ts.map +1 -1
- package/dist/skeleton/index.js +1 -1
- package/dist/table/index.d.ts.map +1 -1
- package/dist/table/index.js +8 -8
- package/dist/table/types.d.ts +16 -2
- package/dist/table/types.d.ts.map +1 -1
- package/dist/tags-input/index.d.ts.map +1 -1
- package/dist/tags-input/index.js +2 -1
- package/dist/textarea/index.d.ts +3 -3
- package/dist/textarea/index.d.ts.map +1 -1
- package/dist/textarea/index.js +1 -1
- package/dist/theme/ThemeProvider.d.ts +18 -2
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/theme/index.d.ts +1 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/timeline/index.d.ts.map +1 -1
- package/dist/timeline/index.js +1 -1
- package/dist/toggle/index.d.ts.map +1 -1
- package/dist/toggle/index.js +2 -2
- package/dist/toggle-group/index.d.ts.map +1 -1
- package/dist/toggle-group/index.js +2 -2
- package/dist/tour/index.d.ts.map +1 -1
- package/dist/tour/index.js +1 -1
- package/dist/transfer/index.js +2 -2
- package/dist/tree-select/index.js +2 -2
- package/dist/typography/index.d.ts.map +1 -1
- package/dist/typography/index.js +1 -1
- package/dist/upload/index.d.ts.map +1 -1
- package/dist/upload/index.js +2 -2
- package/package.json +4 -3
- package/styles/datepicker.css +126 -0
- package/styles/global.css +1 -113
- package/dist/chunk-3B32X5PU.js.map +0 -1
- package/dist/chunk-3Z7RLVWD.js.map +0 -1
- package/dist/chunk-4TEZWGX7.js.map +0 -1
- package/dist/chunk-5YEC6FDN.js.map +0 -1
- package/dist/chunk-74AF6PO2.js.map +0 -1
- package/dist/chunk-75N6T3IS.js.map +0 -1
- package/dist/chunk-7RT65ZGV.js.map +0 -1
- package/dist/chunk-A4MYCEGM.js.map +0 -1
- package/dist/chunk-C65SCJD6.js.map +0 -1
- package/dist/chunk-CUXQZRDI.js.map +0 -1
- package/dist/chunk-DBPLQZJ2.js.map +0 -1
- package/dist/chunk-FY2TZ2NT.js.map +0 -1
- package/dist/chunk-HSMO2BR4.js.map +0 -1
- package/dist/chunk-I7HJBHQU.js.map +0 -1
- package/dist/chunk-J4SAIKKZ.js.map +0 -1
- package/dist/chunk-JIXINKUJ.js.map +0 -1
- package/dist/chunk-JWYBDNC6.js.map +0 -1
- package/dist/chunk-LHZJ2GJU.js.map +0 -1
- package/dist/chunk-LWYZCSX4.js.map +0 -1
- package/dist/chunk-NPK4ESMA.js.map +0 -1
- package/dist/chunk-PD3O6ZH4.js.map +0 -1
- package/dist/chunk-PQOIW5CM.js +0 -27
- package/dist/chunk-PQOIW5CM.js.map +0 -1
- package/dist/chunk-PRDJLQLB.js.map +0 -1
- package/dist/chunk-QDJ5PZPP.js.map +0 -1
- package/dist/chunk-ROQGBDET.js.map +0 -1
- package/dist/chunk-S6HO7HUY.js.map +0 -1
- package/dist/chunk-TDPJYCNI.js.map +0 -1
- package/dist/chunk-UFC3RGIN.js.map +0 -1
- package/dist/chunk-UFYG3HKL.js.map +0 -1
- package/dist/chunk-VNH6R5EU.js.map +0 -1
- package/dist/chunk-X7JN7WPF.js.map +0 -1
- package/dist/chunk-XAM5EKOS.js.map +0 -1
- package/dist/chunk-XCK62GVU.js.map +0 -1
- package/dist/chunk-YUACN5GJ.js.map +0 -1
- package/dist/chunk-Z3DIBMBQ.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/navigation-menu/index.tsx"],"names":[],"mappings":"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","file":"chunk-OSD63E6O.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport React from \"react\";\n\nimport { cn } from \"../utils\";\nimport type {\n NavigationMenuProps,\n NavigationMenuItem,\n NavigationMenuChildItem,\n} from \"./types\";\n\nconst navigationMenuVariants = cva(\"navigationMenu_root\", {\n variants: {\n orientation: {\n horizontal: \"flex flex-row\",\n vertical: \"flex flex-col\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n});\n\nconst navigationMenuListVariants = cva(\n \"navigationMenu_list flex items-center gap-1 relative\",\n {\n variants: {\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n },\n);\n\nconst navigationMenuItemVariants = cva(\"navigationMenu_item relative\", {\n variants: {},\n});\n\nconst navigationMenuTriggerVariants = cva(\n \"navigationMenu_trigger inline-flex items-center justify-center gap-2 rounded-md cursor-pointer px-4 py-2 text-sm font-medium transition-colors hover:bg-surface focus:bg-surface focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-primary focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50 data-[state=open]:bg-surface\",\n {\n variants: {},\n },\n);\n\nconst navigationMenuLinkVariants = cva(\n \"navigationMenu_link inline-flex items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors hover:bg-surface focus:bg-surface focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-primary focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {},\n },\n);\n\nconst navigationMenuContentVariants = cva(\n \"navigationMenu_content z-(--z-popover) absolute top-full left-0 mt-1 w-auto min-w-[400px] rounded-md border border-border bg-background p-4 shadow-lg data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:slide-in-from-top-2 duration-200\",\n {\n variants: {},\n },\n);\n\nconst NavigationMenuContent = React.memo(\n ({\n children,\n isOpen,\n className,\n }: {\n children: NavigationMenuChildItem[];\n isOpen: boolean;\n className?: string;\n }) => {\n return (\n <div\n data-slot=\"content\"\n data-state={isOpen ? \"open\" : \"closed\"}\n className={cn(\n navigationMenuContentVariants(),\n !isOpen && \"hidden\",\n className,\n )}\n role=\"menu\"\n >\n <div className=\"grid gap-3\">\n {children.map((child) => (\n <NavigationMenuChildLink key={child.key} item={child} />\n ))}\n </div>\n </div>\n );\n },\n);\n\nNavigationMenuContent.displayName = \"NavigationMenuContent\";\n\nconst NavigationMenuChildLink = React.memo(\n ({ item }: { item: NavigationMenuChildItem }) => {\n const handleClick = (e: React.MouseEvent) => {\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n if (item.onClick) {\n e.preventDefault();\n item.onClick();\n }\n };\n\n const content = (\n <div className=\"flex items-start gap-3 rounded-md p-3 hover:bg-surface transition-colors\">\n {item.icon && (\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-surface\">\n {item.icon}\n </div>\n )}\n <div className=\"space-y-1\">\n <div className=\"text-sm font-medium leading-none\">{item.label}</div>\n {item.description && (\n <p className=\"text-sm leading-snug text-text-secondary\">\n {item.description}\n </p>\n )}\n </div>\n </div>\n );\n\n if (item.href && !item.disabled) {\n return (\n <a\n href={item.href}\n onClick={handleClick}\n className={cn(\n \"block\",\n item.disabled && \"pointer-events-none opacity-50\",\n )}\n role=\"menuitem\"\n aria-disabled={item.disabled}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n onClick={handleClick}\n disabled={item.disabled}\n className=\"block w-full text-left disabled:pointer-events-none disabled:opacity-50\"\n role=\"menuitem\"\n aria-disabled={item.disabled}\n >\n {content}\n </button>\n );\n },\n);\n\nNavigationMenuChildLink.displayName = \"NavigationMenuChildLink\";\n\nconst NavigationMenuItemComponent = React.memo(\n ({\n item,\n onOpenChange,\n isOpen,\n classNames,\n closeDelay = 150,\n }: {\n item: NavigationMenuItem;\n onOpenChange: (key: string, open: boolean) => void;\n isOpen: boolean;\n classNames?: NavigationMenuProps[\"classNames\"];\n closeDelay?: number;\n }) => {\n const hasChildren = item.children && item.children.length > 0;\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(\n undefined,\n );\n\n const handleMouseEnter = () => {\n if (hasChildren && !item.disabled) {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n onOpenChange(item.key, true);\n }\n };\n\n const handleMouseLeave = () => {\n if (hasChildren && !item.disabled) {\n timeoutRef.current = setTimeout(() => {\n onOpenChange(item.key, false);\n }, closeDelay);\n }\n };\n\n const handleClick = (e: React.MouseEvent) => {\n if (item.disabled) {\n e.preventDefault();\n return;\n }\n\n if (hasChildren) {\n e.preventDefault();\n onOpenChange(item.key, !isOpen);\n } else if (item.onClick) {\n e.preventDefault();\n item.onClick();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (item.disabled) return;\n\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n if (hasChildren) {\n onOpenChange(item.key, !isOpen);\n } else if (item.onClick) {\n item.onClick();\n }\n } else if (e.key === \"Escape\" && isOpen) {\n e.preventDefault();\n onOpenChange(item.key, false);\n }\n };\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const content = (\n <>\n {item.icon && <span className=\"shrink-0\">{item.icon}</span>}\n <span>{item.label}</span>\n {hasChildren && (\n <ChevronDown\n className={cn(\n \"h-4 w-4 shrink-0 transition-transform\",\n isOpen && \"rotate-180\",\n )}\n aria-hidden=\"true\"\n />\n )}\n </>\n );\n\n return (\n <li\n data-slot=\"item\"\n className={cn(navigationMenuItemVariants(), classNames?.item)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n role=\"none\"\n >\n {hasChildren ? (\n <>\n <button\n type=\"button\"\n data-slot=\"trigger\"\n data-state={isOpen ? \"open\" : \"closed\"}\n className={cn(\n navigationMenuTriggerVariants(),\n classNames?.trigger,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={item.disabled}\n aria-haspopup=\"true\"\n aria-expanded={isOpen}\n role=\"menuitem\"\n >\n {content}\n </button>\n <NavigationMenuContent\n children={item.children!}\n isOpen={isOpen}\n className={classNames?.content}\n />\n </>\n ) : item.href && !item.disabled ? (\n <a\n href={item.href}\n data-slot=\"link\"\n className={cn(\n navigationMenuLinkVariants(),\n classNames?.link,\n item.disabled && \"pointer-events-none opacity-50\",\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role=\"menuitem\"\n aria-disabled={item.disabled}\n >\n {content}\n </a>\n ) : (\n <button\n type=\"button\"\n data-slot=\"link\"\n className={cn(navigationMenuLinkVariants(), classNames?.link)}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n disabled={item.disabled}\n role=\"menuitem\"\n >\n {content}\n </button>\n )}\n </li>\n );\n },\n);\n\nNavigationMenuItemComponent.displayName = \"NavigationMenuItemComponent\";\n\nexport const NavigationMenu = React.memo<NavigationMenuProps>(\n ({\n items,\n orientation = \"horizontal\",\n closeDelay,\n className,\n classNames,\n ref,\n }) => {\n const [openItems, setOpenItems] = React.useState<Set<string>>(new Set());\n const navRef = React.useRef<HTMLElement>(null);\n\n React.useImperativeHandle(ref, () => navRef.current!);\n\n const handleOpenChange = React.useCallback((key: string, open: boolean) => {\n if (open) {\n setOpenItems(new Set([key])); // close all others, open only this one\n } else {\n setOpenItems((prev) => {\n const next = new Set(prev);\n next.delete(key);\n return next;\n });\n }\n }, []);\n\n // Close on outside click\n React.useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (navRef.current && !navRef.current.contains(e.target as Node)) {\n setOpenItems(new Set());\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n // Close on Escape\n React.useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setOpenItems(new Set());\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, []);\n\n return (\n <nav\n ref={navRef}\n data-slot=\"root\"\n className={cn(\n navigationMenuVariants({ orientation }),\n className,\n classNames?.root,\n )}\n role=\"navigation\"\n aria-label=\"Main navigation\"\n >\n <ul\n data-slot=\"list\"\n className={cn(\n navigationMenuListVariants({ orientation }),\n classNames?.list,\n )}\n role=\"menubar\"\n >\n {items.map((item) => (\n <NavigationMenuItemComponent\n key={item.key}\n item={item}\n onOpenChange={handleOpenChange}\n isOpen={openItems.has(item.key)}\n classNames={classNames}\n closeDelay={closeDelay}\n />\n ))}\n </ul>\n </nav>\n );\n },\n);\n\nNavigationMenu.displayName = \"NavigationMenu\";\n\nexport type * from \"./types\";\n"]}
|
|
@@ -28,7 +28,7 @@ function useSelectBase(config) {
|
|
|
28
28
|
helperText
|
|
29
29
|
});
|
|
30
30
|
const [isOpen, setIsOpen] = React.useState(false);
|
|
31
|
-
const [
|
|
31
|
+
const [, setParentNode] = React.useState(
|
|
32
32
|
null
|
|
33
33
|
);
|
|
34
34
|
const [searchQuery, setSearchQuery] = React.useState("");
|
|
@@ -263,5 +263,5 @@ function useSelectBase(config) {
|
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
export { useSelectBase };
|
|
266
|
-
//# sourceMappingURL=chunk-
|
|
267
|
-
//# sourceMappingURL=chunk-
|
|
266
|
+
//# sourceMappingURL=chunk-PHA7SLBY.js.map
|
|
267
|
+
//# sourceMappingURL=chunk-PHA7SLBY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shared/useSelectBase.ts"],"names":[],"mappings":"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","file":"chunk-PHA7SLBY.js","sourcesContent":["import { useVirtualizer } from \"@tanstack/react-virtual\";\nimport React, { useCallback, useId } from \"react\";\n\nimport { useMenuNavigation } from \"../hooks/useMenuNavigation\";\nimport { getValidationStatus } from \"../utils\";\n\ninterface SelectBaseOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n group?: string;\n}\n\ninterface UseSelectBaseConfig<O extends SelectBaseOption> {\n options: O[];\n /** Called when the user presses Enter on a highlighted option (or clicks one via the hook's helpers). */\n onSelectOption: (option: O) => void;\n virtualizeThreshold?: number;\n maxDropdownHeight?: number;\n label?: string;\n idPrefix: string; // 'select' or 'multiselect'\n error?: string | boolean;\n warning?: string | boolean;\n info?: string | boolean;\n success?: string | boolean;\n helperText?: string;\n}\n\nexport interface FlattenedItem<O extends SelectBaseOption> {\n type: \"option\" | \"group\";\n data: O | string;\n}\n\n\nexport function useSelectBase<O extends SelectBaseOption>(\n config: UseSelectBaseConfig<O>,\n) {\n const {\n options,\n virtualizeThreshold = 50,\n maxDropdownHeight = 300,\n label,\n idPrefix,\n error,\n warning,\n info,\n success,\n helperText,\n } = config;\n\n // -- IDs / validation -------------------------------------------------------\n const uniqueId = useId();\n const labelId = `${idPrefix}-label-${uniqueId}`;\n const listboxId = `${idPrefix}-listbox-${uniqueId}`;\n const helperId = `${idPrefix}-helper-${uniqueId}`;\n\n const { status, message: helperMessage } = getValidationStatus({\n error,\n warning,\n info,\n success,\n helperText,\n });\n\n // -- State ------------------------------------------------------------------\n const [isOpen, setIsOpen] = React.useState(false);\n const [, setParentNode] = React.useState<HTMLDivElement | null>(\n null,\n );\n const [searchQuery, setSearchQuery] = React.useState(\"\");\n const [showTopArrow, setShowTopArrow] = React.useState(false);\n const [showBottomArrow, setShowBottomArrow] = React.useState(false);\n\n // -- Refs -------------------------------------------------------------------\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const scrollContainerRef = React.useRef<HTMLDivElement>(null);\n\n // Store onSelectOption in a ref so handleKeyDown doesn't depend on it\n const onSelectRef = React.useRef(config.onSelectOption);\n React.useEffect(() => {\n onSelectRef.current = config.onSelectOption;\n }, [config.onSelectOption]);\n\n // -- Memos ------------------------------------------------------------------\n const groupedOptions = React.useMemo(() => {\n const groups: Record<string, O[]> = {};\n const ungrouped: O[] = [];\n\n options.forEach((option) => {\n if (option.group) {\n if (!groups[option.group]) {\n groups[option.group] = [];\n }\n groups[option.group]!.push(option);\n } else {\n ungrouped.push(option);\n }\n });\n\n return { groups, ungrouped };\n }, [options]);\n\n const flattenedOptions = React.useMemo(() => {\n const items: Array<FlattenedItem<O>> = [];\n\n groupedOptions.ungrouped.forEach((option) => {\n items.push({ type: \"option\", data: option });\n });\n\n Object.entries(groupedOptions.groups).forEach(\n ([groupName, groupOptions]) => {\n items.push({ type: \"group\", data: groupName });\n (groupOptions as O[]).forEach((option) => {\n items.push({ type: \"option\", data: option });\n });\n },\n );\n\n return items;\n }, [groupedOptions]);\n\n const filteredOptions = React.useMemo(() => {\n if (!searchQuery) return flattenedOptions;\n\n const query = searchQuery.toLowerCase();\n const matchingOptions = new Set(\n flattenedOptions.filter(\n (item) =>\n item.type === \"option\" &&\n (item.data as O).label.toLowerCase().includes(query),\n ),\n );\n\n // Build set of group names that have matching options - O(n)\n const matchingGroups = new Set<string>();\n for (const item of flattenedOptions) {\n if (item.type === \"option\" && matchingOptions.has(item)) {\n const group = (item.data as O).group;\n if (group) matchingGroups.add(group);\n }\n }\n\n return flattenedOptions.filter((item) => {\n if (item.type === \"group\") {\n return matchingGroups.has(item.data as string);\n }\n return matchingOptions.has(item);\n });\n }, [flattenedOptions, searchQuery]);\n\n const selectableOptions = React.useMemo(\n () =>\n filteredOptions.filter(\n (item) => item.type === \"option\" && !(item.data as O).disabled,\n ),\n [filteredOptions],\n );\n\n const enabledIndices = React.useMemo(\n () => Array.from({ length: selectableOptions.length }, (_, i) => i),\n [selectableOptions.length],\n );\n\n const handleMenuClose = React.useCallback(() => {\n setIsOpen(false);\n setSearchQuery(\"\");\n inputRef.current?.blur();\n }, []);\n\n const onMenuSelect = React.useCallback(\n (index: number) => {\n const item = selectableOptions[index];\n if (item) {\n onSelectRef.current(item.data as O);\n }\n },\n [selectableOptions],\n );\n\n const {\n highlightedIndex,\n setHighlightedIndex,\n handleKeyDown: menuHandleKeyDown,\n } = useMenuNavigation({\n enabledIndices,\n isOpen,\n onClose: handleMenuClose,\n onSelect: onMenuSelect,\n onOpen: () => setIsOpen(true),\n loop: false,\n });\n\n // Reset highlight when filtered options change (e.g. search query changes)\n React.useEffect(() => {\n setHighlightedIndex(-1);\n }, [filteredOptions, setHighlightedIndex]);\n\n // Wrap the hook's handler: Space must type in the search input, not select\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (isOpen && e.key === \" \") {\n e.stopPropagation();\n return;\n }\n menuHandleKeyDown(e);\n },\n [isOpen, menuHandleKeyDown],\n );\n\n // Prevent Space keyup from bubbling to the <button> trigger (native button\n // activation fires on keyup, which would toggle the Popover closed).\n const handleKeyUp = React.useCallback(\n (e: React.KeyboardEvent) => {\n if (isOpen && e.key === \" \") {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n [isOpen],\n );\n\n const shouldVirtualize = filteredOptions.length > virtualizeThreshold;\n\n // -- Virtualizer ------------------------------------------------------------\n // Use the single scrollContainerRef as the virtualizer scroll element.\n // No separate inner scroll container — avoids nested scroll conflicts.\n const virtualizer = useVirtualizer({\n count: filteredOptions.length,\n getScrollElement: () => scrollContainerRef.current,\n estimateSize: () => 40,\n enabled: shouldVirtualize,\n overscan: 10,\n });\n\n const virtualizerRef = React.useRef(virtualizer);\n React.useEffect(() => {\n virtualizerRef.current = virtualizer;\n }, [virtualizer]);\n\n // Legacy refCallback kept for API compat — just updates parentNode for\n // any external consumers, but virtualizer now uses scrollContainerRef.\n const refCallback = useCallback((node: HTMLDivElement) => {\n if (node) {\n setParentNode(node);\n }\n }, []);\n\n // -- Handlers ---------------------------------------------------------------\n const handleInputChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value);\n setIsOpen(true);\n },\n [],\n );\n\n const handleInputClick = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsOpen(true);\n },\n [],\n );\n\n const handleScroll = React.useCallback(\n (e: React.UIEvent<HTMLDivElement>) => {\n const element = e.currentTarget;\n const { scrollTop, scrollHeight, clientHeight } = element;\n\n setShowTopArrow(scrollTop > 0);\n setShowBottomArrow(scrollTop + clientHeight < scrollHeight - 1);\n },\n [],\n );\n\n // Scroll highlighted option into view\n React.useEffect(() => {\n if (highlightedIndex < 0) return;\n const option = selectableOptions[highlightedIndex];\n if (!option) return;\n\n const optionIndex = filteredOptions.indexOf(option);\n if (optionIndex < 0) return;\n\n if (shouldVirtualize) {\n virtualizerRef.current.scrollToIndex(optionIndex, { align: \"auto\" });\n } else {\n // Non-virtualized: find the DOM element and scroll it into view\n const container = scrollContainerRef.current;\n if (container) {\n const el = container.querySelector(`[data-option-index=\"${optionIndex}\"]`) as HTMLElement;\n el?.scrollIntoView?.({ block: \"nearest\" });\n }\n }\n }, [highlightedIndex, selectableOptions, filteredOptions, shouldVirtualize]);\n\n // -- Effects ----------------------------------------------------------------\n // Check initial scroll state when dropdown opens\n React.useEffect(() => {\n if (isOpen) {\n const timeoutId = setTimeout(() => {\n const element = scrollContainerRef.current;\n if (element) {\n const { scrollTop, scrollHeight, clientHeight } = element;\n setShowTopArrow(scrollTop > 0);\n setShowBottomArrow(scrollTop + clientHeight < scrollHeight - 1);\n }\n }, 50);\n\n return () => clearTimeout(timeoutId);\n } else {\n setShowTopArrow(false);\n setShowBottomArrow(false);\n return undefined;\n }\n }, [isOpen, filteredOptions, shouldVirtualize]);\n\n // -- Return -----------------------------------------------------------------\n return {\n // State\n isOpen,\n setIsOpen,\n searchQuery,\n setSearchQuery,\n highlightedIndex,\n setHighlightedIndex,\n showTopArrow,\n showBottomArrow,\n\n // Refs\n triggerRef,\n inputRef,\n scrollContainerRef,\n\n // Computed\n filteredOptions,\n selectableOptions,\n shouldVirtualize,\n virtualizer,\n maxDropdownHeight,\n label,\n\n // IDs & validation\n uniqueId,\n labelId,\n listboxId,\n helperId,\n status,\n helperMessage,\n\n // Handlers\n handleInputChange,\n handleInputClick,\n handleScroll,\n handleKeyDown,\n handleKeyUp,\n refCallback,\n };\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useMenuNavigation } from './chunk-NZHKNUGE.js';
|
|
2
|
-
import { useRipple, RippleContainer } from './chunk-
|
|
3
|
-
import { Popover, PopoverTrigger, PopoverContent } from './chunk-
|
|
2
|
+
import { useRipple, RippleContainer } from './chunk-64OCJYSH.js';
|
|
3
|
+
import { Popover, PopoverTrigger, PopoverContent } from './chunk-6XXAZ6P2.js';
|
|
4
4
|
import { colorVars } from './chunk-G6QIIWKU.js';
|
|
5
5
|
import { cn } from './chunk-RAS6HUEI.js';
|
|
6
6
|
import { cva } from 'class-variance-authority';
|
|
@@ -270,5 +270,5 @@ Dropdown.displayName = "Dropdown";
|
|
|
270
270
|
var dropdown_default = Dropdown;
|
|
271
271
|
|
|
272
272
|
export { dropdown_default };
|
|
273
|
-
//# sourceMappingURL=chunk-
|
|
274
|
-
//# sourceMappingURL=chunk-
|
|
273
|
+
//# sourceMappingURL=chunk-S4BF3Z6O.js.map
|
|
274
|
+
//# sourceMappingURL=chunk-S4BF3Z6O.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dropdown/index.tsx"],"names":[],"mappings":"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","file":"chunk-6NXZWLSM.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport React, {\n useCallback,\n useRef,\n useId,\n useState,\n useEffect,\n useMemo,\n} from \"react\";\n\nimport { useRipple, RippleContainer } from \"../hooks/useRipple\";\nimport { useMenuNavigation } from \"../hooks/useMenuNavigation\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { cn } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { DropdownProps } from \"./types\";\n\nconst dropdownItemVariants = cva(\n \"cursor-pointer select-none text-text-primary transition-colors flex items-center gap-2 rounded-sm outline-none\",\n {\n variants: {\n size: {\n xs: \"px-2 py-1 text-xs\",\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-4 py-2 text-base\",\n lg: \"px-5 py-2.5 text-lg\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n disabled: false,\n },\n },\n);\n\nconst DropdownItemDiv: React.FC<React.HTMLAttributes<HTMLDivElement> & {\n children: React.ReactNode;\n disabled?: boolean;\n ref?: React.Ref<HTMLDivElement>;\n}> = ({\n children,\n disabled,\n className,\n onKeyDown: externalOnKeyDown,\n ref,\n ...props\n}) => {\n const {\n ripples,\n onPointerDown,\n onKeyDown: rippleOnKeyDown,\n onAnimationEnd,\n } = useRipple(!disabled);\n return (\n <div\n ref={ref}\n className={cn(className, \"relative overflow-hidden\")}\n onPointerDown={onPointerDown}\n onKeyDown={(e) => {\n rippleOnKeyDown(e);\n externalOnKeyDown?.(e);\n }}\n {...props}\n >\n {children}\n <RippleContainer ripples={ripples} onAnimationEnd={onAnimationEnd} />\n </div>\n );\n};\n\nconst Dropdown = React.memo<DropdownProps>(\n ({\n children,\n items,\n render,\n color = \"default\",\n size = \"md\",\n position = \"left\",\n maxHeight = 300,\n disabled = false,\n fullWidth = false,\n hover = false,\n className,\n classNames,\n onItemClick,\n ref,\n }) => {\n const [isOpen, setIsOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n const uniqueId = useId();\n const menuId = `dropdown-menu-${uniqueId}`;\n const triggerId = `dropdown-trigger-${uniqueId}`;\n\n const enabledIndices = useMemo(\n () =>\n items\n ?.map((item, i) => (!item.disabled ? i : -1))\n .filter((i) => i !== -1) || [],\n [items],\n );\n\n const handleItemClick = useCallback(\n (item: NonNullable<typeof items>[0]) => {\n if (!item.disabled) {\n item.onClick?.();\n if (item.value !== undefined) {\n onItemClick?.(item.value);\n }\n setIsOpen(false);\n }\n },\n [onItemClick],\n );\n\n const handleClose = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const handleOpen = useCallback(() => {\n if (!disabled) {\n setIsOpen(true);\n }\n }, [disabled]);\n\n const handleToggle = useCallback(() => {\n if (!disabled) {\n setIsOpen((prev) => !prev);\n }\n }, [disabled]);\n\n const onMenuSelect = useCallback(\n (index: number) => {\n if (items?.[index]) handleItemClick(items[index]);\n },\n [items, handleItemClick],\n );\n\n const {\n highlightedIndex,\n setHighlightedIndex,\n handleKeyDown,\n } = useMenuNavigation({\n enabledIndices,\n isOpen,\n onClose: handleClose,\n onSelect: onMenuSelect,\n onOpen: handleOpen,\n });\n\n // Scroll highlighted item into view\n useEffect(() => {\n if (highlightedIndex >= 0 && itemRefs.current[highlightedIndex]) {\n itemRefs.current[highlightedIndex]?.scrollIntoView({\n block: \"nearest\",\n });\n }\n }, [highlightedIndex]);\n\n const wrappedKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled || !items?.length) return;\n handleKeyDown(e);\n },\n [disabled, items, handleKeyDown],\n );\n\n return (\n <div\n ref={ref}\n data-slot=\"dropdown\"\n className={cn(\n \"dropdown_root relative\",\n fullWidth ? \"w-full\" : \"inline-block\",\n className,\n classNames?.root,\n )}\n onMouseEnter={hover ? handleOpen : undefined}\n onMouseLeave={hover ? handleClose : undefined}\n >\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n <div\n id={triggerId}\n data-slot=\"dropdown-trigger\"\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? menuId : undefined}\n aria-disabled={disabled}\n onClick={hover ? undefined : handleToggle}\n onKeyDown={wrappedKeyDown}\n className={cn(\n \"dropdown_trigger flex outline-none\",\n !hover && \"cursor-pointer\",\n fullWidth && \"w-full\",\n disabled && \"opacity-50 cursor-not-allowed\",\n classNames?.trigger,\n )}\n >\n {children}\n </div>\n </PopoverTrigger>\n\n <PopoverContent\n className=\"p-0 min-w-[140px]\"\n align={position === \"left\" ? \"start\" : \"end\"}\n sideOffset={4}\n color={color}\n style={{ maxHeight }}\n onOpenAutoFocus={(e: Event) => e.preventDefault()}\n >\n <div\n ref={menuRef}\n id={menuId}\n data-slot=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby={triggerId}\n className={cn(\"dropdown_menu overflow-auto\", colorVars[color], classNames?.menu)}\n style={{ maxHeight }}\n onKeyDown={wrappedKeyDown}\n >\n {render\n ? render({ close: handleClose })\n : items?.map((item, idx) => (\n <DropdownItemDiv\n key={`${item.value}-${idx}`}\n ref={(el: HTMLDivElement | null) => {\n itemRefs.current[idx] = el;\n }}\n data-slot=\"dropdown-item\"\n role=\"menuitem\"\n tabIndex={item.disabled ? -1 : 0}\n aria-disabled={item.disabled}\n disabled={!!item.disabled}\n className={cn(\n \"dropdown_item\",\n dropdownItemVariants({\n size,\n disabled: !!item.disabled,\n }),\n !item.disabled && 'hover:bg-slot-10 hover:text-slot focus-visible:bg-slot-10 focus-visible:text-slot',\n highlightedIndex === idx &&\n !item.disabled &&\n 'bg-slot-10 text-slot',\n classNames?.item,\n )}\n onClick={() => handleItemClick(item)}\n onMouseEnter={() => !item.disabled && setHighlightedIndex(idx)}\n onKeyDown={(e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleItemClick(item);\n }\n }}\n >\n {item.icon && (\n <span\n data-slot=\"dropdown-item-icon\"\n className={cn(\n \"dropdown_itemIcon shrink-0\",\n classNames?.itemIcon,\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n )}\n <span\n data-slot=\"dropdown-item-label\"\n className={cn(\n \"dropdown_itemLabel flex-1\",\n classNames?.itemLabel,\n )}\n >\n {item.label}\n </span>\n </DropdownItemDiv>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n },\n);\n\nDropdown.displayName = \"Dropdown\";\n\nexport type * from \"./types\";\nexport default Dropdown;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/dropdown/index.tsx"],"names":[],"mappings":"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","file":"chunk-S4BF3Z6O.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport React, {\n useCallback,\n useRef,\n useId,\n useState,\n useEffect,\n useMemo,\n} from \"react\";\n\nimport { useRipple, RippleContainer } from \"../hooks/useRipple\";\nimport { useMenuNavigation } from \"../hooks/useMenuNavigation\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../popover\";\nimport { cn } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type { DropdownProps } from \"./types\";\n\nconst dropdownItemVariants = cva(\n \"cursor-pointer select-none text-text-primary transition-colors flex items-center gap-2 rounded-sm outline-none\",\n {\n variants: {\n size: {\n xs: \"px-2 py-1 text-xs\",\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-4 py-2 text-base\",\n lg: \"px-5 py-2.5 text-lg\",\n },\n disabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"md\",\n disabled: false,\n },\n },\n);\n\nconst DropdownItemDiv: React.FC<React.HTMLAttributes<HTMLDivElement> & {\n children: React.ReactNode;\n disabled?: boolean;\n ref?: React.Ref<HTMLDivElement>;\n}> = ({\n children,\n disabled,\n className,\n onKeyDown: externalOnKeyDown,\n ref,\n ...props\n}) => {\n const {\n ripples,\n onPointerDown,\n onKeyDown: rippleOnKeyDown,\n onAnimationEnd,\n } = useRipple(!disabled);\n return (\n <div\n ref={ref}\n className={cn(className, \"relative overflow-hidden\")}\n onPointerDown={onPointerDown}\n onKeyDown={(e) => {\n rippleOnKeyDown(e);\n externalOnKeyDown?.(e);\n }}\n {...props}\n >\n {children}\n <RippleContainer ripples={ripples} onAnimationEnd={onAnimationEnd} />\n </div>\n );\n};\n\nconst Dropdown = React.memo<DropdownProps>(\n ({\n children,\n items,\n render,\n color = \"default\",\n size = \"md\",\n position = \"left\",\n maxHeight = 300,\n disabled = false,\n fullWidth = false,\n hover = false,\n className,\n classNames,\n onItemClick,\n ref,\n }) => {\n const [isOpen, setIsOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<(HTMLDivElement | null)[]>([]);\n\n const uniqueId = useId();\n const menuId = `dropdown-menu-${uniqueId}`;\n const triggerId = `dropdown-trigger-${uniqueId}`;\n\n const enabledIndices = useMemo(\n () =>\n items\n ?.map((item, i) => (!item.disabled ? i : -1))\n .filter((i) => i !== -1) || [],\n [items],\n );\n\n const handleItemClick = useCallback(\n (item: NonNullable<typeof items>[0]) => {\n if (!item.disabled) {\n item.onClick?.();\n if (item.value !== undefined) {\n onItemClick?.(item.value);\n }\n setIsOpen(false);\n }\n },\n [onItemClick],\n );\n\n const handleClose = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const handleOpen = useCallback(() => {\n if (!disabled) {\n setIsOpen(true);\n }\n }, [disabled]);\n\n const handleToggle = useCallback(() => {\n if (!disabled) {\n setIsOpen((prev) => !prev);\n }\n }, [disabled]);\n\n const onMenuSelect = useCallback(\n (index: number) => {\n if (items?.[index]) handleItemClick(items[index]);\n },\n [items, handleItemClick],\n );\n\n const {\n highlightedIndex,\n setHighlightedIndex,\n handleKeyDown,\n } = useMenuNavigation({\n enabledIndices,\n isOpen,\n onClose: handleClose,\n onSelect: onMenuSelect,\n onOpen: handleOpen,\n });\n\n // Scroll highlighted item into view\n useEffect(() => {\n if (highlightedIndex >= 0 && itemRefs.current[highlightedIndex]) {\n itemRefs.current[highlightedIndex]?.scrollIntoView({\n block: \"nearest\",\n });\n }\n }, [highlightedIndex]);\n\n const wrappedKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (disabled || !items?.length) return;\n handleKeyDown(e);\n },\n [disabled, items, handleKeyDown],\n );\n\n return (\n <div\n ref={ref}\n data-slot=\"dropdown\"\n className={cn(\n \"dropdown_root relative\",\n fullWidth ? \"w-full\" : \"inline-block\",\n className,\n classNames?.root,\n )}\n onMouseEnter={hover ? handleOpen : undefined}\n onMouseLeave={hover ? handleClose : undefined}\n >\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n <div\n id={triggerId}\n data-slot=\"dropdown-trigger\"\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? menuId : undefined}\n aria-disabled={disabled}\n onClick={hover ? undefined : handleToggle}\n onKeyDown={wrappedKeyDown}\n className={cn(\n \"dropdown_trigger flex outline-none\",\n !hover && \"cursor-pointer\",\n fullWidth && \"w-full\",\n disabled && \"opacity-50 cursor-not-allowed\",\n classNames?.trigger,\n )}\n >\n {children}\n </div>\n </PopoverTrigger>\n\n <PopoverContent\n className=\"p-0 min-w-[140px]\"\n align={position === \"left\" ? \"start\" : \"end\"}\n sideOffset={4}\n color={color}\n style={{ maxHeight }}\n onOpenAutoFocus={(e: Event) => e.preventDefault()}\n >\n <div\n ref={menuRef}\n id={menuId}\n data-slot=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby={triggerId}\n className={cn(\"dropdown_menu overflow-auto\", colorVars[color], classNames?.menu)}\n style={{ maxHeight }}\n onKeyDown={wrappedKeyDown}\n >\n {render\n ? render({ close: handleClose })\n : items?.map((item, idx) => (\n <DropdownItemDiv\n key={`${item.value}-${idx}`}\n ref={(el: HTMLDivElement | null) => {\n itemRefs.current[idx] = el;\n }}\n data-slot=\"dropdown-item\"\n role=\"menuitem\"\n tabIndex={item.disabled ? -1 : 0}\n aria-disabled={item.disabled}\n disabled={!!item.disabled}\n className={cn(\n \"dropdown_item\",\n dropdownItemVariants({\n size,\n disabled: !!item.disabled,\n }),\n !item.disabled && 'hover:bg-slot-10 hover:text-slot focus-visible:bg-slot-10 focus-visible:text-slot',\n highlightedIndex === idx &&\n !item.disabled &&\n 'bg-slot-10 text-slot',\n classNames?.item,\n )}\n onClick={() => handleItemClick(item)}\n onMouseEnter={() => !item.disabled && setHighlightedIndex(idx)}\n onKeyDown={(e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleItemClick(item);\n }\n }}\n >\n {item.icon && (\n <span\n data-slot=\"dropdown-item-icon\"\n className={cn(\n \"dropdown_itemIcon shrink-0\",\n classNames?.itemIcon,\n )}\n aria-hidden=\"true\"\n >\n {item.icon}\n </span>\n )}\n <span\n data-slot=\"dropdown-item-label\"\n className={cn(\n \"dropdown_itemLabel flex-1\",\n classNames?.itemLabel,\n )}\n >\n {item.label}\n </span>\n </DropdownItemDiv>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n );\n },\n);\n\nDropdown.displayName = \"Dropdown\";\n\nexport type * from \"./types\";\nexport default Dropdown;\n"]}
|
|
@@ -2,7 +2,7 @@ import { colorVars } from './chunk-G6QIIWKU.js';
|
|
|
2
2
|
import { cn, iconSizes } from './chunk-RAS6HUEI.js';
|
|
3
3
|
import { cva } from 'class-variance-authority';
|
|
4
4
|
import React from 'react';
|
|
5
|
-
import { X
|
|
5
|
+
import { X } from 'lucide-react';
|
|
6
6
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
8
|
var alertVariants = cva(
|
|
@@ -30,12 +30,6 @@ var alertVariants = cva(
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
);
|
|
33
|
-
var defaultIcons = {
|
|
34
|
-
success: /* @__PURE__ */ jsx(CheckCircle, {}),
|
|
35
|
-
error: /* @__PURE__ */ jsx(AlertCircle, {}),
|
|
36
|
-
warning: /* @__PURE__ */ jsx(AlertTriangle, {}),
|
|
37
|
-
info: /* @__PURE__ */ jsx(Info, {})
|
|
38
|
-
};
|
|
39
33
|
var Alert = React.memo(
|
|
40
34
|
({
|
|
41
35
|
title,
|
|
@@ -53,7 +47,6 @@ var Alert = React.memo(
|
|
|
53
47
|
}) => {
|
|
54
48
|
const [visible, setVisible] = React.useState(true);
|
|
55
49
|
if (!visible) return null;
|
|
56
|
-
const resolvedIcon = icon !== void 0 ? icon : defaultIcons[color];
|
|
57
50
|
const handleClose = () => {
|
|
58
51
|
setVisible(false);
|
|
59
52
|
onClose?.();
|
|
@@ -71,12 +64,12 @@ var Alert = React.memo(
|
|
|
71
64
|
),
|
|
72
65
|
...props,
|
|
73
66
|
children: [
|
|
74
|
-
|
|
67
|
+
icon && /* @__PURE__ */ jsx(
|
|
75
68
|
"div",
|
|
76
69
|
{
|
|
77
70
|
"data-slot": "icon",
|
|
78
71
|
className: cn("alert_icon", "shrink-0 mt-0.5", iconSizes[size], classNames?.icon),
|
|
79
|
-
children:
|
|
72
|
+
children: icon
|
|
80
73
|
}
|
|
81
74
|
),
|
|
82
75
|
/* @__PURE__ */ jsxs(
|
|
@@ -134,5 +127,5 @@ Alert.displayName = "Alert";
|
|
|
134
127
|
var alert_default = Alert;
|
|
135
128
|
|
|
136
129
|
export { alert_default };
|
|
137
|
-
//# sourceMappingURL=chunk-
|
|
138
|
-
//# sourceMappingURL=chunk-
|
|
130
|
+
//# sourceMappingURL=chunk-SK6YMTMA.js.map
|
|
131
|
+
//# sourceMappingURL=chunk-SK6YMTMA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/alert/index.tsx"],"names":[],"mappings":"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","file":"chunk-SK6YMTMA.js","sourcesContent":["'use client'\n\nimport { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { X } from 'lucide-react'\nimport { cn, iconSizes } from '../utils'\nimport { colorVars } from '../variants'\nimport type { AlertProps } from './types'\n\nconst alertVariants = cva(\n 'relative flex gap-3 rounded-md',\n {\n variants: {\n variant: {\n default: 'bg-slot border border-slot text-slot-fg',\n solid: 'bg-slot text-slot-fg',\n outline: 'bg-background border border-slot text-slot',\n soft: 'bg-slot-10 text-slot',\n },\n color: colorVars,\n size: {\n xs: 'p-2 gap-2 text-xs',\n sm: 'p-3 gap-2.5 text-sm',\n md: 'p-4 gap-3 text-sm',\n lg: 'p-5 gap-3.5 text-base',\n },\n },\n defaultVariants: {\n variant: 'soft',\n color: 'default',\n size: 'md',\n },\n },\n)\n\nconst Alert = React.memo<AlertProps>(\n ({\n title,\n description,\n icon,\n variant = 'soft',\n color = 'default',\n size = 'md',\n closable = false,\n onClose,\n className,\n classNames,\n children,\n ...props\n }) => {\n const [visible, setVisible] = React.useState(true)\n\n if (!visible) return null\n\n const handleClose = () => {\n setVisible(false)\n onClose?.()\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"root\"\n className={cn(\n 'alert_root',\n alertVariants({ variant, color, size }),\n classNames?.root,\n className,\n )}\n {...props}\n >\n {icon && (\n <div\n data-slot=\"icon\"\n className={cn('alert_icon', 'shrink-0 mt-0.5', iconSizes[size], classNames?.icon)}\n >\n {icon}\n </div>\n )}\n\n <div\n data-slot=\"content\"\n className={cn('alert_content', 'flex-1 min-w-0', classNames?.content)}\n >\n {title && (\n <div\n data-slot=\"title\"\n className={cn('alert_title', 'font-semibold', classNames?.title)}\n >\n {title}\n </div>\n )}\n {description && (\n <div\n data-slot=\"description\"\n className={cn(\n 'alert_description',\n 'opacity-90',\n title && 'mt-1',\n classNames?.description,\n )}\n >\n {description}\n </div>\n )}\n {children}\n </div>\n\n {closable && (\n <button\n type=\"button\"\n onClick={handleClose}\n data-slot=\"closeButton\"\n className={cn(\n 'alert_closeButton',\n 'shrink-0 rounded-sm opacity-70 hover:opacity-100 transition-opacity cursor-pointer',\n classNames?.closeButton,\n )}\n aria-label=\"Close alert\"\n >\n <X className={iconSizes[size]} />\n </button>\n )}\n </div>\n )\n },\n)\n\nAlert.displayName = 'Alert'\n\nexport type * from './types'\nexport default Alert\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useControllable } from './chunk-CB7YOZWV.js';
|
|
2
|
+
import { Popover, PopoverTrigger, PopoverContent } from './chunk-6XXAZ6P2.js';
|
|
2
3
|
import { colorVars } from './chunk-G6QIIWKU.js';
|
|
3
|
-
import { getValidationStatus,
|
|
4
|
+
import { getValidationStatus, iconSizes, cn, statusMessageVariants } from './chunk-RAS6HUEI.js';
|
|
4
5
|
import React3 from 'react';
|
|
5
6
|
import ReactDatePicker from 'react-datepicker';
|
|
6
7
|
import 'react-datepicker/dist/react-datepicker.css';
|
|
@@ -359,18 +360,69 @@ var PickerWrapper = ({
|
|
|
359
360
|
}) => {
|
|
360
361
|
const uniqueId = React3.useId();
|
|
361
362
|
const helperId = `picker-helper-${uniqueId}`;
|
|
362
|
-
const { status, message: helperMessage } = getValidationStatus({
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
363
|
+
const { status, message: helperMessage } = getValidationStatus({
|
|
364
|
+
error,
|
|
365
|
+
warning,
|
|
366
|
+
info,
|
|
367
|
+
success,
|
|
368
|
+
helperText
|
|
369
|
+
});
|
|
370
|
+
return /* @__PURE__ */ jsxs(
|
|
371
|
+
"div",
|
|
372
|
+
{
|
|
373
|
+
className: cn(
|
|
374
|
+
"w-full flex flex-col relative",
|
|
375
|
+
!fullWidth && "inline-block"
|
|
376
|
+
),
|
|
377
|
+
children: [
|
|
378
|
+
/* @__PURE__ */ jsxs("div", { className: "flex gap-2 items-center relative", children: [
|
|
379
|
+
label && /* @__PURE__ */ jsxs(
|
|
380
|
+
"label",
|
|
381
|
+
{
|
|
382
|
+
className: cn(
|
|
383
|
+
"datePicker_label mb-0.5",
|
|
384
|
+
"text-sm font-medium text-text-secondary",
|
|
385
|
+
classNames?.label
|
|
386
|
+
),
|
|
387
|
+
"data-slot": "label",
|
|
388
|
+
children: [
|
|
389
|
+
label,
|
|
390
|
+
required && /* @__PURE__ */ jsx("span", { className: "text-error ml-1", children: "*" })
|
|
391
|
+
]
|
|
392
|
+
}
|
|
393
|
+
),
|
|
394
|
+
helperMessage && messagePosition === "top" && /* @__PURE__ */ jsx(
|
|
395
|
+
"p",
|
|
396
|
+
{
|
|
397
|
+
id: helperId,
|
|
398
|
+
className: cn(
|
|
399
|
+
"datePicker_helper mb-0.5",
|
|
400
|
+
statusMessageVariants({ status }),
|
|
401
|
+
classNames?.helper
|
|
402
|
+
),
|
|
403
|
+
"data-slot": "helper",
|
|
404
|
+
children: helperMessage
|
|
405
|
+
}
|
|
406
|
+
)
|
|
407
|
+
] }),
|
|
408
|
+
children,
|
|
409
|
+
helperMessage && messagePosition === "bottom" && /* @__PURE__ */ jsx(
|
|
410
|
+
"p",
|
|
411
|
+
{
|
|
412
|
+
id: helperId,
|
|
413
|
+
className: cn(
|
|
414
|
+
"datePicker_helper",
|
|
415
|
+
"mt-0.5",
|
|
416
|
+
statusMessageVariants({ status }),
|
|
417
|
+
classNames?.helper
|
|
418
|
+
),
|
|
419
|
+
"data-slot": "helper",
|
|
420
|
+
children: helperMessage
|
|
421
|
+
}
|
|
422
|
+
)
|
|
423
|
+
]
|
|
424
|
+
}
|
|
425
|
+
);
|
|
374
426
|
};
|
|
375
427
|
var RangePickerComponent = React3.memo(
|
|
376
428
|
({
|
|
@@ -748,8 +800,11 @@ var DatePickerComponent = React3.memo(
|
|
|
748
800
|
maxDate,
|
|
749
801
|
dateFormat = "MM/dd/yyyy"
|
|
750
802
|
}) => {
|
|
751
|
-
const [
|
|
752
|
-
|
|
803
|
+
const [currentValue, setCurrentValue] = useControllable({
|
|
804
|
+
value,
|
|
805
|
+
defaultValue: defaultValue || null,
|
|
806
|
+
onChange
|
|
807
|
+
});
|
|
753
808
|
const [isOpen, setIsOpen] = React3.useState(false);
|
|
754
809
|
const [showMonthSelector, setShowMonthSelector] = React3.useState(false);
|
|
755
810
|
const [showYearSelector, setShowYearSelector] = React3.useState(false);
|
|
@@ -760,8 +815,7 @@ var DatePickerComponent = React3.memo(
|
|
|
760
815
|
if (value) setViewDate(value);
|
|
761
816
|
}, [value]);
|
|
762
817
|
const handleDateChange = (date) => {
|
|
763
|
-
|
|
764
|
-
onChange?.(date);
|
|
818
|
+
setCurrentValue(date);
|
|
765
819
|
setHoverDate(null);
|
|
766
820
|
setIsOpen(false);
|
|
767
821
|
setShowMonthSelector(false);
|
|
@@ -769,8 +823,7 @@ var DatePickerComponent = React3.memo(
|
|
|
769
823
|
};
|
|
770
824
|
const handleClear = (e) => {
|
|
771
825
|
e.stopPropagation();
|
|
772
|
-
|
|
773
|
-
onChange?.(null);
|
|
826
|
+
setCurrentValue(null);
|
|
774
827
|
};
|
|
775
828
|
const handleMonthSelect = (month) => {
|
|
776
829
|
const newDate = new Date(viewDate);
|
|
@@ -877,5 +930,5 @@ var DatePicker = Object.assign(DatePickerComponent, {
|
|
|
877
930
|
});
|
|
878
931
|
|
|
879
932
|
export { DatePicker, RangePickerComponent, TimePickerComponent };
|
|
880
|
-
//# sourceMappingURL=chunk-
|
|
881
|
-
//# sourceMappingURL=chunk-
|
|
933
|
+
//# sourceMappingURL=chunk-SSISBOLO.js.map
|
|
934
|
+
//# sourceMappingURL=chunk-SSISBOLO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/date-picker/utils.ts","../src/date-picker/shared.ts","../src/date-picker/CalendarHeader.tsx","../src/date-picker/YearSelector.tsx","../src/date-picker/MonthSelector.tsx","../src/date-picker/PickerWrapper.tsx","../src/date-picker/RangePicker.tsx","../src/date-picker/TimePicker.tsx","../src/date-picker/index.tsx"],"names":["jsxs","jsx","ChevronsLeft","ChevronsRight","React","Fragment","X","Calendar","ReactDatePicker"],"mappings":"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","file":"chunk-SSISBOLO.js","sourcesContent":["import { cva } from 'class-variance-authority'\nimport { cn } from '../utils'\nimport type { ComponentColor } from '../types'\nimport type { DatePickerClassNames } from './types'\n\nexport const pickerInputVariants = cva(\n 'w-full placeholder:text-text-secondary/50 disabled:opacity-50 disabled:cursor-not-allowed outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background text-text-primary transition-colors',\n {\n variants: {\n variant: {\n outline: 'bg-background border rounded-md',\n filled: 'bg-surface border border-transparent rounded-md',\n },\n status: {\n default: 'border-border',\n error: 'border-error',\n warning: 'border-warning',\n info: 'border-info',\n success: 'border-success',\n },\n size: {\n xs: 'h-(--input-height-xs) px-(--input-padding-x-xs) text-xs',\n sm: 'h-(--input-height-sm) px-(--input-padding-x-sm) text-sm',\n md: 'h-(--input-height-md) px-(--input-padding-x-md) text-base',\n lg: 'h-(--input-height-lg) px-(--input-padding-x-lg) text-lg',\n },\n fullWidth: {\n true: 'w-full',\n false: 'max-w-full',\n },\n },\n defaultVariants: {\n variant: 'outline',\n status: 'default',\n size: 'md',\n fullWidth: true,\n },\n },\n)\n\n// Base structural styles (no color references)\nconst datePickerBaseStyles = `\n datePicker_day\n [&_.react-datepicker]:!bg-background\n [&_.react-datepicker]:!border-border\n [&_.react-datepicker]:!text-text-primary\n [&_.react-datepicker]:!flex\n [&_.react-datepicker]:!gap-0\n [&_.react-datepicker__header]:!bg-transparent\n [&_.react-datepicker__header]:!border-none\n [&_.react-datepicker__header]:!p-0\n [&_.react-datepicker__month-container]:!flex\n [&_.react-datepicker__month-container]:!flex-col\n [&_.react-datepicker__month]:!m-0\n [&_.react-datepicker__month]:!p-4\n [&_.react-datepicker__week]:!grid\n [&_.react-datepicker__week]:!grid-cols-7\n [&_.react-datepicker__week]:!gap-1\n [&_.react-datepicker__day-names]:!grid\n [&_.react-datepicker__day-names]:!grid-cols-7\n [&_.react-datepicker__day-names]:!gap-1\n [&_.react-datepicker__day-names]:!px-4\n [&_.react-datepicker__day-names]:!pt-4\n [&_.react-datepicker__day-names]:!pb-2\n [&_.react-datepicker__day-name]:!text-text-secondary\n [&_.react-datepicker__day-name]:!text-sm\n [&_.react-datepicker__day-name]:!font-medium\n [&_.react-datepicker__day-name]:!text-center\n [&_.react-datepicker__day-name]:!w-auto\n [&_.react-datepicker__day-name]:!m-0\n [&_.react-datepicker__day]:!w-10\n [&_.react-datepicker__day]:!h-10\n [&_.react-datepicker__day]:!leading-10\n [&_.react-datepicker__day]:!text-center\n [&_.react-datepicker__day]:!rounded-md\n [&_.react-datepicker__day]:!text-text-primary\n [&_.react-datepicker__day]:!text-sm\n [&_.react-datepicker__day]:!m-0\n [&_.react-datepicker__day]:!cursor-pointer\n [&_.react-datepicker__day]:!transition-colors\n [&_.react-datepicker__day--selected]:datePicker_daySelected\n [&_.react-datepicker__day]:hover:!bg-surface\n [&_.react-datepicker__day--disabled]:!cursor-not-allowed\n [&_.react-datepicker__day--disabled]:!opacity-40\n [&_.react-datepicker__day--disabled]:hover:!bg-transparent\n [&_.react-datepicker__day--outside-month]:!text-text-secondary\n [&_.react-datepicker__day--today]:datePicker_dayToday\n [&_.react-datepicker__day--today]:!font-semibold\n [&_.react-datepicker__current-month]:!hidden\n [&_.react-datepicker__navigation]:!hidden\n [&_.react-datepicker__time-container]:!border-border\n [&_.react-datepicker__time-list-item]:hover:!bg-surface\n [&_.react-datepicker__time-list]:!bg-background\n`\n\n// Slot-based: uses --_c-bg / --_c-fg / --_c set by colorVars on the wrapper.\n// CSS custom properties inherit through the DOM, so child elements of the wrapper can reference them.\nconst datePickerSlotColorStyles = `\n [&_.react-datepicker__day--selected]:![background-color:var(--_c-bg)]\n [&_.react-datepicker__day--selected]:![color:var(--_c-fg)]\n [&_.react-datepicker__day--keyboard-selected]:![background-color:color-mix(in_oklch,var(--_c-bg)_50%,transparent)]\n [&_.react-datepicker__day--today]:!border\n [&_.react-datepicker__day--today]:![border-color:var(--_c-border)]\n [&_.react-datepicker__time-list-item--selected]:![background-color:var(--_c-bg)]\n [&_.react-datepicker__time-list-item--selected]:![color:var(--_c-fg)]\n [&_.react-datepicker__day--in-selecting-range]:![background-color:color-mix(in_oklch,var(--_c-bg)_30%,transparent)]\n [&_.react-datepicker__day--in-range]:![background-color:color-mix(in_oklch,var(--_c-bg)_10%,transparent)]\n [&_.react-datepicker__day--range-start]:![background-color:var(--_c-bg)]\n [&_.react-datepicker__day--range-start]:![color:var(--_c-fg)]\n [&_.react-datepicker__day--range-end]:![background-color:var(--_c-bg)]\n [&_.react-datepicker__day--range-end]:![color:var(--_c-fg)]\n`\n\nexport const getDatePickerStyles = (_color?: ComponentColor, classNames?: DatePickerClassNames) => {\n return cn(\n datePickerBaseStyles,\n datePickerSlotColorStyles,\n classNames?.day && `[&_.react-datepicker__day]:${classNames.day}`,\n classNames?.daySelected && `[&_.react-datepicker__day--selected]:${classNames.daySelected}`,\n classNames?.dayToday && `[&_.react-datepicker__day--today]:${classNames.dayToday}`,\n )\n}\n","/** Slot-based: applied to selected day/time elements inside picker */\nexport const pickerSelectedClasses = 'bg-slot text-slot-fg'\n\n/** Size-aware icon offsets for picker triggers */\nexport const pickerIconLeft: Record<string, string> = {\n xs: 'left-2',\n sm: 'left-2.5',\n md: 'left-3',\n lg: 'left-3.5',\n}\n\nexport const pickerIconRight: Record<string, string> = {\n xs: 'right-2',\n sm: 'right-2.5',\n md: 'right-3',\n lg: 'right-3.5',\n}\n\nexport const pickerPaddingLeft: Record<string, string> = {\n xs: 'pl-7',\n sm: 'pl-8',\n md: 'pl-10',\n lg: 'pl-11',\n}\n\nexport const pickerPaddingRight: Record<string, string> = {\n xs: 'pr-7',\n sm: 'pr-8',\n md: 'pr-9',\n lg: 'pr-10',\n}\n","'use client'\n\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react'\nimport { cn, iconSizes } from '../utils'\n\nexport interface CalendarHeaderProps {\n date: Date\n decreaseMonth: () => void\n increaseMonth: () => void\n decreaseYear: () => void\n increaseYear: () => void\n prevMonthButtonDisabled: boolean\n nextMonthButtonDisabled: boolean\n prevYearButtonDisabled: boolean\n nextYearButtonDisabled: boolean\n showMonthSelector?: boolean\n onMonthClick?: () => void\n onYearClick?: () => void\n headerClassName?: string\n navigationClassName?: string\n}\n\nexport const CalendarHeader = ({\n date,\n decreaseMonth,\n increaseMonth,\n decreaseYear,\n increaseYear,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n prevYearButtonDisabled,\n nextYearButtonDisabled,\n showMonthSelector = false,\n onMonthClick,\n onYearClick,\n headerClassName,\n navigationClassName,\n}: CalendarHeaderProps) => {\n const monthName = date.toLocaleDateString('en-US', { month: 'long' })\n const year = date.getFullYear()\n\n return (\n <div className={cn('datePicker_header', 'flex items-center justify-between px-4 py-3 bg-surface border-b border-border', headerClassName)} data-slot=\"header\">\n <div className={cn('datePicker_navigation', 'flex items-center gap-1', navigationClassName)} data-slot=\"navigation\">\n <button\n type=\"button\"\n onClick={decreaseYear}\n disabled={prevYearButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-surface text-text-primary disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Previous year\"\n >\n <ChevronsLeft className={iconSizes.sm} />\n </button>\n <button\n type=\"button\"\n onClick={decreaseMonth}\n disabled={prevMonthButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-surface text-text-primary disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft className={iconSizes.sm} />\n </button>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={onMonthClick}\n className=\"text-sm font-medium text-text-primary hover:text-primary transition-colors\"\n >\n {monthName}\n </button>\n <button\n type=\"button\"\n onClick={onYearClick}\n className=\"text-sm font-medium text-text-primary hover:text-primary transition-colors\"\n >\n {year}\n </button>\n </div>\n\n <div className={cn('datePicker_navigation', 'flex items-center gap-1', navigationClassName)} data-slot=\"navigation\">\n <button\n type=\"button\"\n onClick={increaseMonth}\n disabled={nextMonthButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-surface text-text-primary disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Next month\"\n >\n <ChevronRight className={iconSizes.sm} />\n </button>\n <button\n type=\"button\"\n onClick={increaseYear}\n disabled={nextYearButtonDisabled || showMonthSelector}\n className=\"p-1 rounded hover:bg-surface text-text-primary disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n aria-label=\"Next year\"\n >\n <ChevronsRight className={iconSizes.sm} />\n </button>\n </div>\n </div>\n )\n}\n","'use client'\n\nimport { ChevronsLeft, ChevronsRight } from 'lucide-react'\nimport { cn, iconSizes } from '../utils'\nimport { colorVars } from '../variants'\nimport type { ComponentColor } from '../types'\nimport { pickerSelectedClasses } from './shared'\n\ninterface YearSelectorProps {\n date: Date\n onYearSelect: (year: number) => void\n onDecadeChange: (year: number) => void\n color?: ComponentColor\n}\n\nexport const YearSelector = ({\n date,\n onYearSelect,\n onDecadeChange,\n color = 'primary',\n}: YearSelectorProps) => {\n const currentYear = date.getFullYear()\n const startYear = Math.floor(currentYear / 10) * 10\n const years = Array.from({ length: 12 }, (_, i) => startYear - 1 + i)\n\n return (\n <div className={cn(\"p-4 bg-background\", colorVars[color])}>\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={() => onDecadeChange(currentYear - 10)}\n className=\"p-1 rounded hover:bg-surface text-text-primary transition-colors\"\n aria-label=\"Previous decade\"\n >\n <ChevronsLeft className={iconSizes.sm} />\n </button>\n <div className=\"text-sm font-medium text-text-primary\">\n {startYear}-{startYear + 9}\n </div>\n <button\n type=\"button\"\n onClick={() => onDecadeChange(currentYear + 10)}\n className=\"p-1 rounded hover:bg-surface text-text-primary transition-colors\"\n aria-label=\"Next decade\"\n >\n <ChevronsRight className={iconSizes.sm} />\n </button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {years.map((year) => (\n <button\n key={year}\n type=\"button\"\n onClick={() => onYearSelect(year)}\n className={cn(\n 'px-4 py-2 rounded text-sm font-medium transition-colors',\n year === currentYear\n ? pickerSelectedClasses\n : year < startYear || year > startYear + 9\n ? 'text-text-secondary opacity-50'\n : 'text-text-primary hover:bg-surface',\n )}\n >\n {year}\n </button>\n ))}\n </div>\n </div>\n )\n}\n","'use client'\n\nimport { ChevronsLeft, ChevronsRight } from 'lucide-react'\nimport { cn, iconSizes } from '../utils'\nimport { colorVars } from '../variants'\nimport type { ComponentColor } from '../types'\nimport { pickerSelectedClasses } from './shared'\n\nconst MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n\ninterface MonthSelectorProps {\n date: Date\n onMonthSelect: (month: number) => void\n onYearClick: () => void\n onYearChange: (year: number) => void\n color?: ComponentColor\n}\n\nexport const MonthSelector = ({\n date,\n onMonthSelect,\n onYearClick,\n onYearChange,\n color = 'primary',\n}: MonthSelectorProps) => {\n const currentMonth = date.getMonth()\n const currentYear = date.getFullYear()\n\n return (\n <div className={cn(\"p-4 bg-background\", colorVars[color])}>\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={() => onYearChange(currentYear - 1)}\n className=\"p-1 rounded hover:bg-surface text-text-primary transition-colors\"\n aria-label=\"Previous year\"\n >\n <ChevronsLeft className={iconSizes.sm} />\n </button>\n <button\n type=\"button\"\n onClick={onYearClick}\n className=\"text-sm font-medium text-text-primary hover:text-slot transition-colors\"\n >\n {currentYear}\n </button>\n <button\n type=\"button\"\n onClick={() => onYearChange(currentYear + 1)}\n className=\"p-1 rounded hover:bg-surface text-text-primary transition-colors\"\n aria-label=\"Next year\"\n >\n <ChevronsRight className={iconSizes.sm} />\n </button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {MONTHS.map((month, index) => (\n <button\n key={month}\n type=\"button\"\n onClick={() => onMonthSelect(index)}\n className={cn(\n 'px-4 py-2 rounded text-sm font-medium transition-colors',\n index === currentMonth\n ? pickerSelectedClasses\n : 'text-text-primary hover:bg-surface',\n )}\n >\n {month}\n </button>\n ))}\n </div>\n </div>\n )\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { cn, getValidationStatus, statusMessageVariants } from \"../utils\";\nimport type { DatePickerClassNames } from \"./types\";\n\ninterface PickerWrapperProps {\n label?: string;\n error?: string;\n warning?: string;\n info?: string;\n success?: string;\n helperText?: string;\n messagePosition?: \"top\" | \"bottom\";\n required?: boolean;\n fullWidth?: boolean;\n children: React.ReactNode;\n classNames?: DatePickerClassNames;\n}\n\nexport const PickerWrapper = ({\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = \"bottom\",\n required = false,\n fullWidth = true,\n children,\n classNames,\n}: PickerWrapperProps) => {\n const uniqueId = React.useId();\n const helperId = `picker-helper-${uniqueId}`;\n const { status, message: helperMessage } = getValidationStatus({\n error,\n warning,\n info,\n success,\n helperText,\n });\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col relative\",\n !fullWidth && \"inline-block\",\n )}\n >\n <div className=\"flex gap-2 items-center relative\">\n {label && (\n <label\n className={cn(\n \"datePicker_label mb-0.5\",\n \"text-sm font-medium text-text-secondary\",\n classNames?.label,\n )}\n data-slot=\"label\"\n >\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n {helperMessage && messagePosition === \"top\" && (\n <p\n id={helperId}\n className={cn(\n \"datePicker_helper mb-0.5\",\n statusMessageVariants({ status }),\n classNames?.helper,\n )}\n data-slot=\"helper\"\n >\n {helperMessage}\n </p>\n )}\n </div>\n {children}\n {helperMessage && messagePosition === \"bottom\" && (\n <p\n id={helperId}\n className={cn(\n \"datePicker_helper\",\n \"mt-0.5\",\n statusMessageVariants({ status }),\n classNames?.helper,\n )}\n data-slot=\"helper\"\n >\n {helperMessage}\n </p>\n )}\n </div>\n );\n};\n","'use client'\n\nimport React from 'react'\nimport ReactDatePicker from 'react-datepicker'\nimport { Calendar, X } from 'lucide-react'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { cn, getValidationStatus, iconSizes } from '../utils'\nimport { colorVars } from '../variants'\nimport type { RangePickerProps } from './types'\nimport { getDatePickerStyles, pickerInputVariants } from './utils'\nimport { pickerIconLeft, pickerIconRight, pickerPaddingLeft, pickerPaddingRight } from './shared'\nimport { CalendarHeader, type CalendarHeaderProps } from './CalendarHeader'\nimport { YearSelector } from './YearSelector'\nimport { MonthSelector } from './MonthSelector'\nimport { PickerWrapper } from './PickerWrapper'\n\nexport const RangePickerComponent = React.memo<RangePickerProps>(\n ({\n variant = 'outline',\n size = 'md',\n color = 'primary',\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n placeholder = 'Select date range...',\n disabled = false,\n required = false,\n clearable = false,\n fullWidth = true,\n className,\n classNames,\n ref,\n startDate,\n endDate,\n defaultStartDate,\n defaultEndDate,\n onChange,\n minDate,\n maxDate,\n dateFormat = 'MM/dd/yyyy',\n }) => {\n const [internalStartDate, setInternalStartDate] = React.useState<Date | null>(defaultStartDate || null)\n const [internalEndDate, setInternalEndDate] = React.useState<Date | null>(defaultEndDate || null)\n const currentStartDate = startDate !== undefined ? startDate : internalStartDate\n const currentEndDate = endDate !== undefined ? endDate : internalEndDate\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [showMonthSelector, setShowMonthSelector] = React.useState(false)\n const [showYearSelector, setShowYearSelector] = React.useState(false)\n const [viewDate, setViewDate] = React.useState(currentStartDate || new Date())\n const [hoverDate, setHoverDate] = React.useState<Date | null>(null)\n\n const { status } = getValidationStatus({ error, warning, info, success, helperText })\n\n React.useEffect(() => {\n if (startDate) setViewDate(startDate)\n }, [startDate])\n\n const handleChange = (dates: [Date | null, Date | null]) => {\n if (startDate === undefined && endDate === undefined) {\n setInternalStartDate(dates[0])\n setInternalEndDate(dates[1])\n }\n onChange?.(dates)\n setHoverDate(null)\n if (dates[0] && dates[1]) {\n setIsOpen(false)\n setShowMonthSelector(false)\n setShowYearSelector(false)\n }\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (startDate === undefined && endDate === undefined) {\n setInternalStartDate(null)\n setInternalEndDate(null)\n }\n onChange?.([null, null])\n }\n\n const handleMonthSelect = (month: number) => {\n const newDate = new Date(viewDate)\n newDate.setMonth(month)\n setViewDate(newDate)\n setShowMonthSelector(false)\n }\n\n const handleYearSelect = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n setShowYearSelector(false)\n setShowMonthSelector(true)\n }\n\n const handleYearChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const handleDecadeChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const showClear = clearable && (currentStartDate || currentEndDate) && !disabled\n\n const formatDate = React.useCallback(\n (date: Date) => {\n const d = new Date(date)\n const year = d.getFullYear()\n const month = String(d.getMonth() + 1).padStart(2, '0')\n const day = String(d.getDate()).padStart(2, '0')\n return dateFormat.replace('yyyy', String(year)).replace('MM', month).replace('dd', day)\n },\n [dateFormat],\n )\n\n const getDisplayValue = () => {\n if (hoverDate && currentStartDate && !currentEndDate) {\n return { confirmed: `${formatDate(currentStartDate)} - `, preview: formatDate(hoverDate) }\n }\n if (hoverDate && !currentStartDate && !currentEndDate) {\n return { confirmed: '', preview: formatDate(hoverDate) }\n }\n if (!currentStartDate && !currentEndDate) return { confirmed: '', preview: '' }\n const start = currentStartDate ? formatDate(currentStartDate) : ''\n const end = currentEndDate ? formatDate(currentEndDate) : ''\n if (start && end) return { confirmed: `${start} - ${end}`, preview: '' }\n if (start) return { confirmed: `${start}`, preview: ' - ...' }\n return { confirmed: '', preview: '' }\n }\n\n const { confirmed, preview } = getDisplayValue()\n\n const customHeader = (props: Omit<CalendarHeaderProps, 'showMonthSelector' | 'onMonthClick' | 'onYearClick' | 'headerClassName' | 'navigationClassName'>) => (\n <CalendarHeader\n {...props}\n showMonthSelector={showMonthSelector}\n onMonthClick={() => setShowMonthSelector(!showMonthSelector)}\n onYearClick={() => setShowYearSelector(true)}\n headerClassName={classNames?.header}\n navigationClassName={classNames?.navigation}\n />\n )\n\n return (\n <PickerWrapper label={label} error={error} warning={warning} info={info} success={success} helperText={helperText} messagePosition={messagePosition} required={required} fullWidth={fullWidth} classNames={classNames}>\n <div ref={ref} className={cn('datePicker_root', 'relative w-full', classNames?.root)} data-slot=\"root\">\n <div className={cn('absolute flex items-center h-full top-0 text-text-secondary pointer-events-none z-10', pickerIconLeft[size], classNames?.icon)} data-slot=\"icon\">\n <Calendar className={iconSizes[size]} />\n </div>\n\n <Popover open={isOpen} onOpenChange={(open: boolean) => { setIsOpen(open); if (!open) { setShowMonthSelector(false); setShowYearSelector(false); setHoverDate(null) } }}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n className={cn('datePicker_trigger', pickerInputVariants({ variant, status, size, fullWidth }), colorVars[color], 'focus-visible:ring-slot', 'flex items-center justify-start cursor-pointer', pickerPaddingLeft[size], showClear && pickerPaddingRight[size], className, classNames?.trigger)}\n data-slot=\"trigger\"\n >\n {confirmed || preview ? (\n <>\n {confirmed && <span>{confirmed}</span>}\n {preview && <span className=\"text-text-secondary\">{preview}</span>}\n </>\n ) : (\n <span className=\"text-text-secondary\">{placeholder}</span>\n )}\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"p-0 w-auto\" align=\"start\" sideOffset={4} onOpenAutoFocus={(e: Event) => e.preventDefault()}>\n {showYearSelector ? (\n <YearSelector date={viewDate} onYearSelect={handleYearSelect} onDecadeChange={handleDecadeChange} color={color} />\n ) : showMonthSelector ? (\n <MonthSelector date={viewDate} onMonthSelect={handleMonthSelect} onYearClick={() => setShowYearSelector(true)} onYearChange={handleYearChange} color={color} />\n ) : (\n <div className={cn('datePicker_calendar', colorVars[color], getDatePickerStyles(color, classNames), classNames?.calendar)} data-slot=\"calendar\">\n <ReactDatePicker\n selectsRange\n startDate={currentStartDate}\n endDate={currentEndDate}\n onChange={handleChange}\n disabled={disabled}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormat}\n renderCustomHeader={customHeader}\n openToDate={viewDate}\n onMonthChange={setViewDate}\n monthsShown={2}\n onDayMouseEnter={setHoverDate}\n inline\n />\n </div>\n )}\n </PopoverContent>\n </Popover>\n\n {showClear && (\n <button type=\"button\" onClick={handleClear} className={cn('absolute flex items-center h-full top-0 text-text-secondary hover:text-text-primary z-10', pickerIconRight[size], classNames?.clear)} aria-label=\"Clear date range\" data-slot=\"clear\">\n <X className={iconSizes[size]} />\n </button>\n )}\n </div>\n </PickerWrapper>\n )\n },\n)\n\nRangePickerComponent.displayName = 'RangePicker'\n","'use client'\n\nimport React from 'react'\nimport { Clock, X } from 'lucide-react'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { cn, getValidationStatus, iconSizes } from '../utils'\nimport { colorVars } from '../variants'\nimport type { ComponentColor } from '../types'\nimport type { TimePickerProps } from './types'\nimport { pickerInputVariants } from './utils'\nimport { pickerSelectedClasses, pickerIconLeft, pickerIconRight, pickerPaddingLeft, pickerPaddingRight } from './shared'\nimport { PickerWrapper } from './PickerWrapper'\n\ninterface TimeColumnProps<T extends string | number> {\n items: T[]\n selected: T\n onSelect: (item: T) => void\n onHover?: (item: T) => void\n onLeave?: () => void\n}\n\nconst TimeColumn = React.memo(({ items, selected, onSelect, onHover, onLeave }: TimeColumnProps<string | number>) => (\n <div\n className=\"flex flex-col h-[240px] overflow-y-auto scrollbar-thin scrollbar-thumb-border scrollbar-track-background\"\n onMouseLeave={onLeave}\n >\n {items.map((item) => (\n <button\n key={item}\n type=\"button\"\n onClick={() => onSelect(item)}\n onMouseEnter={() => onHover?.(item)}\n className={cn(\n 'px-4 py-2 text-sm font-medium transition-colors text-center min-h-[40px] flex items-center justify-center',\n item === selected\n ? 'bg-surface text-text-primary font-semibold'\n : 'text-text-secondary hover:bg-surface/50',\n )}\n >\n {typeof item === 'number' ? String(item).padStart(2, '0') : item}\n </button>\n ))}\n </div>\n))\n\nTimeColumn.displayName = 'TimeColumn'\n\ninterface TimeColumnPickerProps {\n value: Date | null\n onChange: (date: Date) => void\n onPreview?: (preview: string) => void\n timeFormat?: string\n color?: ComponentColor\n}\n\nconst TimeColumnPicker = ({\n value,\n onChange,\n onPreview,\n timeFormat = 'h:mm aa',\n color = 'primary',\n}: TimeColumnPickerProps) => {\n const is12Hour = timeFormat.includes('aa')\n const currentDate = value || new Date()\n const currentHour = currentDate.getHours()\n const currentMinute = currentDate.getMinutes()\n\n const [selectedHour, setSelectedHour] = React.useState(\n is12Hour ? currentHour % 12 || 12 : currentHour,\n )\n const [selectedMinute, setSelectedMinute] = React.useState(currentMinute)\n const [selectedPeriod, setSelectedPeriod] = React.useState(\n currentHour >= 12 ? 'PM' : 'AM',\n )\n const [hoverHour, setHoverHour] = React.useState<number | null>(null)\n const [hoverMinute, setHoverMinute] = React.useState<number | null>(null)\n const [hoverPeriod, setHoverPeriod] = React.useState<string | null>(null)\n\n const hours = is12Hour\n ? Array.from({ length: 12 }, (_, i) => i + 1)\n : Array.from({ length: 24 }, (_, i) => i)\n const minutes = Array.from({ length: 60 }, (_, i) => i)\n const periods = ['AM', 'PM']\n\n React.useEffect(() => {\n if (hoverHour !== null || hoverMinute !== null || hoverPeriod !== null) {\n const previewHour = hoverHour ?? selectedHour\n const previewMinute = hoverMinute ?? selectedMinute\n const previewPeriod = hoverPeriod ?? selectedPeriod\n\n const formattedHour = String(previewHour).padStart(2, '0')\n const formattedMinute = String(previewMinute).padStart(2, '0')\n const previewString = is12Hour\n ? `${previewHour}:${formattedMinute} ${previewPeriod}`\n : `${formattedHour}:${formattedMinute}`\n\n onPreview?.(previewString)\n } else {\n onPreview?.('')\n }\n }, [hoverHour, hoverMinute, hoverPeriod, selectedHour, selectedMinute, selectedPeriod, is12Hour, onPreview])\n\n const handleOkClick = () => {\n const newDate = new Date(currentDate)\n let finalHour = selectedHour\n\n if (is12Hour) {\n if (selectedPeriod === 'PM' && selectedHour !== 12) finalHour = selectedHour + 12\n else if (selectedPeriod === 'AM' && selectedHour === 12) finalHour = 0\n }\n\n newDate.setHours(finalHour)\n newDate.setMinutes(selectedMinute)\n newDate.setSeconds(0)\n onPreview?.('')\n onChange(newDate)\n }\n\n const handleNowClick = () => {\n const now = new Date()\n const nowHour = now.getHours()\n\n setSelectedHour(is12Hour ? nowHour % 12 || 12 : nowHour)\n setSelectedMinute(now.getMinutes())\n setSelectedPeriod(nowHour >= 12 ? 'PM' : 'AM')\n\n onPreview?.('')\n onChange(now)\n }\n\n return (\n <div className={cn(\"flex flex-col bg-background\", colorVars[color])}>\n <div className=\"flex gap-0\">\n <TimeColumn items={hours} selected={selectedHour} onSelect={(item) => setSelectedHour(item as number)} onHover={(item) => setHoverHour(item as number)} onLeave={() => setHoverHour(null)} />\n <TimeColumn items={minutes} selected={selectedMinute} onSelect={(item) => setSelectedMinute(item as number)} onHover={(item) => setHoverMinute(item as number)} onLeave={() => setHoverMinute(null)} />\n {is12Hour && <TimeColumn items={periods} selected={selectedPeriod} onSelect={(item) => setSelectedPeriod(item as string)} onHover={(item) => setHoverPeriod(item as string)} onLeave={() => setHoverPeriod(null)} />}\n </div>\n <div className=\"p-3 border-t border-border flex gap-2\">\n <button type=\"button\" onClick={handleNowClick} className=\"flex-1 px-4 py-2 bg-surface text-text-primary rounded-md hover:bg-surface/80 transition-colors font-medium text-sm border border-border\">Now</button>\n <button type=\"button\" onClick={handleOkClick} className={cn('flex-1 px-4 py-2 rounded-md hover:opacity-90 transition-colors font-medium text-sm', pickerSelectedClasses)}>OK</button>\n </div>\n </div>\n )\n}\n\nexport const TimePickerComponent = React.memo<TimePickerProps>(\n ({\n variant = 'outline',\n size = 'md',\n color = 'primary',\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n placeholder = 'Select time...',\n disabled = false,\n required = false,\n clearable = false,\n fullWidth = true,\n className,\n classNames,\n ref,\n value,\n defaultValue,\n onChange,\n timeFormat = 'h:mm aa',\n }) => {\n const [internalValue, setInternalValue] = React.useState<Date | null>(defaultValue || null)\n const currentValue = value !== undefined ? value : internalValue\n const [isOpen, setIsOpen] = React.useState(false)\n const [previewTime, setPreviewTime] = React.useState('')\n\n const { status } = getValidationStatus({ error, warning, info, success, helperText })\n\n const handleTimeChange = (date: Date | null) => {\n if (value === undefined) setInternalValue(date)\n onChange?.(date)\n setPreviewTime('')\n setIsOpen(false)\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n if (value === undefined) setInternalValue(null)\n onChange?.(null)\n }\n\n const showClear = clearable && currentValue && !disabled\n\n const formatTime = (date: Date) =>\n new Date(date).toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: '2-digit',\n hour12: timeFormat.includes('aa'),\n })\n\n const getDisplayValue = () => {\n if (previewTime) return { confirmed: '', preview: previewTime }\n if (currentValue) return { confirmed: formatTime(currentValue), preview: '' }\n return { confirmed: '', preview: '' }\n }\n\n const { confirmed, preview } = getDisplayValue()\n\n return (\n <PickerWrapper label={label} error={error} warning={warning} info={info} success={success} helperText={helperText} messagePosition={messagePosition} required={required} fullWidth={fullWidth} classNames={classNames}>\n <div ref={ref} className={cn('datePicker_root', 'relative w-full', classNames?.root)} data-slot=\"root\">\n <div className={cn('absolute flex items-center h-full top-0 text-text-secondary pointer-events-none z-10', pickerIconLeft[size], classNames?.icon)} data-slot=\"icon\">\n <Clock className={iconSizes[size]} />\n </div>\n\n <Popover open={isOpen} onOpenChange={(open: boolean) => { setIsOpen(open); if (!open) setPreviewTime('') }}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n className={cn('datePicker_trigger', pickerInputVariants({ variant, status, size, fullWidth }), colorVars[color], 'focus-visible:ring-slot', 'flex items-center justify-start cursor-pointer', pickerPaddingLeft[size], showClear && pickerPaddingRight[size], className, classNames?.trigger)}\n data-slot=\"trigger\"\n >\n {confirmed || preview ? (\n <>\n {confirmed && <span>{confirmed}</span>}\n {preview && <span className=\"text-text-secondary\">{preview}</span>}\n </>\n ) : (\n <span className=\"text-text-secondary\">{placeholder}</span>\n )}\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"p-0 w-auto\" align=\"start\" sideOffset={4} onOpenAutoFocus={(e: Event) => e.preventDefault()}>\n <TimeColumnPicker value={currentValue} onChange={handleTimeChange} onPreview={setPreviewTime} timeFormat={timeFormat} color={color} />\n </PopoverContent>\n </Popover>\n\n {showClear && (\n <button type=\"button\" onClick={handleClear} className={cn('absolute flex items-center h-full top-0 text-text-secondary hover:text-text-primary z-10', pickerIconRight[size], classNames?.clear)} aria-label=\"Clear time\" data-slot=\"clear\">\n <X className={iconSizes[size]} />\n </button>\n )}\n </div>\n </PickerWrapper>\n )\n },\n)\n\nTimePickerComponent.displayName = 'TimePicker'\n","'use client'\n\nimport React from 'react'\nimport ReactDatePicker from 'react-datepicker'\nimport 'react-datepicker/dist/react-datepicker.css'\n\nimport { Calendar, X } from 'lucide-react'\nimport { useControllable } from '../hooks/useControllable'\nimport { Popover, PopoverContent, PopoverTrigger } from '../popover'\nimport { cn, getValidationStatus, iconSizes } from '../utils'\nimport { colorVars } from '../variants'\nimport type { DatePickerProps } from './types'\nimport { getDatePickerStyles, pickerInputVariants } from './utils'\nimport { pickerIconLeft, pickerIconRight, pickerPaddingLeft, pickerPaddingRight } from './shared'\nimport { CalendarHeader, type CalendarHeaderProps } from './CalendarHeader'\nimport { YearSelector } from './YearSelector'\nimport { MonthSelector } from './MonthSelector'\nimport { PickerWrapper } from './PickerWrapper'\nimport { RangePickerComponent } from './RangePicker'\nimport { TimePickerComponent } from './TimePicker'\n\nconst DatePickerComponent = React.memo<DatePickerProps>(\n ({\n variant = 'outline',\n size = 'md',\n color = 'primary',\n label,\n error,\n warning,\n info,\n success,\n helperText,\n messagePosition = 'bottom',\n placeholder = 'Select date...',\n disabled = false,\n required = false,\n clearable = false,\n fullWidth = true,\n className,\n classNames,\n ref,\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n dateFormat = 'MM/dd/yyyy',\n }) => {\n const [currentValue, setCurrentValue] = useControllable<Date | null>({\n value,\n defaultValue: defaultValue || null,\n onChange,\n })\n\n const [isOpen, setIsOpen] = React.useState(false)\n const [showMonthSelector, setShowMonthSelector] = React.useState(false)\n const [showYearSelector, setShowYearSelector] = React.useState(false)\n const [viewDate, setViewDate] = React.useState(currentValue || new Date())\n const [hoverDate, setHoverDate] = React.useState<Date | null>(null)\n\n const { status } = getValidationStatus({ error, warning, info, success, helperText })\n\n React.useEffect(() => {\n if (value) setViewDate(value)\n }, [value])\n\n const handleDateChange = (date: Date | null) => {\n setCurrentValue(date)\n setHoverDate(null)\n setIsOpen(false)\n setShowMonthSelector(false)\n setShowYearSelector(false)\n }\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation()\n setCurrentValue(null)\n }\n\n const handleMonthSelect = (month: number) => {\n const newDate = new Date(viewDate)\n newDate.setMonth(month)\n setViewDate(newDate)\n setShowMonthSelector(false)\n }\n\n const handleYearSelect = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n setShowYearSelector(false)\n setShowMonthSelector(true)\n }\n\n const handleYearChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const handleDecadeChange = (year: number) => {\n const newDate = new Date(viewDate)\n newDate.setFullYear(year)\n setViewDate(newDate)\n }\n\n const showClear = clearable && currentValue && !disabled\n\n const formatDate = React.useCallback(\n (date: Date) => {\n const d = new Date(date)\n const year = d.getFullYear()\n const month = String(d.getMonth() + 1).padStart(2, '0')\n const day = String(d.getDate()).padStart(2, '0')\n return dateFormat.replace('yyyy', String(year)).replace('MM', month).replace('dd', day)\n },\n [dateFormat],\n )\n\n const getDisplayValue = () => {\n if (hoverDate) return { confirmed: '', preview: formatDate(hoverDate) }\n if (currentValue) return { confirmed: formatDate(currentValue), preview: '' }\n return { confirmed: '', preview: '' }\n }\n\n const { confirmed, preview } = getDisplayValue()\n\n const customHeader = (props: Omit<CalendarHeaderProps, 'showMonthSelector' | 'onMonthClick' | 'onYearClick' | 'headerClassName' | 'navigationClassName'>) => (\n <CalendarHeader\n {...props}\n showMonthSelector={showMonthSelector}\n onMonthClick={() => setShowMonthSelector(!showMonthSelector)}\n onYearClick={() => setShowYearSelector(true)}\n headerClassName={classNames?.header}\n navigationClassName={classNames?.navigation}\n />\n )\n\n return (\n <PickerWrapper label={label} error={error} warning={warning} info={info} success={success} helperText={helperText} messagePosition={messagePosition} required={required} fullWidth={fullWidth} classNames={classNames}>\n <div ref={ref} className={cn('datePicker_root', 'relative w-full', classNames?.root)} data-slot=\"root\">\n <div className={cn('absolute flex items-center h-full top-0 text-text-secondary pointer-events-none z-10', pickerIconLeft[size], classNames?.icon)} data-slot=\"icon\">\n <Calendar className={iconSizes[size]} />\n </div>\n\n <Popover open={isOpen} onOpenChange={(open: boolean) => { setIsOpen(open); if (!open) { setShowMonthSelector(false); setShowYearSelector(false); setHoverDate(null) } }}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => setIsOpen(!isOpen)}\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n className={cn('datePicker_trigger', pickerInputVariants({ variant, status, size, fullWidth }), colorVars[color], 'focus-visible:ring-slot', 'flex items-center justify-start cursor-pointer', pickerPaddingLeft[size], showClear && pickerPaddingRight[size], className, classNames?.trigger)}\n data-slot=\"trigger\"\n >\n {confirmed || preview ? (\n <>\n {confirmed && <span>{confirmed}</span>}\n {preview && <span className=\"text-text-secondary\">{preview}</span>}\n </>\n ) : (\n <span className=\"text-text-secondary\">{placeholder}</span>\n )}\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"p-0 w-auto\" align=\"start\" sideOffset={4} onOpenAutoFocus={(e: Event) => e.preventDefault()}>\n {showYearSelector ? (\n <YearSelector date={viewDate} onYearSelect={handleYearSelect} onDecadeChange={handleDecadeChange} color={color} />\n ) : showMonthSelector ? (\n <MonthSelector date={viewDate} onMonthSelect={handleMonthSelect} onYearClick={() => setShowYearSelector(true)} onYearChange={handleYearChange} color={color} />\n ) : (\n <div className={cn('datePicker_calendar', colorVars[color], getDatePickerStyles(color, classNames), classNames?.calendar)} data-slot=\"calendar\">\n <ReactDatePicker\n selected={currentValue}\n onChange={handleDateChange}\n disabled={disabled}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormat}\n renderCustomHeader={customHeader}\n openToDate={viewDate}\n onMonthChange={setViewDate}\n onDayMouseEnter={setHoverDate}\n inline\n />\n </div>\n )}\n </PopoverContent>\n </Popover>\n\n {showClear && (\n <button type=\"button\" onClick={handleClear} className={cn('absolute flex items-center h-full top-0 text-text-secondary hover:text-text-primary z-10', pickerIconRight[size], classNames?.clear)} aria-label=\"Clear date\" data-slot=\"clear\">\n <X className={iconSizes[size]} />\n </button>\n )}\n </div>\n </PickerWrapper>\n )\n },\n)\n\nDatePickerComponent.displayName = 'DatePicker'\n\nexport type * from './types'\nexport const DatePicker = Object.assign(DatePickerComponent, {\n RangePicker: RangePickerComponent,\n TimePicker: TimePickerComponent,\n})\n\nexport { RangePickerComponent as RangePicker, TimePickerComponent as TimePicker }\n"]}
|