@devslab/dds-solid 0.22.1 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.ko.md +49 -3
  2. package/README.md +47 -3
  3. package/dist/assets/{calendar-view-1RO2mtf1.js → calendar-view-BBQGmkJ7.js} +181 -145
  4. package/dist/assets/calendar-view-BBQGmkJ7.js.map +1 -0
  5. package/dist/assets/{choice-DoXiK8nc.js → choice-DPmk9AHn.js} +41 -29
  6. package/dist/assets/choice-DPmk9AHn.js.map +1 -0
  7. package/dist/assets/choice-types-h4YVL8xH.js +24 -0
  8. package/dist/assets/choice-types-h4YVL8xH.js.map +1 -0
  9. package/dist/assets/date-only-0Ldsjp43.js +174 -0
  10. package/dist/assets/date-only-0Ldsjp43.js.map +1 -0
  11. package/dist/assets/direction-BpTqmXs-.js +24 -0
  12. package/dist/assets/direction-BpTqmXs-.js.map +1 -0
  13. package/dist/calendar-view-CZLsC57_.js +481 -0
  14. package/dist/calendar-view-CZLsC57_.js.map +1 -0
  15. package/dist/calendar-view.d.ts +10 -0
  16. package/dist/calendar-view.d.ts.map +1 -1
  17. package/dist/calendar.js +7 -6
  18. package/dist/calendar.js.map +1 -1
  19. package/dist/calendar.server.js +2 -1
  20. package/dist/calendar.server.js.map +1 -1
  21. package/dist/choice-CTNeFOVo.js +403 -0
  22. package/dist/choice-CTNeFOVo.js.map +1 -0
  23. package/dist/choice-types-kSaEnZPr.js +23 -0
  24. package/dist/choice-types-kSaEnZPr.js.map +1 -0
  25. package/dist/combobox.js +1 -1
  26. package/dist/combobox.server.js +1 -1
  27. package/dist/date-only-Bu4UmsTP.js +151 -0
  28. package/dist/date-only-Bu4UmsTP.js.map +1 -0
  29. package/dist/date-only.d.ts +92 -0
  30. package/dist/date-only.d.ts.map +1 -1
  31. package/dist/date-picker.js +51 -50
  32. package/dist/date-picker.js.map +1 -1
  33. package/dist/date-picker.server.js +2 -1
  34. package/dist/date-picker.server.js.map +1 -1
  35. package/dist/date-range-picker.d.ts +41 -0
  36. package/dist/date-range-picker.d.ts.map +1 -0
  37. package/dist/date-range-picker.js +368 -0
  38. package/dist/date-range-picker.js.map +1 -0
  39. package/dist/date-range-picker.server.js +347 -0
  40. package/dist/date-range-picker.server.js.map +1 -0
  41. package/dist/direction-CS85IDNU.js +21 -0
  42. package/dist/direction-CS85IDNU.js.map +1 -0
  43. package/dist/index.d.ts +6 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +193 -176
  46. package/dist/index.js.map +1 -1
  47. package/dist/internal/choice.d.ts +25 -3
  48. package/dist/internal/choice.d.ts.map +1 -1
  49. package/dist/month-picker.d.ts +33 -0
  50. package/dist/month-picker.d.ts.map +1 -0
  51. package/dist/month-picker.js +287 -0
  52. package/dist/month-picker.js.map +1 -0
  53. package/dist/month-picker.server.js +282 -0
  54. package/dist/month-picker.server.js.map +1 -0
  55. package/dist/number-input.d.ts +53 -0
  56. package/dist/number-input.d.ts.map +1 -0
  57. package/dist/number-input.js +267 -0
  58. package/dist/number-input.js.map +1 -0
  59. package/dist/number-input.server.js +237 -0
  60. package/dist/number-input.server.js.map +1 -0
  61. package/dist/pending-action.d.ts +36 -0
  62. package/dist/pending-action.d.ts.map +1 -0
  63. package/dist/segmented-control.d.ts +40 -0
  64. package/dist/segmented-control.d.ts.map +1 -0
  65. package/dist/segmented-control.js +133 -0
  66. package/dist/segmented-control.js.map +1 -0
  67. package/dist/segmented-control.server.js +138 -0
  68. package/dist/segmented-control.server.js.map +1 -0
  69. package/dist/select-picker.js +1 -1
  70. package/dist/select-picker.server.js +1 -1
  71. package/dist/server.js +49 -23
  72. package/dist/server.js.map +1 -1
  73. package/dist/time-only.d.ts +32 -0
  74. package/dist/time-only.d.ts.map +1 -0
  75. package/dist/time-picker-BlMWCQwk.js +113 -0
  76. package/dist/time-picker-BlMWCQwk.js.map +1 -0
  77. package/dist/time-picker.d.ts +34 -0
  78. package/dist/time-picker.d.ts.map +1 -0
  79. package/dist/time-picker.js +2 -0
  80. package/dist/time-picker.server.js +152 -0
  81. package/dist/time-picker.server.js.map +1 -0
  82. package/package.json +44 -4
  83. package/styles.css +31 -1
  84. package/dist/assets/calendar-view-1RO2mtf1.js.map +0 -1
  85. package/dist/assets/choice-DoXiK8nc.js.map +0 -1
  86. package/dist/calendar-view-CTBTPB4T.js +0 -444
  87. package/dist/calendar-view-CTBTPB4T.js.map +0 -1
  88. package/dist/choice-BPMiJlPJ.js +0 -395
  89. package/dist/choice-BPMiJlPJ.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"choice-DoXiK8nc.js","names":["Combobox","C","createListCollection","Select","S","Portal","createEffect","createMemo","createSignal","createUniqueId","For","onCleanup","onMount","Show","untrack","createVirtualizer","defaultRangeExtractor","Range","choiceMessages","choiceWarningsEnabled","validateOptions","ComboboxProps","Choice","props","searchable","id","internal","setInternal","defaultValue","value","label","items","find","item","selectedOption","draft","setDraft","defaultInputValue","inputValue","open","setOpen","highlight","setHighlight","visible","HTMLInputElement","HTMLButtonElement","validation","scroll","setScroll","HTMLDivElement","portalMount","setPortalMount","HTMLElement","closest","ownerDocument","body","composing","pendingRestore","from","to","resolveLabel","blocked","disabled","readOnly","messages","setInput","next","undefined","onInputValueChange","restoreInput","current","setValue","onValueChange","some","console","warn","JSON","stringify","previousSelection","associatedForm","form","getElementById","HTMLFormElement","reset","event","Event","queueMicrotask","defaultPrevented","resetValue","resetLabel","addEventListener","removeEventListener","filterMode","filter","toLocaleLowerCase","includes","collection","itemToString","itemToValue","isItemDisabled","virtual","virtualization","height","configured","itemHeight","Number","isFinite","Math","max","activeIndex","findIndex","virtualizer","count","length","getScrollElement","estimateSize","overscan","enabled","initialRect","width","rangeExtractor","active","range","indexes","push","sort","a","b","opened","scrollToIndex","align","Parts","rows","result","getVirtualItems","map","row","index","start","_","status","loading","error","empty","rootProps","onOpenChange","details","onHighlightChange","highlightedValue","scrollToIndexFn","positioning","placement","const","sameWidth","gutter","strategy","matches","hideWhenDetached","inputProps","selectionBehavior","_$createComponent","Root","_$mergeProps","data-label-placement","labelPlacement","data-has-value","children","when","Label","onClick","focus","Control","Input","aria-label","aria-labelledby","aria-describedby","aria-required","required","placeholder","onCompositionStart","onCompositionEnd","onKeyDown","key","preventDefault","stopPropagation","onBlur","Trigger","_$memo","_$ssr","_tmpl$5","_$ssrHydrationKey","_$escape","clearable","_tmpl$","_$ssrAttribute","clear","_tmpl$2","_$ssrStyleProperty","name","_tmpl$4","onRetry","_tmpl$3","retry","mount","Positioner","Content","style","overflow","_tmpl$6","_$ssrStyle","getTotalSize","position","each","Item","aria-posinset","aria-setsize","top","left","transform","ItemText","description","_tmpl$7"],"sources":["../../src/choice-types.ts","../../src/internal/choice.tsx"],"sourcesContent":["export interface ChoiceOption {\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n}\nexport interface ChoiceMessages {\n open?: string;\n clear?: string;\n loading?: string;\n empty?: string;\n error?: string;\n retry?: string;\n}\nexport type ChoiceVirtualization =\n | false\n | { itemHeight?: number; overscan?: number };\nexport interface ChoiceProps {\n items: ChoiceOption[];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n selectedOption?: ChoiceOption;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n name?: string;\n form?: string;\n id?: string;\n label?: string;\n labelPlacement?: \"outside\" | \"inside\" | \"hidden\";\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n placeholder?: string;\n clearable?: boolean;\n messages?: ChoiceMessages;\n virtualization?: ChoiceVirtualization;\n}\nexport interface ComboboxProps extends ChoiceProps {\n inputValue?: string;\n defaultInputValue?: string;\n onInputValueChange?: (value: string) => void;\n filterMode?: \"local\" | \"external\";\n loading?: boolean;\n error?: string | boolean;\n onRetry?: () => void;\n}\nexport interface SelectPickerProps extends ChoiceProps {}\n\nexport function validateOptions(items: ChoiceOption[]) {\n const ids = new Set<string>();\n for (const item of items) {\n if (!item.value || ids.has(item.value))\n throw new Error(\n `DDS choice: option IDs must be nonempty and unique (${JSON.stringify(item.value)})`,\n );\n ids.add(item.value);\n }\n}\nexport const choiceMessages: Required<ChoiceMessages> = {\n open: \"선택 열기\",\n clear: \"선택 지우기\",\n loading: \"불러오는 중\",\n empty: \"결과 없음\",\n error: \"불러오지 못했습니다\",\n retry: \"다시 시도\",\n};\n\n/** Read the consumer environment at runtime, rather than the library build mode. */\nexport function choiceWarningsEnabled() {\n return (\n (globalThis as { process?: { env?: { NODE_ENV?: string } } }).process?.env\n ?.NODE_ENV !== \"production\"\n );\n}\n","import { Combobox as C, createListCollection } from \"@ark-ui/solid/combobox\";\nimport { Select as S } from \"@ark-ui/solid/select\";\nimport { Portal } from \"solid-js/web\";\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n onCleanup,\n onMount,\n Show,\n untrack,\n} from \"solid-js\";\nimport {\n createVirtualizer,\n defaultRangeExtractor,\n type Range,\n} from \"@tanstack/solid-virtual\";\nimport {\n choiceMessages,\n choiceWarningsEnabled,\n validateOptions,\n type ComboboxProps,\n} from \"../choice-types\";\n\nexport function Choice(props: ComboboxProps & { searchable: boolean }) {\n const id = createUniqueId();\n const [internal, setInternal] = createSignal(props.defaultValue ?? \"\");\n const value = () => props.value ?? internal();\n const label = createMemo(\n () =>\n props.items.find((item) => item.value === value())?.label ??\n (props.selectedOption?.value === value()\n ? props.selectedOption.label\n : value()),\n );\n const [draft, setDraft] = createSignal(props.defaultInputValue ?? label());\n const inputValue = () => props.inputValue ?? draft();\n const [open, setOpen] = createSignal(false),\n [highlight, setHighlight] = createSignal<string | null>(null);\n let visible: HTMLInputElement | HTMLButtonElement | undefined,\n validation: HTMLInputElement | undefined;\n const [scroll, setScroll] = createSignal<HTMLDivElement | null>(null);\n const [portalMount, setPortalMount] = createSignal<HTMLElement>();\n onMount(() => {\n // Preserve the enclosing modal's isolation boundary for nested options.\n if (visible)\n setPortalMount(\n visible.closest<HTMLElement>('[role=\"dialog\"], [role=\"alertdialog\"]') ??\n visible.ownerDocument.body,\n );\n });\n let composing = false;\n let pendingRestore: { from: string; to: string } | null = null;\n const resolveLabel = (id: string) =>\n props.items.find((item) => item.value === id)?.label ??\n (props.selectedOption?.value === id ? props.selectedOption.label : id);\n const blocked = () => props.disabled || props.readOnly;\n const messages = () => ({ ...choiceMessages, ...props.messages });\n const setInput = (next: string) => {\n if (pendingRestore?.from === inputValue() && pendingRestore.to === next)\n return;\n pendingRestore = null;\n if (props.inputValue === undefined) setDraft(next);\n props.onInputValueChange?.(next);\n };\n const restoreInput = (next: string) => {\n const current = inputValue();\n if (next === current) return;\n if (pendingRestore?.from === current && pendingRestore.to === next) return;\n pendingRestore = { from: current, to: next };\n if (props.inputValue === undefined) setDraft(next);\n else props.onInputValueChange?.(next);\n };\n const setValue = (next: string) => {\n if (props.value === undefined) setInternal(next);\n props.onValueChange?.(next);\n };\n createEffect(() => {\n validateOptions(props.items);\n });\n createEffect(() => {\n if (\n choiceWarningsEnabled() &&\n value() &&\n !props.items.some((item) => item.value === value()) &&\n props.selectedOption?.value !== value()\n )\n console.warn(\n `DDS choice: no label supplied for selected ID ${JSON.stringify(value())}; pass selectedOption when the selection is outside items.`,\n );\n });\n let previousSelection = { value: value(), label: label() };\n createEffect(() => {\n const current = { value: value(), label: label() };\n if (\n previousSelection.value !== current.value ||\n previousSelection.label !== current.label\n ) {\n previousSelection = current;\n untrack(() => restoreInput(current.label));\n }\n });\n createEffect(() => {\n const associatedForm = props.form;\n const form = associatedForm\n ? (validation?.ownerDocument.getElementById(\n associatedForm,\n ) as HTMLFormElement | null)\n : validation?.form;\n if (!form) return;\n const reset = (event: Event) =>\n queueMicrotask(() => {\n if (event.defaultPrevented) return;\n const resetValue = props.value ?? props.defaultValue ?? \"\";\n const resetLabel = resolveLabel(resetValue);\n previousSelection = { value: resetValue, label: resetLabel };\n if (props.value === undefined) setInternal(resetValue);\n restoreInput(props.defaultInputValue ?? resetLabel);\n setOpen(false);\n if (visible instanceof HTMLInputElement) visible.value = inputValue();\n if (validation) validation.value = value();\n });\n form.addEventListener(\"reset\", reset);\n onCleanup(() => form.removeEventListener(\"reset\", reset));\n });\n const items = createMemo(() =>\n props.searchable &&\n props.filterMode !== \"external\" &&\n inputValue() !== label()\n ? props.items.filter((item) =>\n item.label\n .toLocaleLowerCase()\n .includes(inputValue().toLocaleLowerCase()),\n )\n : props.items,\n );\n const collection = createMemo(() =>\n createListCollection({\n items: items(),\n itemToString: (item) => item.label,\n itemToValue: (item) => item.value,\n isItemDisabled: (item) => !!item.disabled,\n }),\n );\n const virtual = () => !!props.virtualization;\n const height = () => {\n const configured = props.virtualization\n ? props.virtualization.itemHeight\n : undefined;\n return Number.isFinite(configured) ? Math.max(40, configured!) : 40;\n };\n const activeIndex = () =>\n items().findIndex((item) => item.value === highlight());\n const virtualizer = createVirtualizer<HTMLDivElement, HTMLDivElement>({\n get count() {\n return items().length;\n },\n getScrollElement: scroll,\n estimateSize: height,\n get overscan() {\n return props.virtualization ? (props.virtualization.overscan ?? 5) : 5;\n },\n get enabled() {\n return virtual() && open();\n },\n initialRect: { width: 0, height: 320 },\n get rangeExtractor() {\n const active = activeIndex();\n return (range: Range) => {\n const indexes = defaultRangeExtractor(range);\n if (active >= 0 && !indexes.includes(active)) indexes.push(active);\n return indexes.sort((a, b) => a - b);\n };\n },\n });\n createEffect(() => {\n items();\n const opened = open();\n setHighlight(null);\n if (virtual() && opened)\n virtualizer.scrollToIndex(\n Math.max(\n 0,\n items().findIndex((item) => item.value === value()),\n ),\n { align: \"auto\" },\n );\n });\n const Parts = props.searchable ? C : S;\n const rows = createMemo(() => {\n const result = virtual()\n ? virtualizer\n .getVirtualItems()\n .map((row) => ({ index: row.index, start: row.start }))\n : items().map((_, index) => ({ index, start: 0 }));\n const active = activeIndex();\n if (virtual() && active >= 0 && !result.some((row) => row.index === active))\n result.push({ index: active, start: active * height() });\n return result;\n });\n const status = () =>\n props.loading\n ? messages().loading\n : props.error\n ? typeof props.error === \"string\"\n ? props.error\n : messages().error\n : items().length === 0\n ? messages().empty\n : \"\";\n const rootProps = {\n get collection() {\n return collection();\n },\n get value() {\n return value() ? [value()] : [];\n },\n get open() {\n return open() && !blocked();\n },\n get disabled() {\n return props.disabled;\n },\n get readOnly() {\n return props.readOnly;\n },\n onOpenChange: (details: { open: boolean }) => {\n if (!blocked()) setOpen(details.open);\n },\n onValueChange: (details: { value: string[] }) => {\n if (blocked() || composing) return;\n const next = details.value[0] ?? \"\";\n if (next !== value()) setValue(next);\n },\n onHighlightChange: (details: { highlightedValue: string | null }) =>\n setHighlight(details.highlightedValue),\n get scrollToIndexFn() {\n return virtual()\n ? ({ index }: { index: number }) =>\n virtualizer.scrollToIndex(index, { align: \"auto\" })\n : undefined;\n },\n get positioning() {\n return {\n placement: \"bottom-start\" as const,\n sameWidth: true,\n gutter: 4,\n strategy: portalMount()?.matches(\n '[role=\"dialog\"], [role=\"alertdialog\"]',\n )\n ? (\"fixed\" as const)\n : (\"absolute\" as const),\n hideWhenDetached: !!portalMount()?.matches(\n '[role=\"dialog\"], [role=\"alertdialog\"]',\n ),\n };\n },\n };\n const inputProps = props.searchable\n ? {\n get inputValue() {\n return inputValue();\n },\n onInputValueChange: (details: { inputValue: string }) => {\n if (!blocked() && details.inputValue !== inputValue())\n setInput(details.inputValue);\n },\n selectionBehavior: \"preserve\" as const,\n }\n : {};\n return (\n <Parts.Root\n {...rootProps}\n {...inputProps}\n id={props.id ?? id}\n class=\"dds-choice\"\n data-label-placement={props.labelPlacement ?? \"outside\"}\n data-has-value={value() || inputValue() ? \"\" : undefined}\n >\n <Show when={props.label}>\n <Parts.Label class=\"dds-choice-label\" onClick={() => visible?.focus()}>\n {props.label}\n </Parts.Label>\n </Show>\n <Parts.Control class=\"dds-choice-control\">\n <Show when={props.searchable}>\n <C.Input\n ref={(node) => {\n visible = node;\n }}\n class=\"dds-choice-input\"\n aria-label={props[\"aria-label\"]}\n aria-labelledby={props[\"aria-labelledby\"]}\n aria-describedby={props[\"aria-describedby\"]}\n aria-required={props.required}\n placeholder={props.placeholder}\n onCompositionStart={() => {\n composing = true;\n }}\n onCompositionEnd={() => {\n composing = false;\n }}\n onKeyDown={(event) => {\n if (composing && event.key === \"Enter\") {\n event.preventDefault();\n event.stopPropagation();\n }\n }}\n onBlur={() => {\n if (value()) restoreInput(label());\n }}\n />\n </Show>\n <Parts.Trigger\n ref={(node) => {\n if (!props.searchable) visible = node;\n }}\n class=\"dds-choice-trigger\"\n aria-label={props.searchable ? messages().open : props[\"aria-label\"]}\n aria-labelledby={props[\"aria-labelledby\"]}\n aria-describedby={props[\"aria-describedby\"]}\n aria-required={props.required}\n >\n {props.searchable ? (\n \"⌄\"\n ) : (\n <span class=\"dds-choice-value\">\n {label() || props.placeholder || messages().open}\n </span>\n )}\n </Parts.Trigger>\n <Show when={props.clearable && !blocked() && (value() || inputValue())}>\n <button\n class=\"dds-choice-clear\"\n type=\"button\"\n aria-label={messages().clear}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => {\n setValue(\"\");\n setInput(\"\");\n setOpen(false);\n visible?.focus();\n }}\n >\n ×\n </button>\n </Show>\n </Parts.Control>\n <input\n ref={validation}\n class=\"dds-choice-validation\"\n style={{\n position: \"absolute\",\n width: \"1px\",\n height: \"1px\",\n padding: \"0\",\n border: \"0\",\n \"clip-path\": \"inset(50%)\",\n overflow: \"hidden\",\n \"white-space\": \"nowrap\",\n }}\n tabIndex={-1}\n aria-hidden=\"true\"\n name={props.name}\n form={props.form}\n value={value()}\n required={props.required}\n disabled={props.disabled}\n onInput={(event) => {\n event.currentTarget.value = value();\n }}\n onInvalid={(event) => {\n event.preventDefault();\n visible?.focus();\n }}\n />\n <div class=\"dds-choice-status\" role=\"status\" aria-live=\"polite\">\n {status()}\n <Show when={props.error && props.onRetry}>\n <button\n class=\"dds-choice-retry\"\n type=\"button\"\n onClick={() => props.onRetry?.()}\n >\n {messages().retry}\n </button>\n </Show>\n </div>\n <Show when={portalMount()}>\n {(mount) => (\n <Portal mount={mount()}>\n <Parts.Positioner class=\"dds-choice-positioner\">\n <Parts.Content\n ref={setScroll}\n class=\"dds-choice-content\"\n style={{\n \"max-height\": \"min(320px, var(--available-height, 320px))\",\n overflow: \"auto\",\n }}\n >\n <div\n style={\n virtual()\n ? {\n height: `${virtualizer.getTotalSize()}px`,\n position: \"relative\",\n }\n : undefined\n }\n >\n <For each={rows()}>\n {(row) => {\n const item = () => items()[row.index]!;\n return (\n <Parts.Item\n item={item()}\n class=\"dds-choice-item\"\n aria-posinset={row.index + 1}\n aria-setsize={items().length}\n style={\n virtual()\n ? {\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n width: \"100%\",\n height: `${height()}px`,\n transform: `translateY(${row.start}px)`,\n }\n : undefined\n }\n >\n <Parts.ItemText>{item().label}</Parts.ItemText>\n <Show when={item().description}>\n <span class=\"dds-choice-description\">\n {item().description}\n </span>\n </Show>\n </Parts.Item>\n );\n }}\n </For>\n </div>\n </Parts.Content>\n </Parts.Positioner>\n </Portal>\n )}\n </Show>\n </Parts.Root>\n );\n}\n"],"mappings":"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"}
