@nuykon/basecoat-react 0.0.0-stage → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/index.cjs +2444 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +713 -0
- package/dist/index.d.ts +713 -0
- package/dist/index.js +2328 -0
- package/dist/index.js.map +1 -0
- package/dist/private-core.cjs +872 -0
- package/dist/private-core.d.cts +145 -0
- package/dist/private-core.d.ts +145 -0
- package/dist/private-core.js +832 -0
- package/package.json +48 -4
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/primitives.tsx","../../core/src/chart.ts","../../core/src/widgets.ts","../../core/src/index.ts","../src/components/ChartRoot.tsx","../src/components/SelectRoot.tsx","../src/components/ComboboxRoot.tsx","../src/components/DropdownMenuRoot.tsx","../src/components/PopoverRoot.tsx","../src/components/TabsRoot.tsx","../src/components/AccordionRoot.tsx","../src/components/CommandRoot.tsx","../src/components/SidebarRoot.tsx","../src/components/DialogRoot.tsx","../src/components/DrawerRoot.tsx","../src/components/AlertDialogRoot.tsx","../src/components/Button.tsx","../src/components/Badge.tsx","../src/components/Card.tsx","../src/components/CardHeader.tsx","../src/components/CardTitle.tsx","../src/components/CardDescription.tsx","../src/components/CardContent.tsx","../src/components/CardFooter.tsx","../src/components/CardAction.tsx","../src/components/Alert.tsx","../src/components/AlertTitle.tsx","../src/components/AlertDescription.tsx","../src/components/Avatar.tsx","../src/components/AvatarImage.tsx","../src/components/AvatarFallback.tsx","../src/components/Breadcrumb.tsx","../src/components/BreadcrumbList.tsx","../src/components/BreadcrumbItem.tsx","../src/components/BreadcrumbLink.tsx","../src/components/BreadcrumbSeparator.tsx","../src/components/ButtonGroup.tsx","../src/components/Field.tsx","../src/components/FieldLabel.tsx","../src/components/FieldDescription.tsx","../src/components/FieldError.tsx","../src/components/Label.tsx","../src/components/Input.tsx","../src/components/Textarea.tsx","../src/components/NativeSelect.tsx","../src/components/InputGroup.tsx","../src/components/InputGroupAddon.tsx","../src/components/Empty.tsx","../src/components/EmptyHeader.tsx","../src/components/EmptyTitle.tsx","../src/components/EmptyDescription.tsx","../src/components/EmptyContent.tsx","../src/components/Item.tsx","../src/components/ItemContent.tsx","../src/components/ItemTitle.tsx","../src/components/ItemDescription.tsx","../src/components/ItemActions.tsx","../src/components/Kbd.tsx","../src/components/ScrollArea.tsx","../src/components/Skeleton.tsx","../src/components/Spinner.tsx","../src/components/Separator.tsx","../src/components/Table.tsx","../src/components/TableHeader.tsx","../src/components/TableBody.tsx","../src/components/TableFooter.tsx","../src/components/TableRow.tsx","../src/components/TableHead.tsx","../src/components/TableCell.tsx","../src/components/TableCaption.tsx","../src/components/DialogHeader.tsx","../src/components/DialogTitle.tsx","../src/components/DialogDescription.tsx","../src/components/DialogContent.tsx","../src/components/DialogFooter.tsx","../src/components/SidebarHeader.tsx","../src/components/SidebarContent.tsx","../src/components/SidebarFooter.tsx","../src/components/SidebarGroup.tsx","../src/components/SidebarItem.tsx","../src/components/Checkbox.tsx","../src/hooks.ts","../src/components/Switch.tsx","../src/components/Slider.tsx","../src/components/RadioGroup.tsx","../src/components/Progress.tsx","../src/components/Tabs.tsx","../src/components/Accordion.tsx","../src/components/Collapsible.tsx","../src/components/Dialog.tsx","../src/components/AlertDialog.tsx","../src/components/Drawer.tsx","../src/components/Popover.tsx","../src/components/Tooltip.tsx","../src/components/Select.tsx","../src/components/Combobox.tsx","../src/components/DropdownMenu.tsx","../src/components/Command.tsx","../src/components/Pagination.tsx","../src/components/Sidebar.tsx","../src/components/ThemeSwitcher.tsx","../src/components/Toast.tsx","../src/components/Toaster.tsx","../src/components/Chart.tsx"],"sourcesContent":["'use client';\nexport * from './components';\nexport type {\n Option,\n MenuItem,\n ToastMessage,\n ChartPoint,\n Variant,\n Size,\n Side,\n Align,\n} from '@nuykon/basecoat-core';\n","import {\n cloneElement,\n createElement,\n forwardRef,\n useEffect,\n useRef,\n isValidElement,\n type ComponentPropsWithoutRef,\n type ElementType,\n type ReactElement,\n} from 'react';\nimport {\n attachWidget,\n cx,\n primitiveDefinitions,\n type PrimitiveName,\n type Variant,\n type Size,\n} from '@nuykon/basecoat-core';\nexport type PrimitiveProps<T extends keyof HTMLElementTagNameMap> = Omit<\n ComponentPropsWithoutRef<T>,\n 'size'\n> & { variant?: Variant; size?: Size; asChild?: boolean; as?: ElementType };\nexport function primitive<T extends keyof HTMLElementTagNameMap>(name: PrimitiveName, tag: T) {\n const Component = forwardRef<HTMLElementTagNameMap[T], PrimitiveProps<T>>((props, ref) => {\n const local = useRef<HTMLElement | null>(null);\n useEffect(\n () => (name.endsWith('Root') && local.current ? attachWidget(local.current) : undefined),\n [(props as PrimitiveProps<'div'>).as],\n );\n const composedRef = (element: HTMLElement | null) => {\n local.current = element;\n if (typeof ref === 'function') ref(element as HTMLElementTagNameMap[T]);\n else if (ref) ref.current = element as HTMLElementTagNameMap[T];\n };\n const { className, variant, size, asChild, as, children, ...rest } =\n props as PrimitiveProps<'div'>;\n const attributes: Record<string, unknown> = {\n ...rest,\n ref: composedRef,\n className: cx(primitiveDefinitions[name][1], className),\n };\n if (variant !== undefined) attributes['data-variant'] = variant;\n if (size !== undefined) attributes['data-size'] = size;\n if (tag === 'button') attributes.type ??= 'button';\n if (name === 'Alert') attributes.role ??= 'alert';\n if (name === 'Breadcrumb') attributes['aria-label'] ??= 'Breadcrumb';\n if (name === 'BreadcrumbSeparator') {\n attributes['aria-hidden'] = true;\n attributes.role = 'presentation';\n }\n if (name === 'Skeleton') attributes['aria-hidden'] = true;\n if (name === 'Spinner') {\n attributes.role ??= 'status';\n attributes['aria-label'] ??= 'Loading';\n }\n if (name === 'FieldError') attributes.role ??= 'alert';\n if (name === 'ScrollArea') attributes.style = { overflow: 'auto', ...(rest.style ?? {}) };\n if (asChild) {\n if (!isValidElement(children))\n throw new Error(`${name} with asChild expects a single element.`);\n const child = children as ReactElement<Record<string, unknown>>;\n const merged: Record<string, unknown> = {\n ...attributes,\n ...child.props,\n className: cx(attributes.className as string, child.props.className as string),\n };\n for (const key of Object.keys(attributes)) {\n if (\n key.startsWith('on') &&\n typeof attributes[key] === 'function' &&\n typeof child.props[key] === 'function'\n ) {\n merged[key] = (event: { defaultPrevented: boolean }) => {\n (child.props[key] as Function)(event);\n if (!event.defaultPrevented) (attributes[key] as Function)(event);\n };\n }\n }\n const childRef = child.props.ref;\n merged.ref = (element: HTMLElement | null) => {\n composedRef(element);\n if (typeof childRef === 'function') childRef(element);\n else if (childRef && typeof childRef === 'object')\n (childRef as { current: unknown }).current = element;\n };\n return cloneElement(child, merged);\n }\n return createElement(as ?? tag, attributes, children);\n });\n Component.displayName = name;\n return Component;\n}\n","export interface CanvasChartConfig {\n type?: 'line' | 'bar' | 'doughnut' | 'radar';\n labelKey?: string;\n legend?: boolean;\n data?: Record<string, string | number>[];\n series?: Record<\n string,\n {\n label?: string;\n color?: string;\n surface?: string;\n dataset?: { fill?: boolean; stepped?: boolean; tension?: number };\n }\n >;\n options?: { scales?: { y?: { stacked?: boolean } } };\n}\n/** Canvas renderer deliberately owns drawing, resize, themes and cleanup without a chart library. */\nexport function attachCanvasChart(canvas: HTMLCanvasElement, config: CanvasChartConfig) {\n const doc = canvas.ownerDocument,\n win = doc.defaultView!,\n ctx = canvas.getContext('2d');\n if (!ctx) return () => {};\n const data = config.data ?? [],\n series = Object.entries(config.series ?? {}),\n labelKey = config.labelKey ?? 'label';\n const color = (value: string) =>\n value.startsWith('var(')\n ? win.getComputedStyle(canvas).getPropertyValue(value.slice(4, -1)).trim() || '#888'\n : value;\n const legend = doc.createElement('ul');\n legend.className = 'chart-legend';\n if (config.legend) {\n for (const [index, [key, options]] of series.entries()) {\n const item = doc.createElement('li'),\n content = doc.createElement('span'),\n indicator = doc.createElement('span');\n content.className = 'chart-legend-item';\n indicator.className = 'chart-legend-indicator';\n indicator.style.setProperty(\n '--chart-indicator-color',\n options.color ?? `var(--chart-${index + 1})`,\n );\n content.append(indicator, doc.createTextNode(options.label ?? key));\n item.append(content);\n legend.append(item);\n }\n canvas.after(legend);\n }\n canvas.style.width = '100%';\n canvas.style.aspectRatio = '16 / 9';\n canvas.style.display = 'block';\n const draw = () => {\n const width = Math.max(200, canvas.parentElement?.clientWidth ?? 400),\n height = (width * 9) / 16,\n ratio = win.devicePixelRatio || 1;\n canvas.width = Math.round(width * ratio);\n canvas.height = Math.round(height * ratio);\n canvas.style.height = `${height}px`;\n ctx.setTransform(ratio, 0, 0, ratio, 0, 0);\n ctx.clearRect(0, 0, width, height);\n const padding = { left: 30, top: 10, right: 10, bottom: 30 },\n w = width - padding.left - padding.right,\n h = height - padding.top - padding.bottom;\n const max = Math.max(\n 1,\n ...data.map((row) =>\n config.options?.scales?.y?.stacked\n ? series.reduce((sum, [key]) => sum + Number(row[key] ?? 0), 0)\n : Math.max(...series.map(([key]) => Number(row[key] ?? 0))),\n ),\n );\n const x = (index: number) => padding.left + (index / Math.max(1, data.length - 1)) * w,\n y = (value: number) => padding.top + h - (value / max) * h;\n ctx.font = '12px \"Geist Sans\",system-ui';\n ctx.fillStyle = color('var(--muted-foreground)');\n ctx.strokeStyle = color('var(--border)');\n ctx.lineWidth = 0.5;\n if (config.type !== 'doughnut' && config.type !== 'radar') {\n for (let index = 0; index <= 4; index++) {\n const top = padding.top + (index * h) / 4;\n ctx.beginPath();\n ctx.moveTo(padding.left, top);\n ctx.lineTo(width - padding.right, top);\n ctx.stroke();\n ctx.fillText(String(Math.round((max * (4 - index)) / 4)), 0, top + 4);\n }\n for (let index = 0; index < data.length; index++)\n if (index % Math.max(1, Math.ceil(data.length / 6)) === 0)\n ctx.fillText(String(data[index][labelKey] ?? ''), x(index) - 10, height - 8);\n }\n if (config.type === 'doughnut') {\n const key = series[0]?.[0] ?? 'value',\n values = data.map((row) => Number(row[key] ?? 0)),\n total = values.reduce((a, b) => a + b, 0) || 1,\n radius = Math.min(w, h) * 0.45,\n cx = width / 2,\n cy = height / 2;\n let start = -Math.PI / 2;\n values.forEach((value, index) => {\n const end = start + (value / total) * Math.PI * 2;\n ctx.beginPath();\n ctx.arc(cx, cy, radius, start, end);\n ctx.arc(cx, cy, radius * 0.62, end, start, true);\n ctx.closePath();\n ctx.fillStyle = color(`var(--chart-${(index % 5) + 1})`);\n ctx.fill();\n start = end;\n });\n } else if (config.type === 'radar') {\n const radius = Math.min(w, h) * 0.4,\n cx = width / 2,\n cy = height / 2;\n const point = (index: number, scale: number) => {\n const angle = (index / Math.max(1, data.length)) * Math.PI * 2 - Math.PI / 2;\n return [\n cx + Math.cos(angle) * radius * scale,\n cy + Math.sin(angle) * radius * scale,\n ] as const;\n };\n for (let ring = 1; ring <= 4; ring++) {\n ctx.beginPath();\n data.forEach((_, i) => {\n const [x, y] = point(i, ring / 4);\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n });\n ctx.closePath();\n ctx.stroke();\n }\n series.forEach(([key, options], index) => {\n ctx.beginPath();\n data.forEach((row, i) => {\n const [x, y] = point(i, Number(row[key] ?? 0) / max);\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n });\n ctx.closePath();\n ctx.strokeStyle = color(options.color ?? `var(--chart-${index + 1})`);\n ctx.stroke();\n ctx.globalAlpha = 0.2;\n ctx.fillStyle = ctx.strokeStyle;\n ctx.fill();\n ctx.globalAlpha = 1;\n });\n ctx.fillStyle = color('var(--muted-foreground)');\n data.forEach((row, i) => {\n const [x, y] = point(i, 1.15);\n ctx.fillText(String(row[labelKey] ?? ''), x - 15, y);\n });\n } else {\n const stacks = data.map(() => 0);\n series.forEach(([key, options], seriesIndex) => {\n const fill = color(options.color ?? `var(--chart-${seriesIndex + 1})`);\n ctx.strokeStyle = fill;\n ctx.fillStyle = fill;\n ctx.lineWidth = 1.5;\n if (config.type === 'bar')\n data.forEach((row, index) => {\n const value = Number(row[key] ?? 0),\n stacked = config.options?.scales?.y?.stacked,\n group = w / Math.max(1, data.length),\n barWidth = (group * 0.65) / (stacked ? 1 : series.length),\n left =\n padding.left +\n index * group +\n group * 0.15 +\n (stacked ? 0 : seriesIndex * barWidth),\n base = stacks[index];\n ctx.beginPath();\n ctx.roundRect(\n left,\n y(value + base),\n Math.max(1, barWidth - 2),\n Math.max(0, y(base) - y(value + base)),\n 3,\n );\n ctx.fill();\n if (stacked) stacks[index] += value;\n });\n else {\n ctx.beginPath();\n data.forEach((row, index) => {\n const top = y(Number(row[key] ?? 0));\n if (index === 0) ctx.moveTo(x(index), top);\n else if (options.dataset?.stepped) {\n ctx.lineTo(x(index), y(Number(data[index - 1][key] ?? 0)));\n ctx.lineTo(x(index), top);\n } else ctx.lineTo(x(index), top);\n });\n ctx.stroke();\n if (options.dataset?.fill || options.surface === 'gradient') {\n ctx.lineTo(x(data.length - 1), y(0));\n ctx.lineTo(x(0), y(0));\n ctx.closePath();\n const gradient = ctx.createLinearGradient(0, 0, 0, height);\n gradient.addColorStop(0, fill);\n gradient.addColorStop(1, 'transparent');\n ctx.globalAlpha = 0.3;\n ctx.fillStyle = gradient;\n ctx.fill();\n ctx.globalAlpha = 1;\n }\n }\n });\n }\n };\n const resize = new win.ResizeObserver(draw),\n themes = new win.MutationObserver(draw);\n resize.observe(canvas.parentElement ?? canvas);\n themes.observe(doc.documentElement, {\n attributes: true,\n attributeFilter: ['class', 'data-style-variant'],\n });\n doc.addEventListener('basecoat:stylechange', draw);\n draw();\n return () => {\n resize.disconnect();\n themes.disconnect();\n legend.remove();\n doc.removeEventListener('basecoat:stylechange', draw);\n };\n}\n","import {\n attachFloating,\n createTypeahead,\n dismissableLayer,\n nextIndex,\n percentage,\n scrollWithin,\n focusFirst,\n} from './index';\nimport { attachCanvasChart } from './chart';\n/** Composition adapter for Basecoat's semantic markup. Frameworks own mount/unmount. */\nexport function attachWidget(root: HTMLElement) {\n const abort = new AbortController(),\n signal = abort.signal,\n cleanups: (() => void)[] = [];\n const on = (element: EventTarget | null, name: string, fn: EventListener) =>\n element?.addEventListener(name, fn, { signal });\n const emit = (detail: unknown) =>\n root.dispatchEvent(new CustomEvent('basecoat:change', { bubbles: true, detail }));\n if (root instanceof HTMLCanvasElement && root.dataset.chartConfig)\n cleanups.push(attachCanvasChart(root, JSON.parse(root.dataset.chartConfig)));\n if (root.classList.contains('sidebar')) {\n const media = root.ownerDocument.defaultView!.matchMedia('(min-width: 768px)');\n root.dataset.sidebarInitialized = 'true';\n const set = (open: boolean) => root.setAttribute('aria-hidden', String(!open));\n const toggle = () => set(root.getAttribute('aria-hidden') === 'true');\n const sidebar = root as HTMLElement & { toggle?: () => void };\n sidebar.toggle = toggle;\n set(media.matches);\n on(media, 'change', () => set(media.matches));\n on(root, 'click', (event) => {\n if (event.target === root && !media.matches) set(false);\n });\n on(root.ownerDocument, 'keydown', (event) => {\n if ((event as KeyboardEvent).key === 'Escape' && !media.matches) set(false);\n });\n cleanups.push(() => {\n delete sidebar.toggle;\n delete root.dataset.sidebarInitialized;\n });\n }\n if (root.classList.contains('toaster')) {\n type Message = {\n title?: string;\n description?: string;\n category?: string;\n duration?: number;\n cancel?: { label?: string };\n action?: { label?: string; onclick?: () => void };\n };\n const timers = new Set<ReturnType<typeof setTimeout>>();\n const toast = (message: Message) => {\n const item = root.ownerDocument.createElement('div');\n item.className = 'toast';\n item.setAttribute('role', 'status');\n const content = root.ownerDocument.createElement('div');\n content.className = 'toast-content';\n const section = root.ownerDocument.createElement('section'),\n heading = root.ownerDocument.createElement('h2');\n heading.textContent = message.title ?? '';\n section.append(heading);\n if (message.description) {\n const description = root.ownerDocument.createElement('p');\n description.textContent = message.description;\n section.append(description);\n }\n const footer = root.ownerDocument.createElement('footer'),\n close = root.ownerDocument.createElement('button');\n close.type = 'button';\n close.className = 'btn';\n close.dataset.variant = 'outline';\n close.dataset.toastCancel = '';\n close.textContent = message.cancel?.label ?? 'Dismiss';\n close.addEventListener('click', () => item.remove(), { signal });\n footer.append(close);\n if (message.action) {\n const action = root.ownerDocument.createElement('button');\n action.type = 'button';\n action.className = 'btn';\n action.textContent = message.action.label ?? 'Action';\n action.addEventListener(\n 'click',\n () => {\n message.action?.onclick?.();\n item.remove();\n },\n { signal },\n );\n footer.append(action);\n }\n content.append(section, footer);\n item.append(content);\n root.append(item);\n if ((message.duration ?? 5000) > 0) {\n const timer = setTimeout(() => {\n item.remove();\n timers.delete(timer);\n }, message.duration ?? 5000);\n timers.add(timer);\n }\n return item;\n };\n (root as HTMLElement & { toast?: (message: Message) => HTMLElement }).toast = toast;\n on(root, 'click', (event) => {\n const button = (event.target as HTMLElement).closest('[data-toast-cancel]');\n button?.closest('.toast')?.remove();\n });\n cleanups.push(() => {\n timers.forEach(clearTimeout);\n delete (root as HTMLElement & { toast?: unknown }).toast;\n });\n }\n if (root.classList.contains('tabs')) {\n const tabs = [...root.querySelectorAll<HTMLButtonElement>('[role=tab]')].filter(\n (tab) => tab.closest('.tabs') === root,\n );\n const set = (target: HTMLButtonElement) => {\n if (target.disabled || target.getAttribute('aria-disabled') === 'true') return;\n for (const tab of tabs) {\n const active = tab === target;\n tab.setAttribute('aria-selected', String(active));\n tab.tabIndex = active ? 0 : -1;\n const panel = root.ownerDocument.getElementById(tab.getAttribute('aria-controls') ?? '');\n if (panel) {\n panel.hidden = !active;\n panel.setAttribute('aria-selected', String(active));\n }\n }\n emit(target.id);\n };\n for (const [index, tab] of tabs.entries()) {\n on(tab, 'click', () => set(tab));\n on(tab, 'keydown', (event) => {\n const key = (event as KeyboardEvent).key,\n vertical = tab.parentElement?.getAttribute('aria-orientation') === 'vertical';\n if (\n !(vertical ? ['ArrowUp', 'ArrowDown'] : ['ArrowLeft', 'ArrowRight']).includes(key) &&\n !['Home', 'End'].includes(key)\n )\n return;\n event.preventDefault();\n const target =\n tabs[\n nextIndex(\n tabs.map((item) => ({\n disabled: item.disabled || item.getAttribute('aria-disabled') === 'true',\n })),\n index,\n key,\n )\n ];\n target?.focus();\n if (target) set(target);\n });\n }\n }\n if (root.classList.contains('accordion')) {\n const summaries = [...root.querySelectorAll<HTMLElement>('summary')];\n on(root, 'keydown', (event) => {\n const index = summaries.indexOf(event.target as HTMLElement),\n key = (event as KeyboardEvent).key;\n if (index >= 0 && ['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(key)) {\n event.preventDefault();\n summaries[\n nextIndex(\n summaries.map((el) => ({ disabled: el.getAttribute('aria-disabled') === 'true' })),\n index,\n key,\n )\n ]?.focus();\n }\n });\n on(root, 'click', (event) => {\n const summary = (event.target as HTMLElement).closest('summary');\n if (\n summary?.getAttribute('aria-disabled') === 'true' ||\n summary?.parentElement?.getAttribute('aria-disabled') === 'true'\n )\n event.preventDefault();\n });\n }\n const kind = ['select', 'combobox', 'dropdown-menu', 'popover'].find((kind) =>\n root.classList.contains(kind),\n );\n if (kind) {\n const trigger = root.querySelector<HTMLElement>(\n ':scope > button, :scope > input[role=combobox], :scope > .input-group input[role=combobox]',\n ),\n popup = root.querySelector<HTMLElement>(':scope > [data-popover]');\n const search = root.querySelector<HTMLInputElement>(\n '[data-popover] input, input[role=combobox]',\n );\n if (trigger && popup) {\n let open = false,\n active = -1,\n disposePosition: (() => void) | undefined,\n disposeLayer: (() => void) | undefined;\n const selector =\n kind === 'dropdown-menu'\n ? '[role=menuitem], [role=menuitemcheckbox], [role=menuitemradio]'\n : '[role=option]';\n const items = () =>\n [...popup.querySelectorAll<HTMLElement>(selector)].filter(\n (item) => !item.hidden && item.getAttribute('aria-hidden') !== 'true',\n );\n const disabled = (item: HTMLElement) =>\n item.matches(':disabled') || item.getAttribute('aria-disabled') === 'true';\n const cursor = () =>\n items().map((item) => ({\n value: item.dataset.value ?? item.id,\n label: item.textContent?.trim() ?? '',\n disabled: disabled(item),\n }));\n const typeahead = createTypeahead();\n const highlight = (index: number) => {\n active = index;\n const all = items();\n for (const [i, item] of all.entries()) {\n item.classList.toggle('active', i === index);\n if (kind === 'dropdown-menu') item.tabIndex = i === index ? 0 : -1;\n }\n const item = all[index];\n if (item) {\n if (kind === 'dropdown-menu') item.focus();\n else {\n const list = popup.querySelector<HTMLElement>('[role=listbox]');\n if (list) {\n list.setAttribute('aria-activedescendant', item.id);\n scrollWithin(list, item);\n }\n search?.setAttribute('aria-activedescendant', item.id);\n }\n }\n };\n const close = (restore = false) => {\n if (!open) return;\n open = false;\n disposeLayer?.();\n disposePosition?.();\n trigger.setAttribute('aria-expanded', 'false');\n popup.setAttribute('aria-hidden', 'true');\n popup.hidden = true;\n if (restore) trigger.focus();\n };\n const show = (last = false) => {\n if (open || disabled(trigger)) return;\n open = true;\n popup.hidden = false;\n popup.setAttribute('aria-hidden', 'false');\n popup.setAttribute('popover', 'manual');\n popup.classList.add('bc-floating');\n trigger.setAttribute('aria-expanded', 'true');\n disposePosition = attachFloating(trigger, popup, {\n side: popup.dataset.side as 'top' | 'bottom' | 'left' | 'right' | undefined,\n align: popup.dataset.align as 'start' | 'center' | 'end' | undefined,\n matchWidth: kind === 'select' || kind === 'combobox',\n });\n disposeLayer = dismissableLayer(root.ownerDocument, {\n elements: () => [trigger, popup],\n dismiss: (reason) => close(reason === 'escape'),\n });\n const list = popup.querySelector<HTMLElement>('[role=listbox],[role=menu]');\n if (list) {\n list.tabIndex = -1;\n (search ?? list).focus();\n }\n if (kind === 'popover') focusFirst(popup);\n else highlight(nextIndex(cursor(), -1, last ? 'End' : 'Home'));\n };\n const choose = (item: HTMLElement) => {\n if (disabled(item)) return;\n if (kind === 'select' || kind === 'combobox') {\n const multiple = popup.querySelector('[aria-multiselectable=true]') !== null;\n if (!multiple)\n items().forEach((option) =>\n option.setAttribute('aria-selected', String(option === item)),\n );\n else\n item.setAttribute(\n 'aria-selected',\n String(item.getAttribute('aria-selected') !== 'true'),\n );\n const selected = items().filter(\n (option) => option.getAttribute('aria-selected') === 'true',\n ),\n values = selected.map(\n (option) => option.dataset.value ?? option.textContent?.trim() ?? '',\n );\n if (trigger instanceof HTMLInputElement) trigger.value = item.textContent?.trim() ?? '';\n else {\n const label = trigger.querySelector('span');\n if (label)\n label.textContent = selected.map((option) => option.textContent?.trim()).join(', ');\n }\n const hidden = root.querySelector<HTMLInputElement>('input[type=hidden]');\n if (hidden) {\n hidden.value = multiple ? JSON.stringify(values) : (values[0] ?? '');\n hidden.dispatchEvent(new Event('change', { bubbles: true }));\n }\n emit(multiple ? values : values[0]);\n if (!multiple) close(true);\n } else if (kind === 'dropdown-menu') {\n if (item.getAttribute('role') === 'menuitemcheckbox') {\n item.setAttribute('aria-checked', String(item.getAttribute('aria-checked') !== 'true'));\n emit(item.id);\n } else close(true);\n }\n };\n popup.hidden = popup.getAttribute('aria-hidden') !== 'false';\n on(trigger, 'click', () => (open ? close() : show()));\n on(trigger, 'keydown', (event) => {\n const key = (event as KeyboardEvent).key;\n if (!open && ['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(key)) {\n event.preventDefault();\n show(key === 'ArrowUp');\n }\n });\n on(popup, 'keydown', (event) => {\n const keyboard = event as KeyboardEvent;\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(keyboard.key)) {\n event.preventDefault();\n highlight(nextIndex(cursor(), active, keyboard.key));\n } else if (keyboard.key === 'Enter' || (!search && keyboard.key === ' ')) {\n event.preventDefault();\n const item = items()[active];\n if (item) {\n choose(item);\n if (item instanceof HTMLAnchorElement) item.click();\n }\n } else if (keyboard.key === 'Tab') close();\n else if (!search && keyboard.key.length === 1 && !keyboard.ctrlKey && !keyboard.metaKey) {\n event.preventDefault();\n highlight(typeahead(keyboard.key, cursor(), active));\n }\n });\n on(popup, 'click', (event) => {\n const item = (event.target as HTMLElement).closest<HTMLElement>(selector);\n if (item) {\n if (disabled(item)) event.preventDefault();\n else choose(item);\n }\n });\n on(popup, 'pointermove', (event) => {\n const pointer = event as PointerEvent,\n item = (event.target as HTMLElement).closest<HTMLElement>(selector);\n if (item && !disabled(item) && (pointer.movementX || pointer.movementY))\n highlight(items().indexOf(item));\n });\n on(search, 'input', () => {\n for (const item of popup.querySelectorAll<HTMLElement>(selector)) {\n const hidden = !item.textContent\n ?.toLocaleLowerCase()\n .includes(search!.value.toLocaleLowerCase());\n item.hidden = hidden;\n item.setAttribute('aria-hidden', String(hidden));\n }\n if (!open) show();\n highlight(nextIndex(cursor(), -1, 'Home'));\n });\n cleanups.push(() => close());\n }\n }\n if (root.classList.contains('command')) {\n const input = root.querySelector<HTMLInputElement>('input'),\n list = root.querySelector<HTMLElement>('[role=menu],[role=listbox]');\n let active = 0;\n const items = () =>\n [...(list?.querySelectorAll<HTMLElement>('[role=menuitem],[role=option]') ?? [])].filter(\n (item) => !item.hidden,\n );\n const refresh = () => {\n const all = items();\n all.forEach((item, index) => item.classList.toggle('active', index === active));\n const current = all[active];\n if (current) input?.setAttribute('aria-activedescendant', current.id);\n };\n on(input, 'input', () => {\n list?.querySelectorAll<HTMLElement>('[role=menuitem],[role=option]').forEach((item) => {\n item.hidden = !item.textContent\n ?.toLocaleLowerCase()\n .includes(input!.value.toLocaleLowerCase());\n item.setAttribute('aria-hidden', String(item.hidden));\n });\n active = 0;\n refresh();\n });\n on(input, 'keydown', (event) => {\n const key = (event as KeyboardEvent).key;\n if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(key)) {\n event.preventDefault();\n active = nextIndex(\n items().map((item) => ({ disabled: item.getAttribute('aria-disabled') === 'true' })),\n active,\n key,\n );\n refresh();\n } else if (key === 'Enter') {\n event.preventDefault();\n items()[active]?.click();\n }\n });\n (root as HTMLElement & { refresh?: () => void }).refresh = refresh;\n }\n if (root.matches('input[type=range]')) {\n const range = root as HTMLInputElement,\n update = () =>\n range.style.setProperty(\n '--slider-value',\n `${percentage(range.valueAsNumber, Number(range.min || 0), Number(range.max || 100))}%`,\n );\n on(range, 'input', update);\n update();\n }\n return () => {\n abort.abort();\n cleanups.forEach((cleanup) => cleanup());\n };\n}\n","export type Variant = 'default' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'link';\nexport type Size = 'default' | 'xs' | 'sm' | 'lg' | 'icon' | 'icon-xs' | 'icon-sm' | 'icon-lg';\nexport type Side = 'top' | 'bottom' | 'left' | 'right';\nexport type Align = 'start' | 'center' | 'end';\nexport type StylePack = 'vega' | 'nova' | 'maia' | 'lyra' | 'mira' | 'luma' | 'sera' | 'rhea';\nexport interface Option {\n value: string;\n label: string;\n disabled?: boolean;\n group?: string;\n}\nexport interface TabItem extends Option {}\nexport interface AccordionItem extends Option {}\nexport interface MenuItem extends Option {\n href?: string;\n shortcut?: string;\n separator?: boolean;\n onSelect?: () => void;\n}\nexport interface ToastMessage {\n id: string;\n title: string;\n description?: string;\n variant?: 'default' | 'destructive';\n duration?: number;\n}\nexport interface ChartPoint {\n label: string;\n value: number;\n}\nexport const stylePacks: readonly StylePack[] = [\n 'vega',\n 'nova',\n 'maia',\n 'lyra',\n 'mira',\n 'luma',\n 'sera',\n 'rhea',\n];\nexport function cx(...values: (string | undefined | false | null)[]) {\n return values.filter(Boolean).join(' ');\n}\nexport function percentage(value: number, min = 0, max = 100) {\n return Number.isFinite(value) && max > min\n ? Math.min(100, Math.max(0, ((value - min) / (max - min)) * 100))\n : 0;\n}\nexport function nextIndex(\n items: readonly { disabled?: boolean }[],\n current: number,\n key: string,\n loop = true,\n) {\n const enabled = items\n .map((item, index) => (item.disabled ? -1 : index))\n .filter((index) => index >= 0);\n if (!enabled.length) return -1;\n if (key === 'Home') return enabled[0];\n if (key === 'End') return enabled[enabled.length - 1];\n const direction = key === 'ArrowUp' || key === 'ArrowLeft' ? -1 : 1;\n const position = enabled.indexOf(current);\n if (position < 0) return direction < 0 ? enabled[enabled.length - 1] : enabled[0];\n const next = position + direction;\n return enabled[\n loop\n ? (next + enabled.length) % enabled.length\n : Math.min(enabled.length - 1, Math.max(0, next))\n ];\n}\nexport function createTypeahead() {\n let buffer = '',\n last = 0;\n return (key: string, items: readonly Option[], current: number) => {\n const now = Date.now();\n buffer = now - last > 700 ? key : buffer + key;\n last = now;\n const query = [...buffer].every((char) => char === buffer[0]) ? buffer[0] : buffer;\n for (let offset = 1; offset <= items.length; offset++) {\n const index = (current + offset + items.length) % items.length;\n if (\n !items[index].disabled &&\n items[index].label.toLocaleLowerCase().startsWith(query.toLocaleLowerCase())\n )\n return index;\n }\n return current;\n };\n}\n\n// Layers share one stack per document: Escape/outside events only dismiss the top layer.\ntype Layer = {\n elements: () => (HTMLElement | null)[];\n dismiss: (reason: 'escape' | 'outside') => void;\n};\nconst stacks = new WeakMap<Document, { layers: Layer[]; dispose: () => void }>();\nexport function dismissableLayer(doc: Document, layer: Layer) {\n let stack = stacks.get(doc);\n if (!stack) {\n const layers: Layer[] = [];\n const pointer = (event: Event) => {\n const top = layers.at(-1);\n if (top && !top.elements().some((el) => el && event.composedPath().includes(el)))\n top.dismiss('outside');\n };\n const keyboard = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && !event.defaultPrevented && layers.length) {\n event.preventDefault();\n event.stopPropagation();\n layers.at(-1)?.dismiss('escape');\n }\n };\n doc.addEventListener('pointerdown', pointer, true);\n doc.addEventListener('keydown', keyboard);\n stack = {\n layers,\n dispose: () => {\n doc.removeEventListener('pointerdown', pointer, true);\n doc.removeEventListener('keydown', keyboard);\n },\n };\n stacks.set(doc, stack);\n }\n stack.layers.push(layer);\n return () => {\n const index = stack.layers.indexOf(layer);\n if (index >= 0) stack.layers.splice(index, 1);\n if (!stack.layers.length) {\n stack.dispose();\n stacks.delete(doc);\n }\n };\n}\n\nexport interface FloatingOptions {\n side?: Side;\n align?: Align;\n offset?: number;\n matchWidth?: boolean;\n}\nexport function floatingPosition(\n anchor: DOMRect,\n popup: DOMRect,\n width: number,\n height: number,\n options: FloatingOptions = {},\n) {\n let side = options.side ?? 'bottom';\n const align = options.align ?? 'start',\n offset = options.offset ?? 6,\n padding = 8;\n const available = {\n bottom: height - anchor.bottom,\n top: anchor.top,\n right: width - anchor.right,\n left: anchor.left,\n };\n const opposite: Record<Side, Side> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n };\n const required =\n (side === 'top' || side === 'bottom' ? popup.height : popup.width) + offset + padding;\n if (available[side] < required && available[opposite[side]] > available[side])\n side = opposite[side];\n const vertical = side === 'top' || side === 'bottom';\n let x = vertical\n ? anchor.left\n : side === 'left'\n ? anchor.left - popup.width - offset\n : anchor.right + offset;\n let y = vertical\n ? side === 'top'\n ? anchor.top - popup.height - offset\n : anchor.bottom + offset\n : anchor.top;\n if (vertical)\n x +=\n align === 'end'\n ? anchor.width - popup.width\n : align === 'center'\n ? (anchor.width - popup.width) / 2\n : 0;\n else\n y +=\n align === 'end'\n ? anchor.height - popup.height\n : align === 'center'\n ? (anchor.height - popup.height) / 2\n : 0;\n return {\n x: Math.max(padding, Math.min(x, width - popup.width - padding)),\n y: Math.max(padding, Math.min(y, height - popup.height - padding)),\n side,\n maxHeight: Math.max(40, available[side] - offset - padding),\n };\n}\nexport function attachFloating(\n anchor: HTMLElement,\n popup: HTMLElement,\n options: FloatingOptions = {},\n) {\n const win = anchor.ownerDocument.defaultView!;\n // Native top layer preserves contextual Basecoat selectors and escapes overflow clipping.\n if (typeof popup.showPopover === 'function') popup.showPopover();\n const update = () => {\n const rect = anchor.getBoundingClientRect();\n if (options.matchWidth) popup.style.minWidth = `${rect.width}px`;\n const viewport = win.visualViewport;\n const result = floatingPosition(\n rect,\n popup.getBoundingClientRect(),\n viewport?.width ?? win.innerWidth,\n viewport?.height ?? win.innerHeight,\n options,\n );\n Object.assign(popup.style, {\n left: `${result.x + (viewport?.offsetLeft ?? 0)}px`,\n top: `${result.y + (viewport?.offsetTop ?? 0)}px`,\n maxHeight: `${result.maxHeight}px`,\n });\n popup.dataset.side = result.side;\n };\n let frame = 0;\n const schedule = () => {\n win.cancelAnimationFrame(frame);\n frame = win.requestAnimationFrame(update);\n };\n const observer =\n typeof win.ResizeObserver === 'function' ? new win.ResizeObserver(schedule) : null;\n observer?.observe(anchor);\n observer?.observe(popup);\n win.addEventListener('resize', schedule);\n win.addEventListener('scroll', schedule, true);\n win.visualViewport?.addEventListener('resize', schedule);\n win.visualViewport?.addEventListener('scroll', schedule);\n update();\n return () => {\n win.cancelAnimationFrame(frame);\n observer?.disconnect();\n win.removeEventListener('resize', schedule);\n win.removeEventListener('scroll', schedule, true);\n win.visualViewport?.removeEventListener('resize', schedule);\n win.visualViewport?.removeEventListener('scroll', schedule);\n if (typeof popup.hidePopover === 'function' && popup.matches(':popover-open'))\n popup.hidePopover();\n };\n}\nconst scrollLocks = new WeakMap<Document, { count: number; overflow: string }>();\nexport function lockScroll(doc: Document) {\n const record = scrollLocks.get(doc) ?? { count: 0, overflow: doc.documentElement.style.overflow };\n record.count++;\n scrollLocks.set(doc, record);\n doc.documentElement.style.overflow = 'hidden';\n let disposed = false;\n return () => {\n if (disposed) return;\n disposed = true;\n if (--record.count === 0) {\n doc.documentElement.style.overflow = record.overflow;\n scrollLocks.delete(doc);\n }\n };\n}\nexport function focusFirst(root: HTMLElement) {\n const target = root.querySelector<HTMLElement>(\n '[autofocus],button:not(:disabled),[href],input:not(:disabled),select:not(:disabled),textarea:not(:disabled),[tabindex=\"0\"]',\n );\n (target ?? root).focus({ preventScroll: true });\n}\nexport function scrollWithin(container: HTMLElement, item: HTMLElement) {\n const parent =\n container.scrollHeight > container.clientHeight\n ? container\n : (container.parentElement ?? container);\n const outer = parent.getBoundingClientRect(),\n inner = item.getBoundingClientRect();\n if (inner.top < outer.top) parent.scrollTop -= outer.top - inner.top;\n else if (inner.bottom > outer.bottom) parent.scrollTop += inner.bottom - outer.bottom;\n}\nexport function formReset(element: HTMLElement, reset: () => void) {\n const form = element.closest('form');\n let timer: ReturnType<typeof setTimeout> | undefined;\n const listener = (event: Event) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n if (!event.defaultPrevented) reset();\n }, 0);\n };\n form?.addEventListener('reset', listener);\n return () => {\n clearTimeout(timer);\n form?.removeEventListener('reset', listener);\n };\n}\n\nexport const primitiveDefinitions = {\n ChartRoot: ['canvas', 'chart-canvas'],\n SelectRoot: ['div', 'select'],\n ComboboxRoot: ['div', 'combobox'],\n DropdownMenuRoot: ['div', 'dropdown-menu'],\n PopoverRoot: ['div', 'popover'],\n TabsRoot: ['div', 'tabs'],\n AccordionRoot: ['div', 'accordion'],\n CommandRoot: ['div', 'command'],\n SidebarRoot: ['div', 'sidebar'],\n DialogRoot: ['dialog', 'dialog'],\n DrawerRoot: ['dialog', 'drawer'],\n AlertDialogRoot: ['dialog', 'alert-dialog'],\n Button: ['button', 'btn'],\n Badge: ['span', 'badge'],\n Card: ['article', 'card'],\n CardHeader: ['header', ''],\n CardTitle: ['h3', 'card-title'],\n CardDescription: ['p', ''],\n CardContent: ['section', ''],\n CardFooter: ['footer', ''],\n CardAction: ['div', 'card-action'],\n Alert: ['div', 'alert'],\n AlertTitle: ['h2', ''],\n AlertDescription: ['section', ''],\n Avatar: ['span', 'avatar'],\n AvatarImage: ['img', ''],\n AvatarFallback: ['span', ''],\n Breadcrumb: ['nav', 'breadcrumb'],\n BreadcrumbList: ['ol', ''],\n BreadcrumbItem: ['li', ''],\n BreadcrumbLink: ['a', ''],\n BreadcrumbSeparator: ['li', ''],\n ButtonGroup: ['div', 'button-group'],\n Field: ['div', 'field'],\n FieldLabel: ['label', 'label'],\n FieldDescription: ['p', ''],\n FieldError: ['p', ''],\n Label: ['label', 'label'],\n Input: ['input', 'input'],\n Textarea: ['textarea', 'textarea'],\n NativeSelect: ['select', 'select'],\n InputGroup: ['div', 'input-group'],\n InputGroupAddon: ['div', ''],\n Empty: ['div', 'empty'],\n EmptyHeader: ['header', ''],\n EmptyTitle: ['h3', ''],\n EmptyDescription: ['p', ''],\n EmptyContent: ['section', ''],\n Item: ['div', 'item'],\n ItemContent: ['section', ''],\n ItemTitle: ['h3', ''],\n ItemDescription: ['p', ''],\n ItemActions: ['div', ''],\n Kbd: ['kbd', 'kbd'],\n ScrollArea: ['div', 'scrollbar'],\n Skeleton: ['div', 'skeleton'],\n Spinner: ['span', 'bc-spinner'],\n Separator: ['hr', ''],\n Table: ['table', 'table'],\n TableHeader: ['thead', ''],\n TableBody: ['tbody', ''],\n TableFooter: ['tfoot', ''],\n TableRow: ['tr', ''],\n TableHead: ['th', ''],\n TableCell: ['td', ''],\n TableCaption: ['caption', ''],\n DialogHeader: ['header', ''],\n DialogTitle: ['h2', ''],\n DialogDescription: ['p', ''],\n DialogContent: ['section', ''],\n DialogFooter: ['footer', ''],\n SidebarHeader: ['header', ''],\n SidebarContent: ['section', ''],\n SidebarFooter: ['footer', ''],\n SidebarGroup: ['section', ''],\n SidebarItem: ['a', ''],\n} as const;\nexport type PrimitiveName = keyof typeof primitiveDefinitions;\nexport { attachWidget } from './widgets';\n","import { primitive } from '../primitives';\n\nexport const ChartRoot = /* @__PURE__ */ primitive('ChartRoot', 'canvas');\n","import { primitive } from '../primitives';\n\nexport const SelectRoot = /* @__PURE__ */ primitive('SelectRoot', 'div');\n","import { primitive } from '../primitives';\n\nexport const ComboboxRoot = /* @__PURE__ */ primitive('ComboboxRoot', 'div');\n","import { primitive } from '../primitives';\n\nexport const DropdownMenuRoot = /* @__PURE__ */ primitive('DropdownMenuRoot', 'div');\n","import { primitive } from '../primitives';\n\nexport const PopoverRoot = /* @__PURE__ */ primitive('PopoverRoot', 'div');\n","import { primitive } from '../primitives';\n\nexport const TabsRoot = /* @__PURE__ */ primitive('TabsRoot', 'div');\n","import { primitive } from '../primitives';\n\nexport const AccordionRoot = /* @__PURE__ */ primitive('AccordionRoot', 'div');\n","import { primitive } from '../primitives';\n\nexport const CommandRoot = /* @__PURE__ */ primitive('CommandRoot', 'div');\n","import { primitive } from '../primitives';\n\nexport const SidebarRoot = /* @__PURE__ */ primitive('SidebarRoot', 'div');\n","import { primitive } from '../primitives';\n\nexport const DialogRoot = /* @__PURE__ */ primitive('DialogRoot', 'dialog');\n","import { primitive } from '../primitives';\n\nexport const DrawerRoot = /* @__PURE__ */ primitive('DrawerRoot', 'dialog');\n","import { primitive } from '../primitives';\n\nexport const AlertDialogRoot = /* @__PURE__ */ primitive('AlertDialogRoot', 'dialog');\n","import { primitive } from '../primitives';\n\nexport const Button = /* @__PURE__ */ primitive('Button', 'button');\n","import { primitive } from '../primitives';\n\nexport const Badge = /* @__PURE__ */ primitive('Badge', 'span');\n","import { primitive } from '../primitives';\n\nexport const Card = /* @__PURE__ */ primitive('Card', 'article');\n","import { primitive } from '../primitives';\n\nexport const CardHeader = /* @__PURE__ */ primitive('CardHeader', 'header');\n","import { primitive } from '../primitives';\n\nexport const CardTitle = /* @__PURE__ */ primitive('CardTitle', 'h3');\n","import { primitive } from '../primitives';\n\nexport const CardDescription = /* @__PURE__ */ primitive('CardDescription', 'p');\n","import { primitive } from '../primitives';\n\nexport const CardContent = /* @__PURE__ */ primitive('CardContent', 'section');\n","import { primitive } from '../primitives';\n\nexport const CardFooter = /* @__PURE__ */ primitive('CardFooter', 'footer');\n","import { primitive } from '../primitives';\n\nexport const CardAction = /* @__PURE__ */ primitive('CardAction', 'div');\n","import { primitive } from '../primitives';\n\nexport const Alert = /* @__PURE__ */ primitive('Alert', 'div');\n","import { primitive } from '../primitives';\n\nexport const AlertTitle = /* @__PURE__ */ primitive('AlertTitle', 'h2');\n","import { primitive } from '../primitives';\n\nexport const AlertDescription = /* @__PURE__ */ primitive('AlertDescription', 'section');\n","import { primitive } from '../primitives';\n\nexport const Avatar = /* @__PURE__ */ primitive('Avatar', 'span');\n","import { primitive } from '../primitives';\n\nexport const AvatarImage = /* @__PURE__ */ primitive('AvatarImage', 'img');\n","import { primitive } from '../primitives';\n\nexport const AvatarFallback = /* @__PURE__ */ primitive('AvatarFallback', 'span');\n","import { primitive } from '../primitives';\n\nexport const Breadcrumb = /* @__PURE__ */ primitive('Breadcrumb', 'nav');\n","import { primitive } from '../primitives';\n\nexport const BreadcrumbList = /* @__PURE__ */ primitive('BreadcrumbList', 'ol');\n","import { primitive } from '../primitives';\n\nexport const BreadcrumbItem = /* @__PURE__ */ primitive('BreadcrumbItem', 'li');\n","import { primitive } from '../primitives';\n\nexport const BreadcrumbLink = /* @__PURE__ */ primitive('BreadcrumbLink', 'a');\n","import { primitive } from '../primitives';\n\nexport const BreadcrumbSeparator = /* @__PURE__ */ primitive('BreadcrumbSeparator', 'li');\n","import { primitive } from '../primitives';\n\nexport const ButtonGroup = /* @__PURE__ */ primitive('ButtonGroup', 'div');\n","import { primitive } from '../primitives';\n\nexport const Field = /* @__PURE__ */ primitive('Field', 'div');\n","import { primitive } from '../primitives';\n\nexport const FieldLabel = /* @__PURE__ */ primitive('FieldLabel', 'label');\n","import { primitive } from '../primitives';\n\nexport const FieldDescription = /* @__PURE__ */ primitive('FieldDescription', 'p');\n","import { primitive } from '../primitives';\n\nexport const FieldError = /* @__PURE__ */ primitive('FieldError', 'p');\n","import { primitive } from '../primitives';\n\nexport const Label = /* @__PURE__ */ primitive('Label', 'label');\n","import { primitive } from '../primitives';\n\nexport const Input = /* @__PURE__ */ primitive('Input', 'input');\n","import { primitive } from '../primitives';\n\nexport const Textarea = /* @__PURE__ */ primitive('Textarea', 'textarea');\n","import { primitive } from '../primitives';\n\nexport const NativeSelect = /* @__PURE__ */ primitive('NativeSelect', 'select');\n","import { primitive } from '../primitives';\n\nexport const InputGroup = /* @__PURE__ */ primitive('InputGroup', 'div');\n","import { primitive } from '../primitives';\n\nexport const InputGroupAddon = /* @__PURE__ */ primitive('InputGroupAddon', 'div');\n","import { primitive } from '../primitives';\n\nexport const Empty = /* @__PURE__ */ primitive('Empty', 'div');\n","import { primitive } from '../primitives';\n\nexport const EmptyHeader = /* @__PURE__ */ primitive('EmptyHeader', 'header');\n","import { primitive } from '../primitives';\n\nexport const EmptyTitle = /* @__PURE__ */ primitive('EmptyTitle', 'h3');\n","import { primitive } from '../primitives';\n\nexport const EmptyDescription = /* @__PURE__ */ primitive('EmptyDescription', 'p');\n","import { primitive } from '../primitives';\n\nexport const EmptyContent = /* @__PURE__ */ primitive('EmptyContent', 'section');\n","import { primitive } from '../primitives';\n\nexport const Item = /* @__PURE__ */ primitive('Item', 'div');\n","import { primitive } from '../primitives';\n\nexport const ItemContent = /* @__PURE__ */ primitive('ItemContent', 'section');\n","import { primitive } from '../primitives';\n\nexport const ItemTitle = /* @__PURE__ */ primitive('ItemTitle', 'h3');\n","import { primitive } from '../primitives';\n\nexport const ItemDescription = /* @__PURE__ */ primitive('ItemDescription', 'p');\n","import { primitive } from '../primitives';\n\nexport const ItemActions = /* @__PURE__ */ primitive('ItemActions', 'div');\n","import { primitive } from '../primitives';\n\nexport const Kbd = /* @__PURE__ */ primitive('Kbd', 'kbd');\n","import { primitive } from '../primitives';\n\nexport const ScrollArea = /* @__PURE__ */ primitive('ScrollArea', 'div');\n","import { primitive } from '../primitives';\n\nexport const Skeleton = /* @__PURE__ */ primitive('Skeleton', 'div');\n","import { primitive } from '../primitives';\n\nexport const Spinner = /* @__PURE__ */ primitive('Spinner', 'span');\n","import { primitive } from '../primitives';\n\nexport const Separator = /* @__PURE__ */ primitive('Separator', 'hr');\n","import { primitive } from '../primitives';\n\nexport const Table = /* @__PURE__ */ primitive('Table', 'table');\n","import { primitive } from '../primitives';\n\nexport const TableHeader = /* @__PURE__ */ primitive('TableHeader', 'thead');\n","import { primitive } from '../primitives';\n\nexport const TableBody = /* @__PURE__ */ primitive('TableBody', 'tbody');\n","import { primitive } from '../primitives';\n\nexport const TableFooter = /* @__PURE__ */ primitive('TableFooter', 'tfoot');\n","import { primitive } from '../primitives';\n\nexport const TableRow = /* @__PURE__ */ primitive('TableRow', 'tr');\n","import { primitive } from '../primitives';\n\nexport const TableHead = /* @__PURE__ */ primitive('TableHead', 'th');\n","import { primitive } from '../primitives';\n\nexport const TableCell = /* @__PURE__ */ primitive('TableCell', 'td');\n","import { primitive } from '../primitives';\n\nexport const TableCaption = /* @__PURE__ */ primitive('TableCaption', 'caption');\n","import { primitive } from '../primitives';\n\nexport const DialogHeader = /* @__PURE__ */ primitive('DialogHeader', 'header');\n","import { primitive } from '../primitives';\n\nexport const DialogTitle = /* @__PURE__ */ primitive('DialogTitle', 'h2');\n","import { primitive } from '../primitives';\n\nexport const DialogDescription = /* @__PURE__ */ primitive('DialogDescription', 'p');\n","import { primitive } from '../primitives';\n\nexport const DialogContent = /* @__PURE__ */ primitive('DialogContent', 'section');\n","import { primitive } from '../primitives';\n\nexport const DialogFooter = /* @__PURE__ */ primitive('DialogFooter', 'footer');\n","import { primitive } from '../primitives';\n\nexport const SidebarHeader = /* @__PURE__ */ primitive('SidebarHeader', 'header');\n","import { primitive } from '../primitives';\n\nexport const SidebarContent = /* @__PURE__ */ primitive('SidebarContent', 'section');\n","import { primitive } from '../primitives';\n\nexport const SidebarFooter = /* @__PURE__ */ primitive('SidebarFooter', 'footer');\n","import { primitive } from '../primitives';\n\nexport const SidebarGroup = /* @__PURE__ */ primitive('SidebarGroup', 'section');\n","import { primitive } from '../primitives';\n\nexport const SidebarItem = /* @__PURE__ */ primitive('SidebarItem', 'a');\n","import { forwardRef, useEffect, useRef, type InputHTMLAttributes } from 'react';\nimport { cx, formReset } from '@nuykon/basecoat-core';\nimport { useValue } from '../hooks';\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {\n onCheckedChange?: (checked: boolean) => void;\n indeterminate?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n checked,\n defaultChecked = false,\n onCheckedChange,\n indeterminate = false,\n className,\n onChange,\n ...props\n },\n forwarded,\n ) => {\n const ref = useRef<HTMLInputElement>(null);\n const [value, set] = useValue(checked, defaultChecked, onCheckedChange);\n useEffect(() => {\n if (ref.current) ref.current.indeterminate = indeterminate;\n }, [indeterminate]);\n useEffect(\n () => (ref.current ? formReset(ref.current, () => set(defaultChecked)) : undefined),\n [defaultChecked, set],\n );\n return (\n <input\n {...props}\n className={cx('input', className)}\n type=\"checkbox\"\n checked={value}\n ref={(element) => {\n ref.current = element;\n if (typeof forwarded === 'function') forwarded(element);\n else if (forwarded) forwarded.current = element;\n }}\n onChange={(event) => {\n onChange?.(event);\n if (!event.defaultPrevented) set(event.currentTarget.checked);\n }}\n />\n );\n },\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { attachFloating, dismissableLayer, type FloatingOptions } from '@nuykon/basecoat-core';\nexport function useValue<T>(value: T | undefined, defaultValue: T, onChange?: (value: T) => void) {\n const [internal, setInternal] = useState(defaultValue);\n const current = value === undefined ? internal : value;\n const latest = useRef({ value, current, onChange });\n latest.current = { value, current, onChange };\n const set = useCallback((next: T) => {\n if (Object.is(latest.current.current, next)) return;\n if (latest.current.value === undefined) setInternal(next);\n latest.current.onChange?.(next);\n }, []);\n return [current, set] as const;\n}\nexport function useLatest<T>(value: T) {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n}\nexport function useFloating(\n open: boolean,\n close: (restore: boolean) => void,\n options: FloatingOptions = {},\n) {\n const anchor = useRef<HTMLButtonElement>(null),\n popup = useRef<HTMLDivElement>(null);\n const latest = useLatest(close);\n useEffect(() => {\n if (!open || !anchor.current || !popup.current) return;\n const trigger = anchor.current,\n content = popup.current;\n const position = attachFloating(trigger, content, options);\n const layer = dismissableLayer(trigger.ownerDocument, {\n elements: () => [trigger, content],\n dismiss: (reason) => latest.current(reason === 'escape'),\n });\n return () => {\n layer();\n position();\n };\n }, [open, options.side, options.align, options.offset, options.matchWidth]);\n return { anchor, popup };\n}\n","import { forwardRef } from 'react';\nimport { Checkbox, type CheckboxProps } from './Checkbox';\n\nexport const Switch = forwardRef<HTMLInputElement, Omit<CheckboxProps, 'indeterminate'>>(\n (props, ref) => <Checkbox {...props} role=\"switch\" ref={ref} />,\n);\n\nSwitch.displayName = 'Switch';\n","import { forwardRef, useEffect, useRef, type InputHTMLAttributes } from 'react';\nimport { formReset, percentage } from '@nuykon/basecoat-core';\nimport { useValue } from '../hooks';\nimport { Input } from './Input';\n\nexport interface SliderProps extends Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'value' | 'defaultValue' | 'size'\n> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n}\n\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n (\n { value, defaultValue = 0, onValueChange, min = 0, max = 100, onChange, style, ...props },\n ref,\n ) => {\n const [current, set] = useValue(value, defaultValue, onValueChange);\n const local = useRef<HTMLInputElement>(null);\n useEffect(\n () => (local.current ? formReset(local.current, () => set(defaultValue)) : undefined),\n [defaultValue, set],\n );\n return (\n <Input\n {...props}\n ref={(element) => {\n local.current = element;\n if (typeof ref === 'function') ref(element);\n else if (ref) ref.current = element;\n }}\n type=\"range\"\n min={min}\n max={max}\n value={current}\n style={\n {\n ...style,\n '--slider-value': `${percentage(current, Number(min), Number(max))}%`,\n } as React.CSSProperties\n }\n onChange={(event) => {\n onChange?.(event);\n if (!event.defaultPrevented) set(event.currentTarget.valueAsNumber);\n }}\n />\n );\n },\n);\n\nSlider.displayName = 'Slider';\n","import { useEffect, useId, useRef, type HTMLAttributes } from 'react';\nimport { cx, formReset, type Option } from '@nuykon/basecoat-core';\nimport { useValue } from '../hooks';\n\nexport interface RadioGroupProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'defaultValue' | 'onChange'\n> {\n options: readonly Option[];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n name?: string;\n disabled?: boolean;\n required?: boolean;\n}\n\nexport function RadioGroup({\n options,\n value,\n defaultValue = '',\n onValueChange,\n name,\n disabled,\n required,\n className,\n ...props\n}: RadioGroupProps) {\n const generated = useId(),\n root = useRef<HTMLDivElement>(null);\n const [current, set] = useValue(value, defaultValue, onValueChange);\n useEffect(\n () => (root.current ? formReset(root.current, () => set(defaultValue)) : undefined),\n [defaultValue, set],\n );\n return (\n <div {...props} ref={root} role=\"radiogroup\" className={cx('bc-radio-group', className)}>\n {options.map((option) => (\n <label key={option.value}>\n <input\n className=\"input\"\n type=\"radio\"\n name={name ?? generated}\n value={option.value}\n checked={current === option.value}\n disabled={disabled || option.disabled}\n required={required}\n onChange={() => set(option.value)}\n />{' '}\n {option.label}\n </label>\n ))}\n </div>\n );\n}\n","import { type HTMLAttributes } from 'react';\nimport { cx, percentage } from '@nuykon/basecoat-core';\n\nexport function Progress({\n value,\n max = 100,\n className,\n ...props\n}: HTMLAttributes<HTMLDivElement> & { value?: number; max?: number }) {\n return (\n <div\n {...props}\n className={cx('progress', className)}\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-busy={value === undefined}\n >\n <span style={{ width: value === undefined ? '100%' : `${percentage(value, 0, max)}%` }} />\n </div>\n );\n}\n","import { useId, useRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx, nextIndex, type Option } from '@nuykon/basecoat-core';\nimport { useValue } from '../hooks';\n\nexport interface TabsProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'defaultValue' | 'onChange'\n> {\n items: readonly Option[];\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n orientation?: 'horizontal' | 'vertical';\n activation?: 'automatic' | 'manual';\n variant?: 'default' | 'line';\n renderPanel: (item: Option) => ReactNode;\n keepMounted?: boolean;\n}\n\nexport function Tabs({\n items,\n value,\n defaultValue,\n onValueChange,\n orientation = 'horizontal',\n activation = 'automatic',\n variant,\n renderPanel,\n keepMounted = false,\n className,\n ...props\n}: TabsProps) {\n const id = useId(),\n refs = useRef<(HTMLButtonElement | null)[]>([]);\n const [current, set] = useValue(\n value,\n defaultValue ?? items.find((item) => !item.disabled)?.value ?? '',\n onValueChange,\n );\n const active = items.findIndex((item) => item.value === current && !item.disabled);\n const selected = active >= 0 ? active : items.findIndex((item) => !item.disabled);\n return (\n <div {...props} className={cx('tabs', className)}>\n <div\n role=\"tablist\"\n aria-label={props['aria-label']}\n aria-orientation={orientation}\n data-variant={variant}\n >\n {items.map((item, index) => (\n <button\n key={item.value}\n ref={(el) => {\n refs.current[index] = el;\n }}\n type=\"button\"\n role=\"tab\"\n id={`${id}-tab-${index}`}\n aria-controls={`${id}-panel-${index}`}\n aria-selected={index === selected}\n disabled={item.disabled}\n tabIndex={index === selected ? 0 : -1}\n onClick={() => set(item.value)}\n onKeyDown={(event) => {\n const arrows =\n orientation === 'vertical' ? ['ArrowUp', 'ArrowDown'] : ['ArrowLeft', 'ArrowRight'];\n if (!arrows.includes(event.key) && !['Home', 'End'].includes(event.key)) return;\n event.preventDefault();\n const key =\n orientation === 'horizontal' && event.currentTarget.closest('[dir=\"rtl\"]')\n ? event.key === 'ArrowLeft'\n ? 'ArrowRight'\n : event.key === 'ArrowRight'\n ? 'ArrowLeft'\n : event.key\n : event.key;\n const next = nextIndex(items, index, key);\n refs.current[next]?.focus();\n if (activation === 'automatic' && next >= 0) set(items[next].value);\n }}\n >\n {item.label}\n </button>\n ))}\n </div>\n {items.map((item, index) => (\n <div\n key={item.value}\n role=\"tabpanel\"\n id={`${id}-panel-${index}`}\n aria-labelledby={`${id}-tab-${index}`}\n tabIndex={0}\n hidden={index !== selected}\n >\n {keepMounted || index === selected ? renderPanel(item) : null}\n </div>\n ))}\n </div>\n );\n}\n","import { useRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx, nextIndex, type Option } from '@nuykon/basecoat-core';\nimport { useValue } from '../hooks';\n\nexport interface AccordionProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'defaultValue' | 'onChange'\n> {\n items: readonly Option[];\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n multiple?: boolean;\n renderPanel: (item: Option) => ReactNode;\n}\n\nexport function Accordion({\n items,\n value,\n defaultValue = [],\n onValueChange,\n multiple = false,\n renderPanel,\n className,\n ...props\n}: AccordionProps) {\n const [current, set] = useValue(value, defaultValue, onValueChange);\n const refs = useRef<(HTMLElement | null)[]>([]);\n return (\n <div {...props} className={cx('accordion', className)}>\n {items.map((item, index) => (\n <details\n key={item.value}\n open={current.includes(item.value)}\n aria-disabled={item.disabled || undefined}\n >\n <summary\n ref={(el) => {\n refs.current[index] = el;\n }}\n aria-disabled={item.disabled || undefined}\n tabIndex={item.disabled ? -1 : 0}\n onClick={(event) => {\n event.preventDefault();\n if (!item.disabled)\n set(\n current.includes(item.value)\n ? current.filter((key) => key !== item.value)\n : multiple\n ? [...current, item.value]\n : [item.value],\n );\n }}\n onKeyDown={(event) => {\n if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n event.preventDefault();\n refs.current[nextIndex(items, index, event.key)]?.focus();\n }\n }}\n >\n {item.label}\n <span aria-hidden=\"true\">⌄</span>\n </summary>\n <section>{renderPanel(item)}</section>\n </details>\n ))}\n </div>\n );\n}\n","import { useId, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '@nuykon/basecoat-core';\nimport { useValue } from '../hooks';\nimport { Button } from './Button';\n\nexport function Collapsible({\n open,\n defaultOpen = false,\n onOpenChange,\n trigger,\n children,\n className,\n ...props\n}: Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> & {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger: ReactNode;\n}) {\n const [current, set] = useValue(open, defaultOpen, onOpenChange);\n const id = useId();\n return (\n <div {...props} className={cx('collapsible', className)}>\n <Button\n variant=\"ghost\"\n aria-expanded={current}\n aria-controls={id}\n onClick={() => set(!current)}\n >\n {trigger}\n </Button>\n <div id={id} hidden={!current}>\n {children}\n </div>\n </div>\n );\n}\n","import { useEffect, useId, useRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx, lockScroll, type Side } from '@nuykon/basecoat-core';\nimport { Button } from './Button';\nimport { useLatest, useValue } from '../hooks';\n\nexport interface DialogProps extends Omit<HTMLAttributes<HTMLDialogElement>, 'onChange' | 'title'> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n footer?: ReactNode;\n closeOnOutside?: boolean;\n closeOnEscape?: boolean;\n closeLabel?: string;\n kind?: 'dialog' | 'alert-dialog' | 'drawer';\n side?: Side;\n}\n\nexport function Dialog({\n open,\n defaultOpen = false,\n onOpenChange,\n trigger,\n title,\n description,\n footer,\n children,\n closeOnOutside = true,\n closeOnEscape = true,\n closeLabel = 'Close',\n kind = 'dialog',\n side = 'right',\n className,\n ...props\n}: DialogProps) {\n const [current, set] = useValue(open, defaultOpen, onOpenChange);\n const ref = useRef<HTMLDialogElement>(null),\n id = useId();\n const latest = useLatest(current);\n useEffect(() => {\n const dialog = ref.current!;\n if (!current) {\n if (dialog.open) dialog.close();\n return;\n }\n if (!dialog.open) dialog.showModal();\n const unlock = lockScroll(dialog.ownerDocument);\n return () => {\n unlock();\n if (dialog.open) dialog.close();\n };\n }, [current]);\n return (\n <>\n {trigger !== undefined && (\n <Button variant=\"outline\" onClick={() => set(true)}>\n {trigger}\n </Button>\n )}\n <dialog\n {...props}\n className={cx(kind, className)}\n data-side={kind === 'drawer' ? side : undefined}\n ref={ref}\n aria-labelledby={`${id}-title`}\n aria-describedby={description ? `${id}-description` : undefined}\n onCancel={(event) => {\n event.preventDefault();\n if (closeOnEscape) set(false);\n }}\n onClose={() => {\n if (latest.current) {\n set(false);\n queueMicrotask(() => {\n if (latest.current && ref.current?.isConnected && !ref.current.open)\n ref.current.showModal();\n });\n }\n }}\n onClick={(event) => {\n props.onClick?.(event);\n if (!event.defaultPrevented && closeOnOutside && event.target === event.currentTarget)\n set(false);\n }}\n >\n <div className={kind === 'drawer' ? 'bc-drawer-surface' : 'bc-dialog-surface'}>\n <header>\n <h2 id={`${id}-title`}>{title}</h2>\n {description && <p id={`${id}-description`}>{description}</p>}\n </header>\n <section>{children}</section>\n {footer && <footer>{footer}</footer>}\n {kind !== 'alert-dialog' && (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={closeLabel}\n onClick={() => set(false)}\n >\n ×\n </Button>\n )}\n </div>\n </dialog>\n </>\n );\n}\n","import { Dialog, type DialogProps } from './Dialog';\n\nexport function AlertDialog(props: DialogProps) {\n return <Dialog {...props} kind=\"alert-dialog\" role=\"alertdialog\" closeOnOutside={false} />;\n}\n","import { Dialog, type DialogProps } from './Dialog';\n\nexport function Drawer(props: DialogProps) {\n return <Dialog {...props} kind=\"drawer\" />;\n}\n","import { useEffect, useId, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx, focusFirst, type Side, type Align } from '@nuykon/basecoat-core';\nimport { Button } from './Button';\nimport { useFloating, useValue } from '../hooks';\n\nexport interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger: ReactNode;\n side?: Side;\n align?: Align;\n label?: string;\n}\n\nexport function Popover({\n open,\n defaultOpen = false,\n onOpenChange,\n trigger,\n side,\n align,\n label = 'Popover',\n children,\n className,\n ...props\n}: PopoverProps) {\n const [current, set] = useValue(open, defaultOpen, onOpenChange);\n const id = useId();\n const { anchor, popup } = useFloating(\n current,\n (restore) => {\n set(false);\n if (restore) anchor.current?.focus();\n },\n { side, align },\n );\n useEffect(() => {\n if (current && popup.current) focusFirst(popup.current);\n }, [current]);\n return (\n <div {...props} className={cx('popover', className)}>\n <Button\n ref={anchor}\n variant=\"outline\"\n aria-haspopup=\"dialog\"\n aria-expanded={current}\n aria-controls={id}\n onClick={() => set(!current)}\n >\n {trigger}\n </Button>\n {current && (\n <div\n ref={popup}\n id={id}\n data-popover=\"\"\n popover=\"manual\"\n className=\"bc-floating\"\n role=\"dialog\"\n aria-label={label}\n tabIndex={-1}\n >\n {children}\n </div>\n )}\n </div>\n );\n}\n","import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { type Side } from '@nuykon/basecoat-core';\nimport { Button } from './Button';\nimport { useFloating, useValue } from '../hooks';\n\nexport function Tooltip({\n content,\n children,\n delay = 300,\n side = 'top',\n}: {\n content: ReactNode;\n children: ReactNode;\n delay?: number;\n side?: Side;\n}) {\n const [open, set] = useValue<boolean>(undefined, false);\n const id = useId();\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const { anchor, popup } = useFloating(open, () => set(false), { side, align: 'center' });\n const close = () => {\n clearTimeout(timer.current);\n set(false);\n };\n useEffect(() => () => clearTimeout(timer.current), []);\n return (\n <span\n onPointerEnter={() => {\n timer.current = setTimeout(() => set(true), delay);\n }}\n onPointerLeave={close}\n onFocus={() => set(true)}\n onBlur={close}\n >\n <Button asChild ref={anchor} aria-describedby={open ? id : undefined}>\n {children}\n </Button>\n {open && (\n <div ref={popup} id={id} role=\"tooltip\" popover=\"manual\" className=\"bc-floating tooltip\">\n {content}\n </div>\n )}\n </span>\n );\n}\n","import { useEffect, useId, useRef, useState, type HTMLAttributes } from 'react';\nimport {\n createTypeahead,\n cx,\n formReset,\n scrollWithin,\n nextIndex,\n type Option,\n} from '@nuykon/basecoat-core';\nimport { Button } from './Button';\nimport { Input } from './Input';\nimport { useFloating, useValue } from '../hooks';\n\nexport type Selection = string | string[];\n\nexport interface SelectProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'defaultValue' | 'onChange'\n> {\n options: readonly Option[];\n value?: Selection;\n defaultValue?: Selection;\n onValueChange?: (value: Selection) => void;\n multiple?: boolean;\n disabled?: boolean;\n name?: string;\n required?: boolean;\n placeholder?: string;\n label: string;\n searchable?: boolean;\n searchPlaceholder?: string;\n emptyLabel?: string;\n}\n\nexport function Select({\n options,\n value,\n defaultValue,\n onValueChange,\n multiple = false,\n disabled,\n name,\n required,\n placeholder = 'Select…',\n label,\n searchable = false,\n searchPlaceholder = 'Search…',\n emptyLabel = 'No results',\n className,\n ...props\n}: SelectProps) {\n const [current, set] = useValue<Selection>(\n value,\n defaultValue ?? (multiple ? [] : ''),\n onValueChange,\n );\n const [open, setOpen] = useState(false),\n [query, setQuery] = useState(''),\n [active, setActive] = useState(-1);\n const id = useId(),\n list = useRef<HTMLDivElement>(null),\n search = useRef<HTMLInputElement>(null),\n native = useRef<HTMLSelectElement>(null),\n typeahead = useRef(createTypeahead());\n const visible = options.filter(\n (option) => !searchable || option.label.toLocaleLowerCase().includes(query.toLocaleLowerCase()),\n );\n const selected = Array.isArray(current) ? current : [current];\n const close = (restore: boolean) => {\n setOpen(false);\n setQuery('');\n if (restore) anchor.current?.focus();\n };\n const { anchor, popup } = useFloating(open, close, { matchWidth: true });\n useEffect(() => {\n if (disabled) setOpen(false);\n }, [disabled]);\n useEffect(() => {\n if (open) (search.current ?? list.current)?.focus();\n }, [open]);\n useEffect(() => {\n const item = list.current?.querySelector<HTMLElement>(`[data-index=\"${active}\"]`);\n if (list.current && item) scrollWithin(list.current, item);\n }, [active]);\n useEffect(\n () =>\n native.current\n ? formReset(native.current, () => set(defaultValue ?? (multiple ? [] : '')))\n : undefined,\n [defaultValue, multiple, set],\n );\n const choose = (index: number) => {\n const option = visible[index];\n if (!option || option.disabled) return;\n set(\n multiple\n ? selected.includes(option.value)\n ? selected.filter((value) => value !== option.value)\n : [...selected.filter(Boolean), option.value]\n : option.value,\n );\n if (!multiple) close(true);\n };\n const keyboard = (event: React.KeyboardEvent) => {\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n event.preventDefault();\n setActive(nextIndex(visible, active, event.key));\n } else if (event.key === 'Enter' || (!searchable && event.key === ' ')) {\n event.preventDefault();\n choose(active);\n } else if (event.key === 'Tab') close(false);\n else if (\n !searchable &&\n event.key.length === 1 &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey\n ) {\n event.preventDefault();\n setActive(typeahead.current(event.key, visible, active));\n }\n };\n return (\n <div {...props} className={cx(searchable ? 'combobox' : 'select', className)}>\n <Button\n ref={anchor}\n disabled={disabled}\n variant=\"outline\"\n role=\"combobox\"\n aria-label={label}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-controls={`${id}-list`}\n aria-required={required}\n onClick={() => {\n setActive(nextIndex(visible, -1, 'Home'));\n setOpen(!open);\n }}\n onKeyDown={(event) => {\n if (['ArrowDown', 'ArrowUp'].includes(event.key)) {\n event.preventDefault();\n setActive(nextIndex(visible, -1, event.key === 'ArrowUp' ? 'End' : 'Home'));\n setOpen(true);\n }\n }}\n >\n <span>\n {options\n .filter((option) => selected.includes(option.value))\n .map((option) => option.label)\n .join(', ') || placeholder}\n </span>\n <span aria-hidden=\"true\">⌄</span>\n </Button>\n {open && (\n <div ref={popup} data-popover=\"\" popover=\"manual\" className=\"bc-floating\">\n {searchable && (\n <Input\n ref={search}\n className=\"bc-search\"\n value={query}\n role=\"combobox\"\n aria-label={searchPlaceholder}\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n aria-controls={`${id}-list`}\n aria-activedescendant={active >= 0 ? `${id}-option-${active}` : undefined}\n placeholder={searchPlaceholder}\n onChange={(event) => {\n setQuery(event.target.value);\n setActive(\n nextIndex(\n options.filter((option) =>\n option.label\n .toLocaleLowerCase()\n .includes(event.target.value.toLocaleLowerCase()),\n ),\n -1,\n 'Home',\n ),\n );\n }}\n onKeyDown={keyboard}\n />\n )}\n <div\n ref={list}\n id={`${id}-list`}\n role=\"listbox\"\n tabIndex={-1}\n aria-label={label}\n aria-multiselectable={multiple || undefined}\n aria-activedescendant={active >= 0 ? `${id}-option-${active}` : undefined}\n onKeyDown={searchable ? undefined : keyboard}\n data-empty={emptyLabel}\n >\n {visible.map((option, index) => (\n <div\n key={option.value}\n id={`${id}-option-${index}`}\n data-index={index}\n data-value={option.value}\n role=\"option\"\n aria-selected={selected.includes(option.value)}\n aria-disabled={option.disabled || undefined}\n className={index === active ? 'active' : undefined}\n onPointerMove={(event) => {\n if ((event.movementX || event.movementY) && !option.disabled) setActive(index);\n }}\n onPointerDown={(event) => event.preventDefault()}\n onClick={() => choose(index)}\n >\n {option.label}\n </div>\n ))}\n </div>\n </div>\n )}\n <select\n ref={native}\n className=\"bc-form-control\"\n tabIndex={-1}\n aria-hidden=\"true\"\n name={name}\n disabled={disabled}\n required={required}\n multiple={multiple}\n value={current}\n onChange={(event) =>\n set(\n multiple\n ? [...event.target.selectedOptions].map((option) => option.value)\n : event.target.value,\n )\n }\n onInvalid={(event) => {\n event.preventDefault();\n anchor.current?.focus();\n anchor.current?.setAttribute('aria-invalid', 'true');\n }}\n >\n {!multiple && <option value=\"\">{placeholder}</option>}\n {options.map((option) => (\n <option key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n ))}\n </select>\n </div>\n );\n}\n","import { Select, type SelectProps } from './Select';\n\nexport function Combobox(props: SelectProps) {\n return <Select {...props} searchable />;\n}\n","import { useEffect, useId, useRef, type HTMLAttributes, type ReactNode } from 'react';\nimport {\n createTypeahead,\n cx,\n nextIndex,\n type MenuItem,\n type Align,\n type Side,\n} from '@nuykon/basecoat-core';\nimport { Button } from './Button';\nimport { useFloating, useValue } from '../hooks';\n\nexport interface DropdownMenuProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onChange' | 'onSelect'\n> {\n items: readonly MenuItem[];\n trigger: ReactNode;\n onSelect?: (value: string) => void;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: Side;\n align?: Align;\n label?: string;\n}\n\nexport function DropdownMenu({\n items,\n trigger,\n onSelect,\n open,\n defaultOpen = false,\n onOpenChange,\n side,\n align,\n label = 'Menu',\n className,\n ...props\n}: DropdownMenuProps) {\n const [current, set] = useValue(open, defaultOpen, onOpenChange);\n const refs = useRef<(HTMLElement | null)[]>([]),\n id = useId(),\n initialKey = useRef('Home'),\n typeahead = useRef(createTypeahead());\n const enabled = items.map((item) => ({ ...item, disabled: item.disabled || item.separator }));\n const { anchor, popup } = useFloating(\n current,\n (restore) => {\n set(false);\n if (restore) anchor.current?.focus();\n },\n { side, align },\n );\n useEffect(() => {\n if (current) refs.current[nextIndex(enabled, -1, initialKey.current)]?.focus();\n }, [current]);\n return (\n <div {...props} className={cx('dropdown-menu', className)}>\n <Button\n ref={anchor}\n variant=\"outline\"\n aria-haspopup=\"menu\"\n aria-controls={id}\n aria-expanded={current}\n onClick={() => {\n initialKey.current = 'Home';\n set(!current);\n }}\n onKeyDown={(event) => {\n if (['ArrowDown', 'ArrowUp'].includes(event.key)) {\n event.preventDefault();\n initialKey.current = event.key === 'ArrowUp' ? 'End' : 'Home';\n set(true);\n }\n }}\n >\n {trigger}\n </Button>\n {current && (\n <div ref={popup} data-popover=\"\" popover=\"manual\" className=\"bc-floating\">\n <div id={id} role=\"menu\" aria-label={label}>\n {items.map((item, index) =>\n item.separator ? (\n <hr key={item.value} role=\"separator\" />\n ) : (\n <Button\n key={item.value}\n as={item.href ? 'a' : 'button'}\n {...(item.href ? { href: item.href } : {})}\n ref={(el) => {\n refs.current[index] = el;\n }}\n role=\"menuitem\"\n tabIndex={-1}\n aria-disabled={item.disabled || undefined}\n disabled={!item.href && item.disabled}\n variant=\"ghost\"\n onClick={(event) => {\n if (item.disabled) {\n event.preventDefault();\n return;\n }\n item.onSelect?.();\n onSelect?.(item.value);\n set(false);\n anchor.current?.focus();\n }}\n onKeyDown={(event) => {\n if (['ArrowUp', 'ArrowDown', 'Home', 'End'].includes(event.key)) {\n event.preventDefault();\n refs.current[nextIndex(enabled, index, event.key)]?.focus();\n } else if (event.key === 'Tab') set(false);\n else if (event.key.length === 1 && !event.ctrlKey && !event.metaKey) {\n refs.current[typeahead.current(event.key, enabled, index)]?.focus();\n }\n }}\n >\n {item.label}\n {item.shortcut && <kbd data-shortcut=\"\">{item.shortcut}</kbd>}\n </Button>\n ),\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { useId, useState } from 'react';\nimport { nextIndex, type MenuItem } from '@nuykon/basecoat-core';\nimport { Input } from './Input';\n\nexport function Command({\n items,\n onSelect,\n label = 'Commands',\n placeholder = 'Search commands…',\n emptyLabel = 'No results',\n}: {\n items: readonly MenuItem[];\n onSelect?: (value: string) => void;\n label?: string;\n placeholder?: string;\n emptyLabel?: string;\n}) {\n const [query, setQuery] = useState(''),\n [active, setActive] = useState(0);\n const id = useId();\n const visible = items.filter(\n (item) => !item.separator && item.label.toLocaleLowerCase().includes(query.toLocaleLowerCase()),\n );\n const choose = (index: number) => {\n const item = visible[index];\n if (item && !item.disabled) {\n item.onSelect?.();\n onSelect?.(item.value);\n }\n };\n return (\n <div className=\"command\">\n <header>\n <Input\n role=\"combobox\"\n aria-label={label}\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n aria-controls={id}\n aria-activedescendant={visible[active] ? `${id}-${active}` : undefined}\n value={query}\n placeholder={placeholder}\n onChange={(event) => {\n setQuery(event.target.value);\n setActive(0);\n }}\n onKeyDown={(event) => {\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n event.preventDefault();\n setActive(nextIndex(visible, active, event.key));\n } else if (event.key === 'Enter') {\n event.preventDefault();\n choose(active);\n }\n }}\n />\n </header>\n <div id={id} role=\"listbox\" aria-label={label}>\n {visible.map((item, index) => (\n <div\n key={item.value}\n id={`${id}-${index}`}\n role=\"option\"\n aria-selected={index === active}\n aria-disabled={item.disabled || undefined}\n className={index === active ? 'active' : undefined}\n onPointerMove={(event) => {\n if ((event.movementX || event.movementY) && !item.disabled) setActive(index);\n }}\n onClick={() => choose(index)}\n >\n {item.label}\n </div>\n ))}\n {!visible.length && <p role=\"status\">{emptyLabel}</p>}\n </div>\n </div>\n );\n}\n","import { Button } from './Button';\n\nexport function Pagination({\n page,\n count,\n onPageChange,\n label = 'Pagination',\n}: {\n page: number;\n count: number;\n onPageChange: (page: number) => void;\n label?: string;\n}) {\n const total = Math.max(1, Math.floor(count));\n const current = Math.max(1, Math.min(page, total));\n return (\n <nav className=\"bc-pagination\" aria-label={label}>\n <Button\n variant=\"outline\"\n disabled={current === 1}\n aria-label=\"Previous page\"\n onClick={() => onPageChange(current - 1)}\n >\n ‹\n </Button>\n <span aria-live=\"polite\">\n {current} / {total}\n </span>\n <Button\n variant=\"outline\"\n disabled={current === total}\n aria-label=\"Next page\"\n onClick={() => onPageChange(current + 1)}\n >\n ›\n </Button>\n </nav>\n );\n}\n","import { type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '@nuykon/basecoat-core';\nimport { Button } from './Button';\nimport { useValue } from '../hooks';\n\nexport function Sidebar({\n collapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n children,\n label = 'Navigation',\n className,\n ...props\n}: HTMLAttributes<HTMLElement> & {\n collapsed?: boolean;\n defaultCollapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n label?: string;\n children: ReactNode;\n}) {\n const [current, set] = useValue(collapsed, defaultCollapsed, onCollapsedChange);\n return (\n <aside {...props} className={cx('bc-sidebar', className)} data-collapsed={current}>\n <Button\n variant=\"ghost\"\n aria-label={current ? 'Expand sidebar' : 'Collapse sidebar'}\n aria-expanded={!current}\n onClick={() => set(!current)}\n >\n ☰\n </Button>\n <nav aria-label={label}>{children}</nav>\n </aside>\n );\n}\n","import { Button } from './Button';\nimport { useValue } from '../hooks';\n\nexport function ThemeSwitcher({\n value,\n defaultValue = 'light',\n onValueChange,\n label = 'Dark mode',\n}: {\n value?: 'light' | 'dark';\n defaultValue?: 'light' | 'dark';\n onValueChange?: (theme: 'light' | 'dark') => void;\n label?: string;\n}) {\n const [current, set] = useValue(value, defaultValue, onValueChange);\n return (\n <Button\n variant=\"outline\"\n role=\"switch\"\n aria-label={label}\n aria-checked={current === 'dark'}\n onClick={() => set(current === 'dark' ? 'light' : 'dark')}\n >\n {current === 'dark' ? '☾' : '☀'}\n </Button>\n );\n}\n","import { useEffect, useRef } from 'react';\nimport { type ToastMessage } from '@nuykon/basecoat-core';\nimport { Button } from './Button';\n\nexport function Toast({ message, dismiss }: { message: ToastMessage; dismiss: () => void }) {\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined),\n remaining = useRef(message.duration ?? 5000),\n started = useRef(0),\n latest = useRef(dismiss);\n latest.current = dismiss;\n const pause = () => {\n clearTimeout(timer.current);\n if (started.current)\n remaining.current = Math.max(0, remaining.current - (Date.now() - started.current));\n started.current = 0;\n };\n const resume = () => {\n if ((message.duration ?? 5000) <= 0 || started.current) return;\n started.current = Date.now();\n timer.current = setTimeout(() => latest.current(), remaining.current);\n };\n useEffect(() => {\n resume();\n return pause;\n }, [message.id]);\n return (\n <div\n className=\"toast\"\n data-variant={message.variant}\n onPointerEnter={pause}\n onPointerLeave={resume}\n onFocus={pause}\n onBlur={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) resume();\n }}\n >\n <div className=\"toast-content\">\n <section>\n <h2>{message.title}</h2>\n {message.description && <p>{message.description}</p>}\n </section>\n <footer>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Dismiss notification\"\n onClick={dismiss}\n >\n ×\n </Button>\n </footer>\n </div>\n </div>\n );\n}\n","import { type ToastMessage } from '@nuykon/basecoat-core';\nimport { Toast } from './Toast';\n\nexport function Toaster({\n messages,\n onDismiss,\n label = 'Notifications',\n}: {\n messages: readonly ToastMessage[];\n onDismiss: (id: string) => void;\n label?: string;\n}) {\n return (\n <section className=\"toaster\" aria-label={label}>\n <div className=\"bc-live\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\n {messages.at(-1)?.title}\n </div>\n {messages.map((message) => (\n <Toast key={message.id} message={message} dismiss={() => onDismiss(message.id)} />\n ))}\n </section>\n );\n}\n","import { useId } from 'react';\nimport { type ChartPoint } from '@nuykon/basecoat-core';\n\nexport function Chart({\n data,\n label,\n kind = 'line',\n}: {\n data: readonly ChartPoint[];\n label: string;\n kind?: 'line' | 'bar';\n}) {\n const id = useId();\n const finite = data.map((point) => (Number.isFinite(point.value) ? point.value : 0)),\n min = Math.min(0, ...finite),\n max = Math.max(1, ...finite),\n span = max - min;\n const y = (value: number) => 180 - ((value - min) / span) * 160;\n return (\n <figure className=\"chart\">\n <svg className=\"bc-chart\" viewBox=\"0 0 400 200\" role=\"img\" aria-labelledby={id}>\n <title id={id}>{label}</title>\n {kind === 'line' ? (\n <polyline\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n points={finite\n .map(\n (value, index) =>\n `${20 + (index / Math.max(1, data.length - 1)) * 360},${y(value)}`,\n )\n .join(' ')}\n />\n ) : (\n finite.map((value, index) => (\n <rect\n key={index}\n x={20 + (index / Math.max(1, data.length)) * 360}\n y={Math.min(y(0), y(value))}\n width={Math.max(1, 360 / Math.max(1, data.length) - 8)}\n height={Math.abs(y(value) - y(0))}\n fill=\"currentColor\"\n />\n ))\n )}\n </svg>\n <figcaption>{label}</figcaption>\n <table className=\"bc-live\">\n <caption>{label}</caption>\n <tbody>\n {data.map((point, index) => (\n <tr key={index}>\n <th scope=\"row\">{point.label}</th>\n <td>{point.value}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </figure>\n );\n}\n"],"mappings":"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","names":["cx","x","y","stacks","kind","item","import_react","import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","value","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime"]}
|