From 910c6ab3c75a01f7c80875d467f94fdba438690e Mon Sep 17 00:00:00 2001 From: natxocc Date: Sat, 25 Apr 2026 11:24:39 +0200 Subject: [PATCH] Before repair nav components --- components/All.js | 735 ++++++++ components/Autocomplete.js | 92 - components/Editor.js | 145 ++ components/Input.js | 60 - components/InputBase.js | 58 - components/{ => discarted}/Accordion.js | 0 components/{ => discarted}/Alert.js | 0 components/discarted/Autocomplete.js | 61 + components/{ => discarted}/Badge.js | 0 components/{ => discarted}/Calendar.js | 0 components/{ => discarted}/Datepicker.js | 0 components/discarted/Input.js | 46 + components/discarted/Select.js | 30 + components/{toast.js => discarted/Toast.js} | 0 components/{ => discarted}/_core.js | 1 + components/{ => discarted}/button.js | 0 components/{ => discarted}/card.js | 0 components/{ => discarted}/carousel.js | 0 components/{ => discarted}/chat.js | 0 components/{ => discarted}/checkbox.js | 0 components/{ => discarted}/colorpicker.js | 0 components/{ => discarted}/divider.js | 0 components/{ => discarted}/drawer.js | 0 components/{ => discarted}/dropdown.js | 0 components/{ => discarted}/fab.js | 0 components/{ => discarted}/fieldset.js | 0 components/{ => discarted}/fileinput.js | 3 +- components/{ => discarted}/icon.js | 0 components/{ => discarted}/indicator.js | 0 components/{ => discarted}/kbd.js | 0 components/{ => discarted}/loading.js | 0 components/{ => discarted}/menu.js | 0 components/{ => discarted}/modal.js | 0 components/{ => discarted}/navbar.js | 0 components/{ => discarted}/radial.js | 0 components/{ => discarted}/radio.js | 0 components/{ => discarted}/range.js | 0 components/{ => discarted}/rating.js | 0 components/{ => discarted}/skeleton.js | 0 components/{ => discarted}/stack.js | 0 components/{ => discarted}/stat.js | 0 components/{ => discarted}/steps.js | 0 components/{ => discarted}/swap.js | 0 components/{ => discarted}/table.js | 0 components/{ => discarted}/tabs.js | 0 components/{ => discarted}/textarea.js | 0 components/{ => discarted}/textrotate.js | 0 components/{ => discarted}/timeline.js | 0 components/{ => discarted}/toggle.js | 0 components/discarted/tooltip.js | 4 + components/select.js | 34 - components/tooltip.js | 7 - dist/sigpro-ui.css | 352 +++- dist/sigpro-ui.esm.js | 1835 ++++++++----------- dist/sigpro-ui.esm.min.js | 2 +- dist/sigpro-ui.js | 1835 ++++++++----------- dist/sigpro-ui.min.css | 2 +- dist/sigpro-ui.min.js | 2 +- docs/_sidebar.md | 43 +- docs/components/autocomplete.md | 111 +- docs/demo_display.md | 100 + docs/demo_editor.md | 19 + docs/demo_forms.md | 181 ++ docs/demo_layout.md | 201 ++ docs/demo_overlay.md | 84 + docs/index.html | 19 +- docs/quick.md | 743 ++++++-- docs/sigpro-ui.min.css | 2 +- docs/sigpro-ui.min.js | 2 +- index.js | 172 +- sigpro.css | 98 +- 71 files changed, 4260 insertions(+), 2819 deletions(-) create mode 100644 components/All.js delete mode 100644 components/Autocomplete.js create mode 100644 components/Editor.js delete mode 100644 components/Input.js delete mode 100644 components/InputBase.js rename components/{ => discarted}/Accordion.js (100%) rename components/{ => discarted}/Alert.js (100%) create mode 100644 components/discarted/Autocomplete.js rename components/{ => discarted}/Badge.js (100%) rename components/{ => discarted}/Calendar.js (100%) rename components/{ => discarted}/Datepicker.js (100%) create mode 100644 components/discarted/Input.js create mode 100644 components/discarted/Select.js rename components/{toast.js => discarted/Toast.js} (100%) rename components/{ => discarted}/_core.js (99%) rename components/{ => discarted}/button.js (100%) rename components/{ => discarted}/card.js (100%) rename components/{ => discarted}/carousel.js (100%) rename components/{ => discarted}/chat.js (100%) rename components/{ => discarted}/checkbox.js (100%) rename components/{ => discarted}/colorpicker.js (100%) rename components/{ => discarted}/divider.js (100%) rename components/{ => discarted}/drawer.js (100%) rename components/{ => discarted}/dropdown.js (100%) rename components/{ => discarted}/fab.js (100%) rename components/{ => discarted}/fieldset.js (100%) rename components/{ => discarted}/fileinput.js (99%) rename components/{ => discarted}/icon.js (100%) rename components/{ => discarted}/indicator.js (100%) rename components/{ => discarted}/kbd.js (100%) rename components/{ => discarted}/loading.js (100%) rename components/{ => discarted}/menu.js (100%) rename components/{ => discarted}/modal.js (100%) rename components/{ => discarted}/navbar.js (100%) rename components/{ => discarted}/radial.js (100%) rename components/{ => discarted}/radio.js (100%) rename components/{ => discarted}/range.js (100%) rename components/{ => discarted}/rating.js (100%) rename components/{ => discarted}/skeleton.js (100%) rename components/{ => discarted}/stack.js (100%) rename components/{ => discarted}/stat.js (100%) rename components/{ => discarted}/steps.js (100%) rename components/{ => discarted}/swap.js (100%) rename components/{ => discarted}/table.js (100%) rename components/{ => discarted}/tabs.js (100%) rename components/{ => discarted}/textarea.js (100%) rename components/{ => discarted}/textrotate.js (100%) rename components/{ => discarted}/timeline.js (100%) rename components/{ => discarted}/toggle.js (100%) create mode 100644 components/discarted/tooltip.js delete mode 100644 components/select.js delete mode 100644 components/tooltip.js create mode 100644 docs/demo_display.md create mode 100644 docs/demo_editor.md create mode 100644 docs/demo_forms.md create mode 100644 docs/demo_layout.md create mode 100644 docs/demo_overlay.md diff --git a/components/All.js b/components/All.js new file mode 100644 index 0000000..3a089df --- /dev/null +++ b/components/All.js @@ -0,0 +1,735 @@ +// All base components +import { h, each, watch, when, fx, mount, $ } from "sigpro"; + +// Helpers +export const get = val => typeof val === "function" ? val() : val; +export const getBy = (item, field = 'label') => (item && typeof item === 'object') ? item[field] : item; +export const cls = (...classes) => classes.filter(Boolean).join(' ').trim(); +export const isFn = f => typeof f === "function"; +export const filterBy = (items, query, field = 'label') => { + const searchTerm = String(query).toLowerCase(); + const list = get(items); + return !searchTerm ? list : list.filter(item => { + const text = (item && typeof item === 'object') ? item[field] : item; + return String(text).toLowerCase().includes(searchTerm); + }); +}; +export const listKey = (items, isOpen) => { + const cursor = $(-1); + watch(() => { if (!get(isOpen)) cursor(-1) }); + const onKey = (e, select) => { + const list = get(items), i = cursor(), len = list.length; + if (!len) return; + const k = e.key; + k === 'ArrowDown' ? (e.preventDefault(), isOpen(true), cursor(Math.min(i + 1, len - 1))) : + k === 'ArrowUp' ? (e.preventDefault(), cursor(Math.max(i - 1, 0))) : + k === 'Enter' ? (i >= 0 && (e.preventDefault(), select(list[i]))) : + k === 'Escape' ? isOpen(false) : null; + }; + return { cursor, onKey }; +}; + +export const Alert = (p, c) => h("div", { ...p, class: cls("alert", p.class) }, c); +export const Badge = (p, c) => h("span", { ...p, class: cls("badge", p.class) }, c); +export const Button = (p, c) => h("button", { ...p, class: cls("btn", p.class) }, c); +export const Card = (p, c) => h("div", { ...p, class: cls("card", p.class) }, c); +export const CardTitle = (p, c) => h("div", { ...p, class: cls("card-title", p.class) }, c); +export const CardBody = (p, c) => h("div", { ...p, class: cls("card-body", p.class) }, c); +export const CardActions = (p, c) => h("div", { ...p, class: cls("card-actions", p.class) }, c); +export const Carousel = (p, c) => h("div", { ...p, class: cls("carousel", p.class) }, c); +export const CarouselItem = (p, c) => h("div", { ...p, class: cls("carousel-item", p.class) }, c); +export const Chat = (p, c) => h("div", { ...p, class: cls("chat", p.class) }, c); +export const ChatBubble = (p, c) => h("div", { ...p, class: cls("chat-bubble", p.class) }, c); +export const ChatFooter = (p, c) => h("div", { ...p, class: cls("chat-footer", p.class) }, c); +export const ChatHeader = (p, c) => h("div", { ...p, class: cls("chat-header", p.class) }, c); +export const ChatImage = (p, c) => h("div", { ...p, class: cls("chat-image avatar", p.class) }, h("div", { class: "w-10 rounded-full" }, typeof c === "string" ? h("img", { src: c, alt: "avatar" }) : c)); +export const Checkbox = (p) => h("input", { ...p, type: "checkbox", class: cls("checkbox", p.class) }); +export const Divider = (p) => h("div", { ...p, class: cls("divider", p.class) }); +export const Fab = (p, c) => h("div", { ...p, class: cls("fab", p.class) }, c); +export const Fieldset = (p, c) => h("fieldset", { ...p, class: cls("fieldset", p.class) }, [p.legend && h("legend", { class: "fieldset-legend" }, p.legend), c]); +export const Icon = (p) => h("span", { class: p.startsWith("icon-") ? p : "" }, p.startsWith("icon-") ? null : p); +export const Indicator = (p, c) => h("div", { ...p, class: cls("indicator", p.class) }, [p.value && h("span", { class: cls("indicator-item badge", p.class) }, p.value), c]); +export const Kbd = (p, c) => h("kbd", { ...p, class: cls("kbd", p.class) }, c); +export const Loading = (p, c) => h("span", { ...p, class: cls("loading loading-spinner", p.class) }, c); +export const Navbar = (p, c) => h("div", { ...p, class: cls("navbar", p.class) }, c); +export const Progress = (p) => h("progress", { ...p, class: cls("progress", p.class) }); +export const Radial = (p, c) => h("div", { ...p, class: cls("radial-progress", p.class), style: `--value:${p.value ?? 0};${p.style ?? ''}`, role: "progressbar", "aria-valuenow": p.value ?? 0 }, c ?? `${p.value ?? 0}%`) +export const Radio = (p) => h("input", { ...p, type: "radio", class: cls("radio", p.class) }); +export const Range = (p) => h("input", { ...p, type: "range", class: cls("range", p.class) }); +export const Skeleton = (p) => h("div", { ...p, class: cls("skeleton", p.class) }); +export const SkeletonText = (p) => h("span", { ...p, class: cls("skeleton skeleton-text", p.class) }); +export const Stack = (p, c) => h("div", { ...p, class: cls("stack", p.class) }, c); +export const Steps = (p, c) => h("ul", { ...p, class: cls("steps", p.class) }, c); +export const Step = (p, c) => h("li", { ...p, class: cls("step", p.class), "data-content": p.dataContent }, c); +export const Swap = (p) => h("label", { ...p, class: cls("swap", p.class) }, [ + h("input", { type: "checkbox", checked: () => get(p.value), onchange: (e) => isFn(p.value) && p.value(e.target.checked) }), + h("div", { class: "swap-on" }, p.on), + h("div", { class: "swap-off" }, p.off) +]); +export const Textarea = (p) => h("textarea", { ...p, class: cls("textarea", p.class) }); +export const TextRotate = (p) => { + const words = Array.isArray(p.words) ? p.words : (typeof p.words === 'string' ? p.words.split(',') : []); + return h("span", { ...p, class: cls("text-rotate", p.class) }, h("span", {}, words.map(w => h("span", {}, w)))); +}; +export const Timeline = (p, c) => h("ul", { + ...p, + class: cls("timeline", + p.vertical !== false ? 'timeline-vertical' : 'timeline-horizontal', + p.compact ? 'timeline-compact' : '', + p.class + ) +}, c); +export const Toggle = (p) => h("input", { ...p, type: "checkbox", class: cls("toggle", p.class) }); +export const Tooltip = (p, c) => h("div", { ...p, class: cls("tooltip", p.class), "data-tip": p.tip }, c); + + +// Complex Components + +// Accordion +export const Accordion = (p) => { + const name = p.name || `acc-${Math.random().toString(36).slice(2)}` + const base = cls('collapse', p.variant && `collapse-${p.variant}`, p.class) + const itemFn = (it) => { + const t = getBy(it, 'title') + const c = it.content + return p.type === 'details' + ? h('details', { class: base, name, open: it.open || undefined }, + h('summary', { class: 'collapse-title font-semibold' }, t), + c ? h('div', { class: 'collapse-content text-sm' }, c) : null) + : h('div', { class: base }, + h('input', { type: 'radio', name, checked: it.open || undefined }), + h('div', { class: 'collapse-title font-semibold' }, t), + c ? h('div', { class: 'collapse-content text-sm' }, c) : null) + } + return isFn(p.items) ? each(p.items, itemFn, (it, i) => it?.id ?? i) : (p.items || []).map(itemFn) +} + +// Table +export const Table = (p) => { + if (p.children !== undefined) return h('table', { class: cls('table', p.class), ...p }, p.children) + const { items, columns = [], header = true, keyFn, ...rest } = p + const hd = header !== false && columns.some(c => c.label) ? h('thead', {}, h('tr', {}, columns.map(c => h('th', { class: c.class }, c.label)))) : null + const bd = h('tbody', {}, each( + () => get(items) || [], + (it, idx) => h('tr', {}, columns.map(c => { + const v = c.render ? c.render(it, idx) : it[c.key] + return h('td', { class: c.class }, v) + })), + keyFn || ((it, idx) => it?.id ?? idx) + )) + return h('table', { class: cls('table', rest.class), ...rest }, [hd, bd]) +} + +// Tabs +export const Tabs = (p) => { + if (p.children !== undefined) return h('div', { class: cls('tabs', p.class), ...p }, p.children) + const { items, activeIndex, onClose, ...rest } = p + const closeHandler = onClose || (isFn(items) ? (idx) => { + const arr = get(items) + const newArr = arr.filter((_, i) => i !== idx) + items(newArr) + if (activeIndex() >= newArr.length) activeIndex(Math.max(0, newArr.length - 1)) + } : null) + + return h('div', { class: cls('tabs', p.class), ...rest }, + each( + () => get(items) || [], + (it, idx) => { + const act = () => activeIndex() === idx + return [ + h('a', { + role: 'tab', + class: () => `tab ${act() ? 'tab-active' : ''} ${it.class || ''}`, + onclick: (e) => { e.preventDefault(); activeIndex(idx); it.onclick?.(e) } + }, getBy(it), it.closable ? h('span', { + class: 'icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70', + onclick: (e) => { e.stopPropagation(); closeHandler?.(idx) } + }) : null), + h('div', { + class: `tab-content ${it.contentClass || ''}`, + style: () => `display: ${act() ? 'block' : 'none'};` + }, isFn(it.content) ? it.content() : it.content) + ] + }, + (it, idx) => it.id ?? idx + ) + ) +} + +// Rating +export const Rating = (p) => { + const name = `rating-${Math.random().toString(36).slice(2, 7)}` + const stars = p.children ?? Array.from({ length: p.count || 5 }, (_, i) => { + const v = i + 1 + return h('input', { + type: 'radio', + name, + class: cls('mask', p.mask || 'mask-star'), + checked: () => get(p.value) === v, + onchange: () => isFn(p.value) ? p.value(v) : p.onchange?.(v) + }) + }) + return h('div', { class: cls('rating', p.class), ...p }, stars) +} + +// Menu +export const Menu = (p) => { + if (p.children !== undefined) return h('ul', { class: cls('menu', p.class), ...p }, p.children) + const { items, keyFn = (it, idx) => it?.id ?? idx, ...rest } = p + const render = (item) => item.children + ? h('li', {}, h('details', {}, h('summary', {}, getBy(item)), h('ul', {}, Menu({ items: item.children })))) + : h('li', {}, h('a', { + href: item.href, + onclick: item.onclick ? (e) => { if (!item.href) e.preventDefault(); item.onclick(e) } : null + }, getBy(item))) + return h('ul', { class: cls('menu', rest.class), ...rest }, + each(() => get(items) || [], render, keyFn) + ) +} + +//Drawer +export const Drawer = (p, c) => { + const id = p.id || `drawer-${Math.random().toString(36).slice(2, 9)}` + return h('div', { class: cls('drawer', p.class) }, [ + h('input', { + id, + type: 'checkbox', + class: 'drawer-toggle', + checked: () => get(p.open), + onchange: (e) => isFn(p.open) && p.open(e.target.checked) + }), + h('div', { class: 'drawer-content' }, c), + h('div', { class: 'drawer-side' }, [ + h('label', { + for: id, + class: 'drawer-overlay', + onclick: () => isFn(p.open) && p.open(false) + }), + h('div', { class: 'min-h-full bg-base-200 w-80 p-4' }, () => get(p.side)) + ]) + ]) +} + +//Dropdown +export const Dropdown = (p, c) => { + const { trigger, items, ...rest } = p + const content = c || (items ? h('ul', { + class: 'menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow' + }, each( + () => get(items) || [], + (item) => h('li', {}, + h('a', { + onclick: (e) => { + item.onclick?.(e) + e.currentTarget.closest('details').open = false + } + }, getBy(item)) + ), + (it, idx) => it.id ?? idx + )) : null) + + return h('details', { class: cls('dropdown', rest.class), ...rest }, [ + h('summary', { class: 'btn m-1' }, trigger || 'Dropdown'), + content + ]) +} + +//Select +export const Select = (p, c) => { + if (c !== undefined) return h('select', { class: cls('select', p.class), ...p }, c) + + const { label, float, placeholder, placeholderDisabled = true, value, left, right, hint, items, keyFn, ...rest } = p + + const opts = () => { + const raw = get(items) || [] + const ph = placeholder ? [{ disabled: placeholderDisabled, label: placeholder, value: '' }] : [] + return [...ph, ...raw] + } + + return h('label', { class: float ? 'floating-label' : '' }, [ + float && h('span', {}, label), + h('label', { class: cls('select', rest.class) }, [ + label && !float && h('span', { class: 'label' }, label), + left ?? null, + h('select', { + value: () => get(value), + onchange: (e) => isFn(value) ? value(e.target.value) : rest.onchange?.(e) + }, + each(opts, (item) => { + const val = getBy(item, item.value !== undefined ? 'value' : undefined) + const lab = getBy(item, 'label') + return h('option', { value: val, disabled: item.disabled || undefined }, lab) + }, (it, i) => it?.id ?? (typeof it === 'string' ? it : it.value) ?? i) + ), + right ?? null + ]), + hint && h('div', { class: 'validator-hint' }, hint) + ]) +} + +// Autocomplete +export const Autocomplete = ({ items, value, onselect, placeholder = 'Buscar...', ...props }) => { + const query = $(get(value) || ''); + const isOpen = $(false); + const filtered = $(() => filterBy(items, query())); + const { cursor, onKey } = listKey(filtered, isOpen); + + const pick = (item) => { + const display = getBy(item); + const actual = typeof item === 'string' ? item : item.value; + query(display); + if (isFn(value)) value(actual); + onselect?.(item); + isOpen(false); + }; + + return h('div', { class: 'relative w-full' }, [ + Input({ + ...props, + type: 'text', + placeholder, + value: query, + left: h('span', { class: 'icon-[lucide--search]' }), + oninput: (e) => { + query(e.target.value); + if (isFn(value)) value(e.target.value); + isOpen(true); + }, + onfocus: () => isOpen(true), + onblur: () => setTimeout(() => isOpen(false), 150), + onkeydown: (e) => onKey(e, pick) + }), + + when(isOpen, () => + fx({ duration: 200, slide: true }, + h('ul', { + class: 'absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap' + }, [ + each(filtered, (item, idx) => + h('li', {}, [ + h('a', { + class: () => cursor() === idx ? 'active bg-primary text-primary-content' : '', + onmousedown: (e) => e.preventDefault(), // evita que el blur cierre antes del click + onclick: () => pick(item), + onmouseenter: () => cursor(idx) + }, getBy(item)) + ]), + (item, idx) => getBy(item) + idx + ), + () => filtered().length === 0 + ? h('li', { class: 'p-4 opacity-50 text-center' }, 'Sin resultados') + : null + ]) + ) + ) + ]); +}; + +//Input +export const Input = (p) => { + const { label, icon, float, placeholder, value, left, right, rule, hint, content, ...rest } = p; + + const showPassword = $(false); + const isFocused = $(false); + const isPassword = p.type === 'password'; + const pattern = rule ?? null; + + const inputType = () => isPassword + ? (get(showPassword) ? 'text' : 'password') + : (p.type || 'text'); + + return h("div", { + class: "input-container", + onfocusin: () => isFocused(true), + onfocusout: (e) => { + if (!e.currentTarget.contains(e.relatedTarget)) { isFocused(false); } + } + }, [ + h('label', { class: float ? 'floating-label' : '' }, [ + float ? h("span", {}, label) : null, + h("label", { pattern: pattern, class: () => cls('input validator', p.class) }, + [ + label && !float ? h('span', { class: 'label' }, label) : null, + left ?? null, + h('input', { ...rest, type: inputType, class: 'grow', pattern: pattern, placeholder: placeholder || label || ' ', value: value }), right ?? null, + isPassword ? h('label', { class: 'swap swap-rotate ml-2' }, [ + h('input', { type: 'checkbox', onchange: (e) => showPassword(e.target.checked) }), + h('span', { class: 'swap-on icon-[lucide--eye]' }), + h('span', { class: 'swap-off icon-[lucide--eye-off]' }) + ]) : null + ]), + hint ? h('div', { class: "validator-hint" }, hint) : null, + + when(isFocused, () => fx({ duration: 300, slide: true }, + h('div', { class: 'input-content', onmousedown: e => e.preventDefault() }, + [ + isFn(content) ? content(isFocused) : content + ]) + )) + ]), + ]); +}; + +//Colorpicker +export const Colorpicker = (p) => { + const isOpen = $(false) + const current = () => get(p.value) || '#000000' + + const palette = [ + '#000', '#1A1A1A', '#333', '#4D4D4D', '#666', '#808080', '#B3B3B3', '#FFF', + '#450a0a', '#7f1d1d', '#991b1b', '#b91c1c', '#dc2626', '#ef4444', '#f87171', '#fca5a5', + '#431407', '#7c2d12', '#9a3412', '#c2410c', '#ea580c', '#f97316', '#fb923c', '#ffedd5', + '#713f12', '#a16207', '#ca8a04', '#eab308', '#facc15', '#fde047', '#fef08a', '#fff9c4', + '#064e3b', '#065f46', '#059669', '#10b981', '#34d399', '#4ade80', '#84cc16', '#d9f99d', + '#082f49', '#075985', '#0284c7', '#0ea5e9', '#38bdf8', '#7dd3fc', '#22d3ee', '#cffafe', + '#1e1b4b', '#312e81', '#4338ca', '#4f46e5', '#6366f1', '#818cf8', '#a5b4fc', '#e0e7ff', + '#2e1065', '#4c1d95', '#6d28d9', '#7c3aed', '#8b5cf6', '#a855f7', '#d946ef', '#fae8ff' + ] + + const pick = (c) => { isFn(p.value) ? p.value(c) : p.onchange?.(c); isOpen(false) } + + return h('div', { class: cls('relative w-fit', p.class) }, [ + h('button', { + type: 'button', + class: 'btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case', + onclick: (e) => { e.stopPropagation(); isOpen(!isOpen()) } + }, [ + h('div', { class: 'size-5 rounded-sm shadow-inner border border-black/10 shrink-0', style: () => `background-color: ${current()}` }), + p.label && h('span', { class: 'opacity-80' }, p.label) + ]), + + when(isOpen, () => [ + h('div', { + class: 'fixed inset-0 z-[100]', + onclick: () => isOpen(false) + }), + h('div', { class: 'absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none' }, + h('div', { class: 'grid grid-cols-8 gap-1' }, + palette.map(c => + h('button', { + type: 'button', + style: `background-color: ${c}`, + class: () => { + const act = current().toLowerCase() === c.toLowerCase() + return `size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${act ? 'ring-2 ring-offset-1 ring-primary z-10 scale-110' : ''}` + }, + onclick: () => pick(c) + }) + ) + ) + ) + ]) + ]) +} + +// Calendar +export const Calendar = (p) => { + const internalDate = $(new Date()) + const hoverDate = $(null) + const startHour = $(0) + const endHour = $(0) + + const now = new Date() + const todayStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}` + + const fmt = d => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}` + const rangeMode = () => get(p.range) === true + const current = () => get(p.value) + + const selectDate = (date) => { + const s = fmt(date) + const v = current() + if (rangeMode()) { + if (!v?.start || (v.start && v.end)) { + p.onChange?.({ start: s, end: null, ...(p.hour && { startHour: startHour() }) }) + } else { + const start = v.start + const nv = s < start ? { start: s, end: start } : { start, end: s } + if (p.hour) { nv.startHour = v.startHour ?? startHour(); nv.endHour = endHour() } + p.onChange?.(nv) + } + } else { + p.onChange?.(p.hour ? `${s}T${String(startHour()).padStart(2, '0')}:00:00` : s) + } + } + + const move = (m) => { const d = internalDate(); internalDate(new Date(d.getFullYear(), d.getMonth() + m, 1)) } + const moveYear = (y) => { const d = internalDate(); internalDate(new Date(d.getFullYear() + y, d.getMonth(), 1)) } + + const HourSlider = ({ value: hVal, onChange: onH }) => h('div', { class: 'flex-1' }, [ + h('div', { class: 'flex gap-2 items-center' }, [ + h('input', { type: 'range', min: 0, max: 23, value: hVal, class: 'range range-xs flex-1', oninput: e => onH(+e.target.value) }), + h('span', { class: 'text-sm font-mono min-w-[48px] text-center' }, () => String(get(hVal)).padStart(2, '0') + ':00') + ]) + ]) + + return h('div', { class: cls('p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none', p.class) }, [ + h('div', { class: 'flex justify-between items-center mb-4 gap-1' }, [ + h('div', { class: 'flex gap-0.5' }, [ + h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => moveYear(-1) }, h('span', { class: 'icon-[lucide--chevrons-left]' })), + h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => move(-1) }, h('span', { class: 'icon-[lucide--chevron-left]' })) + ]), + h('span', { class: 'font-bold uppercase flex-1 text-center' }, () => internalDate().toLocaleString('es-ES', { month: 'short', year: 'numeric' })), + h('div', { class: 'flex gap-0.5' }, [ + h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => move(1) }, h('span', { class: 'icon-[lucide--chevron-right]' })), + h('button', { type: 'button', class: 'btn btn-ghost btn-xs px-1', onclick: () => moveYear(1) }, h('span', { class: 'icon-[lucide--chevrons-right]' })) + ]) + ]), + + h('div', { class: 'grid grid-cols-7 gap-1', onmouseleave: () => hoverDate(null) }, [ + ...['L', 'M', 'X', 'J', 'V', 'S', 'D'].map(d => h('div', { class: 'text-[10px] opacity-40 font-bold text-center' }, d)), + () => { + const d = internalDate(), y = d.getFullYear(), m = d.getMonth() + const firstDay = new Date(y, m, 1).getDay() + const offset = firstDay === 0 ? 6 : firstDay - 1 + const dim = new Date(y, m + 1, 0).getDate() + const cells = [] + for (let i = 0; i < offset; i++) cells.push(h('div')) + for (let i = 1; i <= dim; i++) { + const date = new Date(y, m, i), ds = fmt(date) + cells.push(h('button', { + type: 'button', + class: () => { + const v = current(), h = hoverDate() + const isStart = typeof v === 'string' ? v.split('T')[0] === ds : v?.start === ds + const isEnd = v?.end === ds + let inRange = false + if (rangeMode() && v?.start) { + const start = v.start + if (!v.end && h) inRange = (ds > start && ds <= h) || (ds < start && ds >= h) + else if (v.end) inRange = ds > start && ds < v.end + } + const base = 'btn btn-xs p-0 aspect-square min-h-0 h-auto font-normal relative' + const st = isStart || isEnd ? 'btn-primary z-10' : inRange ? 'bg-primary/20 border-none rounded-none' : 'btn-ghost' + const today = ds === todayStr ? 'ring-1 ring-primary ring-inset font-black text-primary' : '' + return cls(base, st, today) + }, + onmouseenter: () => rangeMode() && hoverDate(ds), + onclick: () => selectDate(date) + }, i.toString())) + } + return cells + } + ]), + + p.hour ? h('div', { class: 'mt-3 pt-2 border-t border-base-300' }, + rangeMode() + ? h('div', { class: 'flex gap-4' }, [HourSlider({ value: startHour, onChange: h => startHour(h) }), HourSlider({ value: endHour, onChange: h => endHour(h) })]) + : HourSlider({ value: startHour, onChange: h => startHour(h) }) + ) : null + ]) +} + +//Datepicker.js +export const Datepicker = (p) => { + const isOpen = $(false) + const displayValue = $("") + const rangeMode = () => get(p.range) === true + + watch(() => { + const v = get(p.value) + if (!v) return displayValue("") + let text = "" + if (typeof v === "string") { + text = p.hour && v.includes("T") ? v.replace("T", " ") : v + } else if (v.start && v.end) { + const startStr = p.hour && v.startHour != null ? `${v.start} ${String(v.startHour).padStart(2, "0")}:00` : v.start + const endStr = p.hour && v.endHour != null ? `${v.end} ${String(v.endHour).padStart(2, "0")}:00` : v.end + text = `${startStr} - ${endStr}` + } else if (v.start) { + const startStr = p.hour && v.startHour != null ? `${v.start} ${String(v.startHour).padStart(2, "0")}:00` : v.start + text = `${startStr}...` + } + displayValue(text) + }) + + const handleChange = (val) => { + if (isFn(p.value)) p.value(val) + else p.onChange?.(val) + if (!rangeMode() || val?.end != null) isOpen(false) + } + + return h('div', { class: cls('relative w-full', p.class) }, [ + h('label', { class: 'input input-bordered w-full', onclick: (e) => { e.stopPropagation(); isOpen(!isOpen()) } }, [ + h('span', { class: 'icon-[lucide--calendar]' }), + h('input', { + ...p, + type: 'text', + class: 'grow', + value: displayValue, + readonly: true, + placeholder: p.placeholder || (rangeMode() ? 'Seleccionar rango...' : 'Seleccionar fecha...') + }) + ]), + + when(isOpen, () => [ + h('div', { class: 'fixed inset-0 z-[90]', onclick: () => isOpen(false) }), + h('div', { class: 'absolute left-0 mt-2 z-[100]', onclick: (e) => e.stopPropagation() }, + Calendar({ value: p.value, range: rangeMode(), hour: p.hour, onChange: handleChange }) + ) + ]) + ]) +} + +//Fileinput +export const Fileinput = (p) => { + const files = $([]) + const drag = $(false) + const error = $(null) + const maxBytes = (p.max || 2) * 1024 * 1024 + + const process = (fileList) => { + const arr = Array.from(fileList) + error(null) + if (arr.some(f => f.size > maxBytes)) { + error(`Máx ${p.max || 2}MB`) + return + } + const updated = [...files(), ...arr] + files(updated) + if (isFn(p.onselect)) p.onselect(updated) + else if (isFn(p.value)) p.value(updated) + } + + const remove = (idx) => { + const updated = files().filter((_, i) => i !== idx) + files(updated) + if (isFn(p.onselect)) p.onselect(updated) + else if (isFn(p.value)) p.value(updated) + } + + return h('div', { class: cls('fieldset w-full p-0', p.class) }, [ + h('label', { + class: () => `relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${drag() ? 'border-primary bg-primary/10' : 'border-base-content/20 bg-base-100 hover:bg-base-200'}`, + ondragover: (e) => { e.preventDefault(); drag(true) }, + ondragleave: () => drag(false), + ondrop: (e) => { e.preventDefault(); drag(false); process(e.dataTransfer.files) } + }, [ + h('div', { class: 'flex items-center gap-3 w-full' }, [ + h('span', { class: 'icon-[lucide--upload]' }), + h('span', { class: 'text-sm opacity-70 truncate grow text-left' }, 'Arrastra o selecciona archivos...'), + h('span', { class: 'text-[10px] opacity-40 shrink-0' }, `Máx ${p.max || 2}MB`) + ]), + h('input', { + type: 'file', + multiple: true, + accept: p.accept || '*', + class: 'hidden', + onchange: (e) => process(e.target.files) + }) + ]), + + () => error() && h('span', { class: 'text-[10px] text-error mt-1 px-1 font-medium' }, error()), + + when(() => files().length > 0, () => + h('ul', { class: 'mt-2 space-y-1' }, + each(files, (file, idx) => + h('li', { class: 'flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300' }, [ + h('div', { class: 'flex items-center gap-2 truncate' }, [ + h('span', { class: 'opacity-50' }, '📄'), + h('span', { class: 'truncate font-medium max-w-[200px]' }, file.name), + h('span', { class: 'text-[9px] opacity-40' }, `(${(file.size / 1024).toFixed(0)} KB)`) + ]), + h('button', { + type: 'button', + class: 'btn btn-ghost btn-xs btn-circle', + onclick: (e) => { e.preventDefault(); remove(idx) } + }, h('span', { class: 'icon-[lucide--x]' })) + ]), + (file) => file.name + file.lastModified + ) + ) + ) + ]) +} + +//Toast +export const Toast = (message, type = "alert-success", duration = 3500) => { + let container = document.getElementById("sigpro-toast-container"); + if (!container) { + container = h("div", { + id: "sigpro-toast-container", + class: "fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none" + }); + document.body.appendChild(container); + } + + const host = h("div", { style: "display: contents" }); + container.appendChild(host); + + let closeFn, timer, enterTimer; + + const ToastComponent = () => { + const visible = $(false); + const leaving = $(false); + + closeFn = () => { + if (leaving()) return; + clearTimeout(timer); + clearTimeout(enterTimer); + leaving(true); + setTimeout(() => { + instance.destroy(); + host.remove(); + if (!container.hasChildNodes()) container.remove(); + }, 300); + }; + + enterTimer = setTimeout(() => visible(true), 0); + + const content = typeof message === 'function' ? get(message) : message; + const msgNode = typeof content === 'string' ? h("span", {}, content) : content; + + return h("div", { + class: () => { + if (leaving()) return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`; + if (visible()) return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`; + return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`; + } + }, [ + msgNode, + h("button", { + class: "btn btn-xs btn-circle btn-ghost", + onclick: closeFn + }, h("span", { class: "icon-[lucide--x]" })) + ]); + }; + + const instance = mount(ToastComponent, host); + + if (duration > 0) timer = setTimeout(closeFn, duration); + + return closeFn; +}; + +//Modal +export const Modal = (p) => { + let dialogRef = null; + + watch(() => { + const isOpen = get(p.open); + if (!dialogRef) return; + isOpen ? dialogRef.showModal() : dialogRef.close(); + }); + + const close = () => isFn(p.open) && p.open(false); + + return h("dialog", { + ...p, + ref: el => dialogRef = el, + class: cls('modal', p.class), + onclose: close, + oncancel: close + }, [ + h("div", { class: "modal-box" }, [ + p.title && h("h3", { class: "text-lg font-bold" }, p.title), + p.children, + h("div", { class: "modal-action" }, [ + p.actions || Button({ class: 'btn', onclick: close }, 'Cerrar') + ]) + ]), + h("form", { method: "dialog", class: "modal-backdrop" }, [ + h("button", {}, "close") + ]) + ]); +}; \ No newline at end of file diff --git a/components/Autocomplete.js b/components/Autocomplete.js deleted file mode 100644 index fe5673b..0000000 --- a/components/Autocomplete.js +++ /dev/null @@ -1,92 +0,0 @@ -// components/Autocomplete.js -import { $, h, each, watch } from "sigpro"; - -export const Autocomplete = (props) => { - const query = $(""); - const isOpen = $(false); - const cursor = $(-1); - const filteredItems = $([]); - - watch(() => { - const v = typeof props.value === "function" ? props.value() : props.value; - return v || ""; - }, (newVal) => setTimeout(() => query(newVal), 0)); - - watch(() => { - const q = String(query()).toLowerCase(); - const allItems = typeof props.items === "function" ? props.items() : props.items; - const filtered = q - ? allItems.filter((item) => - (typeof item === "string" ? item : item.label).toLowerCase().includes(q) - ) - : allItems; - filteredItems(filtered); - }); - - const pick = (item) => { - const display = typeof item === "string" ? item : item.label; - const actual = typeof item === "string" ? item : item.value; - query(display); - if (typeof props.value === "function") props.value(actual); - props.onselect?.(item); - isOpen(false); - cursor(-1); - }; - - const handleKeyDown = (e) => { - const list = filteredItems(); - if (e.key === "ArrowDown") { - e.preventDefault(); - isOpen(true); - cursor(Math.min(cursor() + 1, list.length - 1)); - } else if (e.key === "ArrowUp") { - e.preventDefault(); - cursor(Math.max(cursor() - 1, 0)); - } else if (e.key === "Enter" && cursor() >= 0) { - e.preventDefault(); - pick(list[cursor()]); - } else if (e.key === "Escape") { - isOpen(false); - } - }; - - return h("div", { class: `relative w-full ${props.class ?? ''}` }, [ - h("label", { class: "input input-bordered w-full" }, [ - h("span", { class: "icon-[lucide--search]" }), - h("input", { - ...props, - type: "text", - class: "grow", - placeholder: props.placeholder || "Buscar...", - value: query, - onfocus: () => isOpen(true), - onblur: () => setTimeout(() => isOpen(false), 150), - onkeydown: handleKeyDown, - oninput: (e) => { - const newVal = e.target.value; - query(newVal); - if (typeof props.value === "function") props.value(newVal); - isOpen(true); - cursor(-1); - } - }) - ]), - - h("ul", { - class: "absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50", - style: () => `display: ${isOpen() && filteredItems().length ? "block" : "none"};` - }, [ - each(filteredItems, (item, idx) => - h("li", {}, [ - h("a", { - class: () => `block w-full ${cursor() === idx ? "active bg-primary text-primary-content" : ""}`, - onclick: () => pick(item), - onmouseenter: () => cursor(idx) - }, typeof item === "string" ? item : item.label) - ]), - (item, idx) => (typeof item === "string" ? item : item.value) + idx - ), - () => filteredItems().length === 0 ? h("li", { class: "flex justify-center p-4 opacity-50" }, h("span", { class: "icon-[lucide--search-x] text-2xl" })) : null - ]) - ]); -}; \ No newline at end of file diff --git a/components/Editor.js b/components/Editor.js new file mode 100644 index 0000000..32ab6f8 --- /dev/null +++ b/components/Editor.js @@ -0,0 +1,145 @@ +import { h, $ } from "sigpro" +import { get, cls, isFn } from "./All.js" + +export const Editor = (p) => { + const { value, class: extraClass } = p + let editorRef = null + + const isSource = $(false) + const source = $("") + + const notify = () => { + if (!editorRef) return + const html = editorRef.innerHTML + if (isFn(value)) value(html) + else p.onchange?.(html) + } + + const exec = (cmd, val = null) => { + if (!editorRef) return + editorRef.focus() + document.execCommand(cmd, false, val) + notify() + } + + const queryState = (cmd, val = null) => { + if (!editorRef) return false + try { + if (cmd === 'formatBlock') { + const sel = window.getSelection() + if (!sel.rangeCount) return false + let node = sel.getRangeAt(0).commonAncestorContainer + while (node && node !== editorRef) { + if (node.nodeType === 1 && node.tagName === val) return true + node = node.parentNode + } + return false + } + return document.queryCommandState(cmd) + } catch (e) { + return false + } + } + + const toolbar = h("div", { class: "flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200" }, [ + h("div", { class: "flex flex-wrap gap-1 flex-1" }, [ + h("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState('bold') ? 'btn-active' : ''}`, + onclick: () => exec("bold") + }, h("span", { class: "icon-[lucide--bold]" })), + + h("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState('italic') ? 'btn-active' : ''}`, + onclick: () => exec("italic") + }, h("span", { class: "icon-[lucide--italic]" })), + + h("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState('underline') ? 'btn-active' : ''}`, + onclick: () => exec("underline") + }, h("span", { class: "icon-[lucide--underline]" })), + + h("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState('strikeThrough') ? 'btn-active' : ''}`, + onclick: () => exec("strikeThrough") + }, h("span", { class: "icon-[lucide--strikethrough]" })), + + h("span", { class: "w-px h-5 bg-base-300 mx-1" }), + + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertUnorderedList") }, h("span", { class: "icon-[lucide--list]" })), + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertOrderedList") }, h("span", { class: "icon-[lucide--list-ordered]" })), + + h("span", { class: "w-px h-5 bg-base-300 mx-1" }), + + h("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState('formatBlock', 'BLOCKQUOTE') ? 'btn-active' : ''}`, + onclick: () => exec("formatBlock", queryState('formatBlock', 'BLOCKQUOTE') ? 'P' : 'BLOCKQUOTE') + }, h("span", { class: "icon-[lucide--quote]" })), + + h("span", { class: "w-px h-5 bg-base-300 mx-1" }), + + h("select", { class: "select select-xs w-16", onchange: (e) => exec("fontSize", e.target.value), value: "3" }, [ + h("option", { value: "1" }, "1"), + h("option", { value: "2" }, "2"), + h("option", { value: "3" }, "3"), + h("option", { value: "4" }, "4"), + h("option", { value: "5" }, "5"), + h("option", { value: "6" }, "6"), + h("option", { value: "7" }, "7"), + ]), + + h("span", { class: "w-px h-5 bg-base-300 mx-1" }), + + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("undo") }, h("span", { class: "icon-[lucide--undo-2]" })), + h("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("redo") }, h("span", { class: "icon-[lucide--redo-2]" })), + ]), + + h("div", { class: "flex" }, [ + h("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${isSource() ? 'btn-active' : ''}`, + onclick: () => { + const wasSource = isSource() + if (!wasSource) { + source(editorRef?.innerHTML || "") + } else { + if (editorRef) { + editorRef.innerHTML = source() + notify() + } + } + isSource(!wasSource) + } + }, h("span", { class: "icon-[lucide--code-2]" })) + ]) + ]) + + return h("div", { class: cls("border border-base-300 rounded-box bg-base-100 overflow-hidden", extraClass) }, [ + toolbar, + h("div", { class: "relative" }, [ + h("div", { + ref: el => { + if (!editorRef && el) { + editorRef = el + el.innerHTML = get(value) || "" + } + }, + style: () => `min-height:10rem;${isSource() ? 'display:none' : ''}`, + class: "p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]", + contenteditable: "true", + oninput: notify, + onpaste: () => setTimeout(notify, 0) + }), + h("textarea", { + class: "w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0", + style: () => isSource() ? '' : 'display:none', + value: source, + oninput: (e) => source(e.target.value) + }) + ]) + ]) +} \ No newline at end of file diff --git a/components/Input.js b/components/Input.js deleted file mode 100644 index 5745f40..0000000 --- a/components/Input.js +++ /dev/null @@ -1,60 +0,0 @@ -import { h, $, when, fx } from 'sigpro'; -import { get, cls, isFunc } from './_core.js'; - -export const Input = (props) => { - const { label, icon, float, placeholder, value, left, right, content, ...rest } = props; - - const showPassword = $(false); - const isFocused = $(false); - const isPassword = props.type === 'password'; - - const inputType = () => isPassword - ? (get(showPassword) ? 'text' : 'password') - : (props.type || 'text'); - - return h("div", { - class: "input-container", - onfocusin: () => isFocused(true), - onfocusout: (e) => { - if (!e.currentTarget.contains(e.relatedTarget)) { - isFocused(false); - } - } - }, [ - h('label', { class: "floating-label" }, [ - float ? h("span", {}, label) : null, - h("label", { - class: () => cls('input', props.class) - }, [ - label && !float ? h('span', { class: 'label' }, label) : null, - left ?? null, - h('input', { - ...rest, - type: inputType, - class: 'grow', - placeholder: placeholder || label || ' ', - value: value - }), - right ?? null, - - isPassword ? h('label', { class: 'swap swap-rotate ml-2' }, [ - h('input', { - type: 'checkbox', - onchange: (e) => showPassword(e.target.checked) - }), - h('span', { class: 'swap-on icon-[lucide--eye]' }), - h('span', { class: 'swap-off icon-[lucide--eye-off]' }) - ]) : null - ]), - - when(isFocused, () => fx({ duration: 300, slide: true }, - h('div', { - class: 'input-content', - onmousedown: e => e.preventDefault() - }, [ - isFunc(content) ? content(isFocused) : content - ]) - )) - ]) - ]); -}; \ No newline at end of file diff --git a/components/InputBase.js b/components/InputBase.js deleted file mode 100644 index 3fd2e9e..0000000 --- a/components/InputBase.js +++ /dev/null @@ -1,58 +0,0 @@ -import { h, $ } from 'sigpro.js'; -import { ui, cls, get } from './_core.js'; - -export const InputBase = ({ - loading = false, - ui: uiOptions = '', - class: className = '', - type = 'text', - value, - onInput, - ...inputProps -}) => { - const isPassword = type === 'password'; - const showPassword = $(false); - - const inputClasses = cls( - ui('input', uiOptions), - className, - isPassword && 'pr-10', - loading && 'loading loading-spinner loading-xs absolute right-2 top-1/2 -translate-y-1/2' - ); - - let inputEl = h('input', { - class: inputClasses + (isPassword ? ' pr-10' : ''), - type: isPassword ? 'text' : 'password', - value, - oninput: onInput, - ...inputProps - }); - - if (isPassword) { - const toggle = h('label', { - class: 'swap swap-rotate absolute right-2 top-1/2 -translate-y-1/2 cursor-pointer' - }, [ - h('input', { - type: 'checkbox', - checked: showPassword(), - onchange: (e) => showPassword(e.target.checked) - }), - h('span', { class: 'swap-on icon-[lucide--eye]' }), - h('span', { class: 'swap-off icon-[lucide--eye-off]' }) - ]); - inputEl = h('div', { class: 'relative w-full' }, [inputEl, toggle]); - } - - if (icon) { - const isIconClass = icon.includes('-') || icon.includes('icon-'); - const iconElement = isIconClass - ? h('span', { class: icon }) - : h('span', { class: 'opacity-50' }, icon); - content = h('label', { class: ui('input', uiOptions).replace('input-', '') }, [ - iconElement, - h('span', { class: 'opacity-70' }) - ]); - } - - return inputEl; -}; \ No newline at end of file diff --git a/components/Accordion.js b/components/discarted/Accordion.js similarity index 100% rename from components/Accordion.js rename to components/discarted/Accordion.js diff --git a/components/Alert.js b/components/discarted/Alert.js similarity index 100% rename from components/Alert.js rename to components/discarted/Alert.js diff --git a/components/discarted/Autocomplete.js b/components/discarted/Autocomplete.js new file mode 100644 index 0000000..895415a --- /dev/null +++ b/components/discarted/Autocomplete.js @@ -0,0 +1,61 @@ +import { $, h, when, fx } from 'sigpro'; +import { Input } from '../Input.js'; +import { filterBy, listKey, getBy } from '../All.js'; + + +export const Autocomplete = ({ items, value, onselect, placeholder = 'Buscar...', ...props }) => { + const query = $(value ? (typeof value === 'function' ? value() : value) : ''); + const isOpen = $(false); + const filtered = $(() => filterBy(items, query())); + const { cursor, onKey } = listKey(filtered, isOpen); + + const pick = (item) => { + const display = getBy(item); + const actual = typeof item === 'string' ? item : item.value; + query(display); + if (typeof value === 'function') value(actual); + onselect?.(item); + isOpen(false); + }; + + return h('div', { class: 'relative w-full' }, [ + Input({ + ...props, + type: 'text', + placeholder, + value: query, + left: h('span', { class: 'icon-[lucide--search]' }), + oninput: (e) => { + query(e.target.value); + if (typeof value === 'function') value(e.target.value); + isOpen(true); + }, + onfocus: () => isOpen(true), + onblur: () => setTimeout(() => isOpen(false), 150), + onkeydown: (e) => onKey(e, pick) + }), + + when(isOpen, () => + fx({ duration: 200, slide: true }, + h('ul', { + class: 'absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap' + }, [ + each(filtered, (item, idx) => + h('li', {}, [ + h('a', { + class: () => cursor() === idx ? 'active bg-primary text-primary-content' : '', + onmousedown: (e) => e.preventDefault(), // evita que el blur cierre antes del click + onclick: () => pick(item), + onmouseenter: () => cursor(idx) + }, getBy(item)) + ]), + (item, idx) => getBy(item) + idx + ), + () => filtered().length === 0 + ? h('li', { class: 'p-4 opacity-50 text-center' }, 'Sin resultados') + : null + ]) + ) + ) + ]); +}; \ No newline at end of file diff --git a/components/Badge.js b/components/discarted/Badge.js similarity index 100% rename from components/Badge.js rename to components/discarted/Badge.js diff --git a/components/Calendar.js b/components/discarted/Calendar.js similarity index 100% rename from components/Calendar.js rename to components/discarted/Calendar.js diff --git a/components/Datepicker.js b/components/discarted/Datepicker.js similarity index 100% rename from components/Datepicker.js rename to components/discarted/Datepicker.js diff --git a/components/discarted/Input.js b/components/discarted/Input.js new file mode 100644 index 0000000..baf0974 --- /dev/null +++ b/components/discarted/Input.js @@ -0,0 +1,46 @@ +import { h, $, when, fx } from 'sigpro'; +import { get, cls, isFn } from '../All.js'; + +export const Input = (props) => { + const { label, icon, float, placeholder, value, left, right, rule, hint, content, ...rest } = props; + + const showPassword = $(false); + const isFocused = $(false); + const isPassword = props.type === 'password'; + const pattern = rule ?? null; + + const inputType = () => isPassword + ? (get(showPassword) ? 'text' : 'password') + : (props.type || 'text'); + + return h("div", { + class: "input-container", + onfocusin: () => isFocused(true), + onfocusout: (e) => { + if (!e.currentTarget.contains(e.relatedTarget)) { isFocused(false); } + } + }, [ + h('label', { class: "floating-label" }, [ + float ? h("span", {}, label) : null, + h("label", { pattern: pattern, class: () => cls('input validator', props.class) }, + [ + label && !float ? h('span', { class: 'label' }, label) : null, + left ?? null, + h('input', { ...rest, type: inputType, class: 'grow', pattern: pattern, placeholder: placeholder || label || ' ', value: value }), right ?? null, + isPassword ? h('label', { class: 'swap swap-rotate ml-2' }, [ + h('input', { type: 'checkbox', onchange: (e) => showPassword(e.target.checked) }), + h('span', { class: 'swap-on icon-[lucide--eye]' }), + h('span', { class: 'swap-off icon-[lucide--eye-off]' }) + ]) : null + ]), + hint ? h('div', { class: "validator-hint" }, hint) : null, + + when(isFocused, () => fx({ duration: 300, slide: true }, + h('div', { class: 'input-content', onmousedown: e => e.preventDefault() }, + [ + isFn(content) ? content(isFocused) : content + ]) + )) + ]), + ]); +}; \ No newline at end of file diff --git a/components/discarted/Select.js b/components/discarted/Select.js new file mode 100644 index 0000000..7b818b6 --- /dev/null +++ b/components/discarted/Select.js @@ -0,0 +1,30 @@ +// components/Select.js +import { h, each } from "sigpro"; + +export const Select = (props) => { + const { items, placeholder, placeholderDisabled = true, keyFn, children, ...rest } = props; + + if (children !== undefined) { + return h("select", { ...rest, class: `select ${rest.class ?? ''}` }, children); + } + + const placeholderOption = placeholder + ? h("option", { disabled: placeholderDisabled, selected: true }, placeholder) + : null; + + const dynamicOptions = each( + () => [...(typeof items === "function" ? items() : items || [])], + (item) => { + const value = typeof item === "string" ? item : item.value; + const label = typeof item === "string" ? item : item.label; + return h("option", { value }, label); + }, + keyFn || ((item) => (typeof item === "string" ? item : item.value)) + ); + + const options = placeholderOption + ? [placeholderOption, dynamicOptions] + : dynamicOptions; + + return h("select", { ...rest, class: `select ${rest.class ?? ''}` }, options); +}; \ No newline at end of file diff --git a/components/toast.js b/components/discarted/Toast.js similarity index 100% rename from components/toast.js rename to components/discarted/Toast.js diff --git a/components/_core.js b/components/discarted/_core.js similarity index 99% rename from components/_core.js rename to components/discarted/_core.js index 421c10f..9dcd7f2 100644 --- a/components/_core.js +++ b/components/discarted/_core.js @@ -23,6 +23,7 @@ export const filterBy = (items, query, field = 'label') => { }); }; + export const listKey = (items, isOpen) => { const cursor = $(-1); diff --git a/components/button.js b/components/discarted/button.js similarity index 100% rename from components/button.js rename to components/discarted/button.js diff --git a/components/card.js b/components/discarted/card.js similarity index 100% rename from components/card.js rename to components/discarted/card.js diff --git a/components/carousel.js b/components/discarted/carousel.js similarity index 100% rename from components/carousel.js rename to components/discarted/carousel.js diff --git a/components/chat.js b/components/discarted/chat.js similarity index 100% rename from components/chat.js rename to components/discarted/chat.js diff --git a/components/checkbox.js b/components/discarted/checkbox.js similarity index 100% rename from components/checkbox.js rename to components/discarted/checkbox.js diff --git a/components/colorpicker.js b/components/discarted/colorpicker.js similarity index 100% rename from components/colorpicker.js rename to components/discarted/colorpicker.js diff --git a/components/divider.js b/components/discarted/divider.js similarity index 100% rename from components/divider.js rename to components/discarted/divider.js diff --git a/components/drawer.js b/components/discarted/drawer.js similarity index 100% rename from components/drawer.js rename to components/discarted/drawer.js diff --git a/components/dropdown.js b/components/discarted/dropdown.js similarity index 100% rename from components/dropdown.js rename to components/discarted/dropdown.js diff --git a/components/fab.js b/components/discarted/fab.js similarity index 100% rename from components/fab.js rename to components/discarted/fab.js diff --git a/components/fieldset.js b/components/discarted/fieldset.js similarity index 100% rename from components/fieldset.js rename to components/discarted/fieldset.js diff --git a/components/fileinput.js b/components/discarted/fileinput.js similarity index 99% rename from components/fileinput.js rename to components/discarted/fileinput.js index dfef5d7..9a0ca13 100644 --- a/components/fileinput.js +++ b/components/discarted/fileinput.js @@ -65,4 +65,5 @@ export const Fileinput = (props) => { ]) ) ]); -}; \ No newline at end of file +}; + diff --git a/components/icon.js b/components/discarted/icon.js similarity index 100% rename from components/icon.js rename to components/discarted/icon.js diff --git a/components/indicator.js b/components/discarted/indicator.js similarity index 100% rename from components/indicator.js rename to components/discarted/indicator.js diff --git a/components/kbd.js b/components/discarted/kbd.js similarity index 100% rename from components/kbd.js rename to components/discarted/kbd.js diff --git a/components/loading.js b/components/discarted/loading.js similarity index 100% rename from components/loading.js rename to components/discarted/loading.js diff --git a/components/menu.js b/components/discarted/menu.js similarity index 100% rename from components/menu.js rename to components/discarted/menu.js diff --git a/components/modal.js b/components/discarted/modal.js similarity index 100% rename from components/modal.js rename to components/discarted/modal.js diff --git a/components/navbar.js b/components/discarted/navbar.js similarity index 100% rename from components/navbar.js rename to components/discarted/navbar.js diff --git a/components/radial.js b/components/discarted/radial.js similarity index 100% rename from components/radial.js rename to components/discarted/radial.js diff --git a/components/radio.js b/components/discarted/radio.js similarity index 100% rename from components/radio.js rename to components/discarted/radio.js diff --git a/components/range.js b/components/discarted/range.js similarity index 100% rename from components/range.js rename to components/discarted/range.js diff --git a/components/rating.js b/components/discarted/rating.js similarity index 100% rename from components/rating.js rename to components/discarted/rating.js diff --git a/components/skeleton.js b/components/discarted/skeleton.js similarity index 100% rename from components/skeleton.js rename to components/discarted/skeleton.js diff --git a/components/stack.js b/components/discarted/stack.js similarity index 100% rename from components/stack.js rename to components/discarted/stack.js diff --git a/components/stat.js b/components/discarted/stat.js similarity index 100% rename from components/stat.js rename to components/discarted/stat.js diff --git a/components/steps.js b/components/discarted/steps.js similarity index 100% rename from components/steps.js rename to components/discarted/steps.js diff --git a/components/swap.js b/components/discarted/swap.js similarity index 100% rename from components/swap.js rename to components/discarted/swap.js diff --git a/components/table.js b/components/discarted/table.js similarity index 100% rename from components/table.js rename to components/discarted/table.js diff --git a/components/tabs.js b/components/discarted/tabs.js similarity index 100% rename from components/tabs.js rename to components/discarted/tabs.js diff --git a/components/textarea.js b/components/discarted/textarea.js similarity index 100% rename from components/textarea.js rename to components/discarted/textarea.js diff --git a/components/textrotate.js b/components/discarted/textrotate.js similarity index 100% rename from components/textrotate.js rename to components/discarted/textrotate.js diff --git a/components/timeline.js b/components/discarted/timeline.js similarity index 100% rename from components/timeline.js rename to components/discarted/timeline.js diff --git a/components/toggle.js b/components/discarted/toggle.js similarity index 100% rename from components/toggle.js rename to components/discarted/toggle.js diff --git a/components/discarted/tooltip.js b/components/discarted/tooltip.js new file mode 100644 index 0000000..d4270b8 --- /dev/null +++ b/components/discarted/tooltip.js @@ -0,0 +1,4 @@ +// components/Tooltip.js +import { h } from "sigpro"; + +export const Tooltip = (p, c) => h("div", { ...p, class: `tooltip ${p.class ?? ''}`, "data-tip": p.tip }, c); diff --git a/components/select.js b/components/select.js deleted file mode 100644 index 8e405d6..0000000 --- a/components/select.js +++ /dev/null @@ -1,34 +0,0 @@ -// components/Select.js -import { h, each } from "sigpro"; - -export const Select = (props, children) => { - children === undefined && (children = props, props = {}); - return h("select", { ...props, class: `select ${props.class ?? ''}` }, children); -}; - -export const SelectItems = (props) => { - const placeholderOption = props.placeholder - ? h("option", { disabled: props.placeholderDisabled ?? true, selected: true }, props.placeholder) - : null; - - const dynamicOptions = each( - () => [...(typeof props.items === "function" ? props.items() : props.items || [])], - (item) => { - const val = typeof item === "string" ? item : item.value; - const label = typeof item === "string" ? item : item.label; - return h("option", { value: val }, label); - }, - props.keyFn || ((item) => (typeof item === "string" ? item : item.value)) - ); - - return placeholderOption ? [placeholderOption, dynamicOptions] : dynamicOptions; -}; - -export const SelectLabel = (props, children) => h("label", { class: `${props.float ? 'floating-label' : 'select'}` }, - [ - h("span", { class: props.float ? '' : 'label opacity-50' }, props.label), - props.left ?? null, - h("select", { ...props, class: `${props.float ? 'select' : ''} ${props.class ?? ''}` }, children), - props.right ?? null - ] -); \ No newline at end of file diff --git a/components/tooltip.js b/components/tooltip.js deleted file mode 100644 index 28dcafb..0000000 --- a/components/tooltip.js +++ /dev/null @@ -1,7 +0,0 @@ -// components/Tooltip.js -import { h } from "sigpro"; - -export const Tooltip = (props, children) => { - children === undefined && (children = props, props = {}); - return h("div", { ...props, class: `tooltip ${props.class ?? ''}`, "data-tip": props.tip }, children); -}; \ No newline at end of file diff --git a/dist/sigpro-ui.css b/dist/sigpro-ui.css index 09410de..6b48771 100644 --- a/dist/sigpro-ui.css +++ b/dist/sigpro-ui.css @@ -13,6 +13,7 @@ --spacing: 0.25rem; --container-xs: 20rem; --container-md: 28rem; + --container-2xl: 42rem; --container-3xl: 48rem; --container-5xl: 64rem; --container-6xl: 72rem; @@ -41,6 +42,7 @@ --font-weight-light: 300; --font-weight-normal: 400; --font-weight-medium: 500; + --font-weight-semibold: 600; --font-weight-bold: 700; --font-weight-black: 900; --tracking-tighter: -0.05em; @@ -1392,6 +1394,36 @@ } } } + .validator-hint { + @layer daisyui.l1.l2.l3 { + visibility: hidden; + margin-top: calc(0.25rem * 2); + font-size: 0.75rem; + } + } + .validator { + @layer daisyui.l1.l2.l3 { + &:user-valid, &:has(:user-valid) { + &, &:focus, &:checked, &[aria-checked="true"], &:focus-within { + --input-color: var(--color-success); + } + } + &:user-invalid, &:has(:user-invalid), &[aria-invalid]:not([aria-invalid="false"]), &:has([aria-invalid]:not([aria-invalid="false"])) { + &, &:focus, &:checked, &[aria-checked="true"], &:focus-within { + --input-color: var(--color-error); + } + & ~ .validator-hint { + visibility: visible; + color: var(--color-error); + } + } + } + &:user-invalid, &:has(:user-invalid), &[aria-invalid]:not([aria-invalid="false"]), &:has([aria-invalid]:not([aria-invalid="false"])) { + & ~ .validator-hint { + display: revert-layer; + } + } + } .collapse { visibility: collapse; } @@ -3101,9 +3133,6 @@ .top-0 { top: calc(var(--spacing) * 0); } - .top-1\/2 { - top: calc(1 / 2 * 100%); - } .top-2 { top: calc(var(--spacing) * 2); } @@ -3125,9 +3154,6 @@ .right-1\/4 { right: calc(1 / 4 * 100%); } - .right-2 { - right: calc(var(--spacing) * 2); - } .right-3 { right: calc(var(--spacing) * 3); } @@ -3879,6 +3905,9 @@ } } } + .mx-1 { + margin-inline: calc(var(--spacing) * 1); + } .mx-auto { margin-inline: auto; } @@ -4133,6 +4162,19 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01'/%3E%3C/svg%3E"); } + .icon-\[lucide--bold\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8'/%3E%3C/svg%3E"); + } .icon-\[lucide--calendar\] { display: inline-block; width: 1em; @@ -4224,6 +4266,32 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 17l5-5l-5-5m7 10l5-5l-5-5'/%3E%3C/svg%3E"); } + .icon-\[lucide--clock\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E"); + } + .icon-\[lucide--code-2\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16'/%3E%3C/svg%3E"); + } .icon-\[lucide--eye-off\] { display: inline-block; width: 1em; @@ -4289,6 +4357,19 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4m0-4h.01'/%3E%3C/g%3E%3C/svg%3E"); } + .icon-\[lucide--italic\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 4h-9m4 16H5M15 4L9 20'/%3E%3C/svg%3E"); + } .icon-\[lucide--link\] { display: inline-block; width: 1em; @@ -4302,6 +4383,32 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/g%3E%3C/svg%3E"); } + .icon-\[lucide--list-ordered\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11 5h10m-10 7h10m-10 7h10M4 4h1v5M4 9h2m.5 11H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02'/%3E%3C/svg%3E"); + } + .icon-\[lucide--list\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13'/%3E%3C/svg%3E"); + } .icon-\[lucide--lock\] { display: inline-block; width: 1em; @@ -4341,7 +4448,7 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233a14 14 0 0 0 6.392 6.384'/%3E%3C/svg%3E"); } - .icon-\[lucide--search-x\] { + .icon-\[lucide--plus\] { display: inline-block; width: 1em; height: 1em; @@ -4352,7 +4459,33 @@ mask-repeat: no-repeat; -webkit-mask-size: 100% 100%; mask-size: 100% 100%; - --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m13.5 8.5l-5 5m0-5l5 5'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21l-4.3-4.3'/%3E%3C/g%3E%3C/svg%3E"); + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 12h14m-7-7v14'/%3E%3C/svg%3E"); + } + .icon-\[lucide--quote\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2zM5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3C/svg%3E"); + } + .icon-\[lucide--redo-2\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m15 14l5-5l-5-5'/%3E%3Cpath d='M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13'/%3E%3C/g%3E%3C/svg%3E"); } .icon-\[lucide--search\] { display: inline-block; @@ -4367,6 +4500,32 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E"); } + .icon-\[lucide--settings\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9.671 4.136a2.34 2.34 0 0 1 4.659 0a2.34 2.34 0 0 0 3.319 1.915a2.34 2.34 0 0 1 2.33 4.033a2.34 2.34 0 0 0 0 3.831a2.34 2.34 0 0 1-2.33 4.033a2.34 2.34 0 0 0-3.319 1.915a2.34 2.34 0 0 1-4.659 0a2.34 2.34 0 0 0-3.32-1.915a2.34 2.34 0 0 1-2.33-4.033a2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E"); + } + .icon-\[lucide--strikethrough\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 4H9a3 3 0 0 0-2.83 4M14 12a4 4 0 0 1 0 8H6m-2-8h16'/%3E%3C/svg%3E"); + } .icon-\[lucide--text\] { display: inline-block; width: 1em; @@ -4380,6 +4539,32 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 18H3M17 6H3m18 6H3'/%3E%3C/svg%3E"); } + .icon-\[lucide--underline\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 4v6a6 6 0 0 0 12 0V4M4 20h16'/%3E%3C/svg%3E"); + } + .icon-\[lucide--undo-2\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9 14L4 9l5-5'/%3E%3Cpath d='M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11'/%3E%3C/g%3E%3C/svg%3E"); + } .icon-\[lucide--upload\] { display: inline-block; width: 1em; @@ -4393,6 +4578,19 @@ mask-size: 100% 100%; --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 3v12m5-7l-5-5l-5 5m14 7v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3C/svg%3E"); } + .icon-\[lucide--user\] { + display: inline-block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-image: var(--svg); + mask-image: var(--svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 100% 100%; + mask-size: 100% 100%; + --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/g%3E%3C/svg%3E"); + } .icon-\[lucide--x\] { display: inline-block; width: 1em; @@ -4687,6 +4885,9 @@ .hidden { display: none; } + .inline { + display: inline; + } .inline-block { display: inline-block; } @@ -4776,6 +4977,9 @@ .h-4 { height: calc(var(--spacing) * 4); } + .h-5 { + height: calc(var(--spacing) * 5); + } .h-8 { height: calc(var(--spacing) * 8); } @@ -4827,6 +5031,9 @@ .min-h-0 { min-height: calc(var(--spacing) * 0); } + .min-h-\[10rem\] { + min-height: 10rem; + } .min-h-\[300px\] { min-height: 300px; } @@ -4850,11 +5057,6 @@ width: 100%; } } - .loading-xs { - @layer daisyui.l1.l2 { - width: calc(var(--size-selector, 0.25rem) * 4); - } - } .w-3\.5 { width: calc(var(--spacing) * 3.5); } @@ -4903,6 +5105,12 @@ .w-full { width: 100%; } + .w-px { + width: 1px; + } + .max-w-2xl { + max-width: var(--container-2xl); + } .max-w-3xl { max-width: var(--container-3xl); } @@ -4949,6 +5157,10 @@ --tw-translate-x: calc(calc(1 / 2 * 100%) * -1); translate: var(--tw-translate-x) var(--tw-translate-y); } + .translate-x-0 { + --tw-translate-x: calc(var(--spacing) * 0); + translate: var(--tw-translate-x) var(--tw-translate-y); + } .translate-x-2 { --tw-translate-x: calc(var(--spacing) * 2); translate: var(--tw-translate-x) var(--tw-translate-y); @@ -4965,10 +5177,6 @@ --tw-translate-x: 100%; translate: var(--tw-translate-x) var(--tw-translate-y); } - .-translate-y-1\/2 { - --tw-translate-y: calc(calc(1 / 2 * 100%) * -1); - translate: var(--tw-translate-x) var(--tw-translate-y); - } .translate-y-2 { --tw-translate-y: calc(var(--spacing) * 2); translate: var(--tw-translate-x) var(--tw-translate-y); @@ -5098,6 +5306,9 @@ .flex-col-reverse { flex-direction: column-reverse; } + .flex-nowrap { + flex-wrap: nowrap; + } .flex-wrap { flex-wrap: wrap; } @@ -5107,6 +5318,9 @@ .items-end { align-items: flex-end; } + .items-start { + align-items: flex-start; + } .items-stretch { align-items: stretch; } @@ -5283,6 +5497,10 @@ border-style: var(--tw-border-style); border-width: 1px; } + .border-0 { + border-style: var(--tw-border-style); + border-width: 0px; + } .border-2 { border-style: var(--tw-border-style); border-width: 2px; @@ -5553,6 +5771,17 @@ --tw-gradient-position: to right in oklab; background-image: linear-gradient(var(--tw-gradient-stops)); } + .skeleton-text { + @layer daisyui.l1.l2 { + background-clip: text; + webkit-background-clip: text; + color: transparent; + background-image: linear-gradient( 105deg, var(--color-base-content) 0% 40%, var(--color-base-content) 50%, var(--color-base-content) 60% 100% ); + @supports (color: color-mix(in lab, red, red)) { + background-image: linear-gradient( 105deg, color-mix(in oklab, var(--color-base-content) 20%, transparent) 0% 40%, var(--color-base-content) 50%, color-mix(in oklab, var(--color-base-content) 20%, transparent) 60% 100% ); + } + } + } .alert-soft { @layer daisyui.l1 { color: var(--alert-color, var(--color-base-content)); @@ -6009,6 +6238,10 @@ --tw-font-weight: var(--font-weight-normal); font-weight: var(--font-weight-normal); } + .font-semibold { + --tw-font-weight: var(--font-weight-semibold); + font-weight: var(--font-weight-semibold); + } .tracking-tight { --tw-tracking: var(--tracking-tight); letter-spacing: var(--tracking-tight); @@ -6293,6 +6526,9 @@ .line-through { text-decoration-line: line-through; } + .underline { + text-decoration-line: underline; + } .swap-active { @layer daisyui.l1.l2 { .swap-off { @@ -6327,6 +6563,9 @@ .opacity-80 { opacity: 80%; } + .opacity-100 { + opacity: 100%; + } .shadow { --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); @@ -6400,6 +6639,10 @@ } } } + .blur { + --tw-blur: blur(8px); + filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); + } .blur-3xl { --tw-blur: blur(var(--blur-3xl)); filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); @@ -7139,6 +7382,57 @@ grid-template-columns: repeat(4, minmax(0, 1fr)); } } + .\[\&_br\]\:block { + & br { + display: block; + } + } + .\[\&_br\]\:h-\[1em\] { + & br { + height: 1em; + } + } + .\[\&_br\]\:content-\[\'\'\] { + & br { + --tw-content: ''; + content: var(--tw-content); + } + } + .\[\&_div\]\:m-0 { + & div { + margin: calc(var(--spacing) * 0); + } + } + .\[\&_li\]\:list-item { + & li { + display: list-item; + } + } + .\[\&_ol\]\:list-decimal { + & ol { + list-style-type: decimal; + } + } + .\[\&_ol\]\:pl-6 { + & ol { + padding-left: calc(var(--spacing) * 6); + } + } + .\[\&_p\]\:m-0 { + & p { + margin: calc(var(--spacing) * 0); + } + } + .\[\&_ul\]\:list-disc { + & ul { + list-style-type: disc; + } + } + .\[\&_ul\]\:pl-6 { + & ul { + padding-left: calc(var(--spacing) * 6); + } + } } :root { font-size: 14px; @@ -7170,14 +7464,32 @@ animation: tabFadeIn 0.3s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: top; } +.input-container { + position: relative; + width: 100%; + display: flex; + flex-direction: column; +} +.input-container .input { + width: 100%; + display: flex; + align-items: center; +} .input-content { position: absolute; top: 100%; left: 0; + right: 0; + z-index: 50; + background: oklch(var(--b1)); + border: 1px solid oklch(var(--bc) / 0.2); + border-radius: var(--rounded-box, 1rem); + margin-top: 0.25rem; + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); + overflow: hidden; +} +.input-content .menu { width: 100%; - z-index: 100; - background: white; - box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } @keyframes tabFadeIn { from { diff --git a/dist/sigpro-ui.esm.js b/dist/sigpro-ui.esm.js index 682f1b5..00a726e 100644 --- a/dist/sigpro-ui.esm.js +++ b/dist/sigpro-ui.esm.js @@ -13,9 +13,68 @@ var __export = (target, all) => { }); }; -// components/Accordion.js -var exports_Accordion = {}; -__export(exports_Accordion, { +// components/All.js +var exports_All = {}; +__export(exports_All, { + listKey: () => listKey, + isFn: () => isFn, + getBy: () => getBy, + get: () => get, + filterBy: () => filterBy, + cls: () => cls, + Tooltip: () => Tooltip, + Toggle: () => Toggle, + Toast: () => Toast, + Timeline: () => Timeline, + Textarea: () => Textarea, + TextRotate: () => TextRotate, + Tabs: () => Tabs, + Table: () => Table, + Swap: () => Swap, + Steps: () => Steps, + Step: () => Step, + Stack: () => Stack, + SkeletonText: () => SkeletonText, + Skeleton: () => Skeleton, + Select: () => Select, + Rating: () => Rating, + Range: () => Range, + Radio: () => Radio, + Radial: () => Radial, + Progress: () => Progress, + Navbar: () => Navbar, + Modal: () => Modal, + Menu: () => Menu, + Loading: () => Loading, + Kbd: () => Kbd, + Input: () => Input, + Indicator: () => Indicator, + Icon: () => Icon, + Fileinput: () => Fileinput, + Fieldset: () => Fieldset, + Fab: () => Fab, + Dropdown: () => Dropdown, + Drawer: () => Drawer, + Divider: () => Divider, + Datepicker: () => Datepicker, + Colorpicker: () => Colorpicker, + Checkbox: () => Checkbox, + ChatImage: () => ChatImage, + ChatHeader: () => ChatHeader, + ChatFooter: () => ChatFooter, + ChatBubble: () => ChatBubble, + Chat: () => Chat, + CarouselItem: () => CarouselItem, + Carousel: () => Carousel, + CardTitle: () => CardTitle, + CardBody: () => CardBody, + CardActions: () => CardActions, + Card: () => Card, + Calendar: () => Calendar, + Button: () => Button, + Badge: () => Badge, + Autocomplete: () => Autocomplete, + Alert: () => Alert, Accordion: () => Accordion }); @@ -451,190 +510,441 @@ if (typeof window < "u") window[e] = (o, n) => O(e, o, n); }); -// components/Accordion.js -var Accordion = (props, children) => { - const name = props.name || `accordion-${Math.random().toString(36).slice(2, 9)}`; - if (props.items && Array.isArray(props.items)) { - return O("div", { class: `space-y-2 ${props.class ?? ""}` }, props.items.map((item) => O("div", { class: `collapse ${item.class ?? ""}` }, [ - O("input", { type: "radio", name, checked: item.open }), - O("div", { class: "collapse-title text-xl font-medium" }, item.title), - O("div", { class: "collapse-content" }, children) - ]))); - } - return O("div", { class: `collapse ${props.class ?? ""}` }, [ - O("input", { type: "radio", name, checked: props.open }), - O("div", { class: "collapse-title text-xl font-medium" }, props.title), - O("div", { class: "collapse-content" }, children) - ]); -}; - -// components/Alert.js -var exports_Alert = {}; -__export(exports_Alert, { - Alert: () => Alert -}); -var Alert = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `alert ${props.class ?? ""}` }, children); -}; - -// components/Autocomplete.js -var exports_Autocomplete = {}; -__export(exports_Autocomplete, { - Autocomplete: () => Autocomplete -}); -var Autocomplete = (props) => { - const query = S(""); - const isOpen = S(false); - const cursor = S(-1); - const filteredItems = S([]); - R(() => { - const v2 = typeof props.value === "function" ? props.value() : props.value; - return v2 || ""; - }, (newVal) => setTimeout(() => query(newVal), 0)); - R(() => { - const q2 = String(query()).toLowerCase(); - const allItems = typeof props.items === "function" ? props.items() : props.items; - const filtered = q2 ? allItems.filter((item) => (typeof item === "string" ? item : item.label).toLowerCase().includes(q2)) : allItems; - filteredItems(filtered); +// components/All.js +var get = (val) => typeof val === "function" ? val() : val; +var getBy = (item, field = "label") => item && typeof item === "object" ? item[field] : item; +var cls = (...classes) => classes.filter(Boolean).join(" ").trim(); +var isFn = (f) => typeof f === "function"; +var filterBy = (items, query, field = "label") => { + const searchTerm = String(query).toLowerCase(); + const list = get(items); + return !searchTerm ? list : list.filter((item) => { + const text = item && typeof item === "object" ? item[field] : item; + return String(text).toLowerCase().includes(searchTerm); }); - const pick = (item) => { - const display = typeof item === "string" ? item : item.label; - const actual = typeof item === "string" ? item : item.value; - query(display); - if (typeof props.value === "function") - props.value(actual); - props.onselect?.(item); - isOpen(false); - cursor(-1); +}; +var listKey = (items, isOpen) => { + const cursor = S(-1); + R(() => { + if (!get(isOpen)) + cursor(-1); + }); + const onKey = (e, select) => { + const list = get(items), i = cursor(), len = list.length; + if (!len) + return; + const k2 = e.key; + k2 === "ArrowDown" ? (e.preventDefault(), isOpen(true), cursor(Math.min(i + 1, len - 1))) : k2 === "ArrowUp" ? (e.preventDefault(), cursor(Math.max(i - 1, 0))) : k2 === "Enter" ? i >= 0 && (e.preventDefault(), select(list[i])) : k2 === "Escape" && isOpen(false); }; - const handleKeyDown = (e) => { - const list = filteredItems(); - if (e.key === "ArrowDown") { - e.preventDefault(); - isOpen(true); - cursor(Math.min(cursor() + 1, list.length - 1)); - } else if (e.key === "ArrowUp") { - e.preventDefault(); - cursor(Math.max(cursor() - 1, 0)); - } else if (e.key === "Enter" && cursor() >= 0) { - e.preventDefault(); - pick(list[cursor()]); - } else if (e.key === "Escape") { - isOpen(false); - } + return { cursor, onKey }; +}; +var Alert = (p2, c) => O("div", { ...p2, class: cls("alert", p2.class) }, c); +var Badge = (p2, c) => O("span", { ...p2, class: cls("badge", p2.class) }, c); +var Button = (p2, c) => O("button", { ...p2, class: cls("btn", p2.class) }, c); +var Card = (p2, c) => O("div", { ...p2, class: cls("card", p2.class) }, c); +var CardTitle = (p2, c) => O("div", { ...p2, class: cls("card-title", p2.class) }, c); +var CardBody = (p2, c) => O("div", { ...p2, class: cls("card-body", p2.class) }, c); +var CardActions = (p2, c) => O("div", { ...p2, class: cls("card-actions", p2.class) }, c); +var Carousel = (p2, c) => O("div", { ...p2, class: cls("carousel", p2.class) }, c); +var CarouselItem = (p2, c) => O("div", { ...p2, class: cls("carousel-item", p2.class) }, c); +var Chat = (p2, c) => O("div", { ...p2, class: cls("chat", p2.class) }, c); +var ChatBubble = (p2, c) => O("div", { ...p2, class: cls("chat-bubble", p2.class) }, c); +var ChatFooter = (p2, c) => O("div", { ...p2, class: cls("chat-footer", p2.class) }, c); +var ChatHeader = (p2, c) => O("div", { ...p2, class: cls("chat-header", p2.class) }, c); +var ChatImage = (p2, c) => O("div", { ...p2, class: cls("chat-image avatar", p2.class) }, O("div", { class: "w-10 rounded-full" }, typeof c === "string" ? O("img", { src: c, alt: "avatar" }) : c)); +var Checkbox = (p2) => O("input", { ...p2, type: "checkbox", class: cls("checkbox", p2.class) }); +var Divider = (p2) => O("div", { ...p2, class: cls("divider", p2.class) }); +var Fab = (p2, c) => O("div", { ...p2, class: cls("fab", p2.class) }, c); +var Fieldset = (p2, c) => O("fieldset", { ...p2, class: cls("fieldset", p2.class) }, [p2.legend && O("legend", { class: "fieldset-legend" }, p2.legend), c]); +var Icon = (p2) => O("span", { class: p2.startsWith("icon-") ? p2 : "" }, p2.startsWith("icon-") ? null : p2); +var Indicator = (p2, c) => O("div", { ...p2, class: cls("indicator", p2.class) }, [p2.value && O("span", { class: cls("indicator-item badge", p2.class) }, p2.value), c]); +var Kbd = (p2, c) => O("kbd", { ...p2, class: cls("kbd", p2.class) }, c); +var Loading = (p2, c) => O("span", { ...p2, class: cls("loading loading-spinner", p2.class) }, c); +var Navbar = (p2, c) => O("div", { ...p2, class: cls("navbar", p2.class) }, c); +var Progress = (p2) => O("progress", { ...p2, class: cls("progress", p2.class) }); +var Radial = (p2, c) => O("div", { ...p2, class: cls("radial-progress", p2.class), style: `--value:${p2.value ?? 0};${p2.style ?? ""}`, role: "progressbar", "aria-valuenow": p2.value ?? 0 }, c ?? `${p2.value ?? 0}%`); +var Radio = (p2) => O("input", { ...p2, type: "radio", class: cls("radio", p2.class) }); +var Range = (p2) => O("input", { ...p2, type: "range", class: cls("range", p2.class) }); +var Skeleton = (p2) => O("div", { ...p2, class: cls("skeleton", p2.class) }); +var SkeletonText = (p2) => O("span", { ...p2, class: cls("skeleton skeleton-text", p2.class) }); +var Stack = (p2, c) => O("div", { ...p2, class: cls("stack", p2.class) }, c); +var Steps = (p2, c) => O("ul", { ...p2, class: cls("steps", p2.class) }, c); +var Step = (p2, c) => O("li", { ...p2, class: cls("step", p2.class), "data-content": p2.dataContent }, c); +var Swap = (p2) => O("label", { ...p2, class: cls("swap", p2.class) }, [ + O("input", { type: "checkbox", checked: () => get(p2.value), onchange: (e) => isFn(p2.value) && p2.value(e.target.checked) }), + O("div", { class: "swap-on" }, p2.on), + O("div", { class: "swap-off" }, p2.off) +]); +var Textarea = (p2) => O("textarea", { ...p2, class: cls("textarea", p2.class) }); +var TextRotate = (p2) => { + const words = Array.isArray(p2.words) ? p2.words : typeof p2.words === "string" ? p2.words.split(",") : []; + return O("span", { ...p2, class: cls("text-rotate", p2.class) }, O("span", {}, words.map((w2) => O("span", {}, w2)))); +}; +var Timeline = (p2, c) => O("ul", { + ...p2, + class: cls("timeline", p2.vertical !== false ? "timeline-vertical" : "timeline-horizontal", p2.compact ? "timeline-compact" : "", p2.class) +}, c); +var Toggle = (p2) => O("input", { ...p2, type: "checkbox", class: cls("toggle", p2.class) }); +var Tooltip = (p2, c) => O("div", { ...p2, class: cls("tooltip", p2.class), "data-tip": p2.tip }, c); +var Accordion = (p2) => { + const name = p2.name || `acc-${Math.random().toString(36).slice(2)}`; + const base = cls("collapse", p2.variant && `collapse-${p2.variant}`, p2.class); + const itemFn = (it) => { + const t = getBy(it, "title"); + const c = it.content; + return p2.type === "details" ? O("details", { class: base, name, open: it.open || undefined }, O("summary", { class: "collapse-title font-semibold" }, t), c ? O("div", { class: "collapse-content text-sm" }, c) : null) : O("div", { class: base }, O("input", { type: "radio", name, checked: it.open || undefined }), O("div", { class: "collapse-title font-semibold" }, t), c ? O("div", { class: "collapse-content text-sm" }, c) : null); }; - return O("div", { class: `relative w-full ${props.class ?? ""}` }, [ - O("label", { class: "input input-bordered w-full" }, [ - O("span", { class: "icon-[lucide--search]" }), - O("input", { - ...props, - type: "text", - class: "grow", - placeholder: props.placeholder || "Buscar...", - value: query, - onfocus: () => isOpen(true), - onblur: () => setTimeout(() => isOpen(false), 150), - onkeydown: handleKeyDown, - oninput: (e) => { - const newVal = e.target.value; - query(newVal); - if (typeof props.value === "function") - props.value(newVal); - isOpen(true); - cursor(-1); + return isFn(p2.items) ? K(p2.items, itemFn, (it, i) => it?.id ?? i) : (p2.items || []).map(itemFn); +}; +var Table = (p2) => { + if (p2.children !== undefined) + return O("table", { class: cls("table", p2.class), ...p2 }, p2.children); + const { items, columns = [], header = true, keyFn, ...rest } = p2; + const hd = header !== false && columns.some((c) => c.label) ? O("thead", {}, O("tr", {}, columns.map((c) => O("th", { class: c.class }, c.label)))) : null; + const bd = O("tbody", {}, K(() => get(items) || [], (it, idx) => O("tr", {}, columns.map((c) => { + const v2 = c.render ? c.render(it, idx) : it[c.key]; + return O("td", { class: c.class }, v2); + })), keyFn || ((it, idx) => it?.id ?? idx))); + return O("table", { class: cls("table", rest.class), ...rest }, [hd, bd]); +}; +var Tabs = (p2) => { + if (p2.children !== undefined) + return O("div", { class: cls("tabs", p2.class), ...p2 }, p2.children); + const { items, activeIndex, onClose, ...rest } = p2; + const closeHandler = onClose || (isFn(items) ? (idx) => { + const arr = get(items); + const newArr = arr.filter((_2, i) => i !== idx); + items(newArr); + if (activeIndex() >= newArr.length) + activeIndex(Math.max(0, newArr.length - 1)); + } : null); + return O("div", { class: cls("tabs", p2.class), ...rest }, K(() => get(items) || [], (it, idx) => { + const act = () => activeIndex() === idx; + return [ + O("a", { + role: "tab", + class: () => `tab ${act() ? "tab-active" : ""} ${it.class || ""}`, + onclick: (e) => { + e.preventDefault(); + activeIndex(idx); + it.onclick?.(e); } - }) - ]), - O("ul", { - class: "absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50", - style: () => `display: ${isOpen() && filteredItems().length ? "block" : "none"};` - }, [ - K(filteredItems, (item, idx) => O("li", {}, [ - O("a", { - class: () => `block w-full ${cursor() === idx ? "active bg-primary text-primary-content" : ""}`, - onclick: () => pick(item), - onmouseenter: () => cursor(idx) - }, typeof item === "string" ? item : item.label) - ]), (item, idx) => (typeof item === "string" ? item : item.value) + idx), - () => filteredItems().length === 0 ? O("li", { class: "flex justify-center p-4 opacity-50" }, O("span", { class: "icon-[lucide--search-x] text-2xl" })) : null + }, getBy(it), it.closable ? O("span", { + class: "icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70", + onclick: (e) => { + e.stopPropagation(); + closeHandler?.(idx); + } + }) : null), + O("div", { + class: `tab-content ${it.contentClass || ""}`, + style: () => `display: ${act() ? "block" : "none"};` + }, isFn(it.content) ? it.content() : it.content) + ]; + }, (it, idx) => it.id ?? idx)); +}; +var Rating = (p2) => { + const name = `rating-${Math.random().toString(36).slice(2, 7)}`; + const stars = p2.children ?? Array.from({ length: p2.count || 5 }, (_2, i) => { + const v2 = i + 1; + return O("input", { + type: "radio", + name, + class: cls("mask", p2.mask || "mask-star"), + checked: () => get(p2.value) === v2, + onchange: () => isFn(p2.value) ? p2.value(v2) : p2.onchange?.(v2) + }); + }); + return O("div", { class: cls("rating", p2.class), ...p2 }, stars); +}; +var Menu = (p2) => { + if (p2.children !== undefined) + return O("ul", { class: cls("menu", p2.class), ...p2 }, p2.children); + const { items, keyFn = (it, idx) => it?.id ?? idx, ...rest } = p2; + const render = (item) => item.children ? O("li", {}, O("details", {}, O("summary", {}, getBy(item)), O("ul", {}, Menu({ items: item.children })))) : O("li", {}, O("a", { + href: item.href, + onclick: item.onclick ? (e) => { + if (!item.href) + e.preventDefault(); + item.onclick(e); + } : null + }, getBy(item))); + return O("ul", { class: cls("menu", rest.class), ...rest }, K(() => get(items) || [], render, keyFn)); +}; +var Drawer = (p2, c) => { + const id = p2.id || `drawer-${Math.random().toString(36).slice(2, 9)}`; + return O("div", { class: cls("drawer", p2.class) }, [ + O("input", { + id, + type: "checkbox", + class: "drawer-toggle", + checked: () => get(p2.open), + onchange: (e) => isFn(p2.open) && p2.open(e.target.checked) + }), + O("div", { class: "drawer-content" }, c), + O("div", { class: "drawer-side" }, [ + O("label", { + for: id, + class: "drawer-overlay", + onclick: () => isFn(p2.open) && p2.open(false) + }), + O("div", { class: "min-h-full bg-base-200 w-80 p-4" }, () => get(p2.side)) ]) ]); }; - -// components/Badge.js -var exports_Badge = {}; -__export(exports_Badge, { - Badge: () => Badge -}); -var Badge = (props, children) => { - children === undefined && (children = props, props = {}); - return O("span", { ...props, class: `badge ${props.class ?? ""}` }, children); +var Dropdown = (p2, c) => { + const { trigger, items, ...rest } = p2; + const content = c || (items ? O("ul", { + class: "menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow" + }, K(() => get(items) || [], (item) => O("li", {}, O("a", { + onclick: (e) => { + item.onclick?.(e); + e.currentTarget.closest("details").open = false; + } + }, getBy(item))), (it, idx) => it.id ?? idx)) : null); + return O("details", { class: cls("dropdown", rest.class), ...rest }, [ + O("summary", { class: "btn m-1" }, trigger || "Dropdown"), + content + ]); }; - -// components/button.js -var exports_button = {}; -__export(exports_button, { - Button: () => Button -}); -var Button = (props, children) => { - children === undefined && (children = props, props = {}); - return O("button", { ...props, class: `btn ${props.class ?? ""}` }, children); +var Select = (p2, c) => { + if (c !== undefined) + return O("select", { class: cls("select", p2.class), ...p2 }, c); + const { label, float, placeholder, placeholderDisabled = true, value, left, right, hint, items, keyFn, ...rest } = p2; + const opts = () => { + const raw = get(items) || []; + const ph = placeholder ? [{ disabled: placeholderDisabled, label: placeholder, value: "" }] : []; + return [...ph, ...raw]; + }; + return O("label", { class: float ? "floating-label" : "" }, [ + float && O("span", {}, label), + O("label", { class: cls("select", rest.class) }, [ + label && !float && O("span", { class: "label" }, label), + left ?? null, + O("select", { + value: () => get(value), + onchange: (e) => isFn(value) ? value(e.target.value) : rest.onchange?.(e) + }, K(opts, (item) => { + const val = getBy(item, item.value !== undefined ? "value" : undefined); + const lab = getBy(item, "label"); + return O("option", { value: val, disabled: item.disabled || undefined }, lab); + }, (it, i) => it?.id ?? (typeof it === "string" ? it : it.value) ?? i)), + right ?? null + ]), + hint && O("div", { class: "validator-hint" }, hint) + ]); }; - -// components/Calendar.js -var exports_Calendar = {}; -__export(exports_Calendar, { - Calendar: () => Calendar -}); -var Calendar = (props) => { +var Autocomplete = ({ items, value, onselect, placeholder = "Buscar...", ...props }) => { + const query = S(get(value) || ""); + const isOpen = S(false); + const filtered = S(() => filterBy(items, query())); + const { cursor, onKey } = listKey(filtered, isOpen); + const pick = (item) => { + const display = getBy(item); + const actual = typeof item === "string" ? item : item.value; + query(display); + if (isFn(value)) + value(actual); + onselect?.(item); + isOpen(false); + }; + return O("div", { class: "relative w-full" }, [ + Input({ + ...props, + type: "text", + placeholder, + value: query, + left: O("span", { class: "icon-[lucide--search]" }), + oninput: (e) => { + query(e.target.value); + if (isFn(value)) + value(e.target.value); + isOpen(true); + }, + onfocus: () => isOpen(true), + onblur: () => setTimeout(() => isOpen(false), 150), + onkeydown: (e) => onKey(e, pick) + }), + z(isOpen, () => G({ duration: 200, slide: true }, O("ul", { + class: "absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap" + }, [ + K(filtered, (item, idx) => O("li", {}, [ + O("a", { + class: () => cursor() === idx ? "active bg-primary text-primary-content" : "", + onmousedown: (e) => e.preventDefault(), + onclick: () => pick(item), + onmouseenter: () => cursor(idx) + }, getBy(item)) + ]), (item, idx) => getBy(item) + idx), + () => filtered().length === 0 ? O("li", { class: "p-4 opacity-50 text-center" }, "Sin resultados") : null + ]))) + ]); +}; +var Input = (p2) => { + const { label, icon, float, placeholder, value, left, right, rule, hint, content, ...rest } = p2; + const showPassword = S(false); + const isFocused = S(false); + const isPassword = p2.type === "password"; + const pattern = rule ?? null; + const inputType = () => isPassword ? get(showPassword) ? "text" : "password" : p2.type || "text"; + return O("div", { + class: "input-container", + onfocusin: () => isFocused(true), + onfocusout: (e) => { + if (!e.currentTarget.contains(e.relatedTarget)) { + isFocused(false); + } + } + }, [ + O("label", { class: float ? "floating-label" : "" }, [ + float ? O("span", {}, label) : null, + O("label", { pattern, class: () => cls("input validator", p2.class) }, [ + label && !float ? O("span", { class: "label" }, label) : null, + left ?? null, + O("input", { ...rest, type: inputType, class: "grow", pattern, placeholder: placeholder || label || " ", value }), + right ?? null, + isPassword ? O("label", { class: "swap swap-rotate ml-2" }, [ + O("input", { type: "checkbox", onchange: (e) => showPassword(e.target.checked) }), + O("span", { class: "swap-on icon-[lucide--eye]" }), + O("span", { class: "swap-off icon-[lucide--eye-off]" }) + ]) : null + ]), + hint ? O("div", { class: "validator-hint" }, hint) : null, + z(isFocused, () => G({ duration: 300, slide: true }, O("div", { class: "input-content", onmousedown: (e) => e.preventDefault() }, [ + isFn(content) ? content(isFocused) : content + ]))) + ]) + ]); +}; +var Colorpicker = (p2) => { + const isOpen = S(false); + const current = () => get(p2.value) || "#000000"; + const palette = [ + "#000", + "#1A1A1A", + "#333", + "#4D4D4D", + "#666", + "#808080", + "#B3B3B3", + "#FFF", + "#450a0a", + "#7f1d1d", + "#991b1b", + "#b91c1c", + "#dc2626", + "#ef4444", + "#f87171", + "#fca5a5", + "#431407", + "#7c2d12", + "#9a3412", + "#c2410c", + "#ea580c", + "#f97316", + "#fb923c", + "#ffedd5", + "#713f12", + "#a16207", + "#ca8a04", + "#eab308", + "#facc15", + "#fde047", + "#fef08a", + "#fff9c4", + "#064e3b", + "#065f46", + "#059669", + "#10b981", + "#34d399", + "#4ade80", + "#84cc16", + "#d9f99d", + "#082f49", + "#075985", + "#0284c7", + "#0ea5e9", + "#38bdf8", + "#7dd3fc", + "#22d3ee", + "#cffafe", + "#1e1b4b", + "#312e81", + "#4338ca", + "#4f46e5", + "#6366f1", + "#818cf8", + "#a5b4fc", + "#e0e7ff", + "#2e1065", + "#4c1d95", + "#6d28d9", + "#7c3aed", + "#8b5cf6", + "#a855f7", + "#d946ef", + "#fae8ff" + ]; + const pick = (c) => { + isFn(p2.value) ? p2.value(c) : p2.onchange?.(c); + isOpen(false); + }; + return O("div", { class: cls("relative w-fit", p2.class) }, [ + O("button", { + type: "button", + class: "btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case", + onclick: (e) => { + e.stopPropagation(); + isOpen(!isOpen()); + } + }, [ + O("div", { class: "size-5 rounded-sm shadow-inner border border-black/10 shrink-0", style: () => `background-color: ${current()}` }), + p2.label && O("span", { class: "opacity-80" }, p2.label) + ]), + z(isOpen, () => [ + O("div", { + class: "fixed inset-0 z-[100]", + onclick: () => isOpen(false) + }), + O("div", { class: "absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none" }, O("div", { class: "grid grid-cols-8 gap-1" }, palette.map((c) => O("button", { + type: "button", + style: `background-color: ${c}`, + class: () => { + const act = current().toLowerCase() === c.toLowerCase(); + return `size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${act ? "ring-2 ring-offset-1 ring-primary z-10 scale-110" : ""}`; + }, + onclick: () => pick(c) + })))) + ]) + ]); +}; +var Calendar = (p2) => { const internalDate = S(new Date); const hoverDate = S(null); const startHour = S(0); const endHour = S(0); - const isRangeMode = () => { - const r = typeof props.range === "function" ? props.range() : props.range; - return r === true; - }; const now = new Date; const todayStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}`; - const formatDate = (d) => { - const year = d.getFullYear(); - const month = String(d.getMonth() + 1).padStart(2, "0"); - const day = String(d.getDate()).padStart(2, "0"); - return `${year}-${month}-${day}`; - }; - const getCurrentValue = () => { - return typeof props.value === "function" ? props.value() : props.value; - }; + const fmt = (d) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`; + const rangeMode = () => get(p2.range) === true; + const current = () => get(p2.value); const selectDate = (date) => { - const dateStr = formatDate(date); - const current = getCurrentValue(); - if (isRangeMode()) { - if (!current?.start || current.start && current.end) { - const newValue = { - start: dateStr, - end: null, - ...props.hour && { startHour: startHour() } - }; - props.onChange?.(newValue); + const s = fmt(date); + const v2 = current(); + if (rangeMode()) { + if (!v2?.start || v2.start && v2.end) { + p2.onChange?.({ start: s, end: null, ...p2.hour && { startHour: startHour() } }); } else { - const start = current.start; - let newValue; - if (dateStr < start) { - newValue = { start: dateStr, end: start }; - } else { - newValue = { start, end: dateStr }; + const start = v2.start; + const nv = s < start ? { start: s, end: start } : { start, end: s }; + if (p2.hour) { + nv.startHour = v2.startHour ?? startHour(); + nv.endHour = endHour(); } - if (props.hour) { - newValue.startHour = current.startHour !== undefined ? current.startHour : startHour(); - newValue.endHour = endHour(); - } - props.onChange?.(newValue); + p2.onChange?.(nv); } } else { - const newValue = props.hour ? `${dateStr}T${String(startHour()).padStart(2, "0")}:00:00` : dateStr; - props.onChange?.(newValue); + p2.onChange?.(p2.hour ? `${s}T${String(startHour()).padStart(2, "0")}:00:00` : s); } }; const move = (m) => { @@ -645,30 +955,19 @@ var Calendar = (props) => { const d = internalDate(); internalDate(new Date(d.getFullYear() + y2, d.getMonth(), 1)); }; - const HourSlider = ({ value: hVal, onChange: onHourChange }) => { - return O("div", { class: "flex-1" }, [ - O("div", { class: "flex gap-2 items-center" }, [ - O("input", { - type: "range", - min: 0, - max: 23, - value: hVal, - class: "range range-xs flex-1", - oninput: (e) => onHourChange(parseInt(e.target.value)) - }), - O("span", { class: "text-sm font-mono min-w-[48px] text-center" }, () => String(typeof hVal === "function" ? hVal() : hVal).padStart(2, "0") + ":00") - ]) - ]); - }; - return O("div", { class: `p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none ${props.class ?? ""}`.trim() }, [ + const HourSlider = ({ value: hVal, onChange: onH }) => O("div", { class: "flex-1" }, [ + O("div", { class: "flex gap-2 items-center" }, [ + O("input", { type: "range", min: 0, max: 23, value: hVal, class: "range range-xs flex-1", oninput: (e) => onH(+e.target.value) }), + O("span", { class: "text-sm font-mono min-w-[48px] text-center" }, () => String(get(hVal)).padStart(2, "0") + ":00") + ]) + ]); + return O("div", { class: cls("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none", p2.class) }, [ O("div", { class: "flex justify-between items-center mb-4 gap-1" }, [ O("div", { class: "flex gap-0.5" }, [ O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(-1) }, O("span", { class: "icon-[lucide--chevrons-left]" })), O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(-1) }, O("span", { class: "icon-[lucide--chevron-left]" })) ]), - O("span", { class: "font-bold uppercase flex-1 text-center" }, [ - () => internalDate().toLocaleString("es-ES", { month: "short", year: "numeric" }) - ]), + O("span", { class: "font-bold uppercase flex-1 text-center" }, () => internalDate().toLocaleString("es-ES", { month: "short", year: "numeric" })), O("div", { class: "flex gap-0.5" }, [ O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(1) }, O("span", { class: "icon-[lucide--chevron-right]" })), O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(1) }, O("span", { class: "icon-[lucide--chevrons-right]" })) @@ -677,885 +976,166 @@ var Calendar = (props) => { O("div", { class: "grid grid-cols-7 gap-1", onmouseleave: () => hoverDate(null) }, [ ...["L", "M", "X", "J", "V", "S", "D"].map((d) => O("div", { class: "text-[10px] opacity-40 font-bold text-center" }, d)), () => { - const d = internalDate(); - const year = d.getFullYear(); - const month = d.getMonth(); - const firstDay = new Date(year, month, 1).getDay(); + const d = internalDate(), y2 = d.getFullYear(), m = d.getMonth(); + const firstDay = new Date(y2, m, 1).getDay(); const offset = firstDay === 0 ? 6 : firstDay - 1; - const daysInMonth = new Date(year, month + 1, 0).getDate(); + const dim = new Date(y2, m + 1, 0).getDate(); const cells = []; for (let i = 0;i < offset; i++) cells.push(O("div")); - for (let i = 1;i <= daysInMonth; i++) { - const date = new Date(year, month, i); - const dStr = formatDate(date); + for (let i = 1;i <= dim; i++) { + const date = new Date(y2, m, i), ds = fmt(date); cells.push(O("button", { type: "button", class: () => { - const v2 = getCurrentValue(); - const h = hoverDate(); - const isStart = typeof v2 === "string" ? v2.split("T")[0] === dStr : v2?.start === dStr; - const isEnd = v2?.end === dStr; + const v2 = current(), h = hoverDate(); + const isStart = typeof v2 === "string" ? v2.split("T")[0] === ds : v2?.start === ds; + const isEnd = v2?.end === ds; let inRange = false; - if (isRangeMode() && v2?.start) { + if (rangeMode() && v2?.start) { const start = v2.start; - if (!v2.end && h) { - inRange = dStr > start && dStr <= h || dStr < start && dStr >= h; - } else if (v2.end) { - inRange = dStr > start && dStr < v2.end; - } + if (!v2.end && h) + inRange = ds > start && ds <= h || ds < start && ds >= h; + else if (v2.end) + inRange = ds > start && ds < v2.end; } const base = "btn btn-xs p-0 aspect-square min-h-0 h-auto font-normal relative"; - const state = isStart || isEnd ? "btn-primary z-10" : inRange ? "bg-primary/20 border-none rounded-none" : "btn-ghost"; - const today = dStr === todayStr ? "ring-1 ring-primary ring-inset font-black text-primary" : ""; - return `${base} ${state} ${today}`.trim(); - }, - onmouseenter: () => { - if (isRangeMode()) - hoverDate(dStr); + const st = isStart || isEnd ? "btn-primary z-10" : inRange ? "bg-primary/20 border-none rounded-none" : "btn-ghost"; + const today = ds === todayStr ? "ring-1 ring-primary ring-inset font-black text-primary" : ""; + return cls(base, st, today); }, + onmouseenter: () => rangeMode() && hoverDate(ds), onclick: () => selectDate(date) }, i.toString())); } return cells; } ]), - props.hour ? O("div", { class: "mt-3 pt-2 border-t border-base-300" }, [ - isRangeMode() ? O("div", { class: "flex gap-4" }, [ - HourSlider({ value: startHour, onChange: (h) => startHour(h) }), - HourSlider({ value: endHour, onChange: (h) => endHour(h) }) - ]) : HourSlider({ value: startHour, onChange: (h) => startHour(h) }) - ]) : null + p2.hour ? O("div", { class: "mt-3 pt-2 border-t border-base-300" }, rangeMode() ? O("div", { class: "flex gap-4" }, [HourSlider({ value: startHour, onChange: (h) => startHour(h) }), HourSlider({ value: endHour, onChange: (h) => endHour(h) })]) : HourSlider({ value: startHour, onChange: (h) => startHour(h) })) : null ]); }; - -// components/card.js -var exports_card = {}; -__export(exports_card, { - CardTitle: () => CardTitle, - CardBody: () => CardBody, - CardActions: () => CardActions, - Card: () => Card -}); -var Card = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `card ${props.class ?? ""}` }, children); -}; -var CardTitle = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `card-title ${props.class ?? ""}` }, children); -}; -var CardBody = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `card-body ${props.class ?? ""}` }, children); -}; -var CardActions = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `card-actions ${props.class ?? ""}` }, children); -}; - -// components/carousel.js -var exports_carousel = {}; -__export(exports_carousel, { - CarouselItem: () => CarouselItem, - Carousel: () => Carousel -}); -var Carousel = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `carousel ${props.class ?? ""}` }, children); -}; -var CarouselItem = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `carousel-item ${props.class ?? ""}` }, children); -}; - -// components/chat.js -var exports_chat = {}; -__export(exports_chat, { - ChatMessage: () => ChatMessage, - ChatImage: () => ChatImage, - ChatHeader: () => ChatHeader, - ChatFooter: () => ChatFooter, - ChatBubble: () => ChatBubble, - Chat: () => Chat -}); -var Chat = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `chat ${props.class ?? ""}` }, children); -}; -var ChatImage = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `chat-image avatar ${props.class ?? ""}` }, O("div", { class: "w-10 rounded-full" }, typeof children === "string" ? O("img", { src: children, alt: "avatar" }) : children)); -}; -var ChatHeader = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `chat-header ${props.class ?? ""}` }, children); -}; -var ChatFooter = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `chat-footer ${props.class ?? ""}` }, children); -}; -var ChatBubble = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `chat-bubble ${props.class ?? ""}` }, children); -}; -var ChatMessage = (props) => { - const { position = "start", avatar, header, message, footer, bubbleClass, ...rest } = props; - return Chat({ ...rest, class: `chat-${position} ${props.class ?? ""}` }, [ - avatar && ChatImage(avatar), - header && ChatHeader(header), - ChatBubble({ class: bubbleClass }, message), - footer && ChatFooter(footer) - ]); -}; - -// components/checkbox.js -var exports_checkbox = {}; -__export(exports_checkbox, { - Checkbox: () => Checkbox -}); -var Checkbox = (props) => O("input", { ...props, type: "checkbox", class: `checkbox ${props.class ?? ""}` }); - -// components/colorpicker.js -var exports_colorpicker = {}; -__export(exports_colorpicker, { - Colorpicker: () => Colorpicker -}); -var Colorpicker = (props) => { +var Datepicker = (p2) => { const isOpen = S(false); - const palette = [ - ...["#000", "#1A1A1A", "#333", "#4D4D4D", "#666", "#808080", "#B3B3B3", "#FFF"], - ...["#450a0a", "#7f1d1d", "#991b1b", "#b91c1c", "#dc2626", "#ef4444", "#f87171", "#fca5a5"], - ...["#431407", "#7c2d12", "#9a3412", "#c2410c", "#ea580c", "#f97316", "#fb923c", "#ffedd5"], - ...["#713f12", "#a16207", "#ca8a04", "#eab308", "#facc15", "#fde047", "#fef08a", "#fff9c4"], - ...["#064e3b", "#065f46", "#059669", "#10b981", "#34d399", "#4ade80", "#84cc16", "#d9f99d"], - ...["#082f49", "#075985", "#0284c7", "#0ea5e9", "#38bdf8", "#7dd3fc", "#22d3ee", "#cffafe"], - ...["#1e1b4b", "#312e81", "#4338ca", "#4f46e5", "#6366f1", "#818cf8", "#a5b4fc", "#e0e7ff"], - ...["#2e1065", "#4c1d95", "#6d28d9", "#7c3aed", "#8b5cf6", "#a855f7", "#d946ef", "#fae8ff"] - ]; - const getColor = () => { - const v2 = props.value; - return (typeof v2 === "function" ? v2() : v2) || "#000000"; - }; - return O("div", { class: `relative w-fit ${props.class ?? ""}` }, [ - O("button", { - type: "button", - class: "btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case", - onclick: (e) => { - e.stopPropagation(); - isOpen(!isOpen()); - }, - ...props - }, [ - O("div", { - class: "size-5 rounded-sm shadow-inner border border-black/10 shrink-0", - style: () => `background-color: ${getColor()}` - }), - props.label ? O("span", { class: "opacity-80" }, props.label) : null - ]), - z(isOpen, () => O("div", { - class: "absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none", - onclick: (e) => e.stopPropagation() - }, [ - O("div", { class: "grid grid-cols-8 gap-1" }, palette.map((c) => O("button", { - type: "button", - style: `background-color: ${c}`, - class: () => { - const active = getColor().toLowerCase() === c.toLowerCase(); - return `size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${active ? "ring-2 ring-offset-1 ring-primary z-10 scale-110" : ""}`; - }, - onclick: () => { - if (typeof props.value === "function") - props.value(c); - isOpen(false); - } - }))) - ])), - z(isOpen, () => O("div", { - class: "fixed inset-0 z-[100]", - onclick: () => isOpen(false) - })) - ]); -}; - -// components/Datepicker.js -var exports_Datepicker = {}; -__export(exports_Datepicker, { - Datepicker: () => Datepicker -}); -var Datepicker = (props) => { - const isOpen = S(false); - const isRangeMode = () => { - const r = typeof props.range === "function" ? props.range() : props.range; - return r === true; - }; const displayValue = S(""); + const rangeMode = () => get(p2.range) === true; R(() => { - const v2 = typeof props.value === "function" ? props.value() : props.value; - if (!v2) { - displayValue(""); - return; - } + const v2 = get(p2.value); + if (!v2) + return displayValue(""); let text = ""; if (typeof v2 === "string") { - text = props.hour && v2.includes("T") ? v2.replace("T", " ") : v2; + text = p2.hour && v2.includes("T") ? v2.replace("T", " ") : v2; } else if (v2.start && v2.end) { - const startStr = props.hour && v2.startHour !== undefined ? `${v2.start} ${String(v2.startHour).padStart(2, "0")}:00` : v2.start; - const endStr = props.hour && v2.endHour !== undefined ? `${v2.end} ${String(v2.endHour).padStart(2, "0")}:00` : v2.end; + const startStr = p2.hour && v2.startHour != null ? `${v2.start} ${String(v2.startHour).padStart(2, "0")}:00` : v2.start; + const endStr = p2.hour && v2.endHour != null ? `${v2.end} ${String(v2.endHour).padStart(2, "0")}:00` : v2.end; text = `${startStr} - ${endStr}`; } else if (v2.start) { - const startStr = props.hour && v2.startHour !== undefined ? `${v2.start} ${String(v2.startHour).padStart(2, "0")}:00` : v2.start; + const startStr = p2.hour && v2.startHour != null ? `${v2.start} ${String(v2.startHour).padStart(2, "0")}:00` : v2.start; text = `${startStr}...`; } displayValue(text); }); - const handleCalendarChange = (newValue) => { - if (typeof props.value === "function") - props.value(newValue); - if (!isRangeMode() || newValue?.end !== undefined && newValue?.end !== null) { + const handleChange = (val) => { + if (isFn(p2.value)) + p2.value(val); + else + p2.onChange?.(val); + if (!rangeMode() || val?.end != null) isOpen(false); - } }; - const toggleOpen = (e) => { - e.stopPropagation(); - isOpen(!isOpen()); - }; - return O("div", { class: `relative w-full ${props.class ?? ""}` }, [ - O("label", { class: "input input-bordered w-full", onclick: toggleOpen }, [ + return O("div", { class: cls("relative w-full", p2.class) }, [ + O("label", { class: "input input-bordered w-full", onclick: (e) => { + e.stopPropagation(); + isOpen(!isOpen()); + } }, [ O("span", { class: "icon-[lucide--calendar]" }), O("input", { - ...props, + ...p2, type: "text", class: "grow", value: displayValue, readonly: true, - placeholder: props.placeholder || (isRangeMode() ? "Seleccionar rango..." : "Seleccionar fecha...") + placeholder: p2.placeholder || (rangeMode() ? "Seleccionar rango..." : "Seleccionar fecha...") }) ]), - z(isOpen, () => O("div", { - class: "absolute left-0 mt-2 z-[100]", - onclick: (e) => e.stopPropagation() - }, [ - Calendar({ - value: props.value, - range: isRangeMode(), - hour: props.hour, - onChange: handleCalendarChange - }) - ])), - z(isOpen, () => O("div", { class: "fixed inset-0 z-[90]", onclick: () => isOpen(false) })) - ]); -}; - -// components/drawer.js -var exports_drawer = {}; -__export(exports_drawer, { - Sidebar: () => Sidebar, - Drawer: () => Drawer -}); -var Drawer = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `drawer ${props.class ?? ""}` }, children); -}; -var Sidebar = (props) => { - const id = props.id || `drawer-${Math.random().toString(36).slice(2, 9)}`; - return O("div", { ...props, class: `drawer ${props.class ?? ""}` }, [ - O("input", { - id, - type: "checkbox", - class: "drawer-toggle", - checked: () => typeof props.open === "function" ? props.open() : props.open, - onchange: (e) => typeof props.open === "function" && props.open(e.target.checked) - }), - O("div", { class: "drawer-content" }, props.children), - O("div", { class: "drawer-side" }, [ - O("label", { - for: id, - class: "drawer-overlay", - onclick: () => typeof props.open === "function" && props.open(false) - }), - O("div", { class: "min-h-full bg-base-200 w-80 p-4" }, typeof props.content === "function" ? props.content() : props.content) + z(isOpen, () => [ + O("div", { class: "fixed inset-0 z-[90]", onclick: () => isOpen(false) }), + O("div", { class: "absolute left-0 mt-2 z-[100]", onclick: (e) => e.stopPropagation() }, Calendar({ value: p2.value, range: rangeMode(), hour: p2.hour, onChange: handleChange })) ]) ]); }; - -// components/dropdown.js -var exports_dropdown = {}; -__export(exports_dropdown, { - Dropdown: () => Dropdown -}); -var currentOpen = null; -if (typeof window !== "undefined" && !window.__dropdownHandlerRegistered) { - window.addEventListener("click", (e) => { - if (currentOpen && !currentOpen.contains(e.target)) { - currentOpen.open = false; - currentOpen = null; - } - }); - window.__dropdownHandlerRegistered = true; -} -var Dropdown = (props) => O("details", { - ...props, - class: `dropdown ${props.class ?? ""}`, - onclick: (e) => { - const details = e.currentTarget; - if (currentOpen && currentOpen !== details) - currentOpen.open = false; - setTimeout(() => { - currentOpen = details.open ? details : null; - }, 0); - } -}, props.children); - -// components/fab.js -var exports_fab = {}; -__export(exports_fab, { - Fab: () => Fab -}); -var Fab = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `fab ${props.class ?? ""}` }, children); -}; - -// components/fieldset.js -var exports_fieldset = {}; -__export(exports_fieldset, { - Fieldset: () => Fieldset -}); -var Fieldset = (props, children) => O("fieldset", { - ...props, - class: `fieldset ${props.class ?? ""}` -}, [ - props.legend ? O("legend", { class: "fieldset-legend" }, props.legend) : null, - children -]); - -// components/fileinput.js -var exports_fileinput = {}; -__export(exports_fileinput, { - Fileinput: () => Fileinput -}); -var Fileinput = (props) => { - const selectedFiles = S([]); - const isDragging = S(false); +var Fileinput = (p2) => { + const files = S([]); + const drag = S(false); const error = S(null); - const maxBytes = (props.max || 2) * 1024 * 1024; - const handleFiles = (files) => { - const fileList = Array.from(files); + const maxBytes = (p2.max || 2) * 1024 * 1024; + const process = (fileList) => { + const arr = Array.from(fileList); error(null); - if (fileList.find((f) => f.size > maxBytes)) { - error(`Máx ${props.max || 2}MB`); + if (arr.some((f) => f.size > maxBytes)) { + error(`Máx ${p2.max || 2}MB`); return; } - selectedFiles([...selectedFiles(), ...fileList]); - props.onselect?.(selectedFiles()); + const updated = [...files(), ...arr]; + files(updated); + if (isFn(p2.onselect)) + p2.onselect(updated); + else if (isFn(p2.value)) + p2.value(updated); }; - const removeFile = (idx) => { - const updated = selectedFiles().filter((_2, i) => i !== idx); - selectedFiles(updated); - props.onselect?.(updated); + const remove = (idx) => { + const updated = files().filter((_2, i) => i !== idx); + files(updated); + if (isFn(p2.onselect)) + p2.onselect(updated); + else if (isFn(p2.value)) + p2.value(updated); }; - return O("div", { ...props, class: `fieldset w-full p-0 ${props.class ?? ""}` }, [ + return O("div", { class: cls("fieldset w-full p-0", p2.class) }, [ O("label", { - class: () => `relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${isDragging() ? "border-primary bg-primary/10" : "border-base-content/20 bg-base-100 hover:bg-base-200"}`, + class: () => `relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${drag() ? "border-primary bg-primary/10" : "border-base-content/20 bg-base-100 hover:bg-base-200"}`, ondragover: (e) => { e.preventDefault(); - isDragging(true); + drag(true); }, - ondragleave: () => isDragging(false), + ondragleave: () => drag(false), ondrop: (e) => { e.preventDefault(); - isDragging(false); - handleFiles(e.dataTransfer.files); + drag(false); + process(e.dataTransfer.files); } }, [ O("div", { class: "flex items-center gap-3 w-full" }, [ O("span", { class: "icon-[lucide--upload]" }), O("span", { class: "text-sm opacity-70 truncate grow text-left" }, "Arrastra o selecciona archivos..."), - O("span", { class: "text-[10px] opacity-40 shrink-0" }, `Máx ${props.max || 2}MB`) + O("span", { class: "text-[10px] opacity-40 shrink-0" }, `Máx ${p2.max || 2}MB`) ]), O("input", { type: "file", multiple: true, - accept: props.accept || "*", + accept: p2.accept || "*", class: "hidden", - onchange: (e) => handleFiles(e.target.files) + onchange: (e) => process(e.target.files) }) ]), () => error() && O("span", { class: "text-[10px] text-error mt-1 px-1 font-medium" }, error()), - z(() => selectedFiles().length > 0, () => O("ul", { class: "mt-2 space-y-1" }, [ - K(selectedFiles, (file, idx) => O("li", { class: "flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300" }, [ - O("div", { class: "flex items-center gap-2 truncate" }, [ - O("span", { class: "opacity-50" }, "\uD83D\uDCC4"), - O("span", { class: "truncate font-medium max-w-[200px]" }, file.name), - O("span", { class: "text-[9px] opacity-40" }, `(${(file.size / 1024).toFixed(0)} KB)`) - ]), - O("button", { - type: "button", - class: "btn btn-ghost btn-xs btn-circle", - onclick: (e) => { - e.preventDefault(); - removeFile(idx); - } - }, O("span", { class: "icon-[lucide--x]" })) - ]), (file) => file.name + file.lastModified) - ])) - ]); -}; - -// components/icon.js -var exports_icon = {}; -__export(exports_icon, { - Icon: () => Icon -}); -var Icon = (props, children) => { - if (typeof props === "string") { - if (props.includes("icon-") || props.startsWith("lucide-")) { - return O("span", { class: props }, children); - } - return O("span", { class: "icon" }, props); - } - if (!props) - return null; - const { class: className, ...rest } = props; - return O("span", { ...rest, class: className }, children); -}; - -// components/indicator.js -var exports_indicator = {}; -__export(exports_indicator, { - Indicator: () => Indicator -}); -var Indicator = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `indicator ${props.class ?? ""}` }, [ - props.value ? O("span", { class: `indicator-item badge ${props.class ?? ""}` }, props.value) : null, - children - ]); -}; - -// components/Input.js -var exports_Input = {}; -__export(exports_Input, { - Input: () => Input -}); - -// components/_core.js -var get = (val) => typeof val === "function" ? val() : val; -var cls = (...classes) => classes.filter(Boolean).join(" ").trim(); -var isFunc = (f) => typeof f === "function"; - -// components/Input.js -var Input = (props) => { - const { label, icon, float, placeholder, value, left, right, content, ...rest } = props; - const showPassword = S(false); - const isFocused = S(false); - const isPassword = props.type === "password"; - const inputType = () => isPassword ? get(showPassword) ? "text" : "password" : props.type || "text"; - return O("div", { - class: "input-container", - onfocusin: () => isFocused(true), - onfocusout: (e) => { - if (!e.currentTarget.contains(e.relatedTarget)) { - isFocused(false); - } - } - }, [ - O("label", { class: "floating-label" }, [ - float ? O("span", {}, label) : null, - O("label", { - class: () => cls("input", props.class) - }, [ - label && !float ? O("span", { class: "label" }, label) : null, - left ?? null, - O("input", { - ...rest, - type: inputType, - class: "grow", - placeholder: placeholder || label || " ", - value - }), - right ?? null, - isPassword ? O("label", { class: "swap swap-rotate ml-2" }, [ - O("input", { - type: "checkbox", - onchange: (e) => showPassword(e.target.checked) - }), - O("span", { class: "swap-on icon-[lucide--eye]" }), - O("span", { class: "swap-off icon-[lucide--eye-off]" }) - ]) : null + z(() => files().length > 0, () => O("ul", { class: "mt-2 space-y-1" }, K(files, (file, idx) => O("li", { class: "flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300" }, [ + O("div", { class: "flex items-center gap-2 truncate" }, [ + O("span", { class: "opacity-50" }, "\uD83D\uDCC4"), + O("span", { class: "truncate font-medium max-w-[200px]" }, file.name), + O("span", { class: "text-[9px] opacity-40" }, `(${(file.size / 1024).toFixed(0)} KB)`) ]), - z(isFocused, () => G({ duration: 300, slide: true }, O("div", { - class: "input-content", - onmousedown: (e) => e.preventDefault() - }, [ - isFunc(content) ? content(isFocused) : content - ]))) - ]) - ]); -}; - -// components/kbd.js -var exports_kbd = {}; -__export(exports_kbd, { - Kbd: () => Kbd -}); -var Kbd = (props, children) => { - children === undefined && (children = props, props = {}); - return O("kbd", { ...props, class: `kbd ${props.class ?? ""}` }, children); -}; - -// components/loading.js -var exports_loading = {}; -__export(exports_loading, { - Loading: () => Loading -}); -var Loading = (props, children) => { - children === undefined && (children = props, props = {}); - return O("span", { ...props, class: `loading loading-spinner ${props.class ?? ""}` }, children); -}; - -// components/menu.js -var exports_menu = {}; -__export(exports_menu, { - MenuItems: () => MenuItems, - Menu: () => Menu -}); -var Menu = (props, children) => { - children === undefined && (children = props, props = {}); - return O("ul", { ...props, class: `menu ${props.class ?? ""}` }, children); -}; -var MenuItems = (props) => { - const { items, keyFn = (item, idx) => item.id ?? idx } = props; - const itemsSignal = typeof items === "function" ? items : () => items || []; - const renderItem = (item) => { - if (item.children) { - return O("li", {}, [ - O("details", {}, [ - O("summary", {}, item.label), - O("ul", {}, MenuItems({ items: item.children })) - ]) - ]); - } - return O("li", {}, O("a", { - href: item.href, - onclick: item.onclick ? (e) => { - if (!item.href) - e.preventDefault(); - item.onclick(e); - } : null - }, item.label)); - }; - return K(itemsSignal, renderItem, keyFn); -}; - -// components/modal.js -var exports_modal = {}; -__export(exports_modal, { - Modal: () => Modal -}); -var Modal = (props) => { - let dialogRef = null; - R(() => { - const isOpen = typeof props.open === "function" ? props.open() : props.open; - if (!dialogRef) - return; - isOpen ? dialogRef.showModal() : dialogRef.close(); - }); - const close = () => typeof props.open === "function" && props.open(false); - return O("dialog", { - ...props, - ref: (el) => dialogRef = el, - class: `modal ${props.class ?? ""}`, - onclose: close, - oncancel: close - }, [ - O("div", { class: "modal-box" }, [ - props.title && O("h3", { class: "text-lg font-bold" }, props.title), - props.children, - O("div", { class: "modal-action" }, [ - props.actions || O("button", { class: "btn", onclick: close }, "Cerrar") - ]) - ]), - O("form", { method: "dialog", class: "modal-backdrop" }, [ - O("button", {}, "close") - ]) - ]); -}; - -// components/navbar.js -var exports_navbar = {}; -__export(exports_navbar, { - Navbar: () => Navbar -}); -var Navbar = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `navbar ${props.class ?? ""}` }, children); -}; - -// components/radial.js -var exports_radial = {}; -__export(exports_radial, { - Radial: () => Radial -}); -var Radial = (props, children) => { - children === undefined && (children = props, props = {}); - const percentage = props.value != null ? props.value / (props.max || 100) * 100 : 0; - const style = `--value: ${percentage}; --max: 100;`; - return O("div", { - ...props, - class: `radial-progress ${props.class ?? ""}`, - style, - role: "progressbar", - "aria-valuenow": props.value, - "aria-valuemin": 0, - "aria-valuemax": props.max || 100 - }, children || `${Math.round(percentage)}%`); -}; - -// components/radio.js -var exports_radio = {}; -__export(exports_radio, { - Radio: () => Radio -}); -var Radio = (props) => O("input", { ...props, type: "radio", class: `radio ${props.class ?? ""}` }); - -// components/range.js -var exports_range = {}; -__export(exports_range, { - Range: () => Range -}); -var Range = (props) => O("input", { ...props, type: "range", class: `range ${props.class ?? ""}` }); - -// components/rating.js -var exports_rating = {}; -__export(exports_rating, { - Rating: () => Rating -}); -var Rating = (props, children) => { - children === undefined && (children = props, props = {}); - const name = `rating-${Math.random().toString(36).slice(2, 7)}`; - return O("div", { ...props, class: `rating ${props.class ?? ""}` }, children || Array.from({ length: props.count || 5 }, (_2, i) => { - const starValue = i + 1; - return O("input", { - type: "radio", - name, - class: `mask ${props.mask || "mask-star"}`, - checked: () => typeof props.value === "function" ? props.value() === starValue : props.value === starValue, - onchange: () => { - if (props.onchange) - props.onchange(starValue); - else if (typeof props.value === "function") - props.value(starValue); - } - }); - })); -}; - -// components/skeleton.js -var exports_skeleton = {}; -__export(exports_skeleton, { - SkeletonText: () => SkeletonText, - Skeleton: () => Skeleton -}); -var Skeleton = (props) => O("div", { ...props, class: `skeleton ${props.class ?? ""}` }); -var SkeletonText = (props) => { - return O("div", { ...props, class: "space-y-2" }, Array.from({ length: props.lines || 3 }, () => O("div", { class: `skeleton h-4 w-full ${props.class ?? ""}` }))); -}; - -// components/select.js -var exports_select = {}; -__export(exports_select, { - SelectLabel: () => SelectLabel, - SelectItems: () => SelectItems, - Select: () => Select -}); -var Select = (props, children) => { - children === undefined && (children = props, props = {}); - return O("select", { ...props, class: `select ${props.class ?? ""}` }, children); -}; -var SelectItems = (props) => { - const placeholderOption = props.placeholder ? O("option", { disabled: props.placeholderDisabled ?? true, selected: true }, props.placeholder) : null; - const dynamicOptions = K(() => [...typeof props.items === "function" ? props.items() : props.items || []], (item) => { - const val = typeof item === "string" ? item : item.value; - const label = typeof item === "string" ? item : item.label; - return O("option", { value: val }, label); - }, props.keyFn || ((item) => typeof item === "string" ? item : item.value)); - return placeholderOption ? [placeholderOption, dynamicOptions] : dynamicOptions; -}; -var SelectLabel = (props, children) => O("label", { class: `${props.float ? "floating-label" : "select"}` }, [ - O("span", { class: props.float ? "" : "label opacity-50" }, props.label), - props.left ?? null, - O("select", { ...props, class: `${props.float ? "select" : ""} ${props.class ?? ""}` }, children), - props.right ?? null -]); - -// components/stack.js -var exports_stack = {}; -__export(exports_stack, { - Stack: () => Stack -}); -var Stack = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `stack ${props.class ?? ""}` }, children); -}; - -// components/stat.js -var exports_stat = {}; -__export(exports_stat, { - Stats: () => Stats, - Stat: () => Stat -}); -var Stats = (props, children) => { - children === undefined && (children = props, props = {}); - const direction = props.vertical ? "stats-vertical" : "stats-horizontal"; - return O("div", { ...props, class: `stats ${direction} ${props.class ?? ""}`.trim() }, children); -}; -var Stat = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `stat ${props.class ?? ""}` }, [ - props.icon && O("div", { class: "stat-figure" }, props.icon), - props.label && O("div", { class: "stat-title" }, props.label), - props.value && O("div", { class: "stat-value" }, props.value), - props.desc && O("div", { class: "stat-desc" }, props.desc), - props.actions && O("div", { class: "stat-actions" }, props.actions), - children - ]); -}; - -// components/swap.js -var exports_swap = {}; -__export(exports_swap, { - Swap: () => Swap -}); -var Swap = (props) => { - return O("label", { ...props, class: `swap ${props.class ?? ""}` }, [ - O("input", { - type: "checkbox", - checked: () => typeof props.value === "function" ? props.value() : props.value, - onchange: (e) => typeof props.value === "function" && props.value(e.target.checked) - }), - O("div", { class: "swap-on" }, props.on), - O("div", { class: "swap-off" }, props.off) - ]); -}; - -// components/table.js -var exports_table = {}; -__export(exports_table, { - TableItems: () => TableItems, - Table: () => Table -}); -var Table = (props, children) => { - children === undefined && (children = props, props = {}); - return O("table", { ...props, class: `table ${props.class ?? ""}` }, children); -}; -var TableItems = (props) => { - const itemArray = typeof props.items === "function" ? props.items() : props.items || []; - const thead = props.header !== false && props.columns?.some((col) => col.label) ? O("thead", {}, O("tr", {}, props.columns.map((col) => O("th", { class: col.class }, col.label)))) : null; - const tbody = O("tbody", {}, [ - K(itemArray, (item, idx) => O("tr", {}, props.columns.map((col) => { - const content = col.render ? col.render(item, idx) : item[col.key]; - return O("td", { class: col.class }, content); - })), props.keyFn || ((item, idx) => item.id ?? idx)) - ]); - return [thead, tbody]; -}; - -// components/tabs.js -var exports_tabs = {}; -__export(exports_tabs, { - Tabs: () => Tabs, - TabItems: () => TabItems, - TabContent: () => TabContent, - TabClose: () => TabClose, - Tab: () => Tab -}); -var Tabs = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `tabs ${props.class ?? ""}` }, children); -}; -var Tab = (props, children) => { - children === undefined && (children = props, props = {}); - return O("a", { ...props, role: "tab", class: `tab ${props.class ?? ""}` }, children); -}; -var TabContent = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `tab-content ${props.class ?? ""}` }, children); -}; -var TabClose = (props) => O("a", { ...props, role: "tab", class: `tab ${props.class ?? ""}` }, [ - O("span", { class: "flex items-center" }, [ - props.label, - O("span", { - class: "icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70", - onclick: (e) => { - e.stopPropagation(); - props.onClose?.(e); - } - }) - ]) -]); -var TabItems = (props) => { - const items = typeof props.items === "function" ? props.items : () => props.items || []; - return K(items, (item, idx) => { - const TabComp = item.closable ? TabClose : Tab; - return [ - TabComp({ - ...item, - class: () => props.activeIndex() === idx ? `tab-active ${item.class ?? ""}` : item.class, + O("button", { + type: "button", + class: "btn btn-ghost btn-xs btn-circle", onclick: (e) => { e.preventDefault(); - props.activeIndex(idx); - item.onclick?.(e); - }, - onClose: () => props.onClose?.(idx, item) - }), - TabContent({ - style: () => `display: ${props.activeIndex() === idx ? "block" : "none"};` - }, typeof item.content === "function" ? item.content() : item.content) - ]; - }, (item, idx) => item.id ?? idx); -}; - -// components/textarea.js -var exports_textarea = {}; -__export(exports_textarea, { - Textarea: () => Textarea -}); -var Textarea = (props) => O("textarea", { ...props, class: `textarea ${props.class ?? ""}` }); - -// components/textrotate.js -var exports_textrotate = {}; -__export(exports_textrotate, { - TextRotate: () => TextRotate -}); -var TextRotate = (props) => { - const wordsArray = Array.isArray(props.words) ? props.words : typeof props.words === "string" ? props.words.split(",") : []; - return O("span", { ...props, class: `text-rotate ${props.class ?? ""}` }, [ - O("span", {}, wordsArray.map((word) => O("span", {}, word))) + remove(idx); + } + }, O("span", { class: "icon-[lucide--x]" })) + ]), (file) => file.name + file.lastModified))) ]); }; - -// components/timeline.js -var exports_timeline = {}; -__export(exports_timeline, { - Timeline: () => Timeline -}); -var Timeline = (props, children) => { - children === undefined && (children = props, props = {}); - const vertical = props.vertical !== false; - const compact = props.compact === true; - return O("ul", { - ...props, - class: `timeline ${vertical ? "timeline-vertical" : "timeline-horizontal"} ${compact ? "timeline-compact" : ""} ${props.class ?? ""}`.trim() - }, children); -}; - -// components/toast.js -var exports_toast = {}; -__export(exports_toast, { - Toast: () => Toast -}); var Toast = (message, type = "alert-success", duration = 3500) => { let container = document.getElementById("sigpro-toast-container"); if (!container) { @@ -1565,54 +1145,213 @@ var Toast = (message, type = "alert-success", duration = 3500) => { }); document.body.appendChild(container); } - const toastHost = O("div", { style: "display: contents" }); - container.appendChild(toastHost); - let timeoutId; - const close = () => { - clearTimeout(timeoutId); - const el = toastHost.firstElementChild; - if (el && !el.classList.contains("opacity-0")) { - el.classList.add("translate-x-full", "opacity-0"); + const host = O("div", { style: "display: contents" }); + container.appendChild(host); + let closeFn, timer, enterTimer; + const ToastComponent = () => { + const visible = S(false); + const leaving = S(false); + closeFn = () => { + if (leaving()) + return; + clearTimeout(timer); + clearTimeout(enterTimer); + leaving(true); setTimeout(() => { instance.destroy(); - toastHost.remove(); + host.remove(); if (!container.hasChildNodes()) container.remove(); }, 300); - } else { - instance.destroy(); - toastHost.remove(); - } - }; - const ToastComponent = () => { - const closeIcon = O("span", { class: "icon-[lucide--x]" }); - const closeBtn = O("button", { - class: "btn btn-xs btn-circle btn-ghost", - onclick: close - }, closeIcon); - const alertDiv = O("div", { - class: `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto` + }; + enterTimer = setTimeout(() => visible(true), 0); + const content = typeof message === "function" ? get(message) : message; + const msgNode = typeof content === "string" ? O("span", {}, content) : content; + return O("div", { + class: () => { + if (leaving()) + return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`; + if (visible()) + return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`; + return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`; + } }, [ - O("span", {}, typeof message === "function" ? message() : message), - closeBtn + msgNode, + O("button", { + class: "btn btn-xs btn-circle btn-ghost", + onclick: closeFn + }, O("span", { class: "icon-[lucide--x]" })) ]); - requestAnimationFrame(() => alertDiv.classList.remove("translate-x-10", "opacity-0")); - return alertDiv; }; - const instance = H(ToastComponent, toastHost); + const instance = H(ToastComponent, host); if (duration > 0) - timeoutId = setTimeout(close, duration); - return close; + timer = setTimeout(closeFn, duration); + return closeFn; +}; +var Modal = (p2) => { + let dialogRef = null; + R(() => { + const isOpen = get(p2.open); + if (!dialogRef) + return; + isOpen ? dialogRef.showModal() : dialogRef.close(); + }); + const close = () => isFn(p2.open) && p2.open(false); + return O("dialog", { + ...p2, + ref: (el) => dialogRef = el, + class: cls("modal", p2.class), + onclose: close, + oncancel: close + }, [ + O("div", { class: "modal-box" }, [ + p2.title && O("h3", { class: "text-lg font-bold" }, p2.title), + p2.children, + O("div", { class: "modal-action" }, [ + p2.actions || Button({ class: "btn", onclick: close }, "Cerrar") + ]) + ]), + O("form", { method: "dialog", class: "modal-backdrop" }, [ + O("button", {}, "close") + ]) + ]); }; -// components/tooltip.js -var exports_tooltip = {}; -__export(exports_tooltip, { - Tooltip: () => Tooltip +// components/Editor.js +var exports_Editor = {}; +__export(exports_Editor, { + Editor: () => Editor }); -var Tooltip = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `tooltip ${props.class ?? ""}`, "data-tip": props.tip }, children); +var Editor = (p2) => { + const { value, class: extraClass } = p2; + let editorRef = null; + const isSource = S(false); + const source = S(""); + const notify = () => { + if (!editorRef) + return; + const html = editorRef.innerHTML; + if (isFn(value)) + value(html); + else + p2.onchange?.(html); + }; + const exec = (cmd, val = null) => { + if (!editorRef) + return; + editorRef.focus(); + document.execCommand(cmd, false, val); + notify(); + }; + const queryState = (cmd, val = null) => { + if (!editorRef) + return false; + try { + if (cmd === "formatBlock") { + const sel = window.getSelection(); + if (!sel.rangeCount) + return false; + let node = sel.getRangeAt(0).commonAncestorContainer; + while (node && node !== editorRef) { + if (node.nodeType === 1 && node.tagName === val) + return true; + node = node.parentNode; + } + return false; + } + return document.queryCommandState(cmd); + } catch (e) { + return false; + } + }; + const toolbar = O("div", { class: "flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200" }, [ + O("div", { class: "flex flex-wrap gap-1 flex-1" }, [ + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState("bold") ? "btn-active" : ""}`, + onclick: () => exec("bold") + }, O("span", { class: "icon-[lucide--bold]" })), + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState("italic") ? "btn-active" : ""}`, + onclick: () => exec("italic") + }, O("span", { class: "icon-[lucide--italic]" })), + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState("underline") ? "btn-active" : ""}`, + onclick: () => exec("underline") + }, O("span", { class: "icon-[lucide--underline]" })), + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState("strikeThrough") ? "btn-active" : ""}`, + onclick: () => exec("strikeThrough") + }, O("span", { class: "icon-[lucide--strikethrough]" })), + O("span", { class: "w-px h-5 bg-base-300 mx-1" }), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertUnorderedList") }, O("span", { class: "icon-[lucide--list]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertOrderedList") }, O("span", { class: "icon-[lucide--list-ordered]" })), + O("span", { class: "w-px h-5 bg-base-300 mx-1" }), + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState("formatBlock", "BLOCKQUOTE") ? "btn-active" : ""}`, + onclick: () => exec("formatBlock", queryState("formatBlock", "BLOCKQUOTE") ? "P" : "BLOCKQUOTE") + }, O("span", { class: "icon-[lucide--quote]" })), + O("span", { class: "w-px h-5 bg-base-300 mx-1" }), + O("select", { class: "select select-xs w-16", onchange: (e) => exec("fontSize", e.target.value), value: "3" }, [ + O("option", { value: "1" }, "1"), + O("option", { value: "2" }, "2"), + O("option", { value: "3" }, "3"), + O("option", { value: "4" }, "4"), + O("option", { value: "5" }, "5"), + O("option", { value: "6" }, "6"), + O("option", { value: "7" }, "7") + ]), + O("span", { class: "w-px h-5 bg-base-300 mx-1" }), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("undo") }, O("span", { class: "icon-[lucide--undo-2]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("redo") }, O("span", { class: "icon-[lucide--redo-2]" })) + ]), + O("div", { class: "flex" }, [ + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${isSource() ? "btn-active" : ""}`, + onclick: () => { + const wasSource = isSource(); + if (!wasSource) { + source(editorRef?.innerHTML || ""); + } else { + if (editorRef) { + editorRef.innerHTML = source(); + notify(); + } + } + isSource(!wasSource); + } + }, O("span", { class: "icon-[lucide--code-2]" })) + ]) + ]); + return O("div", { class: cls("border border-base-300 rounded-box bg-base-100 overflow-hidden", extraClass) }, [ + toolbar, + O("div", { class: "relative" }, [ + O("div", { + ref: (el) => { + if (!editorRef && el) { + editorRef = el; + el.innerHTML = get(value) || ""; + } + }, + style: () => `min-height:10rem;${isSource() ? "display:none" : ""}`, + class: "p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]", + contenteditable: "true", + oninput: notify, + onpaste: () => setTimeout(notify, 0) + }), + O("textarea", { + class: "w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0", + style: () => isSource() ? "" : "display:none", + value: source, + oninput: (e) => source(e.target.value) + }) + ]) + ]); }; // utils.js @@ -1640,48 +1379,8 @@ var tt = (t) => () => i18n[currentLocale()][t] || t; // index.js var Components = { - ...exports_Accordion, - ...exports_Alert, - ...exports_Autocomplete, - ...exports_Badge, - ...exports_button, - ...exports_Calendar, - ...exports_card, - ...exports_carousel, - ...exports_chat, - ...exports_checkbox, - ...exports_colorpicker, - ...exports_Datepicker, - ...exports_drawer, - ...exports_dropdown, - ...exports_fab, - ...exports_fieldset, - ...exports_fileinput, - ...exports_icon, - ...exports_indicator, - ...exports_Input, - ...exports_kbd, - ...exports_loading, - ...exports_menu, - ...exports_modal, - ...exports_navbar, - ...exports_radial, - ...exports_radio, - ...exports_range, - ...exports_rating, - ...exports_skeleton, - ...exports_select, - ...exports_stack, - ...exports_stat, - ...exports_stat, - ...exports_swap, - ...exports_table, - ...exports_tabs, - ...exports_textarea, - ...exports_textrotate, - ...exports_timeline, - ...exports_toast, - ...exports_tooltip + ...exports_All, + ...exports_Editor }; var Utils = { Locale, diff --git a/dist/sigpro-ui.esm.min.js b/dist/sigpro-ui.esm.min.js index 840c7e8..6228c8e 100644 --- a/dist/sigpro-ui.esm.min.js +++ b/dist/sigpro-ui.esm.min.js @@ -1 +1 @@ -var ft=Object.defineProperty;var dt=(e)=>e;function mt(e,t){this[e]=dt.bind(null,t)}var m=(e,t)=>{for(var a in t)ft(e,a,{get:t[a],enumerable:!0,configurable:!0,set:mt.bind(t,a)})};var ee={};m(ee,{Accordion:()=>wt});var E=(e)=>typeof e==="function",G=(e)=>e&&typeof e==="object",I=Array.isArray,D=typeof document<"u"?document:null,qe=(e)=>e?._isRuntime?e.container:e instanceof Node?e:D.createTextNode(e==null?"":String(e)),x=null,S=null,H=!1,O=0,q=new Set,Ke=new WeakMap,U=Symbol("iter"),X=new WeakMap,F=(e)=>{if(!e||e._disposed)return;e._disposed=!0;let t=[e];while(t.length){let a=t.pop();if(a._cleanups)a._cleanups.forEach((s)=>s()),a._cleanups.clear();if(a._children)a._children.forEach((s)=>t.push(s)),a._children.clear();if(a._deps)a._deps.forEach((s)=>s.delete(a)),a._deps.clear()}},L=(e)=>{if(S)(S._cleanups||=new Set).add(e)},gt=(e)=>{let t=x;x=null;try{return e()}finally{x=t}},j=(e,t=!1)=>{let a=()=>{if(a._disposed)return;if(a._deps)a._deps.forEach((r)=>r.delete(a));if(a._cleanups)a._cleanups.forEach((r)=>r()),a._cleanups.clear();let s=x,c=S;x=S=a;try{return a._result=e()}catch(r){console.error("[SigPro]",r)}finally{x=s,S=c}};if(a._deps=a._cleanups=a._children=null,a._disposed=!1,a._isComputed=t,a._depth=x?x._depth+1:0,a._mounts=[],a._parent=S,S)(S._children||=new Set).add(a);return a},Ye=()=>{if(H)return;H=!0;let e=Array.from(q).sort((t,a)=>t._depth-a._depth);q.clear();for(let t of e)if(!t._disposed)t();H=!1},ht=(e)=>{O++;try{return e()}finally{if(O--,O===0&&q.size>0&&!H)Ye()}},T=(e,t=!1)=>{if(!t&&x&&!x._disposed)e.add(x),(x._deps||=new Set).add(e);else if(t&&e.size>0){let a=!1;for(let s of e){if(s===x||s._disposed)continue;if(s._isComputed){if(s._dirty=!0,s._subs)T(s._subs,!0)}else q.add(s),a=!0}if(a&&!H&&O===0)queueMicrotask(Ye)}},h=(e,t=null)=>{let a=new Set;if(E(e)){let s,c=()=>{if(c._dirty){let r=x;x=c;try{let l=e();if(!Object.is(s,l))s=l,T(a,!0)}finally{x=r}c._dirty=!1}return T(a),s};if(c._isComputed=!0,c._subs=a,c._dirty=!0,c._deps=null,c._disposed=!1,c.stop=()=>{},S)L(c.stop);return c}if(t)try{e=JSON.parse(localStorage.getItem(t))??e}catch(s){}return(...s)=>{if(s.length){let c=E(s[0])?s[0](e):s[0];if(!Object.is(e,c)){if(e=c,t)localStorage.setItem(t,JSON.stringify(e));T(a,!0)}}return T(a),e}},Je=(e)=>{if(!G(e))return e;let t=Ke.get(e);if(t)return t;let a=new Map,s=(r)=>{let l=a.get(r);if(!l)a.set(r,l=new Set);return l},c=new Proxy(e,{get(r,l,o){if(typeof l!=="symbol")T(s(l));return Je(Reflect.get(r,l,o))},set(r,l,o,i){let u=Reflect.has(r,l),f=Reflect.get(r,l,i),g=Reflect.set(r,l,o,i);if(g&&!Object.is(f,o)){if(T(s(l),!0),!u)T(s(U),!0)}return g},deleteProperty(r,l){let o=Reflect.deleteProperty(r,l);if(o)T(s(l),!0),T(s(U),!0);return o},ownKeys(r){return T(s(U)),Reflect.ownKeys(r)}});return Ke.set(e,c),c},_=(e,t)=>{if(t===void 0){let s=j(e);return s(),()=>F(s)}let a=j(()=>{let s=Array.isArray(e)?e.map((c)=>c()):e();gt(()=>t(s))});return a(),()=>F(a)},Q=(e)=>{if(!e)return;if(e._cleanups)e._cleanups.forEach((t)=>t()),e._cleanups.clear();if(e._ownerEffect)F(e._ownerEffect);if(e.childNodes)e.childNodes.forEach((t)=>Q(t))},bt=/^\s*(javascript|data|vbscript):/i,yt=(e)=>e==="src"||e==="href"||e.startsWith("on"),We=(e,t)=>{if(t==null||t===!1)return null;if(yt(e)){let a=String(t);if(bt.test(a))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return t},n=(e,t={},a=[])=>{if(t instanceof Node||I(t)||!G(t))a=t,t={};if(E(e)){let l=j(()=>{let f=e(t,{children:a,emit:(g,...b)=>t[`on${g[0].toUpperCase()}${g.slice(1)}`]?.(...b)});return l._result=f,f});l();let o=l._result;if(o==null)return null;let i=o instanceof Node||I(o)&&o.every((f)=>f instanceof Node)?o:D.createTextNode(String(o)),u=(f)=>{if(G(f)&&!f._isRuntime)f._mounts=l._mounts||[],f._cleanups=l._cleanups||new Set,f._ownerEffect=l};return I(i)?i.forEach(u):u(i),i}let s=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(e),c=s?D.createElementNS("http://www.w3.org/2000/svg",e):D.createElement(e);c._cleanups=new Set;for(let l in t){if(!t.hasOwnProperty(l))continue;let o=t[l];if(l==="ref"){E(o)?o(c):o.current=c;continue}if(s&&l.startsWith("xlink:")){o==null?c.removeAttributeNS("http://www.w3.org/1999/xlink",l.slice(6)):c.setAttributeNS("http://www.w3.org/1999/xlink",l.slice(6),o);continue}if(l.startsWith("on")){let i=l.slice(2).toLowerCase();c.addEventListener(i,o);let u=()=>c.removeEventListener(i,o);c._cleanups.add(u),L(u)}else if(E(o)){let i=j(()=>{let u=We(l,o());if(l==="class")c.className=u||"";else if(u==null)c.removeAttribute(l);else if(l in c&&!s)c[l]=u;else c.setAttribute(l,u===!0?"":u)});if(i(),c._cleanups.add(()=>F(i)),L(()=>F(i)),/^(INPUT|TEXTAREA|SELECT)$/.test(c.tagName)&&(l==="value"||l==="checked")){let u=l==="checked"?"change":"input";c.addEventListener(u,(f)=>o(f.target[l]))}}else{let i=We(l,o);if(i!=null)if(l in c&&!s)c[l]=i;else c.setAttribute(l,i===!0?"":i)}}let r=(l)=>{if(I(l))return l.forEach(r);if(E(l)){let o=D.createTextNode("");c.appendChild(o);let i=[],u=j(()=>{let f=l(),g=(I(f)?f:[f]).map(qe);i.forEach((v)=>{if(v._isRuntime)v.destroy();else Q(v);if(v.parentNode)v.remove()});let b=o;for(let v=g.length-1;v>=0;v--){let d=g[v];if(d.parentNode!==b.parentNode)b.parentNode?.insertBefore(d,b);if(d._mounts)d._mounts.forEach((y)=>y());b=d}i=g});u(),c._cleanups.add(()=>F(u)),L(()=>F(u))}else{let o=qe(l);if(c.appendChild(o),o._mounts)o._mounts.forEach((i)=>i())}};return r(a),c},K=(e)=>{let t=new Set,a=S,s=x,c=D.createElement("div");c.style.display="contents",c.setAttribute("role","presentation"),S={_cleanups:t},x=null;let r=(l)=>{if(!l)return;if(l._isRuntime)t.add(l.destroy),c.appendChild(l.container);else if(I(l))l.forEach(r);else c.appendChild(l instanceof Node?l:D.createTextNode(String(l==null?"":l)))};try{r(e({onCleanup:(l)=>t.add(l)}))}finally{S=a,x=s}return{_isRuntime:!0,container:c,destroy:()=>{t.forEach((l)=>l()),Q(c),c.remove()}}},p=(e,t,a=null)=>{let s=D.createTextNode(""),c=n("div",{style:"display:contents"},[s]),r=null;return _(()=>!!(E(e)?e():e),(l)=>{if(r)r.destroy(),r=null;let o=l?t:a;if(o)r=K(()=>E(o)?o():o),c.insertBefore(r.container,s)}),L(()=>r?.destroy()),c},Z=({name:e,duration:t=200,scale:a,slide:s,rotate:c,blur:r},l)=>{let o=typeof l==="function"?l():l;if(!(o instanceof Node))return o;if(e)return o.style.animation=`${e}-in ${t}ms`,o;let i=a||s||c||r,u=[a?"scale(0.95)":"",s?"translateY(-10px)":"",c?"rotate(-2deg)":""].filter(Boolean).join(" ");if(o.style.transition=`all ${t}ms ease`,o.style.opacity="0",i)o.style.transform=u;if(r)o.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(o.style.opacity="1",i)o.style.transform="none";if(r)o.style.filter="none"}),o},$=(e,t,a)=>{let s=D.createTextNode(""),c=n("div",{style:"display:contents"},[s]),r=new Map;return _(()=>(E(e)?e():e)||[],(l)=>{let o=new Map,i=[],u=l||[];for(let g=0;gt(b,g));else r.delete(v);o.set(v,d),i.push(d)}r.forEach((g)=>g.destroy());let f=s;for(let g=i.length-1;g>=0;g--){let b=i[g].container;if(b.nextSibling!==f)c.insertBefore(b,f);f=b}r=o}),c},z=(e)=>{let t=()=>window.location.hash.slice(1)||"/",a=h(t()),s=()=>a(t());window.addEventListener("hashchange",s),L(()=>window.removeEventListener("hashchange",s));let c=n("div",{class:"router-hook"}),r=null;return _([a],()=>{let l=a(),o=e.find((i)=>{let u=i.path.split("/").filter(Boolean),f=l.split("/").filter(Boolean);return u.length===f.length&&u.every((g,b)=>g[0]===":"||g===f[b])})||e.find((i)=>i.path==="*");if(o){r?.destroy();let i={};o.path.split("/").filter(Boolean).forEach((u,f)=>{if(u[0]===":")i[u.slice(1)]=l.split("/").filter(Boolean)[f]}),z.params(i),r=K(()=>E(o.component)?o.component(i):o.component),c.replaceChildren(r.container)}}),c};z.params=h({});z.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");z.back=()=>window.history.back();z.path=()=>window.location.hash.replace(/^#/,"")||"/";var vt=({url:e,method:t="GET",headers:a={}})=>{let s=h(!1),c=h(null),r=h(null),l=null,o=null;return{run:async(i=null)=>{l?.abort(),clearTimeout(o),l=new AbortController,o=setTimeout(()=>l.abort(),1e4),s(!0),c(null);try{let u=i instanceof FormData,f=await fetch(e,{method:t,headers:u?a:{"Content-Type":"application/json",...a},body:u?i:i?JSON.stringify(i):void 0,signal:l.signal}),g=await f.text(),b=g?JSON.parse(g):null;if(!f.ok)throw Error(b?.message||f.statusText);return r(b),b}catch(u){if(u.name!=="AbortError")c(u.message);throw u}finally{s(!1),clearTimeout(o),l=null,o=null}},abort:()=>l?.abort(),loading:s,error:c,data:r}},M=(e,t)=>{let a=typeof t==="string"?D.querySelector(t):t;if(!a)return;if(X.has(a))X.get(a).destroy();let s=K(E(e)?e:()=>e);return a.replaceChildren(s.container),X.set(a,s),s},xt=Object.freeze({$:h,$$:Je,watch:_,h:n,when:p,each:$,fx:Z,router:z,req:vt,mount:M,batch:ht});if(typeof window<"u")Object.assign(window,xt),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((e)=>{window[e]=(t,a)=>n(e,t,a)});var wt=(e,t)=>{let a=e.name||`accordion-${Math.random().toString(36).slice(2,9)}`;if(e.items&&Array.isArray(e.items))return n("div",{class:`space-y-2 ${e.class??""}`},e.items.map((s)=>n("div",{class:`collapse ${s.class??""}`},[n("input",{type:"radio",name:a,checked:s.open}),n("div",{class:"collapse-title text-xl font-medium"},s.title),n("div",{class:"collapse-content"},t)])));return n("div",{class:`collapse ${e.class??""}`},[n("input",{type:"radio",name:a,checked:e.open}),n("div",{class:"collapse-title text-xl font-medium"},e.title),n("div",{class:"collapse-content"},t)])};var te={};m(te,{Alert:()=>$t});var $t=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`alert ${e.class??""}`},t)};var ne={};m(ne,{Autocomplete:()=>kt});var kt=(e)=>{let t=h(""),a=h(!1),s=h(-1),c=h([]);_(()=>{return(typeof e.value==="function"?e.value():e.value)||""},(o)=>setTimeout(()=>t(o),0)),_(()=>{let o=String(t()).toLowerCase(),i=typeof e.items==="function"?e.items():e.items,u=o?i.filter((f)=>(typeof f==="string"?f:f.label).toLowerCase().includes(o)):i;c(u)});let r=(o)=>{let i=typeof o==="string"?o:o.label,u=typeof o==="string"?o:o.value;if(t(i),typeof e.value==="function")e.value(u);e.onselect?.(o),a(!1),s(-1)},l=(o)=>{let i=c();if(o.key==="ArrowDown")o.preventDefault(),a(!0),s(Math.min(s()+1,i.length-1));else if(o.key==="ArrowUp")o.preventDefault(),s(Math.max(s()-1,0));else if(o.key==="Enter"&&s()>=0)o.preventDefault(),r(i[s()]);else if(o.key==="Escape")a(!1)};return n("div",{class:`relative w-full ${e.class??""}`},[n("label",{class:"input input-bordered w-full"},[n("span",{class:"icon-[lucide--search]"}),n("input",{...e,type:"text",class:"grow",placeholder:e.placeholder||"Buscar...",value:t,onfocus:()=>a(!0),onblur:()=>setTimeout(()=>a(!1),150),onkeydown:l,oninput:(o)=>{let i=o.target.value;if(t(i),typeof e.value==="function")e.value(i);a(!0),s(-1)}})]),n("ul",{class:"absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50",style:()=>`display: ${a()&&c().length?"block":"none"};`},[$(c,(o,i)=>n("li",{},[n("a",{class:()=>`block w-full ${s()===i?"active bg-primary text-primary-content":""}`,onclick:()=>r(o),onmouseenter:()=>s(i)},typeof o==="string"?o:o.label)]),(o,i)=>(typeof o==="string"?o:o.value)+i),()=>c().length===0?n("li",{class:"flex justify-center p-4 opacity-50"},n("span",{class:"icon-[lucide--search-x] text-2xl"})):null])])};var ae={};m(ae,{Badge:()=>St});var St=(e,t)=>{return t===void 0&&(t=e,e={}),n("span",{...e,class:`badge ${e.class??""}`},t)};var se={};m(se,{Button:()=>_t});var _t=(e,t)=>{return t===void 0&&(t=e,e={}),n("button",{...e,class:`btn ${e.class??""}`},t)};var oe={};m(oe,{Calendar:()=>le});var le=(e)=>{let t=h(new Date),a=h(null),s=h(0),c=h(0),r=()=>{return(typeof e.range==="function"?e.range():e.range)===!0},l=new Date,o=`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`,i=(d)=>{let y=d.getFullYear(),w=String(d.getMonth()+1).padStart(2,"0"),k=String(d.getDate()).padStart(2,"0");return`${y}-${w}-${k}`},u=()=>{return typeof e.value==="function"?e.value():e.value},f=(d)=>{let y=i(d),w=u();if(r())if(!w?.start||w.start&&w.end){let k={start:y,end:null,...e.hour&&{startHour:s()}};e.onChange?.(k)}else{let k=w.start,B;if(y{let y=t();t(new Date(y.getFullYear(),y.getMonth()+d,1))},b=(d)=>{let y=t();t(new Date(y.getFullYear()+d,y.getMonth(),1))},v=({value:d,onChange:y})=>{return n("div",{class:"flex-1"},[n("div",{class:"flex gap-2 items-center"},[n("input",{type:"range",min:0,max:23,value:d,class:"range range-xs flex-1",oninput:(w)=>y(parseInt(w.target.value))}),n("span",{class:"text-sm font-mono min-w-[48px] text-center"},()=>String(typeof d==="function"?d():d).padStart(2,"0")+":00")])])};return n("div",{class:`p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none ${e.class??""}`.trim()},[n("div",{class:"flex justify-between items-center mb-4 gap-1"},[n("div",{class:"flex gap-0.5"},[n("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>b(-1)},n("span",{class:"icon-[lucide--chevrons-left]"})),n("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>g(-1)},n("span",{class:"icon-[lucide--chevron-left]"}))]),n("span",{class:"font-bold uppercase flex-1 text-center"},[()=>t().toLocaleString("es-ES",{month:"short",year:"numeric"})]),n("div",{class:"flex gap-0.5"},[n("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>g(1)},n("span",{class:"icon-[lucide--chevron-right]"})),n("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>b(1)},n("span",{class:"icon-[lucide--chevrons-right]"}))])]),n("div",{class:"grid grid-cols-7 gap-1",onmouseleave:()=>a(null)},[...["L","M","X","J","V","S","D"].map((d)=>n("div",{class:"text-[10px] opacity-40 font-bold text-center"},d)),()=>{let d=t(),y=d.getFullYear(),w=d.getMonth(),k=new Date(y,w,1).getDay(),B=k===0?6:k-1,rt=new Date(y,w+1,0).getDate(),W=[];for(let R=0;R{let A=u(),Y=a(),it=typeof A==="string"?A.split("T")[0]===C:A?.start===C,ut=A?.end===C,J=!1;if(r()&&A?.start){let V=A.start;if(!A.end&&Y)J=C>V&&C<=Y||C=Y;else if(A.end)J=C>V&&C{if(r())a(C)},onclick:()=>f(Oe)},R.toString()))}return W}]),e.hour?n("div",{class:"mt-3 pt-2 border-t border-base-300"},[r()?n("div",{class:"flex gap-4"},[v({value:s,onChange:(d)=>s(d)}),v({value:c,onChange:(d)=>c(d)})]):v({value:s,onChange:(d)=>s(d)})]):null])};var ce={};m(ce,{CardTitle:()=>Tt,CardBody:()=>Et,CardActions:()=>pt,Card:()=>Ct});var Ct=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`card ${e.class??""}`},t)},Tt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`card-title ${e.class??""}`},t)},Et=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`card-body ${e.class??""}`},t)},pt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`card-actions ${e.class??""}`},t)};var re={};m(re,{CarouselItem:()=>At,Carousel:()=>Dt});var Dt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`carousel ${e.class??""}`},t)},At=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`carousel-item ${e.class??""}`},t)};var ie={};m(ie,{ChatMessage:()=>Nt,ChatImage:()=>Ue,ChatHeader:()=>Xe,ChatFooter:()=>Ge,ChatBubble:()=>Qe,Chat:()=>Ve});var Ve=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`chat ${e.class??""}`},t)},Ue=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`chat-image avatar ${e.class??""}`},n("div",{class:"w-10 rounded-full"},typeof t==="string"?n("img",{src:t,alt:"avatar"}):t))},Xe=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`chat-header ${e.class??""}`},t)},Ge=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`chat-footer ${e.class??""}`},t)},Qe=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`chat-bubble ${e.class??""}`},t)},Nt=(e)=>{let{position:t="start",avatar:a,header:s,message:c,footer:r,bubbleClass:l,...o}=e;return Ve({...o,class:`chat-${t} ${e.class??""}`},[a&&Ue(a),s&&Xe(s),Qe({class:l},c),r&&Ge(r)])};var ue={};m(ue,{Checkbox:()=>Bt});var Bt=(e)=>n("input",{...e,type:"checkbox",class:`checkbox ${e.class??""}`});var fe={};m(fe,{Colorpicker:()=>Rt});var Rt=(e)=>{let t=h(!1),a=["#000","#1A1A1A","#333","#4D4D4D","#666","#808080","#B3B3B3","#FFF","#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626","#ef4444","#f87171","#fca5a5","#431407","#7c2d12","#9a3412","#c2410c","#ea580c","#f97316","#fb923c","#ffedd5","#713f12","#a16207","#ca8a04","#eab308","#facc15","#fde047","#fef08a","#fff9c4","#064e3b","#065f46","#059669","#10b981","#34d399","#4ade80","#84cc16","#d9f99d","#082f49","#075985","#0284c7","#0ea5e9","#38bdf8","#7dd3fc","#22d3ee","#cffafe","#1e1b4b","#312e81","#4338ca","#4f46e5","#6366f1","#818cf8","#a5b4fc","#e0e7ff","#2e1065","#4c1d95","#6d28d9","#7c3aed","#8b5cf6","#a855f7","#d946ef","#fae8ff"],s=()=>{let c=e.value;return(typeof c==="function"?c():c)||"#000000"};return n("div",{class:`relative w-fit ${e.class??""}`},[n("button",{type:"button",class:"btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case",onclick:(c)=>{c.stopPropagation(),t(!t())},...e},[n("div",{class:"size-5 rounded-sm shadow-inner border border-black/10 shrink-0",style:()=>`background-color: ${s()}`}),e.label?n("span",{class:"opacity-80"},e.label):null]),p(t,()=>n("div",{class:"absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none",onclick:(c)=>c.stopPropagation()},[n("div",{class:"grid grid-cols-8 gap-1"},a.map((c)=>n("button",{type:"button",style:`background-color: ${c}`,class:()=>{return`size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${s().toLowerCase()===c.toLowerCase()?"ring-2 ring-offset-1 ring-primary z-10 scale-110":""}`},onclick:()=>{if(typeof e.value==="function")e.value(c);t(!1)}})))])),p(t,()=>n("div",{class:"fixed inset-0 z-[100]",onclick:()=>t(!1)}))])};var de={};m(de,{Datepicker:()=>Ft});var Ft=(e)=>{let t=h(!1),a=()=>{return(typeof e.range==="function"?e.range():e.range)===!0},s=h("");_(()=>{let l=typeof e.value==="function"?e.value():e.value;if(!l){s("");return}let o="";if(typeof l==="string")o=e.hour&&l.includes("T")?l.replace("T"," "):l;else if(l.start&&l.end){let i=e.hour&&l.startHour!==void 0?`${l.start} ${String(l.startHour).padStart(2,"0")}:00`:l.start,u=e.hour&&l.endHour!==void 0?`${l.end} ${String(l.endHour).padStart(2,"0")}:00`:l.end;o=`${i} - ${u}`}else if(l.start)o=`${e.hour&&l.startHour!==void 0?`${l.start} ${String(l.startHour).padStart(2,"0")}:00`:l.start}...`;s(o)});let c=(l)=>{if(typeof e.value==="function")e.value(l);if(!a()||l?.end!==void 0&&l?.end!==null)t(!1)},r=(l)=>{l.stopPropagation(),t(!t())};return n("div",{class:`relative w-full ${e.class??""}`},[n("label",{class:"input input-bordered w-full",onclick:r},[n("span",{class:"icon-[lucide--calendar]"}),n("input",{...e,type:"text",class:"grow",value:s,readonly:!0,placeholder:e.placeholder||(a()?"Seleccionar rango...":"Seleccionar fecha...")})]),p(t,()=>n("div",{class:"absolute left-0 mt-2 z-[100]",onclick:(l)=>l.stopPropagation()},[le({value:e.value,range:a(),hour:e.hour,onChange:c})])),p(t,()=>n("div",{class:"fixed inset-0 z-[90]",onclick:()=>t(!1)}))])};var me={};m(me,{Sidebar:()=>Lt,Drawer:()=>It});var It=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`drawer ${e.class??""}`},t)},Lt=(e)=>{let t=e.id||`drawer-${Math.random().toString(36).slice(2,9)}`;return n("div",{...e,class:`drawer ${e.class??""}`},[n("input",{id:t,type:"checkbox",class:"drawer-toggle",checked:()=>typeof e.open==="function"?e.open():e.open,onchange:(a)=>typeof e.open==="function"&&e.open(a.target.checked)}),n("div",{class:"drawer-content"},e.children),n("div",{class:"drawer-side"},[n("label",{for:t,class:"drawer-overlay",onclick:()=>typeof e.open==="function"&&e.open(!1)}),n("div",{class:"min-h-full bg-base-200 w-80 p-4"},typeof e.content==="function"?e.content():e.content)])])};var ge={};m(ge,{Dropdown:()=>zt});var N=null;if(typeof window<"u"&&!window.__dropdownHandlerRegistered)window.addEventListener("click",(e)=>{if(N&&!N.contains(e.target))N.open=!1,N=null}),window.__dropdownHandlerRegistered=!0;var zt=(e)=>n("details",{...e,class:`dropdown ${e.class??""}`,onclick:(t)=>{let a=t.currentTarget;if(N&&N!==a)N.open=!1;setTimeout(()=>{N=a.open?a:null},0)}},e.children);var he={};m(he,{Fab:()=>Ht});var Ht=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`fab ${e.class??""}`},t)};var be={};m(be,{Fieldset:()=>jt});var jt=(e,t)=>n("fieldset",{...e,class:`fieldset ${e.class??""}`},[e.legend?n("legend",{class:"fieldset-legend"},e.legend):null,t]);var ye={};m(ye,{Fileinput:()=>Pt});var Pt=(e)=>{let t=h([]),a=h(!1),s=h(null),c=(e.max||2)*1024*1024,r=(o)=>{let i=Array.from(o);if(s(null),i.find((u)=>u.size>c)){s(`Máx ${e.max||2}MB`);return}t([...t(),...i]),e.onselect?.(t())},l=(o)=>{let i=t().filter((u,f)=>f!==o);t(i),e.onselect?.(i)};return n("div",{...e,class:`fieldset w-full p-0 ${e.class??""}`},[n("label",{class:()=>`relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${a()?"border-primary bg-primary/10":"border-base-content/20 bg-base-100 hover:bg-base-200"}`,ondragover:(o)=>{o.preventDefault(),a(!0)},ondragleave:()=>a(!1),ondrop:(o)=>{o.preventDefault(),a(!1),r(o.dataTransfer.files)}},[n("div",{class:"flex items-center gap-3 w-full"},[n("span",{class:"icon-[lucide--upload]"}),n("span",{class:"text-sm opacity-70 truncate grow text-left"},"Arrastra o selecciona archivos..."),n("span",{class:"text-[10px] opacity-40 shrink-0"},`Máx ${e.max||2}MB`)]),n("input",{type:"file",multiple:!0,accept:e.accept||"*",class:"hidden",onchange:(o)=>r(o.target.files)})]),()=>s()&&n("span",{class:"text-[10px] text-error mt-1 px-1 font-medium"},s()),p(()=>t().length>0,()=>n("ul",{class:"mt-2 space-y-1"},[$(t,(o,i)=>n("li",{class:"flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300"},[n("div",{class:"flex items-center gap-2 truncate"},[n("span",{class:"opacity-50"},"\uD83D\uDCC4"),n("span",{class:"truncate font-medium max-w-[200px]"},o.name),n("span",{class:"text-[9px] opacity-40"},`(${(o.size/1024).toFixed(0)} KB)`)]),n("button",{type:"button",class:"btn btn-ghost btn-xs btn-circle",onclick:(u)=>{u.preventDefault(),l(i)}},n("span",{class:"icon-[lucide--x]"}))]),(o)=>o.name+o.lastModified)]))])};var ve={};m(ve,{Icon:()=>Ot});var Ot=(e,t)=>{if(typeof e==="string"){if(e.includes("icon-")||e.startsWith("lucide-"))return n("span",{class:e},t);return n("span",{class:"icon"},e)}if(!e)return null;let{class:a,...s}=e;return n("span",{...s,class:a},t)};var xe={};m(xe,{Indicator:()=>qt});var qt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`indicator ${e.class??""}`},[e.value?n("span",{class:`indicator-item badge ${e.class??""}`},e.value):null,t])};var we={};m(we,{Input:()=>Kt});var Ze=(e)=>typeof e==="function"?e():e;var Me=(...e)=>e.filter(Boolean).join(" ").trim();var et=(e)=>typeof e==="function";var Kt=(e)=>{let{label:t,icon:a,float:s,placeholder:c,value:r,left:l,right:o,content:i,...u}=e,f=h(!1),g=h(!1),b=e.type==="password",v=()=>b?Ze(f)?"text":"password":e.type||"text";return n("div",{class:"input-container",onfocusin:()=>g(!0),onfocusout:(d)=>{if(!d.currentTarget.contains(d.relatedTarget))g(!1)}},[n("label",{class:"floating-label"},[s?n("span",{},t):null,n("label",{class:()=>Me("input",e.class)},[t&&!s?n("span",{class:"label"},t):null,l??null,n("input",{...u,type:v,class:"grow",placeholder:c||t||" ",value:r}),o??null,b?n("label",{class:"swap swap-rotate ml-2"},[n("input",{type:"checkbox",onchange:(d)=>f(d.target.checked)}),n("span",{class:"swap-on icon-[lucide--eye]"}),n("span",{class:"swap-off icon-[lucide--eye-off]"})]):null]),p(g,()=>Z({duration:300,slide:!0},n("div",{class:"input-content",onmousedown:(d)=>d.preventDefault()},[et(i)?i(g):i])))])])};var $e={};m($e,{Kbd:()=>Wt});var Wt=(e,t)=>{return t===void 0&&(t=e,e={}),n("kbd",{...e,class:`kbd ${e.class??""}`},t)};var ke={};m(ke,{Loading:()=>Yt});var Yt=(e,t)=>{return t===void 0&&(t=e,e={}),n("span",{...e,class:`loading loading-spinner ${e.class??""}`},t)};var Se={};m(Se,{MenuItems:()=>tt,Menu:()=>Jt});var Jt=(e,t)=>{return t===void 0&&(t=e,e={}),n("ul",{...e,class:`menu ${e.class??""}`},t)},tt=(e)=>{let{items:t,keyFn:a=(r,l)=>r.id??l}=e;return $(typeof t==="function"?t:()=>t||[],(r)=>{if(r.children)return n("li",{},[n("details",{},[n("summary",{},r.label),n("ul",{},tt({items:r.children}))])]);return n("li",{},n("a",{href:r.href,onclick:r.onclick?(l)=>{if(!r.href)l.preventDefault();r.onclick(l)}:null},r.label))},a)};var _e={};m(_e,{Modal:()=>Vt});var Vt=(e)=>{let t=null;_(()=>{let s=typeof e.open==="function"?e.open():e.open;if(!t)return;s?t.showModal():t.close()});let a=()=>typeof e.open==="function"&&e.open(!1);return n("dialog",{...e,ref:(s)=>t=s,class:`modal ${e.class??""}`,onclose:a,oncancel:a},[n("div",{class:"modal-box"},[e.title&&n("h3",{class:"text-lg font-bold"},e.title),e.children,n("div",{class:"modal-action"},[e.actions||n("button",{class:"btn",onclick:a},"Cerrar")])]),n("form",{method:"dialog",class:"modal-backdrop"},[n("button",{},"close")])])};var Ce={};m(Ce,{Navbar:()=>Ut});var Ut=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`navbar ${e.class??""}`},t)};var Te={};m(Te,{Radial:()=>Xt});var Xt=(e,t)=>{t===void 0&&(t=e,e={});let a=e.value!=null?e.value/(e.max||100)*100:0,s=`--value: ${a}; --max: 100;`;return n("div",{...e,class:`radial-progress ${e.class??""}`,style:s,role:"progressbar","aria-valuenow":e.value,"aria-valuemin":0,"aria-valuemax":e.max||100},t||`${Math.round(a)}%`)};var Ee={};m(Ee,{Radio:()=>Gt});var Gt=(e)=>n("input",{...e,type:"radio",class:`radio ${e.class??""}`});var pe={};m(pe,{Range:()=>Qt});var Qt=(e)=>n("input",{...e,type:"range",class:`range ${e.class??""}`});var De={};m(De,{Rating:()=>Zt});var Zt=(e,t)=>{t===void 0&&(t=e,e={});let a=`rating-${Math.random().toString(36).slice(2,7)}`;return n("div",{...e,class:`rating ${e.class??""}`},t||Array.from({length:e.count||5},(s,c)=>{let r=c+1;return n("input",{type:"radio",name:a,class:`mask ${e.mask||"mask-star"}`,checked:()=>typeof e.value==="function"?e.value()===r:e.value===r,onchange:()=>{if(e.onchange)e.onchange(r);else if(typeof e.value==="function")e.value(r)}})}))};var Ae={};m(Ae,{SkeletonText:()=>en,Skeleton:()=>Mt});var Mt=(e)=>n("div",{...e,class:`skeleton ${e.class??""}`}),en=(e)=>{return n("div",{...e,class:"space-y-2"},Array.from({length:e.lines||3},()=>n("div",{class:`skeleton h-4 w-full ${e.class??""}`})))};var Ne={};m(Ne,{SelectLabel:()=>an,SelectItems:()=>nn,Select:()=>tn});var tn=(e,t)=>{return t===void 0&&(t=e,e={}),n("select",{...e,class:`select ${e.class??""}`},t)},nn=(e)=>{let t=e.placeholder?n("option",{disabled:e.placeholderDisabled??!0,selected:!0},e.placeholder):null,a=$(()=>[...typeof e.items==="function"?e.items():e.items||[]],(s)=>{let c=typeof s==="string"?s:s.value,r=typeof s==="string"?s:s.label;return n("option",{value:c},r)},e.keyFn||((s)=>typeof s==="string"?s:s.value));return t?[t,a]:a},an=(e,t)=>n("label",{class:`${e.float?"floating-label":"select"}`},[n("span",{class:e.float?"":"label opacity-50"},e.label),e.left??null,n("select",{...e,class:`${e.float?"select":""} ${e.class??""}`},t),e.right??null]);var Be={};m(Be,{Stack:()=>sn});var sn=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`stack ${e.class??""}`},t)};var P={};m(P,{Stats:()=>ln,Stat:()=>on});var ln=(e,t)=>{t===void 0&&(t=e,e={});let a=e.vertical?"stats-vertical":"stats-horizontal";return n("div",{...e,class:`stats ${a} ${e.class??""}`.trim()},t)},on=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`stat ${e.class??""}`},[e.icon&&n("div",{class:"stat-figure"},e.icon),e.label&&n("div",{class:"stat-title"},e.label),e.value&&n("div",{class:"stat-value"},e.value),e.desc&&n("div",{class:"stat-desc"},e.desc),e.actions&&n("div",{class:"stat-actions"},e.actions),t])};var Re={};m(Re,{Swap:()=>cn});var cn=(e)=>{return n("label",{...e,class:`swap ${e.class??""}`},[n("input",{type:"checkbox",checked:()=>typeof e.value==="function"?e.value():e.value,onchange:(t)=>typeof e.value==="function"&&e.value(t.target.checked)}),n("div",{class:"swap-on"},e.on),n("div",{class:"swap-off"},e.off)])};var Fe={};m(Fe,{TableItems:()=>un,Table:()=>rn});var rn=(e,t)=>{return t===void 0&&(t=e,e={}),n("table",{...e,class:`table ${e.class??""}`},t)},un=(e)=>{let t=typeof e.items==="function"?e.items():e.items||[],a=e.header!==!1&&e.columns?.some((c)=>c.label)?n("thead",{},n("tr",{},e.columns.map((c)=>n("th",{class:c.class},c.label)))):null,s=n("tbody",{},[$(t,(c,r)=>n("tr",{},e.columns.map((l)=>{let o=l.render?l.render(c,r):c[l.key];return n("td",{class:l.class},o)})),e.keyFn||((c,r)=>c.id??r))]);return[a,s]};var Ie={};m(Ie,{Tabs:()=>fn,TabItems:()=>dn,TabContent:()=>at,TabClose:()=>st,Tab:()=>nt});var fn=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`tabs ${e.class??""}`},t)},nt=(e,t)=>{return t===void 0&&(t=e,e={}),n("a",{...e,role:"tab",class:`tab ${e.class??""}`},t)},at=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`tab-content ${e.class??""}`},t)},st=(e)=>n("a",{...e,role:"tab",class:`tab ${e.class??""}`},[n("span",{class:"flex items-center"},[e.label,n("span",{class:"icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70",onclick:(t)=>{t.stopPropagation(),e.onClose?.(t)}})])]),dn=(e)=>{let t=typeof e.items==="function"?e.items:()=>e.items||[];return $(t,(a,s)=>{return[(a.closable?st:nt)({...a,class:()=>e.activeIndex()===s?`tab-active ${a.class??""}`:a.class,onclick:(r)=>{r.preventDefault(),e.activeIndex(s),a.onclick?.(r)},onClose:()=>e.onClose?.(s,a)}),at({style:()=>`display: ${e.activeIndex()===s?"block":"none"};`},typeof a.content==="function"?a.content():a.content)]},(a,s)=>a.id??s)};var Le={};m(Le,{Textarea:()=>mn});var mn=(e)=>n("textarea",{...e,class:`textarea ${e.class??""}`});var ze={};m(ze,{TextRotate:()=>gn});var gn=(e)=>{let t=Array.isArray(e.words)?e.words:typeof e.words==="string"?e.words.split(","):[];return n("span",{...e,class:`text-rotate ${e.class??""}`},[n("span",{},t.map((a)=>n("span",{},a)))])};var He={};m(He,{Timeline:()=>hn});var hn=(e,t)=>{t===void 0&&(t=e,e={});let a=e.vertical!==!1,s=e.compact===!0;return n("ul",{...e,class:`timeline ${a?"timeline-vertical":"timeline-horizontal"} ${s?"timeline-compact":""} ${e.class??""}`.trim()},t)};var je={};m(je,{Toast:()=>bn});var bn=(e,t="alert-success",a=3500)=>{let s=document.getElementById("sigpro-toast-container");if(!s)s=n("div",{id:"sigpro-toast-container",class:"fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none"}),document.body.appendChild(s);let c=n("div",{style:"display: contents"});s.appendChild(c);let r,l=()=>{clearTimeout(r);let u=c.firstElementChild;if(u&&!u.classList.contains("opacity-0"))u.classList.add("translate-x-full","opacity-0"),setTimeout(()=>{if(i.destroy(),c.remove(),!s.hasChildNodes())s.remove()},300);else i.destroy(),c.remove()},i=M(()=>{let u=n("span",{class:"icon-[lucide--x]"}),f=n("button",{class:"btn btn-xs btn-circle btn-ghost",onclick:l},u),g=n("div",{class:`alert alert-soft ${t} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`},[n("span",{},typeof e==="function"?e():e),f]);return requestAnimationFrame(()=>g.classList.remove("translate-x-10","opacity-0")),g},c);if(a>0)r=setTimeout(l,a);return l};var Pe={};m(Pe,{Tooltip:()=>yn});var yn=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`tooltip ${e.class??""}`,"data-tip":e.tip},t)};var vn={es:{close:"Cerrar",confirm:"Confirmar",cancel:"Cancelar",search:"Buscar...",loading:"Cargando...",nodata:"Sin datos"},en:{close:"Close",confirm:"Confirm",cancel:"Cancel",search:"Search...",loading:"Loading...",nodata:"No data"}},lt=h("es"),ot=(e)=>lt(e),ct=(e)=>()=>vn[lt()][e]||e;var xn={...ee,...te,...ne,...ae,...se,...oe,...ce,...re,...ie,...ue,...fe,...de,...me,...ge,...he,...be,...ye,...ve,...xe,...we,...$e,...ke,...Se,..._e,...Ce,...Te,...Ee,...pe,...De,...Ae,...Ne,...Be,...P,...P,...Re,...Fe,...Ie,...Le,...ze,...He,...je,...Pe},wn={Locale:ot,tt:ct};if(typeof window<"u")Object.entries({...xn,...wn}).forEach(([e,t])=>{Object.defineProperty(window,e,{value:t,writable:!1,configurable:!0,enumerable:!0})}),console.log("SigProUI installed");export{wn as Utils,xn as Components}; +var Cn=Object.defineProperty;var Ln=(n)=>n;function Tn(n,r){this[n]=Ln.bind(null,r)}var en=(n,r)=>{for(var l in r)Cn(n,l,{get:r[l],enumerable:!0,configurable:!0,set:Tn.bind(r,l)})};var tn={};en(tn,{listKey:()=>cn,isFn:()=>S,getBy:()=>j,get:()=>N,filterBy:()=>bn,cls:()=>c,Tooltip:()=>yt,Toggle:()=>_t,Toast:()=>$t,Timeline:()=>ct,Textarea:()=>bt,TextRotate:()=>it,Tabs:()=>dt,Table:()=>Et,Swap:()=>ut,Steps:()=>at,Step:()=>ft,Stack:()=>st,SkeletonText:()=>lt,Skeleton:()=>et,Select:()=>kt,Rating:()=>gt,Range:()=>ot,Radio:()=>rt,Radial:()=>tt,Progress:()=>nt,Navbar:()=>pn,Modal:()=>At,Menu:()=>yn,Loading:()=>hn,Kbd:()=>Mn,Input:()=>wn,Indicator:()=>Fn,Icon:()=>vn,Fileinput:()=>Tt,Fieldset:()=>Dn,Fab:()=>Hn,Dropdown:()=>St,Drawer:()=>Nt,Divider:()=>On,Datepicker:()=>Lt,Colorpicker:()=>Ct,Checkbox:()=>Vn,ChatImage:()=>In,ChatHeader:()=>Yn,ChatFooter:()=>Zn,ChatBubble:()=>Xn,Chat:()=>Gn,CarouselItem:()=>Kn,Carousel:()=>Bn,CardTitle:()=>Un,CardBody:()=>qn,CardActions:()=>Qn,Card:()=>Rn,Calendar:()=>En,Button:()=>_n,Badge:()=>Pn,Autocomplete:()=>xt,Alert:()=>Jn,Accordion:()=>wt});var A=(n)=>typeof n==="function",h=(n)=>n&&typeof n==="object",q=Array.isArray,W=typeof document<"u"?document:null,ln=(n)=>n?._isRuntime?n.container:n instanceof Node?n:W.createTextNode(n==null?"":String(n)),k=null,L=null,G=!1,Z=0,Y=new Set,sn=new WeakMap,F=Symbol("iter"),M=new WeakMap,R=(n)=>{if(!n||n._disposed)return;n._disposed=!0;let r=[n];while(r.length){let l=r.pop();if(l._cleanups)l._cleanups.forEach((s)=>s()),l._cleanups.clear();if(l._children)l._children.forEach((s)=>r.push(s)),l._children.clear();if(l._deps)l._deps.forEach((s)=>s.delete(l)),l._deps.clear()}},Q=(n)=>{if(L)(L._cleanups||=new Set).add(n)},$n=(n)=>{let r=k;k=null;try{return n()}finally{k=r}},X=(n,r=!1)=>{let l=()=>{if(l._disposed)return;if(l._deps)l._deps.forEach((e)=>e.delete(l));if(l._cleanups)l._cleanups.forEach((e)=>e()),l._cleanups.clear();let s=k,f=L;k=L=l;try{return l._result=n()}catch(e){console.error("[SigPro]",e)}finally{k=s,L=f}};if(l._deps=l._cleanups=l._children=null,l._disposed=!1,l._isComputed=r,l._depth=k?k._depth+1:0,l._mounts=[],l._parent=L,L)(L._children||=new Set).add(l);return l},fn=()=>{if(G)return;G=!0;let n=Array.from(Y).sort((r,l)=>r._depth-l._depth);Y.clear();for(let r of n)if(!r._disposed)r();G=!1},An=(n)=>{Z++;try{return n()}finally{if(Z--,Z===0&&Y.size>0&&!G)fn()}},$=(n,r=!1)=>{if(!r&&k&&!k._disposed)n.add(k),(k._deps||=new Set).add(n);else if(r&&n.size>0){let l=!1;for(let s of n){if(s===k||s._disposed)continue;if(s._isComputed){if(s._dirty=!0,s._subs)$(s._subs,!0)}else Y.add(s),l=!0}if(l&&!G&&Z===0)queueMicrotask(fn)}},d=(n,r=null)=>{let l=new Set;if(A(n)){let s,f=()=>{if(f._dirty){let e=k;k=f;try{let o=n();if(!Object.is(s,o))s=o,$(l,!0)}finally{k=e}f._dirty=!1}return $(l),s};if(f._isComputed=!0,f._subs=l,f._dirty=!0,f._deps=null,f._disposed=!1,f.stop=()=>{},L)Q(f.stop);return f}if(r)try{n=JSON.parse(localStorage.getItem(r))??n}catch(s){}return(...s)=>{if(s.length){let f=A(s[0])?s[0](n):s[0];if(!Object.is(n,f)){if(n=f,r)localStorage.setItem(r,JSON.stringify(n));$(l,!0)}}return $(l),n}},un=(n)=>{if(!h(n))return n;let r=sn.get(n);if(r)return r;let l=new Map,s=(e)=>{let o=l.get(e);if(!o)l.set(e,o=new Set);return o},f=new Proxy(n,{get(e,o,a){if(typeof o!=="symbol")$(s(o));return un(Reflect.get(e,o,a))},set(e,o,a,u){let i=Reflect.has(e,o),b=Reflect.get(e,o,u),_=Reflect.set(e,o,a,u);if(_&&!Object.is(b,a)){if($(s(o),!0),!i)$(s(F),!0)}return _},deleteProperty(e,o){let a=Reflect.deleteProperty(e,o);if(a)$(s(o),!0),$(s(F),!0);return a},ownKeys(e){return $(s(F)),Reflect.ownKeys(e)}});return sn.set(n,f),f},J=(n,r)=>{if(r===void 0){let s=X(n);return s(),()=>R(s)}let l=X(()=>{let s=Array.isArray(n)?n.map((f)=>f()):n();$n(()=>r(s))});return l(),()=>R(l)},p=(n)=>{if(!n)return;if(n._cleanups)n._cleanups.forEach((r)=>r()),n._cleanups.clear();if(n._ownerEffect)R(n._ownerEffect);if(n.childNodes)n.childNodes.forEach((r)=>p(r))},jn=/^\s*(javascript|data|vbscript):/i,Wn=(n)=>n==="src"||n==="href"||n.startsWith("on"),an=(n,r)=>{if(r==null||r===!1)return null;if(Wn(n)){let l=String(r);if(jn.test(l))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${n}`),"#"}return r},t=(n,r={},l=[])=>{if(r instanceof Node||q(r)||!h(r))l=r,r={};if(A(n)){let o=X(()=>{let b=n(r,{children:l,emit:(_,...w)=>r[`on${_[0].toUpperCase()}${_.slice(1)}`]?.(...w)});return o._result=b,b});o();let a=o._result;if(a==null)return null;let u=a instanceof Node||q(a)&&a.every((b)=>b instanceof Node)?a:W.createTextNode(String(a)),i=(b)=>{if(h(b)&&!b._isRuntime)b._mounts=o._mounts||[],b._cleanups=o._cleanups||new Set,b._ownerEffect=o};return q(u)?u.forEach(i):i(u),u}let s=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(n),f=s?W.createElementNS("http://www.w3.org/2000/svg",n):W.createElement(n);f._cleanups=new Set;for(let o in r){if(!r.hasOwnProperty(o))continue;let a=r[o];if(o==="ref"){A(a)?a(f):a.current=f;continue}if(s&&o.startsWith("xlink:")){a==null?f.removeAttributeNS("http://www.w3.org/1999/xlink",o.slice(6)):f.setAttributeNS("http://www.w3.org/1999/xlink",o.slice(6),a);continue}if(o.startsWith("on")){let u=o.slice(2).toLowerCase();f.addEventListener(u,a);let i=()=>f.removeEventListener(u,a);f._cleanups.add(i),Q(i)}else if(A(a)){let u=X(()=>{let i=an(o,a());if(o==="class")f.className=i||"";else if(i==null)f.removeAttribute(o);else if(o in f&&!s)f[o]=i;else f.setAttribute(o,i===!0?"":i)});if(u(),f._cleanups.add(()=>R(u)),Q(()=>R(u)),/^(INPUT|TEXTAREA|SELECT)$/.test(f.tagName)&&(o==="value"||o==="checked")){let i=o==="checked"?"change":"input";f.addEventListener(i,(b)=>a(b.target[o]))}}else{let u=an(o,a);if(u!=null)if(o in f&&!s)f[o]=u;else f.setAttribute(o,u===!0?"":u)}}let e=(o)=>{if(q(o))return o.forEach(e);if(A(o)){let a=W.createTextNode("");f.appendChild(a);let u=[],i=X(()=>{let b=o(),_=(q(b)?b:[b]).map(ln);u.forEach((E)=>{if(E._isRuntime)E.destroy();else p(E);if(E.parentNode)E.remove()});let w=a;for(let E=_.length-1;E>=0;E--){let y=_[E];if(y.parentNode!==w.parentNode)w.parentNode?.insertBefore(y,w);if(y._mounts)y._mounts.forEach((g)=>g());w=y}u=_});i(),f._cleanups.add(()=>R(i)),Q(()=>R(i))}else{let a=ln(o);if(f.appendChild(a),a._mounts)a._mounts.forEach((u)=>u())}};return e(l),f},I=(n)=>{let r=new Set,l=L,s=k,f=W.createElement("div");f.style.display="contents",f.setAttribute("role","presentation"),L={_cleanups:r},k=null;let e=(o)=>{if(!o)return;if(o._isRuntime)r.add(o.destroy),f.appendChild(o.container);else if(q(o))o.forEach(e);else f.appendChild(o instanceof Node?o:W.createTextNode(String(o==null?"":o)))};try{e(n({onCleanup:(o)=>r.add(o)}))}finally{L=l,k=s}return{_isRuntime:!0,container:f,destroy:()=>{r.forEach((o)=>o()),p(f),f.remove()}}},U=(n,r,l=null)=>{let s=W.createTextNode(""),f=t("div",{style:"display:contents"},[s]),e=null;return J(()=>!!(A(n)?n():n),(o)=>{if(e)e.destroy(),e=null;let a=o?r:l;if(a)e=I(()=>A(a)?a():a),f.insertBefore(e.container,s)}),Q(()=>e?.destroy()),f},V=({name:n,duration:r=200,scale:l,slide:s,rotate:f,blur:e},o)=>{let a=typeof o==="function"?o():o;if(!(a instanceof Node))return a;if(n)return a.style.animation=`${n}-in ${r}ms`,a;let u=l||s||f||e,i=[l?"scale(0.95)":"",s?"translateY(-10px)":"",f?"rotate(-2deg)":""].filter(Boolean).join(" ");if(a.style.transition=`all ${r}ms ease`,a.style.opacity="0",u)a.style.transform=i;if(e)a.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(a.style.opacity="1",u)a.style.transform="none";if(e)a.style.filter="none"}),a},m=(n,r,l)=>{let s=W.createTextNode(""),f=t("div",{style:"display:contents"},[s]),e=new Map;return J(()=>(A(n)?n():n)||[],(o)=>{let a=new Map,u=[],i=o||[];for(let _=0;_r(w,_));else e.delete(E);a.set(E,y),u.push(y)}e.forEach((_)=>_.destroy());let b=s;for(let _=u.length-1;_>=0;_--){let w=u[_].container;if(w.nextSibling!==b)f.insertBefore(w,b);b=w}e=a}),f},B=(n)=>{let r=()=>window.location.hash.slice(1)||"/",l=d(r()),s=()=>l(r());window.addEventListener("hashchange",s),Q(()=>window.removeEventListener("hashchange",s));let f=t("div",{class:"router-hook"}),e=null;return J([l],()=>{let o=l(),a=n.find((u)=>{let i=u.path.split("/").filter(Boolean),b=o.split("/").filter(Boolean);return i.length===b.length&&i.every((_,w)=>_[0]===":"||_===b[w])})||n.find((u)=>u.path==="*");if(a){e?.destroy();let u={};a.path.split("/").filter(Boolean).forEach((i,b)=>{if(i[0]===":")u[i.slice(1)]=o.split("/").filter(Boolean)[b]}),B.params(u),e=I(()=>A(a.component)?a.component(u):a.component),f.replaceChildren(e.container)}}),f};B.params=d({});B.to=(n)=>window.location.hash=n.replace(/^#?\/?/,"#/");B.back=()=>window.history.back();B.path=()=>window.location.hash.replace(/^#/,"")||"/";var mn=({url:n,method:r="GET",headers:l={}})=>{let s=d(!1),f=d(null),e=d(null),o=null,a=null;return{run:async(u=null)=>{o?.abort(),clearTimeout(a),o=new AbortController,a=setTimeout(()=>o.abort(),1e4),s(!0),f(null);try{let i=u instanceof FormData,b=await fetch(n,{method:r,headers:i?l:{"Content-Type":"application/json",...l},body:i?u:u?JSON.stringify(u):void 0,signal:o.signal}),_=await b.text(),w=_?JSON.parse(_):null;if(!b.ok)throw Error(w?.message||b.statusText);return e(w),w}catch(i){if(i.name!=="AbortError")f(i.message);throw i}finally{s(!1),clearTimeout(a),o=null,a=null}},abort:()=>o?.abort(),loading:s,error:f,data:e}},nn=(n,r)=>{let l=typeof r==="string"?W.querySelector(r):r;if(!l)return;if(M.has(l))M.get(l).destroy();let s=I(A(n)?n:()=>n);return l.replaceChildren(s.container),M.set(l,s),s},zn=Object.freeze({$:d,$$:un,watch:J,h:t,when:U,each:m,fx:V,router:B,req:mn,mount:nn,batch:An});if(typeof window<"u")Object.assign(window,zn),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((n)=>{window[n]=(r,l)=>t(n,r,l)});var N=(n)=>typeof n==="function"?n():n,j=(n,r="label")=>n&&typeof n==="object"?n[r]:n,c=(...n)=>n.filter(Boolean).join(" ").trim(),S=(n)=>typeof n==="function",bn=(n,r,l="label")=>{let s=String(r).toLowerCase(),f=N(n);return!s?f:f.filter((e)=>{let o=e&&typeof e==="object"?e[l]:e;return String(o).toLowerCase().includes(s)})},cn=(n,r)=>{let l=d(-1);return J(()=>{if(!N(r))l(-1)}),{cursor:l,onKey:(f,e)=>{let o=N(n),a=l(),u=o.length;if(!u)return;let i=f.key;i==="ArrowDown"?(f.preventDefault(),r(!0),l(Math.min(a+1,u-1))):i==="ArrowUp"?(f.preventDefault(),l(Math.max(a-1,0))):i==="Enter"?a>=0&&(f.preventDefault(),e(o[a])):i==="Escape"&&r(!1)}}},Jn=(n,r)=>t("div",{...n,class:c("alert",n.class)},r),Pn=(n,r)=>t("span",{...n,class:c("badge",n.class)},r),_n=(n,r)=>t("button",{...n,class:c("btn",n.class)},r),Rn=(n,r)=>t("div",{...n,class:c("card",n.class)},r),Un=(n,r)=>t("div",{...n,class:c("card-title",n.class)},r),qn=(n,r)=>t("div",{...n,class:c("card-body",n.class)},r),Qn=(n,r)=>t("div",{...n,class:c("card-actions",n.class)},r),Bn=(n,r)=>t("div",{...n,class:c("carousel",n.class)},r),Kn=(n,r)=>t("div",{...n,class:c("carousel-item",n.class)},r),Gn=(n,r)=>t("div",{...n,class:c("chat",n.class)},r),Xn=(n,r)=>t("div",{...n,class:c("chat-bubble",n.class)},r),Zn=(n,r)=>t("div",{...n,class:c("chat-footer",n.class)},r),Yn=(n,r)=>t("div",{...n,class:c("chat-header",n.class)},r),In=(n,r)=>t("div",{...n,class:c("chat-image avatar",n.class)},t("div",{class:"w-10 rounded-full"},typeof r==="string"?t("img",{src:r,alt:"avatar"}):r)),Vn=(n)=>t("input",{...n,type:"checkbox",class:c("checkbox",n.class)}),On=(n)=>t("div",{...n,class:c("divider",n.class)}),Hn=(n,r)=>t("div",{...n,class:c("fab",n.class)},r),Dn=(n,r)=>t("fieldset",{...n,class:c("fieldset",n.class)},[n.legend&&t("legend",{class:"fieldset-legend"},n.legend),r]),vn=(n)=>t("span",{class:n.startsWith("icon-")?n:""},n.startsWith("icon-")?null:n),Fn=(n,r)=>t("div",{...n,class:c("indicator",n.class)},[n.value&&t("span",{class:c("indicator-item badge",n.class)},n.value),r]),Mn=(n,r)=>t("kbd",{...n,class:c("kbd",n.class)},r),hn=(n,r)=>t("span",{...n,class:c("loading loading-spinner",n.class)},r),pn=(n,r)=>t("div",{...n,class:c("navbar",n.class)},r),nt=(n)=>t("progress",{...n,class:c("progress",n.class)}),tt=(n,r)=>t("div",{...n,class:c("radial-progress",n.class),style:`--value:${n.value??0};${n.style??""}`,role:"progressbar","aria-valuenow":n.value??0},r??`${n.value??0}%`),rt=(n)=>t("input",{...n,type:"radio",class:c("radio",n.class)}),ot=(n)=>t("input",{...n,type:"range",class:c("range",n.class)}),et=(n)=>t("div",{...n,class:c("skeleton",n.class)}),lt=(n)=>t("span",{...n,class:c("skeleton skeleton-text",n.class)}),st=(n,r)=>t("div",{...n,class:c("stack",n.class)},r),at=(n,r)=>t("ul",{...n,class:c("steps",n.class)},r),ft=(n,r)=>t("li",{...n,class:c("step",n.class),"data-content":n.dataContent},r),ut=(n)=>t("label",{...n,class:c("swap",n.class)},[t("input",{type:"checkbox",checked:()=>N(n.value),onchange:(r)=>S(n.value)&&n.value(r.target.checked)}),t("div",{class:"swap-on"},n.on),t("div",{class:"swap-off"},n.off)]),bt=(n)=>t("textarea",{...n,class:c("textarea",n.class)}),it=(n)=>{let r=Array.isArray(n.words)?n.words:typeof n.words==="string"?n.words.split(","):[];return t("span",{...n,class:c("text-rotate",n.class)},t("span",{},r.map((l)=>t("span",{},l))))},ct=(n,r)=>t("ul",{...n,class:c("timeline",n.vertical!==!1?"timeline-vertical":"timeline-horizontal",n.compact?"timeline-compact":"",n.class)},r),_t=(n)=>t("input",{...n,type:"checkbox",class:c("toggle",n.class)}),yt=(n,r)=>t("div",{...n,class:c("tooltip",n.class),"data-tip":n.tip},r),wt=(n)=>{let r=n.name||`acc-${Math.random().toString(36).slice(2)}`,l=c("collapse",n.variant&&`collapse-${n.variant}`,n.class),s=(f)=>{let e=j(f,"title"),o=f.content;return n.type==="details"?t("details",{class:l,name:r,open:f.open||void 0},t("summary",{class:"collapse-title font-semibold"},e),o?t("div",{class:"collapse-content text-sm"},o):null):t("div",{class:l},t("input",{type:"radio",name:r,checked:f.open||void 0}),t("div",{class:"collapse-title font-semibold"},e),o?t("div",{class:"collapse-content text-sm"},o):null)};return S(n.items)?m(n.items,s,(f,e)=>f?.id??e):(n.items||[]).map(s)},Et=(n)=>{if(n.children!==void 0)return t("table",{class:c("table",n.class),...n},n.children);let{items:r,columns:l=[],header:s=!0,keyFn:f,...e}=n,o=s!==!1&&l.some((u)=>u.label)?t("thead",{},t("tr",{},l.map((u)=>t("th",{class:u.class},u.label)))):null,a=t("tbody",{},m(()=>N(r)||[],(u,i)=>t("tr",{},l.map((b)=>{let _=b.render?b.render(u,i):u[b.key];return t("td",{class:b.class},_)})),f||((u,i)=>u?.id??i)));return t("table",{class:c("table",e.class),...e},[o,a])},dt=(n)=>{if(n.children!==void 0)return t("div",{class:c("tabs",n.class),...n},n.children);let{items:r,activeIndex:l,onClose:s,...f}=n,e=s||(S(r)?(o)=>{let u=N(r).filter((i,b)=>b!==o);if(r(u),l()>=u.length)l(Math.max(0,u.length-1))}:null);return t("div",{class:c("tabs",n.class),...f},m(()=>N(r)||[],(o,a)=>{let u=()=>l()===a;return[t("a",{role:"tab",class:()=>`tab ${u()?"tab-active":""} ${o.class||""}`,onclick:(i)=>{i.preventDefault(),l(a),o.onclick?.(i)}},j(o),o.closable?t("span",{class:"icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70",onclick:(i)=>{i.stopPropagation(),e?.(a)}}):null),t("div",{class:`tab-content ${o.contentClass||""}`,style:()=>`display: ${u()?"block":"none"};`},S(o.content)?o.content():o.content)]},(o,a)=>o.id??a))},gt=(n)=>{let r=`rating-${Math.random().toString(36).slice(2,7)}`,l=n.children??Array.from({length:n.count||5},(s,f)=>{let e=f+1;return t("input",{type:"radio",name:r,class:c("mask",n.mask||"mask-star"),checked:()=>N(n.value)===e,onchange:()=>S(n.value)?n.value(e):n.onchange?.(e)})});return t("div",{class:c("rating",n.class),...n},l)},yn=(n)=>{if(n.children!==void 0)return t("ul",{class:c("menu",n.class),...n},n.children);let{items:r,keyFn:l=(e,o)=>e?.id??o,...s}=n,f=(e)=>e.children?t("li",{},t("details",{},t("summary",{},j(e)),t("ul",{},yn({items:e.children})))):t("li",{},t("a",{href:e.href,onclick:e.onclick?(o)=>{if(!e.href)o.preventDefault();e.onclick(o)}:null},j(e)));return t("ul",{class:c("menu",s.class),...s},m(()=>N(r)||[],f,l))},Nt=(n,r)=>{let l=n.id||`drawer-${Math.random().toString(36).slice(2,9)}`;return t("div",{class:c("drawer",n.class)},[t("input",{id:l,type:"checkbox",class:"drawer-toggle",checked:()=>N(n.open),onchange:(s)=>S(n.open)&&n.open(s.target.checked)}),t("div",{class:"drawer-content"},r),t("div",{class:"drawer-side"},[t("label",{for:l,class:"drawer-overlay",onclick:()=>S(n.open)&&n.open(!1)}),t("div",{class:"min-h-full bg-base-200 w-80 p-4"},()=>N(n.side))])])},St=(n,r)=>{let{trigger:l,items:s,...f}=n,e=r||(s?t("ul",{class:"menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow"},m(()=>N(s)||[],(o)=>t("li",{},t("a",{onclick:(a)=>{o.onclick?.(a),a.currentTarget.closest("details").open=!1}},j(o))),(o,a)=>o.id??a)):null);return t("details",{class:c("dropdown",f.class),...f},[t("summary",{class:"btn m-1"},l||"Dropdown"),e])},kt=(n,r)=>{if(r!==void 0)return t("select",{class:c("select",n.class),...n},r);let{label:l,float:s,placeholder:f,placeholderDisabled:e=!0,value:o,left:a,right:u,hint:i,items:b,keyFn:_,...w}=n,E=()=>{let y=N(b)||[];return[...f?[{disabled:e,label:f,value:""}]:[],...y]};return t("label",{class:s?"floating-label":""},[s&&t("span",{},l),t("label",{class:c("select",w.class)},[l&&!s&&t("span",{class:"label"},l),a??null,t("select",{value:()=>N(o),onchange:(y)=>S(o)?o(y.target.value):w.onchange?.(y)},m(E,(y)=>{let g=j(y,y.value!==void 0?"value":void 0),x=j(y,"label");return t("option",{value:g,disabled:y.disabled||void 0},x)},(y,g)=>y?.id??(typeof y==="string"?y:y.value)??g)),u??null]),i&&t("div",{class:"validator-hint"},i)])},xt=({items:n,value:r,onselect:l,placeholder:s="Buscar...",...f})=>{let e=d(N(r)||""),o=d(!1),a=d(()=>bn(n,e())),{cursor:u,onKey:i}=cn(a,o),b=(_)=>{let w=j(_),E=typeof _==="string"?_:_.value;if(e(w),S(r))r(E);l?.(_),o(!1)};return t("div",{class:"relative w-full"},[wn({...f,type:"text",placeholder:s,value:e,left:t("span",{class:"icon-[lucide--search]"}),oninput:(_)=>{if(e(_.target.value),S(r))r(_.target.value);o(!0)},onfocus:()=>o(!0),onblur:()=>setTimeout(()=>o(!1),150),onkeydown:(_)=>i(_,b)}),U(o,()=>V({duration:200,slide:!0},t("ul",{class:"absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap"},[m(a,(_,w)=>t("li",{},[t("a",{class:()=>u()===w?"active bg-primary text-primary-content":"",onmousedown:(E)=>E.preventDefault(),onclick:()=>b(_),onmouseenter:()=>u(w)},j(_))]),(_,w)=>j(_)+w),()=>a().length===0?t("li",{class:"p-4 opacity-50 text-center"},"Sin resultados"):null])))])},wn=(n)=>{let{label:r,icon:l,float:s,placeholder:f,value:e,left:o,right:a,rule:u,hint:i,content:b,..._}=n,w=d(!1),E=d(!1),y=n.type==="password",g=u??null,x=()=>y?N(w)?"text":"password":n.type||"text";return t("div",{class:"input-container",onfocusin:()=>E(!0),onfocusout:(C)=>{if(!C.currentTarget.contains(C.relatedTarget))E(!1)}},[t("label",{class:s?"floating-label":""},[s?t("span",{},r):null,t("label",{pattern:g,class:()=>c("input validator",n.class)},[r&&!s?t("span",{class:"label"},r):null,o??null,t("input",{..._,type:x,class:"grow",pattern:g,placeholder:f||r||" ",value:e}),a??null,y?t("label",{class:"swap swap-rotate ml-2"},[t("input",{type:"checkbox",onchange:(C)=>w(C.target.checked)}),t("span",{class:"swap-on icon-[lucide--eye]"}),t("span",{class:"swap-off icon-[lucide--eye-off]"})]):null]),i?t("div",{class:"validator-hint"},i):null,U(E,()=>V({duration:300,slide:!0},t("div",{class:"input-content",onmousedown:(C)=>C.preventDefault()},[S(b)?b(E):b])))])])},Ct=(n)=>{let r=d(!1),l=()=>N(n.value)||"#000000",s=["#000","#1A1A1A","#333","#4D4D4D","#666","#808080","#B3B3B3","#FFF","#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626","#ef4444","#f87171","#fca5a5","#431407","#7c2d12","#9a3412","#c2410c","#ea580c","#f97316","#fb923c","#ffedd5","#713f12","#a16207","#ca8a04","#eab308","#facc15","#fde047","#fef08a","#fff9c4","#064e3b","#065f46","#059669","#10b981","#34d399","#4ade80","#84cc16","#d9f99d","#082f49","#075985","#0284c7","#0ea5e9","#38bdf8","#7dd3fc","#22d3ee","#cffafe","#1e1b4b","#312e81","#4338ca","#4f46e5","#6366f1","#818cf8","#a5b4fc","#e0e7ff","#2e1065","#4c1d95","#6d28d9","#7c3aed","#8b5cf6","#a855f7","#d946ef","#fae8ff"],f=(e)=>{S(n.value)?n.value(e):n.onchange?.(e),r(!1)};return t("div",{class:c("relative w-fit",n.class)},[t("button",{type:"button",class:"btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case",onclick:(e)=>{e.stopPropagation(),r(!r())}},[t("div",{class:"size-5 rounded-sm shadow-inner border border-black/10 shrink-0",style:()=>`background-color: ${l()}`}),n.label&&t("span",{class:"opacity-80"},n.label)]),U(r,()=>[t("div",{class:"fixed inset-0 z-[100]",onclick:()=>r(!1)}),t("div",{class:"absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none"},t("div",{class:"grid grid-cols-8 gap-1"},s.map((e)=>t("button",{type:"button",style:`background-color: ${e}`,class:()=>{return`size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${l().toLowerCase()===e.toLowerCase()?"ring-2 ring-offset-1 ring-primary z-10 scale-110":""}`},onclick:()=>f(e)}))))])])},En=(n)=>{let r=d(new Date),l=d(null),s=d(0),f=d(0),e=new Date,o=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,a=(y)=>`${y.getFullYear()}-${String(y.getMonth()+1).padStart(2,"0")}-${String(y.getDate()).padStart(2,"0")}`,u=()=>N(n.range)===!0,i=()=>N(n.value),b=(y)=>{let g=a(y),x=i();if(u())if(!x?.start||x.start&&x.end)n.onChange?.({start:g,end:null,...n.hour&&{startHour:s()}});else{let C=x.start,K=g{let g=r();r(new Date(g.getFullYear(),g.getMonth()+y,1))},w=(y)=>{let g=r();r(new Date(g.getFullYear()+y,g.getMonth(),1))},E=({value:y,onChange:g})=>t("div",{class:"flex-1"},[t("div",{class:"flex gap-2 items-center"},[t("input",{type:"range",min:0,max:23,value:y,class:"range range-xs flex-1",oninput:(x)=>g(+x.target.value)}),t("span",{class:"text-sm font-mono min-w-[48px] text-center"},()=>String(N(y)).padStart(2,"0")+":00")])]);return t("div",{class:c("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none",n.class)},[t("div",{class:"flex justify-between items-center mb-4 gap-1"},[t("div",{class:"flex gap-0.5"},[t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>w(-1)},t("span",{class:"icon-[lucide--chevrons-left]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>_(-1)},t("span",{class:"icon-[lucide--chevron-left]"}))]),t("span",{class:"font-bold uppercase flex-1 text-center"},()=>r().toLocaleString("es-ES",{month:"short",year:"numeric"})),t("div",{class:"flex gap-0.5"},[t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>_(1)},t("span",{class:"icon-[lucide--chevron-right]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>w(1)},t("span",{class:"icon-[lucide--chevrons-right]"}))])]),t("div",{class:"grid grid-cols-7 gap-1",onmouseleave:()=>l(null)},[...["L","M","X","J","V","S","D"].map((y)=>t("div",{class:"text-[10px] opacity-40 font-bold text-center"},y)),()=>{let y=r(),g=y.getFullYear(),x=y.getMonth(),C=new Date(g,x,1).getDay(),K=C===0?6:C-1,Sn=new Date(g,x+1,0).getDate(),O=[];for(let P=0;P{let z=i(),H=l(),kn=typeof z==="string"?z.split("T")[0]===T:z?.start===T,xn=z?.end===T,D=!1;if(u()&&z?.start){let v=z.start;if(!z.end&&H)D=T>v&&T<=H||T=H;else if(z.end)D=T>v&&Tu()&&l(T),onclick:()=>b(on)},P.toString()))}return O}]),n.hour?t("div",{class:"mt-3 pt-2 border-t border-base-300"},u()?t("div",{class:"flex gap-4"},[E({value:s,onChange:(y)=>s(y)}),E({value:f,onChange:(y)=>f(y)})]):E({value:s,onChange:(y)=>s(y)})):null])},Lt=(n)=>{let r=d(!1),l=d(""),s=()=>N(n.range)===!0;J(()=>{let e=N(n.value);if(!e)return l("");let o="";if(typeof e==="string")o=n.hour&&e.includes("T")?e.replace("T"," "):e;else if(e.start&&e.end){let a=n.hour&&e.startHour!=null?`${e.start} ${String(e.startHour).padStart(2,"0")}:00`:e.start,u=n.hour&&e.endHour!=null?`${e.end} ${String(e.endHour).padStart(2,"0")}:00`:e.end;o=`${a} - ${u}`}else if(e.start)o=`${n.hour&&e.startHour!=null?`${e.start} ${String(e.startHour).padStart(2,"0")}:00`:e.start}...`;l(o)});let f=(e)=>{if(S(n.value))n.value(e);else n.onChange?.(e);if(!s()||e?.end!=null)r(!1)};return t("div",{class:c("relative w-full",n.class)},[t("label",{class:"input input-bordered w-full",onclick:(e)=>{e.stopPropagation(),r(!r())}},[t("span",{class:"icon-[lucide--calendar]"}),t("input",{...n,type:"text",class:"grow",value:l,readonly:!0,placeholder:n.placeholder||(s()?"Seleccionar rango...":"Seleccionar fecha...")})]),U(r,()=>[t("div",{class:"fixed inset-0 z-[90]",onclick:()=>r(!1)}),t("div",{class:"absolute left-0 mt-2 z-[100]",onclick:(e)=>e.stopPropagation()},En({value:n.value,range:s(),hour:n.hour,onChange:f}))])])},Tt=(n)=>{let r=d([]),l=d(!1),s=d(null),f=(n.max||2)*1024*1024,e=(a)=>{let u=Array.from(a);if(s(null),u.some((b)=>b.size>f)){s(`Máx ${n.max||2}MB`);return}let i=[...r(),...u];if(r(i),S(n.onselect))n.onselect(i);else if(S(n.value))n.value(i)},o=(a)=>{let u=r().filter((i,b)=>b!==a);if(r(u),S(n.onselect))n.onselect(u);else if(S(n.value))n.value(u)};return t("div",{class:c("fieldset w-full p-0",n.class)},[t("label",{class:()=>`relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${l()?"border-primary bg-primary/10":"border-base-content/20 bg-base-100 hover:bg-base-200"}`,ondragover:(a)=>{a.preventDefault(),l(!0)},ondragleave:()=>l(!1),ondrop:(a)=>{a.preventDefault(),l(!1),e(a.dataTransfer.files)}},[t("div",{class:"flex items-center gap-3 w-full"},[t("span",{class:"icon-[lucide--upload]"}),t("span",{class:"text-sm opacity-70 truncate grow text-left"},"Arrastra o selecciona archivos..."),t("span",{class:"text-[10px] opacity-40 shrink-0"},`Máx ${n.max||2}MB`)]),t("input",{type:"file",multiple:!0,accept:n.accept||"*",class:"hidden",onchange:(a)=>e(a.target.files)})]),()=>s()&&t("span",{class:"text-[10px] text-error mt-1 px-1 font-medium"},s()),U(()=>r().length>0,()=>t("ul",{class:"mt-2 space-y-1"},m(r,(a,u)=>t("li",{class:"flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300"},[t("div",{class:"flex items-center gap-2 truncate"},[t("span",{class:"opacity-50"},"\uD83D\uDCC4"),t("span",{class:"truncate font-medium max-w-[200px]"},a.name),t("span",{class:"text-[9px] opacity-40"},`(${(a.size/1024).toFixed(0)} KB)`)]),t("button",{type:"button",class:"btn btn-ghost btn-xs btn-circle",onclick:(i)=>{i.preventDefault(),o(u)}},t("span",{class:"icon-[lucide--x]"}))]),(a)=>a.name+a.lastModified)))])},$t=(n,r="alert-success",l=3500)=>{let s=document.getElementById("sigpro-toast-container");if(!s)s=t("div",{id:"sigpro-toast-container",class:"fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none"}),document.body.appendChild(s);let f=t("div",{style:"display: contents"});s.appendChild(f);let e,o,a,i=nn(()=>{let b=d(!1),_=d(!1);e=()=>{if(_())return;clearTimeout(o),clearTimeout(a),_(!0),setTimeout(()=>{if(i.destroy(),f.remove(),!s.hasChildNodes())s.remove()},300)},a=setTimeout(()=>b(!0),0);let w=typeof n==="function"?N(n):n,E=typeof w==="string"?t("span",{},w):w;return t("div",{class:()=>{if(_())return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`;if(b())return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`;return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`}},[E,t("button",{class:"btn btn-xs btn-circle btn-ghost",onclick:e},t("span",{class:"icon-[lucide--x]"}))])},f);if(l>0)o=setTimeout(e,l);return e},At=(n)=>{let r=null;J(()=>{let s=N(n.open);if(!r)return;s?r.showModal():r.close()});let l=()=>S(n.open)&&n.open(!1);return t("dialog",{...n,ref:(s)=>r=s,class:c("modal",n.class),onclose:l,oncancel:l},[t("div",{class:"modal-box"},[n.title&&t("h3",{class:"text-lg font-bold"},n.title),n.children,t("div",{class:"modal-action"},[n.actions||_n({class:"btn",onclick:l},"Cerrar")])]),t("form",{method:"dialog",class:"modal-backdrop"},[t("button",{},"close")])])};var rn={};en(rn,{Editor:()=>jt});var jt=(n)=>{let{value:r,class:l}=n,s=null,f=d(!1),e=d(""),o=()=>{if(!s)return;let b=s.innerHTML;if(S(r))r(b);else n.onchange?.(b)},a=(b,_=null)=>{if(!s)return;s.focus(),document.execCommand(b,!1,_),o()},u=(b,_=null)=>{if(!s)return!1;try{if(b==="formatBlock"){let w=window.getSelection();if(!w.rangeCount)return!1;let E=w.getRangeAt(0).commonAncestorContainer;while(E&&E!==s){if(E.nodeType===1&&E.tagName===_)return!0;E=E.parentNode}return!1}return document.queryCommandState(b)}catch(w){return!1}},i=t("div",{class:"flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200"},[t("div",{class:"flex flex-wrap gap-1 flex-1"},[t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("bold")?"btn-active":""}`,onclick:()=>a("bold")},t("span",{class:"icon-[lucide--bold]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("italic")?"btn-active":""}`,onclick:()=>a("italic")},t("span",{class:"icon-[lucide--italic]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("underline")?"btn-active":""}`,onclick:()=>a("underline")},t("span",{class:"icon-[lucide--underline]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("strikeThrough")?"btn-active":""}`,onclick:()=>a("strikeThrough")},t("span",{class:"icon-[lucide--strikethrough]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("insertUnorderedList")},t("span",{class:"icon-[lucide--list]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("insertOrderedList")},t("span",{class:"icon-[lucide--list-ordered]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("formatBlock","BLOCKQUOTE")?"btn-active":""}`,onclick:()=>a("formatBlock",u("formatBlock","BLOCKQUOTE")?"P":"BLOCKQUOTE")},t("span",{class:"icon-[lucide--quote]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("select",{class:"select select-xs w-16",onchange:(b)=>a("fontSize",b.target.value),value:"3"},[t("option",{value:"1"},"1"),t("option",{value:"2"},"2"),t("option",{value:"3"},"3"),t("option",{value:"4"},"4"),t("option",{value:"5"},"5"),t("option",{value:"6"},"6"),t("option",{value:"7"},"7")]),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("undo")},t("span",{class:"icon-[lucide--undo-2]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("redo")},t("span",{class:"icon-[lucide--redo-2]"}))]),t("div",{class:"flex"},[t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${f()?"btn-active":""}`,onclick:()=>{let b=f();if(!b)e(s?.innerHTML||"");else if(s)s.innerHTML=e(),o();f(!b)}},t("span",{class:"icon-[lucide--code-2]"}))])]);return t("div",{class:c("border border-base-300 rounded-box bg-base-100 overflow-hidden",l)},[i,t("div",{class:"relative"},[t("div",{ref:(b)=>{if(!s&&b)s=b,b.innerHTML=N(r)||""},style:()=>`min-height:10rem;${f()?"display:none":""}`,class:"p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]",contenteditable:"true",oninput:o,onpaste:()=>setTimeout(o,0)}),t("textarea",{class:"w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0",style:()=>f()?"":"display:none",value:e,oninput:(b)=>e(b.target.value)})])])};var Wt={es:{close:"Cerrar",confirm:"Confirmar",cancel:"Cancelar",search:"Buscar...",loading:"Cargando...",nodata:"Sin datos"},en:{close:"Close",confirm:"Confirm",cancel:"Cancel",search:"Search...",loading:"Loading...",nodata:"No data"}},dn=d("es"),gn=(n)=>dn(n),Nn=(n)=>()=>Wt[dn()][n]||n;var mt={...tn,...rn},zt={Locale:gn,tt:Nn};if(typeof window<"u")Object.entries({...mt,...zt}).forEach(([n,r])=>{Object.defineProperty(window,n,{value:r,writable:!1,configurable:!0,enumerable:!0})}),console.log("SigProUI installed");export{zt as Utils,mt as Components}; diff --git a/dist/sigpro-ui.js b/dist/sigpro-ui.js index 7555675..d237738 100644 --- a/dist/sigpro-ui.js +++ b/dist/sigpro-ui.js @@ -44,9 +44,68 @@ Components: () => Components }); - // components/Accordion.js - var exports_Accordion = {}; - __export(exports_Accordion, { + // components/All.js + var exports_All = {}; + __export(exports_All, { + listKey: () => listKey, + isFn: () => isFn, + getBy: () => getBy, + get: () => get, + filterBy: () => filterBy, + cls: () => cls, + Tooltip: () => Tooltip, + Toggle: () => Toggle, + Toast: () => Toast, + Timeline: () => Timeline, + Textarea: () => Textarea, + TextRotate: () => TextRotate, + Tabs: () => Tabs, + Table: () => Table, + Swap: () => Swap, + Steps: () => Steps, + Step: () => Step, + Stack: () => Stack, + SkeletonText: () => SkeletonText, + Skeleton: () => Skeleton, + Select: () => Select, + Rating: () => Rating, + Range: () => Range, + Radio: () => Radio, + Radial: () => Radial, + Progress: () => Progress, + Navbar: () => Navbar, + Modal: () => Modal, + Menu: () => Menu, + Loading: () => Loading, + Kbd: () => Kbd, + Input: () => Input, + Indicator: () => Indicator, + Icon: () => Icon, + Fileinput: () => Fileinput, + Fieldset: () => Fieldset, + Fab: () => Fab, + Dropdown: () => Dropdown, + Drawer: () => Drawer, + Divider: () => Divider, + Datepicker: () => Datepicker, + Colorpicker: () => Colorpicker, + Checkbox: () => Checkbox, + ChatImage: () => ChatImage, + ChatHeader: () => ChatHeader, + ChatFooter: () => ChatFooter, + ChatBubble: () => ChatBubble, + Chat: () => Chat, + CarouselItem: () => CarouselItem, + Carousel: () => Carousel, + CardTitle: () => CardTitle, + CardBody: () => CardBody, + CardActions: () => CardActions, + Card: () => Card, + Calendar: () => Calendar, + Button: () => Button, + Badge: () => Badge, + Autocomplete: () => Autocomplete, + Alert: () => Alert, Accordion: () => Accordion }); @@ -482,190 +541,441 @@ window[e] = (o, n) => O(e, o, n); }); - // components/Accordion.js - var Accordion = (props, children) => { - const name = props.name || `accordion-${Math.random().toString(36).slice(2, 9)}`; - if (props.items && Array.isArray(props.items)) { - return O("div", { class: `space-y-2 ${props.class ?? ""}` }, props.items.map((item) => O("div", { class: `collapse ${item.class ?? ""}` }, [ - O("input", { type: "radio", name, checked: item.open }), - O("div", { class: "collapse-title text-xl font-medium" }, item.title), - O("div", { class: "collapse-content" }, children) - ]))); - } - return O("div", { class: `collapse ${props.class ?? ""}` }, [ - O("input", { type: "radio", name, checked: props.open }), - O("div", { class: "collapse-title text-xl font-medium" }, props.title), - O("div", { class: "collapse-content" }, children) - ]); - }; - - // components/Alert.js - var exports_Alert = {}; - __export(exports_Alert, { - Alert: () => Alert - }); - var Alert = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `alert ${props.class ?? ""}` }, children); - }; - - // components/Autocomplete.js - var exports_Autocomplete = {}; - __export(exports_Autocomplete, { - Autocomplete: () => Autocomplete - }); - var Autocomplete = (props) => { - const query = S(""); - const isOpen = S(false); - const cursor = S(-1); - const filteredItems = S([]); - R(() => { - const v2 = typeof props.value === "function" ? props.value() : props.value; - return v2 || ""; - }, (newVal) => setTimeout(() => query(newVal), 0)); - R(() => { - const q2 = String(query()).toLowerCase(); - const allItems = typeof props.items === "function" ? props.items() : props.items; - const filtered = q2 ? allItems.filter((item) => (typeof item === "string" ? item : item.label).toLowerCase().includes(q2)) : allItems; - filteredItems(filtered); + // components/All.js + var get = (val) => typeof val === "function" ? val() : val; + var getBy = (item, field = "label") => item && typeof item === "object" ? item[field] : item; + var cls = (...classes) => classes.filter(Boolean).join(" ").trim(); + var isFn = (f) => typeof f === "function"; + var filterBy = (items, query, field = "label") => { + const searchTerm = String(query).toLowerCase(); + const list = get(items); + return !searchTerm ? list : list.filter((item) => { + const text = item && typeof item === "object" ? item[field] : item; + return String(text).toLowerCase().includes(searchTerm); }); - const pick = (item) => { - const display = typeof item === "string" ? item : item.label; - const actual = typeof item === "string" ? item : item.value; - query(display); - if (typeof props.value === "function") - props.value(actual); - props.onselect?.(item); - isOpen(false); - cursor(-1); + }; + var listKey = (items, isOpen) => { + const cursor = S(-1); + R(() => { + if (!get(isOpen)) + cursor(-1); + }); + const onKey = (e, select) => { + const list = get(items), i = cursor(), len = list.length; + if (!len) + return; + const k2 = e.key; + k2 === "ArrowDown" ? (e.preventDefault(), isOpen(true), cursor(Math.min(i + 1, len - 1))) : k2 === "ArrowUp" ? (e.preventDefault(), cursor(Math.max(i - 1, 0))) : k2 === "Enter" ? i >= 0 && (e.preventDefault(), select(list[i])) : k2 === "Escape" && isOpen(false); }; - const handleKeyDown = (e) => { - const list = filteredItems(); - if (e.key === "ArrowDown") { - e.preventDefault(); - isOpen(true); - cursor(Math.min(cursor() + 1, list.length - 1)); - } else if (e.key === "ArrowUp") { - e.preventDefault(); - cursor(Math.max(cursor() - 1, 0)); - } else if (e.key === "Enter" && cursor() >= 0) { - e.preventDefault(); - pick(list[cursor()]); - } else if (e.key === "Escape") { - isOpen(false); - } + return { cursor, onKey }; + }; + var Alert = (p2, c) => O("div", { ...p2, class: cls("alert", p2.class) }, c); + var Badge = (p2, c) => O("span", { ...p2, class: cls("badge", p2.class) }, c); + var Button = (p2, c) => O("button", { ...p2, class: cls("btn", p2.class) }, c); + var Card = (p2, c) => O("div", { ...p2, class: cls("card", p2.class) }, c); + var CardTitle = (p2, c) => O("div", { ...p2, class: cls("card-title", p2.class) }, c); + var CardBody = (p2, c) => O("div", { ...p2, class: cls("card-body", p2.class) }, c); + var CardActions = (p2, c) => O("div", { ...p2, class: cls("card-actions", p2.class) }, c); + var Carousel = (p2, c) => O("div", { ...p2, class: cls("carousel", p2.class) }, c); + var CarouselItem = (p2, c) => O("div", { ...p2, class: cls("carousel-item", p2.class) }, c); + var Chat = (p2, c) => O("div", { ...p2, class: cls("chat", p2.class) }, c); + var ChatBubble = (p2, c) => O("div", { ...p2, class: cls("chat-bubble", p2.class) }, c); + var ChatFooter = (p2, c) => O("div", { ...p2, class: cls("chat-footer", p2.class) }, c); + var ChatHeader = (p2, c) => O("div", { ...p2, class: cls("chat-header", p2.class) }, c); + var ChatImage = (p2, c) => O("div", { ...p2, class: cls("chat-image avatar", p2.class) }, O("div", { class: "w-10 rounded-full" }, typeof c === "string" ? O("img", { src: c, alt: "avatar" }) : c)); + var Checkbox = (p2) => O("input", { ...p2, type: "checkbox", class: cls("checkbox", p2.class) }); + var Divider = (p2) => O("div", { ...p2, class: cls("divider", p2.class) }); + var Fab = (p2, c) => O("div", { ...p2, class: cls("fab", p2.class) }, c); + var Fieldset = (p2, c) => O("fieldset", { ...p2, class: cls("fieldset", p2.class) }, [p2.legend && O("legend", { class: "fieldset-legend" }, p2.legend), c]); + var Icon = (p2) => O("span", { class: p2.startsWith("icon-") ? p2 : "" }, p2.startsWith("icon-") ? null : p2); + var Indicator = (p2, c) => O("div", { ...p2, class: cls("indicator", p2.class) }, [p2.value && O("span", { class: cls("indicator-item badge", p2.class) }, p2.value), c]); + var Kbd = (p2, c) => O("kbd", { ...p2, class: cls("kbd", p2.class) }, c); + var Loading = (p2, c) => O("span", { ...p2, class: cls("loading loading-spinner", p2.class) }, c); + var Navbar = (p2, c) => O("div", { ...p2, class: cls("navbar", p2.class) }, c); + var Progress = (p2) => O("progress", { ...p2, class: cls("progress", p2.class) }); + var Radial = (p2, c) => O("div", { ...p2, class: cls("radial-progress", p2.class), style: `--value:${p2.value ?? 0};${p2.style ?? ""}`, role: "progressbar", "aria-valuenow": p2.value ?? 0 }, c ?? `${p2.value ?? 0}%`); + var Radio = (p2) => O("input", { ...p2, type: "radio", class: cls("radio", p2.class) }); + var Range = (p2) => O("input", { ...p2, type: "range", class: cls("range", p2.class) }); + var Skeleton = (p2) => O("div", { ...p2, class: cls("skeleton", p2.class) }); + var SkeletonText = (p2) => O("span", { ...p2, class: cls("skeleton skeleton-text", p2.class) }); + var Stack = (p2, c) => O("div", { ...p2, class: cls("stack", p2.class) }, c); + var Steps = (p2, c) => O("ul", { ...p2, class: cls("steps", p2.class) }, c); + var Step = (p2, c) => O("li", { ...p2, class: cls("step", p2.class), "data-content": p2.dataContent }, c); + var Swap = (p2) => O("label", { ...p2, class: cls("swap", p2.class) }, [ + O("input", { type: "checkbox", checked: () => get(p2.value), onchange: (e) => isFn(p2.value) && p2.value(e.target.checked) }), + O("div", { class: "swap-on" }, p2.on), + O("div", { class: "swap-off" }, p2.off) + ]); + var Textarea = (p2) => O("textarea", { ...p2, class: cls("textarea", p2.class) }); + var TextRotate = (p2) => { + const words = Array.isArray(p2.words) ? p2.words : typeof p2.words === "string" ? p2.words.split(",") : []; + return O("span", { ...p2, class: cls("text-rotate", p2.class) }, O("span", {}, words.map((w2) => O("span", {}, w2)))); + }; + var Timeline = (p2, c) => O("ul", { + ...p2, + class: cls("timeline", p2.vertical !== false ? "timeline-vertical" : "timeline-horizontal", p2.compact ? "timeline-compact" : "", p2.class) + }, c); + var Toggle = (p2) => O("input", { ...p2, type: "checkbox", class: cls("toggle", p2.class) }); + var Tooltip = (p2, c) => O("div", { ...p2, class: cls("tooltip", p2.class), "data-tip": p2.tip }, c); + var Accordion = (p2) => { + const name = p2.name || `acc-${Math.random().toString(36).slice(2)}`; + const base = cls("collapse", p2.variant && `collapse-${p2.variant}`, p2.class); + const itemFn = (it) => { + const t = getBy(it, "title"); + const c = it.content; + return p2.type === "details" ? O("details", { class: base, name, open: it.open || undefined }, O("summary", { class: "collapse-title font-semibold" }, t), c ? O("div", { class: "collapse-content text-sm" }, c) : null) : O("div", { class: base }, O("input", { type: "radio", name, checked: it.open || undefined }), O("div", { class: "collapse-title font-semibold" }, t), c ? O("div", { class: "collapse-content text-sm" }, c) : null); }; - return O("div", { class: `relative w-full ${props.class ?? ""}` }, [ - O("label", { class: "input input-bordered w-full" }, [ - O("span", { class: "icon-[lucide--search]" }), - O("input", { - ...props, - type: "text", - class: "grow", - placeholder: props.placeholder || "Buscar...", - value: query, - onfocus: () => isOpen(true), - onblur: () => setTimeout(() => isOpen(false), 150), - onkeydown: handleKeyDown, - oninput: (e) => { - const newVal = e.target.value; - query(newVal); - if (typeof props.value === "function") - props.value(newVal); - isOpen(true); - cursor(-1); + return isFn(p2.items) ? K(p2.items, itemFn, (it, i) => it?.id ?? i) : (p2.items || []).map(itemFn); + }; + var Table = (p2) => { + if (p2.children !== undefined) + return O("table", { class: cls("table", p2.class), ...p2 }, p2.children); + const { items, columns = [], header = true, keyFn, ...rest } = p2; + const hd = header !== false && columns.some((c) => c.label) ? O("thead", {}, O("tr", {}, columns.map((c) => O("th", { class: c.class }, c.label)))) : null; + const bd = O("tbody", {}, K(() => get(items) || [], (it, idx) => O("tr", {}, columns.map((c) => { + const v2 = c.render ? c.render(it, idx) : it[c.key]; + return O("td", { class: c.class }, v2); + })), keyFn || ((it, idx) => it?.id ?? idx))); + return O("table", { class: cls("table", rest.class), ...rest }, [hd, bd]); + }; + var Tabs = (p2) => { + if (p2.children !== undefined) + return O("div", { class: cls("tabs", p2.class), ...p2 }, p2.children); + const { items, activeIndex, onClose, ...rest } = p2; + const closeHandler = onClose || (isFn(items) ? (idx) => { + const arr = get(items); + const newArr = arr.filter((_2, i) => i !== idx); + items(newArr); + if (activeIndex() >= newArr.length) + activeIndex(Math.max(0, newArr.length - 1)); + } : null); + return O("div", { class: cls("tabs", p2.class), ...rest }, K(() => get(items) || [], (it, idx) => { + const act = () => activeIndex() === idx; + return [ + O("a", { + role: "tab", + class: () => `tab ${act() ? "tab-active" : ""} ${it.class || ""}`, + onclick: (e) => { + e.preventDefault(); + activeIndex(idx); + it.onclick?.(e); } - }) - ]), - O("ul", { - class: "absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50", - style: () => `display: ${isOpen() && filteredItems().length ? "block" : "none"};` - }, [ - K(filteredItems, (item, idx) => O("li", {}, [ - O("a", { - class: () => `block w-full ${cursor() === idx ? "active bg-primary text-primary-content" : ""}`, - onclick: () => pick(item), - onmouseenter: () => cursor(idx) - }, typeof item === "string" ? item : item.label) - ]), (item, idx) => (typeof item === "string" ? item : item.value) + idx), - () => filteredItems().length === 0 ? O("li", { class: "flex justify-center p-4 opacity-50" }, O("span", { class: "icon-[lucide--search-x] text-2xl" })) : null + }, getBy(it), it.closable ? O("span", { + class: "icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70", + onclick: (e) => { + e.stopPropagation(); + closeHandler?.(idx); + } + }) : null), + O("div", { + class: `tab-content ${it.contentClass || ""}`, + style: () => `display: ${act() ? "block" : "none"};` + }, isFn(it.content) ? it.content() : it.content) + ]; + }, (it, idx) => it.id ?? idx)); + }; + var Rating = (p2) => { + const name = `rating-${Math.random().toString(36).slice(2, 7)}`; + const stars = p2.children ?? Array.from({ length: p2.count || 5 }, (_2, i) => { + const v2 = i + 1; + return O("input", { + type: "radio", + name, + class: cls("mask", p2.mask || "mask-star"), + checked: () => get(p2.value) === v2, + onchange: () => isFn(p2.value) ? p2.value(v2) : p2.onchange?.(v2) + }); + }); + return O("div", { class: cls("rating", p2.class), ...p2 }, stars); + }; + var Menu = (p2) => { + if (p2.children !== undefined) + return O("ul", { class: cls("menu", p2.class), ...p2 }, p2.children); + const { items, keyFn = (it, idx) => it?.id ?? idx, ...rest } = p2; + const render = (item) => item.children ? O("li", {}, O("details", {}, O("summary", {}, getBy(item)), O("ul", {}, Menu({ items: item.children })))) : O("li", {}, O("a", { + href: item.href, + onclick: item.onclick ? (e) => { + if (!item.href) + e.preventDefault(); + item.onclick(e); + } : null + }, getBy(item))); + return O("ul", { class: cls("menu", rest.class), ...rest }, K(() => get(items) || [], render, keyFn)); + }; + var Drawer = (p2, c) => { + const id = p2.id || `drawer-${Math.random().toString(36).slice(2, 9)}`; + return O("div", { class: cls("drawer", p2.class) }, [ + O("input", { + id, + type: "checkbox", + class: "drawer-toggle", + checked: () => get(p2.open), + onchange: (e) => isFn(p2.open) && p2.open(e.target.checked) + }), + O("div", { class: "drawer-content" }, c), + O("div", { class: "drawer-side" }, [ + O("label", { + for: id, + class: "drawer-overlay", + onclick: () => isFn(p2.open) && p2.open(false) + }), + O("div", { class: "min-h-full bg-base-200 w-80 p-4" }, () => get(p2.side)) ]) ]); }; - - // components/Badge.js - var exports_Badge = {}; - __export(exports_Badge, { - Badge: () => Badge - }); - var Badge = (props, children) => { - children === undefined && (children = props, props = {}); - return O("span", { ...props, class: `badge ${props.class ?? ""}` }, children); + var Dropdown = (p2, c) => { + const { trigger, items, ...rest } = p2; + const content = c || (items ? O("ul", { + class: "menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow" + }, K(() => get(items) || [], (item) => O("li", {}, O("a", { + onclick: (e) => { + item.onclick?.(e); + e.currentTarget.closest("details").open = false; + } + }, getBy(item))), (it, idx) => it.id ?? idx)) : null); + return O("details", { class: cls("dropdown", rest.class), ...rest }, [ + O("summary", { class: "btn m-1" }, trigger || "Dropdown"), + content + ]); }; - - // components/button.js - var exports_button = {}; - __export(exports_button, { - Button: () => Button - }); - var Button = (props, children) => { - children === undefined && (children = props, props = {}); - return O("button", { ...props, class: `btn ${props.class ?? ""}` }, children); + var Select = (p2, c) => { + if (c !== undefined) + return O("select", { class: cls("select", p2.class), ...p2 }, c); + const { label, float, placeholder, placeholderDisabled = true, value, left, right, hint, items, keyFn, ...rest } = p2; + const opts = () => { + const raw = get(items) || []; + const ph = placeholder ? [{ disabled: placeholderDisabled, label: placeholder, value: "" }] : []; + return [...ph, ...raw]; + }; + return O("label", { class: float ? "floating-label" : "" }, [ + float && O("span", {}, label), + O("label", { class: cls("select", rest.class) }, [ + label && !float && O("span", { class: "label" }, label), + left ?? null, + O("select", { + value: () => get(value), + onchange: (e) => isFn(value) ? value(e.target.value) : rest.onchange?.(e) + }, K(opts, (item) => { + const val = getBy(item, item.value !== undefined ? "value" : undefined); + const lab = getBy(item, "label"); + return O("option", { value: val, disabled: item.disabled || undefined }, lab); + }, (it, i) => it?.id ?? (typeof it === "string" ? it : it.value) ?? i)), + right ?? null + ]), + hint && O("div", { class: "validator-hint" }, hint) + ]); }; - - // components/Calendar.js - var exports_Calendar = {}; - __export(exports_Calendar, { - Calendar: () => Calendar - }); - var Calendar = (props) => { + var Autocomplete = ({ items, value, onselect, placeholder = "Buscar...", ...props }) => { + const query = S(get(value) || ""); + const isOpen = S(false); + const filtered = S(() => filterBy(items, query())); + const { cursor, onKey } = listKey(filtered, isOpen); + const pick = (item) => { + const display = getBy(item); + const actual = typeof item === "string" ? item : item.value; + query(display); + if (isFn(value)) + value(actual); + onselect?.(item); + isOpen(false); + }; + return O("div", { class: "relative w-full" }, [ + Input({ + ...props, + type: "text", + placeholder, + value: query, + left: O("span", { class: "icon-[lucide--search]" }), + oninput: (e) => { + query(e.target.value); + if (isFn(value)) + value(e.target.value); + isOpen(true); + }, + onfocus: () => isOpen(true), + onblur: () => setTimeout(() => isOpen(false), 150), + onkeydown: (e) => onKey(e, pick) + }), + z(isOpen, () => G({ duration: 200, slide: true }, O("ul", { + class: "absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap" + }, [ + K(filtered, (item, idx) => O("li", {}, [ + O("a", { + class: () => cursor() === idx ? "active bg-primary text-primary-content" : "", + onmousedown: (e) => e.preventDefault(), + onclick: () => pick(item), + onmouseenter: () => cursor(idx) + }, getBy(item)) + ]), (item, idx) => getBy(item) + idx), + () => filtered().length === 0 ? O("li", { class: "p-4 opacity-50 text-center" }, "Sin resultados") : null + ]))) + ]); + }; + var Input = (p2) => { + const { label, icon, float, placeholder, value, left, right, rule, hint, content, ...rest } = p2; + const showPassword = S(false); + const isFocused = S(false); + const isPassword = p2.type === "password"; + const pattern = rule ?? null; + const inputType = () => isPassword ? get(showPassword) ? "text" : "password" : p2.type || "text"; + return O("div", { + class: "input-container", + onfocusin: () => isFocused(true), + onfocusout: (e) => { + if (!e.currentTarget.contains(e.relatedTarget)) { + isFocused(false); + } + } + }, [ + O("label", { class: float ? "floating-label" : "" }, [ + float ? O("span", {}, label) : null, + O("label", { pattern, class: () => cls("input validator", p2.class) }, [ + label && !float ? O("span", { class: "label" }, label) : null, + left ?? null, + O("input", { ...rest, type: inputType, class: "grow", pattern, placeholder: placeholder || label || " ", value }), + right ?? null, + isPassword ? O("label", { class: "swap swap-rotate ml-2" }, [ + O("input", { type: "checkbox", onchange: (e) => showPassword(e.target.checked) }), + O("span", { class: "swap-on icon-[lucide--eye]" }), + O("span", { class: "swap-off icon-[lucide--eye-off]" }) + ]) : null + ]), + hint ? O("div", { class: "validator-hint" }, hint) : null, + z(isFocused, () => G({ duration: 300, slide: true }, O("div", { class: "input-content", onmousedown: (e) => e.preventDefault() }, [ + isFn(content) ? content(isFocused) : content + ]))) + ]) + ]); + }; + var Colorpicker = (p2) => { + const isOpen = S(false); + const current = () => get(p2.value) || "#000000"; + const palette = [ + "#000", + "#1A1A1A", + "#333", + "#4D4D4D", + "#666", + "#808080", + "#B3B3B3", + "#FFF", + "#450a0a", + "#7f1d1d", + "#991b1b", + "#b91c1c", + "#dc2626", + "#ef4444", + "#f87171", + "#fca5a5", + "#431407", + "#7c2d12", + "#9a3412", + "#c2410c", + "#ea580c", + "#f97316", + "#fb923c", + "#ffedd5", + "#713f12", + "#a16207", + "#ca8a04", + "#eab308", + "#facc15", + "#fde047", + "#fef08a", + "#fff9c4", + "#064e3b", + "#065f46", + "#059669", + "#10b981", + "#34d399", + "#4ade80", + "#84cc16", + "#d9f99d", + "#082f49", + "#075985", + "#0284c7", + "#0ea5e9", + "#38bdf8", + "#7dd3fc", + "#22d3ee", + "#cffafe", + "#1e1b4b", + "#312e81", + "#4338ca", + "#4f46e5", + "#6366f1", + "#818cf8", + "#a5b4fc", + "#e0e7ff", + "#2e1065", + "#4c1d95", + "#6d28d9", + "#7c3aed", + "#8b5cf6", + "#a855f7", + "#d946ef", + "#fae8ff" + ]; + const pick = (c) => { + isFn(p2.value) ? p2.value(c) : p2.onchange?.(c); + isOpen(false); + }; + return O("div", { class: cls("relative w-fit", p2.class) }, [ + O("button", { + type: "button", + class: "btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case", + onclick: (e) => { + e.stopPropagation(); + isOpen(!isOpen()); + } + }, [ + O("div", { class: "size-5 rounded-sm shadow-inner border border-black/10 shrink-0", style: () => `background-color: ${current()}` }), + p2.label && O("span", { class: "opacity-80" }, p2.label) + ]), + z(isOpen, () => [ + O("div", { + class: "fixed inset-0 z-[100]", + onclick: () => isOpen(false) + }), + O("div", { class: "absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none" }, O("div", { class: "grid grid-cols-8 gap-1" }, palette.map((c) => O("button", { + type: "button", + style: `background-color: ${c}`, + class: () => { + const act = current().toLowerCase() === c.toLowerCase(); + return `size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${act ? "ring-2 ring-offset-1 ring-primary z-10 scale-110" : ""}`; + }, + onclick: () => pick(c) + })))) + ]) + ]); + }; + var Calendar = (p2) => { const internalDate = S(new Date); const hoverDate = S(null); const startHour = S(0); const endHour = S(0); - const isRangeMode = () => { - const r = typeof props.range === "function" ? props.range() : props.range; - return r === true; - }; const now = new Date; const todayStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}`; - const formatDate = (d) => { - const year = d.getFullYear(); - const month = String(d.getMonth() + 1).padStart(2, "0"); - const day = String(d.getDate()).padStart(2, "0"); - return `${year}-${month}-${day}`; - }; - const getCurrentValue = () => { - return typeof props.value === "function" ? props.value() : props.value; - }; + const fmt = (d) => `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`; + const rangeMode = () => get(p2.range) === true; + const current = () => get(p2.value); const selectDate = (date) => { - const dateStr = formatDate(date); - const current = getCurrentValue(); - if (isRangeMode()) { - if (!current?.start || current.start && current.end) { - const newValue = { - start: dateStr, - end: null, - ...props.hour && { startHour: startHour() } - }; - props.onChange?.(newValue); + const s = fmt(date); + const v2 = current(); + if (rangeMode()) { + if (!v2?.start || v2.start && v2.end) { + p2.onChange?.({ start: s, end: null, ...p2.hour && { startHour: startHour() } }); } else { - const start = current.start; - let newValue; - if (dateStr < start) { - newValue = { start: dateStr, end: start }; - } else { - newValue = { start, end: dateStr }; + const start = v2.start; + const nv = s < start ? { start: s, end: start } : { start, end: s }; + if (p2.hour) { + nv.startHour = v2.startHour ?? startHour(); + nv.endHour = endHour(); } - if (props.hour) { - newValue.startHour = current.startHour !== undefined ? current.startHour : startHour(); - newValue.endHour = endHour(); - } - props.onChange?.(newValue); + p2.onChange?.(nv); } } else { - const newValue = props.hour ? `${dateStr}T${String(startHour()).padStart(2, "0")}:00:00` : dateStr; - props.onChange?.(newValue); + p2.onChange?.(p2.hour ? `${s}T${String(startHour()).padStart(2, "0")}:00:00` : s); } }; const move = (m) => { @@ -676,30 +986,19 @@ const d = internalDate(); internalDate(new Date(d.getFullYear() + y2, d.getMonth(), 1)); }; - const HourSlider = ({ value: hVal, onChange: onHourChange }) => { - return O("div", { class: "flex-1" }, [ - O("div", { class: "flex gap-2 items-center" }, [ - O("input", { - type: "range", - min: 0, - max: 23, - value: hVal, - class: "range range-xs flex-1", - oninput: (e) => onHourChange(parseInt(e.target.value)) - }), - O("span", { class: "text-sm font-mono min-w-[48px] text-center" }, () => String(typeof hVal === "function" ? hVal() : hVal).padStart(2, "0") + ":00") - ]) - ]); - }; - return O("div", { class: `p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none ${props.class ?? ""}`.trim() }, [ + const HourSlider = ({ value: hVal, onChange: onH }) => O("div", { class: "flex-1" }, [ + O("div", { class: "flex gap-2 items-center" }, [ + O("input", { type: "range", min: 0, max: 23, value: hVal, class: "range range-xs flex-1", oninput: (e) => onH(+e.target.value) }), + O("span", { class: "text-sm font-mono min-w-[48px] text-center" }, () => String(get(hVal)).padStart(2, "0") + ":00") + ]) + ]); + return O("div", { class: cls("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none", p2.class) }, [ O("div", { class: "flex justify-between items-center mb-4 gap-1" }, [ O("div", { class: "flex gap-0.5" }, [ O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(-1) }, O("span", { class: "icon-[lucide--chevrons-left]" })), O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(-1) }, O("span", { class: "icon-[lucide--chevron-left]" })) ]), - O("span", { class: "font-bold uppercase flex-1 text-center" }, [ - () => internalDate().toLocaleString("es-ES", { month: "short", year: "numeric" }) - ]), + O("span", { class: "font-bold uppercase flex-1 text-center" }, () => internalDate().toLocaleString("es-ES", { month: "short", year: "numeric" })), O("div", { class: "flex gap-0.5" }, [ O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => move(1) }, O("span", { class: "icon-[lucide--chevron-right]" })), O("button", { type: "button", class: "btn btn-ghost btn-xs px-1", onclick: () => moveYear(1) }, O("span", { class: "icon-[lucide--chevrons-right]" })) @@ -708,885 +1007,166 @@ O("div", { class: "grid grid-cols-7 gap-1", onmouseleave: () => hoverDate(null) }, [ ...["L", "M", "X", "J", "V", "S", "D"].map((d) => O("div", { class: "text-[10px] opacity-40 font-bold text-center" }, d)), () => { - const d = internalDate(); - const year = d.getFullYear(); - const month = d.getMonth(); - const firstDay = new Date(year, month, 1).getDay(); + const d = internalDate(), y2 = d.getFullYear(), m = d.getMonth(); + const firstDay = new Date(y2, m, 1).getDay(); const offset = firstDay === 0 ? 6 : firstDay - 1; - const daysInMonth = new Date(year, month + 1, 0).getDate(); + const dim = new Date(y2, m + 1, 0).getDate(); const cells = []; for (let i = 0;i < offset; i++) cells.push(O("div")); - for (let i = 1;i <= daysInMonth; i++) { - const date = new Date(year, month, i); - const dStr = formatDate(date); + for (let i = 1;i <= dim; i++) { + const date = new Date(y2, m, i), ds = fmt(date); cells.push(O("button", { type: "button", class: () => { - const v2 = getCurrentValue(); - const h = hoverDate(); - const isStart = typeof v2 === "string" ? v2.split("T")[0] === dStr : v2?.start === dStr; - const isEnd = v2?.end === dStr; + const v2 = current(), h = hoverDate(); + const isStart = typeof v2 === "string" ? v2.split("T")[0] === ds : v2?.start === ds; + const isEnd = v2?.end === ds; let inRange = false; - if (isRangeMode() && v2?.start) { + if (rangeMode() && v2?.start) { const start = v2.start; - if (!v2.end && h) { - inRange = dStr > start && dStr <= h || dStr < start && dStr >= h; - } else if (v2.end) { - inRange = dStr > start && dStr < v2.end; - } + if (!v2.end && h) + inRange = ds > start && ds <= h || ds < start && ds >= h; + else if (v2.end) + inRange = ds > start && ds < v2.end; } const base = "btn btn-xs p-0 aspect-square min-h-0 h-auto font-normal relative"; - const state = isStart || isEnd ? "btn-primary z-10" : inRange ? "bg-primary/20 border-none rounded-none" : "btn-ghost"; - const today = dStr === todayStr ? "ring-1 ring-primary ring-inset font-black text-primary" : ""; - return `${base} ${state} ${today}`.trim(); - }, - onmouseenter: () => { - if (isRangeMode()) - hoverDate(dStr); + const st = isStart || isEnd ? "btn-primary z-10" : inRange ? "bg-primary/20 border-none rounded-none" : "btn-ghost"; + const today = ds === todayStr ? "ring-1 ring-primary ring-inset font-black text-primary" : ""; + return cls(base, st, today); }, + onmouseenter: () => rangeMode() && hoverDate(ds), onclick: () => selectDate(date) }, i.toString())); } return cells; } ]), - props.hour ? O("div", { class: "mt-3 pt-2 border-t border-base-300" }, [ - isRangeMode() ? O("div", { class: "flex gap-4" }, [ - HourSlider({ value: startHour, onChange: (h) => startHour(h) }), - HourSlider({ value: endHour, onChange: (h) => endHour(h) }) - ]) : HourSlider({ value: startHour, onChange: (h) => startHour(h) }) - ]) : null + p2.hour ? O("div", { class: "mt-3 pt-2 border-t border-base-300" }, rangeMode() ? O("div", { class: "flex gap-4" }, [HourSlider({ value: startHour, onChange: (h) => startHour(h) }), HourSlider({ value: endHour, onChange: (h) => endHour(h) })]) : HourSlider({ value: startHour, onChange: (h) => startHour(h) })) : null ]); }; - - // components/card.js - var exports_card = {}; - __export(exports_card, { - CardTitle: () => CardTitle, - CardBody: () => CardBody, - CardActions: () => CardActions, - Card: () => Card - }); - var Card = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `card ${props.class ?? ""}` }, children); - }; - var CardTitle = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `card-title ${props.class ?? ""}` }, children); - }; - var CardBody = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `card-body ${props.class ?? ""}` }, children); - }; - var CardActions = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `card-actions ${props.class ?? ""}` }, children); - }; - - // components/carousel.js - var exports_carousel = {}; - __export(exports_carousel, { - CarouselItem: () => CarouselItem, - Carousel: () => Carousel - }); - var Carousel = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `carousel ${props.class ?? ""}` }, children); - }; - var CarouselItem = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `carousel-item ${props.class ?? ""}` }, children); - }; - - // components/chat.js - var exports_chat = {}; - __export(exports_chat, { - ChatMessage: () => ChatMessage, - ChatImage: () => ChatImage, - ChatHeader: () => ChatHeader, - ChatFooter: () => ChatFooter, - ChatBubble: () => ChatBubble, - Chat: () => Chat - }); - var Chat = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `chat ${props.class ?? ""}` }, children); - }; - var ChatImage = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `chat-image avatar ${props.class ?? ""}` }, O("div", { class: "w-10 rounded-full" }, typeof children === "string" ? O("img", { src: children, alt: "avatar" }) : children)); - }; - var ChatHeader = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `chat-header ${props.class ?? ""}` }, children); - }; - var ChatFooter = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `chat-footer ${props.class ?? ""}` }, children); - }; - var ChatBubble = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `chat-bubble ${props.class ?? ""}` }, children); - }; - var ChatMessage = (props) => { - const { position = "start", avatar, header, message, footer, bubbleClass, ...rest } = props; - return Chat({ ...rest, class: `chat-${position} ${props.class ?? ""}` }, [ - avatar && ChatImage(avatar), - header && ChatHeader(header), - ChatBubble({ class: bubbleClass }, message), - footer && ChatFooter(footer) - ]); - }; - - // components/checkbox.js - var exports_checkbox = {}; - __export(exports_checkbox, { - Checkbox: () => Checkbox - }); - var Checkbox = (props) => O("input", { ...props, type: "checkbox", class: `checkbox ${props.class ?? ""}` }); - - // components/colorpicker.js - var exports_colorpicker = {}; - __export(exports_colorpicker, { - Colorpicker: () => Colorpicker - }); - var Colorpicker = (props) => { + var Datepicker = (p2) => { const isOpen = S(false); - const palette = [ - ...["#000", "#1A1A1A", "#333", "#4D4D4D", "#666", "#808080", "#B3B3B3", "#FFF"], - ...["#450a0a", "#7f1d1d", "#991b1b", "#b91c1c", "#dc2626", "#ef4444", "#f87171", "#fca5a5"], - ...["#431407", "#7c2d12", "#9a3412", "#c2410c", "#ea580c", "#f97316", "#fb923c", "#ffedd5"], - ...["#713f12", "#a16207", "#ca8a04", "#eab308", "#facc15", "#fde047", "#fef08a", "#fff9c4"], - ...["#064e3b", "#065f46", "#059669", "#10b981", "#34d399", "#4ade80", "#84cc16", "#d9f99d"], - ...["#082f49", "#075985", "#0284c7", "#0ea5e9", "#38bdf8", "#7dd3fc", "#22d3ee", "#cffafe"], - ...["#1e1b4b", "#312e81", "#4338ca", "#4f46e5", "#6366f1", "#818cf8", "#a5b4fc", "#e0e7ff"], - ...["#2e1065", "#4c1d95", "#6d28d9", "#7c3aed", "#8b5cf6", "#a855f7", "#d946ef", "#fae8ff"] - ]; - const getColor = () => { - const v2 = props.value; - return (typeof v2 === "function" ? v2() : v2) || "#000000"; - }; - return O("div", { class: `relative w-fit ${props.class ?? ""}` }, [ - O("button", { - type: "button", - class: "btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case", - onclick: (e) => { - e.stopPropagation(); - isOpen(!isOpen()); - }, - ...props - }, [ - O("div", { - class: "size-5 rounded-sm shadow-inner border border-black/10 shrink-0", - style: () => `background-color: ${getColor()}` - }), - props.label ? O("span", { class: "opacity-80" }, props.label) : null - ]), - z(isOpen, () => O("div", { - class: "absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none", - onclick: (e) => e.stopPropagation() - }, [ - O("div", { class: "grid grid-cols-8 gap-1" }, palette.map((c) => O("button", { - type: "button", - style: `background-color: ${c}`, - class: () => { - const active = getColor().toLowerCase() === c.toLowerCase(); - return `size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${active ? "ring-2 ring-offset-1 ring-primary z-10 scale-110" : ""}`; - }, - onclick: () => { - if (typeof props.value === "function") - props.value(c); - isOpen(false); - } - }))) - ])), - z(isOpen, () => O("div", { - class: "fixed inset-0 z-[100]", - onclick: () => isOpen(false) - })) - ]); - }; - - // components/Datepicker.js - var exports_Datepicker = {}; - __export(exports_Datepicker, { - Datepicker: () => Datepicker - }); - var Datepicker = (props) => { - const isOpen = S(false); - const isRangeMode = () => { - const r = typeof props.range === "function" ? props.range() : props.range; - return r === true; - }; const displayValue = S(""); + const rangeMode = () => get(p2.range) === true; R(() => { - const v2 = typeof props.value === "function" ? props.value() : props.value; - if (!v2) { - displayValue(""); - return; - } + const v2 = get(p2.value); + if (!v2) + return displayValue(""); let text = ""; if (typeof v2 === "string") { - text = props.hour && v2.includes("T") ? v2.replace("T", " ") : v2; + text = p2.hour && v2.includes("T") ? v2.replace("T", " ") : v2; } else if (v2.start && v2.end) { - const startStr = props.hour && v2.startHour !== undefined ? `${v2.start} ${String(v2.startHour).padStart(2, "0")}:00` : v2.start; - const endStr = props.hour && v2.endHour !== undefined ? `${v2.end} ${String(v2.endHour).padStart(2, "0")}:00` : v2.end; + const startStr = p2.hour && v2.startHour != null ? `${v2.start} ${String(v2.startHour).padStart(2, "0")}:00` : v2.start; + const endStr = p2.hour && v2.endHour != null ? `${v2.end} ${String(v2.endHour).padStart(2, "0")}:00` : v2.end; text = `${startStr} - ${endStr}`; } else if (v2.start) { - const startStr = props.hour && v2.startHour !== undefined ? `${v2.start} ${String(v2.startHour).padStart(2, "0")}:00` : v2.start; + const startStr = p2.hour && v2.startHour != null ? `${v2.start} ${String(v2.startHour).padStart(2, "0")}:00` : v2.start; text = `${startStr}...`; } displayValue(text); }); - const handleCalendarChange = (newValue) => { - if (typeof props.value === "function") - props.value(newValue); - if (!isRangeMode() || newValue?.end !== undefined && newValue?.end !== null) { + const handleChange = (val) => { + if (isFn(p2.value)) + p2.value(val); + else + p2.onChange?.(val); + if (!rangeMode() || val?.end != null) isOpen(false); - } }; - const toggleOpen = (e) => { - e.stopPropagation(); - isOpen(!isOpen()); - }; - return O("div", { class: `relative w-full ${props.class ?? ""}` }, [ - O("label", { class: "input input-bordered w-full", onclick: toggleOpen }, [ + return O("div", { class: cls("relative w-full", p2.class) }, [ + O("label", { class: "input input-bordered w-full", onclick: (e) => { + e.stopPropagation(); + isOpen(!isOpen()); + } }, [ O("span", { class: "icon-[lucide--calendar]" }), O("input", { - ...props, + ...p2, type: "text", class: "grow", value: displayValue, readonly: true, - placeholder: props.placeholder || (isRangeMode() ? "Seleccionar rango..." : "Seleccionar fecha...") + placeholder: p2.placeholder || (rangeMode() ? "Seleccionar rango..." : "Seleccionar fecha...") }) ]), - z(isOpen, () => O("div", { - class: "absolute left-0 mt-2 z-[100]", - onclick: (e) => e.stopPropagation() - }, [ - Calendar({ - value: props.value, - range: isRangeMode(), - hour: props.hour, - onChange: handleCalendarChange - }) - ])), - z(isOpen, () => O("div", { class: "fixed inset-0 z-[90]", onclick: () => isOpen(false) })) - ]); - }; - - // components/drawer.js - var exports_drawer = {}; - __export(exports_drawer, { - Sidebar: () => Sidebar, - Drawer: () => Drawer - }); - var Drawer = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `drawer ${props.class ?? ""}` }, children); - }; - var Sidebar = (props) => { - const id = props.id || `drawer-${Math.random().toString(36).slice(2, 9)}`; - return O("div", { ...props, class: `drawer ${props.class ?? ""}` }, [ - O("input", { - id, - type: "checkbox", - class: "drawer-toggle", - checked: () => typeof props.open === "function" ? props.open() : props.open, - onchange: (e) => typeof props.open === "function" && props.open(e.target.checked) - }), - O("div", { class: "drawer-content" }, props.children), - O("div", { class: "drawer-side" }, [ - O("label", { - for: id, - class: "drawer-overlay", - onclick: () => typeof props.open === "function" && props.open(false) - }), - O("div", { class: "min-h-full bg-base-200 w-80 p-4" }, typeof props.content === "function" ? props.content() : props.content) + z(isOpen, () => [ + O("div", { class: "fixed inset-0 z-[90]", onclick: () => isOpen(false) }), + O("div", { class: "absolute left-0 mt-2 z-[100]", onclick: (e) => e.stopPropagation() }, Calendar({ value: p2.value, range: rangeMode(), hour: p2.hour, onChange: handleChange })) ]) ]); }; - - // components/dropdown.js - var exports_dropdown = {}; - __export(exports_dropdown, { - Dropdown: () => Dropdown - }); - var currentOpen = null; - if (typeof window !== "undefined" && !window.__dropdownHandlerRegistered) { - window.addEventListener("click", (e) => { - if (currentOpen && !currentOpen.contains(e.target)) { - currentOpen.open = false; - currentOpen = null; - } - }); - window.__dropdownHandlerRegistered = true; - } - var Dropdown = (props) => O("details", { - ...props, - class: `dropdown ${props.class ?? ""}`, - onclick: (e) => { - const details = e.currentTarget; - if (currentOpen && currentOpen !== details) - currentOpen.open = false; - setTimeout(() => { - currentOpen = details.open ? details : null; - }, 0); - } - }, props.children); - - // components/fab.js - var exports_fab = {}; - __export(exports_fab, { - Fab: () => Fab - }); - var Fab = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `fab ${props.class ?? ""}` }, children); - }; - - // components/fieldset.js - var exports_fieldset = {}; - __export(exports_fieldset, { - Fieldset: () => Fieldset - }); - var Fieldset = (props, children) => O("fieldset", { - ...props, - class: `fieldset ${props.class ?? ""}` - }, [ - props.legend ? O("legend", { class: "fieldset-legend" }, props.legend) : null, - children - ]); - - // components/fileinput.js - var exports_fileinput = {}; - __export(exports_fileinput, { - Fileinput: () => Fileinput - }); - var Fileinput = (props) => { - const selectedFiles = S([]); - const isDragging = S(false); + var Fileinput = (p2) => { + const files = S([]); + const drag = S(false); const error = S(null); - const maxBytes = (props.max || 2) * 1024 * 1024; - const handleFiles = (files) => { - const fileList = Array.from(files); + const maxBytes = (p2.max || 2) * 1024 * 1024; + const process = (fileList) => { + const arr = Array.from(fileList); error(null); - if (fileList.find((f) => f.size > maxBytes)) { - error(`Máx ${props.max || 2}MB`); + if (arr.some((f) => f.size > maxBytes)) { + error(`Máx ${p2.max || 2}MB`); return; } - selectedFiles([...selectedFiles(), ...fileList]); - props.onselect?.(selectedFiles()); + const updated = [...files(), ...arr]; + files(updated); + if (isFn(p2.onselect)) + p2.onselect(updated); + else if (isFn(p2.value)) + p2.value(updated); }; - const removeFile = (idx) => { - const updated = selectedFiles().filter((_2, i) => i !== idx); - selectedFiles(updated); - props.onselect?.(updated); + const remove = (idx) => { + const updated = files().filter((_2, i) => i !== idx); + files(updated); + if (isFn(p2.onselect)) + p2.onselect(updated); + else if (isFn(p2.value)) + p2.value(updated); }; - return O("div", { ...props, class: `fieldset w-full p-0 ${props.class ?? ""}` }, [ + return O("div", { class: cls("fieldset w-full p-0", p2.class) }, [ O("label", { - class: () => `relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${isDragging() ? "border-primary bg-primary/10" : "border-base-content/20 bg-base-100 hover:bg-base-200"}`, + class: () => `relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${drag() ? "border-primary bg-primary/10" : "border-base-content/20 bg-base-100 hover:bg-base-200"}`, ondragover: (e) => { e.preventDefault(); - isDragging(true); + drag(true); }, - ondragleave: () => isDragging(false), + ondragleave: () => drag(false), ondrop: (e) => { e.preventDefault(); - isDragging(false); - handleFiles(e.dataTransfer.files); + drag(false); + process(e.dataTransfer.files); } }, [ O("div", { class: "flex items-center gap-3 w-full" }, [ O("span", { class: "icon-[lucide--upload]" }), O("span", { class: "text-sm opacity-70 truncate grow text-left" }, "Arrastra o selecciona archivos..."), - O("span", { class: "text-[10px] opacity-40 shrink-0" }, `Máx ${props.max || 2}MB`) + O("span", { class: "text-[10px] opacity-40 shrink-0" }, `Máx ${p2.max || 2}MB`) ]), O("input", { type: "file", multiple: true, - accept: props.accept || "*", + accept: p2.accept || "*", class: "hidden", - onchange: (e) => handleFiles(e.target.files) + onchange: (e) => process(e.target.files) }) ]), () => error() && O("span", { class: "text-[10px] text-error mt-1 px-1 font-medium" }, error()), - z(() => selectedFiles().length > 0, () => O("ul", { class: "mt-2 space-y-1" }, [ - K(selectedFiles, (file, idx) => O("li", { class: "flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300" }, [ - O("div", { class: "flex items-center gap-2 truncate" }, [ - O("span", { class: "opacity-50" }, "\uD83D\uDCC4"), - O("span", { class: "truncate font-medium max-w-[200px]" }, file.name), - O("span", { class: "text-[9px] opacity-40" }, `(${(file.size / 1024).toFixed(0)} KB)`) - ]), - O("button", { - type: "button", - class: "btn btn-ghost btn-xs btn-circle", - onclick: (e) => { - e.preventDefault(); - removeFile(idx); - } - }, O("span", { class: "icon-[lucide--x]" })) - ]), (file) => file.name + file.lastModified) - ])) - ]); - }; - - // components/icon.js - var exports_icon = {}; - __export(exports_icon, { - Icon: () => Icon - }); - var Icon = (props, children) => { - if (typeof props === "string") { - if (props.includes("icon-") || props.startsWith("lucide-")) { - return O("span", { class: props }, children); - } - return O("span", { class: "icon" }, props); - } - if (!props) - return null; - const { class: className, ...rest } = props; - return O("span", { ...rest, class: className }, children); - }; - - // components/indicator.js - var exports_indicator = {}; - __export(exports_indicator, { - Indicator: () => Indicator - }); - var Indicator = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `indicator ${props.class ?? ""}` }, [ - props.value ? O("span", { class: `indicator-item badge ${props.class ?? ""}` }, props.value) : null, - children - ]); - }; - - // components/Input.js - var exports_Input = {}; - __export(exports_Input, { - Input: () => Input - }); - - // components/_core.js - var get = (val) => typeof val === "function" ? val() : val; - var cls = (...classes) => classes.filter(Boolean).join(" ").trim(); - var isFunc = (f) => typeof f === "function"; - - // components/Input.js - var Input = (props) => { - const { label, icon, float, placeholder, value, left, right, content, ...rest } = props; - const showPassword = S(false); - const isFocused = S(false); - const isPassword = props.type === "password"; - const inputType = () => isPassword ? get(showPassword) ? "text" : "password" : props.type || "text"; - return O("div", { - class: "input-container", - onfocusin: () => isFocused(true), - onfocusout: (e) => { - if (!e.currentTarget.contains(e.relatedTarget)) { - isFocused(false); - } - } - }, [ - O("label", { class: "floating-label" }, [ - float ? O("span", {}, label) : null, - O("label", { - class: () => cls("input", props.class) - }, [ - label && !float ? O("span", { class: "label" }, label) : null, - left ?? null, - O("input", { - ...rest, - type: inputType, - class: "grow", - placeholder: placeholder || label || " ", - value - }), - right ?? null, - isPassword ? O("label", { class: "swap swap-rotate ml-2" }, [ - O("input", { - type: "checkbox", - onchange: (e) => showPassword(e.target.checked) - }), - O("span", { class: "swap-on icon-[lucide--eye]" }), - O("span", { class: "swap-off icon-[lucide--eye-off]" }) - ]) : null + z(() => files().length > 0, () => O("ul", { class: "mt-2 space-y-1" }, K(files, (file, idx) => O("li", { class: "flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300" }, [ + O("div", { class: "flex items-center gap-2 truncate" }, [ + O("span", { class: "opacity-50" }, "\uD83D\uDCC4"), + O("span", { class: "truncate font-medium max-w-[200px]" }, file.name), + O("span", { class: "text-[9px] opacity-40" }, `(${(file.size / 1024).toFixed(0)} KB)`) ]), - z(isFocused, () => G({ duration: 300, slide: true }, O("div", { - class: "input-content", - onmousedown: (e) => e.preventDefault() - }, [ - isFunc(content) ? content(isFocused) : content - ]))) - ]) - ]); - }; - - // components/kbd.js - var exports_kbd = {}; - __export(exports_kbd, { - Kbd: () => Kbd - }); - var Kbd = (props, children) => { - children === undefined && (children = props, props = {}); - return O("kbd", { ...props, class: `kbd ${props.class ?? ""}` }, children); - }; - - // components/loading.js - var exports_loading = {}; - __export(exports_loading, { - Loading: () => Loading - }); - var Loading = (props, children) => { - children === undefined && (children = props, props = {}); - return O("span", { ...props, class: `loading loading-spinner ${props.class ?? ""}` }, children); - }; - - // components/menu.js - var exports_menu = {}; - __export(exports_menu, { - MenuItems: () => MenuItems, - Menu: () => Menu - }); - var Menu = (props, children) => { - children === undefined && (children = props, props = {}); - return O("ul", { ...props, class: `menu ${props.class ?? ""}` }, children); - }; - var MenuItems = (props) => { - const { items, keyFn = (item, idx) => item.id ?? idx } = props; - const itemsSignal = typeof items === "function" ? items : () => items || []; - const renderItem = (item) => { - if (item.children) { - return O("li", {}, [ - O("details", {}, [ - O("summary", {}, item.label), - O("ul", {}, MenuItems({ items: item.children })) - ]) - ]); - } - return O("li", {}, O("a", { - href: item.href, - onclick: item.onclick ? (e) => { - if (!item.href) - e.preventDefault(); - item.onclick(e); - } : null - }, item.label)); - }; - return K(itemsSignal, renderItem, keyFn); - }; - - // components/modal.js - var exports_modal = {}; - __export(exports_modal, { - Modal: () => Modal - }); - var Modal = (props) => { - let dialogRef = null; - R(() => { - const isOpen = typeof props.open === "function" ? props.open() : props.open; - if (!dialogRef) - return; - isOpen ? dialogRef.showModal() : dialogRef.close(); - }); - const close = () => typeof props.open === "function" && props.open(false); - return O("dialog", { - ...props, - ref: (el) => dialogRef = el, - class: `modal ${props.class ?? ""}`, - onclose: close, - oncancel: close - }, [ - O("div", { class: "modal-box" }, [ - props.title && O("h3", { class: "text-lg font-bold" }, props.title), - props.children, - O("div", { class: "modal-action" }, [ - props.actions || O("button", { class: "btn", onclick: close }, "Cerrar") - ]) - ]), - O("form", { method: "dialog", class: "modal-backdrop" }, [ - O("button", {}, "close") - ]) - ]); - }; - - // components/navbar.js - var exports_navbar = {}; - __export(exports_navbar, { - Navbar: () => Navbar - }); - var Navbar = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `navbar ${props.class ?? ""}` }, children); - }; - - // components/radial.js - var exports_radial = {}; - __export(exports_radial, { - Radial: () => Radial - }); - var Radial = (props, children) => { - children === undefined && (children = props, props = {}); - const percentage = props.value != null ? props.value / (props.max || 100) * 100 : 0; - const style = `--value: ${percentage}; --max: 100;`; - return O("div", { - ...props, - class: `radial-progress ${props.class ?? ""}`, - style, - role: "progressbar", - "aria-valuenow": props.value, - "aria-valuemin": 0, - "aria-valuemax": props.max || 100 - }, children || `${Math.round(percentage)}%`); - }; - - // components/radio.js - var exports_radio = {}; - __export(exports_radio, { - Radio: () => Radio - }); - var Radio = (props) => O("input", { ...props, type: "radio", class: `radio ${props.class ?? ""}` }); - - // components/range.js - var exports_range = {}; - __export(exports_range, { - Range: () => Range - }); - var Range = (props) => O("input", { ...props, type: "range", class: `range ${props.class ?? ""}` }); - - // components/rating.js - var exports_rating = {}; - __export(exports_rating, { - Rating: () => Rating - }); - var Rating = (props, children) => { - children === undefined && (children = props, props = {}); - const name = `rating-${Math.random().toString(36).slice(2, 7)}`; - return O("div", { ...props, class: `rating ${props.class ?? ""}` }, children || Array.from({ length: props.count || 5 }, (_2, i) => { - const starValue = i + 1; - return O("input", { - type: "radio", - name, - class: `mask ${props.mask || "mask-star"}`, - checked: () => typeof props.value === "function" ? props.value() === starValue : props.value === starValue, - onchange: () => { - if (props.onchange) - props.onchange(starValue); - else if (typeof props.value === "function") - props.value(starValue); - } - }); - })); - }; - - // components/skeleton.js - var exports_skeleton = {}; - __export(exports_skeleton, { - SkeletonText: () => SkeletonText, - Skeleton: () => Skeleton - }); - var Skeleton = (props) => O("div", { ...props, class: `skeleton ${props.class ?? ""}` }); - var SkeletonText = (props) => { - return O("div", { ...props, class: "space-y-2" }, Array.from({ length: props.lines || 3 }, () => O("div", { class: `skeleton h-4 w-full ${props.class ?? ""}` }))); - }; - - // components/select.js - var exports_select = {}; - __export(exports_select, { - SelectLabel: () => SelectLabel, - SelectItems: () => SelectItems, - Select: () => Select - }); - var Select = (props, children) => { - children === undefined && (children = props, props = {}); - return O("select", { ...props, class: `select ${props.class ?? ""}` }, children); - }; - var SelectItems = (props) => { - const placeholderOption = props.placeholder ? O("option", { disabled: props.placeholderDisabled ?? true, selected: true }, props.placeholder) : null; - const dynamicOptions = K(() => [...typeof props.items === "function" ? props.items() : props.items || []], (item) => { - const val = typeof item === "string" ? item : item.value; - const label = typeof item === "string" ? item : item.label; - return O("option", { value: val }, label); - }, props.keyFn || ((item) => typeof item === "string" ? item : item.value)); - return placeholderOption ? [placeholderOption, dynamicOptions] : dynamicOptions; - }; - var SelectLabel = (props, children) => O("label", { class: `${props.float ? "floating-label" : "select"}` }, [ - O("span", { class: props.float ? "" : "label opacity-50" }, props.label), - props.left ?? null, - O("select", { ...props, class: `${props.float ? "select" : ""} ${props.class ?? ""}` }, children), - props.right ?? null - ]); - - // components/stack.js - var exports_stack = {}; - __export(exports_stack, { - Stack: () => Stack - }); - var Stack = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `stack ${props.class ?? ""}` }, children); - }; - - // components/stat.js - var exports_stat = {}; - __export(exports_stat, { - Stats: () => Stats, - Stat: () => Stat - }); - var Stats = (props, children) => { - children === undefined && (children = props, props = {}); - const direction = props.vertical ? "stats-vertical" : "stats-horizontal"; - return O("div", { ...props, class: `stats ${direction} ${props.class ?? ""}`.trim() }, children); - }; - var Stat = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `stat ${props.class ?? ""}` }, [ - props.icon && O("div", { class: "stat-figure" }, props.icon), - props.label && O("div", { class: "stat-title" }, props.label), - props.value && O("div", { class: "stat-value" }, props.value), - props.desc && O("div", { class: "stat-desc" }, props.desc), - props.actions && O("div", { class: "stat-actions" }, props.actions), - children - ]); - }; - - // components/swap.js - var exports_swap = {}; - __export(exports_swap, { - Swap: () => Swap - }); - var Swap = (props) => { - return O("label", { ...props, class: `swap ${props.class ?? ""}` }, [ - O("input", { - type: "checkbox", - checked: () => typeof props.value === "function" ? props.value() : props.value, - onchange: (e) => typeof props.value === "function" && props.value(e.target.checked) - }), - O("div", { class: "swap-on" }, props.on), - O("div", { class: "swap-off" }, props.off) - ]); - }; - - // components/table.js - var exports_table = {}; - __export(exports_table, { - TableItems: () => TableItems, - Table: () => Table - }); - var Table = (props, children) => { - children === undefined && (children = props, props = {}); - return O("table", { ...props, class: `table ${props.class ?? ""}` }, children); - }; - var TableItems = (props) => { - const itemArray = typeof props.items === "function" ? props.items() : props.items || []; - const thead = props.header !== false && props.columns?.some((col) => col.label) ? O("thead", {}, O("tr", {}, props.columns.map((col) => O("th", { class: col.class }, col.label)))) : null; - const tbody = O("tbody", {}, [ - K(itemArray, (item, idx) => O("tr", {}, props.columns.map((col) => { - const content = col.render ? col.render(item, idx) : item[col.key]; - return O("td", { class: col.class }, content); - })), props.keyFn || ((item, idx) => item.id ?? idx)) - ]); - return [thead, tbody]; - }; - - // components/tabs.js - var exports_tabs = {}; - __export(exports_tabs, { - Tabs: () => Tabs, - TabItems: () => TabItems, - TabContent: () => TabContent, - TabClose: () => TabClose, - Tab: () => Tab - }); - var Tabs = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `tabs ${props.class ?? ""}` }, children); - }; - var Tab = (props, children) => { - children === undefined && (children = props, props = {}); - return O("a", { ...props, role: "tab", class: `tab ${props.class ?? ""}` }, children); - }; - var TabContent = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `tab-content ${props.class ?? ""}` }, children); - }; - var TabClose = (props) => O("a", { ...props, role: "tab", class: `tab ${props.class ?? ""}` }, [ - O("span", { class: "flex items-center" }, [ - props.label, - O("span", { - class: "icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70", - onclick: (e) => { - e.stopPropagation(); - props.onClose?.(e); - } - }) - ]) - ]); - var TabItems = (props) => { - const items = typeof props.items === "function" ? props.items : () => props.items || []; - return K(items, (item, idx) => { - const TabComp = item.closable ? TabClose : Tab; - return [ - TabComp({ - ...item, - class: () => props.activeIndex() === idx ? `tab-active ${item.class ?? ""}` : item.class, + O("button", { + type: "button", + class: "btn btn-ghost btn-xs btn-circle", onclick: (e) => { e.preventDefault(); - props.activeIndex(idx); - item.onclick?.(e); - }, - onClose: () => props.onClose?.(idx, item) - }), - TabContent({ - style: () => `display: ${props.activeIndex() === idx ? "block" : "none"};` - }, typeof item.content === "function" ? item.content() : item.content) - ]; - }, (item, idx) => item.id ?? idx); - }; - - // components/textarea.js - var exports_textarea = {}; - __export(exports_textarea, { - Textarea: () => Textarea - }); - var Textarea = (props) => O("textarea", { ...props, class: `textarea ${props.class ?? ""}` }); - - // components/textrotate.js - var exports_textrotate = {}; - __export(exports_textrotate, { - TextRotate: () => TextRotate - }); - var TextRotate = (props) => { - const wordsArray = Array.isArray(props.words) ? props.words : typeof props.words === "string" ? props.words.split(",") : []; - return O("span", { ...props, class: `text-rotate ${props.class ?? ""}` }, [ - O("span", {}, wordsArray.map((word) => O("span", {}, word))) + remove(idx); + } + }, O("span", { class: "icon-[lucide--x]" })) + ]), (file) => file.name + file.lastModified))) ]); }; - - // components/timeline.js - var exports_timeline = {}; - __export(exports_timeline, { - Timeline: () => Timeline - }); - var Timeline = (props, children) => { - children === undefined && (children = props, props = {}); - const vertical = props.vertical !== false; - const compact = props.compact === true; - return O("ul", { - ...props, - class: `timeline ${vertical ? "timeline-vertical" : "timeline-horizontal"} ${compact ? "timeline-compact" : ""} ${props.class ?? ""}`.trim() - }, children); - }; - - // components/toast.js - var exports_toast = {}; - __export(exports_toast, { - Toast: () => Toast - }); var Toast = (message, type = "alert-success", duration = 3500) => { let container = document.getElementById("sigpro-toast-container"); if (!container) { @@ -1596,54 +1176,213 @@ }); document.body.appendChild(container); } - const toastHost = O("div", { style: "display: contents" }); - container.appendChild(toastHost); - let timeoutId; - const close = () => { - clearTimeout(timeoutId); - const el = toastHost.firstElementChild; - if (el && !el.classList.contains("opacity-0")) { - el.classList.add("translate-x-full", "opacity-0"); + const host = O("div", { style: "display: contents" }); + container.appendChild(host); + let closeFn, timer, enterTimer; + const ToastComponent = () => { + const visible = S(false); + const leaving = S(false); + closeFn = () => { + if (leaving()) + return; + clearTimeout(timer); + clearTimeout(enterTimer); + leaving(true); setTimeout(() => { instance.destroy(); - toastHost.remove(); + host.remove(); if (!container.hasChildNodes()) container.remove(); }, 300); - } else { - instance.destroy(); - toastHost.remove(); - } - }; - const ToastComponent = () => { - const closeIcon = O("span", { class: "icon-[lucide--x]" }); - const closeBtn = O("button", { - class: "btn btn-xs btn-circle btn-ghost", - onclick: close - }, closeIcon); - const alertDiv = O("div", { - class: `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto` + }; + enterTimer = setTimeout(() => visible(true), 0); + const content = typeof message === "function" ? get(message) : message; + const msgNode = typeof content === "string" ? O("span", {}, content) : content; + return O("div", { + class: () => { + if (leaving()) + return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`; + if (visible()) + return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`; + return `alert alert-soft ${type} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`; + } }, [ - O("span", {}, typeof message === "function" ? message() : message), - closeBtn + msgNode, + O("button", { + class: "btn btn-xs btn-circle btn-ghost", + onclick: closeFn + }, O("span", { class: "icon-[lucide--x]" })) ]); - requestAnimationFrame(() => alertDiv.classList.remove("translate-x-10", "opacity-0")); - return alertDiv; }; - const instance = H(ToastComponent, toastHost); + const instance = H(ToastComponent, host); if (duration > 0) - timeoutId = setTimeout(close, duration); - return close; + timer = setTimeout(closeFn, duration); + return closeFn; + }; + var Modal = (p2) => { + let dialogRef = null; + R(() => { + const isOpen = get(p2.open); + if (!dialogRef) + return; + isOpen ? dialogRef.showModal() : dialogRef.close(); + }); + const close = () => isFn(p2.open) && p2.open(false); + return O("dialog", { + ...p2, + ref: (el) => dialogRef = el, + class: cls("modal", p2.class), + onclose: close, + oncancel: close + }, [ + O("div", { class: "modal-box" }, [ + p2.title && O("h3", { class: "text-lg font-bold" }, p2.title), + p2.children, + O("div", { class: "modal-action" }, [ + p2.actions || Button({ class: "btn", onclick: close }, "Cerrar") + ]) + ]), + O("form", { method: "dialog", class: "modal-backdrop" }, [ + O("button", {}, "close") + ]) + ]); }; - // components/tooltip.js - var exports_tooltip = {}; - __export(exports_tooltip, { - Tooltip: () => Tooltip + // components/Editor.js + var exports_Editor = {}; + __export(exports_Editor, { + Editor: () => Editor }); - var Tooltip = (props, children) => { - children === undefined && (children = props, props = {}); - return O("div", { ...props, class: `tooltip ${props.class ?? ""}`, "data-tip": props.tip }, children); + var Editor = (p2) => { + const { value, class: extraClass } = p2; + let editorRef = null; + const isSource = S(false); + const source = S(""); + const notify = () => { + if (!editorRef) + return; + const html = editorRef.innerHTML; + if (isFn(value)) + value(html); + else + p2.onchange?.(html); + }; + const exec = (cmd, val = null) => { + if (!editorRef) + return; + editorRef.focus(); + document.execCommand(cmd, false, val); + notify(); + }; + const queryState = (cmd, val = null) => { + if (!editorRef) + return false; + try { + if (cmd === "formatBlock") { + const sel = window.getSelection(); + if (!sel.rangeCount) + return false; + let node = sel.getRangeAt(0).commonAncestorContainer; + while (node && node !== editorRef) { + if (node.nodeType === 1 && node.tagName === val) + return true; + node = node.parentNode; + } + return false; + } + return document.queryCommandState(cmd); + } catch (e) { + return false; + } + }; + const toolbar = O("div", { class: "flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200" }, [ + O("div", { class: "flex flex-wrap gap-1 flex-1" }, [ + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState("bold") ? "btn-active" : ""}`, + onclick: () => exec("bold") + }, O("span", { class: "icon-[lucide--bold]" })), + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState("italic") ? "btn-active" : ""}`, + onclick: () => exec("italic") + }, O("span", { class: "icon-[lucide--italic]" })), + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState("underline") ? "btn-active" : ""}`, + onclick: () => exec("underline") + }, O("span", { class: "icon-[lucide--underline]" })), + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState("strikeThrough") ? "btn-active" : ""}`, + onclick: () => exec("strikeThrough") + }, O("span", { class: "icon-[lucide--strikethrough]" })), + O("span", { class: "w-px h-5 bg-base-300 mx-1" }), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertUnorderedList") }, O("span", { class: "icon-[lucide--list]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("insertOrderedList") }, O("span", { class: "icon-[lucide--list-ordered]" })), + O("span", { class: "w-px h-5 bg-base-300 mx-1" }), + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${queryState("formatBlock", "BLOCKQUOTE") ? "btn-active" : ""}`, + onclick: () => exec("formatBlock", queryState("formatBlock", "BLOCKQUOTE") ? "P" : "BLOCKQUOTE") + }, O("span", { class: "icon-[lucide--quote]" })), + O("span", { class: "w-px h-5 bg-base-300 mx-1" }), + O("select", { class: "select select-xs w-16", onchange: (e) => exec("fontSize", e.target.value), value: "3" }, [ + O("option", { value: "1" }, "1"), + O("option", { value: "2" }, "2"), + O("option", { value: "3" }, "3"), + O("option", { value: "4" }, "4"), + O("option", { value: "5" }, "5"), + O("option", { value: "6" }, "6"), + O("option", { value: "7" }, "7") + ]), + O("span", { class: "w-px h-5 bg-base-300 mx-1" }), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("undo") }, O("span", { class: "icon-[lucide--undo-2]" })), + O("button", { type: "button", class: "btn btn-ghost btn-xs", onclick: () => exec("redo") }, O("span", { class: "icon-[lucide--redo-2]" })) + ]), + O("div", { class: "flex" }, [ + O("button", { + type: "button", + class: () => `btn btn-ghost btn-xs ${isSource() ? "btn-active" : ""}`, + onclick: () => { + const wasSource = isSource(); + if (!wasSource) { + source(editorRef?.innerHTML || ""); + } else { + if (editorRef) { + editorRef.innerHTML = source(); + notify(); + } + } + isSource(!wasSource); + } + }, O("span", { class: "icon-[lucide--code-2]" })) + ]) + ]); + return O("div", { class: cls("border border-base-300 rounded-box bg-base-100 overflow-hidden", extraClass) }, [ + toolbar, + O("div", { class: "relative" }, [ + O("div", { + ref: (el) => { + if (!editorRef && el) { + editorRef = el; + el.innerHTML = get(value) || ""; + } + }, + style: () => `min-height:10rem;${isSource() ? "display:none" : ""}`, + class: "p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]", + contenteditable: "true", + oninput: notify, + onpaste: () => setTimeout(notify, 0) + }), + O("textarea", { + class: "w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0", + style: () => isSource() ? "" : "display:none", + value: source, + oninput: (e) => source(e.target.value) + }) + ]) + ]); }; // utils.js @@ -1671,48 +1410,8 @@ // index.js var Components = { - ...exports_Accordion, - ...exports_Alert, - ...exports_Autocomplete, - ...exports_Badge, - ...exports_button, - ...exports_Calendar, - ...exports_card, - ...exports_carousel, - ...exports_chat, - ...exports_checkbox, - ...exports_colorpicker, - ...exports_Datepicker, - ...exports_drawer, - ...exports_dropdown, - ...exports_fab, - ...exports_fieldset, - ...exports_fileinput, - ...exports_icon, - ...exports_indicator, - ...exports_Input, - ...exports_kbd, - ...exports_loading, - ...exports_menu, - ...exports_modal, - ...exports_navbar, - ...exports_radial, - ...exports_radio, - ...exports_range, - ...exports_rating, - ...exports_skeleton, - ...exports_select, - ...exports_stack, - ...exports_stat, - ...exports_stat, - ...exports_swap, - ...exports_table, - ...exports_tabs, - ...exports_textarea, - ...exports_textrotate, - ...exports_timeline, - ...exports_toast, - ...exports_tooltip + ...exports_All, + ...exports_Editor }; var Utils = { Locale, diff --git a/dist/sigpro-ui.min.css b/dist/sigpro-ui.min.css index 05ae148..ed139df 100644 --- a/dist/sigpro-ui.min.css +++ b/dist/sigpro-ui.min.css @@ -1,2 +1,2 @@ /*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-gray-500:oklch(55.1% .027 264.364);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-3xl:48rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-3xl:1.5rem;--drop-shadow-2xl:0 25px 25px #00000026;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(25.33% .016 252.42);--color-base-200:oklch(23.26% .014 253.1);--color-base-300:oklch(21.15% .012 254.09);--color-base-content:oklch(97.807% .029 256.847);--color-primary:oklch(58% .233 277.117);--color-primary-content:oklch(96% .018 272.314);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E");scrollbar-color:currentColor #0000}@supports (color:color-mix(in lab, red, red)){:root{scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) #0000}}@property --radialprogress{syntax:"";inherits:true;initial-value:0%}:root:not(span){overflow:var(--page-overflow)}:root{background:var(--page-scroll-bg,var(--root-bg));--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) var(--root-bg,#0000)}@supports (color:color-mix(in lab, red, red)){:root{--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) color-mix(in srgb, var(--root-bg,#0000), oklch(0% 0 0) calc(var(--page-has-backdrop,0) * 40%))}}:root{--page-scroll-transition-on:background-color .3s ease-out;transition:var(--page-scroll-transition);scrollbar-gutter:var(--page-scroll-gutter,unset);scrollbar-gutter:if(style(--page-has-scroll: 1): var(--page-scroll-gutter,unset) ; else: unset)}@keyframes set-page-has-scroll{0%,to{--page-has-scroll:1}}:root,[data-theme]{background:var(--page-scroll-bg,var(--root-bg));color:var(--color-base-content)}:where(:root,[data-theme]){--root-bg:var(--color-base-100)}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(92% 0 0);--color-base-content:oklch(25% .006 285);--color-primary:oklch(25% .006 285);--color-primary-content:oklch(98% 0 0);--color-secondary:oklch(55% .046 257.417);--color-secondary-content:oklch(98% 0 0);--color-accent:oklch(96% 0 0);--color-accent-content:oklch(25% .006 285);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(62% .17 163);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .18 84);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(60% .25 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=dark]:checked),[data-theme=dark]{color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}@layer components;@layer utilities{@layer daisyui.l1.l2.l3{.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:visibility .3s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;overscroll-behavior:contain;z-index:999;scrollbar-gutter:auto;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:clip}.modal::backdrop{display:none}:where(.drawer-side){overflow:hidden}.drawer-side{pointer-events:none;visibility:hidden;z-index:10;overscroll-behavior:contain;opacity:0;width:100%;transition:opacity .2s ease-out .1s allow-discrete, visibility .3s ease-out .1s allow-discrete;inset-inline-start:0;background-color:#0000;grid-template-rows:repeat(1,minmax(0,1fr));grid-template-columns:repeat(1,minmax(0,1fr));grid-row-start:1;grid-column-start:1;place-items:flex-start start;height:100dvh;display:grid;position:fixed;top:0}.drawer-side>.drawer-overlay{cursor:pointer;background-color:oklch(0% 0 0/.4);place-self:stretch stretch;position:sticky;top:0}.drawer-side>*{grid-row-start:1;grid-column-start:1}.drawer-side>:not(.drawer-overlay){will-change:transform;transition:translate .3s ease-out,width .2s ease-out;translate:-100%}[dir=rtl] :is(.drawer-side>:not(.drawer-overlay)){translate:100%}.fab{pointer-events:none;z-index:999;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));white-space:nowrap;inset-inline-end:1rem;flex-direction:column-reverse;align-items:flex-end;gap:.5rem;display:flex;position:fixed;bottom:1rem}.fab>*{pointer-events:auto;align-items:center;gap:.5rem;display:flex}.fab>:hover,.fab>:has(:focus-visible){z-index:1}.fab>[tabindex]:first-child{transition-property:opacity,visibility,rotate;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:grid;position:relative}.fab .fab-close,.fab .fab-main-action{inset-inline-end:0;position:absolute;bottom:0}:is(.fab:focus-within:has(.fab-close),.fab:focus-within:has(.fab-main-action))>[tabindex]{opacity:0;rotate:90deg}.fab:focus-within>[tabindex]:first-child{pointer-events:none}.fab:focus-within>:nth-child(n+2){visibility:visible;--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:1}.fab>:nth-child(n+2){visibility:hidden;--tw-scale-x:80%;--tw-scale-y:80%;--tw-scale-z:80%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:0;transition-property:opacity,scale,visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.fab>:nth-child(n+2).fab-main-action,.fab>:nth-child(n+2).fab-close{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.fab>:nth-child(3){transition-delay:30ms}.fab>:nth-child(4){transition-delay:60ms}.fab>:nth-child(5){transition-delay:90ms}.fab>:nth-child(6){transition-delay:.12s}.drawer-toggle{appearance:none;opacity:0;width:0;height:0;position:fixed}:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:currentColor oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}@supports (color:color-mix(in lab, red, red)){:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}}:where(:root:has(.drawer-toggle:checked)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}.tooltip{--tt-bg:var(--color-neutral);--tt-off:calc(100% + .5rem);--tt-tail:calc(100% + 1px + .25rem);display:inline-block;position:relative}.tooltip>.tooltip-content,.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:2;--tw-content:attr(data-tip);content:var(--tw-content);width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);display:block;position:absolute}@media (prefers-reduced-motion:no-preference){.tooltip>.tooltip-content,.tooltip[data-tip]:before,.tooltip:after{transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms}}:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{opacity:1;--tt-pos:0rem}@media (prefers-reduced-motion:no-preference){:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}}.tab{cursor:pointer;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;user-select:none;flex-wrap:wrap;justify-content:center;align-items:center;display:inline-flex;position:relative}@media (hover:hover){.tab:hover{color:var(--color-base-content)}}.tab{--tab-p:.75rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min));--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px);order:var(--tab-order);height:var(--tab-height);padding-inline:var(--tab-p);border-color:#0000;font-size:.875rem}.tab:is(input[type=radio]){min-width:fit-content}.tab:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)}}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.tab\!{cursor:pointer!important;appearance:none!important;text-align:center!important;webkit-user-select:none!important;-webkit-user-select:none!important;user-select:none!important;flex-wrap:wrap!important;justify-content:center!important;align-items:center!important;display:inline-flex!important;position:relative!important}@media (hover:hover){.tab\!:hover{color:var(--color-base-content)!important}}.tab\!{--tab-p:.75rem!important;--tab-bg:var(--color-base-100)!important;--tab-border-color:var(--color-base-300)!important;--tab-radius-ss:0!important;--tab-radius-se:0!important;--tab-radius-es:0!important;--tab-radius-ee:0!important;--tab-order:0!important;--tab-radius-min:calc(.75rem - var(--border))!important;--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min))!important;--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px)!important;order:var(--tab-order)!important;height:var(--tab-height)!important;padding-inline:var(--tab-p)!important;border-color:#0000!important;font-size:.875rem!important}.tab\!:is(input[type=radio]){min-width:fit-content!important}.tab\!:is(input[type=radio]):after{--tw-content:attr(aria-label)!important;content:var(--tw-content)!important}.tab\!:is(label){position:relative!important}.tab\!:is(label) input{cursor:pointer!important;appearance:none!important;opacity:0!important;position:absolute!important;inset:0!important}:is(.tab\!:checked,.tab\!:is(label:has(:checked)),.tab\!:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block!important}.tab\!:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)!important}@supports (color:color-mix(in lab, red, red)){.tab\!:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)!important}}.tab\!:not(input):empty{cursor:default!important;flex-grow:1!important}.tab\!:focus{--tw-outline-style:none!important;outline-style:none!important}@media (forced-colors:active){.tab\!:focus{outline-offset:2px!important;outline:2px solid #0000!important}}.tab\!:focus-visible,.tab\!:is(label:has(:checked:focus-visible)){outline-offset:-5px!important;outline:2px solid!important}.tab\![disabled]{pointer-events:none!important;opacity:.4!important}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu details{interpolate-size:allow-keywords;overflow:hidden}.menu details::details-content{block-size:0}@media (prefers-reduced-motion:no-preference){.menu details::details-content{transition-behavior:allow-discrete;transition-property:block-size,content-visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.menu details[open]::details-content{block-size:auto}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{outline-offset:2px;outline:2px solid #0000}}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li).menu-disabled{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.floating-label{display:block;position:relative}.floating-label input{display:block}.floating-label input::placeholder,.floating-label textarea::placeholder{transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out}.floating-label>span{z-index:1;background-color:var(--color-base-100);opacity:0;inset-inline-start:.75rem;top:calc(var(--size-field,.25rem) * 10 / 2);pointer-events:none;border-radius:2px;padding-inline:.25rem;font-size:.875rem;line-height:1;transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out;position:absolute;translate:0 -50%}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown))) ::placeholder{opacity:0;pointer-events:auto;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown)))>span{opacity:1;pointer-events:auto;z-index:2;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}.floating-label:has(:disabled,[disabled])>span{opacity:0}.floating-label:has(.input-xs,.select-xs,.textarea-xs) span{top:calc(var(--size-field,.25rem) * 6 / 2);font-size:.6875rem}.floating-label:has(.input-sm,.select-sm,.textarea-sm) span{top:calc(var(--size-field,.25rem) * 8 / 2);font-size:.75rem}.floating-label:has(.input-md,.select-md,.textarea-md) span{top:calc(var(--size-field,.25rem) * 10 / 2);font-size:.875rem}.floating-label:has(.input-lg,.select-lg,.textarea-lg) span{top:calc(var(--size-field,.25rem) * 12 / 2);font-size:1.125rem}.floating-label:has(.input-xl,.select-xl,.textarea-xl) span{top:calc(var(--size-field,.25rem) * 14 / 2);font-size:1.375rem}.dropdown{position-area:var(--anchor-v,bottom) var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(:has(~[class*=dropdown-content])):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown.dropdown-close .dropdown-content,.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,.dropdown.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover],.dropdown .dropdown-content{z-index:999}@media (prefers-reduced-motion:no-preference){.dropdown[popover],.dropdown .dropdown-content{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:.95}}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within) .dropdown-content,.dropdown:not(.dropdown-close).dropdown-hover:hover .dropdown-content{opacity:1;scale:1}.dropdown:is(details) summary::-webkit-details-marker{display:none}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-close{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}:is(.dropdown[popover].dropdown-close,.dropdown[popover]:not(.dropdown-open,:popover-open)){transform-origin:top;opacity:0;display:none;scale:.95}:where(.btn){width:unset}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0 / calc(var(--depth) * .15));touch-action:manipulation;box-shadow:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--depth) * 6%)) inset, var(--btn-shadow);--size:calc(var(--size-field,.25rem) * 10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:var(--btn-bg);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}@supports (color:color-mix(in lab, red, red)){.btn{--btn-border:color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%))}}.btn{--btn-shadow:0 3px 2px -2px var(--btn-bg), 0 4px 3px -2px var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn{--btn-shadow:0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000), 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000)}}.btn{--btn-noise:var(--fx-noise)}@media (hover:hover){.btn:hover{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}}.btn:focus-visible,.btn:has(:focus-visible){isolation:isolate;outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:var(--btn-color,var(--color-base-200));translate:0 .5px}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 5%)}}.btn:active:not(.btn-active){--btn-border:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn:active:not(.btn-active){--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0)}.btn:is(input[type=checkbox],input[type=radio]){appearance:none}.btn:is(input[type=checkbox],input[type=radio])[aria-label]:after{--tw-content:attr(aria-label);content:var(--tw-content)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem) * 6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.collapse{border-radius:var(--radius-box,1rem);isolation:isolate;grid-template-rows:max-content 0fr;grid-template-columns:minmax(0,1fr);width:100%;display:grid;position:relative;overflow:hidden}@media (prefers-reduced-motion:no-preference){.collapse{transition:grid-template-rows .2s}}.collapse>input:is([type=checkbox],[type=radio]){appearance:none;opacity:0;z-index:1;grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close)),.collapse:not(.collapse-close):has(>input:is([type=checkbox],[type=radio]):checked){grid-template-rows:max-content 1fr}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){content-visibility:visible;min-height:fit-content}@supports not (content-visibility:visible){.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){visibility:visible}}.collapse:focus-visible,.collapse:has(>input:is([type=checkbox],[type=radio]):focus-visible),.collapse:has(summary:focus-visible){outline-color:var(--color-base-content);outline-offset:2px;outline-width:2px;outline-style:solid}.collapse:not(.collapse-close)>input[type=checkbox],.collapse:not(.collapse-close)>input[type=radio]:not(:checked),.collapse:not(.collapse-close)>.collapse-title{cursor:pointer}:is(.collapse[tabindex]:focus:not(.collapse-close,.collapse[open]),.collapse[tabindex]:focus-within:not(.collapse-close,.collapse[open]))>.collapse-title{cursor:unset}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>:where(.collapse-content),.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){padding-bottom:1rem}.collapse:is(details){width:100%}@media (prefers-reduced-motion:no-preference){.collapse:is(details)::details-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out, height .2s;interpolate-size:allow-keywords;height:0}.collapse:is(details):where([open])::details-content{height:auto}}.collapse:is(details) summary{display:block;position:relative}.collapse:is(details) summary::-webkit-details-marker{display:none}.collapse:is(details)>.collapse-content{content-visibility:visible}.collapse:is(details) summary{outline:none}.collapse-content{content-visibility:hidden;min-height:0;cursor:unset;grid-row-start:2;grid-column-start:1;padding-left:1rem;padding-right:1rem}@supports not (content-visibility:hidden){.collapse-content{visibility:hidden}}@media (prefers-reduced-motion:no-preference){.collapse-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out}}.radial-progress{height:var(--size);width:var(--size);vertical-align:middle;box-sizing:content-box;--value:0;--size:5rem;--thickness:calc(var(--size) / 10);--radialprogress:calc(var(--value) * 1%);background-color:#0000;border-radius:3.40282e38px;place-content:center;transition:--radialprogress .3s linear;display:inline-grid;position:relative}.radial-progress:before{content:"";background:radial-gradient(farthest-side, currentColor 98%, #0000) top/var(--thickness) var(--thickness) no-repeat, conic-gradient(currentColor var(--radialprogress), #0000 0);webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));border-radius:3.40282e38px;position:absolute;inset:0}.radial-progress:after{content:"";inset:calc(50% - var(--thickness) / 2);transform:rotate(calc(var(--value) * 3.6deg - 90deg)) translate(calc(var(--size) / 2 - 50%));background-color:currentColor;border-radius:3.40282e38px;transition:transform .3s linear;position:absolute}.list{flex-direction:column;font-size:.875rem;display:flex}.list .list-row{--list-grid-cols:minmax(0, auto) 1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border) solid;inset-inline:var(--radius-box);border-color:var(--color-base-content);position:absolute;bottom:0}@supports (color:color-mix(in lab, red, red)){:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{border-color:color-mix(in oklab, var(--color-base-content) 5%, transparent)}}.toggle{border:var(--border) solid currentColor;color:var(--input-color);cursor:pointer;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p), var(--radius-selector-max)) + min(var(--border), var(--radius-selector-max)));padding:var(--toggle-p);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;display:inline-grid;position:relative;box-shadow:inset 0 1px}@supports (color:color-mix(in lab, red, red)){.toggle{box-shadow:0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000) inset}}.toggle{--input-color:var(--color-base-content);transition:color .3s,grid-template-columns .2s}@supports (color:color-mix(in lab, red, red)){.toggle{--input-color:color-mix(in oklab, var(--color-base-content) 50%, #0000)}}.toggle{--toggle-p:calc(var(--size) * .125);--size:calc(var(--size-selector,.25rem) * 6);width:calc((var(--size) * 2) - (var(--border) + var(--toggle-p)) * 2);height:var(--size)}.toggle>*{z-index:1;cursor:pointer;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:0deg}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:0deg}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);width:100%;height:100%;box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor;background-color:currentColor;grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@supports (color:color-mix(in lab, red, red)){.toggle:before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000)}}.toggle:before{background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border) solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;display:inline-flex;position:relative}@supports (color:color-mix(in lab, red, red)){.input{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.input{--size:calc(var(--size-field,.25rem) * 10);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.input:where(input){display:inline-flex}.input :where(input){appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.input :where(input):focus,.input :where(input):focus-within{outline-offset:2px;outline:2px solid #0000}}.input :where(input[type=url]),.input :where(input[type=email]){direction:ltr}.input :where(input[type=date]){display:inline-flex}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.input:focus,.input:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.input:focus,.input:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.input:focus,.input:focus-within{--font-size:1rem}}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{box-shadow:none}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.input:has(>input[type=date]) :where(input[type=date]){webkit-appearance:none;appearance:none;display:inline-flex}.input:has(>input[type=date]) input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;width:1em;height:1em;position:absolute;inset-inline-end:.75em}.indicator{width:max-content;display:inline-flex;position:relative}.indicator :where(.indicator-item){z-index:1;white-space:nowrap;top:var(--indicator-t,0);bottom:var(--indicator-b,auto);left:var(--indicator-s,auto);right:var(--indicator-e,0);translate:var(--indicator-x,50%) var(--indicator-y,-50%);position:absolute}.table{border-collapse:separate;--tw-border-spacing-x:calc(.25rem * 0);--tw-border-spacing-y:calc(.25rem * 0);width:100%;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);border-radius:var(--radius-box);text-align:left;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead,tfoot){color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.table :where(thead,tfoot){font-size:.875rem;font-weight:600}.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);content:"";border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{--tw-content:counter(step);content:var(--tw-content);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{--tw-content:none;content:var(--tw-content)}.steps .step[data-content]:after{--tw-content:attr(data-content);content:var(--tw-content)}.range{appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem) * 6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:currentColor}@supports (color:color-mix(in lab, red, red)){.range{--range-bg:color-mix(in oklab, currentColor 10%, #0000)}}.range{cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));background-color:var(--range-thumb);height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));position:relative;top:50%;transform:translateY(-50%)}@supports (color:color-mix(in lab, red, red)){.range::-webkit-slider-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));background-color:currentColor;position:relative;top:50%}@supports (color:color-mix(in lab, red, red)){.range::-moz-range-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range:disabled{cursor:not-allowed;opacity:.3}.chat-bubble{border-radius:var(--radius-field);background-color:var(--color-base-300);width:fit-content;color:var(--color-base-content);grid-row-end:3;min-width:2.5rem;max-width:90%;min-height:2rem;padding-block:.5rem;padding-inline:1rem;display:block;position:relative}.chat-bubble:before{background-color:inherit;content:"";width:.75rem;height:.75rem;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-chat);-webkit-mask-image:var(--mask-chat);mask-image:var(--mask-chat);position:absolute;bottom:0;-webkit-mask-position:0 -1px;mask-position:0 -1px;-webkit-mask-size:.8125rem;mask-size:.8125rem}.select{border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);touch-action:manipulation;white-space:nowrap;text-overflow:ellipsis;box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:.75rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.select{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.select{border-color:var(--input-color);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.select{--size:calc(var(--size-field,.25rem) * 10)}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}[dir=rtl] .select::picker(select){translate:.5rem}[dir=rtl] .select select::picker(select){translate:.5rem}.select[multiple]{background-image:none;height:auto;padding-block:.75rem;padding-inline-end:.75rem;overflow:auto}.select select{appearance:none;width:calc(100% + 2.75rem);height:calc(100% - calc(var(--border) * 2));background:inherit;border-radius:inherit;border-style:none;align-items:center;margin-inline:-.75rem -1.75rem;padding-inline:.75rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.select select:focus,.select select:focus-within{outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.select:focus,.select:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.select:focus,.select:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}@supports (appearance:base-select){.select,.select select{appearance:base-select}:is(.select,.select select)::picker(select){appearance:base-select}}:is(.select,.select select)::picker(select){color:inherit;border:var(--border) solid var(--color-base-200);border-radius:var(--radius-box);background-color:inherit;max-height:min(24rem,70dvh);box-shadow:0 2px calc(var(--depth) * 3px) -2px oklch(0% 0 0/.2);box-shadow:0 20px 25px -5px rgb(0 0 0/calc(var(--depth) * .1)), 0 8px 10px -6px rgb(0 0 0/calc(var(--depth) * .1));margin-block:.5rem;margin-inline:.5rem;padding:.5rem;translate:-.5rem}:is(.select,.select select)::picker-icon{display:none}:is(.select,.select select) optgroup{padding-top:.5em}:is(.select,.select select) optgroup option:first-child{margin-top:.5em}:is(.select,.select select) option{border-radius:var(--radius-field);white-space:normal;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{outline-offset:2px;outline:2px solid #0000}}:is(.select,.select select) option:not(:disabled):active{background-color:var(--color-neutral);color:var(--color-neutral-content);box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--color-neutral)}.timeline{display:flex;position:relative}.timeline>li{grid-template-rows:var(--timeline-row-start,minmax(0, 1fr)) auto var(--timeline-row-end,minmax(0, 1fr));grid-template-columns:var(--timeline-col-start,minmax(0, 1fr)) auto var(--timeline-col-end,minmax(0, 1fr));flex-shrink:0;align-items:center;display:grid;position:relative}.timeline>li>hr{border:none;width:100%}.timeline>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline>li>hr:last-child{grid-area:2/3/auto/none}@media print{.timeline>li>hr{border:.1px solid var(--color-base-300)}}.timeline :where(hr){background-color:var(--color-base-300);height:.25rem}.timeline:has(.timeline-middle hr):first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline:has(.timeline-middle hr):last-child,.timeline:not(:has(.timeline-middle)) :first-child hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline:not(:has(.timeline-middle)) :last-child hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.swap{cursor:pointer;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;place-content:center;display:inline-grid;position:relative}.swap input{appearance:none;border:none}.swap>*{grid-row-start:1;grid-column-start:1}@media (prefers-reduced-motion:no-preference){.swap>*{transition-property:transform,rotate,opacity;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.swap .swap-on,.swap .swap-indeterminate,.swap input:indeterminate~.swap-on,.swap input:is(:checked,:indeterminate)~.swap-off{opacity:0}.swap input:checked~.swap-on,.swap input:indeterminate~.swap-indeterminate{opacity:1;backface-visibility:visible}.collapse-title{grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out;position:relative}.avatar{vertical-align:middle;display:inline-flex;position:relative}.avatar>div{aspect-ratio:1;display:block;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.checkbox{border:var(--border) solid var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox{border:var(--border) solid var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox{cursor:pointer;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 0 #0000 inset, 0 0 #0000;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;display:inline-block;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0px 3px 0 0px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media (forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}.checkbox:indeterminate{background-color:var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox:indeterminate{background-color:var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:0deg}.radio{cursor:pointer;appearance:none;vertical-align:middle;border:var(--border) solid var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;display:inline-block;position:relative}@supports (color:color-mix(in lab, red, red)){.radio{border:var(--border) solid var(--input-color,color-mix(in srgb, currentColor 20%, #0000))}}.radio{box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);color:var(--input-color,currentColor)}.radio:before{--tw-content:"";content:var(--tw-content);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor}@media (prefers-reduced-motion:no-preference){.radio:checked,.radio[aria-checked=true]{animation:.2s ease-out radio}}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.rating{vertical-align:middle;display:inline-flex;position:relative}.rating input{appearance:none;border:none}.rating :where(*){background-color:var(--color-base-content);opacity:.2;border-radius:0;width:1.5rem;height:1.5rem}@media (prefers-reduced-motion:no-preference){.rating :where(*){animation:.25s ease-out rating}}.rating :where(*):is(input){cursor:pointer}.rating .rating-hidden{background-color:#0000;width:.5rem}.rating input[type=radio]:checked{background-image:none}.rating :checked,.rating [aria-checked=true],.rating [aria-current=true],.rating :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1}.rating :focus-visible{scale:1.1}@media (prefers-reduced-motion:no-preference){.rating :focus-visible{transition:scale .2s ease-out}}.rating :active:focus{animation:none;scale:1.1}.rating\!{vertical-align:middle!important;display:inline-flex!important;position:relative!important}.rating\! input{appearance:none!important;border:none!important}.rating\! :where(*){background-color:var(--color-base-content)!important;opacity:.2!important;border-radius:0!important;width:1.5rem!important;height:1.5rem!important}@media (prefers-reduced-motion:no-preference){.rating\! :where(*){animation:.25s ease-out rating!important}}.rating\! :where(*):is(input){cursor:pointer!important}.rating\! .rating-hidden{background-color:#0000!important;width:.5rem!important}.rating\! input[type=radio]:checked{background-image:none!important}.rating\! :checked,.rating\! [aria-checked=true],.rating\! [aria-current=true],.rating\! :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1!important}.rating\! :focus-visible{scale:1.1!important}@media (prefers-reduced-motion:no-preference){.rating\! :focus-visible{transition:scale .2s ease-out!important}}.rating\! :active:focus{animation:none!important;scale:1.1!important}.navbar{align-items:center;width:100%;min-height:4rem;padding:.5rem;display:flex}.drawer{grid-auto-columns:max-content auto;width:100%;display:grid;position:relative}.card{border-radius:var(--radius-box);outline-offset:2px;outline:0 solid #0000;flex-direction:column;transition:outline .2s ease-in-out;display:flex;position:relative}.card:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.card:focus{outline-offset:2px;outline:2px solid #0000}}.card:focus-visible{outline-color:currentColor}.card :where(figure:first-child){border-start-start-radius:inherit;border-start-end-radius:inherit;border-end-end-radius:unset;border-end-start-radius:unset;overflow:hidden}.card :where(figure:last-child){border-start-start-radius:unset;border-start-end-radius:unset;border-end-end-radius:inherit;border-end-start-radius:inherit;overflow:hidden}.card figure{justify-content:center;align-items:center;display:flex}.card:has(>input:is(input[type=checkbox],input[type=radio])){cursor:pointer;-webkit-user-select:none;user-select:none}.card:has(>:checked){outline:2px solid}.stats{border-radius:var(--radius-box);grid-auto-flow:column;display:inline-grid;position:relative;overflow-x:auto}.progress{appearance:none;border-radius:var(--radius-box);background-color:currentColor;width:100%;height:.5rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.progress{background-color:color-mix(in oklab, currentcolor 20%, transparent)}}.progress{color:var(--color-base-content)}.progress:indeterminate{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%}@media (prefers-reduced-motion:no-preference){.progress:indeterminate{animation:5s ease-in-out infinite progress}}@supports ((-moz-appearance:none)){.progress:indeterminate::-moz-progress-bar{background-color:#0000}@media (prefers-reduced-motion:no-preference){.progress:indeterminate::-moz-progress-bar{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%;animation:5s ease-in-out infinite progress}}.progress::-moz-progress-bar{border-radius:var(--radius-box);background-color:currentColor}}@supports ((-webkit-appearance:none)){.progress::-webkit-progress-bar{border-radius:var(--radius-box);background-color:#0000}.progress::-webkit-progress-value{border-radius:var(--radius-box);background-color:currentColor}}.textarea{border:var(--border) solid #0000;appearance:none;border-radius:var(--radius-field);background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);min-height:5rem;font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;flex-shrink:1;padding-block:.5rem;padding-inline:.75rem}@supports (color:color-mix(in lab, red, red)){.textarea{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.textarea{--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.textarea textarea{appearance:none;background-color:#0000;border:none}.textarea textarea:focus,.textarea textarea:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.textarea textarea:focus,.textarea textarea:focus-within{outline-offset:2px;outline:2px solid #0000}}.textarea:focus,.textarea:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.textarea:focus,.textarea:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.textarea:focus,.textarea:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.textarea:focus,.textarea:focus-within{--font-size:1rem}}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){box-shadow:none}.textarea:has(>textarea[disabled])>textarea[disabled]{cursor:not-allowed}.stack{grid-template-rows:3px 4px 1fr 4px 3px;grid-template-columns:3px 4px 1fr 4px 3px;display:inline-grid}.stack>*{width:100%;height:100%}.stack>:nth-child(n+2){opacity:.7;width:100%}.stack>:nth-child(2){z-index:2;opacity:.9}.stack>:first-child{z-index:3;width:100%}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.tab-content{order:var(--tabcontent-order);--tabcontent-radius-ss:var(--radius-box);--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box);--tabcontent-order:1;width:100%;height:calc(100% - var(--tab-height) + var(--border));margin:var(--tabcontent-margin);border-color:#0000;border-width:var(--border);border-start-start-radius:var(--tabcontent-radius-ss);border-start-end-radius:var(--tabcontent-radius-se);border-end-end-radius:var(--tabcontent-radius-ee);border-end-start-radius:var(--tabcontent-radius-es);display:none}.timeline-end{grid-area:3/1/4/4;place-self:flex-start center;margin:.25rem}.timeline-start{grid-area:1/1/2/4;place-self:flex-end center;margin:.25rem}.stat-figure{grid-row:1/span 3;grid-column-start:2;place-self:center flex-end}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:.95;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.drawer-content{grid-row-start:1;grid-column-start:2;min-width:0}.timeline-middle{grid-row-start:2;grid-column-start:2}.stat-value{white-space:nowrap;grid-column-start:1;font-size:2rem;font-weight:800}.stat-desc{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-desc{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-desc{font-size:.75rem}.stat-title{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-title{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-title{font-size:.75rem}.stat-actions{white-space:nowrap;grid-column-start:1}.chat-image{grid-row:span 2/span 2;align-self:flex-end}.chat-footer{grid-row-start:3;gap:.25rem;font-size:.6875rem;display:flex}.chat-header{grid-row-start:1;gap:.25rem;font-size:.6875rem;display:flex}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);--divider-color:var(--color-base-content);flex-direction:row;align-self:stretch;align-items:center;display:flex}@supports (color:color-mix(in lab, red, red)){.divider{--divider-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.divider:before,.divider:after{content:"";background-color:var(--divider-color);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{--tw-content:"×";content:var(--tw-content)}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.label{white-space:nowrap;color:currentColor;align-items:center;gap:.375rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.label{color:color-mix(in oklab, currentcolor 60%, transparent)}}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid currentColor;margin-inline:-.75rem .75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid currentColor;margin-inline:.75rem -.75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.fieldset-legend{color:var(--color-base-content);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:-.25rem;padding-block:.5rem;font-weight:600;display:flex}.carousel-item{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}.status{aspect-ratio:1;border-radius:var(--radius-selector);background-color:var(--color-base-content);width:.5rem;height:.5rem;display:inline-block}@supports (color:color-mix(in lab, red, red)){.status{background-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.status{vertical-align:middle;color:#0000004d;background-position:50%;background-repeat:no-repeat}@supports (color:color-mix(in lab, red, red)){.status{color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.status{background-image:radial-gradient(circle at 35% 30%, oklch(1 0 0 / calc(var(--depth) * .5)), #0000);box-shadow:0 2px 3px -1px}@supports (color:color-mix(in lab, red, red)){.status{box-shadow:0 2px 3px -1px color-mix(in oklab, currentColor calc(var(--depth) * 100%), #0000)}}.badge{border-radius:var(--radius-selector);vertical-align:middle;color:var(--badge-fg);border:var(--border) solid var(--badge-color,var(--color-base-200));background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);background-color:var(--badge-bg);--badge-bg:var(--badge-color,var(--color-base-100));--badge-fg:var(--color-base-content);--size:calc(var(--size-selector,.25rem) * 6);width:fit-content;height:var(--size);padding-inline:calc(var(--size) / 2 - var(--border));justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.kbd{border-radius:var(--radius-field);background-color:var(--color-base-200);vertical-align:middle;border:var(--border) solid var(--color-base-content);justify-content:center;align-items:center;padding-inline:.5em;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.kbd{border:var(--border) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{border-bottom:calc(var(--border) + 1px) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.kbd{border-bottom:calc(var(--border) + 1px) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{--size:calc(var(--size-selector,.25rem) * 6);height:var(--size);min-width:var(--size);font-size:.875rem}.text-rotate{vertical-align:bottom;white-space:nowrap;--duration:var(--tw-duration);transition-property:none;display:inline-block;overflow:hidden}.text-rotate>*{height:calc(var(--items,1) * 100%);justify-items:start;display:grid}.text-rotate>:has(:nth-child(2)){--items:2;animation:rotator var(--duration,10s) linear(0 0% 49%, .5 50% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(3)){--items:3;animation:rotator var(--duration,10s) linear(0 0% 32%, .333333 33% 65%, .666666 66% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(4)){--items:4;animation:rotator var(--duration,10s) linear(0 0% 24%, .25 25% 49%, .5 50% 74%, .75 75% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(5)){--items:5;animation:rotator var(--duration,10s) linear(0 0% 19%, .2 20% 39%, .4 40% 59%, .6 60% 79%, .8 80% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(6)){--items:6;animation:rotator var(--duration,10s) linear(0 0% 15%, .16666 16% 32%, .333333 33% 49%, .5 50% 65%, .666666 66% 82%, .833333 83% 99%, 1 100% 100%) infinite}.text-rotate>*>*{clip-path:inset(.5px 0);align-content:baseline}.text-rotate>*>:first-child{translate:var(--first-item-position)}.text-rotate:hover>*{animation-play-state:paused}.tabs{--tabs-height:auto;--tabs-direction:row;--tab-height:calc(var(--size-field,.25rem) * 10);height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.stat{grid-template-columns:repeat(1,1fr);column-gap:1rem;width:100%;padding-block:1rem;padding-inline:1.5rem;display:inline-grid}.stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stat:not(:last-child){border-block-end:none}.navbar-end{justify-content:flex-end;align-items:center;width:50%;display:inline-flex}.navbar-start{justify-content:flex-start;align-items:center;width:50%;display:inline-flex}.card-body{padding:var(--card-p,1.5rem);font-size:var(--card-fs,.875rem);flex-direction:column;flex:auto;gap:.5rem;display:flex}.card-body :where(p){flex-grow:1}.navbar-center{flex-shrink:0;align-items:center;display:inline-flex}.fieldset-label{color:var(--color-base-content);align-items:center;gap:.375rem;display:flex}@supports (color:color-mix(in lab, red, red)){.fieldset-label{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.fieldset-label:has(input){cursor:pointer}.carousel{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){.carousel{scroll-behavior:smooth}}.carousel::-webkit-scrollbar{display:none}.alert{--alert-border-color:var(--color-base-200);border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px #000, 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08));border-style:solid;grid-template-columns:auto;grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}@supports (color:color-mix(in lab, red, red)){.alert{box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px color-mix(in oklab, color-mix(in oklab, #000 20%, var(--alert-color,var(--color-base-200))) calc(var(--depth) * 20%), #0000), 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08))}}.alert:has(:nth-child(2)){grid-template-columns:auto minmax(auto,1fr)}.fieldset{grid-template-columns:1fr;grid-auto-rows:max-content;gap:.375rem;padding-block:.25rem;font-size:.75rem;display:grid}.chat{--mask-chat:url("data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e");grid-auto-rows:min-content;column-gap:.75rem;padding-block:.25rem;display:grid}.card-actions{flex-wrap:wrap;align-items:flex-start;gap:.5rem;display:flex}.card-title{font-size:var(--cardtitle-fs,1.125rem);align-items:center;gap:.5rem;font-weight:600;display:flex}.mask{vertical-align:middle;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300)}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.skeleton{will-change:background-position;background-image:linear-gradient(105deg, #0000 0% 40%, var(--color-base-100) 50%, #0000 60% 100%);background-position-x:-50%;background-size:200%}@media (prefers-reduced-motion:no-preference){.skeleton{animation:1.8s ease-in-out infinite skeleton}}.timeline-box{border:var(--border) solid;border-radius:var(--radius-box);border-color:var(--color-base-300);background-color:var(--color-base-100);padding-block:.5rem;padding-inline:1rem;font-size:.75rem;box-shadow:0 1px 2px oklch(0% 0 0/.05)}.btn-accent{--btn-color:var(--color-accent);--btn-fg:var(--color-accent-content)}.btn-error{--btn-color:var(--color-error);--btn-fg:var(--color-error-content)}.btn-info{--btn-color:var(--color-info);--btn-fg:var(--color-info-content)}.btn-neutral{--btn-color:var(--color-neutral);--btn-fg:var(--color-neutral-content)}.btn-primary{--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content)}.btn-secondary{--btn-color:var(--color-secondary);--btn-fg:var(--color-secondary-content)}.btn-success{--btn-color:var(--color-success);--btn-fg:var(--color-success-content)}.btn-warning{--btn-color:var(--color-warning);--btn-fg:var(--color-warning-content)}}@layer daisyui.l1.l2{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{pointer-events:auto;visibility:visible;opacity:1;transition:visibility 0s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;background-color:oklch(0% 0 0/.4)}:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal) .modal-box{opacity:1;translate:0;scale:1}:root:has(:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}@starting-style{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{opacity:0}}:where(.drawer-toggle:checked~.drawer-side){pointer-events:auto;visibility:visible;opacity:1;overflow-y:auto}:where(.drawer-toggle:checked~.drawer-side)>:not(.drawer-overlay){translate:0%}.drawer-toggle:focus-visible~.drawer-content label.drawer-button{outline-offset:2px;outline:2px solid}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.collapse-arrow>.collapse-title:after{width:.5rem;height:.5rem;display:block;position:absolute;transform:translateY(-100%)rotate(45deg)}@media (prefers-reduced-motion:no-preference){.collapse-arrow>.collapse-title:after{transition-property:all;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}}.collapse-arrow>.collapse-title:after{content:"";transform-origin:75% 75%;pointer-events:none;top:50%;inset-inline-end:1.4rem;box-shadow:2px 2px}.btn:disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn:disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn:disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn[disabled]:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn[disabled]:not(.btn-link,.btn-ghost){box-shadow:none}.btn[disabled]{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn-disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn-disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn-disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.tab-disabled{pointer-events:none;opacity:.4}@media (prefers-reduced-motion:no-preference){.collapse[open].collapse-arrow>.collapse-title:after,.collapse.collapse-open.collapse-arrow>.collapse-title:after{transform:translateY(-50%)rotate(225deg)}}.collapse.collapse-open.collapse-plus>.collapse-title:after{--tw-content:"−";content:var(--tw-content)}:is(.collapse[tabindex].collapse-arrow:focus:not(.collapse-close),.collapse.collapse-arrow[tabindex]:focus-within:not(.collapse-close))>.collapse-title:after,.collapse.collapse-arrow:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{transform:translateY(-50%)rotate(225deg)}.collapse[open].collapse-plus>.collapse-title:after,.collapse[tabindex].collapse-plus:focus:not(.collapse-close)>.collapse-title:after,.collapse.collapse-plus:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{--tw-content:"−";content:var(--tw-content)}.tabs-lift{--tabs-height:auto;--tabs-direction:row}.tabs-lift>.tab{--tab-border:0 0 var(--border) 0;--tab-radius-ss:var(--tab-radius-limit);--tab-radius-se:var(--tab-radius-limit);--tab-radius-es:0;--tab-radius-ee:0;--tab-paddings:var(--border) var(--tab-p) 0 var(--tab-p);--tab-border-colors:#0000 #0000 var(--tab-border-color) #0000;--tab-corner-width:calc(100% + var(--tab-radius-limit) * 2);--tab-corner-height:var(--tab-radius-limit);--tab-corner-position:top left, top right;border-width:var(--tab-border);padding:var(--tab-paddings);border-color:var(--tab-border-colors);border-start-start-radius:var(--tab-radius-ss);border-start-end-radius:var(--tab-radius-se);border-end-end-radius:var(--tab-radius-ee);border-end-start-radius:var(--tab-radius-es)}.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked)){--tab-border:var(--border) var(--border) 0 var(--border);--tab-border-colors:var(--tab-border-color) var(--tab-border-color) #0000 var(--tab-border-color);--tab-paddings:0 calc(var(--tab-p) - var(--border)) var(--border) calc(var(--tab-p) - var(--border));--tab-inset:auto auto 0 auto;--radius-start:radial-gradient(circle at top left, var(--tab-radius-grad));--radius-end:radial-gradient(circle at top right, var(--tab-radius-grad));background-color:var(--tab-bg)}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):before{z-index:1;content:"";width:var(--tab-corner-width);height:var(--tab-corner-height);background-position:var(--tab-corner-position);background-image:var(--radius-start), var(--radius-end);background-size:var(--tab-radius-limit) var(--tab-radius-limit);inset:var(--tab-inset);background-repeat:no-repeat;display:block;position:absolute}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):first-child:before{--radius-start:none}[dir=rtl] :is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):first-child:before{transform:rotateY(180deg)}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):last-child:before{--radius-end:none}[dir=rtl] :is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):last-child:before{transform:rotateY(180deg)}.tabs-lift:has(>.tab-content)>.tab:first-child:not(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){--tab-border-colors:var(--tab-border-color) var(--tab-border-color) #0000 var(--tab-border-color)}.tabs-lift>.tab-content{--tabcontent-margin:calc(-1 * var(--border)) 0 0 0;--tabcontent-radius-ss:0;--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box)}:is(.tabs-lift :checked,.tabs-lift label:has(:checked),.tabs-lift :is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content:first-child,:is(.tabs-lift :checked,.tabs-lift label:has(:checked),.tabs-lift :is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content:nth-child(n+3){--tabcontent-radius-ss:var(--radius-box)}.list .list-row:has(.list-col-grow:first-child){--list-grid-cols:1fr}.list .list-row:has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row>*{grid-row-start:1}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.tabs-border>.tab{--tab-border-color:#0000 #0000 var(--tab-border-color) #0000;border-radius:var(--radius-field);position:relative}.tabs-border>.tab:before{content:"";background-color:var(--tab-border-color);border-radius:var(--radius-field);width:80%;height:3px;transition:background-color .2s;position:absolute;bottom:0;left:10%}:is(.tabs-border>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-border>.tab:is(input:checked),.tabs-border>.tab:is(label:has(:checked))):before{--tab-border-color:currentColor;border-top:3px solid}.menu-horizontal{flex-direction:row;display:inline-flex}.menu-horizontal>li:not(.menu-title)>details>ul{transform-origin:top;border-radius:var(--radius-box);background-color:var(--color-base-100);opacity:0;margin-inline-start:0;margin-top:1rem;padding-block:.5rem;padding-inline-end:.5rem;position:absolute;scale:.95;box-shadow:0 1px 3px oklch(0% 0 0/.1),0 1px 2px -1px oklch(0% 0 0/.1)}@media (prefers-reduced-motion:no-preference){@starting-style{.menu-horizontal>li:not(.menu-title)>details>ul{opacity:0;scale:.95}}.menu-horizontal>li:not(.menu-title)>details>ul{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s menu}}.menu-horizontal>li:not(.menu-title)>details[open]>ul{opacity:1;scale:1}.menu-horizontal>li>details>ul:before{--tw-content:none;content:var(--tw-content)}.menu-vertical{flex-direction:column;display:inline-flex}.menu-vertical>li:not(.menu-title)>details>ul{background-color:revert-layer;border-radius:revert-layer;animation:revert-layer;box-shadow:revert-layer;margin-inline-start:1rem;margin-top:0;padding-block:0;padding-inline-end:0;transition:revert-layer;position:relative}.checkbox:disabled,.radio:disabled{cursor:not-allowed;opacity:.2}.rating.rating-xs :where(:not(.rating-hidden)){width:1rem;height:1rem}.rating.rating-sm :where(:not(.rating-hidden)){width:1.25rem;height:1.25rem}.rating.rating-md :where(:not(.rating-hidden)){width:1.5rem;height:1.5rem}.rating.rating-lg :where(:not(.rating-hidden)){width:1.75rem;height:1.75rem}.rating.rating-xl :where(:not(.rating-hidden)){width:2rem;height:2rem}.rating\!.rating-xs :where(:not(.rating-hidden)){width:1rem!important;height:1rem!important}.rating\!.rating-sm :where(:not(.rating-hidden)){width:1.25rem!important;height:1.25rem!important}.rating\!.rating-md :where(:not(.rating-hidden)){width:1.5rem!important;height:1.5rem!important}.rating\!.rating-lg :where(:not(.rating-hidden)){width:1.75rem!important;height:1.75rem!important}.rating\!.rating-xl :where(:not(.rating-hidden)){width:2rem!important;height:2rem!important}:where(.navbar){position:relative}.tooltip-bottom>.tooltip-content,.tooltip-bottom[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,-.25rem));inset:var(--tt-off) auto auto 50%}.tooltip-bottom:after{transform:translateX(-50%) translateY(var(--tt-pos,-.25rem)) rotate(180deg);inset:var(--tt-tail) auto auto 50%}.tooltip-left>.tooltip-content,.tooltip-left[data-tip]:before{transform:translateX(calc(var(--tt-pos,.25rem) - .25rem)) translateY(-50%);inset:50% var(--tt-off) auto auto}.tooltip-left:after{transform:translateX(var(--tt-pos,.25rem)) translateY(-50%) rotate(-90deg);inset:50% calc(var(--tt-tail) + 1px) auto auto}.tooltip-right>.tooltip-content,.tooltip-right[data-tip]:before{transform:translateX(calc(var(--tt-pos,-.25rem) + .25rem)) translateY(-50%);inset:50% auto auto var(--tt-off)}.tooltip-right:after{transform:translateX(var(--tt-pos,-.25rem)) translateY(-50%) rotate(90deg);inset:50% auto auto calc(var(--tt-tail) + 1px)}.tooltip-top>.tooltip-content,.tooltip-top[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip-top:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.dropdown-right{--anchor-h:right;--anchor-v:span-bottom}.dropdown-right .dropdown-content{transform-origin:0;inset-inline-start:100%;top:0;bottom:auto}.dropdown-left{--anchor-h:left;--anchor-v:span-bottom}.dropdown-left .dropdown-content{transform-origin:100%;inset-inline-end:100%;top:0;bottom:auto}.dropdown-end{--anchor-h:span-left}.dropdown-end :where(.dropdown-content){inset-inline-end:0;translate:0}[dir=rtl] :is(.dropdown-end :where(.dropdown-content)){translate:0}.dropdown-end.dropdown-left{--anchor-h:left;--anchor-v:span-top}.dropdown-end.dropdown-left .dropdown-content{top:auto;bottom:0}.dropdown-end.dropdown-right{--anchor-h:right;--anchor-v:span-top}.dropdown-end.dropdown-right .dropdown-content{top:auto;bottom:0}.dropdown-bottom{--anchor-v:bottom}.dropdown-bottom .dropdown-content{transform-origin:top;top:100%;bottom:auto}.dropdown-top{--anchor-v:top}.dropdown-top .dropdown-content{transform-origin:bottom;top:auto;bottom:100%}.btn-active{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn-active{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn-active{--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0);isolation:isolate}:is(.stack,.stack.stack-bottom)>*{grid-area:3/3/6/4}:is(.stack,.stack.stack-bottom)>:nth-child(2){grid-area:2/2/5/5}:is(.stack,.stack.stack-bottom)>:first-child{grid-area:1/1/4/6}.stack.stack-top>*{grid-area:1/3/4/4}.stack.stack-top>:nth-child(2){grid-area:2/2/5/5}.stack.stack-top>:first-child{grid-area:3/1/6/6}.stack.stack-start>*{grid-area:3/1/4/4}.stack.stack-start>:nth-child(2){grid-area:2/2/5/5}.stack.stack-start>:first-child{grid-area:1/3/6/6}.stack.stack-end>*{grid-area:3/3/4/6}.stack.stack-end>:nth-child(2){grid-area:2/2/5/5}.stack.stack-end>:first-child{grid-area:1/1/6/4}.tabs-box{background-color:var(--color-base-200);--tabs-box-radius:calc(3 * var(--radius-field));border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)));box-shadow:0 -.5px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 .5px oklch(0% 0 0 / calc(var(--depth) * .05)) inset;padding:.25rem}.tabs-box>.tab{border-radius:var(--radius-field);border-style:none}.tabs-box>.tab:focus-visible,.tabs-box>.tab:is(label:has(:checked:focus-visible)){outline-offset:2px}.tabs-box>.tab:focus-visible{z-index:1}.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){background-color:var(--tab-bg,var(--color-base-100));box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px var(--color-neutral), 0 1px 6px -4px var(--color-neutral)}@supports (color:color-mix(in lab, red, red)){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 50%), #0000), 0 1px 6px -4px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 100%), #0000)}}@media (forced-colors:active){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){border:1px solid}}.tabs-box>.tab-content{height:calc(100% - var(--tab-height) + var(--border) - .5rem);border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)) - var(--border));margin-top:.25rem}.timeline-horizontal{flex-direction:row}.timeline-horizontal>li{align-items:center}.timeline-horizontal>li>hr{width:100%;height:.25rem}.timeline-horizontal>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline-horizontal>li>hr:last-child{grid-area:2/3/auto/none}.timeline-horizontal .timeline-start{grid-area:1/1/2/4;place-self:flex-end center}.timeline-horizontal .timeline-end{grid-area:3/1/4/4;place-self:flex-start center}.timeline-horizontal:has(.timeline-middle)>li>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-horizontal:has(.timeline-middle)>li>hr:last-child,.timeline-horizontal:not(:has(.timeline-middle)) :first-child>hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline-horizontal:not(:has(.timeline-middle)) :last-child>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-vertical{flex-direction:column}.timeline-vertical>li{--timeline-row-start:minmax(0, 1fr);--timeline-row-end:minmax(0, 1fr);justify-items:center}.timeline-vertical>li>hr{width:.25rem;height:100%}.timeline-vertical>li>hr:first-child{grid-row-start:1;grid-column-start:2}.timeline-vertical>li>hr:last-child{grid-area:3/2/none}.timeline-vertical .timeline-start{grid-area:1/1/4/2;place-self:center flex-end}.timeline-vertical .timeline-end{grid-area:1/3/4/4;place-self:center flex-start}.timeline-vertical:has(.timeline-middle)>li>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical:has(.timeline-middle)>li>hr:last-child,.timeline-vertical:not(:has(.timeline-middle)) :first-child>hr:last-child{border-top-left-radius:var(--radius-selector);border-top-right-radius:var(--radius-selector);border-bottom-right-radius:0;border-bottom-left-radius:0}.timeline-vertical:not(:has(.timeline-middle)) :last-child>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical.timeline-snap-icon>li{--timeline-col-start:minmax(0, 1fr);--timeline-row-start:.5rem}.timeline-compact{--timeline-row-start:0}.timeline-compact .timeline-start{grid-area:3/1/4/4;place-self:flex-start center}.timeline-compact li:has(.timeline-start) .timeline-end{grid-row-start:auto;grid-column-start:none}.timeline-compact.timeline-vertical>li{--timeline-col-start:0}.timeline-compact.timeline-vertical .timeline-start{grid-area:1/3/4/4;place-self:center flex-start}.timeline-compact.timeline-vertical li:has(.timeline-start) .timeline-end{grid-row-start:none;grid-column-start:auto}.drawer-end{grid-auto-columns:auto max-content}.drawer-end>.drawer-toggle~.drawer-content{grid-column-start:1}.drawer-end>.drawer-toggle~.drawer-side{grid-column-start:2;justify-items:end}.drawer-end>.drawer-toggle~.drawer-side>:not(.drawer-overlay){translate:100%}[dir=rtl] :is(.drawer-end>.drawer-toggle~.drawer-side>:not(.drawer-overlay)){translate:-100%}.drawer-end>.drawer-toggle:checked~.drawer-side>:not(.drawer-overlay){translate:0%}.input-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:max(var(--font-size,1.125rem), 1.125rem)}.input-lg[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input-md{--size:calc(var(--size-field,.25rem) * 10);font-size:max(var(--font-size,.875rem), .875rem)}.input-md[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input-sm{--size:calc(var(--size-field,.25rem) * 8);font-size:max(var(--font-size,.75rem), .75rem)}.input-sm[type=number]::-webkit-inner-spin-button{margin-block:-.5rem;margin-inline-end:-.75rem}.input-xs{--size:calc(var(--size-field,.25rem) * 6);font-size:max(var(--font-size,.6875rem), .6875rem)}.input-xs[type=number]::-webkit-inner-spin-button{margin-block:-.25rem;margin-inline-end:-.75rem}.modal-bottom{place-items:end}.modal-bottom .modal-box{--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:0;--modal-br:0;width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 100%;scale:1}.modal-middle{place-items:center}.modal-middle .modal-box{--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:91.6667%;max-width:32rem;height:auto;max-height:calc(100vh - 5em);translate:0 2%;scale:.98}.modal-top{place-items:start}.modal-top .modal-box{--modal-tl:0;--modal-tr:0;--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 -100%;scale:1}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.btn-square{width:var(--size);height:var(--size);padding-inline:0}.btn-wide{width:100%;max-width:16rem}.btn-block{width:100%}.loading-xs{width:calc(var(--size-selector,.25rem) * 4)}.swap-rotate .swap-on,.swap-rotate input:indeterminate~.swap-on{rotate:45deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-on,.swap-rotate.swap-active .swap-on{rotate:0deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-off,.swap-rotate.swap-active .swap-off{rotate:-45deg}.swap-flip{transform-style:preserve-3d;perspective:20rem}.swap-flip .swap-on,.swap-flip .swap-indeterminate,.swap-flip input:indeterminate~.swap-on{backface-visibility:hidden;transform:rotateY(180deg)}.swap-flip input:is(:checked,:indeterminate)~.swap-on,.swap-flip.swap-active .swap-on{transform:rotateY(0)}.swap-flip input:is(:checked,:indeterminate)~.swap-off,.swap-flip.swap-active .swap-off{backface-visibility:hidden;opacity:1;transform:rotateY(-180deg)}.stats-horizontal{grid-auto-flow:column;overflow-x:auto}.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stats-horizontal .stat:not(:last-child){border-block-end:none}.stats-vertical{grid-auto-flow:row;overflow-y:auto}.stats-vertical .stat:not(:last-child){border-inline-end:none;border-block-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-vertical .stat:not(:last-child){border-block-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.menu-lg :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-lg :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.375rem;padding-inline:1rem;font-size:1.125rem}.menu-lg .menu-title{padding-block:.75rem;padding-inline:1.5rem}.menu-md :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-md :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.375rem;padding-inline:.75rem;font-size:.875rem}.menu-md .menu-title{padding-block:.5rem;padding-inline:.75rem}.menu-sm :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-sm :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.25rem;padding-inline:.625rem;font-size:.75rem}.menu-sm .menu-title{padding-block:.5rem;padding-inline:.75rem}.menu-xs :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-xs :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.25rem;padding-inline:.5rem;font-size:.6875rem}.menu-xs .menu-title{padding-block:.25rem;padding-inline:.5rem}.badge-dash{color:var(--badge-color);--badge-bg:#0000;background-image:none;border-style:dashed;border-color:currentColor}.badge-ghost{border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content);background-image:none}.select-ghost{box-shadow:none;background-color:#0000;border-color:#0000;transition:background-color .2s}.select-ghost:focus,.select-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.input-ghost{box-shadow:none;background-color:#0000;border-color:#0000}.input-ghost:focus,.input-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.badge-outline{color:var(--badge-color);--badge-bg:#0000;background-image:none;border-color:currentColor}.table-zebra tbody tr:where(:nth-child(2n)),.table-zebra tbody tr:where(:nth-child(2n)) :where(.table-pin-cols tr th){background-color:var(--color-base-200)}@media (hover:hover){:is(.table-zebra tbody tr.row-hover,.table-zebra tbody tr.row-hover:where(:nth-child(2n))):hover{background-color:var(--color-base-300)}}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.mask-circle{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e")}.mask-heart{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e")}.mask-star{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e")}.mask-star-2{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 153.044-58.779 26.243 7.02-63.513L.894 68.481l63.117-13.01L96 0l31.989 55.472 63.117 13.01-43.347 47.292 7.02 63.513z' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 153.044-58.779 26.243 7.02-63.513L.894 68.481l63.117-13.01L96 0l31.989 55.472 63.117 13.01-43.347 47.292 7.02 63.513z' fill-rule='evenodd'/%3e%3c/svg%3e")}.checkbox-lg{--size:calc(var(--size-selector,.25rem) * 7);padding:.3125rem}.checkbox-md{--size:calc(var(--size-selector,.25rem) * 6);padding:.25rem}.checkbox-sm{--size:calc(var(--size-selector,.25rem) * 5);padding:.1875rem}.checkbox-xs{--size:calc(var(--size-selector,.25rem) * 4);padding:.125rem}.radio-lg{padding:.3125rem}.radio-lg[type=radio]{--size:calc(var(--size-selector,.25rem) * 7)}.radio-md{padding:.25rem}.radio-md[type=radio]{--size:calc(var(--size-selector,.25rem) * 6)}.radio-sm{padding:.1875rem}.radio-sm[type=radio]{--size:calc(var(--size-selector,.25rem) * 5)}.radio-xs{padding:.125rem}.radio-xs[type=radio]{--size:calc(var(--size-selector,.25rem) * 4)}.select-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:1.125rem}.select-lg option{padding-block:.375rem;padding-inline:1rem}.select-md{--size:calc(var(--size-field,.25rem) * 10);font-size:.875rem}.select-md option{padding-block:.375rem;padding-inline:.75rem}.select-sm{--size:calc(var(--size-field,.25rem) * 8);font-size:.75rem}.select-sm option{padding-block:.25rem;padding-inline:.625rem}.select-xs{--size:calc(var(--size-field,.25rem) * 6);font-size:.6875rem}.select-xs option{padding-block:.25rem;padding-inline:.5rem}.table-lg :not(thead,tfoot) tr{font-size:1.125rem}.table-lg :where(th,td){padding-block:1rem;padding-inline:1.25rem}.table-md :not(thead,tfoot) tr{font-size:.875rem}.table-md :where(th,td){padding-block:.75rem;padding-inline:1rem}.table-sm :not(thead,tfoot) tr{font-size:.75rem}.table-sm :where(th,td){padding-block:.5rem;padding-inline:.75rem}.table-xl :not(thead,tfoot) tr{font-size:1.375rem}.table-xl :where(th,td){padding-block:1.25rem;padding-inline:1.5rem}.table-xs :not(thead,tfoot) tr{font-size:.6875rem}.table-xs :where(th,td){padding-block:.25rem;padding-inline:.5rem}.tabs-lg{--tab-height:calc(var(--size-field,.25rem) * 12)}.tabs-lg>.tab{--tab-p:1rem;--tab-radius-min:calc(1.5rem - var(--border));font-size:1.125rem}.tabs-md{--tab-height:calc(var(--size-field,.25rem) * 10)}.tabs-md>.tab{--tab-p:.75rem;--tab-radius-min:calc(.75rem - var(--border));font-size:.875rem}.tabs-sm{--tab-height:calc(var(--size-field,.25rem) * 8)}.tabs-sm>.tab{--tab-p:.5rem;--tab-radius-min:calc(.5rem - var(--border));font-size:.875rem}.tabs-xs{--tab-height:calc(var(--size-field,.25rem) * 6)}.tabs-xs>.tab{--tab-p:.375rem;--tab-radius-min:calc(.5rem - var(--border));font-size:.75rem}.badge-lg{--size:calc(var(--size-selector,.25rem) * 7);font-size:1rem}.badge-md{--size:calc(var(--size-selector,.25rem) * 6);font-size:.875rem}.badge-sm{--size:calc(var(--size-selector,.25rem) * 5);font-size:.75rem}.badge-xs{--size:calc(var(--size-selector,.25rem) * 4);font-size:.625rem}.alert-error{color:var(--color-error-content);--alert-border-color:var(--color-error);--alert-color:var(--color-error)}.alert-info{color:var(--color-info-content);--alert-border-color:var(--color-info);--alert-color:var(--color-info)}.alert-success{color:var(--color-success-content);--alert-border-color:var(--color-success);--alert-color:var(--color-success)}.alert-warning{color:var(--color-warning-content);--alert-border-color:var(--color-warning);--alert-color:var(--color-warning)}.checkbox-accent{color:var(--color-accent-content);--input-color:var(--color-accent)}.checkbox-error{color:var(--color-error-content);--input-color:var(--color-error)}.checkbox-info{color:var(--color-info-content);--input-color:var(--color-info)}.checkbox-primary{color:var(--color-primary-content);--input-color:var(--color-primary)}.checkbox-secondary{color:var(--color-secondary-content);--input-color:var(--color-secondary)}.checkbox-success{color:var(--color-success-content);--input-color:var(--color-success)}.checkbox-warning{color:var(--color-warning-content);--input-color:var(--color-warning)}.range-accent{color:var(--color-accent);--range-thumb:var(--color-accent-content)}.range-error{color:var(--color-error);--range-thumb:var(--color-error-content)}.range-info{color:var(--color-info);--range-thumb:var(--color-info-content)}.range-primary{color:var(--color-primary);--range-thumb:var(--color-primary-content)}.range-secondary{color:var(--color-secondary);--range-thumb:var(--color-secondary-content)}.range-success{color:var(--color-success);--range-thumb:var(--color-success-content)}.range-warning{color:var(--color-warning);--range-thumb:var(--color-warning-content)}.tooltip-accent{--tt-bg:var(--color-accent)}.tooltip-accent>.tooltip-content,.tooltip-accent[data-tip]:before{color:var(--color-accent-content)}.tooltip-error{--tt-bg:var(--color-error)}.tooltip-error>.tooltip-content,.tooltip-error[data-tip]:before{color:var(--color-error-content)}.tooltip-info{--tt-bg:var(--color-info)}.tooltip-info>.tooltip-content,.tooltip-info[data-tip]:before{color:var(--color-info-content)}.tooltip-primary{--tt-bg:var(--color-primary)}.tooltip-primary>.tooltip-content,.tooltip-primary[data-tip]:before{color:var(--color-primary-content)}.tooltip-secondary{--tt-bg:var(--color-secondary)}.tooltip-secondary>.tooltip-content,.tooltip-secondary[data-tip]:before{color:var(--color-secondary-content)}.tooltip-success{--tt-bg:var(--color-success)}.tooltip-success>.tooltip-content,.tooltip-success[data-tip]:before{color:var(--color-success-content)}.tooltip-warning{--tt-bg:var(--color-warning)}.tooltip-warning>.tooltip-content,.tooltip-warning[data-tip]:before{color:var(--color-warning-content)}.swap-active .swap-off{opacity:0}.swap-active .swap-on{opacity:1}.indicator-end{--indicator-s:auto;--indicator-e:0;--indicator-x:50%}[dir=rtl] .indicator-end,.indicator-start{--indicator-s:0;--indicator-e:auto;--indicator-x:-50%}[dir=rtl] .indicator-start{--indicator-s:auto;--indicator-e:0;--indicator-x:50%}.btn-lg{--fontsize:1.125rem;--btn-p:1.25rem;--size:calc(var(--size-field,.25rem) * 12)}.btn-md{--fontsize:.875rem;--btn-p:1rem;--size:calc(var(--size-field,.25rem) * 10)}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem) * 8)}.btn-xl{--fontsize:1.375rem;--btn-p:1.5rem;--size:calc(var(--size-field,.25rem) * 14)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem) * 6)}.indicator-bottom{--indicator-t:auto;--indicator-b:0;--indicator-y:50%}.indicator-top{--indicator-t:0;--indicator-b:auto;--indicator-y:-50%}.badge-accent{--badge-color:var(--color-accent);--badge-fg:var(--color-accent-content)}.badge-error{--badge-color:var(--color-error);--badge-fg:var(--color-error-content)}.badge-info{--badge-color:var(--color-info);--badge-fg:var(--color-info-content)}.badge-primary{--badge-color:var(--color-primary);--badge-fg:var(--color-primary-content)}.badge-secondary{--badge-color:var(--color-secondary);--badge-fg:var(--color-secondary-content)}.badge-success{--badge-color:var(--color-success);--badge-fg:var(--color-success-content)}.badge-warning{--badge-color:var(--color-warning);--badge-fg:var(--color-warning-content)}.input-accent,.input-accent:focus,.input-accent:focus-within{--input-color:var(--color-accent)}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}.input-info,.input-info:focus,.input-info:focus-within{--input-color:var(--color-info)}.input-primary,.input-primary:focus,.input-primary:focus-within{--input-color:var(--color-primary)}.input-secondary,.input-secondary:focus,.input-secondary:focus-within{--input-color:var(--color-secondary)}.input-success,.input-success:focus,.input-success:focus-within{--input-color:var(--color-success)}.input-warning,.input-warning:focus,.input-warning:focus-within{--input-color:var(--color-warning)}.radio-accent{--input-color:var(--color-accent)}.radio-error{--input-color:var(--color-error)}.radio-info{--input-color:var(--color-info)}.radio-primary{--input-color:var(--color-primary)}.radio-secondary{--input-color:var(--color-secondary)}.radio-success{--input-color:var(--color-success)}.radio-warning{--input-color:var(--color-warning)}.range-lg{--range-thumb-size:calc(var(--size-selector,.25rem) * 7)}.range-md{--range-thumb-size:calc(var(--size-selector,.25rem) * 6)}.range-sm{--range-thumb-size:calc(var(--size-selector,.25rem) * 5)}.range-xs{--range-thumb-size:calc(var(--size-selector,.25rem) * 4)}.select-accent,.select-accent:focus,.select-accent:focus-within{--input-color:var(--color-accent)}.select-error,.select-error:focus,.select-error:focus-within{--input-color:var(--color-error)}.select-info,.select-info:focus,.select-info:focus-within{--input-color:var(--color-info)}.select-primary,.select-primary:focus,.select-primary:focus-within{--input-color:var(--color-primary)}.select-secondary,.select-secondary:focus,.select-secondary:focus-within{--input-color:var(--color-secondary)}.select-success,.select-success:focus,.select-success:focus-within{--input-color:var(--color-success)}.select-warning,.select-warning:focus,.select-warning:focus-within{--input-color:var(--color-warning)}.toggle-accent:checked,.toggle-accent[aria-checked=true]{--input-color:var(--color-accent)}.toggle-error:checked,.toggle-error[aria-checked=true]{--input-color:var(--color-error)}.toggle-info:checked,.toggle-info[aria-checked=true]{--input-color:var(--color-info)}.toggle-lg[type=checkbox],.toggle-lg:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 7)}.toggle-md[type=checkbox],.toggle-md:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 6)}.toggle-primary:checked,.toggle-primary[aria-checked=true]{--input-color:var(--color-primary)}.toggle-secondary:checked,.toggle-secondary[aria-checked=true]{--input-color:var(--color-secondary)}.toggle-sm[type=checkbox],.toggle-sm:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 5)}.toggle-success:checked,.toggle-success[aria-checked=true]{--input-color:var(--color-success)}.toggle-warning:checked,.toggle-warning[aria-checked=true]{--input-color:var(--color-warning)}.toggle-xs[type=checkbox],.toggle-xs:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 4)}}.prose :where(a.btn:not(.btn-link)):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-line:none}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse:not(td,tr,colgroup){visibility:revert-layer}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-10{top:calc(var(--spacing) * 10)}.-right-2{right:calc(var(--spacing) * -2)}.right-0{right:calc(var(--spacing) * 0)}.right-1\/4{right:25%}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-6{right:calc(var(--spacing) * 6)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-10{bottom:calc(var(--spacing) * 10)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-6{left:calc(var(--spacing) * 6)}.-z-0{z-index:calc(0 * -1)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[50\]{z-index:50}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[110\]{z-index:110}.z-\[9999\]{z-index:9999}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-1{margin:calc(var(--spacing) * 1)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-16{margin-block:calc(var(--spacing) * 16)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-6{margin-left:calc(var(--spacing) * 6)}.icon-\[lucide--alert-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4m0 4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--alert-triangle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--calendar\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M8 2v4m8-4v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M21.801 10A10 10 0 1 1 17 3.335'/%3E%3Cpath d='m9 11l3 3L22 4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m15 18l-6-6l6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m9 18l6-6l-6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m11 17l-5-5l5-5m7 10l-5-5l5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 17l5-5l-5-5m7 10l5-5l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye-off\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575a1 1 0 0 1 0 .696a10.8 10.8 0 0 1-1.444 2.49m-6.41-.679a3 3 0 0 1-4.242-4.242'/%3E%3Cpath d='M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 4.446-5.143M2 2l20 20'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M2.062 12.348a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 19.876 0a1 1 0 0 1 0 .696a10.75 10.75 0 0 1-19.876 0'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--hash\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 9h16M4 15h16M10 3L8 21m8-18l-2 18'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--heart\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 9.5a5.5 5.5 0 0 1 9.591-3.676a.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--info\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4m0-4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--link\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--lock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--mail\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7'/%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--phone\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233a14 14 0 0 0 6.392 6.384'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--search-x\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m13.5 8.5l-5 5m0-5l5 5'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21l-4.3-4.3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--search\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--text\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 18H3M17 6H3m18 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--upload\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 3v12m5-7l-5-5l-5 5m14 7v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--x\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.kbd{box-shadow:none}.text-rotate{height:1lh}.alert{border-width:var(--border);border-color:var(--alert-border-color,var(--color-base-200))}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.table{display:table}.aspect-square{aspect-ratio:1}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-48{height:calc(var(--spacing) * 48)}.h-96{height:calc(var(--spacing) * 96)}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-auto{height:auto}.h-full{height:100%}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-96{max-height:calc(var(--spacing) * 96)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[300px\]{min-height:300px}.min-h-\[400px\]{min-height:400px}.min-h-\[500px\]{min-height:500px}.min-h-full{min-height:100%}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[200px\]{max-width:200px}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-\[4rem\]{min-width:4rem}.min-w-\[48px\]{min-width:48px}.min-w-\[500px\]{min-width:500px}.min-w-\[600px\]{min-width:600px}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-2{--tw-translate-x:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-10{--tw-translate-x:calc(var(--spacing) * 10);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-center{justify-items:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-box{border-radius:var(--radius-box);border-radius:var(--radius-box)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}@layer daisyui.l1{.alert-dash{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none;border-style:dashed}.btn-dash:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}@media (hover:none){.btn-dash:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}}.alert-soft{color:var(--alert-color,var(--color-base-content));background:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{background:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 8%, var(--color-base-100))}}.alert-soft{--alert-border-color:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{--alert-border-color:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 10%, var(--color-base-100))}}.alert-soft{box-shadow:none;background-image:none}.btn-link{--btn-border:#0000;--btn-bg:#0000;--btn-noise:none;--btn-shadow:"";outline-color:currentColor;text-decoration-line:underline}.btn-link:not(.btn-disabled,.btn:disabled,.btn[disabled]){--btn-fg:var(--btn-color,var(--color-primary))}.btn-link:is(.btn-active,:hover,:active:focus,:focus-visible){--btn-border:#0000;--btn-bg:#0000}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)):not(:disabled,[disabled],.btn-disabled){--btn-fg:var(--btn-color,currentColor);outline-color:currentColor}@media (hover:none){.btn-ghost:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color,currentColor);--btn-border:#0000;--btn-noise:none;outline-color:currentColor}}.btn-outline:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}@media (hover:none){.btn-outline:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-fg:var(--btn-color,var(--color-base-content));--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 8%, var(--color-base-100))}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 10%, var(--color-base-100))}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-noise:none}@media (hover:none){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-fg:var(--btn-color,var(--color-base-content));--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 8%, var(--color-base-100))}}.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 10%, var(--color-base-100))}}.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-noise:none}}}.btn-dash{border-style:dashed}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-base-200\/30{border-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.border-base-200\/30{border-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.border-base-300{border-color:var(--color-base-300)}.border-base-content\/20{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\/20{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.border-black\/5{border-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.border-black\/5{border-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.border-black\/10{border-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-base-100{background-color:var(--color-base-100)}.bg-base-200,.bg-base-200\/30{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/30{background-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.bg-base-200\/50{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/50{background-color:color-mix(in oklab, var(--color-base-200) 50%, transparent)}}.bg-base-300{background-color:var(--color-base-300)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.bg-black\/20{background-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.bg-error,.bg-error\/10{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/10{background-color:color-mix(in oklab, var(--color-error) 10%, transparent)}}.bg-info{background-color:var(--color-info)}.bg-neutral{background-color:var(--color-neutral)}.bg-primary,.bg-primary\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-primary\/20{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-success,.bg-success\/10{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-warning,.bg-warning\/10{background-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--color-warning) 10%, transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-accent{--tw-gradient-from:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-secondary{--tw-gradient-from:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-accent{--tw-gradient-via:var(--color-accent);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-accent{--tw-gradient-to:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-secondary{--tw-gradient-to:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.mask-circle{--tw-mask-radial-shape:circle}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-10{padding-left:calc(var(--spacing) * 10)}.\!text-center{text-align:center!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-accent{color:var(--color-accent)}.text-accent-content{color:var(--color-accent-content)}.text-base-content,.text-base-content\/60{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/60{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.text-base-content\/90{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/90{color:color-mix(in oklab, var(--color-base-content) 90%, transparent)}}.text-error{color:var(--color-error)}.text-error-content{color:var(--color-error-content)}.text-gray-500{color:var(--color-gray-500)}.text-info{color:var(--color-info)}.text-info-content{color:var(--color-info-content)}.text-neutral-content{color:var(--color-neutral-content)}.text-primary{color:var(--color-primary)}.text-primary-content{color:var(--color-primary-content)}.text-secondary{color:var(--color-secondary)}.text-secondary-content{color:var(--color-secondary-content)}.text-success{color:var(--color-success)}.text-success-content{color:var(--color-success-content)}.text-transparent{color:#0000}.text-warning{color:var(--color-warning)}.text-warning-content{color:var(--color-warning-content)}.text-white{color:var(--color-white)}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-secondary\/20{--tw-shadow-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.shadow-secondary\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-secondary) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-primary{--tw-ring-color:var(--color-primary)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-2xl{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}}.before\:z-50:before,.after\:z-50:after{content:var(--tw-content);z-index:50}@media (hover:hover){.hover\:z-10:hover{z-index:10}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-accent\/40:hover{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.hover\:border-base-content\/20:hover{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:border-base-content\/20:hover{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.hover\:border-primary\/40:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/40:hover{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.hover\:border-primary\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:border-secondary\/40:hover{border-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-secondary\/40:hover{border-color:color-mix(in oklab, var(--color-secondary) 40%, transparent)}}.hover\:bg-base-200:hover{background-color:var(--color-base-200)}.hover\:bg-base-300:hover{background-color:var(--color-base-300)}.hover\:bg-white\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/30:hover{background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.hover\:text-base-content:hover{color:var(--color-base-content)}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-100:hover{opacity:1}}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (min-width:48rem){.md\:h-64{height:calc(var(--spacing) * 64)}.md\:w-64{width:calc(var(--spacing) * 64)}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@keyframes fade-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.animate-fade-in{animation:.15s ease-out forwards fade-in}}:root{font-size:14px}.input,.label,.select,.textarea{transition:all .3s cubic-bezier(.4,0,.2,1)}:is(.input,.label,.select,.textarea):focus,:is(.input,.label,.select,.textarea):focus-within{box-shadow:0 0 4px;outline:none!important}:is(.input,.label,.select,.textarea):hover:not(:focus){background-color:oklch(from var(--color-base-100) calc(l - .03) c h)}.floating-label span{color:oklch(30% .01 260);font-size:1.1rem;transition:all .2s}.floating-label:focus-within span{color:oklch(25% .02 260);font-size:1.1rem}.floating-label:has(input:not(:placeholder-shown)) span{color:oklch(28% .01 260);font-size:1.1rem}.tab-content-inner{transform-origin:top;animation:.3s cubic-bezier(.4,0,.2,1) tabFadeIn}.input-content{z-index:100;background:#fff;width:100%;position:absolute;top:100%;left:0;box-shadow:0 4px 6px #0000001a}@keyframes tabFadeIn{0%{opacity:0;transform:scaleY(.95)}to{opacity:1;transform:scaleY(1)}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes dropdown{0%{opacity:0}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes rotator{89.9999%,to{--first-item-position:0 0%}90%,99.9999%{--first-item-position:0 calc(var(--items) * 100%)}to{translate:0 -100%}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes menu{0%{opacity:0}}@keyframes progress{50%{background-position-x:-115%}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}} \ No newline at end of file +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-gray-500:oklch(55.1% .027 264.364);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-9xl:8rem;--text-9xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-3xl:1.5rem;--drop-shadow-2xl:0 25px 25px #00000026;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(25.33% .016 252.42);--color-base-200:oklch(23.26% .014 253.1);--color-base-300:oklch(21.15% .012 254.09);--color-base-content:oklch(97.807% .029 256.847);--color-primary:oklch(58% .233 277.117);--color-primary-content:oklch(96% .018 272.314);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E");scrollbar-color:currentColor #0000}@supports (color:color-mix(in lab, red, red)){:root{scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) #0000}}@property --radialprogress{syntax:"";inherits:true;initial-value:0%}:root:not(span){overflow:var(--page-overflow)}:root{background:var(--page-scroll-bg,var(--root-bg));--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) var(--root-bg,#0000)}@supports (color:color-mix(in lab, red, red)){:root{--page-scroll-bg-on:linear-gradient(var(--root-bg,#0000), var(--root-bg,#0000)) color-mix(in srgb, var(--root-bg,#0000), oklch(0% 0 0) calc(var(--page-has-backdrop,0) * 40%))}}:root{--page-scroll-transition-on:background-color .3s ease-out;transition:var(--page-scroll-transition);scrollbar-gutter:var(--page-scroll-gutter,unset);scrollbar-gutter:if(style(--page-has-scroll: 1): var(--page-scroll-gutter,unset) ; else: unset)}@keyframes set-page-has-scroll{0%,to{--page-has-scroll:1}}:root,[data-theme]{background:var(--page-scroll-bg,var(--root-bg));color:var(--color-base-content)}:where(:root,[data-theme]){--root-bg:var(--color-base-100)}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(92% 0 0);--color-base-content:oklch(25% .006 285);--color-primary:oklch(25% .006 285);--color-primary-content:oklch(98% 0 0);--color-secondary:oklch(55% .046 257.417);--color-secondary-content:oklch(98% 0 0);--color-accent:oklch(96% 0 0);--color-accent-content:oklch(25% .006 285);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(62% .17 163);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .18 84);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(60% .25 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=dark]:checked),[data-theme=dark]{color-scheme:dark;--color-base-100:oklch(15% .005 285.823);--color-base-200:oklch(20% .005 285.823);--color-base-300:oklch(30% .005 285.823);--color-base-content:oklch(92% .004 286.32);--color-primary:oklch(98% 0 0);--color-primary-content:oklch(15% 0 0);--color-secondary:oklch(65% .046 257.417);--color-secondary-content:oklch(15% .005 285.823);--color-accent:oklch(25% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(92% .004 286.32);--color-neutral-content:oklch(14% .005 285.823);--color-info:oklch(70% .1 230);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(65% .15 160);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(85% .15 90);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(55% .2 27);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.4rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}@layer components;@layer utilities{@layer daisyui.l1.l2.l3{.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:visibility .3s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;overscroll-behavior:contain;z-index:999;scrollbar-gutter:auto;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:clip}.modal::backdrop{display:none}:where(.drawer-side){overflow:hidden}.drawer-side{pointer-events:none;visibility:hidden;z-index:10;overscroll-behavior:contain;opacity:0;width:100%;transition:opacity .2s ease-out .1s allow-discrete, visibility .3s ease-out .1s allow-discrete;inset-inline-start:0;background-color:#0000;grid-template-rows:repeat(1,minmax(0,1fr));grid-template-columns:repeat(1,minmax(0,1fr));grid-row-start:1;grid-column-start:1;place-items:flex-start start;height:100dvh;display:grid;position:fixed;top:0}.drawer-side>.drawer-overlay{cursor:pointer;background-color:oklch(0% 0 0/.4);place-self:stretch stretch;position:sticky;top:0}.drawer-side>*{grid-row-start:1;grid-column-start:1}.drawer-side>:not(.drawer-overlay){will-change:transform;transition:translate .3s ease-out,width .2s ease-out;translate:-100%}[dir=rtl] :is(.drawer-side>:not(.drawer-overlay)){translate:100%}.fab{pointer-events:none;z-index:999;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));white-space:nowrap;inset-inline-end:1rem;flex-direction:column-reverse;align-items:flex-end;gap:.5rem;display:flex;position:fixed;bottom:1rem}.fab>*{pointer-events:auto;align-items:center;gap:.5rem;display:flex}.fab>:hover,.fab>:has(:focus-visible){z-index:1}.fab>[tabindex]:first-child{transition-property:opacity,visibility,rotate;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:grid;position:relative}.fab .fab-close,.fab .fab-main-action{inset-inline-end:0;position:absolute;bottom:0}:is(.fab:focus-within:has(.fab-close),.fab:focus-within:has(.fab-main-action))>[tabindex]{opacity:0;rotate:90deg}.fab:focus-within>[tabindex]:first-child{pointer-events:none}.fab:focus-within>:nth-child(n+2){visibility:visible;--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:1}.fab>:nth-child(n+2){visibility:hidden;--tw-scale-x:80%;--tw-scale-y:80%;--tw-scale-z:80%;scale:var(--tw-scale-x) var(--tw-scale-y);opacity:0;transition-property:opacity,scale,visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.fab>:nth-child(n+2).fab-main-action,.fab>:nth-child(n+2).fab-close{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.fab>:nth-child(3){transition-delay:30ms}.fab>:nth-child(4){transition-delay:60ms}.fab>:nth-child(5){transition-delay:90ms}.fab>:nth-child(6){transition-delay:.12s}.drawer-toggle{appearance:none;opacity:0;width:0;height:0;position:fixed}:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:currentColor oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}@supports (color:color-mix(in lab, red, red)){:where(.drawer-toggle:checked~.drawer-side){scrollbar-color:color-mix(in oklch, currentColor 35%, #0000) oklch(0 0 0 / calc(var(--page-has-backdrop,0) * .4))}}:where(:root:has(.drawer-toggle:checked)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}.tooltip{--tt-bg:var(--color-neutral);--tt-off:calc(100% + .5rem);--tt-tail:calc(100% + 1px + .25rem);display:inline-block;position:relative}.tooltip>.tooltip-content,.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:2;--tw-content:attr(data-tip);content:var(--tw-content);width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);display:block;position:absolute}@media (prefers-reduced-motion:no-preference){.tooltip>.tooltip-content,.tooltip[data-tip]:before,.tooltip:after{transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms}}:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{opacity:1;--tt-pos:0rem}@media (prefers-reduced-motion:no-preference){:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}}.tab{cursor:pointer;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;user-select:none;flex-wrap:wrap;justify-content:center;align-items:center;display:inline-flex;position:relative}@media (hover:hover){.tab:hover{color:var(--color-base-content)}}.tab{--tab-p:.75rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min));--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px);order:var(--tab-order);height:var(--tab-height);padding-inline:var(--tab-p);border-color:#0000;font-size:.875rem}.tab:is(input[type=radio]){min-width:fit-content}.tab:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)}}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.tab\!{cursor:pointer!important;appearance:none!important;text-align:center!important;webkit-user-select:none!important;-webkit-user-select:none!important;user-select:none!important;flex-wrap:wrap!important;justify-content:center!important;align-items:center!important;display:inline-flex!important;position:relative!important}@media (hover:hover){.tab\!:hover{color:var(--color-base-content)!important}}.tab\!{--tab-p:.75rem!important;--tab-bg:var(--color-base-100)!important;--tab-border-color:var(--color-base-300)!important;--tab-radius-ss:0!important;--tab-radius-se:0!important;--tab-radius-es:0!important;--tab-radius-ee:0!important;--tab-order:0!important;--tab-radius-min:calc(.75rem - var(--border))!important;--tab-radius-limit:min(var(--radius-field), var(--tab-radius-min))!important;--tab-radius-grad:#0000 calc(69% - var(--border)), var(--tab-border-color) calc(69% - var(--border) + .25px), var(--tab-border-color) 69%, var(--tab-bg) calc(69% + .25px)!important;order:var(--tab-order)!important;height:var(--tab-height)!important;padding-inline:var(--tab-p)!important;border-color:#0000!important;font-size:.875rem!important}.tab\!:is(input[type=radio]){min-width:fit-content!important}.tab\!:is(input[type=radio]):after{--tw-content:attr(aria-label)!important;content:var(--tw-content)!important}.tab\!:is(label){position:relative!important}.tab\!:is(label) input{cursor:pointer!important;appearance:none!important;opacity:0!important;position:absolute!important;inset:0!important}:is(.tab\!:checked,.tab\!:is(label:has(:checked)),.tab\!:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block!important}.tab\!:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)!important}@supports (color:color-mix(in lab, red, red)){.tab\!:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab, var(--color-base-content) 50%, transparent)!important}}.tab\!:not(input):empty{cursor:default!important;flex-grow:1!important}.tab\!:focus{--tw-outline-style:none!important;outline-style:none!important}@media (forced-colors:active){.tab\!:focus{outline-offset:2px!important;outline:2px solid #0000!important}}.tab\!:focus-visible,.tab\!:is(label:has(:checked:focus-visible)){outline-offset:-5px!important;outline:2px solid!important}.tab\![disabled]{pointer-events:none!important;opacity:.4!important}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu details{interpolate-size:allow-keywords;overflow:hidden}.menu details::details-content{block-size:0}@media (prefers-reduced-motion:no-preference){.menu details::details-content{transition-behavior:allow-discrete;transition-property:block-size,content-visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.menu details[open]::details-content{block-size:auto}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{outline-offset:2px;outline:2px solid #0000}}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.menu :where(li).menu-disabled{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.floating-label{display:block;position:relative}.floating-label input{display:block}.floating-label input::placeholder,.floating-label textarea::placeholder{transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out}.floating-label>span{z-index:1;background-color:var(--color-base-100);opacity:0;inset-inline-start:.75rem;top:calc(var(--size-field,.25rem) * 10 / 2);pointer-events:none;border-radius:2px;padding-inline:.25rem;font-size:.875rem;line-height:1;transition:top .1s ease-out,translate .1s ease-out,scale .1s ease-out,opacity .1s ease-out;position:absolute;translate:0 -50%}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown))) ::placeholder{opacity:0;pointer-events:auto;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}:is(.floating-label:focus-within,.floating-label:not(:has(input:placeholder-shown,textarea:placeholder-shown)))>span{opacity:1;pointer-events:auto;z-index:2;top:0;translate:-12.5% calc(-50% - .125em);scale:.75}.floating-label:has(:disabled,[disabled])>span{opacity:0}.floating-label:has(.input-xs,.select-xs,.textarea-xs) span{top:calc(var(--size-field,.25rem) * 6 / 2);font-size:.6875rem}.floating-label:has(.input-sm,.select-sm,.textarea-sm) span{top:calc(var(--size-field,.25rem) * 8 / 2);font-size:.75rem}.floating-label:has(.input-md,.select-md,.textarea-md) span{top:calc(var(--size-field,.25rem) * 10 / 2);font-size:.875rem}.floating-label:has(.input-lg,.select-lg,.textarea-lg) span{top:calc(var(--size-field,.25rem) * 12 / 2);font-size:1.125rem}.floating-label:has(.input-xl,.select-xl,.textarea-xl) span{top:calc(var(--size-field,.25rem) * 14 / 2);font-size:1.375rem}.dropdown{position-area:var(--anchor-v,bottom) var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(:has(~[class*=dropdown-content])):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown.dropdown-close .dropdown-content,.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,.dropdown.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover],.dropdown .dropdown-content{z-index:999}@media (prefers-reduced-motion:no-preference){.dropdown[popover],.dropdown .dropdown-content{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:.95}}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within) .dropdown-content,.dropdown:not(.dropdown-close).dropdown-hover:hover .dropdown-content{opacity:1;scale:1}.dropdown:is(details) summary::-webkit-details-marker{display:none}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-close{transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:.95}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}:is(.dropdown[popover].dropdown-close,.dropdown[popover]:not(.dropdown-open,:popover-open)){transform-origin:top;opacity:0;display:none;scale:.95}:where(.btn){width:unset}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0 / calc(var(--depth) * .15));touch-action:manipulation;box-shadow:0 .5px 0 .5px oklch(100% 0 0 / calc(var(--depth) * 6%)) inset, var(--btn-shadow);--size:calc(var(--size-field,.25rem) * 10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:var(--btn-bg);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}@supports (color:color-mix(in lab, red, red)){.btn{--btn-border:color-mix(in oklab, var(--btn-bg), #000 calc(var(--depth) * 5%))}}.btn{--btn-shadow:0 3px 2px -2px var(--btn-bg), 0 4px 3px -2px var(--btn-bg)}@supports (color:color-mix(in lab, red, red)){.btn{--btn-shadow:0 3px 2px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000), 0 4px 3px -2px color-mix(in oklab, var(--btn-bg) calc(var(--depth) * 30%), #0000)}}.btn{--btn-noise:var(--fx-noise)}@media (hover:hover){.btn:hover{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}}.btn:focus-visible,.btn:has(:focus-visible){isolation:isolate;outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:var(--btn-color,var(--color-base-200));translate:0 .5px}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 5%)}}.btn:active:not(.btn-active){--btn-border:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn:active:not(.btn-active){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn:active:not(.btn-active){--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0)}.btn:is(input[type=checkbox],input[type=radio]){appearance:none}.btn:is(input[type=checkbox],input[type=radio])[aria-label]:after{--tw-content:attr(aria-label);content:var(--tw-content)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem) * 6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.collapse{border-radius:var(--radius-box,1rem);isolation:isolate;grid-template-rows:max-content 0fr;grid-template-columns:minmax(0,1fr);width:100%;display:grid;position:relative;overflow:hidden}@media (prefers-reduced-motion:no-preference){.collapse{transition:grid-template-rows .2s}}.collapse>input:is([type=checkbox],[type=radio]){appearance:none;opacity:0;z-index:1;grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close)),.collapse:not(.collapse-close):has(>input:is([type=checkbox],[type=radio]):checked){grid-template-rows:max-content 1fr}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){content-visibility:visible;min-height:fit-content}@supports not (content-visibility:visible){.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){visibility:visible}}.collapse:focus-visible,.collapse:has(>input:is([type=checkbox],[type=radio]):focus-visible),.collapse:has(summary:focus-visible){outline-color:var(--color-base-content);outline-offset:2px;outline-width:2px;outline-style:solid}.collapse:not(.collapse-close)>input[type=checkbox],.collapse:not(.collapse-close)>input[type=radio]:not(:checked),.collapse:not(.collapse-close)>.collapse-title{cursor:pointer}:is(.collapse[tabindex]:focus:not(.collapse-close,.collapse[open]),.collapse[tabindex]:focus-within:not(.collapse-close,.collapse[open]))>.collapse-title{cursor:unset}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>:where(.collapse-content),.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){padding-bottom:1rem}.collapse:is(details){width:100%}@media (prefers-reduced-motion:no-preference){.collapse:is(details)::details-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out, height .2s;interpolate-size:allow-keywords;height:0}.collapse:is(details):where([open])::details-content{height:auto}}.collapse:is(details) summary{display:block;position:relative}.collapse:is(details) summary::-webkit-details-marker{display:none}.collapse:is(details)>.collapse-content{content-visibility:visible}.collapse:is(details) summary{outline:none}.collapse-content{content-visibility:hidden;min-height:0;cursor:unset;grid-row-start:2;grid-column-start:1;padding-left:1rem;padding-right:1rem}@supports not (content-visibility:hidden){.collapse-content{visibility:hidden}}@media (prefers-reduced-motion:no-preference){.collapse-content{transition:content-visibility .2s allow-discrete, visibility .2s allow-discrete, min-height .2s ease-out allow-discrete, padding .1s ease-out 20ms, background-color .2s ease-out}}.validator-hint{visibility:hidden;margin-top:.5rem;font-size:.75rem}.validator:user-valid{--input-color:var(--color-success)}.validator:user-valid:focus{--input-color:var(--color-success)}.validator:user-valid:checked{--input-color:var(--color-success)}.validator:user-valid[aria-checked=true]{--input-color:var(--color-success)}.validator:user-valid:focus-within{--input-color:var(--color-success)}.validator:has(:user-valid){--input-color:var(--color-success)}.validator:has(:user-valid):focus{--input-color:var(--color-success)}.validator:has(:user-valid):checked{--input-color:var(--color-success)}.validator:has(:user-valid)[aria-checked=true]{--input-color:var(--color-success)}.validator:has(:user-valid):focus-within{--input-color:var(--color-success)}.validator:user-invalid{--input-color:var(--color-error)}.validator:user-invalid:focus{--input-color:var(--color-error)}.validator:user-invalid:checked{--input-color:var(--color-error)}.validator:user-invalid[aria-checked=true]{--input-color:var(--color-error)}.validator:user-invalid:focus-within{--input-color:var(--color-error)}.validator:user-invalid~.validator-hint{visibility:visible;color:var(--color-error)}.validator:has(:user-invalid){--input-color:var(--color-error)}.validator:has(:user-invalid):focus{--input-color:var(--color-error)}.validator:has(:user-invalid):checked{--input-color:var(--color-error)}.validator:has(:user-invalid)[aria-checked=true]{--input-color:var(--color-error)}.validator:has(:user-invalid):focus-within{--input-color:var(--color-error)}.validator:has(:user-invalid)~.validator-hint{visibility:visible;color:var(--color-error)}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))),:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):focus,:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):checked,:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))[aria-checked=true],:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false]))):focus-within{--input-color:var(--color-error)}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))~.validator-hint{visibility:visible;color:var(--color-error)}.radial-progress{height:var(--size);width:var(--size);vertical-align:middle;box-sizing:content-box;--value:0;--size:5rem;--thickness:calc(var(--size) / 10);--radialprogress:calc(var(--value) * 1%);background-color:#0000;border-radius:3.40282e38px;place-content:center;transition:--radialprogress .3s linear;display:inline-grid;position:relative}.radial-progress:before{content:"";background:radial-gradient(farthest-side, currentColor 98%, #0000) top/var(--thickness) var(--thickness) no-repeat, conic-gradient(currentColor var(--radialprogress), #0000 0);webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));mask:radial-gradient(farthest-side, #0000 calc(100% - var(--thickness)), #000 calc(100% + .5px - var(--thickness)));border-radius:3.40282e38px;position:absolute;inset:0}.radial-progress:after{content:"";inset:calc(50% - var(--thickness) / 2);transform:rotate(calc(var(--value) * 3.6deg - 90deg)) translate(calc(var(--size) / 2 - 50%));background-color:currentColor;border-radius:3.40282e38px;transition:transform .3s linear;position:absolute}.list{flex-direction:column;font-size:.875rem;display:flex}.list .list-row{--list-grid-cols:minmax(0, auto) 1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border) solid;inset-inline:var(--radius-box);border-color:var(--color-base-content);position:absolute;bottom:0}@supports (color:color-mix(in lab, red, red)){:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{border-color:color-mix(in oklab, var(--color-base-content) 5%, transparent)}}.toggle{border:var(--border) solid currentColor;color:var(--input-color);cursor:pointer;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p), var(--radius-selector-max)) + min(var(--border), var(--radius-selector-max)));padding:var(--toggle-p);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;display:inline-grid;position:relative;box-shadow:inset 0 1px}@supports (color:color-mix(in lab, red, red)){.toggle{box-shadow:0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000) inset}}.toggle{--input-color:var(--color-base-content);transition:color .3s,grid-template-columns .2s}@supports (color:color-mix(in lab, red, red)){.toggle{--input-color:color-mix(in oklab, var(--color-base-content) 50%, #0000)}}.toggle{--toggle-p:calc(var(--size) * .125);--size:calc(var(--size-selector,.25rem) * 6);width:calc((var(--size) * 2) - (var(--border) + var(--toggle-p)) * 2);height:var(--size)}.toggle>*{z-index:1;cursor:pointer;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:0deg}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:0deg}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);width:100%;height:100%;box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor;background-color:currentColor;grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@supports (color:color-mix(in lab, red, red)){.toggle:before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000)}}.toggle:before{background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise)}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border) solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;display:inline-flex;position:relative}@supports (color:color-mix(in lab, red, red)){.input{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.input{--size:calc(var(--size-field,.25rem) * 10);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.input:where(input){display:inline-flex}.input :where(input){appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.input :where(input):focus,.input :where(input):focus-within{outline-offset:2px;outline:2px solid #0000}}.input :where(input[type=url]),.input :where(input[type=email]){direction:ltr}.input :where(input[type=date]){display:inline-flex}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.input:focus,.input:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.input:focus,.input:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.input:focus,.input:focus-within{--font-size:1rem}}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{box-shadow:none}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.input:has(>input[type=date]) :where(input[type=date]){webkit-appearance:none;appearance:none;display:inline-flex}.input:has(>input[type=date]) input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;width:1em;height:1em;position:absolute;inset-inline-end:.75em}.indicator{width:max-content;display:inline-flex;position:relative}.indicator :where(.indicator-item){z-index:1;white-space:nowrap;top:var(--indicator-t,0);bottom:var(--indicator-b,auto);left:var(--indicator-s,auto);right:var(--indicator-e,0);translate:var(--indicator-x,50%) var(--indicator-y,-50%);position:absolute}.table{border-collapse:separate;--tw-border-spacing-x:calc(.25rem * 0);--tw-border-spacing-y:calc(.25rem * 0);width:100%;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y);border-radius:var(--radius-box);text-align:left;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead,tfoot){color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.table :where(thead,tfoot){font-size:.875rem;font-weight:600}.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border) solid color-mix(in oklch, var(--color-base-content) 5%, #0000)}}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);content:"";border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{--tw-content:counter(step);content:var(--tw-content);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{--tw-content:none;content:var(--tw-content)}.steps .step[data-content]:after{--tw-content:attr(data-content);content:var(--tw-content)}.range{appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem) * 6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:currentColor}@supports (color:color-mix(in lab, red, red)){.range{--range-bg:color-mix(in oklab, currentColor 10%, #0000)}}.range{cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));background-color:var(--range-thumb);height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));position:relative;top:50%;transform:translateY(-50%)}@supports (color:color-mix(in lab, red, red)){.range::-webkit-slider-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size) * .5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p), var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p) solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px currentColor, 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill));background-color:currentColor;position:relative;top:50%}@supports (color:color-mix(in lab, red, red)){.range::-moz-range-thumb{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px color-mix(in oklab, currentColor calc(var(--depth) * 10%), #0000), 0 0 0 2rem var(--range-thumb) inset, calc((var(--range-dir,1) * -100cqw) - (var(--range-dir,1) * var(--range-thumb-size) / 2)) 0 0 calc(100cqw * var(--range-fill))}}.range:disabled{cursor:not-allowed;opacity:.3}.chat-bubble{border-radius:var(--radius-field);background-color:var(--color-base-300);width:fit-content;color:var(--color-base-content);grid-row-end:3;min-width:2.5rem;max-width:90%;min-height:2rem;padding-block:.5rem;padding-inline:1rem;display:block;position:relative}.chat-bubble:before{background-color:inherit;content:"";width:.75rem;height:.75rem;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-chat);-webkit-mask-image:var(--mask-chat);mask-image:var(--mask-chat);position:absolute;bottom:0;-webkit-mask-position:0 -1px;mask-position:0 -1px;-webkit-mask-size:.8125rem;mask-size:.8125rem}.select{border:var(--border) solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);touch-action:manipulation;white-space:nowrap;text-overflow:ellipsis;box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:.75rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.select{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.select{border-color:var(--input-color);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.select{--size:calc(var(--size-field,.25rem) * 10)}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}[dir=rtl] .select::picker(select){translate:.5rem}[dir=rtl] .select select::picker(select){translate:.5rem}.select[multiple]{background-image:none;height:auto;padding-block:.75rem;padding-inline-end:.75rem;overflow:auto}.select select{appearance:none;width:calc(100% + 2.75rem);height:calc(100% - calc(var(--border) * 2));background:inherit;border-radius:inherit;border-style:none;align-items:center;margin-inline:-.75rem -1.75rem;padding-inline:.75rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.select select:focus,.select select:focus-within{outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.select:focus,.select:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.select:focus,.select:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}@supports (appearance:base-select){.select,.select select{appearance:base-select}:is(.select,.select select)::picker(select){appearance:base-select}}:is(.select,.select select)::picker(select){color:inherit;border:var(--border) solid var(--color-base-200);border-radius:var(--radius-box);background-color:inherit;max-height:min(24rem,70dvh);box-shadow:0 2px calc(var(--depth) * 3px) -2px oklch(0% 0 0/.2);box-shadow:0 20px 25px -5px rgb(0 0 0/calc(var(--depth) * .1)), 0 8px 10px -6px rgb(0 0 0/calc(var(--depth) * .1));margin-block:.5rem;margin-inline:.5rem;padding:.5rem;translate:-.5rem}:is(.select,.select select)::picker-icon{display:none}:is(.select,.select select) optgroup{padding-top:.5em}:is(.select,.select select) optgroup option:first-child{margin-top:.5em}:is(.select,.select select) option{border-radius:var(--radius-field);white-space:normal;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{outline-offset:2px;outline:2px solid #0000}}:is(.select,.select select) option:not(:disabled):active{background-color:var(--color-neutral);color:var(--color-neutral-content);box-shadow:0 2px calc(var(--depth) * 3px) -2px var(--color-neutral)}.timeline{display:flex;position:relative}.timeline>li{grid-template-rows:var(--timeline-row-start,minmax(0, 1fr)) auto var(--timeline-row-end,minmax(0, 1fr));grid-template-columns:var(--timeline-col-start,minmax(0, 1fr)) auto var(--timeline-col-end,minmax(0, 1fr));flex-shrink:0;align-items:center;display:grid;position:relative}.timeline>li>hr{border:none;width:100%}.timeline>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline>li>hr:last-child{grid-area:2/3/auto/none}@media print{.timeline>li>hr{border:.1px solid var(--color-base-300)}}.timeline :where(hr){background-color:var(--color-base-300);height:.25rem}.timeline:has(.timeline-middle hr):first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline:has(.timeline-middle hr):last-child,.timeline:not(:has(.timeline-middle)) :first-child hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline:not(:has(.timeline-middle)) :last-child hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.swap{cursor:pointer;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;place-content:center;display:inline-grid;position:relative}.swap input{appearance:none;border:none}.swap>*{grid-row-start:1;grid-column-start:1}@media (prefers-reduced-motion:no-preference){.swap>*{transition-property:transform,rotate,opacity;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.swap .swap-on,.swap .swap-indeterminate,.swap input:indeterminate~.swap-on,.swap input:is(:checked,:indeterminate)~.swap-off{opacity:0}.swap input:checked~.swap-on,.swap input:indeterminate~.swap-indeterminate{opacity:1;backface-visibility:visible}.collapse-title{grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out;position:relative}.avatar{vertical-align:middle;display:inline-flex;position:relative}.avatar>div{aspect-ratio:1;display:block;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.checkbox{border:var(--border) solid var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox{border:var(--border) solid var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox{cursor:pointer;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 0 #0000 inset, 0 0 #0000;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;display:inline-block;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0px 3px 0 0px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media (forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:0deg}}.checkbox:indeterminate{background-color:var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.checkbox:indeterminate{background-color:var(--input-color,color-mix(in oklab, var(--color-base-content) 20%, #0000))}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:0deg}.radio{cursor:pointer;appearance:none;vertical-align:middle;border:var(--border) solid var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;display:inline-block;position:relative}@supports (color:color-mix(in lab, red, red)){.radio{border:var(--border) solid var(--input-color,color-mix(in srgb, currentColor 20%, #0000))}}.radio{box-shadow:0 1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset;--size:calc(var(--size-selector,.25rem) * 6);width:var(--size);height:var(--size);color:var(--input-color,currentColor)}.radio:before{--tw-content:"";content:var(--tw-content);background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor}@media (prefers-reduced-motion:no-preference){.radio:checked,.radio[aria-checked=true]{animation:.2s ease-out radio}}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0 / calc(var(--depth) * .1)) inset, 0 8px 0 -4px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px oklch(0% 0 0 / calc(var(--depth) * .1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px * -1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.rating{vertical-align:middle;display:inline-flex;position:relative}.rating input{appearance:none;border:none}.rating :where(*){background-color:var(--color-base-content);opacity:.2;border-radius:0;width:1.5rem;height:1.5rem}@media (prefers-reduced-motion:no-preference){.rating :where(*){animation:.25s ease-out rating}}.rating :where(*):is(input){cursor:pointer}.rating .rating-hidden{background-color:#0000;width:.5rem}.rating input[type=radio]:checked{background-image:none}.rating :checked,.rating [aria-checked=true],.rating [aria-current=true],.rating :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1}.rating :focus-visible{scale:1.1}@media (prefers-reduced-motion:no-preference){.rating :focus-visible{transition:scale .2s ease-out}}.rating :active:focus{animation:none;scale:1.1}.rating\!{vertical-align:middle!important;display:inline-flex!important;position:relative!important}.rating\! input{appearance:none!important;border:none!important}.rating\! :where(*){background-color:var(--color-base-content)!important;opacity:.2!important;border-radius:0!important;width:1.5rem!important;height:1.5rem!important}@media (prefers-reduced-motion:no-preference){.rating\! :where(*){animation:.25s ease-out rating!important}}.rating\! :where(*):is(input){cursor:pointer!important}.rating\! .rating-hidden{background-color:#0000!important;width:.5rem!important}.rating\! input[type=radio]:checked{background-image:none!important}.rating\! :checked,.rating\! [aria-checked=true],.rating\! [aria-current=true],.rating\! :has(~:checked,~[aria-checked=true],~[aria-current=true]){opacity:1!important}.rating\! :focus-visible{scale:1.1!important}@media (prefers-reduced-motion:no-preference){.rating\! :focus-visible{transition:scale .2s ease-out!important}}.rating\! :active:focus{animation:none!important;scale:1.1!important}.navbar{align-items:center;width:100%;min-height:4rem;padding:.5rem;display:flex}.drawer{grid-auto-columns:max-content auto;width:100%;display:grid;position:relative}.card{border-radius:var(--radius-box);outline-offset:2px;outline:0 solid #0000;flex-direction:column;transition:outline .2s ease-in-out;display:flex;position:relative}.card:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.card:focus{outline-offset:2px;outline:2px solid #0000}}.card:focus-visible{outline-color:currentColor}.card :where(figure:first-child){border-start-start-radius:inherit;border-start-end-radius:inherit;border-end-end-radius:unset;border-end-start-radius:unset;overflow:hidden}.card :where(figure:last-child){border-start-start-radius:unset;border-start-end-radius:unset;border-end-end-radius:inherit;border-end-start-radius:inherit;overflow:hidden}.card figure{justify-content:center;align-items:center;display:flex}.card:has(>input:is(input[type=checkbox],input[type=radio])){cursor:pointer;-webkit-user-select:none;user-select:none}.card:has(>:checked){outline:2px solid}.stats{border-radius:var(--radius-box);grid-auto-flow:column;display:inline-grid;position:relative;overflow-x:auto}.progress{appearance:none;border-radius:var(--radius-box);background-color:currentColor;width:100%;height:.5rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab, red, red)){.progress{background-color:color-mix(in oklab, currentcolor 20%, transparent)}}.progress{color:var(--color-base-content)}.progress:indeterminate{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%}@media (prefers-reduced-motion:no-preference){.progress:indeterminate{animation:5s ease-in-out infinite progress}}@supports ((-moz-appearance:none)){.progress:indeterminate::-moz-progress-bar{background-color:#0000}@media (prefers-reduced-motion:no-preference){.progress:indeterminate::-moz-progress-bar{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%;animation:5s ease-in-out infinite progress}}.progress::-moz-progress-bar{border-radius:var(--radius-box);background-color:currentColor}}@supports ((-webkit-appearance:none)){.progress::-webkit-progress-bar{border-radius:var(--radius-box);background-color:#0000}.progress::-webkit-progress-value{border-radius:var(--radius-box);background-color:currentColor}}.textarea{border:var(--border) solid #0000;appearance:none;border-radius:var(--radius-field);background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);min-height:5rem;font-size:max(var(--font-size,.875rem), .875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset;flex-shrink:1;padding-block:.5rem;padding-inline:.75rem}@supports (color:color-mix(in lab, red, red)){.textarea{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000) inset, 0 -1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset}}.textarea{--input-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea{--input-color:color-mix(in oklab, var(--color-base-content) 20%, #0000)}}.textarea textarea{appearance:none;background-color:#0000;border:none}.textarea textarea:focus,.textarea textarea:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.textarea textarea:focus,.textarea textarea:focus-within{outline-offset:2px;outline:2px solid #0000}}.textarea:focus,.textarea:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab, red, red)){.textarea:focus,.textarea:focus-within{box-shadow:0 1px color-mix(in oklab, var(--input-color) calc(var(--depth) * 10%), #0000)}}.textarea:focus,.textarea:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media (pointer:coarse){@supports (-webkit-touch-callout:none){.textarea:focus,.textarea:focus-within{--font-size:1rem}}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){color:color-mix(in oklab, var(--color-base-content) 40%, transparent)}}:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){box-shadow:none}.textarea:has(>textarea[disabled])>textarea[disabled]{cursor:not-allowed}.stack{grid-template-rows:3px 4px 1fr 4px 3px;grid-template-columns:3px 4px 1fr 4px 3px;display:inline-grid}.stack>*{width:100%;height:100%}.stack>:nth-child(n+2){opacity:.7;width:100%}.stack>:nth-child(2){z-index:2;opacity:.9}.stack>:first-child{z-index:3;width:100%}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.tab-content{order:var(--tabcontent-order);--tabcontent-radius-ss:var(--radius-box);--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box);--tabcontent-order:1;width:100%;height:calc(100% - var(--tab-height) + var(--border));margin:var(--tabcontent-margin);border-color:#0000;border-width:var(--border);border-start-start-radius:var(--tabcontent-radius-ss);border-start-end-radius:var(--tabcontent-radius-se);border-end-end-radius:var(--tabcontent-radius-ee);border-end-start-radius:var(--tabcontent-radius-es);display:none}.timeline-end{grid-area:3/1/4/4;place-self:flex-start center;margin:.25rem}.timeline-start{grid-area:1/1/2/4;place-self:flex-end center;margin:.25rem}.stat-figure{grid-row:1/span 3;grid-column-start:2;place-self:center flex-end}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:.95;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.drawer-content{grid-row-start:1;grid-column-start:2;min-width:0}.timeline-middle{grid-row-start:2;grid-column-start:2}.stat-value{white-space:nowrap;grid-column-start:1;font-size:2rem;font-weight:800}.stat-desc{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-desc{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-desc{font-size:.75rem}.stat-title{white-space:nowrap;color:var(--color-base-content);grid-column-start:1}@supports (color:color-mix(in lab, red, red)){.stat-title{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.stat-title{font-size:.75rem}.stat-actions{white-space:nowrap;grid-column-start:1}.chat-image{grid-row:span 2/span 2;align-self:flex-end}.chat-footer{grid-row-start:3;gap:.25rem;font-size:.6875rem;display:flex}.chat-header{grid-row-start:1;gap:.25rem;font-size:.6875rem;display:flex}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);--divider-color:var(--color-base-content);flex-direction:row;align-self:stretch;align-items:center;display:flex}@supports (color:color-mix(in lab, red, red)){.divider{--divider-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.divider:before,.divider:after{content:"";background-color:var(--divider-color);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{--tw-content:"×";content:var(--tw-content)}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.label{white-space:nowrap;color:currentColor;align-items:center;gap:.375rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.label{color:color-mix(in oklab, currentcolor 60%, transparent)}}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid currentColor;margin-inline:-.75rem .75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid currentColor;margin-inline:.75rem -.75rem}@supports (color:color-mix(in lab, red, red)){.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border) solid color-mix(in oklab, currentColor 10%, #0000)}}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.fieldset-legend{color:var(--color-base-content);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:-.25rem;padding-block:.5rem;font-weight:600;display:flex}.carousel-item{box-sizing:content-box;scroll-snap-align:start;flex:none;display:flex}.status{aspect-ratio:1;border-radius:var(--radius-selector);background-color:var(--color-base-content);width:.5rem;height:.5rem;display:inline-block}@supports (color:color-mix(in lab, red, red)){.status{background-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.status{vertical-align:middle;color:#0000004d;background-position:50%;background-repeat:no-repeat}@supports (color:color-mix(in lab, red, red)){.status{color:color-mix(in oklab, var(--color-black) 30%, transparent)}}.status{background-image:radial-gradient(circle at 35% 30%, oklch(1 0 0 / calc(var(--depth) * .5)), #0000);box-shadow:0 2px 3px -1px}@supports (color:color-mix(in lab, red, red)){.status{box-shadow:0 2px 3px -1px color-mix(in oklab, currentColor calc(var(--depth) * 100%), #0000)}}.badge{border-radius:var(--radius-selector);vertical-align:middle;color:var(--badge-fg);border:var(--border) solid var(--badge-color,var(--color-base-200));background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);background-color:var(--badge-bg);--badge-bg:var(--badge-color,var(--color-base-100));--badge-fg:var(--color-base-content);--size:calc(var(--size-selector,.25rem) * 6);width:fit-content;height:var(--size);padding-inline:calc(var(--size) / 2 - var(--border));justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.kbd{border-radius:var(--radius-field);background-color:var(--color-base-200);vertical-align:middle;border:var(--border) solid var(--color-base-content);justify-content:center;align-items:center;padding-inline:.5em;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.kbd{border:var(--border) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{border-bottom:calc(var(--border) + 1px) solid var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.kbd{border-bottom:calc(var(--border) + 1px) solid color-mix(in srgb, var(--color-base-content) 20%, #0000)}}.kbd{--size:calc(var(--size-selector,.25rem) * 6);height:var(--size);min-width:var(--size);font-size:.875rem}.text-rotate{vertical-align:bottom;white-space:nowrap;--duration:var(--tw-duration);transition-property:none;display:inline-block;overflow:hidden}.text-rotate>*{height:calc(var(--items,1) * 100%);justify-items:start;display:grid}.text-rotate>:has(:nth-child(2)){--items:2;animation:rotator var(--duration,10s) linear(0 0% 49%, .5 50% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(3)){--items:3;animation:rotator var(--duration,10s) linear(0 0% 32%, .333333 33% 65%, .666666 66% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(4)){--items:4;animation:rotator var(--duration,10s) linear(0 0% 24%, .25 25% 49%, .5 50% 74%, .75 75% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(5)){--items:5;animation:rotator var(--duration,10s) linear(0 0% 19%, .2 20% 39%, .4 40% 59%, .6 60% 79%, .8 80% 99%, 1 100% 100%) infinite}.text-rotate>:has(:nth-child(6)){--items:6;animation:rotator var(--duration,10s) linear(0 0% 15%, .16666 16% 32%, .333333 33% 49%, .5 50% 65%, .666666 66% 82%, .833333 83% 99%, 1 100% 100%) infinite}.text-rotate>*>*{clip-path:inset(.5px 0);align-content:baseline}.text-rotate>*>:first-child{translate:var(--first-item-position)}.text-rotate:hover>*{animation-play-state:paused}.tabs{--tabs-height:auto;--tabs-direction:row;--tab-height:calc(var(--size-field,.25rem) * 10);height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.stat{grid-template-columns:repeat(1,1fr);column-gap:1rem;width:100%;padding-block:1rem;padding-inline:1.5rem;display:inline-grid}.stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stat:not(:last-child){border-block-end:none}.navbar-end{justify-content:flex-end;align-items:center;width:50%;display:inline-flex}.navbar-start{justify-content:flex-start;align-items:center;width:50%;display:inline-flex}.card-body{padding:var(--card-p,1.5rem);font-size:var(--card-fs,.875rem);flex-direction:column;flex:auto;gap:.5rem;display:flex}.card-body :where(p){flex-grow:1}.navbar-center{flex-shrink:0;align-items:center;display:inline-flex}.fieldset-label{color:var(--color-base-content);align-items:center;gap:.375rem;display:flex}@supports (color:color-mix(in lab, red, red)){.fieldset-label{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.fieldset-label:has(input){cursor:pointer}.carousel{scroll-snap-type:x mandatory;scrollbar-width:none;display:inline-flex;overflow-x:scroll}@media (prefers-reduced-motion:no-preference){.carousel{scroll-behavior:smooth}}.carousel::-webkit-scrollbar{display:none}.alert{--alert-border-color:var(--color-base-200);border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;background-size:auto, calc(var(--noise) * 100%);background-image:none, var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px #000, 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08));border-style:solid;grid-template-columns:auto;grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}@supports (color:color-mix(in lab, red, red)){.alert{box-shadow:0 3px 0 -2px oklch(100% 0 0 / calc(var(--depth) * .08)) inset, 0 1px color-mix(in oklab, color-mix(in oklab, #000 20%, var(--alert-color,var(--color-base-200))) calc(var(--depth) * 20%), #0000), 0 4px 3px -2px oklch(0% 0 0 / calc(var(--depth) * .08))}}.alert:has(:nth-child(2)){grid-template-columns:auto minmax(auto,1fr)}.fieldset{grid-template-columns:1fr;grid-auto-rows:max-content;gap:.375rem;padding-block:.25rem;font-size:.75rem;display:grid}.chat{--mask-chat:url("data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e");grid-auto-rows:min-content;column-gap:.75rem;padding-block:.25rem;display:grid}.card-actions{flex-wrap:wrap;align-items:flex-start;gap:.5rem;display:flex}.card-title{font-size:var(--cardtitle-fs,1.125rem);align-items:center;gap:.5rem;font-weight:600;display:flex}.mask{vertical-align:middle;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300)}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.skeleton{will-change:background-position;background-image:linear-gradient(105deg, #0000 0% 40%, var(--color-base-100) 50%, #0000 60% 100%);background-position-x:-50%;background-size:200%}@media (prefers-reduced-motion:no-preference){.skeleton{animation:1.8s ease-in-out infinite skeleton}}.timeline-box{border:var(--border) solid;border-radius:var(--radius-box);border-color:var(--color-base-300);background-color:var(--color-base-100);padding-block:.5rem;padding-inline:1rem;font-size:.75rem;box-shadow:0 1px 2px oklch(0% 0 0/.05)}.btn-accent{--btn-color:var(--color-accent);--btn-fg:var(--color-accent-content)}.btn-error{--btn-color:var(--color-error);--btn-fg:var(--color-error-content)}.btn-info{--btn-color:var(--color-info);--btn-fg:var(--color-info-content)}.btn-neutral{--btn-color:var(--color-neutral);--btn-fg:var(--color-neutral-content)}.btn-primary{--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content)}.btn-secondary{--btn-color:var(--color-secondary);--btn-fg:var(--color-secondary-content)}.btn-success{--btn-color:var(--color-success);--btn-fg:var(--color-success-content)}.btn-warning{--btn-color:var(--color-warning);--btn-fg:var(--color-warning-content)}}@layer daisyui.l1.l2{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{pointer-events:auto;visibility:visible;opacity:1;transition:visibility 0s allow-discrete, background-color .3s ease-out, opacity .1s ease-out;background-color:oklch(0% 0 0/.4)}:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal) .modal-box{opacity:1;translate:0;scale:1}:root:has(:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}@starting-style{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{opacity:0}}:where(.drawer-toggle:checked~.drawer-side){pointer-events:auto;visibility:visible;opacity:1;overflow-y:auto}:where(.drawer-toggle:checked~.drawer-side)>:not(.drawer-overlay){translate:0%}.drawer-toggle:focus-visible~.drawer-content label.drawer-button{outline-offset:2px;outline:2px solid}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.collapse-arrow>.collapse-title:after{width:.5rem;height:.5rem;display:block;position:absolute;transform:translateY(-100%)rotate(45deg)}@media (prefers-reduced-motion:no-preference){.collapse-arrow>.collapse-title:after{transition-property:all;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}}.collapse-arrow>.collapse-title:after{content:"";transform-origin:75% 75%;pointer-events:none;top:50%;inset-inline-end:1.4rem;box-shadow:2px 2px}.btn:disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn:disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn:disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn:disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn[disabled]:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn[disabled]:not(.btn-link,.btn-ghost){box-shadow:none}.btn[disabled]{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn[disabled]{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.btn-disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab, var(--color-base-content) 10%, transparent)}}.btn-disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn-disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.btn-disabled{--btn-fg:color-mix(in oklch, var(--color-base-content) 20%, #0000)}}.tab-disabled{pointer-events:none;opacity:.4}@media (prefers-reduced-motion:no-preference){.collapse[open].collapse-arrow>.collapse-title:after,.collapse.collapse-open.collapse-arrow>.collapse-title:after{transform:translateY(-50%)rotate(225deg)}}.collapse.collapse-open.collapse-plus>.collapse-title:after{--tw-content:"−";content:var(--tw-content)}:is(.collapse[tabindex].collapse-arrow:focus:not(.collapse-close),.collapse.collapse-arrow[tabindex]:focus-within:not(.collapse-close))>.collapse-title:after,.collapse.collapse-arrow:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{transform:translateY(-50%)rotate(225deg)}.collapse[open].collapse-plus>.collapse-title:after,.collapse[tabindex].collapse-plus:focus:not(.collapse-close)>.collapse-title:after,.collapse.collapse-plus:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{--tw-content:"−";content:var(--tw-content)}.tabs-lift{--tabs-height:auto;--tabs-direction:row}.tabs-lift>.tab{--tab-border:0 0 var(--border) 0;--tab-radius-ss:var(--tab-radius-limit);--tab-radius-se:var(--tab-radius-limit);--tab-radius-es:0;--tab-radius-ee:0;--tab-paddings:var(--border) var(--tab-p) 0 var(--tab-p);--tab-border-colors:#0000 #0000 var(--tab-border-color) #0000;--tab-corner-width:calc(100% + var(--tab-radius-limit) * 2);--tab-corner-height:var(--tab-radius-limit);--tab-corner-position:top left, top right;border-width:var(--tab-border);padding:var(--tab-paddings);border-color:var(--tab-border-colors);border-start-start-radius:var(--tab-radius-ss);border-start-end-radius:var(--tab-radius-se);border-end-end-radius:var(--tab-radius-ee);border-end-start-radius:var(--tab-radius-es)}.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked)){--tab-border:var(--border) var(--border) 0 var(--border);--tab-border-colors:var(--tab-border-color) var(--tab-border-color) #0000 var(--tab-border-color);--tab-paddings:0 calc(var(--tab-p) - var(--border)) var(--border) calc(var(--tab-p) - var(--border));--tab-inset:auto auto 0 auto;--radius-start:radial-gradient(circle at top left, var(--tab-radius-grad));--radius-end:radial-gradient(circle at top right, var(--tab-radius-grad));background-color:var(--tab-bg)}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):before{z-index:1;content:"";width:var(--tab-corner-width);height:var(--tab-corner-height);background-position:var(--tab-corner-position);background-image:var(--radius-start), var(--radius-end);background-size:var(--tab-radius-limit) var(--tab-radius-limit);inset:var(--tab-inset);background-repeat:no-repeat;display:block;position:absolute}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):first-child:before{--radius-start:none}[dir=rtl] :is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):first-child:before{transform:rotateY(180deg)}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):last-child:before{--radius-end:none}[dir=rtl] :is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):last-child:before{transform:rotateY(180deg)}.tabs-lift:has(>.tab-content)>.tab:first-child:not(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){--tab-border-colors:var(--tab-border-color) var(--tab-border-color) #0000 var(--tab-border-color)}.tabs-lift>.tab-content{--tabcontent-margin:calc(-1 * var(--border)) 0 0 0;--tabcontent-radius-ss:0;--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box)}:is(.tabs-lift :checked,.tabs-lift label:has(:checked),.tabs-lift :is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content:first-child,:is(.tabs-lift :checked,.tabs-lift label:has(:checked),.tabs-lift :is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content:nth-child(n+3){--tabcontent-radius-ss:var(--radius-box)}.list .list-row:has(.list-col-grow:first-child){--list-grid-cols:1fr}.list .list-row:has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row:has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) minmax(0, auto) 1fr}.list .list-row>*{grid-row-start:1}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.tabs-border>.tab{--tab-border-color:#0000 #0000 var(--tab-border-color) #0000;border-radius:var(--radius-field);position:relative}.tabs-border>.tab:before{content:"";background-color:var(--tab-border-color);border-radius:var(--radius-field);width:80%;height:3px;transition:background-color .2s;position:absolute;bottom:0;left:10%}:is(.tabs-border>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-border>.tab:is(input:checked),.tabs-border>.tab:is(label:has(:checked))):before{--tab-border-color:currentColor;border-top:3px solid}.menu-horizontal{flex-direction:row;display:inline-flex}.menu-horizontal>li:not(.menu-title)>details>ul{transform-origin:top;border-radius:var(--radius-box);background-color:var(--color-base-100);opacity:0;margin-inline-start:0;margin-top:1rem;padding-block:.5rem;padding-inline-end:.5rem;position:absolute;scale:.95;box-shadow:0 1px 3px oklch(0% 0 0/.1),0 1px 2px -1px oklch(0% 0 0/.1)}@media (prefers-reduced-motion:no-preference){@starting-style{.menu-horizontal>li:not(.menu-title)>details>ul{opacity:0;scale:.95}}.menu-horizontal>li:not(.menu-title)>details>ul{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s menu}}.menu-horizontal>li:not(.menu-title)>details[open]>ul{opacity:1;scale:1}.menu-horizontal>li>details>ul:before{--tw-content:none;content:var(--tw-content)}.menu-vertical{flex-direction:column;display:inline-flex}.menu-vertical>li:not(.menu-title)>details>ul{background-color:revert-layer;border-radius:revert-layer;animation:revert-layer;box-shadow:revert-layer;margin-inline-start:1rem;margin-top:0;padding-block:0;padding-inline-end:0;transition:revert-layer;position:relative}.checkbox:disabled,.radio:disabled{cursor:not-allowed;opacity:.2}.rating.rating-xs :where(:not(.rating-hidden)){width:1rem;height:1rem}.rating.rating-sm :where(:not(.rating-hidden)){width:1.25rem;height:1.25rem}.rating.rating-md :where(:not(.rating-hidden)){width:1.5rem;height:1.5rem}.rating.rating-lg :where(:not(.rating-hidden)){width:1.75rem;height:1.75rem}.rating.rating-xl :where(:not(.rating-hidden)){width:2rem;height:2rem}.rating\!.rating-xs :where(:not(.rating-hidden)){width:1rem!important;height:1rem!important}.rating\!.rating-sm :where(:not(.rating-hidden)){width:1.25rem!important;height:1.25rem!important}.rating\!.rating-md :where(:not(.rating-hidden)){width:1.5rem!important;height:1.5rem!important}.rating\!.rating-lg :where(:not(.rating-hidden)){width:1.75rem!important;height:1.75rem!important}.rating\!.rating-xl :where(:not(.rating-hidden)){width:2rem!important;height:2rem!important}:where(.navbar){position:relative}.tooltip-bottom>.tooltip-content,.tooltip-bottom[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,-.25rem));inset:var(--tt-off) auto auto 50%}.tooltip-bottom:after{transform:translateX(-50%) translateY(var(--tt-pos,-.25rem)) rotate(180deg);inset:var(--tt-tail) auto auto 50%}.tooltip-left>.tooltip-content,.tooltip-left[data-tip]:before{transform:translateX(calc(var(--tt-pos,.25rem) - .25rem)) translateY(-50%);inset:50% var(--tt-off) auto auto}.tooltip-left:after{transform:translateX(var(--tt-pos,.25rem)) translateY(-50%) rotate(-90deg);inset:50% calc(var(--tt-tail) + 1px) auto auto}.tooltip-right>.tooltip-content,.tooltip-right[data-tip]:before{transform:translateX(calc(var(--tt-pos,-.25rem) + .25rem)) translateY(-50%);inset:50% auto auto var(--tt-off)}.tooltip-right:after{transform:translateX(var(--tt-pos,-.25rem)) translateY(-50%) rotate(90deg);inset:50% auto auto calc(var(--tt-tail) + 1px)}.tooltip-top>.tooltip-content,.tooltip-top[data-tip]:before{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off) 50%}.tooltip-top:after{transform:translateX(-50%) translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail) 50%}.dropdown-right{--anchor-h:right;--anchor-v:span-bottom}.dropdown-right .dropdown-content{transform-origin:0;inset-inline-start:100%;top:0;bottom:auto}.dropdown-left{--anchor-h:left;--anchor-v:span-bottom}.dropdown-left .dropdown-content{transform-origin:100%;inset-inline-end:100%;top:0;bottom:auto}.dropdown-end{--anchor-h:span-left}.dropdown-end :where(.dropdown-content){inset-inline-end:0;translate:0}[dir=rtl] :is(.dropdown-end :where(.dropdown-content)){translate:0}.dropdown-end.dropdown-left{--anchor-h:left;--anchor-v:span-top}.dropdown-end.dropdown-left .dropdown-content{top:auto;bottom:0}.dropdown-end.dropdown-right{--anchor-h:right;--anchor-v:span-top}.dropdown-end.dropdown-right .dropdown-content{top:auto;bottom:0}.dropdown-bottom{--anchor-v:bottom}.dropdown-bottom .dropdown-content{transform-origin:top;top:100%;bottom:auto}.dropdown-top{--anchor-v:top}.dropdown-top .dropdown-content{transform-origin:bottom;top:auto;bottom:100%}.btn-active{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab, red, red)){.btn-active{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-200)), #000 7%)}}.btn-active{--btn-shadow:0 0 0 0 oklch(0% 0 0/0), 0 0 0 0 oklch(0% 0 0/0);isolation:isolate}:is(.stack,.stack.stack-bottom)>*{grid-area:3/3/6/4}:is(.stack,.stack.stack-bottom)>:nth-child(2){grid-area:2/2/5/5}:is(.stack,.stack.stack-bottom)>:first-child{grid-area:1/1/4/6}.stack.stack-top>*{grid-area:1/3/4/4}.stack.stack-top>:nth-child(2){grid-area:2/2/5/5}.stack.stack-top>:first-child{grid-area:3/1/6/6}.stack.stack-start>*{grid-area:3/1/4/4}.stack.stack-start>:nth-child(2){grid-area:2/2/5/5}.stack.stack-start>:first-child{grid-area:1/3/6/6}.stack.stack-end>*{grid-area:3/3/4/6}.stack.stack-end>:nth-child(2){grid-area:2/2/5/5}.stack.stack-end>:first-child{grid-area:1/1/6/4}.tabs-box{background-color:var(--color-base-200);--tabs-box-radius:calc(3 * var(--radius-field));border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)));box-shadow:0 -.5px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 .5px oklch(0% 0 0 / calc(var(--depth) * .05)) inset;padding:.25rem}.tabs-box>.tab{border-radius:var(--radius-field);border-style:none}.tabs-box>.tab:focus-visible,.tabs-box>.tab:is(label:has(:checked:focus-visible)){outline-offset:2px}.tabs-box>.tab:focus-visible{z-index:1}.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){background-color:var(--tab-bg,var(--color-base-100));box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px var(--color-neutral), 0 1px 6px -4px var(--color-neutral)}@supports (color:color-mix(in lab, red, red)){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){box-shadow:0 1px oklch(100% 0 0 / calc(var(--depth) * .1)) inset, 0 1px 1px -1px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 50%), #0000), 0 1px 6px -4px color-mix(in oklab, var(--color-neutral) calc(var(--depth) * 100%), #0000)}}@media (forced-colors:active){.tabs-box>:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-box>:is(input:checked),.tabs-box>:is(label:has(:checked)){border:1px solid}}.tabs-box>.tab-content{height:calc(100% - var(--tab-height) + var(--border) - .5rem);border-radius:calc(min(var(--tab-height) / 2, var(--radius-field)) + min(.25rem, var(--tabs-box-radius)) - var(--border));margin-top:.25rem}.timeline-horizontal{flex-direction:row}.timeline-horizontal>li{align-items:center}.timeline-horizontal>li>hr{width:100%;height:.25rem}.timeline-horizontal>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline-horizontal>li>hr:last-child{grid-area:2/3/auto/none}.timeline-horizontal .timeline-start{grid-area:1/1/2/4;place-self:flex-end center}.timeline-horizontal .timeline-end{grid-area:3/1/4/4;place-self:flex-start center}.timeline-horizontal:has(.timeline-middle)>li>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-horizontal:has(.timeline-middle)>li>hr:last-child,.timeline-horizontal:not(:has(.timeline-middle)) :first-child>hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline-horizontal:not(:has(.timeline-middle)) :last-child>hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline-vertical{flex-direction:column}.timeline-vertical>li{--timeline-row-start:minmax(0, 1fr);--timeline-row-end:minmax(0, 1fr);justify-items:center}.timeline-vertical>li>hr{width:.25rem;height:100%}.timeline-vertical>li>hr:first-child{grid-row-start:1;grid-column-start:2}.timeline-vertical>li>hr:last-child{grid-area:3/2/none}.timeline-vertical .timeline-start{grid-area:1/1/4/2;place-self:center flex-end}.timeline-vertical .timeline-end{grid-area:1/3/4/4;place-self:center flex-start}.timeline-vertical:has(.timeline-middle)>li>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical:has(.timeline-middle)>li>hr:last-child,.timeline-vertical:not(:has(.timeline-middle)) :first-child>hr:last-child{border-top-left-radius:var(--radius-selector);border-top-right-radius:var(--radius-selector);border-bottom-right-radius:0;border-bottom-left-radius:0}.timeline-vertical:not(:has(.timeline-middle)) :last-child>hr:first-child{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:var(--radius-selector);border-bottom-left-radius:var(--radius-selector)}.timeline-vertical.timeline-snap-icon>li{--timeline-col-start:minmax(0, 1fr);--timeline-row-start:.5rem}.timeline-compact{--timeline-row-start:0}.timeline-compact .timeline-start{grid-area:3/1/4/4;place-self:flex-start center}.timeline-compact li:has(.timeline-start) .timeline-end{grid-row-start:auto;grid-column-start:none}.timeline-compact.timeline-vertical>li{--timeline-col-start:0}.timeline-compact.timeline-vertical .timeline-start{grid-area:1/3/4/4;place-self:center flex-start}.timeline-compact.timeline-vertical li:has(.timeline-start) .timeline-end{grid-row-start:none;grid-column-start:auto}.drawer-end{grid-auto-columns:auto max-content}.drawer-end>.drawer-toggle~.drawer-content{grid-column-start:1}.drawer-end>.drawer-toggle~.drawer-side{grid-column-start:2;justify-items:end}.drawer-end>.drawer-toggle~.drawer-side>:not(.drawer-overlay){translate:100%}[dir=rtl] :is(.drawer-end>.drawer-toggle~.drawer-side>:not(.drawer-overlay)){translate:-100%}.drawer-end>.drawer-toggle:checked~.drawer-side>:not(.drawer-overlay){translate:0%}.input-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:max(var(--font-size,1.125rem), 1.125rem)}.input-lg[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input-md{--size:calc(var(--size-field,.25rem) * 10);font-size:max(var(--font-size,.875rem), .875rem)}.input-md[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input-sm{--size:calc(var(--size-field,.25rem) * 8);font-size:max(var(--font-size,.75rem), .75rem)}.input-sm[type=number]::-webkit-inner-spin-button{margin-block:-.5rem;margin-inline-end:-.75rem}.input-xs{--size:calc(var(--size-field,.25rem) * 6);font-size:max(var(--font-size,.6875rem), .6875rem)}.input-xs[type=number]::-webkit-inner-spin-button{margin-block:-.25rem;margin-inline-end:-.75rem}.modal-bottom{place-items:end}.modal-bottom .modal-box{--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:0;--modal-br:0;width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 100%;scale:1}.modal-middle{place-items:center}.modal-middle .modal-box{--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:91.6667%;max-width:32rem;height:auto;max-height:calc(100vh - 5em);translate:0 2%;scale:.98}.modal-top{place-items:start}.modal-top .modal-box{--modal-tl:0;--modal-tr:0;--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 -100%;scale:1}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.btn-square{width:var(--size);height:var(--size);padding-inline:0}.btn-wide{width:100%;max-width:16rem}.btn-block{width:100%}.swap-rotate .swap-on,.swap-rotate input:indeterminate~.swap-on{rotate:45deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-on,.swap-rotate.swap-active .swap-on{rotate:0deg}.swap-rotate input:is(:checked,:indeterminate)~.swap-off,.swap-rotate.swap-active .swap-off{rotate:-45deg}.swap-flip{transform-style:preserve-3d;perspective:20rem}.swap-flip .swap-on,.swap-flip .swap-indeterminate,.swap-flip input:indeterminate~.swap-on{backface-visibility:hidden;transform:rotateY(180deg)}.swap-flip input:is(:checked,:indeterminate)~.swap-on,.swap-flip.swap-active .swap-on{transform:rotateY(0)}.swap-flip input:is(:checked,:indeterminate)~.swap-off,.swap-flip.swap-active .swap-off{backface-visibility:hidden;opacity:1;transform:rotateY(-180deg)}.stats-horizontal{grid-auto-flow:column;overflow-x:auto}.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-horizontal .stat:not(:last-child){border-inline-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.stats-horizontal .stat:not(:last-child){border-block-end:none}.stats-vertical{grid-auto-flow:row;overflow-y:auto}.stats-vertical .stat:not(:last-child){border-inline-end:none;border-block-end:var(--border) dashed currentColor}@supports (color:color-mix(in lab, red, red)){.stats-vertical .stat:not(:last-child){border-block-end:var(--border) dashed color-mix(in oklab, currentColor 10%, #0000)}}.menu-lg :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-lg :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.375rem;padding-inline:1rem;font-size:1.125rem}.menu-lg .menu-title{padding-block:.75rem;padding-inline:1.5rem}.menu-md :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-md :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.375rem;padding-inline:.75rem;font-size:.875rem}.menu-md .menu-title{padding-block:.5rem;padding-inline:.75rem}.menu-sm :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-sm :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.25rem;padding-inline:.625rem;font-size:.75rem}.menu-sm .menu-title{padding-block:.5rem;padding-inline:.75rem}.menu-xs :where(li:not(.menu-title)>:not(ul,details,.menu-title)),.menu-xs :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);padding-block:.25rem;padding-inline:.5rem;font-size:.6875rem}.menu-xs .menu-title{padding-block:.25rem;padding-inline:.5rem}.badge-dash{color:var(--badge-color);--badge-bg:#0000;background-image:none;border-style:dashed;border-color:currentColor}.badge-ghost{border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content);background-image:none}.select-ghost{box-shadow:none;background-color:#0000;border-color:#0000;transition:background-color .2s}.select-ghost:focus,.select-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.input-ghost{box-shadow:none;background-color:#0000;border-color:#0000}.input-ghost:focus,.input-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.badge-outline{color:var(--badge-color);--badge-bg:#0000;background-image:none;border-color:currentColor}.table-zebra tbody tr:where(:nth-child(2n)),.table-zebra tbody tr:where(:nth-child(2n)) :where(.table-pin-cols tr th){background-color:var(--color-base-200)}@media (hover:hover){:is(.table-zebra tbody tr.row-hover,.table-zebra tbody tr.row-hover:where(:nth-child(2n))):hover{background-color:var(--color-base-300)}}.skeleton-text{webkit-background-clip:text;color:#0000;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(105deg, var(--color-base-content) 0% 40%, var(--color-base-content) 50%, var(--color-base-content) 60% 100%)}@supports (color:color-mix(in lab, red, red)){.skeleton-text{background-image:linear-gradient(105deg, color-mix(in oklab, var(--color-base-content) 20%, transparent) 0% 40%, var(--color-base-content) 50%, color-mix(in oklab, var(--color-base-content) 20%, transparent) 60% 100%)}}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.mask-circle{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle fill='black' cx='100' cy='100' r='100' fill-rule='evenodd'/%3e%3c/svg%3e")}.mask-heart{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='200' height='185' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M100 184.606a15.384 15.384 0 0 1-8.653-2.678C53.565 156.28 37.205 138.695 28.182 127.7 8.952 104.264-.254 80.202.005 54.146.308 24.287 24.264 0 53.406 0c21.192 0 35.869 11.937 44.416 21.879a2.884 2.884 0 0 0 4.356 0C110.725 11.927 125.402 0 146.594 0c29.142 0 53.098 24.287 53.4 54.151.26 26.061-8.956 50.122-28.176 73.554-9.023 10.994-25.383 28.58-63.165 54.228a15.384 15.384 0 0 1-8.653 2.673Z' fill='black' fill-rule='nonzero'/%3e%3c/svg%3e")}.mask-star{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 137.263-58.779 42.024 22.163-68.389L.894 68.481l72.476-.243L96 0l22.63 68.238 72.476.243-58.49 42.417 22.163 68.389z' fill-rule='evenodd'/%3e%3c/svg%3e")}.mask-star-2{-webkit-mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 153.044-58.779 26.243 7.02-63.513L.894 68.481l63.117-13.01L96 0l31.989 55.472 63.117 13.01-43.347 47.292 7.02 63.513z' fill-rule='evenodd'/%3e%3c/svg%3e");mask-image:url("data:image/svg+xml,%3csvg width='192' height='180' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='m96 153.044-58.779 26.243 7.02-63.513L.894 68.481l63.117-13.01L96 0l31.989 55.472 63.117 13.01-43.347 47.292 7.02 63.513z' fill-rule='evenodd'/%3e%3c/svg%3e")}.checkbox-lg{--size:calc(var(--size-selector,.25rem) * 7);padding:.3125rem}.checkbox-md{--size:calc(var(--size-selector,.25rem) * 6);padding:.25rem}.checkbox-sm{--size:calc(var(--size-selector,.25rem) * 5);padding:.1875rem}.checkbox-xs{--size:calc(var(--size-selector,.25rem) * 4);padding:.125rem}.radio-lg{padding:.3125rem}.radio-lg[type=radio]{--size:calc(var(--size-selector,.25rem) * 7)}.radio-md{padding:.25rem}.radio-md[type=radio]{--size:calc(var(--size-selector,.25rem) * 6)}.radio-sm{padding:.1875rem}.radio-sm[type=radio]{--size:calc(var(--size-selector,.25rem) * 5)}.radio-xs{padding:.125rem}.radio-xs[type=radio]{--size:calc(var(--size-selector,.25rem) * 4)}.select-lg{--size:calc(var(--size-field,.25rem) * 12);font-size:1.125rem}.select-lg option{padding-block:.375rem;padding-inline:1rem}.select-md{--size:calc(var(--size-field,.25rem) * 10);font-size:.875rem}.select-md option{padding-block:.375rem;padding-inline:.75rem}.select-sm{--size:calc(var(--size-field,.25rem) * 8);font-size:.75rem}.select-sm option{padding-block:.25rem;padding-inline:.625rem}.select-xs{--size:calc(var(--size-field,.25rem) * 6);font-size:.6875rem}.select-xs option{padding-block:.25rem;padding-inline:.5rem}.table-lg :not(thead,tfoot) tr{font-size:1.125rem}.table-lg :where(th,td){padding-block:1rem;padding-inline:1.25rem}.table-md :not(thead,tfoot) tr{font-size:.875rem}.table-md :where(th,td){padding-block:.75rem;padding-inline:1rem}.table-sm :not(thead,tfoot) tr{font-size:.75rem}.table-sm :where(th,td){padding-block:.5rem;padding-inline:.75rem}.table-xl :not(thead,tfoot) tr{font-size:1.375rem}.table-xl :where(th,td){padding-block:1.25rem;padding-inline:1.5rem}.table-xs :not(thead,tfoot) tr{font-size:.6875rem}.table-xs :where(th,td){padding-block:.25rem;padding-inline:.5rem}.tabs-lg{--tab-height:calc(var(--size-field,.25rem) * 12)}.tabs-lg>.tab{--tab-p:1rem;--tab-radius-min:calc(1.5rem - var(--border));font-size:1.125rem}.tabs-md{--tab-height:calc(var(--size-field,.25rem) * 10)}.tabs-md>.tab{--tab-p:.75rem;--tab-radius-min:calc(.75rem - var(--border));font-size:.875rem}.tabs-sm{--tab-height:calc(var(--size-field,.25rem) * 8)}.tabs-sm>.tab{--tab-p:.5rem;--tab-radius-min:calc(.5rem - var(--border));font-size:.875rem}.tabs-xs{--tab-height:calc(var(--size-field,.25rem) * 6)}.tabs-xs>.tab{--tab-p:.375rem;--tab-radius-min:calc(.5rem - var(--border));font-size:.75rem}.badge-lg{--size:calc(var(--size-selector,.25rem) * 7);font-size:1rem}.badge-md{--size:calc(var(--size-selector,.25rem) * 6);font-size:.875rem}.badge-sm{--size:calc(var(--size-selector,.25rem) * 5);font-size:.75rem}.badge-xs{--size:calc(var(--size-selector,.25rem) * 4);font-size:.625rem}.alert-error{color:var(--color-error-content);--alert-border-color:var(--color-error);--alert-color:var(--color-error)}.alert-info{color:var(--color-info-content);--alert-border-color:var(--color-info);--alert-color:var(--color-info)}.alert-success{color:var(--color-success-content);--alert-border-color:var(--color-success);--alert-color:var(--color-success)}.alert-warning{color:var(--color-warning-content);--alert-border-color:var(--color-warning);--alert-color:var(--color-warning)}.checkbox-accent{color:var(--color-accent-content);--input-color:var(--color-accent)}.checkbox-error{color:var(--color-error-content);--input-color:var(--color-error)}.checkbox-info{color:var(--color-info-content);--input-color:var(--color-info)}.checkbox-primary{color:var(--color-primary-content);--input-color:var(--color-primary)}.checkbox-secondary{color:var(--color-secondary-content);--input-color:var(--color-secondary)}.checkbox-success{color:var(--color-success-content);--input-color:var(--color-success)}.checkbox-warning{color:var(--color-warning-content);--input-color:var(--color-warning)}.range-accent{color:var(--color-accent);--range-thumb:var(--color-accent-content)}.range-error{color:var(--color-error);--range-thumb:var(--color-error-content)}.range-info{color:var(--color-info);--range-thumb:var(--color-info-content)}.range-primary{color:var(--color-primary);--range-thumb:var(--color-primary-content)}.range-secondary{color:var(--color-secondary);--range-thumb:var(--color-secondary-content)}.range-success{color:var(--color-success);--range-thumb:var(--color-success-content)}.range-warning{color:var(--color-warning);--range-thumb:var(--color-warning-content)}.tooltip-accent{--tt-bg:var(--color-accent)}.tooltip-accent>.tooltip-content,.tooltip-accent[data-tip]:before{color:var(--color-accent-content)}.tooltip-error{--tt-bg:var(--color-error)}.tooltip-error>.tooltip-content,.tooltip-error[data-tip]:before{color:var(--color-error-content)}.tooltip-info{--tt-bg:var(--color-info)}.tooltip-info>.tooltip-content,.tooltip-info[data-tip]:before{color:var(--color-info-content)}.tooltip-primary{--tt-bg:var(--color-primary)}.tooltip-primary>.tooltip-content,.tooltip-primary[data-tip]:before{color:var(--color-primary-content)}.tooltip-secondary{--tt-bg:var(--color-secondary)}.tooltip-secondary>.tooltip-content,.tooltip-secondary[data-tip]:before{color:var(--color-secondary-content)}.tooltip-success{--tt-bg:var(--color-success)}.tooltip-success>.tooltip-content,.tooltip-success[data-tip]:before{color:var(--color-success-content)}.tooltip-warning{--tt-bg:var(--color-warning)}.tooltip-warning>.tooltip-content,.tooltip-warning[data-tip]:before{color:var(--color-warning-content)}.swap-active .swap-off{opacity:0}.swap-active .swap-on{opacity:1}.indicator-end{--indicator-s:auto;--indicator-e:0;--indicator-x:50%}[dir=rtl] .indicator-end,.indicator-start{--indicator-s:0;--indicator-e:auto;--indicator-x:-50%}[dir=rtl] .indicator-start{--indicator-s:auto;--indicator-e:0;--indicator-x:50%}.btn-lg{--fontsize:1.125rem;--btn-p:1.25rem;--size:calc(var(--size-field,.25rem) * 12)}.btn-md{--fontsize:.875rem;--btn-p:1rem;--size:calc(var(--size-field,.25rem) * 10)}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem) * 8)}.btn-xl{--fontsize:1.375rem;--btn-p:1.5rem;--size:calc(var(--size-field,.25rem) * 14)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem) * 6)}.indicator-bottom{--indicator-t:auto;--indicator-b:0;--indicator-y:50%}.indicator-top{--indicator-t:0;--indicator-b:auto;--indicator-y:-50%}.badge-accent{--badge-color:var(--color-accent);--badge-fg:var(--color-accent-content)}.badge-error{--badge-color:var(--color-error);--badge-fg:var(--color-error-content)}.badge-info{--badge-color:var(--color-info);--badge-fg:var(--color-info-content)}.badge-primary{--badge-color:var(--color-primary);--badge-fg:var(--color-primary-content)}.badge-secondary{--badge-color:var(--color-secondary);--badge-fg:var(--color-secondary-content)}.badge-success{--badge-color:var(--color-success);--badge-fg:var(--color-success-content)}.badge-warning{--badge-color:var(--color-warning);--badge-fg:var(--color-warning-content)}.input-accent,.input-accent:focus,.input-accent:focus-within{--input-color:var(--color-accent)}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}.input-info,.input-info:focus,.input-info:focus-within{--input-color:var(--color-info)}.input-primary,.input-primary:focus,.input-primary:focus-within{--input-color:var(--color-primary)}.input-secondary,.input-secondary:focus,.input-secondary:focus-within{--input-color:var(--color-secondary)}.input-success,.input-success:focus,.input-success:focus-within{--input-color:var(--color-success)}.input-warning,.input-warning:focus,.input-warning:focus-within{--input-color:var(--color-warning)}.radio-accent{--input-color:var(--color-accent)}.radio-error{--input-color:var(--color-error)}.radio-info{--input-color:var(--color-info)}.radio-primary{--input-color:var(--color-primary)}.radio-secondary{--input-color:var(--color-secondary)}.radio-success{--input-color:var(--color-success)}.radio-warning{--input-color:var(--color-warning)}.range-lg{--range-thumb-size:calc(var(--size-selector,.25rem) * 7)}.range-md{--range-thumb-size:calc(var(--size-selector,.25rem) * 6)}.range-sm{--range-thumb-size:calc(var(--size-selector,.25rem) * 5)}.range-xs{--range-thumb-size:calc(var(--size-selector,.25rem) * 4)}.select-accent,.select-accent:focus,.select-accent:focus-within{--input-color:var(--color-accent)}.select-error,.select-error:focus,.select-error:focus-within{--input-color:var(--color-error)}.select-info,.select-info:focus,.select-info:focus-within{--input-color:var(--color-info)}.select-primary,.select-primary:focus,.select-primary:focus-within{--input-color:var(--color-primary)}.select-secondary,.select-secondary:focus,.select-secondary:focus-within{--input-color:var(--color-secondary)}.select-success,.select-success:focus,.select-success:focus-within{--input-color:var(--color-success)}.select-warning,.select-warning:focus,.select-warning:focus-within{--input-color:var(--color-warning)}.toggle-accent:checked,.toggle-accent[aria-checked=true]{--input-color:var(--color-accent)}.toggle-error:checked,.toggle-error[aria-checked=true]{--input-color:var(--color-error)}.toggle-info:checked,.toggle-info[aria-checked=true]{--input-color:var(--color-info)}.toggle-lg[type=checkbox],.toggle-lg:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 7)}.toggle-md[type=checkbox],.toggle-md:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 6)}.toggle-primary:checked,.toggle-primary[aria-checked=true]{--input-color:var(--color-primary)}.toggle-secondary:checked,.toggle-secondary[aria-checked=true]{--input-color:var(--color-secondary)}.toggle-sm[type=checkbox],.toggle-sm:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 5)}.toggle-success:checked,.toggle-success[aria-checked=true]{--input-color:var(--color-success)}.toggle-warning:checked,.toggle-warning[aria-checked=true]{--input-color:var(--color-warning)}.toggle-xs[type=checkbox],.toggle-xs:has([type=checkbox]){--size:calc(var(--size-selector,.25rem) * 4)}}.prose :where(a.btn:not(.btn-link)):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-line:none}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse:not(td,tr,colgroup){visibility:revert-layer}.validator:user-invalid~.validator-hint{display:revert-layer}.validator:has(:user-invalid)~.validator-hint{display:revert-layer}:is(.validator[aria-invalid]:not([aria-invalid=false]),.validator:has([aria-invalid]:not([aria-invalid=false])))~.validator-hint{display:revert-layer}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-1{top:calc(var(--spacing) * -1)}.top-0{top:calc(var(--spacing) * 0)}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-6{top:calc(var(--spacing) * 6)}.top-10{top:calc(var(--spacing) * 10)}.-right-2{right:calc(var(--spacing) * -2)}.right-0{right:calc(var(--spacing) * 0)}.right-1\/4{right:25%}.right-3{right:calc(var(--spacing) * 3)}.right-6{right:calc(var(--spacing) * 6)}.-bottom-5{bottom:calc(var(--spacing) * -5)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-10{bottom:calc(var(--spacing) * 10)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-6{left:calc(var(--spacing) * 6)}.-z-0{z-index:calc(0 * -1)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[50\]{z-index:50}.z-\[90\]{z-index:90}.z-\[100\]{z-index:100}.z-\[110\]{z-index:110}.z-\[9999\]{z-index:9999}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.row-start-2{grid-row-start:2}.row-start-3{grid-row-start:3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-1{margin:calc(var(--spacing) * 1)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-6{margin-block:calc(var(--spacing) * 6)}.my-16{margin-block:calc(var(--spacing) * 16)}.-mt-10{margin-top:calc(var(--spacing) * -10)}.mt-0{margin-top:calc(var(--spacing) * 0)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-6{margin-left:calc(var(--spacing) * 6)}.icon-\[lucide--alert-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4m0 4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--alert-triangle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4m0 4h.01'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--bold\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--calendar\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M8 2v4m8-4v4'/%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M3 10h18'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check-circle\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M21.801 10A10 10 0 1 1 17 3.335'/%3E%3Cpath d='m9 11l3 3L22 4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--check\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m15 18l-6-6l6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevron-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m9 18l6-6l-6-6'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-left\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m11 17l-5-5l5-5m7 10l-5-5l5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--chevrons-right\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 17l5-5l-5-5m7 10l5-5l-5-5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--clock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--code-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye-off\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575a1 1 0 0 1 0 .696a10.8 10.8 0 0 1-1.444 2.49m-6.41-.679a3 3 0 0 1-4.242-4.242'/%3E%3Cpath d='M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 4.446-5.143M2 2l20 20'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--eye\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M2.062 12.348a1 1 0 0 1 0-.696a10.75 10.75 0 0 1 19.876 0a1 1 0 0 1 0 .696a10.75 10.75 0 0 1-19.876 0'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--hash\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 9h16M4 15h16M10 3L8 21m8-18l-2 18'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--heart\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 9.5a5.5 5.5 0 0 1 9.591-3.676a.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--info\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4m0-4h.01'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--italic\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 4h-9m4 16H5M15 4L9 20'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--link\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--list-ordered\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M11 5h10m-10 7h10m-10 7h10M4 4h1v5M4 9h2m.5 11H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--list\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--lock\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Crect width='18' height='11' x='3' y='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--mail\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7'/%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--phone\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233a14 14 0 0 0 6.392 6.384'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--plus\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 12h14m-7-7v14'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--quote\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2zM5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2a1 1 0 0 1 1 1v1a2 2 0 0 1-2 2a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1a6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--redo-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m15 14l5-5l-5-5'/%3E%3Cpath d='M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--search\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='m21 21l-4.34-4.34'/%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--settings\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9.671 4.136a2.34 2.34 0 0 1 4.659 0a2.34 2.34 0 0 0 3.319 1.915a2.34 2.34 0 0 1 2.33 4.033a2.34 2.34 0 0 0 0 3.831a2.34 2.34 0 0 1-2.33 4.033a2.34 2.34 0 0 0-3.319 1.915a2.34 2.34 0 0 1-4.659 0a2.34 2.34 0 0 0-3.32-1.915a2.34 2.34 0 0 1-2.33-4.033a2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--strikethrough\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M16 4H9a3 3 0 0 0-2.83 4M14 12a4 4 0 0 1 0 8H6m-2-8h16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--text\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15 18H3M17 6H3m18 6H3'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--underline\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 4v6a6 6 0 0 0 12 0V4M4 20h16'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--undo-2\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M9 14L4 9l5-5'/%3E%3Cpath d='M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--upload\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M12 3v12m5-7l-5-5l-5 5m14 7v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--user\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/g%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.icon-\[lucide--x\]{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M18 6L6 18M6 6l12 12'/%3E%3C/svg%3E");background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.kbd{box-shadow:none}.text-rotate{height:1lh}.alert{border-width:var(--border);border-color:var(--alert-border-color,var(--color-base-200))}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.aspect-square{aspect-ratio:1}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-48{height:calc(var(--spacing) * 48)}.h-96{height:calc(var(--spacing) * 96)}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-auto{height:auto}.h-full{height:100%}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-96{max-height:calc(var(--spacing) * 96)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[10rem\]{min-height:10rem}.min-h-\[300px\]{min-height:300px}.min-h-\[400px\]{min-height:400px}.min-h-\[500px\]{min-height:500px}.min-h-full{min-height:100%}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[200px\]{max-width:200px}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-\[4rem\]{min-width:4rem}.min-w-\[48px\]{min-width:48px}.min-w-\[500px\]{min-width:500px}.min-w-\[600px\]{min-width:600px}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-2{--tw-translate-x:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-10{--tw-translate-x:calc(var(--spacing) * 10);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-2{--tw-translate-y:calc(var(--spacing) * 2);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-help{cursor:help}.cursor-pointer{cursor:pointer}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-center{justify-items:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-box{border-radius:var(--radius-box);border-radius:var(--radius-box)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}@layer daisyui.l1{.alert-dash{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none;border-style:dashed}.btn-dash:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}@media (hover:none){.btn-dash:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}}.alert-soft{color:var(--alert-color,var(--color-base-content));background:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{background:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 8%, var(--color-base-100))}}.alert-soft{--alert-border-color:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.alert-soft{--alert-border-color:color-mix(in oklab, var(--alert-color,var(--color-base-content)) 10%, var(--color-base-100))}}.alert-soft{box-shadow:none;background-image:none}.btn-link{--btn-border:#0000;--btn-bg:#0000;--btn-noise:none;--btn-shadow:"";outline-color:currentColor;text-decoration-line:underline}.btn-link:not(.btn-disabled,.btn:disabled,.btn[disabled]){--btn-fg:var(--btn-color,var(--color-primary))}.btn-link:is(.btn-active,:hover,:active:focus,:focus-visible){--btn-border:#0000;--btn-bg:#0000}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)):not(:disabled,[disabled],.btn-disabled){--btn-fg:var(--btn-color,currentColor);outline-color:currentColor}@media (hover:none){.btn-ghost:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color,currentColor);--btn-border:#0000;--btn-noise:none;outline-color:currentColor}}.btn-outline:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}@media (hover:none){.btn-outline:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-fg:var(--btn-color,var(--color-base-content));--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 8%, var(--color-base-100))}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 10%, var(--color-base-100))}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-noise:none}@media (hover:none){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-fg:var(--btn-color,var(--color-base-content));--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-bg:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 8%, var(--color-base-100))}}.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab, red, red)){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-border:color-mix(in oklab, var(--btn-color,var(--color-base-content)) 10%, var(--color-base-100))}}.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-noise:none}}}.btn-dash{border-style:dashed}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-base-200\/30{border-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.border-base-200\/30{border-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.border-base-300{border-color:var(--color-base-300)}.border-base-content\/20{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.border-base-content\/20{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.border-black\/5{border-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.border-black\/5{border-color:color-mix(in oklab, var(--color-black) 5%, transparent)}}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.border-black\/10{border-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-transparent{border-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-base-100{background-color:var(--color-base-100)}.bg-base-200,.bg-base-200\/30{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/30{background-color:color-mix(in oklab, var(--color-base-200) 30%, transparent)}}.bg-base-200\/50{background-color:var(--color-base-200)}@supports (color:color-mix(in lab, red, red)){.bg-base-200\/50{background-color:color-mix(in oklab, var(--color-base-200) 50%, transparent)}}.bg-base-300{background-color:var(--color-base-300)}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab, red, red)){.bg-black\/20{background-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.bg-error,.bg-error\/10{background-color:var(--color-error)}@supports (color:color-mix(in lab, red, red)){.bg-error\/10{background-color:color-mix(in oklab, var(--color-error) 10%, transparent)}}.bg-info{background-color:var(--color-info)}.bg-neutral{background-color:var(--color-neutral)}.bg-primary,.bg-primary\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-primary\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-primary\/20{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/20{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.bg-secondary{background-color:var(--color-secondary)}.bg-success,.bg-success\/10{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-success\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-warning,.bg-warning\/10{background-color:var(--color-warning)}@supports (color:color-mix(in lab, red, red)){.bg-warning\/10{background-color:color-mix(in oklab, var(--color-warning) 10%, transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-accent{--tw-gradient-from:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-secondary{--tw-gradient-from:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-accent{--tw-gradient-via:var(--color-accent);--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-accent{--tw-gradient-to:var(--color-accent);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-secondary{--tw-gradient-to:var(--color-secondary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.mask-circle{--tw-mask-radial-shape:circle}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-10{padding-inline:calc(var(--spacing) * 10)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-10{padding-left:calc(var(--spacing) * 10)}.\!text-center{text-align:center!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.whitespace-nowrap{white-space:nowrap}.text-accent{color:var(--color-accent)}.text-accent-content{color:var(--color-accent-content)}.text-base-content,.text-base-content\/60{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/60{color:color-mix(in oklab, var(--color-base-content) 60%, transparent)}}.text-base-content\/90{color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.text-base-content\/90{color:color-mix(in oklab, var(--color-base-content) 90%, transparent)}}.text-error{color:var(--color-error)}.text-error-content{color:var(--color-error-content)}.text-gray-500{color:var(--color-gray-500)}.text-info{color:var(--color-info)}.text-info-content{color:var(--color-info-content)}.text-neutral-content{color:var(--color-neutral-content)}.text-primary{color:var(--color-primary)}.text-primary-content{color:var(--color-primary-content)}.text-secondary{color:var(--color-secondary)}.text-secondary-content{color:var(--color-secondary-content)}.text-success{color:var(--color-success)}.text-success-content{color:var(--color-success-content)}.text-transparent{color:#0000}.text-warning{color:var(--color-warning)}.text-warning-content{color:var(--color-warning-content)}.text-white{color:var(--color-white)}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-secondary\/20{--tw-shadow-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.shadow-secondary\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-secondary) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-primary{--tw-ring-color:var(--color-primary)}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow-2xl{--tw-drop-shadow-size:drop-shadow(0 25px 25px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-2xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:translate-x-1:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}}.before\:z-50:before,.after\:z-50:after{content:var(--tw-content);z-index:50}@media (hover:hover){.hover\:z-10:hover{z-index:10}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-125:hover{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-accent\/40:hover{border-color:var(--color-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:border-accent\/40:hover{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.hover\:border-base-content\/20:hover{border-color:var(--color-base-content)}@supports (color:color-mix(in lab, red, red)){.hover\:border-base-content\/20:hover{border-color:color-mix(in oklab, var(--color-base-content) 20%, transparent)}}.hover\:border-primary\/40:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/40:hover{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.hover\:border-primary\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:border-secondary\/40:hover{border-color:var(--color-secondary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-secondary\/40:hover{border-color:color-mix(in oklab, var(--color-secondary) 40%, transparent)}}.hover\:bg-base-200:hover{background-color:var(--color-base-200)}.hover\:bg-base-300:hover{background-color:var(--color-base-300)}.hover\:bg-white\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/30:hover{background-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.hover\:text-base-content:hover{color:var(--color-base-content)}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-100:hover{opacity:1}}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (min-width:48rem){.md\:h-64{height:calc(var(--spacing) * 64)}.md\:w-64{width:calc(var(--spacing) * 64)}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.md\:text-9xl{font-size:var(--text-9xl);line-height:var(--tw-leading,var(--text-9xl--line-height))}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&_br\]\:block br{display:block}.\[\&_br\]\:h-\[1em\] br{height:1em}.\[\&_br\]\:content-\[\'\'\] br{--tw-content:"";content:var(--tw-content)}.\[\&_div\]\:m-0 div{margin:calc(var(--spacing) * 0)}.\[\&_li\]\:list-item li{display:list-item}.\[\&_ol\]\:list-decimal ol{list-style-type:decimal}.\[\&_ol\]\:pl-6 ol{padding-left:calc(var(--spacing) * 6)}.\[\&_p\]\:m-0 p{margin:calc(var(--spacing) * 0)}.\[\&_ul\]\:list-disc ul{list-style-type:disc}.\[\&_ul\]\:pl-6 ul{padding-left:calc(var(--spacing) * 6)}@keyframes fade-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.animate-fade-in{animation:.15s ease-out forwards fade-in}}:root{font-size:14px}.input,.label,.select,.textarea{transition:all .3s cubic-bezier(.4,0,.2,1)}:is(.input,.label,.select,.textarea):focus,:is(.input,.label,.select,.textarea):focus-within{box-shadow:0 0 4px;outline:none!important}:is(.input,.label,.select,.textarea):hover:not(:focus){background-color:oklch(from var(--color-base-100) calc(l - .03) c h)}.floating-label span{color:oklch(30% .01 260);font-size:1.1rem;transition:all .2s}.floating-label:focus-within span{color:oklch(25% .02 260);font-size:1.1rem}.floating-label:has(input:not(:placeholder-shown)) span{color:oklch(28% .01 260);font-size:1.1rem}.tab-content-inner{transform-origin:top;animation:.3s cubic-bezier(.4,0,.2,1) tabFadeIn}.input-container{flex-direction:column;width:100%;display:flex;position:relative}.input-container .input{align-items:center;width:100%;display:flex}.input-content{z-index:50;background:oklch(var(--b1));border:1px solid oklch(var(--bc) / .2);border-radius:var(--rounded-box,1rem);margin-top:.25rem;position:absolute;top:100%;left:0;right:0;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a}.input-content .menu{width:100%}@keyframes tabFadeIn{0%{opacity:0;transform:scaleY(.95)}to{opacity:1;transform:scaleY(1)}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes dropdown{0%{opacity:0}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes rotator{89.9999%,to{--first-item-position:0 0%}90%,99.9999%{--first-item-position:0 calc(var(--items) * 100%)}to{translate:0 -100%}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes menu{0%{opacity:0}}@keyframes progress{50%{background-position-x:-115%}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}} \ No newline at end of file diff --git a/dist/sigpro-ui.min.js b/dist/sigpro-ui.min.js index 5dbc6e6..e7af0b9 100644 --- a/dist/sigpro-ui.min.js +++ b/dist/sigpro-ui.min.js @@ -1 +1 @@ -(()=>{var{defineProperty:U,getOwnPropertyNames:ht,getOwnPropertyDescriptor:bt}=Object,yt=Object.prototype.hasOwnProperty;function vt(e){return this[e]}var xt=(e)=>{var t=(Ke??=new WeakMap).get(e),a;if(t)return t;if(t=U({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function"){for(var s of ht(e))if(!yt.call(t,s))U(t,s,{get:vt.bind(e,s),enumerable:!(a=bt(e,s))||a.enumerable})}return Ke.set(e,t),t},Ke;var wt=(e)=>e;function $t(e,t){this[e]=wt.bind(null,t)}var m=(e,t)=>{for(var a in t)U(e,a,{get:t[a],enumerable:!0,configurable:!0,set:$t.bind(t,a)})};var En={};m(En,{Utils:()=>ft,Components:()=>ut});var te={};m(te,{Accordion:()=>pt});var E=(e)=>typeof e==="function",Q=(e)=>e&&typeof e==="object",I=Array.isArray,D=typeof document<"u"?document:null,We=(e)=>e?._isRuntime?e.container:e instanceof Node?e:D.createTextNode(e==null?"":String(e)),x=null,S=null,H=!1,O=0,q=new Set,Ye=new WeakMap,X=Symbol("iter"),G=new WeakMap,F=(e)=>{if(!e||e._disposed)return;e._disposed=!0;let t=[e];while(t.length){let a=t.pop();if(a._cleanups)a._cleanups.forEach((s)=>s()),a._cleanups.clear();if(a._children)a._children.forEach((s)=>t.push(s)),a._children.clear();if(a._deps)a._deps.forEach((s)=>s.delete(a)),a._deps.clear()}},L=(e)=>{if(S)(S._cleanups||=new Set).add(e)},kt=(e)=>{let t=x;x=null;try{return e()}finally{x=t}},j=(e,t=!1)=>{let a=()=>{if(a._disposed)return;if(a._deps)a._deps.forEach((r)=>r.delete(a));if(a._cleanups)a._cleanups.forEach((r)=>r()),a._cleanups.clear();let s=x,c=S;x=S=a;try{return a._result=e()}catch(r){console.error("[SigPro]",r)}finally{x=s,S=c}};if(a._deps=a._cleanups=a._children=null,a._disposed=!1,a._isComputed=t,a._depth=x?x._depth+1:0,a._mounts=[],a._parent=S,S)(S._children||=new Set).add(a);return a},Ve=()=>{if(H)return;H=!0;let e=Array.from(q).sort((t,a)=>t._depth-a._depth);q.clear();for(let t of e)if(!t._disposed)t();H=!1},St=(e)=>{O++;try{return e()}finally{if(O--,O===0&&q.size>0&&!H)Ve()}},T=(e,t=!1)=>{if(!t&&x&&!x._disposed)e.add(x),(x._deps||=new Set).add(e);else if(t&&e.size>0){let a=!1;for(let s of e){if(s===x||s._disposed)continue;if(s._isComputed){if(s._dirty=!0,s._subs)T(s._subs,!0)}else q.add(s),a=!0}if(a&&!H&&O===0)queueMicrotask(Ve)}},h=(e,t=null)=>{let a=new Set;if(E(e)){let s,c=()=>{if(c._dirty){let r=x;x=c;try{let l=e();if(!Object.is(s,l))s=l,T(a,!0)}finally{x=r}c._dirty=!1}return T(a),s};if(c._isComputed=!0,c._subs=a,c._dirty=!0,c._deps=null,c._disposed=!1,c.stop=()=>{},S)L(c.stop);return c}if(t)try{e=JSON.parse(localStorage.getItem(t))??e}catch(s){}return(...s)=>{if(s.length){let c=E(s[0])?s[0](e):s[0];if(!Object.is(e,c)){if(e=c,t)localStorage.setItem(t,JSON.stringify(e));T(a,!0)}}return T(a),e}},Ue=(e)=>{if(!Q(e))return e;let t=Ye.get(e);if(t)return t;let a=new Map,s=(r)=>{let l=a.get(r);if(!l)a.set(r,l=new Set);return l},c=new Proxy(e,{get(r,l,o){if(typeof l!=="symbol")T(s(l));return Ue(Reflect.get(r,l,o))},set(r,l,o,i){let u=Reflect.has(r,l),f=Reflect.get(r,l,i),g=Reflect.set(r,l,o,i);if(g&&!Object.is(f,o)){if(T(s(l),!0),!u)T(s(X),!0)}return g},deleteProperty(r,l){let o=Reflect.deleteProperty(r,l);if(o)T(s(l),!0),T(s(X),!0);return o},ownKeys(r){return T(s(X)),Reflect.ownKeys(r)}});return Ye.set(e,c),c},_=(e,t)=>{if(t===void 0){let s=j(e);return s(),()=>F(s)}let a=j(()=>{let s=Array.isArray(e)?e.map((c)=>c()):e();kt(()=>t(s))});return a(),()=>F(a)},Z=(e)=>{if(!e)return;if(e._cleanups)e._cleanups.forEach((t)=>t()),e._cleanups.clear();if(e._ownerEffect)F(e._ownerEffect);if(e.childNodes)e.childNodes.forEach((t)=>Z(t))},_t=/^\s*(javascript|data|vbscript):/i,Ct=(e)=>e==="src"||e==="href"||e.startsWith("on"),Je=(e,t)=>{if(t==null||t===!1)return null;if(Ct(e)){let a=String(t);if(_t.test(a))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return t},n=(e,t={},a=[])=>{if(t instanceof Node||I(t)||!Q(t))a=t,t={};if(E(e)){let l=j(()=>{let f=e(t,{children:a,emit:(g,...b)=>t[`on${g[0].toUpperCase()}${g.slice(1)}`]?.(...b)});return l._result=f,f});l();let o=l._result;if(o==null)return null;let i=o instanceof Node||I(o)&&o.every((f)=>f instanceof Node)?o:D.createTextNode(String(o)),u=(f)=>{if(Q(f)&&!f._isRuntime)f._mounts=l._mounts||[],f._cleanups=l._cleanups||new Set,f._ownerEffect=l};return I(i)?i.forEach(u):u(i),i}let s=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(e),c=s?D.createElementNS("http://www.w3.org/2000/svg",e):D.createElement(e);c._cleanups=new Set;for(let l in t){if(!t.hasOwnProperty(l))continue;let o=t[l];if(l==="ref"){E(o)?o(c):o.current=c;continue}if(s&&l.startsWith("xlink:")){o==null?c.removeAttributeNS("http://www.w3.org/1999/xlink",l.slice(6)):c.setAttributeNS("http://www.w3.org/1999/xlink",l.slice(6),o);continue}if(l.startsWith("on")){let i=l.slice(2).toLowerCase();c.addEventListener(i,o);let u=()=>c.removeEventListener(i,o);c._cleanups.add(u),L(u)}else if(E(o)){let i=j(()=>{let u=Je(l,o());if(l==="class")c.className=u||"";else if(u==null)c.removeAttribute(l);else if(l in c&&!s)c[l]=u;else c.setAttribute(l,u===!0?"":u)});if(i(),c._cleanups.add(()=>F(i)),L(()=>F(i)),/^(INPUT|TEXTAREA|SELECT)$/.test(c.tagName)&&(l==="value"||l==="checked")){let u=l==="checked"?"change":"input";c.addEventListener(u,(f)=>o(f.target[l]))}}else{let i=Je(l,o);if(i!=null)if(l in c&&!s)c[l]=i;else c.setAttribute(l,i===!0?"":i)}}let r=(l)=>{if(I(l))return l.forEach(r);if(E(l)){let o=D.createTextNode("");c.appendChild(o);let i=[],u=j(()=>{let f=l(),g=(I(f)?f:[f]).map(We);i.forEach((v)=>{if(v._isRuntime)v.destroy();else Z(v);if(v.parentNode)v.remove()});let b=o;for(let v=g.length-1;v>=0;v--){let d=g[v];if(d.parentNode!==b.parentNode)b.parentNode?.insertBefore(d,b);if(d._mounts)d._mounts.forEach((y)=>y());b=d}i=g});u(),c._cleanups.add(()=>F(u)),L(()=>F(u))}else{let o=We(l);if(c.appendChild(o),o._mounts)o._mounts.forEach((i)=>i())}};return r(a),c},K=(e)=>{let t=new Set,a=S,s=x,c=D.createElement("div");c.style.display="contents",c.setAttribute("role","presentation"),S={_cleanups:t},x=null;let r=(l)=>{if(!l)return;if(l._isRuntime)t.add(l.destroy),c.appendChild(l.container);else if(I(l))l.forEach(r);else c.appendChild(l instanceof Node?l:D.createTextNode(String(l==null?"":l)))};try{r(e({onCleanup:(l)=>t.add(l)}))}finally{S=a,x=s}return{_isRuntime:!0,container:c,destroy:()=>{t.forEach((l)=>l()),Z(c),c.remove()}}},p=(e,t,a=null)=>{let s=D.createTextNode(""),c=n("div",{style:"display:contents"},[s]),r=null;return _(()=>!!(E(e)?e():e),(l)=>{if(r)r.destroy(),r=null;let o=l?t:a;if(o)r=K(()=>E(o)?o():o),c.insertBefore(r.container,s)}),L(()=>r?.destroy()),c},M=({name:e,duration:t=200,scale:a,slide:s,rotate:c,blur:r},l)=>{let o=typeof l==="function"?l():l;if(!(o instanceof Node))return o;if(e)return o.style.animation=`${e}-in ${t}ms`,o;let i=a||s||c||r,u=[a?"scale(0.95)":"",s?"translateY(-10px)":"",c?"rotate(-2deg)":""].filter(Boolean).join(" ");if(o.style.transition=`all ${t}ms ease`,o.style.opacity="0",i)o.style.transform=u;if(r)o.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(o.style.opacity="1",i)o.style.transform="none";if(r)o.style.filter="none"}),o},$=(e,t,a)=>{let s=D.createTextNode(""),c=n("div",{style:"display:contents"},[s]),r=new Map;return _(()=>(E(e)?e():e)||[],(l)=>{let o=new Map,i=[],u=l||[];for(let g=0;gt(b,g));else r.delete(v);o.set(v,d),i.push(d)}r.forEach((g)=>g.destroy());let f=s;for(let g=i.length-1;g>=0;g--){let b=i[g].container;if(b.nextSibling!==f)c.insertBefore(b,f);f=b}r=o}),c},z=(e)=>{let t=()=>window.location.hash.slice(1)||"/",a=h(t()),s=()=>a(t());window.addEventListener("hashchange",s),L(()=>window.removeEventListener("hashchange",s));let c=n("div",{class:"router-hook"}),r=null;return _([a],()=>{let l=a(),o=e.find((i)=>{let u=i.path.split("/").filter(Boolean),f=l.split("/").filter(Boolean);return u.length===f.length&&u.every((g,b)=>g[0]===":"||g===f[b])})||e.find((i)=>i.path==="*");if(o){r?.destroy();let i={};o.path.split("/").filter(Boolean).forEach((u,f)=>{if(u[0]===":")i[u.slice(1)]=l.split("/").filter(Boolean)[f]}),z.params(i),r=K(()=>E(o.component)?o.component(i):o.component),c.replaceChildren(r.container)}}),c};z.params=h({});z.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");z.back=()=>window.history.back();z.path=()=>window.location.hash.replace(/^#/,"")||"/";var Tt=({url:e,method:t="GET",headers:a={}})=>{let s=h(!1),c=h(null),r=h(null),l=null,o=null;return{run:async(i=null)=>{l?.abort(),clearTimeout(o),l=new AbortController,o=setTimeout(()=>l.abort(),1e4),s(!0),c(null);try{let u=i instanceof FormData,f=await fetch(e,{method:t,headers:u?a:{"Content-Type":"application/json",...a},body:u?i:i?JSON.stringify(i):void 0,signal:l.signal}),g=await f.text(),b=g?JSON.parse(g):null;if(!f.ok)throw Error(b?.message||f.statusText);return r(b),b}catch(u){if(u.name!=="AbortError")c(u.message);throw u}finally{s(!1),clearTimeout(o),l=null,o=null}},abort:()=>l?.abort(),loading:s,error:c,data:r}},ee=(e,t)=>{let a=typeof t==="string"?D.querySelector(t):t;if(!a)return;if(G.has(a))G.get(a).destroy();let s=K(E(e)?e:()=>e);return a.replaceChildren(s.container),G.set(a,s),s},Et=Object.freeze({$:h,$$:Ue,watch:_,h:n,when:p,each:$,fx:M,router:z,req:Tt,mount:ee,batch:St});if(typeof window<"u")Object.assign(window,Et),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((e)=>{window[e]=(t,a)=>n(e,t,a)});var pt=(e,t)=>{let a=e.name||`accordion-${Math.random().toString(36).slice(2,9)}`;if(e.items&&Array.isArray(e.items))return n("div",{class:`space-y-2 ${e.class??""}`},e.items.map((s)=>n("div",{class:`collapse ${s.class??""}`},[n("input",{type:"radio",name:a,checked:s.open}),n("div",{class:"collapse-title text-xl font-medium"},s.title),n("div",{class:"collapse-content"},t)])));return n("div",{class:`collapse ${e.class??""}`},[n("input",{type:"radio",name:a,checked:e.open}),n("div",{class:"collapse-title text-xl font-medium"},e.title),n("div",{class:"collapse-content"},t)])};var ne={};m(ne,{Alert:()=>Dt});var Dt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`alert ${e.class??""}`},t)};var ae={};m(ae,{Autocomplete:()=>At});var At=(e)=>{let t=h(""),a=h(!1),s=h(-1),c=h([]);_(()=>{return(typeof e.value==="function"?e.value():e.value)||""},(o)=>setTimeout(()=>t(o),0)),_(()=>{let o=String(t()).toLowerCase(),i=typeof e.items==="function"?e.items():e.items,u=o?i.filter((f)=>(typeof f==="string"?f:f.label).toLowerCase().includes(o)):i;c(u)});let r=(o)=>{let i=typeof o==="string"?o:o.label,u=typeof o==="string"?o:o.value;if(t(i),typeof e.value==="function")e.value(u);e.onselect?.(o),a(!1),s(-1)},l=(o)=>{let i=c();if(o.key==="ArrowDown")o.preventDefault(),a(!0),s(Math.min(s()+1,i.length-1));else if(o.key==="ArrowUp")o.preventDefault(),s(Math.max(s()-1,0));else if(o.key==="Enter"&&s()>=0)o.preventDefault(),r(i[s()]);else if(o.key==="Escape")a(!1)};return n("div",{class:`relative w-full ${e.class??""}`},[n("label",{class:"input input-bordered w-full"},[n("span",{class:"icon-[lucide--search]"}),n("input",{...e,type:"text",class:"grow",placeholder:e.placeholder||"Buscar...",value:t,onfocus:()=>a(!0),onblur:()=>setTimeout(()=>a(!1),150),onkeydown:l,oninput:(o)=>{let i=o.target.value;if(t(i),typeof e.value==="function")e.value(i);a(!0),s(-1)}})]),n("ul",{class:"absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50",style:()=>`display: ${a()&&c().length?"block":"none"};`},[$(c,(o,i)=>n("li",{},[n("a",{class:()=>`block w-full ${s()===i?"active bg-primary text-primary-content":""}`,onclick:()=>r(o),onmouseenter:()=>s(i)},typeof o==="string"?o:o.label)]),(o,i)=>(typeof o==="string"?o:o.value)+i),()=>c().length===0?n("li",{class:"flex justify-center p-4 opacity-50"},n("span",{class:"icon-[lucide--search-x] text-2xl"})):null])])};var se={};m(se,{Badge:()=>Nt});var Nt=(e,t)=>{return t===void 0&&(t=e,e={}),n("span",{...e,class:`badge ${e.class??""}`},t)};var le={};m(le,{Button:()=>Bt});var Bt=(e,t)=>{return t===void 0&&(t=e,e={}),n("button",{...e,class:`btn ${e.class??""}`},t)};var ce={};m(ce,{Calendar:()=>oe});var oe=(e)=>{let t=h(new Date),a=h(null),s=h(0),c=h(0),r=()=>{return(typeof e.range==="function"?e.range():e.range)===!0},l=new Date,o=`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`,i=(d)=>{let y=d.getFullYear(),w=String(d.getMonth()+1).padStart(2,"0"),k=String(d.getDate()).padStart(2,"0");return`${y}-${w}-${k}`},u=()=>{return typeof e.value==="function"?e.value():e.value},f=(d)=>{let y=i(d),w=u();if(r())if(!w?.start||w.start&&w.end){let k={start:y,end:null,...e.hour&&{startHour:s()}};e.onChange?.(k)}else{let k=w.start,B;if(y{let y=t();t(new Date(y.getFullYear(),y.getMonth()+d,1))},b=(d)=>{let y=t();t(new Date(y.getFullYear()+d,y.getMonth(),1))},v=({value:d,onChange:y})=>{return n("div",{class:"flex-1"},[n("div",{class:"flex gap-2 items-center"},[n("input",{type:"range",min:0,max:23,value:d,class:"range range-xs flex-1",oninput:(w)=>y(parseInt(w.target.value))}),n("span",{class:"text-sm font-mono min-w-[48px] text-center"},()=>String(typeof d==="function"?d():d).padStart(2,"0")+":00")])])};return n("div",{class:`p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none ${e.class??""}`.trim()},[n("div",{class:"flex justify-between items-center mb-4 gap-1"},[n("div",{class:"flex gap-0.5"},[n("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>b(-1)},n("span",{class:"icon-[lucide--chevrons-left]"})),n("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>g(-1)},n("span",{class:"icon-[lucide--chevron-left]"}))]),n("span",{class:"font-bold uppercase flex-1 text-center"},[()=>t().toLocaleString("es-ES",{month:"short",year:"numeric"})]),n("div",{class:"flex gap-0.5"},[n("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>g(1)},n("span",{class:"icon-[lucide--chevron-right]"})),n("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>b(1)},n("span",{class:"icon-[lucide--chevrons-right]"}))])]),n("div",{class:"grid grid-cols-7 gap-1",onmouseleave:()=>a(null)},[...["L","M","X","J","V","S","D"].map((d)=>n("div",{class:"text-[10px] opacity-40 font-bold text-center"},d)),()=>{let d=t(),y=d.getFullYear(),w=d.getMonth(),k=new Date(y,w,1).getDay(),B=k===0?6:k-1,dt=new Date(y,w+1,0).getDate(),W=[];for(let R=0;R{let A=u(),Y=a(),mt=typeof A==="string"?A.split("T")[0]===C:A?.start===C,gt=A?.end===C,J=!1;if(r()&&A?.start){let V=A.start;if(!A.end&&Y)J=C>V&&C<=Y||C=Y;else if(A.end)J=C>V&&C{if(r())a(C)},onclick:()=>f(qe)},R.toString()))}return W}]),e.hour?n("div",{class:"mt-3 pt-2 border-t border-base-300"},[r()?n("div",{class:"flex gap-4"},[v({value:s,onChange:(d)=>s(d)}),v({value:c,onChange:(d)=>c(d)})]):v({value:s,onChange:(d)=>s(d)})]):null])};var re={};m(re,{CardTitle:()=>Ft,CardBody:()=>It,CardActions:()=>Lt,Card:()=>Rt});var Rt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`card ${e.class??""}`},t)},Ft=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`card-title ${e.class??""}`},t)},It=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`card-body ${e.class??""}`},t)},Lt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`card-actions ${e.class??""}`},t)};var ie={};m(ie,{CarouselItem:()=>Ht,Carousel:()=>zt});var zt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`carousel ${e.class??""}`},t)},Ht=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`carousel-item ${e.class??""}`},t)};var ue={};m(ue,{ChatMessage:()=>jt,ChatImage:()=>Ge,ChatHeader:()=>Qe,ChatFooter:()=>Ze,ChatBubble:()=>Me,Chat:()=>Xe});var Xe=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`chat ${e.class??""}`},t)},Ge=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`chat-image avatar ${e.class??""}`},n("div",{class:"w-10 rounded-full"},typeof t==="string"?n("img",{src:t,alt:"avatar"}):t))},Qe=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`chat-header ${e.class??""}`},t)},Ze=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`chat-footer ${e.class??""}`},t)},Me=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`chat-bubble ${e.class??""}`},t)},jt=(e)=>{let{position:t="start",avatar:a,header:s,message:c,footer:r,bubbleClass:l,...o}=e;return Xe({...o,class:`chat-${t} ${e.class??""}`},[a&&Ge(a),s&&Qe(s),Me({class:l},c),r&&Ze(r)])};var fe={};m(fe,{Checkbox:()=>Pt});var Pt=(e)=>n("input",{...e,type:"checkbox",class:`checkbox ${e.class??""}`});var de={};m(de,{Colorpicker:()=>Ot});var Ot=(e)=>{let t=h(!1),a=["#000","#1A1A1A","#333","#4D4D4D","#666","#808080","#B3B3B3","#FFF","#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626","#ef4444","#f87171","#fca5a5","#431407","#7c2d12","#9a3412","#c2410c","#ea580c","#f97316","#fb923c","#ffedd5","#713f12","#a16207","#ca8a04","#eab308","#facc15","#fde047","#fef08a","#fff9c4","#064e3b","#065f46","#059669","#10b981","#34d399","#4ade80","#84cc16","#d9f99d","#082f49","#075985","#0284c7","#0ea5e9","#38bdf8","#7dd3fc","#22d3ee","#cffafe","#1e1b4b","#312e81","#4338ca","#4f46e5","#6366f1","#818cf8","#a5b4fc","#e0e7ff","#2e1065","#4c1d95","#6d28d9","#7c3aed","#8b5cf6","#a855f7","#d946ef","#fae8ff"],s=()=>{let c=e.value;return(typeof c==="function"?c():c)||"#000000"};return n("div",{class:`relative w-fit ${e.class??""}`},[n("button",{type:"button",class:"btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case",onclick:(c)=>{c.stopPropagation(),t(!t())},...e},[n("div",{class:"size-5 rounded-sm shadow-inner border border-black/10 shrink-0",style:()=>`background-color: ${s()}`}),e.label?n("span",{class:"opacity-80"},e.label):null]),p(t,()=>n("div",{class:"absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none",onclick:(c)=>c.stopPropagation()},[n("div",{class:"grid grid-cols-8 gap-1"},a.map((c)=>n("button",{type:"button",style:`background-color: ${c}`,class:()=>{return`size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${s().toLowerCase()===c.toLowerCase()?"ring-2 ring-offset-1 ring-primary z-10 scale-110":""}`},onclick:()=>{if(typeof e.value==="function")e.value(c);t(!1)}})))])),p(t,()=>n("div",{class:"fixed inset-0 z-[100]",onclick:()=>t(!1)}))])};var me={};m(me,{Datepicker:()=>qt});var qt=(e)=>{let t=h(!1),a=()=>{return(typeof e.range==="function"?e.range():e.range)===!0},s=h("");_(()=>{let l=typeof e.value==="function"?e.value():e.value;if(!l){s("");return}let o="";if(typeof l==="string")o=e.hour&&l.includes("T")?l.replace("T"," "):l;else if(l.start&&l.end){let i=e.hour&&l.startHour!==void 0?`${l.start} ${String(l.startHour).padStart(2,"0")}:00`:l.start,u=e.hour&&l.endHour!==void 0?`${l.end} ${String(l.endHour).padStart(2,"0")}:00`:l.end;o=`${i} - ${u}`}else if(l.start)o=`${e.hour&&l.startHour!==void 0?`${l.start} ${String(l.startHour).padStart(2,"0")}:00`:l.start}...`;s(o)});let c=(l)=>{if(typeof e.value==="function")e.value(l);if(!a()||l?.end!==void 0&&l?.end!==null)t(!1)},r=(l)=>{l.stopPropagation(),t(!t())};return n("div",{class:`relative w-full ${e.class??""}`},[n("label",{class:"input input-bordered w-full",onclick:r},[n("span",{class:"icon-[lucide--calendar]"}),n("input",{...e,type:"text",class:"grow",value:s,readonly:!0,placeholder:e.placeholder||(a()?"Seleccionar rango...":"Seleccionar fecha...")})]),p(t,()=>n("div",{class:"absolute left-0 mt-2 z-[100]",onclick:(l)=>l.stopPropagation()},[oe({value:e.value,range:a(),hour:e.hour,onChange:c})])),p(t,()=>n("div",{class:"fixed inset-0 z-[90]",onclick:()=>t(!1)}))])};var ge={};m(ge,{Sidebar:()=>Wt,Drawer:()=>Kt});var Kt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`drawer ${e.class??""}`},t)},Wt=(e)=>{let t=e.id||`drawer-${Math.random().toString(36).slice(2,9)}`;return n("div",{...e,class:`drawer ${e.class??""}`},[n("input",{id:t,type:"checkbox",class:"drawer-toggle",checked:()=>typeof e.open==="function"?e.open():e.open,onchange:(a)=>typeof e.open==="function"&&e.open(a.target.checked)}),n("div",{class:"drawer-content"},e.children),n("div",{class:"drawer-side"},[n("label",{for:t,class:"drawer-overlay",onclick:()=>typeof e.open==="function"&&e.open(!1)}),n("div",{class:"min-h-full bg-base-200 w-80 p-4"},typeof e.content==="function"?e.content():e.content)])])};var he={};m(he,{Dropdown:()=>Yt});var N=null;if(typeof window<"u"&&!window.__dropdownHandlerRegistered)window.addEventListener("click",(e)=>{if(N&&!N.contains(e.target))N.open=!1,N=null}),window.__dropdownHandlerRegistered=!0;var Yt=(e)=>n("details",{...e,class:`dropdown ${e.class??""}`,onclick:(t)=>{let a=t.currentTarget;if(N&&N!==a)N.open=!1;setTimeout(()=>{N=a.open?a:null},0)}},e.children);var be={};m(be,{Fab:()=>Jt});var Jt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`fab ${e.class??""}`},t)};var ye={};m(ye,{Fieldset:()=>Vt});var Vt=(e,t)=>n("fieldset",{...e,class:`fieldset ${e.class??""}`},[e.legend?n("legend",{class:"fieldset-legend"},e.legend):null,t]);var ve={};m(ve,{Fileinput:()=>Ut});var Ut=(e)=>{let t=h([]),a=h(!1),s=h(null),c=(e.max||2)*1024*1024,r=(o)=>{let i=Array.from(o);if(s(null),i.find((u)=>u.size>c)){s(`Máx ${e.max||2}MB`);return}t([...t(),...i]),e.onselect?.(t())},l=(o)=>{let i=t().filter((u,f)=>f!==o);t(i),e.onselect?.(i)};return n("div",{...e,class:`fieldset w-full p-0 ${e.class??""}`},[n("label",{class:()=>`relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${a()?"border-primary bg-primary/10":"border-base-content/20 bg-base-100 hover:bg-base-200"}`,ondragover:(o)=>{o.preventDefault(),a(!0)},ondragleave:()=>a(!1),ondrop:(o)=>{o.preventDefault(),a(!1),r(o.dataTransfer.files)}},[n("div",{class:"flex items-center gap-3 w-full"},[n("span",{class:"icon-[lucide--upload]"}),n("span",{class:"text-sm opacity-70 truncate grow text-left"},"Arrastra o selecciona archivos..."),n("span",{class:"text-[10px] opacity-40 shrink-0"},`Máx ${e.max||2}MB`)]),n("input",{type:"file",multiple:!0,accept:e.accept||"*",class:"hidden",onchange:(o)=>r(o.target.files)})]),()=>s()&&n("span",{class:"text-[10px] text-error mt-1 px-1 font-medium"},s()),p(()=>t().length>0,()=>n("ul",{class:"mt-2 space-y-1"},[$(t,(o,i)=>n("li",{class:"flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300"},[n("div",{class:"flex items-center gap-2 truncate"},[n("span",{class:"opacity-50"},"\uD83D\uDCC4"),n("span",{class:"truncate font-medium max-w-[200px]"},o.name),n("span",{class:"text-[9px] opacity-40"},`(${(o.size/1024).toFixed(0)} KB)`)]),n("button",{type:"button",class:"btn btn-ghost btn-xs btn-circle",onclick:(u)=>{u.preventDefault(),l(i)}},n("span",{class:"icon-[lucide--x]"}))]),(o)=>o.name+o.lastModified)]))])};var xe={};m(xe,{Icon:()=>Xt});var Xt=(e,t)=>{if(typeof e==="string"){if(e.includes("icon-")||e.startsWith("lucide-"))return n("span",{class:e},t);return n("span",{class:"icon"},e)}if(!e)return null;let{class:a,...s}=e;return n("span",{...s,class:a},t)};var we={};m(we,{Indicator:()=>Gt});var Gt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`indicator ${e.class??""}`},[e.value?n("span",{class:`indicator-item badge ${e.class??""}`},e.value):null,t])};var $e={};m($e,{Input:()=>Qt});var et=(e)=>typeof e==="function"?e():e;var tt=(...e)=>e.filter(Boolean).join(" ").trim();var nt=(e)=>typeof e==="function";var Qt=(e)=>{let{label:t,icon:a,float:s,placeholder:c,value:r,left:l,right:o,content:i,...u}=e,f=h(!1),g=h(!1),b=e.type==="password",v=()=>b?et(f)?"text":"password":e.type||"text";return n("div",{class:"input-container",onfocusin:()=>g(!0),onfocusout:(d)=>{if(!d.currentTarget.contains(d.relatedTarget))g(!1)}},[n("label",{class:"floating-label"},[s?n("span",{},t):null,n("label",{class:()=>tt("input",e.class)},[t&&!s?n("span",{class:"label"},t):null,l??null,n("input",{...u,type:v,class:"grow",placeholder:c||t||" ",value:r}),o??null,b?n("label",{class:"swap swap-rotate ml-2"},[n("input",{type:"checkbox",onchange:(d)=>f(d.target.checked)}),n("span",{class:"swap-on icon-[lucide--eye]"}),n("span",{class:"swap-off icon-[lucide--eye-off]"})]):null]),p(g,()=>M({duration:300,slide:!0},n("div",{class:"input-content",onmousedown:(d)=>d.preventDefault()},[nt(i)?i(g):i])))])])};var ke={};m(ke,{Kbd:()=>Zt});var Zt=(e,t)=>{return t===void 0&&(t=e,e={}),n("kbd",{...e,class:`kbd ${e.class??""}`},t)};var Se={};m(Se,{Loading:()=>Mt});var Mt=(e,t)=>{return t===void 0&&(t=e,e={}),n("span",{...e,class:`loading loading-spinner ${e.class??""}`},t)};var _e={};m(_e,{MenuItems:()=>at,Menu:()=>en});var en=(e,t)=>{return t===void 0&&(t=e,e={}),n("ul",{...e,class:`menu ${e.class??""}`},t)},at=(e)=>{let{items:t,keyFn:a=(r,l)=>r.id??l}=e;return $(typeof t==="function"?t:()=>t||[],(r)=>{if(r.children)return n("li",{},[n("details",{},[n("summary",{},r.label),n("ul",{},at({items:r.children}))])]);return n("li",{},n("a",{href:r.href,onclick:r.onclick?(l)=>{if(!r.href)l.preventDefault();r.onclick(l)}:null},r.label))},a)};var Ce={};m(Ce,{Modal:()=>tn});var tn=(e)=>{let t=null;_(()=>{let s=typeof e.open==="function"?e.open():e.open;if(!t)return;s?t.showModal():t.close()});let a=()=>typeof e.open==="function"&&e.open(!1);return n("dialog",{...e,ref:(s)=>t=s,class:`modal ${e.class??""}`,onclose:a,oncancel:a},[n("div",{class:"modal-box"},[e.title&&n("h3",{class:"text-lg font-bold"},e.title),e.children,n("div",{class:"modal-action"},[e.actions||n("button",{class:"btn",onclick:a},"Cerrar")])]),n("form",{method:"dialog",class:"modal-backdrop"},[n("button",{},"close")])])};var Te={};m(Te,{Navbar:()=>nn});var nn=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`navbar ${e.class??""}`},t)};var Ee={};m(Ee,{Radial:()=>an});var an=(e,t)=>{t===void 0&&(t=e,e={});let a=e.value!=null?e.value/(e.max||100)*100:0,s=`--value: ${a}; --max: 100;`;return n("div",{...e,class:`radial-progress ${e.class??""}`,style:s,role:"progressbar","aria-valuenow":e.value,"aria-valuemin":0,"aria-valuemax":e.max||100},t||`${Math.round(a)}%`)};var pe={};m(pe,{Radio:()=>sn});var sn=(e)=>n("input",{...e,type:"radio",class:`radio ${e.class??""}`});var De={};m(De,{Range:()=>ln});var ln=(e)=>n("input",{...e,type:"range",class:`range ${e.class??""}`});var Ae={};m(Ae,{Rating:()=>on});var on=(e,t)=>{t===void 0&&(t=e,e={});let a=`rating-${Math.random().toString(36).slice(2,7)}`;return n("div",{...e,class:`rating ${e.class??""}`},t||Array.from({length:e.count||5},(s,c)=>{let r=c+1;return n("input",{type:"radio",name:a,class:`mask ${e.mask||"mask-star"}`,checked:()=>typeof e.value==="function"?e.value()===r:e.value===r,onchange:()=>{if(e.onchange)e.onchange(r);else if(typeof e.value==="function")e.value(r)}})}))};var Ne={};m(Ne,{SkeletonText:()=>rn,Skeleton:()=>cn});var cn=(e)=>n("div",{...e,class:`skeleton ${e.class??""}`}),rn=(e)=>{return n("div",{...e,class:"space-y-2"},Array.from({length:e.lines||3},()=>n("div",{class:`skeleton h-4 w-full ${e.class??""}`})))};var Be={};m(Be,{SelectLabel:()=>dn,SelectItems:()=>fn,Select:()=>un});var un=(e,t)=>{return t===void 0&&(t=e,e={}),n("select",{...e,class:`select ${e.class??""}`},t)},fn=(e)=>{let t=e.placeholder?n("option",{disabled:e.placeholderDisabled??!0,selected:!0},e.placeholder):null,a=$(()=>[...typeof e.items==="function"?e.items():e.items||[]],(s)=>{let c=typeof s==="string"?s:s.value,r=typeof s==="string"?s:s.label;return n("option",{value:c},r)},e.keyFn||((s)=>typeof s==="string"?s:s.value));return t?[t,a]:a},dn=(e,t)=>n("label",{class:`${e.float?"floating-label":"select"}`},[n("span",{class:e.float?"":"label opacity-50"},e.label),e.left??null,n("select",{...e,class:`${e.float?"select":""} ${e.class??""}`},t),e.right??null]);var Re={};m(Re,{Stack:()=>mn});var mn=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`stack ${e.class??""}`},t)};var P={};m(P,{Stats:()=>gn,Stat:()=>hn});var gn=(e,t)=>{t===void 0&&(t=e,e={});let a=e.vertical?"stats-vertical":"stats-horizontal";return n("div",{...e,class:`stats ${a} ${e.class??""}`.trim()},t)},hn=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`stat ${e.class??""}`},[e.icon&&n("div",{class:"stat-figure"},e.icon),e.label&&n("div",{class:"stat-title"},e.label),e.value&&n("div",{class:"stat-value"},e.value),e.desc&&n("div",{class:"stat-desc"},e.desc),e.actions&&n("div",{class:"stat-actions"},e.actions),t])};var Fe={};m(Fe,{Swap:()=>bn});var bn=(e)=>{return n("label",{...e,class:`swap ${e.class??""}`},[n("input",{type:"checkbox",checked:()=>typeof e.value==="function"?e.value():e.value,onchange:(t)=>typeof e.value==="function"&&e.value(t.target.checked)}),n("div",{class:"swap-on"},e.on),n("div",{class:"swap-off"},e.off)])};var Ie={};m(Ie,{TableItems:()=>vn,Table:()=>yn});var yn=(e,t)=>{return t===void 0&&(t=e,e={}),n("table",{...e,class:`table ${e.class??""}`},t)},vn=(e)=>{let t=typeof e.items==="function"?e.items():e.items||[],a=e.header!==!1&&e.columns?.some((c)=>c.label)?n("thead",{},n("tr",{},e.columns.map((c)=>n("th",{class:c.class},c.label)))):null,s=n("tbody",{},[$(t,(c,r)=>n("tr",{},e.columns.map((l)=>{let o=l.render?l.render(c,r):c[l.key];return n("td",{class:l.class},o)})),e.keyFn||((c,r)=>c.id??r))]);return[a,s]};var Le={};m(Le,{Tabs:()=>xn,TabItems:()=>wn,TabContent:()=>lt,TabClose:()=>ot,Tab:()=>st});var xn=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`tabs ${e.class??""}`},t)},st=(e,t)=>{return t===void 0&&(t=e,e={}),n("a",{...e,role:"tab",class:`tab ${e.class??""}`},t)},lt=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`tab-content ${e.class??""}`},t)},ot=(e)=>n("a",{...e,role:"tab",class:`tab ${e.class??""}`},[n("span",{class:"flex items-center"},[e.label,n("span",{class:"icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70",onclick:(t)=>{t.stopPropagation(),e.onClose?.(t)}})])]),wn=(e)=>{let t=typeof e.items==="function"?e.items:()=>e.items||[];return $(t,(a,s)=>{return[(a.closable?ot:st)({...a,class:()=>e.activeIndex()===s?`tab-active ${a.class??""}`:a.class,onclick:(r)=>{r.preventDefault(),e.activeIndex(s),a.onclick?.(r)},onClose:()=>e.onClose?.(s,a)}),lt({style:()=>`display: ${e.activeIndex()===s?"block":"none"};`},typeof a.content==="function"?a.content():a.content)]},(a,s)=>a.id??s)};var ze={};m(ze,{Textarea:()=>$n});var $n=(e)=>n("textarea",{...e,class:`textarea ${e.class??""}`});var He={};m(He,{TextRotate:()=>kn});var kn=(e)=>{let t=Array.isArray(e.words)?e.words:typeof e.words==="string"?e.words.split(","):[];return n("span",{...e,class:`text-rotate ${e.class??""}`},[n("span",{},t.map((a)=>n("span",{},a)))])};var je={};m(je,{Timeline:()=>Sn});var Sn=(e,t)=>{t===void 0&&(t=e,e={});let a=e.vertical!==!1,s=e.compact===!0;return n("ul",{...e,class:`timeline ${a?"timeline-vertical":"timeline-horizontal"} ${s?"timeline-compact":""} ${e.class??""}`.trim()},t)};var Pe={};m(Pe,{Toast:()=>_n});var _n=(e,t="alert-success",a=3500)=>{let s=document.getElementById("sigpro-toast-container");if(!s)s=n("div",{id:"sigpro-toast-container",class:"fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none"}),document.body.appendChild(s);let c=n("div",{style:"display: contents"});s.appendChild(c);let r,l=()=>{clearTimeout(r);let u=c.firstElementChild;if(u&&!u.classList.contains("opacity-0"))u.classList.add("translate-x-full","opacity-0"),setTimeout(()=>{if(i.destroy(),c.remove(),!s.hasChildNodes())s.remove()},300);else i.destroy(),c.remove()},i=ee(()=>{let u=n("span",{class:"icon-[lucide--x]"}),f=n("button",{class:"btn btn-xs btn-circle btn-ghost",onclick:l},u),g=n("div",{class:`alert alert-soft ${t} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`},[n("span",{},typeof e==="function"?e():e),f]);return requestAnimationFrame(()=>g.classList.remove("translate-x-10","opacity-0")),g},c);if(a>0)r=setTimeout(l,a);return l};var Oe={};m(Oe,{Tooltip:()=>Cn});var Cn=(e,t)=>{return t===void 0&&(t=e,e={}),n("div",{...e,class:`tooltip ${e.class??""}`,"data-tip":e.tip},t)};var Tn={es:{close:"Cerrar",confirm:"Confirmar",cancel:"Cancelar",search:"Buscar...",loading:"Cargando...",nodata:"Sin datos"},en:{close:"Close",confirm:"Confirm",cancel:"Cancel",search:"Search...",loading:"Loading...",nodata:"No data"}},ct=h("es"),rt=(e)=>ct(e),it=(e)=>()=>Tn[ct()][e]||e;var ut={...te,...ne,...ae,...se,...le,...ce,...re,...ie,...ue,...fe,...de,...me,...ge,...he,...be,...ye,...ve,...xe,...we,...$e,...ke,...Se,..._e,...Ce,...Te,...Ee,...pe,...De,...Ae,...Ne,...Be,...Re,...P,...P,...Fe,...Ie,...Le,...ze,...He,...je,...Pe,...Oe},ft={Locale:rt,tt:it};if(typeof window<"u")Object.entries({...ut,...ft}).forEach(([e,t])=>{Object.defineProperty(window,e,{value:t,writable:!1,configurable:!0,enumerable:!0})}),console.log("SigProUI installed");})(); +(()=>{var{defineProperty:F,getOwnPropertyNames:An,getOwnPropertyDescriptor:jn}=Object,Wn=Object.prototype.hasOwnProperty;function mn(n){return this[n]}var zn=(n)=>{var r=(sn??=new WeakMap).get(n),e;if(r)return r;if(r=F({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function"){for(var s of An(n))if(!Wn.call(r,s))F(r,s,{get:mn.bind(n,s),enumerable:!(e=jn(n,s))||e.enumerable})}return sn.set(n,r),r},sn;var Jn=(n)=>n;function Pn(n,r){this[n]=Jn.bind(null,r)}var M=(n,r)=>{for(var e in r)F(n,e,{get:r[e],enumerable:!0,configurable:!0,set:Pn.bind(r,e)})};var Bt={};M(Bt,{Utils:()=>Cn,Components:()=>xn});var on={};M(on,{listKey:()=>yn,isFn:()=>S,getBy:()=>j,get:()=>N,filterBy:()=>_n,cls:()=>c,Tooltip:()=>xt,Toggle:()=>kt,Toast:()=>Rt,Timeline:()=>St,Textarea:()=>gt,TextRotate:()=>Nt,Tabs:()=>Tt,Table:()=>Lt,Swap:()=>dt,Steps:()=>wt,Step:()=>Et,Stack:()=>yt,SkeletonText:()=>_t,Skeleton:()=>ct,Select:()=>Wt,Rating:()=>$t,Range:()=>it,Radio:()=>bt,Radial:()=>ut,Progress:()=>ft,Navbar:()=>at,Modal:()=>Ut,Menu:()=>En,Loading:()=>st,Kbd:()=>lt,Input:()=>dn,Indicator:()=>et,Icon:()=>ot,Fileinput:()=>Pt,Fieldset:()=>rt,Fab:()=>tt,Dropdown:()=>jt,Drawer:()=>At,Divider:()=>nt,Datepicker:()=>Jt,Colorpicker:()=>zt,Checkbox:()=>pn,ChatImage:()=>hn,ChatHeader:()=>Mn,ChatFooter:()=>Fn,ChatBubble:()=>vn,Chat:()=>Dn,CarouselItem:()=>Hn,Carousel:()=>On,CardTitle:()=>Yn,CardBody:()=>In,CardActions:()=>Vn,Card:()=>Zn,Calendar:()=>gn,Button:()=>wn,Badge:()=>Xn,Autocomplete:()=>mt,Alert:()=>Gn,Accordion:()=>Ct});var A=(n)=>typeof n==="function",nn=(n)=>n&&typeof n==="object",q=Array.isArray,W=typeof document<"u"?document:null,an=(n)=>n?._isRuntime?n.container:n instanceof Node?n:W.createTextNode(n==null?"":String(n)),k=null,L=null,G=!1,Z=0,Y=new Set,fn=new WeakMap,h=Symbol("iter"),p=new WeakMap,R=(n)=>{if(!n||n._disposed)return;n._disposed=!0;let r=[n];while(r.length){let e=r.pop();if(e._cleanups)e._cleanups.forEach((s)=>s()),e._cleanups.clear();if(e._children)e._children.forEach((s)=>r.push(s)),e._children.clear();if(e._deps)e._deps.forEach((s)=>s.delete(e)),e._deps.clear()}},Q=(n)=>{if(L)(L._cleanups||=new Set).add(n)},Rn=(n)=>{let r=k;k=null;try{return n()}finally{k=r}},X=(n,r=!1)=>{let e=()=>{if(e._disposed)return;if(e._deps)e._deps.forEach((l)=>l.delete(e));if(e._cleanups)e._cleanups.forEach((l)=>l()),e._cleanups.clear();let s=k,f=L;k=L=e;try{return e._result=n()}catch(l){console.error("[SigPro]",l)}finally{k=s,L=f}};if(e._deps=e._cleanups=e._children=null,e._disposed=!1,e._isComputed=r,e._depth=k?k._depth+1:0,e._mounts=[],e._parent=L,L)(L._children||=new Set).add(e);return e},bn=()=>{if(G)return;G=!0;let n=Array.from(Y).sort((r,e)=>r._depth-e._depth);Y.clear();for(let r of n)if(!r._disposed)r();G=!1},Un=(n)=>{Z++;try{return n()}finally{if(Z--,Z===0&&Y.size>0&&!G)bn()}},$=(n,r=!1)=>{if(!r&&k&&!k._disposed)n.add(k),(k._deps||=new Set).add(n);else if(r&&n.size>0){let e=!1;for(let s of n){if(s===k||s._disposed)continue;if(s._isComputed){if(s._dirty=!0,s._subs)$(s._subs,!0)}else Y.add(s),e=!0}if(e&&!G&&Z===0)queueMicrotask(bn)}},d=(n,r=null)=>{let e=new Set;if(A(n)){let s,f=()=>{if(f._dirty){let l=k;k=f;try{let o=n();if(!Object.is(s,o))s=o,$(e,!0)}finally{k=l}f._dirty=!1}return $(e),s};if(f._isComputed=!0,f._subs=e,f._dirty=!0,f._deps=null,f._disposed=!1,f.stop=()=>{},L)Q(f.stop);return f}if(r)try{n=JSON.parse(localStorage.getItem(r))??n}catch(s){}return(...s)=>{if(s.length){let f=A(s[0])?s[0](n):s[0];if(!Object.is(n,f)){if(n=f,r)localStorage.setItem(r,JSON.stringify(n));$(e,!0)}}return $(e),n}},cn=(n)=>{if(!nn(n))return n;let r=fn.get(n);if(r)return r;let e=new Map,s=(l)=>{let o=e.get(l);if(!o)e.set(l,o=new Set);return o},f=new Proxy(n,{get(l,o,a){if(typeof o!=="symbol")$(s(o));return cn(Reflect.get(l,o,a))},set(l,o,a,u){let i=Reflect.has(l,o),b=Reflect.get(l,o,u),_=Reflect.set(l,o,a,u);if(_&&!Object.is(b,a)){if($(s(o),!0),!i)$(s(h),!0)}return _},deleteProperty(l,o){let a=Reflect.deleteProperty(l,o);if(a)$(s(o),!0),$(s(h),!0);return a},ownKeys(l){return $(s(h)),Reflect.ownKeys(l)}});return fn.set(n,f),f},J=(n,r)=>{if(r===void 0){let s=X(n);return s(),()=>R(s)}let e=X(()=>{let s=Array.isArray(n)?n.map((f)=>f()):n();Rn(()=>r(s))});return e(),()=>R(e)},tn=(n)=>{if(!n)return;if(n._cleanups)n._cleanups.forEach((r)=>r()),n._cleanups.clear();if(n._ownerEffect)R(n._ownerEffect);if(n.childNodes)n.childNodes.forEach((r)=>tn(r))},qn=/^\s*(javascript|data|vbscript):/i,Qn=(n)=>n==="src"||n==="href"||n.startsWith("on"),un=(n,r)=>{if(r==null||r===!1)return null;if(Qn(n)){let e=String(r);if(qn.test(e))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${n}`),"#"}return r},t=(n,r={},e=[])=>{if(r instanceof Node||q(r)||!nn(r))e=r,r={};if(A(n)){let o=X(()=>{let b=n(r,{children:e,emit:(_,...w)=>r[`on${_[0].toUpperCase()}${_.slice(1)}`]?.(...w)});return o._result=b,b});o();let a=o._result;if(a==null)return null;let u=a instanceof Node||q(a)&&a.every((b)=>b instanceof Node)?a:W.createTextNode(String(a)),i=(b)=>{if(nn(b)&&!b._isRuntime)b._mounts=o._mounts||[],b._cleanups=o._cleanups||new Set,b._ownerEffect=o};return q(u)?u.forEach(i):i(u),u}let s=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(n),f=s?W.createElementNS("http://www.w3.org/2000/svg",n):W.createElement(n);f._cleanups=new Set;for(let o in r){if(!r.hasOwnProperty(o))continue;let a=r[o];if(o==="ref"){A(a)?a(f):a.current=f;continue}if(s&&o.startsWith("xlink:")){a==null?f.removeAttributeNS("http://www.w3.org/1999/xlink",o.slice(6)):f.setAttributeNS("http://www.w3.org/1999/xlink",o.slice(6),a);continue}if(o.startsWith("on")){let u=o.slice(2).toLowerCase();f.addEventListener(u,a);let i=()=>f.removeEventListener(u,a);f._cleanups.add(i),Q(i)}else if(A(a)){let u=X(()=>{let i=un(o,a());if(o==="class")f.className=i||"";else if(i==null)f.removeAttribute(o);else if(o in f&&!s)f[o]=i;else f.setAttribute(o,i===!0?"":i)});if(u(),f._cleanups.add(()=>R(u)),Q(()=>R(u)),/^(INPUT|TEXTAREA|SELECT)$/.test(f.tagName)&&(o==="value"||o==="checked")){let i=o==="checked"?"change":"input";f.addEventListener(i,(b)=>a(b.target[o]))}}else{let u=un(o,a);if(u!=null)if(o in f&&!s)f[o]=u;else f.setAttribute(o,u===!0?"":u)}}let l=(o)=>{if(q(o))return o.forEach(l);if(A(o)){let a=W.createTextNode("");f.appendChild(a);let u=[],i=X(()=>{let b=o(),_=(q(b)?b:[b]).map(an);u.forEach((E)=>{if(E._isRuntime)E.destroy();else tn(E);if(E.parentNode)E.remove()});let w=a;for(let E=_.length-1;E>=0;E--){let y=_[E];if(y.parentNode!==w.parentNode)w.parentNode?.insertBefore(y,w);if(y._mounts)y._mounts.forEach((g)=>g());w=y}u=_});i(),f._cleanups.add(()=>R(i)),Q(()=>R(i))}else{let a=an(o);if(f.appendChild(a),a._mounts)a._mounts.forEach((u)=>u())}};return l(e),f},I=(n)=>{let r=new Set,e=L,s=k,f=W.createElement("div");f.style.display="contents",f.setAttribute("role","presentation"),L={_cleanups:r},k=null;let l=(o)=>{if(!o)return;if(o._isRuntime)r.add(o.destroy),f.appendChild(o.container);else if(q(o))o.forEach(l);else f.appendChild(o instanceof Node?o:W.createTextNode(String(o==null?"":o)))};try{l(n({onCleanup:(o)=>r.add(o)}))}finally{L=e,k=s}return{_isRuntime:!0,container:f,destroy:()=>{r.forEach((o)=>o()),tn(f),f.remove()}}},U=(n,r,e=null)=>{let s=W.createTextNode(""),f=t("div",{style:"display:contents"},[s]),l=null;return J(()=>!!(A(n)?n():n),(o)=>{if(l)l.destroy(),l=null;let a=o?r:e;if(a)l=I(()=>A(a)?a():a),f.insertBefore(l.container,s)}),Q(()=>l?.destroy()),f},V=({name:n,duration:r=200,scale:e,slide:s,rotate:f,blur:l},o)=>{let a=typeof o==="function"?o():o;if(!(a instanceof Node))return a;if(n)return a.style.animation=`${n}-in ${r}ms`,a;let u=e||s||f||l,i=[e?"scale(0.95)":"",s?"translateY(-10px)":"",f?"rotate(-2deg)":""].filter(Boolean).join(" ");if(a.style.transition=`all ${r}ms ease`,a.style.opacity="0",u)a.style.transform=i;if(l)a.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(a.style.opacity="1",u)a.style.transform="none";if(l)a.style.filter="none"}),a},m=(n,r,e)=>{let s=W.createTextNode(""),f=t("div",{style:"display:contents"},[s]),l=new Map;return J(()=>(A(n)?n():n)||[],(o)=>{let a=new Map,u=[],i=o||[];for(let _=0;_r(w,_));else l.delete(E);a.set(E,y),u.push(y)}l.forEach((_)=>_.destroy());let b=s;for(let _=u.length-1;_>=0;_--){let w=u[_].container;if(w.nextSibling!==b)f.insertBefore(w,b);b=w}l=a}),f},B=(n)=>{let r=()=>window.location.hash.slice(1)||"/",e=d(r()),s=()=>e(r());window.addEventListener("hashchange",s),Q(()=>window.removeEventListener("hashchange",s));let f=t("div",{class:"router-hook"}),l=null;return J([e],()=>{let o=e(),a=n.find((u)=>{let i=u.path.split("/").filter(Boolean),b=o.split("/").filter(Boolean);return i.length===b.length&&i.every((_,w)=>_[0]===":"||_===b[w])})||n.find((u)=>u.path==="*");if(a){l?.destroy();let u={};a.path.split("/").filter(Boolean).forEach((i,b)=>{if(i[0]===":")u[i.slice(1)]=o.split("/").filter(Boolean)[b]}),B.params(u),l=I(()=>A(a.component)?a.component(u):a.component),f.replaceChildren(l.container)}}),f};B.params=d({});B.to=(n)=>window.location.hash=n.replace(/^#?\/?/,"#/");B.back=()=>window.history.back();B.path=()=>window.location.hash.replace(/^#/,"")||"/";var Bn=({url:n,method:r="GET",headers:e={}})=>{let s=d(!1),f=d(null),l=d(null),o=null,a=null;return{run:async(u=null)=>{o?.abort(),clearTimeout(a),o=new AbortController,a=setTimeout(()=>o.abort(),1e4),s(!0),f(null);try{let i=u instanceof FormData,b=await fetch(n,{method:r,headers:i?e:{"Content-Type":"application/json",...e},body:i?u:u?JSON.stringify(u):void 0,signal:o.signal}),_=await b.text(),w=_?JSON.parse(_):null;if(!b.ok)throw Error(w?.message||b.statusText);return l(w),w}catch(i){if(i.name!=="AbortError")f(i.message);throw i}finally{s(!1),clearTimeout(a),o=null,a=null}},abort:()=>o?.abort(),loading:s,error:f,data:l}},rn=(n,r)=>{let e=typeof r==="string"?W.querySelector(r):r;if(!e)return;if(p.has(e))p.get(e).destroy();let s=I(A(n)?n:()=>n);return e.replaceChildren(s.container),p.set(e,s),s},Kn=Object.freeze({$:d,$$:cn,watch:J,h:t,when:U,each:m,fx:V,router:B,req:Bn,mount:rn,batch:Un});if(typeof window<"u")Object.assign(window,Kn),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((n)=>{window[n]=(r,e)=>t(n,r,e)});var N=(n)=>typeof n==="function"?n():n,j=(n,r="label")=>n&&typeof n==="object"?n[r]:n,c=(...n)=>n.filter(Boolean).join(" ").trim(),S=(n)=>typeof n==="function",_n=(n,r,e="label")=>{let s=String(r).toLowerCase(),f=N(n);return!s?f:f.filter((l)=>{let o=l&&typeof l==="object"?l[e]:l;return String(o).toLowerCase().includes(s)})},yn=(n,r)=>{let e=d(-1);return J(()=>{if(!N(r))e(-1)}),{cursor:e,onKey:(f,l)=>{let o=N(n),a=e(),u=o.length;if(!u)return;let i=f.key;i==="ArrowDown"?(f.preventDefault(),r(!0),e(Math.min(a+1,u-1))):i==="ArrowUp"?(f.preventDefault(),e(Math.max(a-1,0))):i==="Enter"?a>=0&&(f.preventDefault(),l(o[a])):i==="Escape"&&r(!1)}}},Gn=(n,r)=>t("div",{...n,class:c("alert",n.class)},r),Xn=(n,r)=>t("span",{...n,class:c("badge",n.class)},r),wn=(n,r)=>t("button",{...n,class:c("btn",n.class)},r),Zn=(n,r)=>t("div",{...n,class:c("card",n.class)},r),Yn=(n,r)=>t("div",{...n,class:c("card-title",n.class)},r),In=(n,r)=>t("div",{...n,class:c("card-body",n.class)},r),Vn=(n,r)=>t("div",{...n,class:c("card-actions",n.class)},r),On=(n,r)=>t("div",{...n,class:c("carousel",n.class)},r),Hn=(n,r)=>t("div",{...n,class:c("carousel-item",n.class)},r),Dn=(n,r)=>t("div",{...n,class:c("chat",n.class)},r),vn=(n,r)=>t("div",{...n,class:c("chat-bubble",n.class)},r),Fn=(n,r)=>t("div",{...n,class:c("chat-footer",n.class)},r),Mn=(n,r)=>t("div",{...n,class:c("chat-header",n.class)},r),hn=(n,r)=>t("div",{...n,class:c("chat-image avatar",n.class)},t("div",{class:"w-10 rounded-full"},typeof r==="string"?t("img",{src:r,alt:"avatar"}):r)),pn=(n)=>t("input",{...n,type:"checkbox",class:c("checkbox",n.class)}),nt=(n)=>t("div",{...n,class:c("divider",n.class)}),tt=(n,r)=>t("div",{...n,class:c("fab",n.class)},r),rt=(n,r)=>t("fieldset",{...n,class:c("fieldset",n.class)},[n.legend&&t("legend",{class:"fieldset-legend"},n.legend),r]),ot=(n)=>t("span",{class:n.startsWith("icon-")?n:""},n.startsWith("icon-")?null:n),et=(n,r)=>t("div",{...n,class:c("indicator",n.class)},[n.value&&t("span",{class:c("indicator-item badge",n.class)},n.value),r]),lt=(n,r)=>t("kbd",{...n,class:c("kbd",n.class)},r),st=(n,r)=>t("span",{...n,class:c("loading loading-spinner",n.class)},r),at=(n,r)=>t("div",{...n,class:c("navbar",n.class)},r),ft=(n)=>t("progress",{...n,class:c("progress",n.class)}),ut=(n,r)=>t("div",{...n,class:c("radial-progress",n.class),style:`--value:${n.value??0};${n.style??""}`,role:"progressbar","aria-valuenow":n.value??0},r??`${n.value??0}%`),bt=(n)=>t("input",{...n,type:"radio",class:c("radio",n.class)}),it=(n)=>t("input",{...n,type:"range",class:c("range",n.class)}),ct=(n)=>t("div",{...n,class:c("skeleton",n.class)}),_t=(n)=>t("span",{...n,class:c("skeleton skeleton-text",n.class)}),yt=(n,r)=>t("div",{...n,class:c("stack",n.class)},r),wt=(n,r)=>t("ul",{...n,class:c("steps",n.class)},r),Et=(n,r)=>t("li",{...n,class:c("step",n.class),"data-content":n.dataContent},r),dt=(n)=>t("label",{...n,class:c("swap",n.class)},[t("input",{type:"checkbox",checked:()=>N(n.value),onchange:(r)=>S(n.value)&&n.value(r.target.checked)}),t("div",{class:"swap-on"},n.on),t("div",{class:"swap-off"},n.off)]),gt=(n)=>t("textarea",{...n,class:c("textarea",n.class)}),Nt=(n)=>{let r=Array.isArray(n.words)?n.words:typeof n.words==="string"?n.words.split(","):[];return t("span",{...n,class:c("text-rotate",n.class)},t("span",{},r.map((e)=>t("span",{},e))))},St=(n,r)=>t("ul",{...n,class:c("timeline",n.vertical!==!1?"timeline-vertical":"timeline-horizontal",n.compact?"timeline-compact":"",n.class)},r),kt=(n)=>t("input",{...n,type:"checkbox",class:c("toggle",n.class)}),xt=(n,r)=>t("div",{...n,class:c("tooltip",n.class),"data-tip":n.tip},r),Ct=(n)=>{let r=n.name||`acc-${Math.random().toString(36).slice(2)}`,e=c("collapse",n.variant&&`collapse-${n.variant}`,n.class),s=(f)=>{let l=j(f,"title"),o=f.content;return n.type==="details"?t("details",{class:e,name:r,open:f.open||void 0},t("summary",{class:"collapse-title font-semibold"},l),o?t("div",{class:"collapse-content text-sm"},o):null):t("div",{class:e},t("input",{type:"radio",name:r,checked:f.open||void 0}),t("div",{class:"collapse-title font-semibold"},l),o?t("div",{class:"collapse-content text-sm"},o):null)};return S(n.items)?m(n.items,s,(f,l)=>f?.id??l):(n.items||[]).map(s)},Lt=(n)=>{if(n.children!==void 0)return t("table",{class:c("table",n.class),...n},n.children);let{items:r,columns:e=[],header:s=!0,keyFn:f,...l}=n,o=s!==!1&&e.some((u)=>u.label)?t("thead",{},t("tr",{},e.map((u)=>t("th",{class:u.class},u.label)))):null,a=t("tbody",{},m(()=>N(r)||[],(u,i)=>t("tr",{},e.map((b)=>{let _=b.render?b.render(u,i):u[b.key];return t("td",{class:b.class},_)})),f||((u,i)=>u?.id??i)));return t("table",{class:c("table",l.class),...l},[o,a])},Tt=(n)=>{if(n.children!==void 0)return t("div",{class:c("tabs",n.class),...n},n.children);let{items:r,activeIndex:e,onClose:s,...f}=n,l=s||(S(r)?(o)=>{let u=N(r).filter((i,b)=>b!==o);if(r(u),e()>=u.length)e(Math.max(0,u.length-1))}:null);return t("div",{class:c("tabs",n.class),...f},m(()=>N(r)||[],(o,a)=>{let u=()=>e()===a;return[t("a",{role:"tab",class:()=>`tab ${u()?"tab-active":""} ${o.class||""}`,onclick:(i)=>{i.preventDefault(),e(a),o.onclick?.(i)}},j(o),o.closable?t("span",{class:"icon-[lucide--x] w-3.5 h-3.5 ml-2 cursor-pointer hover:opacity-70",onclick:(i)=>{i.stopPropagation(),l?.(a)}}):null),t("div",{class:`tab-content ${o.contentClass||""}`,style:()=>`display: ${u()?"block":"none"};`},S(o.content)?o.content():o.content)]},(o,a)=>o.id??a))},$t=(n)=>{let r=`rating-${Math.random().toString(36).slice(2,7)}`,e=n.children??Array.from({length:n.count||5},(s,f)=>{let l=f+1;return t("input",{type:"radio",name:r,class:c("mask",n.mask||"mask-star"),checked:()=>N(n.value)===l,onchange:()=>S(n.value)?n.value(l):n.onchange?.(l)})});return t("div",{class:c("rating",n.class),...n},e)},En=(n)=>{if(n.children!==void 0)return t("ul",{class:c("menu",n.class),...n},n.children);let{items:r,keyFn:e=(l,o)=>l?.id??o,...s}=n,f=(l)=>l.children?t("li",{},t("details",{},t("summary",{},j(l)),t("ul",{},En({items:l.children})))):t("li",{},t("a",{href:l.href,onclick:l.onclick?(o)=>{if(!l.href)o.preventDefault();l.onclick(o)}:null},j(l)));return t("ul",{class:c("menu",s.class),...s},m(()=>N(r)||[],f,e))},At=(n,r)=>{let e=n.id||`drawer-${Math.random().toString(36).slice(2,9)}`;return t("div",{class:c("drawer",n.class)},[t("input",{id:e,type:"checkbox",class:"drawer-toggle",checked:()=>N(n.open),onchange:(s)=>S(n.open)&&n.open(s.target.checked)}),t("div",{class:"drawer-content"},r),t("div",{class:"drawer-side"},[t("label",{for:e,class:"drawer-overlay",onclick:()=>S(n.open)&&n.open(!1)}),t("div",{class:"min-h-full bg-base-200 w-80 p-4"},()=>N(n.side))])])},jt=(n,r)=>{let{trigger:e,items:s,...f}=n,l=r||(s?t("ul",{class:"menu dropdown-content bg-base-100 rounded-box z-[1] w-52 p-2 shadow"},m(()=>N(s)||[],(o)=>t("li",{},t("a",{onclick:(a)=>{o.onclick?.(a),a.currentTarget.closest("details").open=!1}},j(o))),(o,a)=>o.id??a)):null);return t("details",{class:c("dropdown",f.class),...f},[t("summary",{class:"btn m-1"},e||"Dropdown"),l])},Wt=(n,r)=>{if(r!==void 0)return t("select",{class:c("select",n.class),...n},r);let{label:e,float:s,placeholder:f,placeholderDisabled:l=!0,value:o,left:a,right:u,hint:i,items:b,keyFn:_,...w}=n,E=()=>{let y=N(b)||[];return[...f?[{disabled:l,label:f,value:""}]:[],...y]};return t("label",{class:s?"floating-label":""},[s&&t("span",{},e),t("label",{class:c("select",w.class)},[e&&!s&&t("span",{class:"label"},e),a??null,t("select",{value:()=>N(o),onchange:(y)=>S(o)?o(y.target.value):w.onchange?.(y)},m(E,(y)=>{let g=j(y,y.value!==void 0?"value":void 0),x=j(y,"label");return t("option",{value:g,disabled:y.disabled||void 0},x)},(y,g)=>y?.id??(typeof y==="string"?y:y.value)??g)),u??null]),i&&t("div",{class:"validator-hint"},i)])},mt=({items:n,value:r,onselect:e,placeholder:s="Buscar...",...f})=>{let l=d(N(r)||""),o=d(!1),a=d(()=>_n(n,l())),{cursor:u,onKey:i}=yn(a,o),b=(_)=>{let w=j(_),E=typeof _==="string"?_:_.value;if(l(w),S(r))r(E);e?.(_),o(!1)};return t("div",{class:"relative w-full"},[dn({...f,type:"text",placeholder:s,value:l,left:t("span",{class:"icon-[lucide--search]"}),oninput:(_)=>{if(l(_.target.value),S(r))r(_.target.value);o(!0)},onfocus:()=>o(!0),onblur:()=>setTimeout(()=>o(!1),150),onkeydown:(_)=>i(_,b)}),U(o,()=>V({duration:200,slide:!0},t("ul",{class:"absolute left-0 w-full menu bg-base-100 rounded-box mt-1 p-2 shadow-xl max-h-60 overflow-y-auto border border-base-300 z-50 flex-col flex-nowrap"},[m(a,(_,w)=>t("li",{},[t("a",{class:()=>u()===w?"active bg-primary text-primary-content":"",onmousedown:(E)=>E.preventDefault(),onclick:()=>b(_),onmouseenter:()=>u(w)},j(_))]),(_,w)=>j(_)+w),()=>a().length===0?t("li",{class:"p-4 opacity-50 text-center"},"Sin resultados"):null])))])},dn=(n)=>{let{label:r,icon:e,float:s,placeholder:f,value:l,left:o,right:a,rule:u,hint:i,content:b,..._}=n,w=d(!1),E=d(!1),y=n.type==="password",g=u??null,x=()=>y?N(w)?"text":"password":n.type||"text";return t("div",{class:"input-container",onfocusin:()=>E(!0),onfocusout:(C)=>{if(!C.currentTarget.contains(C.relatedTarget))E(!1)}},[t("label",{class:s?"floating-label":""},[s?t("span",{},r):null,t("label",{pattern:g,class:()=>c("input validator",n.class)},[r&&!s?t("span",{class:"label"},r):null,o??null,t("input",{..._,type:x,class:"grow",pattern:g,placeholder:f||r||" ",value:l}),a??null,y?t("label",{class:"swap swap-rotate ml-2"},[t("input",{type:"checkbox",onchange:(C)=>w(C.target.checked)}),t("span",{class:"swap-on icon-[lucide--eye]"}),t("span",{class:"swap-off icon-[lucide--eye-off]"})]):null]),i?t("div",{class:"validator-hint"},i):null,U(E,()=>V({duration:300,slide:!0},t("div",{class:"input-content",onmousedown:(C)=>C.preventDefault()},[S(b)?b(E):b])))])])},zt=(n)=>{let r=d(!1),e=()=>N(n.value)||"#000000",s=["#000","#1A1A1A","#333","#4D4D4D","#666","#808080","#B3B3B3","#FFF","#450a0a","#7f1d1d","#991b1b","#b91c1c","#dc2626","#ef4444","#f87171","#fca5a5","#431407","#7c2d12","#9a3412","#c2410c","#ea580c","#f97316","#fb923c","#ffedd5","#713f12","#a16207","#ca8a04","#eab308","#facc15","#fde047","#fef08a","#fff9c4","#064e3b","#065f46","#059669","#10b981","#34d399","#4ade80","#84cc16","#d9f99d","#082f49","#075985","#0284c7","#0ea5e9","#38bdf8","#7dd3fc","#22d3ee","#cffafe","#1e1b4b","#312e81","#4338ca","#4f46e5","#6366f1","#818cf8","#a5b4fc","#e0e7ff","#2e1065","#4c1d95","#6d28d9","#7c3aed","#8b5cf6","#a855f7","#d946ef","#fae8ff"],f=(l)=>{S(n.value)?n.value(l):n.onchange?.(l),r(!1)};return t("div",{class:c("relative w-fit",n.class)},[t("button",{type:"button",class:"btn px-3 bg-base-100 border-base-300 hover:border-primary/50 flex items-center gap-2 shadow-sm font-normal normal-case",onclick:(l)=>{l.stopPropagation(),r(!r())}},[t("div",{class:"size-5 rounded-sm shadow-inner border border-black/10 shrink-0",style:()=>`background-color: ${e()}`}),n.label&&t("span",{class:"opacity-80"},n.label)]),U(r,()=>[t("div",{class:"fixed inset-0 z-[100]",onclick:()=>r(!1)}),t("div",{class:"absolute left-0 mt-2 p-3 bg-base-100 border border-base-300 shadow-2xl rounded-box z-[110] w-64 select-none"},t("div",{class:"grid grid-cols-8 gap-1"},s.map((l)=>t("button",{type:"button",style:`background-color: ${l}`,class:()=>{return`size-6 rounded-sm cursor-pointer transition-all hover:scale-125 hover:z-10 active:scale-95 outline-none border border-black/5 p-0 min-h-0 ${e().toLowerCase()===l.toLowerCase()?"ring-2 ring-offset-1 ring-primary z-10 scale-110":""}`},onclick:()=>f(l)}))))])])},gn=(n)=>{let r=d(new Date),e=d(null),s=d(0),f=d(0),l=new Date,o=`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`,a=(y)=>`${y.getFullYear()}-${String(y.getMonth()+1).padStart(2,"0")}-${String(y.getDate()).padStart(2,"0")}`,u=()=>N(n.range)===!0,i=()=>N(n.value),b=(y)=>{let g=a(y),x=i();if(u())if(!x?.start||x.start&&x.end)n.onChange?.({start:g,end:null,...n.hour&&{startHour:s()}});else{let C=x.start,K=g{let g=r();r(new Date(g.getFullYear(),g.getMonth()+y,1))},w=(y)=>{let g=r();r(new Date(g.getFullYear()+y,g.getMonth(),1))},E=({value:y,onChange:g})=>t("div",{class:"flex-1"},[t("div",{class:"flex gap-2 items-center"},[t("input",{type:"range",min:0,max:23,value:y,class:"range range-xs flex-1",oninput:(x)=>g(+x.target.value)}),t("span",{class:"text-sm font-mono min-w-[48px] text-center"},()=>String(N(y)).padStart(2,"0")+":00")])]);return t("div",{class:c("p-4 bg-base-100 border border-base-300 shadow-2xl rounded-box w-80 select-none",n.class)},[t("div",{class:"flex justify-between items-center mb-4 gap-1"},[t("div",{class:"flex gap-0.5"},[t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>w(-1)},t("span",{class:"icon-[lucide--chevrons-left]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>_(-1)},t("span",{class:"icon-[lucide--chevron-left]"}))]),t("span",{class:"font-bold uppercase flex-1 text-center"},()=>r().toLocaleString("es-ES",{month:"short",year:"numeric"})),t("div",{class:"flex gap-0.5"},[t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>_(1)},t("span",{class:"icon-[lucide--chevron-right]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs px-1",onclick:()=>w(1)},t("span",{class:"icon-[lucide--chevrons-right]"}))])]),t("div",{class:"grid grid-cols-7 gap-1",onmouseleave:()=>e(null)},[...["L","M","X","J","V","S","D"].map((y)=>t("div",{class:"text-[10px] opacity-40 font-bold text-center"},y)),()=>{let y=r(),g=y.getFullYear(),x=y.getMonth(),C=new Date(g,x,1).getDay(),K=C===0?6:C-1,Ln=new Date(g,x+1,0).getDate(),O=[];for(let P=0;P{let z=i(),H=e(),Tn=typeof z==="string"?z.split("T")[0]===T:z?.start===T,$n=z?.end===T,D=!1;if(u()&&z?.start){let v=z.start;if(!z.end&&H)D=T>v&&T<=H||T=H;else if(z.end)D=T>v&&Tu()&&e(T),onclick:()=>b(ln)},P.toString()))}return O}]),n.hour?t("div",{class:"mt-3 pt-2 border-t border-base-300"},u()?t("div",{class:"flex gap-4"},[E({value:s,onChange:(y)=>s(y)}),E({value:f,onChange:(y)=>f(y)})]):E({value:s,onChange:(y)=>s(y)})):null])},Jt=(n)=>{let r=d(!1),e=d(""),s=()=>N(n.range)===!0;J(()=>{let l=N(n.value);if(!l)return e("");let o="";if(typeof l==="string")o=n.hour&&l.includes("T")?l.replace("T"," "):l;else if(l.start&&l.end){let a=n.hour&&l.startHour!=null?`${l.start} ${String(l.startHour).padStart(2,"0")}:00`:l.start,u=n.hour&&l.endHour!=null?`${l.end} ${String(l.endHour).padStart(2,"0")}:00`:l.end;o=`${a} - ${u}`}else if(l.start)o=`${n.hour&&l.startHour!=null?`${l.start} ${String(l.startHour).padStart(2,"0")}:00`:l.start}...`;e(o)});let f=(l)=>{if(S(n.value))n.value(l);else n.onChange?.(l);if(!s()||l?.end!=null)r(!1)};return t("div",{class:c("relative w-full",n.class)},[t("label",{class:"input input-bordered w-full",onclick:(l)=>{l.stopPropagation(),r(!r())}},[t("span",{class:"icon-[lucide--calendar]"}),t("input",{...n,type:"text",class:"grow",value:e,readonly:!0,placeholder:n.placeholder||(s()?"Seleccionar rango...":"Seleccionar fecha...")})]),U(r,()=>[t("div",{class:"fixed inset-0 z-[90]",onclick:()=>r(!1)}),t("div",{class:"absolute left-0 mt-2 z-[100]",onclick:(l)=>l.stopPropagation()},gn({value:n.value,range:s(),hour:n.hour,onChange:f}))])])},Pt=(n)=>{let r=d([]),e=d(!1),s=d(null),f=(n.max||2)*1024*1024,l=(a)=>{let u=Array.from(a);if(s(null),u.some((b)=>b.size>f)){s(`Máx ${n.max||2}MB`);return}let i=[...r(),...u];if(r(i),S(n.onselect))n.onselect(i);else if(S(n.value))n.value(i)},o=(a)=>{let u=r().filter((i,b)=>b!==a);if(r(u),S(n.onselect))n.onselect(u);else if(S(n.value))n.value(u)};return t("div",{class:c("fieldset w-full p-0",n.class)},[t("label",{class:()=>`relative flex items-center justify-between w-full h-12 px-4 border-2 border-dashed rounded-lg cursor-pointer transition-all duration-200 ${e()?"border-primary bg-primary/10":"border-base-content/20 bg-base-100 hover:bg-base-200"}`,ondragover:(a)=>{a.preventDefault(),e(!0)},ondragleave:()=>e(!1),ondrop:(a)=>{a.preventDefault(),e(!1),l(a.dataTransfer.files)}},[t("div",{class:"flex items-center gap-3 w-full"},[t("span",{class:"icon-[lucide--upload]"}),t("span",{class:"text-sm opacity-70 truncate grow text-left"},"Arrastra o selecciona archivos..."),t("span",{class:"text-[10px] opacity-40 shrink-0"},`Máx ${n.max||2}MB`)]),t("input",{type:"file",multiple:!0,accept:n.accept||"*",class:"hidden",onchange:(a)=>l(a.target.files)})]),()=>s()&&t("span",{class:"text-[10px] text-error mt-1 px-1 font-medium"},s()),U(()=>r().length>0,()=>t("ul",{class:"mt-2 space-y-1"},m(r,(a,u)=>t("li",{class:"flex items-center justify-between p-1.5 pl-3 text-xs bg-base-200/50 rounded-md border border-base-300"},[t("div",{class:"flex items-center gap-2 truncate"},[t("span",{class:"opacity-50"},"\uD83D\uDCC4"),t("span",{class:"truncate font-medium max-w-[200px]"},a.name),t("span",{class:"text-[9px] opacity-40"},`(${(a.size/1024).toFixed(0)} KB)`)]),t("button",{type:"button",class:"btn btn-ghost btn-xs btn-circle",onclick:(i)=>{i.preventDefault(),o(u)}},t("span",{class:"icon-[lucide--x]"}))]),(a)=>a.name+a.lastModified)))])},Rt=(n,r="alert-success",e=3500)=>{let s=document.getElementById("sigpro-toast-container");if(!s)s=t("div",{id:"sigpro-toast-container",class:"fixed top-0 right-0 z-[9999] p-4 flex flex-col gap-2 pointer-events-none"}),document.body.appendChild(s);let f=t("div",{style:"display: contents"});s.appendChild(f);let l,o,a,i=rn(()=>{let b=d(!1),_=d(!1);l=()=>{if(_())return;clearTimeout(o),clearTimeout(a),_(!0),setTimeout(()=>{if(i.destroy(),f.remove(),!s.hasChildNodes())s.remove()},300)},a=setTimeout(()=>b(!0),0);let w=typeof n==="function"?N(n):n,E=typeof w==="string"?t("span",{},w):w;return t("div",{class:()=>{if(_())return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-full opacity-0 pointer-events-auto`;if(b())return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-0 opacity-100 pointer-events-auto`;return`alert alert-soft ${r} shadow-lg transition-all duration-300 translate-x-10 opacity-0 pointer-events-auto`}},[E,t("button",{class:"btn btn-xs btn-circle btn-ghost",onclick:l},t("span",{class:"icon-[lucide--x]"}))])},f);if(e>0)o=setTimeout(l,e);return l},Ut=(n)=>{let r=null;J(()=>{let s=N(n.open);if(!r)return;s?r.showModal():r.close()});let e=()=>S(n.open)&&n.open(!1);return t("dialog",{...n,ref:(s)=>r=s,class:c("modal",n.class),onclose:e,oncancel:e},[t("div",{class:"modal-box"},[n.title&&t("h3",{class:"text-lg font-bold"},n.title),n.children,t("div",{class:"modal-action"},[n.actions||wn({class:"btn",onclick:e},"Cerrar")])]),t("form",{method:"dialog",class:"modal-backdrop"},[t("button",{},"close")])])};var en={};M(en,{Editor:()=>qt});var qt=(n)=>{let{value:r,class:e}=n,s=null,f=d(!1),l=d(""),o=()=>{if(!s)return;let b=s.innerHTML;if(S(r))r(b);else n.onchange?.(b)},a=(b,_=null)=>{if(!s)return;s.focus(),document.execCommand(b,!1,_),o()},u=(b,_=null)=>{if(!s)return!1;try{if(b==="formatBlock"){let w=window.getSelection();if(!w.rangeCount)return!1;let E=w.getRangeAt(0).commonAncestorContainer;while(E&&E!==s){if(E.nodeType===1&&E.tagName===_)return!0;E=E.parentNode}return!1}return document.queryCommandState(b)}catch(w){return!1}},i=t("div",{class:"flex flex-wrap items-center gap-1 p-2 border-b border-base-300 bg-base-200"},[t("div",{class:"flex flex-wrap gap-1 flex-1"},[t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("bold")?"btn-active":""}`,onclick:()=>a("bold")},t("span",{class:"icon-[lucide--bold]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("italic")?"btn-active":""}`,onclick:()=>a("italic")},t("span",{class:"icon-[lucide--italic]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("underline")?"btn-active":""}`,onclick:()=>a("underline")},t("span",{class:"icon-[lucide--underline]"})),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("strikeThrough")?"btn-active":""}`,onclick:()=>a("strikeThrough")},t("span",{class:"icon-[lucide--strikethrough]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("insertUnorderedList")},t("span",{class:"icon-[lucide--list]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("insertOrderedList")},t("span",{class:"icon-[lucide--list-ordered]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${u("formatBlock","BLOCKQUOTE")?"btn-active":""}`,onclick:()=>a("formatBlock",u("formatBlock","BLOCKQUOTE")?"P":"BLOCKQUOTE")},t("span",{class:"icon-[lucide--quote]"})),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("select",{class:"select select-xs w-16",onchange:(b)=>a("fontSize",b.target.value),value:"3"},[t("option",{value:"1"},"1"),t("option",{value:"2"},"2"),t("option",{value:"3"},"3"),t("option",{value:"4"},"4"),t("option",{value:"5"},"5"),t("option",{value:"6"},"6"),t("option",{value:"7"},"7")]),t("span",{class:"w-px h-5 bg-base-300 mx-1"}),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("undo")},t("span",{class:"icon-[lucide--undo-2]"})),t("button",{type:"button",class:"btn btn-ghost btn-xs",onclick:()=>a("redo")},t("span",{class:"icon-[lucide--redo-2]"}))]),t("div",{class:"flex"},[t("button",{type:"button",class:()=>`btn btn-ghost btn-xs ${f()?"btn-active":""}`,onclick:()=>{let b=f();if(!b)l(s?.innerHTML||"");else if(s)s.innerHTML=l(),o();f(!b)}},t("span",{class:"icon-[lucide--code-2]"}))])]);return t("div",{class:c("border border-base-300 rounded-box bg-base-100 overflow-hidden",e)},[i,t("div",{class:"relative"},[t("div",{ref:(b)=>{if(!s&&b)s=b,b.innerHTML=N(r)||""},style:()=>`min-height:10rem;${f()?"display:none":""}`,class:"p-3 outline-none text-base-content [&_ul]:list-disc [&_ul]:pl-6 [&_ol]:list-decimal [&_ol]:pl-6 [&_li]:list-item [&_p]:m-0 [&_div]:m-0 [&_br]:content-[''] [&_br]:block [&_br]:h-[1em]",contenteditable:"true",oninput:o,onpaste:()=>setTimeout(o,0)}),t("textarea",{class:"w-full min-h-[10rem] p-3 outline-none font-mono text-sm bg-base-200 border-0",style:()=>f()?"":"display:none",value:l,oninput:(b)=>l(b.target.value)})])])};var Qt={es:{close:"Cerrar",confirm:"Confirmar",cancel:"Cancelar",search:"Buscar...",loading:"Cargando...",nodata:"Sin datos"},en:{close:"Close",confirm:"Confirm",cancel:"Cancel",search:"Search...",loading:"Loading...",nodata:"No data"}},Nn=d("es"),Sn=(n)=>Nn(n),kn=(n)=>()=>Qt[Nn()][n]||n;var xn={...on,...en},Cn={Locale:Sn,tt:kn};if(typeof window<"u")Object.entries({...xn,...Cn}).forEach(([n,r])=>{Object.defineProperty(window,n,{value:r,writable:!1,configurable:!0,enumerable:!0})}),console.log("SigProUI installed");})(); diff --git a/docs/_sidebar.md b/docs/_sidebar.md index a4177ab..3343b48 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -5,41 +5,8 @@ * **Introduction** * [Installation](install.md) * [Quick Reference](quick.md) - -* **Forms & Inputs** - * [Autocomplete](components/autocomplete.md) - * [Button](components/button.md) - * [Checkbox](components/checkbox.md) - * [Colorpicker](components/colorpicker.md) - * [Datepicker](components/datepicker.md) - * [Input](components/input.md) - * [Radio](components/radio.md) - * [Range](components/range.md) - * [Rating](components/rating.md) - * [Select](components/select.md) - * [Swap](components/swap.md) - -* **Data Display** - * [Badge](components/badge.md) - * [Indicator](components/indicator.md) - * [List](components/list.md) - * [Stack](components/stack.md) - * [Stat](components/stat.md) - * [Table](components/table.md) - * [Timeline](components/timeline.md) - -* **Feedback & Overlays** - * [Alert](components/alert.md) - * [Modal](components/modal.md) - * [Toast](components/toast.md) - * [Tooltip](components/tooltip.md) - -* **Navigation & Layout** - * [Accordion](components/accordion.md) - * [Drawer](components/drawer.md) - * [Dropdown](components/dropdown.md) - * [Fab](components/fab.md) - * [Fieldset](components/fieldset.md) - * [Menu](components/menu.md) - * [Navbar](components/navbar.md) - * [Tabs](components/tabs.md) \ No newline at end of file + * [Forms & Inputs](demo_forms.md) + * [Data & Dysplay](demo_display.md) + * [Feedback & Overlays](demo_overlay.md) + * [Navigation & Layout](demo_layout.md) + * [WYSIWYG Editor](demo_editor.md) \ No newline at end of file diff --git a/docs/components/autocomplete.md b/docs/components/autocomplete.md index 4284df9..92e058e 100644 --- a/docs/components/autocomplete.md +++ b/docs/components/autocomplete.md @@ -8,51 +8,108 @@ ```js -const paises = [ - "España", - "México", - "Argentina", - "Colombia", - "Chile", - "Perú", - "Venezuela", - { label: "Estados Unidos", value: "US" }, - { label: "Canadá", value: "CA" }, - { label: "Reino Unido", value: "UK" }, -]; +// const App = () => { +// const selected = $(''); +// const filterType = $('all'); + +// const allItems = { +// fruits: ['Apple', 'Banana', 'Orange', 'Mango'], +// vegetables: ['Carrot', 'Broccoli', 'Spinach', 'Potato'], +// all: ['Apple', 'Banana', 'Orange', 'Mango', 'Carrot', 'Broccoli', 'Spinach', 'Potato'] +// }; + +// return div({ class: 'flex flex-col gap-4 w-full' }, [ +// Select({ +// items: [ +// { value: 'all', label: 'All items' }, +// { value: 'fruits', label: 'Fruits' }, +// { value: 'vegetables', label: 'Vegetables' } +// ], +// value: filterType, +// onchange: (e) => filterType(e.target.value) +// }, +// ), +// Autocomplete({ +// items: () => allItems[filterType()], +// value: selected, +// onselect: (value) => selected(value) +// }) +// ]); +// }; + const App = () => { const password = $(""); + const selected = $(''); + + const countries = [ + 'España', 'México', 'Argentina', 'Colombia', 'Chile', + { label: 'Estados Unidos', value: 'US' }, + { label: 'Canadá', value: 'CA' }, + ]; // Lógica de validación sencilla const requirements = [ { label: "Mínimo 8 caracteres", check: () => password().length >= 8 }, { label: "Incluye un número", check: () => /\d/.test(password()) }, - { label: "Símbolo especial", check: () => /[^A-Za-z0-9]/.test(password()) } + { label: "Símbolo especial", check: () => /[^A-Za-z0-9]/.test(password()) }, ]; - + const paisSelected = $(""); return div({ class: "p-10 max-w-md" }, [ + Autocomplete({ + label: 'País', + float: true, + placeholder: 'Escribe para buscar...', + items: countries, + value: selected, + onselect: (item) => console.log('Seleccionado:', item), + }), + + h('p', { class: 'text-sm opacity-70' }, () => + `Valor actual: ${selected() || 'ninguno'}` + ), Input({ type: "password", value: password, - class: "input-warning", + rule: "[0-9]*", + hint: "Debes escribir numeros del 0 al 9", oninput: (e) => password(e.target.value), label: "Pass", float: true, left: span({ class: "icon-[lucide--lock] mr-2" }), // El contenido que se animará con fx() dentro del Input - content: div({ class: "mt-2 p-4 bg-base-200 rounded-lg shadow-xl border border-base-300" }, [ - span({ class: "text-xs font-bold uppercase opacity-50" }, "Seguridad:"), - ul({ class: "mt-2 space-y-1" }, - requirements.map(req => h('li', { - class: () => `flex items-center text-sm ${req.check() ? 'text-success' : 'text-error opacity-50'}` - }, [ - span({ class: () => `mr-2 ${req.check() ? 'icon-[lucide--check]' : 'icon-[lucide--x]'}` }), - req.label - ])) - ) - ]) - }) + content: div( + { + class: + "mt-2 p-4 bg-base-200 rounded-lg shadow-xl border border-base-300", + }, + [ + span( + { class: "text-xs font-bold uppercase opacity-50" }, + "Seguridad:", + ), + ul( + { class: "mt-2 space-y-1" }, + requirements.map((req) => + h( + "li", + { + class: () => + `flex items-center text-sm ${req.check() ? "text-success" : "text-error opacity-50"}`, + }, + [ + span({ + class: () => + `mr-2 ${req.check() ? "icon-[lucide--check]" : "icon-[lucide--x]"}`, + }), + req.label, + ], + ), + ), + ), + ], + ), + }), ]); }; diff --git a/docs/demo_display.md b/docs/demo_display.md new file mode 100644 index 0000000..82b9d5f --- /dev/null +++ b/docs/demo_display.md @@ -0,0 +1,100 @@ +# Display + +## Badge +
+ +```js +mount( + Badge({ class: 'badge-primary' }, 'New'), + '#demo-badge' +); +``` + +## Indicator +
+ +```js +mount( + Indicator({ value: '5' }, + Button({ class: 'btn btn-sm' }, 'Notifications') + ), + '#demo-indicator' +); +``` + +## Stack +
+ +```js +mount( + Stack({ class: 'w-32 h-20' }, [ + div({ class: 'bg-primary text-primary-content p-2' }, 'Top'), + div({ class: 'bg-secondary text-secondary-content p-2' }, 'Bottom') + ]), + '#demo-stack' +); +``` + +## Stat +
+ +```js +// Stat is a simple wrapper for the DaisyUI stat component +const Stat = (p, c) => div({ ...p, class: cls('stat', p.class) }, c) + +mount( + div({ class: 'stats shadow' }, + Stat({ class: 'stat' }, [ + div({ class: 'stat-title' }, 'Total Downloads'), + div({ class: 'stat-value' }, '12.5K'), + div({ class: 'stat-desc' }, '21% more than last month') + ]) + ), + '#demo-stat' +) +``` + +## Table +
+ +```js +const users = [ + { id: 1, name: 'Alice', role: 'Admin' }, + { id: 2, name: 'Bob', role: 'Editor' }, + { id: 3, name: 'Charlie', role: 'Viewer' } +]; + +mount( + Table({ + items: users, + columns: [ + { key: 'name', label: 'Name' }, + { key: 'role', label: 'Role' }, + { render: (it) => Button({ class: 'btn-xs' }, 'Edit') } + ], + class: 'table-zebra' + }), + '#demo-table' +); +``` + +## Timeline +
+ +```js +mount( + Timeline({ vertical: true }, [ + li({}, [ + div({ class: 'timeline-start' }, '2024'), + div({ class: 'timeline-middle' }, span({ class: 'icon-[lucide--check]' })), + div({ class: 'timeline-end timeline-box' }, 'Project started') + ]), + li({}, [ + div({ class: 'timeline-start' }, '2025'), + div({ class: 'timeline-middle' }, span({ class: 'icon-[lucide--clock]' })), + div({ class: 'timeline-end timeline-box' }, 'First prototype') + ]) + ]), + '#demo-timeline' +); +``` \ No newline at end of file diff --git a/docs/demo_editor.md b/docs/demo_editor.md new file mode 100644 index 0000000..5680638 --- /dev/null +++ b/docs/demo_editor.md @@ -0,0 +1,19 @@ +# Editor +
+ +
+ +```js +const content = $('

Hello world!

'); + +mount( + div({ class: 'flex flex-col gap-4' }, [ + Editor({ + value: content, + placeholder: 'Escribe tu historia…', + class: 'max-w-2xl' + }) + ]), + '#demo-editor' +); +``` \ No newline at end of file diff --git a/docs/demo_forms.md b/docs/demo_forms.md new file mode 100644 index 0000000..ad9d22a --- /dev/null +++ b/docs/demo_forms.md @@ -0,0 +1,181 @@ +# Forms + +## Autocomplete +
+ +```js +const selected = $(''); +const items = ['Apple', 'Banana', 'Orange', 'Mango', 'Carrot', 'Broccoli', 'Spinach', 'Potato']; + +mount( + Autocomplete({ + items, + value: selected, + placeholder: 'Search...', + onselect: (val) => console.log('Selected:', val) + }), + '#demo-autocomplete' +); +``` + +## Button +
+ +```js +const count = $(0); + +mount( + Button({ + class: 'btn-primary', + onclick: () => count(count() + 1) + }, () => `Clicked ${count()} times`), + '#demo-button' +); +``` + +## Checkbox +
+ +```js +const checked = $(false); + +mount( + div({ class: 'flex items-center gap-2' }, [ + Checkbox({ + checked, + onchange: (e) => checked(e.target.checked), + }), + span({}, 'Accept terms') + ]), + '#demo-checkbox' +); +``` + +## Colorpicker +
+ +```js +const color = $(''); + +mount( + Colorpicker({ + value: color, + label: 'Pick a color', + onchange: (c) => console.log('Color:', c) + }), + '#demo-colorpicker' +); +``` + +## Datepicker +
+ +```js +const date = $(''); + +mount( + Datepicker({ + value: date, + placeholder: 'Select date', + onChange: (val) => console.log('Date:', val) + }), + '#demo-datepicker' +); +``` + +## Input +
+ +```js +const text = $(''); + +mount( + Input({ + type: 'text', + label: 'Username', + float: true, + value: text, + left: Icon('icon-[lucide--user]') + }), + '#demo-input' +); +``` + +## Radio +
+ +```js +const option = $(''); + +mount( + div({ class: 'flex gap-2' }, [ + Radio({ name: 'option', value: 'a', checked: () => option() === 'a', onchange: () => option('a') }), + Radio({ name: 'option', value: 'b', checked: () => option() === 'b', onchange: () => option('b') }), + ]), + '#demo-radio' +); +``` + +## Range +
+ +```js +const rangeValue = $(50); + +mount( + div({ class: 'flex flex-col gap-2' }, [ + Range({ min: 0, max: 100, value: rangeValue, oninput: (e) => rangeValue(+e.target.value) }), + span({}, () => `Value: ${rangeValue()}`) + ]), + '#demo-range' +); +``` + +## Rating +
+ +```js +const stars = $(''); + +mount( + Rating({ + value: stars, + count: 5, + mask: 'mask-star', + onchange: (v) => console.log('Rated:', v) + }), + '#demo-rating' +); +``` + +## Select +
+ +```js +const choice = $(''); + +mount( + Select({ + items: ['Option 1', 'Option 2', 'Option 3'], + placeholder: 'Choose...', + value: choice, + }), + '#demo-select' +); +``` + +## Swap +
+ +```js +const swapOn = $(false); + +mount( + Swap({ + value: swapOn, + on: span({ class: 'text-success' }, 'ON'), + off: span({ class: 'text-error' }, 'OFF'), + }), + '#demo-swap' +); +``` \ No newline at end of file diff --git a/docs/demo_layout.md b/docs/demo_layout.md new file mode 100644 index 0000000..c3ab004 --- /dev/null +++ b/docs/demo_layout.md @@ -0,0 +1,201 @@ +# Layout + +## Accordion +
+ +```js +const accItems = $([ + { title: 'What is SigPro?', content: 'A lightweight UI library built on DaisyUI and a fine‑grained reactivity system.' }, + { title: 'Why use it?', content: 'No build step, minimal boilerplate, and all components are just JavaScript functions.' }, + { title: 'Browser support?', content: 'All modern browsers that support ES2020+' } +]); + +mount( + div({ class: 'flex flex-col gap-8' }, [ + // Example 1: radio type with arrow variant + Accordion({ + variant: 'arrow', + items: [ + { title: 'Radio with arrow', content: 'This uses collapse‑arrow' }, + { title: 'Open by default', content: 'This one is open', open: true }, + 'Simple string item (no content)' + ] + }), + // Example 2: details type with plus variant + Accordion({ + type: 'details', + variant: 'plus', + items: [ + { title: 'Details with plus', content: 'Uses the native
element' }, + { title: 'Another detail', content: 'Accordion style but with plus icon' } + ] + }), + // Example 3: reactive items (signal) + Accordion({ items: accItems }) + ]), + '#demo-accordion' +); +``` + +## Drawer +
+ +```js +const drawerOpen = $(false); + +mount( + div({}, [ + Button({ class: 'btn', onclick: () => drawerOpen(true) }, 'Open Drawer'), + Drawer({ open: drawerOpen, side: Menu({ items: [ + { label: 'Dashboard', onclick: () => drawerOpen(false) }, + { label: 'Settings' }, + { label: 'Help' } + ]}) }, [ + div({ class: 'p-4' }, [ + h3({ class: 'text-lg font-bold' }, 'Main Content'), + p({}, 'This is the main page. Click the button above to open the drawer.') + ]) + ]) + ]), + '#demo-drawer' +); +``` + +## Dropdown +
+ +```js +mount( + div({ class: 'flex gap-4' }, [ + // Example 1: automatic items + Dropdown({ + trigger: 'Options', + items: [ + { label: 'Edit', onclick: () => console.log('Edit') }, + { label: 'Delete', onclick: () => console.log('Delete') }, + { label: 'Archive' } + ] + }), + // Example 2: custom children (manual) + Dropdown({ trigger: 'More' }, [ + h('ul', { class: 'menu dropdown-content bg-base-100 rounded-box w-40 p-2 shadow' }, [ + li({}, a({}, 'Profile')), + li({}, a({}, 'Logout')) + ]) + ]) + ]), + '#demo-dropdown' +); +``` + +## Fab +
+ +```js +mount( + div({ class: 'flex gap-4' }, [ + Fab({ class: 'fab-bottom-left' }, span({ class: 'icon-[lucide--plus]' })), + Fab({ class: 'fab-top-right', style: 'position:relative' }, span({ class: 'icon-[lucide--settings]' })) + ]), + '#demo-fab' +); +``` + +## Fieldset +
+ +```js +mount( + div({ class: 'flex gap-4' }, [ + Fieldset({ legend: 'Personal Info' }, [ + Input({ label: 'Name', float: true, value: $('') }), + Select({ label: 'Country', float: true, items: ['Spain', 'France', 'Italy'], value: $('') }) + ]), + Fieldset({ class: 'bg-base-200 p-4 rounded-box' }, [ + div({}, 'Any content without legend') + ]) + ]), + '#demo-fieldset' +); +``` + +## Menu +
+ +```js +const menuItems = $([ + { label: 'Home' }, + { label: 'Products', children: [ + { label: 'Laptops' }, + { label: 'Phones' } + ]}, + { label: 'About', onclick: () => console.log('About clicked') } +]); + +mount( + div({ class: 'flex gap-4' }, [ + // Example 1: automatic from items (signal) + Menu({ items: menuItems, class: 'menu-vertical' }), + // Example 2: manual children + Menu({ class: 'menu-horizontal bg-base-200 rounded-box' }, [ + li({}, a({}, 'One')), + li({}, a({}, 'Two')) + ]) + ]), + '#demo-menu' +); +``` + +## Navbar +
+ +```js +mount( + Navbar({ class: 'bg-base-200 rounded-box' }, [ + div({ class: 'flex-1' }, + a({ class: 'btn btn-ghost text-xl' }, 'SigPro') + ), + div({ class: 'flex-none gap-2' }, [ + Button({ class: 'btn btn-ghost' }, 'Login'), + Button({ class: 'btn btn-primary' }, 'Sign up') + ]) + ]), + '#demo-navbar' +); +``` + +## Tabs +
+ +```js +const activeTab = $(0); +const tabsData = $([ + { label: 'Tab A', content: 'Content of tab A' }, + { label: 'Tab B', content: 'Content of tab B', closable: true }, + { label: 'Tab C', content: 'Content of tab C' } +]); + +mount( + div({ class: 'flex flex-col gap-4' }, [ + // Example 1: reactive tabs with closable + Tabs({ + items: tabsData, + activeIndex: activeTab, + class: "tabs-box", + onClose: (idx) => { + const newTabs = tabsData().filter((_, i) => i !== idx); + tabsData(newTabs); + if (activeTab() >= newTabs.length) activeTab(Math.max(0, newTabs.length - 1)); + } + }), + // Example 2: manual tabs with custom content + Tabs({}, [ + a({ class: () => `tab ${activeTab() === 0 ? 'tab-active' : ''}`, onclick: () => activeTab(0) }, 'Manual A'), + a({ class: () => `tab ${activeTab() === 1 ? 'tab-active' : ''}`, onclick: () => activeTab(1) }, 'Manual B'), + div({ class: 'tab-content', style: () => `display:${activeTab() === 0 ? 'block' : 'none'}` }, 'Content for manual A'), + div({ class: 'tab-content', style: () => `display:${activeTab() === 1 ? 'block' : 'none'}` }, 'Content for manual B') + ]) + ]), + '#demo-tabs' +); +``` \ No newline at end of file diff --git a/docs/demo_overlay.md b/docs/demo_overlay.md new file mode 100644 index 0000000..fc325fa --- /dev/null +++ b/docs/demo_overlay.md @@ -0,0 +1,84 @@ +# Overlays + +## Alert +
+ +```js +mount( + Alert({ class: 'alert-success' }, [ + span({}, 'Operation completed successfully!'), + Button({ class: 'btn-sm' }, 'Undo') + ]), + '#demo-alert' +); +``` + +## Modal +
+ +```js +const modalOpen = $(false); + +mount( + div({ class: 'flex flex-col items-start gap-2' }, [ + Button({ + class: 'btn', + onclick: () => modalOpen(true) + }, 'Abrir modal'), + Modal({ + open: modalOpen, + title: 'Congratulations!', + backdrop: true, + actions: [ + form({ method: 'dialog' }, + Button({ class: 'btn', onclick: () => modalOpen(false) }, 'Close') + ) + ] + }, [ + p({}, 'You have successfully created a reactive DaisyUI modal with SigPro.') + ]) + ]), + '#demo-modal' +); +``` + +## Toast +
+ +```js +mount( + div({ class: 'flex flex-wrap gap-2' }, [ + Button({ class: 'btn', onclick: () => Toast('File saved!') }, 'Simple'), + Button({ class: 'btn', onclick: () => Toast('Error', 'alert-error', 5000) }, 'Error (5s)'), + Button({ class: 'btn', onclick: () => Toast( + div({ class: 'flex items-center gap-2' }, [ + span({ class: 'icon-[lucide--check] text-lg' }), + span({}, 'Report generated successfully') + ]), + 'alert-success' + ) }, 'With icon'), + Button({ class: 'btn', onclick: () => Toast( + h('div', { class: 'flex flex-col' }, [ + h('strong', {}, '¡ATTENTION!'), + h('span', {}, 'Error saving!'), + h('button', { class: 'btn btn-xs mt-1', onclick: () => console.log('retry') }, 'Retry') + ]), + 'alert-warning', + 7000 + ) }, 'Complex') + ]), + '#demo-toast' +); +``` + +## Tooltip +
+ +```js +mount( + Tooltip({ tip: 'Click to save', class: 'tooltip-right' }, + Button({ class: 'btn' }, 'Save') + ), + '#demo-tooltip' +); +``` \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 35a1d9a..7cbfe22 100644 --- a/docs/index.html +++ b/docs/index.html @@ -30,6 +30,7 @@ repo: "", loadSidebar: true, sidebarDisplayLevel: 1, + subMaxLevel: 3, executeScript: true, copyCode: { buttonText: @@ -38,26 +39,24 @@ successText: '', }, + search: { + placeholder: "Type to search", + noData: "No Results!", + depth: 3, + hideOtherSidebarContent: true, + }, plugins: [ function (hook, vm) { hook.doneEach(function () { - // Seleccionamos solo los bloques marcados con ```js const codeBlocks = document.querySelectorAll( 'pre[data-lang="js"] code', ); - codeBlocks.forEach((code) => { try { - // Usamos un bloque anónimo para evitar colisiones de variables const/let - // si el usuario ejecuta el mismo código varias veces. - const scriptContent = `(function() { - ${code.innerText} - })();`; - + const scriptContent = `(function() { ${code.innerText} })();`; const runDemo = new Function(scriptContent); runDemo(); } catch (err) { - // Un error común es que el bloque de código esté vacío o mal formado console.error("Error ejecutando demo de SigPro:", err); } }); @@ -66,7 +65,7 @@ ], }; - + diff --git a/docs/quick.md b/docs/quick.md index 87836d5..e3ddaeb 100644 --- a/docs/quick.md +++ b/docs/quick.md @@ -1,227 +1,610 @@ -# SigPro-UI Quick Reference +# SigPro Components – Quick Reference -**Status:** Active / WIP +All simple components use the pattern `ComponentName(props, children?)` and accept any additional HTML attributes. +## Accordion +`Accordion(props)` -## Global Initialization - -```javascript -import "sigpro-ui"; -import "sigpro-ui/css"; - -// All components (Button, Input, Table, Toast, etc.) are now globally available. -``` +| Prop | Type | Default | Description | +|------|------|---------|-------------| +| `items` | array \| signal | `[]` | Array of items. Each item: `{ title, content?, open? }` or a string. | +| `type` | `'radio'` \| `'details'` | `'radio'` | Collapse mode | +| `variant` | string | `''` | `'arrow'` or `'plus'` for an icon variant | +| `name` | string | auto‑generated | Group name for radio inputs | +| `class` | string | - | Extra classes merged with `collapse` | --- -## Core Components +## Alert +`Alert(props, children)` -| Component | Purpose | Basic Example | -| :--- | :--- | :--- | -| **Button** | Styled button with DaisyUI | `button({ class: "btn-primary" }, "Submit")` | -| **Input** | Reactive text field with validation | `input({ value: $name, validate: (v) => !v ? "Required" : "" })` | -| **Select** | Dropdown selection menu | `Select({ options: ["Admin", "User"], value: $role })` | -| **Checkbox** | Binary toggle (boolean) | `Checkbox({ label: "Active", checked: $isActive })` | -| **Table** | Data grid with column rendering | `Table({ items: $data, columns: [...] })` | -| **Modal** | Overlay dialog controlled by a Signal | `Modal({ open: $show, title: "Alert" }, "Message")` | -| **Badge** | Small status indicator or tag | `Badge({ class: "badge-outline" }, "Beta")` | -| **Alert** | Contextual notification | `Alert({ type: "info" }, "Update available")` | -| **Dropdown** | Contextual overlay menu | `Dropdown({ label: "Menu" }, [Link1, Link2])` | -| **Tabs** | Reactive tab-based navigation | `Tabs({ items: ["Home", "Settings"], active: $index })` | -| **Stat** | Statistical data block (KPIs) | `Stat({ label: "Sales", value: "$400" })` | -| **Toast** | Temporary floating notification | `Toast("Done!", "alert-success", 3000)` | +| Prop | Type | Default | Description | +|------|------|---------|-------------| +| `class` | string | - | Extra classes merged with `alert` | --- -## Forms & Inputs +## Autocomplete +`Autocomplete(props)` -| Component | Description | Example | -| :--- | :--- | :--- | -| **Input** | Text input with floating label, validation, password toggle | `input({ label: "Email", type: "email", value: $email, validate: validateEmail })` | -| **Select** | Dropdown selector | `Select({ label: "Role", options: ["Admin", "User"], value: $role })` | -| **Autocomplete** | Searchable dropdown with filtering | `autocomplete({ label: "Country", options: countryList, value: $country })` | -| **Datepicker** | Date picker (single or range mode) | `Datepicker({ label: "Date", value: $date, range: false })` | -| **Colorpicker** | Visual color picker with palette | `Colorpicker({ label: "Theme", value: $color })` | -| **Checkbox** | Checkbox or toggle switch | `Checkbox({ label: "Remember me", value: $remember })` | -| **Radio** | Radio button | `Radio({ label: "Option 1", value: $selected, name: "group" })` | -| **Range** | Slider control | `Range({ label: "Volume", min: 0, max: 100, value: $volume })` | -| **Rating** | Star rating component | `Rating({ value: $stars, count: 5 })` | -| **Swap** | Toggle between two states (sun/moon) | `Swap({ on: "🌞", off: "🌙", value: $isDark })` | +| Prop | Type | Default | Description | +|------|------|---------|-------------| +| `items` | array \| signal | `[]` | Autocomplete items | +| `value` | signal | - | Selected value | +| `onselect` | function | - | Called when an item is selected | +| `placeholder` | string | `'Buscar...'` | Input placeholder | +| `class` | string | - | Extra classes | +| `...props` | | | All other props are passed to the internal `Input` | --- -## Input Validation +## Badge +`Badge(props, children)` -The `Input` component supports real-time validation via the `validate` prop: - -```javascript -const email = $(''); - -input({ - type: 'email', - value: email, - placeholder: 'Enter your email', - icon: 'icon-[lucide--mail]', - validate: (value) => { - if (!value) return ''; - if (!value.includes('@')) return 'Email must contain @'; - if (!value.includes('.')) return 'Email must contain .'; - return ''; - }, - oninput: (e) => email(e.target.value) -}) -``` - -**How it works:** -- Returns `''` or `null` → no error -- Returns a string → shows error message and adds `input-error` class -- Validates on every keystroke -- No external state needed for error messages +| Prop | Type | Default | Description | +|------|------|---------|-------------| +| `class` | string | - | Extra classes merged with `badge` | --- -## Data Display +## Button +`Button(props, children)` -| Component | Description | Example | -| :--- | :--- | :--- | -| **Table** | Reactive data grid with columns | `Table({ items: $users, columns: [{ label: "Name", key: "name" }] })` | -| **List** | Vertical list with custom rendering | `List({ items: $items, render: (item) => item.name })` | -| **Badge** | Small status indicators | `Badge({ class: "badge-primary" }, "New")` | -| **Stat** | Statistical data blocks (KPIs) | `Stat({ label: "Total", value: "1.2k", desc: "Monthly" })` | -| **Timeline** | Vertical/horizontal timeline | `Timeline({ items: [{ title: "Step 1", detail: "Completed" }] })` | -| **Stack** | Stacked elements | `Stack({}, [Card1, Card2, Card3])` | -| **Indicator** | Badge on corner of element | `Indicator({ value: () => count() }, button(...))` | +| Prop | Type | Default | Description | +|------|------|---------|-------------| +| `class` | string | - | Extra classes merged with `button` | +| `disabled` | boolean | - | Standard HTML attribute | +| *any* | | | All other standard `