@mdigital_ui/ui 0.4.4 → 0.4.6
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/README.md +258 -662
- package/dist/anchor/index.js +4 -0
- package/dist/anchor/index.js.map +1 -0
- package/dist/autocomplete/index.js +6 -0
- package/dist/autocomplete/index.js.map +1 -0
- package/dist/breadcrumbs/index.js +3 -3
- package/dist/calendar/index.js +4 -0
- package/dist/calendar/index.js.map +1 -0
- package/dist/chunk-3Z7RLVWD.js +258 -0
- package/dist/chunk-3Z7RLVWD.js.map +1 -0
- package/dist/chunk-5YEC6FDN.js +263 -0
- package/dist/chunk-5YEC6FDN.js.map +1 -0
- package/dist/{chunk-GOBUFGGJ.js → chunk-6NXZWLSM.js} +3 -3
- package/dist/{chunk-GOBUFGGJ.js.map → chunk-6NXZWLSM.js.map} +1 -1
- package/dist/{chunk-FU5Q4WVX.js → chunk-6ROGWFQ2.js} +3 -3
- package/dist/{chunk-FU5Q4WVX.js.map → chunk-6ROGWFQ2.js.map} +1 -1
- package/dist/{chunk-LJOQ2C5W.js → chunk-6RZEJRTC.js} +3 -3
- package/dist/{chunk-LJOQ2C5W.js.map → chunk-6RZEJRTC.js.map} +1 -1
- package/dist/chunk-74AF6PO2.js +374 -0
- package/dist/chunk-74AF6PO2.js.map +1 -0
- package/dist/chunk-75N6T3IS.js +77 -0
- package/dist/chunk-75N6T3IS.js.map +1 -0
- package/dist/{chunk-BKLJDEUX.js → chunk-DBPLQZJ2.js} +38 -14
- package/dist/chunk-DBPLQZJ2.js.map +1 -0
- package/dist/chunk-ED4CQZ72.js +343 -0
- package/dist/chunk-ED4CQZ72.js.map +1 -0
- package/dist/{chunk-4ZXHLPRS.js → chunk-FY2TZ2NT.js} +4 -4
- package/dist/{chunk-4ZXHLPRS.js.map → chunk-FY2TZ2NT.js.map} +1 -1
- package/dist/{chunk-I5AD247M.js → chunk-HKQOAEFY.js} +13 -3
- package/dist/chunk-HKQOAEFY.js.map +1 -0
- package/dist/chunk-JWYBDNC6.js +307 -0
- package/dist/chunk-JWYBDNC6.js.map +1 -0
- package/dist/{chunk-W5VLFE4U.js → chunk-LHZJ2GJU.js} +32 -6
- package/dist/chunk-LHZJ2GJU.js.map +1 -0
- package/dist/{chunk-253JZOYG.js → chunk-NB66D6A5.js} +3 -2
- package/dist/chunk-NB66D6A5.js.map +1 -0
- package/dist/{chunk-BGMYX7L5.js → chunk-NF6JUJBE.js} +9 -7
- package/dist/chunk-NF6JUJBE.js.map +1 -0
- package/dist/chunk-NPK4ESMA.js +281 -0
- package/dist/chunk-NPK4ESMA.js.map +1 -0
- package/dist/{chunk-X7MF3TIF.js → chunk-PD3O6ZH4.js} +12 -5
- package/dist/chunk-PD3O6ZH4.js.map +1 -0
- package/dist/{chunk-XOEEAMMY.js → chunk-Q46WXJVW.js} +21 -21
- package/dist/chunk-Q46WXJVW.js.map +1 -0
- package/dist/chunk-QEYNOLRC.js +157 -0
- package/dist/chunk-QEYNOLRC.js.map +1 -0
- package/dist/chunk-RNG7HR6U.js +174 -0
- package/dist/chunk-RNG7HR6U.js.map +1 -0
- package/dist/{chunk-HJITFPBT.js → chunk-SZMIHNCZ.js} +13 -7
- package/dist/chunk-SZMIHNCZ.js.map +1 -0
- package/dist/chunk-TDPJYCNI.js +96 -0
- package/dist/chunk-TDPJYCNI.js.map +1 -0
- package/dist/chunk-UFYG3HKL.js +374 -0
- package/dist/chunk-UFYG3HKL.js.map +1 -0
- package/dist/chunk-VNH6R5EU.js +211 -0
- package/dist/chunk-VNH6R5EU.js.map +1 -0
- package/dist/{chunk-SFP77VS3.js → chunk-X7JN7WPF.js} +5 -2
- package/dist/chunk-X7JN7WPF.js.map +1 -0
- package/dist/chunk-YRSHBAUQ.js +201 -0
- package/dist/chunk-YRSHBAUQ.js.map +1 -0
- package/dist/chunk-YUACN5GJ.js +303 -0
- package/dist/chunk-YUACN5GJ.js.map +1 -0
- package/dist/{chunk-HVHQA34X.js → chunk-ZNGKUG2N.js} +11 -6
- package/dist/chunk-ZNGKUG2N.js.map +1 -0
- package/dist/color-picker/index.js +6 -0
- package/dist/color-picker/index.js.map +1 -0
- package/dist/date-picker/RangePicker.d.ts.map +1 -1
- package/dist/date-picker/index.d.ts.map +1 -1
- package/dist/date-picker/index.js +1 -1
- package/dist/date-picker/shared.d.ts +5 -0
- package/dist/date-picker/shared.d.ts.map +1 -1
- package/dist/dropdown/index.js +2 -2
- package/dist/float-button/index.js +5 -0
- package/dist/float-button/index.js.map +1 -0
- package/dist/index.js +51 -2996
- package/dist/index.js.map +1 -1
- package/dist/input/index.d.ts.map +1 -1
- package/dist/input/index.js +1 -1
- package/dist/input-password/index.js +2 -2
- package/dist/mentions/index.js +4 -0
- package/dist/mentions/index.js.map +1 -0
- package/dist/menubar/index.d.ts +3 -3
- package/dist/menubar/index.d.ts.map +1 -1
- package/dist/menubar/index.js +1 -1
- package/dist/multi-select/index.d.ts.map +1 -1
- package/dist/multi-select/index.js +3 -3
- package/dist/number-input/index.d.ts.map +1 -1
- package/dist/number-input/index.js +1 -1
- package/dist/qr-code/index.js +5 -0
- package/dist/qr-code/index.js.map +1 -0
- package/dist/resizable/index.js +4 -0
- package/dist/resizable/index.js.map +1 -0
- package/dist/result/index.js +4 -0
- package/dist/result/index.js.map +1 -0
- package/dist/select/index.d.ts.map +1 -1
- package/dist/select/index.js +3 -3
- package/dist/shared/useSelectBase.d.ts.map +1 -1
- package/dist/skeleton/index.d.ts.map +1 -1
- package/dist/skeleton/index.js +1 -1
- package/dist/table/index.js +4 -4
- package/dist/tabs/index.d.ts.map +1 -1
- package/dist/tabs/index.js +1 -1
- package/dist/tags-input/index.js +5 -0
- package/dist/tags-input/index.js.map +1 -0
- package/dist/toast/index.d.ts.map +1 -1
- package/dist/toast/index.js +1 -1
- package/dist/tooltip/index.d.ts.map +1 -1
- package/dist/tooltip/index.js +1 -1
- package/dist/tour/index.js +5 -0
- package/dist/tour/index.js.map +1 -0
- package/dist/typography/index.js +4 -0
- package/dist/typography/index.js.map +1 -0
- package/dist/watermark/index.js +4 -0
- package/dist/watermark/index.js.map +1 -0
- package/package.json +59 -11
- package/styles/global.css +498 -6016
- package/dist/chunk-253JZOYG.js.map +0 -1
- package/dist/chunk-BGMYX7L5.js.map +0 -1
- package/dist/chunk-BKLJDEUX.js.map +0 -1
- package/dist/chunk-BS4PZPY6.js +0 -322
- package/dist/chunk-BS4PZPY6.js.map +0 -1
- package/dist/chunk-HJITFPBT.js.map +0 -1
- package/dist/chunk-HVHQA34X.js.map +0 -1
- package/dist/chunk-I5AD247M.js.map +0 -1
- package/dist/chunk-SFP77VS3.js.map +0 -1
- package/dist/chunk-W5VLFE4U.js.map +0 -1
- package/dist/chunk-X7MF3TIF.js.map +0 -1
- package/dist/chunk-XOEEAMMY.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tooltip/index.tsx"],"names":[],"mappings":";;;;;;;AAUA,IAAM,sBAAA,GAAyB,GAAA;AAAA,EAC7B,smBAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,EAAA,EAAI,qBAAA;AAAA,QACJ,EAAA,EAAI,uBAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,sBAAA;AAAA,QACP,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO,SAAA;AAAA,MACP,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEO,IAAM,eAAA,GAAmC,gBAAA,CAAA;AAUhD,IAAM,UAAU,KAAA,CAAM,IAAA;AAAA,EACpB,CAAC;AAAA,IACC,OAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,GAAQ,SAAA;AAAA,IACR,IAAA,GAAO,IAAA;AAAA,IACP,OAAA,GAAU,OAAA;AAAA,IACV,IAAA,GAAO,KAAA;AAAA,IACP,KAAA,GAAQ,QAAA;AAAA,IACR,aAAA,GAAgB,GAAA;AAAA,IAChB,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAG;AAAA,GACL,KAAM;AACJ,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,uCAAU,QAAA,EAAS,CAAA;AAAA,IACrB;AAEA,IAAA,uBACE,IAAA,CAAkB,gBAAA,CAAA,IAAA,EAAjB,EAAsB,aAAA,EACrB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAkB,gBAAA,CAAA,OAAA,EAAjB,EAAyB,OAAA,EAAO,IAAA,EAAE,QAAA,EAAS,CAAA;AAAA,sBAC5C,GAAA,CAAkB,yBAAjB,EACC,QAAA,kBAAA,GAAA;AAAA,QAAkB,gBAAA,CAAA,OAAA;AAAA,QAAjB;AAAA,UACC,IAAA;AAAA,UACA,KAAA;AAAA,UACA,SAAA,EAAW,EAAA;AAAA,YACT,iBAAA;AAAA,YACA,sBAAA,CAAuB,EAAE,IAAA,EAAM,KAAA,EAAO,SAAS,CAAA;AAAA,YAC/C,SAAA;AAAA,YACA,UAAA,EAAY;AAAA,WACd;AAAA,UACA,UAAA,EAAY,CAAA;AAAA,UACX,GAAG,KAAA;AAAA,UAEH,QAAA,EAAA;AAAA;AAAA,OACH,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,OAAA,CAAQ,WAAA,GAAc,SAAA;AAGtB,IAAO,eAAA,GAAQ","file":"chunk-253JZOYG.js","sourcesContent":["'use client'\n\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\nimport { cva } from 'class-variance-authority'\nimport React from 'react'\n\nimport { cn } from '../utils'\nimport { colorVars } from '../variants'\nimport type { TooltipProps } from './types'\n\nconst tooltipContentVariants = cva(\n 'z-[var(--z-tooltip)] overflow-hidden rounded px-3 py-1.5 text-sm will-change-[transform,_opacity] animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:data-[side=bottom]:slide-out-to-top-2 data-[state=closed]:data-[side=left]:slide-out-to-right-2 data-[state=closed]:data-[side=right]:slide-out-to-left-2 data-[state=closed]:data-[side=top]:slide-out-to-bottom-2',\n {\n variants: {\n size: {\n xs: 'text-xs px-2 py-1',\n sm: 'text-sm px-2.5 py-1',\n md: 'text-base px-3 py-1.5',\n lg: 'text-lg px-4 py-2',\n },\n color: colorVars,\n variant: {\n solid: 'bg-slot text-slot-fg',\n soft: 'bg-slot-20 text-slot border border-slot-30',\n },\n },\n defaultVariants: {\n size: 'sm',\n color: 'default',\n variant: 'solid',\n },\n },\n)\n\nexport const TooltipProvider = TooltipPrimitive.Provider\n\nexport type {\n TooltipProps,\n TooltipProviderProps,\n TooltipColor,\n TooltipSize,\n TooltipVariant,\n} from './types'\n\nconst Tooltip = React.memo<TooltipProps>(\n ({\n content,\n children,\n color = 'default',\n size = 'sm',\n variant = 'solid',\n side = 'top',\n align = 'center',\n delayDuration = 200,\n disabled = false,\n className,\n classNames,\n ...props\n }) => {\n if (disabled) {\n return <>{children}</>\n }\n\n return (\n <TooltipPrimitive.Root delayDuration={delayDuration}>\n <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n side={side}\n align={align}\n className={cn(\n 'tooltip_content',\n tooltipContentVariants({ size, color, variant }),\n className,\n classNames?.content,\n )}\n sideOffset={4}\n {...props}\n >\n {content}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n )\n },\n)\n\nTooltip.displayName = 'Tooltip'\n\nexport type * from './types'\nexport default Tooltip\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/toast/index.tsx"],"names":["sonnerToast","toast"],"mappings":"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","file":"chunk-BGMYX7L5.js","sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport {\n AlertCircle,\n AlertTriangle,\n CheckCircle2,\n Info,\n Loader2,\n X,\n} from \"lucide-react\";\nimport React, { useCallback, useContext, createContext, useMemo } from \"react\";\nimport { Toaster, toast as sonnerToast } from \"sonner\";\n\nimport { cn } from \"../utils\";\nimport { colorVars } from \"../variants\";\nimport type {\n ToastContextValue,\n ToastOptions,\n ToastProviderProps,\n} from \"./types\";\n\n/**\n * Toast CVA — reuses the shared notification color variant system\n */\nconst toastVariants = cva(\n \"relative flex items-start gap-3 rounded-lg p-3 text-sm w-full min-w-[300px]\",\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-2 border-slot border-l-4 border-l-slot text-slot',\n soft: 'bg-background border border-slot-30 text-slot shadow-sm',\n },\n color: colorVars,\n },\n defaultVariants: {\n variant: \"soft\",\n color: \"default\",\n },\n },\n);\n\n/**\n * Default icons per semantic color\n */\nconst defaultIcons: Partial<Record<string, React.ReactElement>> = {\n success: <CheckCircle2 className=\"w-5 h-5\" />,\n error: <AlertCircle className=\"w-5 h-5\" />,\n warning: <AlertTriangle className=\"w-5 h-5\" />,\n info: <Info className=\"w-5 h-5\" />,\n};\n\n/**\n * Internal toast renderer — styled with our CVA system\n */\nconst ToastRenderer = ({\n id,\n options,\n}: {\n id: string | number;\n options: Omit<ToastOptions, \"duration\"> & { loading?: boolean };\n}) => {\n const variant = options.variant ?? \"default\";\n const color = options.color ?? \"default\";\n const closable = options.closable ?? !options.loading;\n const icon = options.loading ? (\n <Loader2 className=\"w-5 h-5 animate-spin\" />\n ) : options.icon !== undefined ? (\n options.icon\n ) : (\n defaultIcons[color]\n );\n\n return (\n <div className={cn(toastVariants({ variant, color }))}>\n {icon && <div className=\"shrink-0 mt-0.5\">{icon}</div>}\n <div className=\"flex-1 min-w-0\">\n {options.title && <div className=\"font-semibold\">{options.title}</div>}\n {options.description && (\n <div className=\"opacity-90 mt-0.5\">{options.description}</div>\n )}\n {options.action && (\n <button\n type=\"button\"\n onClick={options.action.onClick}\n className=\"mt-2 text-sm font-medium underline hover:no-underline\"\n >\n {options.action.label}\n </button>\n )}\n </div>\n {closable && (\n <button\n type=\"button\"\n onClick={() => sonnerToast.dismiss(id)}\n className=\"shrink-0 rounded-sm opacity-70 hover:opacity-100 transition-opacity\"\n aria-label=\"Close\"\n >\n <X className=\"w-4 h-4\" aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n};\n\n/**\n * Fire a toast with custom renderer\n */\nconst fireToast = (options: ToastOptions): string | number =>\n sonnerToast.custom((id) => <ToastRenderer id={id} options={options} />, {\n duration: options.duration === 0 ? Infinity : options.duration,\n dismissible: options.closable ?? true,\n onDismiss: options.onClose,\n }) as string | number;\n\n/**\n * Toast Context\n */\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\n/**\n * Toast Provider — Sonner handles positioning/stacking, we handle rendering\n */\nexport const ToastProvider = React.memo<ToastProviderProps>(\n ({\n children,\n position = \"top-right\",\n maxToasts = 5,\n offset = 16,\n theme = \"system\",\n closeButton = false,\n duration = 5000,\n className,\n }) => {\n const toast = useCallback(\n (options: ToastOptions): string | number => fireToast(options),\n [],\n );\n\n const success = useCallback(\n (title: string, description?: string): string | number =>\n fireToast({ title, description, color: \"success\" }),\n [],\n );\n\n const error = useCallback(\n (title: string, description?: string): string | number =>\n fireToast({ title, description, color: \"error\" }),\n [],\n );\n\n const warning = useCallback(\n (title: string, description?: string): string | number =>\n fireToast({ title, description, color: \"warning\" }),\n [],\n );\n\n const info = useCallback(\n (title: string, description?: string): string | number =>\n fireToast({ title, description, color: \"info\" }),\n [],\n );\n\n const promise = useCallback(\n <T,>(\n p: Promise<T>,\n opts: {\n loading: string;\n success: string | ((data: T) => string);\n error: string | ((err: unknown) => string);\n },\n ): string | number => {\n const id = sonnerToast.custom((tid) => (\n <ToastRenderer\n id={tid}\n options={{ title: opts.loading, loading: true }}\n />\n )) as string | number;\n\n p.then((data) => {\n sonnerToast.custom(\n (tid) => (\n <ToastRenderer\n id={tid}\n options={{\n title:\n typeof opts.success === \"function\"\n ? opts.success(data)\n : opts.success,\n color: \"success\",\n }}\n />\n ),\n { id },\n );\n }).catch((err) => {\n sonnerToast.custom(\n (tid) => (\n <ToastRenderer\n id={tid}\n options={{\n title:\n typeof opts.error === \"function\"\n ? opts.error(err)\n : opts.error,\n color: \"error\",\n }}\n />\n ),\n { id },\n );\n });\n\n return id;\n },\n [],\n );\n\n const dismiss = useCallback((id: string | number) => {\n sonnerToast.dismiss(id);\n }, []);\n\n const dismissAll = useCallback(() => {\n sonnerToast.dismiss();\n }, []);\n\n const contextValue = useMemo<ToastContextValue>(\n () => ({\n toast,\n success,\n error,\n warning,\n info,\n promise,\n dismiss,\n dismissAll,\n }),\n [toast, success, error, warning, info, promise, dismiss, dismissAll],\n );\n\n return (\n <ToastContext.Provider value={contextValue}>\n {children}\n <Toaster\n position={position}\n visibleToasts={maxToasts}\n offset={offset}\n theme={theme}\n closeButton={closeButton}\n duration={duration}\n className={className}\n toastOptions={{ unstyled: true }}\n />\n </ToastContext.Provider>\n );\n },\n);\n\nToastProvider.displayName = \"ToastProvider\";\n\n/**\n * useToast Hook\n */\nexport const useToast = (): ToastContextValue => {\n const context = useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\n\nexport type * from \"./types\";\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/date-picker/utils.ts","../src/date-picker/CalendarHeader.tsx","../src/date-picker/shared.ts","../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":";;;;;;;;;;AAKO,IAAM,mBAAA,GAAsB,GAAA;AAAA,EACjC,kOAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,iCAAA;AAAA,QACT,MAAA,EAAQ;AAAA,OACV;AAAA,MACA,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,eAAA;AAAA,QACT,KAAA,EAAO,cAAA;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,IAAA,EAAM,aAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,yDAAA;AAAA,QACJ,EAAA,EAAI,yDAAA;AAAA,QACJ,EAAA,EAAI,2DAAA;AAAA,QACJ,EAAA,EAAI;AAAA,OACN;AAAA,MACA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,QAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,MAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAM,IAAA;AAAA,MACN,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;AAGA,IAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAwD7B,IAAM,yBAAA,GAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAgB3B,IAAM,mBAAA,GAAsB,CAAC,MAAA,EAAyB,UAAA,KAAsC;AACjG,EAAA,OAAO,EAAA;AAAA,IACL,oBAAA;AAAA,IACA,yBAAA;AAAA,IACA,UAAA,EAAY,GAAA,IAAO,CAAA,2BAAA,EAA8B,UAAA,CAAW,GAAG,CAAA,CAAA;AAAA,IAC/D,UAAA,EAAY,WAAA,IAAe,CAAA,qCAAA,EAAwC,UAAA,CAAW,WAAW,CAAA,CAAA;AAAA,IACzF,UAAA,EAAY,QAAA,IAAY,CAAA,kCAAA,EAAqC,UAAA,CAAW,QAAQ,CAAA;AAAA,GAClF;AACF,CAAA;ACnGO,IAAM,iBAAiB,CAAC;AAAA,EAC7B,IAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,iBAAA,GAAoB,KAAA;AAAA,EACpB,YAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,KAA2B;AACzB,EAAA,MAAM,YAAY,IAAA,CAAK,kBAAA,CAAmB,SAAS,EAAE,KAAA,EAAO,QAAQ,CAAA;AACpE,EAAA,MAAM,IAAA,GAAO,KAAK,WAAA,EAAY;AAE9B,EAAA,uBACE,IAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,qBAAqB,+EAAA,EAAiF,eAAe,CAAA,EAAG,WAAA,EAAU,QAAA,EACnJ,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,uBAAA,EAAyB,2BAA2B,mBAAmB,CAAA,EAAG,aAAU,YAAA,EACrG,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,YAAA;AAAA,UACT,UAAU,sBAAA,IAA0B,iBAAA;AAAA,UACpC,SAAA,EAAU,kHAAA;AAAA,UACV,YAAA,EAAW,eAAA;AAAA,UAEX,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAW,SAAA,CAAU,EAAA,EAAI;AAAA;AAAA,OACzC;AAAA,sBACA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,aAAA;AAAA,UACT,UAAU,uBAAA,IAA2B,iBAAA;AAAA,UACrC,SAAA,EAAU,kHAAA;AAAA,UACV,YAAA,EAAW,gBAAA;AAAA,UAEX,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAW,SAAA,CAAU,EAAA,EAAI;AAAA;AAAA;AACxC,KAAA,EACF,CAAA;AAAA,oBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,YAAA;AAAA,UACT,SAAA,EAAU,4EAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBACA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,WAAA;AAAA,UACT,SAAA,EAAU,4EAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EACF,CAAA;AAAA,oBAEA,IAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,yBAAyB,yBAAA,EAA2B,mBAAmB,CAAA,EAAG,WAAA,EAAU,YAAA,EACrG,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,aAAA;AAAA,UACT,UAAU,uBAAA,IAA2B,iBAAA;AAAA,UACrC,SAAA,EAAU,kHAAA;AAAA,UACV,YAAA,EAAW,YAAA;AAAA,UAEX,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAW,SAAA,CAAU,EAAA,EAAI;AAAA;AAAA,OACzC;AAAA,sBACA,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,YAAA;AAAA,UACT,UAAU,sBAAA,IAA0B,iBAAA;AAAA,UACpC,SAAA,EAAU,kHAAA;AAAA,UACV,YAAA,EAAW,WAAA;AAAA,UAEX,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAW,SAAA,CAAU,EAAA,EAAI;AAAA;AAAA;AAC1C,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;;;ACtGO,IAAM,qBAAA,GAAwB,sBAAA;ACc9B,IAAM,eAAe,CAAC;AAAA,EAC3B,IAAA;AAAA,EACA,YAAA;AAAA,EACA,cAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,KAAyB;AACvB,EAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AACrC,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,CAAM,WAAA,GAAc,EAAE,CAAA,GAAI,EAAA;AACjD,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,EAAA,EAAG,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,SAAA,GAAY,CAAA,GAAI,CAAC,CAAA;AAEpE,EAAA,uBACEA,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,mBAAA,EAAqB,SAAA,CAAU,KAAK,CAAC,CAAA,EACtD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,cAAA,CAAe,WAAA,GAAc,EAAE,CAAA;AAAA,UAC9C,SAAA,EAAU,kEAAA;AAAA,UACV,YAAA,EAAW,iBAAA;AAAA,UAEX,0BAAAA,GAAAA,CAACC,YAAAA,EAAA,EAAa,SAAA,EAAW,UAAU,EAAA,EAAI;AAAA;AAAA,OACzC;AAAA,sBACAF,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACZ,QAAA,EAAA;AAAA,QAAA,SAAA;AAAA,QAAU,GAAA;AAAA,QAAE,SAAA,GAAY;AAAA,OAAA,EAC3B,CAAA;AAAA,sBACAC,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,cAAA,CAAe,WAAA,GAAc,EAAE,CAAA;AAAA,UAC9C,SAAA,EAAU,kEAAA;AAAA,UACV,YAAA,EAAW,aAAA;AAAA,UAEX,0BAAAA,GAAAA,CAACE,aAAAA,EAAA,EAAc,SAAA,EAAW,UAAU,EAAA,EAAI;AAAA;AAAA;AAC1C,KAAA,EACF,CAAA;AAAA,oBACAF,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI,CAAA;AAAA,QAChC,SAAA,EAAW,EAAA;AAAA,UACT,yDAAA;AAAA,UACA,IAAA,KAAS,cACL,qBAAA,GACA,IAAA,GAAO,aAAa,IAAA,GAAO,SAAA,GAAY,IACrC,gCAAA,GACA;AAAA,SACR;AAAA,QAEC,QAAA,EAAA;AAAA,OAAA;AAAA,MAZI;AAAA,KAcR,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AC7DA,IAAM,MAAA,GAAS,CAAC,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAO,KAAK,CAAA;AAU3F,IAAM,gBAAgB,CAAC;AAAA,EAC5B,IAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,KAAA,GAAQ;AACV,CAAA,KAA0B;AACxB,EAAA,MAAM,YAAA,GAAe,KAAK,QAAA,EAAS;AACnC,EAAA,MAAM,WAAA,GAAc,KAAK,WAAA,EAAY;AAErC,EAAA,uBACED,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,mBAAA,EAAqB,SAAA,CAAU,KAAK,CAAC,CAAA,EACtD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wCAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,YAAA,CAAa,WAAA,GAAc,CAAC,CAAA;AAAA,UAC3C,SAAA,EAAU,kEAAA;AAAA,UACV,YAAA,EAAW,eAAA;AAAA,UAEX,0BAAAA,GAAAA,CAACC,YAAAA,EAAA,EAAa,SAAA,EAAW,UAAU,EAAA,EAAI;AAAA;AAAA,OACzC;AAAA,sBACAD,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,WAAA;AAAA,UACT,SAAA,EAAU,yEAAA;AAAA,UAET,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,sBACAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,OAAA,EAAS,MAAM,YAAA,CAAa,WAAA,GAAc,CAAC,CAAA;AAAA,UAC3C,SAAA,EAAU,kEAAA;AAAA,UACV,YAAA,EAAW,WAAA;AAAA,UAEX,0BAAAA,GAAAA,CAACE,aAAAA,EAAA,EAAc,SAAA,EAAW,UAAU,EAAA,EAAI;AAAA;AAAA;AAC1C,KAAA,EACF,CAAA;AAAA,oBACAF,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,iBAAO,GAAA,CAAI,CAAC,KAAA,EAAO,KAAA,qBAClBA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,aAAA,CAAc,KAAK,CAAA;AAAA,QAClC,SAAA,EAAW,EAAA;AAAA,UACT,yDAAA;AAAA,UACA,KAAA,KAAU,eACN,qBAAA,GACA;AAAA,SACN;AAAA,QAEC,QAAA,EAAA;AAAA,OAAA;AAAA,MAVI;AAAA,KAYR,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;ACtDO,IAAM,gBAAgB,CAAC;AAAA,EAC5B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA,GAAkB,QAAA;AAAA,EAClB,QAAA,GAAW,KAAA;AAAA,EACX,SAAA,GAAY,IAAA;AAAA,EACZ,QAAA;AAAA,EACA;AACF,CAAA,KAA0B;AACxB,EAAA,MAAM,QAAA,GAAWG,OAAM,KAAA,EAAM;AAC7B,EAAA,MAAM,QAAA,GAAW,iBAAiB,QAAQ,CAAA,CAAA;AAC1C,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,aAAA,EAAc,GAAI,mBAAA,CAAoB,EAAE,KAAA,EAAO,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,UAAA,EAAY,CAAA;AAE5G,EAAA,uBACEJ,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,+BAAA,EAAiC,CAAC,SAAA,IAAa,cAAc,CAAA,EAC9E,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBACCA,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,EAAA,CAAG,kBAAA,EAAoB,yCAAA,EAA2C,UAAA,EAAY,KAAK,CAAA,EAAG,WAAA,EAAU,OAAA,EAC/G,QAAA,EAAA;AAAA,QAAA,KAAA;AAAA,QACA,4BAAYC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAkB,QAAA,EAAA,GAAA,EAAC;AAAA,OAAA,EAClD,CAAA;AAAA,MAED,aAAA,IAAiB,oBAAoB,KAAA,oBACpCA,IAAC,GAAA,EAAA,EAAE,EAAA,EAAI,UAAU,SAAA,EAAW,EAAA,CAAG,qBAAqB,qBAAA,CAAsB,EAAE,QAAQ,CAAA,EAAG,YAAY,MAAM,CAAA,EAAG,WAAA,EAAU,QAAA,EACnH,QAAA,EAAA,aAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,IACC,QAAA;AAAA,IACA,aAAA,IAAiB,oBAAoB,QAAA,oBACpCA,IAAC,GAAA,EAAA,EAAE,EAAA,EAAI,QAAA,EAAU,SAAA,EAAW,EAAA,CAAG,mBAAA,EAAqB,UAAU,qBAAA,CAAsB,EAAE,QAAQ,CAAA,EAAG,YAAY,MAAM,CAAA,EAAG,WAAA,EAAU,QAAA,EAC7H,QAAA,EAAA,aAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AC7CO,IAAM,uBAAuBG,MAAAA,CAAM,IAAA;AAAA,EACxC,CAAC;AAAA,IACC,OAAA,GAAU,SAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,KAAA,GAAQ,SAAA;AAAA,IACR,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA,GAAkB,QAAA;AAAA,IAClB,WAAA,GAAc,sBAAA;AAAA,IACd,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,KAAA;AAAA,IACZ,SAAA,GAAY,IAAA;AAAA,IACZ,SAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA,GAAa;AAAA,GACf,KAAM;AACJ,IAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,IAAIA,MAAAA,CAAM,QAAA,CAAsB,oBAAoB,IAAI,CAAA;AACtG,IAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,IAAIA,MAAAA,CAAM,QAAA,CAAsB,kBAAkB,IAAI,CAAA;AAChG,IAAA,MAAM,gBAAA,GAAmB,SAAA,KAAc,MAAA,GAAY,SAAA,GAAY,iBAAA;AAC/D,IAAA,MAAM,cAAA,GAAiB,OAAA,KAAY,MAAA,GAAY,OAAA,GAAU,eAAA;AAEzD,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,MAAAA,CAAM,SAAS,KAAK,CAAA;AAChD,IAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,MAAAA,CAAM,SAAS,KAAK,CAAA;AACtE,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,MAAAA,CAAM,SAAS,KAAK,CAAA;AACpE,IAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAAIA,OAAM,QAAA,CAAS,gBAAA,oBAAoB,IAAI,IAAA,EAAM,CAAA;AAC7E,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,MAAAA,CAAM,SAAsB,IAAI,CAAA;AAElE,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,mBAAA,CAAoB,EAAE,OAAO,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,UAAA,EAAY,CAAA;AAEpF,IAAAA,MAAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,SAAA,cAAuB,SAAS,CAAA;AAAA,IACtC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAsC;AAC1D,MAAA,IAAI,SAAA,KAAc,MAAA,IAAa,OAAA,KAAY,MAAA,EAAW;AACpD,QAAA,oBAAA,CAAqB,KAAA,CAAM,CAAC,CAAC,CAAA;AAC7B,QAAA,kBAAA,CAAmB,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,MAC7B;AACA,MAAA,QAAA,GAAW,KAAK,CAAA;AAChB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,IAAI,KAAA,CAAM,CAAC,CAAA,IAAK,KAAA,CAAM,CAAC,CAAA,EAAG;AACxB,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,oBAAA,CAAqB,KAAK,CAAA;AAC1B,QAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,MAC3B;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwB;AAC3C,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,IAAI,SAAA,KAAc,MAAA,IAAa,OAAA,KAAY,MAAA,EAAW;AACpD,QAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,QAAA,kBAAA,CAAmB,IAAI,CAAA;AAAA,MACzB;AACA,MAAA,QAAA,GAAW,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAkB;AAC3C,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,QAAQ,CAAA;AACjC,MAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AACtB,MAAA,WAAA,CAAY,OAAO,CAAA;AACnB,MAAA,oBAAA,CAAqB,KAAK,CAAA;AAAA,IAC5B,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAiB;AACzC,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,QAAQ,CAAA;AACjC,MAAA,OAAA,CAAQ,YAAY,IAAI,CAAA;AACxB,MAAA,WAAA,CAAY,OAAO,CAAA;AACnB,MAAA,mBAAA,CAAoB,KAAK,CAAA;AACzB,MAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAiB;AACzC,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,QAAQ,CAAA;AACjC,MAAA,OAAA,CAAQ,YAAY,IAAI,CAAA;AACxB,MAAA,WAAA,CAAY,OAAO,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,kBAAA,GAAqB,CAAC,IAAA,KAAiB;AAC3C,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,QAAQ,CAAA;AACjC,MAAA,OAAA,CAAQ,YAAY,IAAI,CAAA;AACxB,MAAA,WAAA,CAAY,OAAO,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,SAAA,KAAc,gBAAA,IAAoB,cAAA,CAAA,IAAmB,CAAC,QAAA;AAExE,IAAA,MAAM,aAAaA,MAAAA,CAAM,WAAA;AAAA,MACvB,CAAC,IAAA,KAAe;AACd,QAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,IAAI,CAAA;AACvB,QAAA,MAAM,IAAA,GAAO,EAAE,WAAA,EAAY;AAC3B,QAAA,MAAM,KAAA,GAAQ,OAAO,CAAA,CAAE,QAAA,KAAa,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACtD,QAAA,MAAM,GAAA,GAAM,OAAO,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC/C,QAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,MAAA,CAAO,IAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,MACxF,CAAA;AAAA,MACA,CAAC,UAAU;AAAA,KACb;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,SAAA,IAAa,gBAAA,IAAoB,CAAC,cAAA,EAAgB;AACpD,QAAA,OAAO,EAAE,SAAA,EAAW,CAAA,EAAG,UAAA,CAAW,gBAAgB,CAAC,CAAA,GAAA,CAAA,EAAO,OAAA,EAAS,UAAA,CAAW,SAAS,CAAA,EAAE;AAAA,MAC3F;AACA,MAAA,IAAI,SAAA,IAAa,CAAC,gBAAA,IAAoB,CAAC,cAAA,EAAgB;AACrD,QAAA,OAAO,EAAE,SAAA,EAAW,EAAA,EAAI,OAAA,EAAS,UAAA,CAAW,SAAS,CAAA,EAAE;AAAA,MACzD;AACA,MAAA,IAAI,CAAC,oBAAoB,CAAC,cAAA,SAAuB,EAAE,SAAA,EAAW,EAAA,EAAI,OAAA,EAAS,EAAA,EAAG;AAC9E,MAAA,MAAM,KAAA,GAAQ,gBAAA,GAAmB,UAAA,CAAW,gBAAgB,CAAA,GAAI,EAAA;AAChE,MAAA,MAAM,GAAA,GAAM,cAAA,GAAiB,UAAA,CAAW,cAAc,CAAA,GAAI,EAAA;AAC1D,MAAA,IAAI,KAAA,IAAS,GAAA,EAAK,OAAO,EAAE,SAAA,EAAW,CAAA,EAAG,KAAK,CAAA,GAAA,EAAM,GAAG,CAAA,CAAA,EAAI,OAAA,EAAS,EAAA,EAAG;AACvE,MAAA,IAAI,KAAA,SAAc,EAAE,SAAA,EAAW,GAAG,KAAK,CAAA,CAAA,EAAI,SAAS,QAAA,EAAS;AAC7D,MAAA,OAAO,EAAE,SAAA,EAAW,EAAA,EAAI,OAAA,EAAS,EAAA,EAAG;AAAA,IACtC,CAAA;AAEA,IAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,eAAA,EAAgB;AAE/C,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,qBACpBH,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACJ,iBAAA;AAAA,QACA,YAAA,EAAc,MAAM,oBAAA,CAAqB,CAAC,iBAAiB,CAAA;AAAA,QAC3D,WAAA,EAAa,MAAM,mBAAA,CAAoB,IAAI,CAAA;AAAA,QAC3C,iBAAiB,UAAA,EAAY,MAAA;AAAA,QAC7B,qBAAqB,UAAA,EAAY;AAAA;AAAA,KACnC;AAGF,IAAA,uBACEA,GAAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAc,KAAA,EAAc,SAAkB,IAAA,EAAY,OAAA,EAAkB,UAAA,EAAwB,eAAA,EAAkC,QAAA,EAAoB,SAAA,EAAsB,YAC7L,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,iBAAA,EAAmB,UAAA,EAAY,IAAI,CAAA,EAAG,WAAA,EAAU,MAAA,EAC9F,QAAA,EAAA;AAAA,sBAAAC,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,6FAAA,EAA+F,YAAY,IAAI,CAAA,EAAG,WAAA,EAAU,MAAA,EAC7I,0BAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,WAAW,SAAA,CAAU,IAAI,GAAG,CAAA,EACxC,CAAA;AAAA,sBAEAD,IAAAA,CAAC,OAAA,EAAA,EAAQ,MAAM,MAAA,EAAQ,YAAA,EAAc,CAAC,IAAA,KAAkB;AAAE,QAAA,SAAA,CAAU,IAAI,CAAA;AAAG,QAAA,IAAI,CAAC,IAAA,EAAM;AAAE,UAAA,oBAAA,CAAqB,KAAK,CAAA;AAAG,UAAA,mBAAA,CAAoB,KAAK,CAAA;AAAG,UAAA,YAAA,CAAa,IAAI,CAAA;AAAA,QAAE;AAAA,MAAE,CAAA,EACpK,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,QAAA;AAAA,YACA,OAAA,EAAS,MAAM,SAAA,CAAU,CAAC,MAAM,CAAA;AAAA,YAChC,eAAA,EAAe,MAAA;AAAA,YACf,eAAA,EAAc,QAAA;AAAA,YACd,SAAA,EAAW,GAAG,oBAAA,EAAsB,mBAAA,CAAoB,EAAE,OAAA,EAAS,MAAA,EAAQ,MAAM,SAAA,EAAW,GAAG,SAAA,CAAU,KAAK,GAAG,yBAAA,EAA2B,sDAAA,EAAwD,aAAa,OAAA,EAAS,SAAA,EAAW,YAAY,OAAO,CAAA;AAAA,YACxP,WAAA,EAAU,SAAA;AAAA,YAET,QAAA,EAAA,SAAA,IAAa,OAAA,mBACZD,IAAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,SAAA,oBAAaC,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,cAC9B,2BAAWA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAA,OAAA,EAAQ;AAAA,aAAA,EAC7D,oBAEAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAA,WAAA,EAAY;AAAA;AAAA,SAEvD,EACF,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YAAA,EAAa,KAAA,EAAM,OAAA,EAAQ,UAAA,EAAY,CAAA,EAAG,eAAA,EAAiB,CAAC,CAAA,KAAa,CAAA,CAAE,cAAA,EAAe,EACjH,QAAA,EAAA,gBAAA,mBACCA,GAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,QAAA,EAAU,YAAA,EAAc,gBAAA,EAAkB,cAAA,EAAgB,kBAAA,EAAoB,KAAA,EAAc,CAAA,GAC9G,iBAAA,mBACFA,GAAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAM,QAAA,EAAU,aAAA,EAAe,iBAAA,EAAmB,WAAA,EAAa,MAAM,mBAAA,CAAoB,IAAI,CAAA,EAAG,YAAA,EAAc,gBAAA,EAAkB,KAAA,EAAc,CAAA,mBAE7JA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAA,CAAU,KAAK,CAAA,EAAG,mBAAA,CAAoB,KAAA,EAAO,UAAU,CAAA,EAAG,UAAA,EAAY,QAAQ,CAAA,EAAG,WAAA,EAAU,YACnI,QAAA,kBAAAA,GAAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAY,IAAA;AAAA,YACZ,SAAA,EAAW,gBAAA;AAAA,YACX,OAAA,EAAS,cAAA;AAAA,YACT,QAAA,EAAU,YAAA;AAAA,YACV,QAAA;AAAA,YACA,OAAA;AAAA,YACA,OAAA;AAAA,YACA,UAAA;AAAA,YACA,kBAAA,EAAoB,YAAA;AAAA,YACpB,UAAA,EAAY,QAAA;AAAA,YACZ,aAAA,EAAe,WAAA;AAAA,YACf,WAAA,EAAa,CAAA;AAAA,YACb,eAAA,EAAiB,YAAA;AAAA,YACjB,MAAA,EAAM;AAAA;AAAA,WAEV,CAAA,EAEJ;AAAA,OAAA,EACF,CAAA;AAAA,MAEC,SAAA,oBACCA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,OAAA,EAAS,WAAA,EAAa,SAAA,EAAW,EAAA,CAAG,kGAAA,EAAoG,UAAA,EAAY,KAAK,CAAA,EAAG,YAAA,EAAW,kBAAA,EAAmB,WAAA,EAAU,OAAA,EACxN,QAAA,kBAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG,CAAA,EACjC;AAAA,KAAA,EAEJ,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,oBAAA,CAAqB,WAAA,GAAc,aAAA;ACtMnC,IAAM,UAAA,GAAaG,MAAAA,CAAM,IAAA,CAAK,CAAC,EAAE,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS,OAAA,EAAQ,qBAC3EH,GAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAU,0GAAA;AAAA,IACV,YAAA,EAAc,OAAA;AAAA,IAEb,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBACVA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAAA,QAC5B,YAAA,EAAc,MAAM,OAAA,GAAU,IAAI,CAAA;AAAA,QAClC,SAAA,EAAW,EAAA;AAAA,UACT,2GAAA;AAAA,UACA,IAAA,KAAS,WACL,4CAAA,GACA;AAAA,SACN;AAAA,QAEC,QAAA,EAAA,OAAO,SAAS,QAAA,GAAW,MAAA,CAAO,IAAI,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA,GAAI;AAAA,OAAA;AAAA,MAXvD;AAAA,KAaR;AAAA;AACH,CACD,CAAA;AAED,UAAA,CAAW,WAAA,GAAc,YAAA;AAUzB,IAAM,mBAAmB,CAAC;AAAA,EACxB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA,GAAa,SAAA;AAAA,EACb,KAAA,GAAQ;AACV,CAAA,KAA6B;AAC3B,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,QAAA,CAAS,IAAI,CAAA;AACzC,EAAA,MAAM,WAAA,GAAc,KAAA,oBAAS,IAAI,IAAA,EAAK;AACtC,EAAA,MAAM,WAAA,GAAc,YAAY,QAAA,EAAS;AACzC,EAAA,MAAM,aAAA,GAAgB,YAAY,UAAA,EAAW;AAE7C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIG,MAAAA,CAAM,QAAA;AAAA,IAC5C,QAAA,GAAW,WAAA,GAAc,EAAA,IAAM,EAAA,GAAK;AAAA,GACtC;AACA,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,MAAAA,CAAM,SAAS,aAAa,CAAA;AACxE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,MAAAA,CAAM,QAAA;AAAA,IAChD,WAAA,IAAe,KAAK,IAAA,GAAO;AAAA,GAC7B;AACA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,MAAAA,CAAM,SAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,MAAAA,CAAM,SAAwB,IAAI,CAAA;AACxE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,MAAAA,CAAM,SAAwB,IAAI,CAAA;AAExE,EAAA,MAAM,KAAA,GAAQ,WACV,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,EAAA,EAAG,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,IAAI,CAAC,CAAA,GAC1C,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAG,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,CAAC,CAAA;AAC1C,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAG,EAAG,CAAC,CAAA,EAAG,CAAA,KAAM,CAAC,CAAA;AACtD,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,EAAM,IAAI,CAAA;AAE3B,EAAAA,MAAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,SAAA,KAAc,IAAA,IAAQ,WAAA,KAAgB,IAAA,IAAQ,gBAAgB,IAAA,EAAM;AACtE,MAAA,MAAM,cAAc,SAAA,IAAa,YAAA;AACjC,MAAA,MAAM,gBAAgB,WAAA,IAAe,cAAA;AACrC,MAAA,MAAM,gBAAgB,WAAA,IAAe,cAAA;AAErC,MAAA,MAAM,gBAAgB,MAAA,CAAO,WAAW,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AACzD,MAAA,MAAM,kBAAkB,MAAA,CAAO,aAAa,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC7D,MAAA,MAAM,aAAA,GAAgB,QAAA,GAClB,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,eAAe,CAAA,CAAA,EAAI,aAAa,CAAA,CAAA,GAClD,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,eAAe,CAAA,CAAA;AAEvC,MAAA,SAAA,GAAY,aAAa,CAAA;AAAA,IAC3B,CAAA,MAAO;AACL,MAAA,SAAA,GAAY,EAAE,CAAA;AAAA,IAChB;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,WAAA,EAAa,WAAA,EAAa,cAAc,cAAA,EAAgB,cAAA,EAAgB,QAAA,EAAU,SAAS,CAAC,CAAA;AAE3G,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,WAAW,CAAA;AACpC,IAAA,IAAI,SAAA,GAAY,YAAA;AAEhB,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAI,cAAA,KAAmB,IAAA,IAAQ,YAAA,KAAiB,EAAA,cAAgB,YAAA,GAAe,EAAA;AAAA,WAAA,IACtE,cAAA,KAAmB,IAAA,IAAQ,YAAA,KAAiB,EAAA,EAAI,SAAA,GAAY,CAAA;AAAA,IACvE;AAEA,IAAA,OAAA,CAAQ,SAAS,SAAS,CAAA;AAC1B,IAAA,OAAA,CAAQ,WAAW,cAAc,CAAA;AACjC,IAAA,OAAA,CAAQ,WAAW,CAAC,CAAA;AACpB,IAAA,SAAA,GAAY,EAAE,CAAA;AACd,IAAA,QAAA,CAAS,OAAO,CAAA;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,IAAA,MAAM,OAAA,GAAU,IAAI,QAAA,EAAS;AAE7B,IAAA,eAAA,CAAgB,QAAA,GAAW,OAAA,GAAU,EAAA,IAAM,EAAA,GAAK,OAAO,CAAA;AACvD,IAAA,iBAAA,CAAkB,GAAA,CAAI,YAAY,CAAA;AAClC,IAAA,iBAAA,CAAkB,OAAA,IAAW,EAAA,GAAK,IAAA,GAAO,IAAI,CAAA;AAE7C,IAAA,SAAA,GAAY,EAAE,CAAA;AACd,IAAA,QAAA,CAAS,GAAG,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,uBACEJ,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,6BAAA,EAA+B,SAAA,CAAU,KAAK,CAAC,CAAA,EAChE,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,cAAW,KAAA,EAAO,KAAA,EAAO,UAAU,YAAA,EAAc,QAAA,EAAU,CAAC,IAAA,KAAS,eAAA,CAAgB,IAAc,GAAG,OAAA,EAAS,CAAC,SAAS,YAAA,CAAa,IAAc,GAAG,OAAA,EAAS,MAAM,YAAA,CAAa,IAAI,CAAA,EAAG,CAAA;AAAA,sBAC3LA,IAAC,UAAA,EAAA,EAAW,KAAA,EAAO,SAAS,QAAA,EAAU,cAAA,EAAgB,QAAA,EAAU,CAAC,IAAA,KAAS,iBAAA,CAAkB,IAAc,CAAA,EAAG,OAAA,EAAS,CAAC,IAAA,KAAS,cAAA,CAAe,IAAc,GAAG,OAAA,EAAS,MAAM,cAAA,CAAe,IAAI,CAAA,EAAG,CAAA;AAAA,MACpM,QAAA,oBAAYA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,SAAS,QAAA,EAAU,cAAA,EAAgB,QAAA,EAAU,CAAC,IAAA,KAAS,iBAAA,CAAkB,IAAc,CAAA,EAAG,OAAA,EAAS,CAAC,IAAA,KAAS,cAAA,CAAe,IAAc,GAAG,OAAA,EAAS,MAAM,cAAA,CAAe,IAAI,CAAA,EAAG;AAAA,KAAA,EACpN,CAAA;AAAA,oBACAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,SAAS,cAAA,EAAgB,SAAA,EAAU,2IAA0I,QAAA,EAAA,KAAA,EAAG,CAAA;AAAA,sBACtMA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAS,aAAA,EAAe,SAAA,EAAW,EAAA,CAAG,oFAAA,EAAsF,qBAAqB,CAAA,EAAG,QAAA,EAAA,IAAA,EAAE;AAAA,KAAA,EAC9K;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAEO,IAAM,sBAAsBG,MAAAA,CAAM,IAAA;AAAA,EACvC,CAAC;AAAA,IACC,OAAA,GAAU,SAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,KAAA,GAAQ,SAAA;AAAA,IACR,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA,GAAkB,QAAA;AAAA,IAClB,WAAA,GAAc,gBAAA;AAAA,IACd,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,KAAA;AAAA,IACZ,SAAA,GAAY,IAAA;AAAA,IACZ,SAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA,GAAa;AAAA,GACf,KAAM;AACJ,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,IAAIA,MAAAA,CAAM,QAAA,CAAsB,gBAAgB,IAAI,CAAA;AAC1F,IAAA,MAAM,YAAA,GAAe,KAAA,KAAU,MAAA,GAAY,KAAA,GAAQ,aAAA;AACnD,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,MAAAA,CAAM,SAAS,KAAK,CAAA;AAChD,IAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,MAAAA,CAAM,SAAS,EAAE,CAAA;AAEvD,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,mBAAA,CAAoB,EAAE,OAAO,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,UAAA,EAAY,CAAA;AAEpF,IAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAsB;AAC9C,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,gBAAA,CAAiB,IAAI,CAAA;AAC9C,MAAA,QAAA,GAAW,IAAI,CAAA;AACf,MAAA,cAAA,CAAe,EAAE,CAAA;AACjB,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwB;AAC3C,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,gBAAA,CAAiB,IAAI,CAAA;AAC9C,MAAA,QAAA,GAAW,IAAI,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,SAAA,IAAa,YAAA,IAAgB,CAAC,QAAA;AAEhD,IAAA,MAAM,UAAA,GAAa,CAAC,IAAA,KAClB,IAAI,KAAK,IAAI,CAAA,CAAE,mBAAmB,OAAA,EAAS;AAAA,MACzC,IAAA,EAAM,SAAA;AAAA,MACN,MAAA,EAAQ,SAAA;AAAA,MACR,MAAA,EAAQ,UAAA,CAAW,QAAA,CAAS,IAAI;AAAA,KACjC,CAAA;AAEH,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,aAAa,OAAO,EAAE,SAAA,EAAW,EAAA,EAAI,SAAS,WAAA,EAAY;AAC9D,MAAA,IAAI,YAAA,SAAqB,EAAE,SAAA,EAAW,WAAW,YAAY,CAAA,EAAG,SAAS,EAAA,EAAG;AAC5E,MAAA,OAAO,EAAE,SAAA,EAAW,EAAA,EAAI,OAAA,EAAS,EAAA,EAAG;AAAA,IACtC,CAAA;AAEA,IAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,eAAA,EAAgB;AAE/C,IAAA,uBACEH,GAAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAc,KAAA,EAAc,SAAkB,IAAA,EAAY,OAAA,EAAkB,UAAA,EAAwB,eAAA,EAAkC,QAAA,EAAoB,SAAA,EAAsB,YAC7L,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,iBAAA,EAAmB,UAAA,EAAY,IAAI,CAAA,EAAG,WAAA,EAAU,MAAA,EAC9F,QAAA,EAAA;AAAA,sBAAAC,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,6FAAA,EAA+F,YAAY,IAAI,CAAA,EAAG,WAAA,EAAU,MAAA,EAC7I,0BAAAA,GAAAA,CAAC,KAAA,EAAA,EAAM,WAAW,SAAA,CAAU,IAAI,GAAG,CAAA,EACrC,CAAA;AAAA,sBAEAD,IAAAA,CAAC,OAAA,EAAA,EAAQ,MAAM,MAAA,EAAQ,YAAA,EAAc,CAAC,IAAA,KAAkB;AAAE,QAAA,SAAA,CAAU,IAAI,CAAA;AAAG,QAAA,IAAI,CAAC,IAAA,EAAM,cAAA,CAAe,EAAE,CAAA;AAAA,MAAE,CAAA,EACvG,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,QAAA;AAAA,YACA,OAAA,EAAS,MAAM,SAAA,CAAU,CAAC,MAAM,CAAA;AAAA,YAChC,eAAA,EAAe,MAAA;AAAA,YACf,eAAA,EAAc,QAAA;AAAA,YACd,SAAA,EAAW,GAAG,oBAAA,EAAsB,mBAAA,CAAoB,EAAE,OAAA,EAAS,MAAA,EAAQ,MAAM,SAAA,EAAW,GAAG,SAAA,CAAU,KAAK,GAAG,yBAAA,EAA2B,sDAAA,EAAwD,aAAa,OAAA,EAAS,SAAA,EAAW,YAAY,OAAO,CAAA;AAAA,YACxP,WAAA,EAAU,SAAA;AAAA,YAET,QAAA,EAAA,SAAA,IAAa,OAAA,mBACZD,IAAAA,CAAAK,UAAA,EACG,QAAA,EAAA;AAAA,cAAA,SAAA,oBAAaJ,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,cAC9B,2BAAWA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAA,OAAA,EAAQ;AAAA,aAAA,EAC7D,oBAEAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAA,WAAA,EAAY;AAAA;AAAA,SAEvD,EACF,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YAAA,EAAa,KAAA,EAAM,OAAA,EAAQ,UAAA,EAAY,CAAA,EAAG,eAAA,EAAiB,CAAC,CAAA,KAAa,CAAA,CAAE,gBAAe,EAClH,QAAA,kBAAAA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,KAAA,EAAO,YAAA,EAAc,QAAA,EAAU,gBAAA,EAAkB,SAAA,EAAW,cAAA,EAAgB,UAAA,EAAwB,KAAA,EAAc,CAAA,EACtI;AAAA,OAAA,EACF,CAAA;AAAA,MAEC,SAAA,oBACCA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAS,WAAA,EAAa,SAAA,EAAW,EAAA,CAAG,kGAAA,EAAoG,UAAA,EAAY,KAAK,GAAG,YAAA,EAAW,YAAA,EAAa,WAAA,EAAU,OAAA,EAClN,QAAA,kBAAAA,GAAAA,CAACK,CAAAA,EAAA,EAAE,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG,CAAA,EACjC;AAAA,KAAA,EAEJ,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,mBAAA,CAAoB,WAAA,GAAc,YAAA;ACxOlC,IAAM,sBAAsBF,MAAAA,CAAM,IAAA;AAAA,EAChC,CAAC;AAAA,IACC,OAAA,GAAU,SAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,KAAA,GAAQ,SAAA;AAAA,IACR,KAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA,GAAkB,QAAA;AAAA,IAClB,WAAA,GAAc,gBAAA;AAAA,IACd,QAAA,GAAW,KAAA;AAAA,IACX,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,KAAA;AAAA,IACZ,SAAA,GAAY,IAAA;AAAA,IACZ,SAAA;AAAA,IACA,UAAA;AAAA,IACA,GAAA;AAAA,IACA,KAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA,GAAa;AAAA,GACf,KAAM;AACJ,IAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,IAAIA,MAAAA,CAAM,QAAA,CAAsB,gBAAgB,IAAI,CAAA;AAC1F,IAAA,MAAM,YAAA,GAAe,KAAA,KAAU,MAAA,GAAY,KAAA,GAAQ,aAAA;AAEnD,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,MAAAA,CAAM,SAAS,KAAK,CAAA;AAChD,IAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,MAAAA,CAAM,SAAS,KAAK,CAAA;AACtE,IAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIA,MAAAA,CAAM,SAAS,KAAK,CAAA;AACpE,IAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAAIA,OAAM,QAAA,CAAS,YAAA,oBAAgB,IAAI,IAAA,EAAM,CAAA;AACzE,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,MAAAA,CAAM,SAAsB,IAAI,CAAA;AAElE,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,mBAAA,CAAoB,EAAE,OAAO,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,UAAA,EAAY,CAAA;AAEpF,IAAAA,MAAAA,CAAM,UAAU,MAAM;AACpB,MAAA,IAAI,KAAA,cAAmB,KAAK,CAAA;AAAA,IAC9B,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAsB;AAC9C,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,gBAAA,CAAiB,IAAI,CAAA;AAC9C,MAAA,QAAA,GAAW,IAAI,CAAA;AACf,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,SAAA,CAAU,KAAK,CAAA;AACf,MAAA,oBAAA,CAAqB,KAAK,CAAA;AAC1B,MAAA,mBAAA,CAAoB,KAAK,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAwB;AAC3C,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,gBAAA,CAAiB,IAAI,CAAA;AAC9C,MAAA,QAAA,GAAW,IAAI,CAAA;AAAA,IACjB,CAAA;AAEA,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAkB;AAC3C,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,QAAQ,CAAA;AACjC,MAAA,OAAA,CAAQ,SAAS,KAAK,CAAA;AACtB,MAAA,WAAA,CAAY,OAAO,CAAA;AACnB,MAAA,oBAAA,CAAqB,KAAK,CAAA;AAAA,IAC5B,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAiB;AACzC,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,QAAQ,CAAA;AACjC,MAAA,OAAA,CAAQ,YAAY,IAAI,CAAA;AACxB,MAAA,WAAA,CAAY,OAAO,CAAA;AACnB,MAAA,mBAAA,CAAoB,KAAK,CAAA;AACzB,MAAA,oBAAA,CAAqB,IAAI,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAiB;AACzC,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,QAAQ,CAAA;AACjC,MAAA,OAAA,CAAQ,YAAY,IAAI,CAAA;AACxB,MAAA,WAAA,CAAY,OAAO,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,kBAAA,GAAqB,CAAC,IAAA,KAAiB;AAC3C,MAAA,MAAM,OAAA,GAAU,IAAI,IAAA,CAAK,QAAQ,CAAA;AACjC,MAAA,OAAA,CAAQ,YAAY,IAAI,CAAA;AACxB,MAAA,WAAA,CAAY,OAAO,CAAA;AAAA,IACrB,CAAA;AAEA,IAAA,MAAM,SAAA,GAAY,SAAA,IAAa,YAAA,IAAgB,CAAC,QAAA;AAEhD,IAAA,MAAM,aAAaA,MAAAA,CAAM,WAAA;AAAA,MACvB,CAAC,IAAA,KAAe;AACd,QAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,IAAI,CAAA;AACvB,QAAA,MAAM,IAAA,GAAO,EAAE,WAAA,EAAY;AAC3B,QAAA,MAAM,KAAA,GAAQ,OAAO,CAAA,CAAE,QAAA,KAAa,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACtD,QAAA,MAAM,GAAA,GAAM,OAAO,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAC/C,QAAA,OAAO,UAAA,CAAW,OAAA,CAAQ,MAAA,EAAQ,MAAA,CAAO,IAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,KAAK,CAAA,CAAE,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,MACxF,CAAA;AAAA,MACA,CAAC,UAAU;AAAA,KACb;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,IAAI,SAAA,SAAkB,EAAE,SAAA,EAAW,IAAI,OAAA,EAAS,UAAA,CAAW,SAAS,CAAA,EAAE;AACtE,MAAA,IAAI,YAAA,SAAqB,EAAE,SAAA,EAAW,WAAW,YAAY,CAAA,EAAG,SAAS,EAAA,EAAG;AAC5E,MAAA,OAAO,EAAE,SAAA,EAAW,EAAA,EAAI,OAAA,EAAS,EAAA,EAAG;AAAA,IACtC,CAAA;AAEA,IAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,eAAA,EAAgB;AAE/C,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,qBACpBH,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA;AAAA,QACJ,iBAAA;AAAA,QACA,YAAA,EAAc,MAAM,oBAAA,CAAqB,CAAC,iBAAiB,CAAA;AAAA,QAC3D,WAAA,EAAa,MAAM,mBAAA,CAAoB,IAAI,CAAA;AAAA,QAC3C,iBAAiB,UAAA,EAAY,MAAA;AAAA,QAC7B,qBAAqB,UAAA,EAAY;AAAA;AAAA,KACnC;AAGF,IAAA,uBACEA,GAAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAc,KAAA,EAAc,SAAkB,IAAA,EAAY,OAAA,EAAkB,UAAA,EAAwB,eAAA,EAAkC,QAAA,EAAoB,SAAA,EAAsB,YAC7L,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,iBAAA,EAAmB,UAAA,EAAY,IAAI,CAAA,EAAG,WAAA,EAAU,MAAA,EAC9F,QAAA,EAAA;AAAA,sBAAAC,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,6FAAA,EAA+F,UAAA,EAAY,IAAI,CAAA,EAAG,WAAA,EAAU,MAAA,EAC7I,QAAA,kBAAAA,IAACM,QAAAA,EAAA,EAAS,WAAW,SAAA,CAAU,IAAI,GAAG,CAAA,EACxC,CAAA;AAAA,sBAEAP,IAAAA,CAAC,OAAA,EAAA,EAAQ,MAAM,MAAA,EAAQ,YAAA,EAAc,CAAC,IAAA,KAAkB;AAAE,QAAA,SAAA,CAAU,IAAI,CAAA;AAAG,QAAA,IAAI,CAAC,IAAA,EAAM;AAAE,UAAA,oBAAA,CAAqB,KAAK,CAAA;AAAG,UAAA,mBAAA,CAAoB,KAAK,CAAA;AAAG,UAAA,YAAA,CAAa,IAAI,CAAA;AAAA,QAAE;AAAA,MAAE,CAAA,EACpK,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACrB,QAAA,kBAAAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,QAAA;AAAA,YACA,OAAA,EAAS,MAAM,SAAA,CAAU,CAAC,MAAM,CAAA;AAAA,YAChC,eAAA,EAAe,MAAA;AAAA,YACf,eAAA,EAAc,QAAA;AAAA,YACd,SAAA,EAAW,GAAG,oBAAA,EAAsB,mBAAA,CAAoB,EAAE,OAAA,EAAS,MAAA,EAAQ,MAAM,SAAA,EAAW,GAAG,SAAA,CAAU,KAAK,GAAG,yBAAA,EAA2B,sDAAA,EAAwD,aAAa,OAAA,EAAS,SAAA,EAAW,YAAY,OAAO,CAAA;AAAA,YACxP,WAAA,EAAU,SAAA;AAAA,YAET,QAAA,EAAA,SAAA,IAAa,OAAA,mBACZD,IAAAA,CAAAK,UAAA,EACG,QAAA,EAAA;AAAA,cAAA,SAAA,oBAAaJ,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,cAC9B,2BAAWA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAA,OAAA,EAAQ;AAAA,aAAA,EAC7D,oBAEAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAuB,QAAA,EAAA,WAAA,EAAY;AAAA;AAAA,SAEvD,EACF,CAAA;AAAA,wBACAA,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,YAAA,EAAa,KAAA,EAAM,OAAA,EAAQ,UAAA,EAAY,CAAA,EAAG,eAAA,EAAiB,CAAC,CAAA,KAAa,CAAA,CAAE,cAAA,EAAe,EACjH,QAAA,EAAA,gBAAA,mBACCA,GAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,QAAA,EAAU,YAAA,EAAc,gBAAA,EAAkB,cAAA,EAAgB,kBAAA,EAAoB,KAAA,EAAc,CAAA,GAC9G,iBAAA,mBACFA,GAAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAM,QAAA,EAAU,aAAA,EAAe,iBAAA,EAAmB,WAAA,EAAa,MAAM,mBAAA,CAAoB,IAAI,CAAA,EAAG,YAAA,EAAc,gBAAA,EAAkB,KAAA,EAAc,CAAA,mBAE7JA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAA,CAAU,KAAK,CAAA,EAAG,mBAAA,CAAoB,KAAA,EAAO,UAAU,CAAA,EAAG,UAAA,EAAY,QAAQ,CAAA,EAAG,WAAA,EAAU,YACnI,QAAA,kBAAAA,GAAAA;AAAA,UAACO,eAAAA;AAAA,UAAA;AAAA,YACC,QAAA,EAAU,YAAA;AAAA,YACV,QAAA,EAAU,gBAAA;AAAA,YACV,QAAA;AAAA,YACA,OAAA;AAAA,YACA,OAAA;AAAA,YACA,UAAA;AAAA,YACA,kBAAA,EAAoB,YAAA;AAAA,YACpB,UAAA,EAAY,QAAA;AAAA,YACZ,aAAA,EAAe,WAAA;AAAA,YACf,eAAA,EAAiB,YAAA;AAAA,YACjB,MAAA,EAAM;AAAA;AAAA,WAEV,CAAA,EAEJ;AAAA,OAAA,EACF,CAAA;AAAA,MAEC,SAAA,oBACCP,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAS,WAAA,EAAa,SAAA,EAAW,EAAA,CAAG,kGAAA,EAAoG,UAAA,EAAY,KAAK,GAAG,YAAA,EAAW,YAAA,EAAa,WAAA,EAAU,OAAA,EAClN,QAAA,kBAAAA,GAAAA,CAACK,CAAAA,EAAA,EAAE,SAAA,EAAW,SAAA,CAAU,IAAI,CAAA,EAAG,CAAA,EACjC;AAAA,KAAA,EAEJ,CAAA,EACF,CAAA;AAAA,EAEJ;AACF,CAAA;AAEA,mBAAA,CAAoB,WAAA,GAAc,YAAA;AAG3B,IAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,mBAAA,EAAqB;AAAA,EAC3D,WAAA,EAAa,oBAAA;AAAA,EACb,UAAA,EAAY;AACd,CAAC","file":"chunk-BKLJDEUX.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","'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","/** Slot-based: applied to selected day/time elements inside picker */\nexport const pickerSelectedClasses = 'bg-slot text-slot-fg'\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({ error, warning, info, success, helperText })\n\n return (\n <div className={cn('w-full flex flex-col relative', !fullWidth && 'inline-block')}>\n <div className=\"flex gap-2 items-center relative mb-0.5\">\n {label && (\n <label className={cn('datePicker_label', 'text-sm font-medium text-text-secondary', classNames?.label)} data-slot=\"label\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </label>\n )}\n {helperMessage && messagePosition === 'top' && (\n <p id={helperId} className={cn('datePicker_helper', statusMessageVariants({ status }), classNames?.helper)} data-slot=\"helper\">\n {helperMessage}\n </p>\n )}\n </div>\n {children}\n {helperMessage && messagePosition === 'bottom' && (\n <p id={helperId} className={cn('datePicker_helper', 'mt-0.5', statusMessageVariants({ status }), classNames?.helper)} data-slot=\"helper\">\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 { 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 left-3 flex items-center h-full top-0 text-text-secondary pointer-events-none z-10', 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', 'pl-10 flex items-center justify-start cursor-pointer', showClear && 'pr-10', 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 right-3 flex items-center h-full top-0 text-text-secondary hover:text-text-primary z-10', 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 } 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 left-3 flex items-center h-full top-0 text-text-secondary pointer-events-none z-10', 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', 'pl-10 flex items-center justify-start cursor-pointer', showClear && 'pr-10', 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 right-3 flex items-center h-full top-0 text-text-secondary hover:text-text-primary z-10', 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 { 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 { 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 [internalValue, setInternalValue] = React.useState<Date | null>(defaultValue || null)\n const currentValue = value !== undefined ? value : internalValue\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 if (value === undefined) setInternalValue(date)\n onChange?.(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 if (value === undefined) setInternalValue(null)\n onChange?.(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 left-3 flex items-center h-full top-0 text-text-secondary pointer-events-none z-10', 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', 'pl-10 flex items-center justify-start cursor-pointer', showClear && 'pr-10', 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 right-3 flex items-center h-full top-0 text-text-secondary hover:text-text-primary z-10', 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"]}
|
package/dist/chunk-BS4PZPY6.js
DELETED
|
@@ -1,322 +0,0 @@
|
|
|
1
|
-
import { useMenuNavigation } from './chunk-NZHKNUGE.js';
|
|
2
|
-
import { Popover, PopoverTrigger, PopoverContent } from './chunk-ROQGBDET.js';
|
|
3
|
-
import { cn } from './chunk-RAS6HUEI.js';
|
|
4
|
-
import React, { useState, useMemo, useCallback, useEffect } from 'react';
|
|
5
|
-
import { ChevronRight, Check, Circle } from 'lucide-react';
|
|
6
|
-
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
7
|
-
|
|
8
|
-
var ITEM_CLASS = "menubar_item relative flex items-center gap-2 px-3 py-1.5 text-sm cursor-pointer rounded-sm transition-colors mx-1";
|
|
9
|
-
var MenuItems = React.memo(({ items, classNames, onItemClick, onClose }) => {
|
|
10
|
-
const [activeSubmenu, setActiveSubmenu] = useState(null);
|
|
11
|
-
const hasAnyIcon = useMemo(
|
|
12
|
-
() => items.some((item) => !item.separator && item.type !== "label" && (item.icon || item.type === "checkbox" || item.type === "radio")),
|
|
13
|
-
[items]
|
|
14
|
-
);
|
|
15
|
-
const enabledIndices = useMemo(
|
|
16
|
-
() => items.map((item, i) => !item.separator && item.type !== "label" && !item.disabled ? i : -1).filter((i) => i !== -1),
|
|
17
|
-
[items]
|
|
18
|
-
);
|
|
19
|
-
const onMenuSelect = useCallback(
|
|
20
|
-
(index) => {
|
|
21
|
-
const item = items[index];
|
|
22
|
-
if (!item || item.children && item.children.length > 0) return;
|
|
23
|
-
onItemClick(item);
|
|
24
|
-
},
|
|
25
|
-
[items, onItemClick]
|
|
26
|
-
);
|
|
27
|
-
const { highlightedIndex, handleKeyDown, highlightFirst } = useMenuNavigation({
|
|
28
|
-
enabledIndices,
|
|
29
|
-
isOpen: true,
|
|
30
|
-
onClose,
|
|
31
|
-
onSelect: onMenuSelect
|
|
32
|
-
});
|
|
33
|
-
useEffect(() => {
|
|
34
|
-
highlightFirst();
|
|
35
|
-
}, [highlightFirst]);
|
|
36
|
-
useEffect(() => {
|
|
37
|
-
const listener = (e) => {
|
|
38
|
-
handleKeyDown(e);
|
|
39
|
-
e.stopImmediatePropagation();
|
|
40
|
-
};
|
|
41
|
-
document.addEventListener("keydown", listener);
|
|
42
|
-
return () => document.removeEventListener("keydown", listener);
|
|
43
|
-
}, [handleKeyDown]);
|
|
44
|
-
return /* @__PURE__ */ jsx(Fragment, { children: items.map((item, idx) => {
|
|
45
|
-
if (item.separator) {
|
|
46
|
-
return /* @__PURE__ */ jsx(
|
|
47
|
-
"div",
|
|
48
|
-
{
|
|
49
|
-
"data-slot": "separator",
|
|
50
|
-
className: cn("menubar_separator h-px bg-border my-1", classNames?.separator),
|
|
51
|
-
role: "separator"
|
|
52
|
-
},
|
|
53
|
-
item.key || `separator-${idx}`
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
if (item.type === "label") {
|
|
57
|
-
return /* @__PURE__ */ jsx(
|
|
58
|
-
"div",
|
|
59
|
-
{
|
|
60
|
-
"data-slot": "label",
|
|
61
|
-
className: cn(
|
|
62
|
-
"menubar_label px-3 py-1.5 text-xs font-semibold text-text-secondary mx-1",
|
|
63
|
-
classNames?.label
|
|
64
|
-
),
|
|
65
|
-
role: "presentation",
|
|
66
|
-
children: item.label
|
|
67
|
-
},
|
|
68
|
-
item.key
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
const isCheckboxOrRadio = item.type === "checkbox" || item.type === "radio";
|
|
72
|
-
const hasChildren = item.children && item.children.length > 0;
|
|
73
|
-
const isFocused = highlightedIndex === idx;
|
|
74
|
-
if (hasChildren) {
|
|
75
|
-
return /* @__PURE__ */ jsxs(
|
|
76
|
-
Popover,
|
|
77
|
-
{
|
|
78
|
-
open: activeSubmenu === item.key,
|
|
79
|
-
onOpenChange: (open) => setActiveSubmenu(open ? item.key : null),
|
|
80
|
-
children: [
|
|
81
|
-
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
|
|
82
|
-
"div",
|
|
83
|
-
{
|
|
84
|
-
"data-slot": "item",
|
|
85
|
-
className: cn(
|
|
86
|
-
ITEM_CLASS,
|
|
87
|
-
item.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-surface focus-visible:bg-surface focus-visible:outline-none",
|
|
88
|
-
isFocused && !item.disabled && "bg-surface",
|
|
89
|
-
classNames?.item
|
|
90
|
-
),
|
|
91
|
-
role: "menuitem",
|
|
92
|
-
"aria-disabled": item.disabled,
|
|
93
|
-
"aria-haspopup": "menu",
|
|
94
|
-
tabIndex: item.disabled ? -1 : 0,
|
|
95
|
-
onMouseEnter: () => !item.disabled && setActiveSubmenu(item.key),
|
|
96
|
-
children: [
|
|
97
|
-
item.icon ? /* @__PURE__ */ jsx("span", { className: "w-4 h-4 shrink-0", children: item.icon }) : hasAnyIcon && /* @__PURE__ */ jsx("span", { className: "w-4 h-4 shrink-0" }),
|
|
98
|
-
/* @__PURE__ */ jsx("span", { className: "flex-1", children: item.label }),
|
|
99
|
-
/* @__PURE__ */ jsx(ChevronRight, { className: "w-4 h-4 ml-2 shrink-0" })
|
|
100
|
-
]
|
|
101
|
-
}
|
|
102
|
-
) }),
|
|
103
|
-
/* @__PURE__ */ jsx(
|
|
104
|
-
PopoverContent,
|
|
105
|
-
{
|
|
106
|
-
side: "right",
|
|
107
|
-
align: "start",
|
|
108
|
-
sideOffset: 4,
|
|
109
|
-
"data-slot": "submenu",
|
|
110
|
-
className: cn(
|
|
111
|
-
"menubar_submenu min-w-[200px] w-auto p-1 rounded-md",
|
|
112
|
-
classNames?.submenu
|
|
113
|
-
),
|
|
114
|
-
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
115
|
-
onCloseAutoFocus: (e) => e.preventDefault(),
|
|
116
|
-
children: /* @__PURE__ */ jsx(MenuItems, { items: item.children, classNames, onItemClick, onClose })
|
|
117
|
-
}
|
|
118
|
-
)
|
|
119
|
-
]
|
|
120
|
-
},
|
|
121
|
-
item.key
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
return /* @__PURE__ */ jsxs(
|
|
125
|
-
"div",
|
|
126
|
-
{
|
|
127
|
-
"data-slot": "item",
|
|
128
|
-
className: cn(
|
|
129
|
-
ITEM_CLASS,
|
|
130
|
-
item.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-surface focus-visible:bg-surface focus-visible:outline-none",
|
|
131
|
-
isFocused && !item.disabled && "bg-surface",
|
|
132
|
-
isCheckboxOrRadio && classNames?.checkboxItem,
|
|
133
|
-
item.type === "radio" && classNames?.radioItem,
|
|
134
|
-
classNames?.item
|
|
135
|
-
),
|
|
136
|
-
role: item.type === "checkbox" ? "menuitemcheckbox" : item.type === "radio" ? "menuitemradio" : "menuitem",
|
|
137
|
-
"aria-disabled": item.disabled,
|
|
138
|
-
"aria-checked": isCheckboxOrRadio ? item.checked : void 0,
|
|
139
|
-
tabIndex: item.disabled ? -1 : 0,
|
|
140
|
-
onClick: () => !item.disabled && onItemClick(item),
|
|
141
|
-
children: [
|
|
142
|
-
isCheckboxOrRadio && /* @__PURE__ */ jsx("span", { className: "w-4 h-4 shrink-0", children: item.checked && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
143
|
-
item.type === "checkbox" && /* @__PURE__ */ jsx(Check, { className: "w-4 h-4" }),
|
|
144
|
-
item.type === "radio" && /* @__PURE__ */ jsx(Circle, { className: "w-4 h-4 fill-current" })
|
|
145
|
-
] }) }),
|
|
146
|
-
!isCheckboxOrRadio && (item.icon ? /* @__PURE__ */ jsx("span", { className: "w-4 h-4 shrink-0", children: item.icon }) : hasAnyIcon && /* @__PURE__ */ jsx("span", { className: "w-4 h-4 shrink-0" })),
|
|
147
|
-
/* @__PURE__ */ jsx("span", { className: "flex-1", children: item.label }),
|
|
148
|
-
item.shortcut && /* @__PURE__ */ jsx(
|
|
149
|
-
"span",
|
|
150
|
-
{
|
|
151
|
-
"data-slot": "shortcut",
|
|
152
|
-
className: cn(
|
|
153
|
-
"menubar_shortcut text-xs text-text-secondary ml-auto",
|
|
154
|
-
classNames?.shortcut
|
|
155
|
-
),
|
|
156
|
-
children: item.shortcut
|
|
157
|
-
}
|
|
158
|
-
)
|
|
159
|
-
]
|
|
160
|
-
},
|
|
161
|
-
item.key
|
|
162
|
-
);
|
|
163
|
-
}) });
|
|
164
|
-
});
|
|
165
|
-
MenuItems.displayName = "MenuItems";
|
|
166
|
-
var Menubar = React.memo(({ menus, className, classNames, ref }) => {
|
|
167
|
-
const [activeMenu, setActiveMenu] = useState(null);
|
|
168
|
-
const [hoverMode, setHoverMode] = useState(false);
|
|
169
|
-
const handleMenuClick = useCallback((menuKey, disabled) => {
|
|
170
|
-
if (disabled) return;
|
|
171
|
-
setActiveMenu((prev) => prev === menuKey ? null : menuKey);
|
|
172
|
-
setHoverMode(true);
|
|
173
|
-
}, []);
|
|
174
|
-
const handleMenuHover = useCallback(
|
|
175
|
-
(menuKey, disabled) => {
|
|
176
|
-
if (disabled) return;
|
|
177
|
-
if (hoverMode && activeMenu !== null) {
|
|
178
|
-
setActiveMenu(menuKey);
|
|
179
|
-
}
|
|
180
|
-
},
|
|
181
|
-
[hoverMode, activeMenu]
|
|
182
|
-
);
|
|
183
|
-
const handleClose = useCallback(() => {
|
|
184
|
-
setActiveMenu(null);
|
|
185
|
-
setHoverMode(false);
|
|
186
|
-
}, []);
|
|
187
|
-
const handleItemClick = useCallback(
|
|
188
|
-
(item) => {
|
|
189
|
-
if (item.type === "checkbox") {
|
|
190
|
-
item.onCheckedChange?.(!item.checked);
|
|
191
|
-
} else if (item.type === "radio") {
|
|
192
|
-
item.onCheckedChange?.(true);
|
|
193
|
-
} else {
|
|
194
|
-
item.onClick?.();
|
|
195
|
-
}
|
|
196
|
-
if (item.type !== "checkbox" && item.type !== "radio") {
|
|
197
|
-
handleClose();
|
|
198
|
-
}
|
|
199
|
-
},
|
|
200
|
-
[handleClose]
|
|
201
|
-
);
|
|
202
|
-
useEffect(() => {
|
|
203
|
-
if (!activeMenu) return;
|
|
204
|
-
const handler = (e) => {
|
|
205
|
-
const currentIndex = menus.findIndex((m) => m.key === activeMenu);
|
|
206
|
-
if (e.key === "ArrowRight") {
|
|
207
|
-
e.preventDefault();
|
|
208
|
-
e.stopImmediatePropagation();
|
|
209
|
-
let next = (currentIndex + 1) % menus.length;
|
|
210
|
-
let attempts = 0;
|
|
211
|
-
while (attempts < menus.length && menus[next]?.disabled) {
|
|
212
|
-
next = (next + 1) % menus.length;
|
|
213
|
-
attempts++;
|
|
214
|
-
}
|
|
215
|
-
const nextMenu = menus[next];
|
|
216
|
-
if (attempts < menus.length && nextMenu && !nextMenu.disabled) {
|
|
217
|
-
setActiveMenu(nextMenu.key);
|
|
218
|
-
}
|
|
219
|
-
} else if (e.key === "ArrowLeft") {
|
|
220
|
-
e.preventDefault();
|
|
221
|
-
e.stopImmediatePropagation();
|
|
222
|
-
let prev = currentIndex - 1 < 0 ? menus.length - 1 : currentIndex - 1;
|
|
223
|
-
let attempts = 0;
|
|
224
|
-
while (attempts < menus.length && menus[prev]?.disabled) {
|
|
225
|
-
prev = prev - 1 < 0 ? menus.length - 1 : prev - 1;
|
|
226
|
-
attempts++;
|
|
227
|
-
}
|
|
228
|
-
const prevMenu = menus[prev];
|
|
229
|
-
if (attempts < menus.length && prevMenu && !prevMenu.disabled) {
|
|
230
|
-
setActiveMenu(prevMenu.key);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
};
|
|
234
|
-
document.addEventListener("keydown", handler);
|
|
235
|
-
return () => document.removeEventListener("keydown", handler);
|
|
236
|
-
}, [activeMenu, menus]);
|
|
237
|
-
return /* @__PURE__ */ jsx(
|
|
238
|
-
"div",
|
|
239
|
-
{
|
|
240
|
-
ref,
|
|
241
|
-
"data-slot": "root",
|
|
242
|
-
className: cn(
|
|
243
|
-
"menubar_root flex items-center gap-1 px-2 py-1 bg-background border-b border-border",
|
|
244
|
-
className,
|
|
245
|
-
classNames?.root
|
|
246
|
-
),
|
|
247
|
-
role: "menubar",
|
|
248
|
-
children: menus.map((menu) => /* @__PURE__ */ jsxs(
|
|
249
|
-
Popover,
|
|
250
|
-
{
|
|
251
|
-
open: activeMenu === menu.key,
|
|
252
|
-
onOpenChange: (open) => {
|
|
253
|
-
if (open) {
|
|
254
|
-
setActiveMenu(menu.key);
|
|
255
|
-
setHoverMode(true);
|
|
256
|
-
} else {
|
|
257
|
-
handleClose();
|
|
258
|
-
}
|
|
259
|
-
},
|
|
260
|
-
children: [
|
|
261
|
-
/* @__PURE__ */ jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
262
|
-
"button",
|
|
263
|
-
{
|
|
264
|
-
"data-slot": "trigger",
|
|
265
|
-
className: cn(
|
|
266
|
-
"menubar_trigger px-3 py-1.5 text-sm rounded-sm transition-colors",
|
|
267
|
-
menu.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-surface focus-visible:bg-surface focus-visible:outline-none",
|
|
268
|
-
activeMenu === menu.key && "bg-surface",
|
|
269
|
-
classNames?.trigger
|
|
270
|
-
),
|
|
271
|
-
role: "menuitem",
|
|
272
|
-
"aria-haspopup": "menu",
|
|
273
|
-
"aria-expanded": activeMenu === menu.key,
|
|
274
|
-
"aria-disabled": menu.disabled,
|
|
275
|
-
onClick: () => handleMenuClick(menu.key, menu.disabled),
|
|
276
|
-
onMouseEnter: () => handleMenuHover(menu.key, menu.disabled),
|
|
277
|
-
children: menu.label
|
|
278
|
-
}
|
|
279
|
-
) }),
|
|
280
|
-
/* @__PURE__ */ jsx(
|
|
281
|
-
PopoverContent,
|
|
282
|
-
{
|
|
283
|
-
side: "bottom",
|
|
284
|
-
align: "start",
|
|
285
|
-
sideOffset: 2,
|
|
286
|
-
"data-slot": "content",
|
|
287
|
-
className: cn(
|
|
288
|
-
"menubar_content min-w-[200px] w-auto p-1 rounded-md",
|
|
289
|
-
classNames?.content
|
|
290
|
-
),
|
|
291
|
-
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
292
|
-
onCloseAutoFocus: (e) => e.preventDefault(),
|
|
293
|
-
onPointerDownOutside: (e) => {
|
|
294
|
-
const target = e.target;
|
|
295
|
-
if (target.closest('[data-slot="root"]')) {
|
|
296
|
-
e.preventDefault();
|
|
297
|
-
}
|
|
298
|
-
},
|
|
299
|
-
children: /* @__PURE__ */ jsx(
|
|
300
|
-
MenuItems,
|
|
301
|
-
{
|
|
302
|
-
items: menu.items,
|
|
303
|
-
classNames,
|
|
304
|
-
onItemClick: handleItemClick,
|
|
305
|
-
onClose: handleClose
|
|
306
|
-
}
|
|
307
|
-
)
|
|
308
|
-
}
|
|
309
|
-
)
|
|
310
|
-
]
|
|
311
|
-
},
|
|
312
|
-
menu.key
|
|
313
|
-
))
|
|
314
|
-
}
|
|
315
|
-
);
|
|
316
|
-
});
|
|
317
|
-
Menubar.displayName = "Menubar";
|
|
318
|
-
var menubar_default = Menubar;
|
|
319
|
-
|
|
320
|
-
export { menubar_default };
|
|
321
|
-
//# sourceMappingURL=chunk-BS4PZPY6.js.map
|
|
322
|
-
//# sourceMappingURL=chunk-BS4PZPY6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/menubar/index.tsx"],"names":[],"mappings":"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","file":"chunk-BS4PZPY6.js","sourcesContent":["'use client'\n\nimport React, { useState, useCallback, useEffect, useMemo } from 'react'\n\nimport { ChevronRight, Check, Circle } from 'lucide-react'\n\nimport { useMenuNavigation } from '../hooks/useMenuNavigation'\nimport { Popover, PopoverTrigger, PopoverContent } from '../popover'\nimport { cn } from '../utils'\nimport type { MenubarProps, MenubarItem } from './types'\n\ninterface MenuItemsProps {\n items: MenubarItem[]\n classNames?: MenubarProps['classNames']\n onItemClick: (item: MenubarItem) => void\n onClose: () => void\n}\n\nconst ITEM_CLASS = 'menubar_item relative flex items-center gap-2 px-3 py-1.5 text-sm cursor-pointer rounded-sm transition-colors mx-1'\n\nconst MenuItems = React.memo<MenuItemsProps>(({ items, classNames, onItemClick, onClose }) => {\n const [activeSubmenu, setActiveSubmenu] = useState<string | null>(null)\n\n const hasAnyIcon = useMemo(\n () => items.some((item) => !item.separator && item.type !== 'label' && (item.icon || item.type === 'checkbox' || item.type === 'radio')),\n [items],\n )\n\n const enabledIndices = useMemo(\n () =>\n items\n .map((item, i) => (!item.separator && item.type !== 'label' && !item.disabled) ? i : -1)\n .filter((i) => i !== -1),\n [items],\n )\n\n const onMenuSelect = useCallback(\n (index: number) => {\n const item = items[index]\n if (!item || (item.children && item.children.length > 0)) return\n onItemClick(item)\n },\n [items, onItemClick],\n )\n\n const { highlightedIndex, handleKeyDown, highlightFirst } = useMenuNavigation({\n enabledIndices,\n isOpen: true,\n onClose,\n onSelect: onMenuSelect,\n })\n\n // Highlight first item on mount\n useEffect(() => {\n highlightFirst()\n }, [highlightFirst])\n\n // Document-level keyboard listener (content is in a portal)\n useEffect(() => {\n const listener = (e: KeyboardEvent) => {\n handleKeyDown(e)\n e.stopImmediatePropagation()\n }\n document.addEventListener('keydown', listener)\n return () => document.removeEventListener('keydown', listener)\n }, [handleKeyDown])\n\n return (\n <>\n {items.map((item, idx) => {\n if (item.separator) {\n return (\n <div\n key={item.key || `separator-${idx}`}\n data-slot=\"separator\"\n className={cn('menubar_separator h-px bg-border my-1', classNames?.separator)}\n role=\"separator\"\n />\n )\n }\n\n if (item.type === 'label') {\n return (\n <div\n key={item.key}\n data-slot=\"label\"\n className={cn(\n 'menubar_label px-3 py-1.5 text-xs font-semibold text-text-secondary mx-1',\n classNames?.label,\n )}\n role=\"presentation\"\n >\n {item.label}\n </div>\n )\n }\n\n const isCheckboxOrRadio = item.type === 'checkbox' || item.type === 'radio'\n const hasChildren = item.children && item.children.length > 0\n const isFocused = highlightedIndex === idx\n\n if (hasChildren) {\n return (\n <Popover\n key={item.key}\n open={activeSubmenu === item.key}\n onOpenChange={(open) => setActiveSubmenu(open ? item.key : null)}\n >\n <PopoverTrigger asChild>\n <div\n data-slot=\"item\"\n className={cn(\n ITEM_CLASS,\n item.disabled\n ? 'opacity-50 cursor-not-allowed'\n : 'hover:bg-surface focus-visible:bg-surface focus-visible:outline-none',\n isFocused && !item.disabled && 'bg-surface',\n classNames?.item,\n )}\n role=\"menuitem\"\n aria-disabled={item.disabled}\n aria-haspopup=\"menu\"\n tabIndex={item.disabled ? -1 : 0}\n onMouseEnter={() => !item.disabled && setActiveSubmenu(item.key)}\n >\n {item.icon ? <span className=\"w-4 h-4 shrink-0\">{item.icon}</span> : hasAnyIcon && <span className=\"w-4 h-4 shrink-0\" />}\n <span className=\"flex-1\">{item.label}</span>\n <ChevronRight className=\"w-4 h-4 ml-2 shrink-0\" />\n </div>\n </PopoverTrigger>\n <PopoverContent\n side=\"right\"\n align=\"start\"\n sideOffset={4}\n data-slot=\"submenu\"\n className={cn(\n 'menubar_submenu min-w-[200px] w-auto p-1 rounded-md',\n classNames?.submenu,\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n >\n <MenuItems items={item.children!} classNames={classNames} onItemClick={onItemClick} onClose={onClose} />\n </PopoverContent>\n </Popover>\n )\n }\n\n return (\n <div\n key={item.key}\n data-slot=\"item\"\n className={cn(\n ITEM_CLASS,\n item.disabled\n ? 'opacity-50 cursor-not-allowed'\n : 'hover:bg-surface focus-visible:bg-surface focus-visible:outline-none',\n isFocused && !item.disabled && 'bg-surface',\n isCheckboxOrRadio && classNames?.checkboxItem,\n item.type === 'radio' && classNames?.radioItem,\n classNames?.item,\n )}\n role={\n item.type === 'checkbox'\n ? 'menuitemcheckbox'\n : item.type === 'radio'\n ? 'menuitemradio'\n : 'menuitem'\n }\n aria-disabled={item.disabled}\n aria-checked={isCheckboxOrRadio ? item.checked : undefined}\n tabIndex={item.disabled ? -1 : 0}\n onClick={() => !item.disabled && onItemClick(item)}\n >\n {isCheckboxOrRadio && (\n <span className=\"w-4 h-4 shrink-0\">\n {item.checked && (\n <>\n {item.type === 'checkbox' && <Check className=\"w-4 h-4\" />}\n {item.type === 'radio' && <Circle className=\"w-4 h-4 fill-current\" />}\n </>\n )}\n </span>\n )}\n {!isCheckboxOrRadio && (\n item.icon\n ? <span className=\"w-4 h-4 shrink-0\">{item.icon}</span>\n : hasAnyIcon && <span className=\"w-4 h-4 shrink-0\" />\n )}\n <span className=\"flex-1\">{item.label}</span>\n {item.shortcut && (\n <span\n data-slot=\"shortcut\"\n className={cn(\n 'menubar_shortcut text-xs text-text-secondary ml-auto',\n classNames?.shortcut,\n )}\n >\n {item.shortcut}\n </span>\n )}\n </div>\n )\n })}\n </>\n )\n})\n\nMenuItems.displayName = 'MenuItems'\n\nconst Menubar = React.memo<MenubarProps>(({ menus, className, classNames, ref }) => {\n const [activeMenu, setActiveMenu] = useState<string | null>(null)\n const [hoverMode, setHoverMode] = useState(false)\n\n const handleMenuClick = useCallback((menuKey: string, disabled?: boolean) => {\n if (disabled) return\n setActiveMenu((prev) => (prev === menuKey ? null : menuKey))\n setHoverMode(true)\n }, [])\n\n const handleMenuHover = useCallback(\n (menuKey: string, disabled?: boolean) => {\n if (disabled) return\n if (hoverMode && activeMenu !== null) {\n setActiveMenu(menuKey)\n }\n },\n [hoverMode, activeMenu],\n )\n\n const handleClose = useCallback(() => {\n setActiveMenu(null)\n setHoverMode(false)\n }, [])\n\n const handleItemClick = useCallback(\n (item: MenubarItem) => {\n if (item.type === 'checkbox') {\n item.onCheckedChange?.(!item.checked)\n } else if (item.type === 'radio') {\n item.onCheckedChange?.(true)\n } else {\n item.onClick?.()\n }\n if (item.type !== 'checkbox' && item.type !== 'radio') {\n handleClose()\n }\n },\n [handleClose],\n )\n\n // Top-level menu switching: ArrowLeft/Right and Escape\n useEffect(() => {\n if (!activeMenu) return\n\n const handler = (e: KeyboardEvent) => {\n const currentIndex = menus.findIndex((m) => m.key === activeMenu)\n\n if (e.key === 'ArrowRight') {\n e.preventDefault()\n e.stopImmediatePropagation()\n let next = (currentIndex + 1) % menus.length\n let attempts = 0\n while (attempts < menus.length && menus[next]?.disabled) {\n next = (next + 1) % menus.length\n attempts++\n }\n const nextMenu = menus[next]\n if (attempts < menus.length && nextMenu && !nextMenu.disabled) {\n setActiveMenu(nextMenu.key)\n }\n } else if (e.key === 'ArrowLeft') {\n e.preventDefault()\n e.stopImmediatePropagation()\n let prev = currentIndex - 1 < 0 ? menus.length - 1 : currentIndex - 1\n let attempts = 0\n while (attempts < menus.length && menus[prev]?.disabled) {\n prev = prev - 1 < 0 ? menus.length - 1 : prev - 1\n attempts++\n }\n const prevMenu = menus[prev]\n if (attempts < menus.length && prevMenu && !prevMenu.disabled) {\n setActiveMenu(prevMenu.key)\n }\n }\n }\n\n document.addEventListener('keydown', handler)\n return () => document.removeEventListener('keydown', handler)\n }, [activeMenu, menus])\n\n return (\n <div\n ref={ref}\n data-slot=\"root\"\n className={cn(\n 'menubar_root flex items-center gap-1 px-2 py-1 bg-background border-b border-border',\n className,\n classNames?.root,\n )}\n role=\"menubar\"\n >\n {menus.map((menu) => (\n <Popover\n key={menu.key}\n open={activeMenu === menu.key}\n onOpenChange={(open) => {\n if (open) {\n setActiveMenu(menu.key)\n setHoverMode(true)\n } else {\n handleClose()\n }\n }}\n >\n <PopoverTrigger asChild>\n <button\n data-slot=\"trigger\"\n className={cn(\n 'menubar_trigger px-3 py-1.5 text-sm rounded-sm transition-colors',\n menu.disabled\n ? 'opacity-50 cursor-not-allowed'\n : 'hover:bg-surface focus-visible:bg-surface focus-visible:outline-none',\n activeMenu === menu.key && 'bg-surface',\n classNames?.trigger,\n )}\n role=\"menuitem\"\n aria-haspopup=\"menu\"\n aria-expanded={activeMenu === menu.key}\n aria-disabled={menu.disabled}\n onClick={() => handleMenuClick(menu.key, menu.disabled)}\n onMouseEnter={() => handleMenuHover(menu.key, menu.disabled)}\n >\n {menu.label}\n </button>\n </PopoverTrigger>\n <PopoverContent\n side=\"bottom\"\n align=\"start\"\n sideOffset={2}\n data-slot=\"content\"\n className={cn(\n 'menubar_content min-w-[200px] w-auto p-1 rounded-md',\n classNames?.content,\n )}\n onOpenAutoFocus={(e) => e.preventDefault()}\n onCloseAutoFocus={(e) => e.preventDefault()}\n onPointerDownOutside={(e) => {\n const target = e.target as HTMLElement\n if (target.closest('[data-slot=\"root\"]')) {\n e.preventDefault()\n }\n }}\n >\n <MenuItems\n items={menu.items}\n classNames={classNames}\n onItemClick={handleItemClick}\n onClose={handleClose}\n />\n </PopoverContent>\n </Popover>\n ))}\n </div>\n )\n})\n\nMenubar.displayName = 'Menubar'\n\nexport type * from './types'\nexport default Menubar\n"]}
|