@@ -1,444 +0,0 @@
1
- import { n as e, t } from "./utils-oKxhg9RG.js";
2
- import { For as n, Show as r, createSignal as i, createUniqueId as a, splitProps as o } from "solid-js";
3
- import { className as s, createComponent as c, effect as l, getNextElement as u, getNextMarker as d, insert as f, memo as p, mergeProps as m, runHydrationEvents as h, setAttribute as g, spread as _, template as v, use as y } from "solid-js/web";
4
- import { useCheckbox as b } from "@ark-ui/solid/checkbox";
5
- import { useSwitch as x } from "@ark-ui/solid/switch";
6
- import { Field as S } from "@ark-ui/solid/field";
7
- import { DatePicker as C } from "@ark-ui/solid/date-picker";
8
- //#region src/controllable.ts
9
- function w(e) {
10
- let [t, n] = i(e.defaultValue), r = () => e.value() ?? t(), a = n;
11
- return [r, (t) => {
12
- let n = typeof t == "function" ? t(r()) : t;
13
- return e.value() === void 0 && a(() => n), e.onChange?.(n), n;
14
- }];
15
- }
16
- //#endregion
17
- //#region src/controls.tsx
18
- var T = /*#__PURE__*/ v("<button><!$><!/><!$><!/>"), E = /*#__PURE__*/ v("<span class=dds-spinner aria-hidden=true>"), D = /*#__PURE__*/ v("<button>"), O = /*#__PURE__*/ v("<span aria-hidden=true> *"), k = /*#__PURE__*/ v("<span><select>"), A = /*#__PURE__*/ v("<label><input><span>");
19
- function j(e) {
20
- let [n, r] = o(e, [
21
- "class",
22
- "tone",
23
- "size",
24
- "loading",
25
- "disabled",
26
- "type",
27
- "children"
28
- ]);
29
- return (() => {
30
- var e = u(T), i = e.firstChild, [a, o] = d(i.nextSibling), s = a.nextSibling, [c, l] = d(s.nextSibling);
31
- return _(e, m(r, {
32
- get type() {
33
- return n.type ?? "button";
34
- },
35
- get class() {
36
- return t("dds-btn", `dds-btn--${n.tone ?? "primary"}`, n.size !== "md" && n.size ? `dds-btn--${n.size}` : void 0, n.class);
37
- },
38
- get disabled() {
39
- return n.disabled || n.loading;
40
- },
41
- get "aria-busy"() {
42
- return n.loading ? "true" : void 0;
43
- }
44
- }), !1, !0), f(e, (() => {
45
- var e = p(() => !!n.loading);
46
- return () => e() && u(E);
47
- })(), a, o), f(e, () => n.children, c, l), h(), e;
48
- })();
49
- }
50
- function M(e) {
51
- let [n, r] = o(e, [
52
- "class",
53
- "tone",
54
- "size",
55
- "loading",
56
- "disabled",
57
- "type",
58
- "children"
59
- ]);
60
- return (() => {
61
- var e = u(D);
62
- return _(e, m(r, {
63
- get type() {
64
- return n.type ?? "button";
65
- },
66
- get class() {
67
- return t("dds-iconbtn", n.tone && n.tone !== "ghost" ? `dds-iconbtn--${n.tone}` : void 0, n.size !== "md" && n.size ? `dds-iconbtn--${n.size}` : void 0, n.class);
68
- },
69
- get disabled() {
70
- return n.disabled || n.loading;
71
- },
72
- get "aria-busy"() {
73
- return n.loading ? "true" : void 0;
74
- }
75
- }), !1, !0), f(e, (() => {
76
- var e = p(() => !!n.loading);
77
- return () => e() ? u(E) : n.children;
78
- })()), h(), e;
79
- })();
80
- }
81
- function N(n) {
82
- let r = a(), i = () => n.id ?? `dds-field-${r}`, o = () => n.helpText ? `${i()}-help` : void 0, s = () => n.error ? `${i()}-error` : void 0, l = () => ({
83
- id: i(),
84
- "aria-describedby": e(o(), s()),
85
- "aria-invalid": n.error ? "true" : void 0,
86
- "aria-required": n.required ? "true" : void 0
87
- });
88
- return c(S.Root, {
89
- get id() {
90
- return i();
91
- },
92
- get required() {
93
- return n.required ?? !1;
94
- },
95
- get invalid() {
96
- return !!n.error;
97
- },
98
- get ids() {
99
- return {
100
- control: `${i()}-root`,
101
- helperText: `${i()}-help`,
102
- errorText: `${i()}-error`
103
- };
104
- },
105
- get class() {
106
- return t("dds-field", n.error ? "dds-field--error" : void 0, n.class);
107
- },
108
- get children() {
109
- return [
110
- c(S.Label, {
111
- class: "dds-field__label",
112
- get for() {
113
- return i();
114
- },
115
- get children() {
116
- return [p(() => n.label), p(() => p(() => !!n.required)() && u(O))];
117
- }
118
- }),
119
- p(() => p(() => typeof n.children == "function")() ? n.children(l()) : n.children),
120
- p(() => p(() => !!n.helpText)() && c(S.HelperText, {
121
- class: "dds-field__help",
122
- get children() {
123
- return n.helpText;
124
- }
125
- })),
126
- p(() => p(() => !!n.error)() && c(S.ErrorText, {
127
- class: "dds-field__error",
128
- role: "alert",
129
- get children() {
130
- return n.error;
131
- }
132
- }))
133
- ];
134
- }
135
- });
136
- }
137
- function P(e) {
138
- let [n, r] = o(e, [
139
- "class",
140
- "invalid",
141
- "children"
142
- ]);
143
- return (() => {
144
- var e = u(k), i = e.firstChild;
145
- return _(i, m(r, {
146
- class: "dds-select__input",
147
- get "aria-invalid"() {
148
- return n.invalid ? "true" : void 0;
149
- }
150
- }), !1, !0), f(i, () => n.children), l(() => s(e, t("dds-select", n.class))), h(), e;
151
- })();
152
- }
153
- function F(e) {
154
- let [n, r] = o(e, [
155
- "checked",
156
- "defaultChecked",
157
- "onCheckedChange",
158
- "label",
159
- "class",
160
- "inputClass",
161
- "type",
162
- "role"
163
- ]), [i, a] = w({
164
- value: () => n.checked,
165
- defaultValue: n.defaultChecked ?? !1,
166
- onChange: n.onCheckedChange
167
- });
168
- return (() => {
169
- var e = u(A), o = e.firstChild, c = o.nextSibling;
170
- return _(o, m(r, {
171
- get type() {
172
- return n.type;
173
- },
174
- get role() {
175
- return n.role;
176
- },
177
- get class() {
178
- return t(n.role === "switch" ? "dds-switch__input" : "dds-check__input", n.inputClass);
179
- },
180
- get checked() {
181
- return i();
182
- },
183
- onChange: (e) => a(e.currentTarget.checked)
184
- }), !1, !1), f(c, () => n.label), l(() => s(e, t(n.role === "switch" ? "dds-switch" : "dds-check", n.class))), h(), e;
185
- })();
186
- }
187
- var I = (e) => c(z, m(e, { kind: "checkbox" })), L = (e) => c(F, m(e, { type: "radio" })), R = (e) => c(z, m(e, { kind: "switch" }));
188
- function z(e) {
189
- let n = a(), [r, i] = o(e, [
190
- "checked",
191
- "defaultChecked",
192
- "onCheckedChange",
193
- "label",
194
- "class",
195
- "inputClass",
196
- "kind",
197
- "id",
198
- "onClick",
199
- "onFocusIn",
200
- "onFocusOut",
201
- "style"
202
- ]), s = () => ({
203
- id: `dds-check-${n}`,
204
- ids: { hiddenInput: r.id ?? `dds-check-${n}-input` },
205
- checked: r.checked,
206
- defaultChecked: r.defaultChecked,
207
- onCheckedChange: (e) => r.onCheckedChange?.(e.checked === !0),
208
- disabled: i.disabled,
209
- required: i.required,
210
- readOnly: i.readonly,
211
- name: i.name,
212
- form: i.form,
213
- value: String(i.value ?? "on")
214
- }), c = r.kind === "switch" ? x(s) : b(s), l = () => r.kind === "switch" ? "dds-switch__input" : "dds-check__input", d = () => {
215
- let [, e] = o(c().getRootProps(), ["onClick"]);
216
- return e;
217
- };
218
- return (() => {
219
- var e = u(A), n = e.firstChild, a = n.nextSibling;
220
- return _(e, m(d, { get class() {
221
- return t(r.kind === "switch" ? "dds-switch" : "dds-check", r.class);
222
- } }), !1, !0), y((e) => {
223
- e.defaultChecked = r.checked ?? r.defaultChecked ?? !1, typeof i.ref == "function" && i.ref(e);
224
- }, n), _(n, m(() => c().getHiddenInputProps(), i, {
225
- type: "checkbox",
226
- get role() {
227
- return r.kind === "switch" ? "switch" : void 0;
228
- },
229
- get class() {
230
- return t(l(), r.inputClass);
231
- },
232
- get style() {
233
- return r.style ?? {};
234
- },
235
- get checked() {
236
- return c().checked;
237
- },
238
- onFocusIn: (e) => {
239
- B(c().getHiddenInputProps().onFocusIn, e), B(r.onFocusIn, e);
240
- },
241
- onFocusOut: (e) => {
242
- B(c().getHiddenInputProps().onFocusOut, e), B(r.onFocusOut, e);
243
- },
244
- onClick: (e) => {
245
- if (typeof r.onClick == "function" ? r.onClick(e) : r.onClick && r.onClick[0](r.onClick[1], e), !e.defaultPrevented) {
246
- let t = c().getHiddenInputProps().onClick;
247
- typeof t == "function" ? t(e) : t && t[0](t[1], e);
248
- }
249
- }
250
- }), !1, !1), _(a, m(() => c().getLabelProps()), !1, !0), f(a, () => r.label), h(), e;
251
- })();
252
- }
253
- function B(e, t) {
254
- typeof e == "function" ? e(t) : e && e[0](e[1], t);
255
- }
256
- //#endregion
257
- //#region src/date-only.ts
258
- function V(e) {
259
- if (!/^\d{4}-\d{2}-\d{2}$/.test(e)) return !1;
260
- let t = Number(e.slice(0, 4)), n = Number(e.slice(5, 7)), r = Number(e.slice(8, 10));
261
- return t < 1 || n < 1 || n > 12 || r < 1 ? !1 : r <= [
262
- 31,
263
- t % 4 == 0 && (t % 100 != 0 || t % 400 == 0) ? 29 : 28,
264
- 31,
265
- 30,
266
- 31,
267
- 30,
268
- 31,
269
- 31,
270
- 30,
271
- 31,
272
- 30,
273
- 31
274
- ][n - 1];
275
- }
276
- function H(e) {
277
- return /^ko(?:-|$)/i.test(e);
278
- }
279
- function U(e, t) {
280
- return H(t) && V(e) ? e.replaceAll("-", "/") : e;
281
- }
282
- function W(e, t) {
283
- return H(t) && /^\d{4}\/\d{2}\/\d{2}$/.test(e) ? e.replaceAll("/", "-") : e;
284
- }
285
- function G(e, t, n, r, i = "en-US") {
286
- let a = W(e, i), o = e.length < 10 && (/^\d{0,4}(?:-\d{0,2}(?:-\d{0,2})?)?$/.test(e) || H(i) && /^\d{0,4}(?:\/\d{0,2}(?:\/\d{0,2})?)?$/.test(e)), s = "valid";
287
- return e === "" ? s = t ? "required" : "valid" : V(a) ? n && !V(n) || r && !V(r) || n && r && n > r ? s = "invalid" : n && a < n ? s = "rangeUnderflow" : r && a > r && (s = "rangeOverflow") : s = o ? "incomplete" : "invalid", {
288
- inputValue: e,
289
- value: s === "valid" ? a : null,
290
- valid: s === "valid",
291
- reason: s
292
- };
293
- }
294
- function K(e, t = {}) {
295
- let n = H(e);
296
- return {
297
- previousMonth: n ? "이전 달" : "Previous month",
298
- nextMonth: n ? "다음 달" : "Next month",
299
- today: n ? "오늘" : "Today",
300
- clear: n ? "선택 날짜 지우기" : "Clear selected date",
301
- openCalendar: n ? "달력 열기" : "Open calendar",
302
- selectDate: (e) => n ? `${e} 선택` : `Choose ${e}`,
303
- required: n ? "날짜를 입력해 주세요." : "Enter a date.",
304
- invalid: n ? "YYYY/MM/DD 형식의 유효한 범위 내 날짜를 입력해 주세요." : "Enter a valid date within the allowed range (YYYY-MM-DD).",
305
- ...t
306
- };
307
- }
308
- function q(e) {
309
- let t = new Intl.DateTimeFormat("en-US-u-ca-gregory-nu-latn", {
310
- timeZone: e,
311
- year: "numeric",
312
- month: "2-digit",
313
- day: "2-digit"
314
- }).formatToParts(/* @__PURE__ */ new Date()), n = (e) => t.find((t) => t.type === e).value;
315
- return `${n("year").padStart(4, "0")}-${n("month")}-${n("day")}`;
316
- }
317
- //#endregion
318
- //#region src/calendar-view.tsx
319
- var J = /*#__PURE__*/ v("<svg width=18 height=18 viewBox=\"0 0 24 24\"fill=none stroke=currentColor stroke-width=1.5 aria-hidden=true><path>"), Y = /*#__PURE__*/ v("<div class=dds-date-picker-footer><!$><!/><!$><!/>");
320
- function X(e) {
321
- return (() => {
322
- var t = u(J), n = t.firstChild;
323
- return l(() => g(n, "d", e.next ? "m9 5 7 7-7 7" : "m15 5-7 7 7 7")), t;
324
- })();
325
- }
326
- function Z(e) {
327
- let t = () => K(e.locale ?? "ko-KR", e.messages), i = () => e.disabled || e.readOnly;
328
- return c(C.View, {
329
- view: "day",
330
- get children() {
331
- return c(C.Context, { children: (a) => [
332
- c(C.ViewControl, {
333
- class: "dds-date-picker-header",
334
- get children() {
335
- return [
336
- c(C.PrevTrigger, {
337
- class: "dds-btn dds-btn--secondary",
338
- get "aria-label"() {
339
- return t().previousMonth;
340
- },
341
- get children() {
342
- return c(X, {});
343
- }
344
- }),
345
- c(C.RangeText, {}),
346
- c(C.NextTrigger, {
347
- class: "dds-btn dds-btn--secondary",
348
- get "aria-label"() {
349
- return t().nextMonth;
350
- },
351
- get children() {
352
- return c(X, { next: !0 });
353
- }
354
- })
355
- ];
356
- }
357
- }),
358
- c(C.Table, {
359
- class: "dds-date-picker-table",
360
- get children() {
361
- return [c(C.TableHead, { get children() {
362
- return c(C.TableRow, { get children() {
363
- return c(n, {
364
- get each() {
365
- return a().weekDays;
366
- },
367
- children: (e) => c(C.TableHeader, { get children() {
368
- return e.short;
369
- } })
370
- });
371
- } });
372
- } }), c(C.TableBody, { get children() {
373
- return c(n, {
374
- get each() {
375
- return a().weeks;
376
- },
377
- children: (e) => c(C.TableRow, { get children() {
378
- return c(n, {
379
- each: e,
380
- children: (e) => c(C.TableCell, {
381
- value: e,
382
- get children() {
383
- return c(C.TableCellTrigger, { get children() {
384
- return e.day;
385
- } });
386
- }
387
- })
388
- });
389
- } })
390
- });
391
- } })];
392
- }
393
- }),
394
- (() => {
395
- var n = u(Y), o = n.firstChild, [s, l] = d(o.nextSibling), p = s.nextSibling, [m, h] = d(p.nextSibling);
396
- return f(n, c(r, {
397
- get when() {
398
- return e.showToday !== !1;
399
- },
400
- get children() {
401
- return c(j, {
402
- type: "button",
403
- tone: "secondary",
404
- get disabled() {
405
- return i() || !G(q(e.timeZone ?? "Asia/Seoul"), !1, e.min, e.max, e.locale).valid;
406
- },
407
- onClick: () => {
408
- !i() && G(q(e.timeZone ?? "Asia/Seoul"), !1, e.min, e.max, e.locale).valid && a().selectToday();
409
- },
410
- get children() {
411
- return t().today;
412
- }
413
- });
414
- }
415
- }), s, l), f(n, c(r, {
416
- get when() {
417
- return e.showClear !== !1;
418
- },
419
- get children() {
420
- return c(C.ClearTrigger, {
421
- hidden: !1,
422
- class: "dds-btn dds-btn--secondary",
423
- get disabled() {
424
- return i();
425
- },
426
- onPointerDown: (e) => e.preventDefault(),
427
- onClick: () => {
428
- i() || e.onClear?.();
429
- },
430
- get children() {
431
- return t().clear;
432
- }
433
- });
434
- }
435
- }), m, h), n;
436
- })()
437
- ] });
438
- }
439
- });
440
- }
441
- //#endregion
442
- export { V as a, j as c, M as d, L as f, w as h, U as i, I as l, R as m, W as n, H as o, P as p, K as r, G as s, Z as t, N as u };
443
-
444
- //# sourceMappingURL=calendar-view-CTBTPB4T.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendar-view-CTBTPB4T.js","names":["createUniqueId","splitProps","JSX","ParentProps","createControllableSignal","useCheckbox","useSwitch","Field","ArkField","classes","describedBy","ButtonTone","ControlSize","ButtonProps","Omit","ButtonHTMLAttributes","HTMLButtonElement","class","tone","size","loading","Button","props","local","rest","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_el$3","_co$","_$getNextMarker","nextSibling","_el$4","_el$5","_co$2","_$spread","_$mergeProps","type","undefined","disabled","aria-busy","_$insert","_c$","_$memo","_tmpl$2","children","_$runHydrationEvents","IconButtonProps","Element","IconButton","_el$7","_tmpl$3","_c$2","FieldControlProps","id","FieldProps","label","helpText","error","required","generated","helpId","errorId","control","_$createComponent","Root","invalid","Boolean","ids","helperText","errorText","Label","for","_tmpl$4","HelperText","ErrorText","role","SelectProps","SelectHTMLAttributes","HTMLSelectElement","Select","_el$0","_tmpl$5","_el$1","aria-invalid","_$effect","_$className","CheckableProps","InputHTMLAttributes","HTMLInputElement","checked","defaultChecked","onCheckedChange","inputClass","Checkable","setChecked","value","defaultValue","onChange","_el$10","_tmpl$6","_el$11","_el$12","event","currentTarget","CheckboxProps","Checkbox","ArkCheckable","kind","RadioProps","Radio","SwitchProps","Switch","options","hiddenInput","details","readOnly","readonly","name","form","String","api","rootProps","attributes","getRootProps","_el$13","_el$14","_el$15","_$use","input","ref","getHiddenInputProps","style","callInputHandler","onFocusIn","onFocusOut","onClick","defaultPrevented","handler","getLabelProps","FocusEventHandlerUnion","FocusEvent","target","DatePicker","ArkDatePicker","For","Show","Button","dateMessages","todayDate","validateInput","CalendarMessages","Chevron","props","next","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$effect","_$setAttribute","CalendarViewProps","timeZone","min","max","locale","messages","disabled","readOnly","showToday","showClear","onClear","CalendarView","text","locked","_$createComponent","View","view","children","Context","picker","ViewControl","PrevTrigger","aria-label","previousMonth","RangeText","NextTrigger","nextMonth","Table","TableHead","TableRow","each","weekDays","day","TableHeader","short","TableBody","weeks","week","TableCell","value","TableCellTrigger","_el$3","_tmpl$2","_el$4","_el$5","_co$","_$getNextMarker","nextSibling","_el$6","_el$7","_co$2","_$insert","when","type","tone","valid","onClick","selectToday","today","ClearTrigger","hidden","onPointerDown","event","preventDefault","clear"],"sources":["../src/controllable.ts","../src/controls.tsx","../src/date-only.ts","../src/calendar-view.tsx"],"sourcesContent":["import { createSignal, type Accessor } from \"solid-js\";\n\nexport interface ControllableOptions<T> {\n value: Accessor<T | undefined>;\n defaultValue: T;\n onChange: ((value: T) => void) | undefined;\n}\n\nexport type ControllableSetter<T> = (next: T | ((previous: T) => T)) => T;\n\nexport function createControllableSignal<T>(options: ControllableOptions<T>): [Accessor<T>, ControllableSetter<T>] {\n const [internal, setInternal] = createSignal(options.defaultValue);\n const value: Accessor<T> = () => options.value() ?? internal();\n const setInternalValue = setInternal as unknown as ControllableSetter<T>;\n const setValue: ControllableSetter<T> = (next) => {\n const resolved = typeof next === \"function\"\n ? (next as (previous: T) => T)(value())\n : next;\n if (options.value() === undefined) setInternalValue(() => resolved);\n options.onChange?.(resolved);\n return resolved;\n };\n return [value, setValue];\n}\n","import {\n createUniqueId,\n splitProps,\n type JSX,\n type ParentProps,\n} from \"solid-js\";\n\nimport { createControllableSignal } from \"./controllable\";\nimport { useCheckbox } from \"@ark-ui/solid/checkbox\";\nimport { useSwitch } from \"@ark-ui/solid/switch\";\nimport { Field as ArkField } from \"@ark-ui/solid/field\";\nimport { classes, describedBy } from \"./utils\";\n\nexport type ButtonTone = \"primary\" | \"secondary\" | \"ghost\" | \"danger\";\nexport type ControlSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, \"class\"> {\n class?: string;\n tone?: ButtonTone;\n size?: ControlSize;\n loading?: boolean;\n}\n\nexport function Button(props: ParentProps<ButtonProps>) {\n const [local, rest] = splitProps(props, [\"class\", \"tone\", \"size\", \"loading\", \"disabled\", \"type\", \"children\"]);\n return (\n <button\n {...rest}\n type={local.type ?? \"button\"}\n class={classes(\"dds-btn\", `dds-btn--${local.tone ?? \"primary\"}`, local.size !== \"md\" && local.size ? `dds-btn--${local.size}` : undefined, local.class)}\n disabled={local.disabled || local.loading}\n aria-busy={local.loading ? \"true\" : undefined}\n >\n {local.loading && <span class=\"dds-spinner\" aria-hidden=\"true\" />}\n {local.children}\n </button>\n );\n}\n\nexport interface IconButtonProps extends Omit<ButtonProps, \"tone\" | \"children\"> {\n \"aria-label\": string;\n tone?: \"ghost\" | \"secondary\" | \"danger\";\n children: JSX.Element;\n}\n\nexport function IconButton(props: IconButtonProps) {\n const [local, rest] = splitProps(props, [\"class\", \"tone\", \"size\", \"loading\", \"disabled\", \"type\", \"children\"]);\n return (\n <button\n {...rest}\n type={local.type ?? \"button\"}\n class={classes(\"dds-iconbtn\", local.tone && local.tone !== \"ghost\" ? `dds-iconbtn--${local.tone}` : undefined, local.size !== \"md\" && local.size ? `dds-iconbtn--${local.size}` : undefined, local.class)}\n disabled={local.disabled || local.loading}\n aria-busy={local.loading ? \"true\" : undefined}\n >\n {local.loading ? <span class=\"dds-spinner\" aria-hidden=\"true\" /> : local.children}\n </button>\n );\n}\n\nexport interface FieldControlProps {\n id: string;\n \"aria-describedby\": string | undefined;\n \"aria-invalid\": \"true\" | undefined;\n \"aria-required\": \"true\" | undefined;\n}\n\nexport interface FieldProps {\n id?: string;\n label: JSX.Element;\n helpText?: JSX.Element;\n error?: JSX.Element;\n required?: boolean;\n class?: string;\n children: JSX.Element | ((props: FieldControlProps) => JSX.Element);\n}\n\nexport function Field(props: FieldProps) {\n const generated = createUniqueId();\n const id = () => props.id ?? `dds-field-${generated}`;\n const helpId = () => props.helpText ? `${id()}-help` : undefined;\n const errorId = () => props.error ? `${id()}-error` : undefined;\n const control = (): FieldControlProps => ({\n id: id(),\n \"aria-describedby\": describedBy(helpId(), errorId()),\n \"aria-invalid\": props.error ? \"true\" : undefined,\n \"aria-required\": props.required ? \"true\" : undefined,\n });\n return (\n <ArkField.Root id={id()} required={props.required ?? false} invalid={Boolean(props.error)} ids={{ control: `${id()}-root`, helperText: `${id()}-help`, errorText: `${id()}-error` }} class={classes(\"dds-field\", props.error ? \"dds-field--error\" : undefined, props.class)}>\n <ArkField.Label class=\"dds-field__label\" for={id()}>{props.label}{props.required && <span aria-hidden=\"true\"> *</span>}</ArkField.Label>\n {typeof props.children === \"function\" ? props.children(control()) : props.children}\n {props.helpText && <ArkField.HelperText class=\"dds-field__help\">{props.helpText}</ArkField.HelperText>}\n {props.error && <ArkField.ErrorText class=\"dds-field__error\" role=\"alert\">{props.error}</ArkField.ErrorText>}\n </ArkField.Root>\n );\n}\n\nexport interface SelectProps extends Omit<JSX.SelectHTMLAttributes<HTMLSelectElement>, \"class\"> {\n class?: string;\n invalid?: boolean;\n}\n\nexport function Select(props: ParentProps<SelectProps>) {\n const [local, rest] = splitProps(props, [\"class\", \"invalid\", \"children\"]);\n return (\n <span class={classes(\"dds-select\", local.class)}>\n <select {...rest} class=\"dds-select__input\" aria-invalid={local.invalid ? \"true\" : undefined}>\n {local.children}\n </select>\n </span>\n );\n}\n\ninterface CheckableProps extends Omit<JSX.InputHTMLAttributes<HTMLInputElement>, \"checked\" | \"class\" | \"onChange\" | \"role\" | \"type\"> {\n checked?: boolean;\n defaultChecked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n label: JSX.Element;\n class?: string;\n inputClass?: string;\n}\n\nfunction Checkable(props: CheckableProps & { type: \"checkbox\" | \"radio\"; role?: \"switch\" }) {\n const [local, rest] = splitProps(props, [\"checked\", \"defaultChecked\", \"onCheckedChange\", \"label\", \"class\", \"inputClass\", \"type\", \"role\"]);\n const [checked, setChecked] = createControllableSignal({\n value: () => local.checked,\n defaultValue: local.defaultChecked ?? false,\n onChange: local.onCheckedChange,\n });\n return (\n <label class={classes(local.role === \"switch\" ? \"dds-switch\" : \"dds-check\", local.class)}>\n <input\n {...rest}\n type={local.type}\n role={local.role}\n class={classes(local.role === \"switch\" ? \"dds-switch__input\" : \"dds-check__input\", local.inputClass)}\n checked={checked()}\n onChange={(event) => setChecked(event.currentTarget.checked)}\n />\n <span>{local.label}</span>\n </label>\n );\n}\n\nexport type CheckboxProps = CheckableProps;\nexport const Checkbox = (props: CheckboxProps) => <ArkCheckable {...props} kind=\"checkbox\" />;\n\nexport type RadioProps = CheckableProps;\nexport const Radio = (props: RadioProps) => <Checkable {...props} type=\"radio\" />;\n\nexport type SwitchProps = CheckableProps;\nexport const Switch = (props: SwitchProps) => <ArkCheckable {...props} kind=\"switch\" />;\n\nfunction ArkCheckable(props: CheckableProps & { kind: \"checkbox\" | \"switch\" }) {\n const generated = createUniqueId();\n const [local, rest] = splitProps(props, [\"checked\", \"defaultChecked\", \"onCheckedChange\", \"label\", \"class\", \"inputClass\", \"kind\", \"id\", \"onClick\", \"onFocusIn\", \"onFocusOut\", \"style\"]);\n const options = () => ({\n id: `dds-check-${generated}`,\n ids: { hiddenInput: local.id ?? `dds-check-${generated}-input` },\n checked: local.checked, defaultChecked: local.defaultChecked,\n onCheckedChange: (details: { checked: boolean | \"indeterminate\" }) => local.onCheckedChange?.(details.checked === true),\n disabled: rest.disabled, required: rest.required, readOnly: rest.readonly,\n name: rest.name, form: rest.form, value: String(rest.value ?? \"on\"),\n });\n const api = local.kind === \"switch\" ? useSwitch(options) : useCheckbox(options);\n const inputClass = () => local.kind === \"switch\" ? \"dds-switch__input\" : \"dds-check__input\";\n const rootProps = () => {\n const [, attributes] = splitProps(api().getRootProps(), [\"onClick\"]);\n return attributes;\n };\n return <label {...rootProps()} class={classes(local.kind === \"switch\" ? \"dds-switch\" : \"dds-check\", local.class)}>\n <input {...api().getHiddenInputProps()} {...rest}\n ref={(input) => {\n // Ark normalizes defaultChecked to checked. Preserve the native reset\n // baseline as well when rendering its input visibly with DDS CSS.\n input.defaultChecked = local.checked ?? local.defaultChecked ?? false;\n if (typeof rest.ref === \"function\") rest.ref(input);\n }}\n type=\"checkbox\" role={local.kind === \"switch\" ? \"switch\" : undefined}\n class={classes(inputClass(), local.inputClass)}\n style={local.style ?? {}} checked={api().checked}\n onFocusIn={(event) => {\n callInputHandler(api().getHiddenInputProps().onFocusIn, event);\n callInputHandler(local.onFocusIn, event);\n }}\n onFocusOut={(event) => {\n callInputHandler(api().getHiddenInputProps().onFocusOut, event);\n callInputHandler(local.onFocusOut, event);\n }}\n onClick={(event) => {\n if (typeof local.onClick === \"function\") local.onClick(event);\n else if (local.onClick) local.onClick[0](local.onClick[1], event);\n if (!event.defaultPrevented) {\n const handler = api().getHiddenInputProps().onClick;\n if (typeof handler === \"function\") handler(event);\n else if (handler) handler[0](handler[1], event);\n }\n }}\n />\n <span {...api().getLabelProps()}>{local.label}</span>\n </label>;\n}\n\nfunction callInputHandler(handler: JSX.FocusEventHandlerUnion<HTMLInputElement, FocusEvent> | undefined, event: FocusEvent & { currentTarget: HTMLInputElement; target: HTMLInputElement }) {\n if (typeof handler === \"function\") handler(event);\n else if (handler) handler[0](handler[1], event);\n}\n","export interface DatePickerValidity {\n /** Exact displayed draft; never persist this display text as an API date. */\n inputValue: string;\n /** Valid ISO date, optional empty string, or null when invalid/incomplete. */\n value: string | null;\n valid: boolean;\n reason:\n | \"valid\"\n | \"required\"\n | \"incomplete\"\n | \"invalid\"\n | \"rangeUnderflow\"\n | \"rangeOverflow\";\n}\n// Date-only Gregorian validation: never let a permissive parser repair user text.\nexport function isCalendarDate(value: string) {\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) return false;\n const year = Number(value.slice(0, 4)),\n month = Number(value.slice(5, 7)),\n day = Number(value.slice(8, 10));\n if (year < 1 || month < 1 || month > 12 || day < 1) return false;\n const leap = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n return (\n day <=\n [31, leap ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1]!\n );\n}\nexport function isKorean(locale: string) {\n return /^ko(?:-|$)/i.test(locale);\n}\nexport function displayDate(value: string, locale: string) {\n return isKorean(locale) && isCalendarDate(value)\n ? value.replaceAll(\"-\", \"/\")\n : value;\n}\nexport function canonicalInput(inputValue: string, locale: string) {\n return isKorean(locale) && /^\\d{4}\\/\\d{2}\\/\\d{2}$/.test(inputValue)\n ? inputValue.replaceAll(\"/\", \"-\")\n : inputValue;\n}\nexport function validateInput(\n inputValue: string,\n required: boolean,\n min?: string,\n max?: string,\n locale = \"en-US\",\n): DatePickerValidity {\n const canonical = canonicalInput(inputValue, locale);\n const incomplete =\n inputValue.length < 10 &&\n (/^\\d{0,4}(?:-\\d{0,2}(?:-\\d{0,2})?)?$/.test(inputValue) ||\n (isKorean(locale) &&\n /^\\d{0,4}(?:\\/\\d{0,2}(?:\\/\\d{0,2})?)?$/.test(inputValue)));\n let reason: DatePickerValidity[\"reason\"] = \"valid\";\n if (inputValue === \"\") reason = required ? \"required\" : \"valid\";\n else if (!isCalendarDate(canonical))\n reason = incomplete ? \"incomplete\" : \"invalid\";\n else if (\n (min && !isCalendarDate(min)) ||\n (max && !isCalendarDate(max)) ||\n (min && max && min > max)\n )\n reason = \"invalid\";\n else if (min && canonical < min) reason = \"rangeUnderflow\";\n else if (max && canonical > max) reason = \"rangeOverflow\";\n return {\n inputValue,\n value: reason === \"valid\" ? canonical : null,\n valid: reason === \"valid\",\n reason,\n };\n}\n\nexport interface CalendarMessages {\n previousMonth?: string;\n nextMonth?: string;\n today?: string;\n clear?: string;\n openCalendar?: string;\n selectDate?: (dateText: string) => string;\n required?: string;\n invalid?: string;\n}\nexport function dateMessages(locale: string, messages: CalendarMessages = {}) {\n const ko = isKorean(locale);\n return {\n previousMonth: ko ? \"이전 달\" : \"Previous month\",\n nextMonth: ko ? \"다음 달\" : \"Next month\",\n today: ko ? \"오늘\" : \"Today\",\n clear: ko ? \"선택 날짜 지우기\" : \"Clear selected date\",\n openCalendar: ko ? \"달력 열기\" : \"Open calendar\",\n selectDate: (text: string) => (ko ? `${text} 선택` : `Choose ${text}`),\n required: ko ? \"날짜를 입력해 주세요.\" : \"Enter a date.\",\n invalid: ko\n ? \"YYYY/MM/DD 형식의 유효한 범위 내 날짜를 입력해 주세요.\"\n : \"Enter a valid date within the allowed range (YYYY-MM-DD).\",\n ...messages,\n };\n}\n\n/** Today is the sole timestamp boundary; stored dates remain Gregorian date-only strings. */\nexport function todayDate(timeZone: string) {\n const parts = new Intl.DateTimeFormat(\"en-US-u-ca-gregory-nu-latn\", {\n timeZone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).formatToParts(new Date());\n const part = (type: string) =>\n parts.find((item) => item.type === type)!.value;\n return `${part(\"year\").padStart(4, \"0\")}-${part(\"month\")}-${part(\"day\")}`;\n}\n","import { DatePicker as ArkDatePicker } from \"@ark-ui/solid/date-picker\";\nimport { For, Show } from \"solid-js\";\nimport { Button } from \"./controls\";\nimport {\n dateMessages,\n todayDate,\n validateInput,\n type CalendarMessages,\n} from \"./date-only\";\nfunction Chevron(props: { next?: boolean }) {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n >\n <path d={props.next ? \"m9 5 7 7-7 7\" : \"m15 5-7 7 7 7\"} />\n </svg>\n );\n}\nexport interface CalendarViewProps {\n timeZone?: string | undefined;\n min?: string | undefined;\n max?: string | undefined;\n locale?: string | undefined;\n messages?: CalendarMessages | undefined;\n disabled?: boolean | undefined;\n readOnly?: boolean | undefined;\n showToday?: boolean | undefined;\n showClear?: boolean | undefined;\n onClear?: (() => void) | undefined;\n}\n/** Internal view: the caller owns the single Ark root and its selection. */\nexport function CalendarView(props: CalendarViewProps) {\n const text = () => dateMessages(props.locale ?? \"ko-KR\", props.messages),\n locked = () => props.disabled || props.readOnly;\n return (\n <ArkDatePicker.View view=\"day\">\n <ArkDatePicker.Context>\n {(picker) => (\n <>\n <ArkDatePicker.ViewControl class=\"dds-date-picker-header\">\n <ArkDatePicker.PrevTrigger\n class=\"dds-btn dds-btn--secondary\"\n aria-label={text().previousMonth}\n >\n <Chevron />\n </ArkDatePicker.PrevTrigger>\n <ArkDatePicker.RangeText />\n <ArkDatePicker.NextTrigger\n class=\"dds-btn dds-btn--secondary\"\n aria-label={text().nextMonth}\n >\n <Chevron next />\n </ArkDatePicker.NextTrigger>\n </ArkDatePicker.ViewControl>\n <ArkDatePicker.Table class=\"dds-date-picker-table\">\n <ArkDatePicker.TableHead>\n <ArkDatePicker.TableRow>\n <For each={picker().weekDays}>\n {(day) => (\n <ArkDatePicker.TableHeader>\n {day.short}\n </ArkDatePicker.TableHeader>\n )}\n </For>\n </ArkDatePicker.TableRow>\n </ArkDatePicker.TableHead>\n <ArkDatePicker.TableBody>\n <For each={picker().weeks}>\n {(week) => (\n <ArkDatePicker.TableRow>\n <For each={week}>\n {(day) => (\n <ArkDatePicker.TableCell value={day}>\n <ArkDatePicker.TableCellTrigger>\n {day.day}\n </ArkDatePicker.TableCellTrigger>\n </ArkDatePicker.TableCell>\n )}\n </For>\n </ArkDatePicker.TableRow>\n )}\n </For>\n </ArkDatePicker.TableBody>\n </ArkDatePicker.Table>\n <div class=\"dds-date-picker-footer\">\n <Show when={props.showToday !== false}>\n <Button\n type=\"button\"\n tone=\"secondary\"\n disabled={\n locked() ||\n !validateInput(\n todayDate(props.timeZone ?? \"Asia/Seoul\"),\n false,\n props.min,\n props.max,\n props.locale,\n ).valid\n }\n onClick={() => {\n if (\n !locked() &&\n validateInput(\n todayDate(props.timeZone ?? \"Asia/Seoul\"),\n false,\n props.min,\n props.max,\n props.locale,\n ).valid\n )\n picker().selectToday();\n }}\n >\n {text().today}\n </Button>\n </Show>\n <Show when={props.showClear !== false}>\n <ArkDatePicker.ClearTrigger\n hidden={false}\n class=\"dds-btn dds-btn--secondary\"\n disabled={locked()}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => {\n if (!locked()) props.onClear?.();\n }}\n >\n {text().clear}\n </ArkDatePicker.ClearTrigger>\n </Show>\n </div>\n </>\n )}\n </ArkDatePicker.Context>\n </ArkDatePicker.View>\n );\n}\n"],"mappings":"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"}