klun-ui 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/dist/{chunk-FTYQRXS5.cjs → chunk-OPAZ7GAU.cjs} +587 -524
- package/dist/chunk-OPAZ7GAU.cjs.map +1 -0
- package/dist/{chunk-XDAR7UMF.js → chunk-RRE3PQLX.js} +587 -525
- package/dist/chunk-RRE3PQLX.js.map +1 -0
- package/dist/index.cjs +147 -143
- package/dist/index.d.cts +50 -3
- package/dist/index.d.ts +50 -3
- package/dist/index.js +1 -1
- package/dist/styles.css +49 -0
- package/dist/templates/index.cjs +82 -82
- package/dist/templates/index.js +1 -1
- package/package.json +3 -2
- package/dist/chunk-FTYQRXS5.cjs.map +0 -1
- package/dist/chunk-XDAR7UMF.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/format.ts","../src/components/config/locales.tsx","../src/components/config/ConfigProvider.tsx","../src/components/buttons/Button.tsx","../src/components/buttons/ButtonGroup.tsx","../src/components/buttons/CopyButton.tsx","../src/components/data-display/Avatar.tsx","../src/components/data-display/AvatarGroup.tsx","../src/components/data-display/Badge.tsx","../src/components/data-display/BulkActionBar.tsx","../src/components/data-display/Carousel.tsx","../src/components/data-display/ChartLegend.tsx","../src/components/data-display/ChartTooltip.tsx","../src/components/data-display/Chip.tsx","../src/components/data-display/CodeViewer.tsx","../src/components/data-display/ContentLabel.tsx","../src/components/data-display/Descriptions.tsx","../src/components/data-display/Kbd.tsx","../src/components/data-display/KeyIcon.tsx","../src/components/feedback/Spinner.tsx","../src/components/data-display/List.tsx","../src/components/data-display/Money.tsx","../src/components/data-display/Rating.tsx","../src/components/data-display/RelativeTime.tsx","../src/components/data-display/Statistic.tsx","../src/components/data-display/StatusBadge.tsx","../src/components/data-display/StatusDot.tsx","../src/components/data-display/table/helpers.ts","../src/components/data-display/table/Pager.tsx","../src/components/data-display/table/ContextMenu.tsx","../src/components/data-display/table/ColumnSettings.tsx","../src/components/data-display/table/TableToolbar.tsx","../src/components/data-display/table/SortIcon.tsx","../src/components/data-display/table/Check.tsx","../src/components/data-display/table/FilterMenu.tsx","../src/components/data-display/table/TableHead.tsx","../src/components/data-display/table/TableBody.tsx","../src/components/data-display/table/TableFooter.tsx","../src/components/data-display/table/hooks.ts","../src/components/data-display/Table.tsx","../src/components/data-display/Tag.tsx","../src/components/data-display/Timeline.tsx","../src/components/data-display/Tooltip.tsx","../src/components/data-display/Tree.tsx","../src/components/disclosure/Accordion.tsx","../src/components/feedback/Alert.tsx","../src/components/feedback/Banner.tsx","../src/components/feedback/CircularProgress.tsx","../src/components/feedback/GaugeBar.tsx","../src/components/feedback/Message.tsx","../src/components/feedback/Notification.tsx","../src/components/feedback/ProgressBar.tsx","../src/components/feedback/SegmentedProgress.tsx","../src/components/feedback/Skeleton.tsx","../src/components/feedback/Toast.tsx","../src/components/feedback/Toaster.tsx","../src/components/forms/AutoComplete.tsx","../src/components/forms/Cascader.tsx","../src/components/forms/CharacterCounter.tsx","../src/components/forms/Checkbox.tsx","../src/components/forms/CheckboxCard.tsx","../src/components/forms/ColorDot.tsx","../src/components/forms/ColorPicker.tsx","../src/components/forms/ColorSlider.tsx","../src/components/forms/select/shared.ts","../src/components/forms/select/useSelect.ts","../src/components/forms/select/Listbox.tsx","../src/components/forms/CompactSelect.tsx","../src/components/forms/CompactSelectForInput.tsx","../src/components/forms/CounterInput.tsx","../src/components/forms/Input.tsx","../src/components/overlays/Popover.tsx","../src/components/forms/DatePicker.tsx","../src/components/forms/TimePicker.tsx","../src/components/forms/DateTimePicker.tsx","../src/components/forms/DateRangePicker.tsx","../src/components/forms/DigitInput.tsx","../src/components/forms/FileUpload.tsx","../src/components/forms/Form.tsx","../src/components/forms/Hint.tsx","../src/components/forms/ImageUpload.tsx","../src/components/forms/InlineInput.tsx","../src/components/forms/InlineSelect.tsx","../src/components/forms/Label.tsx","../src/components/forms/PasswordStrength.tsx","../src/components/forms/Radio.tsx","../src/components/forms/RadioCard.tsx","../src/components/forms/RangeSlider.tsx","../src/components/forms/RichEditorToolbar.tsx","../src/components/forms/Select.tsx","../src/components/forms/SelectMenu.tsx","../src/components/forms/Slider.tsx","../src/components/forms/Switch.tsx","../src/components/forms/Textarea.tsx","../src/components/layout/Card.tsx","../src/components/layout/Grid.tsx","../src/components/layout/Layout.tsx","../src/components/layout/Masonry.tsx","../src/components/layout/Space.tsx","../src/components/layout/Flex.tsx","../src/components/layout/Splitter.tsx","../src/components/navigation/Breadcrumb.tsx","../src/components/navigation/Divider.tsx","../src/components/navigation/HorizontalFilter.tsx","../src/components/navigation/Menu.tsx","../src/components/navigation/Pagination.tsx","../src/components/navigation/SegmentedControl.tsx","../src/components/navigation/StepIndicator.tsx","../src/components/navigation/Tabs.tsx","../src/components/navigation/Wizard.tsx","../src/components/overlays/CommandMenu.tsx","../src/components/overlays/Confirm.tsx","../src/components/overlays/Drawer.tsx","../src/components/overlays/Dropdown.tsx","../src/components/overlays/Modal.tsx","../src/components/overlays/Popconfirm.tsx"],"names":["createContext","useContext","useMemo","jsx","jsxs","forwardRef","Button","variant","leadingIcon","trailingIcon","fullWidth","disabled","className","children","_k","_s","_l","rest","cx","appearance","icon","type","ButtonGroup","items","CopyButton","useState","useRef","useEffect","Avatar","AvatarGroup","Badge","BulkActionBar","BulkAction","Carousel","Children","useCallback","Fragment","ChartLegend","ChartTooltip","Chip","CodeViewer","LogViewer","norm","ContentLabel","Descriptions","Kbd","KeyIcon","Spinner","ListItem","Money","Rating","RelativeTime","ExpiryCountdown","Statistic","SIZES","StatusDot","LiveDot","fallbackCopy","Tag","Timeline","Tooltip","Tree","Accordion","Alert","Banner","CircularProgress","pct","GaugeBar","Message","STATUS","Notification","ProgressBar","SegmentedProgress","Skeleton","Toast","toast","isValidElement","useSyncExternalStore","createPortal","AutoComplete","Cascader","CharacterCounter","Checkbox","CheckboxCard","ColorDot","ColorPicker","ColorSlider","CompactSelect","CompactSelectForInput","CounterInput","Input","Popover","Calendar","DatePicker","TimePicker","pad","DEFAULT_FORMAT","DateTimePicker","RangeCalendar","DateRangePicker","DigitInput","FileUpload","cloneElement","Hint","ImageUpload","InlineInput","InlineSelect","Label","PasswordStrength","Radio","RadioCard","RangeSlider","RichEditorToolbar","Select","SelectMenu","Slider","Switch","Textarea","Card","Row","Col","LayoutHeader","LayoutContent","LayoutFooter","LayoutSider","Layout","BREAKPOINTS","useLayoutEffect","Space","resolveGap","Flex","createElement","SplitterPanel","Splitter","Breadcrumb","Divider","HorizontalFilter","Menu","Pagination","SegmentedControl","StepIndicator","Tabs","Wizard","CommandMenu","createRoot","Drawer","Dropdown","Modal","Popconfirm"],"mappings":"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","file":"chunk-OPAZ7GAU.cjs","sourcesContent":["// Format — locale-aware formatting utilities (currency, numbers, bytes, bandwidth,\n// percent, relative/absolute time, countdown). Language-agnostic: every numeric/time\n// value goes through `Intl`; copy stays in the application layer. Pass `locale` per\n// call, or set a process-wide default via `Format.setLocale`.\n\nexport type MoneyPeriod = \"month\" | \"quarter\" | \"half\" | \"year\";\n\nexport interface MoneyOptions {\n currency?: string;\n /** When true, `amount` is in minor units (cents): 1250 → $12.50. */\n cents?: boolean;\n locale?: string;\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n period?: MoneyPeriod;\n periodLabels?: Partial<Record<MoneyPeriod, string>>;\n signDisplay?: \"auto\" | \"never\" | \"always\" | \"exceptZero\";\n}\nexport interface MoneyResult {\n text: string;\n value: number;\n period: string | null;\n}\n\nexport interface SizeOptions {\n si?: boolean;\n locale?: string;\n digits?: number;\n}\nexport interface PctOptions {\n digits?: number;\n fraction?: boolean;\n locale?: string;\n signDisplay?: \"auto\" | \"never\" | \"always\" | \"exceptZero\";\n}\nexport interface RelTimeOptions {\n locale?: string;\n now?: number;\n numeric?: \"always\" | \"auto\";\n}\nexport interface CountdownResult {\n expired: boolean;\n total: number;\n days: number;\n hours: number;\n minutes: number;\n seconds: number;\n}\n\ntype DateInput = Date | number | string;\n\nlet DEFAULT_LOCALE: string =\n (typeof navigator !== \"undefined\" && navigator.language) || \"en-US\";\n\nfunction setLocale(locale: string): void {\n if (locale) DEFAULT_LOCALE = locale;\n}\nfunction getLocale(locale?: string): string {\n return locale || DEFAULT_LOCALE;\n}\n\nconst PERIOD_KEY: Record<MoneyPeriod, string> = {\n month: \"mo\",\n quarter: \"qtr\",\n half: \"6mo\",\n year: \"yr\",\n};\n\n/** Currency string. Returns `{ text, value, period }` so the period suffix can render separately. */\nfunction money(amount: number, opts: MoneyOptions = {}): MoneyResult {\n const {\n currency = \"USD\",\n cents = false,\n locale,\n signDisplay,\n minimumFractionDigits,\n maximumFractionDigits,\n period,\n periodLabels,\n } = opts;\n const value = cents ? Number(amount) / 100 : Number(amount);\n let nf: Intl.NumberFormat;\n try {\n nf = new Intl.NumberFormat(getLocale(locale), {\n style: \"currency\",\n currency,\n minimumFractionDigits,\n maximumFractionDigits,\n signDisplay,\n });\n } catch {\n nf = new Intl.NumberFormat(getLocale(locale), { style: \"currency\", currency: \"USD\" });\n }\n const text = Number.isFinite(value) ? nf.format(value) : \"—\";\n const periodSuffix = period\n ? (periodLabels && periodLabels[period]) || PERIOD_KEY[period] || period\n : null;\n return { text, value, period: periodSuffix };\n}\n\n/** Plain locale number with thousands separators. */\nfunction number(n: number, opts: Intl.NumberFormatOptions & { locale?: string } = {}): string {\n const { locale, ...rest } = opts;\n if (!Number.isFinite(Number(n))) return \"—\";\n return new Intl.NumberFormat(getLocale(locale), rest).format(Number(n));\n}\n\nconst SIZE_UNITS = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\n/** Data size. Default base 1024 (binary); set `si: true` for 1000-base. */\nfunction humanSize(bytes: number, opts: SizeOptions = {}): string {\n const { si = false, locale, digits } = opts;\n const n = Number(bytes);\n if (!Number.isFinite(n)) return \"—\";\n const base = si ? 1000 : 1024;\n if (n === 0) return \"0 B\";\n const neg = n < 0;\n let v = Math.abs(n);\n let i = 0;\n while (v >= base && i < SIZE_UNITS.length - 1) {\n v /= base;\n i++;\n }\n const d = digits != null ? digits : i === 0 ? 0 : v < 10 ? 2 : v < 100 ? 1 : 0;\n return (\n (neg ? \"-\" : \"\") +\n number(v, { locale, maximumFractionDigits: d, minimumFractionDigits: 0 }) +\n \" \" +\n SIZE_UNITS[i]\n );\n}\n\nconst BPS_UNITS = [\"bps\", \"Kbps\", \"Mbps\", \"Gbps\", \"Tbps\"];\n/** Bandwidth/throughput in bits per second, 1000-base. */\nfunction humanBps(bps: number, opts: SizeOptions = {}): string {\n const { locale, digits } = opts;\n const n = Number(bps);\n if (!Number.isFinite(n)) return \"—\";\n if (n === 0) return \"0 bps\";\n const neg = n < 0;\n let v = Math.abs(n);\n let i = 0;\n while (v >= 1000 && i < BPS_UNITS.length - 1) {\n v /= 1000;\n i++;\n }\n const d = digits != null ? digits : i === 0 ? 0 : v < 10 ? 2 : v < 100 ? 1 : 0;\n return (neg ? \"-\" : \"\") + number(v, { locale, maximumFractionDigits: d }) + \" \" + BPS_UNITS[i];\n}\n\n/** Percentage. By default `n` is already a percent value (42 → \"42%\"); set `fraction: true` for 0–1. */\nfunction pct(n: number, opts: PctOptions = {}): string {\n const { digits = 0, fraction = false, locale, signDisplay } = opts;\n let v = Number(n);\n if (!Number.isFinite(v)) return \"—\";\n if (!fraction) v = v / 100;\n return new Intl.NumberFormat(getLocale(locale), {\n style: \"percent\",\n minimumFractionDigits: digits,\n maximumFractionDigits: digits,\n signDisplay,\n }).format(v);\n}\n\nfunction toDate(input: DateInput | null | undefined): Date | null {\n if (input instanceof Date) return input;\n if (typeof input === \"number\") return new Date(input);\n if (typeof input === \"string\") return new Date(input);\n return null;\n}\n\nconst REL_STEPS: [Intl.RelativeTimeFormatUnit, number][] = [\n [\"year\", 31536000],\n [\"month\", 2592000],\n [\"week\", 604800],\n [\"day\", 86400],\n [\"hour\", 3600],\n [\"minute\", 60],\n [\"second\", 1],\n];\n/** Locale relative time (\"2 hours ago\", \"in 3 days\"). */\nfunction relTime(date: DateInput, opts: RelTimeOptions = {}): string {\n const { locale, now = Date.now(), numeric = \"auto\" } = opts;\n const d = toDate(date);\n if (!d) return \"—\";\n const diff = (d.getTime() - now) / 1000; // seconds, signed (future positive)\n const abs = Math.abs(diff);\n let unit: Intl.RelativeTimeFormatUnit = \"second\";\n let val = diff;\n for (const [u, s] of REL_STEPS) {\n if (abs >= s || u === \"second\") {\n unit = u;\n val = diff / s;\n break;\n }\n }\n const rtf = new Intl.RelativeTimeFormat(getLocale(locale), { numeric });\n return rtf.format(Math.round(val), unit);\n}\n\n/** Absolute locale date/time. Extra options forward to `Intl.DateTimeFormat`. */\nfunction absTime(date: DateInput, opts: Intl.DateTimeFormatOptions & { locale?: string } = {}): string {\n const { locale, ...rest } = opts;\n const d = toDate(date);\n if (!d) return \"—\";\n const o: Intl.DateTimeFormatOptions = Object.keys(rest).length\n ? rest\n : { dateStyle: \"medium\", timeStyle: \"short\" };\n return new Intl.DateTimeFormat(getLocale(locale), o).format(d);\n}\n\n/** Structured time-to-target. Language-neutral: returns parts so the app supplies copy. */\nfunction countdown(target: DateInput, opts: { now?: number } = {}): CountdownResult {\n const { now = Date.now() } = opts;\n const d = toDate(target);\n if (!d) return { expired: true, total: 0, days: 0, hours: 0, minutes: 0, seconds: 0 };\n let total = d.getTime() - now;\n const expired = total <= 0;\n total = Math.abs(total);\n const days = Math.floor(total / 86400000);\n const hours = Math.floor((total % 86400000) / 3600000);\n const minutes = Math.floor((total % 3600000) / 60000);\n const seconds = Math.floor((total % 60000) / 1000);\n return { expired, total: d.getTime() - now, days, hours, minutes, seconds };\n}\n\nexport interface FormatApi {\n setLocale(locale: string): void;\n getLocale(locale?: string): string;\n money(amount: number, opts?: MoneyOptions): MoneyResult;\n number(n: number, opts?: Intl.NumberFormatOptions & { locale?: string }): string;\n humanSize(bytes: number, opts?: SizeOptions): string;\n humanBps(bps: number, opts?: SizeOptions): string;\n pct(n: number, opts?: PctOptions): string;\n relTime(date: DateInput, opts?: RelTimeOptions): string;\n absTime(date: DateInput, opts?: Intl.DateTimeFormatOptions & { locale?: string }): string;\n countdown(target: DateInput, opts?: { now?: number }): CountdownResult;\n}\n\n/** Locale-aware formatting utilities. See individual method docs. */\nexport const Format: FormatApi = {\n setLocale,\n getLocale,\n money,\n number,\n humanSize,\n humanBps,\n pct,\n relTime,\n absTime,\n countdown,\n};\n","// Locale dictionaries for klun-ui. Pass one to <ConfigProvider locale={…}>.\n// Components read their built-in text from the active locale (an explicit prop\n// still wins). To add a language, copy `enUS`, translate the values, and ship it.\n\nexport interface Locale {\n /** BCP-47 language tag, e.g. `\"en-US\"`. */\n locale: string;\n datePicker: {\n /** 12 month names (or numeric forms), January-first — as shown in the header. */\n months: string[];\n /** 7 short weekday labels, Monday-first. */\n weekdaysShort: string[];\n /** Calendar header template with `{month}` and `{year}` placeholders. */\n title: string;\n };\n timePicker: { am: string; pm: string };\n pagination: { previous: string; next: string };\n modal: { close: string };\n drawer: { close: string };\n alert: { dismiss: string };\n banner: { dismiss: string };\n toast: { dismiss: string };\n fileUpload: { clickToUpload: string; orDragAndDrop: string };\n imageUpload: { label: string; remove: string };\n passwordStrength: { weak: string; fair: string; good: string; strong: string };\n /** `noResults` contains a `{query}` placeholder. */\n commandMenu: { placeholder: string; esc: string; noResults: string };\n selectMenu: { placeholder: string };\n chip: { remove: string };\n tag: { remove: string };\n /** `star` contains a `{count}` placeholder. */\n rating: { star: string };\n spinner: { loading: string };\n richEditorToolbar: {\n bold: string;\n italic: string;\n underline: string;\n strike: string;\n h1: string;\n h2: string;\n quote: string;\n code: string;\n ul: string;\n ol: string;\n link: string;\n image: string;\n };\n list: { noData: string; loading: string };\n autoComplete: { noResults: string };\n cascader: { placeholder: string };\n popconfirm: { title: string; confirm: string; cancel: string };\n /** `goToSlide` has an `{n}` placeholder. */\n carousel: { previous: string; next: string; goToSlide: string };\n input: { clear: string };\n notification: { close: string };\n /** `minChars`/`maxChars` have `{min}`/`{max}`; `exactChars` has `{len}`; `oneOf` has `{values}`; `min`/`max` have `{min}`/`{max}`. */\n form: {\n required: string;\n empty: string;\n minChars: string;\n maxChars: string;\n exactChars: string;\n oneOf: string;\n invalidFormat: string;\n email: string;\n url: string;\n number: string;\n integer: string;\n min: string;\n max: string;\n };\n /** `pageRange` has `{from}`/`{to}`/`{total}`; `perPage` has `{size}`. */\n table: {\n noData: string;\n columns: string;\n copy: string;\n copyRow: string;\n exportCsv: string;\n filter: string;\n expand: string;\n collapse: string;\n dragToReorder: string;\n dragToResize: string;\n editHint: string;\n previous: string;\n next: string;\n pageRange: string;\n perPage: string;\n };\n}\n\n/** Fill a `{placeholder}` template, e.g. `fmt(locale.rating.star, { count: 3 })`. */\nexport function fmt(template: string, vars: Record<string, string | number>): string {\n return template.replace(/\\{(\\w+)\\}/g, (m, k) => (k in vars ? String(vars[k]) : m));\n}\n\n/** English (US) — the default locale used when no ConfigProvider is present. */\nexport const enUS: Locale = {\n locale: \"en-US\",\n datePicker: {\n months: [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\",\n \"July\", \"August\", \"September\", \"October\", \"November\", \"December\",\n ],\n weekdaysShort: [\"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\", \"Su\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"AM\", pm: \"PM\" },\n pagination: { previous: \"Previous\", next: \"Next\" },\n modal: { close: \"Close\" },\n drawer: { close: \"Close\" },\n alert: { dismiss: \"Dismiss\" },\n banner: { dismiss: \"Dismiss\" },\n toast: { dismiss: \"Dismiss\" },\n fileUpload: { clickToUpload: \"Click to upload\", orDragAndDrop: \"or drag and drop\" },\n imageUpload: { label: \"Upload image\", remove: \"Remove\" },\n passwordStrength: { weak: \"Weak\", fair: \"Fair\", good: \"Good\", strong: \"Strong\" },\n commandMenu: {\n placeholder: \"Type a command or search…\",\n esc: \"ESC\",\n noResults: 'No results for \"{query}\".',\n },\n selectMenu: { placeholder: \"Select…\" },\n chip: { remove: \"Remove\" },\n tag: { remove: \"Remove\" },\n rating: { star: \"{count} star\" },\n spinner: { loading: \"Loading\" },\n richEditorToolbar: {\n bold: \"Bold\",\n italic: \"Italic\",\n underline: \"Underline\",\n strike: \"Strikethrough\",\n h1: \"Heading 1\",\n h2: \"Heading 2\",\n quote: \"Quote\",\n code: \"Code\",\n ul: \"Bulleted list\",\n ol: \"Numbered list\",\n link: \"Link\",\n image: \"Image\",\n },\n list: { noData: \"No data\", loading: \"Loading…\" },\n autoComplete: { noResults: \"No matches\" },\n cascader: { placeholder: \"Select…\" },\n popconfirm: { title: \"Are you sure?\", confirm: \"Confirm\", cancel: \"Cancel\" },\n carousel: { previous: \"Previous\", next: \"Next\", goToSlide: \"Go to slide {n}\" },\n input: { clear: \"Clear\" },\n notification: { close: \"Close\" },\n form: {\n required: \"This field is required\",\n empty: \"Cannot be empty\",\n minChars: \"Must be at least {min} characters\",\n maxChars: \"Must be at most {max} characters\",\n exactChars: \"Must be exactly {len} characters\",\n oneOf: \"Must be one of: {values}\",\n invalidFormat: \"Invalid format\",\n email: \"Enter a valid email\",\n url: \"Enter a valid URL\",\n number: \"Must be a number\",\n integer: \"Must be a whole number\",\n min: \"Must be ≥ {min}\",\n max: \"Must be ≤ {max}\",\n },\n table: {\n noData: \"No data to show\",\n columns: \"Columns\",\n copy: \"Copy\",\n copyRow: \"Copy row\",\n exportCsv: \"Export CSV\",\n filter: \"Filter\",\n expand: \"Expand\",\n collapse: \"Collapse\",\n dragToReorder: \"Drag to reorder\",\n dragToResize: \"Drag to resize\",\n editHint: \"Double-click to edit\",\n previous: \"Previous\",\n next: \"Next\",\n pageRange: \"{from}–{to} of {total}\",\n perPage: \"{size} / page\",\n },\n};\n\n/** 简体中文 (Simplified Chinese). */\nexport const zhCN: Locale = {\n locale: \"zh-CN\",\n datePicker: {\n months: [\n \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\",\n \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\",\n ],\n weekdaysShort: [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n title: \"{year}年{month}\",\n },\n timePicker: { am: \"上午\", pm: \"下午\" },\n pagination: { previous: \"上一页\", next: \"下一页\" },\n modal: { close: \"关闭\" },\n drawer: { close: \"关闭\" },\n alert: { dismiss: \"关闭\" },\n banner: { dismiss: \"关闭\" },\n toast: { dismiss: \"关闭\" },\n fileUpload: { clickToUpload: \"点击上传\", orDragAndDrop: \"或拖拽到此处\" },\n imageUpload: { label: \"上传图片\", remove: \"移除\" },\n passwordStrength: { weak: \"弱\", fair: \"一般\", good: \"良好\", strong: \"强\" },\n commandMenu: {\n placeholder: \"输入命令或搜索…\",\n esc: \"ESC\",\n noResults: '没有找到 \"{query}\" 的结果。',\n },\n selectMenu: { placeholder: \"请选择…\" },\n chip: { remove: \"移除\" },\n tag: { remove: \"移除\" },\n rating: { star: \"{count} 星\" },\n spinner: { loading: \"加载中\" },\n richEditorToolbar: {\n bold: \"加粗\",\n italic: \"斜体\",\n underline: \"下划线\",\n strike: \"删除线\",\n h1: \"标题 1\",\n h2: \"标题 2\",\n quote: \"引用\",\n code: \"代码\",\n ul: \"无序列表\",\n ol: \"有序列表\",\n link: \"链接\",\n image: \"图片\",\n },\n list: { noData: \"暂无数据\", loading: \"加载中…\" },\n autoComplete: { noResults: \"无匹配项\" },\n cascader: { placeholder: \"请选择…\" },\n popconfirm: { title: \"确定吗?\", confirm: \"确定\", cancel: \"取消\" },\n carousel: { previous: \"上一页\", next: \"下一页\", goToSlide: \"跳转到第 {n} 张\" },\n input: { clear: \"清除\" },\n notification: { close: \"关闭\" },\n form: {\n required: \"此字段为必填项\",\n empty: \"不能为空\",\n minChars: \"至少需要 {min} 个字符\",\n maxChars: \"最多 {max} 个字符\",\n exactChars: \"必须为 {len} 个字符\",\n oneOf: \"必须为以下之一:{values}\",\n invalidFormat: \"格式无效\",\n email: \"请输入有效的邮箱地址\",\n url: \"请输入有效的网址\",\n number: \"必须为数字\",\n integer: \"必须为整数\",\n min: \"必须 ≥ {min}\",\n max: \"必须 ≤ {max}\",\n },\n table: {\n noData: \"暂无数据\",\n columns: \"列\",\n copy: \"复制\",\n copyRow: \"复制行\",\n exportCsv: \"导出 CSV\",\n filter: \"筛选\",\n expand: \"展开\",\n collapse: \"收起\",\n dragToReorder: \"拖动以重新排序\",\n dragToResize: \"拖动以调整大小\",\n editHint: \"双击以编辑\",\n previous: \"上一页\",\n next: \"下一页\",\n pageRange: \"{from}–{to} 共 {total}\",\n perPage: \"{size} / 页\",\n },\n};\n\n/** 繁體中文 (Traditional Chinese). */\nexport const zhTW: Locale = {\n locale: \"zh-TW\",\n datePicker: {\n months: [\n \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\",\n \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\",\n ],\n weekdaysShort: [\"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\"],\n title: \"{year}年{month}\",\n },\n timePicker: { am: \"上午\", pm: \"下午\" },\n pagination: { previous: \"上一頁\", next: \"下一頁\" },\n modal: { close: \"關閉\" },\n drawer: { close: \"關閉\" },\n alert: { dismiss: \"關閉\" },\n banner: { dismiss: \"關閉\" },\n toast: { dismiss: \"關閉\" },\n fileUpload: { clickToUpload: \"點擊上傳\", orDragAndDrop: \"或拖曳到此處\" },\n imageUpload: { label: \"上傳圖片\", remove: \"移除\" },\n passwordStrength: { weak: \"弱\", fair: \"一般\", good: \"良好\", strong: \"強\" },\n commandMenu: {\n placeholder: \"輸入命令或搜尋…\",\n esc: \"ESC\",\n noResults: '找不到 \"{query}\" 的結果。',\n },\n selectMenu: { placeholder: \"請選擇…\" },\n chip: { remove: \"移除\" },\n tag: { remove: \"移除\" },\n rating: { star: \"{count} 顆星\" },\n spinner: { loading: \"載入中\" },\n richEditorToolbar: {\n bold: \"粗體\",\n italic: \"斜體\",\n underline: \"底線\",\n strike: \"刪除線\",\n h1: \"標題 1\",\n h2: \"標題 2\",\n quote: \"引用\",\n code: \"程式碼\",\n ul: \"項目符號清單\",\n ol: \"編號清單\",\n link: \"連結\",\n image: \"圖片\",\n },\n list: { noData: \"暫無資料\", loading: \"載入中…\" },\n autoComplete: { noResults: \"無相符項目\" },\n cascader: { placeholder: \"請選擇…\" },\n popconfirm: { title: \"確定嗎?\", confirm: \"確定\", cancel: \"取消\" },\n carousel: { previous: \"上一頁\", next: \"下一頁\", goToSlide: \"跳至第 {n} 張\" },\n input: { clear: \"清除\" },\n notification: { close: \"關閉\" },\n form: {\n required: \"此欄位為必填\",\n empty: \"不能為空\",\n minChars: \"至少需要 {min} 個字元\",\n maxChars: \"最多 {max} 個字元\",\n exactChars: \"必須為 {len} 個字元\",\n oneOf: \"必須為以下之一:{values}\",\n invalidFormat: \"格式無效\",\n email: \"請輸入有效的電子郵件\",\n url: \"請輸入有效的網址\",\n number: \"必須為數字\",\n integer: \"必須為整數\",\n min: \"必須 ≥ {min}\",\n max: \"必須 ≤ {max}\",\n },\n table: {\n noData: \"暫無資料\",\n columns: \"欄\",\n copy: \"複製\",\n copyRow: \"複製列\",\n exportCsv: \"匯出 CSV\",\n filter: \"篩選\",\n expand: \"展開\",\n collapse: \"收合\",\n dragToReorder: \"拖曳以重新排序\",\n dragToResize: \"拖曳以調整大小\",\n editHint: \"雙擊以編輯\",\n previous: \"上一頁\",\n next: \"下一頁\",\n pageRange: \"{from}–{to} 共 {total}\",\n perPage: \"{size} / 頁\",\n },\n};\n\n/** 日本語 (Japanese). */\nexport const jaJP: Locale = {\n locale: \"ja-JP\",\n datePicker: {\n months: [\n \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\",\n \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\",\n ],\n weekdaysShort: [\"月\", \"火\", \"水\", \"木\", \"金\", \"土\", \"日\"],\n title: \"{year}年{month}\",\n },\n timePicker: { am: \"午前\", pm: \"午後\" },\n pagination: { previous: \"前へ\", next: \"次へ\" },\n modal: { close: \"閉じる\" },\n drawer: { close: \"閉じる\" },\n alert: { dismiss: \"閉じる\" },\n banner: { dismiss: \"閉じる\" },\n toast: { dismiss: \"閉じる\" },\n fileUpload: { clickToUpload: \"クリックしてアップロード\", orDragAndDrop: \"またはドラッグ&ドロップ\" },\n imageUpload: { label: \"画像をアップロード\", remove: \"削除\" },\n passwordStrength: { weak: \"弱い\", fair: \"普通\", good: \"良い\", strong: \"強い\" },\n commandMenu: {\n placeholder: \"コマンドを入力または検索…\",\n esc: \"ESC\",\n noResults: '\"{query}\" の検索結果がありません。',\n },\n selectMenu: { placeholder: \"選択…\" },\n chip: { remove: \"削除\" },\n tag: { remove: \"削除\" },\n rating: { star: \"{count}つ星\" },\n spinner: { loading: \"読み込み中\" },\n richEditorToolbar: {\n bold: \"太字\",\n italic: \"斜体\",\n underline: \"下線\",\n strike: \"取り消し線\",\n h1: \"見出し 1\",\n h2: \"見出し 2\",\n quote: \"引用\",\n code: \"コード\",\n ul: \"箇条書き\",\n ol: \"番号付きリスト\",\n link: \"リンク\",\n image: \"画像\",\n },\n list: { noData: \"データがありません\", loading: \"読み込み中…\" },\n autoComplete: { noResults: \"一致する項目がありません\" },\n cascader: { placeholder: \"選択…\" },\n popconfirm: { title: \"よろしいですか?\", confirm: \"確定\", cancel: \"キャンセル\" },\n carousel: { previous: \"前へ\", next: \"次へ\", goToSlide: \"スライド {n} へ移動\" },\n input: { clear: \"クリア\" },\n notification: { close: \"閉じる\" },\n form: {\n required: \"この項目は必須です\",\n empty: \"空にできません\",\n minChars: \"{min} 文字以上で入力してください\",\n maxChars: \"{max} 文字以内で入力してください\",\n exactChars: \"{len} 文字で入力してください\",\n oneOf: \"次のいずれかである必要があります:{values}\",\n invalidFormat: \"形式が無効です\",\n email: \"有効なメールアドレスを入力してください\",\n url: \"有効な URL を入力してください\",\n number: \"数値を入力してください\",\n integer: \"整数を入力してください\",\n min: \"{min} 以上である必要があります\",\n max: \"{max} 以下である必要があります\",\n },\n table: {\n noData: \"表示するデータがありません\",\n columns: \"列\",\n copy: \"コピー\",\n copyRow: \"行をコピー\",\n exportCsv: \"CSV をエクスポート\",\n filter: \"フィルター\",\n expand: \"展開\",\n collapse: \"折りたたむ\",\n dragToReorder: \"ドラッグして並べ替え\",\n dragToResize: \"ドラッグしてサイズ変更\",\n editHint: \"ダブルクリックして編集\",\n previous: \"前へ\",\n next: \"次へ\",\n pageRange: \"{total} 件中 {from}–{to}\",\n perPage: \"{size} 件 / ページ\",\n },\n};\n\n/** 한국어 (Korean). */\nexport const koKR: Locale = {\n locale: \"ko-KR\",\n datePicker: {\n months: [\n \"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\",\n \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\",\n ],\n weekdaysShort: [\"월\", \"화\", \"수\", \"목\", \"금\", \"토\", \"일\"],\n title: \"{year}년 {month}\",\n },\n timePicker: { am: \"오전\", pm: \"오후\" },\n pagination: { previous: \"이전\", next: \"다음\" },\n modal: { close: \"닫기\" },\n drawer: { close: \"닫기\" },\n alert: { dismiss: \"닫기\" },\n banner: { dismiss: \"닫기\" },\n toast: { dismiss: \"닫기\" },\n fileUpload: { clickToUpload: \"클릭하여 업로드\", orDragAndDrop: \"또는 드래그 앤 드롭\" },\n imageUpload: { label: \"이미지 업로드\", remove: \"제거\" },\n passwordStrength: { weak: \"약함\", fair: \"보통\", good: \"양호\", strong: \"강함\" },\n commandMenu: {\n placeholder: \"명령어 입력 또는 검색…\",\n esc: \"ESC\",\n noResults: '\"{query}\"에 대한 결과가 없습니다.',\n },\n selectMenu: { placeholder: \"선택…\" },\n chip: { remove: \"제거\" },\n tag: { remove: \"제거\" },\n rating: { star: \"별 {count}개\" },\n spinner: { loading: \"로딩 중\" },\n richEditorToolbar: {\n bold: \"굵게\",\n italic: \"기울임\",\n underline: \"밑줄\",\n strike: \"취소선\",\n h1: \"제목 1\",\n h2: \"제목 2\",\n quote: \"인용\",\n code: \"코드\",\n ul: \"글머리 기호 목록\",\n ol: \"번호 목록\",\n link: \"링크\",\n image: \"이미지\",\n },\n list: { noData: \"데이터 없음\", loading: \"로딩 중…\" },\n autoComplete: { noResults: \"일치하는 항목 없음\" },\n cascader: { placeholder: \"선택…\" },\n popconfirm: { title: \"확실합니까?\", confirm: \"확인\", cancel: \"취소\" },\n carousel: { previous: \"이전\", next: \"다음\", goToSlide: \"슬라이드 {n}(으)로 이동\" },\n input: { clear: \"지우기\" },\n notification: { close: \"닫기\" },\n form: {\n required: \"필수 입력 항목입니다\",\n empty: \"비워 둘 수 없습니다\",\n minChars: \"{min}자 이상이어야 합니다\",\n maxChars: \"{max}자 이하여야 합니다\",\n exactChars: \"정확히 {len}자여야 합니다\",\n oneOf: \"다음 중 하나여야 합니다: {values}\",\n invalidFormat: \"형식이 올바르지 않습니다\",\n email: \"유효한 이메일을 입력하세요\",\n url: \"유효한 URL을 입력하세요\",\n number: \"숫자여야 합니다\",\n integer: \"정수여야 합니다\",\n min: \"{min} 이상이어야 합니다\",\n max: \"{max} 이하여야 합니다\",\n },\n table: {\n noData: \"표시할 데이터가 없습니다\",\n columns: \"열\",\n copy: \"복사\",\n copyRow: \"행 복사\",\n exportCsv: \"CSV 내보내기\",\n filter: \"필터\",\n expand: \"펼치기\",\n collapse: \"접기\",\n dragToReorder: \"드래그하여 순서 변경\",\n dragToResize: \"드래그하여 크기 조정\",\n editHint: \"더블클릭하여 편집\",\n previous: \"이전\",\n next: \"다음\",\n pageRange: \"{total}개 중 {from}–{to}\",\n perPage: \"{size}개 / 페이지\",\n },\n};\n\n/** Français (French). */\nexport const frFR: Locale = {\n locale: \"fr-FR\",\n datePicker: {\n months: [\n \"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\",\n \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\",\n ],\n weekdaysShort: [\"lu\", \"ma\", \"me\", \"je\", \"ve\", \"sa\", \"di\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"AM\", pm: \"PM\" },\n pagination: { previous: \"Précédent\", next: \"Suivant\" },\n modal: { close: \"Fermer\" },\n drawer: { close: \"Fermer\" },\n alert: { dismiss: \"Fermer\" },\n banner: { dismiss: \"Fermer\" },\n toast: { dismiss: \"Fermer\" },\n fileUpload: { clickToUpload: \"Cliquez pour téléverser\", orDragAndDrop: \"ou glissez-déposez\" },\n imageUpload: { label: \"Téléverser une image\", remove: \"Supprimer\" },\n passwordStrength: { weak: \"Faible\", fair: \"Moyen\", good: \"Bon\", strong: \"Fort\" },\n commandMenu: {\n placeholder: \"Tapez une commande ou recherchez…\",\n esc: \"ESC\",\n noResults: \"Aucun résultat pour « {query} ».\",\n },\n selectMenu: { placeholder: \"Sélectionner…\" },\n chip: { remove: \"Supprimer\" },\n tag: { remove: \"Supprimer\" },\n rating: { star: \"{count} étoile\" },\n spinner: { loading: \"Chargement\" },\n richEditorToolbar: {\n bold: \"Gras\",\n italic: \"Italique\",\n underline: \"Souligné\",\n strike: \"Barré\",\n h1: \"Titre 1\",\n h2: \"Titre 2\",\n quote: \"Citation\",\n code: \"Code\",\n ul: \"Liste à puces\",\n ol: \"Liste numérotée\",\n link: \"Lien\",\n image: \"Image\",\n },\n list: { noData: \"Aucune donnée\", loading: \"Chargement…\" },\n autoComplete: { noResults: \"Aucune correspondance\" },\n cascader: { placeholder: \"Sélectionner…\" },\n popconfirm: { title: \"Êtes-vous sûr ?\", confirm: \"Confirmer\", cancel: \"Annuler\" },\n carousel: { previous: \"Précédent\", next: \"Suivant\", goToSlide: \"Aller à la diapositive {n}\" },\n input: { clear: \"Effacer\" },\n notification: { close: \"Fermer\" },\n form: {\n required: \"Ce champ est obligatoire\",\n empty: \"Ne peut pas être vide\",\n minChars: \"Doit comporter au moins {min} caractères\",\n maxChars: \"Doit comporter au plus {max} caractères\",\n exactChars: \"Doit comporter exactement {len} caractères\",\n oneOf: \"Doit être l’un de : {values}\",\n invalidFormat: \"Format invalide\",\n email: \"Saisissez une adresse e-mail valide\",\n url: \"Saisissez une URL valide\",\n number: \"Doit être un nombre\",\n integer: \"Doit être un nombre entier\",\n min: \"Doit être ≥ {min}\",\n max: \"Doit être ≤ {max}\",\n },\n table: {\n noData: \"Aucune donnée à afficher\",\n columns: \"Colonnes\",\n copy: \"Copier\",\n copyRow: \"Copier la ligne\",\n exportCsv: \"Exporter en CSV\",\n filter: \"Filtrer\",\n expand: \"Développer\",\n collapse: \"Réduire\",\n dragToReorder: \"Glisser pour réorganiser\",\n dragToResize: \"Glisser pour redimensionner\",\n editHint: \"Double-cliquez pour modifier\",\n previous: \"Précédent\",\n next: \"Suivant\",\n pageRange: \"{from}–{to} sur {total}\",\n perPage: \"{size} / page\",\n },\n};\n\n/** Deutsch (German). */\nexport const deDE: Locale = {\n locale: \"de-DE\",\n datePicker: {\n months: [\n \"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\",\n \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\",\n ],\n weekdaysShort: [\"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\", \"So\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"AM\", pm: \"PM\" },\n pagination: { previous: \"Zurück\", next: \"Weiter\" },\n modal: { close: \"Schließen\" },\n drawer: { close: \"Schließen\" },\n alert: { dismiss: \"Schließen\" },\n banner: { dismiss: \"Schließen\" },\n toast: { dismiss: \"Schließen\" },\n fileUpload: { clickToUpload: \"Zum Hochladen klicken\", orDragAndDrop: \"oder per Drag & Drop\" },\n imageUpload: { label: \"Bild hochladen\", remove: \"Entfernen\" },\n passwordStrength: { weak: \"Schwach\", fair: \"Mittel\", good: \"Gut\", strong: \"Stark\" },\n commandMenu: {\n placeholder: \"Befehl eingeben oder suchen…\",\n esc: \"ESC\",\n noResults: \"Keine Ergebnisse für „{query}“.\",\n },\n selectMenu: { placeholder: \"Auswählen…\" },\n chip: { remove: \"Entfernen\" },\n tag: { remove: \"Entfernen\" },\n rating: { star: \"{count} Stern\" },\n spinner: { loading: \"Wird geladen\" },\n richEditorToolbar: {\n bold: \"Fett\",\n italic: \"Kursiv\",\n underline: \"Unterstrichen\",\n strike: \"Durchgestrichen\",\n h1: \"Überschrift 1\",\n h2: \"Überschrift 2\",\n quote: \"Zitat\",\n code: \"Code\",\n ul: \"Aufzählung\",\n ol: \"Nummerierte Liste\",\n link: \"Link\",\n image: \"Bild\",\n },\n list: { noData: \"Keine Daten\", loading: \"Wird geladen…\" },\n autoComplete: { noResults: \"Keine Treffer\" },\n cascader: { placeholder: \"Auswählen…\" },\n popconfirm: { title: \"Sind Sie sicher?\", confirm: \"Bestätigen\", cancel: \"Abbrechen\" },\n carousel: { previous: \"Zurück\", next: \"Weiter\", goToSlide: \"Zu Folie {n} springen\" },\n input: { clear: \"Löschen\" },\n notification: { close: \"Schließen\" },\n form: {\n required: \"Dieses Feld ist erforderlich\",\n empty: \"Darf nicht leer sein\",\n minChars: \"Muss mindestens {min} Zeichen lang sein\",\n maxChars: \"Darf höchstens {max} Zeichen lang sein\",\n exactChars: \"Muss genau {len} Zeichen lang sein\",\n oneOf: \"Muss eines von folgenden sein: {values}\",\n invalidFormat: \"Ungültiges Format\",\n email: \"Geben Sie eine gültige E-Mail-Adresse ein\",\n url: \"Geben Sie eine gültige URL ein\",\n number: \"Muss eine Zahl sein\",\n integer: \"Muss eine ganze Zahl sein\",\n min: \"Muss ≥ {min} sein\",\n max: \"Muss ≤ {max} sein\",\n },\n table: {\n noData: \"Keine Daten vorhanden\",\n columns: \"Spalten\",\n copy: \"Kopieren\",\n copyRow: \"Zeile kopieren\",\n exportCsv: \"CSV exportieren\",\n filter: \"Filtern\",\n expand: \"Erweitern\",\n collapse: \"Reduzieren\",\n dragToReorder: \"Zum Neuordnen ziehen\",\n dragToResize: \"Zum Anpassen der Größe ziehen\",\n editHint: \"Zum Bearbeiten doppelklicken\",\n previous: \"Zurück\",\n next: \"Weiter\",\n pageRange: \"{from}–{to} von {total}\",\n perPage: \"{size} / Seite\",\n },\n};\n\n/** Español (Spanish). */\nexport const esES: Locale = {\n locale: \"es-ES\",\n datePicker: {\n months: [\n \"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\",\n \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\",\n ],\n weekdaysShort: [\"lu\", \"ma\", \"mi\", \"ju\", \"vi\", \"sá\", \"do\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"AM\", pm: \"PM\" },\n pagination: { previous: \"Anterior\", next: \"Siguiente\" },\n modal: { close: \"Cerrar\" },\n drawer: { close: \"Cerrar\" },\n alert: { dismiss: \"Cerrar\" },\n banner: { dismiss: \"Cerrar\" },\n toast: { dismiss: \"Cerrar\" },\n fileUpload: { clickToUpload: \"Haz clic para subir\", orDragAndDrop: \"o arrastra y suelta\" },\n imageUpload: { label: \"Subir imagen\", remove: \"Eliminar\" },\n passwordStrength: { weak: \"Débil\", fair: \"Regular\", good: \"Buena\", strong: \"Fuerte\" },\n commandMenu: {\n placeholder: \"Escribe un comando o busca…\",\n esc: \"ESC\",\n noResults: \"No hay resultados para «{query}».\",\n },\n selectMenu: { placeholder: \"Seleccionar…\" },\n chip: { remove: \"Eliminar\" },\n tag: { remove: \"Eliminar\" },\n rating: { star: \"{count} estrella\" },\n spinner: { loading: \"Cargando\" },\n richEditorToolbar: {\n bold: \"Negrita\",\n italic: \"Cursiva\",\n underline: \"Subrayado\",\n strike: \"Tachado\",\n h1: \"Encabezado 1\",\n h2: \"Encabezado 2\",\n quote: \"Cita\",\n code: \"Código\",\n ul: \"Lista con viñetas\",\n ol: \"Lista numerada\",\n link: \"Enlace\",\n image: \"Imagen\",\n },\n list: { noData: \"Sin datos\", loading: \"Cargando…\" },\n autoComplete: { noResults: \"Sin coincidencias\" },\n cascader: { placeholder: \"Seleccionar…\" },\n popconfirm: { title: \"¿Estás seguro?\", confirm: \"Confirmar\", cancel: \"Cancelar\" },\n carousel: { previous: \"Anterior\", next: \"Siguiente\", goToSlide: \"Ir a la diapositiva {n}\" },\n input: { clear: \"Borrar\" },\n notification: { close: \"Cerrar\" },\n form: {\n required: \"Este campo es obligatorio\",\n empty: \"No puede estar vacío\",\n minChars: \"Debe tener al menos {min} caracteres\",\n maxChars: \"Debe tener como máximo {max} caracteres\",\n exactChars: \"Debe tener exactamente {len} caracteres\",\n oneOf: \"Debe ser uno de: {values}\",\n invalidFormat: \"Formato no válido\",\n email: \"Introduce un correo electrónico válido\",\n url: \"Introduce una URL válida\",\n number: \"Debe ser un número\",\n integer: \"Debe ser un número entero\",\n min: \"Debe ser ≥ {min}\",\n max: \"Debe ser ≤ {max}\",\n },\n table: {\n noData: \"No hay datos para mostrar\",\n columns: \"Columnas\",\n copy: \"Copiar\",\n copyRow: \"Copiar fila\",\n exportCsv: \"Exportar CSV\",\n filter: \"Filtrar\",\n expand: \"Expandir\",\n collapse: \"Contraer\",\n dragToReorder: \"Arrastra para reordenar\",\n dragToResize: \"Arrastra para redimensionar\",\n editHint: \"Haz doble clic para editar\",\n previous: \"Anterior\",\n next: \"Siguiente\",\n pageRange: \"{from}–{to} de {total}\",\n perPage: \"{size} / página\",\n },\n};\n\n/** Português (Brasil) (Brazilian Portuguese). */\nexport const ptBR: Locale = {\n locale: \"pt-BR\",\n datePicker: {\n months: [\n \"janeiro\", \"fevereiro\", \"março\", \"abril\", \"maio\", \"junho\",\n \"julho\", \"agosto\", \"setembro\", \"outubro\", \"novembro\", \"dezembro\",\n ],\n weekdaysShort: [\"seg\", \"ter\", \"qua\", \"qui\", \"sex\", \"sáb\", \"dom\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"AM\", pm: \"PM\" },\n pagination: { previous: \"Anterior\", next: \"Próximo\" },\n modal: { close: \"Fechar\" },\n drawer: { close: \"Fechar\" },\n alert: { dismiss: \"Fechar\" },\n banner: { dismiss: \"Fechar\" },\n toast: { dismiss: \"Fechar\" },\n fileUpload: { clickToUpload: \"Clique para enviar\", orDragAndDrop: \"ou arraste e solte\" },\n imageUpload: { label: \"Enviar imagem\", remove: \"Remover\" },\n passwordStrength: { weak: \"Fraca\", fair: \"Razoável\", good: \"Boa\", strong: \"Forte\" },\n commandMenu: {\n placeholder: \"Digite um comando ou pesquise…\",\n esc: \"ESC\",\n noResults: 'Nenhum resultado para \"{query}\".',\n },\n selectMenu: { placeholder: \"Selecionar…\" },\n chip: { remove: \"Remover\" },\n tag: { remove: \"Remover\" },\n rating: { star: \"{count} estrela\" },\n spinner: { loading: \"Carregando\" },\n richEditorToolbar: {\n bold: \"Negrito\",\n italic: \"Itálico\",\n underline: \"Sublinhado\",\n strike: \"Tachado\",\n h1: \"Título 1\",\n h2: \"Título 2\",\n quote: \"Citação\",\n code: \"Código\",\n ul: \"Lista com marcadores\",\n ol: \"Lista numerada\",\n link: \"Link\",\n image: \"Imagem\",\n },\n list: { noData: \"Sem dados\", loading: \"Carregando…\" },\n autoComplete: { noResults: \"Nenhuma correspondência\" },\n cascader: { placeholder: \"Selecionar…\" },\n popconfirm: { title: \"Tem certeza?\", confirm: \"Confirmar\", cancel: \"Cancelar\" },\n carousel: { previous: \"Anterior\", next: \"Próximo\", goToSlide: \"Ir para o slide {n}\" },\n input: { clear: \"Limpar\" },\n notification: { close: \"Fechar\" },\n form: {\n required: \"Este campo é obrigatório\",\n empty: \"Não pode ficar vazio\",\n minChars: \"Deve ter pelo menos {min} caracteres\",\n maxChars: \"Deve ter no máximo {max} caracteres\",\n exactChars: \"Deve ter exatamente {len} caracteres\",\n oneOf: \"Deve ser um de: {values}\",\n invalidFormat: \"Formato inválido\",\n email: \"Digite um e-mail válido\",\n url: \"Digite uma URL válida\",\n number: \"Deve ser um número\",\n integer: \"Deve ser um número inteiro\",\n min: \"Deve ser ≥ {min}\",\n max: \"Deve ser ≤ {max}\",\n },\n table: {\n noData: \"Nenhum dado para exibir\",\n columns: \"Colunas\",\n copy: \"Copiar\",\n copyRow: \"Copiar linha\",\n exportCsv: \"Exportar CSV\",\n filter: \"Filtrar\",\n expand: \"Expandir\",\n collapse: \"Recolher\",\n dragToReorder: \"Arraste para reordenar\",\n dragToResize: \"Arraste para redimensionar\",\n editHint: \"Clique duas vezes para editar\",\n previous: \"Anterior\",\n next: \"Próximo\",\n pageRange: \"{from}–{to} de {total}\",\n perPage: \"{size} / página\",\n },\n};\n\n/** Русский (Russian). */\nexport const ruRU: Locale = {\n locale: \"ru-RU\",\n datePicker: {\n months: [\n \"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Май\", \"Июнь\",\n \"Июль\", \"Август\", \"Сентябрь\", \"Октябрь\", \"Ноябрь\", \"Декабрь\",\n ],\n weekdaysShort: [\"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\", \"Вс\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"AM\", pm: \"PM\" },\n pagination: { previous: \"Назад\", next: \"Вперёд\" },\n modal: { close: \"Закрыть\" },\n drawer: { close: \"Закрыть\" },\n alert: { dismiss: \"Закрыть\" },\n banner: { dismiss: \"Закрыть\" },\n toast: { dismiss: \"Закрыть\" },\n fileUpload: { clickToUpload: \"Нажмите для загрузки\", orDragAndDrop: \"или перетащите\" },\n imageUpload: { label: \"Загрузить изображение\", remove: \"Удалить\" },\n passwordStrength: { weak: \"Слабый\", fair: \"Средний\", good: \"Хороший\", strong: \"Надёжный\" },\n commandMenu: {\n placeholder: \"Введите команду или поиск…\",\n esc: \"ESC\",\n noResults: \"Нет результатов для «{query}».\",\n },\n selectMenu: { placeholder: \"Выберите…\" },\n chip: { remove: \"Удалить\" },\n tag: { remove: \"Удалить\" },\n rating: { star: \"{count} звезда\" },\n spinner: { loading: \"Загрузка\" },\n richEditorToolbar: {\n bold: \"Полужирный\",\n italic: \"Курсив\",\n underline: \"Подчёркнутый\",\n strike: \"Зачёркнутый\",\n h1: \"Заголовок 1\",\n h2: \"Заголовок 2\",\n quote: \"Цитата\",\n code: \"Код\",\n ul: \"Маркированный список\",\n ol: \"Нумерованный список\",\n link: \"Ссылка\",\n image: \"Изображение\",\n },\n list: { noData: \"Нет данных\", loading: \"Загрузка…\" },\n autoComplete: { noResults: \"Нет совпадений\" },\n cascader: { placeholder: \"Выберите…\" },\n popconfirm: { title: \"Вы уверены?\", confirm: \"Подтвердить\", cancel: \"Отмена\" },\n carousel: { previous: \"Назад\", next: \"Вперёд\", goToSlide: \"Перейти к слайду {n}\" },\n input: { clear: \"Очистить\" },\n notification: { close: \"Закрыть\" },\n form: {\n required: \"Это поле обязательно\",\n empty: \"Не может быть пустым\",\n minChars: \"Должно содержать не менее {min} символов\",\n maxChars: \"Должно содержать не более {max} символов\",\n exactChars: \"Должно содержать ровно {len} символов\",\n oneOf: \"Должно быть одним из: {values}\",\n invalidFormat: \"Неверный формат\",\n email: \"Введите действительный адрес эл. почты\",\n url: \"Введите действительный URL\",\n number: \"Должно быть числом\",\n integer: \"Должно быть целым числом\",\n min: \"Должно быть ≥ {min}\",\n max: \"Должно быть ≤ {max}\",\n },\n table: {\n noData: \"Нет данных для отображения\",\n columns: \"Столбцы\",\n copy: \"Копировать\",\n copyRow: \"Копировать строку\",\n exportCsv: \"Экспорт в CSV\",\n filter: \"Фильтр\",\n expand: \"Развернуть\",\n collapse: \"Свернуть\",\n dragToReorder: \"Перетащите для изменения порядка\",\n dragToResize: \"Перетащите для изменения размера\",\n editHint: \"Дважды щёлкните для редактирования\",\n previous: \"Назад\",\n next: \"Вперёд\",\n pageRange: \"{from}–{to} из {total}\",\n perPage: \"{size} / страница\",\n },\n};\n\n/** العربية (Arabic). Pairs with `dir=\"rtl\"` on the ConfigProvider. */\nexport const arSA: Locale = {\n locale: \"ar-SA\",\n datePicker: {\n months: [\n \"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\",\n \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\",\n ],\n weekdaysShort: [\"إثن\", \"ثلا\", \"أرب\", \"خمي\", \"جمع\", \"سبت\", \"أحد\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"ص\", pm: \"م\" },\n pagination: { previous: \"السابق\", next: \"التالي\" },\n modal: { close: \"إغلاق\" },\n drawer: { close: \"إغلاق\" },\n alert: { dismiss: \"إغلاق\" },\n banner: { dismiss: \"إغلاق\" },\n toast: { dismiss: \"إغلاق\" },\n fileUpload: { clickToUpload: \"انقر للرفع\", orDragAndDrop: \"أو اسحب وأفلت\" },\n imageUpload: { label: \"رفع صورة\", remove: \"إزالة\" },\n passwordStrength: { weak: \"ضعيف\", fair: \"مقبول\", good: \"جيد\", strong: \"قوي\" },\n commandMenu: {\n placeholder: \"اكتب أمرًا أو ابحث…\",\n esc: \"ESC\",\n noResults: 'لا توجد نتائج لـ \"{query}\".',\n },\n selectMenu: { placeholder: \"اختر…\" },\n chip: { remove: \"إزالة\" },\n tag: { remove: \"إزالة\" },\n rating: { star: \"{count} نجمة\" },\n spinner: { loading: \"جارٍ التحميل\" },\n richEditorToolbar: {\n bold: \"غامق\",\n italic: \"مائل\",\n underline: \"تسطير\",\n strike: \"يتوسطه خط\",\n h1: \"عنوان 1\",\n h2: \"عنوان 2\",\n quote: \"اقتباس\",\n code: \"كود\",\n ul: \"قائمة نقطية\",\n ol: \"قائمة مرقمة\",\n link: \"رابط\",\n image: \"صورة\",\n },\n list: { noData: \"لا توجد بيانات\", loading: \"جارٍ التحميل…\" },\n autoComplete: { noResults: \"لا توجد مطابقات\" },\n cascader: { placeholder: \"اختر…\" },\n popconfirm: { title: \"هل أنت متأكد؟\", confirm: \"تأكيد\", cancel: \"إلغاء\" },\n carousel: { previous: \"السابق\", next: \"التالي\", goToSlide: \"الانتقال إلى الشريحة {n}\" },\n input: { clear: \"مسح\" },\n notification: { close: \"إغلاق\" },\n form: {\n required: \"هذا الحقل مطلوب\",\n empty: \"لا يمكن أن يكون فارغًا\",\n minChars: \"يجب ألا يقل عن {min} حرفًا\",\n maxChars: \"يجب ألا يزيد عن {max} حرفًا\",\n exactChars: \"يجب أن يكون {len} حرفًا بالضبط\",\n oneOf: \"يجب أن يكون واحدًا من: {values}\",\n invalidFormat: \"تنسيق غير صالح\",\n email: \"أدخل بريدًا إلكترونيًا صالحًا\",\n url: \"أدخل عنوان URL صالحًا\",\n number: \"يجب أن يكون رقمًا\",\n integer: \"يجب أن يكون عددًا صحيحًا\",\n min: \"يجب أن يكون ≥ {min}\",\n max: \"يجب أن يكون ≤ {max}\",\n },\n table: {\n noData: \"لا توجد بيانات للعرض\",\n columns: \"الأعمدة\",\n copy: \"نسخ\",\n copyRow: \"نسخ الصف\",\n exportCsv: \"تصدير CSV\",\n filter: \"تصفية\",\n expand: \"توسيع\",\n collapse: \"طي\",\n dragToReorder: \"اسحب لإعادة الترتيب\",\n dragToResize: \"اسحب لتغيير الحجم\",\n editHint: \"انقر نقرًا مزدوجًا للتحرير\",\n previous: \"السابق\",\n next: \"التالي\",\n pageRange: \"{from}–{to} من {total}\",\n perPage: \"{size} / صفحة\",\n },\n};\n\n/** Italiano (Italian). */\nexport const itIT: Locale = {\n locale: \"it-IT\",\n datePicker: {\n months: [\n \"gennaio\", \"febbraio\", \"marzo\", \"aprile\", \"maggio\", \"giugno\",\n \"luglio\", \"agosto\", \"settembre\", \"ottobre\", \"novembre\", \"dicembre\",\n ],\n weekdaysShort: [\"lu\", \"ma\", \"me\", \"gi\", \"ve\", \"sa\", \"do\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"AM\", pm: \"PM\" },\n pagination: { previous: \"Precedente\", next: \"Successivo\" },\n modal: { close: \"Chiudi\" },\n drawer: { close: \"Chiudi\" },\n alert: { dismiss: \"Chiudi\" },\n banner: { dismiss: \"Chiudi\" },\n toast: { dismiss: \"Chiudi\" },\n fileUpload: { clickToUpload: \"Clicca per caricare\", orDragAndDrop: \"o trascina qui\" },\n imageUpload: { label: \"Carica immagine\", remove: \"Rimuovi\" },\n passwordStrength: { weak: \"Debole\", fair: \"Discreta\", good: \"Buona\", strong: \"Forte\" },\n commandMenu: {\n placeholder: \"Digita un comando o cerca…\",\n esc: \"ESC\",\n noResults: 'Nessun risultato per \"{query}\".',\n },\n selectMenu: { placeholder: \"Seleziona…\" },\n chip: { remove: \"Rimuovi\" },\n tag: { remove: \"Rimuovi\" },\n rating: { star: \"{count} stella\" },\n spinner: { loading: \"Caricamento\" },\n richEditorToolbar: {\n bold: \"Grassetto\",\n italic: \"Corsivo\",\n underline: \"Sottolineato\",\n strike: \"Barrato\",\n h1: \"Titolo 1\",\n h2: \"Titolo 2\",\n quote: \"Citazione\",\n code: \"Codice\",\n ul: \"Elenco puntato\",\n ol: \"Elenco numerato\",\n link: \"Link\",\n image: \"Immagine\",\n },\n list: { noData: \"Nessun dato\", loading: \"Caricamento…\" },\n autoComplete: { noResults: \"Nessuna corrispondenza\" },\n cascader: { placeholder: \"Seleziona…\" },\n popconfirm: { title: \"Sei sicuro?\", confirm: \"Conferma\", cancel: \"Annulla\" },\n carousel: { previous: \"Precedente\", next: \"Successivo\", goToSlide: \"Vai alla diapositiva {n}\" },\n input: { clear: \"Cancella\" },\n notification: { close: \"Chiudi\" },\n form: {\n required: \"Questo campo è obbligatorio\",\n empty: \"Non può essere vuoto\",\n minChars: \"Deve contenere almeno {min} caratteri\",\n maxChars: \"Deve contenere al massimo {max} caratteri\",\n exactChars: \"Deve contenere esattamente {len} caratteri\",\n oneOf: \"Deve essere uno di: {values}\",\n invalidFormat: \"Formato non valido\",\n email: \"Inserisci un’email valida\",\n url: \"Inserisci un URL valido\",\n number: \"Deve essere un numero\",\n integer: \"Deve essere un numero intero\",\n min: \"Deve essere ≥ {min}\",\n max: \"Deve essere ≤ {max}\",\n },\n table: {\n noData: \"Nessun dato da mostrare\",\n columns: \"Colonne\",\n copy: \"Copia\",\n copyRow: \"Copia riga\",\n exportCsv: \"Esporta CSV\",\n filter: \"Filtra\",\n expand: \"Espandi\",\n collapse: \"Comprimi\",\n dragToReorder: \"Trascina per riordinare\",\n dragToResize: \"Trascina per ridimensionare\",\n editHint: \"Fai doppio clic per modificare\",\n previous: \"Precedente\",\n next: \"Successivo\",\n pageRange: \"{from}–{to} di {total}\",\n perPage: \"{size} / pagina\",\n },\n};\n\n/** Nederlands (Dutch). */\nexport const nlNL: Locale = {\n locale: \"nl-NL\",\n datePicker: {\n months: [\n \"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\",\n \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\",\n ],\n weekdaysShort: [\"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\", \"zo\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"AM\", pm: \"PM\" },\n pagination: { previous: \"Vorige\", next: \"Volgende\" },\n modal: { close: \"Sluiten\" },\n drawer: { close: \"Sluiten\" },\n alert: { dismiss: \"Sluiten\" },\n banner: { dismiss: \"Sluiten\" },\n toast: { dismiss: \"Sluiten\" },\n fileUpload: { clickToUpload: \"Klik om te uploaden\", orDragAndDrop: \"of sleep hierheen\" },\n imageUpload: { label: \"Afbeelding uploaden\", remove: \"Verwijderen\" },\n passwordStrength: { weak: \"Zwak\", fair: \"Redelijk\", good: \"Goed\", strong: \"Sterk\" },\n commandMenu: {\n placeholder: \"Typ een opdracht of zoek…\",\n esc: \"ESC\",\n noResults: 'Geen resultaten voor \"{query}\".',\n },\n selectMenu: { placeholder: \"Selecteren…\" },\n chip: { remove: \"Verwijderen\" },\n tag: { remove: \"Verwijderen\" },\n rating: { star: \"{count} ster\" },\n spinner: { loading: \"Laden\" },\n richEditorToolbar: {\n bold: \"Vet\",\n italic: \"Cursief\",\n underline: \"Onderstrepen\",\n strike: \"Doorhalen\",\n h1: \"Kop 1\",\n h2: \"Kop 2\",\n quote: \"Citaat\",\n code: \"Code\",\n ul: \"Opsommingslijst\",\n ol: \"Genummerde lijst\",\n link: \"Link\",\n image: \"Afbeelding\",\n },\n list: { noData: \"Geen gegevens\", loading: \"Laden…\" },\n autoComplete: { noResults: \"Geen overeenkomsten\" },\n cascader: { placeholder: \"Selecteren…\" },\n popconfirm: { title: \"Weet je het zeker?\", confirm: \"Bevestigen\", cancel: \"Annuleren\" },\n carousel: { previous: \"Vorige\", next: \"Volgende\", goToSlide: \"Ga naar dia {n}\" },\n input: { clear: \"Wissen\" },\n notification: { close: \"Sluiten\" },\n form: {\n required: \"Dit veld is verplicht\",\n empty: \"Mag niet leeg zijn\",\n minChars: \"Moet minimaal {min} tekens bevatten\",\n maxChars: \"Mag maximaal {max} tekens bevatten\",\n exactChars: \"Moet precies {len} tekens bevatten\",\n oneOf: \"Moet een van de volgende zijn: {values}\",\n invalidFormat: \"Ongeldig formaat\",\n email: \"Voer een geldig e-mailadres in\",\n url: \"Voer een geldige URL in\",\n number: \"Moet een getal zijn\",\n integer: \"Moet een geheel getal zijn\",\n min: \"Moet ≥ {min} zijn\",\n max: \"Moet ≤ {max} zijn\",\n },\n table: {\n noData: \"Geen gegevens om weer te geven\",\n columns: \"Kolommen\",\n copy: \"Kopiëren\",\n copyRow: \"Rij kopiëren\",\n exportCsv: \"CSV exporteren\",\n filter: \"Filteren\",\n expand: \"Uitvouwen\",\n collapse: \"Samenvouwen\",\n dragToReorder: \"Sleep om te herordenen\",\n dragToResize: \"Sleep om de grootte aan te passen\",\n editHint: \"Dubbelklik om te bewerken\",\n previous: \"Vorige\",\n next: \"Volgende\",\n pageRange: \"{from}–{to} van {total}\",\n perPage: \"{size} / pagina\",\n },\n};\n\n/** Polski (Polish). */\nexport const plPL: Locale = {\n locale: \"pl-PL\",\n datePicker: {\n months: [\n \"styczeń\", \"luty\", \"marzec\", \"kwiecień\", \"maj\", \"czerwiec\",\n \"lipiec\", \"sierpień\", \"wrzesień\", \"październik\", \"listopad\", \"grudzień\",\n ],\n weekdaysShort: [\"pon\", \"wt\", \"śr\", \"czw\", \"pt\", \"sob\", \"ndz\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"AM\", pm: \"PM\" },\n pagination: { previous: \"Poprzednia\", next: \"Następna\" },\n modal: { close: \"Zamknij\" },\n drawer: { close: \"Zamknij\" },\n alert: { dismiss: \"Zamknij\" },\n banner: { dismiss: \"Zamknij\" },\n toast: { dismiss: \"Zamknij\" },\n fileUpload: { clickToUpload: \"Kliknij, aby przesłać\", orDragAndDrop: \"lub przeciągnij i upuść\" },\n imageUpload: { label: \"Prześlij obraz\", remove: \"Usuń\" },\n passwordStrength: { weak: \"Słabe\", fair: \"Średnie\", good: \"Dobre\", strong: \"Silne\" },\n commandMenu: {\n placeholder: \"Wpisz polecenie lub szukaj…\",\n esc: \"ESC\",\n noResults: 'Brak wyników dla „{query}\".',\n },\n selectMenu: { placeholder: \"Wybierz…\" },\n chip: { remove: \"Usuń\" },\n tag: { remove: \"Usuń\" },\n rating: { star: \"{count} gwiazdka\" },\n spinner: { loading: \"Ładowanie\" },\n richEditorToolbar: {\n bold: \"Pogrubienie\",\n italic: \"Kursywa\",\n underline: \"Podkreślenie\",\n strike: \"Przekreślenie\",\n h1: \"Nagłówek 1\",\n h2: \"Nagłówek 2\",\n quote: \"Cytat\",\n code: \"Kod\",\n ul: \"Lista punktowana\",\n ol: \"Lista numerowana\",\n link: \"Link\",\n image: \"Obraz\",\n },\n list: { noData: \"Brak danych\", loading: \"Ładowanie…\" },\n autoComplete: { noResults: \"Brak dopasowań\" },\n cascader: { placeholder: \"Wybierz…\" },\n popconfirm: { title: \"Czy na pewno?\", confirm: \"Potwierdź\", cancel: \"Anuluj\" },\n carousel: { previous: \"Poprzednia\", next: \"Następna\", goToSlide: \"Przejdź do slajdu {n}\" },\n input: { clear: \"Wyczyść\" },\n notification: { close: \"Zamknij\" },\n form: {\n required: \"To pole jest wymagane\",\n empty: \"Nie może być puste\",\n minChars: \"Musi zawierać co najmniej {min} znaków\",\n maxChars: \"Może zawierać maksymalnie {max} znaków\",\n exactChars: \"Musi zawierać dokładnie {len} znaków\",\n oneOf: \"Musi być jednym z: {values}\",\n invalidFormat: \"Nieprawidłowy format\",\n email: \"Wprowadź prawidłowy adres e-mail\",\n url: \"Wprowadź prawidłowy adres URL\",\n number: \"Musi być liczbą\",\n integer: \"Musi być liczbą całkowitą\",\n min: \"Musi być ≥ {min}\",\n max: \"Musi być ≤ {max}\",\n },\n table: {\n noData: \"Brak danych do wyświetlenia\",\n columns: \"Kolumny\",\n copy: \"Kopiuj\",\n copyRow: \"Kopiuj wiersz\",\n exportCsv: \"Eksportuj CSV\",\n filter: \"Filtruj\",\n expand: \"Rozwiń\",\n collapse: \"Zwiń\",\n dragToReorder: \"Przeciągnij, aby zmienić kolejność\",\n dragToResize: \"Przeciągnij, aby zmienić rozmiar\",\n editHint: \"Kliknij dwukrotnie, aby edytować\",\n previous: \"Poprzednia\",\n next: \"Następna\",\n pageRange: \"{from}–{to} z {total}\",\n perPage: \"{size} / strona\",\n },\n};\n\n/** Türkçe (Turkish). */\nexport const trTR: Locale = {\n locale: \"tr-TR\",\n datePicker: {\n months: [\n \"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\",\n \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\",\n ],\n weekdaysShort: [\"Pzt\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cmt\", \"Paz\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"ÖÖ\", pm: \"ÖS\" },\n pagination: { previous: \"Önceki\", next: \"Sonraki\" },\n modal: { close: \"Kapat\" },\n drawer: { close: \"Kapat\" },\n alert: { dismiss: \"Kapat\" },\n banner: { dismiss: \"Kapat\" },\n toast: { dismiss: \"Kapat\" },\n fileUpload: { clickToUpload: \"Yüklemek için tıklayın\", orDragAndDrop: \"veya sürükleyip bırakın\" },\n imageUpload: { label: \"Görsel yükle\", remove: \"Kaldır\" },\n passwordStrength: { weak: \"Zayıf\", fair: \"Orta\", good: \"İyi\", strong: \"Güçlü\" },\n commandMenu: {\n placeholder: \"Bir komut yazın veya arayın…\",\n esc: \"ESC\",\n noResults: '\"{query}\" için sonuç yok.',\n },\n selectMenu: { placeholder: \"Seçin…\" },\n chip: { remove: \"Kaldır\" },\n tag: { remove: \"Kaldır\" },\n rating: { star: \"{count} yıldız\" },\n spinner: { loading: \"Yükleniyor\" },\n richEditorToolbar: {\n bold: \"Kalın\",\n italic: \"İtalik\",\n underline: \"Altı çizili\",\n strike: \"Üstü çizili\",\n h1: \"Başlık 1\",\n h2: \"Başlık 2\",\n quote: \"Alıntı\",\n code: \"Kod\",\n ul: \"Madde işaretli liste\",\n ol: \"Numaralı liste\",\n link: \"Bağlantı\",\n image: \"Görsel\",\n },\n list: { noData: \"Veri yok\", loading: \"Yükleniyor…\" },\n autoComplete: { noResults: \"Eşleşme yok\" },\n cascader: { placeholder: \"Seçin…\" },\n popconfirm: { title: \"Emin misiniz?\", confirm: \"Onayla\", cancel: \"İptal\" },\n carousel: { previous: \"Önceki\", next: \"Sonraki\", goToSlide: \"{n}. slayta git\" },\n input: { clear: \"Temizle\" },\n notification: { close: \"Kapat\" },\n form: {\n required: \"Bu alan zorunludur\",\n empty: \"Boş bırakılamaz\",\n minChars: \"En az {min} karakter olmalıdır\",\n maxChars: \"En fazla {max} karakter olmalıdır\",\n exactChars: \"Tam olarak {len} karakter olmalıdır\",\n oneOf: \"Şunlardan biri olmalıdır: {values}\",\n invalidFormat: \"Geçersiz biçim\",\n email: \"Geçerli bir e-posta girin\",\n url: \"Geçerli bir URL girin\",\n number: \"Sayı olmalıdır\",\n integer: \"Tam sayı olmalıdır\",\n min: \"≥ {min} olmalıdır\",\n max: \"≤ {max} olmalıdır\",\n },\n table: {\n noData: \"Gösterilecek veri yok\",\n columns: \"Sütunlar\",\n copy: \"Kopyala\",\n copyRow: \"Satırı kopyala\",\n exportCsv: \"CSV dışa aktar\",\n filter: \"Filtrele\",\n expand: \"Genişlet\",\n collapse: \"Daralt\",\n dragToReorder: \"Yeniden sıralamak için sürükleyin\",\n dragToResize: \"Yeniden boyutlandırmak için sürükleyin\",\n editHint: \"Düzenlemek için çift tıklayın\",\n previous: \"Önceki\",\n next: \"Sonraki\",\n pageRange: \"{total} öğeden {from}–{to}\",\n perPage: \"{size} / sayfa\",\n },\n};\n\n/** Tiếng Việt (Vietnamese). */\nexport const viVN: Locale = {\n locale: \"vi-VN\",\n datePicker: {\n months: [\n \"Tháng 1\", \"Tháng 2\", \"Tháng 3\", \"Tháng 4\", \"Tháng 5\", \"Tháng 6\",\n \"Tháng 7\", \"Tháng 8\", \"Tháng 9\", \"Tháng 10\", \"Tháng 11\", \"Tháng 12\",\n ],\n weekdaysShort: [\"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\", \"CN\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"SA\", pm: \"CH\" },\n pagination: { previous: \"Trước\", next: \"Sau\" },\n modal: { close: \"Đóng\" },\n drawer: { close: \"Đóng\" },\n alert: { dismiss: \"Đóng\" },\n banner: { dismiss: \"Đóng\" },\n toast: { dismiss: \"Đóng\" },\n fileUpload: { clickToUpload: \"Nhấp để tải lên\", orDragAndDrop: \"hoặc kéo và thả\" },\n imageUpload: { label: \"Tải ảnh lên\", remove: \"Xóa\" },\n passwordStrength: { weak: \"Yếu\", fair: \"Trung bình\", good: \"Tốt\", strong: \"Mạnh\" },\n commandMenu: {\n placeholder: \"Nhập lệnh hoặc tìm kiếm…\",\n esc: \"ESC\",\n noResults: 'Không có kết quả cho \"{query}\".',\n },\n selectMenu: { placeholder: \"Chọn…\" },\n chip: { remove: \"Xóa\" },\n tag: { remove: \"Xóa\" },\n rating: { star: \"{count} sao\" },\n spinner: { loading: \"Đang tải\" },\n richEditorToolbar: {\n bold: \"Đậm\",\n italic: \"Nghiêng\",\n underline: \"Gạch chân\",\n strike: \"Gạch ngang\",\n h1: \"Tiêu đề 1\",\n h2: \"Tiêu đề 2\",\n quote: \"Trích dẫn\",\n code: \"Mã\",\n ul: \"Danh sách dấu đầu dòng\",\n ol: \"Danh sách đánh số\",\n link: \"Liên kết\",\n image: \"Hình ảnh\",\n },\n list: { noData: \"Không có dữ liệu\", loading: \"Đang tải…\" },\n autoComplete: { noResults: \"Không có kết quả phù hợp\" },\n cascader: { placeholder: \"Chọn…\" },\n popconfirm: { title: \"Bạn có chắc không?\", confirm: \"Xác nhận\", cancel: \"Hủy\" },\n carousel: { previous: \"Trước\", next: \"Sau\", goToSlide: \"Chuyển đến trang chiếu {n}\" },\n input: { clear: \"Xóa\" },\n notification: { close: \"Đóng\" },\n form: {\n required: \"Trường này là bắt buộc\",\n empty: \"Không được để trống\",\n minChars: \"Phải có ít nhất {min} ký tự\",\n maxChars: \"Tối đa {max} ký tự\",\n exactChars: \"Phải có chính xác {len} ký tự\",\n oneOf: \"Phải là một trong: {values}\",\n invalidFormat: \"Định dạng không hợp lệ\",\n email: \"Nhập email hợp lệ\",\n url: \"Nhập URL hợp lệ\",\n number: \"Phải là một số\",\n integer: \"Phải là số nguyên\",\n min: \"Phải ≥ {min}\",\n max: \"Phải ≤ {max}\",\n },\n table: {\n noData: \"Không có dữ liệu để hiển thị\",\n columns: \"Cột\",\n copy: \"Sao chép\",\n copyRow: \"Sao chép hàng\",\n exportCsv: \"Xuất CSV\",\n filter: \"Lọc\",\n expand: \"Mở rộng\",\n collapse: \"Thu gọn\",\n dragToReorder: \"Kéo để sắp xếp lại\",\n dragToResize: \"Kéo để thay đổi kích thước\",\n editHint: \"Nhấp đúp để chỉnh sửa\",\n previous: \"Trước\",\n next: \"Sau\",\n pageRange: \"{from}–{to} trong {total}\",\n perPage: \"{size} / trang\",\n },\n};\n\n/** Bahasa Indonesia (Indonesian). */\nexport const idID: Locale = {\n locale: \"id-ID\",\n datePicker: {\n months: [\n \"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\",\n \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\",\n ],\n weekdaysShort: [\"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\", \"Min\"],\n title: \"{month} {year}\",\n },\n timePicker: { am: \"AM\", pm: \"PM\" },\n pagination: { previous: \"Sebelumnya\", next: \"Berikutnya\" },\n modal: { close: \"Tutup\" },\n drawer: { close: \"Tutup\" },\n alert: { dismiss: \"Tutup\" },\n banner: { dismiss: \"Tutup\" },\n toast: { dismiss: \"Tutup\" },\n fileUpload: { clickToUpload: \"Klik untuk mengunggah\", orDragAndDrop: \"atau seret dan lepas\" },\n imageUpload: { label: \"Unggah gambar\", remove: \"Hapus\" },\n passwordStrength: { weak: \"Lemah\", fair: \"Cukup\", good: \"Baik\", strong: \"Kuat\" },\n commandMenu: {\n placeholder: \"Ketik perintah atau cari…\",\n esc: \"ESC\",\n noResults: 'Tidak ada hasil untuk \"{query}\".',\n },\n selectMenu: { placeholder: \"Pilih…\" },\n chip: { remove: \"Hapus\" },\n tag: { remove: \"Hapus\" },\n rating: { star: \"{count} bintang\" },\n spinner: { loading: \"Memuat\" },\n richEditorToolbar: {\n bold: \"Tebal\",\n italic: \"Miring\",\n underline: \"Garis bawah\",\n strike: \"Coret\",\n h1: \"Judul 1\",\n h2: \"Judul 2\",\n quote: \"Kutipan\",\n code: \"Kode\",\n ul: \"Daftar berpoin\",\n ol: \"Daftar bernomor\",\n link: \"Tautan\",\n image: \"Gambar\",\n },\n list: { noData: \"Tidak ada data\", loading: \"Memuat…\" },\n autoComplete: { noResults: \"Tidak ada kecocokan\" },\n cascader: { placeholder: \"Pilih…\" },\n popconfirm: { title: \"Apakah Anda yakin?\", confirm: \"Konfirmasi\", cancel: \"Batal\" },\n carousel: { previous: \"Sebelumnya\", next: \"Berikutnya\", goToSlide: \"Buka slide {n}\" },\n input: { clear: \"Hapus\" },\n notification: { close: \"Tutup\" },\n form: {\n required: \"Bidang ini wajib diisi\",\n empty: \"Tidak boleh kosong\",\n minChars: \"Harus minimal {min} karakter\",\n maxChars: \"Maksimal {max} karakter\",\n exactChars: \"Harus tepat {len} karakter\",\n oneOf: \"Harus salah satu dari: {values}\",\n invalidFormat: \"Format tidak valid\",\n email: \"Masukkan email yang valid\",\n url: \"Masukkan URL yang valid\",\n number: \"Harus berupa angka\",\n integer: \"Harus berupa bilangan bulat\",\n min: \"Harus ≥ {min}\",\n max: \"Harus ≤ {max}\",\n },\n table: {\n noData: \"Tidak ada data untuk ditampilkan\",\n columns: \"Kolom\",\n copy: \"Salin\",\n copyRow: \"Salin baris\",\n exportCsv: \"Ekspor CSV\",\n filter: \"Filter\",\n expand: \"Perluas\",\n collapse: \"Ciutkan\",\n dragToReorder: \"Seret untuk mengubah urutan\",\n dragToResize: \"Seret untuk mengubah ukuran\",\n editHint: \"Klik dua kali untuk mengedit\",\n previous: \"Sebelumnya\",\n next: \"Berikutnya\",\n pageRange: \"{from}–{to} dari {total}\",\n perPage: \"{size} / halaman\",\n },\n};\n\n/** All built-in locales, keyed by their export name. */\nexport const locales = {\n enUS, zhCN, zhTW, jaJP, koKR, frFR, deDE, esES, ptBR, ruRU, arSA,\n itIT, nlNL, plPL, trTR, viVN, idID,\n};\n","import { createContext, useContext, useMemo, type CSSProperties, type ReactNode } from \"react\";\nimport { enUS, type Locale } from \"./locales\";\n\n/** Global default size for components whose scale includes these values. */\nexport type ComponentSize = \"small\" | \"medium\" | \"large\";\n\n/** Text direction. */\nexport type Direction = \"ltr\" | \"rtl\";\n\n/** Color scheme. */\nexport type Theme = \"light\" | \"dark\";\n\n/**\n * Accent / primary color ramp (maps to the design system's `data-mode`).\n * `\"metronic\"` is a full Metronic 9.0 skin — it re-points the whole semantic\n * palette (surfaces, text, strokes, intents, radii) onto Metronic colors, not\n * just the primary ramp. Orthogonal to `theme`, so it works in light and dark.\n */\nexport type Accent = \"blue\" | \"purple\" | \"orange\" | \"green\" | \"slate\" | \"metronic\";\n\n/**\n * Global corner-radius scale (maps to `data-radius`). `\"square\"` = 0-radius\n * (sharp) corners, `\"sharp\"` = tight, `\"rounded\"` = soft. The functional pill\n * radius (round avatars / switches / pill badges) is always preserved.\n */\nexport type Radius = \"default\" | \"sharp\" | \"square\" | \"rounded\";\n\nexport interface KlunConfig {\n /** Active locale dictionary. */\n locale: Locale;\n /** Default size applied to components that receive no explicit `size` prop. */\n size?: ComponentSize;\n /** Text direction. */\n dir: Direction;\n /** Color scheme. `undefined` inherits the document/default (light) theme. */\n theme?: Theme;\n /** Accent (primary) color ramp. `undefined` inherits the default (blue). */\n accent?: Accent;\n /** Global corner-radius scale. `undefined` inherits the default. */\n radius?: Radius;\n /** Custom primary color (e.g. a hex). Overrides `accent`; a shade/tint ramp is derived. */\n primaryColor?: string;\n}\n\nconst DEFAULT_CONFIG: KlunConfig = {\n locale: enUS,\n size: undefined,\n dir: \"ltr\",\n theme: undefined,\n accent: undefined,\n radius: undefined,\n primaryColor: undefined,\n};\n\n/** Parse `#rgb` / `#rrggbb` to `[r,g,b]`, or `null` if not a hex color. */\nfunction hexToRgb(hex: string): [number, number, number] | null {\n let h = hex.trim().replace(/^#/, \"\");\n if (h.length === 3) h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];\n if (h.length !== 6 || /[^0-9a-f]/i.test(h)) return null;\n const n = parseInt(h, 16);\n return [(n >> 16) & 255, (n >> 8) & 255, n & 255];\n}\n\n/**\n * Derive the `--klun-primary-*` token ramp from a single base color. A hex input\n * produces the full shade/tint ramp + alpha tints; any other CSS color sets just\n * the base. Used by ConfigProvider's `primaryColor`, exported for manual use.\n */\nexport function primaryColorVars(color: string): Record<string, string> {\n const vars: Record<string, string> = { \"--klun-primary-base\": color };\n const rgb = hexToRgb(color);\n if (!rgb) return vars;\n const [r, g, b] = rgb;\n const hex2 = (x: number) => Math.round(x).toString(16).padStart(2, \"0\");\n const toward = (target: number, amt: number) => (c: number) => hex2(c * (1 - amt) + target * amt);\n const shade = (target: number, amt: number) => {\n const f = toward(target, amt);\n return `#${f(r)}${f(g)}${f(b)}`;\n };\n const rgba = (a: number) => `rgba(${r}, ${g}, ${b}, ${a})`;\n vars[\"--klun-primary-dark\"] = shade(0, 0.14);\n vars[\"--klun-primary-darkest\"] = shade(0, 0.28);\n vars[\"--klun-primary-light\"] = shade(255, 0.74);\n vars[\"--klun-primary-lighter-2\"] = shade(255, 0.84);\n vars[\"--klun-primary-lighter\"] = shade(255, 0.92);\n vars[\"--klun-alpha-primary-alpha-10\"] = rgba(0.1);\n vars[\"--klun-alpha-primary-alpha-16\"] = rgba(0.16);\n vars[\"--klun-alpha-primary-alpha-24\"] = rgba(0.24);\n return vars;\n}\n\nconst ConfigContext = createContext<KlunConfig>(DEFAULT_CONFIG);\n\nexport interface ConfigProviderProps {\n /** Locale dictionary. Defaults to `enUS` (or the nearest parent provider's). */\n locale?: Locale;\n /** Global default component size. */\n size?: ComponentSize;\n /** Text direction. Default `\"ltr\"`. */\n dir?: Direction;\n /** Color scheme applied to the subtree (`light` | `dark`). */\n theme?: Theme;\n /** Accent (primary) color ramp applied to the subtree. */\n accent?: Accent;\n /** Global corner-radius scale applied to the subtree. */\n radius?: Radius;\n /** Custom primary color (e.g. a hex). Overrides `accent`; a ramp is derived. */\n primaryColor?: string;\n children?: ReactNode;\n}\n\n/**\n * ConfigProvider — supplies a global locale, default size, text direction and\n * theme/accent to the klun-ui components rendered below it. Values are inherited\n * from a parent provider when present, so providers can be nested to scope\n * overrides. `theme`/`accent` set `data-theme`/`data-mode` on the wrapper, which\n * re-points the design tokens for the whole subtree; `primaryColor` overrides the\n * accent with a ramp derived from any hex. Without any provider, components fall\n * back to en-US / ltr / default theme, so usage is fully optional.\n */\nexport function ConfigProvider({\n locale,\n size,\n dir,\n theme,\n accent,\n radius,\n primaryColor,\n children,\n}: ConfigProviderProps) {\n const parent = useContext(ConfigContext);\n const value = useMemo<KlunConfig>(\n () => ({\n locale: locale ?? parent.locale,\n size: size ?? parent.size,\n dir: dir ?? parent.dir,\n theme: theme ?? parent.theme,\n accent: accent ?? parent.accent,\n radius: radius ?? parent.radius,\n primaryColor: primaryColor ?? parent.primaryColor,\n }),\n [locale, size, dir, theme, accent, radius, primaryColor, parent],\n );\n const style = useMemo<CSSProperties>(() => {\n const s: Record<string, string> = { display: \"contents\" };\n if (value.primaryColor) Object.assign(s, primaryColorVars(value.primaryColor));\n return s as CSSProperties;\n }, [value.primaryColor]);\n return (\n <ConfigContext.Provider value={value}>\n <div\n className=\"klun-config\"\n dir={value.dir}\n data-theme={value.theme}\n data-mode={value.accent}\n data-radius={value.radius && value.radius !== \"default\" ? value.radius : undefined}\n style={style}\n >\n {children}\n </div>\n </ConfigContext.Provider>\n );\n}\nConfigProvider.displayName = \"ConfigProvider\";\n\n/** Read the full klun-ui config from the nearest provider (or built-in defaults). */\nexport function useConfig(): KlunConfig {\n return useContext(ConfigContext);\n}\n\n/** Read the active locale dictionary. */\nexport function useLocale(): Locale {\n return useContext(ConfigContext).locale;\n}\n\n/**\n * Resolve a component's size: explicit prop wins, then the provider's global\n * `size`, then `\"medium\"`. Returns the explicit prop's own size type.\n */\nexport function useSize<S extends string = ComponentSize>(explicit?: S): S {\n const { size } = useContext(ConfigContext);\n return (explicit ?? size ?? \"medium\") as S;\n}\n\n/**\n * Resolve a size for a component whose own scale differs from the global one —\n * it lacks a tier (e.g. no `large`) or uses different names (`sm`/`md`/`lg`).\n * `explicit` wins; otherwise the provider's global size is translated through\n * `map` (which clamps/renames each global tier to a value this component\n * supports); with no provider size it returns `fallback`.\n */\nexport function useMappedSize<S extends string>(\n explicit: S | undefined,\n map: Record<ComponentSize, S>,\n fallback: S,\n): S {\n const { size } = useContext(ConfigContext);\n if (explicit !== undefined) return explicit;\n if (size !== undefined) return map[size];\n return fallback;\n}\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize, useMappedSize } from \"../config/ConfigProvider\";\n\n/** Which visual family the button belongs to. */\nexport type ButtonKind = \"default\" | \"fancy\" | \"compact\" | \"link\";\n\n/* ---- default kind axes ---- */\nexport type ButtonVariant = \"primary\" | \"neutral\" | \"error\";\nexport type ButtonAppearance = \"filled\" | \"stroke\" | \"lighter\" | \"ghost\";\nexport type ButtonSize = \"xsmall\" | \"small\" | \"medium\" | \"large\";\n\n/* ---- fancy kind axes ---- */\nexport type FancyButtonVariant = \"accent\" | \"dark\" | \"feature\" | \"glass\";\nexport type FancyButtonSize = \"small\" | \"medium\" | \"large\";\n\n/* ---- compact kind axes ---- */\nexport type CompactButtonAppearance = \"stroke\" | \"ghost\" | \"white\" | \"filled\";\nexport type CompactButtonSize = \"small\" | \"medium\";\n\n/* ---- link kind axes ---- */\nexport type LinkButtonVariant = \"gray\" | \"primary\" | \"error\";\nexport type LinkButtonSize = \"small\" | \"medium\";\n\ninterface CommonButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"type\"> {\n /** Native button type. Default `\"button\"`. */\n type?: \"button\" | \"submit\" | \"reset\";\n /** Show a spinner, hide icons and make the button non-interactive. */\n loading?: boolean;\n}\n\n/**\n * The standard button — a labelled action, or a square icon-only control via\n * `iconOnly`. Pick a `variant` (color intent), an `appearance` (surface) and a\n * `size`.\n */\nexport interface DefaultButtonProps extends CommonButtonProps {\n kind?: \"default\";\n /** Color intent. Default `\"primary\"`. */\n variant?: ButtonVariant;\n /** Surface style. Default `\"filled\"`. */\n appearance?: ButtonAppearance;\n /** Default `\"medium\"`. */\n size?: ButtonSize;\n /** Icon node before the label. */\n leadingIcon?: ReactNode;\n /** Icon node after the label. */\n trailingIcon?: ReactNode;\n /** Render as a square icon-only button. */\n iconOnly?: boolean;\n /** Icon node for `iconOnly` (falls back to `leadingIcon`, then `children`). */\n icon?: ReactNode;\n /** Stretch to the full width of the container. */\n fullWidth?: boolean;\n}\n\n/** Elevated, sheened CTA — for hero / marketing actions. */\nexport interface FancyButtonProps extends CommonButtonProps {\n kind: \"fancy\";\n /** Visual treatment. Default `\"accent\"`. */\n variant?: FancyButtonVariant;\n /** Default `\"medium\"`. */\n size?: FancyButtonSize;\n leadingIcon?: ReactNode;\n trailingIcon?: ReactNode;\n fullWidth?: boolean;\n}\n\n/** Small square/full-radius icon-or-text control for dense toolbars. */\nexport interface CompactButtonProps extends CommonButtonProps {\n kind: \"compact\";\n /** Surface style. Default `\"stroke\"`. */\n appearance?: CompactButtonAppearance;\n /** Default `\"medium\"`. */\n size?: CompactButtonSize;\n /** Use a pill radius instead of the default small radius. */\n fullRadius?: boolean;\n /** Icon node (compact is icon-first). */\n icon?: ReactNode;\n}\n\n/** Text-only link styled as an inline action. */\nexport interface LinkButtonProps extends CommonButtonProps {\n kind: \"link\";\n /** Color intent. Default `\"gray\"`. */\n variant?: LinkButtonVariant;\n /** Default `\"medium\"`. */\n size?: LinkButtonSize;\n /** Underline the label. */\n underline?: boolean;\n leadingIcon?: ReactNode;\n trailingIcon?: ReactNode;\n}\n\nexport type ButtonProps =\n | DefaultButtonProps\n | FancyButtonProps\n | CompactButtonProps\n | LinkButtonProps;\n\nconst COMPACT_SIZE_MAP = { small: \"small\", medium: \"medium\", large: \"medium\" } as const;\n\nfunction Spinner({ className, size }: { className: string; size?: number }) {\n return (\n <svg\n className={className}\n data-klun-spin\n {...(size ? { width: size, height: size } : null)}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden\n >\n <circle cx=\"10\" cy=\"10\" r=\"7\" stroke=\"currentColor\" strokeOpacity=\"0.25\" strokeWidth=\"2.5\" />\n <circle\n cx=\"10\"\n cy=\"10\"\n r=\"7\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeDasharray=\"44\"\n strokeDashoffset=\"31\"\n />\n </svg>\n );\n}\n\n/**\n * Button — the single action control for the whole button family. The `kind`\n * prop selects the visual family and which other props apply:\n *\n * - `kind=\"default\"` (omit): standard button. `variant` × `appearance` × `size`;\n * set `iconOnly` for a square icon button.\n * - `kind=\"fancy\"`: elevated sheened CTA. `variant` = accent | dark | feature | glass.\n * - `kind=\"compact\"`: dense toolbar control. `appearance`, `fullRadius`, `icon`.\n * - `kind=\"link\"`: inline text link. `variant` = gray | primary | error, `underline`.\n *\n * For connected segmented buttons, see `ButtonGroup`.\n */\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(props, ref) {\n // Both size resolvers run every render so the Rules of Hooks hold regardless\n // of `kind`; each branch picks the one matching its scale.\n const sizeStd = useSize(props.size as ButtonSize | undefined);\n const sizeSmall = useMappedSize(\n props.size as CompactButtonSize | undefined,\n COMPACT_SIZE_MAP,\n \"medium\",\n );\n\n const kind = props.kind ?? \"default\";\n const loading = props.loading ?? false;\n\n if (kind === \"fancy\") {\n const {\n variant = \"accent\",\n leadingIcon,\n trailingIcon,\n fullWidth = false,\n disabled = false,\n className,\n children,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n kind: _k,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n size: _s,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n loading: _l,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type: _t,\n ...rest\n } = props as FancyButtonProps;\n return (\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={cx(\n \"klun-fancy-button\",\n `klun-fancy-button--${variant}`,\n `klun-fancy-button--${sizeStd}`,\n fullWidth && \"klun-fancy-button--full\",\n loading && \"klun-fancy-button--loading\",\n className,\n )}\n {...rest}\n >\n <span aria-hidden className=\"klun-fancy-button__sheen\" />\n {loading ? (\n <span className=\"klun-fancy-button__icon\">\n <Spinner className=\"klun-fancy-button__spinner\" size={20} />\n </span>\n ) : leadingIcon ? (\n <span className=\"klun-fancy-button__icon\">{leadingIcon}</span>\n ) : null}\n <span className=\"klun-fancy-button__label\">{children}</span>\n {trailingIcon && !loading ? (\n <span className=\"klun-fancy-button__icon\">{trailingIcon}</span>\n ) : null}\n </button>\n );\n }\n\n if (kind === \"compact\") {\n const {\n appearance = \"stroke\",\n fullRadius = false,\n icon,\n children,\n disabled = false,\n type = \"button\",\n className,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n kind: _k,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n size: _s,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n loading: _l,\n ...rest\n } = props as CompactButtonProps;\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={cx(\n \"klun-compact-button\",\n `klun-compact-button--${appearance}`,\n `klun-compact-button--${sizeSmall}`,\n fullRadius && \"klun-compact-button--full-radius\",\n children != null && \"klun-compact-button--has-label\",\n loading && \"klun-compact-button--loading\",\n className,\n )}\n {...rest}\n >\n {loading ? (\n <span className=\"klun-compact-button__icon\">\n <Spinner className=\"klun-compact-button__spinner\" />\n </span>\n ) : icon ? (\n <span className=\"klun-compact-button__icon\">{icon}</span>\n ) : null}\n {loading ? null : children}\n </button>\n );\n }\n\n if (kind === \"link\") {\n const {\n variant = \"gray\",\n underline = false,\n leadingIcon,\n trailingIcon,\n children,\n disabled = false,\n type = \"button\",\n className,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n kind: _k,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n size: _s,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n loading: _l,\n ...rest\n } = props as LinkButtonProps;\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n className={cx(\n \"klun-link-button\",\n `klun-link-button--${variant}`,\n `klun-link-button--${sizeSmall}`,\n underline && \"klun-link-button--underline\",\n loading && \"klun-link-button--loading\",\n className,\n )}\n {...rest}\n >\n {loading ? (\n <span className=\"klun-link-button__icon\">\n <Spinner className=\"klun-link-button__spinner\" size={16} />\n </span>\n ) : leadingIcon ? (\n <span className=\"klun-link-button__icon\">{leadingIcon}</span>\n ) : null}\n {children}\n {trailingIcon && !loading ? (\n <span className=\"klun-link-button__icon\">{trailingIcon}</span>\n ) : null}\n </button>\n );\n }\n\n // ---- default kind: text button, or square icon-only button ----\n const {\n variant = \"primary\",\n appearance = \"filled\",\n leadingIcon,\n trailingIcon,\n iconOnly = false,\n icon,\n fullWidth = false,\n disabled = false,\n type = \"button\",\n className,\n children,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n kind: _k,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n size: _s,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n loading: _l,\n ...rest\n } = props as DefaultButtonProps;\n const isDisabled = disabled || loading;\n\n if (iconOnly) {\n return (\n <button\n ref={ref}\n type={type}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n className={cx(\n \"klun-icon-button\",\n `klun-icon-button--${variant}`,\n `klun-icon-button--${appearance}`,\n `klun-icon-button--${sizeStd}`,\n loading && \"klun-icon-button--loading\",\n className,\n )}\n {...rest}\n >\n <span className=\"klun-icon-button__icon\">\n {loading ? <Spinner className=\"klun-icon-button__spinner\" /> : (icon ?? leadingIcon ?? children)}\n </span>\n </button>\n );\n }\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n className={cx(\n \"klun-button\",\n `klun-button--${variant}`,\n `klun-button--${appearance}`,\n `klun-button--${sizeStd}`,\n fullWidth && \"klun-button--full\",\n loading && \"klun-button--loading\",\n className,\n )}\n {...rest}\n >\n {loading ? (\n <span className=\"klun-button__icon\">\n <Spinner className=\"klun-button__spinner\" size={20} />\n </span>\n ) : leadingIcon ? (\n <span className=\"klun-button__icon\">{leadingIcon}</span>\n ) : null}\n {children != null ? <span>{children}</span> : null}\n {trailingIcon && !loading ? <span className=\"klun-button__icon\">{trailingIcon}</span> : null}\n </button>\n );\n});\n\nButton.displayName = \"Button\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport type ButtonGroupSize = \"small\" | \"medium\" | \"large\";\n\nexport interface ButtonGroupItem {\n value: string;\n label?: ReactNode;\n icon?: ReactNode;\n}\n\nexport interface ButtonGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Segments to render. */\n items: ButtonGroupItem[];\n /** Currently selected segment value. */\n value?: string;\n /** Fired with the value of the clicked segment. */\n onChange?: (value: string) => void;\n /** Default `\"medium\"`. */\n size?: ButtonGroupSize;\n /** Stretch segments to fill the container. */\n fullWidth?: boolean;\n}\n\n/**\n * ButtonGroup — connected segmented buttons sharing a single border.\n * Pick a `size`, pass `items`, and track the active `value`.\n */\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(function ButtonGroup(\n { items = [], value, onChange, size: sizeProp, fullWidth = false, className, ...props },\n ref,\n) {\n const size = useSize(sizeProp);\n return (\n <div\n ref={ref}\n role=\"group\"\n className={cx(\n \"klun-button-group\",\n `klun-button-group--${size}`,\n fullWidth && \"klun-button-group--full\",\n className,\n )}\n {...props}\n >\n {items.map((it, i) => {\n const active = it.value === value;\n return (\n <button\n key={it.value ?? i}\n type=\"button\"\n className={cx(\n \"klun-button-group__item\",\n !it.label && \"klun-button-group__item--icon-only\",\n )}\n aria-pressed={active}\n onClick={() => onChange && onChange(it.value)}\n >\n {it.icon ? <span className=\"klun-button-group__icon\">{it.icon}</span> : null}\n {it.label}\n </button>\n );\n })}\n </div>\n );\n});\n\nButtonGroup.displayName = \"ButtonGroup\";\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\n/** Box size of the control. */\nexport type CopyButtonSize = \"sm\" | \"md\" | \"lg\";\n/** Surface style. */\nexport type CopyButtonVariant = \"ghost\" | \"stroke\";\n\nexport interface CopyButtonProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"value\"> {\n /** The value copied to the clipboard. */\n value: string;\n /** Optional label — turns the icon-only square into a labelled pill. */\n children?: ReactNode;\n /** Fired after a successful copy — use to show a toast. */\n onCopied?: (value: string) => void;\n size?: CopyButtonSize;\n variant?: CopyButtonVariant;\n copyIcon?: string;\n doneIcon?: string;\n}\n\nfunction fallbackCopy(text: string): void {\n try {\n const ta = document.createElement(\"textarea\");\n ta.value = text;\n ta.style.position = \"fixed\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.focus();\n ta.select();\n document.execCommand(\"copy\");\n document.body.removeChild(ta);\n } catch {\n /* noop */\n }\n}\n\nfunction writeClipboard(text: string): Promise<void> {\n if (navigator.clipboard && navigator.clipboard.writeText) {\n return navigator.clipboard.writeText(text).catch(() => fallbackCopy(text));\n }\n return Promise.resolve(fallbackCopy(text));\n}\n\n/**\n * CopyButton — copies `value` to the clipboard and flips to a transient success\n * state for 1400ms. Icon-only square by default; pass `children` for a labelled\n * pill. Fire `onCopied` to show a toast.\n */\nexport const CopyButton = forwardRef<HTMLButtonElement, CopyButtonProps>(\n function CopyButton(\n {\n value,\n children,\n onCopied,\n size = \"md\",\n variant = \"ghost\",\n copyIcon = \"ri-file-copy-line\",\n doneIcon = \"ri-check-line\",\n title = \"Copy\",\n onClick,\n className,\n ...props\n },\n ref,\n ) {\n const [done, setDone] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => () => clearTimeout(timer.current ?? undefined), []);\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n const text = String(value ?? \"\");\n void writeClipboard(text);\n setDone(true);\n onCopied?.(text);\n clearTimeout(timer.current ?? undefined);\n timer.current = setTimeout(() => setDone(false), 1400);\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n title={title}\n aria-label={title}\n className={cx(\n \"klun-copy-button\",\n `klun-copy-button--${variant}`,\n `klun-copy-button--${size}`,\n children != null && \"klun-copy-button--has-label\",\n done && \"klun-copy-button--done\",\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <i className={done ? doneIcon : copyIcon} aria-hidden />\n {children}\n </button>\n );\n },\n);\n\nCopyButton.displayName = \"CopyButton\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type AvatarSize = \"20\" | \"24\" | \"32\" | \"40\" | \"48\" | \"56\" | \"64\" | \"72\" | \"80\";\nexport type AvatarStatus = \"online\" | \"busy\" | \"away\" | \"offline\";\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n size?: AvatarSize;\n src?: string;\n alt?: string;\n initials?: string;\n color?: \"gray\" | \"blue\" | \"purple\" | \"green\" | \"orange\" | \"yellow\";\n status?: AvatarStatus;\n icon?: ReactNode;\n}\n\n/**\n * Avatar — user image, initials, or icon with optional status dot.\n */\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n { size = \"40\", src, alt = \"\", initials, color = \"gray\", status, icon, className, ...props },\n ref,\n) {\n return (\n <span\n ref={ref}\n className={cx(\"klun-avatar\", `klun-avatar--${size}`, `klun-avatar--${color}`, className)}\n {...props}\n >\n <span className=\"klun-avatar__surface\">\n {src ? (\n <img className=\"klun-avatar__img\" src={src} alt={alt} />\n ) : icon ? (\n <span className=\"klun-avatar__icon\">{icon}</span>\n ) : (\n <span>{initials}</span>\n )}\n </span>\n {status ? <span className={cx(\"klun-avatar__status\", `klun-avatar__status--${status}`)} /> : null}\n </span>\n );\n});\n\nAvatar.displayName = \"Avatar\";\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { Avatar, type AvatarProps } from \"./Avatar\";\n\nexport interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {\n avatars?: AvatarProps[];\n size?: \"24\" | \"32\" | \"40\" | \"48\";\n max?: number;\n /** Container chrome around the stack. Default `\"none\"`. */\n variant?: \"none\" | \"stroke\" | \"filled\";\n}\n\n/**\n * AvatarGroup — overlapping avatar stack with optional +N overflow.\n */\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(function AvatarGroup(\n { avatars = [], size = \"40\", max = 4, variant = \"none\", className, ...props },\n ref,\n) {\n const shown = avatars.slice(0, max);\n const extra = avatars.length - shown.length;\n return (\n <div\n ref={ref}\n className={cx(\"klun-avatar-group\", `klun-avatar-group--${size}`, `klun-avatar-group--${variant}`, className)}\n {...props}\n >\n {shown.map((a, i) => (\n <span key={i} className=\"klun-avatar-group__item\">\n <Avatar size={size} {...a} />\n </span>\n ))}\n {extra > 0 ? <span className=\"klun-avatar-group__extra\">+{extra}</span> : null}\n </div>\n );\n});\n\nAvatarGroup.displayName = \"AvatarGroup\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type BadgeColor =\n | \"gray\"\n | \"blue\"\n | \"orange\"\n | \"red\"\n | \"green\"\n | \"yellow\"\n | \"purple\"\n | \"sky\"\n | \"pink\"\n | \"teal\";\nexport type BadgeVariant = \"filled\" | \"light\" | \"lighter\" | \"stroke\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n color?: BadgeColor;\n variant?: BadgeVariant;\n size?: \"small\" | \"medium\";\n leadingIcon?: ReactNode;\n dot?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Badge — compact status / category marker. 10 colors × 4 variants × 2 sizes.\n */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { color = \"gray\", variant = \"lighter\", size = \"medium\", leadingIcon, dot = false, className, children, ...props },\n ref,\n) {\n return (\n <span\n ref={ref}\n className={cx(\n \"klun-badge\",\n `klun-badge--${color}`,\n `klun-badge--${variant}`,\n `klun-badge--${size}`,\n className,\n )}\n {...props}\n >\n {dot ? <span className=\"klun-badge__dot\" /> : null}\n {leadingIcon ? <span className=\"klun-badge__icon\">{leadingIcon}</span> : null}\n {children}\n </span>\n );\n});\n\nBadge.displayName = \"Badge\";\n","import {\n forwardRef,\n useEffect,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface BulkActionBarProps extends HTMLAttributes<HTMLDivElement> {\n count?: number;\n /** Force visibility (defaults to `count > 0`). */\n open?: boolean;\n onClear?: () => void;\n label?: ReactNode;\n position?: \"top\" | \"bottom\";\n /** CSS position: \"fixed\" (viewport) or \"sticky\"/\"absolute\". */\n sticky?: \"fixed\" | \"sticky\" | \"absolute\";\n}\n\n/**\n * Klun UI BulkActionBar — floating pill toolbar that appears when table rows are selected.\n * Renders a selection count chip, a label, a divider, your action buttons and an optional\n * clear control. Mounts/unmounts with a slide+fade driven by `count > 0` (or the `open` prop).\n */\nexport const BulkActionBar = forwardRef<HTMLDivElement, BulkActionBarProps>(\n function BulkActionBar(\n {\n count = 0,\n open,\n onClear,\n children,\n label,\n position = \"bottom\",\n sticky = \"fixed\",\n className,\n ...props\n },\n ref,\n ) {\n const visible = open != null ? open : count > 0;\n const [mounted, setMounted] = useState(visible);\n const [show, setShow] = useState(visible);\n\n useEffect(() => {\n if (visible) {\n setMounted(true);\n const id = requestAnimationFrame(() => setShow(true));\n return () => cancelAnimationFrame(id);\n }\n setShow(false);\n const t = setTimeout(() => setMounted(false), 200);\n return () => clearTimeout(t);\n }, [visible]);\n\n if (!mounted) return null;\n\n const countLabel =\n label != null ? label : `${count} selected`.replace(/^\\d+\\s*/, \"\");\n\n return (\n <div\n ref={ref}\n role=\"toolbar\"\n aria-label=\"Bulk actions\"\n data-show={show ? \"\" : undefined}\n className={cx(\n \"klun-bulk-action-bar\",\n `klun-bulk-action-bar--${position}`,\n `klun-bulk-action-bar--${sticky}`,\n className,\n )}\n {...props}\n >\n <span className=\"klun-bulk-action-bar__selection\">\n <span className=\"klun-bulk-action-bar__count\">{count}</span>\n {countLabel}\n </span>\n <span className=\"klun-bulk-action-bar__divider\" />\n <div className=\"klun-bulk-action-bar__actions\">{children}</div>\n {onClear ? (\n <button\n type=\"button\"\n onClick={onClear}\n aria-label=\"Clear selection\"\n title=\"Clear selection\"\n className=\"klun-bulk-action-bar__clear\"\n >\n <i className=\"ri-close-line\" aria-hidden />\n </button>\n ) : null}\n </div>\n );\n },\n);\n\nBulkActionBar.displayName = \"BulkActionBar\";\n\nexport interface BulkActionProps\n extends ButtonHTMLAttributes<HTMLButtonElement> {\n tone?: \"default\" | \"danger\";\n}\n\n/** Button styled for use inside a BulkActionBar (on the dark pill). */\nexport const BulkAction = forwardRef<HTMLButtonElement, BulkActionProps>(\n function BulkAction({ children, tone = \"default\", className, ...props }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cx(\"klun-bulk-action\", `klun-bulk-action--${tone}`, className)}\n {...props}\n >\n {children}\n </button>\n );\n },\n);\n\nBulkAction.displayName = \"BulkAction\";\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useState,\n Children,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\nimport { fmt } from \"../config/locales\";\n\nexport interface CarouselProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n children?: ReactNode;\n /** Controlled active index. */\n index?: number;\n defaultIndex?: number;\n onChange?: (index: number) => void;\n autoplay?: boolean;\n /** Autoplay interval in ms. */\n interval?: number;\n dots?: boolean;\n arrows?: boolean;\n loop?: boolean;\n height?: number | string;\n}\n\n/**\n * Klun UI Carousel — sliding content rotator with optional dots, arrows and\n * autoplay. Each direct child is one slide. Controlled or uncontrolled.\n */\nexport const Carousel = forwardRef<HTMLDivElement, CarouselProps>(function Carousel(\n {\n children,\n index,\n defaultIndex = 0,\n onChange,\n autoplay = false,\n interval = 4000,\n dots = true,\n arrows = true,\n loop = true,\n height = 240,\n className,\n style,\n ...props\n },\n ref,\n) {\n const { carousel } = useLocale();\n const slides = Children.toArray(children);\n const count = slides.length;\n const [inner, setInner] = useState(defaultIndex);\n const cur = index !== undefined ? index : inner;\n const [hover, setHover] = useState(false);\n\n const go = useCallback(\n (next: number) => {\n let n = next;\n if (n < 0) n = loop ? count - 1 : 0;\n if (n >= count) n = loop ? 0 : count - 1;\n if (index === undefined) setInner(n);\n onChange && onChange(n);\n },\n [count, loop, index, onChange],\n );\n\n useEffect(() => {\n if (!autoplay || hover || count <= 1) return;\n const id = setInterval(() => go(cur + 1), interval);\n return () => clearInterval(id);\n }, [autoplay, hover, cur, interval, count, go]);\n\n const arrowBtn = (dir: number) => (\n <button\n type=\"button\"\n aria-label={dir < 0 ? carousel.previous : carousel.next}\n onClick={() => go(cur + dir)}\n className={cx(\"klun-carousel__arrow\", dir < 0 ? \"klun-carousel__arrow--prev\" : \"klun-carousel__arrow--next\")}\n >\n <i className={dir < 0 ? \"ri-arrow-left-s-line\" : \"ri-arrow-right-s-line\"} />\n </button>\n );\n\n return (\n <div\n ref={ref}\n onMouseEnter={() => setHover(true)}\n onMouseLeave={() => setHover(false)}\n className={cx(\"klun-carousel\", className)}\n style={{ height, ...style } as CSSProperties}\n {...props}\n >\n <div\n className=\"klun-carousel__track\"\n style={{ transform: `translateX(-${cur * 100}%)` }}\n >\n {slides.map((s, i) => (\n <div key={i} className=\"klun-carousel__slide\">\n {s}\n </div>\n ))}\n </div>\n {arrows && count > 1 ? (\n <>\n {arrowBtn(-1)}\n {arrowBtn(1)}\n </>\n ) : null}\n {dots && count > 1 ? (\n <div className=\"klun-carousel__dots\">\n {slides.map((_, i) => (\n <button\n key={i}\n type=\"button\"\n aria-label={fmt(carousel.goToSlide, { n: i + 1 })}\n aria-selected={i === cur}\n onClick={() => go(i)}\n className={cx(\"klun-carousel__dot\", i === cur && \"klun-carousel__dot--active\")}\n />\n ))}\n </div>\n ) : null}\n </div>\n );\n});\n\nCarousel.displayName = \"Carousel\";\n","import { forwardRef, type CSSProperties, type HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface ChartLegendItem {\n label: string;\n /** Any CSS color or token var() for the series swatch. */\n color: string;\n /** Optional trailing value, e.g. \"$24,500\" or \"42%\". */\n value?: string;\n}\n\nexport interface ChartLegendProps extends HTMLAttributes<HTMLDivElement> {\n items: ChartLegendItem[];\n direction?: \"row\" | \"column\";\n dot?: \"round\" | \"line\";\n size?: \"sm\" | \"md\";\n}\n\n/** Klun UI ChartLegend — keyed list of series with color dots and optional values. */\nexport const ChartLegend = forwardRef<HTMLDivElement, ChartLegendProps>(function ChartLegend(\n { items = [], direction = \"row\", dot = \"round\", size = \"md\", className, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cx(\n \"klun-chart-legend\",\n `klun-chart-legend--${direction}`,\n `klun-chart-legend--${size}`,\n className,\n )}\n {...props}\n >\n {items.map((it, i) => (\n <div key={i} className=\"klun-chart-legend__item\">\n <span className=\"klun-chart-legend__label\">\n <span\n className={cx(\"klun-chart-legend__swatch\", `klun-chart-legend__swatch--${dot}`)}\n style={{ [\"--klun-chart-legend-swatch-color\" as string]: it.color } as CSSProperties}\n />\n <span className=\"klun-chart-legend__text\">{it.label}</span>\n </span>\n {it.value != null ? <span className=\"klun-chart-legend__value\">{it.value}</span> : null}\n </div>\n ))}\n </div>\n );\n});\n\nChartLegend.displayName = \"ChartLegend\";\n","import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface ChartTooltipRow {\n label: ReactNode;\n value: ReactNode;\n color?: string;\n}\n\nexport interface ChartTooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n title?: ReactNode;\n rows: ChartTooltipRow[];\n /** Optional pointer arrow side. */\n arrow?: \"none\" | \"top\" | \"bottom\";\n}\n\n/** Klun UI ChartTooltip — floating chart readout with title + keyed series rows. */\nexport const ChartTooltip = forwardRef<HTMLDivElement, ChartTooltipProps>(function ChartTooltip(\n { title, rows = [], arrow = \"none\", className, ...props },\n ref,\n) {\n return (\n <div ref={ref} role=\"tooltip\" className={cx(\"klun-chart-tooltip\", className)} {...props}>\n {title ? <span className=\"klun-chart-tooltip__title\">{title}</span> : null}\n <div className=\"klun-chart-tooltip__rows\">\n {rows.map((r, i) => (\n <div key={i} className=\"klun-chart-tooltip__row\">\n <span\n className=\"klun-chart-tooltip__dot\"\n style={r.color ? ({ [\"--klun-chart-tooltip-dot-color\" as string]: r.color } as CSSProperties) : undefined}\n />\n <span className=\"klun-chart-tooltip__label\">{r.label}</span>\n <span className=\"klun-chart-tooltip__value\">{r.value}</span>\n </div>\n ))}\n </div>\n {arrow !== \"none\" ? (\n <span className={cx(\"klun-chart-tooltip__arrow\", `klun-chart-tooltip__arrow--${arrow}`)} />\n ) : null}\n </div>\n );\n});\n\nChartTooltip.displayName = \"ChartTooltip\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport type ChipColor =\n | \"gray\"\n | \"blue\"\n | \"orange\"\n | \"red\"\n | \"green\"\n | \"purple\"\n | \"yellow\"\n | \"teal\"\n | \"sky\"\n | \"pink\";\n\nexport interface ChipProps extends HTMLAttributes<HTMLSpanElement> {\n color?: ChipColor;\n selected?: boolean;\n /** Show a leading color dot. */\n dot?: boolean;\n /** Show a dismiss (×) button; receives the click handler. */\n onDismiss?: () => void;\n disabled?: boolean;\n children?: ReactNode;\n}\n\n/** Klun UI Chip — compact, optionally-selectable color category pill. */\nexport const Chip = forwardRef<HTMLSpanElement, ChipProps>(function Chip(\n { children, color = \"gray\", selected = false, dot = false, onDismiss, onClick, disabled = false, className, ...props },\n ref,\n) {\n const { chip } = useLocale();\n const interactive = !!onClick && !disabled;\n return (\n <span\n ref={ref}\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n onClick={disabled ? undefined : onClick}\n className={cx(\n \"klun-chip\",\n `klun-chip--${color}`,\n selected && \"klun-chip--selected\",\n interactive && \"klun-chip--interactive\",\n onDismiss && \"klun-chip--dismissible\",\n disabled && \"klun-chip--disabled\",\n className,\n )}\n {...props}\n >\n {dot ? <span className=\"klun-chip__dot\" /> : null}\n {children}\n {onDismiss ? (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onDismiss();\n }}\n aria-label={chip.remove}\n className=\"klun-chip__dismiss\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-hidden>\n <path d=\"M3 3l6 6M9 3l-6 6\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n ) : null}\n </span>\n );\n});\n\nChip.displayName = \"Chip\";\n","import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { CopyButton } from \"../buttons/CopyButton\";\n\nexport interface CodeViewerProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n code: string;\n title?: ReactNode;\n language?: string;\n lineNumbers?: boolean;\n wrap?: boolean;\n maxHeight?: number;\n dark?: boolean;\n onCopied?: (value: string) => void;\n}\n\n/**\n * Klun UI CodeViewer — read-only monospace block for error stacks, config, snippets.\n * Dark surface, horizontal scroll, optional line numbers, copy button, max-height inner scroll.\n */\nexport const CodeViewer = forwardRef<HTMLDivElement, CodeViewerProps>(function CodeViewer(\n {\n code = \"\",\n title,\n language,\n lineNumbers = false,\n wrap = false,\n maxHeight = 320,\n dark = true,\n onCopied,\n className,\n ...props\n },\n ref,\n) {\n const lines = String(code).replace(/\\n$/, \"\").split(\"\\n\");\n const hasHeader = title != null || language != null;\n return (\n <div\n ref={ref}\n className={cx(\"klun-code-viewer\", dark && \"klun-code-viewer--dark\", className)}\n {...props}\n >\n {hasHeader ? (\n <div className=\"klun-code-viewer__header\">\n <span className=\"klun-code-viewer__title\">{title ?? language}</span>\n <CopyButton\n value={code}\n onCopied={onCopied}\n variant=\"ghost\"\n size=\"sm\"\n className=\"klun-code-viewer__copy\"\n />\n </div>\n ) : null}\n <div\n className=\"klun-code-viewer__scroll\"\n style={{ [\"--klun-code-viewer-max-height\" as string]: `${maxHeight}px` } as CSSProperties}\n >\n {!hasHeader ? (\n <div className=\"klun-code-viewer__copy-float\">\n <CopyButton\n value={code}\n onCopied={onCopied}\n variant=\"ghost\"\n size=\"sm\"\n className=\"klun-code-viewer__copy klun-code-viewer__copy--float\"\n />\n </div>\n ) : null}\n <pre\n className={cx(\n \"klun-code-viewer__pre\",\n wrap && \"klun-code-viewer__pre--wrap\",\n )}\n >\n {lineNumbers ? (\n <code className=\"klun-code-viewer__code klun-code-viewer__code--numbered\">\n {lines.map((ln, i) => (\n <span key={i} className=\"klun-code-viewer__row\">\n <span className=\"klun-code-viewer__gutter\">{i + 1}</span>\n <span className=\"klun-code-viewer__line\">{ln || \" \"}</span>\n </span>\n ))}\n </code>\n ) : (\n <code className=\"klun-code-viewer__code\">{code}</code>\n )}\n </pre>\n </div>\n </div>\n );\n});\n\nCodeViewer.displayName = \"CodeViewer\";\n\nexport type LogLevel = \"error\" | \"warn\" | \"warning\" | \"info\" | \"debug\" | \"success\";\n\nexport interface LogLine {\n ts?: string;\n level?: LogLevel | string;\n text: string;\n}\n\nexport interface LogViewerProps extends HTMLAttributes<HTMLDivElement> {\n lines: (string | LogLine)[];\n maxHeight?: number;\n showTimestamp?: boolean;\n dark?: boolean;\n onCopied?: (value: string) => void;\n}\n\nconst KNOWN_LEVELS = new Set([\n \"error\",\n \"warn\",\n \"warning\",\n \"info\",\n \"debug\",\n \"success\",\n]);\n\n/**\n * Klun UI LogViewer — read-only log stream with optional per-line level coloring + timestamps.\n * `lines`: string[] OR [{ ts?, level?, text }]. Monospace, dark, inner-scroll.\n */\nexport const LogViewer = forwardRef<HTMLDivElement, LogViewerProps>(function LogViewer(\n {\n lines = [],\n maxHeight = 360,\n showTimestamp = true,\n dark = true,\n onCopied,\n className,\n style,\n ...props\n },\n ref,\n) {\n const norm: LogLine[] = lines.map((l) =>\n typeof l === \"string\" ? { text: l } : l,\n );\n const raw = norm\n .map((l) => [l.ts, l.level && `[${l.level}]`, l.text].filter(Boolean).join(\" \"))\n .join(\"\\n\");\n return (\n <div\n ref={ref}\n className={cx(\"klun-log-viewer\", dark && \"klun-log-viewer--dark\", className)}\n style={{ [\"--klun-code-viewer-max-height\" as string]: `${maxHeight}px`, ...style } as CSSProperties}\n {...props}\n >\n <div className=\"klun-log-viewer__copy-float\">\n <CopyButton\n value={raw}\n onCopied={onCopied}\n variant=\"ghost\"\n size=\"sm\"\n className=\"klun-log-viewer__copy klun-log-viewer__copy--float\"\n />\n </div>\n <div className=\"klun-log-viewer__body\">\n {norm.map((l, i) => {\n const level = l.level ? String(l.level).toLowerCase() : undefined;\n const levelClass = level && KNOWN_LEVELS.has(level)\n ? `klun-log-viewer__level--${level}`\n : undefined;\n return (\n <div key={i} className=\"klun-log-viewer__row\">\n {showTimestamp && l.ts ? (\n <span className=\"klun-log-viewer__ts\">{l.ts}</span>\n ) : null}\n {l.level ? (\n <span className={cx(\"klun-log-viewer__level\", levelClass)}>\n {l.level}\n </span>\n ) : null}\n <span className=\"klun-log-viewer__text\">{l.text}</span>\n </div>\n );\n })}\n </div>\n </div>\n );\n});\n\nLogViewer.displayName = \"LogViewer\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type ContentLabelColor = \"gray\" | \"blue\" | \"green\" | \"orange\" | \"purple\";\n\nexport interface ContentLabelProps extends HTMLAttributes<HTMLSpanElement> {\n icon?: ReactNode;\n color?: ContentLabelColor;\n size?: \"sm\" | \"md\";\n children?: ReactNode;\n}\n\n/** Klun UI ContentLabel — tracked uppercase section overline with optional icon. */\nexport const ContentLabel = forwardRef<HTMLSpanElement, ContentLabelProps>(function ContentLabel(\n { children, icon, color = \"gray\", size = \"md\", className, ...props },\n ref,\n) {\n return (\n <span\n ref={ref}\n className={cx(\n \"klun-content-label\",\n `klun-content-label--${color}`,\n `klun-content-label--${size}`,\n className,\n )}\n {...props}\n >\n {icon ? <span className=\"klun-content-label__icon\">{icon}</span> : null}\n {children}\n </span>\n );\n});\n\nContentLabel.displayName = \"ContentLabel\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport interface DescriptionItem {\n label: ReactNode;\n children: ReactNode;\n /** How many columns this item spans. */\n span?: number;\n}\n\nexport type DescriptionsVariant = \"plain\" | \"bordered\";\nexport type DescriptionsSize = \"small\" | \"medium\" | \"large\";\nexport type DescriptionsLayout = \"horizontal\" | \"vertical\";\n\nexport interface DescriptionsProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n title?: ReactNode;\n extra?: ReactNode;\n items: DescriptionItem[];\n column?: number;\n variant?: DescriptionsVariant;\n size?: DescriptionsSize;\n colon?: boolean;\n layout?: DescriptionsLayout;\n}\n\ninterface PackedCell {\n it: DescriptionItem;\n span: number;\n key: number;\n}\n\n/**\n * Descriptions — key/value detail list for entity/detail pages.\n * `items`: [{ label, children, span? }]. `column` sets grid columns.\n * variant: \"plain\" (rows) or \"bordered\" (boxed cells).\n */\nexport const Descriptions = forwardRef<HTMLDivElement, DescriptionsProps>(\n function Descriptions(\n {\n title,\n extra,\n items = [],\n column = 2,\n variant = \"plain\",\n size: sizeProp,\n colon = true,\n layout = \"horizontal\",\n className,\n ...props\n },\n ref,\n ) {\n const size = useSize(sizeProp);\n // Build rows respecting per-item span. Data layout — kept in TSX.\n const rows: PackedCell[][] = [];\n let cur: PackedCell[] = [];\n let used = 0;\n items.forEach((it, i) => {\n const span = Math.min(it.span || 1, column);\n if (used + span > column) {\n rows.push(cur);\n cur = [];\n used = 0;\n }\n cur.push({ it, span, key: i });\n used += span;\n if (used >= column) {\n rows.push(cur);\n cur = [];\n used = 0;\n }\n });\n if (cur.length) rows.push(cur);\n\n return (\n <div\n ref={ref}\n className={cx(\n \"klun-descriptions\",\n `klun-descriptions--${variant}`,\n `klun-descriptions--${size}`,\n `klun-descriptions--${layout}`,\n className,\n )}\n {...props}\n >\n {title || extra ? (\n <div className=\"klun-descriptions__header\">\n {title ? <span className=\"klun-descriptions__title\">{title}</span> : <span />}\n {extra}\n </div>\n ) : null}\n <div className=\"klun-descriptions__surface\">\n <table className=\"klun-descriptions__table\">\n <tbody>\n {rows.map((row, ri) => (\n <tr key={ri} className=\"klun-descriptions__row\">\n {row.map(({ it, span, key }) => {\n if (layout === \"vertical\") {\n return (\n <td\n key={key}\n colSpan={span}\n className=\"klun-descriptions__cell\"\n >\n <div className=\"klun-descriptions__label\">{it.label}</div>\n <div className=\"klun-descriptions__value\">{it.children}</div>\n </td>\n );\n }\n return [\n <th\n key={key + \"l\"}\n className=\"klun-descriptions__label-cell\"\n >\n {it.label}\n {colon ? \":\" : \"\"}\n </th>,\n <td\n key={key + \"v\"}\n colSpan={span * 2 - 1}\n className=\"klun-descriptions__value-cell\"\n >\n {it.children}\n </td>,\n ];\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n },\n);\n\nDescriptions.displayName = \"Descriptions\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface KbdProps extends HTMLAttributes<HTMLElement> {\n children?: ReactNode;\n}\n\n/**\n * Kbd — keyboard key cap.\n */\nexport const Kbd = forwardRef<HTMLElement, KbdProps>(function Kbd({ className, children, ...props }, ref) {\n return (\n <kbd ref={ref} className={cx(\"klun-kbd\", className)} {...props}>\n {children}\n </kbd>\n );\n});\n\nKbd.displayName = \"Kbd\";\n","import { forwardRef, type HTMLAttributes, type ReactNode, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type KeyIconColor =\n | \"gray\"\n | \"blue\"\n | \"orange\"\n | \"red\"\n | \"green\"\n | \"purple\"\n | \"yellow\"\n | \"teal\"\n | \"sky\"\n | \"pink\";\nexport type KeyIconAppearance = \"light\" | \"filled\" | \"stroke\";\nexport type KeyIconSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface KeyIconProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"color\"> {\n icon: ReactNode;\n /** Color ramp. Default `\"blue\"`. */\n color?: KeyIconColor;\n /** Surface style. Default `\"light\"`. */\n appearance?: KeyIconAppearance;\n /** Default `\"md\"`. */\n size?: KeyIconSize;\n /** Extra inline style for the tile. */\n css?: CSSProperties;\n}\n\n/** Klun UI KeyIcon — featured icon tile in a themed rounded container. */\nexport const KeyIcon = forwardRef<HTMLSpanElement, KeyIconProps>(function KeyIcon(\n { icon, color = \"blue\", appearance = \"light\", size = \"md\", css, className, style, ...props },\n ref,\n) {\n return (\n <span\n ref={ref}\n className={cx(\n \"klun-key-icon\",\n `klun-key-icon--${color}`,\n `klun-key-icon--${appearance}`,\n `klun-key-icon--${size}`,\n className,\n )}\n style={css != null ? { ...css, ...style } : style}\n {...props}\n >\n <span className=\"klun-key-icon__icon\">{icon}</span>\n </span>\n );\n});\n\nKeyIcon.displayName = \"KeyIcon\";\n","import { forwardRef, type HTMLAttributes, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport type SpinnerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface SpinnerProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"color\"> {\n /** Named size or pixel number. */\n size?: SpinnerSize | number;\n /** Stroke width override. */\n thickness?: number;\n /** Arc color (defaults to currentColor). */\n color?: string;\n /** Track ring color behind the arc. */\n track?: string;\n /** Accessible label. */\n label?: string;\n}\n\nconst SIZES: Record<SpinnerSize, number> = { xs: 14, sm: 16, md: 20, lg: 24, xl: 32 };\n\n/**\n * Spinner — indeterminate loading indicator. Inherits `currentColor` by default\n * so it tints to its surrounding text/button color.\n */\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(function Spinner(\n {\n size = \"md\",\n thickness,\n color = \"currentColor\",\n track = \"transparent\",\n label,\n className,\n style,\n ...props\n },\n ref,\n) {\n const { spinner } = useLocale();\n const d = typeof size === \"number\" ? size : SIZES[size] ?? SIZES.md;\n const sw = thickness || Math.max(1.5, Math.round(d / 9));\n const r = (d - sw) / 2;\n const c = 2 * Math.PI * r;\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={label ?? spinner.loading}\n className={cx(\"klun-spinner\", className)}\n style={{ [\"--klun-spinner-size\" as string]: `${d}px`, ...style } as CSSProperties}\n {...props}\n >\n <svg\n className=\"klun-spinner__svg\"\n width={d}\n height={d}\n viewBox={`0 0 ${d} ${d}`}\n fill=\"none\"\n aria-hidden\n >\n <circle cx={d / 2} cy={d / 2} r={r} stroke={track} strokeWidth={sw} />\n <circle\n cx={d / 2}\n cy={d / 2}\n r={r}\n stroke={color}\n strokeWidth={sw}\n strokeLinecap=\"round\"\n strokeDasharray={c}\n strokeDashoffset={c * 0.7}\n />\n </svg>\n </span>\n );\n});\n\nSpinner.displayName = \"Spinner\";\n","import {\n forwardRef,\n Children,\n type HTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { Spinner } from \"../feedback/Spinner\";\nimport { useSize, useLocale } from \"../config/ConfigProvider\";\n\nexport interface ListProps<T = any>\n extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n dataSource?: T[];\n renderItem?: (item: T, index: number) => ReactNode;\n header?: ReactNode;\n footer?: ReactNode;\n bordered?: boolean;\n split?: boolean;\n loading?: boolean;\n empty?: ReactNode;\n size?: \"small\" | \"medium\" | \"large\";\n /** Node rendered in a centered footer band, e.g. a \"Load more\" button. */\n loadMore?: ReactNode;\n children?: ReactNode;\n}\n\n/**\n * Klun UI List — vertical list of items with optional header/footer, dividers,\n * loading and \"load more\". Use `dataSource` + `renderItem`, or compose <ListItem>.\n */\nexport function List<T = any>({\n dataSource,\n renderItem,\n header,\n footer,\n bordered = true,\n split = true,\n loading = false,\n empty,\n size: sizeProp,\n loadMore,\n className,\n children,\n ...props\n}: ListProps<T>) {\n const size = useSize(sizeProp);\n const { list } = useLocale();\n const items =\n dataSource && renderItem\n ? dataSource.map((it, i) => renderItem(it, i))\n : Children.toArray(children);\n return (\n <div\n className={cx(\n \"klun-list\",\n `klun-list--${size}`,\n bordered && \"klun-list--bordered\",\n split && \"klun-list--split\",\n className,\n )}\n {...props}\n >\n {header != null ? <div className=\"klun-list__header\">{header}</div> : null}\n {loading ? (\n <div className=\"klun-list__loading\">\n <Spinner /> {list.loading}\n </div>\n ) : items.length === 0 ? (\n <div className=\"klun-list__empty\">\n {empty != null ? (\n empty\n ) : (\n <span className=\"klun-list__empty-default\">\n <i className=\"ri-inbox-line klun-list__empty-icon\" />\n {list.noData}\n </span>\n )}\n </div>\n ) : (\n items.map((node, i) => (\n <div key={i} className=\"klun-list__row\">\n {node}\n </div>\n ))\n )}\n {footer != null ? <div className=\"klun-list__footer\">{footer}</div> : null}\n {loadMore && !loading ? (\n <div className=\"klun-list__load-more\">{loadMore}</div>\n ) : null}\n </div>\n );\n}\n\nList.displayName = \"List\";\n\nexport interface ListItemProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n avatar?: ReactNode;\n title?: ReactNode;\n description?: ReactNode;\n extra?: ReactNode;\n actions?: ReactNode[];\n align?: CSSProperties[\"alignItems\"];\n children?: ReactNode;\n}\n\n/**\n * Klun UI ListItem — a single row: optional avatar/media, title, description,\n * and trailing actions. Use inside List's renderItem.\n */\nexport const ListItem = forwardRef<HTMLDivElement, ListItemProps>(\n function ListItem(\n { avatar, title, description, extra, actions, align = \"center\", style, children, ...props },\n ref,\n ) {\n if (children && !title && !description) {\n return (\n <div\n ref={ref}\n className=\"klun-list-item\"\n style={{ alignItems: align, ...style }}\n {...props}\n >\n {children}\n </div>\n );\n }\n return (\n <div\n ref={ref}\n className=\"klun-list-item\"\n style={{ alignItems: align, ...style }}\n {...props}\n >\n {avatar ? <div className=\"klun-list-item__avatar\">{avatar}</div> : null}\n <div className=\"klun-list-item__body\">\n {title ? <div className=\"klun-list-item__title\">{title}</div> : null}\n {description ? (\n <div className=\"klun-list-item__description\">{description}</div>\n ) : null}\n </div>\n {actions && actions.length ? (\n <div className=\"klun-list-item__actions\">\n {actions.map((a, i) => (\n <span key={i} className=\"klun-list-item__action\">\n {a}\n </span>\n ))}\n </div>\n ) : null}\n {extra ? <div className=\"klun-list-item__extra\">{extra}</div> : null}\n </div>\n );\n },\n);\n\nListItem.displayName = \"ListItem\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { Format } from \"../../utils/format\";\nimport type { MoneyPeriod } from \"../../utils/format\";\n\nexport type MoneyTone = \"default\" | \"muted\" | \"increase\" | \"refund\";\nexport type MoneySize = \"sm\" | \"md\" | \"lg\" | \"big\";\n\nexport interface MoneyProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"prefix\"> {\n /** Amount in major units, or minor units when `cents` is true. */\n value: number;\n cents?: boolean;\n currency?: string;\n locale?: string;\n period?: MoneyPeriod;\n periodLabels?: Partial<Record<MoneyPeriod, string>>;\n minimumFractionDigits?: number;\n maximumFractionDigits?: number;\n signDisplay?: \"auto\" | \"never\" | \"always\" | \"exceptZero\";\n tone?: MoneyTone;\n size?: MoneySize;\n strikethrough?: boolean;\n prefix?: ReactNode;\n suffix?: ReactNode;\n}\n\n/**\n * Klun UI Money — formatted currency amount with optional period suffix and tone.\n * One place to change currency / locale across a product. Pass `cents` for minor units.\n */\nexport const Money = forwardRef<HTMLSpanElement, MoneyProps>(function Money(\n {\n value,\n cents = false,\n currency = \"USD\",\n locale,\n period,\n periodLabels,\n minimumFractionDigits,\n maximumFractionDigits,\n signDisplay,\n tone = \"default\",\n size = \"md\",\n strikethrough = false,\n prefix,\n suffix,\n className,\n ...props\n },\n ref,\n) {\n const { text, period: periodSuffix } = Format.money(value, {\n currency,\n cents,\n locale,\n period,\n periodLabels,\n minimumFractionDigits,\n maximumFractionDigits,\n signDisplay,\n });\n return (\n <span\n ref={ref}\n className={cx(\n \"klun-money\",\n `klun-money--${tone}`,\n `klun-money--${size}`,\n strikethrough && \"klun-money--strikethrough\",\n className,\n )}\n {...props}\n >\n {prefix}\n <span>{text}</span>\n {periodSuffix ? <span className=\"klun-money__period\">/{periodSuffix}</span> : null}\n {suffix}\n </span>\n );\n});\n\nMoney.displayName = \"Money\";\n","import { forwardRef, useState, type HTMLAttributes, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\nimport { fmt } from \"../config/locales\";\n\nexport interface RatingProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"style\"> {\n /** Current rating. Default `0`. */\n value?: number;\n /** Number of stars. Default `5`. */\n max?: number;\n onChange?: (value: number) => void;\n /** Disable interaction. Default `false`. */\n readOnly?: boolean;\n /** Star size in px. Default `20`. */\n size?: number;\n style?: CSSProperties;\n}\n\n/** Klun UI Rating — star rating, interactive or read-only. */\nexport const Rating = forwardRef<HTMLDivElement, RatingProps>(function Rating(\n { value = 0, max = 5, onChange, readOnly = false, size = 20, className, ...props },\n ref,\n) {\n const { rating } = useLocale();\n const [hover, setHover] = useState(0);\n const active = hover || value;\n return (\n <div ref={ref} className={cx(\"klun-rating\", className)} {...props}>\n {Array.from({ length: max }, (_, i) => i + 1).map((i) => (\n <button\n key={i}\n type=\"button\"\n className=\"klun-rating__star\"\n disabled={readOnly}\n data-active={i <= active ? \"\" : undefined}\n onMouseEnter={() => !readOnly && setHover(i)}\n onMouseLeave={() => !readOnly && setHover(0)}\n onClick={() => !readOnly && onChange?.(i)}\n aria-label={fmt(rating.star, { count: i })}\n >\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden>\n <path d=\"M12 2l2.9 6.1 6.6.9-4.8 4.6 1.2 6.6L12 17.8 5.9 20.8l1.2-6.6L2.3 9l6.6-.9L12 2z\" />\n </svg>\n </button>\n ))}\n </div>\n );\n});\n\nRating.displayName = \"Rating\";\n","import {\n useState,\n useEffect,\n forwardRef,\n type TimeHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { Format, type CountdownResult } from \"../../utils/format\";\n\nexport type { CountdownResult };\n\n/** Force a re-render every `ms` so relative/countdown labels stay live. */\nfunction useTick(ms: number): void {\n const [, force] = useState(0);\n useEffect(() => {\n if (!ms) return;\n const id = setInterval(() => force((n) => n + 1), ms);\n return () => clearInterval(id);\n }, [ms]);\n}\n\nexport interface RelativeTimeProps extends TimeHTMLAttributes<HTMLTimeElement> {\n date: Date | number | string;\n locale?: string;\n /** Re-render on an interval (default true). */\n live?: boolean;\n every?: number;\n /** Show the absolute time as the label instead of the relative one. */\n absolute?: boolean;\n}\n\n/**\n * Klun UI RelativeTime — locale relative time (\"2 hours ago\") that re-renders on an interval.\n * Shows the absolute time in a native tooltip. Set `live={false}` to render once.\n */\nexport const RelativeTime = forwardRef<HTMLTimeElement, RelativeTimeProps>(function RelativeTime(\n { date, locale, live = true, every = 60000, absolute, className, ...props },\n ref,\n) {\n useTick(live ? every : 0);\n const rel = Format.relTime(date, { locale });\n const title = Format.absTime(date, { locale });\n return (\n <time\n ref={ref}\n title={absolute ? rel : title}\n className={cx(\"klun-relative-time\", className)}\n {...props}\n >\n {absolute ? title : rel}\n </time>\n );\n});\n\nRelativeTime.displayName = \"RelativeTime\";\n\ntype Tone = \"ok\" | \"warn\" | \"err\";\n\nexport interface ExpiryCountdownProps extends HTMLAttributes<HTMLSpanElement> {\n date: Date | number | string;\n /** Days remaining at/under which the tone turns amber. */\n warnDays?: number;\n every?: number;\n showIcon?: boolean;\n /** Custom label formatter (for i18n). */\n format?: (c: CountdownResult) => ReactNode;\n}\n\nfunction defaultFormat(cd: CountdownResult): string {\n if (cd.expired) {\n const d = Math.abs(cd.days);\n return d >= 1 ? `Expired ${d}d ago` : \"Expired\";\n }\n if (cd.days >= 1) return `${cd.days}d ${cd.hours}h`;\n if (cd.hours >= 1) return `${cd.hours}h ${cd.minutes}m`;\n return `${cd.minutes}m`;\n}\n\n/**\n * Klun UI ExpiryCountdown — counts down to an expiry date. Goes amber within `warnDays`\n * and red once expired. Language-neutral: pass a `format` fn for copy, or use the default\n * compact \"5d 3h\" / \"expired\".\n */\nexport const ExpiryCountdown = forwardRef<HTMLSpanElement, ExpiryCountdownProps>(\n function ExpiryCountdown(\n { date, warnDays = 7, every = 60000, format, showIcon = true, className, ...props },\n ref,\n ) {\n useTick(every);\n const c = Format.countdown(date);\n const tone: Tone = c.expired ? \"err\" : c.days < warnDays ? \"warn\" : \"ok\";\n const text = (format || defaultFormat)(c);\n return (\n <span\n ref={ref}\n className={cx(\"klun-relative-time\", `klun-relative-time--${tone}`, className)}\n {...props}\n >\n {showIcon ? (\n <i\n className={cx(\n \"klun-relative-time__icon\",\n c.expired ? \"ri-time-line\" : \"ri-timer-line\",\n )}\n aria-hidden\n />\n ) : null}\n {text}\n </span>\n );\n },\n);\n\nExpiryCountdown.displayName = \"ExpiryCountdown\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport interface StatisticProps extends Omit<HTMLAttributes<HTMLDivElement>, \"prefix\"> {\n label?: ReactNode;\n value: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n /** Decimal places when value is a number. */\n precision?: number;\n trend?: \"up\" | \"down\" | \"flat\";\n trendValue?: ReactNode;\n icon?: ReactNode;\n size?: \"small\" | \"medium\" | \"large\";\n}\n\nconst TREND_ICONS: Record<NonNullable<StatisticProps[\"trend\"]>, string> = {\n up: \"ri-arrow-up-line\",\n down: \"ri-arrow-down-line\",\n flat: \"ri-subtract-line\",\n};\n\n/**\n * Klun UI Statistic — a single metric: label, big value (prefix/suffix) and an\n * optional trend delta. Compose several with `Space` for a stat row.\n */\nexport const Statistic = forwardRef<HTMLDivElement, StatisticProps>(function Statistic(\n { label, value, prefix, suffix, precision, trend, trendValue, icon, size: sizeProp, className, ...props },\n ref,\n) {\n const size = useSize(sizeProp);\n const formatted = precision != null && typeof value === \"number\" ? value.toFixed(precision) : value;\n return (\n <div ref={ref} className={cx(\"klun-statistic\", `klun-statistic--${size}`, className)} {...props}>\n <div className=\"klun-statistic__head\">\n {icon ? <span className=\"klun-statistic__icon\">{icon}</span> : null}\n <span className=\"klun-statistic__label\">{label}</span>\n </div>\n <div className=\"klun-statistic__body\">\n <span className=\"klun-statistic__value\">\n {prefix ? <span className=\"klun-statistic__prefix\">{prefix}</span> : null}\n {formatted}\n {suffix ? <span className=\"klun-statistic__suffix\">{suffix}</span> : null}\n </span>\n {trend ? (\n <span className={cx(\"klun-statistic__trend\", `klun-statistic__trend--${trend}`)}>\n <i className={TREND_ICONS[trend]} />\n {trendValue}\n </span>\n ) : null}\n </div>\n </div>\n );\n});\n\nStatistic.displayName = \"Statistic\";\n","import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { Badge, type BadgeColor, type BadgeVariant } from \"./Badge\";\n\nexport type StatusTone = \"ok\" | \"warn\" | \"err\" | \"info\" | \"neutral\" | \"busy\";\n\nexport interface StatusBadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"color\"> {\n status: string;\n /** Display text override (defaults to a humanized `status`). */\n label?: ReactNode;\n /** Force a tone instead of using the lookup table. */\n tone?: StatusTone;\n /** Extra/override status→tone entries, e.g. { custom: \"ok\" }. */\n map?: Record<string, StatusTone>;\n dot?: boolean;\n pulse?: boolean;\n variant?: BadgeVariant;\n size?: \"small\" | \"medium\";\n}\n\n// Domain status → semantic tone. Tone resolves to a Badge color.\n// Covers the koda-site vocabulary (running/stopped/pending/creating/failed/expired/suspended…)\n// plus generic ok/warn/err/info/neutral aliases.\nconst TONE_COLOR: Record<StatusTone, BadgeColor> = {\n ok: \"green\", warn: \"orange\", err: \"red\", info: \"blue\", neutral: \"gray\", busy: \"blue\",\n};\n\nconst STATUS_TONE: Record<string, StatusTone> = {\n // success / live\n running: \"ok\", active: \"ok\", online: \"ok\", ready: \"ok\", healthy: \"ok\", completed: \"ok\",\n succeeded: \"ok\", success: \"ok\", verified: \"ok\", paid: \"ok\", connected: \"ok\", enabled: \"ok\",\n // neutral / idle\n stopped: \"neutral\", inactive: \"neutral\", offline: \"neutral\", disabled: \"neutral\",\n draft: \"neutral\", archived: \"neutral\", unknown: \"neutral\", default: \"neutral\", closed: \"neutral\",\n // busy / in-progress (information)\n pending: \"busy\", creating: \"busy\", provisioning: \"busy\", starting: \"busy\", stopping: \"busy\",\n rebooting: \"busy\", deploying: \"busy\", processing: \"busy\", queued: \"busy\", migrating: \"busy\",\n // warning\n suspended: \"warn\", paused: \"warn\", degraded: \"warn\", expiring: \"warn\", warning: \"warn\",\n \"action-required\": \"warn\", overdue: \"warn\", locked: \"warn\",\n // error\n failed: \"err\", error: \"err\", expired: \"err\", terminated: \"err\", destroyed: \"err\",\n rejected: \"err\", cancelled: \"err\", canceled: \"err\", offline_error: \"err\", unpaid: \"err\",\n};\n\n/** Normalize a status string to a lookup key. */\nfunction keyOf(s: unknown): string {\n return String(s == null ? \"\" : s).trim().toLowerCase().replace(/\\s+/g, \"-\").replace(/_/g, \"_\");\n}\n\n/**\n * Klun UI StatusBadge — maps a domain status string to a tone-consistent Badge.\n * Centralizes status→color so every list/detail page reads identically.\n * Override or extend with the `map` prop ({ statusKey: tone }) or pass an explicit `tone`.\n */\nexport function StatusBadge({\n status,\n label,\n tone,\n map,\n dot = true,\n variant = \"light\",\n size = \"medium\",\n pulse = false,\n className,\n ...props\n}: StatusBadgeProps) {\n const k = keyOf(status);\n const resolvedTone = tone || (map && map[k]) || STATUS_TONE[k] || \"neutral\";\n const color: BadgeColor = TONE_COLOR[resolvedTone] || \"gray\";\n const text =\n label != null ? label : String(status == null ? \"\" : status).replace(/[-_]/g, \" \");\n const display =\n typeof text === \"string\" ? text.charAt(0).toUpperCase() + text.slice(1) : text;\n return (\n <Badge\n color={color}\n variant={variant}\n size={size}\n dot={dot && !pulse}\n className={cx(\"klun-status-badge\", className)}\n {...props}\n >\n {pulse ? (\n <span className=\"klun-status-badge__ping\">\n <span className=\"klun-status-badge__ping-wave\" />\n <span className=\"klun-status-badge__ping-core\" />\n </span>\n ) : null}\n {display}\n </Badge>\n );\n}\n\nStatusBadge.displayName = \"StatusBadge\";\n\n/** The default status→tone table, exported so apps can read/extend it. */\nStatusBadge.STATUS_TONE = STATUS_TONE;\nStatusBadge.TONE_COLOR = TONE_COLOR;\n","import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type DotTone = \"ok\" | \"warn\" | \"err\" | \"info\" | \"neutral\";\n\nexport interface StatusDotProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"color\"> {\n tone?: DotTone;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n pulse?: boolean;\n label?: ReactNode;\n}\n\nconst SIZES: Record<NonNullable<StatusDotProps[\"size\"]>, number> = { xs: 6, sm: 8, md: 10, lg: 12 };\n\n/**\n * StatusDot — small colored dot for resource/system state, with optional pulse\n * ring and trailing label.\n */\nexport const StatusDot = forwardRef<HTMLSpanElement, StatusDotProps>(function StatusDot(\n { tone = \"neutral\", size = \"sm\", pulse = false, label, className, style, ...props },\n ref,\n) {\n const sizeStyle = { [\"--klun-status-dot-size\"]: `${SIZES[size] ?? SIZES.sm}px` } as CSSProperties;\n\n const dot = (\n <span className={cx(\"klun-status-dot__dot\", pulse && \"klun-status-dot--pulse\")} style={sizeStyle} />\n );\n\n if (label == null) {\n return (\n <span\n ref={ref}\n className={cx(\"klun-status-dot\", `klun-status-dot--${tone}`, className)}\n style={style}\n {...props}\n >\n {dot}\n </span>\n );\n }\n\n return (\n <span\n ref={ref}\n className={cx(\"klun-status-dot\", \"klun-status-dot--labeled\", `klun-status-dot--${tone}`, className)}\n style={style}\n {...props}\n >\n {dot}\n <span className=\"klun-status-dot__label\">{label}</span>\n </span>\n );\n});\n\nStatusDot.displayName = \"StatusDot\";\n\nexport interface LiveDotProps extends Omit<StatusDotProps, \"pulse\"> {}\n\n/** A StatusDot preset that always pulses (for \"live\"/\"running\" indicators). */\nexport const LiveDot = forwardRef<HTMLSpanElement, LiveDotProps>(function LiveDot(\n { tone = \"ok\", ...props },\n ref,\n) {\n return <StatusDot ref={ref} tone={tone} pulse {...props} />;\n});\n\nLiveDot.displayName = \"LiveDot\";\n","import type { TableColumn } from \"../Table\";\n\n// Clipboard write with a legacy fallback (works without the async API / focus).\nexport function copyText(text: any) {\n const s = String(text == null ? \"\" : text);\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard.writeText(s).catch(() => fallbackCopy(s));\n } else fallbackCopy(s);\n}\nexport function fallbackCopy(s: string) {\n const ta = document.createElement(\"textarea\");\n ta.value = s;\n ta.style.position = \"fixed\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.focus();\n ta.select();\n try {\n document.execCommand(\"copy\");\n } catch (e) {\n /* noop */\n }\n document.body.removeChild(ta);\n}\n\n// CSV builder + download. Quotes fields containing comma/quote/newline.\nexport function csvCell(v: any) {\n const s = v == null ? \"\" : String(v);\n return /[\",\\n]/.test(s) ? '\"' + s.replace(/\"/g, '\"\"') + '\"' : s;\n}\nexport function rowsToCsv(columns: TableColumn[], rows: any[]) {\n const cols = columns.filter(\n (c) => c.exportable !== false && c.header != null && c.header !== \"\",\n );\n const head = cols.map((c) => csvCell(typeof c.header === \"string\" ? c.header : c.key)).join(\",\");\n const body = rows\n .map((r) => cols.map((c) => csvCell(c.copyValue ? c.copyValue(r) : r[c.key])).join(\",\"))\n .join(\"\\n\");\n return head + \"\\n\" + body;\n}\nexport function downloadCsv(filename: string, csv: string) {\n const blob = new Blob([\"\" + csv], { type: \"text/csv;charset=utf-8;\" });\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = filename || \"table.csv\";\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n setTimeout(() => URL.revokeObjectURL(url), 1000);\n}\n","import { useState, useRef, useEffect } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { useLocale } from \"../../config/ConfigProvider\";\nimport { fmt } from \"../../config/locales\";\n\n// antd-style pagination bar: range text, page-size select, prev/next + numbers.\nexport function Pager({\n total,\n page,\n pageSize,\n pageSizeOptions = [10, 20, 50],\n onChange,\n}: {\n total: number;\n page: number;\n pageSize: number;\n pageSizeOptions?: number[];\n onChange: (page: number, pageSize: number) => void;\n density?: string;\n}) {\n const { table } = useLocale();\n const pages = Math.max(1, Math.ceil(total / pageSize));\n const from = total === 0 ? 0 : (page - 1) * pageSize + 1;\n const to = Math.min(total, page * pageSize);\n const go = (p: number) => onChange(Math.min(pages, Math.max(1, p)), pageSize);\n const [sizeOpen, setSizeOpen] = useState(false);\n const sizeRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (!sizeOpen) return;\n const h = (e: MouseEvent) => {\n if (sizeRef.current && !sizeRef.current.contains(e.target as Node)) setSizeOpen(false);\n };\n const k = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setSizeOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n document.addEventListener(\"keydown\", k);\n return () => {\n document.removeEventListener(\"mousedown\", h);\n document.removeEventListener(\"keydown\", k);\n };\n }, [sizeOpen]);\n const nums: Array<number | string> = [];\n const push = (p: number | string) => nums.push(p);\n if (pages <= 7) {\n for (let i = 1; i <= pages; i++) push(i);\n } else {\n push(1);\n if (page > 3) push(\"…\");\n for (let i = Math.max(2, page - 1); i <= Math.min(pages - 1, page + 1); i++) push(i);\n if (page < pages - 2) push(\"…\");\n push(pages);\n }\n return (\n <div className=\"klun-table__pager\">\n <span className=\"klun-table__pager-range\">\n {fmt(table.pageRange, { from, to, total })}\n </span>\n <div className=\"klun-table__pager-controls\">\n <div ref={sizeRef} className=\"klun-table__pager-size\">\n <button\n type=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={sizeOpen}\n onClick={() => setSizeOpen((o) => !o)}\n className=\"klun-table__pager-size-btn\"\n >\n {fmt(table.perPage, { size: pageSize })}\n <i\n className={cx(\n \"ri-arrow-down-s-line\",\n \"klun-table__pager-size-caret\",\n sizeOpen && \"klun-table__pager-size-caret--open\",\n )}\n />\n </button>\n {sizeOpen ? (\n <div role=\"listbox\" className=\"klun-table__pager-size-pop\">\n {pageSizeOptions.map((n) => (\n <button\n key={n}\n type=\"button\"\n role=\"option\"\n aria-selected={n === pageSize}\n onClick={() => {\n setSizeOpen(false);\n onChange(1, n);\n }}\n className={cx(\n \"klun-table__pager-size-opt\",\n n === pageSize && \"klun-table__pager-size-opt--selected\",\n )}\n >\n {fmt(table.perPage, { size: n })}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n <button\n type=\"button\"\n aria-label={table.previous}\n disabled={page <= 1}\n onClick={() => go(page - 1)}\n className=\"klun-table__pager-btn\"\n >\n <i className=\"ri-arrow-left-s-line klun-table__pager-arrow\" />\n </button>\n {nums.map((n, i) =>\n n === \"…\" ? (\n <span key={\"e\" + i} className=\"klun-table__pager-ellipsis\">\n …\n </span>\n ) : (\n <button\n key={n}\n type=\"button\"\n onClick={() => go(n as number)}\n className={cx(\n \"klun-table__pager-btn\",\n n === page && \"klun-table__pager-btn--active\",\n )}\n >\n {n}\n </button>\n ),\n )}\n <button\n type=\"button\"\n aria-label={table.next}\n disabled={page >= pages}\n onClick={() => go(page + 1)}\n className=\"klun-table__pager-btn\"\n >\n <i className=\"ri-arrow-right-s-line klun-table__pager-arrow\" />\n </button>\n </div>\n </div>\n );\n}\n","import { useState, useRef, useEffect } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport type { TableMenuItem } from \"../Table\";\n\n// Floating context menu (right-click). Positioned at viewport x/y, flips to\n// stay on-screen, closes on outside click / Escape / scroll.\nexport function ContextMenu({\n x,\n y,\n items,\n onClose,\n}: {\n x: number;\n y: number;\n items: TableMenuItem[];\n onClose: () => void;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const [pos, setPos] = useState({ left: x, top: y, visible: false });\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n const r = el.getBoundingClientRect();\n const left = x + r.width > window.innerWidth ? Math.max(8, x - r.width) : x;\n const top = y + r.height > window.innerHeight ? Math.max(8, y - r.height) : y;\n setPos({ left, top, visible: true });\n }, [x, y]);\n useEffect(() => {\n const close = () => onClose();\n const k = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n document.addEventListener(\"mousedown\", close);\n document.addEventListener(\"keydown\", k);\n window.addEventListener(\"scroll\", close, true);\n window.addEventListener(\"resize\", close);\n return () => {\n document.removeEventListener(\"mousedown\", close);\n document.removeEventListener(\"keydown\", k);\n window.removeEventListener(\"scroll\", close, true);\n window.removeEventListener(\"resize\", close);\n };\n }, [onClose]);\n return (\n <div\n ref={ref}\n role=\"menu\"\n onMouseDown={(e) => e.stopPropagation()}\n className={cx(\"klun-table__ctx\", pos.visible && \"klun-table__ctx--visible\")}\n style={{ left: pos.left, top: pos.top }}\n >\n {items.map((it, i) =>\n it.divider ? (\n <div key={\"d\" + i} className=\"klun-table__ctx-divider\" />\n ) : (\n <button\n key={i}\n type=\"button\"\n role=\"menuitem\"\n disabled={it.disabled}\n onClick={() => {\n if (!it.disabled) {\n it.onClick?.();\n onClose();\n }\n }}\n className={cx(\"klun-table__ctx-item\", it.danger && \"klun-table__ctx-item--danger\")}\n >\n {it.icon ? <i className={cx(it.icon, \"klun-table__ctx-icon\")} /> : null}\n <span className=\"klun-table__ctx-label\">{it.label}</span>\n {it.shortcut ? (\n <span className=\"klun-table__ctx-shortcut\">{it.shortcut}</span>\n ) : null}\n </button>\n ),\n )}\n </div>\n );\n}\n","import { useState, useRef, useEffect } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { useLocale } from \"../../config/ConfigProvider\";\nimport type { TableColumn } from \"../Table\";\n\n// Column visibility chooser (toolbar dropdown checklist).\nexport function ColumnSettings({\n columns,\n hidden,\n onToggle,\n}: {\n columns: TableColumn[];\n hidden: Set<string>;\n onToggle: (key: string) => void;\n}) {\n const { table } = useLocale();\n const [open, setOpen] = useState(false);\n const ref = useRef<HTMLSpanElement>(null);\n useEffect(() => {\n if (!open) return;\n const h = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n const k = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n document.addEventListener(\"keydown\", k);\n return () => {\n document.removeEventListener(\"mousedown\", h);\n document.removeEventListener(\"keydown\", k);\n };\n }, [open]);\n const toggleable = columns.filter((c) => c.header != null && c.header !== \"\");\n return (\n <span ref={ref} className=\"klun-table__colsettings\">\n <button\n type=\"button\"\n aria-label={table.columns}\n onClick={() => setOpen((o) => !o)}\n className=\"klun-table__toolbar-btn\"\n >\n <i className=\"ri-layout-column-line\" />\n {table.columns}\n </button>\n {open ? (\n <div className=\"klun-table__colsettings-pop\">\n {toggleable.map((c) => {\n const on = !hidden.has(c.key);\n return (\n <button\n key={c.key}\n type=\"button\"\n onClick={() => onToggle(c.key)}\n className=\"klun-table__menu-item klun-table__menu-item--strong\"\n >\n <span className={cx(\"klun-table__tick\", on && \"klun-table__tick--on\")}>\n {on ? <i className=\"ri-check-line\" /> : null}\n </span>\n {typeof c.header === \"string\" ? c.header : c.key}\n </button>\n );\n })}\n </div>\n ) : null}\n </span>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { useLocale } from \"../../config/ConfigProvider\";\nimport { ColumnSettings } from \"./ColumnSettings\";\nimport type { TableColumn } from \"../Table\";\n\ninterface TableToolbarProps<Row> {\n showToolbar: boolean;\n title: ReactNode;\n toolbar: ReactNode;\n columnSettings: boolean;\n columns: TableColumn<Row>[];\n hiddenCols: Set<string>;\n toggleColumn: (key: string) => void;\n exportable: boolean | { filename?: string; selectedOnly?: boolean };\n exportCsv: () => void;\n selectionActions?: (selectedRows: Row[], clear: () => void) => ReactNode;\n selectedRows: Row[];\n clearSelection: () => void;\n}\n\nexport function TableToolbar<Row>({\n showToolbar,\n title,\n toolbar,\n columnSettings,\n columns,\n hiddenCols,\n toggleColumn,\n exportable,\n exportCsv,\n selectionActions,\n selectedRows,\n clearSelection,\n}: TableToolbarProps<Row>) {\n const { table } = useLocale();\n return (\n <>\n {showToolbar ? (\n <div className=\"klun-table__toolbar\">\n {title != null ? (\n <span className=\"klun-table__title\">{title}</span>\n ) : (\n <span className=\"klun-table__title-spacer\" />\n )}\n {toolbar}\n {columnSettings ? (\n <ColumnSettings columns={columns} hidden={hiddenCols} onToggle={toggleColumn} />\n ) : null}\n {exportable ? (\n <button type=\"button\" onClick={exportCsv} className=\"klun-table__toolbar-btn\">\n <i className=\"ri-download-2-line\" />\n {table.exportCsv}\n </button>\n ) : null}\n </div>\n ) : null}\n {selectionActions && selectedRows.length ? (\n <div className=\"klun-table__selbar\">\n <span className=\"klun-table__selbar-count\">{selectedRows.length} selected</span>\n <div className=\"klun-table__selbar-actions\">\n {selectionActions(selectedRows, clearSelection)}\n <button\n type=\"button\"\n onClick={clearSelection}\n aria-label=\"Clear selection\"\n className=\"klun-table__selbar-clear\"\n >\n <i className=\"ri-close-line\" />\n </button>\n </div>\n </div>\n ) : null}\n </>\n );\n}\n","import { cx } from \"../../../utils/cx\";\nimport type { SortDir } from \"../Table\";\n\n// Align UI sort affordance: a single 20px glyph slot. Unsorted shows the\n// neutral expand-up-down (both chevrons, soft gray); active shows one chevron.\nexport function SortIcon({ dir }: { dir: SortDir | null }) {\n const cls =\n dir === \"asc\"\n ? \"ri-arrow-up-s-fill\"\n : dir === \"desc\"\n ? \"ri-arrow-down-s-fill\"\n : \"ri-expand-up-down-fill\";\n return (\n <i\n className={cx(\"klun-table__sort-icon\", cls, dir && \"klun-table__sort-icon--active\")}\n aria-hidden\n />\n );\n}\n","import { cx } from \"../../../utils/cx\";\n\nexport function Check({\n checked,\n indeterminate,\n onChange,\n}: {\n checked?: boolean;\n indeterminate?: boolean;\n onChange?: () => void;\n}) {\n const active = checked || indeterminate;\n return (\n <button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={indeterminate ? \"mixed\" : checked}\n onClick={(e) => {\n e.stopPropagation();\n onChange?.();\n }}\n className={cx(\"klun-table__check\", active && \"klun-table__check--active\")}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n {indeterminate ? (\n <path d=\"M3.5 8h9\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n ) : checked ? (\n <path\n d=\"M3.5 8.5l3 3 6-6.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ) : null}\n </svg>\n </button>\n );\n}\n","import { useState, useRef, useEffect, type ReactNode } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { useLocale } from \"../../config/ConfigProvider\";\n\n// antd-style column filter dropdown (multi-select checklist + apply/reset).\nexport function FilterMenu({\n options = [],\n value = [],\n onApply,\n multiple = true,\n}: {\n options?: Array<{ label: ReactNode; value: any }>;\n value?: any[];\n onApply: (value: any[]) => void;\n multiple?: boolean;\n}) {\n const { table } = useLocale();\n const [open, setOpen] = useState(false);\n const [draft, setDraft] = useState<any[]>(value);\n const ref = useRef<HTMLSpanElement>(null);\n useEffect(() => {\n setDraft(value);\n }, [value, open]);\n useEffect(() => {\n if (!open) return;\n const h = (e: MouseEvent) => {\n if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false);\n };\n const k = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n document.addEventListener(\"keydown\", k);\n return () => {\n document.removeEventListener(\"mousedown\", h);\n document.removeEventListener(\"keydown\", k);\n };\n }, [open]);\n const toggle = (v: any) => {\n if (!multiple) {\n setDraft([v]);\n return;\n }\n setDraft((d) => (d.includes(v) ? d.filter((x) => x !== v) : [...d, v]));\n };\n const active = value.length > 0;\n return (\n <span\n ref={ref}\n className=\"klun-table__filter\"\n onClick={(e) => e.stopPropagation()}\n >\n <button\n type=\"button\"\n aria-label={table.filter}\n onClick={() => setOpen((o) => !o)}\n className={cx(\"klun-table__filter-btn\", active && \"klun-table__filter-btn--active\")}\n >\n <i className={active ? \"ri-filter-fill\" : \"ri-filter-3-line\"} />\n </button>\n {open ? (\n <div className=\"klun-table__filter-pop\">\n <div className=\"klun-table__filter-list\">\n {options.map((o) => {\n const on = draft.includes(o.value);\n return (\n <button\n key={o.value}\n type=\"button\"\n onClick={() => toggle(o.value)}\n className=\"klun-table__menu-item\"\n >\n <span\n className={cx(\"klun-table__tick\", on && \"klun-table__tick--on\")}\n >\n {on ? <i className=\"ri-check-line\" /> : null}\n </span>\n {o.label}\n </button>\n );\n })}\n </div>\n <div className=\"klun-table__filter-actions\">\n <button\n type=\"button\"\n onClick={() => {\n setDraft([]);\n onApply([]);\n setOpen(false);\n }}\n className=\"klun-table__filter-reset\"\n >\n Reset\n </button>\n <button\n type=\"button\"\n onClick={() => {\n onApply(draft);\n setOpen(false);\n }}\n className=\"klun-table__filter-apply\"\n >\n Apply\n </button>\n </div>\n </div>\n ) : null}\n </span>\n );\n}\n","import { type CSSProperties, type MouseEvent as ReactMouseEvent } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { useLocale } from \"../../config/ConfigProvider\";\nimport { SortIcon } from \"./SortIcon\";\nimport { Check } from \"./Check\";\nimport { FilterMenu } from \"./FilterMenu\";\nimport type { TableColumn, TableSort } from \"../Table\";\n\ninterface TableHeadProps<Row> {\n dragCol: boolean;\n expandCol: boolean;\n selectable: boolean;\n leftFixed: TableColumn<Row>[];\n vBorderClass: string;\n selectionType: \"checkbox\" | \"radio\";\n allOn: boolean;\n someOn: boolean;\n toggleAll: () => void;\n visibleColumns: TableColumn<Row>[];\n sortable: boolean;\n activeSort: TableSort | null | undefined;\n resizable: boolean;\n widthOf: (c: TableColumn<Row>) => number | string | undefined;\n fixedCell: (\n c: TableColumn<Row>,\n isHeader: boolean,\n ) => { cls: string; style?: CSSProperties };\n setSort: (key: string) => void;\n activeFilters: Record<string, any[]>;\n setFilter: (key: string, value: any[]) => void;\n startResize: (e: ReactMouseEvent, c: TableColumn<Row>) => void;\n}\n\nexport function TableHead<Row>({\n dragCol,\n expandCol,\n selectable,\n leftFixed,\n vBorderClass,\n selectionType,\n allOn,\n someOn,\n toggleAll,\n visibleColumns,\n sortable,\n activeSort,\n resizable,\n widthOf,\n fixedCell,\n setSort,\n activeFilters,\n setFilter,\n startResize,\n}: TableHeadProps<Row>) {\n const { table } = useLocale();\n return (\n <thead>\n <tr>\n {dragCol ? <th className=\"klun-table__th klun-table__th--util\" /> : null}\n {expandCol ? (\n <th\n className={cx(\n \"klun-table__th\",\n \"klun-table__th--lead\",\n (selectable || leftFixed.length) && \"klun-table__cell--fixed klun-table__cell--fixed-head\",\n )}\n style={selectable || leftFixed.length ? { left: 0 } : undefined}\n />\n ) : null}\n {selectable ? (\n <th\n className={cx(\n \"klun-table__th\",\n \"klun-table__th--lead\",\n vBorderClass,\n leftFixed.length && \"klun-table__cell--fixed klun-table__cell--fixed-head\",\n )}\n style={leftFixed.length ? { left: expandCol ? 44 : 0 } : undefined}\n >\n {selectionType === \"radio\" ? null : (\n <Check checked={allOn} indeterminate={someOn} onChange={toggleAll} />\n )}\n </th>\n ) : null}\n {visibleColumns.map((c, ci) => {\n const isSort = (sortable || c.sortable) && c.sortable !== false;\n const dir = activeSort && activeSort.key === c.key ? activeSort.dir : null;\n const hasFilter = Array.isArray(c.filters) && c.filters.length > 0;\n const fx = fixedCell(c, true);\n const last = ci === visibleColumns.length - 1;\n const canResize = (resizable || c.resizable) && c.resizable !== false;\n return (\n <th\n key={c.key}\n className={cx(\n \"klun-table__th\",\n isSort && \"klun-table__th--sortable\",\n !last && vBorderClass,\n fx.cls,\n )}\n style={{ textAlign: c.align || \"left\", width: widthOf(c) ?? c.width, ...fx.style }}\n onClick={isSort ? () => setSort(c.key) : undefined}\n aria-sort={dir ? (dir === \"asc\" ? \"ascending\" : \"descending\") : undefined}\n >\n <span\n className=\"klun-table__th-inner\"\n style={{\n justifyContent:\n c.align === \"right\"\n ? \"flex-end\"\n : c.align === \"center\"\n ? \"center\"\n : \"flex-start\",\n }}\n >\n <span className={c.ellipsis ? \"klun-table__ellipsis\" : undefined}>\n {c.headerRender ? c.headerRender() : c.header}\n </span>\n {isSort ? <SortIcon dir={dir} /> : null}\n {hasFilter ? (\n <FilterMenu\n options={c.filters}\n value={activeFilters[c.key] || []}\n multiple={c.filterMultiple !== false}\n onApply={(v) => setFilter(c.key, v)}\n />\n ) : null}\n </span>\n {canResize && !last ? (\n <span\n role=\"separator\"\n aria-orientation=\"vertical\"\n title={table.dragToResize}\n onMouseDown={(e) => startResize(e, c)}\n onClick={(e) => e.stopPropagation()}\n className=\"klun-table__resizer\"\n >\n <span className=\"klun-table__resizer-bar\" />\n </span>\n ) : null}\n </th>\n );\n })}\n </tr>\n </thead>\n );\n}\n","import {\n Fragment,\n type CSSProperties,\n type Dispatch,\n type ReactNode,\n type SetStateAction,\n} from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { useLocale } from \"../../config/ConfigProvider\";\nimport { Check } from \"./Check\";\nimport { copyText } from \"./helpers\";\nimport type { DragState, EditState } from \"./hooks\";\nimport type { TableColumn, TableMenuItem, TableProps } from \"../Table\";\n\ntype DisplayRow<Row> = {\n row: Row;\n id: string | number;\n depth: number;\n hasChildren: boolean;\n};\n\ninterface TableBodyProps<Row> {\n loading: boolean;\n loadingRows: number;\n dragCol: boolean;\n expandCol: boolean;\n selectable: boolean;\n visibleColumns: TableColumn<Row>[];\n pageRows: Row[];\n colCount: number;\n empty: ReactNode;\n displayRows: DisplayRow<Row>[];\n treeOpen: Set<string | number>;\n setTreeOpen: Dispatch<SetStateAction<Set<string | number>>>;\n selected: Array<string | number>;\n onRowClick?: (row: Row) => void;\n rowHref?: (row: Row) => string;\n expanded: Set<string | number>;\n setExpanded: Dispatch<SetStateAction<Set<string | number>>>;\n expandable: TableProps<Row>[\"expandable\"];\n rowStatus?: (\n row: Row,\n ) => \"success\" | \"warning\" | \"error\" | \"info\" | null | undefined;\n drag: DragState;\n setDrag: Dispatch<SetStateAction<DragState>>;\n reorder: (fromId: string | number, toId: string | number, after: boolean) => void;\n zebra: boolean;\n contextMenu?: (\n row: Row,\n helpers: { copyRow: (row: Row) => void; copyText: (text: any) => void },\n ) => TableMenuItem[];\n copyable: boolean;\n copyRow: (row: Row) => void;\n setMenu: (menu: { x: number; y: number; items: TableMenuItem[] } | null) => void;\n leftFixed: TableColumn<Row>[];\n vBorderClass: string;\n selectionType: \"checkbox\" | \"radio\";\n onSelectRow?: (id: string | number) => void;\n fixedCell: (\n c: TableColumn<Row>,\n isHeader: boolean,\n ) => { cls: string; style?: CSSProperties };\n editing: EditState;\n setEditing: Dispatch<SetStateAction<EditState>>;\n startEdit: (id: string | number, c: TableColumn<Row>, row: Row) => void;\n commitEdit: () => void;\n cancelEdit: () => void;\n tree: boolean;\n indentSize: number;\n onCopy?: (kind: \"row\" | \"cell\", row: Row, columnKey?: string) => void;\n}\n\nexport function TableBody<Row>({\n loading,\n loadingRows,\n dragCol,\n expandCol,\n selectable,\n visibleColumns,\n pageRows,\n colCount,\n empty,\n displayRows,\n treeOpen,\n setTreeOpen,\n selected,\n onRowClick,\n rowHref,\n expanded,\n setExpanded,\n expandable,\n rowStatus,\n drag,\n setDrag,\n reorder,\n zebra,\n contextMenu,\n copyable,\n copyRow,\n setMenu,\n leftFixed,\n vBorderClass,\n selectionType,\n onSelectRow,\n fixedCell,\n editing,\n setEditing,\n startEdit,\n commitEdit,\n cancelEdit,\n tree,\n indentSize,\n onCopy,\n}: TableBodyProps<Row>) {\n const { table } = useLocale();\n const skel = <span className=\"klun-table__skel\" />;\n return (\n <tbody>\n {loading ? (\n Array.from({ length: loadingRows }).map((_, i) => (\n <tr key={\"sk\" + i} className={i ? \"klun-table__row--bordered\" : undefined}>\n {dragCol ? <td className=\"klun-table__td\" /> : null}\n {expandCol ? <td className=\"klun-table__td\">{skel}</td> : null}\n {selectable ? <td className=\"klun-table__td\">{skel}</td> : null}\n {visibleColumns.map((c) => (\n <td key={c.key} className=\"klun-table__td\">\n {skel}\n </td>\n ))}\n </tr>\n ))\n ) : pageRows.length === 0 ? (\n <tr>\n <td colSpan={colCount} className=\"klun-table__empty-cell\">\n {empty != null ? (\n empty\n ) : (\n <span className=\"klun-table__empty\">\n <i className=\"ri-inbox-line klun-table__empty-icon\" />\n {table.noData}\n </span>\n )}\n </td>\n </tr>\n ) : (\n displayRows.map((node, i) => {\n const row = node.row;\n const id = node.id;\n const depth = node.depth;\n const treeHasKids = node.hasChildren;\n const treeIsOpen = treeOpen.has(id);\n const toggleTree = () => {\n const n = new Set(treeOpen);\n n.has(id) ? n.delete(id) : n.add(id);\n setTreeOpen(n);\n };\n const on = selected.includes(id);\n const clickable = !!(onRowClick || rowHref);\n const isOpen = expanded.has(id);\n const canExpand =\n expandCol && (!expandable!.rowExpandable || expandable!.rowExpandable(row));\n const toggleRow = () => {\n const next = new Set(expanded);\n next.has(id) ? next.delete(id) : next.add(id);\n setExpanded(next);\n expandable?.onExpand?.(row, !isOpen);\n };\n const st = rowStatus ? rowStatus(row) : null;\n const dragging = !!(drag && drag.id === id);\n const dropOver = !!(drag && drag.overId === id && drag.id !== id);\n const borderTop = i > 0;\n const tdBorder = borderTop ? \"klun-table__td--bordered\" : \"\";\n return (\n <Fragment key={id}>\n <tr\n className={cx(\n \"klun-table__row\",\n on && \"klun-table__row--selected\",\n zebra && i % 2 === 1 && \"klun-table__row--zebra\",\n st && `klun-table__row--status-${st}`,\n clickable && \"klun-table__row--clickable\",\n dragging && \"klun-table__row--dragging\",\n dropOver && \"klun-table__row--dropover\",\n dropOver && drag!.after && \"klun-table__row--dropover-after\",\n )}\n onClick={\n clickable\n ? () =>\n rowHref\n ? (window.location.href = rowHref(row))\n : onRowClick!(row)\n : undefined\n }\n onDragOver={\n dragCol && drag\n ? (e) => {\n e.preventDefault();\n const r = e.currentTarget.getBoundingClientRect();\n const after = e.clientY - r.top > r.height / 2;\n if (drag.overId !== id || drag.after !== after)\n setDrag((dd) => (dd ? { ...dd, overId: id, after } : dd));\n }\n : undefined\n }\n onDrop={\n dragCol && drag\n ? (e) => {\n e.preventDefault();\n reorder(drag.id, id, drag.after);\n setDrag(null);\n }\n : undefined\n }\n onContextMenu={\n contextMenu || copyable\n ? (e) => {\n const custom = contextMenu\n ? contextMenu(row, { copyRow, copyText })\n : null;\n const items: TableMenuItem[] =\n custom && custom.length\n ? custom\n : [\n {\n label: table.copyRow,\n icon: \"ri-file-copy-line\",\n onClick: () => copyRow(row),\n },\n ];\n if (items && items.length) {\n e.preventDefault();\n setMenu({ x: e.clientX, y: e.clientY, items });\n }\n }\n : undefined\n }\n >\n {dragCol ? (\n <td className={cx(\"klun-table__td\", \"klun-table__td--util\", tdBorder)}>\n <span\n draggable\n onDragStart={(e) => {\n e.stopPropagation();\n setDrag({ id, overId: id, after: false });\n try {\n e.dataTransfer.effectAllowed = \"move\";\n e.dataTransfer.setData(\"text/plain\", String(id));\n } catch (x) {\n /* noop */\n }\n }}\n onDragEnd={() => setDrag(null)}\n onClick={(e) => e.stopPropagation()}\n aria-label={table.dragToReorder}\n title={table.dragToReorder}\n className=\"klun-table__draghandle\"\n >\n <i className=\"ri-draggable\" />\n </span>\n </td>\n ) : null}\n {expandCol ? (\n <td\n className={cx(\n \"klun-table__td\",\n \"klun-table__td--lead\",\n tdBorder,\n (leftFixed.length || selectable) &&\n \"klun-table__cell--fixed klun-table__cell--fixed-body\",\n )}\n style={leftFixed.length || selectable ? { left: 0 } : undefined}\n >\n {canExpand ? (\n <button\n type=\"button\"\n aria-label={isOpen ? table.collapse : table.expand}\n aria-expanded={isOpen}\n onClick={(e) => {\n e.stopPropagation();\n toggleRow();\n }}\n className=\"klun-table__expand-btn\"\n >\n <i\n className={cx(\n \"ri-arrow-right-s-line\",\n \"klun-table__chevron\",\n isOpen && \"klun-table__chevron--open\",\n )}\n />\n </button>\n ) : null}\n </td>\n ) : null}\n {selectable ? (\n <td\n className={cx(\n \"klun-table__td\",\n tdBorder,\n vBorderClass,\n leftFixed.length &&\n \"klun-table__cell--fixed klun-table__cell--fixed-body\",\n )}\n style={leftFixed.length ? { left: expandCol ? 44 : 0 } : undefined}\n >\n {selectionType === \"radio\" ? (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={on}\n onClick={(e) => {\n e.stopPropagation();\n onSelectRow?.(id);\n }}\n className={cx(\"klun-table__radio\", on && \"klun-table__radio--on\")}\n >\n {on ? <span className=\"klun-table__radio-dot\" /> : null}\n </button>\n ) : (\n <Check checked={on} onChange={() => onSelectRow?.(id)} />\n )}\n </td>\n ) : null}\n {visibleColumns.map((c, ci) => {\n const fx = fixedCell(c, false);\n const last = ci === visibleColumns.length - 1;\n const content = c.render ? c.render(row) : (row as any)[c.key];\n const inner = c.copyable ? (\n <span\n className=\"klun-table__copycell\"\n onMouseEnter={(e) => {\n const b = e.currentTarget.querySelector(\n \"[data-copy]\",\n ) as HTMLElement | null;\n if (b) b.style.opacity = \"1\";\n }}\n onMouseLeave={(e) => {\n const b = e.currentTarget.querySelector(\n \"[data-copy]\",\n ) as HTMLElement | null;\n if (b) b.style.opacity = \"0\";\n }}\n >\n <span className={c.ellipsis ? \"klun-table__ellipsis\" : undefined}>\n {content}\n </span>\n <button\n type=\"button\"\n data-copy\n aria-label={table.copy}\n onClick={(e) => {\n e.stopPropagation();\n copyText(c.copyValue ? c.copyValue(row) : (row as any)[c.key]);\n onCopy?.(\"cell\", row, c.key);\n }}\n className=\"klun-table__copybtn\"\n >\n <i className=\"ri-file-copy-line\" />\n </button>\n </span>\n ) : (\n content\n );\n const isEditing =\n editing && editing.id === id && editing.key === c.key;\n const editor = isEditing ? (\n c.editor === \"select\" ? (\n <select\n autoFocus\n value={editing!.value ?? \"\"}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) =>\n setEditing((ed) => (ed ? { ...ed, value: e.target.value } : ed))\n }\n onBlur={commitEdit}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") commitEdit();\n if (e.key === \"Escape\") cancelEdit();\n }}\n className=\"klun-table__editor\"\n >\n {(c.options || []).map((o) => {\n const ov = typeof o === \"object\" ? o.value : o;\n const ol = typeof o === \"object\" ? o.label : o;\n return (\n <option key={ov} value={ov}>\n {ol}\n </option>\n );\n })}\n </select>\n ) : (\n <input\n autoFocus\n type={c.editor === \"number\" ? \"number\" : \"text\"}\n value={editing!.value ?? \"\"}\n onClick={(e) => e.stopPropagation()}\n onChange={(e) =>\n setEditing((ed) => (ed ? { ...ed, value: e.target.value } : ed))\n }\n onBlur={commitEdit}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") commitEdit();\n if (e.key === \"Escape\") cancelEdit();\n }}\n className=\"klun-table__editor\"\n style={{ textAlign: c.align || \"left\" }}\n />\n )\n ) : null;\n return (\n <td\n key={c.key}\n onDoubleClick={\n c.editable && !isEditing\n ? (e) => {\n e.stopPropagation();\n startEdit(id, c, row);\n }\n : undefined\n }\n className={cx(\n \"klun-table__td\",\n tdBorder,\n isEditing && \"klun-table__td--editing\",\n (c.nowrap || c.ellipsis) && \"klun-table__td--nowrap\",\n c.ellipsis && \"klun-table__td--ellipsis\",\n c.editable && !isEditing && \"klun-table__td--editable\",\n !last && vBorderClass,\n fx.cls,\n )}\n style={{\n textAlign: c.align || \"left\",\n ...(c.ellipsis ? { maxWidth: c.width || 200 } : null),\n ...fx.style,\n }}\n title={\n c.editable && !isEditing\n ? table.editHint\n : c.ellipsis && typeof content === \"string\"\n ? content\n : undefined\n }\n >\n {isEditing ? (\n editor\n ) : tree && ci === 0 ? (\n <span className=\"klun-table__tree-cell\">\n <span\n className=\"klun-table__tree-indent\"\n style={{ width: depth * indentSize }}\n />\n {treeHasKids ? (\n <button\n type=\"button\"\n aria-label={treeIsOpen ? table.collapse : table.expand}\n aria-expanded={treeIsOpen}\n onClick={(e) => {\n e.stopPropagation();\n toggleTree();\n }}\n className=\"klun-table__tree-toggle\"\n >\n <i\n className={cx(\n \"ri-arrow-right-s-line\",\n \"klun-table__chevron\",\n treeIsOpen && \"klun-table__chevron--open\",\n )}\n />\n </button>\n ) : (\n <span className=\"klun-table__tree-spacer\" />\n )}\n {inner}\n </span>\n ) : (\n inner\n )}\n </td>\n );\n })}\n </tr>\n {expandCol && isOpen ? (\n <tr className=\"klun-table__expand-row\">\n <td colSpan={colCount} className=\"klun-table__expand-cell\">\n <div className=\"klun-table__expand-panel\">\n {expandable!.render(row)}\n </div>\n </td>\n </tr>\n ) : null}\n </Fragment>\n );\n })\n )}\n </tbody>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport type { TableColumn } from \"../Table\";\n\ninterface TableFooterProps<Row> {\n summary?: (rows: Row[]) => ReactNode[];\n expandCol: boolean;\n selectable: boolean;\n pageRows: Row[];\n visibleColumns: TableColumn<Row>[];\n vBorderClass: string;\n footer: ReactNode;\n colCount: number;\n}\n\nexport function TableFooter<Row>({\n summary,\n expandCol,\n selectable,\n pageRows,\n visibleColumns,\n vBorderClass,\n footer,\n colCount,\n}: TableFooterProps<Row>) {\n return (\n <tfoot>\n {summary ? (\n <tr>\n {expandCol ? <td className=\"klun-table__summary-cell\" /> : null}\n {selectable ? <td className=\"klun-table__summary-cell\" /> : null}\n {(() => {\n const cells = summary(pageRows) || [];\n return visibleColumns.map((c, ci) => (\n <td\n key={c.key}\n className={cx(\n \"klun-table__summary-cell\",\n ci !== visibleColumns.length - 1 && vBorderClass,\n )}\n style={{ textAlign: c.align || \"left\" }}\n >\n {cells[ci]}\n </td>\n ));\n })()}\n </tr>\n ) : null}\n {footer ? (\n <tr>\n <td colSpan={colCount} className=\"klun-table__footer-cell\">\n {footer}\n </td>\n </tr>\n ) : null}\n </tfoot>\n );\n}\n","import {\n useState,\n useRef,\n useMemo,\n type MutableRefObject,\n type MouseEvent as ReactMouseEvent,\n} from \"react\";\nimport type { TableColumn, TableSort, TableMenuItem } from \"../Table\";\n\nexport type DragState = { id: string | number; overId: string | number; after: boolean } | null;\nexport type EditState = { id: string | number; key: string; value: any } | null;\nexport type MenuState = { x: number; y: number; items: TableMenuItem[] } | null;\n\n// Column width state + document mousemove/mouseup resize listeners.\nexport function useColumnResize<Row>(columns: TableColumn<Row>[]) {\n const [colW, setColW] = useState<Record<string, number>>({}); // resized widths { key: px }\n const resizeRef = useRef<{ key: string; startX: number; startW: number } | null>(null);\n const widthOf = (c: TableColumn<Row>) =>\n colW[c.key] ?? (typeof c.width === \"number\" ? c.width : undefined);\n const startResize = (e: ReactMouseEvent, c: TableColumn<Row>) => {\n e.preventDefault();\n e.stopPropagation();\n const th = (e.currentTarget as HTMLElement).closest(\"th\");\n const startX = e.clientX;\n const startW = th ? th.getBoundingClientRect().width : widthOf(c) || 160;\n resizeRef.current = { key: c.key, startX, startW };\n const move = (ev: MouseEvent) => {\n const r = resizeRef.current;\n if (!r) return;\n const w = Math.max(c.minWidth || 64, r.startW + (ev.clientX - r.startX));\n setColW((m) => ({ ...m, [r.key]: w }));\n };\n const up = () => {\n resizeRef.current = null;\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n document.body.style.cursor = \"col-resize\";\n document.body.style.userSelect = \"none\";\n };\n return { colW, widthOf, startResize };\n}\n\n// Hidden-column toggle state for the ColumnSettings menu.\nexport function useColumnVisibility<Row>(columns: TableColumn<Row>[]) {\n const [hiddenCols, setHiddenCols] = useState<Set<string>>(\n () => new Set(columns.filter((c) => c.hidden).map((c) => c.key)),\n );\n const visibleColumns = columns.filter((c) => !hiddenCols.has(c.key));\n const toggleColumn = (key: string) =>\n setHiddenCols((s) => {\n const n = new Set(s);\n n.has(key) ? n.delete(key) : n.add(key);\n return n;\n });\n return { hiddenCols, visibleColumns, toggleColumn };\n}\n\n// Context-menu state (open/close).\nexport function useTableContextMenu() {\n const [menu, setMenu] = useState<MenuState>(null); // { x, y, items }\n return { menu, setMenu };\n}\n\n// Filter state (controlled/built-in) + the filtered-rows derivation.\n// `pageReset` carries pagination's { pag, setInnerPage } via a ref so the\n// filter→page-reset coupling stays identical while keeping the pipeline order\n// (filters → sort → pagination) intact.\nexport function useTableFilters<Row>({\n columns,\n rows,\n filters,\n onFiltersChange,\n pageReset,\n}: {\n columns: TableColumn<Row>[];\n rows: Row[];\n filters: Record<string, any[]> | undefined;\n onFiltersChange?: (filters: Record<string, any[]>) => void;\n pageReset: MutableRefObject<{ pag: { page?: number } | null; setInnerPage: (page: number) => void }>;\n}) {\n const [innerFilters, setInnerFilters] = useState<Record<string, any[]>>({}); // { [key]: value[] }\n const activeFilters = filters !== undefined ? filters : innerFilters;\n\n const setFilter = (key: string, value: any[]) => {\n const next: Record<string, any[]> = { ...activeFilters, [key]: value };\n if (!value || value.length === 0) delete next[key];\n if (onFiltersChange) onFiltersChange(next);\n if (filters === undefined) setInnerFilters(next);\n const { pag, setInnerPage } = pageReset.current;\n if (pag && pag.page === undefined) setInnerPage(1);\n };\n\n const filteredRows = useMemo(() => {\n if (filters !== undefined) return rows; // controlled = caller already filtered\n const keys = Object.keys(activeFilters);\n if (keys.length === 0) return rows;\n return rows.filter((row) =>\n keys.every((k) => {\n const col = columns.find((c) => c.key === k);\n const vals = activeFilters[k];\n if (!vals || vals.length === 0) return true;\n if (col && col.onFilter) return vals.some((v) => col.onFilter!(v, row));\n return vals.includes((row as any)[k]);\n }),\n );\n }, [rows, activeFilters, columns, filters]);\n\n return { activeFilters, setFilter, filteredRows };\n}\n\n// Sort state (controlled/uncontrolled/defaultSort) + the sorted-rows derivation.\nexport function useTableSort<Row>({\n columns,\n filteredRows,\n sort,\n onSortChange,\n defaultSort,\n}: {\n columns: TableColumn<Row>[];\n filteredRows: Row[];\n sort: TableSort | null | undefined;\n onSortChange?: (sort: TableSort | null) => void;\n defaultSort: TableSort | null;\n}) {\n const [innerSort, setInnerSort] = useState<TableSort | null>(defaultSort); // { key, dir }\n const activeSort = sort !== undefined ? sort : innerSort;\n\n const setSort = (key: string) => {\n const cur = activeSort && activeSort.key === key ? activeSort.dir : null;\n const next = cur === \"asc\" ? \"desc\" : cur === \"desc\" ? null : \"asc\";\n const value: TableSort | null = next ? { key, dir: next } : null;\n if (onSortChange) onSortChange(value);\n if (sort === undefined) setInnerSort(value);\n };\n\n const sortedRows = useMemo(() => {\n if (!activeSort || sort !== undefined) return filteredRows; // controlled sort = caller already sorted\n const col = columns.find((c) => c.key === activeSort.key);\n if (!col) return filteredRows;\n const acc = col.sortAccessor || ((r: Row) => (r as any)[col.key]);\n const dir = activeSort.dir === \"desc\" ? -1 : 1;\n return [...filteredRows].sort((a, b) => {\n const av = acc(a),\n bv = acc(b);\n if (av == null) return 1;\n if (bv == null) return -1;\n if (typeof av === \"number\" && typeof bv === \"number\") return (av - bv) * dir;\n return String(av).localeCompare(String(bv), undefined, { numeric: true }) * dir;\n });\n }, [filteredRows, activeSort, columns, sort]);\n\n return { activeSort, setSort, sortedRows };\n}\n\n// Page/pageSize state + the page slice. Exposes setInnerPage/pag for filter wiring.\nexport function useTablePagination<Row>({\n pagination,\n sortedRows,\n}: {\n pagination:\n | boolean\n | {\n page?: number;\n pageSize?: number;\n defaultPageSize?: number;\n total?: number;\n pageSizeOptions?: number[];\n onChange?: (page: number, pageSize: number) => void;\n };\n sortedRows: Row[];\n}) {\n const pag = pagination === true ? {} : pagination || null;\n const [innerPage, setInnerPage] = useState(1);\n const [innerSize, setInnerSize] = useState(pag?.pageSize || pag?.defaultPageSize || 10);\n const page = pag?.page ?? innerPage;\n const pageSize = pag?.pageSize ?? innerSize;\n\n const total = pag?.total ?? sortedRows.length;\n const serverPaged = !!(pag && pag.total !== undefined); // caller supplies the page slice\n const pageRows =\n !pag || serverPaged ? sortedRows : sortedRows.slice((page - 1) * pageSize, page * pageSize);\n const changePage = (p: number, size: number) => {\n if (pag?.onChange) pag.onChange(p, size);\n if (pag?.page === undefined) setInnerPage(p);\n if (pag?.pageSize === undefined) setInnerSize(size);\n };\n\n return { pag, page, pageSize, total, serverPaged, pageRows, changePage, setInnerPage };\n}\n\n// Expandable (per-row detail) + tree expand state + the flattened display rows.\nexport function useExpandedRows<Row>({\n expandable,\n tree,\n childrenKey,\n defaultExpandedRowKeys,\n pageRows,\n getRowId,\n}: {\n expandable:\n | {\n render: (row: Row) => any;\n rowExpandable?: (row: Row) => boolean;\n defaultExpandedKeys?: Array<string | number>;\n onExpand?: (row: Row, expanded: boolean) => void;\n }\n | undefined;\n tree: boolean;\n childrenKey: string;\n defaultExpandedRowKeys: Array<string | number> | undefined;\n pageRows: Row[];\n getRowId: (row: Row, index: number) => string | number;\n}) {\n const [treeOpen, setTreeOpen] = useState<Set<string | number>>(\n () => new Set(defaultExpandedRowKeys || []),\n );\n const [expanded, setExpanded] = useState<Set<string | number>>(\n () => new Set(expandable?.defaultExpandedKeys || []),\n );\n\n // Flatten the visible tree (respecting expanded state) into render nodes.\n const displayRows = useMemo(() => {\n if (!tree)\n return pageRows.map((row, i) => ({\n row,\n id: getRowId(row, i),\n depth: 0,\n hasChildren: false,\n }));\n const out: Array<{ row: Row; id: string | number; depth: number; hasChildren: boolean }> = [];\n const walk = (list: Row[], depth: number) => {\n list.forEach((row, i) => {\n const id = getRowId(row, i);\n const kids = (row as any)[childrenKey];\n const hasChildren = Array.isArray(kids) && kids.length > 0;\n out.push({ row, id, depth, hasChildren });\n if (hasChildren && treeOpen.has(id)) walk(kids, depth + 1);\n });\n };\n walk(pageRows, 0);\n return out;\n }, [tree, pageRows, treeOpen, childrenKey, getRowId]);\n\n return { treeOpen, setTreeOpen, expanded, setExpanded, displayRows };\n}\n\n// HTML5 drag-reorder state + the reorder commit.\nexport function useRowReorder<Row>({\n rows,\n getRowId,\n onReorder,\n}: {\n rows: Row[];\n getRowId: (row: Row, index: number) => string | number;\n onReorder?: (rows: Row[], from: number, to: number) => void;\n}) {\n const [drag, setDrag] = useState<DragState>(null); // { id, overId, after }\n\n // Native-DnD row reorder over the full row list (works without pagination/sort).\n const reorder = (fromId: string | number, toId: string | number, after: boolean) => {\n if (fromId === toId) return;\n const ids = rows.map(getRowId);\n const from = ids.indexOf(fromId);\n const to = ids.indexOf(toId);\n if (from < 0 || to < 0) return;\n const next = rows.slice();\n const [moved] = next.splice(from, 1);\n let insert = rows.findIndex((r, i) => getRowId(r, i) === toId);\n if (after) insert += 1;\n if (from < insert) insert -= 1;\n next.splice(insert, 0, moved);\n onReorder?.(next, from, insert);\n };\n\n return { drag, setDrag, reorder };\n}\n\n// Inline cell editing state + start/commit/cancel handlers.\nexport function useCellEdit<Row>({\n columns,\n rows,\n getRowId,\n displayRows,\n onCellEdit,\n}: {\n columns: TableColumn<Row>[];\n rows: Row[];\n getRowId: (row: Row, index: number) => string | number;\n displayRows: Array<{ row: Row; id: string | number }>;\n onCellEdit?: (row: Row, columnKey: string, value: any) => void;\n}) {\n const [editing, setEditing] = useState<EditState>(null); // { id, key, value }\n\n const startEdit = (id: string | number, c: TableColumn<Row>, row: Row) => {\n if (c.editable) setEditing({ id, key: c.key, value: (row as any)[c.key] });\n };\n const commitEdit = () => {\n if (!editing) return;\n const col = columns.find((c) => c.key === editing.key);\n let v = editing.value;\n if (col && col.editor === \"number\") v = v === \"\" ? null : Number(v);\n const r =\n rows.find((row, i) => getRowId(row, i) === editing.id) ||\n displayRows.find((n) => n.id === editing.id)?.row;\n onCellEdit?.(r as Row, editing.key, v);\n setEditing(null);\n };\n const cancelEdit = () => setEditing(null);\n\n return { editing, setEditing, startEdit, commitEdit, cancelEdit };\n}\n","import {\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { copyText, rowsToCsv, downloadCsv } from \"./table/helpers\";\nimport { Pager } from \"./table/Pager\";\nimport { ContextMenu } from \"./table/ContextMenu\";\nimport { TableToolbar } from \"./table/TableToolbar\";\nimport { TableHead } from \"./table/TableHead\";\nimport { TableBody } from \"./table/TableBody\";\nimport { TableFooter } from \"./table/TableFooter\";\nimport {\n useColumnResize,\n useColumnVisibility,\n useTableContextMenu,\n useTableFilters,\n useTableSort,\n useTablePagination,\n useExpandedRows,\n useRowReorder,\n useCellEdit,\n} from \"./table/hooks\";\n\nexport type SortDir = \"asc\" | \"desc\";\nexport interface TableSort {\n key: string;\n dir: SortDir;\n}\n\nexport interface TableMenuItem {\n label?: ReactNode;\n icon?: string;\n onClick?: () => void;\n danger?: boolean;\n disabled?: boolean;\n divider?: boolean;\n shortcut?: ReactNode;\n}\n\nexport interface TableColumn<Row = any> {\n key: string;\n header: ReactNode;\n width?: number | string;\n align?: \"left\" | \"center\" | \"right\";\n /** Make this column sortable (or force off with false while `sortable` is on). */\n sortable?: boolean;\n /** Value used for sorting; defaults to row[key]. */\n sortAccessor?: (row: Row) => string | number | null | undefined;\n /** Filter options shown in the header dropdown. */\n filters?: Array<{ label: ReactNode; value: any }>;\n /** Predicate for a filter value against a row; defaults to row[key] === value. */\n onFilter?: (value: any, row: Row) => boolean;\n /** Allow selecting multiple filter values. Default true. */\n filterMultiple?: boolean;\n /** Pin this column to the left or right edge while scrolling horizontally. */\n fixed?: \"left\" | \"right\";\n /** Truncate overflow with an ellipsis (and native title tooltip for strings). */\n ellipsis?: boolean;\n /** Show a hover copy button in the cell; copies copyValue(row) or row[key]. */\n copyable?: boolean;\n /** Value used for copy (cell and row). Defaults to row[key]. */\n copyValue?: (row: Row) => string | number | null | undefined;\n /** Allow drag-resizing this column (or force off with false while `resizable` is on). */\n resizable?: boolean;\n /** Min width in px when resizing. Default 64. */\n minWidth?: number;\n /** Exclude this column from CSV export. */\n exportable?: boolean;\n /** Hidden by default (toggle via the column-settings menu). */\n hidden?: boolean;\n /** Allow inline editing of this cell (double-click to edit). */\n editable?: boolean;\n /** Editor control used when editable. Default \"text\". */\n editor?: \"text\" | \"number\" | \"select\";\n /** Options for the select editor: values or { label, value }. */\n options?: Array<string | number | { label: ReactNode; value: any }>;\n /** Custom cell renderer; defaults to row[key]. */\n render?: (row: Row) => ReactNode;\n /** Custom header renderer. */\n headerRender?: () => ReactNode;\n /** Prevent the cell text from wrapping. */\n nowrap?: boolean;\n}\n\nexport interface TableProps<Row = any>\n extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"style\" | \"contextMenu\" | \"title\" | \"onCopy\"\n > {\n columns: TableColumn<Row>[];\n rows: Row[];\n getRowId?: (row: Row, index: number) => string | number;\n\n /** Row selection. */\n selectable?: boolean;\n selected?: Array<string | number>;\n onSelectRow?: (id: string | number) => void;\n /** Receives the full id list (or []) when the header box is toggled. */\n onSelectAll?: (ids: Array<string | number>) => void;\n\n /** Enable sorting on all columns (per-column `sortable` still wins). */\n sortable?: boolean;\n /** Controlled sort state; omit for built-in uncontrolled sorting. */\n sort?: TableSort | null;\n onSortChange?: (sort: TableSort | null) => void;\n /** Initial sort for uncontrolled mode. */\n defaultSort?: TableSort | null;\n\n /** Controlled column filters: { [columnKey]: selectedValues[] }. Omit for built-in. */\n filters?: Record<string, any[]>;\n onFiltersChange?: (filters: Record<string, any[]>) => void;\n\n /** Built-in pagination. `true` for defaults, or configure it. */\n pagination?:\n | boolean\n | {\n page?: number;\n pageSize?: number;\n defaultPageSize?: number;\n total?: number;\n pageSizeOptions?: number[];\n onChange?: (page: number, pageSize: number) => void;\n };\n\n /** Expandable rows with a per-row detail panel. */\n expandable?: {\n render: (row: Row) => ReactNode;\n rowExpandable?: (row: Row) => boolean;\n defaultExpandedKeys?: Array<string | number>;\n onExpand?: (row: Row, expanded: boolean) => void;\n };\n\n /** Row height / padding scale. */\n density?: \"compact\" | \"comfortable\" | \"spacious\";\n /** Striped alternate rows. */\n zebra?: boolean;\n /** Sticky header for scrolling bodies. */\n stickyHeader?: boolean;\n /** Row hover highlight. Default true. */\n hover?: boolean;\n /** Draw vertical cell dividers (grid look). */\n bordered?: boolean;\n /** Selection control style. */\n selectionType?: \"checkbox\" | \"radio\";\n /** Tint a row by status, with a colored left accent bar. */\n rowStatus?: (\n row: Row,\n ) => \"success\" | \"warning\" | \"error\" | \"info\" | null | undefined;\n /** Summary/total row: receives the current page rows, returns one node per column. */\n summary?: (rows: Row[]) => ReactNode[];\n\n /** Right-click menu items for a row. Receives clipboard helpers; return [] to suppress. */\n contextMenu?: (\n row: Row,\n helpers: { copyRow: (row: Row) => void; copyText: (text: any) => void },\n ) => TableMenuItem[];\n /** Enable the built-in right-click \"Copy row\" (tab-separated) when no contextMenu is given. */\n copyable?: boolean;\n /** Notified after any copy. kind is \"row\" or \"cell\". */\n onCopy?: (kind: \"row\" | \"cell\", row: Row, columnKey?: string) => void;\n /** Enable drag-to-resize on all columns (per-column `resizable` still wins). */\n resizable?: boolean;\n /** Hierarchical rows: each row may carry a children array (see childrenKey). */\n tree?: boolean;\n /** Property holding child rows. Default \"children\". */\n childrenKey?: string;\n /** Indent per depth level in px. Default 22. */\n indentSize?: number;\n /** Row ids expanded by default in tree mode. */\n defaultExpandedRowKeys?: Array<string | number>;\n /** Show a toolbar \"Columns\" menu to toggle column visibility. */\n columnSettings?: boolean;\n /** Enable drag-to-reorder rows (native HTML5 DnD; disabled in tree mode). */\n rowDraggable?: boolean;\n /** Called with the reordered rows after a drop. */\n onReorder?: (rows: Row[], from: number, to: number) => void;\n /** Commit handler for inline cell edits (enable per column with `editable`). */\n onCellEdit?: (row: Row, columnKey: string, value: any) => void;\n /** Optional toolbar title (left side). */\n title?: ReactNode;\n /** Custom toolbar content (right side, before Export). */\n toolbar?: ReactNode;\n /** Show an \"Export CSV\" button. Pass { filename, selectedOnly } to configure. */\n exportable?: boolean | { filename?: string; selectedOnly?: boolean };\n /** Render bulk actions in a bar shown while rows are selected. */\n selectionActions?: (selectedRows: Row[], clear: () => void) => ReactNode;\n /** Make rows clickable. */\n onRowClick?: (row: Row) => void;\n /** Make rows navigate to a URL. */\n rowHref?: (row: Row) => string;\n\n /** Shimmer skeleton rows. */\n loading?: boolean;\n loadingRows?: number;\n /** Custom empty-state node. */\n empty?: ReactNode;\n\n /** Caption above the table. */\n caption?: ReactNode;\n /** Footer row content (spans all columns). */\n footer?: ReactNode;\n style?: CSSProperties;\n}\n\nconst DENSITY: Record<string, string> = {\n compact: \"klun-table--compact\",\n comfortable: \"klun-table--comfortable\",\n spacious: \"klun-table--spacious\",\n};\n\n/**\n * Klun UI Table — full data-grid: sortable/filterable columns, selection,\n * pagination, expandable & tree rows, density/zebra/sticky, fixed columns,\n * inline editing, drag resize/reorder, CSV export, copy & context menu.\n */\nexport function Table<Row = any>({\n columns = [],\n rows = [],\n getRowId = (_r, i) => i,\n selectable = false,\n selected = [],\n onSelectRow,\n onSelectAll,\n sortable = false,\n sort,\n onSortChange,\n defaultSort = null,\n filters,\n onFiltersChange,\n pagination = false,\n expandable,\n density = \"comfortable\",\n zebra = false,\n stickyHeader = false,\n hover = true,\n bordered = false,\n selectionType = \"checkbox\",\n rowStatus,\n summary,\n contextMenu,\n copyable = false,\n onCopy,\n resizable = false,\n tree = false,\n childrenKey = \"children\",\n indentSize = 22,\n defaultExpandedRowKeys,\n columnSettings = false,\n rowDraggable = false,\n onReorder,\n onCellEdit,\n title,\n toolbar,\n exportable = false,\n selectionActions,\n onRowClick,\n rowHref,\n loading = false,\n loadingRows = 5,\n empty,\n caption,\n footer,\n className,\n style,\n ...props\n}: TableProps<Row>) {\n const densityClass = DENSITY[density] || DENSITY.comfortable;\n const { menu, setMenu } = useTableContextMenu();\n const { colW, widthOf, startResize } = useColumnResize(columns);\n const { hiddenCols, visibleColumns, toggleColumn } = useColumnVisibility(columns);\n const dragCol = rowDraggable && !tree;\n\n // Tab-separated copy of a row across the visible columns (uses column.copyValue).\n const rowToText = (row: Row) =>\n columns\n .map((c) => {\n const v = c.copyValue ? c.copyValue(row) : (row as any)[c.key];\n return v == null ? \"\" : String(v);\n })\n .join(\"\\t\");\n const copyRow = (row: Row) => {\n copyText(rowToText(row));\n onCopy?.(\"row\", row);\n };\n // Pagination owns setInnerPage/pag (computed after sort, below); the filter\n // hook reads them through this ref so the filter→page-reset coupling and the\n // filter → sort → paginate pipeline order both stay identical to the original.\n const pageReset = useRef<{\n pag: { page?: number } | null;\n setInnerPage: (page: number) => void;\n }>({ pag: null, setInnerPage: () => {} });\n const { activeFilters, setFilter, filteredRows } = useTableFilters({\n columns,\n rows,\n filters,\n onFiltersChange,\n pageReset,\n });\n const { activeSort, setSort, sortedRows } = useTableSort({\n columns,\n filteredRows,\n sort,\n onSortChange,\n defaultSort,\n });\n const { pag, page, pageSize, total, pageRows, changePage, setInnerPage } =\n useTablePagination({ pagination, sortedRows });\n pageReset.current = { pag, setInnerPage };\n const expandCol = !!(expandable && expandable.render);\n const colCount =\n visibleColumns.length + (selectable ? 1 : 0) + (expandCol ? 1 : 0) + (dragCol ? 1 : 0);\n\n // Status row tints (antd-style row highlighting) — via modifier classes.\n const vBorderClass = bordered ? \"klun-table__cell--vborder\" : \"\";\n\n // Pre-compute sticky offsets for fixed columns (includes leading util cols).\n const leadW = (expandCol ? 44 : 0) + (selectable ? 44 : 0);\n const leftFixed = visibleColumns.filter((c) => c.fixed === \"left\");\n const leftOffset: Record<string, number> = {};\n {\n let a = leadW;\n leftFixed.forEach((c) => {\n leftOffset[c.key] = a;\n a += typeof c.width === \"number\" ? c.width : 160;\n });\n }\n const rightFixed = visibleColumns.filter((c) => c.fixed === \"right\");\n const rightOffset: Record<string, number> = {};\n {\n let a = 0;\n [...rightFixed].reverse().forEach((c) => {\n rightOffset[c.key] = a;\n a += typeof c.width === \"number\" ? c.width : 160;\n });\n }\n const fixedCell = (\n c: TableColumn<Row>,\n isHeader: boolean,\n ): { cls: string; style?: CSSProperties } => {\n if (c.fixed === \"left\")\n return {\n cls: cx(\"klun-table__cell--fixed\", isHeader && \"klun-table__cell--fixed-head\"),\n style: { left: leftOffset[c.key] },\n };\n if (c.fixed === \"right\")\n return {\n cls: cx(\"klun-table__cell--fixed\", isHeader && \"klun-table__cell--fixed-head\"),\n style: { right: rightOffset[c.key] },\n };\n return { cls: \"\" };\n };\n\n const allIds = pageRows.map(getRowId);\n const allOn = allIds.length > 0 && allIds.every((id) => selected.includes(id));\n const someOn = !allOn && allIds.some((id) => selected.includes(id));\n const toggleAll = () => {\n if (onSelectAll) onSelectAll(allOn ? [] : allIds);\n };\n\n const { treeOpen, setTreeOpen, expanded, setExpanded, displayRows } = useExpandedRows({\n expandable,\n tree,\n childrenKey,\n defaultExpandedRowKeys,\n pageRows,\n getRowId,\n });\n\n const selectedRows = selected.length\n ? rows.filter((r, i) => selected.includes(getRowId(r, i)))\n : [];\n const exportCsv = () =>\n downloadCsv(\n (typeof exportable === \"object\" && exportable.filename) || \"table.csv\",\n rowsToCsv(\n columns,\n selectedRows.length && typeof exportable === \"object\" && exportable.selectedOnly\n ? selectedRows\n : sortedRows,\n ),\n );\n const showToolbar = title != null || toolbar != null || !!exportable || columnSettings;\n const clearSelection = () => onSelectAll && onSelectAll([]);\n\n const { drag, setDrag, reorder } = useRowReorder({ rows, getRowId, onReorder });\n\n const { editing, setEditing, startEdit, commitEdit, cancelEdit } = useCellEdit({\n columns,\n rows,\n getRowId,\n displayRows,\n onCellEdit,\n });\n\n const needScroll = stickyHeader || leftFixed.length > 0 || rightFixed.length > 0;\n return (\n <div\n className={cx(\n \"klun-table\",\n densityClass,\n bordered && \"klun-table--bordered\",\n zebra && \"klun-table--zebra\",\n hover && \"klun-table--hover\",\n stickyHeader && \"klun-table--sticky\",\n needScroll && \"klun-table--scroll\",\n className,\n )}\n style={style}\n {...props}\n >\n <TableToolbar\n showToolbar={showToolbar}\n title={title}\n toolbar={toolbar}\n columnSettings={columnSettings}\n columns={columns}\n hiddenCols={hiddenCols}\n toggleColumn={toggleColumn}\n exportable={exportable}\n exportCsv={exportCsv}\n selectionActions={selectionActions}\n selectedRows={selectedRows}\n clearSelection={clearSelection}\n />\n <div\n className=\"klun-table__scroller\"\n style={\n stickyHeader\n ? ({\n [\"--klun-table-max-height\"]: `${\n (style && (style.maxHeight as number | string)) || 420\n }${typeof (style && style.maxHeight) === \"number\" ? \"px\" : \"\"}`,\n } as CSSProperties)\n : undefined\n }\n >\n <table\n className={cx(\n \"klun-table__table\",\n Object.keys(colW).length && \"klun-table__table--fixed-layout\",\n )}\n >\n <colgroup>\n {dragCol ? <col className=\"klun-table__col-util\" /> : null}\n {expandCol ? <col className=\"klun-table__col-lead\" /> : null}\n {selectable ? <col className=\"klun-table__col-lead\" /> : null}\n {columns.map((c) => {\n const w = widthOf(c);\n return hiddenCols.has(c.key) ? null : (\n <col key={c.key} style={w ? { width: w } : undefined} />\n );\n })}\n </colgroup>\n {caption ? <caption className=\"klun-table__caption\">{caption}</caption> : null}\n <TableHead\n dragCol={dragCol}\n expandCol={expandCol}\n selectable={selectable}\n leftFixed={leftFixed}\n vBorderClass={vBorderClass}\n selectionType={selectionType}\n allOn={allOn}\n someOn={someOn}\n toggleAll={toggleAll}\n visibleColumns={visibleColumns}\n sortable={sortable}\n activeSort={activeSort}\n resizable={resizable}\n widthOf={widthOf}\n fixedCell={fixedCell}\n setSort={setSort}\n activeFilters={activeFilters}\n setFilter={setFilter}\n startResize={startResize}\n />\n <TableBody\n loading={loading}\n loadingRows={loadingRows}\n dragCol={dragCol}\n expandCol={expandCol}\n selectable={selectable}\n visibleColumns={visibleColumns}\n pageRows={pageRows}\n colCount={colCount}\n empty={empty}\n displayRows={displayRows}\n treeOpen={treeOpen}\n setTreeOpen={setTreeOpen}\n selected={selected}\n onRowClick={onRowClick}\n rowHref={rowHref}\n expanded={expanded}\n setExpanded={setExpanded}\n expandable={expandable}\n rowStatus={rowStatus}\n drag={drag}\n setDrag={setDrag}\n reorder={reorder}\n zebra={zebra}\n contextMenu={contextMenu}\n copyable={copyable}\n copyRow={copyRow}\n setMenu={setMenu}\n leftFixed={leftFixed}\n vBorderClass={vBorderClass}\n selectionType={selectionType}\n onSelectRow={onSelectRow}\n fixedCell={fixedCell}\n editing={editing}\n setEditing={setEditing}\n startEdit={startEdit}\n commitEdit={commitEdit}\n cancelEdit={cancelEdit}\n tree={tree}\n indentSize={indentSize}\n onCopy={onCopy}\n />\n <TableFooter\n summary={summary}\n expandCol={expandCol}\n selectable={selectable}\n pageRows={pageRows}\n visibleColumns={visibleColumns}\n vBorderClass={vBorderClass}\n footer={footer}\n colCount={colCount}\n />\n </table>\n </div>\n {pag && !loading ? (\n <Pager\n total={total}\n page={page}\n pageSize={pageSize}\n pageSizeOptions={pag.pageSizeOptions}\n onChange={changePage}\n density={density}\n />\n ) : null}\n {menu ? (\n <ContextMenu\n x={menu.x}\n y={menu.y}\n items={menu.items}\n onClose={() => setMenu(null)}\n />\n ) : null}\n </div>\n );\n}\n\n(Table as { displayName?: string }).displayName = \"Table\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport interface TagProps extends HTMLAttributes<HTMLSpanElement> {\n leadingIcon?: ReactNode;\n /** Show a dismiss (×) button; receives the click handler. */\n onDismiss?: () => void;\n variant?: \"stroke\" | \"gray\";\n disabled?: boolean;\n children?: ReactNode;\n}\n\n/**\n * Tag — rounded-rectangle label, optionally dismissible.\n */\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(function Tag(\n { children, leadingIcon, onDismiss, variant = \"stroke\", disabled = false, className, ...props },\n ref,\n) {\n const { tag } = useLocale();\n return (\n <span\n ref={ref}\n className={cx(\n \"klun-tag\",\n `klun-tag--${variant}`,\n onDismiss && \"klun-tag--dismissible\",\n disabled && \"klun-tag--disabled\",\n className,\n )}\n {...props}\n >\n {leadingIcon ? <span className=\"klun-tag__icon\">{leadingIcon}</span> : null}\n {children}\n {onDismiss ? (\n <button type=\"button\" onClick={onDismiss} aria-label={tag.remove} className=\"klun-tag__dismiss\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" aria-hidden>\n <path d=\"M3 3l6 6M9 3l-6 6\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n ) : null}\n </span>\n );\n});\n\nTag.displayName = \"Tag\";\n","import { forwardRef, type CSSProperties, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface TimelineItem {\n /** Token color name or any CSS color for the node. */\n color?: \"primary\" | \"gray\" | \"success\" | \"error\" | \"warning\" | \"information\" | (string & {});\n /** Custom dot node (e.g. an icon) replacing the ring. */\n dot?: ReactNode;\n label?: ReactNode;\n time?: ReactNode;\n children: ReactNode;\n}\n\nexport interface TimelineProps extends HTMLAttributes<HTMLDivElement> {\n items: TimelineItem[];\n mode?: \"left\" | \"alternate\";\n}\n\nconst COLORS: Record<string, string> = {\n primary: \"var(--klun-primary-base)\",\n gray: \"var(--klun-bg-soft-200)\",\n success: \"var(--klun-state-success-base)\",\n error: \"var(--klun-state-error-base)\",\n warning: \"var(--klun-state-warning-base)\",\n information: \"var(--klun-state-information-base)\",\n};\n\n/**\n * Timeline — vertical sequence of events with colored nodes. Each item carries a\n * `color` (token name or any CSS color), an optional custom `dot`, a `label`,\n * a `time`, and body `children`. `mode=\"alternate\"` flips odd rows to the right.\n */\nexport const Timeline = forwardRef<HTMLDivElement, TimelineProps>(function Timeline(\n { items = [], mode = \"left\", className, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cx(\"klun-timeline\", className)} {...props}>\n {items.map((it, i) => {\n const last = i === items.length - 1;\n const color = COLORS[it.color as string] || it.color || COLORS.primary;\n const alt = mode === \"alternate\" && i % 2 === 1;\n return (\n <div\n key={i}\n className={cx(\"klun-timeline__item\", alt && \"klun-timeline__item--alt\")}\n style={{ [\"--klun-timeline-color\" as string]: color } as CSSProperties}\n >\n <div className=\"klun-timeline__rail\">\n {it.dot ? (\n <span className=\"klun-timeline__dot klun-timeline__dot--custom\">{it.dot}</span>\n ) : (\n <span\n className={cx(\n \"klun-timeline__dot\",\n it.color === \"gray\" && \"klun-timeline__dot--gray\",\n )}\n />\n )}\n {!last ? <span className=\"klun-timeline__connector\" /> : null}\n </div>\n <div className={cx(\"klun-timeline__content\", last && \"klun-timeline__content--last\")}>\n {it.time ? <div className=\"klun-timeline__time\">{it.time}</div> : null}\n {it.label ? <div className=\"klun-timeline__label\">{it.label}</div> : null}\n <div className=\"klun-timeline__body\">{it.children}</div>\n </div>\n </div>\n );\n })}\n </div>\n );\n});\n\nTimeline.displayName = \"Timeline\";\n","import { forwardRef, useEffect, useRef, useState, type CSSProperties, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface TooltipProps {\n content: ReactNode;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** Hover-in delay in ms before showing. Default 200. */\n delay?: number;\n /** Suppress the tooltip entirely. */\n disabled?: boolean;\n children: ReactNode;\n /** Style applied to the tooltip bubble. */\n style?: CSSProperties;\n /** Class applied to the wrapper. */\n className?: string;\n}\n\n/**\n * Tooltip — hover label wrapping a single trigger child. `style` targets the\n * tooltip bubble; `side` chooses placement. `ref` forwards to the wrapper.\n */\nexport const Tooltip = forwardRef<HTMLSpanElement, TooltipProps>(function Tooltip(\n { content, side = \"top\", delay = 200, disabled = false, children, style, className },\n ref,\n) {\n const [open, setOpen] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const show = () => {\n if (disabled || !content) return;\n if (timer.current) clearTimeout(timer.current);\n timer.current = setTimeout(() => setOpen(true), delay);\n };\n const hide = () => {\n if (timer.current) clearTimeout(timer.current);\n setOpen(false);\n };\n useEffect(() => () => {\n if (timer.current) clearTimeout(timer.current);\n }, []);\n return (\n <span\n ref={ref}\n className={cx(\"klun-tooltip\", className)}\n onMouseEnter={show}\n onMouseLeave={hide}\n onFocus={show}\n onBlur={hide}\n >\n {children}\n {open ? (\n <span role=\"tooltip\" className={cx(\"klun-tooltip__bubble\", `klun-tooltip__bubble--${side}`)} style={style}>\n {content}\n </span>\n ) : null}\n </span>\n );\n});\n\nTooltip.displayName = \"Tooltip\";\n","import {\n forwardRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface TreeNode {\n key: string;\n title: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n children?: TreeNode[];\n}\n\nexport interface TreeProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onSelect\"> {\n treeData: TreeNode[];\n expandedKeys?: string[];\n defaultExpandedKeys?: string[];\n onExpand?: (keys: string[]) => void;\n selectedKey?: string;\n onSelect?: (key: string, node: TreeNode) => void;\n checkable?: boolean;\n checkedKeys?: string[];\n onCheck?: (keys: string[]) => void;\n showLine?: boolean;\n /** Make the whole row the click target. Default true. */\n blockNode?: boolean;\n}\n\ntype FlatRow = { node: TreeNode; level: number; hidden: boolean };\ntype CheckState = \"none\" | \"some\" | \"all\";\n\nfunction flatten(\n nodes: TreeNode[],\n level: number,\n parentExpanded: boolean,\n expanded: string[],\n out: FlatRow[],\n) {\n for (const n of nodes) {\n const isExpanded = expanded.includes(n.key);\n out.push({ node: n, level, hidden: !parentExpanded });\n if (n.children && n.children.length) {\n flatten(n.children, level + 1, parentExpanded && isExpanded, expanded, out);\n }\n }\n}\n\n// collect a node + all descendant keys\nfunction descendantKeys(node: TreeNode, acc: string[]): string[] {\n acc.push(node.key);\n (node.children || []).forEach((c) => descendantKeys(c, acc));\n return acc;\n}\n\n/**\n * Klun UI Tree — hierarchical list with expand/collapse, single-select and\n * optional checkboxes (with parent/child cascade). Controlled via\n * expandedKeys / selectedKey / checkedKeys + their onChange callbacks.\n * `treeData`: [{ key, title, icon?, disabled?, children? }]\n */\nexport const Tree = forwardRef<HTMLDivElement, TreeProps>(function Tree(\n {\n treeData = [],\n expandedKeys,\n defaultExpandedKeys = [],\n onExpand,\n selectedKey,\n onSelect,\n checkable = false,\n checkedKeys = [],\n onCheck,\n showLine = false,\n blockNode = true,\n className,\n ...props\n },\n ref,\n) {\n const [innerExpanded, setInnerExpanded] = useState<string[]>(defaultExpandedKeys);\n const exp = expandedKeys !== undefined ? expandedKeys : innerExpanded;\n const setExp = (next: string[]) => {\n if (onExpand) onExpand(next);\n else setInnerExpanded(next);\n };\n\n const rows: FlatRow[] = [];\n flatten(treeData, 0, true, exp, rows);\n\n const toggle = (key: string) =>\n setExp(exp.includes(key) ? exp.filter((k) => k !== key) : [...exp, key]);\n\n const checkState = (node: TreeNode): CheckState => {\n const all = descendantKeys(node, []);\n const checkedCount = all.filter((k) => checkedKeys.includes(k)).length;\n if (checkedCount === 0) return \"none\";\n if (checkedCount === all.length) return \"all\";\n return \"some\";\n };\n\n const onCheckNode = (node: TreeNode) => {\n if (!onCheck) return;\n const all = descendantKeys(node, []);\n const state = checkState(node);\n let next: string[];\n if (state === \"all\") next = checkedKeys.filter((k) => !all.includes(k));\n else next = Array.from(new Set([...checkedKeys, ...all]));\n onCheck(next);\n };\n\n return (\n <div\n ref={ref}\n role=\"tree\"\n className={cx(\"klun-tree\", showLine && \"klun-tree--line\", className)}\n {...props}\n >\n {rows\n .filter((r) => !r.hidden)\n .map(({ node, level }) => {\n const hasChildren = !!(node.children && node.children.length);\n const isExpanded = exp.includes(node.key);\n const selected = selectedKey === node.key;\n const cs: CheckState | null = checkable ? checkState(node) : null;\n return (\n <div\n key={node.key}\n role=\"treeitem\"\n aria-expanded={hasChildren ? isExpanded : undefined}\n aria-selected={selected}\n className={cx(\n \"klun-tree__item\",\n selected && \"klun-tree__item--selected\",\n node.disabled && \"klun-tree__item--disabled\",\n blockNode && \"klun-tree__item--block\",\n )}\n style={{ [\"--klun-tree-indent\" as string]: `${6 + level * 20}px` } as CSSProperties}\n onClick={() => {\n if (node.disabled) return;\n if (!checkable) onSelect && onSelect(node.key, node);\n }}\n >\n <span\n className={cx(\n \"klun-tree__caret\",\n hasChildren && isExpanded && \"klun-tree__caret--expanded\",\n )}\n data-leaf={hasChildren ? undefined : \"\"}\n onClick={(e) => {\n e.stopPropagation();\n if (hasChildren) toggle(node.key);\n }}\n >\n <i className=\"ri-arrow-right-s-line\" />\n </span>\n {checkable ? (\n <span\n className={cx(\"klun-tree__checkbox\", `klun-tree__checkbox--${cs}`)}\n onClick={(e) => {\n e.stopPropagation();\n if (!node.disabled) onCheckNode(node);\n }}\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n {cs === \"all\" ? (\n <path\n d=\"M3.5 8.5l3 3 6-6.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n ) : cs === \"some\" ? (\n <path d=\"M3.5 8h9\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n ) : null}\n </svg>\n </span>\n ) : null}\n {node.icon ? <span className=\"klun-tree__icon\">{node.icon}</span> : null}\n <span className=\"klun-tree__title\">{node.title}</span>\n </div>\n );\n })}\n </div>\n );\n});\n\nTree.displayName = \"Tree\";\n","import { forwardRef, useState, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface AccordionItem {\n id: string;\n title: ReactNode;\n content: ReactNode;\n icon?: ReactNode;\n}\n\nexport interface AccordionProps extends HTMLAttributes<HTMLDivElement> {\n items: AccordionItem[];\n defaultOpen?: string;\n /** Allow multiple panels open at once. */\n multiple?: boolean;\n}\n\n/** Klun UI Accordion — stacked expandable panels. */\nexport const Accordion = forwardRef<HTMLDivElement, AccordionProps>(function Accordion(\n { items = [], defaultOpen, multiple = false, className, ...props },\n ref,\n) {\n const [open, setOpen] = useState<string[]>(() => (defaultOpen != null ? [defaultOpen] : []));\n const toggle = (id: string) =>\n setOpen((cur) => {\n const isOpen = cur.includes(id);\n if (multiple) return isOpen ? cur.filter((x) => x !== id) : [...cur, id];\n return isOpen ? [] : [id];\n });\n\n return (\n <div ref={ref} className={cx(\"klun-accordion\", className)} {...props}>\n {items.map((it) => {\n const isOpen = open.includes(it.id);\n return (\n <div key={it.id} className=\"klun-accordion__item\" data-state={isOpen ? \"open\" : \"closed\"}>\n <button\n type=\"button\"\n className=\"klun-accordion__trigger\"\n aria-expanded={isOpen}\n onClick={() => toggle(it.id)}\n >\n {it.icon ? <span className=\"klun-accordion__icon\">{it.icon}</span> : null}\n <span className=\"klun-accordion__title\">{it.title}</span>\n <span className=\"klun-accordion__chevron\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden>\n <path\n d=\"M6 8l4 4 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </button>\n <div className=\"klun-accordion__panel\">\n <div className=\"klun-accordion__content\">{it.content}</div>\n </div>\n </div>\n );\n })}\n </div>\n );\n});\n\nAccordion.displayName = \"Accordion\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport type AlertStatus = \"information\" | \"success\" | \"warning\" | \"error\" | \"feature\";\nexport type AlertVariant = \"filled\" | \"light\" | \"lighter\" | \"stroke\";\n\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Status color. Default `\"information\"`. */\n status?: AlertStatus;\n /** Surface style. Default `\"lighter\"`. */\n variant?: AlertVariant;\n /** Leading icon node. */\n icon?: ReactNode;\n /** Title line. */\n title?: ReactNode;\n /** Action row rendered below the body. */\n action?: ReactNode;\n /** Renders a dismiss button when provided. */\n onClose?: () => void;\n children?: ReactNode;\n}\n\n/**\n * Alert — inline message block. Pick a `status` (color) and a `variant`\n * (filled / light / lighter / stroke surface).\n */\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n { status = \"information\", variant = \"lighter\", icon, title, action, onClose, className, children, ...props },\n ref,\n) {\n const { alert } = useLocale();\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cx(\"klun-alert\", `klun-alert--${status}`, `klun-alert--${variant}`, className)}\n {...props}\n >\n {icon ? <span className=\"klun-alert__icon\">{icon}</span> : null}\n <div className=\"klun-alert__body\">\n {title ? <div className=\"klun-alert__title\">{title}</div> : null}\n {children ? <div className=\"klun-alert__message\">{children}</div> : null}\n {action ? <div className=\"klun-alert__action\">{action}</div> : null}\n </div>\n {onClose ? (\n <button type=\"button\" onClick={onClose} aria-label={alert.dismiss} className=\"klun-alert__close\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden>\n <path d=\"M4.5 4.5l9 9M13.5 4.5l-9 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n ) : null}\n </div>\n );\n});\n\nAlert.displayName = \"Alert\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport type BannerStatus = \"information\" | \"success\" | \"warning\" | \"error\" | \"feature\";\nexport type BannerVariant = \"filled\" | \"lighter\";\n\nexport interface BannerProps extends HTMLAttributes<HTMLDivElement> {\n /** Status color. Default `\"information\"`. */\n status?: BannerStatus;\n /** Surface style. Default `\"filled\"`. */\n variant?: BannerVariant;\n /** Leading icon node. */\n icon?: ReactNode;\n /** Trailing action node. */\n action?: ReactNode;\n /** Renders a dismiss button when provided. */\n onClose?: () => void;\n children?: ReactNode;\n}\n\n/** Banner — full-width page-level announcement bar. */\nexport const Banner = forwardRef<HTMLDivElement, BannerProps>(function Banner(\n { status = \"information\", variant = \"filled\", icon, action, onClose, className, children, ...props },\n ref,\n) {\n const { banner } = useLocale();\n return (\n <div\n ref={ref}\n className={cx(\"klun-banner\", `klun-banner--${status}`, `klun-banner--${variant}`, className)}\n {...props}\n >\n {icon ? <span className=\"klun-banner__icon\">{icon}</span> : null}\n <div className=\"klun-banner__content\">{children}</div>\n {action}\n {onClose ? (\n <button type=\"button\" onClick={onClose} aria-label={banner.dismiss} className=\"klun-banner__close\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden>\n <path d=\"M4.5 4.5l9 9M13.5 4.5l-9 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n ) : null}\n </div>\n );\n});\n\nBanner.displayName = \"Banner\";\n","import { forwardRef, type HTMLAttributes, type ReactNode, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type CircularProgressColor = \"primary\" | \"success\" | \"warning\" | \"error\";\n\nexport interface CircularProgressProps extends Omit<HTMLAttributes<HTMLDivElement>, \"style\"> {\n value?: number;\n max?: number;\n size?: number;\n stroke?: number;\n color?: CircularProgressColor;\n label?: ReactNode;\n style?: CSSProperties;\n}\n\n/** Klun UI CircularProgress — ring progress with optional center label. */\nexport const CircularProgress = forwardRef<HTMLDivElement, CircularProgressProps>(\n function CircularProgress(\n {\n value = 0,\n max = 100,\n size = 72,\n stroke = 8,\n color = \"primary\",\n label,\n className,\n style,\n ...props\n },\n ref,\n ) {\n const pct = Math.max(0, Math.min(100, (value / max) * 100));\n const r = (size - stroke) / 2;\n const circ = 2 * Math.PI * r;\n return (\n <div\n ref={ref}\n className={cx(\"klun-circular-progress\", `klun-circular-progress--${color}`, className)}\n style={{ [\"--klun-progress-size\" as string]: `${size}px`, ...style } as CSSProperties}\n {...props}\n >\n <svg\n className=\"klun-circular-progress__svg\"\n width={size}\n height={size}\n >\n <circle\n className=\"klun-circular-progress__track\"\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n strokeWidth={stroke}\n />\n <circle\n className=\"klun-circular-progress__indicator\"\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n strokeWidth={stroke}\n strokeLinecap=\"round\"\n strokeDasharray={circ}\n strokeDashoffset={circ * (1 - pct / 100)}\n />\n </svg>\n <div className=\"klun-circular-progress__label\">\n {label != null ? label : `${Math.round(pct)}%`}\n </div>\n </div>\n );\n },\n);\n\nCircularProgress.displayName = \"CircularProgress\";\n","import { forwardRef, type HTMLAttributes, type ReactNode, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type GaugeBarColor =\n | \"gray\"\n | \"blue\"\n | \"orange\"\n | \"red\"\n | \"green\"\n | \"purple\"\n | \"yellow\"\n | \"teal\"\n | \"sky\"\n | \"pink\";\nexport type GaugeBarSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface GaugeBarProps extends Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n value?: number;\n max?: number;\n label?: ReactNode;\n /** Override the auto \"value / max\" caption; pass false-y string to customize. */\n caption?: ReactNode;\n color?: GaugeBarColor;\n size?: GaugeBarSize;\n showValue?: boolean;\n}\n\n/** Klun UI GaugeBar — labeled usage meter (used / total) with a value caption. */\nexport const GaugeBar = forwardRef<HTMLDivElement, GaugeBarProps>(function GaugeBar(\n {\n value = 0,\n max = 100,\n label,\n caption,\n color = \"blue\",\n size = \"md\",\n showValue = true,\n className,\n style,\n ...props\n },\n ref,\n) {\n const pct = Math.max(0, Math.min(100, max ? (value / max) * 100 : 0));\n const showHeader = label || (showValue && caption !== false);\n return (\n <div\n ref={ref}\n className={cx(\"klun-gauge-bar\", `klun-gauge-bar--${color}`, `klun-gauge-bar--${size}`, className)}\n style={style}\n {...props}\n >\n {showHeader ? (\n <div className=\"klun-gauge-bar__header\">\n {label ? <span className=\"klun-gauge-bar__label\">{label}</span> : <span />}\n {showValue ? (\n <span className=\"klun-gauge-bar__value\">\n {caption != null ? caption : `${value} / ${max}`}\n </span>\n ) : null}\n </div>\n ) : null}\n <div className=\"klun-gauge-bar__track\">\n <div\n className=\"klun-gauge-bar__fill\"\n style={{ [\"--klun-gauge-value\" as string]: `${pct}%` } as CSSProperties}\n />\n </div>\n </div>\n );\n});\n\nGaugeBar.displayName = \"GaugeBar\";\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type MessageStatus = \"info\" | \"success\" | \"warning\" | \"error\" | \"loading\";\n\nexport interface MessageProps extends HTMLAttributes<HTMLDivElement> {\n status?: MessageStatus;\n /** Override the status icon (Remix icon class). */\n icon?: string;\n children?: ReactNode;\n}\n\nexport interface MessageOptions {\n content?: ReactNode;\n status?: MessageStatus;\n icon?: string;\n /** ms before auto-close; null (or loading) keeps it open. Default 3000. */\n duration?: number | null;\n /** Stable key — re-opening updates the existing message (loading → done). */\n key?: string | number;\n}\nexport interface MessageApi {\n open: (opts: MessageOptions | string) => string | number;\n close: (key: string | number) => void;\n info: (opts: MessageOptions | string) => string | number;\n success: (opts: MessageOptions | string) => string | number;\n warning: (opts: MessageOptions | string) => string | number;\n error: (opts: MessageOptions | string) => string | number;\n loading: (opts: MessageOptions | string) => string | number;\n}\nexport interface UseMessageDefaults {\n top?: number;\n duration?: number;\n max?: number;\n}\n\nconst STATUS: Record<MessageStatus, { icon: string }> = {\n info: { icon: \"ri-information-fill\" },\n success: { icon: \"ri-checkbox-circle-fill\" },\n warning: { icon: \"ri-alert-fill\" },\n error: { icon: \"ri-close-circle-fill\" },\n loading: { icon: \"ri-loader-4-line\" },\n};\n\n/**\n * Message — compact single-line status pill (presentational). Pick a `status`\n * (info / success / warning / error / loading) for the icon + tint. Pair with\n * `useMessage` for the top-center transient message system.\n */\nexport const Message = forwardRef<HTMLDivElement, MessageProps>(function Message(\n { status = \"info\", icon, className, children, ...props },\n ref,\n) {\n const s = STATUS[status] ?? STATUS.info;\n return (\n <div\n ref={ref}\n role=\"status\"\n className={cx(\"klun-message\", `klun-message--${status}`, className)}\n {...props}\n >\n <i className={cx(\"klun-message__icon\", icon || s.icon)} aria-hidden />\n <span className=\"klun-message__label\">{children}</span>\n </div>\n );\n});\n\nMessage.displayName = \"Message\";\n\nlet _mseq = 0;\n\ninterface MessageItem extends MessageOptions {\n key: string | number;\n}\n\n/**\n * useMessage — antd-style top-center transient messages. Returns `[api, holder]`;\n * render `{holder}` once, then call `api.success(\"Saved\")` etc. Each option may be\n * a string or `{ content, status?, icon?, duration?, key? }`.\n */\nexport function useMessage(defaults: UseMessageDefaults = {}): [MessageApi, ReactNode] {\n const top = defaults.top ?? 16;\n const defaultDuration = defaults.duration ?? 3000;\n const max = defaults.max ?? 4;\n const [items, setItems] = useState<MessageItem[]>([]);\n const timers = useRef<Record<string | number, ReturnType<typeof setTimeout>>>({});\n\n const close = useCallback((key: string | number) => {\n setItems((l) => l.filter((it) => it.key !== key));\n if (timers.current[key]) {\n clearTimeout(timers.current[key]);\n delete timers.current[key];\n }\n }, []);\n\n const open = useCallback(\n (opts: MessageOptions | string) => {\n const o: MessageOptions = typeof opts === \"string\" ? { content: opts } : opts || {};\n const key = o.key != null ? o.key : `m${++_mseq}`;\n const duration =\n o.duration === null || o.status === \"loading\" ? 0 : o.duration ?? defaultDuration;\n setItems((l) => {\n const next = l.filter((it) => it.key !== key).concat({ ...o, key });\n return next.length > max ? next.slice(next.length - max) : next;\n });\n if (timers.current[key]) clearTimeout(timers.current[key]);\n if (duration > 0) timers.current[key] = setTimeout(() => close(key), duration);\n return key;\n },\n [close, defaultDuration, max],\n );\n\n useEffect(\n () => () => {\n Object.values(timers.current).forEach(clearTimeout);\n },\n [],\n );\n\n const api = useMemo<MessageApi>(() => {\n const make =\n (status: MessageStatus) =>\n (opts: MessageOptions | string) =>\n open(typeof opts === \"string\" ? { content: opts, status } : { ...opts, status });\n return {\n open,\n close,\n info: make(\"info\"),\n success: make(\"success\"),\n warning: make(\"warning\"),\n error: make(\"error\"),\n loading: make(\"loading\"),\n };\n }, [open, close]);\n\n const holder = (\n <div className=\"klun-message-holder\" style={{ [\"--klun-message-top\" as string]: `${top}px` }}>\n {items.map((it) => (\n <div key={it.key} className=\"klun-message-holder__item\">\n <Message status={it.status} icon={it.icon}>\n {it.content}\n </Message>\n </div>\n ))}\n </div>\n );\n return [api, holder];\n}\n\n/* Reach the lowercase hook via the exposed capitalized component. */\n(Message as typeof Message & { useMessage: typeof useMessage }).useMessage = useMessage;\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport type NotificationStatus =\n | \"default\"\n | \"information\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"loading\";\n\nexport interface NotificationProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n status?: NotificationStatus;\n /** Override the status icon (Remix icon class). */\n icon?: string;\n title?: ReactNode;\n description?: ReactNode;\n /** Action buttons row. */\n actions?: ReactNode;\n closable?: boolean;\n onClose?: () => void;\n /** When set (ms), shows an auto-dismiss progress bar. */\n duration?: number;\n}\n\nconst STATUS: Record<NotificationStatus, { icon: string; c: string | null }> = {\n default: { icon: \"ri-notification-3-line\", c: null },\n information: { icon: \"ri-information-fill\", c: \"information\" },\n success: { icon: \"ri-checkbox-circle-fill\", c: \"success\" },\n warning: { icon: \"ri-alert-fill\", c: \"warning\" },\n error: { icon: \"ri-close-circle-fill\", c: \"error\" },\n loading: { icon: \"ri-loader-4-line\", c: \"information\" },\n};\n\n/**\n * Klun UI Notification — corner notification card (presentational). Pair with\n * `useNotification` for the stacked, auto-dismissing system, or render alone.\n */\nexport const Notification = forwardRef<HTMLDivElement, NotificationProps>(function Notification(\n {\n status = \"default\",\n icon,\n title,\n description,\n actions,\n closable = true,\n onClose,\n duration,\n className,\n ...props\n },\n ref,\n) {\n const { notification } = useLocale();\n const s = STATUS[status] || STATUS.default;\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cx(\"klun-notification\", `klun-notification--${status}`, className)}\n {...props}\n >\n <span className=\"klun-notification__icon\">\n <i className={icon || s.icon} />\n </span>\n <div className=\"klun-notification__body\">\n {title ? (\n <div className={cx(\"klun-notification__title\", closable && \"klun-notification__title--closable\")}>\n {title}\n </div>\n ) : null}\n {description ? <div className=\"klun-notification__description\">{description}</div> : null}\n {actions ? <div className=\"klun-notification__actions\">{actions}</div> : null}\n </div>\n {closable ? (\n <button type=\"button\" onClick={onClose} aria-label={notification.close} className=\"klun-notification__close\">\n <i className=\"ri-close-line\" />\n </button>\n ) : null}\n {duration ? (\n <span\n className=\"klun-notification__bar\"\n style={{ [\"--klun-notif-duration\"]: `${duration}ms` } as CSSProperties}\n />\n ) : null}\n </div>\n );\n});\n\nNotification.displayName = \"Notification\";\n\nexport type NotificationPlacement =\n | \"topRight\"\n | \"topLeft\"\n | \"bottomRight\"\n | \"bottomLeft\"\n | \"top\"\n | \"bottom\";\n\nexport interface NotificationOptions {\n title?: ReactNode;\n description?: ReactNode;\n status?: NotificationStatus;\n icon?: string;\n /** ms before auto-close; null to keep open. Defaults to the hook duration. */\n duration?: number | null;\n actions?: ReactNode;\n closable?: boolean;\n /** Stable key — re-opening with the same key updates the existing toast. */\n key?: string | number;\n onClose?: () => void;\n}\n\nexport interface NotificationApi {\n open: (opts: NotificationOptions) => string | number;\n close: (key: string | number) => void;\n success: (opts: NotificationOptions | string) => string | number;\n error: (opts: NotificationOptions | string) => string | number;\n warning: (opts: NotificationOptions | string) => string | number;\n info: (opts: NotificationOptions | string) => string | number;\n loading: (opts: NotificationOptions | string) => string | number;\n}\n\nexport interface UseNotificationDefaults {\n placement?: NotificationPlacement;\n /** Default auto-dismiss in ms. Default 4500. */\n duration?: number;\n /** Max concurrent toasts before the oldest is dropped. Default 5. */\n max?: number;\n}\n\ninterface NotificationItem extends NotificationOptions {\n key: string | number;\n duration: number;\n}\n\ninterface PlacementSpec {\n top?: number;\n bottom?: number;\n left?: number | string;\n right?: number;\n align: CSSProperties[\"alignItems\"];\n center?: boolean;\n from: string;\n}\n\nconst PLACEMENT: Record<NotificationPlacement, PlacementSpec> = {\n topRight: { top: 16, right: 16, align: \"flex-end\", from: \"translateX(120%)\" },\n topLeft: { top: 16, left: 16, align: \"flex-start\", from: \"translateX(-120%)\" },\n bottomRight: { bottom: 16, right: 16, align: \"flex-end\", from: \"translateX(120%)\" },\n bottomLeft: { bottom: 16, left: 16, align: \"flex-start\", from: \"translateX(-120%)\" },\n top: { top: 16, left: \"50%\", align: \"center\", center: true, from: \"translateY(-120%)\" },\n bottom: { bottom: 16, left: \"50%\", align: \"center\", center: true, from: \"translateY(120%)\" },\n};\n\nlet _seq = 0;\n\n/**\n * Klun UI useNotification — antd-style imperative API.\n * Returns [api, holder]; render {holder} once, then call api.success(opts) etc.\n * Each opts: { title, description, status?, icon?, duration?, actions?, closable?, key?, onClose? }.\n */\nexport function useNotification(defaults: UseNotificationDefaults = {}): [NotificationApi, ReactNode] {\n const placement = defaults.placement || \"topRight\";\n const defaultDuration = defaults.duration ?? 4500;\n const max = defaults.max ?? 5;\n const [items, setItems] = useState<NotificationItem[]>([]);\n const timers = useRef<Record<string | number, ReturnType<typeof setTimeout>>>({});\n\n const close = useCallback((key: string | number) => {\n setItems((list) => list.filter((it) => it.key !== key));\n if (timers.current[key]) {\n clearTimeout(timers.current[key]);\n delete timers.current[key];\n }\n }, []);\n\n const open = useCallback(\n (opts: NotificationOptions = {}) => {\n const key = opts.key != null ? opts.key : `n${++_seq}`;\n const duration = opts.duration === null ? 0 : opts.duration ?? defaultDuration;\n setItems((list) => {\n const next = list.filter((it) => it.key !== key).concat({ ...opts, key, duration });\n return next.length > max ? next.slice(next.length - max) : next;\n });\n if (timers.current[key]) clearTimeout(timers.current[key]);\n if (duration > 0) timers.current[key] = setTimeout(() => close(key), duration);\n return key;\n },\n [close, defaultDuration, max],\n );\n\n useEffect(\n () => () => {\n Object.values(timers.current).forEach(clearTimeout);\n },\n [],\n );\n\n const api = useMemo<NotificationApi>(() => {\n const make =\n (status: NotificationStatus) => (opts: NotificationOptions | string) =>\n open(typeof opts === \"string\" ? { title: opts, status } : { ...opts, status });\n return {\n open,\n close,\n success: make(\"success\"),\n error: make(\"error\"),\n warning: make(\"warning\"),\n info: make(\"information\"),\n loading: make(\"loading\"),\n };\n }, [open, close]);\n\n const p = PLACEMENT[placement] || PLACEMENT.topRight;\n const ordered = p.bottom != null ? [...items].reverse() : items;\n const holder = (\n <div\n className={cx(\"klun-notification-holder\", `klun-notification-holder--${placement}`)}\n style={{ alignItems: p.align }}\n >\n {ordered.map((it) => (\n <div\n key={it.key}\n className=\"klun-notification-holder__item\"\n style={{ [\"--klun-notif-from\"]: p.from } as CSSProperties}\n >\n <Notification\n {...it}\n onClose={() => {\n it.onClose?.();\n close(it.key);\n }}\n />\n </div>\n ))}\n </div>\n );\n return [api, holder];\n}\n\n/* Reach the lowercase hook via the exposed capitalized component. */\n(Notification as typeof Notification & { useNotification: typeof useNotification }).useNotification =\n useNotification;\n","import { forwardRef, type HTMLAttributes, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type ProgressColor = \"primary\" | \"success\" | \"warning\" | \"error\";\n\nexport interface ProgressBarProps extends HTMLAttributes<HTMLDivElement> {\n value?: number;\n max?: number;\n color?: ProgressColor;\n}\n\n/** Klun UI ProgressBar — horizontal determinate progress track. */\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(function ProgressBar(\n { value = 0, max = 100, color = \"primary\", className, ...props },\n ref,\n) {\n const pct = Math.max(0, Math.min(100, (value / max) * 100));\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemax={max}\n className={cx(\"klun-progress-bar\", `klun-progress-bar--${color}`, className)}\n {...props}\n >\n <div\n className=\"klun-progress-bar__fill\"\n style={{ [\"--klun-progress-value\" as string]: `${pct}%` } as CSSProperties}\n />\n </div>\n );\n});\n\nProgressBar.displayName = \"ProgressBar\";\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type SegmentedProgressColor = \"primary\" | \"success\" | \"warning\" | \"error\";\n\nexport interface SegmentedProgressProps extends HTMLAttributes<HTMLDivElement> {\n /** Number of filled segments. */\n value?: number;\n segments?: number;\n color?: SegmentedProgressColor;\n}\n\n/** Klun UI SegmentedProgress — multi-segment bar (strength meters, steps). */\nexport const SegmentedProgress = forwardRef<HTMLDivElement, SegmentedProgressProps>(\n function SegmentedProgress(\n { value = 0, segments = 4, color = \"primary\", className, ...props },\n ref,\n ) {\n return (\n <div\n ref={ref}\n className={cx(\"klun-segmented-progress\", `klun-segmented-progress--${color}`, className)}\n {...props}\n >\n {Array.from({ length: segments }, (_, i) => (\n <span\n key={i}\n className=\"klun-segmented-progress__segment\"\n data-filled={i < value ? \"true\" : undefined}\n />\n ))}\n </div>\n );\n },\n);\n\nSegmentedProgress.displayName = \"SegmentedProgress\";\n","import { forwardRef, type HTMLAttributes, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface SkeletonProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"style\"> {\n width?: number | string;\n height?: number | string;\n circle?: boolean;\n style?: CSSProperties;\n}\n\n/** Klun UI Skeleton — shimmering loading placeholder. */\nexport const Skeleton = forwardRef<HTMLSpanElement, SkeletonProps>(function Skeleton(\n { width = \"100%\", height = 16, circle = false, className, style, ...props },\n ref,\n) {\n return (\n <span\n ref={ref}\n aria-hidden\n className={cx(\"klun-skeleton\", circle && \"klun-skeleton--circle\", className)}\n style={\n {\n [\"--klun-skeleton-width\" as string]: typeof width === \"number\" ? `${width}px` : width,\n [\"--klun-skeleton-height\" as string]: typeof height === \"number\" ? `${height}px` : height,\n ...style,\n } as CSSProperties\n }\n {...props}\n />\n );\n});\n\nSkeleton.displayName = \"Skeleton\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport type ToastStatus = \"information\" | \"success\" | \"warning\" | \"error\";\n\nexport interface ToastProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Status color of the icon badge. Default `\"success\"`. */\n status?: ToastStatus;\n /** Icon node rendered in the badge. */\n icon?: ReactNode;\n /** Title line. */\n title?: ReactNode;\n /** Action row rendered below the body. */\n action?: ReactNode;\n /** Renders a dismiss button when provided. */\n onClose?: () => void;\n /** Tint the whole card by status (not just the icon badge). */\n rich?: boolean;\n children?: ReactNode;\n}\n\n/** Toast — transient notification card (presentational). */\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(function Toast(\n { status = \"success\", icon, title, action, onClose, rich = false, className, children, ...props },\n ref,\n) {\n const { toast } = useLocale();\n return (\n <div\n ref={ref}\n role=\"status\"\n className={cx(\"klun-toast\", `klun-toast--${status}`, rich && \"klun-toast--rich\", className)}\n {...props}\n >\n <div className=\"klun-toast__badge\">{icon}</div>\n <div className=\"klun-toast__body\">\n {title ? <div className=\"klun-toast__title\">{title}</div> : null}\n {children ? <div className=\"klun-toast__message\">{children}</div> : null}\n {action ? <div className=\"klun-toast__action\">{action}</div> : null}\n </div>\n {onClose ? (\n <button type=\"button\" onClick={onClose} aria-label={toast.dismiss} className=\"klun-toast__close\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden>\n <path d=\"M4.5 4.5l9 9M13.5 4.5l-9 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n ) : null}\n </div>\n );\n});\n\nToast.displayName = \"Toast\";\n","import {\n isValidElement,\n useCallback,\n useEffect,\n useRef,\n useState,\n useSyncExternalStore,\n type CSSProperties,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cx } from \"../../utils/cx\";\nimport { Toast, type ToastStatus } from \"./Toast\";\nimport { primaryColorVars, useConfig } from \"../config/ConfigProvider\";\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\n/** Convenience action — rendered as a button that runs `onClick` and dismisses. */\nexport interface ToastAction {\n label: ReactNode;\n onClick?: () => void;\n /** Dismiss the toast after the action runs. Default `true`. */\n dismiss?: boolean;\n}\n\nexport interface ToastOptions {\n /** Stable id. Calling `toast` again with the same id updates that toast. */\n id?: string | number;\n /** Title line shown above the message. */\n title?: ReactNode;\n /** Status color + default icon. Default `\"information\"`. */\n status?: ToastStatus;\n /** Override the default status icon. */\n icon?: ReactNode;\n /** ms before auto-dismiss. `0` / `Infinity` keep it until dismissed. */\n duration?: number;\n /** Action row — a node, or `{ label, onClick }` rendered as a button that dismisses on click. */\n action?: ReactNode | ToastAction;\n /** Tint the whole card by status. Overrides the Toaster's `richColors`. */\n rich?: boolean;\n}\n\nfunction isToastAction(a: unknown): a is ToastAction {\n return !!a && typeof a === \"object\" && !isValidElement(a) && \"label\" in a;\n}\n\ninterface ToastItem extends ToastOptions {\n id: string | number;\n message?: ReactNode;\n}\n\nconst STATUS_ICON: Record<ToastStatus, string> = {\n information: \"ri-information-line\",\n success: \"ri-checkbox-circle-line\",\n warning: \"ri-alert-line\",\n error: \"ri-error-warning-line\",\n};\n\n/* ---- store (framework-agnostic, callable from anywhere) ---- */\nlet items: ToastItem[] = [];\nconst listeners = new Set<() => void>();\nlet counter = 0;\nconst emit = () => listeners.forEach((l) => l());\n\nfunction upsert(message: ReactNode, opts: ToastOptions = {}): string | number {\n const id = opts.id ?? ++counter;\n const next: ToastItem = { status: \"information\", ...opts, id, message };\n const i = items.findIndex((t) => t.id === id);\n items = i >= 0 ? items.map((t) => (t.id === id ? next : t)) : [next, ...items];\n emit();\n return id;\n}\n\nfunction remove(id?: string | number): void {\n items = id == null ? [] : items.filter((t) => t.id !== id);\n emit();\n}\n\nexport interface ToastPromiseMessages<T> {\n loading: ReactNode;\n success: ReactNode | ((data: T) => ReactNode);\n error: ReactNode | ((err: unknown) => ReactNode);\n}\n\nfunction promiseToast<T>(\n p: Promise<T>,\n msgs: ToastPromiseMessages<T>,\n opts: ToastOptions = {},\n): Promise<T> {\n const id = upsert(msgs.loading, { ...opts, status: \"information\", duration: Infinity });\n p.then(\n (data) =>\n upsert(typeof msgs.success === \"function\" ? (msgs.success as (d: T) => ReactNode)(data) : msgs.success, {\n ...opts,\n id,\n status: \"success\",\n duration: opts.duration ?? 4000,\n }),\n (err) =>\n upsert(typeof msgs.error === \"function\" ? (msgs.error as (e: unknown) => ReactNode)(err) : msgs.error, {\n ...opts,\n id,\n status: \"error\",\n duration: opts.duration ?? 4000,\n }),\n );\n return p;\n}\n\ntype ToastFn = (message: ReactNode, opts?: ToastOptions) => string | number;\n\n/**\n * Imperative toast API — call from anywhere (`toast(\"Saved\")`,\n * `toast.success(...)`, `toast.dismiss(id)`). Render a single `<Toaster />`\n * near the app root to display them.\n */\nexport const toast: ToastFn & {\n success: ToastFn;\n error: ToastFn;\n warning: ToastFn;\n info: ToastFn;\n /** Dismiss one toast by id, or all when called with no argument. */\n dismiss: (id?: string | number) => void;\n /** Show a loading toast that updates to success/error when the promise settles. */\n promise: <T>(p: Promise<T>, msgs: ToastPromiseMessages<T>, opts?: ToastOptions) => Promise<T>;\n} = Object.assign(((message, opts) => upsert(message, opts)) as ToastFn, {\n success: (m: ReactNode, o?: ToastOptions) => upsert(m, { ...o, status: \"success\" as const }),\n error: (m: ReactNode, o?: ToastOptions) => upsert(m, { ...o, status: \"error\" as const }),\n warning: (m: ReactNode, o?: ToastOptions) => upsert(m, { ...o, status: \"warning\" as const }),\n info: (m: ReactNode, o?: ToastOptions) => upsert(m, { ...o, status: \"information\" as const }),\n dismiss: remove,\n promise: promiseToast,\n});\n\nfunction useToasts(): ToastItem[] {\n return useSyncExternalStore(\n (l) => {\n listeners.add(l);\n return () => listeners.delete(l);\n },\n () => items,\n () => items,\n );\n}\n\nexport interface ToasterProps {\n /** Corner the stack is anchored to. Default `\"bottom-right\"`. */\n position?: ToastPosition;\n /** Default auto-dismiss duration (ms) for toasts that don't set their own. Default `4000`. */\n duration?: number;\n /** Max toasts shown at once; extras queue and appear as visible ones leave. */\n max?: number;\n /** Tint every toast card by status (per-toast `rich` overrides this). */\n richColors?: boolean;\n /** Space between stacked toasts, px. Default `12`. */\n gap?: number;\n /** Distance from the viewport edge, px. Default `16`. */\n offset?: number;\n className?: string;\n style?: CSSProperties;\n}\n\n/**\n * Toaster — renders the active toasts in a fixed, portaled stack. Mount it once\n * (inside your ConfigProvider, so toasts inherit its locale/theme/dir). Toasts\n * auto-dismiss after their `duration` and pause while the pointer is over the stack.\n */\nexport function Toaster({\n position = \"bottom-right\",\n duration,\n max,\n richColors = false,\n gap,\n offset,\n className,\n style,\n}: ToasterProps) {\n const list = useToasts();\n const { theme, accent, dir, primaryColor } = useConfig();\n const [paused, setPaused] = useState(false);\n const [mounted, setMounted] = useState(false);\n useEffect(() => setMounted(true), []);\n if (!mounted) return null;\n\n const rootStyle: Record<string, string> = { ...(style as Record<string, string>) };\n if (primaryColor) Object.assign(rootStyle, primaryColorVars(primaryColor));\n if (gap != null) rootStyle[\"--klun-toaster-gap\"] = `${gap}px`;\n if (offset != null) rootStyle[\"--klun-toaster-offset\"] = `${offset}px`;\n\n const visible = typeof max === \"number\" && max > 0 ? list.slice(0, max) : list;\n\n return createPortal(\n <div\n className={cx(\"klun-toaster\", `klun-toaster--${position}`, className)}\n data-theme={theme}\n data-mode={accent}\n dir={dir}\n style={rootStyle as CSSProperties}\n onMouseEnter={() => setPaused(true)}\n onMouseLeave={() => setPaused(false)}\n >\n {visible.map((item) => (\n <ToastRow\n key={item.id}\n item={item}\n paused={paused}\n defaultDuration={duration}\n richColors={richColors}\n />\n ))}\n </div>,\n document.body,\n );\n}\nToaster.displayName = \"Toaster\";\n\nconst SWIPE_THRESHOLD = 80;\n\nfunction ToastRow({\n item,\n paused,\n defaultDuration,\n richColors,\n}: {\n item: ToastItem;\n paused: boolean;\n defaultDuration?: number;\n richColors?: boolean;\n}) {\n const duration = item.duration ?? defaultDuration ?? 4000;\n const [leaving, setLeaving] = useState(false);\n const [dragging, setDragging] = useState(false);\n const [dx, setDx] = useState(0);\n const fling = useRef(0);\n const remaining = useRef(duration);\n const lastDuration = useRef(duration);\n const startedAt = useRef(0);\n const startX = useRef(0);\n const leaveTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n const leave = useCallback(\n (dir: number) => {\n setLeaving((l) => {\n if (l) return l;\n fling.current = dir;\n leaveTimer.current = setTimeout(() => remove(item.id), 200);\n return true;\n });\n },\n [item.id],\n );\n const close = useCallback(() => leave(0), [leave]);\n\n // auto-dismiss (paused while hovered or dragging; resets when duration changes)\n useEffect(() => {\n if (leaving) return;\n if (lastDuration.current !== duration) {\n lastDuration.current = duration;\n remaining.current = duration;\n startedAt.current = 0;\n }\n if (!Number.isFinite(duration) || duration <= 0) return;\n if (paused || dragging) {\n if (startedAt.current) {\n remaining.current -= Date.now() - startedAt.current;\n startedAt.current = 0;\n }\n return;\n }\n startedAt.current = Date.now();\n const t = setTimeout(close, Math.max(0, remaining.current));\n return () => clearTimeout(t);\n }, [paused, dragging, leaving, duration, close]);\n\n useEffect(() => () => clearTimeout(leaveTimer.current), []);\n\n // swipe-to-dismiss (ignored when the pointer starts on an interactive control)\n const onPointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (leaving || e.button !== 0) return;\n if ((e.target as HTMLElement).closest(\"button, a, input, textarea, select, [role=button]\")) return;\n startX.current = e.clientX;\n setDragging(true);\n e.currentTarget.setPointerCapture?.(e.pointerId);\n };\n const onPointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (dragging) setDx(e.clientX - startX.current);\n };\n const endDrag = () => {\n if (!dragging) return;\n setDragging(false);\n if (Math.abs(dx) > SWIPE_THRESHOLD) leave(dx > 0 ? 1 : -1);\n else setDx(0);\n };\n\n const transform = leaving\n ? fling.current\n ? `translateX(${fling.current * 600}px)`\n : \"scale(0.96)\"\n : dx\n ? `translateX(${dx}px)`\n : undefined;\n const opacity = leaving ? 0 : dx ? Math.max(0, 1 - Math.abs(dx) / 240) : undefined;\n\n const icon = item.icon ?? <i className={STATUS_ICON[item.status ?? \"information\"]} aria-hidden />;\n\n const act = item.action;\n const action = isToastAction(act) ? (\n <button\n type=\"button\"\n className=\"klun-toast__action-btn\"\n onClick={() => {\n act.onClick?.();\n if (act.dismiss !== false) close();\n }}\n >\n {act.label}\n </button>\n ) : (\n act\n );\n\n return (\n <div\n className=\"klun-toaster__row\"\n data-dragging={dragging || undefined}\n data-leaving={leaving || undefined}\n style={{ transform, opacity }}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={endDrag}\n onPointerCancel={endDrag}\n >\n <Toast\n status={item.status}\n icon={icon}\n title={item.title}\n action={action}\n rich={item.rich ?? richColors}\n onClose={close}\n >\n {item.message}\n </Toast>\n </div>\n );\n}\n","import {\n forwardRef,\n useState,\n useRef,\n useEffect,\n type HTMLAttributes,\n type ReactNode,\n type KeyboardEvent,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize, useLocale } from \"../config/ConfigProvider\";\n\nexport interface AutoCompleteOption {\n value: string;\n label?: ReactNode;\n icon?: ReactNode;\n description?: ReactNode;\n}\n\nexport interface AutoCompleteProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"onSelect\"> {\n options: (AutoCompleteOption | string)[];\n value?: string;\n onChange?: (value: string) => void;\n onSelect?: (value: string, option: AutoCompleteOption) => void;\n placeholder?: string;\n size?: \"small\" | \"medium\" | \"large\";\n disabled?: boolean;\n /** Filter options by the typed text (default true). Set false for async lists. */\n filter?: boolean;\n leadingIcon?: ReactNode;\n emptyText?: ReactNode;\n maxVisible?: number;\n}\n\n/**\n * AutoComplete — text input with a filtered suggestion dropdown + keyboard nav.\n * `className`/`style` target the root wrapper; `ref` forwards to the `<input>`.\n */\nexport const AutoComplete = forwardRef<HTMLInputElement, AutoCompleteProps>(\n function AutoComplete(\n {\n options = [],\n value = \"\",\n onChange,\n onSelect,\n placeholder,\n size: sizeProp,\n disabled = false,\n filter = true,\n leadingIcon,\n emptyText: emptyTextProp,\n maxVisible = 6,\n className,\n ...props\n },\n ref,\n ) {\n const size = useSize(sizeProp);\n const { autoComplete } = useLocale();\n const emptyText = emptyTextProp ?? autoComplete.noResults;\n const [open, setOpen] = useState(false);\n const [hi, setHi] = useState(-1);\n const rootRef = useRef<HTMLDivElement>(null);\n\n const norm: AutoCompleteOption[] = options.map((o) =>\n typeof o === \"string\" ? { value: o, label: o } : o,\n );\n const filtered =\n filter && value\n ? norm.filter((o) =>\n String(o.label ?? o.value)\n .toLowerCase()\n .includes(String(value).toLowerCase()),\n )\n : norm;\n const shown = filtered.slice(0, maxVisible);\n\n useEffect(() => {\n if (!open) return;\n const h = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n return () => document.removeEventListener(\"mousedown\", h);\n }, [open]);\n\n const choose = (o: AutoCompleteOption) => {\n onChange?.(o.value);\n onSelect?.(o.value, o);\n setOpen(false);\n setHi(-1);\n };\n\n const onKey = (e: KeyboardEvent<HTMLInputElement>) => {\n if (!open && e.key === \"ArrowDown\") {\n setOpen(true);\n return;\n }\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setHi((h) => Math.min(shown.length - 1, h + 1));\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setHi((h) => Math.max(0, h - 1));\n } else if (e.key === \"Enter\" && hi >= 0 && shown[hi]) {\n e.preventDefault();\n choose(shown[hi]);\n } else if (e.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n return (\n <div\n ref={rootRef}\n className={cx(\"klun-autocomplete\", `klun-autocomplete--${size}`, className)}\n {...props}\n >\n <div\n className={cx(\n \"klun-autocomplete__field\",\n disabled && \"klun-autocomplete__field--disabled\",\n )}\n data-open={open ? \"\" : undefined}\n >\n {leadingIcon ? (\n <span className=\"klun-autocomplete__icon\">{leadingIcon}</span>\n ) : null}\n <input\n ref={ref}\n className=\"klun-autocomplete__input\"\n value={value}\n disabled={disabled}\n placeholder={placeholder}\n onChange={(e) => {\n onChange?.(e.target.value);\n setOpen(true);\n setHi(-1);\n }}\n onFocus={() => setOpen(true)}\n onKeyDown={onKey}\n />\n </div>\n {open ? (\n <div className=\"klun-autocomplete__list\" role=\"listbox\">\n {shown.length === 0 ? (\n <div className=\"klun-autocomplete__empty\">{emptyText}</div>\n ) : (\n shown.map((o, i) => (\n <button\n key={o.value}\n type=\"button\"\n role=\"option\"\n aria-selected={i === hi}\n className={cx(\n \"klun-autocomplete__option\",\n i === hi && \"klun-autocomplete__option--highlighted\",\n )}\n onMouseEnter={() => setHi(i)}\n onClick={() => choose(o)}\n >\n {o.icon ? (\n <span className=\"klun-autocomplete__option-icon\">{o.icon}</span>\n ) : null}\n <span className=\"klun-autocomplete__option-text\">\n <span className=\"klun-autocomplete__option-label\">\n {o.label ?? o.value}\n </span>\n {o.description ? (\n <span className=\"klun-autocomplete__option-desc\">{o.description}</span>\n ) : null}\n </span>\n </button>\n ))\n )}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nAutoComplete.displayName = \"AutoComplete\";\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize, useLocale } from \"../config/ConfigProvider\";\n\nexport interface CascaderOption {\n value: string;\n label: ReactNode;\n disabled?: boolean;\n children?: CascaderOption[];\n}\n\nexport interface CascaderProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n options: CascaderOption[];\n value?: string[];\n onChange?: (path: string[]) => void;\n placeholder?: string;\n size?: \"small\" | \"medium\" | \"large\";\n disabled?: boolean;\n error?: boolean;\n /** Joins the label path in the trigger. */\n separator?: string;\n /** Emit onChange on every level, not just leaves. */\n changeOnSelect?: boolean;\n}\n\n/**\n * Cascader — multi-column drill-down selector for hierarchical data\n * (region, category…). Controlled via `value` (array of keys) / `onChange`.\n * `options`: [{ value, label, disabled?, children? }]. `ref` forwards to the root.\n */\nexport const Cascader = forwardRef<HTMLDivElement, CascaderProps>(function Cascader(\n {\n options = [],\n value = [],\n onChange,\n placeholder: placeholderProp,\n size: sizeProp,\n disabled = false,\n separator = \" / \",\n changeOnSelect = false,\n error = false,\n className,\n ...props\n },\n ref,\n) {\n const size = useSize(sizeProp);\n const { cascader } = useLocale();\n const placeholder = placeholderProp ?? cascader.placeholder;\n const [open, setOpen] = useState(false);\n const [active, setActive] = useState<string[]>(value); // path being hovered/built\n const rootRef = useRef<HTMLDivElement | null>(null);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n setActive(value);\n }, [open]);\n\n useEffect(() => {\n if (!open) return;\n const h = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) setOpen(false);\n };\n const k = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n document.addEventListener(\"keydown\", k);\n return () => {\n document.removeEventListener(\"mousedown\", h);\n document.removeEventListener(\"keydown\", k);\n };\n }, [open]);\n\n // Build the columns to display from the active path.\n const columns: CascaderOption[][] = [];\n let level: CascaderOption[] = options;\n columns.push(level);\n for (const key of active) {\n const found = (level || []).find((o) => o.value === key);\n if (found && found.children && found.children.length) {\n level = found.children;\n columns.push(level);\n } else break;\n }\n\n // Resolve label path for current committed value.\n const labelPath: ReactNode[] = [];\n let lvl: CascaderOption[] = options;\n for (const key of value) {\n const found = (lvl || []).find((o) => o.value === key);\n if (!found) break;\n labelPath.push(found.label);\n lvl = found.children || [];\n }\n\n const pick = (colIndex: number, opt: CascaderOption) => {\n if (opt.disabled) return;\n const nextPath = [...active.slice(0, colIndex), opt.value];\n setActive(nextPath);\n const leaf = !opt.children || !opt.children.length;\n if (leaf || changeOnSelect) {\n onChange && onChange(nextPath);\n if (leaf) setOpen(false);\n }\n };\n\n const setRefs = (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as { current: HTMLDivElement | null }).current = node;\n };\n\n return (\n <div\n ref={setRefs}\n className={cx(\"klun-cascader\", `klun-cascader--${size}`, className)}\n data-open={open || undefined}\n data-error={error || undefined}\n {...props}\n >\n <button\n type=\"button\"\n className=\"klun-cascader__trigger\"\n disabled={disabled}\n onClick={() => setOpen((o) => !o)}\n aria-haspopup=\"true\"\n aria-expanded={open}\n data-empty={labelPath.length ? undefined : \"\"}\n >\n <span className=\"klun-cascader__value\">\n {labelPath.length\n ? labelPath.map((lbl, i) => (\n <span key={i} className=\"klun-cascader__value-part\">\n {i > 0 ? <span className=\"klun-cascader__separator\">{separator}</span> : null}\n {lbl}\n </span>\n ))\n : placeholder}\n </span>\n <svg\n className=\"klun-cascader__caret\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M6 8l4 4 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n {open ? (\n <div className=\"klun-cascader__panel\">\n {columns.map((col, ci) => (\n <div\n key={ci}\n className={cx(\n \"klun-cascader__column\",\n ci < columns.length - 1 && \"klun-cascader__column--divided\",\n )}\n >\n {col.map((opt) => {\n const selected = active[ci] === opt.value;\n const hasChildren = !!(opt.children && opt.children.length);\n return (\n <button\n key={opt.value}\n type=\"button\"\n className=\"klun-cascader__option\"\n disabled={opt.disabled}\n onClick={() => pick(ci, opt)}\n data-selected={selected || undefined}\n >\n <span className=\"klun-cascader__option-label\">{opt.label}</span>\n {hasChildren ? (\n <i className=\"ri-arrow-right-s-line klun-cascader__option-arrow\" />\n ) : selected ? (\n <i className=\"ri-check-line klun-cascader__option-check\" />\n ) : null}\n </button>\n );\n })}\n </div>\n ))}\n </div>\n ) : null}\n </div>\n );\n});\n\nCascader.displayName = \"Cascader\";\n","import { forwardRef, type HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface CharacterCounterProps extends HTMLAttributes<HTMLSpanElement> {\n /** Current character count. Default `0`. */\n value?: number;\n /** Maximum allowed count. Default `100`. */\n max?: number;\n}\n\n/**\n * CharacterCounter — \"current / max\" count that turns into an error tone once\n * the limit is exceeded. Pair under an Input or Textarea.\n */\nexport const CharacterCounter = forwardRef<HTMLSpanElement, CharacterCounterProps>(\n function CharacterCounter({ value = 0, max = 100, className, ...props }, ref) {\n const over = value > max;\n return (\n <span\n ref={ref}\n className={cx(\"klun-character-counter\", over && \"klun-character-counter--over\", className)}\n {...props}\n >\n {value}\n <span className=\"klun-character-counter__max\">/{max}</span>\n </span>\n );\n },\n);\n\nCharacterCounter.displayName = \"CharacterCounter\";\n","import {\n forwardRef,\n useEffect,\n useRef,\n type ChangeEvent,\n type CSSProperties,\n type InputHTMLAttributes,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport type CheckboxSize = \"small\" | \"medium\" | \"large\";\n\nexport interface CheckboxProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\" | \"onChange\" | \"type\"> {\n checked?: boolean;\n indeterminate?: boolean;\n disabled?: boolean;\n /** Red error ring. */\n error?: boolean;\n size?: CheckboxSize;\n onChange?: (checked: boolean) => void;\n style?: CSSProperties;\n}\n\n/** Klun UI Checkbox — square boolean control with checked / indeterminate states. */\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n { indeterminate = false, disabled = false, error = false, size: sizeProp, onChange, className, style, ...props },\n ref,\n) {\n const size = useSize(sizeProp);\n const innerRef = useRef<HTMLInputElement | null>(null);\n\n const setRef = (node: HTMLInputElement | null) => {\n innerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n };\n\n useEffect(() => {\n if (innerRef.current) innerRef.current.indeterminate = indeterminate;\n }, [indeterminate]);\n\n return (\n <label\n className={cx(\n \"klun-checkbox\",\n `klun-checkbox--${size}`,\n disabled && \"klun-checkbox--disabled\",\n error && \"klun-checkbox--error\",\n className,\n )}\n style={style}\n >\n <input\n ref={setRef}\n type=\"checkbox\"\n className=\"klun-checkbox__input\"\n disabled={disabled}\n aria-invalid={error || undefined}\n onChange={(e: ChangeEvent<HTMLInputElement>) => onChange?.(e.target.checked)}\n {...props}\n />\n <span className=\"klun-checkbox__box\" aria-hidden>\n <svg className=\"klun-checkbox__check\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M3.5 8.5l3 3 6-6.5\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n <svg className=\"klun-checkbox__dash\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M3.5 8h9\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n </svg>\n </span>\n </label>\n );\n});\n\nCheckbox.displayName = \"Checkbox\";\n","import {\n forwardRef,\n type ChangeEvent,\n type LabelHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type CheckboxCardAlign = \"start\" | \"center\";\n\nexport interface CheckboxCardProps\n extends Omit<LabelHTMLAttributes<HTMLLabelElement>, \"onChange\" | \"title\"> {\n title?: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n checked?: boolean;\n disabled?: boolean;\n onChange?: (checked: boolean) => void;\n /** Vertical alignment of the row. Default `\"start\"`. */\n align?: CheckboxCardAlign;\n children?: ReactNode;\n}\n\n/**\n * CheckboxCard — selectable bordered card wrapping a checkbox, title,\n * description and optional leading icon. Use in checkbox-group choice grids.\n * `ref` forwards to the `<input>`.\n */\nexport const CheckboxCard = forwardRef<HTMLInputElement, CheckboxCardProps>(\n function CheckboxCard(\n {\n title,\n description,\n icon,\n checked = false,\n disabled = false,\n onChange,\n align = \"start\",\n className,\n children,\n ...props\n },\n ref,\n ) {\n return (\n <label\n className={cx(\n \"klun-checkbox-card\",\n `klun-checkbox-card--${align}`,\n disabled && \"klun-checkbox-card--disabled\",\n className,\n )}\n {...props}\n >\n {icon ? <span className=\"klun-checkbox-card__icon\">{icon}</span> : null}\n <span className=\"klun-checkbox-card__content\">\n {title ? <span className=\"klun-checkbox-card__title\">{title}</span> : null}\n {description ? (\n <span className=\"klun-checkbox-card__description\">{description}</span>\n ) : null}\n {children}\n </span>\n <span className=\"klun-checkbox-card__control\">\n <input\n ref={ref}\n type=\"checkbox\"\n className=\"klun-checkbox-card__input\"\n checked={checked}\n disabled={disabled}\n onChange={(e: ChangeEvent<HTMLInputElement>) => onChange?.(e.target.checked)}\n />\n <span className=\"klun-checkbox-card__box\" aria-hidden>\n <svg\n className=\"klun-checkbox-card__check\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n >\n <path\n d=\"M3.5 8.5l3 3 6-6.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n </span>\n </label>\n );\n },\n);\n\nCheckboxCard.displayName = \"CheckboxCard\";\n","import { forwardRef, type ButtonHTMLAttributes, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useMappedSize } from \"../config/ConfigProvider\";\n\nexport type ColorDotSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ColorDotProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n /** Any CSS color or token var() for the swatch fill. Default `var(--klun-primary-base)`. */\n color?: string;\n selected?: boolean;\n size?: ColorDotSize;\n disabled?: boolean;\n /** Show a white check when selected. Default `true`. */\n showCheck?: boolean;\n}\n\n/** ColorDot — selectable color swatch with a selected ring + check. */\nexport const ColorDot = forwardRef<HTMLButtonElement, ColorDotProps>(function ColorDot(\n {\n color = \"var(--klun-primary-base)\",\n selected = false,\n size: sizeProp,\n disabled = false,\n showCheck = true,\n className,\n style,\n ...props\n },\n ref,\n) {\n const size = useMappedSize(sizeProp, { small: \"sm\", medium: \"md\", large: \"lg\" }, \"md\");\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={selected}\n disabled={disabled}\n className={cx(\n \"klun-color-dot\",\n `klun-color-dot--${size}`,\n selected && \"klun-color-dot--selected\",\n className,\n )}\n style={{ [\"--klun-color-dot-fill\" as string]: color, ...style } as CSSProperties}\n {...props}\n >\n {selected && showCheck ? (\n <svg className=\"klun-color-dot__check\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path\n d=\"M3.5 8.5l3 3 6-6.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : null}\n </button>\n );\n});\n\nColorDot.displayName = \"ColorDot\";\n","import { forwardRef, type HTMLAttributes, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nconst PRESETS = [\n \"#335CFF\",\n \"#7D52F4\",\n \"#FA7319\",\n \"#1FC16B\",\n \"#FB3748\",\n \"#47C2FF\",\n \"#F6B51E\",\n \"#FB4BA3\",\n \"#22D3BB\",\n \"#525866\",\n];\n\nexport interface ColorPickerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"style\"> {\n /** Currently selected hex color. Default `\"#335CFF\"`. */\n value?: string;\n /** Called with the newly chosen hex color. */\n onChange?: (hex: string) => void;\n /** Swatch colors to render. */\n swatches?: string[];\n /** Style applied to the picker root. */\n style?: CSSProperties;\n}\n\n/** ColorPicker — swatch grid + hex input. */\nexport const ColorPicker = forwardRef<HTMLDivElement, ColorPickerProps>(function ColorPicker(\n { value = \"#335CFF\", onChange, swatches = PRESETS, className, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cx(\"klun-color-picker\", className)} {...props}>\n <div className=\"klun-color-picker__swatches\">\n {swatches.map((c) => {\n const on = c.toLowerCase() === value.toLowerCase();\n return (\n <button\n key={c}\n type=\"button\"\n className=\"klun-color-picker__swatch\"\n onClick={() => onChange?.(c)}\n aria-label={c}\n aria-selected={on}\n data-selected={on || undefined}\n style={{ [\"--klun-color-picker-swatch\" as string]: c }}\n />\n );\n })}\n </div>\n <div className=\"klun-color-picker__field\">\n <span\n className=\"klun-color-picker__preview\"\n style={{ [\"--klun-color-picker-value\" as string]: value }}\n />\n <input\n className=\"klun-color-picker__input\"\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n />\n </div>\n </div>\n );\n});\n\nColorPicker.displayName = \"ColorPicker\";\n","import {\n forwardRef,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n type MouseEvent,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport type ColorSliderSize = \"small\" | \"medium\" | \"large\";\n\nexport interface ColorSliderProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Position 0–100. Default `50`. */\n value?: number;\n onChange?: (value: number) => void;\n /** \"hue\", \"alpha\", or a custom CSS gradient string for the track. Default `\"hue\"`. */\n track?: \"hue\" | \"alpha\" | string;\n /** Base color used by the alpha track. Default `var(--klun-primary-base)`. */\n color?: string;\n disabled?: boolean;\n /** Track size. Default `\"medium\"`. */\n size?: ColorSliderSize;\n}\n\nconst HUE_GRADIENT =\n \"linear-gradient(90deg,#FF3B30,#FF9500,#FFCC00,#34C759,#00C7BE,#007AFF,#5856D6,#AF52DE,#FF3B30)\";\n\n/**\n * ColorSlider — single-channel slider (hue, alpha or a custom gradient) with a\n * draggable thumb. Controlled via `value` (0–100) / `onChange`. `ref` forwards\n * to the track element.\n */\nexport const ColorSlider = forwardRef<HTMLDivElement, ColorSliderProps>(function ColorSlider(\n {\n value = 50,\n onChange,\n track = \"hue\",\n color = \"var(--klun-primary-base)\",\n disabled = false,\n size: sizeProp,\n className,\n style,\n ...props\n },\n ref,\n) {\n const size = useSize(sizeProp);\n const innerRef = useRef<HTMLDivElement | null>(null);\n\n const setRef = (node: HTMLDivElement | null) => {\n innerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n };\n\n const isPreset = track === \"hue\" || track === \"alpha\";\n const trackBg =\n track === \"hue\"\n ? HUE_GRADIENT\n : track === \"alpha\"\n ? `linear-gradient(90deg, transparent, ${color}), repeating-conic-gradient(#e9e9e9 0% 25%, #fff 0% 50%) 0/12px 12px`\n : track;\n\n const set = (clientX: number) => {\n if (!innerRef.current || disabled) return;\n const r = innerRef.current.getBoundingClientRect();\n const pct = Math.max(0, Math.min(100, ((clientX - r.left) / r.width) * 100));\n onChange?.(Math.round(pct));\n };\n\n const onDown = (e: MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n set(e.clientX);\n const move = (ev: globalThis.MouseEvent) => set(ev.clientX);\n const up = () => {\n window.removeEventListener(\"mousemove\", move);\n window.removeEventListener(\"mouseup\", up);\n };\n window.addEventListener(\"mousemove\", move);\n window.addEventListener(\"mouseup\", up);\n };\n\n return (\n <div\n ref={setRef}\n onMouseDown={onDown}\n className={cx(\n \"klun-color-slider\",\n `klun-color-slider--${size}`,\n isPreset && `klun-color-slider--${track}`,\n disabled && \"klun-color-slider--disabled\",\n className,\n )}\n style={\n {\n [\"--klun-color-slider-value\"]: `${value}%`,\n [\"--klun-color-slider-track\"]: trackBg,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n <span className=\"klun-color-slider__thumb\" />\n </div>\n );\n});\n\nColorSlider.displayName = \"ColorSlider\";\n","import { Children, Fragment, isValidElement, type ReactNode } from \"react\";\n\n/** A flattened `<option>` for the custom dropdown list. */\nexport interface ParsedOption {\n value: string;\n label: ReactNode;\n disabled?: boolean;\n}\n\n/** Flatten `<option>` / `<optgroup>` (and fragments) children into a plain list,\n * skipping hidden placeholder options. */\nexport function parseOptions(children: ReactNode): ParsedOption[] {\n const out: ParsedOption[] = [];\n const visit = (nodes: ReactNode) => {\n Children.forEach(nodes, (c) => {\n if (!isValidElement(c)) return;\n if (c.type === Fragment || c.type === \"optgroup\") {\n visit((c.props as { children?: ReactNode }).children);\n return;\n }\n if (c.type === \"option\") {\n const p = c.props as {\n value?: unknown;\n children?: ReactNode;\n disabled?: boolean;\n hidden?: boolean;\n };\n if (p.hidden) return;\n out.push({ value: String(p.value ?? \"\"), label: p.children, disabled: p.disabled });\n }\n });\n };\n visit(children);\n return out;\n}\n\n/** Imperatively set a native <select> value (bypassing React's value tracking)\n * and optionally fire its change event so React `onChange` runs. */\nexport function setNativeValue(el: HTMLSelectElement, value: string, dispatch: boolean): void {\n const desc = Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype, \"value\");\n desc?.set?.call(el, value);\n if (dispatch) el.dispatchEvent(new Event(\"change\", { bubbles: true }));\n}\n","import {\n useEffect,\n useRef,\n useState,\n type KeyboardEvent,\n type MutableRefObject,\n type ReactNode,\n type Ref,\n type RefObject,\n type SelectHTMLAttributes,\n} from \"react\";\nimport { parseOptions, setNativeValue, type ParsedOption } from \"./shared\";\n\ntype NativeValue = SelectHTMLAttributes<HTMLSelectElement>[\"value\"];\n\nexport interface UseSelectArgs {\n children: ReactNode;\n value?: NativeValue;\n defaultValue?: NativeValue;\n /** Blocks opening + keyboard (pass `disabled || loading`). */\n disabled?: boolean;\n /** The wrapper element, used for outside-click detection. */\n rootRef: RefObject<HTMLElement | null>;\n}\n\n/**\n * Shared controller for the custom select family. Parses `<option>` children\n * into a list, tracks the value (controlled `value` or uncontrolled\n * `defaultValue` + internal state), drives open/active state + keyboard nav,\n * and bridges to a hidden native `<select>` (form value + native `onChange` via\n * the native value setter, plus a merged `ref`).\n */\nexport function useSelect({ children, value, defaultValue, disabled, rootRef }: UseSelectArgs) {\n const controlled = value !== undefined;\n const options = parseOptions(children);\n const [internal, setInternal] = useState<string>(String(value ?? defaultValue ?? \"\"));\n const current = controlled ? String(value ?? \"\") : internal;\n const [open, setOpen] = useState(false);\n const [active, setActive] = useState(-1);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const selectRef = useRef<HTMLSelectElement | null>(null);\n const selected = options.find((o) => o.value === current) ?? null;\n\n // keep the hidden native select in sync with a controlled `value`\n useEffect(() => {\n if (controlled && selectRef.current && selectRef.current.value !== String(value ?? \"\")) {\n setNativeValue(selectRef.current, String(value ?? \"\"), false);\n }\n }, [controlled, value]);\n\n // close on outside click\n useEffect(() => {\n if (!open) return;\n const onDown = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open, rootRef]);\n\n const openMenu = () => {\n if (disabled) return;\n const idx = options.findIndex((o) => o.value === current);\n setActive(idx >= 0 ? idx : options.findIndex((o) => !o.disabled));\n setOpen(true);\n };\n const close = (refocus = true) => {\n setOpen(false);\n if (refocus) triggerRef.current?.focus();\n };\n const toggle = () => (open ? close(false) : openMenu());\n const pick = (opt: ParsedOption) => {\n if (opt.disabled) return;\n if (!controlled) setInternal(opt.value);\n if (selectRef.current) setNativeValue(selectRef.current, opt.value, true);\n close();\n };\n const step = (dir: 1 | -1) => {\n if (!options.length) return;\n let i = active;\n for (let n = 0; n < options.length; n++) {\n i = (i + dir + options.length) % options.length;\n if (!options[i].disabled) break;\n }\n setActive(i);\n };\n const triggerKeyDown = (e: KeyboardEvent) => {\n if (disabled) return;\n if (!open) {\n if (e.key === \"ArrowDown\" || e.key === \"ArrowUp\" || e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n openMenu();\n }\n return;\n }\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n step(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n step(-1);\n break;\n case \"Home\":\n e.preventDefault();\n setActive(options.findIndex((o) => !o.disabled));\n break;\n case \"End\":\n e.preventDefault();\n for (let i = options.length - 1; i >= 0; i--)\n if (!options[i].disabled) {\n setActive(i);\n break;\n }\n break;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n if (options[active]) pick(options[active]);\n break;\n case \"Escape\":\n e.preventDefault();\n close();\n break;\n case \"Tab\":\n setOpen(false);\n break;\n }\n };\n\n /** Merge the forwarded ref with the internal hidden-select ref. */\n const mergeSelectRef = (forwarded: Ref<HTMLSelectElement>) => (node: HTMLSelectElement | null) => {\n selectRef.current = node;\n if (typeof forwarded === \"function\") forwarded(node);\n else if (forwarded) (forwarded as MutableRefObject<HTMLSelectElement | null>).current = node;\n };\n\n return {\n options,\n current,\n selected,\n open,\n active,\n setActive,\n triggerRef,\n openMenu,\n close,\n toggle,\n pick,\n triggerKeyDown,\n mergeSelectRef,\n };\n}\n","import { type ParsedOption } from \"./shared\";\n\nexport interface SelectListboxProps {\n options: ParsedOption[];\n current: string;\n active: number;\n onActivate: (index: number) => void;\n onPick: (option: ParsedOption) => void;\n /** Extra class on the panel, e.g. `klun-select-listbox--right` to right-align. */\n className?: string;\n}\n\n/**\n * Shared dropdown panel for the custom select family (Select, CompactSelect,\n * InlineSelect, CompactSelectForInput). Renders a `role=\"listbox\"` of option\n * buttons with hover/keyboard highlight and a selected check. Styling lives in\n * select/listbox.css (`.klun-select-listbox*`), so every select shares one look.\n */\nexport function SelectListbox({\n options,\n current,\n active,\n onActivate,\n onPick,\n className,\n}: SelectListboxProps) {\n return (\n <div\n role=\"listbox\"\n className={className ? `klun-select-listbox ${className}` : \"klun-select-listbox\"}\n >\n {options.map((o, i) => (\n <button\n key={o.value || i}\n type=\"button\"\n role=\"option\"\n aria-selected={o.value === current}\n data-active={i === active || undefined}\n disabled={o.disabled}\n onMouseEnter={() => onActivate(i)}\n onClick={() => onPick(o)}\n className=\"klun-select-listbox__option\"\n >\n <span className=\"klun-select-listbox__label\">{o.label}</span>\n {o.value === current ? (\n <svg\n className=\"klun-select-listbox__check\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M5 10.5l3.5 3.5L15 6.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : null}\n </button>\n ))}\n </div>\n );\n}\n","import {\n forwardRef,\n useRef,\n type CSSProperties,\n type ReactNode,\n type SelectHTMLAttributes,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useMappedSize } from \"../config/ConfigProvider\";\nimport { useSelect } from \"./select/useSelect\";\nimport { SelectListbox } from \"./select/Listbox\";\n\nexport type CompactSelectSize = \"xsmall\" | \"small\" | \"medium\";\n/** Visual chrome: bordered (stroke), borderless (ghost) or weak gray fill. */\nexport type CompactSelectAppearance = \"stroke\" | \"ghost\" | \"weak\";\n\nexport interface CompactSelectProps\n extends Omit<SelectHTMLAttributes<HTMLSelectElement>, \"size\" | \"style\"> {\n size?: CompactSelectSize;\n /** Visual chrome: bordered (stroke), borderless (ghost) or weak gray fill. */\n appearance?: CompactSelectAppearance;\n leadingIcon?: ReactNode;\n placeholder?: string;\n disabled?: boolean;\n /** <option> elements. */\n children?: ReactNode;\n /** Style applied to the outer wrapper. */\n style?: CSSProperties;\n}\n\n/**\n * CompactSelect — small toolbar/filter dropdown with a fully custom, themed\n * dropdown (not the native OS menu). Use for sort, period, density pickers.\n * Keeps the familiar `<option>` children API and native form semantics: a\n * visually-hidden `<select>` carries the value for form submission, receives\n * `name`/native `onChange`, and is what `ref` forwards to. Controlled via\n * `value` or uncontrolled via `defaultValue`. `className`/`style` target the\n * wrapper.\n */\nexport const CompactSelect = forwardRef<HTMLSelectElement, CompactSelectProps>(\n function CompactSelect(\n {\n size: sizeProp,\n appearance = \"stroke\",\n leadingIcon,\n placeholder,\n disabled = false,\n className,\n style,\n children,\n value,\n defaultValue,\n onChange,\n ...props\n },\n ref,\n ) {\n const size = useMappedSize(sizeProp, { small: \"small\", medium: \"medium\", large: \"medium\" }, \"small\");\n const rootRef = useRef<HTMLDivElement>(null);\n const s = useSelect({ children, value, defaultValue, disabled, rootRef });\n\n return (\n <div\n ref={rootRef}\n className={cx(\n \"klun-compact-select\",\n `klun-compact-select--${size}`,\n `klun-compact-select--${appearance}`,\n disabled && \"klun-compact-select--disabled\",\n className,\n )}\n style={style}\n >\n <button\n ref={s.triggerRef}\n type=\"button\"\n disabled={disabled}\n onClick={s.toggle}\n onKeyDown={s.triggerKeyDown}\n aria-haspopup=\"listbox\"\n aria-expanded={s.open}\n data-open={s.open || undefined}\n className={cx(\n \"klun-compact-select__trigger\",\n !s.selected && \"klun-compact-select__trigger--placeholder\",\n )}\n >\n {leadingIcon ? (\n <span className=\"klun-compact-select__icon\">{leadingIcon}</span>\n ) : null}\n <span className=\"klun-compact-select__value\">\n {s.selected ? s.selected.label : placeholder}\n </span>\n <svg\n className=\"klun-compact-select__chevron\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M6 8l4 4 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n {/* hidden native select: form value + name + native onChange + ref */}\n <select\n ref={s.mergeSelectRef(ref)}\n className=\"klun-compact-select__native\"\n aria-hidden\n tabIndex={-1}\n defaultValue={String(value ?? defaultValue ?? \"\")}\n onChange={onChange}\n disabled={disabled}\n {...props}\n >\n {placeholder ? (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n ) : null}\n {children}\n </select>\n\n {s.open ? (\n <SelectListbox\n options={s.options}\n current={s.current}\n active={s.active}\n onActivate={s.setActive}\n onPick={s.pick}\n />\n ) : null}\n </div>\n );\n },\n);\n\nCompactSelect.displayName = \"CompactSelect\";\n","import {\n forwardRef,\n useRef,\n type CSSProperties,\n type ReactNode,\n type SelectHTMLAttributes,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\nimport { useSelect } from \"./select/useSelect\";\nimport { SelectListbox } from \"./select/Listbox\";\n\nexport type CompactSelectForInputSide = \"leading\" | \"trailing\";\nexport type CompactSelectForInputSize = \"small\" | \"medium\" | \"large\";\n\nexport interface CompactSelectForInputProps\n extends Omit<SelectHTMLAttributes<HTMLSelectElement>, \"size\" | \"style\"> {\n /** Which edge it attaches to — decides which side draws the divider. */\n side?: CompactSelectForInputSide;\n size?: CompactSelectForInputSize;\n leadingIcon?: ReactNode;\n disabled?: boolean;\n /** <option> elements. */\n children?: ReactNode;\n /** Style applied to the outer wrapper. */\n style?: CSSProperties;\n}\n\n/**\n * CompactSelectForInput — borderless inline unit selector designed to butt up\n * against an Input on the left or right (currency, country code, unit). Render\n * it inside an Input's leading/trailing slot; it draws its own divider. Uses a\n * fully custom, themed dropdown (not the native OS menu): a visually-hidden\n * `<select>` carries the value for form submission, receives `name`/native\n * `onChange`, and is what `ref` forwards to. The trigger always shows a value\n * (no placeholder) — the current selection or the first option.\n */\nexport const CompactSelectForInput = forwardRef<\n HTMLSelectElement,\n CompactSelectForInputProps\n>(function CompactSelectForInput(\n {\n side = \"leading\",\n size: sizeProp,\n disabled = false,\n leadingIcon,\n className,\n style,\n children,\n value,\n defaultValue,\n onChange,\n ...props\n },\n ref,\n) {\n const size = useSize(sizeProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const s = useSelect({ children, value, defaultValue, disabled, rootRef });\n\n return (\n <div\n ref={rootRef}\n className={cx(\n \"klun-compact-select-for-input\",\n `klun-compact-select-for-input--${size}`,\n `klun-compact-select-for-input--${side}`,\n disabled && \"klun-compact-select-for-input--disabled\",\n className,\n )}\n style={style}\n >\n <button\n ref={s.triggerRef}\n type=\"button\"\n disabled={disabled}\n onClick={s.toggle}\n onKeyDown={s.triggerKeyDown}\n aria-haspopup=\"listbox\"\n aria-expanded={s.open}\n data-open={s.open || undefined}\n className=\"klun-compact-select-for-input__trigger\"\n >\n {leadingIcon ? (\n <span className=\"klun-compact-select-for-input__icon\">{leadingIcon}</span>\n ) : null}\n <span className=\"klun-compact-select-for-input__value\">\n {s.selected?.label ?? s.options[0]?.label}\n </span>\n <svg\n className=\"klun-compact-select-for-input__chevron\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M6 8l4 4 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n {/* hidden native select: form value + name + native onChange + ref */}\n <select\n ref={s.mergeSelectRef(ref)}\n className=\"klun-compact-select-for-input__native\"\n aria-hidden\n tabIndex={-1}\n defaultValue={String(value ?? defaultValue ?? \"\")}\n onChange={onChange}\n disabled={disabled}\n {...props}\n >\n {children}\n </select>\n\n {s.open ? (\n <SelectListbox\n options={s.options}\n current={s.current}\n active={s.active}\n onActivate={s.setActive}\n onPick={s.pick}\n />\n ) : null}\n </div>\n );\n});\n\nCompactSelectForInput.displayName = \"CompactSelectForInput\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport type CounterInputSize = \"small\" | \"medium\" | \"large\";\n\nexport interface CounterInputProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n value?: number;\n min?: number;\n max?: number;\n step?: number;\n size?: CounterInputSize;\n onChange?: (value: number) => void;\n disabled?: boolean;\n /** Optional unit shown after the value, e.g. \"kg\". */\n suffix?: ReactNode;\n}\n\n/**\n * CounterInput — numeric stepper with decrement / increment controls.\n * `ref` forwards to the root wrapper.\n */\nexport const CounterInput = forwardRef<HTMLDivElement, CounterInputProps>(function CounterInput(\n {\n value = 0,\n min = -Infinity,\n max = Infinity,\n step = 1,\n size: sizeProp,\n onChange,\n disabled = false,\n suffix,\n className,\n ...props\n },\n ref,\n) {\n const size = useSize(sizeProp);\n const set = (next: number) => {\n const v = Math.max(min, Math.min(max, next));\n if (v !== value) onChange?.(v);\n };\n\n return (\n <div\n ref={ref}\n className={cx(\n \"klun-counter-input\",\n `klun-counter-input--${size}`,\n disabled && \"klun-counter-input--disabled\",\n className,\n )}\n {...props}\n >\n <button\n type=\"button\"\n className=\"klun-counter-input__step\"\n disabled={disabled || value <= min}\n onClick={() => set(value - step)}\n >\n <i className=\"ri-subtract-line\" />\n </button>\n <span className=\"klun-counter-input__value\">\n {value}\n {suffix ? <span className=\"klun-counter-input__suffix\">{suffix}</span> : null}\n </span>\n <button\n type=\"button\"\n className=\"klun-counter-input__step\"\n disabled={disabled || value >= max}\n onClick={() => set(value + step)}\n >\n <i className=\"ri-add-line\" />\n </button>\n </div>\n );\n});\n\nCounterInput.displayName = \"CounterInput\";\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type ChangeEvent,\n type InputHTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize, useLocale } from \"../config/ConfigProvider\";\n\nexport type FieldSize = \"small\" | \"medium\" | \"large\";\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /** Default `\"medium\"`. */\n size?: FieldSize;\n /** Icon node before the field. */\n leadingIcon?: ReactNode;\n /** Icon node after the field. */\n trailingIcon?: ReactNode;\n /** Arbitrary node before the field (e.g. an inline Select). */\n leadingNode?: ReactNode;\n /** Arbitrary node after the field. */\n trailingNode?: ReactNode;\n /** Show the error ring. */\n error?: boolean;\n /** Read-only field — selectable text, no editing, gray surface. */\n readOnly?: boolean;\n /** Show a trailing spinner. */\n loading?: boolean;\n /** Show a clear (×) button when the field has a value. */\n clearable?: boolean;\n /** Called when the clear button is pressed. */\n onClear?: () => void;\n /** Class applied to the outer field wrapper (the bordered surface). */\n className?: string;\n /** Style applied to the outer field wrapper. */\n style?: CSSProperties;\n}\n\n/**\n * Input — text field with optional leading/trailing icons or nodes.\n * `className`/`style` target the wrapper; `ref` forwards to the `<input>`.\n */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n {\n size: sizeProp,\n leadingIcon,\n trailingIcon,\n leadingNode,\n trailingNode,\n error = false,\n disabled = false,\n readOnly = false,\n loading = false,\n clearable = false,\n onClear,\n className,\n style,\n ...props\n },\n ref,\n) {\n const size = useSize(sizeProp);\n const { input } = useLocale();\n const innerRef = useRef<HTMLInputElement | null>(null);\n const [hasValue, setHasValue] = useState(() => !!(props.value ?? props.defaultValue));\n\n useEffect(() => {\n if (props.value !== undefined) setHasValue(!!props.value);\n }, [props.value]);\n\n const setRef = (node: HTMLInputElement | null) => {\n innerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n };\n\n const showClear = clearable && hasValue && !disabled && !readOnly && !loading;\n\n const clear = () => {\n const node = innerRef.current;\n if (node) {\n node.value = \"\";\n node.focus();\n }\n setHasValue(false);\n onClear?.();\n if (node) {\n props.onChange?.({\n ...({} as ChangeEvent<HTMLInputElement>),\n target: node,\n currentTarget: node,\n });\n }\n };\n\n return (\n <div\n className={cx(\n \"klun-input\",\n `klun-input--${size}`,\n error && \"klun-input--error\",\n disabled && \"klun-input--disabled\",\n readOnly && \"klun-input--readonly\",\n className,\n )}\n style={style}\n >\n {leadingIcon ? <span className=\"klun-input__icon\">{leadingIcon}</span> : null}\n {leadingNode}\n <input\n ref={setRef}\n className=\"klun-input__field\"\n disabled={disabled}\n readOnly={readOnly}\n {...props}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n setHasValue(!!e.target.value);\n props.onChange?.(e);\n }}\n />\n {showClear ? (\n <button\n type=\"button\"\n className=\"klun-input__clear\"\n onClick={clear}\n aria-label={input.clear}\n >\n <i className=\"ri-close-circle-fill\" />\n </button>\n ) : null}\n {trailingNode}\n {loading ? (\n <span className=\"klun-input__spinner\" aria-hidden>\n <svg className=\"klun-input__spinner-svg\" width={18} height={18} viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"10\" r=\"7\" stroke=\"currentColor\" strokeOpacity=\"0.25\" strokeWidth=\"2.5\" />\n <circle cx=\"10\" cy=\"10\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeDasharray=\"44\" strokeDashoffset=\"31\" />\n </svg>\n </span>\n ) : trailingIcon ? (\n <span className=\"klun-input__icon\">{trailingIcon}</span>\n ) : null}\n </div>\n );\n});\n\nInput.displayName = \"Input\";\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface PopoverProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> {\n trigger: ReactNode;\n align?: \"left\" | \"right\";\n width?: number;\n /** Panel content, or a render-fn receiving a close() callback. */\n children: ReactNode | ((close: () => void) => ReactNode);\n}\n\n/** Klun UI Popover — click-triggered floating panel anchored to a trigger. */\nexport const Popover = forwardRef<HTMLSpanElement, PopoverProps>(function Popover(\n { trigger, children, align = \"left\", width = 280, className, ...props },\n ref,\n) {\n const [open, setOpen] = useState(false);\n const innerRef = useRef<HTMLSpanElement | null>(null);\n\n useEffect(() => {\n if (!open) return;\n const h = (e: MouseEvent) => {\n if (innerRef.current && !innerRef.current.contains(e.target as Node)) setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n return () => document.removeEventListener(\"mousedown\", h);\n }, [open]);\n\n const setRefs = (node: HTMLSpanElement | null) => {\n innerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n };\n\n return (\n <span ref={setRefs} className={cx(\"klun-popover\", className)} {...props}>\n <span className=\"klun-popover__trigger\" onClick={() => setOpen((o) => !o)}>\n {trigger}\n </span>\n {open ? (\n <div\n role=\"dialog\"\n className={cx(\"klun-popover__panel\", `klun-popover__panel--${align}`)}\n style={{ width }}\n >\n {typeof children === \"function\" ? children(() => setOpen(false)) : children}\n </div>\n ) : null}\n </span>\n );\n});\n\nPopover.displayName = \"Popover\";\n","import {\n forwardRef,\n useState,\n type HTMLAttributes,\n type CSSProperties,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\nimport { fmt } from \"../config/locales\";\nimport { Input } from \"./Input\";\nimport { Popover } from \"../overlays/Popover\";\n\nexport interface DatePickerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"style\"> {\n value?: Date | string | null;\n onChange?: (date: Date) => void;\n /** Render the bare inline calendar instead of an input that opens it. */\n inline?: boolean;\n /** Trigger placeholder shown when no date is selected. */\n placeholder?: string;\n /** Intl options used to format the trigger label. */\n format?: Intl.DateTimeFormatOptions;\n /** Popover alignment relative to the trigger. Default `\"left\"`. */\n align?: \"left\" | \"right\";\n /** Disable the trigger. */\n disabled?: boolean;\n style?: CSSProperties;\n}\n\nconst same = (a: Date | null, b: Date | null) =>\n !!a && !!b && a.toDateString() === b.toDateString();\n\nconst DEFAULT_FORMAT: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n};\n\n/** Bare inline month calendar with single-date selection. */\nconst Calendar = forwardRef<\n HTMLDivElement,\n { value?: Date | string | null; onPick: (d: Date) => void; className?: string; style?: CSSProperties }\n>(function Calendar({ value, onPick, className, style }, ref) {\n const { datePicker } = useLocale();\n const initial = value ? new Date(value) : new Date();\n const [view, setView] = useState(new Date(initial.getFullYear(), initial.getMonth(), 1));\n const sel = value ? new Date(value) : null;\n const y = view.getFullYear();\n const m = view.getMonth();\n const firstDay = (new Date(y, m, 1).getDay() + 6) % 7; // Mon-first\n const daysInMonth = new Date(y, m + 1, 0).getDate();\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const cells: (Date | null)[] = [];\n for (let i = 0; i < firstDay; i++) cells.push(null);\n for (let d = 1; d <= daysInMonth; d++) cells.push(new Date(y, m, d));\n\n return (\n <div ref={ref} className={cx(\"klun-date-picker\", className)} style={style}>\n <div className=\"klun-date-picker__header\">\n <button type=\"button\" className=\"klun-date-picker__nav\" onClick={() => setView(new Date(y, m - 1, 1))}>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden>\n <path d=\"M12 6l-4 4 4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <span className=\"klun-date-picker__title\">\n {fmt(datePicker.title, { month: datePicker.months[m], year: y })}\n </span>\n <button type=\"button\" className=\"klun-date-picker__nav\" onClick={() => setView(new Date(y, m + 1, 1))}>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden>\n <path d=\"M8 6l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n <div className=\"klun-date-picker__grid\">\n {datePicker.weekdaysShort.map((d, i) => (\n <div key={i} className=\"klun-date-picker__weekday\">\n {d}\n </div>\n ))}\n {cells.map((date, i) => {\n if (!date) return <span key={i} />;\n return (\n <button\n key={i}\n type=\"button\"\n className=\"klun-date-picker__day\"\n data-selected={same(date, sel) || undefined}\n data-today={same(date, today) || undefined}\n onClick={() => onPick(date)}\n >\n {date.getDate()}\n </button>\n );\n })}\n </div>\n </div>\n );\n});\n\n/**\n * Klun UI DatePicker — an input that opens a month calendar in a popover.\n * Pass `inline` to render the bare calendar instead.\n */\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n function DatePicker(\n { value, onChange, inline, placeholder, format = DEFAULT_FORMAT, align = \"left\", disabled, className, style, ...props },\n ref,\n ) {\n if (inline) {\n return <Calendar ref={ref} value={value} onPick={(d) => onChange?.(d)} className={className} style={style} />;\n }\n\n const sel = value ? new Date(value) : null;\n const label = sel ? sel.toLocaleDateString(undefined, format) : \"\";\n\n return (\n <div ref={ref} className={cx(\"klun-date-field\", className)} style={style} {...props}>\n <Popover\n align={align}\n trigger={\n <Input\n readOnly\n disabled={disabled}\n value={label}\n placeholder={placeholder ?? \"Select date\"}\n leadingIcon={<i className=\"ri-calendar-line\" />}\n trailingIcon={<i className=\"ri-arrow-down-s-line\" />}\n style={{ width: \"100%\", cursor: \"pointer\" }}\n />\n }\n >\n {(close) => (\n <Calendar\n className=\"klun-date-picker--bare\"\n value={value}\n onPick={(d) => {\n onChange?.(d);\n close();\n }}\n />\n )}\n </Popover>\n </div>\n );\n },\n);\n\nDatePicker.displayName = \"DatePicker\";\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type MutableRefObject,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\nimport { SelectListbox } from \"./select/Listbox\";\nimport { type ParsedOption } from \"./select/shared\";\n\nexport interface TimePickerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"style\"> {\n /** 24-hour \"HH:MM\". */\n value?: string;\n onChange?: (value: string) => void;\n style?: CSSProperties;\n}\n\nconst pad = (n: number) => String(n).padStart(2, \"0\");\n\n/** Klun UI TimePicker — hour / minute / meridiem selector. */\nexport const TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n function TimePicker(\n { value = \"09:00\", onChange, className, style, ...props },\n ref,\n ) {\n const t = useLocale();\n const [h, m] = value.split(\":\").map(Number);\n const mer = h >= 12 ? \"PM\" : \"AM\";\n const h12 = ((h + 11) % 12) + 1;\n const set = (nh: number, nm: number, nmer: string) => {\n let hh = nh % 12;\n if (nmer === \"PM\") hh += 12;\n onChange?.(`${pad(hh)}:${pad(nm)}`);\n };\n\n const [open, setOpen] = useState<\"h\" | \"m\" | \"mer\" | null>(null);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const setRoot = (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) (ref as MutableRefObject<HTMLDivElement | null>).current = node;\n };\n\n // close on outside click\n useEffect(() => {\n if (!open) return;\n const onDown = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) setOpen(null);\n };\n document.addEventListener(\"mousedown\", onDown);\n return () => document.removeEventListener(\"mousedown\", onDown);\n }, [open]);\n\n const hourOpts: ParsedOption[] = Array.from({ length: 12 }, (_, i) => ({\n value: String(i + 1),\n label: pad(i + 1),\n }));\n const minOpts: ParsedOption[] = Array.from({ length: 60 }, (_, i) => ({\n value: String(i),\n label: pad(i),\n }));\n const merOpts: ParsedOption[] = [\n { value: \"AM\", label: t.timePicker.am },\n { value: \"PM\", label: t.timePicker.pm },\n ];\n\n return (\n <div\n ref={setRoot}\n className={cx(\"klun-time-picker\", className)}\n style={style}\n {...props}\n >\n <i className=\"ri-time-line klun-time-picker__icon\" />\n <TimeColumn\n options={hourOpts}\n current={String(h12)}\n open={open === \"h\"}\n onOpen={() => setOpen(\"h\")}\n onClose={() => setOpen(null)}\n onPick={(v) => {\n set(Number(v), m, mer);\n setOpen(null);\n }}\n />\n <span className=\"klun-time-picker__sep\">:</span>\n <TimeColumn\n options={minOpts}\n current={String(m)}\n open={open === \"m\"}\n onOpen={() => setOpen(\"m\")}\n onClose={() => setOpen(null)}\n onPick={(v) => {\n set(h12, Number(v), mer);\n setOpen(null);\n }}\n />\n <TimeColumn\n className=\"klun-time-picker__col--meridiem\"\n options={merOpts}\n current={mer}\n open={open === \"mer\"}\n onOpen={() => setOpen(\"mer\")}\n onClose={() => setOpen(null)}\n onPick={(v) => {\n set(h12, m, v);\n setOpen(null);\n }}\n />\n </div>\n );\n },\n);\n\ninterface TimeColumnProps {\n options: ParsedOption[];\n current: string;\n open: boolean;\n onOpen: () => void;\n onClose: () => void;\n onPick: (value: string) => void;\n className?: string;\n}\n\n/** One segment of the picker: a trigger button + a themed dropdown listbox. */\nfunction TimeColumn({\n options,\n current,\n open,\n onOpen,\n onClose,\n onPick,\n className,\n}: TimeColumnProps) {\n const colRef = useRef<HTMLDivElement>(null);\n const [active, setActive] = useState(-1);\n const selected = options.find((o) => o.value === current);\n\n const panel = () =>\n colRef.current?.querySelector<HTMLElement>(\".klun-select-listbox\") ?? null;\n const scrollTo = (i: number, center: boolean) => {\n requestAnimationFrame(() => {\n const p = panel();\n const el = p?.children[i] as HTMLElement | undefined;\n if (!p || !el) return;\n if (center) {\n p.scrollTop = el.offsetTop - p.clientHeight / 2 + el.offsetHeight / 2;\n } else if (el.offsetTop < p.scrollTop) {\n p.scrollTop = el.offsetTop - 4;\n } else if (el.offsetTop + el.offsetHeight > p.scrollTop + p.clientHeight) {\n p.scrollTop = el.offsetTop + el.offsetHeight - p.clientHeight + 4;\n }\n });\n };\n\n // on open: highlight + scroll the current value into view\n useEffect(() => {\n if (!open) return;\n const idx = options.findIndex((o) => o.value === current);\n setActive(idx);\n scrollTo(idx >= 0 ? idx : 0, true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n\n const step = (dir: 1 | -1) => {\n if (!options.length) return;\n let i = active;\n for (let n = 0; n < options.length; n++) {\n i = (i + dir + options.length) % options.length;\n if (!options[i].disabled) break;\n }\n setActive(i);\n scrollTo(i, false);\n };\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (!open) {\n if ([\"ArrowDown\", \"ArrowUp\", \"Enter\", \" \"].includes(e.key)) {\n e.preventDefault();\n onOpen();\n }\n return;\n }\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n step(1);\n break;\n case \"ArrowUp\":\n e.preventDefault();\n step(-1);\n break;\n case \"Enter\":\n case \" \":\n e.preventDefault();\n if (options[active]) onPick(options[active].value);\n break;\n case \"Escape\":\n e.preventDefault();\n onClose();\n break;\n case \"Tab\":\n onClose();\n break;\n }\n };\n\n return (\n <div ref={colRef} className={cx(\"klun-time-picker__col\", className)}>\n <button\n type=\"button\"\n className=\"klun-time-picker__trigger\"\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n data-open={open || undefined}\n onClick={() => (open ? onClose() : onOpen())}\n onKeyDown={onKeyDown}\n >\n {selected ? selected.label : \"\"}\n </button>\n {open ? (\n <SelectListbox\n className=\"klun-time-picker__listbox\"\n options={options}\n current={current}\n active={active}\n onActivate={setActive}\n onPick={(o) => onPick(o.value)}\n />\n ) : null}\n </div>\n );\n}\n\nTimePicker.displayName = \"TimePicker\";\n","import { forwardRef, type HTMLAttributes, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { Input } from \"./Input\";\nimport { Popover } from \"../overlays/Popover\";\nimport { DatePicker } from \"./DatePicker\";\nimport { TimePicker } from \"./TimePicker\";\n\nexport interface DateTimePickerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"style\"> {\n value?: Date | string | null;\n onChange?: (date: Date) => void;\n /** Render the bare inline calendar + time row instead of an input. */\n inline?: boolean;\n /** Trigger placeholder shown when nothing is selected. */\n placeholder?: string;\n /** Intl options used to format the trigger label. */\n format?: Intl.DateTimeFormatOptions;\n /** Popover alignment relative to the trigger. Default `\"left\"`. */\n align?: \"left\" | \"right\";\n /** Disable the trigger. */\n disabled?: boolean;\n style?: CSSProperties;\n}\n\nconst pad = (n: number) => String(n).padStart(2, \"0\");\n\nconst DEFAULT_FORMAT: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n};\n\n/** Calendar + time row, sharing one Date — date keeps the time and vice-versa. */\nfunction DateTimePanel({ value, onChange }: { value: Date | null; onChange: (d: Date) => void }) {\n const hhmm = value ? `${pad(value.getHours())}:${pad(value.getMinutes())}` : \"09:00\";\n\n const setDate = (d: Date) => {\n const next = new Date(d);\n if (value) next.setHours(value.getHours(), value.getMinutes(), 0, 0);\n else next.setHours(9, 0, 0, 0);\n onChange(next);\n };\n const setTime = (t: string) => {\n const [h, m] = t.split(\":\").map(Number);\n const next = value ? new Date(value) : new Date();\n next.setHours(h, m, 0, 0);\n onChange(next);\n };\n\n return (\n <div className=\"klun-date-time-picker__panel\">\n <DatePicker inline className=\"klun-date-picker--bare\" value={value} onChange={setDate} />\n <div className=\"klun-date-time-picker__time\">\n <TimePicker value={hhmm} onChange={setTime} />\n </div>\n </div>\n );\n}\n\n/**\n * Klun UI DateTimePicker — an input that opens a calendar + time selector in a\n * popover, producing a single Date. Pass `inline` to render the bare panel.\n */\nexport const DateTimePicker = forwardRef<HTMLDivElement, DateTimePickerProps>(\n function DateTimePicker(\n { value, onChange, inline, placeholder, format = DEFAULT_FORMAT, align = \"left\", disabled, className, style, ...props },\n ref,\n ) {\n const date = value ? new Date(value) : null;\n\n if (inline) {\n return (\n <div ref={ref} className={cx(\"klun-date-time-picker\", className)} style={style} {...props}>\n <DateTimePanel value={date} onChange={(d) => onChange?.(d)} />\n </div>\n );\n }\n\n const label = date ? date.toLocaleString(undefined, format) : \"\";\n\n return (\n <div ref={ref} className={cx(\"klun-date-time-field\", className)} style={style} {...props}>\n <Popover\n align={align}\n width={300}\n trigger={\n <Input\n readOnly\n disabled={disabled}\n value={label}\n placeholder={placeholder ?? \"Select date & time\"}\n leadingIcon={<i className=\"ri-calendar-2-line\" />}\n trailingIcon={<i className=\"ri-arrow-down-s-line\" />}\n style={{ width: \"100%\", cursor: \"pointer\" }}\n />\n }\n >\n <DateTimePanel value={date} onChange={(d) => onChange?.(d)} />\n </Popover>\n </div>\n );\n },\n);\n\nDateTimePicker.displayName = \"DateTimePicker\";\n","import {\n forwardRef,\n useState,\n type HTMLAttributes,\n type CSSProperties,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\nimport { fmt } from \"../config/locales\";\nimport { Input } from \"./Input\";\nimport { Popover } from \"../overlays/Popover\";\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface DateRangePickerProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"style\"> {\n start?: Date | string | null;\n end?: Date | string | null;\n onChange?: (range: DateRange) => void;\n /** Render the bare inline calendar instead of an input that opens it. */\n inline?: boolean;\n /** Trigger placeholder shown when no range is selected. */\n placeholder?: string;\n /** Intl options used to format the trigger labels. */\n format?: Intl.DateTimeFormatOptions;\n /** Popover alignment relative to the trigger. Default `\"left\"`. */\n align?: \"left\" | \"right\";\n /** Disable the trigger. */\n disabled?: boolean;\n style?: CSSProperties;\n}\n\nconst norm = (d: Date | null) =>\n d && new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();\n\nconst DEFAULT_FORMAT: Intl.DateTimeFormatOptions = { month: \"short\", day: \"numeric\" };\n\n/** Bare inline calendar selecting a start–end range. */\nconst RangeCalendar = forwardRef<\n HTMLDivElement,\n {\n start?: Date | string | null;\n end?: Date | string | null;\n onPick: (range: DateRange) => void;\n className?: string;\n style?: CSSProperties;\n }\n>(function RangeCalendar({ start, end, onPick, className, style }, ref) {\n const { datePicker } = useLocale();\n const base = start ? new Date(start) : new Date();\n const [view, setView] = useState(new Date(base.getFullYear(), base.getMonth(), 1));\n const s = start ? new Date(start) : null;\n const e = end ? new Date(end) : null;\n const y = view.getFullYear();\n const m = view.getMonth();\n const firstDay = (new Date(y, m, 1).getDay() + 6) % 7;\n const daysInMonth = new Date(y, m + 1, 0).getDate();\n\n const cells: (Date | null)[] = [];\n for (let i = 0; i < firstDay; i++) cells.push(null);\n for (let d = 1; d <= daysInMonth; d++) cells.push(new Date(y, m, d));\n\n const pick = (d: Date) => {\n if (!s || (s && e)) return onPick({ start: d, end: null });\n if (norm(d)! < norm(s)!) return onPick({ start: d, end: s });\n onPick({ start: s, end: d });\n };\n const inRange = (d: Date) => !!s && !!e && norm(d)! > norm(s)! && norm(d)! < norm(e)!;\n const isStart = (d: Date) => !!s && norm(d) === norm(s);\n const isEnd = (d: Date) => !!e && norm(d) === norm(e);\n\n return (\n <div ref={ref} className={cx(\"klun-date-range-picker\", className)} style={style}>\n <div className=\"klun-date-range-picker__header\">\n <button type=\"button\" className=\"klun-date-range-picker__nav\" onClick={() => setView(new Date(y, m - 1, 1))}>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M12 6l-4 4 4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n <span className=\"klun-date-range-picker__title\">\n {fmt(datePicker.title, { month: datePicker.months[m], year: y })}\n </span>\n <button type=\"button\" className=\"klun-date-range-picker__nav\" onClick={() => setView(new Date(y, m + 1, 1))}>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <path d=\"M8 6l4 4-4 4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </button>\n </div>\n <div className=\"klun-date-range-picker__grid\">\n {datePicker.weekdaysShort.map((d, i) => (\n <div key={i} className=\"klun-date-range-picker__weekday\">\n {d}\n </div>\n ))}\n {cells.map((date, i) => {\n if (!date) return <span key={i} />;\n const mid = inRange(date);\n return (\n <div\n key={i}\n className=\"klun-date-range-picker__cell\"\n data-in-range={mid || undefined}\n data-range-edge={isStart(date) || isEnd(date) || undefined}\n >\n <button\n type=\"button\"\n className=\"klun-date-range-picker__day\"\n data-range-start={isStart(date) || undefined}\n data-range-end={isEnd(date) || undefined}\n data-in-range={mid || undefined}\n onClick={() => pick(date)}\n >\n {date.getDate()}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n );\n});\n\n/**\n * Klun UI DateRangePicker — an input that opens a start–end range calendar in a\n * popover. Pass `inline` to render the bare calendar instead.\n */\nexport const DateRangePicker = forwardRef<HTMLDivElement, DateRangePickerProps>(\n function DateRangePicker(\n { start, end, onChange, inline, placeholder, format = DEFAULT_FORMAT, align = \"left\", disabled, className, style, ...props },\n ref,\n ) {\n if (inline) {\n return (\n <RangeCalendar\n ref={ref}\n start={start}\n end={end}\n onPick={(r) => onChange?.(r)}\n className={className}\n style={style}\n />\n );\n }\n\n const f = (d: Date | string | null | undefined) =>\n d ? new Date(d).toLocaleDateString(undefined, format) : \"\";\n const label = start || end ? `${f(start)} – ${f(end)}` : \"\";\n\n return (\n <div ref={ref} className={cx(\"klun-date-range-field\", className)} style={style} {...props}>\n <Popover\n align={align}\n width={300}\n trigger={\n <Input\n readOnly\n disabled={disabled}\n value={label}\n placeholder={placeholder ?? \"Select range\"}\n leadingIcon={<i className=\"ri-calendar-2-line\" />}\n trailingIcon={<i className=\"ri-arrow-down-s-line\" />}\n style={{ width: \"100%\", cursor: \"pointer\" }}\n />\n }\n >\n {(close) => (\n <RangeCalendar\n className=\"klun-date-range-picker--bare\"\n start={start}\n end={end}\n onPick={(r) => {\n onChange?.(r);\n if (r.start && r.end) close();\n }}\n />\n )}\n </Popover>\n </div>\n );\n },\n);\n\nDateRangePicker.displayName = \"DateRangePicker\";\n","import {\n forwardRef,\n useRef,\n type ChangeEvent,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport type DigitInputSize = \"small\" | \"medium\" | \"large\";\n\nexport interface DigitInputProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"style\"> {\n length?: number;\n value?: string;\n onChange?: (value: string) => void;\n error?: boolean;\n disabled?: boolean;\n /** Cell size. Default `\"medium\"`. */\n size?: DigitInputSize;\n style?: CSSProperties;\n}\n\n/**\n * DigitInput — segmented OTP / PIN code input. Keeps a ref to each cell for\n * focus management; `ref` forwards to the wrapping `<div>`.\n */\nexport const DigitInput = forwardRef<HTMLDivElement, DigitInputProps>(function DigitInput(\n { length = 4, value = \"\", onChange, error = false, disabled = false, size: sizeProp, className, style, ...props },\n ref,\n) {\n const size = useSize(sizeProp);\n const refs = useRef<Array<HTMLInputElement | null>>([]);\n const chars = value.padEnd(length, \" \").slice(0, length).split(\"\");\n\n const setAt = (i: number, ch: string) => {\n const next = chars.map((c, j) => (j === i ? ch : c)).join(\"\");\n onChange?.(next.replace(/ +$/g, \"\"));\n };\n\n return (\n <div\n ref={ref}\n className={cx(\n \"klun-digit-input\",\n `klun-digit-input--${size}`,\n error && \"klun-digit-input--error\",\n disabled && \"klun-digit-input--disabled\",\n className,\n )}\n style={style}\n {...props}\n >\n {Array.from({ length }, (_, i) => (\n <input\n key={i}\n ref={(el) => {\n refs.current[i] = el;\n }}\n className=\"klun-digit-input__cell\"\n inputMode=\"numeric\"\n maxLength={1}\n disabled={disabled}\n data-filled={chars[i].trim() ? \"\" : undefined}\n value={chars[i] === \" \" ? \"\" : chars[i]}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const ch = e.target.value.slice(-1).replace(/[^0-9]/g, \"\");\n setAt(i, ch || \" \");\n if (ch && i < length - 1) refs.current[i + 1]?.focus();\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Backspace\" && !chars[i].trim() && i > 0) refs.current[i - 1]?.focus();\n }}\n />\n ))}\n </div>\n );\n});\n\nDigitInput.displayName = \"DigitInput\";\n","import {\n forwardRef,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport interface FileUploadProps extends Omit<HTMLAttributes<HTMLDivElement>, \"style\"> {\n /** Called with the dropped/selected files. */\n onFiles?: (files: File[]) => void;\n /** Helper text under the prompt. */\n hint?: ReactNode;\n /** Style applied to the dropzone root. */\n style?: CSSProperties;\n}\n\n/**\n * FileUpload — drag-and-drop drop zone. Click or drop files to upload;\n * `onFiles` receives the selected `File[]`. Drag-over state is exposed via\n * `data-dragover` and styled in CSS.\n */\nexport const FileUpload = forwardRef<HTMLDivElement, FileUploadProps>(function FileUpload(\n { onFiles, hint = \"SVG, PNG, JPG or GIF (max. 8MB)\", className, ...props },\n ref,\n) {\n const { fileUpload } = useLocale();\n const [over, setOver] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n return (\n <div\n ref={ref}\n className={cx(\"klun-file-upload\", className)}\n data-dragover={over || undefined}\n onClick={() => inputRef.current?.click()}\n onDragOver={(e) => {\n e.preventDefault();\n setOver(true);\n }}\n onDragLeave={() => setOver(false)}\n onDrop={(e) => {\n e.preventDefault();\n setOver(false);\n onFiles?.([...e.dataTransfer.files]);\n }}\n {...props}\n >\n <input\n ref={inputRef}\n type=\"file\"\n multiple\n hidden\n onChange={(e) => onFiles?.([...(e.target.files ?? [])])}\n />\n <div className=\"klun-file-upload__icon\">\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden>\n <path\n d=\"M12 16V4m0 0L7 9m5-5l5 5M5 20h14\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n <div className=\"klun-file-upload__prompt\">\n <span className=\"klun-file-upload__action\">{fileUpload.clickToUpload}</span>{\" \"}\n {fileUpload.orDragAndDrop}\n </div>\n <div className=\"klun-file-upload__hint\">{hint}</div>\n </div>\n );\n});\n\nFileUpload.displayName = \"FileUpload\";\n","import {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n cloneElement,\n isValidElement,\n type FormHTMLAttributes,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\nimport { fmt, type Locale } from \"../config/locales\";\n\n/* ---------- public types (mirror Form.d.ts) ---------- */\nexport type NamePath = string | (string | number)[];\n\nexport interface FormRule {\n required?: boolean;\n message?: string;\n /** String length (or array length) bounds; for number/integer types these bound the value. */\n min?: number;\n max?: number;\n /** Exact string length. */\n len?: number;\n /** Reject whitespace-only strings. */\n whitespace?: boolean;\n pattern?: RegExp;\n /** Value must be one of these. */\n enum?: any[];\n type?: \"email\" | \"url\" | \"number\" | \"integer\";\n /** Normalize the value before checking (e.g. trim). */\n transform?: (value: any) => any;\n /** Sync (string|null) or async (Promise<string|null>) validator. Return a message to fail. */\n validator?: (\n value: any,\n allValues: Record<string, any>,\n ) => string | null | undefined | Promise<string | null | undefined>;\n}\n\n/** Rules may be a static array or computed from the current form values. */\nexport type Rules = FormRule[] | ((allValues: Record<string, any>) => FormRule[]);\n\nexport interface FormInstance {\n values: Record<string, any>;\n errors: Record<string, string | undefined>;\n touched: Record<string, boolean>;\n /** True while an async validator is running, keyed by field. */\n validating: Record<string, boolean>;\n setFieldValue: (name: NamePath, value: any) => void;\n setFieldTouched: (name: NamePath) => void;\n /** Imperatively set error messages: { [name]: message }. */\n setFields: (map: Record<string, string | undefined>) => void;\n setValues: (v: Record<string, any>) => void;\n getFieldValue: (name: NamePath) => any;\n getFieldsValue: () => Record<string, any>;\n /** Validate one field; resolves to its error message or null. */\n validateField: (name: NamePath) => Promise<string | null | undefined>;\n /** Validate all fields; resolves true when valid (scrolls to the first error). */\n validate: () => Promise<boolean>;\n /** Scroll to + focus a field. */\n scrollToField: (name: NamePath) => void;\n reset: () => void;\n /** @deprecated use FormItem rules; kept for back-compat. */\n registerRules: (name: NamePath, rules: FormRule[]) => void;\n}\n\nexport interface UseFormOptions {\n initialValues?: Record<string, any>;\n}\n\nexport interface FormProps extends Omit<FormHTMLAttributes<HTMLFormElement>, \"onSubmit\"> {\n form: FormInstance;\n onFinish?: (values: Record<string, any>) => void;\n onFinishFailed?: (errors: Record<string, string | undefined>) => void;\n layout?: \"vertical\" | \"horizontal\";\n children?: ReactNode;\n}\n\nexport interface FormItemProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n /** Field name; string, dotted path (\"user.email\"), array path, or a numeric\n * index when used inside a `FormList` render (relative to the list). */\n name?: NamePath | number;\n label?: ReactNode;\n rules?: Rules;\n required?: boolean;\n /** Re-validate this field when any of these fields change (after it's been touched). */\n dependencies?: NamePath[];\n /** When to validate this field. Default \"onChange\". */\n validateTrigger?: \"onChange\" | \"onBlur\";\n /** Helper text shown when there's no error. */\n help?: ReactNode;\n /** A single control; receives value/onChange/error cloned in. */\n children?: ReactElement;\n}\n\nexport interface FormListField {\n key: string;\n name: number;\n path: (string | number)[];\n}\nexport interface FormListOperations {\n add: (defaultValue?: any) => void;\n remove: (index: number) => void;\n move: (from: number, to: number) => void;\n}\nexport interface FormListProps {\n name: NamePath;\n children: (fields: FormListField[], ops: FormListOperations) => ReactNode;\n}\n\n/* ---------- internal types ---------- */\ninterface FieldMeta {\n name?: NamePath;\n rules?: Rules;\n deps?: NamePath[];\n validateTrigger?: \"onChange\" | \"onBlur\";\n node?: { current: HTMLElement | null };\n}\n\n/** Internal store API: the public FormInstance plus field registry + path helpers. */\ninterface InternalFormInstance extends FormInstance {\n registerField: (key: string, meta: FieldMeta) => void;\n unregisterField: (key: string) => void;\n _getKey: (name: NamePath) => string;\n _getIn: (obj: any, name: NamePath) => any;\n}\n\ninterface FormCtxValue {\n form: InternalFormInstance;\n layout: \"vertical\" | \"horizontal\";\n}\ninterface ListCtxValue {\n namePath: (string | number)[];\n}\n\nconst FormCtx = createContext<FormCtxValue | null>(null);\nconst ListCtx = createContext<ListCtxValue | null>(null);\n\n/* ---------- nested path helpers (antd-style name paths) ---------- */\nconst toPath = (name: NamePath): (string | number)[] =>\n Array.isArray(name)\n ? name\n : String(name)\n .split(\".\")\n .map((s) => (/^\\d+$/.test(s) ? Number(s) : s));\nconst pathKey = (name: NamePath): string => toPath(name).join(\".\");\nfunction getIn(obj: any, name: NamePath): any {\n let cur = obj;\n for (const k of toPath(name)) {\n if (cur == null) return undefined;\n cur = cur[k];\n }\n return cur;\n}\nfunction setIn(obj: any, name: NamePath, value: any): any {\n const path = toPath(name);\n const root: any = Array.isArray(obj) ? obj.slice() : { ...obj };\n let cur = root;\n for (let i = 0; i < path.length - 1; i++) {\n const k = path[i];\n const nextKeyIsIndex = typeof path[i + 1] === \"number\";\n const existing = cur[k];\n cur[k] =\n existing == null\n ? nextKeyIsIndex\n ? []\n : {}\n : Array.isArray(existing)\n ? existing.slice()\n : { ...existing };\n cur = cur[k];\n }\n cur[path[path.length - 1]] = value;\n return root;\n}\nconst isEmpty = (v: any): boolean =>\n v == null || v === \"\" || v === false || (Array.isArray(v) && v.length === 0);\n\n/* ---------- rule engine (sync + async) ---------- */\nasync function runRules(\n rules: FormRule[] | undefined,\n value: any,\n all: Record<string, any>,\n msgs: Locale[\"form\"],\n): Promise<string | null> {\n for (const r of rules || []) {\n if (r.required && isEmpty(r.transform ? r.transform(value) : value))\n return r.message || msgs.required;\n if (isEmpty(value)) continue;\n const v = r.transform ? r.transform(value) : value;\n const s = String(v);\n if (r.whitespace && s.trim() === \"\") return r.message || msgs.empty;\n if (r.min != null && s.length < r.min) return r.message || fmt(msgs.minChars, { min: r.min });\n if (r.max != null && s.length > r.max) return r.message || fmt(msgs.maxChars, { max: r.max });\n if (r.len != null && s.length !== r.len) return r.message || fmt(msgs.exactChars, { len: r.len });\n if (r.pattern && !r.pattern.test(s)) return r.message || msgs.invalidFormat;\n if (r.enum && !r.enum.includes(v)) return r.message || fmt(msgs.oneOf, { values: r.enum.join(\", \") });\n if (r.type === \"email\" && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(s)) return r.message || msgs.email;\n if (r.type === \"url\" && !/^https?:\\/\\/[^\\s]+$/.test(s)) return r.message || msgs.url;\n if (r.type === \"number\" && Number.isNaN(Number(v))) return r.message || msgs.number;\n if (r.type === \"integer\" && !Number.isInteger(Number(v))) return r.message || msgs.integer;\n if (r.type === \"number\" || r.type === \"integer\") {\n const n = Number(v);\n if (r.min != null && n < r.min) return r.message || fmt(msgs.min, { min: r.min });\n if (r.max != null && n > r.max) return r.message || fmt(msgs.max, { max: r.max });\n }\n if (typeof r.validator === \"function\") {\n const m = await r.validator(v, all);\n if (m) return m;\n }\n }\n return null;\n}\n\n/**\n * Klun UI useForm — antd-grade form store: nested name paths, async + dependency\n * validation, per-field triggers, dynamic lists, and scroll-to-error.\n */\nexport function useForm(opts: UseFormOptions = {}): FormInstance {\n const { form: msgs } = useLocale();\n const msgsRef = useRef(msgs);\n msgsRef.current = msgs;\n const [values, setValuesState] = useState<Record<string, any>>(opts.initialValues || {});\n const [errors, setErrors] = useState<Record<string, string | undefined>>({});\n const [touched, setTouched] = useState<Record<string, boolean>>({});\n const [validating, setValidating] = useState<Record<string, boolean>>({});\n const valuesRef = useRef(values);\n valuesRef.current = values;\n const fields = useRef<Record<string, FieldMeta>>({}); // { key: { name, rules, deps, node } }\n\n const registerField = useCallback((key: string, meta: FieldMeta) => {\n fields.current[key] = { ...fields.current[key], ...meta };\n }, []);\n const unregisterField = useCallback((key: string) => {\n delete fields.current[key];\n }, []);\n // legacy API kept for older call sites\n const registerRules = useCallback((name: NamePath, rules: FormRule[]) => {\n fields.current[pathKey(name)] = { name, rules: rules || [] };\n }, []);\n\n const getFieldValue = useCallback((name: NamePath) => getIn(valuesRef.current, name), []);\n const getFieldsValue = useCallback(() => valuesRef.current, []);\n\n const validateField = useCallback(async (name: NamePath) => {\n const key = pathKey(name);\n const meta = fields.current[key];\n if (!meta) return null;\n const all = valuesRef.current;\n const rules = typeof meta.rules === \"function\" ? meta.rules(all) : meta.rules;\n const hasAsync = (rules || []).some((r) => typeof r.validator === \"function\");\n if (hasAsync) setValidating((s) => ({ ...s, [key]: true }));\n const msg = await runRules(rules, getIn(all, name), all, msgsRef.current);\n setValidating((s) => ({ ...s, [key]: false }));\n setErrors((e) => ({ ...e, [key]: msg || undefined }));\n return msg;\n }, []);\n\n const touchedRef = useRef(touched);\n touchedRef.current = touched;\n\n const revalidateDeps = useCallback(\n (changedKey: string) => {\n Object.values(fields.current).forEach((m) => {\n if (\n m.deps &&\n m.deps.map(pathKey).includes(changedKey) &&\n m.name != null &&\n touchedRef.current[pathKey(m.name)]\n )\n validateField(m.name);\n });\n },\n [validateField],\n );\n\n const setFieldValue = useCallback(\n (name: NamePath, value: any) => {\n setValuesState((v) => {\n const next = setIn(v, name, value);\n valuesRef.current = next;\n return next;\n });\n const key = pathKey(name);\n const meta = fields.current[key];\n if (meta && (meta.validateTrigger ?? \"onChange\") === \"onChange\") validateField(name);\n revalidateDeps(key);\n },\n [validateField, revalidateDeps],\n );\n\n const setFieldTouched = useCallback(\n (name: NamePath) => {\n const key = pathKey(name);\n setTouched((t) => ({ ...t, [key]: true }));\n const meta = fields.current[key];\n if (meta && meta.validateTrigger === \"onBlur\") validateField(name);\n },\n [validateField],\n );\n\n const setFields = useCallback((map: Record<string, string | undefined>) => {\n setErrors((e) => {\n const n = { ...e };\n Object.entries(map).forEach(([k, v]) => {\n n[pathKey(k)] = v;\n });\n return n;\n });\n setTouched((t) => {\n const n = { ...t };\n Object.keys(map).forEach((k) => {\n n[pathKey(k)] = true;\n });\n return n;\n });\n }, []);\n\n const scrollToField = useCallback((name: NamePath) => {\n const node = fields.current[pathKey(name)]?.node?.current;\n if (node) {\n node.scrollIntoView ? node.scrollIntoView({ behavior: \"smooth\", block: \"center\" }) : null;\n const focusable = node.querySelector?.(\"input,textarea,select,[tabindex]\") as HTMLElement | null;\n focusable?.focus?.();\n }\n }, []);\n\n const validate = useCallback(async () => {\n const all = valuesRef.current;\n const entries = Object.entries(fields.current).filter(([, m]) => m.name != null);\n const results = await Promise.all(\n entries.map(async ([key, m]) => {\n const rules = typeof m.rules === \"function\" ? m.rules(all) : m.rules;\n return [key, m.name, await runRules(rules, getIn(all, m.name!), all, msgsRef.current)] as const;\n }),\n );\n const errs: Record<string, string | undefined> = {};\n let firstBad: NamePath | null = null;\n results.forEach(([key, name, msg]) => {\n if (msg) {\n errs[key] = msg;\n if (!firstBad) firstBad = name ?? null;\n }\n });\n setErrors(errs);\n setTouched(entries.reduce((a, [k]) => ((a[k] = true), a), {} as Record<string, boolean>));\n if (firstBad) scrollToField(firstBad);\n return Object.keys(errs).length === 0;\n }, [scrollToField]);\n\n const reset = useCallback(() => {\n const init = opts.initialValues || {};\n setValuesState(init);\n valuesRef.current = init;\n setErrors({});\n setTouched({});\n setValidating({});\n }, []); // eslint-disable-line\n\n const setValues = useCallback((v: Record<string, any>) => {\n setValuesState(v);\n valuesRef.current = v;\n }, []);\n\n const instance: InternalFormInstance = {\n values,\n errors,\n touched,\n validating,\n setFieldValue,\n setFieldTouched,\n setFields,\n setValues,\n getFieldValue,\n getFieldsValue,\n registerRules,\n registerField,\n unregisterField,\n validate,\n validateField,\n reset,\n scrollToField,\n _getKey: pathKey,\n _getIn: getIn,\n };\n return instance;\n}\n\n/**\n * Klun UI Form — layout + validation container. Async submit aware.\n */\nexport function Form({\n form,\n onFinish,\n onFinishFailed,\n layout = \"vertical\",\n children,\n className,\n ...props\n}: FormProps) {\n const internal = form as InternalFormInstance;\n return (\n <FormCtx.Provider value={{ form: internal, layout }}>\n <form\n noValidate\n onSubmit={async (e) => {\n e.preventDefault();\n const ok = await form.validate();\n if (ok) onFinish?.(form.values);\n else onFinishFailed?.(form.errors);\n }}\n className={cx(\"klun-form\", `klun-form--${layout}`, className)}\n {...props}\n >\n {children}\n </form>\n </FormCtx.Provider>\n );\n}\n\nForm.displayName = \"Form\";\n\n/**\n * Klun UI FormItem — labels a field, wires value/onChange, shows the error.\n * Supports nested `name` paths, `rules` (sync/async/fn-of-values), `dependencies`,\n * and `validateTrigger`. With no `children` it renders nothing (use inside Form.List).\n */\nexport function FormItem({\n name,\n label,\n rules,\n required,\n help,\n dependencies,\n validateTrigger,\n children,\n className,\n ...props\n}: FormItemProps) {\n const ctx = useContext(FormCtx);\n const list = useContext(ListCtx);\n const form = ctx?.form;\n const horizontal = ctx?.layout === \"horizontal\";\n const fullName: NamePath | undefined =\n list && name != null\n ? [...list.namePath, ...(Array.isArray(name) ? name : [name])]\n : typeof name === \"number\"\n ? String(name)\n : name;\n const key = form && fullName != null ? form._getKey(fullName) : null;\n const nodeRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (!form || fullName == null) return;\n const ruleset: Rules = rules || (required ? [{ required: true }] : []);\n form.registerField(key!, {\n name: fullName,\n rules: ruleset,\n deps: dependencies,\n validateTrigger,\n node: nodeRef,\n });\n return () => form.unregisterField(key!);\n }, [key, form]); // eslint-disable-line\n\n const error = form && key ? form.touched[key] && form.errors[key] : null;\n const ruleArr = typeof rules === \"function\" ? [] : rules || [];\n const isRequired = required || ruleArr.some((r) => r.required);\n\n let control: ReactNode = children;\n if (form && fullName != null && isValidElement(children)) {\n const childProps = children.props as Record<string, any>;\n control = cloneElement(children as ReactElement<any>, {\n value: form._getIn(form.values, fullName) ?? childProps.value ?? \"\",\n error: !!error,\n onChange: (e: any) => {\n const v =\n e && e.target ? (childProps.type === \"checkbox\" ? e.target.checked : e.target.value) : e;\n form.setFieldValue(fullName, v);\n childProps.onChange?.(e);\n },\n onBlur: (e: any) => {\n form.setFieldTouched(fullName);\n childProps.onBlur?.(e);\n },\n });\n }\n\n return (\n <div\n ref={nodeRef}\n className={cx(\"klun-form-item\", horizontal && \"klun-form-item--horizontal\", className)}\n {...props}\n >\n {label ? (\n <label className=\"klun-form-item__label\">\n {label}\n {isRequired ? <span className=\"klun-form-item__required\">*</span> : null}\n </label>\n ) : null}\n <div className=\"klun-form-item__control\">\n {control}\n {error ? (\n <span className=\"klun-form-item__error\">{error}</span>\n ) : help ? (\n <span className=\"klun-form-item__help\">{help}</span>\n ) : null}\n </div>\n </div>\n );\n}\n\nFormItem.displayName = \"FormItem\";\n\n/**\n * Klun UI FormList — dynamic array fields (antd Form.List).\n * <FormList name=\"users\">{(fields, { add, remove, move }) => ...}</FormList>\n * Each field is { key, name, path }; render a FormItem with name={field.name} inside.\n */\nexport function FormList({ name, children }: FormListProps) {\n const ctx = useContext(FormCtx);\n const parent = useContext(ListCtx);\n const form = ctx?.form;\n const namePath: (string | number)[] = parent\n ? [...parent.namePath, name as string | number]\n : Array.isArray(name)\n ? name\n : [name];\n const arr: any[] = (form ? form._getIn(form.values, namePath) : null) || [];\n const keysRef = useRef<string[]>([]);\n while (keysRef.current.length < arr.length) keysRef.current.push(Math.random().toString(36).slice(2));\n\n const setArr = (next: any[]) => form!.setFieldValue(namePath, next);\n const ops: FormListOperations = {\n add: (init) => {\n keysRef.current.push(Math.random().toString(36).slice(2));\n setArr([...arr, init ?? {}]);\n },\n remove: (i) => {\n keysRef.current.splice(i, 1);\n setArr(arr.filter((_, idx) => idx !== i));\n },\n move: (from, to) => {\n const a = arr.slice();\n const k = keysRef.current;\n const [m] = a.splice(from, 1);\n a.splice(to, 0, m);\n const [mk] = k.splice(from, 1);\n k.splice(to, 0, mk);\n setArr(a);\n },\n };\n const fields: FormListField[] = arr.map((_, i) => ({\n key: keysRef.current[i],\n name: i,\n path: [...namePath, i],\n }));\n\n return <ListCtx.Provider value={{ namePath }}>{children(fields, ops)}</ListCtx.Provider>;\n}\n\nFormList.displayName = \"FormList\";\n\n/* antd-style statics so the lowercase hook is reachable via the exposed `Form`\n namespace (window.KlunUI.Form.useForm), since only capital-initial names are\n placed on the bundle namespace. */\nForm.useForm = useForm;\nForm.Item = FormItem;\nForm.List = FormList;\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface HintProps extends HTMLAttributes<HTMLSpanElement> {\n error?: boolean;\n icon?: ReactNode;\n}\n\n/** Klun UI HintText — helper / error text beneath a field. */\nexport const Hint = forwardRef<HTMLSpanElement, HintProps>(function Hint(\n { children, error = false, icon, className, ...props },\n ref,\n) {\n return (\n <span\n ref={ref}\n className={cx(\"klun-hint\", error && \"klun-hint--error\", className)}\n {...props}\n >\n {icon ? <span className=\"klun-hint__icon\">{icon}</span> : null}\n {children}\n </span>\n );\n});\n\nHint.displayName = \"Hint\";\n","import {\n forwardRef,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type ChangeEvent,\n type CSSProperties,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport type ImageUploadShape = \"circle\" | \"square\";\n\nexport interface ImageUploadProps extends Omit<HTMLAttributes<HTMLDivElement>, \"style\"> {\n /** Current image URL; shows the preview when set. */\n src?: string;\n /** Preview shape. Default `\"circle\"`. */\n shape?: ImageUploadShape;\n /** Preview edge length in px. Default `96`. */\n size?: number;\n label?: ReactNode;\n hint?: ReactNode;\n onPick?: (file: File | null, e: ChangeEvent<HTMLInputElement>) => void;\n onRemove?: () => void;\n disabled?: boolean;\n /** Style applied to the root element. */\n style?: CSSProperties;\n}\n\n/**\n * ImageUpload — avatar/image picker with a circular or square preview, a\n * change overlay and a remove control. Click or drop an image to pick; the\n * drag-over state is exposed via `data-dragover` and styled in CSS.\n */\nexport const ImageUpload = forwardRef<HTMLDivElement, ImageUploadProps>(function ImageUpload(\n {\n src,\n shape = \"circle\",\n size = 96,\n label,\n hint = \"PNG or JPG, up to 5MB\",\n onPick,\n onRemove,\n disabled = false,\n className,\n style,\n ...props\n },\n ref,\n) {\n const { imageUpload } = useLocale();\n const [over, setOver] = useState(false);\n const inputRef = useRef<HTMLInputElement>(null);\n\n return (\n <div ref={ref} className={cx(\"klun-image-upload\", className)} style={style} {...props}>\n <label\n className={cx(\n \"klun-image-upload__dropzone\",\n `klun-image-upload__dropzone--${shape}`,\n src && \"klun-image-upload__dropzone--filled\",\n disabled && \"klun-image-upload__dropzone--disabled\",\n )}\n style={\n {\n \"--klun-image-upload-size\": `${size}px`,\n ...(src ? { backgroundImage: `url(${src})` } : null),\n } as CSSProperties\n }\n data-dragover={over || undefined}\n onDragOver={(e) => {\n if (disabled) return;\n e.preventDefault();\n setOver(true);\n }}\n onDragLeave={() => setOver(false)}\n onDrop={(e) => {\n e.preventDefault();\n setOver(false);\n if (disabled) return;\n onPick?.(e.dataTransfer.files?.[0] ?? null, e as unknown as ChangeEvent<HTMLInputElement>);\n }}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept=\"image/*\"\n disabled={disabled}\n className=\"klun-image-upload__input\"\n onChange={(e) => onPick?.(e.target.files?.[0] ?? null, e)}\n />\n {!src ? (\n <span className=\"klun-image-upload__placeholder\">\n <i className=\"ri-camera-line\" />\n </span>\n ) : (\n <span className=\"klun-image-upload__overlay\">\n <i className=\"ri-pencil-line\" />\n </span>\n )}\n </label>\n <div className=\"klun-image-upload__meta\">\n <span className=\"klun-image-upload__label\">{label ?? imageUpload.label}</span>\n {hint ? <span className=\"klun-image-upload__hint\">{hint}</span> : null}\n {src && onRemove ? (\n <button type=\"button\" className=\"klun-image-upload__remove\" onClick={onRemove}>\n {imageUpload.remove}\n </button>\n ) : null}\n </div>\n </div>\n );\n});\n\nImageUpload.displayName = \"ImageUpload\";\n","import {\n forwardRef,\n type CSSProperties,\n type InputHTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type InlineInputTone = \"strong\" | \"sub\" | \"accent\";\nexport type InlineInputWeight = \"regular\" | \"medium\";\n\nexport interface InlineInputProps extends InputHTMLAttributes<HTMLInputElement> {\n tone?: InlineInputTone;\n weight?: InlineInputWeight;\n error?: boolean;\n leadingIcon?: ReactNode;\n /** Class applied to the outer wrapper. */\n className?: string;\n /** Style applied to the outer wrapper. */\n style?: CSSProperties;\n /** Style applied to the inner `<input>`. */\n inputStyle?: CSSProperties;\n}\n\n/**\n * InlineInput — borderless text input that reads as editable text in a row or\n * table cell. Shows a soft underline on focus instead of a box. `className`/\n * `style` target the wrapper; `ref` forwards to the `<input>`.\n */\nexport const InlineInput = forwardRef<HTMLInputElement, InlineInputProps>(\n function InlineInput(\n {\n tone = \"strong\",\n weight = \"medium\",\n error = false,\n disabled = false,\n leadingIcon,\n className,\n style,\n inputStyle,\n ...props\n },\n ref,\n ) {\n return (\n <span\n className={cx(\n \"klun-inline-input\",\n `klun-inline-input--${tone}`,\n `klun-inline-input--${weight}`,\n error && \"klun-inline-input--error\",\n disabled && \"klun-inline-input--disabled\",\n className,\n )}\n style={style}\n >\n {leadingIcon ? (\n <span className=\"klun-inline-input__icon\">{leadingIcon}</span>\n ) : null}\n <input\n ref={ref}\n className=\"klun-inline-input__field\"\n disabled={disabled}\n style={inputStyle}\n {...props}\n />\n </span>\n );\n },\n);\n\nInlineInput.displayName = \"InlineInput\";\n","import {\n forwardRef,\n useRef,\n type CSSProperties,\n type ReactNode,\n type SelectHTMLAttributes,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSelect } from \"./select/useSelect\";\nimport { SelectListbox } from \"./select/Listbox\";\n\nexport type InlineSelectTone = \"sub\" | \"strong\" | \"accent\";\nexport type InlineSelectWeight = \"regular\" | \"medium\";\n\nexport interface InlineSelectProps\n extends Omit<SelectHTMLAttributes<HTMLSelectElement>, \"style\"> {\n /** Text color role. */\n tone?: InlineSelectTone;\n weight?: InlineSelectWeight;\n leadingIcon?: ReactNode;\n disabled?: boolean;\n /** <option> elements. */\n children?: ReactNode;\n /** Style applied to the outer wrapper. */\n style?: CSSProperties;\n}\n\n/**\n * InlineSelect — borderless, text-styled dropdown that sits inside a sentence\n * or label row. Backed by a fully custom, themed dropdown (not the native OS\n * menu). Keeps the familiar `<option>` children API and native form semantics:\n * a visually-hidden `<select>` carries the value for form submission, receives\n * `name`/`required`/native `onChange`, and is what `ref` forwards to. With no\n * selection the trigger shows the first option's label (mirrors a native\n * select's default). `className`/`style` target the wrapper.\n */\nexport const InlineSelect = forwardRef<HTMLSelectElement, InlineSelectProps>(\n function InlineSelect(\n {\n tone = \"sub\",\n weight = \"medium\",\n disabled = false,\n leadingIcon,\n className,\n style,\n children,\n value,\n defaultValue,\n onChange,\n ...props\n },\n ref,\n ) {\n const rootRef = useRef<HTMLSpanElement>(null);\n const s = useSelect({ children, value, defaultValue, disabled, rootRef });\n\n return (\n <span\n ref={rootRef}\n className={cx(\n \"klun-inline-select\",\n `klun-inline-select--${tone}`,\n `klun-inline-select--${weight}`,\n disabled && \"klun-inline-select--disabled\",\n className,\n )}\n style={style}\n >\n <button\n ref={s.triggerRef}\n type=\"button\"\n disabled={disabled}\n onClick={s.toggle}\n onKeyDown={s.triggerKeyDown}\n aria-haspopup=\"listbox\"\n aria-expanded={s.open}\n data-open={s.open || undefined}\n className=\"klun-inline-select__trigger\"\n >\n {leadingIcon ? (\n <span className=\"klun-inline-select__icon\">{leadingIcon}</span>\n ) : null}\n <span className=\"klun-inline-select__value\">\n {s.selected?.label ?? s.options[0]?.label}\n </span>\n <svg\n className=\"klun-inline-select__chevron\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M6 8l4 4 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n {/* hidden native select: form value + name/required + native onChange + ref */}\n <select\n ref={s.mergeSelectRef(ref)}\n className=\"klun-inline-select__native\"\n aria-hidden\n tabIndex={-1}\n defaultValue={String(value ?? defaultValue ?? \"\")}\n onChange={onChange}\n disabled={disabled}\n {...props}\n >\n {children}\n </select>\n\n {s.open ? (\n <SelectListbox\n options={s.options}\n current={s.current}\n active={s.active}\n onActivate={s.setActive}\n onPick={s.pick}\n />\n ) : null}\n </span>\n );\n },\n);\n\nInlineSelect.displayName = \"InlineSelect\";\n","import { forwardRef, type LabelHTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface LabelProps extends LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean;\n sublabel?: ReactNode;\n disabled?: boolean;\n}\n\n/** Klun UI Label — field label with optional required asterisk + sublabel. */\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(function Label(\n { children, required = false, sublabel, disabled = false, className, ...props },\n ref,\n) {\n return (\n <label\n ref={ref}\n className={cx(\"klun-label\", disabled && \"klun-label--disabled\", className)}\n {...props}\n >\n {children}\n {required ? <span className=\"klun-label__required\">*</span> : null}\n {sublabel ? <span className=\"klun-label__sublabel\">{sublabel}</span> : null}\n </label>\n );\n});\n\nLabel.displayName = \"Label\";\n","import {\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport type PasswordStrengthLevel = \"weak\" | \"fair\" | \"good\" | \"strong\";\n\nexport interface PasswordStrengthProps extends HTMLAttributes<HTMLDivElement> {\n /** Named strength level — sets lit bars + color + caption. */\n strength?: PasswordStrengthLevel;\n /** Or a raw 0–4 score (overrides `strength` for lit-bar count). */\n score?: number;\n bars?: number;\n showLabel?: boolean;\n /** Override the auto caption text. */\n label?: ReactNode;\n}\n\nconst LIT: Record<PasswordStrengthLevel, number> = { weak: 1, fair: 2, good: 3, strong: 4 };\n\nconst SCORE_TO_LEVEL: PasswordStrengthLevel[] = [\"weak\", \"weak\", \"fair\", \"good\", \"strong\"];\n\n/**\n * PasswordStrength — 4-segment meter with a strength caption. Pass either\n * `strength` (\"weak\" | \"fair\" | \"good\" | \"strong\") or a raw 0–4 `score`. The\n * resolved level is exposed via `data-level` and drives the bar/caption color.\n */\nexport const PasswordStrength = forwardRef<HTMLDivElement, PasswordStrengthProps>(\n function PasswordStrength(\n { strength, score, bars = 4, showLabel = true, label, className, style, ...props },\n ref,\n ) {\n const t = useLocale().passwordStrength;\n const key = strength ?? SCORE_TO_LEVEL[Math.max(0, Math.min(4, score ?? 0))];\n const lit = score != null ? Math.max(0, Math.min(bars, score)) : (LIT[key] ?? LIT.weak);\n\n return (\n <div\n ref={ref}\n className={cx(\"klun-password-strength\", className)}\n data-level={key}\n style={style}\n {...props}\n >\n <div className=\"klun-password-strength__bars\">\n {Array.from({ length: bars }).map((_, i) => (\n <span\n key={i}\n className=\"klun-password-strength__bar\"\n data-lit={i < lit || undefined}\n />\n ))}\n </div>\n {showLabel ? (\n <span className=\"klun-password-strength__label\">{label ?? t[key]}</span>\n ) : null}\n </div>\n );\n },\n);\n\nPasswordStrength.displayName = \"PasswordStrength\";\n","import {\n forwardRef,\n type ChangeEvent,\n type CSSProperties,\n type InputHTMLAttributes,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport type RadioSize = \"small\" | \"medium\" | \"large\";\n\nexport interface RadioProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\" | \"type\" | \"size\"> {\n checked?: boolean;\n disabled?: boolean;\n /** Red error ring. */\n error?: boolean;\n /** Control size. Default `\"medium\"`. */\n size?: RadioSize;\n name?: string;\n value?: string;\n onChange?: (value: string | true) => void;\n style?: CSSProperties;\n}\n\n/** Klun UI Radio — circular single-select control. */\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\n { disabled = false, error = false, size: sizeProp, name, value, onChange, className, style, ...props },\n ref,\n) {\n const size = useSize(sizeProp);\n return (\n <label\n className={cx(\n \"klun-radio\",\n `klun-radio--${size}`,\n disabled && \"klun-radio--disabled\",\n error && \"klun-radio--error\",\n className,\n )}\n style={style}\n >\n <input\n ref={ref}\n type=\"radio\"\n className=\"klun-radio__input\"\n name={name}\n value={value}\n disabled={disabled}\n aria-invalid={error || undefined}\n onChange={(_e: ChangeEvent<HTMLInputElement>) => onChange?.(value ?? true)}\n {...props}\n />\n <span className=\"klun-radio__circle\" aria-hidden>\n <span className=\"klun-radio__dot\" />\n </span>\n </label>\n );\n});\n\nRadio.displayName = \"Radio\";\n","import {\n forwardRef,\n type ChangeEvent,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type RadioCardAlign = \"start\" | \"center\";\n\nexport interface RadioCardProps\n extends Omit<HTMLAttributes<HTMLLabelElement>, \"onChange\" | \"title\"> {\n title?: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n value: string;\n name?: string;\n checked?: boolean;\n disabled?: boolean;\n onChange?: (value: string, e: ChangeEvent<HTMLInputElement>) => void;\n price?: ReactNode;\n unit?: ReactNode;\n /** Vertical alignment of the row. Default `\"start\"`. */\n align?: RadioCardAlign;\n children?: ReactNode;\n}\n\n/**\n * RadioCard — single-select bordered card wrapping a radio control, title,\n * description, optional leading icon and trailing price/unit. The single-select\n * counterpart to CheckboxCard; pass a shared `name` to group cards.\n * `ref` forwards to the `<input type=\"radio\">`.\n */\nexport const RadioCard = forwardRef<HTMLInputElement, RadioCardProps>(\n function RadioCard(\n {\n title,\n description,\n icon,\n value,\n name,\n checked = false,\n disabled = false,\n onChange,\n price,\n unit,\n align = \"start\",\n className,\n children,\n ...props\n },\n ref,\n ) {\n return (\n <label\n className={cx(\n \"klun-radio-card\",\n `klun-radio-card--${align}`,\n disabled && \"klun-radio-card--disabled\",\n className,\n )}\n {...props}\n >\n {icon ? <span className=\"klun-radio-card__icon\">{icon}</span> : null}\n <span className=\"klun-radio-card__content\">\n {title ? <span className=\"klun-radio-card__title\">{title}</span> : null}\n {description ? (\n <span className=\"klun-radio-card__description\">{description}</span>\n ) : null}\n {children}\n </span>\n {price != null ? (\n <span className=\"klun-radio-card__price\">\n <span className=\"klun-radio-card__amount\">{price}</span>\n {unit ? <span className=\"klun-radio-card__unit\">{unit}</span> : null}\n </span>\n ) : null}\n <span className=\"klun-radio-card__control\">\n <input\n ref={ref}\n type=\"radio\"\n className=\"klun-radio-card__input\"\n name={name}\n value={value}\n checked={checked}\n disabled={disabled}\n onChange={(e: ChangeEvent<HTMLInputElement>) => onChange?.(value, e)}\n />\n <span className=\"klun-radio-card__box\" aria-hidden />\n </span>\n </label>\n );\n },\n);\n\nRadioCard.displayName = \"RadioCard\";\n","import {\n forwardRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useMappedSize } from \"../config/ConfigProvider\";\n\n/** Track/thumb scale. */\nexport type RangeSliderSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface RangeSliderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n /** Controlled value as `[low, high]`. */\n value?: [number, number];\n /** Uncontrolled initial value. Default `[20, 70]`. */\n defaultValue?: [number, number];\n min?: number;\n max?: number;\n step?: number;\n /** Track/thumb scale. Default `\"md\"`. */\n size?: RangeSliderSize;\n disabled?: boolean;\n onChange?: (value: [number, number]) => void;\n style?: CSSProperties;\n}\n\nconst SIZE_MAP = { small: \"sm\", medium: \"md\", large: \"lg\" } as const;\n\n/**\n * RangeSlider — dual-handle range selector. Two overlaid native range inputs\n * drive the low/high values (controlled or uncontrolled); the visible track,\n * fill and thumbs are rendered as elements positioned via the\n * `--klun-range-slider-lo` / `--klun-range-slider-hi` custom properties.\n * `ref` forwards to the root element.\n */\nexport const RangeSlider = forwardRef<HTMLDivElement, RangeSliderProps>(function RangeSlider(\n {\n value,\n defaultValue = [20, 70],\n min = 0,\n max = 100,\n step = 1,\n size: sizeProp,\n disabled = false,\n onChange,\n className,\n style,\n ...props\n },\n ref,\n) {\n const size = useMappedSize<RangeSliderSize>(sizeProp, SIZE_MAP, \"md\");\n const isControlled = value !== undefined;\n const [internal, setInternal] = useState<[number, number]>(defaultValue);\n const val = isControlled ? value : internal;\n const [lo, hi] = val;\n\n const pct = (n: number) => ((n - min) / (max - min)) * 100;\n\n const set = (next: [number, number]) => {\n if (!isControlled) setInternal(next);\n onChange?.(next);\n };\n const setLo = (n: number) => set([Math.min(n, hi), hi]);\n const setHi = (n: number) => set([lo, Math.max(n, lo)]);\n\n return (\n <div\n ref={ref}\n data-klun-range-slider=\"\"\n data-disabled={disabled || undefined}\n className={cx(\"klun-range-slider\", `klun-range-slider--${size}`, className)}\n style={\n {\n [\"--klun-range-slider-lo\" as string]: `${pct(lo)}%`,\n [\"--klun-range-slider-hi\" as string]: `${pct(hi)}%`,\n ...style,\n } as CSSProperties\n }\n {...props}\n >\n <div className=\"klun-range-slider__rail\" />\n <div className=\"klun-range-slider__fill\" />\n <div className=\"klun-range-slider__thumb klun-range-slider__thumb--lo\" />\n <div className=\"klun-range-slider__thumb klun-range-slider__thumb--hi\" />\n <input\n type=\"range\"\n className=\"klun-range-slider__input klun-range-slider__input--lo\"\n min={min}\n max={max}\n step={step}\n value={lo}\n disabled={disabled}\n aria-valuenow={lo}\n aria-valuemin={min}\n aria-valuemax={max}\n onChange={(e) => setLo(Number(e.target.value))}\n />\n <input\n type=\"range\"\n className=\"klun-range-slider__input klun-range-slider__input--hi\"\n min={min}\n max={max}\n step={step}\n value={hi}\n disabled={disabled}\n aria-valuenow={hi}\n aria-valuemin={min}\n aria-valuemax={max}\n onChange={(e) => setHi(Number(e.target.value))}\n />\n </div>\n );\n});\n\nRangeSlider.displayName = \"RangeSlider\";\n","import { Fragment, forwardRef, type HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport interface RichEditorToolbarProps extends HTMLAttributes<HTMLDivElement> {\n /** Ids of active formatting buttons (bold, italic, h1, ul, …). */\n active?: string[];\n /** Called with the button id when a tool is pressed. */\n onAction?: (id: string) => void;\n}\n\nconst GROUPS = [\n [\n { id: \"bold\", icon: \"ri-bold\" },\n { id: \"italic\", icon: \"ri-italic\" },\n { id: \"underline\", icon: \"ri-underline\" },\n { id: \"strike\", icon: \"ri-strikethrough\" },\n ],\n [\n { id: \"h1\", icon: \"ri-h-1\" },\n { id: \"h2\", icon: \"ri-h-2\" },\n { id: \"quote\", icon: \"ri-double-quotes-l\" },\n { id: \"code\", icon: \"ri-code-line\" },\n ],\n [\n { id: \"ul\", icon: \"ri-list-unordered\" },\n { id: \"ol\", icon: \"ri-list-ordered\" },\n { id: \"link\", icon: \"ri-link\" },\n { id: \"image\", icon: \"ri-image-line\" },\n ],\n];\n\n/** RichEditorToolbar — formatting toolbar for a text editor (presentational). */\nexport const RichEditorToolbar = forwardRef<HTMLDivElement, RichEditorToolbarProps>(\n function RichEditorToolbar({ active = [], onAction, className, ...props }, ref) {\n const toolbar = useLocale().richEditorToolbar;\n return (\n <div ref={ref} className={cx(\"klun-rich-editor-toolbar\", className)} {...props}>\n {GROUPS.map((g, gi) => (\n <Fragment key={gi}>\n {gi > 0 ? <span className=\"klun-rich-editor-toolbar__divider\" /> : null}\n {g.map((b) => {\n const on = active.includes(b.id);\n return (\n <button\n key={b.id}\n type=\"button\"\n className=\"klun-rich-editor-toolbar__button\"\n onClick={() => onAction?.(b.id)}\n aria-label={toolbar[b.id as keyof typeof toolbar] ?? b.id}\n aria-pressed={on}\n data-active={on || undefined}\n >\n <i className={b.icon} />\n </button>\n );\n })}\n </Fragment>\n ))}\n </div>\n );\n },\n);\n\nRichEditorToolbar.displayName = \"RichEditorToolbar\";\n","import {\n forwardRef,\n useRef,\n type CSSProperties,\n type ReactNode,\n type SelectHTMLAttributes,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\nimport { useSelect } from \"./select/useSelect\";\nimport { SelectListbox } from \"./select/Listbox\";\n\nexport interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, \"size\" | \"style\"> {\n size?: \"small\" | \"medium\" | \"large\";\n placeholder?: string;\n leadingIcon?: ReactNode;\n error?: boolean;\n disabled?: boolean;\n /** Replace the chevron with a spinner. */\n loading?: boolean;\n /** Style applied to the outer field wrapper. */\n style?: CSSProperties;\n}\n\n/**\n * Select — single-select with a fully custom, themed dropdown (not the native\n * OS menu). Keeps the familiar `<option>` children API and native form\n * semantics: a visually-hidden `<select>` carries the value for form submission,\n * receives `name`/`required`/native `onChange`, and is what `ref` forwards to.\n * Controlled via `value` or uncontrolled via `defaultValue`.\n */\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(function Select(\n {\n size: sizeProp,\n placeholder,\n leadingIcon,\n error = false,\n disabled = false,\n loading = false,\n className,\n style,\n children,\n value,\n defaultValue,\n onChange,\n ...props\n },\n ref,\n) {\n const size = useSize(sizeProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const s = useSelect({ children, value, defaultValue, disabled: disabled || loading, rootRef });\n\n return (\n <div ref={rootRef} className={cx(\"klun-select\", `klun-select--${size}`, className)} style={style}>\n <button\n ref={s.triggerRef}\n type=\"button\"\n disabled={disabled}\n onClick={s.toggle}\n onKeyDown={s.triggerKeyDown}\n aria-haspopup=\"listbox\"\n aria-expanded={s.open}\n data-open={s.open || undefined}\n className={cx(\n \"klun-select__trigger\",\n error && \"klun-select__trigger--error\",\n disabled && \"klun-select__trigger--disabled\",\n !s.selected && \"klun-select__trigger--placeholder\",\n )}\n >\n {leadingIcon ? <span className=\"klun-select__icon\">{leadingIcon}</span> : null}\n <span className=\"klun-select__value\">{s.selected ? s.selected.label : placeholder}</span>\n {loading ? (\n <svg className=\"klun-select__spinner\" width=\"18\" height=\"18\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden>\n <circle cx=\"10\" cy=\"10\" r=\"7\" stroke=\"currentColor\" strokeOpacity=\"0.25\" strokeWidth=\"2.5\" />\n <circle cx=\"10\" cy=\"10\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"2.5\" strokeLinecap=\"round\" strokeDasharray=\"44\" strokeDashoffset=\"31\" />\n </svg>\n ) : (\n <svg className=\"klun-select__chevron\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden>\n <path d=\"M6 8l4 4 4-4\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n )}\n </button>\n\n {/* hidden native select: form value + name/required + native onChange + ref */}\n <select\n ref={s.mergeSelectRef(ref)}\n className=\"klun-select__native\"\n aria-hidden\n tabIndex={-1}\n defaultValue={String(value ?? defaultValue ?? \"\")}\n onChange={onChange}\n disabled={disabled}\n {...props}\n >\n {placeholder ? (\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n ) : null}\n {children}\n </select>\n\n {s.open ? (\n <SelectListbox\n options={s.options}\n current={s.current}\n active={s.active}\n onActivate={s.setActive}\n onPick={s.pick}\n />\n ) : null}\n </div>\n );\n});\n\nSelect.displayName = \"Select\";\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale, useSize } from \"../config/ConfigProvider\";\n\nexport interface SelectMenuOption {\n value: string;\n label: ReactNode;\n icon?: ReactNode;\n description?: ReactNode;\n disabled?: boolean;\n}\n\nexport type SelectMenuSize = \"small\" | \"medium\" | \"large\";\n\nexport interface SelectMenuProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n options: SelectMenuOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n size?: SelectMenuSize;\n leadingIcon?: ReactNode;\n error?: boolean;\n disabled?: boolean;\n /** Side the popup aligns to. */\n align?: \"left\" | \"right\";\n /** Style applied to the outer wrapper. */\n style?: CSSProperties;\n}\n\n/**\n * SelectMenu — custom, fully-styled single-select with a popup panel. Unlike\n * the native-backed Select, options can carry icons + descriptions and the\n * selected row shows a check. Controlled via `value` / `onChange`. `ref`\n * forwards to the trigger `<button>`.\n */\nexport const SelectMenu = forwardRef<HTMLButtonElement, SelectMenuProps>(\n function SelectMenu(\n {\n options = [],\n value,\n onChange,\n placeholder,\n size: sizeProp,\n leadingIcon,\n error = false,\n disabled = false,\n align = \"left\",\n className,\n style,\n ...props\n },\n ref,\n ) {\n const size = useSize(sizeProp);\n const { selectMenu } = useLocale();\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n const selected = options.find((o) => o.value === value) || null;\n\n useEffect(() => {\n if (!open) return;\n const h = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node))\n setOpen(false);\n };\n const k = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n document.addEventListener(\"keydown\", k);\n return () => {\n document.removeEventListener(\"mousedown\", h);\n document.removeEventListener(\"keydown\", k);\n };\n }, [open]);\n\n const lead = leadingIcon || selected?.icon;\n\n return (\n <div\n ref={rootRef}\n className={cx(\"klun-select-menu\", className)}\n style={style}\n {...props}\n >\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled}\n onClick={() => setOpen((o) => !o)}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n data-open={open || undefined}\n className={cx(\n \"klun-select-menu__trigger\",\n `klun-select-menu__trigger--${size}`,\n error && \"klun-select-menu__trigger--error\",\n disabled && \"klun-select-menu__trigger--disabled\",\n !selected && \"klun-select-menu__trigger--placeholder\",\n )}\n >\n {lead ? <span className=\"klun-select-menu__lead\">{lead}</span> : null}\n <span className=\"klun-select-menu__value\">\n {selected ? selected.label : (placeholder ?? selectMenu.placeholder)}\n </span>\n <svg\n className=\"klun-select-menu__chevron\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M6 8l4 4 4-4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n {open ? (\n <div\n role=\"listbox\"\n className={cx(\n \"klun-select-menu__panel\",\n `klun-select-menu__panel--${align}`,\n )}\n >\n {options.map((o, i) => {\n const active = o.value === value;\n return (\n <button\n key={o.value ?? i}\n type=\"button\"\n role=\"option\"\n aria-selected={active}\n disabled={o.disabled}\n onClick={() => {\n if (!o.disabled) {\n onChange?.(o.value);\n setOpen(false);\n }\n }}\n className=\"klun-select-menu__option\"\n >\n {o.icon ? (\n <span className=\"klun-select-menu__option-icon\">{o.icon}</span>\n ) : null}\n <span className=\"klun-select-menu__option-body\">\n <span className=\"klun-select-menu__option-label\">{o.label}</span>\n {o.description ? (\n <span className=\"klun-select-menu__option-desc\">\n {o.description}\n </span>\n ) : null}\n </span>\n {active ? (\n <svg\n className=\"klun-select-menu__check\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden\n >\n <path\n d=\"M5 10.5l3.5 3.5L15 6.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : null}\n </button>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nSelectMenu.displayName = \"SelectMenu\";\n","import {\n forwardRef,\n type ChangeEvent,\n type CSSProperties,\n type InputHTMLAttributes,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport type SliderSize = \"small\" | \"medium\" | \"large\";\n\nexport interface SliderProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"value\" | \"style\" | \"size\"> {\n value?: number;\n min?: number;\n max?: number;\n step?: number;\n onChange?: (value: number) => void;\n disabled?: boolean;\n /** Track size. Default `\"medium\"`. */\n size?: SliderSize;\n style?: CSSProperties;\n}\n\n/**\n * Slider — single-thumb range control with a filled track. The filled portion is\n * driven by the `--klun-slider-value` custom property; `ref` forwards to the `<input>`.\n */\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(function Slider(\n { value = 50, min = 0, max = 100, step = 1, onChange, disabled = false, size: sizeProp, className, style, ...props },\n ref,\n) {\n const size = useSize(sizeProp);\n const pct = ((value - min) / (max - min)) * 100;\n return (\n <input\n ref={ref}\n type=\"range\"\n data-klun-slider=\"\"\n className={cx(\"klun-slider\", `klun-slider--${size}`, className)}\n min={min}\n max={max}\n step={step}\n value={value}\n disabled={disabled}\n aria-valuenow={value}\n aria-valuemin={min}\n aria-valuemax={max}\n onChange={(e: ChangeEvent<HTMLInputElement>) => onChange?.(Number(e.target.value))}\n style={{ [\"--klun-slider-value\" as string]: `${pct}%`, ...style }}\n {...props}\n />\n );\n});\n\nSlider.displayName = \"Slider\";\n","import {\n forwardRef,\n type ChangeEvent,\n type CSSProperties,\n type InputHTMLAttributes,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport type SwitchSize = \"small\" | \"medium\" | \"large\";\n\nexport interface SwitchProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"onChange\" | \"type\" | \"size\"> {\n checked?: boolean;\n disabled?: boolean;\n /** Control size. Default `\"medium\"`. */\n size?: SwitchSize;\n onChange?: (checked: boolean) => void;\n style?: CSSProperties;\n}\n\n/** Klun UI Switch — on/off toggle. */\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(function Switch(\n { disabled = false, size: sizeProp, onChange, className, style, ...props },\n ref,\n) {\n const size = useSize(sizeProp);\n return (\n <label\n className={cx(\"klun-switch\", `klun-switch--${size}`, disabled && \"klun-switch--disabled\", className)}\n style={style}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n className=\"klun-switch__input\"\n disabled={disabled}\n onChange={(e: ChangeEvent<HTMLInputElement>) => onChange?.(e.target.checked)}\n {...props}\n />\n <span className=\"klun-switch__track\" aria-hidden>\n <span className=\"klun-switch__thumb\" />\n </span>\n </label>\n );\n});\n\nSwitch.displayName = \"Switch\";\n","import { forwardRef, type CSSProperties, type TextareaHTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useSize } from \"../config/ConfigProvider\";\n\nexport type TextareaSize = \"small\" | \"medium\" | \"large\";\n\nexport interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, \"style\"> {\n error?: boolean;\n disabled?: boolean;\n /** Control size. Default `\"medium\"`. */\n size?: TextareaSize;\n rows?: number;\n /** Style applied to the outer field wrapper. */\n style?: CSSProperties;\n}\n\n/**\n * Textarea — multiline text field. The wrapper holds the border / focus-within\n * ring; `className`/`style` target the wrapper and `ref` forwards to the `<textarea>`.\n */\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n { error = false, disabled = false, readOnly = false, size: sizeProp, rows = 4, className, style, ...props },\n ref,\n) {\n const size = useSize(sizeProp);\n return (\n <div\n className={cx(\n \"klun-textarea\",\n `klun-textarea--${size}`,\n error && \"klun-textarea--error\",\n disabled && \"klun-textarea--disabled\",\n readOnly && \"klun-textarea--readonly\",\n className,\n )}\n style={style}\n >\n <textarea\n ref={ref}\n className=\"klun-textarea__field\"\n rows={rows}\n disabled={disabled}\n readOnly={readOnly}\n {...props}\n />\n </div>\n );\n});\n\nTextarea.displayName = \"Textarea\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type CardVariant = \"stroke\" | \"shadow\" | \"flat\";\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n /** Surface treatment. Default `\"stroke\"`. */\n variant?: CardVariant;\n /** Inner padding (number → px). Defaults to 16px via CSS. */\n padding?: number | string;\n children?: ReactNode;\n}\n\n/** Card — elevated/outlined surface container. */\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n { variant = \"stroke\", padding, className, style, children, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cx(\"klun-card\", `klun-card--${variant}`, className)}\n style={padding != null ? { padding, ...style } : style}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nCard.displayName = \"Card\";\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type Breakpoint = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\";\n\n/** A scalar value, or per-breakpoint values (`{ xs, sm, md, lg, xl, xxl }`). */\nexport type Responsive<T> = T | Partial<Record<Breakpoint, T>>;\n\n// min-width per breakpoint, largest first (xs = 0 is the base layer).\nconst MIN_WIDTH: ReadonlyArray<[Breakpoint, number]> = [\n [\"xxl\", 1600],\n [\"xl\", 1200],\n [\"lg\", 992],\n [\"md\", 768],\n [\"sm\", 576],\n [\"xs\", 0],\n];\n\nconst canMatch = () => typeof window !== \"undefined\" && typeof window.matchMedia === \"function\";\n\n/** Resolve a responsive value to the largest active breakpoint that defines it. */\nfunction resolveResponsive<T>(value: Responsive<T> | undefined): T | undefined {\n if (value == null || typeof value !== \"object\") return value as T | undefined;\n const obj = value as Partial<Record<Breakpoint, T>>;\n const can = canMatch();\n let resolved: T | undefined;\n for (let i = MIN_WIDTH.length - 1; i >= 0; i--) {\n const [key, min] = MIN_WIDTH[i];\n if (obj[key] == null) continue;\n if (min === 0 || (can && window.matchMedia(`(min-width: ${min}px)`).matches)) resolved = obj[key];\n }\n if (resolved === undefined) for (const [key] of MIN_WIDTH) if (obj[key] != null) return obj[key];\n return resolved;\n}\n\n/** Reactively resolve a responsive value, re-evaluating on viewport changes. */\nfunction useResponsive<T>(value: Responsive<T> | undefined): T | undefined {\n const isResp = value != null && typeof value === \"object\";\n const [, force] = useState(0);\n useEffect(() => {\n if (!isResp || !canMatch()) return;\n const update = () => force((n) => n + 1);\n const mqls = MIN_WIDTH.filter(([, m]) => m > 0).map(([, m]) => window.matchMedia(`(min-width: ${m}px)`));\n mqls.forEach((m) => m.addEventListener(\"change\", update));\n return () => mqls.forEach((m) => m.removeEventListener(\"change\", update));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isResp, isResp ? JSON.stringify(value) : value]);\n return resolveResponsive(value);\n}\n\n/** Horizontal half-gutter (px) passed from Row to its Cols. */\nconst RowGutterContext = createContext(0);\n\n/** A single gutter value, or per-breakpoint values. */\nexport type Gutter = Responsive<number>;\n\nexport type RowJustify =\n | \"start\"\n | \"end\"\n | \"center\"\n | \"space-around\"\n | \"space-between\"\n | \"space-evenly\";\n\nexport type RowAlign = \"top\" | \"middle\" | \"bottom\" | \"stretch\";\n\nexport interface RowProps extends HTMLAttributes<HTMLDivElement> {\n /** Spacing between columns. `number` → horizontal px; `[h, v]` → [horizontal, vertical] px.\n * Each value may be a per-breakpoint object, e.g. `{ xs: 8, md: 24 }`. Default `0`. */\n gutter?: Gutter | [Gutter, Gutter];\n /** `justify-content` of the flex row. Accepts a per-breakpoint object. */\n justify?: Responsive<RowJustify>;\n /** `align-items` of the flex row. Accepts a per-breakpoint object. */\n align?: Responsive<RowAlign>;\n /** Wrap columns onto multiple lines. Default `true`. */\n wrap?: boolean;\n children?: ReactNode;\n}\n\n/** Klun UI Row — flex container for a 24-column responsive grid. */\nexport const Row = forwardRef<HTMLDivElement, RowProps>(function Row(\n { gutter = 0, justify, align, wrap = true, className, style, children, ...props },\n ref,\n) {\n const [rawH, rawV] = Array.isArray(gutter) ? gutter : [gutter, 0];\n const h = useResponsive<number>(rawH) ?? 0;\n const v = useResponsive<number>(rawV) ?? 0;\n const j = useResponsive<RowJustify>(justify);\n const a = useResponsive<RowAlign>(align);\n\n const rowStyle: CSSProperties = { ...style };\n if (h) rowStyle.marginInline = -h / 2;\n if (v) rowStyle.rowGap = v;\n\n return (\n <RowGutterContext.Provider value={h}>\n <div\n ref={ref}\n className={cx(\n \"klun-row\",\n j && `klun-row--justify-${j}`,\n a && `klun-row--align-${a}`,\n wrap === false && \"klun-row--nowrap\",\n className,\n )}\n style={rowStyle}\n {...props}\n >\n {children}\n </div>\n </RowGutterContext.Provider>\n );\n});\n\nRow.displayName = \"Row\";\n\n/** Per-breakpoint settings, or a bare `number` meaning `span` at that breakpoint. */\nexport type ColSize =\n | number\n | { span?: number; offset?: number; order?: number; push?: number; pull?: number };\n\nexport interface ColProps extends HTMLAttributes<HTMLDivElement> {\n /** Columns to span, 0–24. `0` hides the column. */\n span?: number;\n /** Columns to push the column to the right. */\n offset?: number;\n /** Flex order. */\n order?: number;\n /** Columns the column is moved to the right (relative positioning). */\n push?: number;\n /** Columns the column is moved to the left (relative positioning). */\n pull?: number;\n /** `flex` layout style; overrides span/max-width when set. */\n flex?: string | number;\n /** `<576px` (also the base). */\n xs?: ColSize;\n /** `≥576px`. */\n sm?: ColSize;\n /** `≥768px`. */\n md?: ColSize;\n /** `≥992px`. */\n lg?: ColSize;\n /** `≥1200px`. */\n xl?: ColSize;\n /** `≥1600px`. */\n xxl?: ColSize;\n children?: ReactNode;\n}\n\nconst BREAKPOINTS = [\"xs\", \"sm\", \"md\", \"lg\", \"xl\", \"xxl\"] as const;\nconst FIELDS = [\"span\", \"offset\", \"order\", \"push\", \"pull\"] as const;\n\n/** Normalize a breakpoint prop (`number` or object) into its individual fields. */\nfunction readSize(size: ColSize | undefined): {\n span?: number;\n offset?: number;\n order?: number;\n push?: number;\n pull?: number;\n} {\n if (size == null) return {};\n if (typeof size === \"number\") return { span: size };\n return size;\n}\n\n/** Klun UI Col — a 24-column grid cell with per-breakpoint sizing. */\nexport const Col = forwardRef<HTMLDivElement, ColProps>(function Col(\n {\n span,\n offset,\n order,\n push,\n pull,\n flex,\n xs,\n sm,\n md,\n lg,\n xl,\n xxl,\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const h = useContext(RowGutterContext);\n\n // The base layer is set from the bare props AND from an `xs` value (xs IS the base).\n const base = { span, offset, order, push, pull, ...readSize(xs) };\n const byBp: Record<Breakpoint, ReturnType<typeof readSize>> = {\n xs: base,\n sm: readSize(sm),\n md: readSize(md),\n lg: readSize(lg),\n xl: readSize(xl),\n xxl: readSize(xxl),\n };\n\n const vars: Record<string, string | number> = {};\n for (const bp of BREAKPOINTS) {\n const suffix = bp === \"xs\" ? \"\" : `-${bp}`;\n const values = byBp[bp];\n for (const field of FIELDS) {\n const value = values[field];\n if (value != null) vars[`--klun-col-${field}${suffix}`] = value;\n }\n }\n\n const colStyle: CSSProperties = { ...vars, ...style };\n if (h) colStyle.paddingInline = h / 2;\n if (flex != null) colStyle.flex = typeof flex === \"number\" ? `${flex} ${flex} auto` : flex;\n\n return (\n <div\n ref={ref}\n className={cx(\"klun-col\", flex != null && \"klun-col--flex\", className)}\n style={colStyle}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nCol.displayName = \"Col\";\n\n// antd-style screen map: xs is max-width, the rest are min-width (cumulative).\nconst RESPONSIVE_MAP: ReadonlyArray<[Breakpoint, string]> = [\n [\"xs\", \"(max-width: 575.98px)\"],\n [\"sm\", \"(min-width: 576px)\"],\n [\"md\", \"(min-width: 768px)\"],\n [\"lg\", \"(min-width: 992px)\"],\n [\"xl\", \"(min-width: 1200px)\"],\n [\"xxl\", \"(min-width: 1600px)\"],\n];\n\n/** Map of which breakpoints currently match. */\nexport type ScreenMap = Partial<Record<Breakpoint, boolean>>;\n\nfunction readScreens(): ScreenMap {\n const can = canMatch();\n const map: ScreenMap = {};\n for (const [key, q] of RESPONSIVE_MAP) map[key] = can ? window.matchMedia(q).matches : key === \"xs\";\n return map;\n}\n\n/**\n * useBreakpoint — reactive map of which breakpoints currently match, e.g.\n * `{ xs: false, sm: true, md: true, ... }`. Mirrors Ant Design's `useBreakpoint`.\n */\nexport function useBreakpoint(): ScreenMap {\n const [screens, setScreens] = useState<ScreenMap>(readScreens);\n useEffect(() => {\n if (!canMatch()) return;\n const update = () => setScreens(readScreens());\n update();\n const mqls = RESPONSIVE_MAP.map(([, q]) => window.matchMedia(q));\n mqls.forEach((m) => m.addEventListener(\"change\", update));\n return () => mqls.forEach((m) => m.removeEventListener(\"change\", update));\n }, []);\n return screens;\n}\n\n/**\n * Grid — namespace bundling the 24-column grid primitives so consumers can write\n * `<Grid.Row><Grid.Col span={12} /></Grid.Row>`. `Row` and `Col` remain\n * available as standalone named exports too.\n */\nexport const Grid = { Row, Col };\n","import {\n forwardRef,\n useState,\n Children,\n isValidElement,\n type HTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\n/* -------------------------------------------------------------------------- */\n/* Header */\n/* -------------------------------------------------------------------------- */\n\nexport interface LayoutHeaderProps extends HTMLAttributes<HTMLElement> {\n children?: ReactNode;\n}\n\n/** Layout.Header — top band of the app shell. */\nexport const LayoutHeader = forwardRef<HTMLElement, LayoutHeaderProps>(\n function LayoutHeader({ className, children, ...props }, ref) {\n return (\n <header ref={ref} className={cx(\"klun-layout__header\", className)} {...props}>\n {children}\n </header>\n );\n },\n);\nLayoutHeader.displayName = \"LayoutHeader\";\n\n/* -------------------------------------------------------------------------- */\n/* Content */\n/* -------------------------------------------------------------------------- */\n\nexport interface LayoutContentProps extends HTMLAttributes<HTMLElement> {\n children?: ReactNode;\n}\n\n/** Layout.Content — flexible main area. */\nexport const LayoutContent = forwardRef<HTMLElement, LayoutContentProps>(\n function LayoutContent({ className, children, ...props }, ref) {\n return (\n <main ref={ref} className={cx(\"klun-layout__content\", className)} {...props}>\n {children}\n </main>\n );\n },\n);\nLayoutContent.displayName = \"LayoutContent\";\n\n/* -------------------------------------------------------------------------- */\n/* Footer */\n/* -------------------------------------------------------------------------- */\n\nexport interface LayoutFooterProps extends HTMLAttributes<HTMLElement> {\n children?: ReactNode;\n}\n\n/** Layout.Footer — bottom band of the app shell. */\nexport const LayoutFooter = forwardRef<HTMLElement, LayoutFooterProps>(\n function LayoutFooter({ className, children, ...props }, ref) {\n return (\n <footer ref={ref} className={cx(\"klun-layout__footer\", className)} {...props}>\n {children}\n </footer>\n );\n },\n);\nLayoutFooter.displayName = \"LayoutFooter\";\n\n/* -------------------------------------------------------------------------- */\n/* Sider */\n/* -------------------------------------------------------------------------- */\n\nexport type SiderTheme = \"light\" | \"dark\";\n\nexport interface SiderProps extends HTMLAttributes<HTMLDivElement> {\n /** Expanded width in px. Default `200`. */\n width?: number;\n /** Width in px when collapsed. Default `80`. */\n collapsedWidth?: number;\n /** Show a trigger to toggle collapsed state. */\n collapsible?: boolean;\n /** Controlled collapsed state. */\n collapsed?: boolean;\n /** Initial collapsed state when uncontrolled. Default `false`. */\n defaultCollapsed?: boolean;\n /** Fired whenever the collapsed state changes. */\n onCollapse?: (collapsed: boolean) => void;\n /** Surface theme. Default `\"dark\"`. */\n theme?: SiderTheme;\n /** Custom trigger node. Pass `null` to hide the default trigger. */\n trigger?: ReactNode | null;\n /** Reverse the default trigger arrow direction. */\n reverseArrow?: boolean;\n children?: ReactNode;\n}\n\n/** Layout.Sider — collapsible side rail. */\nexport const LayoutSider = forwardRef<HTMLDivElement, SiderProps>(function LayoutSider(\n {\n width = 200,\n collapsedWidth = 80,\n collapsible = false,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapse,\n theme = \"dark\",\n trigger,\n reverseArrow = false,\n className,\n style,\n children,\n ...props\n },\n ref,\n) {\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);\n const isControlled = collapsedProp != null;\n const collapsed = isControlled ? collapsedProp : internalCollapsed;\n\n const currentWidth = collapsed ? collapsedWidth : width;\n\n const toggle = () => {\n const next = !collapsed;\n if (!isControlled) setInternalCollapsed(next);\n onCollapse?.(next);\n };\n\n const widthStyle: CSSProperties = {\n width: currentWidth,\n flex: `0 0 ${currentWidth}px`,\n maxWidth: currentWidth,\n minWidth: currentWidth,\n ...style,\n };\n\n // `trigger === null` hides; `undefined` falls back to the default arrow bar.\n const showDefaultTrigger = collapsible && trigger === undefined;\n const pointingLeft = reverseArrow ? collapsed : !collapsed;\n\n return (\n <aside\n ref={ref}\n className={cx(\n \"klun-layout__sider\",\n `klun-layout__sider--${theme}`,\n collapsed && \"klun-layout__sider--collapsed\",\n className,\n )}\n style={widthStyle}\n data-collapsed={collapsed ? \"\" : undefined}\n {...props}\n >\n <div className=\"klun-layout__sider-children\">{children}</div>\n\n {collapsible && trigger !== null && (\n <>\n {showDefaultTrigger ? (\n <button\n type=\"button\"\n className=\"klun-layout__sider-trigger\"\n aria-label={collapsed ? \"Expand sidebar\" : \"Collapse sidebar\"}\n aria-expanded={!collapsed}\n onClick={toggle}\n >\n <span\n className=\"klun-layout__sider-trigger-arrow\"\n data-direction={pointingLeft ? \"left\" : \"right\"}\n aria-hidden=\"true\"\n />\n </button>\n ) : (\n <div className=\"klun-layout__sider-trigger\" onClick={toggle}>\n {trigger}\n </div>\n )}\n </>\n )}\n </aside>\n );\n});\nLayoutSider.displayName = \"LayoutSider\";\n\n/* -------------------------------------------------------------------------- */\n/* Layout (root) */\n/* -------------------------------------------------------------------------- */\n\nexport interface LayoutProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\ninterface LayoutComponent\n extends React.ForwardRefExoticComponent<\n LayoutProps & React.RefAttributes<HTMLDivElement>\n > {\n Header: typeof LayoutHeader;\n Sider: typeof LayoutSider;\n Content: typeof LayoutContent;\n Footer: typeof LayoutFooter;\n}\n\n/** Layout — app-shell container. Lays out children as a column unless it has a\n * direct Sider child, in which case it becomes a row. */\nexport const Layout = forwardRef<HTMLDivElement, LayoutProps>(function Layout(\n { className, children, ...props },\n ref,\n) {\n const hasSider = Children.toArray(children).some(\n (child) => isValidElement(child) && child.type === LayoutSider,\n );\n\n return (\n <section\n ref={ref}\n className={cx(\"klun-layout\", hasSider && \"klun-layout--has-sider\", className)}\n {...props}\n >\n {children}\n </section>\n );\n}) as LayoutComponent;\n\nLayout.displayName = \"Layout\";\n\nLayout.Header = LayoutHeader;\nLayout.Sider = LayoutSider;\nLayout.Content = LayoutContent;\nLayout.Footer = LayoutFooter;\n","import {\n Children,\n isValidElement,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type Key,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\n/** Per-breakpoint column counts. Each key is optional; the active breakpoint\n * falls back to the next-smaller defined value. */\nexport interface MasonryBreakpoints {\n xs?: number;\n sm?: number;\n md?: number;\n lg?: number;\n xl?: number;\n xxl?: number;\n}\n\nexport type MasonryColumns = number | MasonryBreakpoints;\n\n/** `[horizontal, vertical]` gutter, or a single number applied to both. */\nexport type MasonryGutter = number | [number, number];\n\nexport interface MasonryProps<T = unknown>\n extends HTMLAttributes<HTMLDivElement> {\n /** Column count — a fixed number or a responsive breakpoint map. Default `3`. */\n columns?: MasonryColumns;\n /** Gutter in px: a single number, or `[horizontal, vertical]`. Default `16`. */\n gutter?: MasonryGutter;\n /** Tiles, one per direct child. Ignored when `items` is provided. */\n children?: ReactNode;\n /** Data-driven alternative to `children`. */\n items?: T[];\n /** Render a tile for each `items` entry. */\n itemRender?: (item: T, index: number) => ReactNode;\n /** Stable key for each `items` entry. */\n itemKey?: (item: T, index: number) => string | number;\n}\n\n// min-width breakpoints, largest first so the first match wins.\nconst BREAKPOINTS: ReadonlyArray<[keyof MasonryBreakpoints, number]> = [\n [\"xxl\", 1600],\n [\"xl\", 1200],\n [\"lg\", 992],\n [\"md\", 768],\n [\"sm\", 576],\n [\"xs\", 0],\n];\n\n/** Largest defined value, used as the SSR / no-matchMedia fallback. */\nfunction fallbackColumns(cols: MasonryBreakpoints): number {\n for (const [key] of BREAKPOINTS) {\n const v = cols[key];\n if (v != null) return v;\n }\n return cols.lg ?? 3;\n}\n\n/** Resolve the column count for the currently active breakpoint, falling back\n * to the next-smaller defined value. */\nfunction columnsForActive(cols: MasonryBreakpoints): number {\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\n return fallbackColumns(cols);\n }\n let resolved: number | undefined;\n for (let i = BREAKPOINTS.length - 1; i >= 0; i--) {\n const [key, min] = BREAKPOINTS[i];\n const v = cols[key];\n if (v == null) continue;\n if (min === 0 || window.matchMedia(`(min-width: ${min}px)`).matches) {\n resolved = v;\n }\n }\n return resolved ?? fallbackColumns(cols);\n}\n\n/** Resolve responsive columns reactively, re-evaluating on viewport changes. */\nfunction useResolvedColumns(columns: MasonryColumns): number {\n const isNumber = typeof columns === \"number\";\n const [resolved, setResolved] = useState<number>(() =>\n isNumber ? (columns as number) : columnsForActive(columns as MasonryBreakpoints),\n );\n\n useEffect(() => {\n if (isNumber) {\n setResolved(columns as number);\n return;\n }\n if (typeof window === \"undefined\" || typeof window.matchMedia !== \"function\") {\n setResolved(fallbackColumns(columns as MasonryBreakpoints));\n return;\n }\n const update = () => setResolved(columnsForActive(columns as MasonryBreakpoints));\n update();\n const mqls = BREAKPOINTS.filter(([, min]) => min > 0).map(([, min]) =>\n window.matchMedia(`(min-width: ${min}px)`),\n );\n for (const mql of mqls) mql.addEventListener(\"change\", update);\n return () => {\n for (const mql of mqls) mql.removeEventListener(\"change\", update);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isNumber, isNumber ? columns : JSON.stringify(columns)]);\n\n return resolved;\n}\n\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\ninterface Tile {\n key: Key;\n node: ReactNode;\n}\n\n/**\n * Masonry — multi-column waterfall that balances columns by measured height:\n * each tile is placed into the currently shortest column (antd-style), so tiles\n * flow in source order across columns rather than column-major. Re-balances on\n * resize and when tile heights change. Before measurement (and in SSR), tiles\n * fall back to a round-robin distribution.\n */\nexport function Masonry<T = unknown>({\n columns = 3,\n gutter = 16,\n children,\n items,\n itemRender,\n itemKey,\n className,\n style,\n ...props\n}: MasonryProps<T>) {\n const cols = useResolvedColumns(columns);\n const [gutterH, gutterV] = Array.isArray(gutter) ? gutter : [gutter, gutter];\n\n const tiles: Tile[] = items\n ? items.map((item, i) => ({\n key: itemKey ? itemKey(item, i) : i,\n node: itemRender ? itemRender(item, i) : null,\n }))\n : Children.toArray(children).map((child, i) => ({\n key: isValidElement(child) && child.key != null ? child.key : i,\n node: child,\n }));\n const tilesKey = tiles.map((t) => t.key).join(\"|\");\n\n const containerRef = useRef<HTMLDivElement>(null);\n const tileRefs = useRef<(HTMLDivElement | null)[]>([]);\n tileRefs.current.length = tiles.length;\n\n // tile index -> column index\n const [placement, setPlacement] = useState<number[]>([]);\n\n const reflow = useCallback(() => {\n const n = tileRefs.current.length;\n const colHeights = new Array(cols).fill(0);\n const next = new Array<number>(n);\n for (let i = 0; i < n; i++) {\n let c = 0;\n for (let j = 1; j < cols; j++) if (colHeights[j] < colHeights[c]) c = j;\n next[i] = c;\n const h = tileRefs.current[i]?.offsetHeight ?? 0;\n // unmeasured/zero-height tiles count as 1 so the shortest column rotates\n // (graceful round-robin before layout is known / in SSR & jsdom).\n colHeights[c] += (h > 0 ? h : 1) + gutterV;\n }\n setPlacement((prev) =>\n prev.length === next.length && prev.every((v, k) => v === next[k]) ? prev : next,\n );\n }, [cols, gutterV]);\n\n useIsomorphicLayoutEffect(() => {\n reflow();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reflow, tilesKey]);\n\n useEffect(() => {\n if (typeof ResizeObserver === \"undefined\") return;\n const ro = new ResizeObserver(() => reflow());\n if (containerRef.current) ro.observe(containerRef.current);\n for (const el of tileRefs.current) if (el) ro.observe(el);\n return () => ro.disconnect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reflow, tilesKey, cols]);\n\n const columnOf = (i: number) =>\n placement[i] != null && placement[i] < cols ? placement[i] : i % cols;\n\n return (\n <div\n ref={containerRef}\n className={cx(\"klun-masonry\", className)}\n style={{ gap: gutterH, ...style } as CSSProperties}\n {...props}\n >\n {Array.from({ length: cols }, (_, c) => (\n <div key={c} className=\"klun-masonry__col\" style={{ gap: gutterV }}>\n {tiles.map((t, i) =>\n columnOf(i) === c ? (\n <div\n key={t.key}\n ref={(el) => {\n tileRefs.current[i] = el;\n }}\n className=\"klun-masonry__item\"\n >\n {t.node}\n </div>\n ) : null,\n )}\n </div>\n ))}\n </div>\n );\n}\n\nMasonry.displayName = \"Masonry\";\n","import {\n Children,\n Fragment,\n forwardRef,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type SpaceSize = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | number;\n\nconst GAP: Record<string, number> = { none: 0, xs: 4, sm: 8, md: 12, lg: 16, xl: 24, \"2xl\": 32 };\n\nfunction resolveGap(g: SpaceSize): number {\n return typeof g === \"number\" ? g : GAP[g] ?? GAP.md;\n}\n\nexport interface SpaceProps extends HTMLAttributes<HTMLDivElement> {\n direction?: \"row\" | \"column\";\n size?: SpaceSize;\n align?: CSSProperties[\"alignItems\"];\n justify?: CSSProperties[\"justifyContent\"];\n wrap?: boolean;\n /** Node rendered between each child (e.g. a divider). */\n split?: ReactNode;\n children?: ReactNode;\n}\n\n/** Klun UI Space — inline spacing primitive with token-based gap. */\nexport const Space = forwardRef<HTMLDivElement, SpaceProps>(function Space(\n { direction = \"row\", size = \"md\", align, justify, wrap = true, split, children, className, style, ...props },\n ref,\n) {\n const gap = resolveGap(size);\n // toArray already drops null/undefined/boolean children\n const items = Children.toArray(children);\n return (\n <div\n ref={ref}\n className={cx(\"klun-space\", className)}\n style={{\n flexDirection: direction === \"column\" ? \"column\" : \"row\",\n flexWrap: direction === \"row\" && wrap ? \"wrap\" : \"nowrap\",\n gap,\n alignItems: align || (direction === \"row\" ? \"center\" : \"stretch\"),\n justifyContent: justify,\n ...style,\n }}\n {...props}\n >\n {split\n ? items.map((c, i) => (\n <Fragment key={i}>\n {c}\n {i < items.length - 1 ? <span className=\"klun-space__split\">{split}</span> : null}\n </Fragment>\n ))\n : items}\n </div>\n );\n});\n\nSpace.displayName = \"Space\";\n","import {\n createElement,\n forwardRef,\n type CSSProperties,\n type ElementType,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type FlexGap = \"small\" | \"middle\" | \"large\";\n\n/** Preset gaps, matching Ant Design's small/middle/large. */\nconst GAP_PRESET: Record<FlexGap, number> = { small: 8, middle: 16, large: 24 };\n\nexport interface FlexProps extends HTMLAttributes<HTMLElement> {\n /** Lay children out in a column (`flex-direction: column`). Default `false`. */\n vertical?: boolean;\n /** `flex-wrap`. A boolean is accepted for convenience (`true` → `wrap`). Default `nowrap`. */\n wrap?: CSSProperties[\"flexWrap\"] | boolean;\n /** `justify-content`. Default `normal`. */\n justify?: CSSProperties[\"justifyContent\"];\n /** `align-items`. Default `normal`. */\n align?: CSSProperties[\"alignItems\"];\n /** `flex` shorthand. Default `normal`. */\n flex?: CSSProperties[\"flex\"];\n /** Gap between items: a preset (`small`/`middle`/`large`), a number (px) or any CSS length. */\n gap?: FlexGap | number | string;\n /** Element/component to render. Default `\"div\"`. */\n component?: ElementType;\n children?: ReactNode;\n}\n\nconst resolveGap = (g: FlexProps[\"gap\"]): CSSProperties[\"gap\"] =>\n g == null ? undefined : typeof g === \"string\" && g in GAP_PRESET ? GAP_PRESET[g as FlexGap] : g;\n\n/**\n * Flex — flexbox layout primitive. Mirrors Ant Design's `<Flex>`:\n * `vertical`, `wrap`, `justify`, `align`, `flex`, preset `gap` and a\n * polymorphic `component`. For evenly-gapped stacks of fixed items prefer\n * `Space`; for two-dimensional layouts use `Grid`.\n */\nexport const Flex = forwardRef<HTMLElement, FlexProps>(function Flex(\n { vertical = false, wrap, justify, align, flex, gap, component = \"div\", children, className, style, ...props },\n ref,\n) {\n const mergedStyle: CSSProperties = {\n flexDirection: vertical ? \"column\" : \"row\",\n flexWrap: typeof wrap === \"boolean\" ? (wrap ? \"wrap\" : \"nowrap\") : wrap,\n justifyContent: justify,\n alignItems: align,\n flex,\n gap: resolveGap(gap),\n ...style,\n };\n return createElement(\n component,\n { ref, className: cx(\"klun-flex\", className), style: mergedStyle, ...props },\n children,\n );\n});\n\nFlex.displayName = \"Flex\";\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n Children,\n isValidElement,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type KeyboardEvent as ReactKeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type SplitterLayout = \"horizontal\" | \"vertical\";\n\nexport interface SplitterPanelProps extends HTMLAttributes<HTMLDivElement> {\n /** Initial size — number (px) or string (\"30%\" / \"200px\"). */\n defaultSize?: number | string;\n /** Controlled size — number (px) or string. */\n size?: number | string;\n /** Minimum size the panel may shrink to (px or \"%\"). */\n min?: number | string;\n /** Maximum size the panel may grow to (px or \"%\"). */\n max?: number | string;\n /** Show collapse buttons on the adjacent bar. `true` = both directions. */\n collapsible?: boolean | { start?: boolean; end?: boolean };\n /** Whether the bar AFTER this panel can resize. Default `true`. */\n resizable?: boolean;\n children?: ReactNode;\n}\n\nexport interface SplitterProps extends HTMLAttributes<HTMLDivElement> {\n /** Panel arrangement. `\"horizontal\"` = side by side (resize along X). Default. */\n layout?: SplitterLayout;\n /** Fired continuously during a drag with the live panel sizes (percentages). */\n onResize?: (sizes: number[]) => void;\n /** Fired once a drag/keyboard resize settles, with the final sizes (percentages). */\n onResizeEnd?: (sizes: number[]) => void;\n /** `Splitter.Panel` children. */\n children?: ReactNode;\n}\n\n/** A panel inside a `Splitter`. Rendered by the parent; not standalone. */\nexport const SplitterPanel = forwardRef<HTMLDivElement, SplitterPanelProps>(\n function SplitterPanel({ className, children, ...props }, ref) {\n // `Splitter` strips its own layout props before spreading the rest here.\n return (\n <div ref={ref} className={cx(\"klun-splitter__panel\", className)} {...props}>\n {children}\n </div>\n );\n },\n);\nSplitterPanel.displayName = \"SplitterPanel\";\n\ntype PanelEl = ReactElement<SplitterPanelProps>;\n\n// Resolve a px/\"%\"/number size against the container's px length → percentage.\nfunction toPct(value: number | string | undefined, containerPx: number): number | undefined {\n if (value == null) return undefined;\n if (typeof value === \"number\") return containerPx > 0 ? (value / containerPx) * 100 : undefined;\n const v = value.trim();\n if (v.endsWith(\"%\")) return parseFloat(v);\n if (v.endsWith(\"px\")) {\n const px = parseFloat(v);\n return containerPx > 0 ? (px / containerPx) * 100 : undefined;\n }\n const n = parseFloat(v);\n if (Number.isNaN(n)) return undefined;\n return containerPx > 0 ? (n / containerPx) * 100 : undefined;\n}\n\n// Resolve a min/max bound to a percentage; falls back to `fallback` when unset.\nfunction boundPct(\n value: number | string | undefined,\n containerPx: number,\n fallback: number,\n): number {\n const pct = toPct(value, containerPx);\n return pct == null ? fallback : pct;\n}\n\n// Build the initial percentage layout: explicit sizes resolved, the rest split evenly.\nfunction computeSizes(panels: PanelEl[], containerPx: number): number[] {\n const explicit = panels.map((p) => toPct(p.props.size ?? p.props.defaultSize, containerPx));\n const known = explicit.reduce<number>((sum, v) => sum + (v ?? 0), 0);\n const autoCount = explicit.filter((v) => v == null).length;\n const remaining = Math.max(0, 100 - known);\n const each = autoCount > 0 ? remaining / autoCount : 0;\n const sizes = explicit.map((v) => (v == null ? each : v));\n // Normalize so the sum is exactly 100 (guards against rounding / over-allocation).\n const total = sizes.reduce((a, b) => a + b, 0);\n if (total > 0 && Math.abs(total - 100) > 0.001) {\n return sizes.map((s) => (s / total) * 100);\n }\n return sizes;\n}\n\n/** Splitter — resizable split panels (Ant-Design-style). */\nconst SplitterRoot = forwardRef<HTMLDivElement, SplitterProps>(function Splitter(\n { layout = \"horizontal\", onResize, onResizeEnd, className, children, ...props },\n forwardedRef,\n) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n const setRefs = useCallback(\n (node: HTMLDivElement | null) => {\n containerRef.current = node;\n if (typeof forwardedRef === \"function\") forwardedRef(node);\n else if (forwardedRef) forwardedRef.current = node;\n },\n [forwardedRef],\n );\n\n const panels = useMemo(\n () =>\n Children.toArray(children).filter(\n (c): c is PanelEl => isValidElement(c) && c.type === SplitterPanel,\n ),\n [children],\n );\n\n const [containerPx, setContainerPx] = useState(0);\n const [sizes, setSizes] = useState<number[]>([]);\n // Size remembered before a collapse, so the toggle can restore it.\n const collapsedMemo = useRef<Record<number, number | undefined>>({});\n\n // Measure the container along the active axis (layout effect + ResizeObserver).\n useLayoutEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const measure = () => {\n const rect = el.getBoundingClientRect();\n const px = layout === \"horizontal\" ? rect.width : rect.height;\n setContainerPx(px);\n };\n measure();\n if (typeof ResizeObserver !== \"undefined\") {\n const ro = new ResizeObserver(measure);\n ro.observe(el);\n return () => ro.disconnect();\n }\n return undefined;\n }, [layout]);\n\n // Initialize / re-derive sizes when the panel set or container size changes,\n // but never clobber a layout the user has already dragged.\n const initedRef = useRef(false);\n useEffect(() => {\n if (panels.length === 0) {\n setSizes([]);\n initedRef.current = false;\n return;\n }\n if (!initedRef.current || sizes.length !== panels.length) {\n setSizes(computeSizes(panels, containerPx));\n initedRef.current = panels.length > 0 && (containerPx > 0 || allPercentage(panels));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [panels, containerPx]);\n\n // Honor controlled `size` props after init.\n useEffect(() => {\n if (!initedRef.current || sizes.length !== panels.length) return;\n let changed = false;\n const next = sizes.slice();\n panels.forEach((p, i) => {\n if (p.props.size != null) {\n const pct = toPct(p.props.size, containerPx);\n if (pct != null && Math.abs(pct - next[i]) > 0.001) {\n next[i] = pct;\n changed = true;\n }\n }\n });\n if (changed) setSizes(next);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [panels, containerPx]);\n\n const sizesRef = useRef(sizes);\n sizesRef.current = sizes;\n\n // Apply a resize between panel `i` and `i+1` by `deltaPct`, clamped to both\n // neighbors' min/max. Returns the next sizes array (or the same ref if blocked).\n const applyDelta = useCallback(\n (i: number, deltaPct: number): number[] => {\n const cur = sizesRef.current;\n if (i < 0 || i + 1 >= cur.length) return cur;\n const aMin = boundPct(panels[i]?.props.min, containerPx, 0);\n const aMax = boundPct(panels[i]?.props.max, containerPx, 100);\n const bMin = boundPct(panels[i + 1]?.props.min, containerPx, 0);\n const bMax = boundPct(panels[i + 1]?.props.max, containerPx, 100);\n let d = deltaPct;\n // Clamp so neither neighbor leaves its [min,max] window.\n d = Math.min(d, aMax - cur[i], cur[i + 1] - bMin);\n d = Math.max(d, aMin - cur[i], cur[i + 1] - bMax);\n if (d === 0) return cur;\n const next = cur.slice();\n next[i] = cur[i] + d;\n next[i + 1] = cur[i + 1] - d;\n return next;\n },\n [panels, containerPx],\n );\n\n // ----- pointer drag on a bar (index = bar between panel i and i+1) -----\n const dragRef = useRef<{ index: number; startPos: number; startSizes: number[] } | null>(null);\n\n const onPointerDownBar = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>, index: number) => {\n e.preventDefault();\n const el = containerRef.current;\n const rect = el?.getBoundingClientRect();\n const px = rect ? (layout === \"horizontal\" ? rect.width : rect.height) : containerPx;\n dragRef.current = {\n index,\n startPos: layout === \"horizontal\" ? e.clientX : e.clientY,\n startSizes: sizesRef.current.slice(),\n };\n try {\n (e.currentTarget as Element).setPointerCapture?.(e.pointerId);\n } catch {\n /* jsdom / unsupported */\n }\n const move = (ev: PointerEvent) => {\n const drag = dragRef.current;\n if (!drag || !px) return;\n const pos = layout === \"horizontal\" ? ev.clientX : ev.clientY;\n const deltaPct = ((pos - drag.startPos) / px) * 100;\n // Re-base from the drag-start sizes each move so the delta is absolute.\n sizesRef.current = drag.startSizes;\n const next = applyDelta(drag.index, deltaPct);\n sizesRef.current = next;\n setSizes(next);\n onResize?.(next);\n };\n const up = () => {\n dragRef.current = null;\n document.removeEventListener(\"pointermove\", move);\n document.removeEventListener(\"pointerup\", up);\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n onResizeEnd?.(sizesRef.current);\n };\n document.addEventListener(\"pointermove\", move);\n document.addEventListener(\"pointerup\", up);\n document.body.style.cursor = layout === \"horizontal\" ? \"col-resize\" : \"row-resize\";\n document.body.style.userSelect = \"none\";\n },\n [layout, containerPx, applyDelta, onResize, onResizeEnd],\n );\n\n // Arrow-key resize on a focused separator (5% per press).\n const STEP = 5;\n const onKeyDownBar = useCallback(\n (e: ReactKeyboardEvent<HTMLDivElement>, index: number) => {\n const decKey = layout === \"horizontal\" ? \"ArrowLeft\" : \"ArrowUp\";\n const incKey = layout === \"horizontal\" ? \"ArrowRight\" : \"ArrowDown\";\n let delta = 0;\n if (e.key === incKey) delta = STEP;\n else if (e.key === decKey) delta = -STEP;\n else return;\n e.preventDefault();\n const next = applyDelta(index, delta);\n if (next === sizesRef.current) return;\n sizesRef.current = next;\n setSizes(next);\n onResize?.(next);\n onResizeEnd?.(next);\n },\n [layout, applyDelta, onResize, onResizeEnd],\n );\n\n // Collapse / restore panel `panelIdx` toward `dir` by moving its size to/from\n // the neighbor on the opposite side of the bar.\n const collapseToggle = useCallback(\n (barIndex: number, panelIdx: number) => {\n const cur = sizesRef.current;\n const neighbor = panelIdx === barIndex ? barIndex + 1 : barIndex;\n if (neighbor < 0 || neighbor >= cur.length) return;\n const next = cur.slice();\n if (cur[panelIdx] > 0.001) {\n collapsedMemo.current[panelIdx] = cur[panelIdx];\n next[neighbor] += cur[panelIdx];\n next[panelIdx] = 0;\n } else {\n const restore = collapsedMemo.current[panelIdx] ?? 100 / cur.length;\n const give = Math.min(restore, next[neighbor]);\n next[panelIdx] = give;\n next[neighbor] -= give;\n collapsedMemo.current[panelIdx] = undefined;\n }\n sizesRef.current = next;\n setSizes(next);\n onResize?.(next);\n onResizeEnd?.(next);\n },\n [onResize, onResizeEnd],\n );\n\n return (\n <div\n ref={setRefs}\n className={cx(\"klun-splitter\", `klun-splitter--${layout}`, className)}\n {...props}\n >\n {panels.map((panel, i) => {\n const {\n defaultSize: _ds,\n size: _s,\n min: _min,\n max: _max,\n collapsible: _col,\n resizable: _res,\n style: panelStyle,\n ...panelRest\n } = panel.props;\n const pct = sizes[i] ?? 0;\n const isLast = i === panels.length - 1;\n const resizable = panel.props.resizable !== false;\n const collapsible = normalizeCollapsible(panel.props.collapsible);\n\n return (\n <SplitterFragment key={panel.key ?? i}>\n <SplitterPanel\n {...panelRest}\n style={{ flexBasis: `${pct}%`, ...panelStyle }}\n >\n {panel.props.children}\n </SplitterPanel>\n {!isLast && (\n <div\n className={cx(\n \"klun-splitter__bar\",\n !resizable && \"klun-splitter__bar--disabled\",\n )}\n role={resizable ? \"separator\" : undefined}\n aria-orientation={resizable ? layout : undefined}\n aria-valuenow={resizable ? Math.round(pct) : undefined}\n data-resizable={resizable ? \"true\" : \"false\"}\n tabIndex={resizable ? 0 : undefined}\n onPointerDown={resizable ? (e) => onPointerDownBar(e, i) : undefined}\n onKeyDown={resizable ? (e) => onKeyDownBar(e, i) : undefined}\n >\n <span className=\"klun-splitter__bar-line\" aria-hidden=\"true\" />\n {collapsible.start && (\n <button\n type=\"button\"\n className=\"klun-splitter__collapse klun-splitter__collapse--start\"\n aria-label=\"Collapse start panel\"\n tabIndex={-1}\n onPointerDown={(e) => e.stopPropagation()}\n onClick={() => collapseToggle(i, i)}\n >\n <span aria-hidden=\"true\">\n {layout === \"horizontal\" ? \"‹\" : \"‹\"}\n </span>\n </button>\n )}\n {collapsible.end && (\n <button\n type=\"button\"\n className=\"klun-splitter__collapse klun-splitter__collapse--end\"\n aria-label=\"Collapse end panel\"\n tabIndex={-1}\n onPointerDown={(e) => e.stopPropagation()}\n onClick={() => collapseToggle(i, i + 1)}\n >\n <span aria-hidden=\"true\">\n {layout === \"horizontal\" ? \"›\" : \"›\"}\n </span>\n </button>\n )}\n </div>\n )}\n </SplitterFragment>\n );\n })}\n </div>\n );\n});\nSplitterRoot.displayName = \"Splitter\";\n\n// Plain pass-through fragment wrapper so keys live on a stable host.\nfunction SplitterFragment({ children }: { children: ReactNode }) {\n return <>{children}</>;\n}\n\nfunction normalizeCollapsible(\n collapsible: SplitterPanelProps[\"collapsible\"],\n): { start: boolean; end: boolean } {\n if (!collapsible) return { start: false, end: false };\n if (collapsible === true) return { start: true, end: true };\n return { start: !!collapsible.start, end: !!collapsible.end };\n}\n\nfunction allPercentage(panels: PanelEl[]): boolean {\n return panels.every((p) => {\n const v = p.props.size ?? p.props.defaultSize;\n return v == null || (typeof v === \"string\" && v.trim().endsWith(\"%\"));\n });\n}\n\ntype SplitterComponent = typeof SplitterRoot & { Panel: typeof SplitterPanel };\n\nexport const Splitter = SplitterRoot as SplitterComponent;\nSplitter.Panel = SplitterPanel;\n","import { Fragment, forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface BreadcrumbItem {\n label: ReactNode;\n icon?: ReactNode;\n href?: string;\n}\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {\n items: BreadcrumbItem[];\n}\n\n/** Klun UI Breadcrumb — path navigation with chevron separators. */\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(function Breadcrumb(\n { items = [], className, ...props },\n ref,\n) {\n return (\n <nav ref={ref} className={cx(\"klun-breadcrumb\", className)} {...props}>\n {items.map((it, i) => {\n const last = i === items.length - 1;\n return (\n <Fragment key={i}>\n <span className=\"klun-breadcrumb__item\" aria-current={last ? \"page\" : undefined}>\n {it.icon ? <span className=\"klun-breadcrumb__icon\">{it.icon}</span> : null}\n {it.label}\n </span>\n {!last ? (\n <span className=\"klun-breadcrumb__separator\" aria-hidden=\"true\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" aria-hidden>\n <path\n d=\"M7 4.5l4 4.5-4 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n ) : null}\n </Fragment>\n );\n })}\n </nav>\n );\n});\n\nBreadcrumb.displayName = \"Breadcrumb\";\n","import { forwardRef, type HTMLAttributes, type ReactNode, type Ref } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type DividerVariant = \"line\" | \"text\" | \"left\" | \"right\";\n\nexport interface DividerProps extends HTMLAttributes<HTMLElement> {\n variant?: DividerVariant;\n children?: ReactNode;\n}\n\n/** Klun UI Divider — horizontal rule, optionally with centered uppercase text. */\nexport const Divider = forwardRef<HTMLElement, DividerProps>(function Divider(\n { variant = \"line\", className, children, ...props },\n ref,\n) {\n if (variant !== \"line\" && children != null) {\n return (\n <div\n ref={ref as Ref<HTMLDivElement>}\n className={cx(\"klun-divider\", `klun-divider--${variant}`, className)}\n {...props}\n >\n {variant !== \"left\" ? <span className=\"klun-divider__line\" /> : null}\n <span className=\"klun-divider__label\">{children}</span>\n {variant !== \"right\" ? <span className=\"klun-divider__line\" /> : null}\n </div>\n );\n }\n return (\n <hr\n ref={ref as Ref<HTMLHRElement>}\n className={cx(\"klun-divider\", \"klun-divider--line\", className)}\n {...props}\n />\n );\n});\n\nDivider.displayName = \"Divider\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useMappedSize } from \"../config/ConfigProvider\";\n\nexport type HorizontalFilterSize = \"small\" | \"medium\";\n\nexport interface HorizontalFilterItem {\n value: string;\n label: ReactNode;\n count?: number;\n icon?: ReactNode;\n}\n\nexport interface HorizontalFilterProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n items: HorizontalFilterItem[];\n value?: string;\n onChange?: (value: string) => void;\n size?: HorizontalFilterSize;\n}\n\n/** HorizontalFilter — scrollable filter-pill row with active state + counts. */\nexport const HorizontalFilter = forwardRef<HTMLDivElement, HorizontalFilterProps>(function HorizontalFilter(\n { items = [], value, onChange, size: sizeProp, className, ...props },\n ref,\n) {\n const size = useMappedSize(sizeProp, { small: \"small\", medium: \"medium\", large: \"medium\" }, \"medium\");\n return (\n <div\n ref={ref}\n className={cx(\"klun-horizontal-filter\", `klun-horizontal-filter--${size}`, className)}\n {...props}\n >\n {items.map((it, i) => {\n const active = it.value === value;\n return (\n <button\n key={it.value ?? i}\n type=\"button\"\n onClick={() => onChange && onChange(it.value)}\n className=\"klun-horizontal-filter__item\"\n data-active={active || undefined}\n aria-selected={active}\n >\n {it.icon ? <span className=\"klun-horizontal-filter__icon\">{it.icon}</span> : null}\n {it.label}\n {it.count != null ? (\n <span className=\"klun-horizontal-filter__count\">{it.count}</span>\n ) : null}\n </button>\n );\n })}\n </div>\n );\n});\n\nHorizontalFilter.displayName = \"HorizontalFilter\";\n","import {\n forwardRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport type MenuItem =\n | { key: string; label: ReactNode; icon?: ReactNode; badge?: ReactNode; disabled?: boolean; danger?: boolean }\n | { key: string; label: ReactNode; icon?: ReactNode; children: MenuItem[] }\n | { type: \"group\"; label: ReactNode; children: MenuItem[] }\n | { type: \"divider\" };\n\nexport interface MenuProps extends Omit<HTMLAttributes<HTMLElement>, \"onSelect\"> {\n items: MenuItem[];\n selectedKey?: string;\n onSelect?: (key: string, item: MenuItem) => void;\n /** Submenu keys open by default. */\n defaultOpenKeys?: string[];\n /** Icon-only rail mode. */\n collapsed?: boolean;\n}\n\n/** Recursively check whether any descendant carries the selected key. */\nfunction containsKey(children: MenuItem[] | undefined, key: string | undefined): boolean {\n return (children || []).some(\n (c) =>\n (\"key\" in c && c.key === key) ||\n (\"children\" in c && Array.isArray(c.children) && containsKey(c.children, key)),\n );\n}\n\n/**\n * Klun UI Menu — vertical navigation menu with groups, icons, badges and\n * collapsible submenus. Controlled via `selectedKey`/`onSelect`.\n */\nexport const Menu = forwardRef<HTMLElement, MenuProps>(function Menu(\n { items = [], selectedKey, onSelect, defaultOpenKeys = [], collapsed = false, className, ...props },\n ref,\n) {\n const [openKeys, setOpenKeys] = useState<Set<string>>(() => new Set(defaultOpenKeys));\n const toggleOpen = (k: string) =>\n setOpenKeys((s) => {\n const n = new Set(s);\n if (n.has(k)) n.delete(k);\n else n.add(k);\n return n;\n });\n\n const Row = ({ item, depth }: { item: Extract<MenuItem, { key: string }>; depth: number }) => {\n const active = item.key != null && item.key === selectedKey;\n const isSub = \"children\" in item && Array.isArray(item.children);\n const isOpen = openKeys.has(item.key);\n const subActive = isSub && containsKey((item as { children: MenuItem[] }).children, selectedKey);\n const disabled = \"disabled\" in item ? item.disabled : false;\n const danger = \"danger\" in item ? item.danger : false;\n const badge = \"badge\" in item ? item.badge : undefined;\n\n return (\n <>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => {\n if (disabled) return;\n if (isSub) toggleOpen(item.key);\n else onSelect?.(item.key, item);\n }}\n aria-current={active ? \"page\" : undefined}\n aria-expanded={isSub ? isOpen : undefined}\n title={collapsed ? (typeof item.label === \"string\" ? item.label : undefined) : undefined}\n data-active={active ? \"true\" : undefined}\n data-sub-active={subActive ? \"true\" : undefined}\n data-danger={danger ? \"true\" : undefined}\n className=\"klun-menu__row\"\n style={collapsed ? undefined : ({ [\"--klun-menu-indent\"]: `${12 + depth * 16}px` } as CSSProperties)}\n >\n {item.icon ? (\n <span className=\"klun-menu__icon\">{item.icon}</span>\n ) : depth > 0 && !collapsed ? (\n <span className=\"klun-menu__bullet\" />\n ) : null}\n {!collapsed ? <span className=\"klun-menu__label\">{item.label}</span> : null}\n {!collapsed && badge != null ? <span className=\"klun-menu__badge\">{badge}</span> : null}\n {!collapsed && isSub ? (\n <i className=\"klun-menu__caret ri-arrow-right-s-line\" data-open={isOpen ? \"true\" : undefined} />\n ) : null}\n </button>\n {isSub && isOpen && !collapsed\n ? (item as { children: MenuItem[] }).children.map((c, i) => (\n <Node key={\"key\" in c ? (c.key ?? i) : i} item={c} depth={depth + 1} />\n ))\n : null}\n </>\n );\n };\n\n const Node = ({ item, depth }: { item: MenuItem; depth: number }) => {\n if (\"type\" in item && item.type === \"divider\") return <div className=\"klun-menu__divider\" />;\n if (\"type\" in item && item.type === \"group\")\n return (\n <div className=\"klun-menu__group\" data-nested={depth ? \"true\" : undefined}>\n {!collapsed ? <div className=\"klun-menu__group-label\">{item.label}</div> : null}\n {(item.children || []).map((c, i) => (\n <Node key={\"key\" in c ? (c.key ?? i) : i} item={c} depth={depth} />\n ))}\n </div>\n );\n return <Row item={item as Extract<MenuItem, { key: string }>} depth={depth} />;\n };\n\n return (\n <nav\n ref={ref}\n className={cx(\"klun-menu\", collapsed && \"klun-menu--collapsed\", className)}\n {...props}\n >\n {items.map((it, i) => (\n <Node key={\"key\" in it ? (it.key ?? i) : i} item={it} depth={0} />\n ))}\n </nav>\n );\n});\n\nMenu.displayName = \"Menu\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, \"onChange\"> {\n page?: number;\n total?: number;\n onChange?: (page: number) => void;\n /** Page numbers shown either side of the current page. */\n siblings?: number;\n}\n\ninterface CellProps {\n children: ReactNode;\n active?: boolean;\n disabled?: boolean;\n onClick?: () => void;\n aria?: string;\n}\n\nfunction Cell({ children, active, disabled, onClick, aria }: CellProps) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n aria-label={aria}\n data-active={active ? \"true\" : undefined}\n className=\"klun-pagination__cell\"\n >\n {children}\n </button>\n );\n}\n\n/** Klun UI Pagination — prev/next + numbered page cells with ellipsis. */\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(function Pagination(\n { page = 1, total = 1, onChange, siblings = 1, className, ...props },\n ref,\n) {\n const { pagination } = useLocale();\n const cells: (number | \"…\")[] = (() => {\n const out: (number | \"…\")[] = [];\n const push = (v: number | \"…\") => out.push(v);\n const start = Math.max(2, page - siblings);\n const end = Math.min(total - 1, page + siblings);\n push(1);\n if (start > 2) push(\"…\");\n for (let i = start; i <= end; i++) push(i);\n if (end < total - 1) push(\"…\");\n if (total > 1) push(total);\n return out;\n })();\n\n return (\n <nav ref={ref} className={cx(\"klun-pagination\", className)} {...props}>\n <Cell aria={pagination.previous} disabled={page <= 1} onClick={() => onChange?.(page - 1)}>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden>\n <path\n d=\"M12 6l-4 4 4 4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </Cell>\n {cells.map((c, i) =>\n c === \"…\" ? (\n <span key={i} className=\"klun-pagination__ellipsis\">\n …\n </span>\n ) : (\n <Cell key={i} active={c === page} onClick={() => onChange?.(c)}>\n {c}\n </Cell>\n ),\n )}\n <Cell aria={pagination.next} disabled={page >= total} onClick={() => onChange?.(page + 1)}>\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden>\n <path\n d=\"M8 6l4 4-4 4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </Cell>\n </nav>\n );\n});\n\nPagination.displayName = \"Pagination\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface SegmentItem {\n value: string;\n label: ReactNode;\n icon?: ReactNode;\n}\n\nexport interface SegmentedControlProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n items: SegmentItem[];\n value?: string;\n onChange?: (value: string) => void;\n}\n\n/** Klun UI SegmentedControl — equal-width segmented toggle. */\nexport const SegmentedControl = forwardRef<HTMLDivElement, SegmentedControlProps>(\n function SegmentedControl({ items = [], value, onChange, className, ...props }, ref) {\n const active = value ?? items[0]?.value;\n return (\n <div ref={ref} role=\"tablist\" className={cx(\"klun-segmented-control\", className)} {...props}>\n {items.map((it) => {\n const on = it.value === active;\n return (\n <button\n key={it.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={on}\n data-active={on ? \"true\" : undefined}\n onClick={() => onChange?.(it.value)}\n className=\"klun-segmented-control__segment\"\n >\n {it.icon ? <span className=\"klun-segmented-control__icon\">{it.icon}</span> : null}\n {it.label}\n </button>\n );\n })}\n </div>\n );\n },\n);\n\nSegmentedControl.displayName = \"SegmentedControl\";\n","import { Fragment, forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface Step {\n label: ReactNode;\n description?: ReactNode;\n}\n\nexport interface StepIndicatorProps extends HTMLAttributes<HTMLDivElement> {\n steps: Step[];\n /** 0-based index of the active step. */\n current?: number;\n}\n\n/** Klun UI StepIndicator — horizontal numbered progress stepper. */\nexport const StepIndicator = forwardRef<HTMLDivElement, StepIndicatorProps>(function StepIndicator(\n { steps = [], current = 0, className, ...props },\n ref,\n) {\n return (\n <div ref={ref} className={cx(\"klun-step-indicator\", className)} {...props}>\n {steps.map((s, i) => {\n const done = i < current;\n const active = i === current;\n const state = done ? \"complete\" : active ? \"active\" : \"upcoming\";\n return (\n <Fragment key={i}>\n <div className=\"klun-step-indicator__step\" data-state={state}>\n <div className=\"klun-step-indicator__marker\">\n {done ? (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path\n d=\"M3.5 8.5l3 3 6-6.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n ) : (\n i + 1\n )}\n </div>\n <div className=\"klun-step-indicator__text\">\n <div className=\"klun-step-indicator__label\">{s.label}</div>\n {s.description ? (\n <div className=\"klun-step-indicator__description\">{s.description}</div>\n ) : null}\n </div>\n </div>\n {i < steps.length - 1 ? (\n <div\n className=\"klun-step-indicator__connector\"\n data-state={i < current ? \"complete\" : \"upcoming\"}\n />\n ) : null}\n </Fragment>\n );\n })}\n </div>\n );\n});\n\nStepIndicator.displayName = \"StepIndicator\";\n","import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface TabItem {\n value: string;\n label: ReactNode;\n icon?: ReactNode;\n badge?: ReactNode;\n}\n\nexport type TabsVariant = \"underline\" | \"pill\";\n\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n items: TabItem[];\n value?: string;\n onChange?: (value: string) => void;\n variant?: TabsVariant;\n}\n\n/** Klun UI Tabs — underline or pill tab bar. */\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(function Tabs(\n { items = [], value, onChange, variant = \"underline\", className, ...props },\n ref,\n) {\n const active = value ?? items[0]?.value;\n return (\n <div\n ref={ref}\n role=\"tablist\"\n className={cx(\"klun-tabs\", `klun-tabs--${variant}`, className)}\n {...props}\n >\n {items.map((it) => {\n const on = it.value === active;\n return (\n <button\n key={it.value}\n type=\"button\"\n role=\"tab\"\n aria-selected={on}\n data-active={on ? \"true\" : undefined}\n onClick={() => onChange?.(it.value)}\n className=\"klun-tabs__tab\"\n >\n {it.icon ? <span className=\"klun-tabs__icon\">{it.icon}</span> : null}\n {it.label}\n {it.badge != null ? <span className=\"klun-tabs__badge\">{it.badge}</span> : null}\n </button>\n );\n })}\n </div>\n );\n});\n\nTabs.displayName = \"Tabs\";\n","import {\n Fragment,\n forwardRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface WizardStep {\n title?: ReactNode;\n content?: ReactNode;\n}\n\nexport interface WizardProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /** Ordered steps; each provides a rail `title` and a body `content`. */\n steps?: WizardStep[];\n /** Controlled active step index (0-based). When set, the component is controlled. */\n current?: number;\n /** Uncontrolled initial active step index. Default `0`. */\n defaultCurrent?: number;\n /** Fired with the new index whenever the active step changes (Back/Next). */\n onStepChange?: (index: number) => void;\n /** Fired when Finish is pressed on the last step. */\n onFinish?: () => void;\n /** Rail layout. Default `\"horizontal\"`. */\n orientation?: \"horizontal\" | \"vertical\";\n}\n\n/**\n * Wizard — multi-step flow container: numbered step rail + body + footer with\n * Back / Next / Finish. Controlled (`current`) or uncontrolled (`defaultCurrent`)\n * active step. Visual state is driven entirely through CSS classes / `data-*`.\n */\nexport const Wizard = forwardRef<HTMLDivElement, WizardProps>(function Wizard(\n {\n steps = [],\n current,\n defaultCurrent = 0,\n onStepChange,\n onFinish,\n orientation = \"horizontal\",\n className,\n ...props\n },\n ref,\n) {\n const isControlled = current !== undefined;\n const [internal, setInternal] = useState(defaultCurrent);\n const idx = isControlled ? (current as number) : internal;\n\n const go = (n: number) => {\n const c = Math.max(0, Math.min(steps.length - 1, n));\n if (!isControlled) setInternal(c);\n onStepChange?.(c);\n };\n\n const isLast = idx >= steps.length - 1;\n\n return (\n <div\n ref={ref}\n className={cx(\"klun-wizard\", `klun-wizard--${orientation}`, className)}\n {...props}\n >\n <div className=\"klun-wizard__rail\">\n {steps.map((s, i) => {\n const done = i < idx;\n const active = i === idx;\n const last = i === steps.length - 1;\n const state = done ? \"complete\" : active ? \"active\" : \"upcoming\";\n return (\n <Fragment key={i}>\n <div className=\"klun-wizard__step\" data-state={state}>\n <span className=\"klun-wizard__marker\" aria-hidden>\n {done ? \"✓\" : i + 1}\n </span>\n <span className=\"klun-wizard__title\">{s.title}</span>\n </div>\n {!last ? (\n <span\n className=\"klun-wizard__connector\"\n data-state={i < idx ? \"complete\" : \"upcoming\"}\n />\n ) : null}\n </Fragment>\n );\n })}\n </div>\n\n <div className=\"klun-wizard__body\">{steps[idx] ? steps[idx].content : null}</div>\n\n <div className=\"klun-wizard__footer\">\n <button\n type=\"button\"\n className=\"klun-wizard__nav\"\n onClick={() => go(idx - 1)}\n disabled={idx === 0}\n >\n Back\n </button>\n {!isLast ? (\n <button\n type=\"button\"\n className=\"klun-wizard__nav klun-wizard__nav--primary\"\n onClick={() => go(idx + 1)}\n >\n Next\n </button>\n ) : (\n <button\n type=\"button\"\n className=\"klun-wizard__nav klun-wizard__nav--primary\"\n onClick={() => onFinish?.()}\n >\n Finish\n </button>\n )}\n </div>\n </div>\n );\n});\n\nWizard.displayName = \"Wizard\";\n","import {\n forwardRef,\n useEffect,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type CSSProperties,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\nimport { fmt } from \"../config/locales\";\n\nexport interface CommandItem {\n id: string;\n label: ReactNode;\n icon?: ReactNode;\n shortcut?: ReactNode;\n}\n\nexport interface CommandGroup {\n label: ReactNode;\n items: CommandItem[];\n}\n\nexport interface CommandMenuProps extends Omit<HTMLAttributes<HTMLDivElement>, \"onSelect\" | \"style\"> {\n open: boolean;\n onClose?: () => void;\n groups: CommandGroup[];\n placeholder?: string;\n onSelect?: (item: CommandItem) => void;\n style?: CSSProperties;\n}\n\n/** Klun UI CommandMenu — ⌘K search palette with grouped, filterable items. */\nexport const CommandMenu = forwardRef<HTMLDivElement, CommandMenuProps>(function CommandMenu(\n {\n open,\n onClose,\n groups = [],\n placeholder,\n onSelect,\n className,\n style,\n ...props\n },\n ref,\n) {\n const { commandMenu } = useLocale();\n const [q, setQ] = useState(\"\");\n\n useEffect(() => {\n if (open) setQ(\"\");\n }, [open]);\n\n if (!open) return null;\n\n const filtered = groups\n .map((g) => ({\n ...g,\n items: g.items.filter((it) =>\n String(it.label).toLowerCase().includes(q.toLowerCase()),\n ),\n }))\n .filter((g) => g.items.length);\n\n return (\n <div className=\"klun-command-menu\" onClick={onClose}>\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n onClick={(e) => e.stopPropagation()}\n className={cx(\"klun-command-menu__dialog\", className)}\n style={style}\n {...props}\n >\n <div className=\"klun-command-menu__search\">\n <i className=\"ri-search-line klun-command-menu__search-icon\" />\n <input\n autoFocus\n value={q}\n onChange={(e) => setQ(e.target.value)}\n placeholder={placeholder ?? commandMenu.placeholder}\n className=\"klun-command-menu__input\"\n />\n <span className=\"klun-command-menu__esc\">{commandMenu.esc}</span>\n </div>\n <div className=\"klun-command-menu__list\">\n {filtered.length === 0 ? (\n <div className=\"klun-command-menu__empty\">{fmt(commandMenu.noResults, { query: q })}</div>\n ) : (\n filtered.map((g) => (\n <div key={String(g.label)} className=\"klun-command-menu__group\">\n <div className=\"klun-command-menu__group-label\">{g.label}</div>\n {g.items.map((it) => (\n <button\n key={it.id}\n type=\"button\"\n onClick={() => {\n onSelect?.(it);\n onClose?.();\n }}\n className=\"klun-command-menu__item\"\n >\n {it.icon ? <span className=\"klun-command-menu__icon\">{it.icon}</span> : null}\n <span className=\"klun-command-menu__label\">{it.label}</span>\n {it.shortcut ? (\n <span className=\"klun-command-menu__shortcut\">{it.shortcut}</span>\n ) : null}\n </button>\n ))}\n </div>\n ))\n )}\n </div>\n </div>\n </div>\n );\n});\n\nCommandMenu.displayName = \"CommandMenu\";\n","import { useEffect, useRef, useState, type ReactNode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { cx } from \"../../utils/cx\";\n\nexport type ConfirmIntent = \"primary\" | \"danger\" | \"warning\";\n\nexport interface ConfirmRequireInput {\n label?: ReactNode;\n placeholder?: string;\n type?: string;\n /** If set, the confirm button is disabled until the typed value equals this. */\n match?: string;\n}\n\nexport interface ConfirmOptions {\n title?: ReactNode;\n description?: ReactNode;\n icon?: string;\n intent?: ConfirmIntent;\n confirmText?: ReactNode;\n cancelText?: ReactNode;\n requireInput?: ConfirmRequireInput;\n /** Async handler; the dialog shows a spinner until it settles, stays open if it rejects. */\n onConfirm?: (value?: string) => void | Promise<void>;\n}\n\nexport type ConfirmResult = false | true | { confirmed: true; value: string };\n\nconst INTENT_ICON: Record<ConfirmIntent, string> = {\n primary: \"ri-question-line\",\n danger: \"ri-error-warning-line\",\n warning: \"ri-alert-line\",\n};\n\ninterface ConfirmDialogProps {\n opts: ConfirmOptions;\n onClose: (result: ConfirmResult) => void;\n}\n\nfunction ConfirmDialog({ opts, onClose }: ConfirmDialogProps) {\n const {\n title = \"Are you sure?\",\n description,\n icon,\n intent = \"primary\",\n confirmText = \"Confirm\",\n cancelText = \"Cancel\",\n requireInput,\n onConfirm,\n } = opts;\n\n const [val, setVal] = useState(\"\");\n const [loading, setLoading] = useState(false);\n const [visible, setVisible] = useState(false);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const matchOk = !requireInput || !requireInput.match || val === requireInput.match;\n\n const finish = (result: ConfirmResult) => {\n setVisible(false);\n setTimeout(() => onClose(result), 160);\n };\n\n const confirm = async () => {\n if (!matchOk) return;\n const payload: ConfirmResult = requireInput ? { confirmed: true, value: val } : true;\n if (onConfirm) {\n try {\n setLoading(true);\n await onConfirm(requireInput ? val : undefined);\n } catch {\n setLoading(false);\n return; // keep open on failure\n }\n }\n finish(payload);\n };\n\n useEffect(() => {\n const raf = requestAnimationFrame(() => setVisible(true));\n const t = setTimeout(() => {\n if (requireInput && inputRef.current) inputRef.current.focus();\n }, 60);\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") finish(false);\n };\n document.addEventListener(\"keydown\", onKey);\n return () => {\n cancelAnimationFrame(raf);\n clearTimeout(t);\n document.removeEventListener(\"keydown\", onKey);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const confirmDisabled = !matchOk || loading;\n\n return (\n <div\n role=\"presentation\"\n className=\"klun-confirm\"\n data-visible={visible || undefined}\n onMouseDown={(e) => {\n if (e.target === e.currentTarget) finish(false);\n }}\n >\n <div\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-label={typeof title === \"string\" ? title : undefined}\n className={cx(\"klun-confirm__dialog\", `klun-confirm__dialog--${intent}`)}\n data-visible={visible || undefined}\n >\n <div className=\"klun-confirm__header\">\n <span className=\"klun-confirm__icon\" aria-hidden>\n <i className={icon || INTENT_ICON[intent]} />\n </span>\n <div className=\"klun-confirm__heading\">\n <div className=\"klun-confirm__title\">{title}</div>\n {description ? (\n <div className=\"klun-confirm__description\">{description}</div>\n ) : null}\n </div>\n </div>\n\n {requireInput ? (\n <div className=\"klun-confirm__field\">\n {requireInput.label ? (\n <label className=\"klun-confirm__label\">{requireInput.label}</label>\n ) : null}\n <input\n ref={inputRef}\n type={requireInput.type || \"text\"}\n value={val}\n placeholder={requireInput.placeholder}\n className=\"klun-confirm__input\"\n onChange={(e) => setVal(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && matchOk) confirm();\n }}\n />\n </div>\n ) : null}\n\n <div className=\"klun-confirm__actions\">\n <button\n type=\"button\"\n className=\"klun-confirm__cancel\"\n onClick={() => finish(false)}\n disabled={loading}\n >\n {cancelText}\n </button>\n <button\n type=\"button\"\n className=\"klun-confirm__confirm\"\n onClick={confirm}\n disabled={confirmDisabled}\n >\n {loading ? (\n <i className=\"ri-loader-4-line klun-confirm__spinner\" aria-hidden />\n ) : null}\n {confirmText}\n </button>\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * Klun UI Confirm — imperative confirmation dialog. Returns a Promise that resolves to\n * `false` on cancel, `true` (or `{ confirmed, value }` when `requireInput` is set) on confirm.\n *\n * const ok = await Confirm({ title: \"Destroy server?\", intent: \"danger\", confirmText: \"Destroy\" });\n * if (ok) destroy();\n *\n * Pass an async `onConfirm` to keep the dialog in a loading state until it resolves\n * (and open if it rejects). Use `requireInput` to force the user to type a value to proceed.\n */\nexport function Confirm(opts: ConfirmOptions = {}): Promise<ConfirmResult> {\n if (typeof document === \"undefined\") return Promise.resolve<ConfirmResult>(false);\n return new Promise<ConfirmResult>((resolve) => {\n const host = document.createElement(\"div\");\n document.body.appendChild(host);\n const root = createRoot(host);\n const close = (result: ConfirmResult) => {\n root.unmount();\n host.remove();\n resolve(result);\n };\n root.render(<ConfirmDialog opts={opts} onClose={close} />);\n });\n}\n","import { forwardRef, type HTMLAttributes, type ReactNode, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport interface DrawerProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\" | \"style\"> {\n open: boolean;\n onClose?: () => void;\n title?: ReactNode;\n side?: \"left\" | \"right\";\n width?: number | string;\n footer?: ReactNode;\n children?: ReactNode;\n style?: CSSProperties;\n}\n\n/** Klun UI Drawer — slide-over panel anchored to an edge. */\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>(function Drawer(\n { open, onClose, title, side = \"right\", width = 400, children, footer, className, style, ...props },\n ref,\n) {\n const { drawer } = useLocale();\n if (!open) return null;\n return (\n <div className={cx(\"klun-drawer\", `klun-drawer--${side}`)} onClick={onClose}>\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n onClick={(e) => e.stopPropagation()}\n className={cx(\"klun-drawer__panel\", className)}\n style={{ width, ...style }}\n {...props}\n >\n <div className=\"klun-drawer__header\">\n <div className=\"klun-drawer__title\">{title}</div>\n <button type=\"button\" onClick={onClose} aria-label={drawer.close} className=\"klun-drawer__close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden>\n <path d=\"M5 5l10 10M15 5L5 15\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n </div>\n <div className=\"klun-drawer__body\">{children}</div>\n {footer ? <div className=\"klun-drawer__footer\">{footer}</div> : null}\n </div>\n </div>\n );\n});\n\nDrawer.displayName = \"Drawer\";\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\n\nexport interface DropdownItem {\n label?: ReactNode;\n icon?: ReactNode;\n shortcut?: ReactNode;\n onClick?: () => void;\n danger?: boolean;\n divider?: boolean;\n}\n\nexport interface DropdownProps extends HTMLAttributes<HTMLSpanElement> {\n trigger: ReactNode;\n items: DropdownItem[];\n align?: \"left\" | \"right\";\n width?: number;\n}\n\n/** Klun UI Dropdown — click-to-open menu anchored to a trigger. */\nexport const Dropdown = forwardRef<HTMLSpanElement, DropdownProps>(function Dropdown(\n { trigger, items = [], align = \"left\", width = 220, className, ...props },\n ref,\n) {\n const [open, setOpen] = useState(false);\n const innerRef = useRef<HTMLSpanElement | null>(null);\n\n useEffect(() => {\n if (!open) return;\n const h = (e: MouseEvent) => {\n if (innerRef.current && !innerRef.current.contains(e.target as Node)) setOpen(false);\n };\n const k = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n document.addEventListener(\"keydown\", k);\n return () => {\n document.removeEventListener(\"mousedown\", h);\n document.removeEventListener(\"keydown\", k);\n };\n }, [open]);\n\n const setRefs = (node: HTMLSpanElement | null) => {\n innerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n };\n\n return (\n <span ref={setRefs} className={cx(\"klun-dropdown\", className)} {...props}>\n <span className=\"klun-dropdown__trigger\" onClick={() => setOpen((o) => !o)}>\n {trigger}\n </span>\n {open ? (\n <div\n role=\"menu\"\n className={cx(\"klun-dropdown__menu\", `klun-dropdown__menu--${align}`)}\n style={{ width }}\n >\n {items.map((it, i) =>\n it.divider ? (\n <div key={i} className=\"klun-dropdown__divider\" />\n ) : (\n <button\n key={i}\n type=\"button\"\n onClick={() => {\n it.onClick?.();\n setOpen(false);\n }}\n className={cx(\"klun-dropdown__item\", it.danger && \"klun-dropdown__item--danger\")}\n >\n {it.icon ? <span className=\"klun-dropdown__icon\">{it.icon}</span> : null}\n <span className=\"klun-dropdown__label\">{it.label}</span>\n {it.shortcut ? <span className=\"klun-dropdown__shortcut\">{it.shortcut}</span> : null}\n </button>\n ),\n )}\n </div>\n ) : null}\n </span>\n );\n});\n\nDropdown.displayName = \"Dropdown\";\n","import { forwardRef, useEffect, type HTMLAttributes, type ReactNode, type CSSProperties } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\" | \"style\"> {\n open: boolean;\n onClose?: () => void;\n title?: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n footer?: ReactNode;\n width?: number | string;\n /** Show the close button + allow Esc/backdrop close. Default true. */\n closable?: boolean;\n /** Close when the dimmed backdrop is clicked. Default true. */\n closeOnBackdrop?: boolean;\n children?: ReactNode;\n style?: CSSProperties;\n}\n\n/** Klun UI Modal — centered dialog with dimmed backdrop. Controlled via `open` / `onClose`. */\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(function Modal(\n { open, onClose, title, description, icon, children, footer, width = 440, closable = true, closeOnBackdrop = true, className, style, ...props },\n ref,\n) {\n const { modal } = useLocale();\n useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && closable) onClose?.();\n };\n document.addEventListener(\"keydown\", onKey);\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", onKey);\n document.body.style.overflow = prev;\n };\n }, [open, closable, onClose]);\n if (!open) return null;\n return (\n <div className=\"klun-modal\" onClick={closeOnBackdrop && closable ? onClose : undefined}>\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n onClick={(e) => e.stopPropagation()}\n className={cx(\"klun-modal__dialog\", className)}\n style={{ width, ...style }}\n {...props}\n >\n {title || icon ? (\n <div className=\"klun-modal__header\">\n {icon ? <div className=\"klun-modal__icon\">{icon}</div> : null}\n <div className=\"klun-modal__heading\">\n {title ? <div className=\"klun-modal__title\">{title}</div> : null}\n {description ? <div className=\"klun-modal__description\">{description}</div> : null}\n </div>\n {closable ? (\n <button type=\"button\" onClick={onClose} aria-label={modal.close} className=\"klun-modal__close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" aria-hidden>\n <path d=\"M5 5l10 10M15 5L5 15\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n </button>\n ) : null}\n </div>\n ) : null}\n {children ? <div className=\"klun-modal__body\">{children}</div> : null}\n {footer ? <div className=\"klun-modal__footer\">{footer}</div> : null}\n </div>\n </div>\n );\n});\n\nModal.displayName = \"Modal\";\n","import {\n forwardRef,\n useEffect,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport { useLocale } from \"../config/ConfigProvider\";\n\nexport interface PopconfirmProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"title\"> {\n title?: ReactNode;\n description?: ReactNode;\n /** Leading icon (Remix class). Pass \"\" to hide. */\n icon?: string;\n status?: \"warning\" | \"error\" | \"information\" | \"success\";\n okText?: ReactNode;\n cancelText?: ReactNode;\n /** Red confirm button for destructive actions. */\n okDanger?: boolean;\n placement?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** May return a promise; the confirm button shows a spinner until it resolves. */\n onConfirm?: () => void | Promise<any>;\n onCancel?: () => void;\n disabled?: boolean;\n /** The trigger element. */\n children: ReactNode;\n}\n\n/** Klun UI Popconfirm — confirmation bubble anchored to its trigger child. */\nexport const Popconfirm = forwardRef<HTMLSpanElement, PopconfirmProps>(function Popconfirm(\n {\n title: titleProp,\n description,\n icon = \"ri-error-warning-fill\",\n status = \"warning\",\n okText: okTextProp,\n cancelText: cancelTextProp,\n okDanger = false,\n placement = \"top\",\n onConfirm,\n onCancel,\n disabled = false,\n className,\n children,\n ...props\n },\n ref,\n) {\n const { popconfirm } = useLocale();\n const title = titleProp ?? popconfirm.title;\n const okText = okTextProp ?? popconfirm.confirm;\n const cancelText = cancelTextProp ?? popconfirm.cancel;\n const [open, setOpen] = useState(false);\n const [busy, setBusy] = useState(false);\n const innerRef = useRef<HTMLSpanElement | null>(null);\n\n useEffect(() => {\n if (!open) return;\n const h = (e: MouseEvent) => {\n if (innerRef.current && !innerRef.current.contains(e.target as Node)) setOpen(false);\n };\n const k = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setOpen(false);\n };\n document.addEventListener(\"mousedown\", h);\n document.addEventListener(\"keydown\", k);\n return () => {\n document.removeEventListener(\"mousedown\", h);\n document.removeEventListener(\"keydown\", k);\n };\n }, [open]);\n\n const setRefs = (node: HTMLSpanElement | null) => {\n innerRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n };\n\n const confirm = async () => {\n try {\n setBusy(true);\n await onConfirm?.();\n setOpen(false);\n } finally {\n setBusy(false);\n }\n };\n const cancel = () => {\n onCancel?.();\n setOpen(false);\n };\n\n return (\n <span ref={setRefs} className={cx(\"klun-popconfirm\", className)} {...props}>\n <span\n className=\"klun-popconfirm__trigger\"\n onClick={\n disabled\n ? undefined\n : (e) => {\n e.stopPropagation();\n setOpen((o) => !o);\n }\n }\n >\n {children}\n </span>\n {open ? (\n <div\n role=\"dialog\"\n className={cx(\"klun-popconfirm__bubble\", `klun-popconfirm__bubble--${placement}`)}\n style={{ [\"--klun-popconfirm-tint\" as string]: `var(--klun-state-${status}-base)` }}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"klun-popconfirm__head\">\n {icon ? <i className={cx(\"klun-popconfirm__icon\", icon)} /> : null}\n <div className=\"klun-popconfirm__body\">\n <div className=\"klun-popconfirm__title\">{title}</div>\n {description ? (\n <div className=\"klun-popconfirm__desc\">{description}</div>\n ) : null}\n </div>\n </div>\n <div className=\"klun-popconfirm__actions\">\n <button type=\"button\" className=\"klun-popconfirm__cancel\" onClick={cancel}>\n {cancelText}\n </button>\n <button\n type=\"button\"\n className={cx(\n \"klun-popconfirm__confirm\",\n okDanger && \"klun-popconfirm__confirm--danger\",\n )}\n onClick={confirm}\n disabled={busy}\n >\n {busy ? (\n <i className=\"ri-loader-4-line klun-popconfirm__spinner\" />\n ) : null}\n {okText}\n </button>\n </div>\n </div>\n ) : null}\n </span>\n );\n});\n\nPopconfirm.displayName = \"Popconfirm\";\n"]}
|