@ahriknow/lux 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +127 -0
  3. package/README_zh-CN.md +127 -0
  4. package/dist/components/lux-button/index.iife.min.js +292 -0
  5. package/dist/components/lux-button/index.min.js +292 -0
  6. package/dist/components/lux-code/index.iife.min.js +290 -0
  7. package/dist/components/lux-code/index.min.js +290 -0
  8. package/dist/components/lux-dropdown/index.iife.min.js +162 -0
  9. package/dist/components/lux-dropdown/index.min.js +162 -0
  10. package/dist/components/lux-example/index.iife.min.js +88 -0
  11. package/dist/components/lux-example/index.min.js +88 -0
  12. package/dist/components/lux-icon/index.iife.min.js +22 -0
  13. package/dist/components/lux-icon/index.min.js +22 -0
  14. package/dist/components/lux-input/index.iife.min.js +238 -0
  15. package/dist/components/lux-input/index.min.js +238 -0
  16. package/dist/components/lux-layout/index.iife.min.js +90 -0
  17. package/dist/components/lux-layout/index.min.js +90 -0
  18. package/dist/components/lux-menu/index.iife.min.js +193 -0
  19. package/dist/components/lux-menu/index.min.js +193 -0
  20. package/dist/components/lux-scroll/index.iife.min.js +137 -0
  21. package/dist/components/lux-scroll/index.min.js +137 -0
  22. package/dist/components/lux-switch/index.iife.min.js +116 -0
  23. package/dist/components/lux-switch/index.min.js +116 -0
  24. package/dist/components/lux-table/index.iife.min.js +67 -0
  25. package/dist/components/lux-table/index.min.js +67 -0
  26. package/dist/lux.core.min.js +1 -0
  27. package/dist/lux.i18n.min.js +1 -0
  28. package/dist/lux.iife.js +1822 -0
  29. package/dist/lux.iife.js.map +1 -0
  30. package/dist/lux.iife.min.js +1 -0
  31. package/dist/lux.js +1792 -0
  32. package/dist/lux.js.map +1 -0
  33. package/dist/lux.min.js +1 -0
  34. package/dist/lux.router.min.js +1 -0
  35. package/dist/lux.template.min.js +1 -0
  36. package/dist/lux.theme.min.js +1 -0
  37. package/dist/themes/dark.css +130 -0
  38. package/dist/themes/light.css +128 -0
  39. package/package.json +64 -0
  40. package/src/components/lux-button/index.js +319 -0
  41. package/src/components/lux-code/index.js +382 -0
  42. package/src/components/lux-dropdown/index.js +256 -0
  43. package/src/components/lux-example/index.js +117 -0
  44. package/src/components/lux-icon/index.js +180 -0
  45. package/src/components/lux-input/index.js +363 -0
  46. package/src/components/lux-layout/index.js +222 -0
  47. package/src/components/lux-menu/index.js +283 -0
  48. package/src/components/lux-scroll/index.js +349 -0
  49. package/src/components/lux-switch/index.js +203 -0
  50. package/src/components/lux-table/index.js +105 -0
  51. package/src/core.js +7 -0
  52. package/src/element.js +477 -0
  53. package/src/i18n/format.js +108 -0
  54. package/src/i18n/index.js +102 -0
  55. package/src/i18n/locale.js +26 -0
  56. package/src/index.js +22 -0
  57. package/src/router.js +330 -0
  58. package/src/template.js +402 -0
  59. package/src/theme/color.js +148 -0
  60. package/src/theme/create.js +97 -0
  61. package/src/theme/index.js +2 -0
  62. package/src/theme/tokens.js +128 -0
  63. package/src/themes/dark.css +130 -0
  64. package/src/themes/light.css +128 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lux.iife.js","sources":["../src/template.js","../src/element.js","../src/router.js","../src/i18n/format.js","../src/i18n/locale.js","../src/i18n/index.js","../src/theme/color.js","../src/theme/tokens.js","../src/theme/create.js","../src/index.js"],"sourcesContent":["/**\n * Lux Template System\n *\n * Supports:\n * - html/svg tagged templates with template caching\n * - Child text interpolation: <div>${value}</div>\n * - Event binding: <button @click=${handler}>\n * - Property binding: <input .value=${val}>\n * - Boolean attribute: <div ?hidden=${cond}>\n * - Plain attribute: <div id=${val}>\n * - Class binding: <div class=${classMap({...})}>\n * - Style binding: <div style=${styleMap({...})}>\n * - Ref binding: <input ref=${el => ...}>\n * - Directives: repeat, when, classMap, styleMap, guard, show\n * - Template caching, incremental DOM updates\n * - nothing sentinel for clearing content\n */\n\n// ─── Template type markers ───\nexport const HTML_RESULT = 1;\nexport const SVG_RESULT = 2;\n\n// ─── Sentinels ───\nexport const nothing = Symbol.for('lux-nothing');\n\n// ─── Template cache ───\nconst templateCache = new WeakMap();\n\n// ─── html / svg tagged template functions ───\nexport function html(strings, ...values) {\n return { _$luxType$: HTML_RESULT, strings, values };\n}\n\nexport function svg(strings, ...values) {\n return { _$luxType$: SVG_RESULT, strings, values };\n}\n\nexport function css(strings, ...values) {\n return { _$luxType$: 3, strings, values };\n}\n\nexport function isTemplateResult(value) {\n return value && value._$luxType$ !== undefined;\n}\n\n// ─── HTML escaping ──\nexport function escapeHtml(value) {\n if (value == null) return '';\n const str = String(value);\n if (str.indexOf('<') === -1 && str.indexOf('>') === -1 && str.indexOf('&') === -1) return str;\n return str.replace(\n /[<>&\"']/g,\n (c) => ({ '<': '&lt;', '>': '&gt;', '&': '&amp;', '\"': '&quot;', \"'\": '&#39;' })[c]\n );\n}\n\n// ─── Part marker regex ──\nconst ATTR_BINDING_RE = /(?:([@.?][\\w-]+)|(ref)|(class))=\\s*$/;\n\n// ─── Template parsing ──\nfunction parseTemplate(strings) {\n const parts = [];\n let html = '';\n for (let i = 0; i < strings.length; i++) {\n html += strings[i];\n if (i < strings.length - 1) {\n const attrMatch = html.match(ATTR_BINDING_RE);\n if (attrMatch) {\n const prefixed = attrMatch[1];\n const isRef = !!attrMatch[2];\n const isClass = !!attrMatch[3];\n let prefix = '';\n let name = '';\n if (prefixed) {\n prefix = prefixed[0];\n name = prefixed.slice(1);\n } else if (isRef) {\n prefix = 'ref';\n name = 'ref';\n } else if (isClass) {\n prefix = 'class';\n name = 'class';\n }\n const marker = `lux-attr-${i}`;\n html = html.slice(0, -attrMatch[0].length) + `${marker}=\"${name}\" `;\n parts.push({ type: 'attr', name, prefix, marker, index: i });\n } else {\n const marker = `lux-${i}`;\n html += `<!--${marker}-->`;\n parts.push({ type: 'child', marker, index: i });\n }\n }\n }\n return { html, parts };\n}\n\n// ─── Commit functions ──\n\nfunction commitValue(container, value, context) {\n if (value === nothing || value == null) {\n clearContainer(container);\n return;\n }\n\n if (isRepeatResult(value)) {\n commitRepeat(container, value, context);\n return;\n }\n\n if (isTemplateResult(value)) {\n render(value, container, context);\n return;\n }\n\n if (Array.isArray(value)) {\n clearContainer(container);\n for (const item of value) {\n if (isTemplateResult(item)) {\n const span = document.createElement('span');\n span.style.display = 'contents';\n render(item, span, context);\n container.appendChild(span);\n } else if (item instanceof Node) {\n container.appendChild(item);\n } else if (item != null && item !== false) {\n container.appendChild(document.createTextNode(String(item)));\n }\n }\n return;\n }\n\n if (value instanceof Node) {\n clearContainer(container);\n container.appendChild(value);\n return;\n }\n\n // Primitive — replace content (don't append)\n if (container.childNodes.length === 1 && container.firstChild.nodeType === Node.TEXT_NODE) {\n container.firstChild.textContent = String(value);\n } else {\n clearContainer(container);\n container.appendChild(document.createTextNode(String(value)));\n }\n}\n\nfunction clearContainer(container) {\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n}\n\nfunction commitAttrPart(part, value) {\n const { element, name, prefix } = part;\n\n switch (prefix) {\n case '@': {\n // Event binding\n const oldHandler = part.committedValue;\n\n // Determine if we should remove/add based on value changes\n const isNothing = value == null || value === nothing;\n const shouldRemoveListener =\n (isNothing && oldHandler != null) ||\n value?.capture !== oldHandler?.capture ||\n value?.once !== oldHandler?.once ||\n value?.passive !== oldHandler?.passive;\n\n const shouldAddListener = !isNothing && (oldHandler == null || shouldRemoveListener);\n\n if (shouldRemoveListener) {\n element.removeEventListener(name, part._handler || oldHandler, oldHandler);\n }\n\n if (shouldAddListener) {\n if (typeof value === 'function') {\n // Wrap handler to preserve `this` as the host element\n const host =\n part._host ||\n (part._host = {\n handleEvent(e) {\n const fn = part.committedValue;\n if (typeof fn === 'function') {\n // Use host element (custom element instance) as `this`\n const hostEl = element.getRootNode().host || element;\n fn.call(hostEl, e);\n }\n },\n });\n part._handler = host;\n element.addEventListener(name, host);\n } else if (typeof value === 'object' && value?.handleEvent) {\n // EventListenerObject: { handleEvent(event) }\n const host = { handleEvent: (e) => value.handleEvent.call(value, e) };\n part._handler = host;\n element.addEventListener(name, host, {\n capture: value.capture,\n once: value.once,\n passive: value.passive,\n });\n }\n }\n\n part.committedValue = value;\n break;\n }\n case '.': {\n // Property binding\n element[name] = value === nothing ? undefined : value;\n break;\n }\n case '?': {\n // Boolean attribute binding\n element.toggleAttribute(name, !!value);\n break;\n }\n case 'ref': {\n // Ref binding\n if (typeof value === 'function') {\n value(element);\n }\n break;\n }\n case 'class': {\n // Class binding\n if (typeof value === 'string') {\n element.className = value;\n } else if (typeof value === 'object' && value != null) {\n const existing = element.className || '';\n const names = existing ? existing.split(/\\s+/) : [];\n for (const [cls, active] of Object.entries(value)) {\n if (active) {\n if (!names.includes(cls)) names.push(cls);\n } else {\n const idx = names.indexOf(cls);\n if (idx !== -1) names.splice(idx, 1);\n }\n }\n element.className = names.filter(Boolean).join(' ');\n }\n break;\n }\n default: {\n // Plain attribute\n if (value == null || value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : String(value));\n }\n }\n }\n}\n\n// ─── render() function ──\n\nexport function render(result, container, context) {\n if (!isTemplateResult(result)) {\n container.textContent = result ?? '';\n return;\n }\n\n const { strings, values } = result;\n\n // Incremental update\n if (container._luxActiveParts && container._luxStrings === strings) {\n for (const part of container._luxActiveParts) {\n if (part.index < values.length) {\n if (part.type === 'child') {\n commitValue(part.span, values[part.index], context);\n } else {\n commitAttrPart(part, values[part.index]);\n }\n }\n }\n return;\n }\n\n // First render — build part list\n const tpl = document.createElement('template');\n const parsed = parseTemplate(strings);\n tpl.innerHTML = parsed.html;\n const fragment = tpl.content.cloneNode(true);\n const activeParts = [];\n\n for (const part of parsed.parts) {\n if (part.type === 'child') {\n const walker = document.createTreeWalker(fragment, NodeFilter.SHOW_COMMENT);\n let node;\n while ((node = walker.nextNode())) {\n if (node.data === part.marker) {\n const span = document.createElement('span');\n span.style.display = 'contents';\n node.parentNode.replaceChild(span, node);\n commitValue(span, values[part.index], context);\n activeParts.push({ type: 'child', span, index: part.index });\n break;\n }\n }\n } else {\n const element = fragment.querySelector(`[${part.marker}]`);\n if (element) {\n element.removeAttribute(part.marker);\n const ap = {\n type: 'attr',\n element,\n name: part.name,\n prefix: part.prefix,\n index: part.index,\n committedValue: undefined,\n };\n commitAttrPart(ap, values[part.index]);\n activeParts.push(ap);\n }\n }\n }\n\n container.textContent = '';\n container.appendChild(fragment);\n container._luxActiveParts = activeParts;\n container._luxStrings = strings;\n}\n\n// ─── Directives ──\n\n/**\n * repeat(items, keyFn, renderFn) — keyed list rendering\n */\nexport function repeat(items, keyFn, renderFn) {\n return { _type: 'repeat', items, keyFn, renderFn };\n}\n\nfunction isRepeatResult(value) {\n return value && value._type === 'repeat';\n}\n\nfunction commitRepeat(container, value, context) {\n const { items, keyFn, renderFn } = value;\n const state = container._repeatState;\n\n // Clear old content\n if (state) {\n for (const entry of state.entries) {\n if (entry.span && entry.span.parentNode) {\n entry.span.parentNode.removeChild(entry.span);\n }\n }\n }\n\n // Build new content\n const frag = document.createDocumentFragment();\n const entries = [];\n for (const item of items) {\n const key = keyFn(item);\n const result = renderFn(item);\n const span = document.createElement('span');\n span.style.display = 'contents';\n if (isTemplateResult(result)) {\n render(result, span, context);\n } else if (result != null && result !== false) {\n span.appendChild(document.createTextNode(String(result)));\n }\n frag.appendChild(span);\n entries.push({ key, result, span });\n }\n container.appendChild(frag);\n container._repeatState = { entries };\n}\n\n/**\n * when(condition, trueFn, falseFn) — conditional rendering\n */\nexport function when(condition, trueFn, falseFn = () => '') {\n return condition ? trueFn() : falseFn();\n}\n\n/**\n * show(condition, content) — show/hide element\n */\nexport function show(condition, content = '') {\n return condition ? content : '';\n}\n\n/**\n * classMap(classes) — dynamic class binding helper\n */\nexport function classMap(classes) {\n return classes;\n}\n\n/**\n * styleMap(styles) — dynamic style binding helper\n */\nexport function styleMap(styles) {\n return styles;\n}\n\n/**\n * guard(dependencies, fn) — re-render only when dependencies change\n */\nexport function guard(dependencies, fn) {\n return fn();\n}\n","/**\n * LuxElement — Base class for Web Components.\n *\n * Inherits: HTMLElement → LuxElement\n * Features: reactive properties, Shadow DOM, lifecycle, controllers, update batching\n */\n\nimport { html, render, isTemplateResult } from './template.js';\n\n// ─── Update scheduling ───\nconst pendingUpdates = new Set();\nlet updateScheduled = false;\n\nfunction scheduleMicroTask(fn) {\n Promise.resolve().then(fn);\n}\n\nfunction enqueueUpdate(element) {\n pendingUpdates.add(element);\n if (!updateScheduled) {\n updateScheduled = true;\n scheduleMicroTask(() => {\n updateScheduled = false;\n const elements = [...pendingUpdates];\n pendingUpdates.clear();\n for (const el of elements) {\n el._$performUpdate();\n }\n });\n }\n}\n\n// ─── Default converter (attribute ↔ property) ───\nconst defaultConverter = {\n toAttribute(value, type) {\n switch (type) {\n case Boolean:\n return value ? '' : null;\n case Object:\n case Array:\n return value == null ? null : JSON.stringify(value);\n default:\n return value;\n }\n },\n fromAttribute(value, type) {\n switch (type) {\n case Boolean:\n return value !== null;\n case Number:\n return Number(value);\n case Object:\n case Array:\n try {\n return JSON.parse(value);\n } catch {\n return null;\n }\n default:\n return value;\n }\n },\n};\n\n// ─── LuxElement ───\nexport class LuxElement extends HTMLElement {\n // ─── Static: properties declaration ───\n static properties = {};\n static styles = undefined;\n\n // ─── Static: finalization ───\n static finalized = false;\n static elementProperties = new Map();\n\n // ─── Static: __prepare() — subclass isolation ───\n static __prepare() {\n if (this.hasOwnProperty('elementProperties')) {\n return;\n }\n // Finalize any superclasses first\n const superCtor = Object.getPrototypeOf(this);\n if (superCtor.finalize) {\n superCtor.finalize();\n }\n // Copy superclass elementProperties into own Map\n this.elementProperties = new Map(superCtor.elementProperties);\n }\n\n static get observedAttributes() {\n this.finalize();\n return this.__attributeToPropertyMap ? [...this.__attributeToPropertyMap.keys()] : [];\n }\n\n static finalize() {\n if (this.hasOwnProperty('finalized')) {\n return;\n }\n this.finalized = true;\n this.__prepare();\n\n // Create properties from the static properties block\n if (this.hasOwnProperty('properties')) {\n const props = this.properties;\n const propKeys = [\n ...Object.getOwnPropertyNames(props),\n ...Object.getOwnPropertySymbols(props),\n ];\n for (const p of propKeys) {\n this.createProperty(p, props[p]);\n }\n }\n\n // Create the attribute-to-property map\n this.__attributeToPropertyMap = new Map();\n for (const [p, options] of this.elementProperties) {\n const attr = this.__attributeNameForProperty(p, options);\n if (attr !== undefined) {\n this.__attributeToPropertyMap.set(attr, p);\n }\n }\n\n this.elementStyles = this.styles;\n }\n\n static __attributeNameForProperty(name, options) {\n const attribute = options.attribute;\n return attribute === false\n ? undefined\n : typeof attribute === 'string'\n ? attribute\n : typeof name === 'string'\n ? name.replace(/([A-Z])/g, '-$1').toLowerCase()\n : undefined;\n }\n\n // ─── Static: createProperty ───\n static createProperty(name, options = {}) {\n this.__prepare();\n if (this.elementProperties.has(name)) return;\n\n if (options.state) {\n options = { ...options, attribute: false };\n }\n\n this.elementProperties.set(name, options);\n\n if (!options.noAccessor) {\n const key = Symbol();\n const descriptor = this.getPropertyDescriptor(name, key, options);\n if (descriptor !== undefined) {\n Object.defineProperty(this.prototype, name, descriptor);\n }\n }\n }\n\n static getPropertyDescriptor(name, key, options) {\n const { type, reflect, converter } = options;\n const toAttribute = converter?.toAttribute ?? defaultConverter.toAttribute;\n\n return {\n get() {\n return this[key];\n },\n set(value) {\n const oldValue = this[key];\n this[key] = value;\n this.requestUpdate(name, oldValue, options);\n },\n configurable: true,\n enumerable: true,\n };\n }\n\n // ─── Static: addInitializer ───\n static _initializers = [];\n\n static addInitializer(fn) {\n this._initializers = [...(this._initializers || []), fn];\n }\n\n // ─── Static: shadowRootOptions ───\n static shadowRootOptions = { mode: 'open' };\n\n // ─── Constructor ───\n constructor() {\n super();\n\n this.__updatePending = false;\n this.__hasUpdated = false;\n this.__controllers = new Set();\n this.__reflectingProperty = null;\n\n // Ensure finalized\n if (!this.constructor.hasOwnProperty('finalized')) {\n this.constructor.finalize();\n }\n\n // CloneNode support: save any properties set before upgrade\n this.__saveInstanceProperties();\n\n this.requestUpdate();\n\n for (const fn of this.constructor._initializers || []) {\n fn(this);\n }\n }\n\n // ─── Instance properties save/replay (cloneNode support) ───\n __saveInstanceProperties() {\n const elementProperties = this.constructor.elementProperties;\n if (!elementProperties) return;\n\n for (const [name, options] of elementProperties) {\n if (options.noAccessor) continue;\n\n if (this.hasOwnProperty(name)) {\n // Plain property set before setter was defined (cloneNode)\n const value = this[name];\n delete this[name];\n // Store via the Symbol key\n this.__instancePropertyValues = this.__instancePropertyValues || new Map();\n this.__instancePropertyValues.set(name, value);\n }\n }\n }\n\n // ─── Lifecycle callbacks ───\n connectedCallback() {\n this.__controllers.forEach((c) => c.hostConnected?.());\n\n // Ensure finalized\n if (!this.constructor.hasOwnProperty('finalized')) {\n this.constructor.finalize();\n }\n\n // Sync existing attributes to properties (upgrade scenario)\n // attributeChangedCallback doesn't fire for pre-existing attributes\n const attrMap = this.constructor.__attributeToPropertyMap;\n if (attrMap) {\n for (const [attrName, propName] of attrMap) {\n const value = this.getAttribute(attrName);\n if (value !== null) {\n const options = this.constructor.elementProperties.get(propName);\n if (options) {\n const fromAttr =\n options.converter?.fromAttribute ?? defaultConverter.fromAttribute;\n this[propName] = fromAttr(value, options.type);\n }\n }\n }\n }\n\n // Replay instance properties saved by __saveInstanceProperties (cloneNode)\n if (this.__instancePropertyValues) {\n for (const [name, value] of this.__instancePropertyValues) {\n this[name] = value;\n }\n this.__instancePropertyValues = undefined;\n }\n\n // Ensure renderRoot is created\n this.renderRoot;\n\n // Trigger first update if not yet done\n if (!this.__hasUpdated) {\n this.requestUpdate();\n }\n }\n\n disconnectedCallback() {\n this.__controllers.forEach((c) => c.hostDisconnected?.());\n }\n\n attributeChangedCallback(name, _old, value) {\n const propName = this.constructor.__attributeToPropertyMap?.get(name);\n if (propName !== undefined && this.__reflectingProperty !== propName) {\n const options = this.constructor.elementProperties.get(propName);\n if (options) {\n const converter =\n typeof options.converter === 'function'\n ? { fromAttribute: options.converter }\n : options.converter?.fromAttribute !== undefined\n ? options.converter\n : defaultConverter;\n this.__reflectingProperty = propName;\n const convertedValue = converter.fromAttribute(value, options.type);\n this[propName] = convertedValue;\n this.__reflectingProperty = null;\n }\n }\n }\n\n // ─── RenderRoot & Styles ───\n get renderRoot() {\n if (!this._renderRoot) {\n this._renderRoot = this.createRenderRoot();\n this.__adoptStyles();\n }\n return this._renderRoot;\n }\n\n createRenderRoot() {\n return this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n }\n\n __adoptStyles() {\n const styles = this.constructor.elementStyles;\n if (!styles) return;\n\n const items = Array.isArray(styles) ? styles : [styles];\n const parts = [];\n for (const item of items) {\n if (typeof item === 'string') {\n parts.push(item);\n } else if (isTemplateResult(item)) {\n parts.push(item.strings.join(''));\n }\n }\n if (parts.length === 0) return;\n\n if (this._renderRoot.adoptedStyleSheets !== undefined) {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(parts.join('\\n'));\n this._renderRoot.adoptedStyleSheets = [...this._renderRoot.adoptedStyleSheets, sheet];\n } else {\n const tag = document.createElement('style');\n tag.textContent = parts.join('\\n');\n this._renderRoot.appendChild(tag);\n }\n }\n\n // ─── Update lifecycle ───\n enableUpdating(_requestedUpdate) {}\n\n get updateComplete() {\n return this.__updateCompletePromise ?? Promise.resolve();\n }\n\n get hasUpdated() {\n return this.__hasUpdated;\n }\n\n get isUpdatePending() {\n return this.__updatePending;\n }\n\n requestUpdate(name, oldValue, options) {\n if (name !== undefined) {\n const hasChanged = options?.hasChanged ?? ((v, o) => !Object.is(v, o));\n if (!hasChanged(this[name], oldValue)) return;\n }\n\n if (!this.__updatePending) {\n this.__updatePending = true;\n enqueueUpdate(this);\n }\n }\n\n async performUpdate() {\n if (!this.isUpdatePending) return;\n\n this.__updatePending = false;\n\n this.willUpdate(new Map());\n\n this.__controllers.forEach((c) => c.hostUpdate?.());\n\n this.update(new Map());\n\n this.__hasUpdated = true;\n\n // Reflect properties to attributes after update\n for (const [name, options] of this.constructor.elementProperties) {\n if (options.reflect) {\n const value = this[name];\n const toAttribute = options.converter?.toAttribute ?? defaultConverter.toAttribute;\n const attr = this.constructor.__attributeNameForProperty(name, options);\n if (attr !== undefined) {\n this.__reflectingProperty = name;\n const attrValue = toAttribute(value, options.type);\n if (attrValue === null || attrValue === undefined) {\n this.removeAttribute(attr);\n } else {\n this.setAttribute(attr, String(attrValue));\n }\n this.__reflectingProperty = null;\n }\n }\n }\n\n this.__controllers.forEach((c) => c.hostUpdated?.());\n this.firstUpdated(new Map());\n this.updated(new Map());\n }\n\n _$performUpdate() {\n this.performUpdate();\n }\n\n // ─── Lifecycle hooks ───\n shouldUpdate(_changedProperties) {\n return true;\n }\n\n willUpdate(_changedProperties) {}\n\n update(_changedProperties) {\n const result = this.render();\n if (result) {\n render(result, this.renderRoot, { host: this });\n }\n }\n\n render() {\n return html``;\n }\n\n firstUpdated(_changedProperties) {}\n updated(_changedProperties) {}\n propertyChangedCallback(_name, _oldValue, _newValue) {}\n\n // ─── Controller API ───\n addController(controller) {\n this.__controllers.add(controller);\n if (this.isConnected) {\n controller.hostConnected?.();\n }\n }\n\n removeController(controller) {\n this.__controllers.delete(controller);\n }\n\n // ─── Utilities ───\n emit(type, detail, options = {}) {\n return this.dispatchEvent(\n new CustomEvent(type, {\n detail,\n bubbles: true,\n composed: true,\n ...options,\n })\n );\n }\n\n $(selector) {\n return this.renderRoot.querySelector(selector);\n }\n\n $$(selector) {\n return this.renderRoot.querySelectorAll(selector);\n }\n}\n\n// ─── Register component ───\nexport function registerComponent(name, component) {\n if (!name.includes('-')) {\n throw new Error(`Component name must contain a hyphen: ${name}`);\n }\n if (!customElements.get(name)) {\n customElements.define(name, component);\n }\n}\n\n// ─── createComponent (function-based components) ───\nexport function createComponent(renderFn, options = {}) {\n const { properties = {} } = options;\n\n class DynamicComponent extends LuxElement {\n static properties = properties;\n render() {\n return renderFn.call(this, this);\n }\n }\n\n return DynamicComponent;\n}\n","/**\n * Lux Router - Hash-based SPA routing\n *\n * Usage:\n * const router = createRouter({ routes: [...] });\n * router.push('/users/123');\n *\n * Routes accept component classes or lazy loaders:\n * { path: '/', component: HomePage } // direct class\n * { path: '/admin', component: () => import('./admin.js') } // lazy\n */\n\nfunction registerComponent(name, component) {\n if (!name.includes('-')) throw new Error(`Component name must contain a hyphen: ${name}`);\n if (!customElements.get(name)) customElements.define(name, component);\n}\n\n// ─── Route matching ───\n\nfunction pathToRegex(pattern) {\n let seg = pattern.replace(/\\/+$/, '') || '/';\n if (seg === '/') return /^\\/?$/;\n const re = '^' + seg.replace(/:(\\w+)/g, '([^/]+)').replace(/\\(\\.\\*\\)/g, '(.*)') + '$';\n return new RegExp(re);\n}\n\nfunction extractParamNames(pattern) {\n const names = [];\n const re = /:(\\w+)/g;\n let m;\n while ((m = re.exec(pattern))) names.push(m[1]);\n return names;\n}\n\nfunction parseQuery(hash) {\n const idx = hash.indexOf('?');\n if (idx === -1) return {};\n const params = {};\n for (const pair of hash.slice(idx + 1).split('&')) {\n const [k, v] = pair.split('=');\n if (k) params[decodeURIComponent(k)] = v ? decodeURIComponent(v) : '';\n }\n return params;\n}\n\nfunction getPathFromHash(hash) {\n return hash.replace(/^#/, '').split('?')[0] || '/';\n}\n\n// ─── Component registry ───\n\nconst componentRegistry = new Map(); // tagName → class\n\nfunction resolveComponent(componentOrLoader) {\n if (typeof componentOrLoader === 'string') {\n return Promise.resolve(componentOrLoader);\n }\n if (\n typeof componentOrLoader === 'function' &&\n componentOrLoader.prototype instanceof HTMLElement\n ) {\n return ensureRegistered(componentOrLoader);\n }\n if (typeof componentOrLoader === 'function') {\n // Assume lazy loader: () => import(...)\n return componentOrLoader().then((mod) => {\n const Comp = mod.default || mod[Object.keys(mod)[0]];\n return ensureRegistered(Comp);\n });\n }\n return Promise.resolve(null);\n}\n\nfunction ensureRegistered(ComponentClass) {\n if (!ComponentClass || !ComponentClass.prototype) return Promise.resolve(null);\n\n const tagName = ComponentClass.tagName || classToTag(ComponentClass.name);\n\n // Already registered?\n if (customElements.get(tagName)) {\n return Promise.resolve(tagName);\n }\n\n registerComponent(tagName, ComponentClass);\n return Promise.resolve(tagName);\n}\n\nfunction classToTag(name) {\n // HomePage → home-page, UserProfile → user-profile\n return name\n .replace(/([A-Z])/g, '-$1')\n .toLowerCase()\n .replace(/^-/, '');\n}\n\n// ─── Router class ───\n\nclass Router {\n constructor(options = {}) {\n this.routes = (options.routes || []).map((r) => ({\n ...r,\n _regex: pathToRegex(r.path),\n _paramNames: extractParamNames(r.path),\n _children: (r.children || []).map((c) => ({\n ...c,\n _regex: pathToRegex(c.path),\n _paramNames: extractParamNames(c.path),\n })),\n }));\n\n this._guards = [];\n this._listeners = [];\n this.current = null;\n this._prev = null;\n this._onHashChange = this._onHashChange.bind(this);\n }\n\n start() {\n window.addEventListener('hashchange', this._onHashChange);\n this._resolve();\n }\n\n stop() {\n window.removeEventListener('hashchange', this._onHashChange);\n }\n\n push(path) {\n location.hash = path;\n }\n\n replace(path) {\n const url = new URL(location.href);\n url.hash = path;\n history.replaceState(null, '', url.toString());\n this._onHashChange();\n }\n\n back() {\n history.back();\n }\n forward() {\n history.forward();\n }\n\n beforeEach(fn) {\n this._guards.push(fn);\n return () => {\n const i = this._guards.indexOf(fn);\n if (i >= 0) this._guards.splice(i, 1);\n };\n }\n\n _subscribe(fn) {\n this._listeners.push(fn);\n return () => {\n const i = this._listeners.indexOf(fn);\n if (i >= 0) this._listeners.splice(i, 1);\n };\n }\n\n _onHashChange() {\n this._resolve();\n }\n\n _resolve() {\n const hash = location.hash || '#/';\n const path = getPathFromHash(hash);\n const query = parseQuery(hash);\n\n let matched = null;\n for (const route of this.routes) {\n const hasChildren = route._children.length > 0;\n\n // For routes with children, use prefix matching\n // For leaf routes, use exact matching\n let m;\n if (hasChildren) {\n // Prefix match: path must start with route path\n const prefix = route.path === '/' ? '' : route.path.replace(/\\/+$/, '');\n if (\n path === prefix ||\n path.startsWith(prefix + '/') ||\n (prefix === '' && path.startsWith('/'))\n ) {\n m = [path]; // fake match for prefix\n }\n } else {\n m = path.match(route._regex);\n }\n\n if (m) {\n const params = {};\n route._paramNames.forEach((name, i) => {\n if (m[i + 1] !== undefined) params[name] = decodeURIComponent(m[i + 1]);\n });\n matched = { route, params: { ...params }, query, path };\n\n // Child matching (check BEFORE redirect)\n if (hasChildren) {\n const prefix = route.path === '/' ? '' : route.path.replace(/\\/+$/, '');\n const childPath = path.slice(prefix.length) || '/';\n let childMatched = false;\n for (const child of route._children) {\n const cm = childPath.match(child._regex);\n if (cm) {\n const childParams = {};\n child._paramNames.forEach((name, i) => {\n childParams[name] = decodeURIComponent(cm[i + 1]);\n });\n matched.child = {\n route: child,\n params: { ...params, ...childParams },\n query,\n path,\n };\n childMatched = true;\n break;\n }\n }\n // No child matched — redirect only if path equals parent path\n if (\n !childMatched &&\n route.redirect &&\n path === (route.path === '/' ? '/' : route.path)\n ) {\n this.replace(route.redirect);\n return;\n }\n // No child matched and no redirect — skip this parent, try other routes\n if (!childMatched) {\n matched = null;\n continue;\n }\n } else if (route.redirect) {\n this.replace(route.redirect);\n return;\n }\n break;\n }\n }\n\n if (!matched) {\n this.current = { route: null, params: {}, query, path };\n } else {\n this.current = matched;\n }\n\n for (const guard of this._guards) {\n if (guard(this.current, this._prev) === false) {\n if (this._prev) history.replaceState(null, '', '#' + this._prev.path);\n return;\n }\n }\n\n this._prev = { ...this.current };\n for (const fn of this._listeners) fn(this.current);\n }\n}\n\n// ─── Create router + register <router-outlet> ───\n\nexport function createRouter(options) {\n const router = new Router(options);\n\n if (!customElements.get('router-outlet')) {\n class RouterOutlet extends HTMLElement {\n connectedCallback() {\n this.style.display = 'contents';\n this._unsub = router._subscribe(() => this._update());\n this._update();\n }\n\n disconnectedCallback() {\n this._unsub?.();\n this._loadingAbort?.abort();\n }\n\n async _update() {\n const match = this._getMatch();\n this._loadingAbort?.abort();\n\n if (!match || !match.route || !match.route.component) {\n this.textContent = '';\n return;\n }\n\n // Skip re-render if the same route is already rendered\n if (this._lastRoute === match.route) {\n return;\n }\n\n const controller = new AbortController();\n this._loadingAbort = controller;\n\n try {\n const tagName = await resolveComponent(match.route.component);\n if (controller.signal.aborted) return;\n\n this.textContent = '';\n if (tagName) {\n const el = document.createElement(tagName);\n if (match.params) el.params = match.params;\n if (match.query) el.query = match.query;\n this.appendChild(el);\n this._lastRoute = match.route;\n }\n } catch (e) {\n if (!controller.signal.aborted) {\n console.error('[Lux Router] Failed to load component:', e);\n this.textContent = '';\n }\n }\n }\n\n _getMatch() {\n const level = parseInt(this.getAttribute('level')) || 0;\n let match = router.current;\n for (let i = 0; i < level; i++) {\n if (!match || !match.child) return null;\n match = match.child;\n }\n return match;\n }\n }\n registerComponent('router-outlet', RouterOutlet);\n }\n\n router.start();\n return router;\n}\n","/**\n * ICU MessageFormat subset parser\n *\n * Supports:\n * - Simple interpolation: \"Hello, {name}\"\n * - Plural: \"{count, plural, =0{No items} =1{# item} other{# items}}\"\n * - Select: \"{gender, select, male{He} female{She} other{They}}\"\n */\n\n/**\n * Find the matching closing brace for an opening brace at position `start`.\n */\nfunction findMatchingBrace(str, start) {\n let depth = 1;\n for (let i = start + 1; i < str.length; i++) {\n if (str[i] === '{') depth++;\n else if (str[i] === '}') {\n depth--;\n if (depth === 0) return i;\n }\n }\n return -1;\n}\n\n/**\n * Extract all top-level {...} expressions from the template.\n */\nfunction extractExpressions(template) {\n const parts = [];\n let i = 0;\n while (i < template.length) {\n if (template[i] === '{') {\n const end = findMatchingBrace(template, i);\n if (end !== -1) {\n parts.push({ start: i, end, expr: template.slice(i + 1, end) });\n i = end + 1;\n continue;\n }\n }\n i++;\n }\n return parts;\n}\n\nexport function formatMessage(template, values = {}) {\n if (!template || typeof template !== 'string') return '';\n\n const exprs = extractExpressions(template);\n let result = '';\n let lastIdx = 0;\n\n for (const { start, end, expr } of exprs) {\n result += template.slice(lastIdx, start);\n const trimmed = expr.trim();\n\n // Plural: {key, plural, =N{...} other{...}}\n const pluralMatch = trimmed.match(/^(\\w+),\\s*plural\\s*,\\s*(.+)$/);\n if (pluralMatch) {\n const [, key, rules] = pluralMatch;\n const count = Number(values[key]) || 0;\n result += formatPlural(count, rules);\n lastIdx = end + 1;\n continue;\n }\n\n // Select: {key, select, val1{...} val2{...}}\n const selectMatch = trimmed.match(/^(\\w+),\\s*select\\s*,\\s*(.+)$/);\n if (selectMatch) {\n const [, key, rules] = selectMatch;\n const value = String(values[key] || '');\n result += formatSelect(value, rules);\n lastIdx = end + 1;\n continue;\n }\n\n // Simple interpolation: {key}\n result += values[trimmed] ?? template.slice(start, end + 1);\n lastIdx = end + 1;\n }\n\n result += template.slice(lastIdx);\n return result;\n}\n\nfunction formatPlural(count, rulesStr) {\n const rules = parseRules(rulesStr);\n const exact = rules[`=${count}`];\n if (exact !== undefined) return exact.replace(/#/g, String(count));\n\n const key = count === 1 ? 'one' : 'other';\n const rule = rules[key] || rules['other'] || '';\n return rule.replace(/#/g, String(count));\n}\n\nfunction formatSelect(value, rulesStr) {\n const rules = parseRules(rulesStr);\n return rules[value] || rules['other'] || '';\n}\n\nfunction parseRules(rulesStr) {\n const rules = {};\n const re = /(\\w+|=\\d+)\\{([^}]*)\\}/g;\n let m;\n while ((m = re.exec(rulesStr))) {\n rules[m[1]] = m[2];\n }\n return rules;\n}\n","/**\n * Locale detection\n */\n\nexport function getDefaultLocale() {\n if (typeof navigator !== 'undefined' && navigator.language) {\n return navigator.language;\n }\n return 'en';\n}\n\nexport function formatNumber(value, options = {}, locale) {\n try {\n return new Intl.NumberFormat(locale, options).format(value);\n } catch {\n return String(value);\n }\n}\n\nexport function formatDate(value, options = {}, locale) {\n try {\n return new Intl.DateTimeFormat(locale, options).format(value);\n } catch {\n return String(value);\n }\n}\n","/**\n * Lux i18n — Lightweight internationalization\n *\n * Usage:\n * import { createI18n, msg, number, date } from 'lux/i18n';\n *\n * const i18n = createI18n({\n * locale: 'zh-CN',\n * messages: {\n * 'zh-CN': { hello: '你好', welcome: '欢迎, {name}' },\n * 'en': { hello: 'Hello', welcome: 'Welcome, {name}' },\n * }\n * });\n *\n * // In templates\n * html`<h1>${msg('hello')}</h1>`\n * html`<p>${msg('welcome', { name: 'Alice' })}</p>`\n * html`<span>${msg('items', { count: 5 })}</span>`\n *\n * // Number/date formatting\n * html`<span>${number(1234567)}</span>`\n * html`<span>${date(new Date())}</span>`\n */\n\nimport { formatMessage } from './format.js';\nimport { getDefaultLocale, formatNumber, formatDate } from './locale.js';\n\nlet currentLocale = '';\nlet currentMessages = {};\nlet listeners = [];\n\n/**\n * Get the current translation for a key.\n */\nexport function msg(key, values = {}) {\n const dict = currentMessages[currentLocale] || currentMessages;\n const template = dict[key] ?? key;\n return formatMessage(template, values);\n}\n\n/**\n * Format a number using Intl.NumberFormat.\n */\nexport function number(value, options) {\n return formatNumber(\n value,\n typeof options === 'string' ? { style: options } : options,\n currentLocale\n );\n}\n\n/**\n * Format a date using Intl.DateTimeFormat.\n */\nexport function date(value, options) {\n return formatDate(value, options, currentLocale);\n}\n\n/**\n * Get the current locale string.\n */\nexport function getLocale() {\n return currentLocale;\n}\n\n/**\n * Create an i18n instance.\n *\n * @param {Object} options\n * @param {string} options.locale - Initial locale (default: navigator.language)\n * @param {Object} messages - { 'zh-CN': {...}, 'en': {...} }\n * @returns {Object} i18n instance\n */\nexport function createI18n(options = {}) {\n currentLocale = options.locale || getDefaultLocale();\n currentMessages = options.messages || {};\n\n function setLocale(locale) {\n currentLocale = locale;\n for (const fn of listeners) fn(locale);\n }\n\n function onLocaleChange(fn) {\n listeners.push(fn);\n return () => {\n const i = listeners.indexOf(fn);\n if (i >= 0) listeners.splice(i, 1);\n };\n }\n\n return {\n get locale() {\n return currentLocale;\n },\n setLocale,\n onLocaleChange,\n msg,\n number,\n date,\n getLocale,\n };\n}\n","/**\n * Color utilities — HSL-based color generation from a seed color\n */\n\n// ─── Conversion ───\n\nexport function hexToRgb(hex) {\n hex = hex.replace('#', '');\n if (hex.length === 3) hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n return {\n r: parseInt(hex.slice(0, 2), 16),\n g: parseInt(hex.slice(2, 4), 16),\n b: parseInt(hex.slice(4, 6), 16),\n };\n}\n\nexport function rgbToHsl(r, g, b) {\n r /= 255;\n g /= 255;\n b /= 255;\n const max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n let h,\n s,\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n return { h: Math.round(h * 360), s: Math.round(s * 100), l: Math.round(l * 100) };\n}\n\nexport function hslToRgb(h, s, l) {\n h /= 360;\n s /= 100;\n l /= 100;\n let r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n } else {\n const hue2rgb = (p, q, t) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n };\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return {\n r: Math.round(r * 255),\n g: Math.round(g * 255),\n b: Math.round(b * 255),\n };\n}\n\nexport function hexToHsl(hex) {\n const { r, g, b } = hexToRgb(hex);\n return rgbToHsl(r, g, b);\n}\n\nexport function hslToHex(h, s, l) {\n const { r, g, b } = hslToRgb(h, s, l);\n return '#' + [r, g, b].map((x) => x.toString(16).padStart(2, '0')).join('');\n}\n\nexport function rgbString(r, g, b) {\n return `${r} ${g} ${b}`;\n}\n\n// ─── Palette generation ───\n\n/**\n * Generate a 10-step palette (50-900) from a seed HSL.\n * Lightness curve: 50→97%, 100→93%, 200→86%, 300→76%, 400→64%,\n * 500→seed%, 600→45%, 700→38%, 800→28%, 900→18%\n */\nexport function generatePalette(h, s, l) {\n const steps = [\n [50, 97, 90],\n [100, 93, 85],\n [200, 86, 78],\n [300, 76, 68],\n [400, 64, 58],\n [500, s, l], // seed\n [600, s, 45],\n [700, s, 38],\n [800, s, 28],\n [900, s, 18],\n ];\n\n const palette = {};\n for (const [step, sat, light] of steps) {\n palette[step] = hslToHex(h, sat, light);\n }\n return palette;\n}\n\n/**\n * Generate semantic colors by shifting hue from seed.\n * success: +120°, warning: +40°, error: -20° (or +340°), info: +200°\n */\nexport function generateSemantic(h, s, l) {\n const shift = (hue, sat, light) => {\n const h2 = ((hue % 360) + 360) % 360;\n return hslToHex(h2, sat, light);\n };\n\n return {\n success: {\n 500: shift(h + 120, 72, 45),\n light: shift(h + 120, 60, 92),\n },\n warning: {\n 500: shift(h + 40, 85, 55),\n light: shift(h + 40, 80, 93),\n },\n error: {\n 500: shift(h - 20, 78, 55),\n light: shift(h - 20, 70, 93),\n },\n info: {\n 500: shift(h + 200, 72, 55),\n light: shift(h + 200, 65, 93),\n },\n };\n}\n","/**\n * Generate CSS custom properties (tokens) from a palette.\n */\n\nimport { hexToRgb, rgbString } from './color.js';\n\nfunction rgb(hex) {\n const { r, g, b } = hexToRgb(hex);\n return rgbString(r, g, b);\n}\n\n/**\n * Generate light theme tokens from palette + semantic colors.\n */\nexport function generateLightTokens(palette, semantic) {\n return {\n // Primary palette\n 'lux-primary-50': rgb(palette[50]),\n 'lux-primary-100': rgb(palette[100]),\n 'lux-primary-200': rgb(palette[200]),\n 'lux-primary-300': rgb(palette[300]),\n 'lux-primary-400': rgb(palette[400]),\n 'lux-primary-500': rgb(palette[500]),\n 'lux-primary-600': rgb(palette[600]),\n 'lux-primary-700': rgb(palette[700]),\n 'lux-primary-800': rgb(palette[800]),\n 'lux-primary-900': rgb(palette[900]),\n\n // Semantic\n 'lux-success': rgb(semantic.success[500]),\n 'lux-warning': rgb(semantic.warning[500]),\n 'lux-error': rgb(semantic.error[500]),\n 'lux-info': rgb(semantic.info[500]),\n\n // Surface / background (light mode)\n 'lux-bg': '15 23 42',\n 'lux-bg-alt': '30 41 59',\n 'lux-surface': '15 23 42',\n 'lux-card': '30 41 59',\n 'lux-overlay': '0 0 0 / 50%',\n\n // Text\n 'lux-text': '241 245 249',\n 'lux-text-dim': '148 163 184',\n 'lux-text-muted': '100 116 139',\n\n // Border\n 'lux-border': '51 65 85',\n 'lux-border-light': '71 85 105',\n\n // Interactive\n 'lux-hover': '255 255 255 / 5%',\n 'lux-active': '255 255 255 / 10%',\n 'lux-focus': '0 0 0 / 40%',\n\n // Radius\n 'lux-radius-sm': '6px',\n 'lux-radius': '8px',\n 'lux-radius-lg': '12px',\n 'lux-radius-xl': '16px',\n 'lux-radius-full': '9999px',\n };\n}\n\n/**\n * Generate dark theme tokens.\n */\nexport function generateDarkTokens(palette, semantic) {\n return {\n // Primary — use lighter variants for dark mode\n 'lux-primary-50': rgb(palette[900]),\n 'lux-primary-100': rgb(palette[800]),\n 'lux-primary-200': rgb(palette[700]),\n 'lux-primary-300': rgb(palette[600]),\n 'lux-primary-400': rgb(palette[400]),\n 'lux-primary-500': rgb(palette[500]),\n 'lux-primary-600': rgb(palette[300]),\n 'lux-primary-700': rgb(palette[200]),\n 'lux-primary-800': rgb(palette[100]),\n 'lux-primary-900': rgb(palette[50]),\n\n // Semantic\n 'lux-success': rgb(semantic.success[500]),\n 'lux-warning': rgb(semantic.warning[500]),\n 'lux-error': rgb(semantic.error[500]),\n 'lux-info': rgb(semantic.info[500]),\n\n // Surface (dark mode)\n 'lux-bg': '15 23 42',\n 'lux-bg-alt': '30 41 59',\n 'lux-surface': '15 23 42',\n 'lux-card': '30 41 59',\n 'lux-overlay': '0 0 0 / 70%',\n\n // Text\n 'lux-text': '241 245 249',\n 'lux-text-dim': '148 163 184',\n 'lux-text-muted': '100 116 139',\n\n // Border\n 'lux-border': '51 65 85',\n 'lux-border-light': '71 85 105',\n\n // Interactive\n 'lux-hover': '255 255 255 / 8%',\n 'lux-active': '255 255 255 / 12%',\n 'lux-focus': '0 0 0 / 50%',\n\n // Radius (same as light)\n 'lux-radius-sm': '6px',\n 'lux-radius': '8px',\n 'lux-radius-lg': '12px',\n 'lux-radius-xl': '16px',\n 'lux-radius-full': '9999px',\n };\n}\n\n/**\n * Convert token map to CSS string.\n */\nexport function tokensToCSS(tokens, indent = ' ') {\n let css = ':root {\\n';\n for (const [key, value] of Object.entries(tokens)) {\n css += `${indent}--${key}: ${value};\\n`;\n }\n css += '}';\n return css;\n}\n","/**\n * createTheme — generate a complete theme from colors.\n *\n * Usage:\n * const theme = createTheme({ primary: '#6c5ce7' });\n * const theme = createTheme({\n * primary: '#6c5ce7', success: '#10b981',\n * warning: '#f59e0b', error: '#ef4444', info: '#3b82f6'\n * });\n * theme.setColors({ success: '#22c55e' });\n * theme.apply();\n */\n\nimport { hexToHsl, hslToHex } from './color.js';\nimport { generatePalette } from './color.js';\nimport { generateLightTokens, generateDarkTokens, tokensToCSS } from './tokens.js';\n\nconst defaultColors = {\n primary: '#6c5ce7',\n success: '#10b981',\n warning: '#f59e0b',\n error: '#ef4444',\n info: '#3b82f6',\n};\n\nexport function createTheme(options = {}) {\n if (typeof options === 'string') options = { primary: options };\n\n const _colors = { ...defaultColors, ...options.colors };\n let _dark = options.dark ?? false;\n let _radius = options.radius ?? '8px';\n let _font =\n options.font ?? '-apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif';\n\n function _build() {\n const { h, s, l } = hexToHsl(_colors.primary);\n const palette = generatePalette(h, s, l);\n\n const semantic = {};\n for (const [name, hex] of Object.entries(_colors)) {\n if (name === 'primary') continue;\n const { h: sh, s: ss } = hexToHsl(hex);\n semantic[name] = { 500: hex, light: hslToHex(sh, 60, 93) };\n }\n\n const tokens = _dark\n ? generateDarkTokens(palette, semantic)\n : generateLightTokens(palette, semantic);\n\n tokens['lux-radius'] = _radius;\n tokens['lux-font'] = _font;\n\n return tokens;\n }\n\n function _inject(tokens) {\n let el = document.getElementById('lux-theme');\n if (!el) {\n el = document.createElement('style');\n el.id = 'lux-theme';\n document.head.appendChild(el);\n }\n el.textContent = tokensToCSS(tokens);\n }\n\n return {\n apply() {\n _inject(_build());\n },\n\n setColors(patch) {\n Object.assign(_colors, patch);\n this.apply();\n },\n\n setDark(dark) {\n _dark = dark;\n this.apply();\n },\n getCSS() {\n return tokensToCSS(_build());\n },\n getTokens() {\n return _build();\n },\n getColors() {\n return { ..._colors };\n },\n\n get primary() {\n return _colors.primary;\n },\n get dark() {\n return _dark;\n },\n };\n}\n","/**\n * Lux — Lightweight Web Components Framework\n */\n\n// ─── Core exports ───\n\n// Template engine\nexport { html, svg, css, render, isTemplateResult, nothing, escapeHtml } from './template.js';\n\n// Directives\nexport { repeat, when, show, classMap, styleMap, guard } from './template.js';\n\n// Element base class\nexport { LuxElement, registerComponent, createComponent } from './element.js';\n\nexport { createRouter } from './router.js';\n\nexport { createI18n, msg, number, date, getLocale } from './i18n/index.js';\n\nexport { createTheme } from './theme/index.js';\n\nexport const version = '0.1.0';\n"],"names":["registerComponent"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ var Lux=function(t){"use strict";const e=Symbol.for("lux-nothing");function r(t,...e){return{_$luxType$:1,strings:t,values:e}}function n(t){return t&&void 0!==t._$luxType$}const s=/(?:([@.?][\w-]+)|(ref)|(class))=\s*$/;function o(t,r,s){if(r!==e&&null!=r)if(function(t){return t&&"repeat"===t._type}(r))!function(t,e){const{items:r,keyFn:s,renderFn:o}=e,i=t._repeatState;if(i)for(const t of i.entries)t.span&&t.span.parentNode&&t.span.parentNode.removeChild(t.span);const a=document.createDocumentFragment(),l=[];for(const t of r){const e=s(t),r=o(t),i=document.createElement("span");i.style.display="contents",n(r)?c(r,i):null!=r&&!1!==r&&i.appendChild(document.createTextNode(String(r))),a.appendChild(i),l.push({key:e,result:r,span:i})}t.appendChild(a),t._repeatState={entries:l}}(t,r);else if(n(r))c(r,t);else if(Array.isArray(r)){i(t);for(const e of r)if(n(e)){const r=document.createElement("span");r.style.display="contents",c(e,r),t.appendChild(r)}else e instanceof Node?t.appendChild(e):null!=e&&!1!==e&&t.appendChild(document.createTextNode(String(e)))}else{if(r instanceof Node)return i(t),void t.appendChild(r);1===t.childNodes.length&&t.firstChild.nodeType===Node.TEXT_NODE?t.firstChild.textContent=String(r):(i(t),t.appendChild(document.createTextNode(String(r))))}else i(t)}function i(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function a(t,r){const{element:n,name:s,prefix:o}=t;switch(o){case"@":{const o=t.committedValue,i=null==r||r===e,a=i&&null!=o||r?.capture!==o?.capture||r?.once!==o?.once||r?.passive!==o?.passive,c=!i&&(null==o||a);if(a&&n.removeEventListener(s,t._handler||o,o),c)if("function"==typeof r){const e=t._host||(t._host={handleEvent(e){const r=t.committedValue;if("function"==typeof r){const t=n.getRootNode().host||n;r.call(t,e)}}});t._handler=e,n.addEventListener(s,e)}else if("object"==typeof r&&r?.handleEvent){const e={handleEvent:t=>r.handleEvent.call(r,t)};t._handler=e,n.addEventListener(s,e,{capture:r.capture,once:r.once,passive:r.passive})}t.committedValue=r;break}case".":n[s]=r===e?void 0:r;break;case"?":n.toggleAttribute(s,!!r);break;case"ref":"function"==typeof r&&r(n);break;case"class":if("string"==typeof r)n.className=r;else if("object"==typeof r&&null!=r){const t=n.className||"",e=t?t.split(/\s+/):[];for(const[t,n]of Object.entries(r))if(n)e.includes(t)||e.push(t);else{const r=e.indexOf(t);-1!==r&&e.splice(r,1)}n.className=e.filter(Boolean).join(" ")}break;default:null==r||!1===r?n.removeAttribute(s):n.setAttribute(s,!0===r?"":String(r))}}function c(t,e,r){if(!n(t))return void(e.textContent=t??"");const{strings:i,values:c}=t;if(e._luxActiveParts&&e._luxStrings===i){for(const t of e._luxActiveParts)t.index<c.length&&("child"===t.type?o(t.span,c[t.index]):a(t,c[t.index]));return}const l=document.createElement("template"),u=function(t){const e=[];let r="";for(let n=0;n<t.length;n++)if(r+=t[n],n<t.length-1){const t=r.match(s);if(t){const s=t[1],o=!!t[2],i=!!t[3];let a="",c="";s?(a=s[0],c=s.slice(1)):o?(a="ref",c="ref"):i&&(a="class",c="class");const l=`lux-attr-${n}`;r=r.slice(0,-t[0].length)+`${l}="${c}" `,e.push({type:"attr",name:c,prefix:a,marker:l,index:n})}else{const t=`lux-${n}`;r+=`\x3c!--${t}--\x3e`,e.push({type:"child",marker:t,index:n})}}return{html:r,parts:e}}(i);l.innerHTML=u.html;const p=l.content.cloneNode(!0),h=[];for(const t of u.parts)if("child"===t.type){const e=document.createTreeWalker(p,NodeFilter.SHOW_COMMENT);let r;for(;r=e.nextNode();)if(r.data===t.marker){const e=document.createElement("span");e.style.display="contents",r.parentNode.replaceChild(e,r),o(e,c[t.index]),h.push({type:"child",span:e,index:t.index});break}}else{const e=p.querySelector(`[${t.marker}]`);if(e){e.removeAttribute(t.marker);const r={type:"attr",element:e,name:t.name,prefix:t.prefix,index:t.index,committedValue:void 0};a(r,c[t.index]),h.push(r)}}e.textContent="",e.appendChild(p),e._luxActiveParts=h,e._luxStrings=i}const l=new Set;let u=!1;function p(t){var e;l.add(t),u||(u=!0,e=()=>{u=!1;const t=[...l];l.clear();for(const e of t)e._$performUpdate()},Promise.resolve().then(e))}const h={toAttribute(t,e){switch(e){case Boolean:return t?"":null;case Object:case Array:return null==t?null:JSON.stringify(t);default:return t}},fromAttribute(t,e){switch(e){case Boolean:return null!==t;case Number:return Number(t);case Object:case Array:try{return JSON.parse(t)}catch{return null}default:return t}}};class d extends HTMLElement{static properties={};static styles=void 0;static finalized=!1;static elementProperties=new Map;static __prepare(){if(this.hasOwnProperty("elementProperties"))return;const t=Object.getPrototypeOf(this);t.finalize&&t.finalize(),this.elementProperties=new Map(t.elementProperties)}static get observedAttributes(){return this.finalize(),this.__attributeToPropertyMap?[...this.__attributeToPropertyMap.keys()]:[]}static finalize(){if(!this.hasOwnProperty("finalized")){if(this.finalized=!0,this.__prepare(),this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const r of e)this.createProperty(r,t[r])}this.__attributeToPropertyMap=new Map;for(const[t,e]of this.elementProperties){const r=this.__attributeNameForProperty(t,e);void 0!==r&&this.__attributeToPropertyMap.set(r,t)}this.elementStyles=this.styles}}static __attributeNameForProperty(t,e){const r=e.attribute;return!1===r?void 0:"string"==typeof r?r:"string"==typeof t?t.replace(/([A-Z])/g,"-$1").toLowerCase():void 0}static createProperty(t,e={}){if(this.__prepare(),!this.elementProperties.has(t)&&(e.state&&(e={...e,attribute:!1}),this.elementProperties.set(t,e),!e.noAccessor)){const r=Symbol(),n=this.getPropertyDescriptor(t,r,e);void 0!==n&&Object.defineProperty(this.prototype,t,n)}}static getPropertyDescriptor(t,e,r){const{type:n,reflect:s,converter:o}=r;return{get(){return this[e]},set(n){const s=this[e];this[e]=n,this.requestUpdate(t,s,r)},configurable:!0,enumerable:!0}}static _initializers=[];static addInitializer(t){this._initializers=[...this._initializers||[],t]}static shadowRootOptions={mode:"open"};constructor(){super(),this.__updatePending=!1,this.__hasUpdated=!1,this.__controllers=new Set,this.__reflectingProperty=null,this.constructor.hasOwnProperty("finalized")||this.constructor.finalize(),this.__saveInstanceProperties(),this.requestUpdate();for(const t of this.constructor._initializers||[])t(this)}__saveInstanceProperties(){const t=this.constructor.elementProperties;if(t)for(const[e,r]of t)if(!r.noAccessor&&this.hasOwnProperty(e)){const t=this[e];delete this[e],this.__instancePropertyValues=this.__instancePropertyValues||new Map,this.__instancePropertyValues.set(e,t)}}connectedCallback(){this.__controllers.forEach(t=>t.hostConnected?.()),this.constructor.hasOwnProperty("finalized")||this.constructor.finalize();const t=this.constructor.__attributeToPropertyMap;if(t)for(const[e,r]of t){const t=this.getAttribute(e);if(null!==t){const e=this.constructor.elementProperties.get(r);if(e){const n=e.converter?.fromAttribute??h.fromAttribute;this[r]=n(t,e.type)}}}if(this.__instancePropertyValues){for(const[t,e]of this.__instancePropertyValues)this[t]=e;this.__instancePropertyValues=void 0}this.renderRoot,this.__hasUpdated||this.requestUpdate()}disconnectedCallback(){this.__controllers.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,e,r){const n=this.constructor.__attributeToPropertyMap?.get(t);if(void 0!==n&&this.__reflectingProperty!==n){const t=this.constructor.elementProperties.get(n);if(t){const e="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:h;this.__reflectingProperty=n;const s=e.fromAttribute(r,t.type);this[n]=s,this.__reflectingProperty=null}}}get renderRoot(){return this._renderRoot||(this._renderRoot=this.createRenderRoot(),this.__adoptStyles()),this._renderRoot}createRenderRoot(){return this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions)}__adoptStyles(){const t=this.constructor.elementStyles;if(!t)return;const e=Array.isArray(t)?t:[t],r=[];for(const t of e)"string"==typeof t?r.push(t):n(t)&&r.push(t.strings.join(""));if(0!==r.length)if(void 0!==this._renderRoot.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(r.join("\n")),this._renderRoot.adoptedStyleSheets=[...this._renderRoot.adoptedStyleSheets,t]}else{const t=document.createElement("style");t.textContent=r.join("\n"),this._renderRoot.appendChild(t)}}enableUpdating(t){}get updateComplete(){return this.__updateCompletePromise??Promise.resolve()}get hasUpdated(){return this.__hasUpdated}get isUpdatePending(){return this.__updatePending}requestUpdate(t,e,r){if(void 0!==t){if(!(r?.hasChanged??((t,e)=>!Object.is(t,e)))(this[t],e))return}this.__updatePending||(this.__updatePending=!0,p(this))}async performUpdate(){if(this.isUpdatePending){this.__updatePending=!1,this.willUpdate(new Map),this.__controllers.forEach(t=>t.hostUpdate?.()),this.update(new Map),this.__hasUpdated=!0;for(const[t,e]of this.constructor.elementProperties)if(e.reflect){const r=this[t],n=e.converter?.toAttribute??h.toAttribute,s=this.constructor.__attributeNameForProperty(t,e);if(void 0!==s){this.__reflectingProperty=t;const o=n(r,e.type);null==o?this.removeAttribute(s):this.setAttribute(s,String(o)),this.__reflectingProperty=null}}this.__controllers.forEach(t=>t.hostUpdated?.()),this.firstUpdated(new Map),this.updated(new Map)}}_$performUpdate(){this.performUpdate()}shouldUpdate(t){return!0}willUpdate(t){}update(t){const e=this.render();e&&c(e,this.renderRoot)}render(){return r``}firstUpdated(t){}updated(t){}propertyChangedCallback(t,e,r){}addController(t){this.__controllers.add(t),this.isConnected&&t.hostConnected?.()}removeController(t){this.__controllers.delete(t)}emit(t,e,r={}){return this.dispatchEvent(new CustomEvent(t,{detail:e,bubbles:!0,composed:!0,...r}))}$(t){return this.renderRoot.querySelector(t)}$$(t){return this.renderRoot.querySelectorAll(t)}}function f(t,e){if(!t.includes("-"))throw new Error(`Component name must contain a hyphen: ${t}`);customElements.get(t)||customElements.define(t,e)}function m(t){let e=t.replace(/\/+$/,"")||"/";if("/"===e)return/^\/?$/;const r="^"+e.replace(/:(\w+)/g,"([^/]+)").replace(/\(\.\*\)/g,"(.*)")+"$";return new RegExp(r)}function _(t){const e=[],r=/:(\w+)/g;let n;for(;n=r.exec(t);)e.push(n[1]);return e}function y(t){if(!t||!t.prototype)return Promise.resolve(null);const e=t.tagName||t.name.replace(/([A-Z])/g,"-$1").toLowerCase().replace(/^-/,"");return customElements.get(e)||f(e,t),Promise.resolve(e)}class g{constructor(t={}){this.routes=(t.routes||[]).map(t=>({...t,_regex:m(t.path),_paramNames:_(t.path),_children:(t.children||[]).map(t=>({...t,_regex:m(t.path),_paramNames:_(t.path)}))})),this._guards=[],this._listeners=[],this.current=null,this._prev=null,this._onHashChange=this._onHashChange.bind(this)}start(){window.addEventListener("hashchange",this._onHashChange),this._resolve()}stop(){window.removeEventListener("hashchange",this._onHashChange)}push(t){location.hash=t}replace(t){const e=new URL(location.href);e.hash=t,history.replaceState(null,"",e.toString()),this._onHashChange()}back(){history.back()}forward(){history.forward()}beforeEach(t){return this._guards.push(t),()=>{const e=this._guards.indexOf(t);e>=0&&this._guards.splice(e,1)}}_subscribe(t){return this._listeners.push(t),()=>{const e=this._listeners.indexOf(t);e>=0&&this._listeners.splice(e,1)}}_onHashChange(){this._resolve()}_resolve(){const t=location.hash||"#/",e=function(t){return t.replace(/^#/,"").split("?")[0]||"/"}(t),r=function(t){const e=t.indexOf("?");if(-1===e)return{};const r={};for(const n of t.slice(e+1).split("&")){const[t,e]=n.split("=");t&&(r[decodeURIComponent(t)]=e?decodeURIComponent(e):"")}return r}(t);let n=null;for(const t of this.routes){const s=t._children.length>0;let o;if(s){const r="/"===t.path?"":t.path.replace(/\/+$/,"");(e===r||e.startsWith(r+"/")||""===r&&e.startsWith("/"))&&(o=[e])}else o=e.match(t._regex);if(o){const i={};if(t._paramNames.forEach((t,e)=>{void 0!==o[e+1]&&(i[t]=decodeURIComponent(o[e+1]))}),n={route:t,params:{...i},query:r,path:e},s){const s="/"===t.path?"":t.path.replace(/\/+$/,""),o=e.slice(s.length)||"/";let a=!1;for(const s of t._children){const t=o.match(s._regex);if(t){const o={};s._paramNames.forEach((e,r)=>{o[e]=decodeURIComponent(t[r+1])}),n.child={route:s,params:{...i,...o},query:r,path:e},a=!0;break}}if(!a&&t.redirect&&e===("/"===t.path?"/":t.path))return void this.replace(t.redirect);if(!a){n=null;continue}}else if(t.redirect)return void this.replace(t.redirect);break}}this.current=n||{route:null,params:{},query:r,path:e};for(const t of this._guards)if(!1===t(this.current,this._prev))return void(this._prev&&history.replaceState(null,"","#"+this._prev.path));this._prev={...this.current};for(const t of this._listeners)t(this.current)}}function x(t,e){let r=1;for(let n=e+1;n<t.length;n++)if("{"===t[n])r++;else if("}"===t[n]&&(r--,0===r))return n;return-1}function b(t,e={}){if(!t||"string"!=typeof t)return"";const r=function(t){const e=[];let r=0;for(;r<t.length;){if("{"===t[r]){const n=x(t,r);if(-1!==n){e.push({start:r,end:n,expr:t.slice(r+1,n)}),r=n+1;continue}}r++}return e}(t);let n="",s=0;for(const{start:o,end:i,expr:a}of r){n+=t.slice(s,o);const r=a.trim(),c=r.match(/^(\w+),\s*plural\s*,\s*(.+)$/);if(c){const[,t,r]=c;n+=v(Number(e[t])||0,r),s=i+1;continue}const l=r.match(/^(\w+),\s*select\s*,\s*(.+)$/);if(l){const[,t,r]=l;n+=C(String(e[t]||""),r),s=i+1;continue}n+=e[r]??t.slice(o,i+1),s=i+1}return n+=t.slice(s),n}function v(t,e){const r=P(e),n=r[`=${t}`];if(void 0!==n)return n.replace(/#/g,String(t));return(r[1===t?"one":"other"]||r.other||"").replace(/#/g,String(t))}function C(t,e){const r=P(e);return r[t]||r.other||""}function P(t){const e={},r=/(\w+|=\d+)\{([^}]*)\}/g;let n;for(;n=r.exec(t);)e[n[1]]=n[2];return e}let w="",S={},E=[];function $(t,e={}){return b((S[w]||S)[t]??t,e)}function A(t,e){return function(t,e={},r){try{return new Intl.NumberFormat(r,e).format(t)}catch{return String(t)}}(t,"string"==typeof e?{style:e}:e,w)}function O(t,e){return function(t,e={},r){try{return new Intl.DateTimeFormat(r,e).format(t)}catch{return String(t)}}(t,e,w)}function k(){return w}function N(t){return 3===(t=t.replace("#","")).length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),{r:parseInt(t.slice(0,2),16),g:parseInt(t.slice(2,4),16),b:parseInt(t.slice(4,6),16)}}function M(t){const{r:e,g:r,b:n}=N(t);return function(t,e,r){t/=255,e/=255,r/=255;const n=Math.max(t,e,r),s=Math.min(t,e,r);let o,i,a=(n+s)/2;if(n===s)o=i=0;else{const c=n-s;switch(i=a>.5?c/(2-n-s):c/(n+s),n){case t:o=((e-r)/c+(e<r?6:0))/6;break;case e:o=((r-t)/c+2)/6;break;case r:o=((t-e)/c+4)/6}}return{h:Math.round(360*o),s:Math.round(100*i),l:Math.round(100*a)}}(e,r,n)}function R(t,e,r){const{r:n,g:s,b:o}=function(t,e,r){let n,s,o;if(t/=360,r/=100,0==(e/=100))n=s=o=r;else{const i=(t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t),a=r<.5?r*(1+e):r+e-r*e,c=2*r-a;n=i(c,a,t+1/3),s=i(c,a,t),o=i(c,a,t-1/3)}return{r:Math.round(255*n),g:Math.round(255*s),b:Math.round(255*o)}}(t,e,r);return"#"+[n,s,o].map(t=>t.toString(16).padStart(2,"0")).join("")}function U(t){const{r:e,g:r,b:n}=N(t);return function(t,e,r){return`${t} ${e} ${r}`}(e,r,n)}function T(t,e=" "){let r=":root {\n";for(const[n,s]of Object.entries(t))r+=`${e}--${n}: ${s};\n`;return r+="}",r}const j={primary:"#6c5ce7",success:"#10b981",warning:"#f59e0b",error:"#ef4444",info:"#3b82f6"};return t.LuxElement=d,t.classMap=function(t){return t},t.createComponent=function(t,e={}){const{properties:r={}}=e;return class extends d{static properties=r;render(){return t.call(this,this)}}},t.createI18n=function(t={}){return w=t.locale||("undefined"!=typeof navigator&&navigator.language?navigator.language:"en"),S=t.messages||{},{get locale(){return w},setLocale:function(t){w=t;for(const e of E)e(t)},onLocaleChange:function(t){return E.push(t),()=>{const e=E.indexOf(t);e>=0&&E.splice(e,1)}},msg:$,number:A,date:O,getLocale:k}},t.createRouter=function(t){const e=new g(t);if(!customElements.get("router-outlet")){class t extends HTMLElement{connectedCallback(){this.style.display="contents",this._unsub=e._subscribe(()=>this._update()),this._update()}disconnectedCallback(){this._unsub?.(),this._loadingAbort?.abort()}async _update(){const t=this._getMatch();if(this._loadingAbort?.abort(),!t||!t.route||!t.route.component)return void(this.textContent="");if(this._lastRoute===t.route)return;const e=new AbortController;this._loadingAbort=e;try{const n=await(r=t.route.component,"string"==typeof r?Promise.resolve(r):"function"==typeof r&&r.prototype instanceof HTMLElement?y(r):"function"==typeof r?r().then(t=>y(t.default||t[Object.keys(t)[0]])):Promise.resolve(null));if(e.signal.aborted)return;if(this.textContent="",n){const e=document.createElement(n);t.params&&(e.params=t.params),t.query&&(e.query=t.query),this.appendChild(e),this._lastRoute=t.route}}catch(t){e.signal.aborted||(console.error("[Lux Router] Failed to load component:",t),this.textContent="")}var r}_getMatch(){const t=parseInt(this.getAttribute("level"))||0;let r=e.current;for(let e=0;e<t;e++){if(!r||!r.child)return null;r=r.child}return r}}f("router-outlet",t)}return e.start(),e},t.createTheme=function(t={}){"string"==typeof t&&(t={primary:t});const e={...j,...t.colors};let r=t.dark??!1,n=t.radius??"8px",s=t.font??'-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif';function o(){const{h:t,s:o,l:i}=M(e.primary),a=function(t,e,r){const n=[[50,97,90],[100,93,85],[200,86,78],[300,76,68],[400,64,58],[500,e,r],[600,e,45],[700,e,38],[800,e,28],[900,e,18]],s={};for(const[e,r,o]of n)s[e]=R(t,r,o);return s}(t,o,i),c={};for(const[t,r]of Object.entries(e)){if("primary"===t)continue;const{h:e}=M(r);c[t]={500:r,light:R(e,60,93)}}const l=r?function(t,e){return{"lux-primary-50":U(t[900]),"lux-primary-100":U(t[800]),"lux-primary-200":U(t[700]),"lux-primary-300":U(t[600]),"lux-primary-400":U(t[400]),"lux-primary-500":U(t[500]),"lux-primary-600":U(t[300]),"lux-primary-700":U(t[200]),"lux-primary-800":U(t[100]),"lux-primary-900":U(t[50]),"lux-success":U(e.success[500]),"lux-warning":U(e.warning[500]),"lux-error":U(e.error[500]),"lux-info":U(e.info[500]),"lux-bg":"15 23 42","lux-bg-alt":"30 41 59","lux-surface":"15 23 42","lux-card":"30 41 59","lux-overlay":"0 0 0 / 70%","lux-text":"241 245 249","lux-text-dim":"148 163 184","lux-text-muted":"100 116 139","lux-border":"51 65 85","lux-border-light":"71 85 105","lux-hover":"255 255 255 / 8%","lux-active":"255 255 255 / 12%","lux-focus":"0 0 0 / 50%","lux-radius-sm":"6px","lux-radius":"8px","lux-radius-lg":"12px","lux-radius-xl":"16px","lux-radius-full":"9999px"}}(a,c):function(t,e){return{"lux-primary-50":U(t[50]),"lux-primary-100":U(t[100]),"lux-primary-200":U(t[200]),"lux-primary-300":U(t[300]),"lux-primary-400":U(t[400]),"lux-primary-500":U(t[500]),"lux-primary-600":U(t[600]),"lux-primary-700":U(t[700]),"lux-primary-800":U(t[800]),"lux-primary-900":U(t[900]),"lux-success":U(e.success[500]),"lux-warning":U(e.warning[500]),"lux-error":U(e.error[500]),"lux-info":U(e.info[500]),"lux-bg":"15 23 42","lux-bg-alt":"30 41 59","lux-surface":"15 23 42","lux-card":"30 41 59","lux-overlay":"0 0 0 / 50%","lux-text":"241 245 249","lux-text-dim":"148 163 184","lux-text-muted":"100 116 139","lux-border":"51 65 85","lux-border-light":"71 85 105","lux-hover":"255 255 255 / 5%","lux-active":"255 255 255 / 10%","lux-focus":"0 0 0 / 40%","lux-radius-sm":"6px","lux-radius":"8px","lux-radius-lg":"12px","lux-radius-xl":"16px","lux-radius-full":"9999px"}}(a,c);return l["lux-radius"]=n,l["lux-font"]=s,l}return{apply(){!function(t){let e=document.getElementById("lux-theme");e||(e=document.createElement("style"),e.id="lux-theme",document.head.appendChild(e)),e.textContent=T(t)}(o())},setColors(t){Object.assign(e,t),this.apply()},setDark(t){r=t,this.apply()},getCSS:()=>T(o()),getTokens:()=>o(),getColors:()=>({...e}),get primary(){return e.primary},get dark(){return r}}},t.css=function(t,...e){return{_$luxType$:3,strings:t,values:e}},t.date=O,t.escapeHtml=function(t){if(null==t)return"";const e=String(t);return-1===e.indexOf("<")&&-1===e.indexOf(">")&&-1===e.indexOf("&")?e:e.replace(/[<>&"']/g,t=>({"<":"&lt;",">":"&gt;","&":"&amp;",'"':"&quot;","'":"&#39;"}[t]))},t.getLocale=k,t.guard=function(t,e){return e()},t.html=r,t.isTemplateResult=n,t.msg=$,t.nothing=e,t.number=A,t.registerComponent=function(t,e){if(!t.includes("-"))throw new Error(`Component name must contain a hyphen: ${t}`);customElements.get(t)||customElements.define(t,e)},t.render=c,t.repeat=function(t,e,r){return{_type:"repeat",items:t,keyFn:e,renderFn:r}},t.show=function(t,e=""){return t?e:""},t.styleMap=function(t){return t},t.svg=function(t,...e){return{_$luxType$:2,strings:t,values:e}},t.version="0.1.0",t.when=function(t,e,r=()=>""){return t?e():r()},t}({});