kz-design-system 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/button.d.mts +1 -1
  2. package/dist/button.d.ts +1 -1
  3. package/dist/button.js +6 -2
  4. package/dist/button.js.map +1 -1
  5. package/dist/button.mjs +11 -3
  6. package/dist/button.mjs.map +1 -1
  7. package/dist/color-picker.js +6 -2
  8. package/dist/color-picker.js.map +1 -1
  9. package/dist/color-picker.mjs +11 -3
  10. package/dist/color-picker.mjs.map +1 -1
  11. package/dist/date-range-picker.js +6 -2
  12. package/dist/date-range-picker.js.map +1 -1
  13. package/dist/date-range-picker.mjs +11 -3
  14. package/dist/date-range-picker.mjs.map +1 -1
  15. package/dist/date-time-picker.js +6 -2
  16. package/dist/date-time-picker.js.map +1 -1
  17. package/dist/date-time-picker.mjs +11 -3
  18. package/dist/date-time-picker.mjs.map +1 -1
  19. package/dist/dropdown.js +6 -2
  20. package/dist/dropdown.js.map +1 -1
  21. package/dist/dropdown.mjs +11 -3
  22. package/dist/dropdown.mjs.map +1 -1
  23. package/dist/error-page.js +5 -1
  24. package/dist/error-page.js.map +1 -1
  25. package/dist/error-page.mjs +10 -2
  26. package/dist/error-page.mjs.map +1 -1
  27. package/dist/file-uploader.js +5 -1
  28. package/dist/file-uploader.js.map +1 -1
  29. package/dist/file-uploader.mjs +10 -2
  30. package/dist/file-uploader.mjs.map +1 -1
  31. package/dist/icon-picker.d.mts +1 -1
  32. package/dist/icon-picker.d.ts +1 -1
  33. package/dist/icon-picker.js +10 -2
  34. package/dist/icon-picker.js.map +1 -1
  35. package/dist/icon-picker.mjs +15 -3
  36. package/dist/icon-picker.mjs.map +1 -1
  37. package/dist/{icon-registry-YZFYW-mt.d.mts → icon-registry-DY5NSKnE.d.mts} +5 -1
  38. package/dist/{icon-registry-YZFYW-mt.d.ts → icon-registry-DY5NSKnE.d.ts} +5 -1
  39. package/dist/icon.d.mts +2 -2
  40. package/dist/icon.d.ts +2 -2
  41. package/dist/icon.js +9 -1
  42. package/dist/icon.js.map +1 -1
  43. package/dist/icon.mjs +14 -2
  44. package/dist/icon.mjs.map +1 -1
  45. package/dist/index.d.mts +2 -1
  46. package/dist/index.d.ts +2 -1
  47. package/dist/index.js +994 -693
  48. package/dist/index.js.map +1 -1
  49. package/dist/index.mjs +999 -695
  50. package/dist/index.mjs.map +1 -1
  51. package/dist/modal.js +5 -1
  52. package/dist/modal.js.map +1 -1
  53. package/dist/modal.mjs +10 -2
  54. package/dist/modal.mjs.map +1 -1
  55. package/dist/number-input.js +6 -2
  56. package/dist/number-input.js.map +1 -1
  57. package/dist/number-input.mjs +11 -3
  58. package/dist/number-input.mjs.map +1 -1
  59. package/dist/pagination.js +6 -2
  60. package/dist/pagination.js.map +1 -1
  61. package/dist/pagination.mjs +11 -3
  62. package/dist/pagination.mjs.map +1 -1
  63. package/dist/qr-renderer.js +6 -2
  64. package/dist/qr-renderer.js.map +1 -1
  65. package/dist/qr-renderer.mjs +11 -3
  66. package/dist/qr-renderer.mjs.map +1 -1
  67. package/dist/range-slider.d.mts +38 -0
  68. package/dist/range-slider.d.ts +38 -0
  69. package/dist/range-slider.js +466 -0
  70. package/dist/range-slider.js.map +1 -0
  71. package/dist/range-slider.mjs +426 -0
  72. package/dist/range-slider.mjs.map +1 -0
  73. package/dist/select.js +5 -1
  74. package/dist/select.js.map +1 -1
  75. package/dist/select.mjs +10 -2
  76. package/dist/select.mjs.map +1 -1
  77. package/dist/sidemenu.d.mts +1 -1
  78. package/dist/sidemenu.d.ts +1 -1
  79. package/dist/sidemenu.js +5 -1
  80. package/dist/sidemenu.js.map +1 -1
  81. package/dist/sidemenu.mjs +10 -2
  82. package/dist/sidemenu.mjs.map +1 -1
  83. package/dist/sidepanel.js +5 -1
  84. package/dist/sidepanel.js.map +1 -1
  85. package/dist/sidepanel.mjs +10 -2
  86. package/dist/sidepanel.mjs.map +1 -1
  87. package/dist/sql-editor.js +6 -2
  88. package/dist/sql-editor.js.map +1 -1
  89. package/dist/sql-editor.mjs +11 -3
  90. package/dist/sql-editor.mjs.map +1 -1
  91. package/dist/styles.css +2 -2
  92. package/dist/table.d.mts +14 -0
  93. package/dist/table.d.ts +14 -0
  94. package/dist/table.js +41 -21
  95. package/dist/table.js.map +1 -1
  96. package/dist/table.mjs +46 -22
  97. package/dist/table.mjs.map +1 -1
  98. package/dist/tabs.js +5 -1
  99. package/dist/tabs.js.map +1 -1
  100. package/dist/tabs.mjs +10 -2
  101. package/dist/tabs.mjs.map +1 -1
  102. package/dist/text-area.js +5 -1
  103. package/dist/text-area.js.map +1 -1
  104. package/dist/text-area.mjs +10 -2
  105. package/dist/text-area.mjs.map +1 -1
  106. package/dist/text-input.js +5 -1
  107. package/dist/text-input.js.map +1 -1
  108. package/dist/text-input.mjs +10 -2
  109. package/dist/text-input.mjs.map +1 -1
  110. package/dist/toast.js +5 -1
  111. package/dist/toast.js.map +1 -1
  112. package/dist/toast.mjs +10 -2
  113. package/dist/toast.mjs.map +1 -1
  114. package/dist/toggle-button.js +6 -2
  115. package/dist/toggle-button.js.map +1 -1
  116. package/dist/toggle-button.mjs +11 -3
  117. package/dist/toggle-button.mjs.map +1 -1
  118. package/package.json +7 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/date-range-picker/index.ts","../src/components/date-range-picker/DateRangePicker.tsx","../src/utils/cn.ts","../src/components/button/Button.tsx","../src/components/button/button.variants.ts","../src/icon/icon-sizes.ts","../src/icon/Icon.tsx","../src/icon/icon-registry.tsx","../src/components/typography/Typography.tsx","../src/components/typography/typography-variants.ts","../src/components/date-time-picker/Calendar.tsx"],"sourcesContent":["export { DateRangePicker } from \"./DateRangePicker\";\nexport type { DateRangePickerProps, DateRange } from \"./DateRangePicker\";\n","import * as React from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { cn } from \"../../utils/cn\";\nimport {\n TextInputVariant,\n TextInputSize,\n TextInputState,\n ButtonVariant,\n ButtonSize,\n} from \"../../constants/enum\";\nimport { Button } from \"../button\";\nimport { Typography } from \"../typography\";\nimport { TypographyVariantEnum } from \"../typography/typography-variants\";\nimport { Icon, IconName } from \"../../icon\";\nimport { Calendar } from \"../date-time-picker/Calendar\";\n\nexport interface DateRange {\n start: Date | undefined;\n end: Date | undefined;\n}\n\nexport interface DateRangePickerProps {\n /** Controlled value. Omit for uncontrolled mode. */\n value?: DateRange | null;\n /** Fires when the range changes. */\n onChange?: (value: DateRange | undefined) => void;\n /** Initial value for uncontrolled mode. */\n defaultValue?: DateRange;\n\n minDate?: Date;\n maxDate?: Date;\n\n placeholder?: string;\n disabled?: boolean;\n\n size?: TextInputSize;\n variant?: TextInputVariant;\n state?: TextInputState;\n\n errorText?: string;\n successText?: string;\n warningText?: string;\n\n label?: string;\n helperText?: string;\n description?: string;\n\n showTodayButton?: boolean;\n showClearButton?: boolean;\n\n className?: string;\n inputClassName?: string;\n}\n\n/* ── Formatting / parsing helpers ── */\n\nfunction formatDate(date: Date): string {\n const m = (date.getMonth() + 1).toString().padStart(2, \"0\");\n const d = date.getDate().toString().padStart(2, \"0\");\n const y = date.getFullYear();\n return `${m}/${d}/${y}`;\n}\n\nfunction formatRange(range: DateRange): string {\n if (range.start == null && range.end == null) return \"\";\n if (range.start != null && range.end == null)\n return `${formatDate(range.start)} – ...`;\n if (range.start != null && range.end != null)\n return `${formatDate(range.start)} – ${formatDate(range.end)}`;\n return \"\";\n}\n\nfunction parseDate(raw: string): Date | null {\n const match = raw.trim().match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/);\n if (match == null) return null;\n const d = new Date(\n parseInt(match[3]),\n parseInt(match[1]) - 1,\n parseInt(match[2])\n );\n if (isNaN(d.getTime())) return null;\n return d;\n}\n\nfunction parseRangeInput(raw: string): DateRange | null {\n const trimmed = raw.trim();\n if (trimmed === \"\") return null;\n\n // Try \"MM/DD/YYYY – MM/DD/YYYY\" or \"MM/DD/YYYY - MM/DD/YYYY\"\n const parts = trimmed.split(/\\s*[–-]\\s*/);\n if (parts.length !== 2) return null;\n\n const start = parseDate(parts[0]);\n const end = parseDate(parts[1]);\n if (start == null || end == null) return null;\n if (start > end) return null;\n\n return { start, end };\n}\n\n/* ── Component ── */\n\nconst DateRangePicker = React.forwardRef<\n HTMLInputElement,\n DateRangePickerProps\n>(\n (\n {\n value: valueProp,\n onChange,\n defaultValue,\n minDate,\n maxDate,\n placeholder = \"Start date – End date\",\n disabled = false,\n size = TextInputSize.Md,\n variant = TextInputVariant.Default,\n state = TextInputState.Default,\n errorText,\n successText,\n warningText,\n label,\n helperText,\n description,\n showTodayButton = true,\n showClearButton = true,\n className,\n inputClassName,\n },\n ref\n ) => {\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = React.useState<\n DateRange | undefined\n >(defaultValue);\n\n const value: DateRange | undefined = isControlled\n ? valueProp === null\n ? undefined\n : valueProp\n : internalValue;\n\n const fireChange = React.useCallback(\n (next: DateRange | undefined) => {\n if (!isControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const [open, setOpen] = React.useState(false);\n const [selectingEnd, setSelectingEnd] = React.useState(false);\n const [hoverDate, setHoverDate] = React.useState<Date | null>(null);\n\n // Pending start (before end is picked)\n const [pendingStart, setPendingStart] = React.useState<Date | undefined>(\n undefined\n );\n\n const [inputValue, setInputValue] = React.useState(\n value != null ? formatRange(value) : \"\"\n );\n\n React.useEffect(() => {\n if (!selectingEnd) {\n setInputValue(value != null ? formatRange(value) : \"\");\n }\n }, [value, selectingEnd]);\n\n // Left calendar shows month of start date or current month\n const [leftMonth, setLeftMonth] = React.useState(\n () => value?.start ?? defaultValue?.start ?? new Date()\n );\n\n // Right calendar is always left + 1 month\n const rightMonth = new Date(\n leftMonth.getFullYear(),\n leftMonth.getMonth() + 1,\n 1\n );\n\n const handlePrevMonth = React.useCallback(() => {\n setLeftMonth(\n (prev) => new Date(prev.getFullYear(), prev.getMonth() - 1, 1)\n );\n }, []);\n\n const handleNextMonth = React.useCallback(() => {\n setLeftMonth(\n (prev) => new Date(prev.getFullYear(), prev.getMonth() + 1, 1)\n );\n }, []);\n\n const handleDateSelect = (date: Date) => {\n if (!selectingEnd) {\n // First click: set start\n setPendingStart(date);\n setSelectingEnd(true);\n setHoverDate(null);\n // Show partial range in input\n setInputValue(`${formatDate(date)} – ...`);\n } else {\n // Second click: set end\n const start = pendingStart!;\n if (date < start) {\n // Clicked before start — treat as new start\n setPendingStart(date);\n setInputValue(`${formatDate(date)} – ...`);\n return;\n }\n const range: DateRange = { start, end: date };\n fireChange(range);\n setSelectingEnd(false);\n setPendingStart(undefined);\n setHoverDate(null);\n setOpen(false);\n }\n };\n\n const handleHover = (date: Date | null) => {\n if (selectingEnd) {\n setHoverDate(date);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n };\n\n const handleInputBlur = () => {\n if (inputValue.trim() === \"\") {\n fireChange(undefined);\n setSelectingEnd(false);\n setPendingStart(undefined);\n return;\n }\n const parsed = parseRangeInput(inputValue);\n if (parsed != null) {\n fireChange(parsed);\n setSelectingEnd(false);\n setPendingStart(undefined);\n } else {\n setInputValue(value != null ? formatRange(value) : \"\");\n }\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n handleInputBlur();\n setOpen(false);\n }\n if (e.key === \"Escape\") {\n setSelectingEnd(false);\n setPendingStart(undefined);\n setHoverDate(null);\n setOpen(false);\n }\n };\n\n const handleToday = () => {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n fireChange({ start: now, end: now });\n setSelectingEnd(false);\n setPendingStart(undefined);\n setHoverDate(null);\n setOpen(false);\n };\n\n const handleClear = () => {\n fireChange(undefined);\n setSelectingEnd(false);\n setPendingStart(undefined);\n setHoverDate(null);\n setOpen(false);\n };\n\n // The displayed range in the calendars\n const displayStart = selectingEnd ? pendingStart : value?.start;\n const displayEnd = selectingEnd ? undefined : value?.end;\n\n const stateMessage =\n state === TextInputState.Error\n ? errorText\n : state === TextInputState.Success\n ? successText\n : state === TextInputState.Warning\n ? warningText\n : undefined;\n\n const rootClass = cn(\"kz-date-picker-root\", className);\n\n const wrapperClass = cn(\n \"kz-date-picker-wrapper\",\n `kz-date-picker-wrapper--${variant}`,\n `kz-date-picker-wrapper--${size}`,\n state !== TextInputState.Default && `kz-date-picker-wrapper--${state}`,\n open && \"kz-date-picker-wrapper--open\"\n );\n\n const inputClass = cn(\n \"kz-date-picker-input\",\n `kz-date-picker-input--${size}`,\n inputClassName\n );\n\n const iconSize = size === TextInputSize.Sm ? 14 : 16;\n\n return (\n <div className={rootClass}>\n {label != null && label !== \"\" && (\n <label className=\"kz-date-picker-label\">\n <Typography variant={TypographyVariantEnum.Label}>\n {label}\n </Typography>\n </label>\n )}\n\n {description != null && description !== \"\" && (\n <Typography variant={TypographyVariantEnum.Caption}>\n {description}\n </Typography>\n )}\n\n <Popover.Root\n open={open}\n onOpenChange={(nextOpen) => {\n if (!nextOpen) {\n // Closing — reset selection state if mid-selection\n setSelectingEnd(false);\n setPendingStart(undefined);\n setHoverDate(null);\n }\n setOpen(nextOpen);\n }}\n >\n <Popover.Trigger asChild disabled={disabled}>\n <div className={wrapperClass}>\n <span className=\"kz-date-picker-icon\">\n <Icon name={IconName.Calendar} size={iconSize} />\n </span>\n <input\n ref={ref}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n className={inputClass}\n aria-invalid={state === TextInputState.Error}\n aria-describedby={\n stateMessage != null\n ? \"date-range-picker-message\"\n : helperText != null\n ? \"date-range-picker-helper\"\n : undefined\n }\n />\n <button\n type=\"button\"\n className=\"kz-date-picker-toggle\"\n tabIndex={-1}\n aria-label=\"Toggle calendar\"\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n setOpen((prev) => !prev);\n }}\n >\n <Icon name={IconName.ChevronDown} size={iconSize} />\n </button>\n </div>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n className=\"kz-date-picker-popover\"\n sideOffset={4}\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className=\"kz-date-range-picker-calendars\">\n <Calendar\n onSelect={handleDateSelect}\n selectedStart={displayStart}\n selectedEnd={displayEnd}\n hoverDate={hoverDate ?? undefined}\n onHover={handleHover}\n minDate={minDate}\n maxDate={maxDate}\n viewMonth={leftMonth}\n onViewMonthChange={handlePrevMonth}\n hideNext\n />\n <div className=\"kz-date-range-picker-divider\" />\n <Calendar\n onSelect={handleDateSelect}\n selectedStart={displayStart}\n selectedEnd={displayEnd}\n hoverDate={hoverDate ?? undefined}\n onHover={handleHover}\n minDate={minDate}\n maxDate={maxDate}\n viewMonth={rightMonth}\n onViewMonthChange={handleNextMonth}\n hidePrev\n />\n </div>\n\n {(showTodayButton || showClearButton) && (\n <div className=\"kz-date-picker-footer\">\n {showTodayButton && (\n <Button\n variant={ButtonVariant.Ghost}\n size={ButtonSize.Sm}\n onClick={handleToday}\n >\n Today\n </Button>\n )}\n {showClearButton && (\n <Button\n variant={ButtonVariant.Primary}\n size={ButtonSize.Sm}\n onClick={handleClear}\n >\n Clear\n </Button>\n )}\n </div>\n )}\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n\n {stateMessage != null && stateMessage !== \"\" && (\n <Typography\n id=\"date-range-picker-message\"\n variant={\n state === TextInputState.Error\n ? TypographyVariantEnum.Error\n : state === TextInputState.Success\n ? TypographyVariantEnum.Success\n : TypographyVariantEnum.Warning\n }\n >\n {stateMessage}\n </Typography>\n )}\n\n {helperText != null &&\n helperText !== \"\" &&\n state === TextInputState.Default && (\n <Typography\n id=\"date-range-picker-helper\"\n variant={TypographyVariantEnum.Caption}\n >\n {helperText}\n </Typography>\n )}\n </div>\n );\n }\n);\n\nDateRangePicker.displayName = \"DateRangePicker\";\n\nexport { DateRangePicker };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ButtonVariant,\n ButtonSize,\n ButtonStatus,\n ButtonType,\n ButtonAspectRatio,\n} from \"../../constants/enum\";\nimport { buttonVariants, type ButtonVariants } from \"./button.variants\";\nimport { Loader2 } from \"lucide-react\";\nimport { iconSize } from \"../../icon/icon-sizes\";\nimport { cn } from \"../../utils/cn\";\nimport { Icon, type IconProps } from \"../../icon/Icon\";\n\nexport interface ButtonProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\" | \"onClick\"\n> {\n variant: ButtonVariant;\n size: ButtonSize;\n status?: ButtonStatus;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n asChild?: boolean;\n children: React.ReactNode;\n type?: ButtonType;\n loading?: boolean;\n aspectRatio?: ButtonAspectRatio;\n leftIcon?: IconProps;\n rightIcon?: IconProps;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n status,\n onClick,\n asChild = false,\n children,\n type = ButtonType.Button,\n loading = false,\n aspectRatio = ButtonAspectRatio.Auto,\n disabled,\n leftIcon,\n rightIcon,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const isDisabled = disabled || loading;\n\n const buttonClassName = cn(\n buttonVariants({ variant, size, status }),\n loading && \"opacity-[var(--kz-component-button-loading-opacity,0.8)]\",\n aspectRatio === ButtonAspectRatio.Square && \"kz-button--aspect-1-1\",\n className\n );\n\n if (asChild) {\n return (\n <Comp\n ref={ref}\n type={asChild ? undefined : type}\n className={buttonClassName}\n onClick={onClick}\n disabled={isDisabled}\n aria-busy={loading}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n\n return (\n <Comp\n ref={ref}\n type={type}\n className={buttonClassName}\n onClick={onClick}\n disabled={isDisabled}\n aria-busy={loading}\n {...props}\n >\n {loading && (\n <Loader2\n className=\"kz-button-spinner\"\n size={iconSize.md}\n color=\"currentColor\"\n />\n )}\n {leftIcon && <Icon {...leftIcon} />}\n {children}\n {rightIcon && <Icon {...rightIcon} />}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\nexport type { ButtonVariants };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { ButtonVariant, ButtonSize } from \"../../constants/enum\";\n\nconst base = [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium\",\n \"transition-all duration-150 ease-out\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--kz-color-border-focus)]\",\n \"disabled:pointer-events-none disabled:opacity-[var(--kz-component-button-disabled-opacity,0.5)]\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n].join(\" \");\n\nexport const buttonVariants = cva(base, {\n variants: {\n variant: {\n primary: [\n \"bg-[var(--kz-component-button-secondary-bg)]\",\n \"text-[var(--kz-component-button-secondary-text)]\",\n \"rounded-[var(--kz-component-button-radius,8px)]\",\n \"[border:var(--kz-component-button-secondary-border,none)]\",\n \"[box-shadow:var(--kz-component-button-secondary-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-secondary-bg-hover)]\",\n \"hover:[box-shadow:var(--kz-component-button-secondary-shadow-hover,var(--kz-component-button-secondary-shadow,none))]\",\n \"active:bg-[var(--kz-component-button-secondary-bg-active)]\",\n ].join(\" \"),\n ghost: [\n \"bg-[var(--kz-component-button-ghost-bg)]\",\n \"text-[var(--kz-component-button-ghost-text)]\",\n \"rounded-[var(--kz-component-button-radius,8px)]\",\n \"border border-transparent\",\n \"[box-shadow:none]\",\n \"hover:bg-[var(--kz-component-button-ghost-bg-hover,transparent)]\",\n \"active:opacity-80\",\n ].join(\" \"),\n container: [\n \"bg-[var(--kz-component-button-container-bg)]\",\n \"text-[var(--kz-component-button-container-text)]\",\n \"border border-[var(--kz-component-button-container-border)]\",\n \"rounded-[var(--kz-component-button-radius,8px)]\",\n \"[box-shadow:var(--kz-component-button-container-shadow)]\",\n \"hover:bg-[var(--kz-component-button-ghost-bg-hover,transparent)]\",\n \"hover:[box-shadow:var(--kz-component-button-container-shadow-hover)]\",\n ].join(\" \"),\n },\n status: {\n default: \"\",\n brand: [\n \"bg-[var(--kz-component-button-brand-bg)]\",\n \"text-[var(--kz-component-button-brand-text)]\",\n \"[box-shadow:var(--kz-component-button-brand-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-brand-bg-hover,var(--kz-component-button-brand-bg))]\",\n \"hover:[box-shadow:var(--kz-component-button-brand-shadow-hover,var(--kz-component-button-brand-shadow,none))]\",\n \"active:!bg-[var(--kz-component-button-brand-bg-hover,var(--kz-component-button-brand-bg))]\",\n ].join(\" \"),\n success: [\n \"bg-[var(--kz-component-button-success-bg)]\",\n \"text-[var(--kz-component-button-success-text)]\",\n \"[box-shadow:var(--kz-component-button-success-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-success-bg-hover,var(--kz-component-button-success-bg))]\",\n \"hover:[box-shadow:var(--kz-component-button-success-shadow-hover,var(--kz-component-button-success-shadow,none))]\",\n \"active:!bg-[var(--kz-component-button-success-bg-hover,var(--kz-component-button-success-bg))]\",\n ].join(\" \"),\n warning: [\n \"bg-[var(--kz-component-button-warning-bg)]\",\n \"text-[var(--kz-component-button-warning-text)]\",\n \"[box-shadow:var(--kz-component-button-warning-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-warning-bg-hover,var(--kz-component-button-warning-bg))]\",\n \"hover:[box-shadow:var(--kz-component-button-warning-shadow-hover,var(--kz-component-button-warning-shadow,none))]\",\n \"active:!bg-[var(--kz-component-button-warning-bg-hover,var(--kz-component-button-warning-bg))]\",\n ].join(\" \"),\n error: [\n \"bg-[var(--kz-component-button-error-bg)]\",\n \"text-[var(--kz-component-button-error-text)]\",\n \"[box-shadow:var(--kz-component-button-error-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-error-bg-hover,var(--kz-component-button-error-bg))]\",\n \"hover:[box-shadow:var(--kz-component-button-error-shadow-hover,var(--kz-component-button-error-shadow,none))]\",\n \"active:!bg-[var(--kz-component-button-error-bg-hover,var(--kz-component-button-error-bg))]\",\n ].join(\" \"),\n info: [\n \"bg-[var(--kz-component-button-info-bg)]\",\n \"text-[var(--kz-component-button-info-text)]\",\n \"[box-shadow:var(--kz-component-button-info-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-info-bg-hover,var(--kz-component-button-info-bg))]\",\n \"hover:[box-shadow:var(--kz-component-button-info-shadow-hover,var(--kz-component-button-info-shadow,none))]\",\n \"active:!bg-[var(--kz-component-button-info-bg-hover,var(--kz-component-button-info-bg))]\",\n ].join(\" \"),\n },\n size: {\n sm: [\n \"h-[var(--kz-component-button-height-sm,2rem)]\",\n \"px-[var(--kz-component-button-px-sm,0.75rem)]\",\n \"text-[length:var(--kz-component-button-text-sm,0.875rem)]\",\n \"[&_svg]:size-[var(--kz-component-button-icon-sm,1rem)]\",\n ].join(\" \"),\n md: [\n \"h-[var(--kz-component-button-height-md,2.5rem)]\",\n \"px-[var(--kz-component-button-px-md,1rem)]\",\n \"text-[length:var(--kz-component-button-text-md,0.875rem)]\",\n \"[&_svg]:size-[var(--kz-component-button-icon-md,1rem)]\",\n ].join(\" \"),\n lg: [\n \"h-[var(--kz-component-button-height-lg,3rem)]\",\n \"px-[var(--kz-component-button-px-lg,1.25rem)]\",\n \"text-[length:var(--kz-component-button-text-lg,1rem)]\",\n \"[&_svg]:size-[var(--kz-component-button-icon-lg,1.25rem)]\",\n ].join(\" \"),\n },\n },\n compoundVariants: [\n // Ghost + brand: brand text, transparent bg, brand-tinted hover\n {\n variant: \"ghost\",\n status: \"brand\",\n className: [\n \"!bg-transparent text-[var(--kz-color-brand-accent)]\",\n \"hover:!bg-[var(--kz-component-button-ghost-brand-bg-hover,rgba(0,150,137,0.1))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n ].join(\" \"),\n },\n // Ghost + status: text color = status, bg transparent, hover = light tint\n {\n variant: \"ghost\",\n status: \"success\",\n className: [\n \"!bg-transparent text-[var(--kz-color-status-success)]\",\n \"hover:!bg-[var(--kz-component-button-ghost-success-bg-hover,rgba(0,201,80,0.1))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n ].join(\" \"),\n },\n {\n variant: \"ghost\",\n status: \"warning\",\n className: [\n \"!bg-transparent text-[var(--kz-color-status-warning)]\",\n \"hover:!bg-[var(--kz-component-button-ghost-warning-bg-hover,rgba(245,158,11,0.1))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n ].join(\" \"),\n },\n {\n variant: \"ghost\",\n status: \"error\",\n className: [\n \"!bg-transparent text-[var(--kz-color-status-error)]\",\n \"hover:!bg-[var(--kz-component-button-ghost-error-bg-hover,rgba(251,44,54,0.1))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n ].join(\" \"),\n },\n {\n variant: \"ghost\",\n status: \"info\",\n className: [\n \"!bg-transparent text-[var(--kz-color-status-info)]\",\n \"hover:!bg-[var(--kz-component-button-ghost-info-bg-hover,rgba(37,99,235,0.1))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n ].join(\" \"),\n },\n // Container + brand: brand text, brand border, no shadow, brand-tinted hover\n {\n variant: \"container\",\n status: \"brand\",\n className: [\n \"!bg-transparent\",\n \"!text-[var(--kz-component-button-container-brand-text,var(--kz-color-brand-accent))]\",\n \"!border-[var(--kz-component-button-container-brand-border,var(--kz-color-brand-accent))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n \"hover:!bg-[var(--kz-component-button-container-brand-bg-hover,rgba(0,150,137,0.08))]\",\n ].join(\" \"),\n },\n // Container + status: keep container shape/shadow, override bg/text with status colors\n {\n variant: \"container\",\n status: \"success\",\n className: [\n \"!bg-transparent\",\n \"!text-[var(--kz-color-status-success)]\",\n \"!border-[var(--kz-color-status-success)]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n \"hover:!bg-[var(--kz-component-button-ghost-success-bg-hover,rgba(0,201,80,0.1))]\",\n ].join(\" \"),\n },\n {\n variant: \"container\",\n status: \"warning\",\n className: [\n \"!bg-transparent\",\n \"!text-[var(--kz-color-status-warning)]\",\n \"!border-[var(--kz-color-status-warning)]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n \"hover:!bg-[var(--kz-component-button-ghost-warning-bg-hover,rgba(245,158,11,0.1))]\",\n ].join(\" \"),\n },\n {\n variant: \"container\",\n status: \"error\",\n className: [\n \"!bg-transparent\",\n \"!text-[var(--kz-color-status-error)]\",\n \"!border-[var(--kz-color-status-error)]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n \"hover:!bg-[var(--kz-component-button-ghost-error-bg-hover,rgba(251,44,54,0.1))]\",\n ].join(\" \"),\n },\n {\n variant: \"container\",\n status: \"info\",\n className: [\n \"!bg-transparent\",\n \"!text-[var(--kz-color-status-info)]\",\n \"!border-[var(--kz-color-status-info)]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n \"hover:!bg-[var(--kz-component-button-ghost-info-bg-hover,rgba(37,99,235,0.1))]\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n variant: ButtonVariant.Primary,\n size: ButtonSize.Md,\n },\n});\n\nexport type ButtonVariants = VariantProps<typeof buttonVariants>;\n","/** Preset icon sizes (px). Use with Icon size prop. */\nexport const iconSize = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 40,\n} as const;\n\nexport type IconSizeKey = keyof typeof iconSize;\n","import * as React from \"react\";\nimport { iconRegistry, IconName } from \"./icon-registry\";\nimport { iconSize, type IconSizeKey } from \"./icon-sizes\";\nimport { cn } from \"../utils/cn\";\n\nexport interface IconProps extends Omit<\n React.SVGAttributes<SVGSVGElement>,\n \"color\"\n> {\n name: IconName;\n size?: IconSizeKey | number;\n color?: string;\n className?: string;\n}\n\nconst Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ name, size = \"md\", color, className, ...props }, ref) => {\n const Component = iconRegistry[name];\n if (!Component) return null;\n const sizePx = typeof size === \"number\" ? size : iconSize[size];\n const resolvedColor = color ?? \"var(--kz-color-icon-default, currentColor)\";\n return (\n <Component\n ref={ref}\n size={sizePx}\n color={resolvedColor}\n className={cn(\"shrink-0\", className)}\n {...props}\n />\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n\nexport { Icon, iconRegistry, iconSize, IconName };\nexport type { IconSizeKey };\n","import type { LucideIcon } from \"lucide-react\";\nimport {\n Search,\n CircleAlert,\n CheckCircle,\n TriangleAlert,\n Loader2,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n BarChart2,\n Shield,\n ArrowLeft,\n ArrowUp,\n ArrowDown,\n ArrowUpDown,\n EllipsisVertical,\n Sun,\n Moon,\n Settings,\n LogOut,\n User,\n FileText,\n LockOpen,\n Calendar,\n ChartArea,\n ChartBar,\n ChartBarBig,\n ChartBarDecreasing,\n ChartBarIncreasing,\n ChartBarStacked,\n ChartCandlestick,\n ChartColumn,\n ChartColumnBig,\n ChartColumnDecreasing,\n ChartColumnIncreasing,\n ChartColumnStacked,\n ChartGantt,\n ChartLine,\n ChartNetwork,\n ChartNoAxesColumn,\n ChartNoAxesColumnDecreasing,\n ChartNoAxesColumnIncreasing,\n ChartNoAxesCombined,\n ChartNoAxesGantt,\n ChartPie,\n ChartScatter,\n ChartSpline,\n FolderKanban,\n Kanban,\n SquareChartGantt,\n SquareDashedKanban,\n SquareKanban,\n TrendingDown,\n TrendingUp,\n TrendingUpDown,\n Atom,\n GitBranch,\n Clipboard,\n Palette,\n Gauge,\n Filter,\n Grid3x3,\n RadioTower,\n BadgeCheck,\n Wallet,\n DollarSign,\n Plus,\n Building2,\n X,\n FilePlus,\n UserPlus2,\n UserRoundPlus,\n List,\n CircleAlert as AlertCircleIcon,\n Layers,\n Badge,\n MapPin,\n Puzzle,\n Globe,\n ShoppingBag,\n QrCode,\n Brush,\n FileSpreadsheet,\n Tag,\n Scan,\n Clock3,\n UserPlus,\n Users,\n Files,\n Group,\n CheckSquare,\n ClipboardList,\n ListTodo,\n BarChart3,\n FileBarChart,\n FileSearch,\n Lock,\n Settings2,\n LayoutGrid,\n Terminal,\n Pencil,\n Trash2,\n Eye,\n EyeOff,\n} from \"lucide-react\";\n\n/** Use IconName.* so users discover available icons. Values match registry keys. */\nexport enum IconName {\n Search = \"search\",\n CircleAlert = \"circle-alert\",\n CheckCircle = \"check-circle\",\n TriangleAlert = \"triangle-alert\",\n Loader2 = \"loader-2\",\n ChevronDown = \"chevron-down\",\n ChevronLeft = \"chevron-left\",\n ChevronRight = \"chevron-right\",\n BarChart2 = \"bar-chart-2\",\n Shield = \"shield\",\n ArrowLeft = \"arrow-left\",\n ArrowUp = \"arrow-up\",\n ArrowDown = \"arrow-down\",\n ArrowUpDown = \"arrow-up-down\",\n EllipsisVertical = \"ellipsis-vertical\",\n Sun = \"sun\",\n Moon = \"moon\",\n LogOut = \"log-out\",\n Settings = \"settings\",\n User = \"user\",\n FileText = \"file-text\",\n LockOpen = \"lock-open\",\n Calendar = \"calendar\",\n ChartArea = \"chart-area\",\n ChartBar = \"chart-bar\",\n ChartBarBig = \"chart-bar-big\",\n ChartBarDecreasing = \"chart-bar-decreasing\",\n ChartBarIncreasing = \"chart-bar-increasing\",\n ChartBarStacked = \"chart-bar-stacked\",\n ChartCandlestick = \"chart-candlestick\",\n ChartColumn = \"chart-column\",\n ChartColumnBig = \"chart-column-big\",\n ChartColumnDecreasing = \"chart-column-decreasing\",\n ChartColumnIncreasing = \"chart-column-increasing\",\n ChartColumnStacked = \"chart-column-stacked\",\n ChartGantt = \"chart-gantt\",\n ChartLine = \"chart-line\",\n ChartNetwork = \"chart-network\",\n ChartNoAxesColumn = \"chart-no-axes-column\",\n ChartNoAxesColumnDecreasing = \"chart-no-axes-column-decreasing\",\n ChartNoAxesColumnIncreasing = \"chart-no-axes-column-increasing\",\n ChartNoAxesCombined = \"chart-no-axes-combined\",\n ChartNoAxesGantt = \"chart-no-axes-gantt\",\n ChartPie = \"chart-pie\",\n ChartScatter = \"chart-scatter\",\n ChartSpline = \"chart-spline\",\n FolderKanban = \"folder-kanban\",\n Kanban = \"kanban\",\n SquareChartGantt = \"square-chart-gantt\",\n SquareDashedKanban = \"square-dashed-kanban\",\n SquareKanban = \"square-kanban\",\n TrendingDown = \"trending-down\",\n TrendingUp = \"trending-up\",\n TrendingUpDown = \"trending-up-down\",\n Atom = \"atom\",\n GitBranch = \"git-branch\",\n Clipboard = \"clipboard\",\n Palette = \"palette\",\n Gauge = \"gauge\",\n Filter = \"filter\",\n Grid3x3 = \"grid-3x3\",\n RadioTower = \"radio-tower\",\n BadgeCheck = \"badge-check\",\n Wallet = \"wallet\",\n DollarSign = \"dollar-sign\",\n Plus = \"plus\",\n Building2 = \"building-2\",\n X = \"x\",\n FilePlus = \"file-plus\",\n UserPlus2 = \"user-plus-2\",\n UserRoundPlus = \"user-round-plus\",\n List = \"list\",\n AlertCircle = \"alert-circle\",\n Layers = \"layers\",\n Badge = \"badge\",\n MapPin = \"map-pin\",\n Puzzle = \"puzzle\",\n Globe = \"globe\",\n ShoppingBag = \"shopping-bag\",\n QrCode = \"qr-code\",\n Brush = \"brush\",\n FileSpreadsheet = \"file-spreadsheet\",\n Tag = \"tag\",\n Scan = \"scan\",\n Clock3 = \"clock-3\",\n UserPlus = \"user-plus\",\n Users = \"users\",\n Files = \"files\",\n Group = \"group\",\n CheckSquare = \"check-square\",\n ClipboardList = \"clipboard-list\",\n ListTodo = \"list-todo\",\n BarChart3 = \"bar-chart-3\",\n FileBarChart = \"file-bar-chart\",\n FileSearch = \"file-search\",\n Lock = \"lock\",\n Settings2 = \"settings-2\",\n LayoutGrid = \"layout-grid\",\n Terminal = \"terminal\",\n Pencil = \"pencil\",\n Trash2 = \"trash-2\",\n Eye = \"eye\",\n EyeOff = \"eye-off\",\n}\n\nexport const iconRegistry: Record<IconName, LucideIcon> = {\n [IconName.Search]: Search,\n [IconName.CircleAlert]: CircleAlert,\n [IconName.CheckCircle]: CheckCircle,\n [IconName.TriangleAlert]: TriangleAlert,\n [IconName.Loader2]: Loader2,\n [IconName.ChevronDown]: ChevronDown,\n [IconName.ChevronLeft]: ChevronLeft,\n [IconName.ChevronRight]: ChevronRight,\n [IconName.BarChart2]: BarChart2,\n [IconName.Shield]: Shield,\n [IconName.ArrowLeft]: ArrowLeft,\n [IconName.ArrowUp]: ArrowUp,\n [IconName.ArrowDown]: ArrowDown,\n [IconName.ArrowUpDown]: ArrowUpDown,\n [IconName.EllipsisVertical]: EllipsisVertical,\n [IconName.Sun]: Sun,\n [IconName.Moon]: Moon,\n [IconName.LogOut]: LogOut,\n [IconName.Settings]: Settings,\n [IconName.User]: User,\n [IconName.FileText]: FileText,\n [IconName.LockOpen]: LockOpen,\n [IconName.Calendar]: Calendar,\n [IconName.ChartArea]: ChartArea,\n [IconName.ChartBar]: ChartBar,\n [IconName.ChartBarBig]: ChartBarBig,\n [IconName.ChartBarDecreasing]: ChartBarDecreasing,\n [IconName.ChartBarIncreasing]: ChartBarIncreasing,\n [IconName.ChartBarStacked]: ChartBarStacked,\n [IconName.ChartCandlestick]: ChartCandlestick,\n [IconName.ChartColumn]: ChartColumn,\n [IconName.ChartColumnBig]: ChartColumnBig,\n [IconName.ChartColumnDecreasing]: ChartColumnDecreasing,\n [IconName.ChartColumnIncreasing]: ChartColumnIncreasing,\n [IconName.ChartColumnStacked]: ChartColumnStacked,\n [IconName.ChartGantt]: ChartGantt,\n [IconName.ChartLine]: ChartLine,\n [IconName.ChartNetwork]: ChartNetwork,\n [IconName.ChartNoAxesColumn]: ChartNoAxesColumn,\n [IconName.ChartNoAxesColumnDecreasing]: ChartNoAxesColumnDecreasing,\n [IconName.ChartNoAxesColumnIncreasing]: ChartNoAxesColumnIncreasing,\n [IconName.ChartNoAxesCombined]: ChartNoAxesCombined,\n [IconName.ChartNoAxesGantt]: ChartNoAxesGantt,\n [IconName.ChartPie]: ChartPie,\n [IconName.ChartScatter]: ChartScatter,\n [IconName.ChartSpline]: ChartSpline,\n [IconName.FolderKanban]: FolderKanban,\n [IconName.Kanban]: Kanban,\n [IconName.SquareChartGantt]: SquareChartGantt,\n [IconName.SquareDashedKanban]: SquareDashedKanban,\n [IconName.SquareKanban]: SquareKanban,\n [IconName.TrendingDown]: TrendingDown,\n [IconName.TrendingUp]: TrendingUp,\n [IconName.TrendingUpDown]: TrendingUpDown,\n [IconName.Atom]: Atom,\n [IconName.GitBranch]: GitBranch,\n [IconName.Clipboard]: Clipboard,\n [IconName.Palette]: Palette,\n [IconName.Gauge]: Gauge,\n [IconName.Filter]: Filter,\n [IconName.Grid3x3]: Grid3x3,\n [IconName.RadioTower]: RadioTower,\n [IconName.BadgeCheck]: BadgeCheck,\n [IconName.Wallet]: Wallet,\n [IconName.DollarSign]: DollarSign,\n [IconName.Plus]: Plus,\n [IconName.Building2]: Building2,\n [IconName.X]: X,\n [IconName.FilePlus]: FilePlus,\n [IconName.UserPlus2]: UserPlus2,\n [IconName.UserRoundPlus]: UserRoundPlus,\n [IconName.List]: List,\n [IconName.AlertCircle]: AlertCircleIcon,\n [IconName.Layers]: Layers,\n [IconName.Badge]: Badge,\n [IconName.MapPin]: MapPin,\n [IconName.Puzzle]: Puzzle,\n [IconName.Globe]: Globe,\n [IconName.ShoppingBag]: ShoppingBag,\n [IconName.QrCode]: QrCode,\n [IconName.Brush]: Brush,\n [IconName.FileSpreadsheet]: FileSpreadsheet,\n [IconName.Tag]: Tag,\n [IconName.Scan]: Scan,\n [IconName.Clock3]: Clock3,\n [IconName.UserPlus]: UserPlus,\n [IconName.Users]: Users,\n [IconName.Files]: Files,\n [IconName.Group]: Group,\n [IconName.CheckSquare]: CheckSquare,\n [IconName.ClipboardList]: ClipboardList,\n [IconName.ListTodo]: ListTodo,\n [IconName.BarChart3]: BarChart3,\n [IconName.FileBarChart]: FileBarChart,\n [IconName.FileSearch]: FileSearch,\n [IconName.Lock]: Lock,\n [IconName.Settings2]: Settings2,\n [IconName.LayoutGrid]: LayoutGrid,\n [IconName.Terminal]: Terminal,\n [IconName.Pencil]: Pencil,\n [IconName.Trash2]: Trash2,\n [IconName.Eye]: Eye,\n [IconName.EyeOff]: EyeOff,\n};\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport {\n getTypographyClass,\n getDefaultElement,\n type TypographyVariant,\n} from \"./typography-variants\";\nimport {\n TypographyTone as TypographyToneEnum,\n TypographyAlign as TypographyAlignEnum,\n TypographyWeight as TypographyWeightEnum,\n} from \"../../constants/enum\";\n\nexport {\n TypographyTone as TypographyToneEnum,\n TypographyAlign as TypographyAlignEnum,\n TypographyWeight as TypographyWeightEnum,\n} from \"../../constants/enum\";\n\nexport type TypographyTone = TypographyToneEnum;\nexport type TypographyAlign = TypographyAlignEnum;\nexport type TypographyWeight = TypographyWeightEnum;\n\nexport type TypographyAsElement =\n | \"p\"\n | \"span\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"div\"\n | \"a\"\n | \"label\"\n | \"figcaption\";\n\nexport interface TypographyProps extends Omit<\n React.HTMLAttributes<HTMLElement>,\n \"color\"\n> {\n children: React.ReactNode;\n variant: TypographyVariant;\n href?: string;\n tone?: TypographyTone;\n as?: TypographyAsElement;\n align?: TypographyAlign;\n truncate?: boolean;\n lines?: number;\n weight?: TypographyWeight;\n className?: string;\n}\n\nconst alignClass: Record<TypographyAlignEnum, string> = {\n [TypographyAlignEnum.Left]: \"text-left\",\n [TypographyAlignEnum.Center]: \"text-center\",\n [TypographyAlignEnum.Right]: \"text-right\",\n};\n\nconst weightClass: Record<TypographyWeightEnum, string> = {\n [TypographyWeightEnum.Regular]: \"font-normal\",\n [TypographyWeightEnum.Medium]: \"font-medium\",\n [TypographyWeightEnum.Semibold]: \"font-semibold\",\n [TypographyWeightEnum.Bold]: \"font-bold\",\n};\n\nconst Typography = React.forwardRef<HTMLElement, TypographyProps>(\n (\n {\n children,\n variant,\n href,\n tone,\n as,\n align,\n truncate,\n lines,\n weight,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const Comp = href !== undefined ? \"a\" : (as ?? getDefaultElement(variant));\n const typographyClass = getTypographyClass(variant);\n\n const toneClass =\n tone !== undefined ? `kz-typography-tone-${tone}` : undefined;\n\n const lineClampStyle: React.CSSProperties | undefined =\n lines !== undefined && lines > 0\n ? {\n display: \"-webkit-box\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: lines,\n overflow: \"hidden\",\n }\n : undefined;\n\n const combinedStyle = lineClampStyle\n ? { ...style, ...lineClampStyle }\n : style;\n\n return React.createElement(\n Comp as \"p\",\n {\n ref,\n ...(href !== undefined && { href }),\n className: cn(\n typographyClass,\n toneClass,\n align !== undefined && alignClass[align],\n truncate && \"truncate\",\n weight !== undefined && weightClass[weight],\n className\n ),\n style: combinedStyle,\n ...props,\n },\n children\n );\n }\n);\n\nTypography.displayName = \"Typography\";\n\nexport { Typography };\nexport type { TypographyVariant };\n","import { TypographyVariant as TypographyVariantEnum } from \"../../constants/enum\";\n\nexport { TypographyVariant as TypographyVariantEnum } from \"../../constants/enum\";\n\nexport type TypographyVariant = TypographyVariantEnum;\n\nexport const typographyVariants: TypographyVariant[] = [\n TypographyVariantEnum.H1,\n TypographyVariantEnum.H2,\n TypographyVariantEnum.H3,\n TypographyVariantEnum.H4,\n TypographyVariantEnum.H5,\n TypographyVariantEnum.Body,\n TypographyVariantEnum.Small,\n TypographyVariantEnum.Caption,\n TypographyVariantEnum.Label,\n TypographyVariantEnum.Link,\n TypographyVariantEnum.Error,\n TypographyVariantEnum.Success,\n TypographyVariantEnum.Warning,\n];\n\nconst variantToClass: Record<TypographyVariant, string> = {\n [TypographyVariantEnum.H1]: \"kz-typography-h1\",\n [TypographyVariantEnum.H2]: \"kz-typography-h2\",\n [TypographyVariantEnum.H3]: \"kz-typography-h3\",\n [TypographyVariantEnum.H4]: \"kz-typography-h4\",\n [TypographyVariantEnum.H5]: \"kz-typography-h5\",\n [TypographyVariantEnum.Body]: \"kz-typography-body\",\n [TypographyVariantEnum.Small]: \"kz-typography-small\",\n [TypographyVariantEnum.Caption]: \"kz-typography-caption\",\n [TypographyVariantEnum.Label]: \"kz-typography-label\",\n [TypographyVariantEnum.Link]: \"kz-typography-link\",\n [TypographyVariantEnum.Error]: \"kz-typography-error\",\n [TypographyVariantEnum.Success]: \"kz-typography-success\",\n [TypographyVariantEnum.Warning]: \"kz-typography-warning\",\n};\n\nexport function getTypographyClass(variant: TypographyVariant): string {\n return variantToClass[variant];\n}\n\nconst defaultElement: Record<TypographyVariant, keyof JSX.IntrinsicElements> = {\n [TypographyVariantEnum.H1]: \"h1\",\n [TypographyVariantEnum.H2]: \"h2\",\n [TypographyVariantEnum.H3]: \"h3\",\n [TypographyVariantEnum.H4]: \"h4\",\n [TypographyVariantEnum.H5]: \"h5\",\n [TypographyVariantEnum.Body]: \"p\",\n [TypographyVariantEnum.Small]: \"span\",\n [TypographyVariantEnum.Caption]: \"span\",\n [TypographyVariantEnum.Label]: \"span\",\n [TypographyVariantEnum.Link]: \"a\",\n [TypographyVariantEnum.Error]: \"span\",\n [TypographyVariantEnum.Success]: \"span\",\n [TypographyVariantEnum.Warning]: \"span\",\n};\n\nexport function getDefaultElement(\n variant: TypographyVariant\n): keyof JSX.IntrinsicElements {\n return defaultElement[variant];\n}\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Icon, IconName } from \"../../icon\";\n\nexport interface CalendarProps {\n /** Single-date selection (used by DateTimePicker). */\n selected?: Date;\n onSelect: (date: Date) => void;\n minDate?: Date;\n maxDate?: Date;\n className?: string;\n\n /** Range mode — start of range. */\n selectedStart?: Date;\n /** Range mode — end of range. */\n selectedEnd?: Date;\n /** Range mode — date currently hovered (for preview highlight). */\n hoverDate?: Date;\n /** Range mode — fires on cell mouse enter/leave. */\n onHover?: (date: Date | null) => void;\n\n /** Hide the prev-month nav button (used by DateRangePicker right panel). */\n hidePrev?: boolean;\n /** Hide the next-month nav button (used by DateRangePicker left panel). */\n hideNext?: boolean;\n /** External control of the displayed month. */\n viewMonth?: Date;\n /** Fires when nav buttons change the displayed month. */\n onViewMonthChange?: (date: Date) => void;\n}\n\nconst DAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\nconst MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nfunction getDaysInMonth(year: number, month: number) {\n return new Date(year, month + 1, 0).getDate();\n}\n\nfunction getFirstDayOfMonth(year: number, month: number) {\n return new Date(year, month, 1).getDay();\n}\n\nfunction isSameDay(a: Date, b: Date) {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction isToday(date: Date) {\n return isSameDay(date, new Date());\n}\n\nfunction isDateDisabled(date: Date, minDate?: Date, maxDate?: Date) {\n if (minDate != null) {\n const min = new Date(\n minDate.getFullYear(),\n minDate.getMonth(),\n minDate.getDate()\n );\n if (date < min) return true;\n }\n if (maxDate != null) {\n const max = new Date(\n maxDate.getFullYear(),\n maxDate.getMonth(),\n maxDate.getDate()\n );\n if (date > max) return true;\n }\n return false;\n}\n\nfunction addDays(date: Date, days: number): Date {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n}\n\nfunction isWithinRange(date: Date, start?: Date, end?: Date): boolean {\n if (start == null || end == null) return false;\n const d = date.getTime();\n const s = new Date(\n start.getFullYear(),\n start.getMonth(),\n start.getDate()\n ).getTime();\n const e = new Date(\n end.getFullYear(),\n end.getMonth(),\n end.getDate()\n ).getTime();\n const lo = Math.min(s, e);\n const hi = Math.max(s, e);\n return d > lo && d < hi;\n}\n\nconst Calendar: React.FC<CalendarProps> = ({\n selected,\n onSelect,\n minDate,\n maxDate,\n className,\n selectedStart,\n selectedEnd,\n hoverDate,\n onHover,\n hidePrev = false,\n hideNext = false,\n viewMonth: viewMonthProp,\n onViewMonthChange,\n}) => {\n const isRangeMode = selectedStart !== undefined || selectedEnd !== undefined;\n\n const [internalViewDate, setInternalViewDate] = React.useState(\n () => viewMonthProp ?? selected ?? selectedStart ?? new Date()\n );\n const viewDate = viewMonthProp ?? internalViewDate;\n\n const setViewDate = React.useCallback(\n (d: Date) => {\n if (onViewMonthChange != null) {\n onViewMonthChange(d);\n } else {\n setInternalViewDate(d);\n }\n },\n [onViewMonthChange]\n );\n\n const [focusedDate, setFocusedDate] = React.useState<Date | null>(null);\n const gridRef = React.useRef<HTMLDivElement>(null);\n\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n\n const daysInMonth = getDaysInMonth(year, month);\n const firstDay = getFirstDayOfMonth(year, month);\n const daysInPrevMonth = getDaysInMonth(year, month - 1);\n\n const prevMonth = () => setViewDate(new Date(year, month - 1, 1));\n const nextMonth = () => setViewDate(new Date(year, month + 1, 1));\n\n const cells: { date: Date; inMonth: boolean }[] = [];\n\n for (let i = firstDay - 1; i >= 0; i--) {\n cells.push({\n date: new Date(year, month - 1, daysInPrevMonth - i),\n inMonth: false,\n });\n }\n\n for (let d = 1; d <= daysInMonth; d++) {\n cells.push({ date: new Date(year, month, d), inMonth: true });\n }\n\n const remaining = 42 - cells.length;\n for (let d = 1; d <= remaining; d++) {\n cells.push({ date: new Date(year, month + 1, d), inMonth: false });\n }\n\n // Focus the correct button when focusedDate changes\n React.useEffect(() => {\n if (focusedDate == null || gridRef.current == null) return;\n const dateStr = focusedDate.toISOString().split(\"T\")[0];\n const btn = gridRef.current.querySelector(\n `[data-date=\"${dateStr}\"]`\n ) as HTMLButtonElement | null;\n btn?.focus();\n }, [focusedDate]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const current =\n focusedDate ?? selected ?? selectedStart ?? new Date(year, month, 1);\n let next: Date | null = null;\n\n switch (e.key) {\n case \"ArrowLeft\":\n next = addDays(current, -1);\n break;\n case \"ArrowRight\":\n next = addDays(current, 1);\n break;\n case \"ArrowUp\":\n next = addDays(current, -7);\n break;\n case \"ArrowDown\":\n next = addDays(current, 7);\n break;\n case \"Enter\":\n case \" \":\n if (!isDateDisabled(current, minDate, maxDate)) {\n onSelect(current);\n }\n e.preventDefault();\n return;\n default:\n return;\n }\n\n e.preventDefault();\n\n if (next != null) {\n if (!isDateDisabled(next, minDate, maxDate)) {\n setFocusedDate(next);\n if (next.getMonth() !== month || next.getFullYear() !== year) {\n setViewDate(new Date(next.getFullYear(), next.getMonth(), 1));\n }\n }\n }\n };\n\n // Determine the effective range end for highlighting (hover preview or actual end)\n const rangeEnd = hoverDate ?? selectedEnd;\n\n return (\n <div\n className={cn(\"kz-calendar\", className)}\n role=\"grid\"\n aria-label=\"Calendar\"\n >\n <div className=\"kz-calendar-header\">\n {hidePrev ? (\n <span className=\"kz-calendar-nav\" style={{ visibility: \"hidden\" }} />\n ) : (\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"kz-calendar-nav\"\n aria-label=\"Previous month\"\n >\n <Icon name={IconName.ChevronLeft} size={16} />\n </button>\n )}\n <span className=\"kz-calendar-title\" aria-live=\"polite\">\n {MONTHS[month]} {year}\n </span>\n {hideNext ? (\n <span className=\"kz-calendar-nav\" style={{ visibility: \"hidden\" }} />\n ) : (\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"kz-calendar-nav\"\n aria-label=\"Next month\"\n >\n <Icon name={IconName.ChevronRight} size={16} />\n </button>\n )}\n </div>\n\n <div\n className=\"kz-calendar-grid\"\n ref={gridRef}\n onKeyDown={handleKeyDown}\n role=\"grid\"\n >\n {DAYS.map((day) => (\n <div key={day} className=\"kz-calendar-day-name\" role=\"columnheader\">\n {day}\n </div>\n ))}\n {cells.map((cell, i) => {\n const disabled =\n !cell.inMonth || isDateDisabled(cell.date, minDate, maxDate);\n const today = isToday(cell.date) && cell.inMonth;\n const isFocused =\n focusedDate != null && isSameDay(cell.date, focusedDate);\n const dateStr = cell.date.toISOString().split(\"T\")[0];\n\n // Single-date selection\n const isSelected =\n !isRangeMode &&\n selected != null &&\n cell.inMonth &&\n isSameDay(cell.date, selected);\n\n // Range selection\n const isStart =\n isRangeMode &&\n selectedStart != null &&\n cell.inMonth &&\n isSameDay(cell.date, selectedStart);\n const isEnd =\n isRangeMode &&\n rangeEnd != null &&\n cell.inMonth &&\n isSameDay(cell.date, rangeEnd);\n const inRange =\n isRangeMode &&\n cell.inMonth &&\n isWithinRange(cell.date, selectedStart, rangeEnd);\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabled}\n data-date={dateStr}\n onClick={() => {\n onSelect(cell.date);\n setFocusedDate(cell.date);\n }}\n onMouseEnter={() => onHover?.(cell.date)}\n onMouseLeave={() => onHover?.(null)}\n className={cn(\n \"kz-calendar-cell\",\n !cell.inMonth && \"kz-calendar-cell--outside\",\n isSelected && \"kz-calendar-cell--selected\",\n isStart && \"kz-calendar-cell--range-start\",\n isEnd && \"kz-calendar-cell--range-end\",\n inRange && \"kz-calendar-cell--in-range\",\n today && \"kz-calendar-cell--today\",\n disabled && \"kz-calendar-cell--disabled\"\n )}\n tabIndex={\n isFocused\n ? 0\n : (isSelected || isStart) && focusedDate == null\n ? 0\n : -1\n }\n role=\"gridcell\"\n aria-selected={isSelected || isStart || isEnd}\n aria-label={cell.date.toLocaleDateString(undefined, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n })}\n >\n {cell.date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n"],"mappings":"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","names":["React","React","import_lucide_react","AlertCircleIcon","import_jsx_runtime","React","React","import_jsx_runtime","Calendar","import_jsx_runtime","iconSize","Calendar"]}
