@domphy/ui 0.1.33 → 0.1.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/patches/abbreviation.ts","../src/patches/card.ts","../src/patches/splitter.ts","../src/patches/command.ts","../src/patches/toggle.ts","../src/patches/toggleGroup.ts","../src/patches/inputOTP.ts","../src/patches/alert.ts","../src/patches/avatar.ts","../src/patches/badge.ts","../src/patches/breadcrumb.ts","../src/patches/breadcrumbEllipsis.ts","../src/patches/combobox.ts","../src/patches/tag.ts","../src/utils/floating.ts","../src/patches/popoverArrow.ts","../src/patches/blockquote.ts","../src/patches/button.ts","../src/patches/inputCheckbox.ts","../src/patches/code.ts","../src/patches/details.ts","../src/patches/descriptionList.ts","../src/patches/dialog.ts","../src/patches/emphasis.ts","../src/patches/figure.ts","../src/patches/formGroup.ts","../src/patches/heading.ts","../src/patches/horizontalRule.ts","../src/patches/image.ts","../src/patches/icon.ts","../src/patches/inputColor.ts","../src/patches/inputDateTime.ts","../src/patches/inputFile.ts","../src/patches/inputSearch.ts","../src/patches/inputText.ts","../src/patches/inputRange.ts","../src/patches/inputNumber.ts","../src/patches/keyboard.ts","../src/patches/label.ts","../src/patches/link.ts","../src/patches/mark.ts","../src/patches/paragraph.ts","../src/patches/preformated.ts","../src/patches/progress.ts","../src/patches/inputRadio.ts","../src/patches/select.ts","../src/patches/skeleton.ts","../src/patches/spinner.ts","../src/patches/selectList.ts","../src/patches/selectItem.ts","../src/patches/selectBox.ts","../src/patches/inputSwitch.ts","../src/patches/buttonSwitch.ts","../src/patches/small.ts","../src/patches/strong.ts","../src/patches/subscript.ts","../src/patches/superscript.ts","../src/patches/table.ts","../src/patches/textarea.ts","../src/patches/unorderedList.ts","../src/patches/orderedList.ts","../src/patches/pagination.ts","../src/patches/divider.ts","../src/patches/drawer.ts","../src/patches/popover.ts","../src/patches/toast.ts","../src/patches/tooltip.ts","../src/patches/transitionGroup.ts","../src/patches/tabs.ts","../src/patches/tab.ts","../src/patches/tabPanel.ts","../src/patches/menu.ts","../src/patches/menuItem.ts","../src/patches/form.ts","../src/patches/field.ts","../src/classes/FieldState.ts","../src/classes/FormState.ts"],"sourcesContent":["import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, ThemeColor, themeSize, themeSpacing } from \"@domphy/theme\";\n\nfunction abbreviation(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"abbr\") {\n console.warn(`\"abbreviation\" primitive patch must use abbr tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener),\n backgroundColor: (listener) => themeColor(listener),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n textDecorationLine: \"underline\",\n textDecorationStyle: \"dotted\",\n textDecorationColor: (listener) => themeColor(listener, \"shift-7\", color.get(listener)),\n textUnderlineOffset: themeSpacing(0.72),\n cursor: \"help\",\n \"&:hover\": {\n color: (listener) => themeColor(listener, \"shift-11\", accentColor.get(listener)),\n textDecorationColor: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n },\n },\n };\n}\n\nexport { abbreviation };\n","import { type PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction card(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n return {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"1fr auto\",\n gridTemplateAreas: '\"image image\" \"title aside\" \"desc aside\" \"content content\" \"footer footer\"',\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n outlineOffset: \"-1px\",\n overflow: \"hidden\",\n \"& > img\": {\n gridArea: \"image\",\n width: \"100%\",\n height: \"auto\",\n display: \"block\",\n },\n \"& > :is(h1,h2,h3,h4,h5,h6)\": {\n gridArea: \"title\",\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n fontWeight: \"600\",\n margin: 0\n },\n \"& > p\": {\n gridArea: \"desc\",\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n margin: 0\n },\n \"& > aside\": {\n gridArea: \"aside\",\n alignSelf: \"center\",\n padding: (listener) => themeSpacing(themeDensity(listener) * 2),\n height: \"auto\",\n },\n \"& > div\": {\n gridArea: \"content\",\n padding: (listener) => themeSpacing(themeDensity(listener) * 4),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n },\n \"& > footer\": {\n gridArea: \"footer\",\n display: \"flex\",\n gap: themeSpacing(2),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n borderTop: (listener) => `1px solid ${themeColor(listener, \"shift-3\", color.get(listener))}`,\n },\n },\n };\n}\n\nexport { card };\n","import { type PartialElement, merge, toState } from \"@domphy/core\";\r\nimport { themeColor, themeSpacing } from \"@domphy/theme\";\r\n\r\nfunction splitter(props: {\r\n direction?: \"horizontal\" | \"vertical\";\r\n defaultSize?: number;\r\n min?: number;\r\n max?: number;\r\n} = {}): PartialElement {\r\n const { direction = \"horizontal\", defaultSize = 50, min = 10, max = 90 } = props;\r\n return {\r\n _onSchedule: (node, element) => {\r\n merge(element, {\r\n _context: {\r\n splitter: {\r\n direction,\r\n size: toState(defaultSize),\r\n min,\r\n max,\r\n },\r\n },\r\n });\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexDirection: direction === \"horizontal\" ? \"row\" : \"column\",\r\n overflow: \"hidden\",\r\n },\r\n };\r\n}\r\n\r\nfunction splitterPanel(): PartialElement {\r\n return {\r\n _onMount: (node) => {\r\n const ctx = node.getContext(\"splitter\");\r\n const el = node.domElement as HTMLElement;\r\n const prop = ctx.direction === \"horizontal\" ? \"width\" : \"height\";\r\n\r\n el.style[prop] = `${ctx.size.get()}%`;\r\n el.style.flexShrink = \"0\";\r\n el.style.overflow = \"auto\";\r\n\r\n const release = ctx.size.addListener((size: number) => {\r\n el.style[prop] = `${size}%`;\r\n });\r\n node.addHook(\"Remove\", release);\r\n },\r\n };\r\n}\r\n\r\nfunction splitterHandle(): PartialElement {\r\n return {\r\n _onMount: (node) => {\r\n const ctx = node.getContext(\"splitter\");\r\n const handle = node.domElement as HTMLElement;\r\n const isHorizontal = ctx.direction === \"horizontal\";\r\n\r\n handle.style.cursor = isHorizontal ? \"col-resize\" : \"row-resize\";\r\n\r\n const onMousedown = (e: MouseEvent) => {\r\n e.preventDefault();\r\n const container = handle.parentElement!;\r\n\r\n const onMousemove = (e: MouseEvent) => {\r\n const rect = container.getBoundingClientRect();\r\n const raw = isHorizontal\r\n ? ((e.clientX - rect.left) / rect.width) * 100\r\n : ((e.clientY - rect.top) / rect.height) * 100;\r\n ctx.size.set(Math.min(Math.max(raw, ctx.min), ctx.max));\r\n };\r\n\r\n const onMouseup = () => {\r\n document.removeEventListener(\"mousemove\", onMousemove);\r\n document.removeEventListener(\"mouseup\", onMouseup);\r\n };\r\n\r\n document.addEventListener(\"mousemove\", onMousemove);\r\n document.addEventListener(\"mouseup\", onMouseup);\r\n };\r\n\r\n handle.addEventListener(\"mousedown\", onMousedown);\r\n node.addHook(\"Remove\", () => handle.removeEventListener(\"mousedown\", onMousedown));\r\n },\r\n style: {\r\n flexShrink: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\"),\r\n \"&:hover\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-3\"),\r\n },\r\n \"&::after\": {\r\n content: '\"\"',\r\n borderRadius: themeSpacing(999),\r\n backgroundColor: (listener) => themeColor(listener, \"shift-4\"),\r\n },\r\n },\r\n };\r\n}\r\n\r\nexport { splitter, splitterPanel, splitterHandle };\r\n","import { type PartialElement, merge, toState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\r\n\r\nfunction command(): PartialElement {\r\n return {\r\n _onSchedule: (node, element) => {\r\n merge(element, {\r\n _context: {\r\n command: {\r\n query: toState(\"\"),\r\n },\r\n },\r\n });\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n },\r\n };\r\n}\r\n\r\nfunction commandSearch(props: { color?: ThemeColor; accentColor?: ThemeColor } = {}): PartialElement {\r\n const { color = \"neutral\", accentColor = \"primary\" } = props;\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName !== \"input\") {\r\n console.warn(`\"commandSearch\" patch must use input tag`);\r\n }\r\n },\r\n _onMount: (node) => {\r\n const ctx = node.getContext(\"command\");\r\n const input = node.domElement as HTMLInputElement;\r\n const onInput = () => ctx.query.set(input.value);\r\n input.addEventListener(\"input\", onInput);\r\n node.addHook(\"Remove\", () => input.removeEventListener(\"input\", onInput));\r\n },\r\n style: {\r\n fontFamily: \"inherit\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\r\n border: \"none\",\r\n borderBottom: (listener) => `1px solid ${themeColor(listener, \"shift-3\", color)}`,\r\n outline: \"none\",\r\n color: (listener) => themeColor(listener, \"shift-10\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n \"&::placeholder\": {\r\n color: (listener) => themeColor(listener, \"shift-7\"),\r\n },\r\n \"&:focus-visible\": {\r\n borderBottomColor: (listener) => themeColor(listener, \"shift-6\", accentColor),\r\n },\r\n },\r\n };\r\n}\r\n\r\nfunction commandItem(props: { color?: ThemeColor; accentColor?: ThemeColor } = {}): PartialElement {\r\n const { color = \"neutral\", accentColor = \"primary\" } = props;\r\n return {\r\n role: \"option\",\r\n _onMount: (node) => {\r\n const ctx = node.getContext(\"command\");\r\n const el = node.domElement as HTMLElement;\r\n const text = el.textContent?.toLowerCase() ?? \"\";\r\n const release = ctx.query.addListener((q: string) => {\r\n el.hidden = q.length > 0 && !text.includes(q.toLowerCase());\r\n });\r\n node.addHook(\"Remove\", release);\r\n },\r\n style: {\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n border: \"none\",\r\n outline: \"none\",\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n \"&:hover:not([disabled])\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color),\r\n },\r\n \"&:focus-visible\": {\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor)}`,\r\n outlineOffset: `-${themeSpacing(0.5)}`,\r\n },\r\n },\r\n };\r\n}\r\n\r\nexport { command, commandSearch, commandItem };\r\n","import { type PartialElement, type ElementNode, toState, type ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction toggle(props: {\n color?: ValueOrState<ThemeColor>;\n accentColor?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n return {\n role: \"button\",\n _onInsert: (node) => {\n if (node.tagName !== \"button\") {\n console.warn(`\"toggle\" patch must use button tag`);\n }\n const ctx = node.getContext(\"toggleGroup\");\n const children = node.parent?.children.items as ElementNode[]\n\n let items = children.filter(n => n.type === \"ElementNode\" && n.attributes.get(\"role\") === \"button\");\n const key = node.key !== undefined ? String(node.key) : String(items.findIndex(n => n === node));\n\n node.attributes.set(\"ariaPressed\", (listener) => {\n const val = ctx.value.get(listener);\n return Array.isArray(val) ? val.includes(key) : val === key;\n })\n\n node.addEvent(\"click\", () => {\n const val = ctx.value.get();\n if (ctx.multiple) {\n const arr = Array.isArray(val) ? [...val] : [];\n ctx.value.set(arr.includes(key) ? arr.filter(v => v !== key) : [...arr, key]);\n } else {\n ctx.value.set(val === key ? \"\" : key);\n }\n })\n },\n style: {\n cursor: \"pointer\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n height: themeSpacing(6),\n paddingBlock: themeSpacing(1),\n paddingInline: themeSpacing(2),\n border: \"none\",\n borderRadius: themeSpacing(1),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n transition:\"background-color 300ms ease\",\n \"&:hover:not([disabled])\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n },\n \"&[aria-pressed=true]\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", accentColor.get(listener)),\n color: (listener) => themeColor(listener, \"shift-12\", accentColor.get(listener)),\n },\n \"&:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n outlineOffset: `-${themeSpacing(0.5)}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n },\n },\n };\n}\n\nexport { toggle };\n","import { type PartialElement, merge, toState, type ValueOrState } from \"@domphy/core\";\r\nimport { themeSpacing, themeColor, themeSize, type ThemeColor } from \"@domphy/theme\";\r\n\r\nfunction toggleGroup(props: {\r\n value?: ValueOrState<string | string[]>;\r\n multiple?: boolean;\r\n color?: ThemeColor;\r\n} = {}): PartialElement {\r\n const { multiple = false, color = \"neutral\" } = props;\r\n return {\r\n role: \"group\",\r\n _context: {\r\n toggleGroup: {\r\n value: toState(props.value ?? (multiple ? [] : \"\")),\r\n multiple,\r\n },\r\n },\r\n style: {\r\n display: \"flex\",\r\n paddingBlock: themeSpacing(1),\r\n paddingInline: themeSpacing(1),\r\n gap: themeSpacing(1),\r\n borderRadius: themeSpacing(2),\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-3\", color)}`,\r\n outlineOffset: \"-1px\",\r\n }\r\n };\r\n}\r\n\r\nexport { toggleGroup };\r\n","import { type PartialElement } from \"@domphy/core\";\r\nimport { themeSpacing } from \"@domphy/theme\";\r\n\r\nfunction inputOTP(): PartialElement {\r\n return {\r\n style: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: themeSpacing(2),\r\n \"& > *\":{\r\n minWidth:themeSpacing(9) + \"!important\",\n }\r\n },\r\n _onMount: (node) => {\r\n const container = node.domElement as HTMLElement;\r\n const getInputs = () => Array.from(container.querySelectorAll(\"input\")) as HTMLInputElement[];\r\n\r\n const onInput = (e: Event) => {\r\n const inputs = getInputs();\r\n const target = e.target as HTMLInputElement;\r\n const idx = inputs.indexOf(target);\r\n if (target.value && idx < inputs.length - 1) {\r\n inputs[idx + 1].focus();\r\n }\r\n };\r\n\r\n const onKeydown = (e: KeyboardEvent) => {\r\n const inputs = getInputs();\r\n const target = e.target as HTMLInputElement;\r\n const idx = inputs.indexOf(target);\r\n if (e.key === \"Backspace\" && !target.value && idx > 0) {\r\n inputs[idx - 1].focus();\r\n }\r\n if (e.key === \"ArrowLeft\" && idx > 0) inputs[idx - 1].focus();\r\n if (e.key === \"ArrowRight\" && idx < inputs.length - 1) inputs[idx + 1].focus();\r\n };\r\n\r\n const onPaste = (e: ClipboardEvent) => {\r\n e.preventDefault();\r\n const text = e.clipboardData?.getData(\"text\") ?? \"\";\r\n const inputs = getInputs();\r\n const startIdx = inputs.indexOf(e.target as HTMLInputElement);\r\n [...text].forEach((char, i) => {\r\n if (inputs[startIdx + i]) inputs[startIdx + i].value = char;\r\n });\r\n const lastFilled = Math.min(startIdx + text.length - 1, inputs.length - 1);\r\n inputs[lastFilled]?.focus();\r\n };\r\n\r\n container.addEventListener(\"input\", onInput);\r\n container.addEventListener(\"keydown\", onKeydown as EventListener);\r\n container.addEventListener(\"paste\", onPaste as EventListener);\r\n\r\n node.addHook(\"Remove\", () => {\r\n container.removeEventListener(\"input\", onInput);\r\n container.removeEventListener(\"keydown\", onKeydown as EventListener);\r\n container.removeEventListener(\"paste\", onPaste as EventListener);\r\n });\r\n },\r\n };\r\n}\r\n\r\nexport { inputOTP };\r\n","import type { PartialElement } from \"@domphy/core\";\nimport { toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction alert(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"primary\", \"color\");\n\n return {\n role: \"alert\",\n // Alert is a semantic surface block, so it should shift the local surface context.\n dataTone: \"shift-2\",\n style: {\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: themeSpacing(3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n boxShadow: (listener) => `inset ${themeSpacing(1)} 0 0 0 ${themeColor(listener, \"shift-8\", color.get(listener))}`,\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n },\n };\n}\n\nexport { alert };\n","import { type PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction avatar(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"primary\", \"color\");\n\n return {\n dataTone: \"shift-2\",\n style: {\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n borderRadius: \"50%\",\n flexShrink: 0,\n width: themeSpacing(9),\n height: themeSpacing(9),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n fontWeight: \"600\",\n userSelect: \"none\",\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n color: (listener) => themeColor(listener, \"shift-11\", color.get(listener)),\n \"& img\": {\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n },\n },\n };\n}\n\nexport { avatar };\n","\nimport { type DomphyElement, type PartialElement, type ValueOrState, toState } from '@domphy/core'\nimport { themeSpacing, themeColor, themeSize, ThemeColor } from \"@domphy/theme\"\n\nfunction badge(props: {\n color?: ValueOrState<ThemeColor>\n label?: ValueOrState<string | number>\n} = {}): PartialElement {\n const { label = 999 } = props\n let state = toState(label)\n const color = toState(props.color ?? \"danger\", \"color\")\n return {\n style: {\n position: \"relative\",\n \"&::after\": {\n content: (l) => `\"${state.get(l)}\"`,\n position: \"absolute\",\n top: 0,\n right: 0,\n transform: \"translate(50%,-50%)\",\n paddingInline:themeSpacing(1),\n minWidth:themeSpacing(6),\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent:\"center\",\n fontSize: (l) => themeSize(l, \"decrease-1\"),\n borderRadius: themeSpacing(999),\n backgroundColor: (l) => themeColor(l, \"shift-9\", color.get(l)),\n color: (l) => themeColor(l, \"shift-0\", color.get(l)),\n }\n }\n }\n}\n\nexport { badge };\n","import type { PartialElement } from \"@domphy/core\";\nimport { toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction breadcrumb(props: {\n color?: ValueOrState<ThemeColor>;\n separator?: string;\n} = {}): PartialElement {\n const { separator = \"/\" } = props;\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName !== \"nav\") console.warn('\"breadcrumb\" patch must use nav tag');\n },\n ariaLabel: \"breadcrumb\",\n style: {\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n gap: themeSpacing(1),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"& > *\": {\n display: \"inline-flex\",\n alignItems: \"center\",\n color: (listener) => themeColor(listener, \"shift-8\", color.get(listener)),\n },\n \"& > *:not(:last-child)::after\": {\n content: `\"${separator}\"`,\n color: (listener) => themeColor(listener, \"shift-4\", color.get(listener)),\n paddingInlineStart: themeSpacing(1),\n },\n \"& > [aria-current=page]\": {\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n pointerEvents: \"none\",\n },\n },\n };\n}\n\nexport { breadcrumb };\n","import type { PartialElement } from \"@domphy/core\";\nimport { toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction breadcrumbEllipsis(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName !== \"button\") {\n console.warn('\"breadcrumbEllipsis\" patch must use button tag');\n }\n },\n ariaLabel: \"More breadcrumb items\",\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n paddingInline: themeSpacing(1),\n border: \"none\",\n background: \"none\",\n cursor: \"pointer\",\n color: (listener) => themeColor(listener, \"shift-8\", color.get(listener)),\n borderRadius: themeSpacing(1),\n \"&:hover\": {\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n },\n \"&:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", color.get(listener))}`,\n outlineOffset: themeSpacing(0.5),\n },\n },\n };\n}\n\nexport { breadcrumbEllipsis };\n","import { type PartialElement, type DomphyElement, type StyleObject, type ValueOrState, toState, merge } from \"@domphy/core\";\r\nimport { themeSpacing, themeColor, themeDensity, themeSize, type ThemeColor, } from \"@domphy/theme\";\r\nimport { type Placement } from \"@floating-ui/dom\";\r\nimport { tag } from \"./tag.js\"\r\nimport { creatFloating } from \"../utils/floating.js\"\r\n\r\nfunction combobox(props: {\r\n multiple?: boolean;\r\n value?: ValueOrState<Array<number | string | null | undefined> | number | string | null | undefined>;\r\n options?: Array<{ label: string, value: string }>;\r\n placement?: ValueOrState<Placement>;\r\n content: DomphyElement;\r\n color?: ThemeColor;\r\n open?: ValueOrState<boolean>;\r\n input?: DomphyElement;\r\n}): PartialElement {\r\n const {\r\n options = [],\r\n placement = \"bottom\",\r\n color = \"neutral\",\r\n open = false,\r\n multiple = false\r\n } = props;\r\n\r\n const state = toState(props.value)\r\n let openState = toState(open)\r\n let { show, hide, anchorPartial } = creatFloating({ open: openState, placement: toState(placement), content: props.content })\r\n\r\n const popoverPartial: PartialElement = {\r\n onClick: () => !multiple && hide(),\r\n };\r\n\r\n merge(props.content, popoverPartial);\r\n\r\n const inputStyle: StyleObject = {\r\n border: \"none\",\r\n outline: \"none\",\r\n padding: 0,\r\n margin: 0,\r\n flex: 1,\r\n height: themeSpacing(6),\r\n marginInlineStart: themeSpacing(2),\r\n fontSize: (listener: any) => themeSize(listener, \"inherit\"),\r\n color: (listener: any) => themeColor(listener, \"shift-9\", color),\r\n backgroundColor: (listener: any) => themeColor(listener, \"inherit\", color),\r\n }\r\n\r\n let inputElement: DomphyElement\r\n if (props.input) {\r\n merge(props.input, { onFocus: () => show(), style: inputStyle, _key: \"combobox-input\" })\r\n inputElement = props.input\r\n } else {\r\n inputElement = {\r\n input: null,\r\n onFocus: () => show(),\r\n value: (listener: any) => { state.get(listener); return \"\" },\r\n style: inputStyle,\r\n _key: \"combobox-input\"\r\n }\r\n }\r\n\r\n const wrap: DomphyElement<\"div\"> = {\r\n div: (listener) => {\r\n const val = state.get(listener)\r\n const vals = Array.isArray(val) ? val : [val]\r\n const opts = options.filter(opt => vals.includes(opt.value))\r\n const items: DomphyElement[] = opts.map(opt => {\r\n return {\r\n span: opt.label,\r\n $: [tag({ color, removable: true })],\r\n _key: opt.value,\r\n _onRemove: (_node) => {\r\n const cur = state.get()\r\n const curVals = Array.isArray(cur) ? cur : [cur]\r\n const filter = curVals.filter(v => v !== opt.value)\r\n multiple ? state.set(filter as any) : state.set(filter[0] as any)\r\n }\r\n }\r\n })\r\n items.push(inputElement)\r\n return items\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n gap: themeSpacing(1),\r\n }\r\n }\r\n\r\n let partial: PartialElement = {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"div\") {\r\n console.warn(`\"combobox\" primitive patch must use div tag`);\r\n }\r\n },\r\n _onInit: (node) => node.children.insert(wrap),\r\n style: {\r\n minWidth: themeSpacing(32),\r\n outlineOffset: \"-1px\",\r\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n }\r\n };\r\n\r\n merge(anchorPartial, partial)\r\n return anchorPartial\r\n}\r\n\r\nexport { combobox };\r\n","import type { PartialElement, DomphyElement } from \"@domphy/core\";\nimport { toState, type ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nconst xSvg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M6.707 5.293l5.293 5.292l5.293 -5.292a1 1 0 0 1 1.414 1.414l-5.292 5.293l5.292 5.293a1 1 0 0 1 -1.414 1.414l-5.293 -5.292l-5.293 5.292a1 1 0 1 1 -1.414 -1.414l5.292 -5.293l-5.292 -5.293a1 1 0 0 1 1.414 -1.414\" /></svg>`\n\nfunction tag(props: {\n color?: ValueOrState<ThemeColor>\n removable?: boolean\n} = {}): PartialElement {\n const { removable=false } = props;\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n dataTone: \"shift-2\",\n _onInit: (node) => {\n\n const removeBtn: DomphyElement<\"span\"> = {\n span: xSvg,\n onClick: (e) => { (e as Event).stopPropagation(); node.remove() },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n cursor: \"pointer\",\n borderRadius: themeSpacing(1),\n width: themeSpacing(4),\n height: themeSpacing(4),\n flexShrink: 0,\n \"&:hover\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-4\", color.get(listener)),\n }\n }\n }\n\n removable && node.children.insert(removeBtn)\n\n },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n whiteSpace: \"nowrap\",\n userSelect: \"none\",\n height: themeSpacing(6),\n paddingBlock: \"0px\",\n borderRadius: themeSpacing(1),\n paddingInlineStart: themeSpacing(2),\n paddingInlineEnd: removable ? themeSpacing(1) : themeSpacing(2),\n gap: themeSpacing(2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n },\n };\n}\n\nexport { tag };\n","import { ElementNode, State, PartialElement, DomphyElement, toState, ValueOrState, merge } from \"@domphy/core\";\r\nimport { computePosition, autoUpdate, offset, flip, shift, type Placement } from \"@floating-ui/dom\";\r\n\r\nfunction creatFloating(props: {\r\n open?: ValueOrState<boolean>;\r\n placement: State<Placement>;\r\n content: DomphyElement;\r\n}) {\r\n const {\r\n open = false,\r\n placement,\r\n } = props;\r\n\r\n let timer: ReturnType<typeof setTimeout> | null = null;\r\n let cleanup: (() => void) | null = null;\r\n let reference: HTMLElement | null = null\r\n let floating: HTMLElement | null = null\r\n const openState = toState(open);\r\n\r\n const instantShow = () => {\r\n if (reference && floating) {\r\n cleanup && cleanup();\r\n cleanup = autoUpdate(reference, floating, () => {\r\n computePosition(reference as HTMLElement, floating as HTMLElement, {\r\n placement: placement.get() as Placement,\r\n middleware: [offset(12), flip(), shift()],\r\n strategy: \"fixed\"\r\n }).then(({ x, y, placement: resolved }) => {\r\n Object.assign((floating as HTMLElement).style, { left: `${x}px`, top: `${y}px` });\r\n placement.set(resolved)\r\n });\r\n });\r\n openState.set(true)\r\n }\r\n };\r\n const instantHide = () => { cleanup && cleanup(); cleanup = null; openState.set(false) }\r\n const show = () => { timer && clearTimeout(timer); timer = setTimeout(instantShow, 100) }\r\n const hide = () => { timer && clearTimeout(timer); timer = setTimeout(instantHide, 100) }\r\n\r\n const floatingPartial: PartialElement = {\r\n style: {\r\n position: \"fixed\",\r\n pointerEvents: \"auto\",\r\n visibility: (listener) => openState.get(listener) ? \"visible\" : \"hidden\",\r\n\r\n },\r\n _onMount: (node) => floating = node.domElement as HTMLElement,\r\n\r\n _portal: (rootNode) => {\r\n let overlay = rootNode.domElement!.querySelector(`#domphy-floating`);\r\n if (!overlay) {\r\n const overlayEle: DomphyElement<\"div\"> = {\r\n div: [],\r\n id: `domphy-floating`,\r\n style: { position: \"fixed\", inset: 0, zIndex: 20, pointerEvents: \"none\" },\r\n };\r\n const overlayNode = rootNode.children!.insert(overlayEle) as ElementNode;\r\n overlay = overlayNode.domElement!;\r\n }\r\n return overlay;\r\n },\r\n };\r\n\r\n merge(props.content, floatingPartial);\r\n\r\n const anchorPartial: PartialElement = {\r\n onKeyDown: (e) => (e as KeyboardEvent).key === \"Escape\" && hide(),\r\n _onMount: (node) => {\r\n const root = node.getRoot()\r\n reference = node.domElement as HTMLElement\r\n\r\n const floatingNode = root.children!.insert(props.content) as ElementNode\r\n \r\n const handleOutside = (event: MouseEvent) => {\r\n if (!openState.get() || !reference || !floating) return;\r\n\r\n const target = event.target as Node;\r\n if (!reference.contains(target) && !floating.contains(target)) {\r\n hide()\r\n }\r\n }\r\n node.getRoot().domElement!.addEventListener(\"click\", handleOutside)\r\n \r\n node.addHook(\"BeforeRemove\", () => {\r\n if (timer) clearTimeout(timer);\r\n floatingNode && floatingNode.remove();\r\n node.getRoot().domElement!.removeEventListener(\"click\", handleOutside)\r\n });\r\n }\r\n };\r\n\r\n return { show, hide, anchorPartial };\r\n}\r\n\r\nexport { creatFloating };\r\n","import { toState, ValueOrState, PartialElement } from \"@domphy/core\";\r\nimport { themeSpacing, themeColor, themeSize, type ThemeColor } from \"@domphy/theme\";\r\nimport { type Placement } from \"@floating-ui/dom\";\r\n\r\nfunction popoverArrow(props: {\r\n placement?: ValueOrState<Placement>;\r\n sideOffset?: string;\r\n color?: ThemeColor;\r\n bordered?: boolean;\r\n\r\n} = {}): PartialElement {\r\n let {\r\n placement = \"bottom-end\",\r\n color = \"neutral\",\r\n sideOffset = themeSpacing(6),\r\n bordered = true\r\n } = props\r\n\r\n let place = toState(placement)\r\n\r\n const flipMap: Record<Placement, Placement> = {\r\n \"top\": \"bottom\",\r\n \"bottom\": \"top\",\r\n \"left\": \"right\",\r\n \"right\": \"left\",\r\n \"top-start\": \"bottom-end\",\r\n \"top-end\": \"bottom-start\",\r\n \"bottom-start\": \"top-end\",\r\n \"bottom-end\": \"top-start\",\r\n \"left-start\": \"right-end\",\r\n \"left-end\": \"right-start\",\r\n \"right-start\": \"left-end\",\r\n \"right-end\": \"left-start\",\r\n }\r\n\r\n const getFlipped = (listener: any) => flipMap[place.get(listener)] ?? flipMap[\"bottom-end\"]\r\n const start = (pos: string) => pos.includes(\"start\") ? sideOffset : pos.includes(\"end\") ? \"auto\" : \"50%\"\r\n const end = (pos: string) => pos.includes(\"end\") ? sideOffset : pos.includes(\"start\") ? \"auto\" : \"50%\"\r\n\r\n return {\r\n style: {\r\n fontSize: (listener) => themeSize(listener),\r\n backgroundColor: (listener) => themeColor(listener),\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\r\n position: \"relative\",\r\n \"&::after\": {\r\n content: `\"\"`,\r\n position: \"absolute\",\r\n width: themeSpacing(1.5),\r\n height: themeSpacing(1.5),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n borderWidth: bordered ? \"1px\" : \"0px\",\r\n borderColor: (listener) => themeColor(listener, \"inherit\", color),\r\n borderTopStyle: (listener) => {\r\n const pos = getFlipped(listener)\r\n\r\n return pos.includes(\"top\") || pos.includes(\"right\") ? `solid` : \"none\"\r\n },\r\n borderBottomStyle: (listener) => {\r\n const pos = getFlipped(listener)\r\n \r\n return pos.includes(\"bottom\") || pos.includes(\"left\") ? `solid` : \"none\"\r\n },\r\n borderLeftStyle: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"top\") || pos.includes(\"left\") ? `solid` : \"none\"\r\n },\r\n borderRightStyle: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"bottom\") || pos.includes(\"right\") ? `solid` : \"none\"\r\n },\r\n top: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"top\") ? 0 : pos.includes(\"bottom\") ? \"auto\" : start(pos)\r\n },\r\n right: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"right\") ? 0 : pos.includes(\"left\") ? \"auto\" : end(pos)\r\n },\r\n bottom: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"bottom\") ? 0 : pos.includes(\"top\") ? \"auto\" : end(pos)\r\n },\r\n left: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"left\") ? 0 : pos.includes(\"right\") ? \"auto\" : start(pos)\r\n },\r\n transform: (listener) => {\r\n const pos = getFlipped(listener)\r\n const x = pos.includes(\"right\") || (pos.includes(\"end\") && !pos.includes(\"left\")) ? \"50%\" : \"-50%\"\r\n const y = pos.includes(\"bottom\") || (pos.includes(\"end\") && !pos.includes(\"top\")) ? \"50%\" : \"-50%\"\r\n return `translate(${x},${y}) rotate(45deg)`\r\n },\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport { popoverArrow }","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\r\nimport { themeSpacing, ThemeColor, themeColor, themeDensity, themeSize } from \"@domphy/theme\";\r\n\r\nfunction blockquote(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\r\n const color = toState(props.color ?? \"inherit\", \"color\");\r\n\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"blockquote\") {\r\n console.warn(`\"blockquote\" primitive patch must use blockquote tag`);\r\n }\r\n },\r\n dataTone: \"shift-2\",\r\n style: {\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\r\n boxShadow: (listener) => `inset ${themeSpacing(1)} 0 0 0 ${themeColor(listener, \"shift-4\", color.get(listener))}`,\r\n border: \"none\",\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\r\n margin: 0,\r\n },\r\n };\r\n}\r\n\r\nexport { blockquote };\r\n","import { type PartialElement, toState, type ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor, } from \"@domphy/theme\";\n\nfunction button(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"primary\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"button\") {\n console.warn(`\"button\" primitive patch must use button tag`);\n }\n },\n style: {\n appearance: \"none\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n // Single-line bounded control: block/radius = 1D, inline = 3D.\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n width: \"fit-content\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: (listener) => themeSpacing(themeDensity(listener) * 1),\n userSelect: \"none\",\n fontFamily: \"inherit\",\n lineHeight: \"inherit\",\n border: \"none\",\n outlineOffset: \"-1px\",\n outlineWidth: \"1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"&:hover:not([disabled]):not([aria-busy=true])\": {\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n },\n \"&:focus-visible\": {\n boxShadow: (listener) => `inset 0 0 0 ${themeSpacing(0.5)} ${themeColor(listener, \"shift-6\", color.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n },\n \"&[aria-busy=true]\": {\n opacity: 0.7,\n cursor: \"wait\",\n pointerEvents: \"none\",\n },\n },\n };\n}\n\nexport { button };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor, themeSize } from \"@domphy/theme\";\n\nfunction inputCheckbox(props: { color?: ValueOrState<ThemeColor>, accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"checkbox\",\n _onInsert: (node) => {\n if (node.tagName !== \"input\") {\n console.warn(`\"inputCheckbox\" primitive patch must use input tag`);\n }\n },\n style: {\n appearance: \"none\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n display: \"inline-flex\",\n position: \"relative\",\n width: themeSpacing(6),\n height: themeSpacing(6),\n justifyContent: \"center\",\n alignItems: \"center\",\n transition: \"background-color 300ms, outline-color 300ms\",\n margin: 0,\n padding: 0,\n \"&::before\": {\n content: `\"\"`,\n display: \"block\",\n borderRadius: themeSpacing(1),\n lineHeight: 1,\n cursor: \"pointer\",\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n width: themeSpacing(4),\n height: themeSpacing(4),\n },\n \"&:hover::before\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n },\n \"&:checked::before\": {\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n backgroundColor: (listener) => themeColor(listener, \"shift-8\", accentColor.get(listener)),\n },\n \"&:checked:hover:not([disabled])::before\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-7\", accentColor.get(listener)),\n },\n \"&:checked::after\": {\n content: `\"\"`,\n display: \"block\",\n position: \"absolute\",\n top: \"25%\",\n insetInlineStart: \"37%\",\n width: \"20%\",\n height: \"30%\",\n border: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"inherit\", accentColor.get(listener))}`,\n borderTop: 0,\n borderInlineStart: 0,\n transform: \"rotate(45deg)\",\n },\n \"&:indeterminate::before\": {\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", accentColor.get(listener)),\n },\n \"&:indeterminate::after\": {\n content: `\"\"`,\n position: \"absolute\",\n inset: \"30%\",\n backgroundColor: (listener) => themeColor(listener, \"shift-8\", accentColor.get(listener)),\n },\n \"&:indeterminate:hover:not([disabled])::after\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-7\", accentColor.get(listener)),\n },\n \"&:focus-visible\": {\n borderRadius: themeSpacing(1.5),\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n cursor: \"not-allowed\",\n },\n \"&[disabled]::before, &[disabled]::after\": {\n outline: \"none\",\n backgroundColor: (listener) => themeColor(listener, \"shift-4\", \"neutral\"),\n pointerEvents: \"none\",\n },\n }\n }\n}\n\nexport { inputCheckbox };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeSpacing, themeColor, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction code(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n dataTone: \"shift-2\",\n _onInsert: (node) => {\n if (node.tagName != \"code\") {\n console.warn(`\"code\" primitive patch must use code tag`);\n }\n },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n height: themeSpacing(6),\n paddingInline: themeSpacing(1.5),\n borderRadius: themeSpacing(1),\n },\n };\n}\n\nexport { code };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction details(\n props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor>; duration?: number } = {}\n): PartialElement {\n const { duration = 240 } = props;\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"details\") {\n console.warn(`\"details\" primitive patch must use details tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n\n overflow: \"hidden\",\n \"& > summary\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n listStyle: \"none\",\n display: \"flex\",\n justifyContent:\"space-between\",\n alignItems: \"center\",\n gap: themeSpacing(2),\n cursor: \"pointer\",\n userSelect: \"none\",\n fontWeight: 500,\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n height: themeSpacing(10),\n },\n \"& > summary::-webkit-details-marker\": {\n display: \"none\",\n },\n \"& > summary::marker\": {\n content: `\"\"`,\n },\n \"& > summary::after\": {\n content: `\"\"`,\n width: themeSpacing(2),\n height: themeSpacing(2),\n flexShrink: 0,\n marginTop: `-${themeSpacing(0.5)}`,\n borderInlineEnd: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-9\", color.get(listener))}`,\n borderBottom: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-9\", color.get(listener))}`,\n transform: \"rotate(45deg)\",\n transition: `transform ${duration}ms ease`,\n },\n \"&[open] > summary::after\": {\n transform: \"rotate(-135deg)\",\n },\n \"& > summary:hover\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n },\n \"& > summary:focus-visible\": {\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n outlineOffset: `-${themeSpacing(0.5)}`,\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"& > :not(summary)\": {\n maxHeight: \"0px\",\n opacity: 0,\n overflow: \"hidden\",\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingTop: 0,\n paddingBottom: 0,\n transition: `max-height ${duration}ms ease, opacity ${duration}ms ease, padding ${duration}ms ease`,\n },\n \"&[open] > :not(summary)\": {\n maxHeight: themeSpacing(250),\n opacity: 1,\n paddingTop: (listener) => themeSpacing(themeDensity(listener) * 1),\n paddingBottom: (listener) => themeSpacing(themeDensity(listener) * 3),\n },\n },\n };\n}\n\nexport { details };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction descriptionList(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"dl\") {\n console.warn(`\"descriptionList\" primitive patch must use dl tag`);\n }\n },\n style: {\n display: \"grid\",\n gridTemplateColumns: `minmax(${themeSpacing(24)}, max-content) 1fr`,\n columnGap: themeSpacing(4),\n margin: 0,\n \"& dt\": {\n margin: 0,\n fontWeight: 600,\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n },\n \"& dd\": {\n margin: 0,\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n },\n },\n };\n}\n\nexport { descriptionList };\n","import { type PartialElement, type ValueOrState, toState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\r\n\r\nfunction dialog(props: { color?: ThemeColor; open?: ValueOrState<boolean> } = {}): PartialElement {\r\n const { color = \"neutral\", open = false } = props;\r\n const state = toState(open)\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"dialog\") {\r\n console.warn(`\"dialog\" primitive patch must use dialog tag`);\r\n }\r\n },\r\n onClick: (e: MouseEvent, node) => {\r\n if (e.target !== node.domElement) return\r\n const r = node.domElement!.getBoundingClientRect()\r\n const inside =\r\n e.clientX >= r.left &&\r\n e.clientX <= r.right &&\r\n e.clientY >= r.top &&\r\n e.clientY <= r.bottom\r\n if (!inside) state.set(false)\r\n },\r\n onTransitionEnd: (_e, node) => {\r\n const dlg = node.domElement as HTMLDialogElement\r\n if (dlg.style.opacity === \"0\") {\r\n dlg.close()\r\n document.body.style.overflow = \"\"\r\n }\r\n },\r\n _onMount: (node) => {\r\n const dlg = node.domElement as HTMLDialogElement\r\n const update = (val: boolean) => {\r\n if (val) {\r\n dlg.showModal()\r\n document.body.style.overflow = \"hidden\"\r\n requestAnimationFrame(() => {\r\n dlg.style.opacity = \"1\"\r\n const focusable = dlg.querySelector<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n )\r\n focusable?.focus()\r\n })\r\n } else {\r\n dlg.style.opacity = \"0\"\r\n }\r\n }\r\n update(state.get())\r\n state.addListener(update)\r\n },\r\n style: {\r\n opacity: \"0\",\r\n transition: \"opacity 200ms ease\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n color: (listener) => themeColor(listener, \"shift-10\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n border: \"none\",\r\n padding: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n boxShadow: (listener) => `0 ${themeSpacing(9)} ${themeSpacing(16)} ${themeColor(listener, \"shift-4\", \"neutral\")}`,\r\n \"&::backdrop\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\r\n opacity: 0.75,\r\n }\r\n },\r\n };\r\n}\r\n\r\nexport { dialog };\r\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction emphasis(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"em\") {\n console.warn(`\"emphasis\" primitive patch must use em tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n fontStyle: \"italic\",\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n },\n };\n}\n\nexport { emphasis };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction figure(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"figure\") {\n console.warn(`\"figure\" primitive patch must use figure tag`);\n }\n },\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: themeSpacing(2),\n marginInline: 0,\n marginTop: themeSpacing(3),\n marginBottom: themeSpacing(3),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n \"& img, & svg, & video, & canvas\": {\n display: \"block\",\n maxWidth: \"100%\",\n borderRadius: themeSpacing(2),\n },\n \"& figcaption\": {\n fontSize: (listener) => themeSize(listener, \"decrease-1\"),\n color: (listener) => themeColor(listener, \"shift-8\", color.get(listener)),\n lineHeight: 1.45,\n },\n },\n };\n}\n\nexport { figure };\n","import { type PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, type ThemeColor } from \"@domphy/theme\";\n\nfunction formGroup(props: { color?: ValueOrState<ThemeColor>; layout?: \"horizontal\" | \"vertical\" } = {}): PartialElement {\n const { layout = \"horizontal\" } = props;\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n const isVertical = layout === \"vertical\";\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"fieldset\") {\n console.warn(`\"formGroup\" patch must use fieldset tag`);\n }\n },\n style: {\n margin: 0,\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 3),\n border: \"none\",\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n display: \"grid\",\n gridTemplateColumns: isVertical ? `minmax(0, 1fr)` : `max-content minmax(0, 1fr)`,\n columnGap: themeSpacing(4),\n rowGap: themeSpacing(3),\n alignItems: \"start\",\n \"& > legend\": {\n gridColumn: \"1 / -1\",\n margin: 0,\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n fontWeight: 600,\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n },\n \"& > label\": {\n gridColumn: \"1\",\n alignSelf: \"start\",\n margin: 0,\n paddingBlock: (listener) => isVertical ? \"0px\" : themeSpacing(themeDensity(listener) * 1),\n },\n \"& > label:has(+ :not(legend, label, p) + p)\": {\n gridRow: isVertical ? \"auto\" : \"span 2\",\n },\n \"& > :not(legend, label, p)\": {\n gridColumn: isVertical ? \"1\" : \"2\",\n minWidth: 0,\n width: \"100%\",\n boxSizing: \"border-box\",\n },\n \"& > p\": {\n gridColumn: isVertical ? \"1\" : \"2\",\n minWidth: 0,\n margin: 0,\n marginBlockStart: `calc(${themeSpacing(2)} * -1)`,\n fontSize: (listener) => themeSize(listener, \"decrease-1\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n },\n },\n };\n}\n\nexport { formGroup };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nconst Headinghift: Record<string, string> = {\n h6: \"decrease-1\",\n h5: \"inherit\",\n h4: \"increase-1\",\n h3: \"increase-2\",\n h2: \"increase-3\",\n h1: \"increase-4\",\n}\n\nfunction heading(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (![\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(node.tagName)) {\n console.warn(`\"heading\" primitive patch must use heading tags [h1...h6]`);\n }\n },\n style: {\n color: (listener) => themeColor(listener, \"shift-11\", color.get(listener)),\n marginTop: 0,\n marginBottom: themeSpacing(2),\n fontSize: (listener) => {\n const offset = Headinghift[listener.elementNode.tagName] || \"inherit\";\n return themeSize(listener, offset);\n },\n },\n };\n}\n\nexport { heading };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction horizontalRule(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"hr\") {\n console.warn(`\"horizontalRule\" primitive patch must use hr tag`);\n }\n },\n style: {\n border: 0,\n height: \"1px\",\n marginInline: 0,\n marginTop: themeSpacing(3),\n marginBottom: themeSpacing(3),\n backgroundColor: (listener) => themeColor(listener, \"shift-4\", color.get(listener)),\n },\n };\n}\n\nexport { horizontalRule };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction image(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n dataTone: \"shift-2\",\n _onInsert: (node) => {\n if (node.tagName != \"img\") {\n console.warn(`\"image\" primitive patch must use img tag`);\n }\n },\n style: {\n display: \"block\",\n width: \"100%\",\n maxWidth: \"100%\",\n height: \"auto\",\n objectFit: \"cover\",\n borderRadius: themeSpacing(2),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n },\n };\n}\n\nexport { image };\n","import type { PartialElement } from \"@domphy/core\";\nimport { toState, ValueOrState } from \"@domphy/core\";\nimport { themeSpacing, themeColor, themeSize, type ThemeColor } from \"@domphy/theme\";\n\nfunction icon(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n return {\n _onInsert: (node) => {\n if (node.tagName != \"span\") {\n console.warn(`\"icon\" primitive patch should use span tag`);\n }\n },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n alignSelf: \"center\",\n justifySelf: \"center\",\n verticalAlign: \"middle\",\n width: themeSpacing(4),\n height: themeSpacing(4),\n flexShrink: \"0\",\n fontSize: (listener) => themeSize(listener),\n backgroundColor: \"transparent\",\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener))\n },\n };\n}\n\nexport { icon };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, type ThemeColor } from \"@domphy/theme\";\n\nfunction inputColor(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"color\",\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputColor\" primitive patch must use input tag`);\n }\n (element as any).type = \"color\";\n },\n style: {\n appearance: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 1),\n blockSize: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n inlineSize: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n backgroundColor: \"transparent\",\n \"&::-webkit-color-swatch-wrapper\": {\n margin: 0,\n padding: 0,\n },\n \"&::-webkit-color-swatch\": {\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n },\n \"&:hover:not([disabled]), &:focus-visible\": {\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n },\n },\n };\n}\n\nexport { inputColor };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\ntype InputDateTimeMode = \"date\" | \"time\" | \"week\" | \"month\" | \"datetime-local\";\n\nfunction inputDateTime(\n props: { mode?: InputDateTimeMode; color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}\n): PartialElement {\n const { mode = \"datetime-local\" } = props;\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: mode,\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputDateTime\" primitive patch must use input tag`);\n }\n (element as any).type = mode;\n },\n style: {\n fontFamily: \"inherit\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n lineHeight: \"inherit\",\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n \"&::-webkit-calendar-picker-indicator\": {\n cursor: \"pointer\",\n opacity: 0.85,\n },\n \"&:hover:not([disabled]):not([aria-busy=true]), &:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n },\n \"&:invalid\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", \"error\")}`,\n },\n },\n };\n}\n\nexport { inputDateTime };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction inputFile(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"file\",\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputFile\" primitive patch must use input tag`);\n }\n (element as any).type = \"file\";\n },\n style: {\n fontFamily: \"inherit\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n lineHeight: \"inherit\",\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 1),\n \"&::file-selector-button\": {\n marginBlock: \"auto\",\n fontFamily: \"inherit\",\n fontSize: \"inherit\",\n border: \"none\",\n borderRadius: themeSpacing(1),\n height: themeSpacing(6),\n paddingInline: themeSpacing(2),\n cursor: \"pointer\",\n color: (listener) => themeColor(listener, \"shift-10\", accentColor.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", accentColor.get(listener)),\n },\n \"&::-webkit-file-upload-button\": {\n marginTop: themeSpacing(1),\n fontFamily: \"inherit\",\n fontSize: \"inherit\",\n border: \"none\",\n borderRadius: themeSpacing(1),\n height: themeSpacing(6),\n paddingInline: themeSpacing(2),\n cursor: \"pointer\",\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n },\n \"&:hover:not([disabled]):not([aria-busy=true]), &:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n },\n \"&[disabled]::file-selector-button, &[disabled]::-webkit-file-upload-button\": {\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", \"neutral\"),\n },\n },\n };\n}\n\nexport { inputFile };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction inputSearch(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"search\",\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputSearch\" primitive patch must use input tag`);\n }\n (element as any).type = \"search\";\n },\n style: {\n fontFamily: \"inherit\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n lineHeight: \"inherit\",\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n minWidth: themeSpacing(32),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n \"&::placeholder\": {\n color: (listener) => themeColor(listener, \"shift-7\", color.get(listener)),\n },\n \"&::-webkit-search-decoration\": {\n display: \"none\",\n },\n \"&::-webkit-search-cancel-button\": {\n cursor: \"pointer\",\n },\n \"&:hover:not([disabled]):not([aria-busy=true]), &:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n },\n },\n };\n}\n\nexport { inputSearch };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction inputText(props: { color?: ValueOrState<ThemeColor>, accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"text\",\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputText\" primitive patch must use input tag and text type`);\n }\n (element as any).type = \"text\";\n },\n style: {\n fontFamily: \"inherit\",\n lineHeight: \"inherit\",\n minWidth: themeSpacing(10),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"&::placeholder\": {\n color: (listener) => themeColor(listener, \"shift-7\"),\n },\n \"&:not(:placeholder-shown)\": {\n color: (listener) => themeColor(listener, \"shift-10\"),\n },\n \"&:hover:not([disabled]):not([aria-busy=true]), &:focus-visible\": {\n\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n },\n \"&:invalid:not(:placeholder-shown)\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", \"error\")}`,\n },\n \"&[data-status=error]\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", \"error\")}`,\n },\n \"&[data-status=warning]\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", \"warning\")}`,\n },\n },\n };\n}\n\nexport { inputText };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction inputRange(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"range\",\n _onInsert: (node) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputRange\" primitive patch must use input tag`);\n }\n },\n style: {\n appearance: \"none\",\n width: \"100%\",\n margin: 0,\n padding: 0,\n height: themeSpacing(4),\n background: \"transparent\",\n cursor: \"pointer\",\n \"&::-webkit-slider-runnable-track\": {\n height: themeSpacing(1.5),\n borderRadius: themeSpacing(999),\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n },\n \"&::-moz-range-track\": {\n height: themeSpacing(1.5),\n borderRadius: themeSpacing(999),\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n },\n \"&::-webkit-slider-thumb\": {\n appearance: \"none\",\n width: themeSpacing(4),\n height: themeSpacing(4),\n borderRadius: themeSpacing(999),\n border: \"none\",\n marginTop: `calc((${themeSpacing(1.5)} - ${themeSpacing(4)}) / 2)`,\n backgroundColor: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n },\n \"&::-moz-range-thumb\": {\n width: themeSpacing(4),\n height: themeSpacing(4),\n borderRadius: themeSpacing(999),\n border: \"none\",\n backgroundColor: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n },\n \"&:hover:not([disabled])::-webkit-slider-thumb\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-10\", accentColor.get(listener)),\n },\n \"&:hover:not([disabled])::-moz-range-thumb\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-10\", accentColor.get(listener)),\n },\n \"&:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n outlineOffset: themeSpacing(1),\n borderRadius: themeSpacing(2),\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n },\n },\n };\n}\n\nexport { inputRange };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction inputNumber(props: { color?: ValueOrState<ThemeColor>, accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"number\",\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputNumber\" primitive patch must use input tag`);\n }\n (element as any).type = \"number\";\n },\n style: {\n fontFamily: \"inherit\",\n lineHeight: \"inherit\",\n minWidth: themeSpacing(10),\n paddingInlineStart: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingInlineEnd: (listener) => themeSpacing(themeDensity(listener) * 1.5),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"&::-webkit-inner-spin-button, &::-webkit-outer-spin-button\": {\n opacity: 1,\n },\n \"&:hover:not([disabled]):not([aria-busy=true]), &:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n },\n },\n };\n}\n\nexport { inputNumber };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction keyboard(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"kbd\") {\n console.warn(`\"keyboard\" primitive patch must use kbd tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n paddingBlock: themeSpacing(0.5),\n paddingInline: themeSpacing(1.5),\n borderRadius: themeSpacing(1),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n },\n };\n}\n\nexport { keyboard };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction label(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"label\") {\n console.warn(`\"label\" primitive patch must use label tag`);\n }\n },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: themeSpacing(2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n cursor: \"pointer\",\n \"&:focus-within\": {\n color: (listener) => themeColor(listener, \"shift-10\", accentColor.get(listener)),\n },\n \"&[aria-disabled=true]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n },\n },\n };\n}\n\nexport { label };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\r\nimport { themeColor, themeSize,themeSpacing,type ThemeColor } from \"@domphy/theme\";\r\n\r\nfunction link(props: { color?: ValueOrState<ThemeColor>, accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\r\n const color = toState(props.color ?? \"primary\", \"color\");\r\n const accentColor = toState(props.accentColor ?? \"secondary\", \"accentColor\");\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"a\") {\r\n console.warn(`\"link\" primitive patch must use a tag`)\r\n }\r\n },\r\n style: {\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n backgroundColor: (listener) => themeColor(listener),\r\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\r\n textDecoration: \"none\",\r\n \"&:visited\": {\r\n color: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\r\n },\r\n \"&:hover:not([disabled])\": {\r\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\r\n textDecoration: \"underline\",\r\n },\r\n \"&:focus-visible\": {\r\n borderRadius: themeSpacing(1),\r\n outlineOffset:themeSpacing(1),\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\r\n },\r\n \"&[disabled]\": {\r\n opacity: 0.7,\r\n cursor: \"not-allowed\",\r\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\r\n }\r\n },\r\n };\r\n}\r\n\r\nexport { link };\r\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeSpacing, ThemeColor, themeSize, themeColor } from \"@domphy/theme\";\n\nfunction mark(props: { accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const accentColor = toState(props.accentColor ?? \"highlight\", \"accentColor\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"mark\") {\n console.warn(`\"mark\" primitive patch must use mark tag`);\n }\n },\n dataTone: \"shift-2\",\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", accentColor.get(listener)),\n height: themeSpacing(6),\n borderRadius: themeSpacing(1),\n paddingInline: themeSpacing(1.5),\n },\n };\n}\n\nexport { mark };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor, themeSize } from \"@domphy/theme\";\n\nfunction paragraph(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"p\") {\n console.warn(`\"paragraph\" primitive patch must use p tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) =>themeColor(listener, \"shift-9\", color.get(listener)),\n lineHeight:1.5,\n marginTop: 0,\n marginBottom: 0,\n },\n };\n}\n\nexport { paragraph };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, ThemeColor, themeSize } from \"@domphy/theme\";\n\nfunction preformated(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n dataTone: \"shift-2\",\n _onInsert: (node) => {\n if (node.tagName != \"pre\") {\n console.warn(`\"preformated\" primitive patch must use pre tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n border: \"none\",\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n },\n };\n}\n\nexport { preformated };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction progress(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"progress\") {\n console.warn(`\"progress\" primitive patch must use progress tag`);\n }\n },\n style: {\n appearance: \"none\",\n width: \"100%\",\n height: themeSpacing(2),\n border: 0,\n borderRadius: themeSpacing(999),\n overflow: \"hidden\",\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n \"&::-webkit-progress-bar\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n borderRadius: themeSpacing(999),\n },\n \"&::-webkit-progress-value\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n borderRadius: themeSpacing(999),\n transition: \"width 220ms ease\",\n },\n \"&::-moz-progress-bar\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n borderRadius: themeSpacing(999),\n },\n },\n };\n}\n\nexport { progress };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, ThemeColor, themeSize, themeSpacing } from \"@domphy/theme\";\n\nfunction inputRadio(props: { color?: ValueOrState<ThemeColor>, accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"radio\",\n _onInsert: (node) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputRadio\" primitive patch must use input tag and radio type`);\n return;\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n appearance: \"none\",\n display: \"inline-flex\",\n position: \"relative\",\n width: themeSpacing(6),\n height: themeSpacing(6),\n justifyContent: \"center\",\n alignItems: \"center\",\n transition: \"background-color 300ms, outline-color 300ms\",\n margin: 0,\n padding: 0,\n \"&::before\": {\n content: `\"\"`,\n display: \"block\",\n borderRadius: \"50%\",\n lineHeight: 1,\n cursor: \"pointer\",\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n width: themeSpacing(4),\n height: themeSpacing(4)\n },\n \"&:hover::before\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n },\n \"&:checked::before\": {\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&:checked::after\": {\n content: `\"\"`,\n position: \"absolute\",\n inset: \"30%\",\n borderRadius: \"50%\",\n backgroundColor: (listener) => themeColor(listener, \"shift-8\", accentColor.get(listener)),\n },\n \"&:checked:hover:not([disabled])::before\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-7\", accentColor.get(listener)),\n },\n \"&:focus-visible\": {\n borderRadius: \"50%\",\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n cursor: \"not-allowed\",\n },\n \"&[disabled]::before, &[disabled]::after\": {\n outline: \"none\",\n backgroundColor: (listener) => themeColor(listener, \"shift-4\", \"neutral\"),\n pointerEvents: \"none\",\n },\n }\n }\n}\n\nexport { inputRadio };\n","import { type PartialElement, type Listener } from \"@domphy/core\";\r\nimport { type ThemeColor, themeColor, themeDensity, themeSize, themeSpacing,themeColorToken } from \"@domphy/theme\";\r\n\r\nfunction select(\r\n props: { color?: ThemeColor; accentColor?: ThemeColor } = {}\r\n): PartialElement {\r\n const { color = \"neutral\", accentColor = \"primary\" } = props;\r\n\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"select\") {\r\n console.warn(`\"select\" primitive patch must use select tag`);\r\n }\r\n },\r\n style: {\r\n appearance: \"none\",\r\n fontFamily: \"inherit\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n lineHeight: \"inherit\",\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n border: \"none\",\r\n outlineOffset: \"-1px\",\r\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color)}`,\r\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n paddingLeft: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n paddingRight: (listener) => themeSpacing(themeDensity(listener) * 5),\r\n backgroundImage:(l: Listener)=>{\r\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 6\"><path d=\"M1 1l4 4 4-4\" stroke=\"${themeColorToken(l, \"shift-7\")}\" stroke-width=\"1.5\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`\r\n return `url(\"data:image/svg+xml,${encodeURIComponent(svg)}\")`\r\n } ,\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: `right ${themeSpacing(2)} center`,\r\n backgroundSize: `${themeSpacing(2.5)} ${themeSpacing(1.5)}`,\r\n \"&:not([multiple])\": {\r\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\r\n },\r\n \"&:hover:not([disabled]):not([aria-busy=true])\": {\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-5\", accentColor)}`,\r\n },\r\n \"&:focus-visible\": {\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor)}`,\r\n },\r\n \"& optgroup\": {\r\n color: (listener) => themeColor(listener, \"shift-11\", color),\r\n },\r\n \"& option[disabled]\": {\r\n color: (listener) => themeColor(listener, \"shift-7\", \"neutral\"),\r\n },\r\n \"&[disabled]\": {\r\n opacity: 0.7,\r\n cursor: \"not-allowed\",\r\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\r\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\r\n }\r\n },\r\n };\r\n}\r\n\r\nexport { select };\r\n","import { type PartialElement, type StyleObject, hashString, toState, type ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction skeleton(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n const keyframes = {\n \"0%,100%\": { opacity: 1 },\n \"50%\": { opacity: .4 }\n }\n const animationName = hashString(JSON.stringify(keyframes))\n return {\n ariaHidden: \"true\",\n dataTone: \"shift-2\",\n style: {\n fontSize: (listener) => themeSize(listener),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n height: themeSpacing(6),\n display: \"block\",\n borderRadius: themeSpacing(1),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n animation: `${animationName} 1.5s ease-in-out infinite`,\n [`@keyframes ${animationName}`]: keyframes,\n } as StyleObject,\n };\n}\n\nexport { skeleton };\n","import type { PartialElement, StyleObject } from \"@domphy/core\";\nimport { hashString, toState, type ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nconst keyframes = { to: { transform: \"rotate(360deg)\" } };\nconst animationName = hashString(JSON.stringify(keyframes));\n\nfunction spinner(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n role: \"status\",\n ariaLabel: \"loading\",\n _onInsert: (node) => {\n if (node.tagName != \"span\") {\n console.warn(`\"spinner\" patch must use span tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener),\n backgroundColor: (listener) => themeColor(listener),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n display: \"inline-block\",\n margin: 0,\n flexShrink: 0,\n width: themeSpacing(6),\n height: themeSpacing(6),\n borderRadius: \"50%\",\n border: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n borderTopColor: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n boxSizing: \"border-box\",\n padding: 0,\n animation: `${animationName} 0.7s linear infinite`,\n [`@keyframes ${animationName}`]: keyframes,\n } as StyleObject,\n\n };\n}\n\nexport { spinner };\n","import { PartialElement, DomphyElement, State } from \"@domphy/core\";\r\nimport { toState, ValueOrState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\r\nfunction selectList(props: {\r\n multiple?: boolean;\r\n value?: ValueOrState<Array<number | string | null> | number | string | null>;\r\n color?: ThemeColor;\r\n name?: string;\r\n} = {}): PartialElement {\r\n const { color = \"neutral\", multiple = false } = props;\r\n const state = toState(props.value ?? (multiple ? [] : null))\r\n\r\n const inputs: DomphyElement<\"div\"> = {\r\n div: (listener) => {\r\n const val = state.get(listener)\r\n const vals = Array.isArray(val) ? val : [val]\r\n return vals.map((v) => ({ input: null, name: props.name, value: v || \"\" }))\r\n },\r\n hidden: true,\r\n }\r\n\r\n let partial: PartialElement = {\r\n dataTone:\"shift-17\",\n _context: {\r\n select: {\r\n value: state,\r\n multiple,\r\n },\r\n },\r\n _onInit: (node) => {\r\n if (node.tagName != \"div\") {\r\n console.warn(`\"selectList\" patch must use a div tag`)\r\n }\r\n node.children.insert(inputs)\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n },\r\n };\r\n return partial;\r\n}\r\n\r\nexport { selectList };\r\n","import { PartialElement, toState, type State } from \"@domphy/core\";\r\nimport { themeSpacing, ThemeColor, themeColor, themeDensity, themeSize } from \"@domphy/theme\";\n\r\nfunction selectItem(props: {\r\n accentColor?: ThemeColor;\r\n color?: ThemeColor;\r\n value?: number | string;\r\n} = {}): PartialElement {\r\n const {\r\n accentColor = \"primary\",\r\n color = \"neutral\",\r\n value = null\r\n } = props;\r\n\r\n let partial: PartialElement = {\r\n role: \"option\",\r\n _onInit: (node) => {\r\n if (node.tagName != \"div\") {\r\n console.warn(`\"selectItem\" patch must use div tag`);\r\n }\r\n let select = node.getContext(\"select\");\r\n if (select) {\r\n let state = select.value\r\n node.attributes.set(\"ariaSelected\", (listener) => {\r\n let val = state.get(listener)\r\n return select.multiple ? val.includes(value) : val == value\r\n })\r\n node.addEvent(\"click\", () => {\r\n let val = state.get()\r\n if (select.multiple) {\r\n val.includes(value) ? state.set(val.filter((v: number | string) => v !== value)) : state.set(val.concat([value]))\r\n } else {\r\n val != value && state.set(value)\r\n }\r\n })\r\n }\r\n },\r\n style: {\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n border: \"none\",\r\n outline: \"none\",\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n \"&:hover:not([disabled]):not([aria-selected=true])\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color),\n },\r\n \"&[aria-selected=true]\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-6\", accentColor),\n color: (listener) => themeColor(listener, \"shift-11\"),\n },\n \"&:focus-visible\": {\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor)}`,\n outlineOffset: `-${themeSpacing(0.5)}`,\r\n },\r\n },\r\n };\r\n return partial;\r\n}\r\n\r\nexport { selectItem };\r\n","import { type PartialElement, type DomphyElement, type StyleObject, type ValueOrState, toState, merge } from \"@domphy/core\";\r\nimport { themeSpacing, themeColor, themeDensity, themeSize, type ThemeColor } from \"@domphy/theme\";\r\nimport { type Placement } from \"@floating-ui/dom\";\r\nimport { tag } from \"./tag.js\"\r\nimport { creatFloating } from \"../utils/floating.js\"\r\n\r\nfunction selectBox(props: {\r\n multiple?: boolean;\r\n value?: ValueOrState<Array<number | string | null | undefined> | number | string | null | undefined>;\r\n options?: Array<{ label: string, value: string }>;\r\n placement?: ValueOrState<Placement>;\r\n content: DomphyElement;\r\n color?: ThemeColor;\r\n open?: ValueOrState<boolean>;\r\n}): PartialElement {\r\n const {\r\n options = [],\r\n placement = \"bottom\",\r\n color = \"neutral\",\r\n open = false,\r\n multiple = false\r\n } = props;\r\n\r\n const state = toState(props.value)\r\n let openState = toState(open)\r\n let { show, hide, anchorPartial } = creatFloating({ open: openState, placement: toState(placement), content: props.content })\r\n\r\n const popoverPartial: PartialElement = {\r\n onClick: () => !multiple && hide(),\r\n };\r\n\r\n merge(props.content, popoverPartial);\r\n\r\n const wrap: DomphyElement<\"div\"> = {\r\n div: (listener) => {\r\n const val = state.get(listener)\r\n const vals = Array.isArray(val) ? val : [val]\r\n const opts = options.filter(opt => vals.includes(opt.value))\r\n return opts.map(opt => ({\r\n span: opt.label,\r\n $: [tag({ color, removable: multiple })],\r\n _key: opt.value,\r\n _onRemove: (_node) => {\r\n const cur = state.get()\r\n const curVals = Array.isArray(cur) ? cur : [cur]\r\n const filter = curVals.filter(v => v !== opt.value)\r\n multiple ? state.set(filter as any) : state.set(filter[0] as any)\r\n }\r\n })) as DomphyElement<\"span\">[]\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n gap: themeSpacing(1),\r\n flex: 1,\r\n } as StyleObject\r\n }\r\n\r\n let partial: PartialElement = {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"div\") {\r\n console.warn(`\"selectBox\" patch must use div tag`);\r\n }\r\n },\r\n _onInit: (node) => node.children.insert(wrap),\r\n onClick: () => openState.get() ? hide() : show(),\r\n style: {\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n minHeight: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\r\n minWidth: themeSpacing(32),\r\n outlineOffset: \"-1px\",\r\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 2),\r\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n }\r\n };\r\n\r\n merge(anchorPartial, partial)\r\n return anchorPartial\r\n}\r\n\r\nexport { selectBox };\r\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { ThemeColor, themeColor, themeSize, themeSpacing } from \"@domphy/theme\";\n\nfunction inputSwitch(props: { accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n dataTone: \"shift-2\",\n type: \"checkbox\",\n _onSchedule: (node) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputSwitch\" primitive patch must use input tag`);\n return;\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n appearance: \"none\",\n position: \"relative\",\n display: \"inline-flex\",\n width: themeSpacing(9),\n height: themeSpacing(6),\n cursor: \"pointer\",\n margin: `0`,\n paddingBlock: themeSpacing(1),\n \"&:checked\": {\n \"&::before\": {\n backgroundColor: (listener) => themeColor(listener, \"increase-3\", accentColor.get(listener)),\n },\n \"&::after\": {\n left: `calc(100% - ${themeSpacing(3.5)})`,\n },\n },\n \"&::after\": {\n content: `\"\"`,\n aspectRatio: `1/1`,\n position: \"absolute\",\n width: themeSpacing(3),\n height: themeSpacing(3),\n borderRadius: themeSpacing(999),\n left: themeSpacing(0.5),\n top: \"50%\",\n transform: \"translateY(-50%)\",\n transition: \"left 0.3s\",\n backgroundColor: (listener) => themeColor(listener, \"decrease-3\"),\n },\n \"&::before\": {\n content: '\"\"',\n width: \"100%\",\n borderRadius: themeSpacing(999),\n display: \"inline-block\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n lineHeight: 1,\n backgroundColor: (listener) => themeColor(listener),\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n }\n },\n };\n}\n\nexport { inputSwitch };\n","import { type PartialElement, toState, type ValueOrState } from \"@domphy/core\";\nimport { type ThemeColor, themeColor, themeSize, themeSpacing } from \"@domphy/theme\";\n\nfunction buttonSwitch(props: {\n checked?: ValueOrState<boolean>;\n accentColor?: ValueOrState<ThemeColor>;\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const { checked = false } = props;\n\n const check = toState(checked);\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n _onSchedule: (node) => {\n if (node.tagName != \"button\") {\n console.warn(`\"buttonSwitch\" primitive patch must use button tag`);\n }\n },\n role: \"switch\",\n ariaChecked: (listener) => check.get(listener),\n dataTone: \"shift-2\",\n onClick: () => check.set(!check.get()),\n style: {\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n fontSize: (listener) => themeSize(listener),\n border: \"none\",\n outlineWidth: \"1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-3\", color.get(listener))}`,\n minWidth: themeSpacing(12),\n minHeight: themeSpacing(6),\n borderRadius: themeSpacing(999),\n paddingLeft: themeSpacing(7),\n paddingRight: themeSpacing(2),\n transition: \"padding-left 0.3s, padding-right 0.3s\",\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"& > :first-child\": {\n content: '\"\"',\n position: \"absolute\",\n display: \"inline-flex\",\n alignItems: \"center\",\n left: themeSpacing(0.5),\n top: \"50%\",\n transform: \"translateY(-50%)\",\n transition: \"left 0.3s\",\n width: themeSpacing(5),\n height: themeSpacing(5),\n borderRadius: themeSpacing(999),\n color: (listener) => themeColor(listener, \"shift-9\"),\n backgroundColor: (listener) => themeColor(listener, \"decrease-2\", color.get(listener)),\n },\n \"&[aria-checked=true]\": {\n backgroundColor: (listener) => themeColor(listener, \"increase-3\", accentColor.get(listener)),\n outline: \"none\",\n color: (listener) => themeColor(listener, \"decrease-2\"),\n paddingLeft: themeSpacing(2),\n paddingRight: themeSpacing(7),\n },\n \"&[aria-checked=true] > :first-child\": {\n left: `calc(100% - ${themeSpacing(5.5)})`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n },\n },\n };\n}\n\nexport { buttonSwitch };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, ThemeColor, themeSize } from \"@domphy/theme\";\n\nfunction small(props: { color?: ValueOrState<ThemeColor>} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n dataSize:\"decrease-1\",\n _onInsert: (node) => {\n if (node.tagName != \"small\") {\n console.warn(`\"small\" primitive patch must use small tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n },\n };\n}\n\nexport { small };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction strong(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"strong\") {\n console.warn(`\"strong\" primitive patch must use strong tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n fontWeight: 700,\n color: (listener) => themeColor(listener, \"shift-11\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener),\n },\n };\n}\n\nexport { strong };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction subscript(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"sub\") {\n console.warn(`\"subscript\" primitive patch must use sub tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"decrease-1\"),\n verticalAlign: \"sub\",\n lineHeight: 0,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n },\n };\n}\n\nexport { subscript };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction superscript(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"sup\") {\n console.warn(`\"superscript\" primitive patch must use sup tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"decrease-1\"),\n verticalAlign: \"super\",\n lineHeight: 0,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n },\n };\n}\n\nexport { superscript };\n","import { type PartialElement, type DomphyElement, toState, type ValueOrState } from \"@domphy/core\";\nimport { type ThemeColor, themeColor, themeDensity, themeSpacing, themeSize } from \"@domphy/theme\";\n\nfunction table(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"table\") {\n console.warn(`\"table\" primitive patch must use table tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n width: \"100%\",\n borderCollapse: \"collapse\",\n \"& caption\": {\n captionSide: \"bottom\"\n },\n \"& th, & thead td\": {\n textAlign: \"left\",\n fontWeight: 500,\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\"),\n },\n \"& td\": {\n textAlign: \"left\",\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n boxShadow: (listener) => `inset 0 1px 0 ${themeColor(listener, \"shift-3\", color.get(listener))}`,\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n },\n \"& tfoot th, & tfoot td\": {\n textAlign: \"left\",\n fontWeight: 500,\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n color: (l) => themeColor(l, \"shift-10\", color.get(l)),\n backgroundColor: (l) => themeColor(l, \"inherit\"),\n boxShadow: (l) => `inset 0 -1px 0 ${themeColor(l, \"shift-4\", color.get(l))}`\n },\n \"& tr\": {\n backgroundColor: (listener) => themeColor(listener, \"inherit\"),\n },\n\n \"& tbody tr:hover\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-2\") + \"!important\",\n }\n },\n };\n}\n\nexport { table };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction textarea(\n props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor>; autoResize?: boolean } = {}\n): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n const { autoResize = false } = props;\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"textarea\") {\n console.warn(`\"textarea\" primitive patch must use textarea tag`);\n }\n },\n _onMount: (node) => {\n if (autoResize) {\n const el = node.domElement as HTMLTextAreaElement;\n el.style.overflow = \"hidden\";\n const resize = () => {\n el.style.height = \"auto\";\n el.style.height = el.scrollHeight + \"px\";\n };\n el.addEventListener(\"input\", resize);\n resize();\n }\n },\n style: {\n fontFamily: \"inherit\",\n lineHeight: \"inherit\",\n resize: \"vertical\",\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1.5),\n border:\"none\",\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1.5),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"&::placeholder\": {\n color: (listener) => themeColor(listener, \"shift-7\"),\n },\n \"&:hover:not([disabled]):not([aria-busy=true])\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-5\", accentColor.get(listener))}`,\n },\n \"&:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&:invalid\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-5\", \"error\")}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n }\n },\n };\n}\n\nexport { textarea };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction unorderedList(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"ul\") {\n console.warn(`\"unorderedList\" primitive patch must use ul tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n backgroundColor: (listener) => themeColor(listener),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n marginTop: 0,\n marginBottom: 0,\n paddingLeft: themeSpacing(3),\n listStyleType: \"disc\",\n listStylePosition: \"outside\",\n },\n };\n}\n\nexport { unorderedList };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction orderedList(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"ol\") {\n console.warn(`\"orderedList\" primitive patch must use ol tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n backgroundColor: (listener) => themeColor(listener),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n marginTop: 0,\n marginBottom: 0,\n paddingLeft: themeSpacing(3),\n listStyleType: \"decimal\",\n listStylePosition: \"outside\",\n },\n };\n}\n\nexport { orderedList };\n","import { type PartialElement, type DomphyElement, type ValueOrState, toState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\r\nfunction getPages(current: number, total: number): (number | \"...\")[] {\r\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\r\n const pages: (number | \"...\")[] = [1];\r\n if (current > 3) pages.push(\"...\");\r\n const start = Math.max(2, current - 1);\r\n const end = Math.min(total - 1, current + 1);\r\n for (let i = start; i <= end; i++) pages.push(i);\r\n if (current < total - 2) pages.push(\"...\");\r\n pages.push(total);\r\n return pages;\r\n}\r\n\r\nfunction pagination(props: {\r\n value?: ValueOrState<number>;\r\n total: number;\r\n color?: ThemeColor;\r\n accentColor?: ThemeColor;\r\n}): PartialElement {\r\n const { total, color = \"neutral\", accentColor = \"primary\" } = props;\r\n const state = toState(props.value ?? 1);\r\n\r\n const btnBase = {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n minWidth: (listener: any) => themeSpacing(6 + themeDensity(listener) * 2),\n height: (listener: any) => themeSpacing(6 + themeDensity(listener) * 2),\n paddingInline: (listener: any) => themeSpacing(themeDensity(listener) * 2),\n borderRadius: (listener: any) => themeSpacing(themeDensity(listener) * 1),\n border: \"none\",\r\n cursor: \"pointer\",\r\n fontSize: (listener: any) => themeSize(listener, \"inherit\"),\r\n backgroundColor: \"transparent\",\r\n color: (listener: any) => themeColor(listener, \"shift-9\", color),\n \"&:hover:not([disabled])\": {\r\n backgroundColor: (listener: any) => themeColor(listener, \"shift-2\", color),\n },\r\n \"&[disabled]\": {\r\n opacity: 0.4,\r\n cursor: \"not-allowed\",\r\n },\r\n };\r\n\r\n const activeStyle = {\n ...btnBase,\n backgroundColor: (listener: any) => themeColor(listener, \"shift-6\", accentColor),\n color: (listener: any) => themeColor(listener, \"shift-11\", accentColor),\n fontWeight: \"600\",\n cursor: \"default\",\n \"&:hover:not([disabled])\": {\n backgroundColor: (listener: any) => themeColor(listener, \"shift-6\", accentColor),\n },\n };\n\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName !== \"div\") console.warn('\"pagination\" patch must use div tag');\r\n },\r\n _onInit: (node) => {\r\n const content: DomphyElement<\"div\"> = {\r\n div: (listener) => {\r\n const page = state.get(listener);\r\n const items: DomphyElement[] = [];\r\n\r\n // Prev button\r\n items.push({\r\n button: \"‹\",\r\n type: \"button\",\r\n ariaLabel: \"Previous page\",\r\n disabled: page <= 1,\r\n onClick: () => page > 1 && state.set(page - 1),\r\n style: btnBase,\r\n });\r\n\r\n // Page buttons\r\n for (const p of getPages(page, total)) {\r\n if (p === \"...\") {\r\n items.push({ span: \"…\", style: { display: \"inline-flex\", alignItems: \"center\", paddingInline: (listener: any) => themeSpacing(themeDensity(listener) * 2), color: (listener: any) => themeColor(listener, \"shift-7\", color) } });\n } else {\r\n const isActive = p === page;\r\n items.push({\r\n button: String(p),\r\n type: \"button\",\r\n ariaLabel: `Page ${p}`,\r\n ariaCurrent: isActive ? \"page\" : undefined,\r\n disabled: isActive,\r\n onClick: () => state.set(p),\r\n style: isActive ? activeStyle : btnBase,\r\n });\r\n }\r\n }\r\n\r\n // Next button\r\n items.push({\r\n button: \"›\",\r\n type: \"button\",\r\n ariaLabel: \"Next page\",\r\n disabled: page >= total,\r\n onClick: () => page < total && state.set(page + 1),\r\n style: btnBase,\r\n });\r\n\r\n return items;\r\n },\r\n style: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: themeSpacing(1),\r\n },\r\n };\r\n node.children.insert(content);\r\n },\r\n style: {\r\n display: \"inline-flex\",\r\n },\r\n };\r\n}\r\n\r\nexport { pagination };\r\n","import type { PartialElement } from \"@domphy/core\";\nimport { toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, type ThemeColor, themeSize, themeSpacing } from \"@domphy/theme\";\n\nfunction divider(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n role: \"separator\",\n _onInsert: (node) => {\n if (node.tagName !== \"div\") {\n console.warn(`\"divider\" patch should be used with <div>`)\n }\n },\n style: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"baseline\",\n gap: themeSpacing(2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n backgroundColor: (listener) => themeColor(listener),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n minHeight: \"1lh\",\n \"&::before\": {\n content: `\"\"`,\n flex:1,\n borderColor: (listener) => themeColor(listener, \"shift-4\", color.get(listener)),\n borderWidth: \"1px\",\n borderBottomStyle: \"solid\",\n },\n \"&::after\": {\n content: `\"\"`,\n flex:1,\n borderColor: (listener) => themeColor(listener, \"shift-4\", color.get(listener)),\n borderWidth: \"1px\",\n borderBottomStyle: \"solid\",\n },\n },\n };\n}\n\nexport { divider };\n","import { type PartialElement, type ValueOrState, toState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\r\n\r\ntype Placement = \"left\" | \"right\" | \"top\" | \"bottom\";\r\n\r\nconst translateOut: Record<Placement, string> = {\r\n left: \"translateX(-100%)\",\r\n right: \"translateX(100%)\",\r\n top: \"translateY(-100%)\",\r\n bottom: \"translateY(100%)\",\r\n};\r\n\r\nconst marginMap: Record<Placement, string> = {\r\n left: \"0 auto 0 0\",\r\n right: \"0 0 0 auto\",\r\n top: \"0 0 auto 0\",\r\n bottom: \"auto 0 0 0\",\r\n};\r\n\r\nconst isVertical = (p: Placement) => p === \"left\" || p === \"right\";\r\n\r\nfunction drawer(props: {\r\n color?: ThemeColor;\r\n open?: ValueOrState<boolean>;\r\n placement?: Placement;\r\n size?: string;\r\n} = {}): PartialElement {\r\n const { color = \"neutral\", open = false, placement = \"right\", size } = props;\r\n const state = toState(open);\r\n const defaultSize = isVertical(placement) ? themeSpacing(80) : themeSpacing(64);\r\n const drawerSize = size ?? defaultSize;\r\n\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName !== \"dialog\") {\r\n console.warn(`\"drawer\" patch must use dialog tag`);\r\n }\r\n },\r\n onClick: (e: MouseEvent, node) => {\r\n if (e.target !== node.domElement) return;\r\n state.set(false);\r\n },\r\n onTransitionEnd: (_e, node) => {\r\n const dlg = node.domElement as HTMLDialogElement;\r\n if (!state.get()) {\r\n dlg.close();\r\n document.body.style.overflow = \"\";\r\n }\r\n },\r\n _onMount: (node) => {\r\n const dlg = node.domElement as HTMLDialogElement;\r\n const update = (val: boolean) => {\r\n if (val) {\r\n dlg.showModal();\r\n document.body.style.overflow = \"hidden\";\r\n requestAnimationFrame(() => { dlg.style.transform = \"translate(0, 0)\"; });\r\n } else {\r\n dlg.style.transform = translateOut[placement];\r\n }\r\n };\r\n update(state.get());\r\n state.addListener(update);\r\n },\r\n style: {\r\n transform: translateOut[placement],\r\n transition: \"transform 0.25s ease\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n color: (listener) => themeColor(listener, \"shift-10\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n border: \"none\",\r\n padding: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n margin: marginMap[placement],\r\n width: isVertical(placement) ? drawerSize : \"100dvw\",\r\n height: isVertical(placement) ? \"100dvh\" : drawerSize,\r\n maxWidth: \"100dvw\",\r\n maxHeight: \"100dvh\",\r\n boxShadow: (listener) => `0 ${themeSpacing(4)} ${themeSpacing(12)} ${themeColor(listener, \"shift-4\", \"neutral\")}`,\r\n \"&::backdrop\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\r\n opacity: 0.75,\r\n },\r\n },\r\n };\r\n}\r\n\r\nexport { drawer };\r\n","import { PartialElement, State, DomphyElement, toState, ValueOrState, merge } from \"@domphy/core\";\r\nimport { type Placement } from \"@floating-ui/dom\";\r\nimport { creatFloating } from \"../utils/floating.js\";\r\n\r\nfunction popover(props: {\r\n openOn: \"click\" | \"hover\";\r\n open?: ValueOrState<boolean>;\r\n placement?: ValueOrState<Placement>;\r\n content: DomphyElement;\r\n}): PartialElement {\r\n const {\r\n open = false,\r\n placement = \"bottom\",\r\n openOn = \"click\"\r\n } = props;\r\n\r\n\r\n let popoverId: string | null = null\r\n const openState = toState(open);\r\n const placeState = toState(placement);\r\n\r\n let { show, hide, anchorPartial } = creatFloating({ open: openState, placement: placeState, content: props.content })\r\n\r\n const popoverPartial: PartialElement = {\r\n role: \"dialog\",\r\n dataTone: \"shift-17\",\r\n onMouseEnter: () => openOn === \"hover\" && show(),\r\n onMouseLeave: () => openOn === \"hover\" && hide(),\r\n _onInsert: (node) => {\r\n let id = node.attributes.get(\"id\")\r\n popoverId = id || node.nodeId\r\n !id && node.attributes.set(\"id\", popoverId)\r\n },\r\n };\r\n\r\n merge(props.content, popoverPartial);\r\n\r\n const triggerPartial: PartialElement = {\r\n ariaHaspopup: \"dialog\",\r\n ariaExpanded: (listener) => openState.get(listener),\r\n onMouseEnter: () => openOn === \"hover\" && show(),\r\n onMouseLeave: () => openOn === \"hover\" && hide(),\r\n onClick: () => {\r\n if (openOn === \"click\") {\r\n if (openState.get()) { hide() } else { show() }\r\n }\r\n },\r\n onFocus: () => show(),\r\n onBlur: (e, node) => {\r\n const related = (e as FocusEvent).relatedTarget as Node | null\r\n const root = node.getRoot().domElement as Element\r\n const floatingEl = popoverId ? root.querySelector(`#${CSS.escape(popoverId)}`) : null\r\n if (related && floatingEl?.contains(related)) return\r\n hide()\r\n },\r\n _onMount: (node) => popoverId && node.attributes.set(\"ariaControls\", popoverId)\r\n };\r\n merge(anchorPartial, triggerPartial);\r\n\r\n return anchorPartial;\r\n}\r\n\r\nexport { popover };\r\n","import type { DomphyElement, PartialElement, ElementNode } from \"@domphy/core\";\r\nimport { toState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\r\ntype ToastPosition = \"top-left\" | \"top-center\" | \"top-right\" | \"bottom-left\" | \"bottom-center\" | \"bottom-right\";\r\n\r\nfunction toast(props: {\r\n position?: ToastPosition;\r\n color?: ThemeColor;\r\n} = {}): PartialElement {\r\n const { position = \"top-center\", color = \"neutral\" } = props;\r\n const state = toState(false);\r\n\r\n const isTop = position.startsWith(\"top\");\r\n const isCenter = position.endsWith(\"center\");\r\n const isRight = position.endsWith(\"right\");\r\n\r\n const overlayEle: DomphyElement<\"div\"> = {\r\n div: [],\r\n id: `domphy-toast-${position}`,\r\n style: {\r\n position: \"fixed\",\r\n display: \"flex\",\r\n flexDirection: isTop ? \"column\" : \"column-reverse\",\r\n alignItems: isCenter ? \"center\" : isRight ? \"end\" : \"start\",\r\n inset: 0,\r\n gap: themeSpacing(4),\r\n zIndex: 30,\r\n padding: themeSpacing(6),\r\n pointerEvents: \"none\",\r\n },\r\n }\r\n\r\n return {\n _portal: (rootNode) => {\n let overlay = rootNode.domElement!.querySelector(`#domphy-toast-${position}`);\r\n if (!overlay) {\r\n const overlayNode = rootNode.children!.insert(overlayEle) as ElementNode;\r\n overlay = overlayNode.domElement!;\r\n }\r\n return overlay;\r\n },\n role: \"status\",\n ariaAtomic: \"true\",\n // Toast is rendered as an overlay surface, so it uses the inverted branch.\n dataTone: \"shift-17\",\n style: {\n minWidth: themeSpacing(32),\n pointerEvents: \"auto\",\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\n boxShadow: (listener) => `0 ${themeSpacing(2)} ${themeSpacing(9)} ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n opacity: (listener) => Number(state.get(listener)),\n transform: (listener) => state.get(listener) ? \"translateY(0)\" : isTop ? \"translateY(-100%)\" : \"translateY(100%)\",\n transition: \"opacity 300ms ease, transform 300ms ease\",\n },\n _onMount: () => requestAnimationFrame(() => state.set(true)),\r\n _onBeforeRemove: (node, done) => {\r\n const onEnd = (e: Event) => {\r\n if ((e as TransitionEvent).propertyName === \"transform\") {\r\n node.domElement!.removeEventListener(\"transitionend\", onEnd)\r\n done()\r\n }\r\n }\r\n node.domElement!.addEventListener(\"transitionend\", onEnd)\r\n state.set(false)\r\n }\r\n };\r\n}\r\n\r\nexport { toast };\r\n","import { PartialElement, type DomphyElement, ValueOrState, merge, toState } from \"@domphy/core\";\r\nimport { themeSpacing, themeColor, themeDensity, themeSize } from \"@domphy/theme\";\r\nimport { type Placement } from \"@floating-ui/dom\";\r\nimport { creatFloating } from \"../utils/floating.js\";\r\nimport { popoverArrow } from \"./popoverArrow.js\";\r\n\r\n\r\nfunction tooltip(props: {\r\n open?: ValueOrState<boolean>;\r\n placement?: ValueOrState<Placement>;\r\n content?: ValueOrState<string>;\r\n} = {}): PartialElement {\r\n const {\r\n open = false,\r\n placement = \"top\",\r\n content = \"Tooltip Content\"\r\n } = props;\r\n\r\n const placeState = toState(placement)\r\n const contentState = toState(content)\r\n\r\n let tooltipId: string | null = null\r\n\r\n let contentElement: DomphyElement<\"span\"> = { span: (listener) => contentState.get(listener) }\r\n\r\n let { show, hide, anchorPartial } = creatFloating({ open, placement: placeState, content: contentElement })\r\n\r\n const tooltipPartial: PartialElement = {\r\n role: \"tooltip\",\r\n dataSize: \"decrease-1\",\r\n dataTone: \"shift-17\",\r\n _onInsert: (node) => {\r\n let id = node.attributes.get(\"id\")\r\n tooltipId = id || node.nodeId\r\n !id && node.attributes.set(\"id\", tooltipId)\r\n },\r\n style: {\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n color: (listener) => themeColor(listener, \"shift-9\"),\r\n backgroundColor: (listener) => themeColor(listener),\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n },\r\n $: [popoverArrow({ placement: placeState, bordered: false })]\r\n };\r\n contentElement.$ ||= []\r\n contentElement.$.push(tooltipPartial)\r\n\r\n const triggerPartial: PartialElement = {\r\n onMouseEnter: () => show(),\r\n onMouseLeave: () => hide(),\r\n onFocus: () => show(),\r\n onBlur: () => hide(),\r\n onKeyDown: (e) => (e as KeyboardEvent).key === \"Escape\" && hide(),\r\n _onMount: (node) => tooltipId && node.attributes.set(\"ariaDescribedby\", tooltipId)\r\n };\r\n\r\n merge(anchorPartial, triggerPartial)\r\n\r\n return anchorPartial;\r\n}\r\n\r\nexport { tooltip };\r\n","import { ElementNode, PartialElement } from \"@domphy/core\";\r\n\r\ntype RectMap = Map<string, DOMRect>;\r\n\r\nfunction getItemId(node: ElementNode, index: number): string {\r\n if (node.key !== undefined && node.key !== null) {\r\n return String(node.key);\r\n }\r\n return `index-${index}`;\r\n}\r\n\r\nfunction transitionGroup(props: { duration?: number; delay?: number } = {}): PartialElement {\r\n const {\r\n duration = 300,\r\n delay = 0,\r\n } = props;\r\n\r\n let previousRects: RectMap = new Map();\r\n\r\n return {\r\n _onBeforeUpdate: (node) => {\r\n previousRects = new Map();\r\n node.children.items.forEach((item, index) => {\n if (!(item instanceof ElementNode)) return;\r\n const dom = item.domElement as HTMLElement | undefined;\r\n if (!dom) return;\r\n previousRects.set(getItemId(item, index), dom.getBoundingClientRect());\r\n });\r\n },\r\n _onUpdate: (node) => {\r\n node.children.items.forEach((item, index) => {\n if (!(item instanceof ElementNode)) return;\r\n const dom = item.domElement as HTMLElement | undefined;\r\n if (!dom) return;\r\n\r\n const key = getItemId(item, index);\r\n const prev = previousRects.get(key);\r\n if (!prev) return;\r\n\r\n const next = dom.getBoundingClientRect();\r\n const deltaX = prev.left - next.left;\r\n const deltaY = prev.top - next.top;\r\n if (Math.abs(deltaX) < 0.5 && Math.abs(deltaY) < 0.5) return;\r\n\r\n const previousTransition = dom.style.transition;\r\n const previousTransform = dom.style.transform;\r\n\r\n dom.style.transition = \"none\";\r\n dom.style.transform = `translate(${deltaX}px, ${deltaY}px)`;\r\n dom.getBoundingClientRect();\r\n\r\n requestAnimationFrame(() => {\r\n dom.style.transition = `transform ${duration}ms ease ${delay}ms`;\r\n dom.style.transform = \"translate(0px, 0px)\";\r\n });\r\n\r\n const cleanup = () => {\r\n dom.style.transition = previousTransition;\r\n dom.style.transform = previousTransform;\r\n dom.removeEventListener(\"transitionend\", onEnd);\r\n };\r\n\r\n const onEnd = (event: Event) => {\r\n const transitionEvent = event as TransitionEvent;\r\n if (transitionEvent.propertyName === \"transform\") {\r\n cleanup();\r\n }\r\n };\r\n\r\n dom.addEventListener(\"transitionend\", onEnd);\r\n setTimeout(cleanup, duration + delay + 34);\r\n });\r\n previousRects.clear();\r\n },\r\n };\r\n}\r\n\r\n\r\nexport { transitionGroup };\r\n","import { PartialElement, merge } from \"@domphy/core\";\r\nimport { toState, ValueOrState } from \"@domphy/core\";\r\n\r\nfunction tabs(props: {\r\n activeKey?: ValueOrState<number | string>;\r\n} = {}): PartialElement {\r\n\r\n let partial: PartialElement = {\r\n role: \"tablist\",\r\n _onSchedule: (node, element) => {\r\n let partial = {\r\n _context: {\r\n tabs: {\r\n activeKey: toState(props.activeKey || 0),\r\n }\r\n },\r\n }\r\n merge(element, partial)\r\n },\r\n }\r\n return partial;\r\n}\r\n\r\nexport { tabs };\r\n","import { PartialElement, ElementNode } from \"@domphy/core\";\r\nimport { themeSpacing, ThemeColor, themeColor, themeDensity, themeSize } from \"@domphy/theme\";\n\r\nfunction tab(props: {\r\n accentColor?: ThemeColor;\r\n color?: ThemeColor;\r\n} = {}): PartialElement {\r\n const {\r\n accentColor = \"primary\",\r\n color = \"neutral\",\r\n } = props;\r\n let partial: PartialElement = {\r\n role: \"tab\",\r\n _onInsert: (node) => {\r\n\r\n if (node.tagName != \"button\") {\r\n console.warn(`\"tab\" patch must use button tag`);\r\n }\r\n\r\n let context = node.getContext(\"tabs\")\r\n let children = node.parent?.children.items as ElementNode[]\r\n children = children.filter(n => n.type == \"ElementNode\" && n.attributes.get(\"role\") == \"tab\")\r\n let key = node.key || children.findIndex(n => n == node)\r\n\r\n let part: PartialElement = {\r\n id: \"tab\" + node.parent!.nodeId + key,\r\n \"ariaControls\": \"tabpanel\" + node.parent!.nodeId + key,\r\n \"ariaSelected\": (listener) => context.activeKey.get(listener) == key,\r\n onClick: () => context.activeKey.set(key),\r\n onKeyDown: (e: Event) => {\r\n const k = (e as KeyboardEvent).key;\r\n if (![\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].includes(k)) return;\r\n e.preventDefault();\r\n const tabs = (node.parent?.children.items ?? []).filter(\r\n n => n.type === \"ElementNode\" && (n as ElementNode).attributes.get(\"role\") === \"tab\"\r\n ) as ElementNode[];\r\n const idx = tabs.findIndex(n => n === node);\r\n let next = idx;\r\n if (k === \"ArrowRight\") next = (idx + 1) % tabs.length;\r\n else if (k === \"ArrowLeft\") next = (idx - 1 + tabs.length) % tabs.length;\r\n else if (k === \"Home\") next = 0;\r\n else if (k === \"End\") next = tabs.length - 1;\r\n const target = tabs[next];\r\n context.activeKey.set(target.key ?? next);\r\n (target.domElement as HTMLElement)?.focus();\r\n },\r\n }\r\n node.merge(part)\r\n },\r\n style: {\r\n cursor: \"pointer\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n border: \"none\",\r\n outline: \"none\",\r\n color: (listener) => themeColor(listener, \"shift-9\"),\n backgroundColor: (listener) => themeColor(listener, \"inherit\"),\r\n boxShadow: (listener) => `inset 0 -${themeSpacing(0.5)} 0 0 ${themeColor(listener, \"shift-1\", color)}`,\n \"&:hover:not([disabled])\": {\r\n boxShadow: (listener) => `inset 0 -${themeSpacing(0.5)} 0 0 ${themeColor(listener, \"shift-2\", color)}`,\n },\r\n \"&[aria-selected=true]:not([disabled])\": {\n boxShadow: (listener) => `inset 0 -${themeSpacing(0.5)} 0 0 ${themeColor(listener, \"shift-6\", accentColor)}`,\n },\n \"&:focus-visible\": {\r\n boxShadow: (listener) => `inset 0 -${themeSpacing(0.5)} 0 0 ${themeColor(listener, \"shift-6\", accentColor)}`,\n\r\n },\r\n },\r\n }\r\n return partial\r\n}\r\n\r\n\r\nexport { tab };\r\n","import { PartialElement, ElementNode, merge } from \"@domphy/core\";\r\nimport { themeSpacing, themeDensity, themeColor } from \"@domphy/theme\";\n\r\nfunction tabPanel(): PartialElement {\r\n let partial: PartialElement = {\r\n role: \"tabpanel\",\r\n style: {\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 2),\n },\r\n _onInsert: (node) => {\r\n let context = node.getContext(\"tabs\")\r\n let children = node.parent?.children.items as ElementNode[]\r\n children = children.filter(n => n.type == \"ElementNode\" && n.attributes.get(\"role\") == \"tabpanel\")\r\n let key = node.key || children.findIndex(n => n == node)\r\n let part: PartialElement = {\r\n id: \"tabpanel\" + node.parent!.nodeId + key,\r\n \"ariaLabelledby\": \"tab\" + node.parent!.nodeId + key,\r\n \"hidden\": (listener) => context.activeKey.get(listener) != key,\r\n }\r\n node.merge(part)\r\n },\r\n };\r\n return partial;\r\n}\r\n\r\n\r\n\r\nexport { tabPanel };\r\n","import { PartialElement, merge } from \"@domphy/core\";\r\nimport { toState, ValueOrState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\r\n\r\nfunction menu(props: {\r\n activeKey?: ValueOrState<number | string>;\r\n selectable?: boolean;\r\n color?: ThemeColor;\r\n} = {}): PartialElement {\r\n const { color = \"neutral\", selectable = true } = props;\r\n\r\n let partial: PartialElement = {\r\n role: \"menu\",\r\n dataTone:\"shift-17\",\r\n _onSchedule: (node, element) => {\r\n let partial = {\r\n _context: {\r\n menu: {\r\n activeKey: toState(props.activeKey ?? null),\r\n selectable,\r\n },\r\n },\r\n };\r\n merge(element, partial);\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 2),\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n },\r\n };\r\n return partial;\r\n}\r\n\r\nexport { menu };\r\n","import { PartialElement, ElementNode } from \"@domphy/core\";\r\nimport { themeSpacing, ThemeColor, themeColor, themeDensity, themeSize } from \"@domphy/theme\";\r\n\r\nfunction menuItem(props: {\r\n accentColor?: ThemeColor;\r\n color?: ThemeColor;\r\n} = {}): PartialElement {\r\n const {\r\n accentColor = \"primary\",\r\n color = \"neutral\",\r\n } = props;\r\n\r\n let partial: PartialElement = {\r\n role: \"menuitem\",\r\n _onInsert: (node) => {\r\n if (node.tagName != \"button\") {\r\n console.warn(`\"menuItem\" patch must use button tag`);\r\n }\r\n\r\n let context = node.getContext(\"menu\");\r\n let children = node.parent?.children.items as ElementNode[];\r\n children = children.filter(n => n.type == \"ElementNode\" && n.attributes.get(\"role\") == \"menuitem\");\r\n let key = node.key || children.findIndex(n => n == node);\r\n if (context.selectable) {\r\n node.attributes.set(\"ariaCurrent\", (listener) => context.activeKey.get(listener) == key || undefined)\r\n node.addEvent(\"click\", () => context.activeKey.set(key))\r\n }\r\n },\r\n onKeyDown:(e:KeyboardEvent,node)=>{\r\n const k = (e as KeyboardEvent).key;\r\n if (k === \"Enter\" || k === \" \") {\r\n e.preventDefault();\r\n (node.domElement as HTMLElement)?.click();\r\n return;\r\n }\r\n if (![\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(k)) return;\r\n e.preventDefault();\r\n const items = (node.parent?.children.items ?? []).filter(\r\n n => n.type === \"ElementNode\" && (n as ElementNode).attributes.get(\"role\") === \"menuitem\"\r\n ) as ElementNode[];\r\n const idx = items.findIndex(n => n === node);\r\n let next = idx;\r\n if (k === \"ArrowDown\") next = (idx + 1) % items.length;\r\n else if (k === \"ArrowUp\") next = (idx - 1 + items.length) % items.length;\r\n else if (k === \"Home\") next = 0;\r\n else if (k === \"End\") next = items.length - 1;\r\n (items[next].domElement as HTMLElement)?.focus();\r\n },\r\n style: {\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n border: \"none\",\r\n outline: \"none\",\r\n color: (listener) => themeColor(listener, \"shift-9\"),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\"),\r\n \"&:hover:not([disabled]):not([aria-current=true])\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\"),\r\n },\r\n // Menu uses the current/indicator band instead of the selected fill band.\r\n \"&[aria-current=true]\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", accentColor),\r\n color: (listener) => themeColor(listener, \"shift-10\"),\r\n },\r\n \"&:focus-visible\": {\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor)}`,\r\n outlineOffset: `-${themeSpacing(0.5)}`,\r\n },\r\n },\r\n };\r\n return partial;\r\n}\r\n\r\nexport { menuItem };\r\n","import { PartialElement, merge } from \"@domphy/core\";\r\nimport { FormState } from \"../classes/FormState.js\";\r\n\r\nfunction form(state: FormState): PartialElement {\r\n return {\r\n _onSchedule: (node, element) => {\r\n merge(element, { _context: { form: state } });\r\n },\r\n };\r\n}\r\n\r\nexport { form };\r\n","import { PartialElement, Listener } from \"@domphy/core\";\r\nimport { FieldValidator } from \"../classes/FieldState.js\";\r\nimport { FormState } from \"../classes/FormState.js\";\r\n\r\nfunction field(path: string, validator?: FieldValidator): PartialElement {\r\n return {\r\n _onInsert: (node) => {\r\n const state = node.getContext(\"form\") as FormState;\r\n const f = state.setField(path, undefined, validator);\r\n const tag = node.tagName;\r\n const type = node.attributes.get(\"type\") as string | undefined;\r\n\r\n if (![\"input\", \"select\", \"textarea\"].includes(tag)) {\r\n console.warn(`\"field\" patch must use input, select, or textarea tag`);\r\n }\r\n\r\n const part: PartialElement<\"input\"> = {\r\n onBlur: () => f.setTouched(),\r\n ariaInvalid: (listener: Listener) => !!f.message(\"error\", listener) || undefined,\r\n dataStatus: (listener: Listener) => f.status(listener),\r\n };\r\n\r\n if (tag === \"input\" && type === \"checkbox\") {\r\n part.checked = f.value() as boolean;\r\n part.onChange = (e) => f.setValue((e.target as HTMLInputElement).checked);\r\n } else if (tag === \"input\" && type === \"radio\") {\r\n part.onChange = (e) => f.setValue((e.target as HTMLInputElement).value);\r\n } else if (tag === \"select\") {\r\n part.value = f.value() as string;\r\n part.onChange = (e) => f.setValue((e.target as HTMLSelectElement).value);\r\n } else if (tag === \"textarea\") {\r\n part.value = f.value() as string;\r\n part.onInput = (e) => f.setValue((e.target as HTMLTextAreaElement).value);\r\n } else {\r\n part.value = f.value() as string;\r\n part.onInput = (e) => f.setValue((e.target as HTMLInputElement).value);\r\n }\r\n\r\n node.merge(part);\r\n\r\n // NOTE: value/checked are intentionally set as static defaults (one-way: DOM → state).\r\n // Do NOT change them to reactive functions like `(listener) => f.value(listener)`.\r\n // Two-way reactive binding causes an infinite loop:\r\n // setValue → notify listener → update DOM value → trigger onInput → setValue → ...\r\n // Note: Domphy's `silent` flag in setValue is NOT a solution here —\r\n // it is only used for tree synchronization when external libs (e.g. SortableJS)\r\n // manipulate the DOM directly. It does not apply to form field binding.\r\n },\r\n };\r\n}\r\n\r\nexport { field };\r\n","import { Notifier, Handler } from \"@domphy/core\";\r\n\r\nexport type FieldStatus = \"error\" | \"warning\" | \"success\" | undefined;\r\n\r\nexport type FieldMessages = {\r\n error?: string;\r\n warning?: string;\r\n success?: string;\r\n};\r\n\r\nexport type FieldValidator = (value: unknown) => FieldMessages | null | Promise<FieldMessages | null>;\r\n\r\nfunction isPromiseLike(\r\n value: FieldMessages | null | Promise<FieldMessages | null>\r\n): value is Promise<FieldMessages | null> {\r\n return !!value && typeof (value as Promise<FieldMessages | null>).then === \"function\";\r\n}\r\n\r\nexport class FieldState {\r\n _notifier = new Notifier();\r\n _value: unknown;\r\n _initValue: unknown;\r\n _messages: FieldMessages = {};\r\n _touched = false;\r\n _validator: FieldValidator | undefined;\r\n _pending = false;\r\n _validationToken = 0;\r\n\r\n constructor(initValue: unknown, validator?: FieldValidator) {\r\n this._value = initValue;\r\n this._initValue = initValue;\r\n this._validator = validator;\r\n if (validator) this.validate();\r\n }\r\n\r\n value(listener?: Handler): unknown {\r\n if (listener) this._notifier.addListener(\"value\", listener);\r\n return this._value;\r\n }\r\n\r\n setValue(val: unknown): void {\r\n this._value = val;\r\n this._notifier.notify(\"value\", val);\r\n this._notifier.notify(\"dirty\", val !== this._initValue);\r\n this.validate();\r\n }\r\n\r\n dirty(listener?: Handler): boolean {\r\n if (listener) this._notifier.addListener(\"dirty\", listener);\r\n return this._value !== this._initValue;\r\n }\r\n\r\n touched(listener?: Handler): boolean {\r\n if (listener) this._notifier.addListener(\"touched\", listener);\r\n return this._touched;\r\n }\r\n\r\n setTouched(): void {\r\n if (!this._touched) {\r\n this._touched = true;\r\n this._notifier.notify(\"touched\", true);\r\n }\r\n }\r\n\r\n configure(initValue?: unknown, validator?: FieldValidator): void {\r\n let shouldValidate = false;\r\n\r\n if (\r\n initValue !== undefined &&\r\n this._value === undefined &&\r\n this._initValue === undefined\r\n ) {\r\n this._value = initValue;\r\n this._initValue = initValue;\r\n this._notifier.notify(\"value\", initValue);\r\n this._notifier.notify(\"dirty\", false);\r\n shouldValidate = true;\r\n }\r\n\r\n if (validator !== undefined && validator !== this._validator) {\r\n this._validator = validator;\r\n shouldValidate = true;\r\n }\r\n\r\n if (shouldValidate) this.validate();\r\n }\r\n\r\n message(type: keyof FieldMessages, listener?: Handler): string | undefined {\r\n if (listener) this._notifier.addListener(type, listener);\r\n return this._messages[type];\r\n }\r\n\r\n status(listener?: Handler): FieldStatus {\r\n if (listener) this._notifier.addListener(\"status\", listener);\r\n return resolveStatus(this._messages);\r\n }\r\n\r\n setMessages(next: FieldMessages): void {\r\n const prev = this._messages;\r\n this._messages = next;\r\n for (const type of [\"error\", \"warning\", \"success\"] as const) {\r\n if (prev[type] !== next[type]) this._notifier.notify(type, next[type]);\r\n }\r\n if (resolveStatus(prev) !== resolveStatus(next)) {\r\n this._notifier.notify(\"status\", resolveStatus(next));\r\n }\r\n }\r\n\r\n reset(): void {\r\n this._value = this._initValue;\r\n this._touched = false;\r\n this._notifier.notify(\"value\", this._value);\r\n this._notifier.notify(\"dirty\", false);\r\n this._notifier.notify(\"touched\", false);\r\n this.setMessages({});\r\n this.validate();\r\n }\r\n\r\n validate(): void {\r\n const token = ++this._validationToken;\r\n\r\n if (!this._validator) {\r\n this._pending = false;\r\n this.setMessages({});\r\n return;\r\n }\r\n\r\n try {\r\n const result = this._validator(this._value);\r\n\r\n if (isPromiseLike(result)) {\r\n this._pending = true;\r\n Promise.resolve(result)\r\n .then((msg) => {\r\n if (token !== this._validationToken) return;\r\n this._pending = false;\r\n this.setMessages(msg ?? {});\r\n })\r\n .catch((error) => {\r\n if (token !== this._validationToken) return;\r\n this._pending = false;\r\n console.error(error);\r\n });\r\n } else {\r\n this._pending = false;\r\n this.setMessages(result ?? {});\r\n }\r\n } catch (error) {\r\n if (token === this._validationToken) {\r\n this._pending = false;\r\n }\r\n console.error(error);\r\n }\r\n }\r\n\r\n _dispose(): void {\r\n this._validationToken += 1;\r\n this._pending = false;\r\n this._notifier._dispose();\r\n }\r\n}\r\n\r\nfunction resolveStatus(m: FieldMessages): FieldStatus {\r\n if (m.error) return \"error\";\r\n if (m.warning) return \"warning\";\r\n if (m.success) return \"success\";\r\n return undefined;\r\n}\r\n","import { FieldState, FieldValidator } from \"./FieldState.js\";\r\n\r\nexport class FormState {\r\n fields = new Map<string, FieldState>();\r\n\r\n setField(path: string, initValue?: unknown, validator?: FieldValidator): FieldState {\r\n let field = this.fields.get(path);\r\n\r\n if (!field) {\r\n field = new FieldState(initValue, validator);\r\n this.fields.set(path, field);\r\n } else {\r\n field.configure(initValue, validator);\r\n }\r\n\r\n return field;\r\n }\r\n\r\n getField(path: string): FieldState {\r\n return this.setField(path);\r\n }\r\n\r\n removeField(path: string): void {\r\n this.fields.get(path)?._dispose();\r\n this.fields.delete(path);\r\n }\r\n\r\n get valid(): boolean {\r\n for (const f of this.fields.values()) {\r\n if (f._pending || f._messages.error) return false;\r\n }\r\n return true;\r\n }\r\n\r\n reset(): void {\r\n for (const f of this.fields.values()) f.reset();\r\n }\r\n\r\n snapshot(): Record<string, unknown> {\r\n const result: Record<string, unknown> = {};\r\n for (const [path, f] of this.fields) setByPath(result, path, f._value);\r\n return result;\r\n }\r\n\r\n _dispose(): void {\r\n for (const f of this.fields.values()) f._dispose();\r\n this.fields.clear();\r\n }\r\n}\r\n\r\nfunction setByPath(obj: Record<string, unknown>, path: string, value: unknown): void {\r\n const segments = path.split(\".\");\r\n let cur: any = obj;\r\n for (let i = 0; i < segments.length - 1; i++) {\r\n const key = segments[i];\r\n if (cur[key] == null) cur[key] = isNaN(Number(segments[i + 1])) ? {} : [];\r\n cur = cur[key];\r\n }\r\n cur[segments[segments.length - 1]] = value;\r\n}\r\n"],"mappings":"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","names":["toState","themeColor","themeSize","themeSpacing","abbreviation","props","_a","_b","color","accentColor","node","listener","toState","themeColor","themeDensity","themeSpacing","card","props","_a","color","listener","merge","toState","themeColor","themeSpacing","splitter","props","direction","defaultSize","min","max","node","element","splitterPanel","ctx","el","prop","release","size","splitterHandle","handle","isHorizontal","onMousedown","e","container","onMousemove","rect","raw","onMouseup","listener","merge","toState","themeColor","themeDensity","themeSize","themeSpacing","command","node","element","commandSearch","props","color","accentColor","ctx","input","onInput","listener","commandItem","_a","_b","el","text","release","q","toState","themeColor","themeSize","themeSpacing","toggle","props","_a","_b","color","accentColor","node","ctx","items","n","key","listener","val","arr","v","toState","themeSpacing","themeColor","themeSize","toggleGroup","props","_a","multiple","color","listener","themeSpacing","inputOTP","node","container","getInputs","onInput","e","inputs","target","idx","onKeydown","onPaste","_a","_b","_c","text","startIdx","char","i","lastFilled","toState","themeColor","themeDensity","themeSize","themeSpacing","alert","props","_a","color","listener","toState","themeColor","themeSize","themeSpacing","avatar","props","_a","color","listener","toState","themeSpacing","themeColor","themeSize","badge","props","_a","label","state","color","l","toState","themeColor","themeSize","themeSpacing","breadcrumb","props","_a","separator","color","node","listener","toState","themeColor","themeSize","themeSpacing","breadcrumbEllipsis","props","_a","color","node","listener","toState","merge","themeSpacing","themeColor","themeDensity","themeSize","toState","themeColor","themeSize","themeSpacing","xSvg","tag","props","_a","removable","color","node","removeBtn","e","listener","toState","merge","computePosition","autoUpdate","offset","flip","shift","creatFloating","props","open","placement","timer","cleanup","reference","floating","openState","instantShow","x","y","resolved","instantHide","show","hide","floatingPartial","listener","node","rootNode","overlay","overlayEle","e","root","floatingNode","handleOutside","event","target","combobox","props","options","placement","color","open","multiple","state","toState","openState","show","hide","anchorPartial","creatFloating","popoverPartial","merge","inputStyle","themeSpacing","listener","themeSize","themeColor","inputElement","wrap","val","vals","items","opt","tag","_node","cur","filter","v","partial","node","themeDensity","toState","themeSpacing","themeColor","themeSize","popoverArrow","props","placement","color","sideOffset","bordered","place","flipMap","getFlipped","listener","_a","start","pos","end","x","y","toState","themeSpacing","themeColor","themeDensity","themeSize","blockquote","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","button","props","_a","color","node","listener","toState","themeColor","themeSpacing","themeSize","inputCheckbox","props","_a","_b","color","accentColor","node","listener","toState","themeSpacing","themeColor","themeSize","code","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","details","props","_a","_b","duration","color","accentColor","node","listener","toState","themeColor","themeSpacing","themeSize","descriptionList","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","dialog","props","color","open","state","node","e","r","_e","dlg","update","val","focusable","listener","toState","themeColor","themeSize","emphasis","props","_a","color","node","listener","toState","themeColor","themeSize","themeSpacing","figure","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","formGroup","props","_a","layout","color","isVertical","node","listener","toState","themeColor","themeSize","themeSpacing","Headinghift","heading","props","_a","color","node","listener","offset","toState","themeColor","themeSpacing","horizontalRule","props","_a","color","node","listener","toState","themeColor","themeSpacing","image","props","_a","color","node","listener","toState","themeSpacing","themeColor","themeSize","icon","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputColor","props","_a","_b","color","accentColor","node","element","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputDateTime","props","_a","_b","mode","color","accentColor","node","element","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputFile","props","_a","_b","color","accentColor","node","element","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputSearch","props","_a","_b","color","accentColor","node","element","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputText","props","_a","_b","color","accentColor","node","element","listener","toState","themeColor","themeSpacing","inputRange","props","_a","_b","color","accentColor","node","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputNumber","props","_a","_b","color","accentColor","node","element","listener","toState","themeColor","themeSize","themeSpacing","keyboard","props","_a","color","node","listener","toState","themeColor","themeSize","themeSpacing","label","props","_a","_b","color","accentColor","node","listener","toState","themeColor","themeSize","themeSpacing","link","props","_a","_b","color","accentColor","node","listener","toState","themeSpacing","themeSize","themeColor","mark","props","_a","accentColor","node","listener","toState","themeColor","themeSize","paragraph","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","preformated","props","_a","color","node","listener","toState","themeColor","themeSpacing","progress","props","_a","_b","color","accentColor","node","listener","toState","themeColor","themeSize","themeSpacing","inputRadio","props","_a","_b","color","accentColor","node","listener","themeColor","themeDensity","themeSize","themeSpacing","themeColorToken","select","props","color","accentColor","node","listener","l","svg","hashString","toState","themeColor","themeSize","themeSpacing","skeleton","props","_a","color","keyframes","animationName","listener","hashString","toState","themeColor","themeSize","themeSpacing","keyframes","animationName","spinner","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","selectList","props","_a","color","multiple","state","inputs","listener","val","v","node","themeSpacing","themeColor","themeDensity","themeSize","selectItem","props","accentColor","color","value","node","select","state","listener","val","v","toState","merge","themeSpacing","themeColor","themeDensity","themeSize","selectBox","props","options","placement","color","open","multiple","state","toState","openState","show","hide","anchorPartial","creatFloating","popoverPartial","merge","wrap","listener","val","vals","opt","tag","_node","cur","filter","v","themeSpacing","partial","node","themeDensity","themeColor","themeSize","toState","themeColor","themeSize","themeSpacing","inputSwitch","props","_a","accentColor","node","listener","toState","themeColor","themeSize","themeSpacing","buttonSwitch","props","_a","_b","checked","check","color","accentColor","node","listener","toState","themeColor","themeSize","small","props","_a","color","node","listener","toState","themeColor","themeSize","strong","props","_a","color","node","listener","toState","themeColor","themeSize","subscript","props","_a","color","node","listener","toState","themeColor","themeSize","superscript","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","table","props","_a","color","node","listener","l","toState","themeColor","themeDensity","themeSpacing","themeSize","textarea","props","_a","_b","color","accentColor","autoResize","node","el","resize","listener","toState","themeColor","themeSize","themeSpacing","unorderedList","props","_a","color","node","listener","toState","themeColor","themeSize","themeSpacing","orderedList","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","getPages","current","total","_","i","pages","start","end","pagination","props","_a","color","accentColor","state","toState","btnBase","listener","themeSpacing","themeDensity","themeSize","themeColor","activeStyle","__spreadProps","__spreadValues","node","content","page","items","p","isActive","toState","themeColor","themeSize","themeSpacing","divider","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","translateOut","marginMap","isVertical","p","drawer","props","color","open","placement","size","state","defaultSize","drawerSize","node","e","_e","dlg","update","val","listener","toState","merge","popover","props","open","placement","openOn","popoverId","openState","toState","placeState","show","hide","anchorPartial","creatFloating","popoverPartial","node","id","merge","listener","e","related","root","floatingEl","toState","themeColor","themeDensity","themeSize","themeSpacing","toast","props","position","color","state","isTop","isCenter","isRight","overlayEle","rootNode","overlay","listener","node","done","onEnd","e","merge","toState","themeSpacing","themeColor","themeDensity","themeSize","tooltip","props","open","placement","content","placeState","toState","contentState","tooltipId","contentElement","listener","show","hide","anchorPartial","creatFloating","tooltipPartial","node","id","themeSpacing","themeDensity","themeColor","themeSize","popoverArrow","merge","e","ElementNode","getItemId","node","index","transitionGroup","props","duration","delay","previousRects","item","dom","key","prev","next","deltaX","deltaY","previousTransition","previousTransform","cleanup","onEnd","event","merge","toState","tabs","props","node","element","partial","themeSpacing","themeColor","themeDensity","themeSize","tab","props","accentColor","color","node","_a","context","children","n","key","part","listener","e","_b","_c","_d","k","tabs","idx","next","target","themeSpacing","themeDensity","tabPanel","listener","node","_a","context","children","n","key","part","merge","toState","themeColor","themeDensity","themeSize","themeSpacing","menu","props","color","selectable","node","element","_a","partial","listener","themeSpacing","themeColor","themeDensity","themeSize","menuItem","props","accentColor","color","node","_a","context","children","n","key","listener","e","_b","_c","_d","k","items","idx","next","merge","form","state","node","element","field","path","validator","node","f","tag","type","part","listener","e","Notifier","isPromiseLike","value","FieldState","initValue","validator","listener","val","shouldValidate","type","resolveStatus","next","prev","token","result","msg","error","m","FormState","path","initValue","validator","field","FieldState","_a","f","result","setByPath","obj","value","segments","cur","i","key"]}
1
+ {"version":3,"sources":["../src/patches/abbreviation.ts","../src/patches/card.ts","../src/patches/splitter.ts","../src/patches/command.ts","../src/patches/toggle.ts","../src/patches/toggleGroup.ts","../src/patches/inputOTP.ts","../src/patches/alert.ts","../src/patches/avatar.ts","../src/patches/badge.ts","../src/patches/breadcrumb.ts","../src/patches/breadcrumbEllipsis.ts","../src/patches/combobox.ts","../src/patches/tag.ts","../src/utils/floating.ts","../src/patches/popoverArrow.ts","../src/patches/blockquote.ts","../src/patches/button.ts","../src/patches/inputCheckbox.ts","../src/patches/code.ts","../src/patches/details.ts","../src/patches/descriptionList.ts","../src/patches/dialog.ts","../src/patches/emphasis.ts","../src/patches/figure.ts","../src/patches/formGroup.ts","../src/patches/heading.ts","../src/patches/horizontalRule.ts","../src/patches/image.ts","../src/patches/icon.ts","../src/patches/inputColor.ts","../src/patches/inputDateTime.ts","../src/patches/inputFile.ts","../src/patches/inputSearch.ts","../src/patches/inputText.ts","../src/patches/inputRange.ts","../src/patches/inputNumber.ts","../src/patches/keyboard.ts","../src/patches/label.ts","../src/patches/link.ts","../src/patches/mark.ts","../src/patches/paragraph.ts","../src/patches/preformated.ts","../src/patches/progress.ts","../src/patches/inputRadio.ts","../src/patches/select.ts","../src/patches/skeleton.ts","../src/patches/spinner.ts","../src/patches/selectList.ts","../src/patches/selectItem.ts","../src/patches/selectBox.ts","../src/patches/inputSwitch.ts","../src/patches/buttonSwitch.ts","../src/patches/small.ts","../src/patches/strong.ts","../src/patches/subscript.ts","../src/patches/superscript.ts","../src/patches/table.ts","../src/patches/textarea.ts","../src/patches/unorderedList.ts","../src/patches/orderedList.ts","../src/patches/pagination.ts","../src/patches/divider.ts","../src/patches/drawer.ts","../src/patches/popover.ts","../src/patches/toast.ts","../src/patches/tooltip.ts","../src/patches/transitionGroup.ts","../src/patches/tabs.ts","../src/patches/tab.ts","../src/patches/tabPanel.ts","../src/patches/menu.ts","../src/patches/menuItem.ts","../src/patches/form.ts","../src/patches/field.ts","../src/classes/FieldState.ts","../src/classes/FormState.ts"],"sourcesContent":["import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, ThemeColor, themeSize, themeSpacing } from \"@domphy/theme\";\n\nfunction abbreviation(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"abbr\") {\n console.warn(`\"abbreviation\" primitive patch must use abbr tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener),\n backgroundColor: (listener) => themeColor(listener),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n textDecorationLine: \"underline\",\n textDecorationStyle: \"dotted\",\n textDecorationColor: (listener) => themeColor(listener, \"shift-7\", color.get(listener)),\n textUnderlineOffset: themeSpacing(0.72),\n cursor: \"help\",\n \"&:hover\": {\n color: (listener) => themeColor(listener, \"shift-11\", accentColor.get(listener)),\n textDecorationColor: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n },\n },\n };\n}\n\nexport { abbreviation };\n","import { type PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction card(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n return {\n style: {\n display: \"grid\",\n gridTemplateColumns: \"1fr auto\",\n gridTemplateAreas: '\"image image\" \"title aside\" \"desc aside\" \"content content\" \"footer footer\"',\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n outlineOffset: \"-1px\",\n overflow: \"hidden\",\n \"& > img\": {\n gridArea: \"image\",\n width: \"100%\",\n height: \"auto\",\n display: \"block\",\n },\n \"& > :is(h1,h2,h3,h4,h5,h6)\": {\n gridArea: \"title\",\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n fontWeight: \"600\",\n margin: 0\n },\n \"& > p\": {\n gridArea: \"desc\",\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n margin: 0\n },\n \"& > aside\": {\n gridArea: \"aside\",\n alignSelf: \"center\",\n padding: (listener) => themeSpacing(themeDensity(listener) * 2),\n height: \"auto\",\n },\n \"& > div\": {\n gridArea: \"content\",\n padding: (listener) => themeSpacing(themeDensity(listener) * 4),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n },\n \"& > footer\": {\n gridArea: \"footer\",\n display: \"flex\",\n gap: themeSpacing(2),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n borderTop: (listener) => `1px solid ${themeColor(listener, \"shift-3\", color.get(listener))}`,\n },\n },\n };\n}\n\nexport { card };\n","import { type PartialElement, merge, toState } from \"@domphy/core\";\r\nimport { themeColor, themeSpacing } from \"@domphy/theme\";\r\n\r\nfunction splitter(props: {\r\n direction?: \"horizontal\" | \"vertical\";\r\n defaultSize?: number;\r\n min?: number;\r\n max?: number;\r\n} = {}): PartialElement {\r\n const { direction = \"horizontal\", defaultSize = 50, min = 10, max = 90 } = props;\r\n return {\r\n _onSchedule: (node, element) => {\r\n merge(element, {\r\n _context: {\r\n splitter: {\r\n direction,\r\n size: toState(defaultSize),\r\n min,\r\n max,\r\n },\r\n },\r\n });\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexDirection: direction === \"horizontal\" ? \"row\" : \"column\",\r\n overflow: \"hidden\",\r\n },\r\n };\r\n}\r\n\r\nfunction splitterPanel(): PartialElement {\r\n return {\r\n _onMount: (node) => {\r\n const ctx = node.getContext(\"splitter\");\r\n const el = node.domElement as HTMLElement;\r\n const prop = ctx.direction === \"horizontal\" ? \"width\" : \"height\";\r\n\r\n el.style[prop] = `${ctx.size.get()}%`;\r\n el.style.flexShrink = \"0\";\r\n el.style.overflow = \"auto\";\r\n\r\n const release = ctx.size.addListener((size: number) => {\r\n el.style[prop] = `${size}%`;\r\n });\r\n node.addHook(\"Remove\", release);\r\n },\r\n };\r\n}\r\n\r\nfunction splitterHandle(): PartialElement {\r\n return {\r\n _onMount: (node) => {\r\n const ctx = node.getContext(\"splitter\");\r\n const handle = node.domElement as HTMLElement;\r\n const isHorizontal = ctx.direction === \"horizontal\";\r\n\r\n handle.style.cursor = isHorizontal ? \"col-resize\" : \"row-resize\";\r\n\r\n const onMousedown = (e: MouseEvent) => {\r\n e.preventDefault();\r\n const container = handle.parentElement!;\r\n\r\n const onMousemove = (e: MouseEvent) => {\r\n const rect = container.getBoundingClientRect();\r\n const raw = isHorizontal\r\n ? ((e.clientX - rect.left) / rect.width) * 100\r\n : ((e.clientY - rect.top) / rect.height) * 100;\r\n ctx.size.set(Math.min(Math.max(raw, ctx.min), ctx.max));\r\n };\r\n\r\n const onMouseup = () => {\r\n document.removeEventListener(\"mousemove\", onMousemove);\r\n document.removeEventListener(\"mouseup\", onMouseup);\r\n };\r\n\r\n document.addEventListener(\"mousemove\", onMousemove);\r\n document.addEventListener(\"mouseup\", onMouseup);\r\n };\r\n\r\n handle.addEventListener(\"mousedown\", onMousedown);\r\n node.addHook(\"Remove\", () => handle.removeEventListener(\"mousedown\", onMousedown));\r\n },\r\n style: {\r\n flexShrink: 0,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\"),\r\n \"&:hover\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-3\"),\r\n },\r\n \"&::after\": {\r\n content: '\"\"',\r\n borderRadius: themeSpacing(999),\r\n backgroundColor: (listener) => themeColor(listener, \"shift-4\"),\r\n },\r\n },\r\n };\r\n}\r\n\r\nexport { splitter, splitterPanel, splitterHandle };\r\n","import { type PartialElement, merge, toState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\r\n\r\nfunction command(): PartialElement {\r\n return {\r\n _onSchedule: (node, element) => {\r\n merge(element, {\r\n _context: {\r\n command: {\r\n query: toState(\"\"),\r\n },\r\n },\r\n });\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n overflow: \"hidden\",\r\n },\r\n };\r\n}\r\n\r\nfunction commandSearch(props: { color?: ThemeColor; accentColor?: ThemeColor } = {}): PartialElement {\r\n const { color = \"neutral\", accentColor = \"primary\" } = props;\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName !== \"input\") {\r\n console.warn(`\"commandSearch\" patch must use input tag`);\r\n }\r\n },\r\n _onMount: (node) => {\r\n const ctx = node.getContext(\"command\");\r\n const input = node.domElement as HTMLInputElement;\r\n const onInput = () => ctx.query.set(input.value);\r\n input.addEventListener(\"input\", onInput);\r\n node.addHook(\"Remove\", () => input.removeEventListener(\"input\", onInput));\r\n },\r\n style: {\r\n fontFamily: \"inherit\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\r\n border: \"none\",\r\n borderBottom: (listener) => `1px solid ${themeColor(listener, \"shift-3\", color)}`,\r\n outline: \"none\",\r\n color: (listener) => themeColor(listener, \"shift-10\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n \"&::placeholder\": {\r\n color: (listener) => themeColor(listener, \"shift-7\"),\r\n },\r\n \"&:focus-visible\": {\r\n borderBottomColor: (listener) => themeColor(listener, \"shift-6\", accentColor),\r\n },\r\n },\r\n };\r\n}\r\n\r\nfunction commandItem(props: { color?: ThemeColor; accentColor?: ThemeColor } = {}): PartialElement {\r\n const { color = \"neutral\", accentColor = \"primary\" } = props;\r\n return {\r\n role: \"option\",\r\n _onMount: (node) => {\r\n const ctx = node.getContext(\"command\");\r\n const el = node.domElement as HTMLElement;\r\n const text = el.textContent?.toLowerCase() ?? \"\";\r\n const release = ctx.query.addListener((q: string) => {\r\n el.hidden = q.length > 0 && !text.includes(q.toLowerCase());\r\n });\r\n node.addHook(\"Remove\", release);\r\n },\r\n style: {\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n border: \"none\",\r\n outline: \"none\",\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n \"&:hover:not([disabled])\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color),\r\n },\r\n \"&:focus-visible\": {\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor)}`,\r\n outlineOffset: `-${themeSpacing(0.5)}`,\r\n },\r\n },\r\n };\r\n}\r\n\r\nexport { command, commandSearch, commandItem };\r\n","import { type PartialElement, type ElementNode, toState, type ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction toggle(props: {\n color?: ValueOrState<ThemeColor>;\n accentColor?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n return {\n role: \"button\",\n _onInsert: (node) => {\n if (node.tagName !== \"button\") {\n console.warn(`\"toggle\" patch must use button tag`);\n }\n const ctx = node.getContext(\"toggleGroup\");\n const children = node.parent?.children.items as ElementNode[]\n\n let items = children.filter(n => n.type === \"ElementNode\" && n.attributes.get(\"role\") === \"button\");\n const key = node.key !== undefined ? String(node.key) : String(items.findIndex(n => n === node));\n\n node.attributes.set(\"ariaPressed\", (listener) => {\n const val = ctx.value.get(listener);\n return Array.isArray(val) ? val.includes(key) : val === key;\n })\n\n node.addEvent(\"click\", () => {\n const val = ctx.value.get();\n if (ctx.multiple) {\n const arr = Array.isArray(val) ? [...val] : [];\n ctx.value.set(arr.includes(key) ? arr.filter(v => v !== key) : [...arr, key]);\n } else {\n ctx.value.set(val === key ? \"\" : key);\n }\n })\n },\n style: {\n cursor: \"pointer\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n height: themeSpacing(6),\n paddingBlock: themeSpacing(1),\n paddingInline: themeSpacing(2),\n border: \"none\",\n borderRadius: themeSpacing(1),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n transition:\"background-color 300ms ease\",\n \"&:hover:not([disabled])\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n },\n \"&[aria-pressed=true]\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", accentColor.get(listener)),\n color: (listener) => themeColor(listener, \"shift-12\", accentColor.get(listener)),\n },\n \"&:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n outlineOffset: `-${themeSpacing(0.5)}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n },\n },\n };\n}\n\nexport { toggle };\n","import { type PartialElement, merge, toState, type ValueOrState } from \"@domphy/core\";\r\nimport { themeSpacing, themeColor, themeSize, type ThemeColor } from \"@domphy/theme\";\r\n\r\nfunction toggleGroup(props: {\r\n value?: ValueOrState<string | string[]>;\r\n multiple?: boolean;\r\n color?: ThemeColor;\r\n} = {}): PartialElement {\r\n const { multiple = false, color = \"neutral\" } = props;\r\n return {\r\n role: \"group\",\r\n _context: {\r\n toggleGroup: {\r\n value: toState(props.value ?? (multiple ? [] : \"\")),\r\n multiple,\r\n },\r\n },\r\n style: {\r\n display: \"flex\",\r\n paddingBlock: themeSpacing(1),\r\n paddingInline: themeSpacing(1),\r\n gap: themeSpacing(1),\r\n borderRadius: themeSpacing(2),\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-3\", color)}`,\r\n outlineOffset: \"-1px\",\r\n }\r\n };\r\n}\r\n\r\nexport { toggleGroup };\r\n","import { type PartialElement } from \"@domphy/core\";\r\nimport { themeSpacing } from \"@domphy/theme\";\r\n\r\nfunction inputOTP(): PartialElement {\r\n return {\r\n style: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: themeSpacing(2),\r\n \"& > *\":{\r\n minWidth:themeSpacing(9) + \"!important\",\n }\r\n },\r\n _onMount: (node) => {\r\n const container = node.domElement as HTMLElement;\r\n const getInputs = () => Array.from(container.querySelectorAll(\"input\")) as HTMLInputElement[];\r\n\r\n const onInput = (e: Event) => {\r\n const inputs = getInputs();\r\n const target = e.target as HTMLInputElement;\r\n const idx = inputs.indexOf(target);\r\n if (target.value && idx < inputs.length - 1) {\r\n inputs[idx + 1].focus();\r\n }\r\n };\r\n\r\n const onKeydown = (e: KeyboardEvent) => {\r\n const inputs = getInputs();\r\n const target = e.target as HTMLInputElement;\r\n const idx = inputs.indexOf(target);\r\n if (e.key === \"Backspace\" && !target.value && idx > 0) {\r\n inputs[idx - 1].focus();\r\n }\r\n if (e.key === \"ArrowLeft\" && idx > 0) inputs[idx - 1].focus();\r\n if (e.key === \"ArrowRight\" && idx < inputs.length - 1) inputs[idx + 1].focus();\r\n };\r\n\r\n const onPaste = (e: ClipboardEvent) => {\r\n e.preventDefault();\r\n const text = e.clipboardData?.getData(\"text\") ?? \"\";\r\n const inputs = getInputs();\r\n const startIdx = inputs.indexOf(e.target as HTMLInputElement);\r\n [...text].forEach((char, i) => {\r\n if (inputs[startIdx + i]) inputs[startIdx + i].value = char;\r\n });\r\n const lastFilled = Math.min(startIdx + text.length - 1, inputs.length - 1);\r\n inputs[lastFilled]?.focus();\r\n };\r\n\r\n container.addEventListener(\"input\", onInput);\r\n container.addEventListener(\"keydown\", onKeydown as EventListener);\r\n container.addEventListener(\"paste\", onPaste as EventListener);\r\n\r\n node.addHook(\"Remove\", () => {\r\n container.removeEventListener(\"input\", onInput);\r\n container.removeEventListener(\"keydown\", onKeydown as EventListener);\r\n container.removeEventListener(\"paste\", onPaste as EventListener);\r\n });\r\n },\r\n };\r\n}\r\n\r\nexport { inputOTP };\r\n","import type { PartialElement } from \"@domphy/core\";\nimport { toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction alert(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"primary\", \"color\");\n\n return {\n role: \"alert\",\n // Alert is a semantic surface block, so it should shift the local surface context.\n dataTone: \"shift-2\",\n style: {\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: themeSpacing(3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n boxShadow: (listener) => `inset ${themeSpacing(1)} 0 0 0 ${themeColor(listener, \"shift-8\", color.get(listener))}`,\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n },\n };\n}\n\nexport { alert };\n","import { type PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction avatar(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"primary\", \"color\");\n\n return {\n dataTone: \"shift-2\",\n style: {\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n borderRadius: \"50%\",\n flexShrink: 0,\n width: themeSpacing(9),\n height: themeSpacing(9),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n fontWeight: \"600\",\n userSelect: \"none\",\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n color: (listener) => themeColor(listener, \"shift-11\", color.get(listener)),\n \"& img\": {\n position: \"absolute\",\n inset: 0,\n width: \"100%\",\n height: \"100%\",\n objectFit: \"cover\",\n },\n },\n };\n}\n\nexport { avatar };\n","\nimport { type DomphyElement, type PartialElement, type ValueOrState, toState } from '@domphy/core'\nimport { themeSpacing, themeColor, themeSize, ThemeColor } from \"@domphy/theme\"\n\nfunction badge(props: {\n color?: ValueOrState<ThemeColor>\n label?: ValueOrState<string | number>\n} = {}): PartialElement {\n const { label = 999 } = props\n let state = toState(label)\n const color = toState(props.color ?? \"danger\", \"color\")\n return {\n style: {\n position: \"relative\",\n \"&::after\": {\n content: (l) => `\"${state.get(l)}\"`,\n position: \"absolute\",\n top: 0,\n right: 0,\n transform: \"translate(50%,-50%)\",\n paddingInline:themeSpacing(1),\n minWidth:themeSpacing(6),\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent:\"center\",\n fontSize: (l) => themeSize(l, \"decrease-1\"),\n borderRadius: themeSpacing(999),\n backgroundColor: (l) => themeColor(l, \"shift-9\", color.get(l)),\n color: (l) => themeColor(l, \"shift-0\", color.get(l)),\n }\n }\n }\n}\n\nexport { badge };\n","import type { PartialElement } from \"@domphy/core\";\nimport { toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction breadcrumb(props: {\n color?: ValueOrState<ThemeColor>;\n separator?: string;\n} = {}): PartialElement {\n const { separator = \"/\" } = props;\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName !== \"nav\") console.warn('\"breadcrumb\" patch must use nav tag');\n },\n ariaLabel: \"breadcrumb\",\n style: {\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n gap: themeSpacing(1),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"& > *\": {\n display: \"inline-flex\",\n alignItems: \"center\",\n color: (listener) => themeColor(listener, \"shift-8\", color.get(listener)),\n },\n \"& > *:not(:last-child)::after\": {\n content: `\"${separator}\"`,\n color: (listener) => themeColor(listener, \"shift-4\", color.get(listener)),\n paddingInlineStart: themeSpacing(1),\n },\n \"& > [aria-current=page]\": {\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n pointerEvents: \"none\",\n },\n },\n };\n}\n\nexport { breadcrumb };\n","import type { PartialElement } from \"@domphy/core\";\nimport { toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction breadcrumbEllipsis(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName !== \"button\") {\n console.warn('\"breadcrumbEllipsis\" patch must use button tag');\n }\n },\n ariaLabel: \"More breadcrumb items\",\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n paddingInline: themeSpacing(1),\n border: \"none\",\n background: \"none\",\n cursor: \"pointer\",\n color: (listener) => themeColor(listener, \"shift-8\", color.get(listener)),\n borderRadius: themeSpacing(1),\n \"&:hover\": {\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n },\n \"&:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", color.get(listener))}`,\n outlineOffset: themeSpacing(0.5),\n },\n },\n };\n}\n\nexport { breadcrumbEllipsis };\n","import { type PartialElement, type DomphyElement, type StyleObject, type ValueOrState, toState, merge } from \"@domphy/core\";\r\nimport { themeSpacing, themeColor, themeDensity, themeSize, type ThemeColor, } from \"@domphy/theme\";\r\nimport { type Placement } from \"@floating-ui/dom\";\r\nimport { tag } from \"./tag.js\"\r\nimport { creatFloating } from \"../utils/floating.js\"\r\n\r\nfunction combobox(props: {\r\n multiple?: boolean;\r\n value?: ValueOrState<Array<number | string | null | undefined> | number | string | null | undefined>;\r\n options?: Array<{ label: string, value: string }>;\r\n placement?: ValueOrState<Placement>;\r\n content: DomphyElement;\r\n color?: ThemeColor;\r\n open?: ValueOrState<boolean>;\r\n input?: DomphyElement;\r\n}): PartialElement {\r\n const {\r\n options = [],\r\n placement = \"bottom\",\r\n color = \"neutral\",\r\n open = false,\r\n multiple = false\r\n } = props;\r\n\r\n const state = toState(props.value)\r\n let openState = toState(open)\r\n let { show, hide, anchorPartial } = creatFloating({ open: openState, placement: toState(placement), content: props.content })\r\n\r\n const popoverPartial: PartialElement = {\r\n onClick: () => !multiple && hide(),\r\n };\r\n\r\n merge(props.content, popoverPartial);\r\n\r\n const inputStyle: StyleObject = {\r\n border: \"none\",\r\n outline: \"none\",\r\n padding: 0,\r\n margin: 0,\r\n flex: 1,\r\n height: themeSpacing(6),\r\n marginInlineStart: themeSpacing(2),\r\n fontSize: (listener: any) => themeSize(listener, \"inherit\"),\r\n color: (listener: any) => themeColor(listener, \"shift-9\", color),\r\n backgroundColor: (listener: any) => themeColor(listener, \"inherit\", color),\r\n }\r\n\r\n let inputElement: DomphyElement\r\n if (props.input) {\r\n merge(props.input, { onFocus: () => show(), style: inputStyle, _key: \"combobox-input\" })\r\n inputElement = props.input\r\n } else {\r\n inputElement = {\r\n input: null,\r\n onFocus: () => show(),\r\n value: (listener: any) => { state.get(listener); return \"\" },\r\n style: inputStyle,\r\n _key: \"combobox-input\"\r\n }\r\n }\r\n\r\n const wrap: DomphyElement<\"div\"> = {\r\n div: (listener) => {\r\n const val = state.get(listener)\r\n const vals = Array.isArray(val) ? val : [val]\r\n const opts = options.filter(opt => vals.includes(opt.value))\r\n const items: DomphyElement[] = opts.map(opt => {\r\n return {\r\n span: opt.label,\r\n $: [tag({ color, removable: true })],\r\n _key: opt.value,\r\n _onRemove: (_node) => {\r\n const cur = state.get()\r\n const curVals = Array.isArray(cur) ? cur : [cur]\r\n const filter = curVals.filter(v => v !== opt.value)\r\n multiple ? state.set(filter as any) : state.set(filter[0] as any)\r\n }\r\n }\r\n })\r\n items.push(inputElement)\r\n return items\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n gap: themeSpacing(1),\r\n }\r\n }\r\n\r\n let partial: PartialElement = {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"div\") {\r\n console.warn(`\"combobox\" primitive patch must use div tag`);\r\n }\r\n },\r\n _onInit: (node) => node.children.insert(wrap),\r\n style: {\r\n minWidth: themeSpacing(32),\r\n outlineOffset: \"-1px\",\r\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n }\r\n };\r\n\r\n merge(anchorPartial, partial)\r\n return anchorPartial\r\n}\r\n\r\nexport { combobox };\r\n","import type { PartialElement, DomphyElement } from \"@domphy/core\";\nimport { toState, type ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nconst xSvg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M6.707 5.293l5.293 5.292l5.293 -5.292a1 1 0 0 1 1.414 1.414l-5.292 5.293l5.292 5.293a1 1 0 0 1 -1.414 1.414l-5.293 -5.292l-5.293 5.292a1 1 0 1 1 -1.414 -1.414l5.292 -5.293l-5.292 -5.293a1 1 0 0 1 1.414 -1.414\" /></svg>`\n\nfunction tag(props: {\n color?: ValueOrState<ThemeColor>\n removable?: boolean\n} = {}): PartialElement {\n const { removable=false } = props;\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n dataTone: \"shift-2\",\n _onInit: (node) => {\n\n const removeBtn: DomphyElement<\"span\"> = {\n span: xSvg,\n onClick: (e) => { (e as Event).stopPropagation(); node.remove() },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n cursor: \"pointer\",\n borderRadius: themeSpacing(1),\n width: themeSpacing(4),\n height: themeSpacing(4),\n flexShrink: 0,\n \"&:hover\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-4\", color.get(listener)),\n }\n }\n }\n\n removable && node.children.insert(removeBtn)\n\n },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n whiteSpace: \"nowrap\",\n userSelect: \"none\",\n height: themeSpacing(6),\n paddingBlock: \"0px\",\n borderRadius: themeSpacing(1),\n paddingInlineStart: themeSpacing(2),\n paddingInlineEnd: removable ? themeSpacing(1) : themeSpacing(2),\n gap: themeSpacing(2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n },\n };\n}\n\nexport { tag };\n","import { ElementNode, State, PartialElement, DomphyElement, toState, ValueOrState, merge } from \"@domphy/core\";\r\nimport { computePosition, autoUpdate, offset, flip, shift, type Placement } from \"@floating-ui/dom\";\r\n\r\nfunction creatFloating(props: {\r\n open?: ValueOrState<boolean>;\r\n placement: State<Placement>;\r\n content: DomphyElement;\r\n}) {\r\n const {\r\n open = false,\r\n placement,\r\n } = props;\r\n\r\n let timer: ReturnType<typeof setTimeout> | null = null;\r\n let cleanup: (() => void) | null = null;\r\n let reference: HTMLElement | null = null\r\n let floating: HTMLElement | null = null\r\n const openState = toState(open);\r\n\r\n const instantShow = () => {\r\n if (reference && floating) {\r\n cleanup && cleanup();\r\n cleanup = autoUpdate(reference, floating, () => {\r\n computePosition(reference as HTMLElement, floating as HTMLElement, {\r\n placement: placement.get() as Placement,\r\n middleware: [offset(12), flip(), shift()],\r\n strategy: \"fixed\"\r\n }).then(({ x, y, placement: resolved }) => {\r\n Object.assign((floating as HTMLElement).style, { left: `${x}px`, top: `${y}px` });\r\n placement.set(resolved)\r\n });\r\n });\r\n openState.set(true)\r\n }\r\n };\r\n const instantHide = () => { cleanup && cleanup(); cleanup = null; openState.set(false) }\r\n const show = () => { timer && clearTimeout(timer); timer = setTimeout(instantShow, 100) }\r\n const hide = () => { timer && clearTimeout(timer); timer = setTimeout(instantHide, 100) }\r\n\r\n const floatingPartial: PartialElement = {\r\n style: {\r\n position: \"fixed\",\r\n pointerEvents: \"auto\",\r\n visibility: (listener) => openState.get(listener) ? \"visible\" : \"hidden\",\r\n\r\n },\r\n _onMount: (node) => floating = node.domElement as HTMLElement,\r\n\r\n _portal: (rootNode) => {\r\n let overlay = rootNode.domElement!.querySelector(`#domphy-floating`);\r\n if (!overlay) {\r\n const overlayEle: DomphyElement<\"div\"> = {\r\n div: [],\r\n id: `domphy-floating`,\r\n style: { position: \"fixed\", inset: 0, zIndex: 20, pointerEvents: \"none\" },\r\n };\r\n const overlayNode = rootNode.children!.insert(overlayEle) as ElementNode;\r\n overlay = overlayNode.domElement!;\r\n }\r\n return overlay;\r\n },\r\n };\r\n\r\n merge(props.content, floatingPartial);\r\n\r\n const anchorPartial: PartialElement = {\r\n onKeyDown: (e) => (e as KeyboardEvent).key === \"Escape\" && hide(),\r\n _onMount: (node) => {\r\n const root = node.getRoot()\r\n reference = node.domElement as HTMLElement\r\n\r\n const floatingNode = root.children!.insert(props.content) as ElementNode\r\n \r\n const handleOutside = (event: MouseEvent) => {\r\n if (!openState.get() || !reference || !floating) return;\r\n\r\n const target = event.target as Node;\r\n if (!reference.contains(target) && !floating.contains(target)) {\r\n hide()\r\n }\r\n }\r\n node.getRoot().domElement!.addEventListener(\"click\", handleOutside)\r\n \r\n node.addHook(\"BeforeRemove\", () => {\r\n if (timer) clearTimeout(timer);\r\n floatingNode && floatingNode.remove();\r\n node.getRoot().domElement!.removeEventListener(\"click\", handleOutside)\r\n });\r\n }\r\n };\r\n\r\n return { show, hide, anchorPartial };\r\n}\r\n\r\nexport { creatFloating };\r\n","import { toState, ValueOrState, PartialElement } from \"@domphy/core\";\r\nimport { themeSpacing, themeColor, themeSize, type ThemeColor } from \"@domphy/theme\";\r\nimport { type Placement } from \"@floating-ui/dom\";\r\n\r\nfunction popoverArrow(props: {\r\n placement?: ValueOrState<Placement>;\r\n sideOffset?: string;\r\n color?: ThemeColor;\r\n bordered?: boolean;\r\n\r\n} = {}): PartialElement {\r\n let {\r\n placement = \"bottom-end\",\r\n color = \"neutral\",\r\n sideOffset = themeSpacing(6),\r\n bordered = true\r\n } = props\r\n\r\n let place = toState(placement)\r\n\r\n const flipMap: Record<Placement, Placement> = {\r\n \"top\": \"bottom\",\r\n \"bottom\": \"top\",\r\n \"left\": \"right\",\r\n \"right\": \"left\",\r\n \"top-start\": \"bottom-end\",\r\n \"top-end\": \"bottom-start\",\r\n \"bottom-start\": \"top-end\",\r\n \"bottom-end\": \"top-start\",\r\n \"left-start\": \"right-end\",\r\n \"left-end\": \"right-start\",\r\n \"right-start\": \"left-end\",\r\n \"right-end\": \"left-start\",\r\n }\r\n\r\n const getFlipped = (listener: any) => flipMap[place.get(listener)] ?? flipMap[\"bottom-end\"]\r\n const start = (pos: string) => pos.includes(\"start\") ? sideOffset : pos.includes(\"end\") ? \"auto\" : \"50%\"\r\n const end = (pos: string) => pos.includes(\"end\") ? sideOffset : pos.includes(\"start\") ? \"auto\" : \"50%\"\r\n\r\n return {\r\n style: {\r\n fontSize: (listener) => themeSize(listener),\r\n backgroundColor: (listener) => themeColor(listener),\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\r\n position: \"relative\",\r\n \"&::after\": {\r\n content: `\"\"`,\r\n position: \"absolute\",\r\n width: themeSpacing(1.5),\r\n height: themeSpacing(1.5),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n borderWidth: bordered ? \"1px\" : \"0px\",\r\n borderColor: (listener) => themeColor(listener, \"inherit\", color),\r\n borderTopStyle: (listener) => {\r\n const pos = getFlipped(listener)\r\n\r\n return pos.includes(\"top\") || pos.includes(\"right\") ? `solid` : \"none\"\r\n },\r\n borderBottomStyle: (listener) => {\r\n const pos = getFlipped(listener)\r\n \r\n return pos.includes(\"bottom\") || pos.includes(\"left\") ? `solid` : \"none\"\r\n },\r\n borderLeftStyle: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"top\") || pos.includes(\"left\") ? `solid` : \"none\"\r\n },\r\n borderRightStyle: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"bottom\") || pos.includes(\"right\") ? `solid` : \"none\"\r\n },\r\n top: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"top\") ? 0 : pos.includes(\"bottom\") ? \"auto\" : start(pos)\r\n },\r\n right: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"right\") ? 0 : pos.includes(\"left\") ? \"auto\" : end(pos)\r\n },\r\n bottom: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"bottom\") ? 0 : pos.includes(\"top\") ? \"auto\" : end(pos)\r\n },\r\n left: (listener) => {\r\n const pos = getFlipped(listener)\r\n return pos.includes(\"left\") ? 0 : pos.includes(\"right\") ? \"auto\" : start(pos)\r\n },\r\n transform: (listener) => {\r\n const pos = getFlipped(listener)\r\n const x = pos.includes(\"right\") || (pos.includes(\"end\") && !pos.includes(\"left\")) ? \"50%\" : \"-50%\"\r\n const y = pos.includes(\"bottom\") || (pos.includes(\"end\") && !pos.includes(\"top\")) ? \"50%\" : \"-50%\"\r\n return `translate(${x},${y}) rotate(45deg)`\r\n },\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport { popoverArrow }","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\r\nimport { themeSpacing, ThemeColor, themeColor, themeDensity, themeSize } from \"@domphy/theme\";\r\n\r\nfunction blockquote(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\r\n const color = toState(props.color ?? \"inherit\", \"color\");\r\n\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"blockquote\") {\r\n console.warn(`\"blockquote\" primitive patch must use blockquote tag`);\r\n }\r\n },\r\n dataTone: \"shift-2\",\r\n style: {\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\r\n boxShadow: (listener) => `inset ${themeSpacing(1)} 0 0 0 ${themeColor(listener, \"shift-4\", color.get(listener))}`,\r\n border: \"none\",\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\r\n margin: 0,\r\n },\r\n };\r\n}\r\n\r\nexport { blockquote };\r\n","import { type PartialElement, toState, type ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor, } from \"@domphy/theme\";\n\nfunction button(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"primary\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"button\") {\n console.warn(`\"button\" primitive patch must use button tag`);\n }\n },\n style: {\n appearance: \"none\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n // Single-line bounded control: block/radius = 1D, inline = 3D.\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n width: \"fit-content\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: (listener) => themeSpacing(themeDensity(listener) * 1),\n userSelect: \"none\",\n fontFamily: \"inherit\",\n lineHeight: \"inherit\",\n border: \"none\",\n outlineOffset: \"-1px\",\n outlineWidth: \"1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"&:hover:not([disabled]):not([aria-busy=true])\": {\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n },\n \"&:focus-visible\": {\n boxShadow: (listener) => `inset 0 0 0 ${themeSpacing(0.5)} ${themeColor(listener, \"shift-6\", color.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n },\n \"&[aria-busy=true]\": {\n opacity: 0.7,\n cursor: \"wait\",\n pointerEvents: \"none\",\n },\n },\n };\n}\n\nexport { button };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor, themeSize } from \"@domphy/theme\";\n\nfunction inputCheckbox(props: { color?: ValueOrState<ThemeColor>, accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"checkbox\",\n _onInsert: (node) => {\n if (node.tagName !== \"input\") {\n console.warn(`\"inputCheckbox\" primitive patch must use input tag`);\n }\n },\n style: {\n appearance: \"none\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n display: \"inline-flex\",\n position: \"relative\",\n width: themeSpacing(6),\n height: themeSpacing(6),\n justifyContent: \"center\",\n alignItems: \"center\",\n transition: \"background-color 300ms, outline-color 300ms\",\n margin: 0,\n padding: 0,\n \"&::before\": {\n content: `\"\"`,\n display: \"block\",\n borderRadius: themeSpacing(1),\n lineHeight: 1,\n cursor: \"pointer\",\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n width: themeSpacing(4),\n height: themeSpacing(4),\n },\n \"&:hover::before\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n },\n \"&:checked::before\": {\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n backgroundColor: (listener) => themeColor(listener, \"shift-8\", accentColor.get(listener)),\n },\n \"&:checked:hover:not([disabled])::before\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-7\", accentColor.get(listener)),\n },\n \"&:checked::after\": {\n content: `\"\"`,\n display: \"block\",\n position: \"absolute\",\n top: \"25%\",\n insetInlineStart: \"37%\",\n width: \"20%\",\n height: \"30%\",\n border: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"inherit\", accentColor.get(listener))}`,\n borderTop: 0,\n borderInlineStart: 0,\n transform: \"rotate(45deg)\",\n },\n \"&:indeterminate::before\": {\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", accentColor.get(listener)),\n },\n \"&:indeterminate::after\": {\n content: `\"\"`,\n position: \"absolute\",\n inset: \"30%\",\n backgroundColor: (listener) => themeColor(listener, \"shift-8\", accentColor.get(listener)),\n },\n \"&:indeterminate:hover:not([disabled])::after\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-7\", accentColor.get(listener)),\n },\n \"&:focus-visible\": {\n borderRadius: themeSpacing(1.5),\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n cursor: \"not-allowed\",\n },\n \"&[disabled]::before, &[disabled]::after\": {\n outline: \"none\",\n backgroundColor: (listener) => themeColor(listener, \"shift-4\", \"neutral\"),\n pointerEvents: \"none\",\n },\n }\n }\n}\n\nexport { inputCheckbox };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeSpacing, themeColor, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction code(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n dataTone: \"shift-2\",\n _onInsert: (node) => {\n if (node.tagName != \"code\") {\n console.warn(`\"code\" primitive patch must use code tag`);\n }\n },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n height: themeSpacing(6),\n paddingInline: themeSpacing(1.5),\n borderRadius: themeSpacing(1),\n },\n };\n}\n\nexport { code };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction details(\n props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor>; duration?: number } = {}\n): PartialElement {\n const { duration = 240 } = props;\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"details\") {\n console.warn(`\"details\" primitive patch must use details tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n\n overflow: \"hidden\",\n \"& > summary\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n listStyle: \"none\",\n display: \"flex\",\n justifyContent:\"space-between\",\n alignItems: \"center\",\n gap: themeSpacing(2),\n cursor: \"pointer\",\n userSelect: \"none\",\n fontWeight: 500,\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n height: themeSpacing(10),\n },\n \"& > summary::-webkit-details-marker\": {\n display: \"none\",\n },\n \"& > summary::marker\": {\n content: `\"\"`,\n },\n \"& > summary::after\": {\n content: `\"\"`,\n width: themeSpacing(2),\n height: themeSpacing(2),\n flexShrink: 0,\n marginTop: `-${themeSpacing(0.5)}`,\n borderInlineEnd: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-9\", color.get(listener))}`,\n borderBottom: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-9\", color.get(listener))}`,\n transform: \"rotate(45deg)\",\n transition: `transform ${duration}ms ease`,\n },\n \"&[open] > summary::after\": {\n transform: \"rotate(-135deg)\",\n },\n \"& > summary:hover\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n },\n \"& > summary:focus-visible\": {\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n outlineOffset: `-${themeSpacing(0.5)}`,\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"& > :not(summary)\": {\n maxHeight: \"0px\",\n opacity: 0,\n overflow: \"hidden\",\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingTop: 0,\n paddingBottom: 0,\n transition: `max-height ${duration}ms ease, opacity ${duration}ms ease, padding ${duration}ms ease`,\n },\n \"&[open] > :not(summary)\": {\n maxHeight: themeSpacing(250),\n opacity: 1,\n paddingTop: (listener) => themeSpacing(themeDensity(listener) * 1),\n paddingBottom: (listener) => themeSpacing(themeDensity(listener) * 3),\n },\n },\n };\n}\n\nexport { details };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction descriptionList(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"dl\") {\n console.warn(`\"descriptionList\" primitive patch must use dl tag`);\n }\n },\n style: {\n display: \"grid\",\n gridTemplateColumns: `minmax(${themeSpacing(24)}, max-content) 1fr`,\n columnGap: themeSpacing(4),\n margin: 0,\n \"& dt\": {\n margin: 0,\n fontWeight: 600,\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n },\n \"& dd\": {\n margin: 0,\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n },\n },\n };\n}\n\nexport { descriptionList };\n","import { type PartialElement, type ValueOrState, toState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\r\n\r\nfunction dialog(props: { color?: ThemeColor; open?: ValueOrState<boolean> } = {}): PartialElement {\r\n const { color = \"neutral\", open = false } = props;\r\n const state = toState(open)\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"dialog\") {\r\n console.warn(`\"dialog\" primitive patch must use dialog tag`);\r\n }\r\n },\r\n onClick: (e: MouseEvent, node) => {\r\n if (e.target !== node.domElement) return\r\n const r = node.domElement!.getBoundingClientRect()\r\n const inside =\r\n e.clientX >= r.left &&\r\n e.clientX <= r.right &&\r\n e.clientY >= r.top &&\r\n e.clientY <= r.bottom\r\n if (!inside) state.set(false)\r\n },\r\n onTransitionEnd: (_e, node) => {\r\n const dlg = node.domElement as HTMLDialogElement\r\n if (dlg.style.opacity === \"0\") {\r\n dlg.close()\r\n document.body.style.overflow = \"\"\r\n }\r\n },\r\n _onMount: (node) => {\r\n const dlg = node.domElement as HTMLDialogElement\r\n const update = (val: boolean) => {\r\n if (val) {\r\n dlg.showModal()\r\n document.body.style.overflow = \"hidden\"\r\n requestAnimationFrame(() => {\r\n dlg.style.opacity = \"1\"\r\n const focusable = dlg.querySelector<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\r\n )\r\n focusable?.focus()\r\n })\r\n } else {\r\n dlg.style.opacity = \"0\"\r\n }\r\n }\r\n update(state.get())\r\n state.addListener(update)\r\n },\r\n style: {\r\n opacity: \"0\",\r\n transition: \"opacity 200ms ease\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n color: (listener) => themeColor(listener, \"shift-10\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n border: \"none\",\r\n padding: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n boxShadow: (listener) => `0 ${themeSpacing(9)} ${themeSpacing(16)} ${themeColor(listener, \"shift-4\", \"neutral\")}`,\r\n \"&::backdrop\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\r\n opacity: 0.75,\r\n }\r\n },\r\n };\r\n}\r\n\r\nexport { dialog };\r\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction emphasis(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"em\") {\n console.warn(`\"emphasis\" primitive patch must use em tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n fontStyle: \"italic\",\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n },\n };\n}\n\nexport { emphasis };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction figure(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"figure\") {\n console.warn(`\"figure\" primitive patch must use figure tag`);\n }\n },\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: themeSpacing(2),\n marginInline: 0,\n marginTop: themeSpacing(3),\n marginBottom: themeSpacing(3),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n \"& img, & svg, & video, & canvas\": {\n display: \"block\",\n maxWidth: \"100%\",\n borderRadius: themeSpacing(2),\n },\n \"& figcaption\": {\n fontSize: (listener) => themeSize(listener, \"decrease-1\"),\n color: (listener) => themeColor(listener, \"shift-8\", color.get(listener)),\n lineHeight: 1.45,\n },\n },\n };\n}\n\nexport { figure };\n","import { type PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, type ThemeColor } from \"@domphy/theme\";\n\nfunction formGroup(props: { color?: ValueOrState<ThemeColor>; layout?: \"horizontal\" | \"vertical\" } = {}): PartialElement {\n const { layout = \"horizontal\" } = props;\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n const isVertical = layout === \"vertical\";\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"fieldset\") {\n console.warn(`\"formGroup\" patch must use fieldset tag`);\n }\n },\n style: {\n margin: 0,\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 3),\n border: \"none\",\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n display: \"grid\",\n gridTemplateColumns: isVertical ? `minmax(0, 1fr)` : `max-content minmax(0, 1fr)`,\n columnGap: themeSpacing(4),\n rowGap: themeSpacing(3),\n alignItems: \"start\",\n \"& > legend\": {\n gridColumn: \"1 / -1\",\n margin: 0,\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n fontWeight: 600,\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n },\n \"& > label\": {\n gridColumn: \"1\",\n alignSelf: \"start\",\n margin: 0,\n paddingBlock: (listener) => isVertical ? \"0px\" : themeSpacing(themeDensity(listener) * 1),\n },\n \"& > label:has(+ :not(legend, label, p) + p)\": {\n gridRow: isVertical ? \"auto\" : \"span 2\",\n },\n \"& > :not(legend, label, p)\": {\n gridColumn: isVertical ? \"1\" : \"2\",\n minWidth: 0,\n width: \"100%\",\n boxSizing: \"border-box\",\n },\n \"& > p\": {\n gridColumn: isVertical ? \"1\" : \"2\",\n minWidth: 0,\n margin: 0,\n marginBlockStart: `calc(${themeSpacing(2)} * -1)`,\n fontSize: (listener) => themeSize(listener, \"decrease-1\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n },\n },\n };\n}\n\nexport { formGroup };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nconst Headinghift: Record<string, string> = {\n h6: \"decrease-1\",\n h5: \"inherit\",\n h4: \"increase-1\",\n h3: \"increase-2\",\n h2: \"increase-3\",\n h1: \"increase-4\",\n}\n\nfunction heading(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (![\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].includes(node.tagName)) {\n console.warn(`\"heading\" primitive patch must use heading tags [h1...h6]`);\n }\n },\n style: {\n color: (listener) => themeColor(listener, \"shift-11\", color.get(listener)),\n marginTop: 0,\n marginBottom: themeSpacing(2),\n fontSize: (listener) => {\n const offset = Headinghift[listener.elementNode.tagName] || \"inherit\";\n return themeSize(listener, offset);\n },\n },\n };\n}\n\nexport { heading };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction horizontalRule(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"hr\") {\n console.warn(`\"horizontalRule\" primitive patch must use hr tag`);\n }\n },\n style: {\n border: 0,\n height: \"1px\",\n marginInline: 0,\n marginTop: themeSpacing(3),\n marginBottom: themeSpacing(3),\n backgroundColor: (listener) => themeColor(listener, \"shift-4\", color.get(listener)),\n },\n };\n}\n\nexport { horizontalRule };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction image(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n dataTone: \"shift-2\",\n _onInsert: (node) => {\n if (node.tagName != \"img\") {\n console.warn(`\"image\" primitive patch must use img tag`);\n }\n },\n style: {\n display: \"block\",\n width: \"100%\",\n maxWidth: \"100%\",\n height: \"auto\",\n objectFit: \"cover\",\n borderRadius: themeSpacing(2),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n },\n };\n}\n\nexport { image };\n","import type { PartialElement } from \"@domphy/core\";\nimport { toState, ValueOrState } from \"@domphy/core\";\nimport { themeSpacing, themeColor, themeSize, type ThemeColor } from \"@domphy/theme\";\n\nfunction icon(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n return {\n _onInsert: (node) => {\n if (node.tagName != \"span\") {\n console.warn(`\"icon\" primitive patch should use span tag`);\n }\n },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n alignSelf: \"center\",\n justifySelf: \"center\",\n verticalAlign: \"middle\",\n width: themeSpacing(4),\n height: themeSpacing(4),\n flexShrink: \"0\",\n fontSize: (listener) => themeSize(listener),\n backgroundColor: \"transparent\",\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener))\n },\n };\n}\n\nexport { icon };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, type ThemeColor } from \"@domphy/theme\";\n\nfunction inputColor(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"color\",\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputColor\" primitive patch must use input tag`);\n }\n (element as any).type = \"color\";\n },\n style: {\n appearance: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 1),\n blockSize: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n inlineSize: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n backgroundColor: \"transparent\",\n \"&::-webkit-color-swatch-wrapper\": {\n margin: 0,\n padding: 0,\n },\n \"&::-webkit-color-swatch\": {\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n },\n \"&:hover:not([disabled]), &:focus-visible\": {\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n },\n },\n };\n}\n\nexport { inputColor };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\ntype InputDateTimeMode = \"date\" | \"time\" | \"week\" | \"month\" | \"datetime-local\";\n\nfunction inputDateTime(\n props: { mode?: InputDateTimeMode; color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}\n): PartialElement {\n const { mode = \"datetime-local\" } = props;\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: mode,\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputDateTime\" primitive patch must use input tag`);\n }\n (element as any).type = mode;\n },\n style: {\n fontFamily: \"inherit\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n lineHeight: \"inherit\",\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n \"&::-webkit-calendar-picker-indicator\": {\n cursor: \"pointer\",\n opacity: 0.85,\n },\n \"&:hover:not([disabled]):not([aria-busy=true]), &:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n },\n \"&:invalid\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", \"error\")}`,\n },\n },\n };\n}\n\nexport { inputDateTime };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction inputFile(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"file\",\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputFile\" primitive patch must use input tag`);\n }\n (element as any).type = \"file\";\n },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n fontFamily: \"inherit\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n lineHeight: \"inherit\",\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 1),\n \"&::file-selector-button\": {\n marginBlock: \"auto\",\n fontFamily: \"inherit\",\n fontSize: \"inherit\",\n border: \"none\",\n borderRadius: themeSpacing(1),\n height: themeSpacing(6),\n paddingInline: themeSpacing(2),\n cursor: \"pointer\",\n color: (listener) => themeColor(listener, \"shift-10\", accentColor.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", accentColor.get(listener)),\n },\n \"&::-webkit-file-upload-button\": {\n fontFamily: \"inherit\",\n fontSize: \"inherit\",\n border: \"none\",\n borderRadius: themeSpacing(1),\n height: themeSpacing(6),\n paddingInline: themeSpacing(2),\n cursor: \"pointer\",\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n },\n \"&:hover:not([disabled]):not([aria-busy=true]), &:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n },\n \"&[disabled]::file-selector-button, &[disabled]::-webkit-file-upload-button\": {\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", \"neutral\"),\n },\n },\n };\n}\n\nexport { inputFile };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction inputSearch(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"search\",\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputSearch\" primitive patch must use input tag`);\n }\n (element as any).type = \"search\";\n },\n style: {\n fontFamily: \"inherit\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n lineHeight: \"inherit\",\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n minWidth: themeSpacing(32),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n \"&::placeholder\": {\n color: (listener) => themeColor(listener, \"shift-7\", color.get(listener)),\n },\n \"&::-webkit-search-decoration\": {\n display: \"none\",\n },\n \"&::-webkit-search-cancel-button\": {\n cursor: \"pointer\",\n },\n \"&:hover:not([disabled]):not([aria-busy=true]), &:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n },\n },\n };\n}\n\nexport { inputSearch };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction inputText(props: { color?: ValueOrState<ThemeColor>, accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"text\",\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputText\" primitive patch must use input tag and text type`);\n }\n (element as any).type = \"text\";\n },\n style: {\n fontFamily: \"inherit\",\n lineHeight: \"inherit\",\n minWidth: themeSpacing(10),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"&::placeholder\": {\n color: (listener) => themeColor(listener, \"shift-7\"),\n },\n \"&:not(:placeholder-shown)\": {\n color: (listener) => themeColor(listener, \"shift-10\"),\n },\n \"&:hover:not([disabled]):not([aria-busy=true]), &:focus-visible\": {\n\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n },\n \"&:invalid:not(:placeholder-shown)\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", \"error\")}`,\n },\n \"&[data-status=error]\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", \"error\")}`,\n },\n \"&[data-status=warning]\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", \"warning\")}`,\n },\n },\n };\n}\n\nexport { inputText };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction inputRange(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"range\",\n _onInsert: (node) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputRange\" primitive patch must use input tag`);\n }\n },\n style: {\n appearance: \"none\",\n width: \"100%\",\n margin: 0,\n padding: 0,\n height: themeSpacing(4),\n background: \"transparent\",\n cursor: \"pointer\",\n \"&::-webkit-slider-runnable-track\": {\n height: themeSpacing(1.5),\n borderRadius: themeSpacing(999),\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n },\n \"&::-moz-range-track\": {\n height: themeSpacing(1.5),\n borderRadius: themeSpacing(999),\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n },\n \"&::-webkit-slider-thumb\": {\n appearance: \"none\",\n width: themeSpacing(4),\n height: themeSpacing(4),\n borderRadius: themeSpacing(999),\n border: \"none\",\n marginTop: `calc((${themeSpacing(1.5)} - ${themeSpacing(4)}) / 2)`,\n backgroundColor: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n },\n \"&:hover:not([disabled])::-webkit-slider-thumb\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-10\", accentColor.get(listener)),\n },\n \"&:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n outlineOffset: themeSpacing(1),\n borderRadius: themeSpacing(2),\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n },\n },\n };\n}\n\nexport { inputRange };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction inputNumber(props: { color?: ValueOrState<ThemeColor>, accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"number\",\n _onSchedule: (node, element) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputNumber\" primitive patch must use input tag`);\n }\n (element as any).type = \"number\";\n },\n style: {\n fontFamily: \"inherit\",\n lineHeight: \"inherit\",\n minWidth: themeSpacing(10),\n paddingInlineStart: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingInlineEnd: (listener) => themeSpacing(themeDensity(listener) * 1.5),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"&::-webkit-inner-spin-button, &::-webkit-outer-spin-button\": {\n opacity: 1,\n },\n \"&:hover:not([disabled]):not([aria-busy=true]), &:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n },\n },\n };\n}\n\nexport { inputNumber };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction keyboard(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"kbd\") {\n console.warn(`\"keyboard\" primitive patch must use kbd tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n paddingBlock: themeSpacing(0.5),\n paddingInline: themeSpacing(1.5),\n borderRadius: themeSpacing(1),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n },\n };\n}\n\nexport { keyboard };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction label(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"label\") {\n console.warn(`\"label\" primitive patch must use label tag`);\n }\n },\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: themeSpacing(2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n cursor: \"pointer\",\n \"&:focus-within\": {\n color: (listener) => themeColor(listener, \"shift-10\", accentColor.get(listener)),\n },\n \"&[aria-disabled=true]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n },\n },\n };\n}\n\nexport { label };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\r\nimport { themeColor, themeSize,themeSpacing,type ThemeColor } from \"@domphy/theme\";\r\n\r\nfunction link(props: { color?: ValueOrState<ThemeColor>, accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\r\n const color = toState(props.color ?? \"primary\", \"color\");\r\n const accentColor = toState(props.accentColor ?? \"secondary\", \"accentColor\");\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"a\") {\r\n console.warn(`\"link\" primitive patch must use a tag`)\r\n }\r\n },\r\n style: {\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n backgroundColor: (listener) => themeColor(listener),\r\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\r\n textDecoration: \"none\",\r\n \"&:visited\": {\r\n color: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\r\n },\r\n \"&:hover:not([disabled])\": {\r\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\r\n textDecoration: \"underline\",\r\n },\r\n \"&:focus-visible\": {\r\n borderRadius: themeSpacing(1),\r\n outlineOffset:themeSpacing(1),\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\r\n },\r\n \"&[disabled]\": {\r\n opacity: 0.7,\r\n cursor: \"not-allowed\",\r\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\r\n }\r\n },\r\n };\r\n}\r\n\r\nexport { link };\r\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeSpacing, ThemeColor, themeSize, themeColor } from \"@domphy/theme\";\n\nfunction mark(props: { accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const accentColor = toState(props.accentColor ?? \"highlight\", \"accentColor\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"mark\") {\n console.warn(`\"mark\" primitive patch must use mark tag`);\n }\n },\n dataTone: \"shift-2\",\n style: {\n display: \"inline-flex\",\n alignItems: \"center\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", accentColor.get(listener)),\n height: themeSpacing(6),\n borderRadius: themeSpacing(1),\n paddingInline: themeSpacing(1.5),\n },\n };\n}\n\nexport { mark };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor, themeSize } from \"@domphy/theme\";\n\nfunction paragraph(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"p\") {\n console.warn(`\"paragraph\" primitive patch must use p tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) =>themeColor(listener, \"shift-9\", color.get(listener)),\n lineHeight:1.5,\n marginTop: 0,\n marginBottom: 0,\n },\n };\n}\n\nexport { paragraph };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, ThemeColor, themeSize } from \"@domphy/theme\";\n\nfunction preformated(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n dataTone: \"shift-2\",\n _onInsert: (node) => {\n if (node.tagName != \"pre\") {\n console.warn(`\"preformated\" primitive patch must use pre tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n border: \"none\",\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n },\n };\n}\n\nexport { preformated };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction progress(props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"progress\") {\n console.warn(`\"progress\" primitive patch must use progress tag`);\n }\n },\n style: {\n appearance: \"none\",\n width: \"100%\",\n height: themeSpacing(2),\n border: 0,\n borderRadius: themeSpacing(999),\n overflow: \"hidden\",\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n \"&::-webkit-progress-bar\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", color.get(listener)),\n borderRadius: themeSpacing(999),\n },\n \"&::-webkit-progress-value\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n borderRadius: themeSpacing(999),\n transition: \"width 220ms ease\",\n },\n \"&::-moz-progress-bar\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-9\", accentColor.get(listener)),\n borderRadius: themeSpacing(999),\n },\n },\n };\n}\n\nexport { progress };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, ThemeColor, themeSize, themeSpacing } from \"@domphy/theme\";\n\nfunction inputRadio(props: { color?: ValueOrState<ThemeColor>, accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n type: \"radio\",\n _onInsert: (node) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputRadio\" primitive patch must use input tag and radio type`);\n return;\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n appearance: \"none\",\n display: \"inline-flex\",\n position: \"relative\",\n width: themeSpacing(6),\n height: themeSpacing(6),\n justifyContent: \"center\",\n alignItems: \"center\",\n transition: \"background-color 300ms, outline-color 300ms\",\n margin: 0,\n padding: 0,\n \"&::before\": {\n content: `\"\"`,\n display: \"block\",\n borderRadius: \"50%\",\n lineHeight: 1,\n cursor: \"pointer\",\n border: \"none\",\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n width: themeSpacing(4),\n height: themeSpacing(4)\n },\n \"&:hover::before\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color.get(listener)),\n },\n \"&:checked::before\": {\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&:checked::after\": {\n content: `\"\"`,\n position: \"absolute\",\n inset: \"30%\",\n borderRadius: \"50%\",\n backgroundColor: (listener) => themeColor(listener, \"shift-8\", accentColor.get(listener)),\n },\n \"&:checked:hover:not([disabled])::before\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-7\", accentColor.get(listener)),\n },\n \"&:focus-visible\": {\n borderRadius: \"50%\",\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&[disabled]\": {\n cursor: \"not-allowed\",\n },\n \"&[disabled]::before, &[disabled]::after\": {\n outline: \"none\",\n backgroundColor: (listener) => themeColor(listener, \"shift-4\", \"neutral\"),\n pointerEvents: \"none\",\n },\n }\n }\n}\n\nexport { inputRadio };\n","import { type PartialElement, type Listener } from \"@domphy/core\";\r\nimport { type ThemeColor, themeColor, themeDensity, themeSize, themeSpacing,themeColorToken } from \"@domphy/theme\";\r\n\r\nfunction select(\r\n props: { color?: ThemeColor; accentColor?: ThemeColor } = {}\r\n): PartialElement {\r\n const { color = \"neutral\", accentColor = \"primary\" } = props;\r\n\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"select\") {\r\n console.warn(`\"select\" primitive patch must use select tag`);\r\n }\r\n },\r\n style: {\r\n appearance: \"none\",\r\n fontFamily: \"inherit\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n lineHeight: \"inherit\",\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n border: \"none\",\r\n outlineOffset: \"-1px\",\r\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color)}`,\r\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n paddingLeft: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n paddingRight: (listener) => themeSpacing(themeDensity(listener) * 5),\r\n backgroundImage:(l: Listener)=>{\r\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 10 6\"><path d=\"M1 1l4 4 4-4\" stroke=\"${themeColorToken(l, \"shift-7\")}\" stroke-width=\"1.5\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>`\r\n return `url(\"data:image/svg+xml,${encodeURIComponent(svg)}\")`\r\n } ,\r\n backgroundRepeat: \"no-repeat\",\r\n backgroundPosition: `right ${themeSpacing(2)} center`,\r\n backgroundSize: `${themeSpacing(2.5)} ${themeSpacing(1.5)}`,\r\n \"&:not([multiple])\": {\r\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\r\n },\r\n \"&:hover:not([disabled]):not([aria-busy=true])\": {\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-5\", accentColor)}`,\r\n },\r\n \"&:focus-visible\": {\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor)}`,\r\n },\r\n \"& optgroup\": {\r\n color: (listener) => themeColor(listener, \"shift-11\", color),\r\n },\r\n \"& option[disabled]\": {\r\n color: (listener) => themeColor(listener, \"shift-7\", \"neutral\"),\r\n },\r\n \"&[disabled]\": {\r\n opacity: 0.7,\r\n cursor: \"not-allowed\",\r\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\r\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\r\n }\r\n },\r\n };\r\n}\r\n\r\nexport { select };\r\n","import { type PartialElement, type StyleObject, hashString, toState, type ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nfunction skeleton(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n const keyframes = {\n \"0%,100%\": { opacity: 1 },\n \"50%\": { opacity: .4 }\n }\n const animationName = hashString(JSON.stringify(keyframes))\n return {\n ariaHidden: \"true\",\n dataTone: \"shift-2\",\n style: {\n fontSize: (listener) => themeSize(listener),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n height: themeSpacing(6),\n display: \"block\",\n borderRadius: themeSpacing(1),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n animation: `${animationName} 1.5s ease-in-out infinite`,\n [`@keyframes ${animationName}`]: keyframes,\n } as StyleObject,\n };\n}\n\nexport { skeleton };\n","import type { PartialElement, StyleObject } from \"@domphy/core\";\nimport { hashString, toState, type ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\nconst keyframes = { to: { transform: \"rotate(360deg)\" } };\nconst animationName = hashString(JSON.stringify(keyframes));\n\nfunction spinner(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n role: \"status\",\n ariaLabel: \"loading\",\n _onInsert: (node) => {\n if (node.tagName != \"span\") {\n console.warn(`\"spinner\" patch must use span tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener),\n backgroundColor: (listener) => themeColor(listener),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n display: \"inline-block\",\n margin: 0,\n flexShrink: 0,\n width: themeSpacing(6),\n height: themeSpacing(6),\n borderRadius: \"50%\",\n border: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n borderTopColor: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n boxSizing: \"border-box\",\n padding: 0,\n animation: `${animationName} 0.7s linear infinite`,\n [`@keyframes ${animationName}`]: keyframes,\n } as StyleObject,\n\n };\n}\n\nexport { spinner };\n","import { PartialElement, DomphyElement, State } from \"@domphy/core\";\r\nimport { toState, ValueOrState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\r\nfunction selectList(props: {\r\n multiple?: boolean;\r\n value?: ValueOrState<Array<number | string | null> | number | string | null>;\r\n color?: ThemeColor;\r\n name?: string;\r\n} = {}): PartialElement {\r\n const { color = \"neutral\", multiple = false } = props;\r\n const state = toState(props.value ?? (multiple ? [] : null))\r\n\r\n const inputs: DomphyElement<\"div\"> = {\r\n div: (listener) => {\r\n const val = state.get(listener)\r\n const vals = Array.isArray(val) ? val : [val]\r\n return vals.map((v) => ({ input: null, name: props.name, value: v || \"\" }))\r\n },\r\n hidden: true,\r\n }\r\n\r\n let partial: PartialElement = {\r\n dataTone:\"shift-17\",\n _context: {\r\n select: {\r\n value: state,\r\n multiple,\r\n },\r\n },\r\n _onInit: (node) => {\r\n if (node.tagName != \"div\") {\r\n console.warn(`\"selectList\" patch must use a div tag`)\r\n }\r\n node.children.insert(inputs)\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n },\r\n };\r\n return partial;\r\n}\r\n\r\nexport { selectList };\r\n","import { PartialElement, toState, type State } from \"@domphy/core\";\r\nimport { themeSpacing, ThemeColor, themeColor, themeDensity, themeSize } from \"@domphy/theme\";\n\r\nfunction selectItem(props: {\r\n accentColor?: ThemeColor;\r\n color?: ThemeColor;\r\n value?: number | string;\r\n} = {}): PartialElement {\r\n const {\r\n accentColor = \"primary\",\r\n color = \"neutral\",\r\n value = null\r\n } = props;\r\n\r\n let partial: PartialElement = {\r\n role: \"option\",\r\n _onInit: (node) => {\r\n if (node.tagName != \"div\") {\r\n console.warn(`\"selectItem\" patch must use div tag`);\r\n }\r\n let select = node.getContext(\"select\");\r\n if (select) {\r\n let state = select.value\r\n node.attributes.set(\"ariaSelected\", (listener) => {\r\n let val = state.get(listener)\r\n return select.multiple ? val.includes(value) : val == value\r\n })\r\n node.addEvent(\"click\", () => {\r\n let val = state.get()\r\n if (select.multiple) {\r\n val.includes(value) ? state.set(val.filter((v: number | string) => v !== value)) : state.set(val.concat([value]))\r\n } else {\r\n val != value && state.set(value)\r\n }\r\n })\r\n }\r\n },\r\n style: {\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n border: \"none\",\r\n outline: \"none\",\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n \"&:hover:not([disabled]):not([aria-selected=true])\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", color),\n },\r\n \"&[aria-selected=true]\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-6\", accentColor),\n color: (listener) => themeColor(listener, \"shift-11\"),\n },\n \"&:focus-visible\": {\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor)}`,\n outlineOffset: `-${themeSpacing(0.5)}`,\r\n },\r\n },\r\n };\r\n return partial;\r\n}\r\n\r\nexport { selectItem };\r\n","import { type PartialElement, type DomphyElement, type StyleObject, type ValueOrState, toState, merge } from \"@domphy/core\";\r\nimport { themeSpacing, themeColor, themeDensity, themeSize, type ThemeColor } from \"@domphy/theme\";\r\nimport { type Placement } from \"@floating-ui/dom\";\r\nimport { tag } from \"./tag.js\"\r\nimport { creatFloating } from \"../utils/floating.js\"\r\n\r\nfunction selectBox(props: {\r\n multiple?: boolean;\r\n value?: ValueOrState<Array<number | string | null | undefined> | number | string | null | undefined>;\r\n options?: Array<{ label: string, value: string }>;\r\n placement?: ValueOrState<Placement>;\r\n content: DomphyElement;\r\n color?: ThemeColor;\r\n open?: ValueOrState<boolean>;\r\n}): PartialElement {\r\n const {\r\n options = [],\r\n placement = \"bottom\",\r\n color = \"neutral\",\r\n open = false,\r\n multiple = false\r\n } = props;\r\n\r\n const state = toState(props.value)\r\n let openState = toState(open)\r\n let { show, hide, anchorPartial } = creatFloating({ open: openState, placement: toState(placement), content: props.content })\r\n\r\n const popoverPartial: PartialElement = {\r\n onClick: () => !multiple && hide(),\r\n };\r\n\r\n merge(props.content, popoverPartial);\r\n\r\n const wrap: DomphyElement<\"div\"> = {\r\n div: (listener) => {\r\n const val = state.get(listener)\r\n const vals = Array.isArray(val) ? val : [val]\r\n const opts = options.filter(opt => vals.includes(opt.value))\r\n return opts.map(opt => ({\r\n span: opt.label,\r\n $: [tag({ color, removable: multiple })],\r\n _key: opt.value,\r\n _onRemove: (_node) => {\r\n const cur = state.get()\r\n const curVals = Array.isArray(cur) ? cur : [cur]\r\n const filter = curVals.filter(v => v !== opt.value)\r\n multiple ? state.set(filter as any) : state.set(filter[0] as any)\r\n }\r\n })) as DomphyElement<\"span\">[]\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n gap: themeSpacing(1),\r\n flex: 1,\r\n } as StyleObject\r\n }\r\n\r\n let partial: PartialElement = {\r\n _onInsert: (node) => {\r\n if (node.tagName != \"div\") {\r\n console.warn(`\"selectBox\" patch must use div tag`);\r\n }\r\n },\r\n _onInit: (node) => node.children.insert(wrap),\r\n onClick: () => openState.get() ? hide() : show(),\r\n style: {\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n minHeight: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\r\n minWidth: themeSpacing(32),\r\n outlineOffset: \"-1px\",\r\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 2),\r\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n color: (listener) => themeColor(listener, \"shift-9\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n }\r\n };\r\n\r\n merge(anchorPartial, partial)\r\n return anchorPartial\r\n}\r\n\r\nexport { selectBox };\r\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { ThemeColor, themeColor, themeSize, themeSpacing } from \"@domphy/theme\";\n\nfunction inputSwitch(props: { accentColor?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n dataTone: \"shift-2\",\n type: \"checkbox\",\n _onSchedule: (node) => {\n if (node.tagName != \"input\") {\n console.warn(`\"inputSwitch\" primitive patch must use input tag`);\n return;\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n appearance: \"none\",\n position: \"relative\",\n display: \"inline-flex\",\n width: themeSpacing(9),\n height: themeSpacing(6),\n cursor: \"pointer\",\n margin: `0`,\n paddingBlock: themeSpacing(1),\n \"&:checked\": {\n \"&::before\": {\n backgroundColor: (listener) => themeColor(listener, \"increase-3\", accentColor.get(listener)),\n },\n \"&::after\": {\n left: `calc(100% - ${themeSpacing(3.5)})`,\n },\n },\n \"&::after\": {\n content: `\"\"`,\n aspectRatio: `1/1`,\n position: \"absolute\",\n width: themeSpacing(3),\n height: themeSpacing(3),\n borderRadius: themeSpacing(999),\n left: themeSpacing(0.5),\n top: \"50%\",\n transform: \"translateY(-50%)\",\n transition: \"left 0.3s\",\n backgroundColor: (listener) => themeColor(listener, \"decrease-3\"),\n },\n \"&::before\": {\n content: '\"\"',\n width: \"100%\",\n borderRadius: themeSpacing(999),\n display: \"inline-block\",\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n lineHeight: 1,\n backgroundColor: (listener) => themeColor(listener),\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n }\n },\n };\n}\n\nexport { inputSwitch };\n","import { type PartialElement, toState, type ValueOrState } from \"@domphy/core\";\nimport { type ThemeColor, themeColor, themeSize, themeSpacing } from \"@domphy/theme\";\n\nfunction buttonSwitch(props: {\n checked?: ValueOrState<boolean>;\n accentColor?: ValueOrState<ThemeColor>;\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const { checked = false } = props;\n\n const check = toState(checked);\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n\n return {\n _onSchedule: (node) => {\n if (node.tagName != \"button\") {\n console.warn(`\"buttonSwitch\" primitive patch must use button tag`);\n }\n },\n role: \"switch\",\n ariaChecked: (listener) => check.get(listener),\n dataTone: \"shift-2\",\n onClick: () => check.set(!check.get()),\n style: {\n position: \"relative\",\n display: \"inline-flex\",\n alignItems: \"center\",\n fontSize: (listener) => themeSize(listener),\n border: \"none\",\n outlineWidth: \"1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-3\", color.get(listener))}`,\n minWidth: themeSpacing(12),\n minHeight: themeSpacing(6),\n borderRadius: themeSpacing(999),\n paddingLeft: themeSpacing(7),\n paddingRight: themeSpacing(2),\n transition: \"padding-left 0.3s, padding-right 0.3s\",\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"& > :first-child\": {\n content: '\"\"',\n position: \"absolute\",\n display: \"inline-flex\",\n alignItems: \"center\",\n left: themeSpacing(0.5),\n top: \"50%\",\n transform: \"translateY(-50%)\",\n transition: \"left 0.3s\",\n width: themeSpacing(5),\n height: themeSpacing(5),\n borderRadius: themeSpacing(999),\n color: (listener) => themeColor(listener, \"shift-9\"),\n backgroundColor: (listener) => themeColor(listener, \"decrease-2\", color.get(listener)),\n },\n \"&[aria-checked=true]\": {\n backgroundColor: (listener) => themeColor(listener, \"increase-3\", accentColor.get(listener)),\n outline: \"none\",\n color: (listener) => themeColor(listener, \"decrease-2\"),\n paddingLeft: themeSpacing(2),\n paddingRight: themeSpacing(7),\n },\n \"&[aria-checked=true] > :first-child\": {\n left: `calc(100% - ${themeSpacing(5.5)})`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n },\n },\n };\n}\n\nexport { buttonSwitch };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, ThemeColor, themeSize } from \"@domphy/theme\";\n\nfunction small(props: { color?: ValueOrState<ThemeColor>} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n dataSize:\"decrease-1\",\n _onInsert: (node) => {\n if (node.tagName != \"small\") {\n console.warn(`\"small\" primitive patch must use small tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n },\n };\n}\n\nexport { small };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction strong(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"strong\") {\n console.warn(`\"strong\" primitive patch must use strong tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n fontWeight: 700,\n color: (listener) => themeColor(listener, \"shift-11\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener),\n },\n };\n}\n\nexport { strong };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction subscript(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"sub\") {\n console.warn(`\"subscript\" primitive patch must use sub tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"decrease-1\"),\n verticalAlign: \"sub\",\n lineHeight: 0,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n },\n };\n}\n\nexport { subscript };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction superscript(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"sup\") {\n console.warn(`\"superscript\" primitive patch must use sup tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"decrease-1\"),\n verticalAlign: \"super\",\n lineHeight: 0,\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n },\n };\n}\n\nexport { superscript };\n","import { type PartialElement, type DomphyElement, toState, type ValueOrState } from \"@domphy/core\";\nimport { type ThemeColor, themeColor, themeDensity, themeSpacing, themeSize } from \"@domphy/theme\";\n\nfunction table(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"table\") {\n console.warn(`\"table\" primitive patch must use table tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n width: \"100%\",\n borderCollapse: \"collapse\",\n \"& caption\": {\n captionSide: \"bottom\"\n },\n \"& th, & thead td\": {\n textAlign: \"left\",\n fontWeight: 500,\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n color: (listener) => themeColor(listener, \"shift-10\", color.get(listener)),\n backgroundColor: (listener) => themeColor(listener, \"inherit\"),\n },\n \"& td\": {\n textAlign: \"left\",\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n boxShadow: (listener) => `inset 0 1px 0 ${themeColor(listener, \"shift-3\", color.get(listener))}`,\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n },\n \"& tfoot th, & tfoot td\": {\n textAlign: \"left\",\n fontWeight: 500,\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\n color: (l) => themeColor(l, \"shift-10\", color.get(l)),\n backgroundColor: (l) => themeColor(l, \"inherit\"),\n boxShadow: (l) => `inset 0 -1px 0 ${themeColor(l, \"shift-4\", color.get(l))}`\n },\n \"& tr\": {\n backgroundColor: (listener) => themeColor(listener, \"inherit\"),\n },\n\n \"& tbody tr:hover\": {\n backgroundColor: (listener) => themeColor(listener, \"shift-2\") + \"!important\",\n }\n },\n };\n}\n\nexport { table };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeDensity, themeSpacing, themeSize, ThemeColor } from \"@domphy/theme\";\n\nfunction textarea(\n props: { color?: ValueOrState<ThemeColor>; accentColor?: ValueOrState<ThemeColor>; autoResize?: boolean } = {}\n): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n const accentColor = toState(props.accentColor ?? \"primary\", \"accentColor\");\n const { autoResize = false } = props;\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"textarea\") {\n console.warn(`\"textarea\" primitive patch must use textarea tag`);\n }\n },\n _onMount: (node) => {\n if (autoResize) {\n const el = node.domElement as HTMLTextAreaElement;\n el.style.overflow = \"hidden\";\n const resize = () => {\n el.style.height = \"auto\";\n el.style.height = el.scrollHeight + \"px\";\n };\n el.addEventListener(\"input\", resize);\n resize();\n }\n },\n style: {\n fontFamily: \"inherit\",\n lineHeight: \"inherit\",\n resize: \"vertical\",\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1.5),\n border:\"none\",\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1.5),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n outlineOffset: \"-1px\",\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", color.get(listener))}`,\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color.get(listener)),\n \"&::placeholder\": {\n color: (listener) => themeColor(listener, \"shift-7\"),\n },\n \"&:hover:not([disabled]):not([aria-busy=true])\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-5\", accentColor.get(listener))}`,\n },\n \"&:focus-visible\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor.get(listener))}`,\n },\n \"&:invalid\": {\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-5\", \"error\")}`,\n },\n \"&[disabled]\": {\n opacity: 0.7,\n cursor: \"not-allowed\",\n color: (listener) => themeColor(listener, \"shift-8\", \"neutral\"),\n outline: (listener) => `1px solid ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\n }\n },\n };\n}\n\nexport { textarea };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction unorderedList(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"ul\") {\n console.warn(`\"unorderedList\" primitive patch must use ul tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n backgroundColor: (listener) => themeColor(listener),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n marginTop: 0,\n marginBottom: 0,\n paddingLeft: themeSpacing(3),\n listStyleType: \"disc\",\n listStylePosition: \"outside\",\n },\n };\n}\n\nexport { unorderedList };\n","import { PartialElement, toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, themeSize, themeSpacing, ThemeColor } from \"@domphy/theme\";\n\nfunction orderedList(props: { color?: ValueOrState<ThemeColor> } = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n _onInsert: (node) => {\n if (node.tagName != \"ol\") {\n console.warn(`\"orderedList\" primitive patch must use ol tag`);\n }\n },\n style: {\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n backgroundColor: (listener) => themeColor(listener),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n marginTop: 0,\n marginBottom: 0,\n paddingLeft: themeSpacing(3),\n listStyleType: \"decimal\",\n listStylePosition: \"outside\",\n },\n };\n}\n\nexport { orderedList };\n","import { type PartialElement, type DomphyElement, type ValueOrState, toState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\r\nfunction getPages(current: number, total: number): (number | \"...\")[] {\r\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\r\n const pages: (number | \"...\")[] = [1];\r\n if (current > 3) pages.push(\"...\");\r\n const start = Math.max(2, current - 1);\r\n const end = Math.min(total - 1, current + 1);\r\n for (let i = start; i <= end; i++) pages.push(i);\r\n if (current < total - 2) pages.push(\"...\");\r\n pages.push(total);\r\n return pages;\r\n}\r\n\r\nfunction pagination(props: {\r\n value?: ValueOrState<number>;\r\n total: number;\r\n color?: ThemeColor;\r\n accentColor?: ThemeColor;\r\n}): PartialElement {\r\n const { total, color = \"neutral\", accentColor = \"primary\" } = props;\r\n const state = toState(props.value ?? 1);\r\n\r\n const btnBase = {\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n minWidth: (listener: any) => themeSpacing(6 + themeDensity(listener) * 2),\n height: (listener: any) => themeSpacing(6 + themeDensity(listener) * 2),\n paddingInline: (listener: any) => themeSpacing(themeDensity(listener) * 2),\n borderRadius: (listener: any) => themeSpacing(themeDensity(listener) * 1),\n border: \"none\",\r\n cursor: \"pointer\",\r\n fontSize: (listener: any) => themeSize(listener, \"inherit\"),\r\n backgroundColor: \"transparent\",\r\n color: (listener: any) => themeColor(listener, \"shift-9\", color),\n \"&:hover:not([disabled])\": {\r\n backgroundColor: (listener: any) => themeColor(listener, \"shift-2\", color),\n },\r\n \"&[disabled]\": {\r\n opacity: 0.4,\r\n cursor: \"not-allowed\",\r\n },\r\n };\r\n\r\n const activeStyle = {\n ...btnBase,\n backgroundColor: (listener: any) => themeColor(listener, \"shift-6\", accentColor),\n color: (listener: any) => themeColor(listener, \"shift-11\", accentColor),\n fontWeight: \"600\",\n cursor: \"default\",\n \"&:hover:not([disabled])\": {\n backgroundColor: (listener: any) => themeColor(listener, \"shift-6\", accentColor),\n },\n };\n\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName !== \"div\") console.warn('\"pagination\" patch must use div tag');\r\n },\r\n _onInit: (node) => {\r\n const content: DomphyElement<\"div\"> = {\r\n div: (listener) => {\r\n const page = state.get(listener);\r\n const items: DomphyElement[] = [];\r\n\r\n // Prev button\r\n items.push({\r\n button: \"‹\",\r\n type: \"button\",\r\n ariaLabel: \"Previous page\",\r\n disabled: page <= 1,\r\n onClick: () => page > 1 && state.set(page - 1),\r\n style: btnBase,\r\n });\r\n\r\n // Page buttons\r\n for (const p of getPages(page, total)) {\r\n if (p === \"...\") {\r\n items.push({ span: \"…\", style: { display: \"inline-flex\", alignItems: \"center\", paddingInline: (listener: any) => themeSpacing(themeDensity(listener) * 2), color: (listener: any) => themeColor(listener, \"shift-7\", color) } });\n } else {\r\n const isActive = p === page;\r\n items.push({\r\n button: String(p),\r\n type: \"button\",\r\n ariaLabel: `Page ${p}`,\r\n ariaCurrent: isActive ? \"page\" : undefined,\r\n disabled: isActive,\r\n onClick: () => state.set(p),\r\n style: isActive ? activeStyle : btnBase,\r\n });\r\n }\r\n }\r\n\r\n // Next button\r\n items.push({\r\n button: \"›\",\r\n type: \"button\",\r\n ariaLabel: \"Next page\",\r\n disabled: page >= total,\r\n onClick: () => page < total && state.set(page + 1),\r\n style: btnBase,\r\n });\r\n\r\n return items;\r\n },\r\n style: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: themeSpacing(1),\r\n },\r\n };\r\n node.children.insert(content);\r\n },\r\n style: {\r\n display: \"inline-flex\",\r\n },\r\n };\r\n}\r\n\r\nexport { pagination };\r\n","import type { PartialElement } from \"@domphy/core\";\nimport { toState, ValueOrState } from \"@domphy/core\";\nimport { themeColor, type ThemeColor, themeSize, themeSpacing } from \"@domphy/theme\";\n\nfunction divider(props: {\n color?: ValueOrState<ThemeColor>;\n} = {}): PartialElement {\n const color = toState(props.color ?? \"neutral\", \"color\");\n\n return {\n role: \"separator\",\n _onInsert: (node) => {\n if (node.tagName !== \"div\") {\n console.warn(`\"divider\" patch should be used with <div>`)\n }\n },\n style: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"baseline\",\n gap: themeSpacing(2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n backgroundColor: (listener) => themeColor(listener),\n color: (listener) => themeColor(listener, \"shift-9\", color.get(listener)),\n minHeight: \"1lh\",\n \"&::before\": {\n content: `\"\"`,\n flex:1,\n borderColor: (listener) => themeColor(listener, \"shift-4\", color.get(listener)),\n borderWidth: \"1px\",\n borderBottomStyle: \"solid\",\n },\n \"&::after\": {\n content: `\"\"`,\n flex:1,\n borderColor: (listener) => themeColor(listener, \"shift-4\", color.get(listener)),\n borderWidth: \"1px\",\n borderBottomStyle: \"solid\",\n },\n },\n };\n}\n\nexport { divider };\n","import { type PartialElement, type ValueOrState, toState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\r\n\r\ntype Placement = \"left\" | \"right\" | \"top\" | \"bottom\";\r\n\r\nconst translateOut: Record<Placement, string> = {\r\n left: \"translateX(-100%)\",\r\n right: \"translateX(100%)\",\r\n top: \"translateY(-100%)\",\r\n bottom: \"translateY(100%)\",\r\n};\r\n\r\nconst marginMap: Record<Placement, string> = {\r\n left: \"0 auto 0 0\",\r\n right: \"0 0 0 auto\",\r\n top: \"0 0 auto 0\",\r\n bottom: \"auto 0 0 0\",\r\n};\r\n\r\nconst isVertical = (p: Placement) => p === \"left\" || p === \"right\";\r\n\r\nfunction drawer(props: {\r\n color?: ThemeColor;\r\n open?: ValueOrState<boolean>;\r\n placement?: Placement;\r\n size?: string;\r\n} = {}): PartialElement {\r\n const { color = \"neutral\", open = false, placement = \"right\", size } = props;\r\n const state = toState(open);\r\n const defaultSize = isVertical(placement) ? themeSpacing(80) : themeSpacing(64);\r\n const drawerSize = size ?? defaultSize;\r\n\r\n return {\r\n _onInsert: (node) => {\r\n if (node.tagName !== \"dialog\") {\r\n console.warn(`\"drawer\" patch must use dialog tag`);\r\n }\r\n },\r\n onClick: (e: MouseEvent, node) => {\r\n if (e.target !== node.domElement) return;\r\n state.set(false);\r\n },\r\n onTransitionEnd: (_e, node) => {\r\n const dlg = node.domElement as HTMLDialogElement;\r\n if (!state.get()) {\r\n dlg.close();\r\n document.body.style.overflow = \"\";\r\n }\r\n },\r\n _onMount: (node) => {\r\n const dlg = node.domElement as HTMLDialogElement;\r\n const update = (val: boolean) => {\r\n if (val) {\r\n dlg.showModal();\r\n document.body.style.overflow = \"hidden\";\r\n requestAnimationFrame(() => { dlg.style.transform = \"translate(0, 0)\"; });\r\n } else {\r\n dlg.style.transform = translateOut[placement];\r\n }\r\n };\r\n update(state.get());\r\n state.addListener(update);\r\n },\r\n style: {\r\n transform: translateOut[placement],\r\n transition: \"transform 0.25s ease\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n color: (listener) => themeColor(listener, \"shift-10\", color),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n border: \"none\",\r\n padding: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n margin: marginMap[placement],\r\n width: isVertical(placement) ? drawerSize : \"100dvw\",\r\n height: isVertical(placement) ? \"100dvh\" : drawerSize,\r\n maxWidth: \"100dvw\",\r\n maxHeight: \"100dvh\",\r\n boxShadow: (listener) => `0 ${themeSpacing(4)} ${themeSpacing(12)} ${themeColor(listener, \"shift-4\", \"neutral\")}`,\r\n \"&::backdrop\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\", \"neutral\"),\r\n opacity: 0.75,\r\n },\r\n },\r\n };\r\n}\r\n\r\nexport { drawer };\r\n","import { PartialElement, State, DomphyElement, toState, ValueOrState, merge } from \"@domphy/core\";\r\nimport { type Placement } from \"@floating-ui/dom\";\r\nimport { creatFloating } from \"../utils/floating.js\";\r\n\r\nfunction popover(props: {\r\n openOn: \"click\" | \"hover\";\r\n open?: ValueOrState<boolean>;\r\n placement?: ValueOrState<Placement>;\r\n content: DomphyElement;\r\n}): PartialElement {\r\n const {\r\n open = false,\r\n placement = \"bottom\",\r\n openOn = \"click\"\r\n } = props;\r\n\r\n\r\n let popoverId: string | null = null\r\n const openState = toState(open);\r\n const placeState = toState(placement);\r\n\r\n let { show, hide, anchorPartial } = creatFloating({ open: openState, placement: placeState, content: props.content })\r\n\r\n const popoverPartial: PartialElement = {\r\n role: \"dialog\",\r\n dataTone: \"shift-17\",\r\n onMouseEnter: () => openOn === \"hover\" && show(),\r\n onMouseLeave: () => openOn === \"hover\" && hide(),\r\n _onInsert: (node) => {\r\n let id = node.attributes.get(\"id\")\r\n popoverId = id || node.nodeId\r\n !id && node.attributes.set(\"id\", popoverId)\r\n },\r\n };\r\n\r\n merge(props.content, popoverPartial);\r\n\r\n const triggerPartial: PartialElement = {\r\n ariaHaspopup: \"dialog\",\r\n ariaExpanded: (listener) => openState.get(listener),\r\n onMouseEnter: () => openOn === \"hover\" && show(),\r\n onMouseLeave: () => openOn === \"hover\" && hide(),\r\n onClick: () => {\r\n if (openOn === \"click\") {\r\n if (openState.get()) { hide() } else { show() }\r\n }\r\n },\r\n onFocus: () => show(),\r\n onBlur: (e, node) => {\r\n const related = (e as FocusEvent).relatedTarget as Node | null\r\n const root = node.getRoot().domElement as Element\r\n const floatingEl = popoverId ? root.querySelector(`#${CSS.escape(popoverId)}`) : null\r\n if (related && floatingEl?.contains(related)) return\r\n hide()\r\n },\r\n _onMount: (node) => popoverId && node.attributes.set(\"ariaControls\", popoverId)\r\n };\r\n merge(anchorPartial, triggerPartial);\r\n\r\n return anchorPartial;\r\n}\r\n\r\nexport { popover };\r\n","import type { DomphyElement, PartialElement, ElementNode } from \"@domphy/core\";\r\nimport { toState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\n\r\ntype ToastPosition = \"top-left\" | \"top-center\" | \"top-right\" | \"bottom-left\" | \"bottom-center\" | \"bottom-right\";\r\n\r\nfunction toast(props: {\r\n position?: ToastPosition;\r\n color?: ThemeColor;\r\n} = {}): PartialElement {\r\n const { position = \"top-center\", color = \"neutral\" } = props;\r\n const state = toState(false);\r\n\r\n const isTop = position.startsWith(\"top\");\r\n const isCenter = position.endsWith(\"center\");\r\n const isRight = position.endsWith(\"right\");\r\n\r\n const overlayEle: DomphyElement<\"div\"> = {\r\n div: [],\r\n id: `domphy-toast-${position}`,\r\n style: {\r\n position: \"fixed\",\r\n display: \"flex\",\r\n flexDirection: isTop ? \"column\" : \"column-reverse\",\r\n alignItems: isCenter ? \"center\" : isRight ? \"end\" : \"start\",\r\n inset: 0,\r\n gap: themeSpacing(4),\r\n zIndex: 30,\r\n padding: themeSpacing(6),\r\n pointerEvents: \"none\",\r\n },\r\n }\r\n\r\n return {\n _portal: (rootNode) => {\n let overlay = rootNode.domElement!.querySelector(`#domphy-toast-${position}`);\r\n if (!overlay) {\r\n const overlayNode = rootNode.children!.insert(overlayEle) as ElementNode;\r\n overlay = overlayNode.domElement!;\r\n }\r\n return overlay;\r\n },\n role: \"status\",\n ariaAtomic: \"true\",\n // Toast is rendered as an overlay surface, so it uses the inverted branch.\n dataTone: \"shift-17\",\n style: {\n minWidth: themeSpacing(32),\n pointerEvents: \"auto\",\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 2),\n fontSize: (listener) => themeSize(listener, \"inherit\"),\n color: (listener) => themeColor(listener, \"shift-9\", color),\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\n boxShadow: (listener) => `0 ${themeSpacing(2)} ${themeSpacing(9)} ${themeColor(listener, \"shift-4\", \"neutral\")}`,\n opacity: (listener) => Number(state.get(listener)),\n transform: (listener) => state.get(listener) ? \"translateY(0)\" : isTop ? \"translateY(-100%)\" : \"translateY(100%)\",\n transition: \"opacity 300ms ease, transform 300ms ease\",\n },\n _onMount: () => requestAnimationFrame(() => state.set(true)),\r\n _onBeforeRemove: (node, done) => {\r\n const onEnd = (e: Event) => {\r\n if ((e as TransitionEvent).propertyName === \"transform\") {\r\n node.domElement!.removeEventListener(\"transitionend\", onEnd)\r\n done()\r\n }\r\n }\r\n node.domElement!.addEventListener(\"transitionend\", onEnd)\r\n state.set(false)\r\n }\r\n };\r\n}\r\n\r\nexport { toast };\r\n","import { PartialElement, type DomphyElement, ValueOrState, merge, toState } from \"@domphy/core\";\r\nimport { themeSpacing, themeColor, themeDensity, themeSize } from \"@domphy/theme\";\r\nimport { type Placement } from \"@floating-ui/dom\";\r\nimport { creatFloating } from \"../utils/floating.js\";\r\nimport { popoverArrow } from \"./popoverArrow.js\";\r\n\r\n\r\nfunction tooltip(props: {\r\n open?: ValueOrState<boolean>;\r\n placement?: ValueOrState<Placement>;\r\n content?: ValueOrState<string>;\r\n} = {}): PartialElement {\r\n const {\r\n open = false,\r\n placement = \"top\",\r\n content = \"Tooltip Content\"\r\n } = props;\r\n\r\n const placeState = toState(placement)\r\n const contentState = toState(content)\r\n\r\n let tooltipId: string | null = null\r\n\r\n let contentElement: DomphyElement<\"span\"> = { span: (listener) => contentState.get(listener) }\r\n\r\n let { show, hide, anchorPartial } = creatFloating({ open, placement: placeState, content: contentElement })\r\n\r\n const tooltipPartial: PartialElement = {\r\n role: \"tooltip\",\r\n dataSize: \"decrease-1\",\r\n dataTone: \"shift-17\",\r\n _onInsert: (node) => {\r\n let id = node.attributes.get(\"id\")\r\n tooltipId = id || node.nodeId\r\n !id && node.attributes.set(\"id\", tooltipId)\r\n },\r\n style: {\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n borderRadius: (listener) => themeSpacing(themeDensity(listener) * 1),\r\n color: (listener) => themeColor(listener, \"shift-9\"),\r\n backgroundColor: (listener) => themeColor(listener),\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n },\r\n $: [popoverArrow({ placement: placeState, bordered: false })]\r\n };\r\n contentElement.$ ||= []\r\n contentElement.$.push(tooltipPartial)\r\n\r\n const triggerPartial: PartialElement = {\r\n onMouseEnter: () => show(),\r\n onMouseLeave: () => hide(),\r\n onFocus: () => show(),\r\n onBlur: () => hide(),\r\n onKeyDown: (e) => (e as KeyboardEvent).key === \"Escape\" && hide(),\r\n _onMount: (node) => tooltipId && node.attributes.set(\"ariaDescribedby\", tooltipId)\r\n };\r\n\r\n merge(anchorPartial, triggerPartial)\r\n\r\n return anchorPartial;\r\n}\r\n\r\nexport { tooltip };\r\n","import { ElementNode, PartialElement } from \"@domphy/core\";\r\n\r\ntype RectMap = Map<string, DOMRect>;\r\n\r\nfunction getItemId(node: ElementNode, index: number): string {\r\n if (node.key !== undefined && node.key !== null) {\r\n return String(node.key);\r\n }\r\n return `index-${index}`;\r\n}\r\n\r\nfunction transitionGroup(props: { duration?: number; delay?: number } = {}): PartialElement {\r\n const {\r\n duration = 300,\r\n delay = 0,\r\n } = props;\r\n\r\n let previousRects: RectMap = new Map();\r\n\r\n return {\r\n _onBeforeUpdate: (node) => {\r\n previousRects = new Map();\r\n node.children.items.forEach((item, index) => {\n if (!(item instanceof ElementNode)) return;\r\n const dom = item.domElement as HTMLElement | undefined;\r\n if (!dom) return;\r\n previousRects.set(getItemId(item, index), dom.getBoundingClientRect());\r\n });\r\n },\r\n _onUpdate: (node) => {\r\n node.children.items.forEach((item, index) => {\n if (!(item instanceof ElementNode)) return;\r\n const dom = item.domElement as HTMLElement | undefined;\r\n if (!dom) return;\r\n\r\n const key = getItemId(item, index);\r\n const prev = previousRects.get(key);\r\n if (!prev) return;\r\n\r\n const next = dom.getBoundingClientRect();\r\n const deltaX = prev.left - next.left;\r\n const deltaY = prev.top - next.top;\r\n if (Math.abs(deltaX) < 0.5 && Math.abs(deltaY) < 0.5) return;\r\n\r\n const previousTransition = dom.style.transition;\r\n const previousTransform = dom.style.transform;\r\n\r\n dom.style.transition = \"none\";\r\n dom.style.transform = `translate(${deltaX}px, ${deltaY}px)`;\r\n dom.getBoundingClientRect();\r\n\r\n requestAnimationFrame(() => {\r\n dom.style.transition = `transform ${duration}ms ease ${delay}ms`;\r\n dom.style.transform = \"translate(0px, 0px)\";\r\n });\r\n\r\n const cleanup = () => {\r\n dom.style.transition = previousTransition;\r\n dom.style.transform = previousTransform;\r\n dom.removeEventListener(\"transitionend\", onEnd);\r\n };\r\n\r\n const onEnd = (event: Event) => {\r\n const transitionEvent = event as TransitionEvent;\r\n if (transitionEvent.propertyName === \"transform\") {\r\n cleanup();\r\n }\r\n };\r\n\r\n dom.addEventListener(\"transitionend\", onEnd);\r\n setTimeout(cleanup, duration + delay + 34);\r\n });\r\n previousRects.clear();\r\n },\r\n };\r\n}\r\n\r\n\r\nexport { transitionGroup };\r\n","import { PartialElement, merge } from \"@domphy/core\";\r\nimport { toState, ValueOrState } from \"@domphy/core\";\r\n\r\nfunction tabs(props: {\r\n activeKey?: ValueOrState<number | string>;\r\n} = {}): PartialElement {\r\n\r\n let partial: PartialElement = {\r\n role: \"tablist\",\r\n _onSchedule: (node, element) => {\r\n let partial = {\r\n _context: {\r\n tabs: {\r\n activeKey: toState(props.activeKey || 0),\r\n }\r\n },\r\n }\r\n merge(element, partial)\r\n },\r\n }\r\n return partial;\r\n}\r\n\r\nexport { tabs };\r\n","import { PartialElement, ElementNode } from \"@domphy/core\";\r\nimport { themeSpacing, ThemeColor, themeColor, themeDensity, themeSize } from \"@domphy/theme\";\n\r\nfunction tab(props: {\r\n accentColor?: ThemeColor;\r\n color?: ThemeColor;\r\n} = {}): PartialElement {\r\n const {\r\n accentColor = \"primary\",\r\n color = \"neutral\",\r\n } = props;\r\n let partial: PartialElement = {\r\n role: \"tab\",\r\n _onInsert: (node) => {\r\n\r\n if (node.tagName != \"button\") {\r\n console.warn(`\"tab\" patch must use button tag`);\r\n }\r\n\r\n let context = node.getContext(\"tabs\")\r\n let children = node.parent?.children.items as ElementNode[]\r\n children = children.filter(n => n.type == \"ElementNode\" && n.attributes.get(\"role\") == \"tab\")\r\n let key = node.key || children.findIndex(n => n == node)\r\n\r\n let part: PartialElement = {\r\n id: \"tab\" + node.parent!.nodeId + key,\r\n \"ariaControls\": \"tabpanel\" + node.parent!.nodeId + key,\r\n \"ariaSelected\": (listener) => context.activeKey.get(listener) == key,\r\n onClick: () => context.activeKey.set(key),\r\n onKeyDown: (e: Event) => {\r\n const k = (e as KeyboardEvent).key;\r\n if (![\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].includes(k)) return;\r\n e.preventDefault();\r\n const tabs = (node.parent?.children.items ?? []).filter(\r\n n => n.type === \"ElementNode\" && (n as ElementNode).attributes.get(\"role\") === \"tab\"\r\n ) as ElementNode[];\r\n const idx = tabs.findIndex(n => n === node);\r\n let next = idx;\r\n if (k === \"ArrowRight\") next = (idx + 1) % tabs.length;\r\n else if (k === \"ArrowLeft\") next = (idx - 1 + tabs.length) % tabs.length;\r\n else if (k === \"Home\") next = 0;\r\n else if (k === \"End\") next = tabs.length - 1;\r\n const target = tabs[next];\r\n context.activeKey.set(target.key ?? next);\r\n (target.domElement as HTMLElement)?.focus();\r\n },\r\n }\r\n node.merge(part)\r\n },\r\n style: {\r\n cursor: \"pointer\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 4),\n border: \"none\",\r\n outline: \"none\",\r\n color: (listener) => themeColor(listener, \"shift-9\"),\n backgroundColor: (listener) => themeColor(listener, \"inherit\"),\r\n boxShadow: (listener) => `inset 0 -${themeSpacing(0.5)} 0 0 ${themeColor(listener, \"shift-1\", color)}`,\n \"&:hover:not([disabled])\": {\r\n boxShadow: (listener) => `inset 0 -${themeSpacing(0.5)} 0 0 ${themeColor(listener, \"shift-2\", color)}`,\n },\r\n \"&[aria-selected=true]:not([disabled])\": {\n boxShadow: (listener) => `inset 0 -${themeSpacing(0.5)} 0 0 ${themeColor(listener, \"shift-6\", accentColor)}`,\n },\n \"&:focus-visible\": {\r\n boxShadow: (listener) => `inset 0 -${themeSpacing(0.5)} 0 0 ${themeColor(listener, \"shift-6\", accentColor)}`,\n\r\n },\r\n },\r\n }\r\n return partial\r\n}\r\n\r\n\r\nexport { tab };\r\n","import { PartialElement, ElementNode, merge } from \"@domphy/core\";\r\nimport { themeSpacing, themeDensity, themeColor } from \"@domphy/theme\";\n\r\nfunction tabPanel(): PartialElement {\r\n let partial: PartialElement = {\r\n role: \"tabpanel\",\r\n style: {\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 2),\n },\r\n _onInsert: (node) => {\r\n let context = node.getContext(\"tabs\")\r\n let children = node.parent?.children.items as ElementNode[]\r\n children = children.filter(n => n.type == \"ElementNode\" && n.attributes.get(\"role\") == \"tabpanel\")\r\n let key = node.key || children.findIndex(n => n == node)\r\n let part: PartialElement = {\r\n id: \"tabpanel\" + node.parent!.nodeId + key,\r\n \"ariaLabelledby\": \"tab\" + node.parent!.nodeId + key,\r\n \"hidden\": (listener) => context.activeKey.get(listener) != key,\r\n }\r\n node.merge(part)\r\n },\r\n };\r\n return partial;\r\n}\r\n\r\n\r\n\r\nexport { tabPanel };\r\n","import { PartialElement, merge } from \"@domphy/core\";\r\nimport { toState, ValueOrState } from \"@domphy/core\";\r\nimport { themeColor, themeDensity, themeSize, themeSpacing, type ThemeColor } from \"@domphy/theme\";\r\n\r\nfunction menu(props: {\r\n activeKey?: ValueOrState<number | string>;\r\n selectable?: boolean;\r\n color?: ThemeColor;\r\n} = {}): PartialElement {\r\n const { color = \"neutral\", selectable = true } = props;\r\n\r\n let partial: PartialElement = {\r\n role: \"menu\",\r\n dataTone:\"shift-17\",\r\n _onSchedule: (node, element) => {\r\n let partial = {\r\n _context: {\r\n menu: {\r\n activeKey: toState(props.activeKey ?? null),\r\n selectable,\r\n },\r\n },\r\n };\r\n merge(element, partial);\r\n },\r\n style: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n paddingBlock: (listener) => themeSpacing(themeDensity(listener) * 2),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 2),\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\", color),\r\n },\r\n };\r\n return partial;\r\n}\r\n\r\nexport { menu };\r\n","import { PartialElement, ElementNode } from \"@domphy/core\";\r\nimport { themeSpacing, ThemeColor, themeColor, themeDensity, themeSize } from \"@domphy/theme\";\r\n\r\nfunction menuItem(props: {\r\n accentColor?: ThemeColor;\r\n color?: ThemeColor;\r\n} = {}): PartialElement {\r\n const {\r\n accentColor = \"primary\",\r\n color = \"neutral\",\r\n } = props;\r\n\r\n let partial: PartialElement = {\r\n role: \"menuitem\",\r\n _onInsert: (node) => {\r\n if (node.tagName != \"button\") {\r\n console.warn(`\"menuItem\" patch must use button tag`);\r\n }\r\n\r\n let context = node.getContext(\"menu\");\r\n let children = node.parent?.children.items as ElementNode[];\r\n children = children.filter(n => n.type == \"ElementNode\" && n.attributes.get(\"role\") == \"menuitem\");\r\n let key = node.key || children.findIndex(n => n == node);\r\n if (context.selectable) {\r\n node.attributes.set(\"ariaCurrent\", (listener) => context.activeKey.get(listener) == key || undefined)\r\n node.addEvent(\"click\", () => context.activeKey.set(key))\r\n }\r\n },\r\n onKeyDown:(e:KeyboardEvent,node)=>{\r\n const k = (e as KeyboardEvent).key;\r\n if (k === \"Enter\" || k === \" \") {\r\n e.preventDefault();\r\n (node.domElement as HTMLElement)?.click();\r\n return;\r\n }\r\n if (![\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(k)) return;\r\n e.preventDefault();\r\n const items = (node.parent?.children.items ?? []).filter(\r\n n => n.type === \"ElementNode\" && (n as ElementNode).attributes.get(\"role\") === \"menuitem\"\r\n ) as ElementNode[];\r\n const idx = items.findIndex(n => n === node);\r\n let next = idx;\r\n if (k === \"ArrowDown\") next = (idx + 1) % items.length;\r\n else if (k === \"ArrowUp\") next = (idx - 1 + items.length) % items.length;\r\n else if (k === \"Home\") next = 0;\r\n else if (k === \"End\") next = items.length - 1;\r\n (items[next].domElement as HTMLElement)?.focus();\r\n },\r\n style: {\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n width: \"100%\",\r\n fontSize: (listener) => themeSize(listener, \"inherit\"),\r\n height: (listener) => themeSpacing(6 + themeDensity(listener) * 2),\r\n paddingInline: (listener) => themeSpacing(themeDensity(listener) * 3),\r\n border: \"none\",\r\n outline: \"none\",\r\n color: (listener) => themeColor(listener, \"shift-9\"),\r\n backgroundColor: (listener) => themeColor(listener, \"inherit\"),\r\n \"&:hover:not([disabled]):not([aria-current=true])\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-2\"),\r\n },\r\n // Menu uses the current/indicator band instead of the selected fill band.\r\n \"&[aria-current=true]\": {\r\n backgroundColor: (listener) => themeColor(listener, \"shift-3\", accentColor),\r\n color: (listener) => themeColor(listener, \"shift-10\"),\r\n },\r\n \"&:focus-visible\": {\r\n outline: (listener) => `${themeSpacing(0.5)} solid ${themeColor(listener, \"shift-6\", accentColor)}`,\r\n outlineOffset: `-${themeSpacing(0.5)}`,\r\n },\r\n },\r\n };\r\n return partial;\r\n}\r\n\r\nexport { menuItem };\r\n","import { PartialElement, merge } from \"@domphy/core\";\r\nimport { FormState } from \"../classes/FormState.js\";\r\n\r\nfunction form(state: FormState): PartialElement {\r\n return {\r\n _onSchedule: (node, element) => {\r\n merge(element, { _context: { form: state } });\r\n },\r\n };\r\n}\r\n\r\nexport { form };\r\n","import { PartialElement, Listener } from \"@domphy/core\";\r\nimport { FieldValidator } from \"../classes/FieldState.js\";\r\nimport { FormState } from \"../classes/FormState.js\";\r\n\r\nfunction field(path: string, validator?: FieldValidator): PartialElement {\r\n return {\r\n _onInsert: (node) => {\r\n const state = node.getContext(\"form\") as FormState;\r\n const f = state.setField(path, undefined, validator);\r\n const tag = node.tagName;\r\n const type = node.attributes.get(\"type\") as string | undefined;\r\n\r\n if (![\"input\", \"select\", \"textarea\"].includes(tag)) {\r\n console.warn(`\"field\" patch must use input, select, or textarea tag`);\r\n }\r\n\r\n const part: PartialElement<\"input\"> = {\r\n onBlur: () => f.setTouched(),\r\n ariaInvalid: (listener: Listener) => !!f.message(\"error\", listener) || undefined,\r\n dataStatus: (listener: Listener) => f.status(listener),\r\n };\r\n\r\n if (tag === \"input\" && type === \"checkbox\") {\r\n part.checked = f.value() as boolean;\r\n part.onChange = (e) => f.setValue((e.target as HTMLInputElement).checked);\r\n } else if (tag === \"input\" && type === \"radio\") {\r\n part.onChange = (e) => f.setValue((e.target as HTMLInputElement).value);\r\n } else if (tag === \"select\") {\r\n part.value = f.value() as string;\r\n part.onChange = (e) => f.setValue((e.target as HTMLSelectElement).value);\r\n } else if (tag === \"textarea\") {\r\n part.value = f.value() as string;\r\n part.onInput = (e) => f.setValue((e.target as HTMLTextAreaElement).value);\r\n } else {\r\n part.value = f.value() as string;\r\n part.onInput = (e) => f.setValue((e.target as HTMLInputElement).value);\r\n }\r\n\r\n node.merge(part);\r\n\r\n // NOTE: value/checked are intentionally set as static defaults (one-way: DOM → state).\r\n // Do NOT change them to reactive functions like `(listener) => f.value(listener)`.\r\n // Two-way reactive binding causes an infinite loop:\r\n // setValue → notify listener → update DOM value → trigger onInput → setValue → ...\r\n // Note: Domphy's `silent` flag in setValue is NOT a solution here —\r\n // it is only used for tree synchronization when external libs (e.g. SortableJS)\r\n // manipulate the DOM directly. It does not apply to form field binding.\r\n },\r\n };\r\n}\r\n\r\nexport { field };\r\n","import { Notifier, Handler } from \"@domphy/core\";\r\n\r\nexport type FieldStatus = \"error\" | \"warning\" | \"success\" | undefined;\r\n\r\nexport type FieldMessages = {\r\n error?: string;\r\n warning?: string;\r\n success?: string;\r\n};\r\n\r\nexport type FieldValidator = (value: unknown) => FieldMessages | null | Promise<FieldMessages | null>;\r\n\r\nfunction isPromiseLike(\r\n value: FieldMessages | null | Promise<FieldMessages | null>\r\n): value is Promise<FieldMessages | null> {\r\n return !!value && typeof (value as Promise<FieldMessages | null>).then === \"function\";\r\n}\r\n\r\nexport class FieldState {\r\n _notifier = new Notifier();\r\n _value: unknown;\r\n _initValue: unknown;\r\n _messages: FieldMessages = {};\r\n _touched = false;\r\n _validator: FieldValidator | undefined;\r\n _pending = false;\r\n _validationToken = 0;\r\n\r\n constructor(initValue: unknown, validator?: FieldValidator) {\r\n this._value = initValue;\r\n this._initValue = initValue;\r\n this._validator = validator;\r\n if (validator) this.validate();\r\n }\r\n\r\n value(listener?: Handler): unknown {\r\n if (listener) this._notifier.addListener(\"value\", listener);\r\n return this._value;\r\n }\r\n\r\n setValue(val: unknown): void {\r\n this._value = val;\r\n this._notifier.notify(\"value\", val);\r\n this._notifier.notify(\"dirty\", val !== this._initValue);\r\n this.validate();\r\n }\r\n\r\n dirty(listener?: Handler): boolean {\r\n if (listener) this._notifier.addListener(\"dirty\", listener);\r\n return this._value !== this._initValue;\r\n }\r\n\r\n touched(listener?: Handler): boolean {\r\n if (listener) this._notifier.addListener(\"touched\", listener);\r\n return this._touched;\r\n }\r\n\r\n setTouched(): void {\r\n if (!this._touched) {\r\n this._touched = true;\r\n this._notifier.notify(\"touched\", true);\r\n }\r\n }\r\n\r\n configure(initValue?: unknown, validator?: FieldValidator): void {\r\n let shouldValidate = false;\r\n\r\n if (\r\n initValue !== undefined &&\r\n this._value === undefined &&\r\n this._initValue === undefined\r\n ) {\r\n this._value = initValue;\r\n this._initValue = initValue;\r\n this._notifier.notify(\"value\", initValue);\r\n this._notifier.notify(\"dirty\", false);\r\n shouldValidate = true;\r\n }\r\n\r\n if (validator !== undefined && validator !== this._validator) {\r\n this._validator = validator;\r\n shouldValidate = true;\r\n }\r\n\r\n if (shouldValidate) this.validate();\r\n }\r\n\r\n message(type: keyof FieldMessages, listener?: Handler): string | undefined {\r\n if (listener) this._notifier.addListener(type, listener);\r\n return this._messages[type];\r\n }\r\n\r\n status(listener?: Handler): FieldStatus {\r\n if (listener) this._notifier.addListener(\"status\", listener);\r\n return resolveStatus(this._messages);\r\n }\r\n\r\n setMessages(next: FieldMessages): void {\r\n const prev = this._messages;\r\n this._messages = next;\r\n for (const type of [\"error\", \"warning\", \"success\"] as const) {\r\n if (prev[type] !== next[type]) this._notifier.notify(type, next[type]);\r\n }\r\n if (resolveStatus(prev) !== resolveStatus(next)) {\r\n this._notifier.notify(\"status\", resolveStatus(next));\r\n }\r\n }\r\n\r\n reset(): void {\r\n this._value = this._initValue;\r\n this._touched = false;\r\n this._notifier.notify(\"value\", this._value);\r\n this._notifier.notify(\"dirty\", false);\r\n this._notifier.notify(\"touched\", false);\r\n this.setMessages({});\r\n this.validate();\r\n }\r\n\r\n validate(): void {\r\n const token = ++this._validationToken;\r\n\r\n if (!this._validator) {\r\n this._pending = false;\r\n this.setMessages({});\r\n return;\r\n }\r\n\r\n try {\r\n const result = this._validator(this._value);\r\n\r\n if (isPromiseLike(result)) {\r\n this._pending = true;\r\n Promise.resolve(result)\r\n .then((msg) => {\r\n if (token !== this._validationToken) return;\r\n this._pending = false;\r\n this.setMessages(msg ?? {});\r\n })\r\n .catch((error) => {\r\n if (token !== this._validationToken) return;\r\n this._pending = false;\r\n console.error(error);\r\n });\r\n } else {\r\n this._pending = false;\r\n this.setMessages(result ?? {});\r\n }\r\n } catch (error) {\r\n if (token === this._validationToken) {\r\n this._pending = false;\r\n }\r\n console.error(error);\r\n }\r\n }\r\n\r\n _dispose(): void {\r\n this._validationToken += 1;\r\n this._pending = false;\r\n this._notifier._dispose();\r\n }\r\n}\r\n\r\nfunction resolveStatus(m: FieldMessages): FieldStatus {\r\n if (m.error) return \"error\";\r\n if (m.warning) return \"warning\";\r\n if (m.success) return \"success\";\r\n return undefined;\r\n}\r\n","import { FieldState, FieldValidator } from \"./FieldState.js\";\r\n\r\nexport class FormState {\r\n fields = new Map<string, FieldState>();\r\n\r\n setField(path: string, initValue?: unknown, validator?: FieldValidator): FieldState {\r\n let field = this.fields.get(path);\r\n\r\n if (!field) {\r\n field = new FieldState(initValue, validator);\r\n this.fields.set(path, field);\r\n } else {\r\n field.configure(initValue, validator);\r\n }\r\n\r\n return field;\r\n }\r\n\r\n getField(path: string): FieldState {\r\n return this.setField(path);\r\n }\r\n\r\n removeField(path: string): void {\r\n this.fields.get(path)?._dispose();\r\n this.fields.delete(path);\r\n }\r\n\r\n get valid(): boolean {\r\n for (const f of this.fields.values()) {\r\n if (f._pending || f._messages.error) return false;\r\n }\r\n return true;\r\n }\r\n\r\n reset(): void {\r\n for (const f of this.fields.values()) f.reset();\r\n }\r\n\r\n snapshot(): Record<string, unknown> {\r\n const result: Record<string, unknown> = {};\r\n for (const [path, f] of this.fields) setByPath(result, path, f._value);\r\n return result;\r\n }\r\n\r\n _dispose(): void {\r\n for (const f of this.fields.values()) f._dispose();\r\n this.fields.clear();\r\n }\r\n}\r\n\r\nfunction setByPath(obj: Record<string, unknown>, path: string, value: unknown): void {\r\n const segments = path.split(\".\");\r\n let cur: any = obj;\r\n for (let i = 0; i < segments.length - 1; i++) {\r\n const key = segments[i];\r\n if (cur[key] == null) cur[key] = isNaN(Number(segments[i + 1])) ? {} : [];\r\n cur = cur[key];\r\n }\r\n cur[segments[segments.length - 1]] = value;\r\n}\r\n"],"mappings":"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","names":["toState","themeColor","themeSize","themeSpacing","abbreviation","props","_a","_b","color","accentColor","node","listener","toState","themeColor","themeDensity","themeSpacing","card","props","_a","color","listener","merge","toState","themeColor","themeSpacing","splitter","props","direction","defaultSize","min","max","node","element","splitterPanel","ctx","el","prop","release","size","splitterHandle","handle","isHorizontal","onMousedown","e","container","onMousemove","rect","raw","onMouseup","listener","merge","toState","themeColor","themeDensity","themeSize","themeSpacing","command","node","element","commandSearch","props","color","accentColor","ctx","input","onInput","listener","commandItem","_a","_b","el","text","release","q","toState","themeColor","themeSize","themeSpacing","toggle","props","_a","_b","color","accentColor","node","ctx","items","n","key","listener","val","arr","v","toState","themeSpacing","themeColor","themeSize","toggleGroup","props","_a","multiple","color","listener","themeSpacing","inputOTP","node","container","getInputs","onInput","e","inputs","target","idx","onKeydown","onPaste","_a","_b","_c","text","startIdx","char","i","lastFilled","toState","themeColor","themeDensity","themeSize","themeSpacing","alert","props","_a","color","listener","toState","themeColor","themeSize","themeSpacing","avatar","props","_a","color","listener","toState","themeSpacing","themeColor","themeSize","badge","props","_a","label","state","color","l","toState","themeColor","themeSize","themeSpacing","breadcrumb","props","_a","separator","color","node","listener","toState","themeColor","themeSize","themeSpacing","breadcrumbEllipsis","props","_a","color","node","listener","toState","merge","themeSpacing","themeColor","themeDensity","themeSize","toState","themeColor","themeSize","themeSpacing","xSvg","tag","props","_a","removable","color","node","removeBtn","e","listener","toState","merge","computePosition","autoUpdate","offset","flip","shift","creatFloating","props","open","placement","timer","cleanup","reference","floating","openState","instantShow","x","y","resolved","instantHide","show","hide","floatingPartial","listener","node","rootNode","overlay","overlayEle","e","root","floatingNode","handleOutside","event","target","combobox","props","options","placement","color","open","multiple","state","toState","openState","show","hide","anchorPartial","creatFloating","popoverPartial","merge","inputStyle","themeSpacing","listener","themeSize","themeColor","inputElement","wrap","val","vals","items","opt","tag","_node","cur","filter","v","partial","node","themeDensity","toState","themeSpacing","themeColor","themeSize","popoverArrow","props","placement","color","sideOffset","bordered","place","flipMap","getFlipped","listener","_a","start","pos","end","x","y","toState","themeSpacing","themeColor","themeDensity","themeSize","blockquote","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","button","props","_a","color","node","listener","toState","themeColor","themeSpacing","themeSize","inputCheckbox","props","_a","_b","color","accentColor","node","listener","toState","themeSpacing","themeColor","themeSize","code","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","details","props","_a","_b","duration","color","accentColor","node","listener","toState","themeColor","themeSpacing","themeSize","descriptionList","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","dialog","props","color","open","state","node","e","r","_e","dlg","update","val","focusable","listener","toState","themeColor","themeSize","emphasis","props","_a","color","node","listener","toState","themeColor","themeSize","themeSpacing","figure","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","formGroup","props","_a","layout","color","isVertical","node","listener","toState","themeColor","themeSize","themeSpacing","Headinghift","heading","props","_a","color","node","listener","offset","toState","themeColor","themeSpacing","horizontalRule","props","_a","color","node","listener","toState","themeColor","themeSpacing","image","props","_a","color","node","listener","toState","themeSpacing","themeColor","themeSize","icon","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputColor","props","_a","_b","color","accentColor","node","element","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputDateTime","props","_a","_b","mode","color","accentColor","node","element","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputFile","props","_a","_b","color","accentColor","node","element","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputSearch","props","_a","_b","color","accentColor","node","element","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputText","props","_a","_b","color","accentColor","node","element","listener","toState","themeColor","themeSpacing","inputRange","props","_a","_b","color","accentColor","node","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","inputNumber","props","_a","_b","color","accentColor","node","element","listener","toState","themeColor","themeSize","themeSpacing","keyboard","props","_a","color","node","listener","toState","themeColor","themeSize","themeSpacing","label","props","_a","_b","color","accentColor","node","listener","toState","themeColor","themeSize","themeSpacing","link","props","_a","_b","color","accentColor","node","listener","toState","themeSpacing","themeSize","themeColor","mark","props","_a","accentColor","node","listener","toState","themeColor","themeSize","paragraph","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","preformated","props","_a","color","node","listener","toState","themeColor","themeSpacing","progress","props","_a","_b","color","accentColor","node","listener","toState","themeColor","themeSize","themeSpacing","inputRadio","props","_a","_b","color","accentColor","node","listener","themeColor","themeDensity","themeSize","themeSpacing","themeColorToken","select","props","color","accentColor","node","listener","l","svg","hashString","toState","themeColor","themeSize","themeSpacing","skeleton","props","_a","color","keyframes","animationName","listener","hashString","toState","themeColor","themeSize","themeSpacing","keyframes","animationName","spinner","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","selectList","props","_a","color","multiple","state","inputs","listener","val","v","node","themeSpacing","themeColor","themeDensity","themeSize","selectItem","props","accentColor","color","value","node","select","state","listener","val","v","toState","merge","themeSpacing","themeColor","themeDensity","themeSize","selectBox","props","options","placement","color","open","multiple","state","toState","openState","show","hide","anchorPartial","creatFloating","popoverPartial","merge","wrap","listener","val","vals","opt","tag","_node","cur","filter","v","themeSpacing","partial","node","themeDensity","themeColor","themeSize","toState","themeColor","themeSize","themeSpacing","inputSwitch","props","_a","accentColor","node","listener","toState","themeColor","themeSize","themeSpacing","buttonSwitch","props","_a","_b","checked","check","color","accentColor","node","listener","toState","themeColor","themeSize","small","props","_a","color","node","listener","toState","themeColor","themeSize","strong","props","_a","color","node","listener","toState","themeColor","themeSize","subscript","props","_a","color","node","listener","toState","themeColor","themeSize","superscript","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSpacing","themeSize","table","props","_a","color","node","listener","l","toState","themeColor","themeDensity","themeSpacing","themeSize","textarea","props","_a","_b","color","accentColor","autoResize","node","el","resize","listener","toState","themeColor","themeSize","themeSpacing","unorderedList","props","_a","color","node","listener","toState","themeColor","themeSize","themeSpacing","orderedList","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","getPages","current","total","_","i","pages","start","end","pagination","props","_a","color","accentColor","state","toState","btnBase","listener","themeSpacing","themeDensity","themeSize","themeColor","activeStyle","__spreadProps","__spreadValues","node","content","page","items","p","isActive","toState","themeColor","themeSize","themeSpacing","divider","props","_a","color","node","listener","toState","themeColor","themeDensity","themeSize","themeSpacing","translateOut","marginMap","isVertical","p","drawer","props","color","open","placement","size","state","defaultSize","drawerSize","node","e","_e","dlg","update","val","listener","toState","merge","popover","props","open","placement","openOn","popoverId","openState","toState","placeState","show","hide","anchorPartial","creatFloating","popoverPartial","node","id","merge","listener","e","related","root","floatingEl","toState","themeColor","themeDensity","themeSize","themeSpacing","toast","props","position","color","state","isTop","isCenter","isRight","overlayEle","rootNode","overlay","listener","node","done","onEnd","e","merge","toState","themeSpacing","themeColor","themeDensity","themeSize","tooltip","props","open","placement","content","placeState","toState","contentState","tooltipId","contentElement","listener","show","hide","anchorPartial","creatFloating","tooltipPartial","node","id","themeSpacing","themeDensity","themeColor","themeSize","popoverArrow","merge","e","ElementNode","getItemId","node","index","transitionGroup","props","duration","delay","previousRects","item","dom","key","prev","next","deltaX","deltaY","previousTransition","previousTransform","cleanup","onEnd","event","merge","toState","tabs","props","node","element","partial","themeSpacing","themeColor","themeDensity","themeSize","tab","props","accentColor","color","node","_a","context","children","n","key","part","listener","e","_b","_c","_d","k","tabs","idx","next","target","themeSpacing","themeDensity","tabPanel","listener","node","_a","context","children","n","key","part","merge","toState","themeColor","themeDensity","themeSize","themeSpacing","menu","props","color","selectable","node","element","_a","partial","listener","themeSpacing","themeColor","themeDensity","themeSize","menuItem","props","accentColor","color","node","_a","context","children","n","key","listener","e","_b","_c","_d","k","items","idx","next","merge","form","state","node","element","field","path","validator","node","f","tag","type","part","listener","e","Notifier","isPromiseLike","value","FieldState","initValue","validator","listener","val","shouldValidate","type","resolveStatus","next","prev","token","result","msg","error","m","FormState","path","initValue","validator","field","FieldState","_a","f","result","setByPath","obj","value","segments","cur","i","key"]}