1
+ {"version":3,"sources":["../src/components/date-range-picker/index.ts","../src/components/date-range-picker/DateRangePicker.tsx","../src/utils/cn.ts","../src/components/button/Button.tsx","../src/components/button/button.variants.ts","../src/icon/icon-sizes.ts","../src/icon/Icon.tsx","../src/icon/icon-registry.tsx","../src/components/typography/Typography.tsx","../src/components/typography/typography-variants.ts","../src/components/date-time-picker/Calendar.tsx"],"sourcesContent":["export { DateRangePicker } from \"./DateRangePicker\";\nexport type { DateRangePickerProps, DateRange } from \"./DateRangePicker\";\n","import * as React from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { cn } from \"../../utils/cn\";\nimport {\n TextInputVariant,\n TextInputSize,\n TextInputState,\n ButtonVariant,\n ButtonSize,\n} from \"../../constants/enum\";\nimport { Button } from \"../button\";\nimport { Typography } from \"../typography\";\nimport { TypographyVariantEnum } from \"../typography/typography-variants\";\nimport { Icon, IconName } from \"../../icon\";\nimport { Calendar } from \"../date-time-picker/Calendar\";\n\nexport interface DateRange {\n start: Date | undefined;\n end: Date | undefined;\n}\n\nexport interface DateRangePickerProps {\n /** Controlled value. Omit for uncontrolled mode. */\n value?: DateRange | null;\n /** Fires when the range changes. */\n onChange?: (value: DateRange | undefined) => void;\n /** Initial value for uncontrolled mode. */\n defaultValue?: DateRange;\n\n minDate?: Date;\n maxDate?: Date;\n\n placeholder?: string;\n disabled?: boolean;\n\n size?: TextInputSize;\n variant?: TextInputVariant;\n state?: TextInputState;\n\n errorText?: string;\n successText?: string;\n warningText?: string;\n\n label?: string;\n helperText?: string;\n description?: string;\n\n showTodayButton?: boolean;\n showClearButton?: boolean;\n\n className?: string;\n inputClassName?: string;\n}\n\n/* ── Formatting / parsing helpers ── */\n\nfunction formatDate(date: Date): string {\n const m = (date.getMonth() + 1).toString().padStart(2, \"0\");\n const d = date.getDate().toString().padStart(2, \"0\");\n const y = date.getFullYear();\n return `${m}/${d}/${y}`;\n}\n\nfunction formatRange(range: DateRange): string {\n if (range.start == null && range.end == null) return \"\";\n if (range.start != null && range.end == null)\n return `${formatDate(range.start)} – ...`;\n if (range.start != null && range.end != null)\n return `${formatDate(range.start)} – ${formatDate(range.end)}`;\n return \"\";\n}\n\nfunction parseDate(raw: string): Date | null {\n const match = raw.trim().match(/^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/);\n if (match == null) return null;\n const d = new Date(\n parseInt(match[3]),\n parseInt(match[1]) - 1,\n parseInt(match[2])\n );\n if (isNaN(d.getTime())) return null;\n return d;\n}\n\nfunction parseRangeInput(raw: string): DateRange | null {\n const trimmed = raw.trim();\n if (trimmed === \"\") return null;\n\n // Try \"MM/DD/YYYY – MM/DD/YYYY\" or \"MM/DD/YYYY - MM/DD/YYYY\"\n const parts = trimmed.split(/\\s*[–-]\\s*/);\n if (parts.length !== 2) return null;\n\n const start = parseDate(parts[0]);\n const end = parseDate(parts[1]);\n if (start == null || end == null) return null;\n if (start > end) return null;\n\n return { start, end };\n}\n\n/* ── Component ── */\n\nconst DateRangePicker = React.forwardRef<\n HTMLInputElement,\n DateRangePickerProps\n>(\n (\n {\n value: valueProp,\n onChange,\n defaultValue,\n minDate,\n maxDate,\n placeholder = \"Start date – End date\",\n disabled = false,\n size = TextInputSize.Md,\n variant = TextInputVariant.Default,\n state = TextInputState.Default,\n errorText,\n successText,\n warningText,\n label,\n helperText,\n description,\n showTodayButton = true,\n showClearButton = true,\n className,\n inputClassName,\n },\n ref\n ) => {\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = React.useState<\n DateRange | undefined\n >(defaultValue);\n\n const value: DateRange | undefined = isControlled\n ? valueProp === null\n ? undefined\n : valueProp\n : internalValue;\n\n const fireChange = React.useCallback(\n (next: DateRange | undefined) => {\n if (!isControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const [open, setOpen] = React.useState(false);\n const [selectingEnd, setSelectingEnd] = React.useState(false);\n const [hoverDate, setHoverDate] = React.useState<Date | null>(null);\n\n // Pending start (before end is picked)\n const [pendingStart, setPendingStart] = React.useState<Date | undefined>(\n undefined\n );\n\n const [inputValue, setInputValue] = React.useState(\n value != null ? formatRange(value) : \"\"\n );\n\n React.useEffect(() => {\n if (!selectingEnd) {\n setInputValue(value != null ? formatRange(value) : \"\");\n }\n }, [value, selectingEnd]);\n\n // Left calendar shows month of start date or current month\n const [leftMonth, setLeftMonth] = React.useState(\n () => value?.start ?? defaultValue?.start ?? new Date()\n );\n\n // Right calendar is always left + 1 month\n const rightMonth = new Date(\n leftMonth.getFullYear(),\n leftMonth.getMonth() + 1,\n 1\n );\n\n const handlePrevMonth = React.useCallback(() => {\n setLeftMonth(\n (prev) => new Date(prev.getFullYear(), prev.getMonth() - 1, 1)\n );\n }, []);\n\n const handleNextMonth = React.useCallback(() => {\n setLeftMonth(\n (prev) => new Date(prev.getFullYear(), prev.getMonth() + 1, 1)\n );\n }, []);\n\n const handleDateSelect = (date: Date) => {\n if (!selectingEnd) {\n // First click: set start\n setPendingStart(date);\n setSelectingEnd(true);\n setHoverDate(null);\n // Show partial range in input\n setInputValue(`${formatDate(date)} – ...`);\n } else {\n // Second click: set end\n const start = pendingStart!;\n if (date < start) {\n // Clicked before start — treat as new start\n setPendingStart(date);\n setInputValue(`${formatDate(date)} – ...`);\n return;\n }\n const range: DateRange = { start, end: date };\n fireChange(range);\n setSelectingEnd(false);\n setPendingStart(undefined);\n setHoverDate(null);\n setOpen(false);\n }\n };\n\n const handleHover = (date: Date | null) => {\n if (selectingEnd) {\n setHoverDate(date);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value);\n };\n\n const handleInputBlur = () => {\n if (inputValue.trim() === \"\") {\n fireChange(undefined);\n setSelectingEnd(false);\n setPendingStart(undefined);\n return;\n }\n const parsed = parseRangeInput(inputValue);\n if (parsed != null) {\n fireChange(parsed);\n setSelectingEnd(false);\n setPendingStart(undefined);\n } else {\n setInputValue(value != null ? formatRange(value) : \"\");\n }\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\") {\n handleInputBlur();\n setOpen(false);\n }\n if (e.key === \"Escape\") {\n setSelectingEnd(false);\n setPendingStart(undefined);\n setHoverDate(null);\n setOpen(false);\n }\n };\n\n const handleToday = () => {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n fireChange({ start: now, end: now });\n setSelectingEnd(false);\n setPendingStart(undefined);\n setHoverDate(null);\n setOpen(false);\n };\n\n const handleClear = () => {\n fireChange(undefined);\n setSelectingEnd(false);\n setPendingStart(undefined);\n setHoverDate(null);\n setOpen(false);\n };\n\n // The displayed range in the calendars\n const displayStart = selectingEnd ? pendingStart : value?.start;\n const displayEnd = selectingEnd ? undefined : value?.end;\n\n const stateMessage =\n state === TextInputState.Error\n ? errorText\n : state === TextInputState.Success\n ? successText\n : state === TextInputState.Warning\n ? warningText\n : undefined;\n\n const rootClass = cn(\"kz-date-picker-root\", className);\n\n const wrapperClass = cn(\n \"kz-date-picker-wrapper\",\n `kz-date-picker-wrapper--${variant}`,\n `kz-date-picker-wrapper--${size}`,\n state !== TextInputState.Default && `kz-date-picker-wrapper--${state}`,\n open && \"kz-date-picker-wrapper--open\"\n );\n\n const inputClass = cn(\n \"kz-date-picker-input\",\n `kz-date-picker-input--${size}`,\n inputClassName\n );\n\n const iconSize = size === TextInputSize.Sm ? 14 : 16;\n\n return (\n <div className={rootClass}>\n {label != null && label !== \"\" && (\n <label className=\"kz-date-picker-label\">\n <Typography variant={TypographyVariantEnum.Label}>\n {label}\n </Typography>\n </label>\n )}\n\n {description != null && description !== \"\" && (\n <Typography variant={TypographyVariantEnum.Caption}>\n {description}\n </Typography>\n )}\n\n <Popover.Root\n open={open}\n onOpenChange={(nextOpen) => {\n if (!nextOpen) {\n // Closing — reset selection state if mid-selection\n setSelectingEnd(false);\n setPendingStart(undefined);\n setHoverDate(null);\n }\n setOpen(nextOpen);\n }}\n >\n <Popover.Trigger asChild disabled={disabled}>\n <div className={wrapperClass}>\n <span className=\"kz-date-picker-icon\">\n <Icon name={IconName.Calendar} size={iconSize} />\n </span>\n <input\n ref={ref}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onKeyDown={handleInputKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n className={inputClass}\n aria-invalid={state === TextInputState.Error}\n aria-describedby={\n stateMessage != null\n ? \"date-range-picker-message\"\n : helperText != null\n ? \"date-range-picker-helper\"\n : undefined\n }\n />\n <button\n type=\"button\"\n className=\"kz-date-picker-toggle\"\n tabIndex={-1}\n aria-label=\"Toggle calendar\"\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n setOpen((prev) => !prev);\n }}\n >\n <Icon name={IconName.ChevronDown} size={iconSize} />\n </button>\n </div>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n className=\"kz-date-picker-popover\"\n sideOffset={4}\n align=\"start\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <div className=\"kz-date-range-picker-calendars\">\n <Calendar\n onSelect={handleDateSelect}\n selectedStart={displayStart}\n selectedEnd={displayEnd}\n hoverDate={hoverDate ?? undefined}\n onHover={handleHover}\n minDate={minDate}\n maxDate={maxDate}\n viewMonth={leftMonth}\n onViewMonthChange={handlePrevMonth}\n hideNext\n />\n <div className=\"kz-date-range-picker-divider\" />\n <Calendar\n onSelect={handleDateSelect}\n selectedStart={displayStart}\n selectedEnd={displayEnd}\n hoverDate={hoverDate ?? undefined}\n onHover={handleHover}\n minDate={minDate}\n maxDate={maxDate}\n viewMonth={rightMonth}\n onViewMonthChange={handleNextMonth}\n hidePrev\n />\n </div>\n\n {(showTodayButton || showClearButton) && (\n <div className=\"kz-date-picker-footer\">\n {showTodayButton && (\n <Button\n variant={ButtonVariant.Ghost}\n size={ButtonSize.Sm}\n onClick={handleToday}\n >\n Today\n </Button>\n )}\n {showClearButton && (\n <Button\n variant={ButtonVariant.Primary}\n size={ButtonSize.Sm}\n onClick={handleClear}\n >\n Clear\n </Button>\n )}\n </div>\n )}\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n\n {stateMessage != null && stateMessage !== \"\" && (\n <Typography\n id=\"date-range-picker-message\"\n variant={\n state === TextInputState.Error\n ? TypographyVariantEnum.Error\n : state === TextInputState.Success\n ? TypographyVariantEnum.Success\n : TypographyVariantEnum.Warning\n }\n >\n {stateMessage}\n </Typography>\n )}\n\n {helperText != null &&\n helperText !== \"\" &&\n state === TextInputState.Default && (\n <Typography\n id=\"date-range-picker-helper\"\n variant={TypographyVariantEnum.Caption}\n >\n {helperText}\n </Typography>\n )}\n </div>\n );\n }\n);\n\nDateRangePicker.displayName = \"DateRangePicker\";\n\nexport { DateRangePicker };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ButtonVariant,\n ButtonSize,\n ButtonStatus,\n ButtonType,\n ButtonAspectRatio,\n} from \"../../constants/enum\";\nimport { buttonVariants, type ButtonVariants } from \"./button.variants\";\nimport { Loader2 } from \"lucide-react\";\nimport { iconSize } from \"../../icon/icon-sizes\";\nimport { cn } from \"../../utils/cn\";\nimport { Icon, type IconProps } from \"../../icon/Icon\";\n\nexport interface ButtonProps extends Omit<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\" | \"onClick\"\n> {\n variant: ButtonVariant;\n size: ButtonSize;\n status?: ButtonStatus;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n asChild?: boolean;\n children: React.ReactNode;\n type?: ButtonType;\n loading?: boolean;\n aspectRatio?: ButtonAspectRatio;\n leftIcon?: IconProps;\n rightIcon?: IconProps;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant,\n size,\n status,\n onClick,\n asChild = false,\n children,\n type = ButtonType.Button,\n loading = false,\n aspectRatio = ButtonAspectRatio.Auto,\n disabled,\n leftIcon,\n rightIcon,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n const isDisabled = disabled || loading;\n\n const buttonClassName = cn(\n buttonVariants({ variant, size, status }),\n loading && \"opacity-[var(--kz-component-button-loading-opacity,0.8)]\",\n aspectRatio === ButtonAspectRatio.Square && \"kz-button--aspect-1-1\",\n className\n );\n\n if (asChild) {\n return (\n <Comp\n ref={ref}\n type={asChild ? undefined : type}\n className={buttonClassName}\n onClick={onClick}\n disabled={isDisabled}\n aria-busy={loading}\n {...props}\n >\n {children}\n </Comp>\n );\n }\n\n return (\n <Comp\n ref={ref}\n type={type}\n className={buttonClassName}\n onClick={onClick}\n disabled={isDisabled}\n aria-busy={loading}\n {...props}\n >\n {loading && (\n <Loader2\n className=\"kz-button-spinner\"\n size={iconSize.md}\n color=\"currentColor\"\n />\n )}\n {leftIcon && <Icon {...leftIcon} />}\n {children}\n {rightIcon && <Icon {...rightIcon} />}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\nexport type { ButtonVariants };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport { ButtonVariant, ButtonSize } from \"../../constants/enum\";\n\nconst base = [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium\",\n \"transition-all duration-150 ease-out\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--kz-color-border-focus)]\",\n \"disabled:cursor-not-allowed disabled:opacity-[var(--kz-component-button-disabled-opacity,0.5)]\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0\",\n].join(\" \");\n\nexport const buttonVariants = cva(base, {\n variants: {\n variant: {\n primary: [\n \"bg-[var(--kz-component-button-secondary-bg)]\",\n \"text-[var(--kz-component-button-secondary-text)]\",\n \"rounded-[var(--kz-component-button-radius,8px)]\",\n \"[border:var(--kz-component-button-secondary-border,none)]\",\n \"[box-shadow:var(--kz-component-button-secondary-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-secondary-bg-hover)]\",\n \"hover:[box-shadow:var(--kz-component-button-secondary-shadow-hover,var(--kz-component-button-secondary-shadow,none))]\",\n \"active:bg-[var(--kz-component-button-secondary-bg-active)]\",\n ].join(\" \"),\n ghost: [\n \"bg-[var(--kz-component-button-ghost-bg)]\",\n \"text-[var(--kz-component-button-ghost-text)]\",\n \"rounded-[var(--kz-component-button-radius,8px)]\",\n \"border border-transparent\",\n \"[box-shadow:none]\",\n \"hover:bg-[var(--kz-component-button-ghost-bg-hover,transparent)]\",\n \"active:opacity-80\",\n ].join(\" \"),\n container: [\n \"bg-[var(--kz-component-button-container-bg)]\",\n \"text-[var(--kz-component-button-container-text)]\",\n \"border border-[var(--kz-component-button-container-border)]\",\n \"rounded-[var(--kz-component-button-radius,8px)]\",\n \"[box-shadow:var(--kz-component-button-container-shadow)]\",\n \"hover:bg-[var(--kz-component-button-ghost-bg-hover,transparent)]\",\n \"hover:[box-shadow:var(--kz-component-button-container-shadow-hover)]\",\n ].join(\" \"),\n },\n status: {\n default: \"\",\n brand: [\n \"bg-[var(--kz-component-button-brand-bg)]\",\n \"text-[var(--kz-component-button-brand-text)]\",\n \"[box-shadow:var(--kz-component-button-brand-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-brand-bg-hover,var(--kz-component-button-brand-bg))]\",\n \"hover:[box-shadow:var(--kz-component-button-brand-shadow-hover,var(--kz-component-button-brand-shadow,none))]\",\n \"active:!bg-[var(--kz-component-button-brand-bg-hover,var(--kz-component-button-brand-bg))]\",\n ].join(\" \"),\n success: [\n \"bg-[var(--kz-component-button-success-bg)]\",\n \"text-[var(--kz-component-button-success-text)]\",\n \"[box-shadow:var(--kz-component-button-success-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-success-bg-hover,var(--kz-component-button-success-bg))]\",\n \"hover:[box-shadow:var(--kz-component-button-success-shadow-hover,var(--kz-component-button-success-shadow,none))]\",\n \"active:!bg-[var(--kz-component-button-success-bg-hover,var(--kz-component-button-success-bg))]\",\n ].join(\" \"),\n warning: [\n \"bg-[var(--kz-component-button-warning-bg)]\",\n \"text-[var(--kz-component-button-warning-text)]\",\n \"[box-shadow:var(--kz-component-button-warning-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-warning-bg-hover,var(--kz-component-button-warning-bg))]\",\n \"hover:[box-shadow:var(--kz-component-button-warning-shadow-hover,var(--kz-component-button-warning-shadow,none))]\",\n \"active:!bg-[var(--kz-component-button-warning-bg-hover,var(--kz-component-button-warning-bg))]\",\n ].join(\" \"),\n error: [\n \"bg-[var(--kz-component-button-error-bg)]\",\n \"text-[var(--kz-component-button-error-text)]\",\n \"[box-shadow:var(--kz-component-button-error-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-error-bg-hover,var(--kz-component-button-error-bg))]\",\n \"hover:[box-shadow:var(--kz-component-button-error-shadow-hover,var(--kz-component-button-error-shadow,none))]\",\n \"active:!bg-[var(--kz-component-button-error-bg-hover,var(--kz-component-button-error-bg))]\",\n ].join(\" \"),\n info: [\n \"bg-[var(--kz-component-button-info-bg)]\",\n \"text-[var(--kz-component-button-info-text)]\",\n \"[box-shadow:var(--kz-component-button-info-shadow,none)]\",\n \"hover:bg-[var(--kz-component-button-info-bg-hover,var(--kz-component-button-info-bg))]\",\n \"hover:[box-shadow:var(--kz-component-button-info-shadow-hover,var(--kz-component-button-info-shadow,none))]\",\n \"active:!bg-[var(--kz-component-button-info-bg-hover,var(--kz-component-button-info-bg))]\",\n ].join(\" \"),\n },\n size: {\n sm: [\n \"h-[var(--kz-component-button-height-sm,2rem)]\",\n \"px-[var(--kz-component-button-px-sm,0.75rem)]\",\n \"text-[length:var(--kz-component-button-text-sm,0.875rem)]\",\n \"[&_svg]:size-[var(--kz-component-button-icon-sm,1rem)]\",\n ].join(\" \"),\n md: [\n \"h-[var(--kz-component-button-height-md,2.5rem)]\",\n \"px-[var(--kz-component-button-px-md,1rem)]\",\n \"text-[length:var(--kz-component-button-text-md,0.875rem)]\",\n \"[&_svg]:size-[var(--kz-component-button-icon-md,1rem)]\",\n ].join(\" \"),\n lg: [\n \"h-[var(--kz-component-button-height-lg,3rem)]\",\n \"px-[var(--kz-component-button-px-lg,1.25rem)]\",\n \"text-[length:var(--kz-component-button-text-lg,1rem)]\",\n \"[&_svg]:size-[var(--kz-component-button-icon-lg,1.25rem)]\",\n ].join(\" \"),\n },\n },\n compoundVariants: [\n // Ghost + brand: brand text, transparent bg, brand-tinted hover\n {\n variant: \"ghost\",\n status: \"brand\",\n className: [\n \"!bg-transparent text-[var(--kz-color-brand-accent)]\",\n \"hover:!bg-[var(--kz-component-button-ghost-brand-bg-hover,rgba(0,150,137,0.1))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n ].join(\" \"),\n },\n // Ghost + status: text color = status, bg transparent, hover = light tint\n {\n variant: \"ghost\",\n status: \"success\",\n className: [\n \"!bg-transparent text-[var(--kz-color-status-success)]\",\n \"hover:!bg-[var(--kz-component-button-ghost-success-bg-hover,rgba(0,201,80,0.1))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n ].join(\" \"),\n },\n {\n variant: \"ghost\",\n status: \"warning\",\n className: [\n \"!bg-transparent text-[var(--kz-color-status-warning)]\",\n \"hover:!bg-[var(--kz-component-button-ghost-warning-bg-hover,rgba(245,158,11,0.1))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n ].join(\" \"),\n },\n {\n variant: \"ghost\",\n status: \"error\",\n className: [\n \"!bg-transparent text-[var(--kz-color-status-error)]\",\n \"hover:!bg-[var(--kz-component-button-ghost-error-bg-hover,rgba(251,44,54,0.1))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n ].join(\" \"),\n },\n {\n variant: \"ghost\",\n status: \"info\",\n className: [\n \"!bg-transparent text-[var(--kz-color-status-info)]\",\n \"hover:!bg-[var(--kz-component-button-ghost-info-bg-hover,rgba(37,99,235,0.1))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n ].join(\" \"),\n },\n // Container + brand: brand text, brand border, no shadow, brand-tinted hover\n {\n variant: \"container\",\n status: \"brand\",\n className: [\n \"!bg-transparent\",\n \"!text-[var(--kz-component-button-container-brand-text,var(--kz-color-brand-accent))]\",\n \"!border-[var(--kz-component-button-container-brand-border,var(--kz-color-brand-accent))]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n \"hover:!bg-[var(--kz-component-button-container-brand-bg-hover,rgba(0,150,137,0.08))]\",\n ].join(\" \"),\n },\n // Container + status: keep container shape/shadow, override bg/text with status colors\n {\n variant: \"container\",\n status: \"success\",\n className: [\n \"!bg-transparent\",\n \"!text-[var(--kz-color-status-success)]\",\n \"!border-[var(--kz-color-status-success)]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n \"hover:!bg-[var(--kz-component-button-ghost-success-bg-hover,rgba(0,201,80,0.1))]\",\n ].join(\" \"),\n },\n {\n variant: \"container\",\n status: \"warning\",\n className: [\n \"!bg-transparent\",\n \"!text-[var(--kz-color-status-warning)]\",\n \"!border-[var(--kz-color-status-warning)]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n \"hover:!bg-[var(--kz-component-button-ghost-warning-bg-hover,rgba(245,158,11,0.1))]\",\n ].join(\" \"),\n },\n {\n variant: \"container\",\n status: \"error\",\n className: [\n \"!bg-transparent\",\n \"!text-[var(--kz-color-status-error)]\",\n \"!border-[var(--kz-color-status-error)]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n \"hover:!bg-[var(--kz-component-button-ghost-error-bg-hover,rgba(251,44,54,0.1))]\",\n ].join(\" \"),\n },\n {\n variant: \"container\",\n status: \"info\",\n className: [\n \"!bg-transparent\",\n \"!text-[var(--kz-color-status-info)]\",\n \"!border-[var(--kz-color-status-info)]\",\n \"[box-shadow:none] hover:[box-shadow:none]\",\n \"hover:!bg-[var(--kz-component-button-ghost-info-bg-hover,rgba(37,99,235,0.1))]\",\n ].join(\" \"),\n },\n ],\n defaultVariants: {\n variant: ButtonVariant.Primary,\n size: ButtonSize.Md,\n },\n});\n\nexport type ButtonVariants = VariantProps<typeof buttonVariants>;\n","/** Preset icon sizes (px). Use with Icon size prop. */\nexport const iconSize = {\n xs: 12,\n sm: 16,\n md: 24,\n lg: 32,\n xl: 40,\n} as const;\n\nexport type IconSizeKey = keyof typeof iconSize;\n","import * as React from \"react\";\nimport { iconRegistry, IconName } from \"./icon-registry\";\nimport { iconSize, type IconSizeKey } from \"./icon-sizes\";\nimport { cn } from \"../utils/cn\";\n\nexport interface IconProps extends Omit<\n React.SVGAttributes<SVGSVGElement>,\n \"color\"\n> {\n name: IconName;\n size?: IconSizeKey | number;\n color?: string;\n className?: string;\n}\n\nconst Icon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ name, size = \"md\", color, className, ...props }, ref) => {\n const Component = iconRegistry[name];\n if (!Component) return null;\n const sizePx = typeof size === \"number\" ? size : iconSize[size];\n const resolvedColor = color ?? \"var(--kz-color-icon-default, currentColor)\";\n return (\n <Component\n ref={ref}\n size={sizePx}\n color={resolvedColor}\n className={cn(\"shrink-0\", className)}\n {...props}\n />\n );\n }\n);\n\nIcon.displayName = \"Icon\";\n\nexport { Icon, iconRegistry, iconSize, IconName };\nexport type { IconSizeKey };\n","import type { LucideIcon } from \"lucide-react\";\nimport {\n Search,\n CircleAlert,\n CheckCircle,\n TriangleAlert,\n Loader2,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n BarChart2,\n Shield,\n ArrowLeft,\n ArrowUp,\n ArrowDown,\n ArrowUpDown,\n EllipsisVertical,\n Sun,\n Moon,\n Settings,\n LogOut,\n User,\n FileText,\n LockOpen,\n Calendar,\n ChartArea,\n ChartBar,\n ChartBarBig,\n ChartBarDecreasing,\n ChartBarIncreasing,\n ChartBarStacked,\n ChartCandlestick,\n ChartColumn,\n ChartColumnBig,\n ChartColumnDecreasing,\n ChartColumnIncreasing,\n ChartColumnStacked,\n ChartGantt,\n ChartLine,\n ChartNetwork,\n ChartNoAxesColumn,\n ChartNoAxesColumnDecreasing,\n ChartNoAxesColumnIncreasing,\n ChartNoAxesCombined,\n ChartNoAxesGantt,\n ChartPie,\n ChartScatter,\n ChartSpline,\n FolderKanban,\n Kanban,\n SquareChartGantt,\n SquareDashedKanban,\n SquareKanban,\n TrendingDown,\n TrendingUp,\n TrendingUpDown,\n Atom,\n GitBranch,\n Clipboard,\n Palette,\n Gauge,\n Filter,\n Grid3x3,\n RadioTower,\n BadgeCheck,\n Wallet,\n DollarSign,\n Plus,\n Building2,\n X,\n FilePlus,\n UserPlus2,\n UserRoundPlus,\n List,\n CircleAlert as AlertCircleIcon,\n Layers,\n Badge,\n MapPin,\n Puzzle,\n Globe,\n ShoppingBag,\n QrCode,\n Brush,\n FileSpreadsheet,\n Tag,\n Scan,\n Clock3,\n UserPlus,\n Users,\n Files,\n Group,\n CheckSquare,\n ClipboardList,\n ListTodo,\n BarChart3,\n FileBarChart,\n FileSearch,\n Lock,\n Settings2,\n LayoutGrid,\n Terminal,\n Pencil,\n Trash2,\n Eye,\n EyeOff,\n Pin,\n PinOff,\n Save,\n RotateCcw,\n} from \"lucide-react\";\n\n/** Use IconName.* so users discover available icons. Values match registry keys. */\nexport enum IconName {\n Search = \"search\",\n CircleAlert = \"circle-alert\",\n CheckCircle = \"check-circle\",\n TriangleAlert = \"triangle-alert\",\n Loader2 = \"loader-2\",\n ChevronDown = \"chevron-down\",\n ChevronLeft = \"chevron-left\",\n ChevronRight = \"chevron-right\",\n BarChart2 = \"bar-chart-2\",\n Shield = \"shield\",\n ArrowLeft = \"arrow-left\",\n ArrowUp = \"arrow-up\",\n ArrowDown = \"arrow-down\",\n ArrowUpDown = \"arrow-up-down\",\n EllipsisVertical = \"ellipsis-vertical\",\n Sun = \"sun\",\n Moon = \"moon\",\n LogOut = \"log-out\",\n Settings = \"settings\",\n User = \"user\",\n FileText = \"file-text\",\n LockOpen = \"lock-open\",\n Calendar = \"calendar\",\n ChartArea = \"chart-area\",\n ChartBar = \"chart-bar\",\n ChartBarBig = \"chart-bar-big\",\n ChartBarDecreasing = \"chart-bar-decreasing\",\n ChartBarIncreasing = \"chart-bar-increasing\",\n ChartBarStacked = \"chart-bar-stacked\",\n ChartCandlestick = \"chart-candlestick\",\n ChartColumn = \"chart-column\",\n ChartColumnBig = \"chart-column-big\",\n ChartColumnDecreasing = \"chart-column-decreasing\",\n ChartColumnIncreasing = \"chart-column-increasing\",\n ChartColumnStacked = \"chart-column-stacked\",\n ChartGantt = \"chart-gantt\",\n ChartLine = \"chart-line\",\n ChartNetwork = \"chart-network\",\n ChartNoAxesColumn = \"chart-no-axes-column\",\n ChartNoAxesColumnDecreasing = \"chart-no-axes-column-decreasing\",\n ChartNoAxesColumnIncreasing = \"chart-no-axes-column-increasing\",\n ChartNoAxesCombined = \"chart-no-axes-combined\",\n ChartNoAxesGantt = \"chart-no-axes-gantt\",\n ChartPie = \"chart-pie\",\n ChartScatter = \"chart-scatter\",\n ChartSpline = \"chart-spline\",\n FolderKanban = \"folder-kanban\",\n Kanban = \"kanban\",\n SquareChartGantt = \"square-chart-gantt\",\n SquareDashedKanban = \"square-dashed-kanban\",\n SquareKanban = \"square-kanban\",\n TrendingDown = \"trending-down\",\n TrendingUp = \"trending-up\",\n TrendingUpDown = \"trending-up-down\",\n Atom = \"atom\",\n GitBranch = \"git-branch\",\n Clipboard = \"clipboard\",\n Palette = \"palette\",\n Gauge = \"gauge\",\n Filter = \"filter\",\n Grid3x3 = \"grid-3x3\",\n RadioTower = \"radio-tower\",\n BadgeCheck = \"badge-check\",\n Wallet = \"wallet\",\n DollarSign = \"dollar-sign\",\n Plus = \"plus\",\n Building2 = \"building-2\",\n X = \"x\",\n FilePlus = \"file-plus\",\n UserPlus2 = \"user-plus-2\",\n UserRoundPlus = \"user-round-plus\",\n List = \"list\",\n AlertCircle = \"alert-circle\",\n Layers = \"layers\",\n Badge = \"badge\",\n MapPin = \"map-pin\",\n Puzzle = \"puzzle\",\n Globe = \"globe\",\n ShoppingBag = \"shopping-bag\",\n QrCode = \"qr-code\",\n Brush = \"brush\",\n FileSpreadsheet = \"file-spreadsheet\",\n Tag = \"tag\",\n Scan = \"scan\",\n Clock3 = \"clock-3\",\n UserPlus = \"user-plus\",\n Users = \"users\",\n Files = \"files\",\n Group = \"group\",\n CheckSquare = \"check-square\",\n ClipboardList = \"clipboard-list\",\n ListTodo = \"list-todo\",\n BarChart3 = \"bar-chart-3\",\n FileBarChart = \"file-bar-chart\",\n FileSearch = \"file-search\",\n Lock = \"lock\",\n Settings2 = \"settings-2\",\n LayoutGrid = \"layout-grid\",\n Terminal = \"terminal\",\n Pencil = \"pencil\",\n Trash2 = \"trash-2\",\n Eye = \"eye\",\n EyeOff = \"eye-off\",\n Pin = \"pin\",\n PinOff = \"pin-off\",\n Save = \"save\",\n RotateCcw = \"rotate-ccw\",\n}\n\nexport const iconRegistry: Record<IconName, LucideIcon> = {\n [IconName.Search]: Search,\n [IconName.CircleAlert]: CircleAlert,\n [IconName.CheckCircle]: CheckCircle,\n [IconName.TriangleAlert]: TriangleAlert,\n [IconName.Loader2]: Loader2,\n [IconName.ChevronDown]: ChevronDown,\n [IconName.ChevronLeft]: ChevronLeft,\n [IconName.ChevronRight]: ChevronRight,\n [IconName.BarChart2]: BarChart2,\n [IconName.Shield]: Shield,\n [IconName.ArrowLeft]: ArrowLeft,\n [IconName.ArrowUp]: ArrowUp,\n [IconName.ArrowDown]: ArrowDown,\n [IconName.ArrowUpDown]: ArrowUpDown,\n [IconName.EllipsisVertical]: EllipsisVertical,\n [IconName.Sun]: Sun,\n [IconName.Moon]: Moon,\n [IconName.LogOut]: LogOut,\n [IconName.Settings]: Settings,\n [IconName.User]: User,\n [IconName.FileText]: FileText,\n [IconName.LockOpen]: LockOpen,\n [IconName.Calendar]: Calendar,\n [IconName.ChartArea]: ChartArea,\n [IconName.ChartBar]: ChartBar,\n [IconName.ChartBarBig]: ChartBarBig,\n [IconName.ChartBarDecreasing]: ChartBarDecreasing,\n [IconName.ChartBarIncreasing]: ChartBarIncreasing,\n [IconName.ChartBarStacked]: ChartBarStacked,\n [IconName.ChartCandlestick]: ChartCandlestick,\n [IconName.ChartColumn]: ChartColumn,\n [IconName.ChartColumnBig]: ChartColumnBig,\n [IconName.ChartColumnDecreasing]: ChartColumnDecreasing,\n [IconName.ChartColumnIncreasing]: ChartColumnIncreasing,\n [IconName.ChartColumnStacked]: ChartColumnStacked,\n [IconName.ChartGantt]: ChartGantt,\n [IconName.ChartLine]: ChartLine,\n [IconName.ChartNetwork]: ChartNetwork,\n [IconName.ChartNoAxesColumn]: ChartNoAxesColumn,\n [IconName.ChartNoAxesColumnDecreasing]: ChartNoAxesColumnDecreasing,\n [IconName.ChartNoAxesColumnIncreasing]: ChartNoAxesColumnIncreasing,\n [IconName.ChartNoAxesCombined]: ChartNoAxesCombined,\n [IconName.ChartNoAxesGantt]: ChartNoAxesGantt,\n [IconName.ChartPie]: ChartPie,\n [IconName.ChartScatter]: ChartScatter,\n [IconName.ChartSpline]: ChartSpline,\n [IconName.FolderKanban]: FolderKanban,\n [IconName.Kanban]: Kanban,\n [IconName.SquareChartGantt]: SquareChartGantt,\n [IconName.SquareDashedKanban]: SquareDashedKanban,\n [IconName.SquareKanban]: SquareKanban,\n [IconName.TrendingDown]: TrendingDown,\n [IconName.TrendingUp]: TrendingUp,\n [IconName.TrendingUpDown]: TrendingUpDown,\n [IconName.Atom]: Atom,\n [IconName.GitBranch]: GitBranch,\n [IconName.Clipboard]: Clipboard,\n [IconName.Palette]: Palette,\n [IconName.Gauge]: Gauge,\n [IconName.Filter]: Filter,\n [IconName.Grid3x3]: Grid3x3,\n [IconName.RadioTower]: RadioTower,\n [IconName.BadgeCheck]: BadgeCheck,\n [IconName.Wallet]: Wallet,\n [IconName.DollarSign]: DollarSign,\n [IconName.Plus]: Plus,\n [IconName.Building2]: Building2,\n [IconName.X]: X,\n [IconName.FilePlus]: FilePlus,\n [IconName.UserPlus2]: UserPlus2,\n [IconName.UserRoundPlus]: UserRoundPlus,\n [IconName.List]: List,\n [IconName.AlertCircle]: AlertCircleIcon,\n [IconName.Layers]: Layers,\n [IconName.Badge]: Badge,\n [IconName.MapPin]: MapPin,\n [IconName.Puzzle]: Puzzle,\n [IconName.Globe]: Globe,\n [IconName.ShoppingBag]: ShoppingBag,\n [IconName.QrCode]: QrCode,\n [IconName.Brush]: Brush,\n [IconName.FileSpreadsheet]: FileSpreadsheet,\n [IconName.Tag]: Tag,\n [IconName.Scan]: Scan,\n [IconName.Clock3]: Clock3,\n [IconName.UserPlus]: UserPlus,\n [IconName.Users]: Users,\n [IconName.Files]: Files,\n [IconName.Group]: Group,\n [IconName.CheckSquare]: CheckSquare,\n [IconName.ClipboardList]: ClipboardList,\n [IconName.ListTodo]: ListTodo,\n [IconName.BarChart3]: BarChart3,\n [IconName.FileBarChart]: FileBarChart,\n [IconName.FileSearch]: FileSearch,\n [IconName.Lock]: Lock,\n [IconName.Settings2]: Settings2,\n [IconName.LayoutGrid]: LayoutGrid,\n [IconName.Terminal]: Terminal,\n [IconName.Pencil]: Pencil,\n [IconName.Trash2]: Trash2,\n [IconName.Eye]: Eye,\n [IconName.EyeOff]: EyeOff,\n [IconName.Pin]: Pin,\n [IconName.PinOff]: PinOff,\n [IconName.Save]: Save,\n [IconName.RotateCcw]: RotateCcw,\n};\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport {\n getTypographyClass,\n getDefaultElement,\n type TypographyVariant,\n} from \"./typography-variants\";\nimport {\n TypographyTone as TypographyToneEnum,\n TypographyAlign as TypographyAlignEnum,\n TypographyWeight as TypographyWeightEnum,\n} from \"../../constants/enum\";\n\nexport {\n TypographyTone as TypographyToneEnum,\n TypographyAlign as TypographyAlignEnum,\n TypographyWeight as TypographyWeightEnum,\n} from \"../../constants/enum\";\n\nexport type TypographyTone = TypographyToneEnum;\nexport type TypographyAlign = TypographyAlignEnum;\nexport type TypographyWeight = TypographyWeightEnum;\n\nexport type TypographyAsElement =\n | \"p\"\n | \"span\"\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"div\"\n | \"a\"\n | \"label\"\n | \"figcaption\";\n\nexport interface TypographyProps extends Omit<\n React.HTMLAttributes<HTMLElement>,\n \"color\"\n> {\n children: React.ReactNode;\n variant: TypographyVariant;\n href?: string;\n tone?: TypographyTone;\n as?: TypographyAsElement;\n align?: TypographyAlign;\n truncate?: boolean;\n lines?: number;\n weight?: TypographyWeight;\n className?: string;\n}\n\nconst alignClass: Record<TypographyAlignEnum, string> = {\n [TypographyAlignEnum.Left]: \"text-left\",\n [TypographyAlignEnum.Center]: \"text-center\",\n [TypographyAlignEnum.Right]: \"text-right\",\n};\n\nconst weightClass: Record<TypographyWeightEnum, string> = {\n [TypographyWeightEnum.Regular]: \"font-normal\",\n [TypographyWeightEnum.Medium]: \"font-medium\",\n [TypographyWeightEnum.Semibold]: \"font-semibold\",\n [TypographyWeightEnum.Bold]: \"font-bold\",\n};\n\nconst Typography = React.forwardRef<HTMLElement, TypographyProps>(\n (\n {\n children,\n variant,\n href,\n tone,\n as,\n align,\n truncate,\n lines,\n weight,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const Comp = href !== undefined ? \"a\" : (as ?? getDefaultElement(variant));\n const typographyClass = getTypographyClass(variant);\n\n const toneClass =\n tone !== undefined ? `kz-typography-tone-${tone}` : undefined;\n\n const lineClampStyle: React.CSSProperties | undefined =\n lines !== undefined && lines > 0\n ? {\n display: \"-webkit-box\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: lines,\n overflow: \"hidden\",\n }\n : undefined;\n\n const combinedStyle = lineClampStyle\n ? { ...style, ...lineClampStyle }\n : style;\n\n return React.createElement(\n Comp as \"p\",\n {\n ref,\n ...(href !== undefined && { href }),\n className: cn(\n typographyClass,\n toneClass,\n align !== undefined && alignClass[align],\n truncate && \"truncate\",\n weight !== undefined && weightClass[weight],\n className\n ),\n style: combinedStyle,\n ...props,\n },\n children\n );\n }\n);\n\nTypography.displayName = \"Typography\";\n\nexport { Typography };\nexport type { TypographyVariant };\n","import { TypographyVariant as TypographyVariantEnum } from \"../../constants/enum\";\n\nexport { TypographyVariant as TypographyVariantEnum } from \"../../constants/enum\";\n\nexport type TypographyVariant = TypographyVariantEnum;\n\nexport const typographyVariants: TypographyVariant[] = [\n TypographyVariantEnum.H1,\n TypographyVariantEnum.H2,\n TypographyVariantEnum.H3,\n TypographyVariantEnum.H4,\n TypographyVariantEnum.H5,\n TypographyVariantEnum.Body,\n TypographyVariantEnum.Small,\n TypographyVariantEnum.Caption,\n TypographyVariantEnum.Label,\n TypographyVariantEnum.Link,\n TypographyVariantEnum.Error,\n TypographyVariantEnum.Success,\n TypographyVariantEnum.Warning,\n];\n\nconst variantToClass: Record<TypographyVariant, string> = {\n [TypographyVariantEnum.H1]: \"kz-typography-h1\",\n [TypographyVariantEnum.H2]: \"kz-typography-h2\",\n [TypographyVariantEnum.H3]: \"kz-typography-h3\",\n [TypographyVariantEnum.H4]: \"kz-typography-h4\",\n [TypographyVariantEnum.H5]: \"kz-typography-h5\",\n [TypographyVariantEnum.Body]: \"kz-typography-body\",\n [TypographyVariantEnum.Small]: \"kz-typography-small\",\n [TypographyVariantEnum.Caption]: \"kz-typography-caption\",\n [TypographyVariantEnum.Label]: \"kz-typography-label\",\n [TypographyVariantEnum.Link]: \"kz-typography-link\",\n [TypographyVariantEnum.Error]: \"kz-typography-error\",\n [TypographyVariantEnum.Success]: \"kz-typography-success\",\n [TypographyVariantEnum.Warning]: \"kz-typography-warning\",\n};\n\nexport function getTypographyClass(variant: TypographyVariant): string {\n return variantToClass[variant];\n}\n\nconst defaultElement: Record<TypographyVariant, keyof JSX.IntrinsicElements> = {\n [TypographyVariantEnum.H1]: \"h1\",\n [TypographyVariantEnum.H2]: \"h2\",\n [TypographyVariantEnum.H3]: \"h3\",\n [TypographyVariantEnum.H4]: \"h4\",\n [TypographyVariantEnum.H5]: \"h5\",\n [TypographyVariantEnum.Body]: \"p\",\n [TypographyVariantEnum.Small]: \"span\",\n [TypographyVariantEnum.Caption]: \"span\",\n [TypographyVariantEnum.Label]: \"span\",\n [TypographyVariantEnum.Link]: \"a\",\n [TypographyVariantEnum.Error]: \"span\",\n [TypographyVariantEnum.Success]: \"span\",\n [TypographyVariantEnum.Warning]: \"span\",\n};\n\nexport function getDefaultElement(\n variant: TypographyVariant\n): keyof JSX.IntrinsicElements {\n return defaultElement[variant];\n}\n","import * as React from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { Icon, IconName } from \"../../icon\";\n\nexport interface CalendarProps {\n /** Single-date selection (used by DateTimePicker). */\n selected?: Date;\n onSelect: (date: Date) => void;\n minDate?: Date;\n maxDate?: Date;\n className?: string;\n\n /** Range mode — start of range. */\n selectedStart?: Date;\n /** Range mode — end of range. */\n selectedEnd?: Date;\n /** Range mode — date currently hovered (for preview highlight). */\n hoverDate?: Date;\n /** Range mode — fires on cell mouse enter/leave. */\n onHover?: (date: Date | null) => void;\n\n /** Hide the prev-month nav button (used by DateRangePicker right panel). */\n hidePrev?: boolean;\n /** Hide the next-month nav button (used by DateRangePicker left panel). */\n hideNext?: boolean;\n /** External control of the displayed month. */\n viewMonth?: Date;\n /** Fires when nav buttons change the displayed month. */\n onViewMonthChange?: (date: Date) => void;\n}\n\nconst DAYS = [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"];\nconst MONTHS = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nfunction getDaysInMonth(year: number, month: number) {\n return new Date(year, month + 1, 0).getDate();\n}\n\nfunction getFirstDayOfMonth(year: number, month: number) {\n return new Date(year, month, 1).getDay();\n}\n\nfunction isSameDay(a: Date, b: Date) {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nfunction isToday(date: Date) {\n return isSameDay(date, new Date());\n}\n\nfunction isDateDisabled(date: Date, minDate?: Date, maxDate?: Date) {\n if (minDate != null) {\n const min = new Date(\n minDate.getFullYear(),\n minDate.getMonth(),\n minDate.getDate()\n );\n if (date < min) return true;\n }\n if (maxDate != null) {\n const max = new Date(\n maxDate.getFullYear(),\n maxDate.getMonth(),\n maxDate.getDate()\n );\n if (date > max) return true;\n }\n return false;\n}\n\nfunction addDays(date: Date, days: number): Date {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n}\n\nfunction isWithinRange(date: Date, start?: Date, end?: Date): boolean {\n if (start == null || end == null) return false;\n const d = date.getTime();\n const s = new Date(\n start.getFullYear(),\n start.getMonth(),\n start.getDate()\n ).getTime();\n const e = new Date(\n end.getFullYear(),\n end.getMonth(),\n end.getDate()\n ).getTime();\n const lo = Math.min(s, e);\n const hi = Math.max(s, e);\n return d > lo && d < hi;\n}\n\nconst Calendar: React.FC<CalendarProps> = ({\n selected,\n onSelect,\n minDate,\n maxDate,\n className,\n selectedStart,\n selectedEnd,\n hoverDate,\n onHover,\n hidePrev = false,\n hideNext = false,\n viewMonth: viewMonthProp,\n onViewMonthChange,\n}) => {\n const isRangeMode = selectedStart !== undefined || selectedEnd !== undefined;\n\n const [internalViewDate, setInternalViewDate] = React.useState(\n () => viewMonthProp ?? selected ?? selectedStart ?? new Date()\n );\n const viewDate = viewMonthProp ?? internalViewDate;\n\n const setViewDate = React.useCallback(\n (d: Date) => {\n if (onViewMonthChange != null) {\n onViewMonthChange(d);\n } else {\n setInternalViewDate(d);\n }\n },\n [onViewMonthChange]\n );\n\n const [focusedDate, setFocusedDate] = React.useState<Date | null>(null);\n const gridRef = React.useRef<HTMLDivElement>(null);\n\n const year = viewDate.getFullYear();\n const month = viewDate.getMonth();\n\n const daysInMonth = getDaysInMonth(year, month);\n const firstDay = getFirstDayOfMonth(year, month);\n const daysInPrevMonth = getDaysInMonth(year, month - 1);\n\n const prevMonth = () => setViewDate(new Date(year, month - 1, 1));\n const nextMonth = () => setViewDate(new Date(year, month + 1, 1));\n\n const cells: { date: Date; inMonth: boolean }[] = [];\n\n for (let i = firstDay - 1; i >= 0; i--) {\n cells.push({\n date: new Date(year, month - 1, daysInPrevMonth - i),\n inMonth: false,\n });\n }\n\n for (let d = 1; d <= daysInMonth; d++) {\n cells.push({ date: new Date(year, month, d), inMonth: true });\n }\n\n const remaining = 42 - cells.length;\n for (let d = 1; d <= remaining; d++) {\n cells.push({ date: new Date(year, month + 1, d), inMonth: false });\n }\n\n // Focus the correct button when focusedDate changes\n React.useEffect(() => {\n if (focusedDate == null || gridRef.current == null) return;\n const dateStr = focusedDate.toISOString().split(\"T\")[0];\n const btn = gridRef.current.querySelector(\n `[data-date=\"${dateStr}\"]`\n ) as HTMLButtonElement | null;\n btn?.focus();\n }, [focusedDate]);\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n const current =\n focusedDate ?? selected ?? selectedStart ?? new Date(year, month, 1);\n let next: Date | null = null;\n\n switch (e.key) {\n case \"ArrowLeft\":\n next = addDays(current, -1);\n break;\n case \"ArrowRight\":\n next = addDays(current, 1);\n break;\n case \"ArrowUp\":\n next = addDays(current, -7);\n break;\n case \"ArrowDown\":\n next = addDays(current, 7);\n break;\n case \"Enter\":\n case \" \":\n if (!isDateDisabled(current, minDate, maxDate)) {\n onSelect(current);\n }\n e.preventDefault();\n return;\n default:\n return;\n }\n\n e.preventDefault();\n\n if (next != null) {\n if (!isDateDisabled(next, minDate, maxDate)) {\n setFocusedDate(next);\n if (next.getMonth() !== month || next.getFullYear() !== year) {\n setViewDate(new Date(next.getFullYear(), next.getMonth(), 1));\n }\n }\n }\n };\n\n // Determine the effective range end for highlighting (hover preview or actual end)\n const rangeEnd = hoverDate ?? selectedEnd;\n\n return (\n <div\n className={cn(\"kz-calendar\", className)}\n role=\"grid\"\n aria-label=\"Calendar\"\n >\n <div className=\"kz-calendar-header\">\n {hidePrev ? (\n <span className=\"kz-calendar-nav\" style={{ visibility: \"hidden\" }} />\n ) : (\n <button\n type=\"button\"\n onClick={prevMonth}\n className=\"kz-calendar-nav\"\n aria-label=\"Previous month\"\n >\n <Icon name={IconName.ChevronLeft} size={16} />\n </button>\n )}\n <span className=\"kz-calendar-title\" aria-live=\"polite\">\n {MONTHS[month]} {year}\n </span>\n {hideNext ? (\n <span className=\"kz-calendar-nav\" style={{ visibility: \"hidden\" }} />\n ) : (\n <button\n type=\"button\"\n onClick={nextMonth}\n className=\"kz-calendar-nav\"\n aria-label=\"Next month\"\n >\n <Icon name={IconName.ChevronRight} size={16} />\n </button>\n )}\n </div>\n\n <div\n className=\"kz-calendar-grid\"\n ref={gridRef}\n onKeyDown={handleKeyDown}\n role=\"grid\"\n >\n {DAYS.map((day) => (\n <div key={day} className=\"kz-calendar-day-name\" role=\"columnheader\">\n {day}\n </div>\n ))}\n {cells.map((cell, i) => {\n const disabled =\n !cell.inMonth || isDateDisabled(cell.date, minDate, maxDate);\n const today = isToday(cell.date) && cell.inMonth;\n const isFocused =\n focusedDate != null && isSameDay(cell.date, focusedDate);\n const dateStr = cell.date.toISOString().split(\"T\")[0];\n\n // Single-date selection\n const isSelected =\n !isRangeMode &&\n selected != null &&\n cell.inMonth &&\n isSameDay(cell.date, selected);\n\n // Range selection\n const isStart =\n isRangeMode &&\n selectedStart != null &&\n cell.inMonth &&\n isSameDay(cell.date, selectedStart);\n const isEnd =\n isRangeMode &&\n rangeEnd != null &&\n cell.inMonth &&\n isSameDay(cell.date, rangeEnd);\n const inRange =\n isRangeMode &&\n cell.inMonth &&\n isWithinRange(cell.date, selectedStart, rangeEnd);\n\n return (\n <button\n key={i}\n type=\"button\"\n disabled={disabled}\n data-date={dateStr}\n onClick={() => {\n onSelect(cell.date);\n setFocusedDate(cell.date);\n }}\n onMouseEnter={() => onHover?.(cell.date)}\n onMouseLeave={() => onHover?.(null)}\n className={cn(\n \"kz-calendar-cell\",\n !cell.inMonth && \"kz-calendar-cell--outside\",\n isSelected && \"kz-calendar-cell--selected\",\n isStart && \"kz-calendar-cell--range-start\",\n isEnd && \"kz-calendar-cell--range-end\",\n inRange && \"kz-calendar-cell--in-range\",\n today && \"kz-calendar-cell--today\",\n disabled && \"kz-calendar-cell--disabled\"\n )}\n tabIndex={\n isFocused\n ? 0\n : (isSelected || isStart) && focusedDate == null\n ? 0\n : -1\n }\n role=\"gridcell\"\n aria-selected={isSelected || isStart || isEnd}\n aria-label={cell.date.toLocaleDateString(undefined, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n })}\n >\n {cell.date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,SAAuB;AACvB,cAAyB;;;ACDzB,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ACLA,IAAAC,SAAuB;AACvB,wBAAqB;;;ACDrB,sCAAuC;AAGvC,IAAM,OAAO;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG;AAEH,IAAM,qBAAiB,qCAAI,MAAM;AAAA,EACtC,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,MACV,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,MACV,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,IACA,QAAQ;AAAA,MACN,SAAS;AAAA,MACT,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,MACV,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,MACV,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,MACV,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,MACV,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,IACA,MAAM;AAAA,MACJ,IAAI;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,MACV,IAAI;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,MACV,IAAI;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA;AAAA,IAEhB;AAAA,MACE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA;AAAA,IAEA;AAAA,MACE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA;AAAA,IAEA;AAAA,MACE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA;AAAA,IAEA;AAAA,MACE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,IACA;AAAA,MACE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,EAAE,KAAK,GAAG;AAAA,IACZ;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf;AAAA,IACA;AAAA,EACF;AACF,CAAC;;;AD/MD,IAAAC,uBAAwB;;;AETjB,IAAM,WAAW;AAAA,EACtB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;;;ACPA,YAAuB;;;ACCvB,0BA4GO;AAiHA,IAAM,eAA6C;AAAA,EACxD,CAAC,qBAAe,GAAG;AAAA,EACnB,CAAC,gCAAoB,GAAG;AAAA,EACxB,CAAC,gCAAoB,GAAG;AAAA,EACxB,CAAC,oCAAsB,GAAG;AAAA,EAC1B,CAAC,wBAAgB,GAAG;AAAA,EACpB,CAAC,gCAAoB,GAAG;AAAA,EACxB,CAAC,gCAAoB,GAAG;AAAA,EACxB,CAAC,kCAAqB,GAAG;AAAA,EACzB,CAAC,6BAAkB,GAAG;AAAA,EACtB,CAAC,qBAAe,GAAG;AAAA,EACnB,CAAC,4BAAkB,GAAG;AAAA,EACtB,CAAC,wBAAgB,GAAG;AAAA,EACpB,CAAC,4BAAkB,GAAG;AAAA,EACtB,CAAC,iCAAoB,GAAG;AAAA,EACxB,CAAC,0CAAyB,GAAG;AAAA,EAC7B,CAAC,eAAY,GAAG;AAAA,EAChB,CAAC,iBAAa,GAAG;AAAA,EACjB,CAAC,sBAAe,GAAG;AAAA,EACnB,CAAC,yBAAiB,GAAG;AAAA,EACrB,CAAC,iBAAa,GAAG;AAAA,EACjB,CAAC,0BAAiB,GAAG;AAAA,EACrB,CAAC,0BAAiB,GAAG;AAAA,EACrB,CAAC,yBAAiB,GAAG;AAAA,EACrB,CAAC,4BAAkB,GAAG;AAAA,EACtB,CAAC,0BAAiB,GAAG;AAAA,EACrB,CAAC,iCAAoB,GAAG;AAAA,EACxB,CAAC,+CAA2B,GAAG;AAAA,EAC/B,CAAC,+CAA2B,GAAG;AAAA,EAC/B,CAAC,yCAAwB,GAAG;AAAA,EAC5B,CAAC,0CAAyB,GAAG;AAAA,EAC7B,CAAC,gCAAoB,GAAG;AAAA,EACxB,CAAC,uCAAuB,GAAG;AAAA,EAC3B,CAAC,qDAA8B,GAAG;AAAA,EAClC,CAAC,qDAA8B,GAAG;AAAA,EAClC,CAAC,+CAA2B,GAAG;AAAA,EAC/B,CAAC,8BAAmB,GAAG;AAAA,EACvB,CAAC,4BAAkB,GAAG;AAAA,EACtB,CAAC,kCAAqB,GAAG;AAAA,EACzB,CAAC,8CAA0B,GAAG;AAAA,EAC9B,CAAC,mEAAoC,GAAG;AAAA,EACxC,CAAC,mEAAoC,GAAG;AAAA,EACxC,CAAC,kDAA4B,GAAG;AAAA,EAChC,CAAC,4CAAyB,GAAG;AAAA,EAC7B,CAAC,0BAAiB,GAAG;AAAA,EACrB,CAAC,kCAAqB,GAAG;AAAA,EACzB,CAAC,gCAAoB,GAAG;AAAA,EACxB,CAAC,kCAAqB,GAAG;AAAA,EACzB,CAAC,qBAAe,GAAG;AAAA,EACnB,CAAC,2CAAyB,GAAG;AAAA,EAC7B,CAAC,+CAA2B,GAAG;AAAA,EAC/B,CAAC,kCAAqB,GAAG;AAAA,EACzB,CAAC,kCAAqB,GAAG;AAAA,EACzB,CAAC,8BAAmB,GAAG;AAAA,EACvB,CAAC,uCAAuB,GAAG;AAAA,EAC3B,CAAC,iBAAa,GAAG;AAAA,EACjB,CAAC,4BAAkB,GAAG;AAAA,EACtB,CAAC,2BAAkB,GAAG;AAAA,EACtB,CAAC,uBAAgB,GAAG;AAAA,EACpB,CAAC,mBAAc,GAAG;AAAA,EAClB,CAAC,qBAAe,GAAG;AAAA,EACnB,CAAC,wBAAgB,GAAG;AAAA,EACpB,CAAC,8BAAmB,GAAG;AAAA,EACvB,CAAC,8BAAmB,GAAG;AAAA,EACvB,CAAC,qBAAe,GAAG;AAAA,EACnB,CAAC,8BAAmB,GAAG;AAAA,EACvB,CAAC,iBAAa,GAAG;AAAA,EACjB,CAAC,4BAAkB,GAAG;AAAA,EACtB,CAAC,WAAU,GAAG;AAAA,EACd,CAAC,0BAAiB,GAAG;AAAA,EACrB,CAAC,6BAAkB,GAAG;AAAA,EACtB,CAAC,qCAAsB,GAAG;AAAA,EAC1B,CAAC,iBAAa,GAAG;AAAA,EACjB,CAAC,gCAAoB,GAAG,oBAAAC;AAAA,EACxB,CAAC,qBAAe,GAAG;AAAA,EACnB,CAAC,mBAAc,GAAG;AAAA,EAClB,CAAC,sBAAe,GAAG;AAAA,EACnB,CAAC,qBAAe,GAAG;AAAA,EACnB,CAAC,mBAAc,GAAG;AAAA,EAClB,CAAC,gCAAoB,GAAG;AAAA,EACxB,CAAC,sBAAe,GAAG;AAAA,EACnB,CAAC,mBAAc,GAAG;AAAA,EAClB,CAAC,wCAAwB,GAAG;AAAA,EAC5B,CAAC,eAAY,GAAG;AAAA,EAChB,CAAC,iBAAa,GAAG;AAAA,EACjB,CAAC,sBAAe,GAAG;AAAA,EACnB,CAAC,0BAAiB,GAAG;AAAA,EACrB,CAAC,mBAAc,GAAG;AAAA,EAClB,CAAC,mBAAc,GAAG;AAAA,EAClB,CAAC,mBAAc,GAAG;AAAA,EAClB,CAAC,gCAAoB,GAAG;AAAA,EACxB,CAAC,oCAAsB,GAAG;AAAA,EAC1B,CAAC,0BAAiB,GAAG;AAAA,EACrB,CAAC,6BAAkB,GAAG;AAAA,EACtB,CAAC,mCAAqB,GAAG;AAAA,EACzB,CAAC,8BAAmB,GAAG;AAAA,EACvB,CAAC,iBAAa,GAAG;AAAA,EACjB,CAAC,4BAAkB,GAAG;AAAA,EACtB,CAAC,8BAAmB,GAAG;AAAA,EACvB,CAAC,yBAAiB,GAAG;AAAA,EACrB,CAAC,qBAAe,GAAG;AAAA,EACnB,CAAC,sBAAe,GAAG;AAAA,EACnB,CAAC,eAAY,GAAG;AAAA,EAChB,CAAC,sBAAe,GAAG;AAAA,EACnB,CAAC,eAAY,GAAG;AAAA,EAChB,CAAC,sBAAe,GAAG;AAAA,EACnB,CAAC,iBAAa,GAAG;AAAA,EACjB,CAAC,4BAAkB,GAAG;AACxB;;;ADpTM;AAPN,IAAM,OAAa;AAAA,EACjB,CAAC,EAAE,MAAM,OAAO,MAAM,OAAO,WAAW,GAAG,MAAM,GAAG,QAAQ;AAC1D,UAAM,YAAY,aAAa,IAAI;AACnC,QAAI,CAAC,UAAW,QAAO;AACvB,UAAM,SAAS,OAAO,SAAS,WAAW,OAAO,SAAS,IAAI;AAC9D,UAAM,gBAAgB,SAAS;AAC/B,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW,GAAG,YAAY,SAAS;AAAA,QAClC,GAAG;AAAA;AAAA,IACN;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;AH+BX,IAAAC,sBAAA;AAhCR,IAAM,SAAe;AAAA,EACnB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,OAAO,UAAU,yBAAO;AAC9B,UAAM,aAAa,YAAY;AAE/B,UAAM,kBAAkB;AAAA,MACtB,eAAe,EAAE,SAAS,MAAM,OAAO,CAAC;AAAA,MACxC,WAAW;AAAA,MACX,yCAA4C;AAAA,MAC5C;AAAA,IACF;AAEA,QAAI,SAAS;AACX,aACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,MAAM,UAAU,SAAY;AAAA,UAC5B,WAAW;AAAA,UACX;AAAA,UACA,UAAU;AAAA,UACV,aAAW;AAAA,UACV,GAAG;AAAA,UAEH;AAAA;AAAA,MACH;AAAA,IAEJ;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU;AAAA,QACV,aAAW;AAAA,QACV,GAAG;AAAA,QAEH;AAAA,qBACC;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,MAAM,SAAS;AAAA,cACf,OAAM;AAAA;AAAA,UACR;AAAA,UAED,YAAY,6CAAC,QAAM,GAAG,UAAU;AAAA,UAChC;AAAA,UACA,aAAa,6CAAC,QAAM,GAAG,WAAW;AAAA;AAAA;AAAA,IACrC;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;;;AKvGrB,IAAAC,SAAuB;;;ACMhB,IAAM,qBAA0C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcvD;AAEA,IAAM,iBAAoD;AAAA,EACxD,cAAyB,GAAG;AAAA,EAC5B,cAAyB,GAAG;AAAA,EAC5B,cAAyB,GAAG;AAAA,EAC5B,cAAyB,GAAG;AAAA,EAC5B,cAAyB,GAAG;AAAA,EAC5B,kBAA2B,GAAG;AAAA,EAC9B,oBAA4B,GAAG;AAAA,EAC/B,wBAA8B,GAAG;AAAA,EACjC,oBAA4B,GAAG;AAAA,EAC/B,kBAA2B,GAAG;AAAA,EAC9B,oBAA4B,GAAG;AAAA,EAC/B,wBAA8B,GAAG;AAAA,EACjC,wBAA8B,GAAG;AACnC;AAEO,SAAS,mBAAmB,SAAoC;AACrE,SAAO,eAAe,OAAO;AAC/B;AAEA,IAAM,iBAAyE;AAAA,EAC7E,cAAyB,GAAG;AAAA,EAC5B,cAAyB,GAAG;AAAA,EAC5B,cAAyB,GAAG;AAAA,EAC5B,cAAyB,GAAG;AAAA,EAC5B,cAAyB,GAAG;AAAA,EAC5B,kBAA2B,GAAG;AAAA,EAC9B,oBAA4B,GAAG;AAAA,EAC/B,wBAA8B,GAAG;AAAA,EACjC,oBAA4B,GAAG;AAAA,EAC/B,kBAA2B,GAAG;AAAA,EAC9B,oBAA4B,GAAG;AAAA,EAC/B,wBAA8B,GAAG;AAAA,EACjC,wBAA8B,GAAG;AACnC;AAEO,SAAS,kBACd,SAC6B;AAC7B,SAAO,eAAe,OAAO;AAC/B;;;ADTA,IAAM,aAAkD;AAAA,EACtD,kBAAyB,GAAG;AAAA,EAC5B,sBAA2B,GAAG;AAAA,EAC9B,oBAA0B,GAAG;AAC/B;AAEA,IAAM,cAAoD;AAAA,EACxD,wBAA6B,GAAG;AAAA,EAChC,sBAA4B,GAAG;AAAA,EAC/B,0BAA8B,GAAG;AAAA,EACjC,kBAA0B,GAAG;AAC/B;AAEA,IAAM,aAAmB;AAAA,EACvB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,OAAO,SAAS,SAAY,MAAO,MAAM,kBAAkB,OAAO;AACxE,UAAM,kBAAkB,mBAAmB,OAAO;AAElD,UAAM,YACJ,SAAS,SAAY,sBAAsB,IAAI,KAAK;AAEtD,UAAM,iBACJ,UAAU,UAAa,QAAQ,IAC3B;AAAA,MACE,SAAS;AAAA,MACT,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MACjB,UAAU;AAAA,IACZ,IACA;AAEN,UAAM,gBAAgB,iBAClB,EAAE,GAAG,OAAO,GAAG,eAAe,IAC9B;AAEJ,WAAa;AAAA,MACX;AAAA,MACA;AAAA,QACE;AAAA,QACA,GAAI,SAAS,UAAa,EAAE,KAAK;AAAA,QACjC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA,UAAU,UAAa,WAAW,KAAK;AAAA,UACvC,YAAY;AAAA,UACZ,WAAW,UAAa,YAAY,MAAM;AAAA,UAC1C;AAAA,QACF;AAAA,QACA,OAAO;AAAA,QACP,GAAG;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAEA,WAAW,cAAc;;;AE7HzB,IAAAC,SAAuB;AA6Ob,IAAAC,sBAAA;AA9MV,IAAM,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AACtD,IAAM,SAAS;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,eAAe,MAAc,OAAe;AACnD,SAAO,IAAI,KAAK,MAAM,QAAQ,GAAG,CAAC,EAAE,QAAQ;AAC9C;AAEA,SAAS,mBAAmB,MAAc,OAAe;AACvD,SAAO,IAAI,KAAK,MAAM,OAAO,CAAC,EAAE,OAAO;AACzC;AAEA,SAAS,UAAU,GAAS,GAAS;AACnC,SACE,EAAE,YAAY,MAAM,EAAE,YAAY,KAClC,EAAE,SAAS,MAAM,EAAE,SAAS,KAC5B,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAE9B;AAEA,SAAS,QAAQ,MAAY;AAC3B,SAAO,UAAU,MAAM,oBAAI,KAAK,CAAC;AACnC;AAEA,SAAS,eAAe,MAAY,SAAgB,SAAgB;AAClE,MAAI,WAAW,MAAM;AACnB,UAAM,MAAM,IAAI;AAAA,MACd,QAAQ,YAAY;AAAA,MACpB,QAAQ,SAAS;AAAA,MACjB,QAAQ,QAAQ;AAAA,IAClB;AACA,QAAI,OAAO,IAAK,QAAO;AAAA,EACzB;AACA,MAAI,WAAW,MAAM;AACnB,UAAM,MAAM,IAAI;AAAA,MACd,QAAQ,YAAY;AAAA,MACpB,QAAQ,SAAS;AAAA,MACjB,QAAQ,QAAQ;AAAA,IAClB;AACA,QAAI,OAAO,IAAK,QAAO;AAAA,EACzB;AACA,SAAO;AACT;AAEA,SAAS,QAAQ,MAAY,MAAoB;AAC/C,QAAM,SAAS,IAAI,KAAK,IAAI;AAC5B,SAAO,QAAQ,OAAO,QAAQ,IAAI,IAAI;AACtC,SAAO;AACT;AAEA,SAAS,cAAc,MAAY,OAAc,KAAqB;AACpE,MAAI,SAAS,QAAQ,OAAO,KAAM,QAAO;AACzC,QAAM,IAAI,KAAK,QAAQ;AACvB,QAAM,IAAI,IAAI;AAAA,IACZ,MAAM,YAAY;AAAA,IAClB,MAAM,SAAS;AAAA,IACf,MAAM,QAAQ;AAAA,EAChB,EAAE,QAAQ;AACV,QAAM,IAAI,IAAI;AAAA,IACZ,IAAI,YAAY;AAAA,IAChB,IAAI,SAAS;AAAA,IACb,IAAI,QAAQ;AAAA,EACd,EAAE,QAAQ;AACV,QAAM,KAAK,KAAK,IAAI,GAAG,CAAC;AACxB,QAAM,KAAK,KAAK,IAAI,GAAG,CAAC;AACxB,SAAO,IAAI,MAAM,IAAI;AACvB;AAEA,IAAMC,YAAoC,CAAC;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX;AACF,MAAM;AACJ,QAAM,cAAc,kBAAkB,UAAa,gBAAgB;AAEnE,QAAM,CAAC,kBAAkB,mBAAmB,IAAU;AAAA,IACpD,MAAM,iBAAiB,YAAY,iBAAiB,oBAAI,KAAK;AAAA,EAC/D;AACA,QAAM,WAAW,iBAAiB;AAElC,QAAM,cAAoB;AAAA,IACxB,CAAC,MAAY;AACX,UAAI,qBAAqB,MAAM;AAC7B,0BAAkB,CAAC;AAAA,MACrB,OAAO;AACL,4BAAoB,CAAC;AAAA,MACvB;AAAA,IACF;AAAA,IACA,CAAC,iBAAiB;AAAA,EACpB;AAEA,QAAM,CAAC,aAAa,cAAc,IAAU,gBAAsB,IAAI;AACtE,QAAM,UAAgB,cAAuB,IAAI;AAEjD,QAAM,OAAO,SAAS,YAAY;AAClC,QAAM,QAAQ,SAAS,SAAS;AAEhC,QAAM,cAAc,eAAe,MAAM,KAAK;AAC9C,QAAM,WAAW,mBAAmB,MAAM,KAAK;AAC/C,QAAM,kBAAkB,eAAe,MAAM,QAAQ,CAAC;AAEtD,QAAM,YAAY,MAAM,YAAY,IAAI,KAAK,MAAM,QAAQ,GAAG,CAAC,CAAC;AAChE,QAAM,YAAY,MAAM,YAAY,IAAI,KAAK,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEhE,QAAM,QAA4C,CAAC;AAEnD,WAAS,IAAI,WAAW,GAAG,KAAK,GAAG,KAAK;AACtC,UAAM,KAAK;AAAA,MACT,MAAM,IAAI,KAAK,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AAAA,MACnD,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,WAAS,IAAI,GAAG,KAAK,aAAa,KAAK;AACrC,UAAM,KAAK,EAAE,MAAM,IAAI,KAAK,MAAM,OAAO,CAAC,GAAG,SAAS,KAAK,CAAC;AAAA,EAC9D;AAEA,QAAM,YAAY,KAAK,MAAM;AAC7B,WAAS,IAAI,GAAG,KAAK,WAAW,KAAK;AACnC,UAAM,KAAK,EAAE,MAAM,IAAI,KAAK,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,MAAM,CAAC;AAAA,EACnE;AAGA,EAAM,iBAAU,MAAM;AACpB,QAAI,eAAe,QAAQ,QAAQ,WAAW,KAAM;AACpD,UAAM,UAAU,YAAY,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AACtD,UAAM,MAAM,QAAQ,QAAQ;AAAA,MAC1B,eAAe,OAAO;AAAA,IACxB;AACA,SAAK,MAAM;AAAA,EACb,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,gBAAgB,CAAC,MAA2B;AAChD,UAAM,UACJ,eAAe,YAAY,iBAAiB,IAAI,KAAK,MAAM,OAAO,CAAC;AACrE,QAAI,OAAoB;AAExB,YAAQ,EAAE,KAAK;AAAA,MACb,KAAK;AACH,eAAO,QAAQ,SAAS,EAAE;AAC1B;AAAA,MACF,KAAK;AACH,eAAO,QAAQ,SAAS,CAAC;AACzB;AAAA,MACF,KAAK;AACH,eAAO,QAAQ,SAAS,EAAE;AAC1B;AAAA,MACF,KAAK;AACH,eAAO,QAAQ,SAAS,CAAC;AACzB;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,YAAI,CAAC,eAAe,SAAS,SAAS,OAAO,GAAG;AAC9C,mBAAS,OAAO;AAAA,QAClB;AACA,UAAE,eAAe;AACjB;AAAA,MACF;AACE;AAAA,IACJ;AAEA,MAAE,eAAe;AAEjB,QAAI,QAAQ,MAAM;AAChB,UAAI,CAAC,eAAe,MAAM,SAAS,OAAO,GAAG;AAC3C,uBAAe,IAAI;AACnB,YAAI,KAAK,SAAS,MAAM,SAAS,KAAK,YAAY,MAAM,MAAM;AAC5D,sBAAY,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,GAAG,CAAC,CAAC;AAAA,QAC9D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,QAAM,WAAW,aAAa;AAE9B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,eAAe,SAAS;AAAA,MACtC,MAAK;AAAA,MACL,cAAW;AAAA,MAEX;AAAA,sDAAC,SAAI,WAAU,sBACZ;AAAA,qBACC,6CAAC,UAAK,WAAU,mBAAkB,OAAO,EAAE,YAAY,SAAS,GAAG,IAEnE;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS;AAAA,cACT,WAAU;AAAA,cACV,cAAW;AAAA,cAEX,uDAAC,QAAK,wCAA4B,MAAM,IAAI;AAAA;AAAA,UAC9C;AAAA,UAEF,8CAAC,UAAK,WAAU,qBAAoB,aAAU,UAC3C;AAAA,mBAAO,KAAK;AAAA,YAAE;AAAA,YAAE;AAAA,aACnB;AAAA,UACC,WACC,6CAAC,UAAK,WAAU,mBAAkB,OAAO,EAAE,YAAY,SAAS,GAAG,IAEnE;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS;AAAA,cACT,WAAU;AAAA,cACV,cAAW;AAAA,cAEX,uDAAC,QAAK,0CAA6B,MAAM,IAAI;AAAA;AAAA,UAC/C;AAAA,WAEJ;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAK;AAAA,YACL,WAAW;AAAA,YACX,MAAK;AAAA,YAEJ;AAAA,mBAAK,IAAI,CAAC,QACT,6CAAC,SAAc,WAAU,wBAAuB,MAAK,gBAClD,iBADO,GAEV,CACD;AAAA,cACA,MAAM,IAAI,CAAC,MAAM,MAAM;AACtB,sBAAM,WACJ,CAAC,KAAK,WAAW,eAAe,KAAK,MAAM,SAAS,OAAO;AAC7D,sBAAM,QAAQ,QAAQ,KAAK,IAAI,KAAK,KAAK;AACzC,sBAAM,YACJ,eAAe,QAAQ,UAAU,KAAK,MAAM,WAAW;AACzD,sBAAM,UAAU,KAAK,KAAK,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC;AAGpD,sBAAM,aACJ,CAAC,eACD,YAAY,QACZ,KAAK,WACL,UAAU,KAAK,MAAM,QAAQ;AAG/B,sBAAM,UACJ,eACA,iBAAiB,QACjB,KAAK,WACL,UAAU,KAAK,MAAM,aAAa;AACpC,sBAAM,QACJ,eACA,YAAY,QACZ,KAAK,WACL,UAAU,KAAK,MAAM,QAAQ;AAC/B,sBAAM,UACJ,eACA,KAAK,WACL,cAAc,KAAK,MAAM,eAAe,QAAQ;AAElD,uBACE;AAAA,kBAAC;AAAA;AAAA,oBAEC,MAAK;AAAA,oBACL;AAAA,oBACA,aAAW;AAAA,oBACX,SAAS,MAAM;AACb,+BAAS,KAAK,IAAI;AAClB,qCAAe,KAAK,IAAI;AAAA,oBAC1B;AAAA,oBACA,cAAc,MAAM,UAAU,KAAK,IAAI;AAAA,oBACvC,cAAc,MAAM,UAAU,IAAI;AAAA,oBAClC,WAAW;AAAA,sBACT;AAAA,sBACA,CAAC,KAAK,WAAW;AAAA,sBACjB,cAAc;AAAA,sBACd,WAAW;AAAA,sBACX,SAAS;AAAA,sBACT,WAAW;AAAA,sBACX,SAAS;AAAA,sBACT,YAAY;AAAA,oBACd;AAAA,oBACA,UACE,YACI,KACC,cAAc,YAAY,eAAe,OACxC,IACA;AAAA,oBAER,MAAK;AAAA,oBACL,iBAAe,cAAc,WAAW;AAAA,oBACxC,cAAY,KAAK,KAAK,mBAAmB,QAAW;AAAA,sBAClD,SAAS;AAAA,sBACT,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,KAAK;AAAA,oBACP,CAAC;AAAA,oBAEA,eAAK,KAAK,QAAQ;AAAA;AAAA,kBApCd;AAAA,gBAqCP;AAAA,cAEJ,CAAC;AAAA;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEAA,UAAS,cAAc;;;ATxCX,IAAAC,sBAAA;AAlQZ,SAAS,WAAW,MAAoB;AACtC,QAAM,KAAK,KAAK,SAAS,IAAI,GAAG,SAAS,EAAE,SAAS,GAAG,GAAG;AAC1D,QAAM,IAAI,KAAK,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,GAAG;AACnD,QAAM,IAAI,KAAK,YAAY;AAC3B,SAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB;AAEA,SAAS,YAAY,OAA0B;AAC7C,MAAI,MAAM,SAAS,QAAQ,MAAM,OAAO,KAAM,QAAO;AACrD,MAAI,MAAM,SAAS,QAAQ,MAAM,OAAO;AACtC,WAAO,GAAG,WAAW,MAAM,KAAK,CAAC;AACnC,MAAI,MAAM,SAAS,QAAQ,MAAM,OAAO;AACtC,WAAO,GAAG,WAAW,MAAM,KAAK,CAAC,WAAM,WAAW,MAAM,GAAG,CAAC;AAC9D,SAAO;AACT;AAEA,SAAS,UAAU,KAA0B;AAC3C,QAAM,QAAQ,IAAI,KAAK,EAAE,MAAM,iCAAiC;AAChE,MAAI,SAAS,KAAM,QAAO;AAC1B,QAAM,IAAI,IAAI;AAAA,IACZ,SAAS,MAAM,CAAC,CAAC;AAAA,IACjB,SAAS,MAAM,CAAC,CAAC,IAAI;AAAA,IACrB,SAAS,MAAM,CAAC,CAAC;AAAA,EACnB;AACA,MAAI,MAAM,EAAE,QAAQ,CAAC,EAAG,QAAO;AAC/B,SAAO;AACT;AAEA,SAAS,gBAAgB,KAA+B;AACtD,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,YAAY,GAAI,QAAO;AAG3B,QAAM,QAAQ,QAAQ,MAAM,YAAY;AACxC,MAAI,MAAM,WAAW,EAAG,QAAO;AAE/B,QAAM,QAAQ,UAAU,MAAM,CAAC,CAAC;AAChC,QAAM,MAAM,UAAU,MAAM,CAAC,CAAC;AAC9B,MAAI,SAAS,QAAQ,OAAO,KAAM,QAAO;AACzC,MAAI,QAAQ,IAAK,QAAO;AAExB,SAAO,EAAE,OAAO,IAAI;AACtB;AAIA,IAAM,kBAAwB;AAAA,EAI5B,CACE;AAAA,IACE,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,IAClB;AAAA,IACA;AAAA,EACF,GACA,QACG;AACH,UAAM,eAAe,cAAc;AACnC,UAAM,CAAC,eAAe,gBAAgB,IAAU,gBAE9C,YAAY;AAEd,UAAM,QAA+B,eACjC,cAAc,OACZ,SACA,YACF;AAEJ,UAAM,aAAmB;AAAA,MACvB,CAAC,SAAgC;AAC/B,YAAI,CAAC,cAAc;AACjB,2BAAiB,IAAI;AAAA,QACvB;AACA,mBAAW,IAAI;AAAA,MACjB;AAAA,MACA,CAAC,cAAc,QAAQ;AAAA,IACzB;AAEA,UAAM,CAAC,MAAM,OAAO,IAAU,gBAAS,KAAK;AAC5C,UAAM,CAAC,cAAc,eAAe,IAAU,gBAAS,KAAK;AAC5D,UAAM,CAAC,WAAW,YAAY,IAAU,gBAAsB,IAAI;AAGlE,UAAM,CAAC,cAAc,eAAe,IAAU;AAAA,MAC5C;AAAA,IACF;AAEA,UAAM,CAAC,YAAY,aAAa,IAAU;AAAA,MACxC,SAAS,OAAO,YAAY,KAAK,IAAI;AAAA,IACvC;AAEA,IAAM,iBAAU,MAAM;AACpB,UAAI,CAAC,cAAc;AACjB,sBAAc,SAAS,OAAO,YAAY,KAAK,IAAI,EAAE;AAAA,MACvD;AAAA,IACF,GAAG,CAAC,OAAO,YAAY,CAAC;AAGxB,UAAM,CAAC,WAAW,YAAY,IAAU;AAAA,MACtC,MAAM,OAAO,SAAS,cAAc,SAAS,oBAAI,KAAK;AAAA,IACxD;AAGA,UAAM,aAAa,IAAI;AAAA,MACrB,UAAU,YAAY;AAAA,MACtB,UAAU,SAAS,IAAI;AAAA,MACvB;AAAA,IACF;AAEA,UAAM,kBAAwB,mBAAY,MAAM;AAC9C;AAAA,QACE,CAAC,SAAS,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC;AAAA,MAC/D;AAAA,IACF,GAAG,CAAC,CAAC;AAEL,UAAM,kBAAwB,mBAAY,MAAM;AAC9C;AAAA,QACE,CAAC,SAAS,IAAI,KAAK,KAAK,YAAY,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC;AAAA,MAC/D;AAAA,IACF,GAAG,CAAC,CAAC;AAEL,UAAM,mBAAmB,CAAC,SAAe;AACvC,UAAI,CAAC,cAAc;AAEjB,wBAAgB,IAAI;AACpB,wBAAgB,IAAI;AACpB,qBAAa,IAAI;AAEjB,sBAAc,GAAG,WAAW,IAAI,CAAC,aAAQ;AAAA,MAC3C,OAAO;AAEL,cAAM,QAAQ;AACd,YAAI,OAAO,OAAO;AAEhB,0BAAgB,IAAI;AACpB,wBAAc,GAAG,WAAW,IAAI,CAAC,aAAQ;AACzC;AAAA,QACF;AACA,cAAM,QAAmB,EAAE,OAAO,KAAK,KAAK;AAC5C,mBAAW,KAAK;AAChB,wBAAgB,KAAK;AACrB,wBAAgB,MAAS;AACzB,qBAAa,IAAI;AACjB,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF;AAEA,UAAM,cAAc,CAAC,SAAsB;AACzC,UAAI,cAAc;AAChB,qBAAa,IAAI;AAAA,MACnB;AAAA,IACF;AAEA,UAAM,oBAAoB,CAAC,MAA2C;AACpE,oBAAc,EAAE,OAAO,KAAK;AAAA,IAC9B;AAEA,UAAM,kBAAkB,MAAM;AAC5B,UAAI,WAAW,KAAK,MAAM,IAAI;AAC5B,mBAAW,MAAS;AACpB,wBAAgB,KAAK;AACrB,wBAAgB,MAAS;AACzB;AAAA,MACF;AACA,YAAM,SAAS,gBAAgB,UAAU;AACzC,UAAI,UAAU,MAAM;AAClB,mBAAW,MAAM;AACjB,wBAAgB,KAAK;AACrB,wBAAgB,MAAS;AAAA,MAC3B,OAAO;AACL,sBAAc,SAAS,OAAO,YAAY,KAAK,IAAI,EAAE;AAAA,MACvD;AAAA,IACF;AAEA,UAAM,qBAAqB,CAAC,MAA6C;AACvE,UAAI,EAAE,QAAQ,SAAS;AACrB,wBAAgB;AAChB,gBAAQ,KAAK;AAAA,MACf;AACA,UAAI,EAAE,QAAQ,UAAU;AACtB,wBAAgB,KAAK;AACrB,wBAAgB,MAAS;AACzB,qBAAa,IAAI;AACjB,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF;AAEA,UAAM,cAAc,MAAM;AACxB,YAAM,MAAM,oBAAI,KAAK;AACrB,UAAI,SAAS,GAAG,GAAG,GAAG,CAAC;AACvB,iBAAW,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC;AACnC,sBAAgB,KAAK;AACrB,sBAAgB,MAAS;AACzB,mBAAa,IAAI;AACjB,cAAQ,KAAK;AAAA,IACf;AAEA,UAAM,cAAc,MAAM;AACxB,iBAAW,MAAS;AACpB,sBAAgB,KAAK;AACrB,sBAAgB,MAAS;AACzB,mBAAa,IAAI;AACjB,cAAQ,KAAK;AAAA,IACf;AAGA,UAAM,eAAe,eAAe,eAAe,OAAO;AAC1D,UAAM,aAAa,eAAe,SAAY,OAAO;AAErD,UAAM,eACJ,gCACI,YACA,oCACE,cACA,oCACE,cACA;AAEV,UAAM,YAAY,GAAG,uBAAuB,SAAS;AAErD,UAAM,eAAe;AAAA,MACnB;AAAA,MACA,2BAA2B,OAAO;AAAA,MAClC,2BAA2B,IAAI;AAAA,MAC/B,qCAAoC,2BAA2B,KAAK;AAAA,MACpE,QAAQ;AAAA,IACV;AAEA,UAAM,aAAa;AAAA,MACjB;AAAA,MACA,yBAAyB,IAAI;AAAA,MAC7B;AAAA,IACF;AAEA,UAAMC,YAAW,yBAA4B,KAAK;AAElD,WACE,8CAAC,SAAI,WAAW,WACb;AAAA,eAAS,QAAQ,UAAU,MAC1B,6CAAC,WAAM,WAAU,wBACf,uDAAC,cAAW,8BACT,iBACH,GACF;AAAA,MAGD,eAAe,QAAQ,gBAAgB,MACtC,6CAAC,cAAW,kCACT,uBACH;AAAA,MAGF;AAAA,QAAS;AAAA,QAAR;AAAA,UACC;AAAA,UACA,cAAc,CAAC,aAAa;AAC1B,gBAAI,CAAC,UAAU;AAEb,8BAAgB,KAAK;AACrB,8BAAgB,MAAS;AACzB,2BAAa,IAAI;AAAA,YACnB;AACA,oBAAQ,QAAQ;AAAA,UAClB;AAAA,UAEA;AAAA,yDAAS,iBAAR,EAAgB,SAAO,MAAC,UACvB,wDAAC,SAAI,WAAW,cACd;AAAA,2DAAC,UAAK,WAAU,uBACd,uDAAC,QAAK,iCAAyB,MAAMA,WAAU,GACjD;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACC;AAAA,kBACA,MAAK;AAAA,kBACL,OAAO;AAAA,kBACP,UAAU;AAAA,kBACV,QAAQ;AAAA,kBACR,WAAW;AAAA,kBACX;AAAA,kBACA;AAAA,kBACA,WAAW;AAAA,kBACX,gBAAc;AAAA,kBACd,oBACE,gBAAgB,OACZ,8BACA,cAAc,OACZ,6BACA;AAAA;AAAA,cAEV;AAAA,cACA;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,WAAU;AAAA,kBACV,UAAU;AAAA,kBACV,cAAW;AAAA,kBACX;AAAA,kBACA,SAAS,CAAC,MAAM;AACd,sBAAE,gBAAgB;AAClB,4BAAQ,CAAC,SAAS,CAAC,IAAI;AAAA,kBACzB;AAAA,kBAEA,uDAAC,QAAK,wCAA4B,MAAMA,WAAU;AAAA;AAAA,cACpD;AAAA,eACF,GACF;AAAA,YAEA,6CAAS,gBAAR,EACC;AAAA,cAAS;AAAA,cAAR;AAAA,gBACC,WAAU;AAAA,gBACV,YAAY;AAAA,gBACZ,OAAM;AAAA,gBACN,iBAAiB,CAAC,MAAM,EAAE,eAAe;AAAA,gBAEzC;AAAA,gEAAC,SAAI,WAAU,kCACb;AAAA;AAAA,sBAACC;AAAA,sBAAA;AAAA,wBACC,UAAU;AAAA,wBACV,eAAe;AAAA,wBACf,aAAa;AAAA,wBACb,WAAW,aAAa;AAAA,wBACxB,SAAS;AAAA,wBACT;AAAA,wBACA;AAAA,wBACA,WAAW;AAAA,wBACX,mBAAmB;AAAA,wBACnB,UAAQ;AAAA;AAAA,oBACV;AAAA,oBACA,6CAAC,SAAI,WAAU,gCAA+B;AAAA,oBAC9C;AAAA,sBAACA;AAAA,sBAAA;AAAA,wBACC,UAAU;AAAA,wBACV,eAAe;AAAA,wBACf,aAAa;AAAA,wBACb,WAAW,aAAa;AAAA,wBACxB,SAAS;AAAA,wBACT;AAAA,wBACA;AAAA,wBACA,WAAW;AAAA,wBACX,mBAAmB;AAAA,wBACnB,UAAQ;AAAA;AAAA,oBACV;AAAA,qBACF;AAAA,mBAEE,mBAAmB,oBACnB,8CAAC,SAAI,WAAU,yBACZ;AAAA,uCACC;AAAA,sBAAC;AAAA;AAAA,wBACC;AAAA,wBACA;AAAA,wBACA,SAAS;AAAA,wBACV;AAAA;AAAA,oBAED;AAAA,oBAED,mBACC;AAAA,sBAAC;AAAA;AAAA,wBACC;AAAA,wBACA;AAAA,wBACA,SAAS;AAAA,wBACV;AAAA;AAAA,oBAED;AAAA,qBAEJ;AAAA;AAAA;AAAA,YAEJ,GACF;AAAA;AAAA;AAAA,MACF;AAAA,MAEC,gBAAgB,QAAQ,iBAAiB,MACxC;AAAA,QAAC;AAAA;AAAA,UACC,IAAG;AAAA,UACH,SACE,sDAEI;AAAA,UAKL;AAAA;AAAA,MACH;AAAA,MAGD,cAAc,QACb,eAAe,MACf,qCACE;AAAA,QAAC;AAAA;AAAA,UACC,IAAG;AAAA,UACH;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,OAEN;AAAA,EAEJ;AACF;AAEA,gBAAgB,cAAc;","names":["React","React","import_lucide_react","AlertCircleIcon","import_jsx_runtime","React","React","import_jsx_runtime","Calendar","import_jsx_runtime","iconSize","Calendar"]}
@@ -19,7 +19,7 @@ var base = [
19
19
  "inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium",
20
20
  "transition-all duration-150 ease-out",
21
21
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-[var(--kz-color-border-focus)]",
22
- "disabled:pointer-events-none disabled:opacity-[var(--kz-component-button-disabled-opacity,0.5)]",
22
+ "disabled:cursor-not-allowed disabled:opacity-[var(--kz-component-button-disabled-opacity,0.5)]",
23
23
  "[&_svg]:pointer-events-none [&_svg]:shrink-0"
24
24
  ].join(" ");
25
25
  var buttonVariants = cva(base, {
@@ -349,7 +349,11 @@ import {
349
349
  Pencil,
350
350
  Trash2,
351
351
  Eye,
352
- EyeOff
352
+ EyeOff,
353
+ Pin,
354
+ PinOff,
355
+ Save,
356
+ RotateCcw
353
357
  } from "lucide-react";
354
358
  var iconRegistry = {
355
359
  ["search" /* Search */]: Search,
@@ -454,7 +458,11 @@ var iconRegistry = {
454
458
  ["pencil" /* Pencil */]: Pencil,
455
459
  ["trash-2" /* Trash2 */]: Trash2,
456
460
  ["eye" /* Eye */]: Eye,
457
- ["eye-off" /* EyeOff */]: EyeOff
461
+ ["eye-off" /* EyeOff */]: EyeOff,
462
+ ["pin" /* Pin */]: Pin,
463
+ ["pin-off" /* PinOff */]: PinOff,
464
+ ["save" /* Save */]: Save,
465
+ ["rotate-ccw" /* RotateCcw */]: RotateCcw
458
466
  };
459
467
 
460
468
  // src/icon/Icon.tsx