@yewdiel21/motion-kit 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +174 -155
  2. package/bin/motion-kit.mjs +3 -3
  3. package/dist/auto/index.d.ts +6 -3
  4. package/dist/auto/index.js +8 -2
  5. package/dist/auto/index.js.map +1 -1
  6. package/dist/{chunk-EY4BJKC4.js → chunk-6IRJYXJU.js} +2 -2
  7. package/dist/{chunk-CU6SXW3E.js → chunk-A6QQCF6V.js} +1309 -310
  8. package/dist/chunk-A6QQCF6V.js.map +1 -0
  9. package/dist/chunk-JXRS3OEA.js +3638 -0
  10. package/dist/chunk-JXRS3OEA.js.map +1 -0
  11. package/dist/css/components/add-to-cart.css +72 -0
  12. package/dist/css/components/bidirectional-slider.css +168 -0
  13. package/dist/css/components/data-table.css +121 -26
  14. package/dist/css/components/filter-builder.css +10 -15
  15. package/dist/css/components/heatmap-chart.css +391 -0
  16. package/dist/css/components/hover-card.css +8 -2
  17. package/dist/css/components/image-preview.css +90 -2
  18. package/dist/css/components/json-viewer.css +33 -1
  19. package/dist/css/components/nav.css +102 -102
  20. package/dist/css/components/orbit-menu.css +130 -0
  21. package/dist/css/components/pagination.css +10 -5
  22. package/dist/css/components/pie-chart.css +390 -0
  23. package/dist/css/components/pill-button.css +135 -0
  24. package/dist/css/components/radar-chart.css +370 -0
  25. package/dist/css/components/radial-chart.css +398 -0
  26. package/dist/css/components/sankey-chart.css +358 -0
  27. package/dist/css/components/scroll-island.css +111 -0
  28. package/dist/css/components/select.css +136 -0
  29. package/dist/css/components/toolbar.css +122 -0
  30. package/dist/css/components/tree-view.css +79 -0
  31. package/dist/css/components/voice-dots.css +70 -0
  32. package/dist/elements/index.d.ts +180 -7
  33. package/dist/elements/index.js +287 -6
  34. package/dist/elements/index.js.map +1 -1
  35. package/dist/{engine-Cn6IhE3z.d.ts → engine-5zRIssTO.d.ts} +11 -1
  36. package/dist/index.css +1832 -168
  37. package/dist/index.d.ts +4 -4
  38. package/dist/index.js +33 -3
  39. package/dist/index.js.map +1 -1
  40. package/dist/react/index.d.ts +117 -11
  41. package/dist/react/index.js +314 -13
  42. package/dist/react/index.js.map +1 -1
  43. package/dist/{reduced-BBUusld6.d.ts → reduced-6X_bns60.d.ts} +1 -1
  44. package/dist/{reveal-DEvp6U6T.d.ts → reveal-BfyKKsw4.d.ts} +97 -4
  45. package/dist/store-CA2Qcun_.d.ts +453 -0
  46. package/package.json +9 -16
  47. package/registry.json +1096 -948
  48. package/src/auto/auto-init.ts +6 -0
  49. package/src/components/add-to-cart/README.md +34 -0
  50. package/src/components/add-to-cart/add-to-cart.css +71 -0
  51. package/src/components/add-to-cart/element.ts +20 -0
  52. package/src/components/add-to-cart/engine.ts +206 -0
  53. package/src/components/add-to-cart/react.tsx +29 -0
  54. package/src/components/bidirectional-slider/README.md +46 -0
  55. package/src/components/bidirectional-slider/bidirectional-slider.css +167 -0
  56. package/src/components/bidirectional-slider/element.ts +42 -0
  57. package/src/components/bidirectional-slider/engine.ts +289 -0
  58. package/src/components/bidirectional-slider/react.tsx +45 -0
  59. package/src/components/chart/README.md +10 -0
  60. package/src/components/chart/element.ts +2 -0
  61. package/src/components/chart/engine.ts +50 -23
  62. package/src/components/chart/parts.ts +237 -0
  63. package/src/components/chart/react.tsx +2 -2
  64. package/src/components/chart/use-chart.ts +55 -0
  65. package/src/components/data-table/README.md +3 -3
  66. package/src/components/data-table/data-table.css +121 -26
  67. package/src/components/data-table/engine.ts +81 -29
  68. package/src/components/editable-table/engine.ts +67 -11
  69. package/src/components/filter-builder/engine.ts +33 -2
  70. package/src/components/filter-builder/filter-builder.css +10 -15
  71. package/src/components/heatmap-chart/README.md +48 -0
  72. package/src/components/heatmap-chart/element.ts +21 -0
  73. package/src/components/heatmap-chart/engine.ts +281 -0
  74. package/src/components/heatmap-chart/heatmap-chart.css +93 -0
  75. package/src/components/heatmap-chart/react.tsx +14 -0
  76. package/src/components/hover-card/engine.ts +30 -1
  77. package/src/components/hover-card/hover-card.css +8 -2
  78. package/src/components/image-preview/element.ts +1 -1
  79. package/src/components/image-preview/engine.ts +95 -15
  80. package/src/components/image-preview/image-preview.css +90 -2
  81. package/src/components/image-preview/react.tsx +3 -3
  82. package/src/components/json-viewer/engine.ts +11 -2
  83. package/src/components/json-viewer/json-viewer.css +33 -1
  84. package/src/components/nav/README.md +12 -10
  85. package/src/components/nav/element.ts +5 -5
  86. package/src/components/nav/engine.ts +21 -14
  87. package/src/components/nav/nav.css +102 -102
  88. package/src/components/nav/react.tsx +4 -4
  89. package/src/components/orbit-menu/README.md +46 -0
  90. package/src/components/orbit-menu/element.ts +27 -0
  91. package/src/components/orbit-menu/engine.ts +179 -0
  92. package/src/components/orbit-menu/orbit-menu.css +129 -0
  93. package/src/components/orbit-menu/react.tsx +44 -0
  94. package/src/components/pagination/README.md +1 -1
  95. package/src/components/pagination/engine.ts +50 -4
  96. package/src/components/pagination/pagination.css +10 -5
  97. package/src/components/pie-chart/README.md +48 -0
  98. package/src/components/pie-chart/element.ts +30 -0
  99. package/src/components/pie-chart/engine.ts +283 -0
  100. package/src/components/pie-chart/pie-chart.css +92 -0
  101. package/src/components/pie-chart/react.tsx +14 -0
  102. package/src/components/pill-button/README.md +46 -0
  103. package/src/components/pill-button/element.ts +16 -0
  104. package/src/components/pill-button/engine.ts +77 -0
  105. package/src/components/pill-button/pill-button.css +134 -0
  106. package/src/components/pill-button/react.tsx +32 -0
  107. package/src/components/radar-chart/README.md +48 -0
  108. package/src/components/radar-chart/element.ts +30 -0
  109. package/src/components/radar-chart/engine.ts +327 -0
  110. package/src/components/radar-chart/radar-chart.css +72 -0
  111. package/src/components/radar-chart/react.tsx +14 -0
  112. package/src/components/radial-chart/README.md +48 -0
  113. package/src/components/radial-chart/element.ts +30 -0
  114. package/src/components/radial-chart/engine.ts +290 -0
  115. package/src/components/radial-chart/radial-chart.css +100 -0
  116. package/src/components/radial-chart/react.tsx +14 -0
  117. package/src/components/sankey-chart/README.md +48 -0
  118. package/src/components/sankey-chart/element.ts +31 -0
  119. package/src/components/sankey-chart/engine.ts +401 -0
  120. package/src/components/sankey-chart/react.tsx +14 -0
  121. package/src/components/sankey-chart/sankey-chart.css +60 -0
  122. package/src/components/scroll-island/README.md +34 -0
  123. package/src/components/scroll-island/element.ts +16 -0
  124. package/src/components/scroll-island/engine.ts +252 -0
  125. package/src/components/scroll-island/react.tsx +26 -0
  126. package/src/components/scroll-island/scroll-island.css +110 -0
  127. package/src/components/select/README.md +34 -0
  128. package/src/components/select/element.ts +26 -0
  129. package/src/components/select/engine.ts +267 -0
  130. package/src/components/select/react.tsx +33 -0
  131. package/src/components/select/select.css +135 -0
  132. package/src/components/toolbar/README.md +46 -0
  133. package/src/components/toolbar/element.ts +30 -0
  134. package/src/components/toolbar/engine.ts +230 -0
  135. package/src/components/toolbar/react.tsx +34 -0
  136. package/src/components/toolbar/toolbar.css +121 -0
  137. package/src/components/tree-view/element.ts +1 -1
  138. package/src/components/tree-view/engine.ts +174 -0
  139. package/src/components/tree-view/react.tsx +7 -3
  140. package/src/components/tree-view/tree-view.css +79 -0
  141. package/src/components/voice-dots/README.md +48 -0
  142. package/src/components/voice-dots/element.ts +45 -0
  143. package/src/components/voice-dots/engine.ts +243 -0
  144. package/src/components/voice-dots/react.tsx +52 -0
  145. package/src/components/voice-dots/voice-dots.css +69 -0
  146. package/src/elements/index.ts +39 -0
  147. package/src/index.ts +16 -0
  148. package/src/motion/liquid.ts +14 -4
  149. package/src/react/index.ts +14 -1
  150. package/dist/chunk-6P4P7NU6.js +0 -1401
  151. package/dist/chunk-6P4P7NU6.js.map +0 -1
  152. package/dist/chunk-CU6SXW3E.js.map +0 -1
  153. package/dist/store-DjkTBX7f.d.ts +0 -195
  154. /package/dist/{chunk-EY4BJKC4.js.map → chunk-6IRJYXJU.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/elements/base.ts","../../src/components/studio-dock/element.ts","../../src/components/trailer/element.ts","../../src/components/theme-picker/element.ts","../../src/components/dialog/element.ts","../../src/components/menu/element.ts","../../src/components/toast/element.ts","../../src/components/chat-background/element.ts","../../src/components/chat/element.ts","../../src/components/nav/element.ts","../../src/components/steps/element.ts","../../src/components/cursor/element.ts","../../src/components/island/element.ts","../../src/components/quantity/element.ts","../../src/components/pagination/element.ts","../../src/components/hover-card/element.ts","../../src/components/input-otp/element.ts","../../src/components/calendar/element.ts","../../src/components/slot-picker/element.ts","../../src/components/attachment/element.ts","../../src/components/skeleton/element.ts","../../src/components/questionnaire/element.ts","../../src/components/code-block/element.ts","../../src/components/context-menu/element.ts","../../src/components/drawer/element.ts","../../src/components/link-preview/element.ts","../../src/components/progress/element.ts","../../src/components/range-slider/element.ts","../../src/components/chart/element.ts","../../src/components/credit-card/element.ts","../../src/components/command-search/element.ts","../../src/components/hold-confirm/element.ts","../../src/components/image-preview/element.ts","../../src/components/like-button/element.ts","../../src/components/notification-bell/element.ts","../../src/components/password-strength/element.ts","../../src/components/scratch-card/element.ts","../../src/components/star-rating/element.ts","../../src/components/swipe-actions/element.ts","../../src/components/color-slider/element.ts","../../src/components/color-area/element.ts","../../src/components/color-field/element.ts","../../src/components/color-picker/element.ts","../../src/components/time-field/element.ts","../../src/components/range-calendar/element.ts","../../src/components/date-range-picker/element.ts","../../src/components/tooltip/element.ts","../../src/components/popover/element.ts","../../src/components/loading-button/element.ts","../../src/components/breadcrumb/element.ts","../../src/components/empty-state/element.ts","../../src/components/stat-card/element.ts","../../src/components/chart-tooltip/element.ts","../../src/components/multi-select/element.ts","../../src/components/tag-input/element.ts","../../src/components/date-time-picker/element.ts","../../src/components/filter-builder/element.ts","../../src/components/timeline/element.ts","../../src/components/activity-feed/element.ts","../../src/components/tree-view/element.ts","../../src/components/file-explorer/element.ts","../../src/components/json-viewer/element.ts","../../src/components/virtual-list/element.ts","../../src/components/resizable-panel/element.ts","../../src/components/split-view/element.ts","../../src/components/data-table/element.ts","../../src/components/editable-table/element.ts","../../src/components/rich-text-editor/element.ts","../../src/elements/index.ts"],"sourcesContent":["import type { Instance } from '../core/types';\n\n/*\n * Base for motion-kit custom elements (Astro / plain HTML). Light DOM only, so\n * themes and project CSS reach the markup. Attributes map to engine options\n * (kebab-case → camelCase); the engine is created on connect, recreated when an\n * observed attribute changes, and destroyed on disconnect.\n */\n\nexport type OptionType = 'string' | 'number' | 'boolean' | 'list' | 'json';\n\n/** `HTMLElement` in the browser; an empty class during SSR so importing never throws. */\nexport const SafeHTMLElement = (typeof HTMLElement === 'undefined' ? class {} : HTMLElement) as typeof HTMLElement;\n\nconst kebab = (name: string) => name.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);\n\nexport abstract class MkElement<I extends Instance = Instance> extends SafeHTMLElement {\n /** Option name (camelCase) → how to read its attribute. */\n static options: Record<string, OptionType> = {};\n\n static get observedAttributes() {\n return Object.keys(this.options).map(kebab);\n }\n\n /** The live engine (null while disconnected). */\n instance: I | null = null;\n\n protected abstract create(options: Record<string, unknown>): I;\n\n /** Options read from the attributes now. */\n get options(): Record<string, unknown> {\n const types = (this.constructor as typeof MkElement).options;\n const options: Record<string, unknown> = {};\n for (const [name, type] of Object.entries(types)) {\n const raw = this.getAttribute(kebab(name));\n if (type === 'boolean') {\n if (raw !== null) options[name] = raw !== 'false';\n continue;\n }\n if (raw === null) continue;\n if (type === 'number') {\n const value = Number(raw);\n if (Number.isFinite(value)) options[name] = value;\n } else if (type === 'list') options[name] = raw.split(',').map((item) => item.trim()).filter(Boolean);\n else if (type === 'json') {\n try {\n options[name] = JSON.parse(raw);\n } catch {\n // Ignore malformed JSON: the engine keeps its default.\n }\n } else options[name] = raw;\n }\n return options;\n }\n\n connectedCallback() {\n if (!this.instance) this.instance = this.create(this.options);\n }\n\n disconnectedCallback() {\n this.instance?.destroy();\n this.instance = null;\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n this.instance.destroy();\n this.instance = this.create(this.options);\n }\n}\n\n/** customElements.define once; later calls with the same name are ignored. */\nexport function defineElement(name: string, ctor: CustomElementConstructor) {\n if (typeof customElements === 'undefined' || customElements.get(name)) return;\n customElements.define(name, ctor);\n}\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createStudioDock, type StudioDockInstance, type StudioDockView } from './engine';\nexport class MkStudioDockElement extends MkElement<StudioDockInstance> {\n static options: Record<string, OptionType> = { duration: 'number', ease: 'string', focusOnOpen: 'boolean', trapFocus: 'boolean' };\n protected create(options: Record<string, unknown>) { return createStudioDock(this, options); }\n open(view?: StudioDockView) { this.instance?.open(view); }\n close() { this.instance?.close(); }\n toggle() { this.instance?.toggle(); }\n selectPage(index: number) { this.instance?.selectPage(index); }\n}\nexport const defineStudioDock = () => defineElement('mk-studio-dock', MkStudioDockElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTrailer, type TrailerInstance, type TrailerOptions } from './engine';\n\n/** Wrap a consumer-authored native <dialog> containing <video>. */\nexport class MkTrailerElement extends MkElement<TrailerInstance> {\n static options: Record<string, OptionType> = { autoplay: 'boolean', triggers: 'string', closeOnBackdrop: 'boolean' };\n protected create(options: Record<string, unknown>) {\n return createTrailer(this.querySelector('dialog'), options as TrailerOptions);\n }\n open(origin?: HTMLElement | null) { this.instance?.open(origin); }\n close() { this.instance?.close(); }\n}\nexport const defineTrailer = () => defineElement('mk-trailer', MkTrailerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createThemePicker, type ThemePickerInstance } from './engine';\n\n/**\n * <mk-theme-picker show-hidden themes=\"neogreen,pink\"></mk-theme-picker>\n * Emits `mk:theme` on document when a theme is chosen (from setTheme).\n */\nexport class MkThemePickerElement extends MkElement<ThemePickerInstance> {\n static options: Record<string, OptionType> = { showHidden: 'boolean', themes: 'list' };\n\n protected create(options: Record<string, unknown>) {\n return createThemePicker(this, options);\n }\n\n select(id: string) {\n this.instance?.select(id);\n }\n}\n\nexport const defineThemePicker = () => defineElement('mk-theme-picker', MkThemePickerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\r\nimport type { Instance } from '../../core/types';\r\nimport { iconSvg } from '../icons';\r\nimport { createDialog, type DialogInstance, type DialogOptions, type DialogPlacement, type DialogVariant } from './engine';\r\n\r\n/**\r\n * <mk-dialog id=\"crear\" heading=\"Crear proyecto\" [description] [shared=\"id\"] [variant=\"liquid\"]\r\n * [placement=\"anchor|side\"] [size=\"sm|lg|xl\"] [float=\"key\"] [no-backdrop] [persistent] [no-drag]>…</mk-dialog>\r\n * Any [data-mk-open=\"crear\"] opens it from that button. On connect its children\r\n * move into a <dialog class=\"mk-dialog\"> (with `heading`, a header with title and\r\n * close button and a body are made for them); on disconnect they move back.\r\n */\r\nexport class MkDialogElement extends MkElement<Instance> {\r\n static options: Record<string, OptionType> = {\r\n variant: 'string',\r\n placement: 'string',\r\n size: 'string',\r\n heading: 'string',\r\n description: 'string',\r\n float: 'string',\r\n noBackdrop: 'boolean',\r\n persistent: 'boolean',\r\n noDrag: 'boolean',\r\n closeLabel: 'string',\r\n shared: 'string',\r\n };\r\n\r\n dialog: DialogInstance | null = null;\r\n\r\n protected create(options: Record<string, unknown>): Instance {\r\n const original = [...this.childNodes];\r\n const dialog = document.createElement('dialog');\r\n dialog.className = 'mk-dialog';\r\n if (options.size && options.size !== 'md') dialog.classList.add(`mk-dialog--${options.size}`);\r\n const hasParts = original.some((node) => node instanceof Element && node.matches('[data-mk-part]'));\r\n const closeLabel = (options.closeLabel as string | undefined) ?? 'Cerrar';\r\n if (options.heading) {\r\n const header = document.createElement('header');\r\n header.dataset.mkPart = 'header';\r\n const text = document.createElement('div');\r\n const title = document.createElement('h2');\r\n title.dataset.mkPart = 'title';\r\n title.textContent = options.heading as string;\r\n if (options.shared) title.dataset.mkShared = options.shared as string;\r\n text.append(title);\r\n if (options.description) {\r\n const description = document.createElement('p');\r\n description.dataset.mkPart = 'description';\r\n description.textContent = options.description as string;\r\n text.append(description);\r\n }\r\n const actions = document.createElement('div');\r\n actions.dataset.mkPart = 'actions';\r\n if (options.float) {\r\n const handle = document.createElement('button');\r\n handle.type = 'button';\r\n handle.dataset.mkPart = 'handle';\r\n handle.innerHTML = iconSvg('expand', 18);\r\n actions.append(handle);\r\n }\r\n const close = document.createElement('button');\r\n close.type = 'button';\r\n close.dataset.mkPart = 'close';\r\n close.setAttribute('aria-label', closeLabel);\r\n close.innerHTML = iconSvg('close');\r\n actions.append(close);\r\n header.append(text, actions);\r\n const body = document.createElement('div');\r\n body.dataset.mkPart = 'body';\r\n // A footer stays out of the scrolling body.\r\n const isFooter = (node: Node) => node instanceof Element && node.matches('[data-mk-part=\"footer\"]');\r\n body.append(...original.filter((node) => !isFooter(node)));\r\n dialog.append(header, body, ...original.filter(isFooter));\r\n } else if (hasParts) {\r\n dialog.append(...original);\r\n } else {\r\n const body = document.createElement('div');\r\n body.dataset.mkPart = 'body';\r\n body.append(...original);\r\n dialog.append(body);\r\n }\r\n this.append(dialog);\r\n\r\n const engine = this.createEngine(dialog, {\r\n variant: (options.variant as DialogVariant) ?? 'morph',\r\n placement: (options.placement as DialogPlacement) ?? 'center',\r\n backdrop: !options.noBackdrop,\r\n closeOnBackdrop: !options.persistent,\r\n drag: !options.noDrag,\r\n float: (options.float as string) || false,\r\n triggers: this.id || false,\r\n labels: { close: closeLabel },\r\n }, options);\r\n this.dialog = engine;\r\n return {\r\n destroy: () => {\r\n engine.destroy();\r\n this.append(...original);\r\n dialog.remove();\r\n this.dialog = null;\r\n },\r\n };\r\n }\r\n\r\n /** The engine on the built <dialog> (Drawer swaps it). */\r\n protected createEngine(dialog: HTMLDialogElement, options: DialogOptions, _attributes: Record<string, unknown>): DialogInstance {\r\n return createDialog(dialog, options);\r\n }\r\n\r\n open(origin?: HTMLElement | null) {\r\n this.dialog?.open(origin);\r\n }\r\n\r\n close() {\r\n this.dialog?.close();\r\n }\r\n\r\n get isOpen() {\r\n return this.dialog?.isOpen ?? false;\r\n }\r\n}\r\n\r\nexport const defineDialog = () => defineElement('mk-dialog', MkDialogElement);\r\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport type { Instance } from '../../core/types';\nimport type { DialogVariant } from '../dialog/engine';\nimport { createMenu, type MenuInstance } from './engine';\n\n/**\n * <mk-menu id=\"opciones\" [variant=\"liquid\"] [keep-open]>\n * <button data-mk-item data-mk-value=\"ajustes\">Ajustes</button> …\n * </mk-menu>\n * Any [data-mk-open=\"opciones\"] opens it from that button; choosing an option\n * emits `mk:select` (detail.value, detail.item).\n */\nexport class MkMenuElement extends MkElement<Instance> {\n static options: Record<string, OptionType> = { variant: 'string', keepOpen: 'boolean', label: 'string', ticket: 'boolean' };\n\n menu: MenuInstance | null = null;\n\n protected create(options: Record<string, unknown>): Instance {\n const original = [...this.childNodes];\n const dialog = document.createElement('dialog');\n dialog.className = 'mk-dialog mk-menu';\n if (options.label) dialog.setAttribute('aria-label', options.label as string);\n dialog.append(...original);\n this.append(dialog);\n const menu = createMenu(dialog, {\n ticket: Boolean(options.ticket),\n variant: (options.variant as DialogVariant) ?? 'morph',\n closeOnSelect: !options.keepOpen,\n triggers: this.id || false,\n });\n this.menu = menu;\n return {\n destroy: () => {\n menu.destroy();\n this.append(...original);\n dialog.remove();\n this.menu = null;\n },\n };\n }\n\n open(origin?: HTMLElement | null) {\n this.menu?.open(origin);\n }\n\n close() {\n this.menu?.close();\n }\n\n get isOpen() {\n return this.menu?.isOpen ?? false;\n }\n}\n\nexport const defineMenu = () => defineElement('mk-menu', MkMenuElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createToaster, type ToasterInstance } from './engine';\n\n/**\n * <mk-toaster dismiss-label=\"Cerrar\"></mk-toaster> — mount once; then call\n * `toast('Copiado', { origin: button })` from anywhere.\n */\nexport class MkToasterElement extends MkElement<ToasterInstance> {\n static options: Record<string, OptionType> = { dismissLabel: 'string' };\n\n protected create(options: Record<string, unknown>) {\n const host = document.createElement('div');\n host.className = 'mk-toaster';\n this.append(host);\n const toaster = createToaster(host, { labels: { dismiss: options.dismissLabel as string | undefined } });\n return {\n destroy: () => {\n toaster.destroy();\n host.remove();\n },\n };\n }\n}\n\nexport const defineToaster = () => defineElement('mk-toaster', MkToasterElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createChatBackground, type ChatBackgroundInstance } from './engine';\n\n/** <mk-chat-background energy=\"0\" scale=\"1\"></mk-chat-background> inside any positioned container. */\nexport class MkChatBackgroundElement extends MkElement<ChatBackgroundInstance> {\n static options: Record<string, OptionType> = {};\n static get observedAttributes() {\n return ['energy', 'scale'];\n }\n\n protected create() {\n return createChatBackground(this, { energy: Number(this.getAttribute('energy')) || 0, scale: Number(this.getAttribute('scale')) || 1 });\n }\n\n // Energy changes every frame while recording: update the engine instead of rebuilding it.\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'energy') this.instance.setEnergy(Number(next) || 0);\n if (name === 'scale') this.instance.setScale(Number(next) || 1);\n }\n\n setEnergy(energy: number) {\n this.instance?.setEnergy(energy);\n }\n\n busy(on: boolean) {\n this.instance?.busy(on);\n }\n}\n\nexport const defineChatBackground = () => defineElement('mk-chat-background', MkChatBackgroundElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport type { Instance } from '../../core/types';\nimport { iconSvg } from '../icons';\nimport { defineChatBackground } from '../chat-background/element';\nimport { createChat, type ChatInstance, type ChatRole } from './engine';\n\n/**\n * <mk-chat placeholder=\"Escribe un mensaje...\" [background] [mic] [animate-existing]>\n * (optional) your own [data-mk-part=\"messages\"] / composer markup\n * </mk-chat>\n * Empty, it builds the messages list and the composer. Listen to `mk:send`\n * (detail.text) and answer with `element.reply(text)` after `element.pending()`.\n */\nexport class MkChatElement extends MkElement<Instance> {\n static options: Record<string, OptionType> = {\n placeholder: 'string',\n background: 'boolean',\n mic: 'boolean',\n animateExisting: 'boolean',\n thinking: 'string',\n };\n\n chat: ChatInstance | null = null;\n\n protected create(options: Record<string, unknown>): Instance {\n const made: Element[] = [];\n if (!this.querySelector('[data-mk-part=\"messages\"]')) {\n if (options.background && !this.querySelector('.mk-chat-background, mk-chat-background')) {\n defineChatBackground();\n const background = document.createElement('mk-chat-background');\n this.prepend(background);\n made.push(background);\n }\n const messages = document.createElement('div');\n messages.dataset.mkPart = 'messages';\n // Messages written inside the element (history) move into the list.\n messages.append(...[...this.children].filter((child) => child.matches('[data-mk-message]')));\n const composer = document.createElement('form');\n composer.dataset.mkPart = 'composer';\n const input = document.createElement('textarea');\n input.dataset.mkPart = 'input';\n input.rows = 1;\n input.placeholder = (options.placeholder as string | undefined) ?? 'Escribe un mensaje...';\n input.setAttribute('aria-label', input.placeholder);\n const buttons = document.createElement('div');\n buttons.dataset.mkPart = 'buttons';\n if (options.mic) {\n const mic = document.createElement('button');\n mic.type = 'button';\n mic.dataset.mkPart = 'mic';\n mic.setAttribute('aria-label', 'Micrófono');\n mic.innerHTML = iconSvg('mic', 22);\n buttons.append(mic);\n }\n const send = document.createElement('button');\n send.type = 'submit';\n send.dataset.mkPart = 'send';\n send.setAttribute('aria-label', 'Enviar');\n send.innerHTML = iconSvg('send', 22);\n buttons.append(send);\n composer.append(input, buttons);\n this.append(messages, composer);\n made.push(messages, composer);\n }\n const chat = createChat(this, {\n animateExisting: Boolean(options.animateExisting),\n labels: { thinking: options.thinking as string | undefined },\n });\n this.chat = chat;\n return {\n destroy: () => {\n chat.destroy();\n const messages = made.find((node) => node instanceof HTMLElement && node.dataset.mkPart === 'messages');\n if (messages) this.append(...[...messages.children]);\n for (const node of made) node.remove();\n this.chat = null;\n },\n };\n }\n\n add(role: ChatRole, text: string) {\n return this.chat?.add(role, text);\n }\n\n pending() {\n this.chat?.pending();\n }\n\n reply(message: HTMLElement | string) {\n return this.chat?.reply(message);\n }\n\n setRecording(on: boolean) {\n this.chat?.setRecording(on);\n }\n}\n\nexport const defineChat = () => defineElement('mk-chat', MkChatElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createNav, type NavInstance, type NavStyle } from './engine';\n\n/**\n * <mk-nav class=\"mk-nav mk-nav--bonita\" nav-style=\"bonita\" [accent] [reveal] [storage-key=\"mi-app-nav\"]>\n * <div class=\"mk-nav__buttons\"><a class=\"mk-nav__button\" href=\"/\">…</a></div>\n * </mk-nav>\n * Emits `mk:navigate` (detail: index, value, item, originalEvent) on click.\n */\nexport class MkNavElement extends MkElement<NavInstance> {\n static options: Record<string, OptionType> = { navStyle: 'string', accent: 'boolean', reveal: 'boolean', storageKey: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createNav(this, {\n style: options.navStyle as NavStyle | undefined,\n accent: options.accent as boolean | undefined,\n reveal: Boolean(options.reveal),\n storageKey: options.storageKey as string | undefined,\n });\n }\n\n // Style and accent change in place: rebuilding would replay the reveal.\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'nav-style' && next) this.instance.setStyle(next as NavStyle);\n else if (name === 'accent') this.instance.setAccent(next !== null && next !== 'false');\n else super.attributeChangedCallback(name, previous, next);\n }\n\n select(target: number | string) {\n this.instance?.select(target);\n }\n\n setStyle(style: NavStyle) {\n this.instance?.setStyle(style);\n }\n}\n\nexport const defineNav = () => defineElement('mk-nav', MkNavElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSteps, type StepsInstance } from './engine';\n\n/**\n * <mk-steps index=\"0\">\n * <mk-chat-background></mk-chat-background>\n * <section data-mk-step><h2 data-mk-flow-item>Hola</h2><button data-mk-flow-item data-mk-step-next>Seguir</button></section>\n * <section data-mk-step>…</section>\n * </mk-steps>\n * Emits `mk:step` (detail: index, previous, step) after each change.\n */\nexport class MkStepsElement extends MkElement<StepsInstance> {\n static options: Record<string, OptionType> = { index: 'number', duration: 'number', animateFirst: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createSteps(this, options);\n }\n\n // A new index moves to that step; rebuilding would jump without the flow.\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'index') void this.instance.goTo(Number(next) || 0);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n next() {\n return this.instance?.next();\n }\n\n prev() {\n return this.instance?.prev();\n }\n\n goTo(index: number) {\n return this.instance?.goTo(index);\n }\n\n busy(on: boolean) {\n this.instance?.busy(on);\n }\n}\n\nexport const defineSteps = () => defineElement('mk-steps', MkStepsElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createCursor, type CursorInstance, type CursorOptions, type CursorVariant } from './engine';\n\n/**\n * <mk-cursor></mk-cursor> glass chip (once per page)\n * <mk-cursor variant=\"dot\" text=\"Scroll\" arrows=\"y\"></mk-cursor> dot, inside its parent\n * zone=\"#hero\" picks another zone.\n */\nexport class MkCursorElement extends MkElement<CursorInstance> {\n static options: Record<string, OptionType> = { variant: 'string', text: 'string', arrows: 'string', zone: 'string' };\n\n protected create(options: Record<string, unknown>) {\n const zone = typeof options.zone === 'string' ? document.querySelector(options.zone) : undefined;\n return createCursor(this, {\n variant: options.variant as CursorVariant | undefined,\n text: options.text as string | undefined,\n arrows: options.arrows as CursorOptions['arrows'],\n zone,\n });\n }\n}\n\nexport const defineCursor = () => defineElement('mk-cursor', MkCursorElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createIsland, type IslandInstance, type IslandOptions } from './engine';\n\n/**\n * <mk-island [entrance=\"false|manual\"] [close-on-scroll=\"false\"] [close-on-navigate=\"false\"] [focus-on-open=\"false\"]>\n * <button class=\"mk-island__backdrop\" data-mk-island-close tabindex=\"-1\" aria-label=\"Cerrar\"></button>\n * <div class=\"mk-island__shell\">…header with [data-mk-island-toggle=\"menu\"]…\n * <div class=\"mk-island__content\"><div><section data-mk-island-panel=\"menu\">…</section></div></div>\n * </div>\n * </mk-island>\n * Emits `mk:island` (detail: { active }) when a panel opens or closes.\n */\nexport class MkIslandElement extends MkElement<IslandInstance> {\n static options: Record<string, OptionType> = {\n entrance: 'string',\n closeOnScroll: 'boolean',\n closeOnNavigate: 'boolean',\n focusOnOpen: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n const entrance: IslandOptions['entrance'] = options.entrance === 'false' ? false : options.entrance === 'manual' ? 'manual' : true;\n return createIsland(this, {\n entrance,\n closeOnScroll: options.closeOnScroll as boolean | undefined,\n closeOnNavigate: options.closeOnNavigate as boolean | undefined,\n focusOnOpen: options.focusOnOpen as boolean | undefined,\n onChange: (active) => this.dispatchEvent(new CustomEvent('mk:island', { detail: { active }, bubbles: true })),\n });\n }\n\n open(name?: string) {\n this.instance?.open(name);\n }\n\n close() {\n this.instance?.close();\n }\n\n ready() {\n this.instance?.ready();\n }\n}\n\nexport const defineIsland = () => defineElement('mk-island', MkIslandElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createQuantity, type QuantityInstance } from './engine';\n/** Light DOM: supply the same child markup shown in the README. */\nexport class MkQuantityElement extends MkElement<QuantityInstance> {\n static options: Record<string, OptionType> = { min: 'number', max: 'number', step: 'number', value: 'number', disabled: 'boolean' };\n protected create(options: Record<string, unknown>) { return createQuantity(this, options); }\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n const value = this.instance.value;\n this.instance.destroy();\n this.instance = this.create({ ...(!this.hasAttribute('value') ? { value } : {}), ...this.options });\n }\n}\nexport const defineQuantity = () => defineElement('mk-quantity', MkQuantityElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createPagination, type PaginationInstance } from './engine';\n/** Light DOM: supply the same child markup shown in the README. */\nexport class MkPaginationElement extends MkElement<PaginationInstance> {\n static options: Record<string, OptionType> = { totalPages: 'number', page: 'number', siblings: 'number' };\n protected create(options: Record<string, unknown>) { return createPagination(this, options); }\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n const page = this.instance.page;\n this.instance.destroy();\n this.instance = this.create({ ...(!this.hasAttribute('page') ? { page } : {}), ...this.options });\n }\n}\nexport const definePagination = () => defineElement('mk-pagination', MkPaginationElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createHoverCard, type HoverCardInstance } from './engine';\n/** Light DOM: supply the same child markup shown in the README. */\nexport class MkHoverCardElement extends MkElement<HoverCardInstance> {\n static options: Record<string, OptionType> = { openDelay: 'number', closeDelay: 'number', placement: 'string' };\n protected create(options: Record<string, unknown>) { return createHoverCard(this, options); }\n}\nexport const defineHoverCard = () => defineElement('mk-hover-card', MkHoverCardElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createInputOtp, type InputOtpInstance } from './engine';\n/** Light DOM: supply the same child markup shown in the README. */\nexport class MkInputOtpElement extends MkElement<InputOtpInstance> {\n static options: Record<string, OptionType> = { length: 'number', value: 'string', mask: 'boolean' };\n protected create(options: Record<string, unknown>) { return createInputOtp(this, options); }\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n const value = this.instance.value;\n this.instance.destroy();\n this.instance = this.create({ ...(!this.hasAttribute('value') ? { value } : {}), ...this.options });\n }\n}\nexport const defineInputOtp = () => defineElement('mk-input-otp', MkInputOtpElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createCalendar, type CalendarEvent, type CalendarInstance } from './engine';\n\n/** Light DOM: supply the header and the [data-mk-calendar-grid] shown in the README. */\nexport class MkCalendarElement extends MkElement<CalendarInstance> {\n static options: Record<string, OptionType> = {\n date: 'string', view: 'string', firstDay: 'number', locale: 'string', maxEvents: 'number', events: 'json', selected: 'string', today: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createCalendar(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n if (name === 'events') {\n this.instance.setEvents((this.options.events as CalendarEvent[] | undefined) ?? []);\n return;\n }\n // Keep where the visitor is unless the changed attribute says otherwise.\n const { date, view, selected } = this.instance;\n this.instance.destroy();\n this.instance = this.create({ date, view, selected, ...this.options });\n }\n}\n\nexport const defineCalendar = () => defineElement('mk-calendar', MkCalendarElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSlotPicker, type SlotPickerInstance, type SlotSource } from './engine';\n\n/** Light DOM: supply the [data-mk-slot-days] and [data-mk-slot-times] markup shown in the README. */\nexport class MkSlotPickerElement extends MkElement<SlotPickerInstance> {\n static options: Record<string, OptionType> = {\n date: 'string', value: 'string', slots: 'json', min: 'string', max: 'string', closedDays: 'json', firstDay: 'number', locale: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createSlotPicker(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n if (name === 'slots') {\n this.instance.setSlots((this.options.slots as SlotSource | undefined) ?? []);\n return;\n }\n // Keep the visitor's pick unless the value itself changed.\n const value = this.instance.value ?? (this.instance.date ? this.instance.date : undefined);\n this.instance.destroy();\n this.instance = this.create({ ...(name !== 'value' && value ? (typeof value === 'string' ? { value } : { date: value }) : {}), ...this.options });\n }\n}\n\nexport const defineSlotPicker = () => defineElement('mk-slot-picker', MkSlotPickerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\r\nimport { createAttachment, type AttachmentInstance, type AttachmentStatus } from './engine';\r\n\r\n/**\r\n * <mk-attachment class=\"mk-attachment\" accept=\"image/*,.pdf\" multiple max-files=\"4\" max-size=\"5000000\"></mk-attachment>\r\n * Emits mk:files ({added, files}), mk:remove ({file, files}) and mk:reject ({file, code, message}).\r\n * Changing an attribute keeps the files already chosen.\r\n */\r\nexport class MkAttachmentElement extends MkElement<AttachmentInstance> {\r\n static options: Record<string, OptionType> = {\r\n accept: 'string',\r\n multiple: 'boolean',\r\n maxFiles: 'number',\r\n maxSize: 'number',\r\n disabled: 'boolean',\r\n name: 'string',\r\n hint: 'string',\r\n initialFiles: 'json',\r\n };\r\n\r\n protected create(options: Record<string, unknown>) {\r\n return createAttachment(this, options);\r\n }\r\n\r\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\r\n if (previous === next || !this.isConnected || !this.instance) return;\r\n const files = this.instance.files;\r\n this.instance.destroy();\r\n this.instance = this.create({ ...this.options, initialFiles: files });\r\n }\r\n\r\n addFiles(files: Iterable<File> | ArrayLike<File>) {\r\n return this.instance?.addFiles(files) ?? [];\r\n }\r\n\r\n /** Remove one file (HTMLElement.remove() still removes the element). */\r\n removeFile(id: string) {\r\n this.instance?.remove(id);\r\n }\r\n\r\n setProgress(id: string, value: number, status?: AttachmentStatus) {\r\n this.instance?.setProgress(id, value, status);\r\n }\r\n\r\n get files() {\r\n return this.instance?.files ?? [];\r\n }\r\n}\r\n\r\nexport const defineAttachment = () => defineElement('mk-attachment', MkAttachmentElement);\r\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSkeleton, type SkeletonInstance } from './engine';\n\n/**\n * <mk-skeleton class=\"mk-skeleton\" shape=\"card\" label=\"Cargando perfil\">\n * <article data-mk-skeleton-content>…</article>\n * </mk-skeleton>\n * Loading until `loaded` is set (or `setLoading(false)`); a placeholder is made from `shape`.\n */\nexport class MkSkeletonElement extends MkElement<SkeletonInstance> {\n static options: Record<string, OptionType> = { loaded: 'boolean', animation: 'string', shape: 'string', lines: 'number', label: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createSkeleton(this, { ...options, loading: !options.loaded });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'loaded') this.instance.setLoading(next === null || next === 'false');\n else super.attributeChangedCallback(name, previous, next);\n }\n\n setLoading(loading: boolean) {\n this.instance?.setLoading(loading);\n }\n\n get loading() {\n return this.instance?.loading ?? false;\n }\n}\n\nexport const defineSkeleton = () => defineElement('mk-skeleton', MkSkeletonElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport type { Instance } from '../../core/types';\nimport { createQuestionnaire, type QuestionnaireInstance } from './engine';\n\ninterface QuestionData {\n id: string;\n label: string;\n type: 'text' | 'textarea' | 'single' | 'multiple';\n options?: Array<string | { value: string; label: string }>;\n required?: boolean;\n description?: string;\n}\n\nconst el = <K extends keyof HTMLElementTagNameMap>(tag: K, attrs: Record<string, string> = {}, text?: string) => {\n const element = document.createElement(tag);\n for (const [name, value] of Object.entries(attrs)) element.setAttribute(name, value);\n if (text !== undefined) element.textContent = text;\n return element;\n};\n\n/** The same form the React <Questionnaire> renders, built with DOM APIs (all text as text). */\nfunction buildForm(questions: QuestionData[]) {\n const form = el('form', { class: 'mk-questionnaire', novalidate: '' });\n const progress = el('div', { 'data-mk-question-progress': '', 'aria-hidden': 'true' });\n progress.append(el('span', { 'data-mk-question-bar': '' }));\n form.append(progress);\n questions.forEach((question, i) => {\n const titleId = `${question.id}-title`;\n const section = el('section', { 'data-mk-question': '', 'aria-labelledby': titleId });\n if (i) section.hidden = true;\n section.append(el('p', { 'data-mk-question-step': '' }, `Pregunta ${i + 1} de ${questions.length}`));\n const title = el('h3', { id: titleId, 'data-mk-step-title': '', 'data-mk-flow-item': '' }, question.label);\n if (question.required) title.append(el('span', { 'data-mk-question-required': '', 'aria-hidden': 'true' }, ' *'));\n section.append(title);\n if (question.description) section.append(el('p', { 'data-mk-question-description': '', 'data-mk-flow-item': '' }, question.description));\n const field = el('div', { 'data-mk-question-field': '', 'data-mk-flow-item': '' });\n if (question.type === 'text' || question.type === 'textarea') {\n const input = question.type === 'text' ? el('input', { type: 'text' }) : el('textarea', { rows: '4' });\n input.name = question.id;\n input.required = Boolean(question.required);\n input.setAttribute('aria-labelledby', titleId);\n field.append(input);\n } else {\n const group = el('div', { role: question.type === 'single' ? 'radiogroup' : 'group', 'aria-labelledby': titleId, 'data-mk-question-options': '' });\n for (const raw of question.options ?? []) {\n const option = typeof raw === 'string' ? { value: raw, label: raw } : raw;\n const label = el('label', { 'data-mk-question-option': '' });\n const input = el('input', { type: question.type === 'single' ? 'radio' : 'checkbox' });\n input.name = question.id;\n input.value = option.value;\n input.required = Boolean(question.required);\n label.append(input, el('span', {}, option.label));\n group.append(label);\n }\n field.append(group);\n }\n section.append(field);\n const actions = el('div', { 'data-mk-question-actions': '', 'data-mk-flow-item': '' });\n if (i) actions.append(el('button', { type: 'button', class: 'mk-button mk-button--text', 'data-mk-question-prev': '' }, 'Anterior'));\n actions.append(\n i < questions.length - 1\n ? el('button', { type: 'button', class: 'mk-button', 'data-mk-question-next': '' }, 'Siguiente')\n : el('button', { type: 'submit', class: 'mk-button' }, 'Finalizar'),\n );\n section.append(actions);\n form.append(section);\n });\n form.append(el('p', { 'data-mk-question-error': '', role: 'alert' }));\n const done = el('div', { 'data-mk-question-complete': '' });\n done.hidden = true;\n done.append(el('p', {}, '¡Gracias! Respuestas enviadas.'), el('button', { type: 'reset', class: 'mk-button mk-button--tonal' }, 'Empezar de nuevo'));\n form.append(done);\n return form;\n}\n\n/**\n * <mk-questionnaire><form>…<section data-mk-question>…</section>…</form></mk-questionnaire>\n * or, empty, <mk-questionnaire questions='[{\"id\":\"name\",\"label\":\"Nombre\",\"type\":\"text\",\"required\":true}]'>.\n * Emits mk:question ({index, previous, answers}), mk:invalid and mk:complete ({answers}).\n */\nexport class MkQuestionnaireElement extends MkElement<Instance> {\n static options: Record<string, OptionType> = { questions: 'json', index: 'number' };\n\n questionnaire: QuestionnaireInstance | null = null;\n\n protected create(options: Record<string, unknown>): Instance {\n const questions = Array.isArray(options.questions) ? (options.questions as QuestionData[]) : null;\n const built = questions && !this.querySelector('[data-mk-question]') ? buildForm(questions) : null;\n if (built) this.append(built);\n const engine = createQuestionnaire(this, { index: options.index as number | undefined });\n this.questionnaire = engine;\n return {\n destroy: () => {\n engine.destroy();\n built?.remove();\n this.questionnaire = null;\n },\n };\n }\n\n next() {\n return this.questionnaire?.next() ?? Promise.resolve(false);\n }\n\n prev() {\n return this.questionnaire?.prev() ?? Promise.resolve();\n }\n\n reset() {\n this.questionnaire?.reset();\n }\n\n get answers() {\n return this.questionnaire?.answers ?? {};\n }\n}\n\nexport const defineQuestionnaire = () => defineElement('mk-questionnaire', MkQuestionnaireElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createCodeBlock, type CodeBlockInstance } from './engine';\n\n/**\n * <mk-code-block class=\"mk-code-block\" title=\"Instalar\" language=\"bash\" line-numbers>\n * <pre><code>npm install @yewdiel21/motion-kit gsap</code></pre>\n * </mk-code-block>\n * Header, copy button and status are made when absent. Emits `mk:copy` ({ok, code}).\n */\nexport class MkCodeBlockElement extends MkElement<CodeBlockInstance> {\n static options: Record<string, OptionType> = {\n code: 'string',\n language: 'string',\n title: 'string',\n lineNumbers: 'boolean',\n copyLabel: 'string',\n copiedLabel: 'string',\n errorLabel: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createCodeBlock(this, options);\n }\n\n setCode(code: string) {\n this.instance?.setCode(code);\n }\n\n copy() {\n return this.instance?.copy() ?? Promise.resolve(false);\n }\n}\n\nexport const defineCodeBlock = () => defineElement('mk-code-block', MkCodeBlockElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createContextMenu, type ContextMenuInstance } from './engine';\n\n/**\n * <mk-context-menu class=\"mk-context-menu\">\n * <article>…the area…</article>\n * <dialog class=\"mk-dialog mk-menu\" data-mk-context-menu aria-label=\"Acciones\">\n * <button data-mk-item data-mk-value=\"rename\">Renombrar</button>\n * <hr data-mk-separator />\n * <button data-mk-item data-mk-value=\"delete\" disabled>Eliminar</button>\n * </dialog>\n * </mk-context-menu>\n * Emits mk:select (detail.value, detail.item) from the dialog.\n */\nexport class MkContextMenuElement extends MkElement<ContextMenuInstance> {\n static options: Record<string, OptionType> = { keepOpen: 'boolean', overrideEditable: 'boolean', longPress: 'number', variant: 'string' };\n\n protected create(options: Record<string, unknown>) {\n const { keepOpen, ...rest } = options;\n return createContextMenu(this, { ...rest, closeOnSelect: !keepOpen });\n }\n\n openAt(x: number, y: number) {\n this.instance?.openAt(x, y);\n }\n\n open(origin?: HTMLElement | null) {\n this.instance?.open(origin);\n }\n\n close() {\n this.instance?.close();\n }\n\n get isOpen() {\n return this.instance?.isOpen ?? false;\n }\n}\n\nexport const defineContextMenu = () => defineElement('mk-context-menu', MkContextMenuElement);\n","import { defineElement, type OptionType } from '../../elements/base';\nimport type { DialogInstance, DialogOptions } from '../dialog/engine';\nimport { MkDialogElement } from '../dialog/element';\nimport { createDrawer, type DrawerSide } from './engine';\n\n/**\n * <mk-drawer id=\"filtros\" side=\"left\" heading=\"Filtros\" [description] [no-backdrop] [persistent]>…</mk-drawer>\n * Any [data-mk-open=\"filtros\"] opens it. Children move into a native <dialog class=\"mk-dialog mk-drawer\">\n * (header, body and a [data-mk-part=\"footer\"] child kept out of the scroll) and back on disconnect.\n */\nexport class MkDrawerElement extends MkDialogElement {\n static options: Record<string, OptionType> = { ...MkDialogElement.options, side: 'string' };\n\n protected createEngine(dialog: HTMLDialogElement, options: DialogOptions, attributes: Record<string, unknown>): DialogInstance {\n dialog.classList.add('mk-drawer');\n const { variant: _variant, placement: _placement, float: _float, ...rest } = options;\n return createDrawer(dialog, { ...rest, side: attributes.side as DrawerSide | undefined });\n }\n}\n\nexport const defineDrawer = () => defineElement('mk-drawer', MkDrawerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createLinkPreview, type LinkPreviewInstance } from './engine';\n\n/**\n * <mk-link-preview class=\"mk-link-preview\" url=\"https://…\" title=\"…\" description=\"…\" image=\"/thumb.jpg\" site-name=\"Blog\"></mk-link-preview>\n * variant=\"hover\" turns it into a link that previews the card (label = link text).\n */\nexport class MkLinkPreviewElement extends MkElement<LinkPreviewInstance> {\n static options: Record<string, OptionType> = {\n url: 'string',\n title: 'string',\n description: 'string',\n image: 'string',\n imageAlt: 'string',\n siteName: 'string',\n variant: 'string',\n label: 'string',\n target: 'string',\n openDelay: 'number',\n closeDelay: 'number',\n placement: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createLinkPreview(this, options);\n }\n}\n\nexport const defineLinkPreview = () => defineElement('mk-link-preview', MkLinkPreviewElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createProgress, type ProgressInstance } from './engine';\n\n/**\n * <mk-progress class=\"mk-progress\" value=\"40\" label=\"Subida\" show-value></mk-progress>\n * Without `value` (or value=\"indeterminate\") it is indeterminate. A new value moves the fill.\n */\nexport class MkProgressElement extends MkElement<ProgressInstance> {\n static options: Record<string, OptionType> = { value: 'number', min: 'number', max: 'number', label: 'string', variant: 'string', showValue: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createProgress(this, { ...options, value: typeof options.value === 'number' ? options.value : null });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue(next === null || !Number.isFinite(Number(next)) ? null : Number(next));\n else super.attributeChangedCallback(name, previous, next);\n }\n\n setValue(value: number | null) {\n this.instance?.setValue(value);\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineProgress = () => defineElement('mk-progress', MkProgressElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\r\nimport { createRangeSlider, type RangeSliderInstance, type RangeValue } from './engine';\r\n\r\n/**\r\n * <mk-range-slider class=\"mk-range-slider\" min=\"0\" max=\"100\" step=\"5\" label=\"Precio\" value=\"[20,80]\">\r\n * <div data-mk-range-track><input type=\"range\" data-mk-range-input value=\"20\"><input type=\"range\" data-mk-range-input value=\"80\"></div>\r\n * <output data-mk-range-output></output>\r\n * </mk-range-slider>\r\n * Empty, it makes its input(s). Emits `mk:input` while dragging and `mk:change` ({value, previous}) on commit.\r\n * `el.formatValue = (n) => `${n} €`` formats the output and aria-valuetext.\r\n */\r\nexport class MkRangeSliderElement extends MkElement<RangeSliderInstance> {\r\n static options: Record<string, OptionType> = { min: 'number', max: 'number', step: 'number', value: 'json', disabled: 'boolean', name: 'string', label: 'string' };\r\n\r\n private format: ((value: number) => string) | undefined;\r\n\r\n /** Formatter for the output and aria-valuetext (code, so a property rather than an attribute). */\r\n get formatValue() {\r\n return this.format;\r\n }\r\n\r\n set formatValue(format: ((value: number) => string) | undefined) {\r\n this.format = format;\r\n this.rebuild(true);\r\n }\r\n\r\n protected create(options: Record<string, unknown>) {\r\n return createRangeSlider(this, { ...options, formatValue: this.format });\r\n }\r\n\r\n /** Rebuild with the current attributes; keepValue keeps the edited value over the `value` attribute. */\r\n private rebuild(keepValue: boolean) {\r\n if (!this.isConnected || !this.instance) return;\r\n const value = this.instance.value;\r\n this.instance.destroy();\r\n this.instance = this.create(keepValue ? { ...this.options, value } : { value, ...this.options });\r\n }\r\n\r\n // Bounds rebuild the engine but keep the edited value unless `value` is set.\r\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\r\n if (previous !== next) this.rebuild(false);\r\n }\r\n\r\n setValue(value: RangeValue, notify?: boolean) {\r\n this.instance?.setValue(value, notify);\r\n }\r\n\r\n get value() {\r\n return this.instance?.value;\r\n }\r\n}\r\n\r\nexport const defineRangeSlider = () => defineElement('mk-range-slider', MkRangeSliderElement);\r\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createChart, type ChartInstance, type ChartOptions } from './engine';\n\n/**\n * <mk-chart class=\"mk-chart\" type=\"bar\" stacked label=\"Sesiones por semana\"\n * labels=\"S1,S2,S3\" series='[{\"name\":\"Ana\",\"values\":[4,6,5]},{\"name\":\"Luis\",\"values\":[2,3,4]}]'></mk-chart>\n * Attribute changes redraw in place. Emits mk:select ({index, label, values, x, y, series}); tooltip=\"false\" leaves the card to chart-tooltip.\n */\nexport class MkChartElement extends MkElement<ChartInstance> {\n static options: Record<string, OptionType> = {\n type: 'string',\n labels: 'list',\n series: 'json',\n points: 'json',\n stacked: 'boolean',\n label: 'string',\n height: 'number',\n emptyLabel: 'string',\n legend: 'boolean',\n tooltip: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createChart(this, options as ChartOptions);\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n this.instance.update({ stacked: false, legend: undefined, ...(this.options as ChartOptions) });\n }\n\n update(options: ChartOptions) {\n this.instance?.update(options);\n }\n\n select(index: number | null) {\n this.instance?.select(index);\n }\n}\n\nexport const defineChart = () => defineElement('mk-chart', MkChartElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createCreditCard, type CreditCardField, type CreditCardInstance } from './engine';\n\n/**\n * <mk-credit-card class=\"mk-credit-card\"></mk-credit-card>\n * Makes the card and the four fields (or uses input[data-mk-card-field=\"number|name|expiry|cvc\"] inside).\n * Emits mk:change ({brand, complete, valid}) and mk:complete; the card data stays in the form.\n */\nexport class MkCreditCardElement extends MkElement<CreditCardInstance> {\n static options: Record<string, OptionType> = { tilt: 'boolean', labels: 'json', names: 'json' };\n\n protected create(options: Record<string, unknown>) {\n return createCreditCard(this, options);\n }\n\n focusField(field: CreditCardField) {\n this.instance?.focus(field);\n }\n\n flip(back?: boolean) {\n this.instance?.flip(back);\n }\n\n get values() {\n return this.instance?.values;\n }\n\n get brand() {\n return this.instance?.brand ?? 'unknown';\n }\n}\n\nexport const defineCreditCard = () => defineElement('mk-credit-card', MkCreditCardElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createCommandSearch, type CommandItem, type CommandSearchInstance } from './engine';\n\n/**\n * <mk-command-search class=\"mk-command-search\" items='[{\"id\":\"charts\",\"label\":\"Charts\",\"group\":\"Páginas\",\"href\":\"/chart\"}]'>\n * <button data-mk-command-open>Buscar <kbd>⌘K</kbd></button>\n * </mk-command-search>\n * ⌘K / Ctrl+K or the button opens it. Emits mk:select ({item}, cancelable), mk:open and mk:close.\n */\nexport class MkCommandSearchElement extends MkElement<CommandSearchInstance> {\n static options: Record<string, OptionType> = { items: 'json', placeholder: 'string', emptyLabel: 'string', label: 'string', shortcut: 'boolean', limit: 'number' };\n\n protected create(options: Record<string, unknown>) {\n return createCommandSearch(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'items') this.instance.setItems((this.options.items as CommandItem[] | undefined) ?? []);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n\n setItems(items: CommandItem[]) {\n this.instance?.setItems(items);\n }\n}\n\nexport const defineCommandSearch = () => defineElement('mk-command-search', MkCommandSearchElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createHoldConfirm, type HoldConfirmInstance } from './engine';\n\n/**\n * <mk-hold-confirm class=\"mk-hold-confirm\" duration=\"1200\"><button>Eliminar cuenta</button></mk-hold-confirm>\n * Hold the button (pointer, Space or Enter) to confirm. Emits mk:confirm.\n */\nexport class MkHoldConfirmElement extends MkElement<HoldConfirmInstance> {\n static options: Record<string, OptionType> = { duration: 'number', resetAfter: 'number', holdingLabel: 'string', doneLabel: 'string', hint: 'string', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createHoldConfirm(this, options);\n }\n\n reset() {\n this.instance?.reset();\n }\n\n get confirmed() {\n return this.instance?.confirmed ?? false;\n }\n}\n\nexport const defineHoldConfirm = () => defineElement('mk-hold-confirm', MkHoldConfirmElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createImagePreview, type ImagePreviewInstance } from './engine';\n\n/**\n * <mk-image-preview class=\"mk-image-preview\">\n * <button data-mk-image data-mk-src=\"/big/1.jpg\" data-mk-caption=\"Atardecer\"><img src=\"/thumb/1.jpg\" alt=\"Atardecer en la sierra\"></button>\n * </mk-image-preview>\n * Emits mk:open, mk:change ({index, previous}) and mk:close.\n */\nexport class MkImagePreviewElement extends MkElement<ImagePreviewInstance> {\n static options: Record<string, OptionType> = { loop: 'boolean', labels: 'json' };\n\n protected create(options: Record<string, unknown>) {\n return createImagePreview(this, options);\n }\n\n open(index?: number) {\n this.instance?.open(index);\n }\n\n close() {\n this.instance?.close();\n }\n}\n\nexport const defineImagePreview = () => defineElement('mk-image-preview', MkImagePreviewElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\r\nimport { createLikeButton, type LikeButtonInstance } from './engine';\r\n\r\n/**\r\n * <mk-like-button class=\"mk-like-button\" count=\"128\"><button></button></mk-like-button>\r\n * Toggles with a burst; emits mk:change ({liked, count}).\r\n */\r\nexport class MkLikeButtonElement extends MkElement<LikeButtonInstance> {\r\n static options: Record<string, OptionType> = { liked: 'boolean', count: 'number', label: 'string', hideCount: 'boolean' };\r\n\r\n protected create(options: Record<string, unknown>) {\r\n // Without a button inside, one is made (and removed again on destroy).\r\n let made: HTMLButtonElement | null = null;\r\n if (!this.querySelector('button')) {\r\n made = document.createElement('button');\r\n made.type = 'button';\r\n this.append(made);\r\n }\r\n const engine = createLikeButton(this, options);\r\n if (made) {\r\n const destroy = engine.destroy;\r\n engine.destroy = () => {\r\n destroy();\r\n made!.remove();\r\n };\r\n }\r\n return engine;\r\n }\r\n\r\n // A new `liked` or `count` attribute updates in place (with the animation).\r\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\r\n if (previous === next || !this.instance) return;\r\n if (name === 'liked') this.instance.setLiked(next !== null && next !== 'false', false);\r\n else if (name === 'count') this.instance.setCount(Number(next));\r\n else super.attributeChangedCallback(name, previous, next);\r\n }\r\n\r\n get liked() {\r\n return this.instance?.liked ?? false;\r\n }\r\n\r\n get count() {\r\n return this.instance?.count ?? 0;\r\n }\r\n}\r\n\r\nexport const defineLikeButton = () => defineElement('mk-like-button', MkLikeButtonElement);\r\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createNotificationBell, type NotificationBellInstance } from './engine';\n\n/**\n * <mk-notification-bell class=\"mk-notification-bell\" count=\"2\"></mk-notification-bell>\n * el.notify('Nueva cita a las 10:00') rings it. Emits mk:open on click and mk:count when the count changes.\n */\nexport class MkNotificationBellElement extends MkElement<NotificationBellInstance> {\n static options: Record<string, OptionType> = { count: 'number', label: 'string', messageDuration: 'number', max: 'number' };\n\n protected create(options: Record<string, unknown>) {\n let made: HTMLButtonElement | null = null;\n if (!this.querySelector('button')) {\n made = document.createElement('button');\n made.type = 'button';\n this.append(made);\n }\n const engine = createNotificationBell(this, options);\n if (made) {\n const destroy = engine.destroy;\n engine.destroy = () => {\n destroy();\n made!.remove();\n };\n }\n return engine;\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'count') this.instance.setCount(Number(next) || 0);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n notify(message?: string) {\n this.instance?.notify(message);\n }\n\n clear() {\n this.instance?.clear();\n }\n\n get count() {\n return this.instance?.count ?? 0;\n }\n}\n\nexport const defineNotificationBell = () => defineElement('mk-notification-bell', MkNotificationBellElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createPasswordStrength, type PasswordStrengthInstance } from './engine';\n\n/**\n * <mk-password-strength class=\"mk-password-strength\" min-length=\"10\">\n * <input type=\"password\" name=\"password\" autocomplete=\"new-password\" aria-label=\"Contraseña\" />\n * </mk-password-strength>\n * Emits mk:strength ({score, label, met}).\n */\nexport class MkPasswordStrengthElement extends MkElement<PasswordStrengthInstance> {\n static options: Record<string, OptionType> = { minLength: 'number', requireScore: 'number', labels: 'json' };\n\n protected create(options: Record<string, unknown>) {\n return createPasswordStrength(this, options);\n }\n\n get score() {\n return this.instance?.score ?? 0;\n }\n}\n\nexport const definePasswordStrength = () => defineElement('mk-password-strength', MkPasswordStrengthElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createScratchCard, type ScratchCardInstance } from './engine';\n\n/**\n * <mk-scratch-card class=\"mk-scratch-card\" threshold=\"0.5\">\n * <div data-mk-scratch-content>…the coupon…</div>\n * </mk-scratch-card>\n * Emits mk:progress ({progress}) and mk:reveal.\n */\nexport class MkScratchCardElement extends MkElement<ScratchCardInstance> {\n static options: Record<string, OptionType> = { threshold: 'number', brush: 'number', coverLabel: 'string', revealLabel: 'string', revealedLabel: 'string', celebrate: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createScratchCard(this, options);\n }\n\n reveal() {\n this.instance?.reveal();\n }\n\n reset() {\n this.instance?.reset();\n }\n\n get revealed() {\n return this.instance?.revealed ?? false;\n }\n}\n\nexport const defineScratchCard = () => defineElement('mk-scratch-card', MkScratchCardElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createStarRating, type StarRatingInstance } from './engine';\n\n/**\n * <mk-star-rating class=\"mk-star-rating\" name=\"valoracion\" value=\"4\" allow-clear></mk-star-rating>\n * readonly with value=\"4.5\" draws a fixed rating. Emits mk:change ({value}).\n */\nexport class MkStarRatingElement extends MkElement<StarRatingInstance> {\n static options: Record<string, OptionType> = { max: 'number', value: 'number', name: 'string', label: 'string', labels: 'list', readonly: 'boolean', allowClear: 'boolean', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createStarRating(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue(Number(next) || 0);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? 0;\n }\n}\n\nexport const defineStarRating = () => defineElement('mk-star-rating', MkStarRatingElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSwipeActions, type SwipeActionsInstance } from './engine';\n\n/**\n * <mk-swipe-actions class=\"mk-swipe-actions\">\n * <div data-mk-swipe-row>\n * <div data-mk-swipe-actions=\"left\"><button data-mk-swipe-action=\"archive\" aria-label=\"Archivar\">…</button></div>\n * <div data-mk-swipe-content>…the row…</div>\n * <div data-mk-swipe-actions=\"right\"><button data-mk-swipe-action=\"delete\" data-mk-swipe-remove aria-label=\"Eliminar\">…</button></div>\n * </div>\n * </mk-swipe-actions>\n * Emits mk:action ({action, row}) and mk:open ({row, side}).\n */\nexport class MkSwipeActionsElement extends MkElement<SwipeActionsInstance> {\n static options: Record<string, OptionType> = { fullSwipe: 'number' };\n\n protected create(options: Record<string, unknown>) {\n return createSwipeActions(this, options);\n }\n\n close() {\n this.instance?.close();\n }\n}\n\nexport const defineSwipeActions = () => defineElement('mk-swipe-actions', MkSwipeActionsElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createColorSlider, type ColorSliderInstance } from './engine';\n\n/**\n * <mk-color-slider class=\"mk-color-slider\" channel=\"hue\" value=\"#ff8800\" show-value></mk-color-slider>\n * Emits mk:input / mk:change ({value, color}). Changing `value` glides the thumb.\n */\nexport class MkColorSliderElement extends MkElement<ColorSliderInstance> {\n static options: Record<string, OptionType> = { channel: 'string', value: 'string', label: 'string', orientation: 'string', step: 'number', showValue: 'boolean', name: 'string', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createColorSlider(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next) this.instance.setColor(next, false);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? '';\n }\n}\n\nexport const defineColorSlider = () => defineElement('mk-color-slider', MkColorSliderElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createColorArea, type ColorAreaInstance } from './engine';\n\n/**\n * <mk-color-area class=\"mk-color-area\" value=\"#ff8800\"></mk-color-area>\n * Emits mk:input / mk:change ({value, color}). Changing `value` glides the thumb.\n */\nexport class MkColorAreaElement extends MkElement<ColorAreaInstance> {\n static options: Record<string, OptionType> = { value: 'string', label: 'string', step: 'number', name: 'string', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createColorArea(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next) this.instance.setColor(next, false);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? '';\n }\n}\n\nexport const defineColorArea = () => defineElement('mk-color-area', MkColorAreaElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createColorField, type ColorFieldInstance } from './engine';\n\n/**\n * <mk-color-field class=\"mk-color-field\" value=\"#ff8800\" format=\"hex\"></mk-color-field>\n * Emits mk:change ({value, color}) when a new colour is committed.\n */\nexport class MkColorFieldElement extends MkElement<ColorFieldInstance> {\n static options: Record<string, OptionType> = { value: 'string', format: 'string', alpha: 'boolean', label: 'string', name: 'string', disabled: 'boolean', readOnly: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createColorField(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next) this.instance.setColor(next, false);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? '';\n }\n}\n\nexport const defineColorField = () => defineElement('mk-color-field', MkColorFieldElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createColorPicker, type ColorPickerInstance } from './engine';\n\n/**\n * <mk-color-picker class=\"mk-color-picker\" value=\"#3b82f6\" label=\"Color del evento\"></mk-color-picker>\n * `inline` shows the panel in place; `swatches=\"#111,#ef4444\"` sets the presets.\n * Emits mk:input (live) and mk:change (committed) with {value, color}.\n */\nexport class MkColorPickerElement extends MkElement<ColorPickerInstance> {\n static options: Record<string, OptionType> = {\n value: 'string',\n alpha: 'boolean',\n format: 'string',\n swatches: 'list',\n label: 'string',\n name: 'string',\n disabled: 'boolean',\n inline: 'boolean',\n eyedropper: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createColorPicker(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next) this.instance.setColor(next, false);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n\n get value() {\n return this.instance?.value ?? '';\n }\n}\n\nexport const defineColorPicker = () => defineElement('mk-color-picker', MkColorPickerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTimeField, type TimeFieldInstance } from './engine';\n\n/**\n * <mk-time-field class=\"mk-time-field\" value=\"09:30\" minute-step=\"15\" name=\"hora\"></mk-time-field>\n * Emits mk:change ({value}: 24 h text, null while incomplete).\n */\nexport class MkTimeFieldElement extends MkElement<TimeFieldInstance> {\n static options: Record<string, OptionType> = {\n value: 'string',\n locale: 'string',\n hourCycle: 'number',\n seconds: 'boolean',\n minuteStep: 'number',\n min: 'string',\n max: 'string',\n label: 'string',\n name: 'string',\n disabled: 'boolean',\n readOnly: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createTimeField(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue(next);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineTimeField = () => defineElement('mk-time-field', MkTimeFieldElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createRangeCalendar, type RangeCalendarInstance } from './engine';\n\n/**\n * <mk-range-calendar class=\"mk-range-calendar\" start=\"2026-11-23\" end=\"2026-11-26\" visible-months=\"2\"\n * unavailable=\"2026-12-24,2026-12-25\"></mk-range-calendar>\n * Emits mk:change ({start, end, length}). Changing start/end moves the range.\n */\nexport class MkRangeCalendarElement extends MkElement<RangeCalendarInstance> {\n static options: Record<string, OptionType> = {\n start: 'string',\n end: 'string',\n month: 'string',\n visibleMonths: 'number',\n firstDay: 'number',\n min: 'string',\n max: 'string',\n unavailable: 'list',\n locale: 'string',\n today: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n const { start, end, ...rest } = options as { start?: string; end?: string };\n return createRangeCalendar(this, { ...rest, value: start && end ? { start, end } : null });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'start' || name === 'end') {\n const start = this.getAttribute('start');\n const end = this.getAttribute('end');\n this.instance.setValue(start && end ? { start, end } : null);\n } else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineRangeCalendar = () => defineElement('mk-range-calendar', MkRangeCalendarElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createDateRangePicker, type DateRangePickerInstance } from './engine';\n\n/**\n * <mk-date-range-picker class=\"mk-date-range-picker\" start=\"2026-11-23\" end=\"2026-11-26\" name=\"viaje\"\n * presets='[{\"label\":\"Puente\",\"start\":\"2026-12-05\",\"end\":\"2026-12-08\"}]'></mk-date-range-picker>\n * Emits mk:change ({start, end, length}) for valid ranges.\n */\nexport class MkDateRangePickerElement extends MkElement<DateRangePickerInstance> {\n static options: Record<string, OptionType> = {\n start: 'string',\n end: 'string',\n min: 'string',\n max: 'string',\n unavailable: 'list',\n firstDay: 'number',\n locale: 'string',\n today: 'string',\n label: 'string',\n name: 'string',\n presets: 'json',\n disabled: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n const { start, end, ...rest } = options as { start?: string; end?: string };\n return createDateRangePicker(this, { ...rest, value: start && end ? { start, end } : null });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'start' || name === 'end') {\n const start = this.getAttribute('start');\n const end = this.getAttribute('end');\n this.instance.setValue(start && end ? { start, end } : null);\n } else super.attributeChangedCallback(name, previous, next);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineDateRangePicker = () => defineElement('mk-date-range-picker', MkDateRangePickerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTooltip, type TooltipInstance } from './engine';\n\n/**\n * <mk-tooltip class=\"mk-tooltip\" content=\"Copiar enlace\"><button>…</button></mk-tooltip>\n * Without `content`, the trigger's title. Emits mk:open-change ({open}).\n */\nexport class MkTooltipElement extends MkElement<TooltipInstance> {\n static options: Record<string, OptionType> = { content: 'string', placement: 'string', openDelay: 'number', closeDelay: 'number', interactive: 'boolean', arrow: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createTooltip(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'content') this.instance.setContent(next ?? '');\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineTooltip = () => defineElement('mk-tooltip', MkTooltipElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createPopover, type PopoverInstance } from './engine';\n\n/**\n * <mk-popover class=\"mk-popover\">\n * <button data-mk-popover-trigger>Filtros</button>\n * <div data-mk-popover-content>…</div>\n * </mk-popover>\n * Emits mk:open-change ({open}).\n */\nexport class MkPopoverElement extends MkElement<PopoverInstance> {\n static options: Record<string, OptionType> = { label: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createPopover(this, options);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n\n get isOpen() {\n return this.instance?.isOpen ?? false;\n }\n}\n\nexport const definePopover = () => defineElement('mk-popover', MkPopoverElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createLoadingButton, type LoadingButtonInstance, type LoadingState } from './engine';\n\n/**\n * <mk-loading-button><button class=\"mk-button\">Guardar</button></mk-loading-button>\n * The `state` attribute (idle | loading | success | error) drives it from outside; run(action) walks the states.\n * Emits mk:state-change ({state}).\n */\nexport class MkLoadingButtonElement extends MkElement<LoadingButtonInstance> {\n static options: Record<string, OptionType> = { labels: 'json', compact: 'boolean', resetAfter: 'number', state: 'string' };\n\n protected create(options: Record<string, unknown>) {\n const { state, ...rest } = options as { state?: LoadingState };\n const instance = createLoadingButton(this, rest);\n if (state) instance.setState(state);\n return instance;\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'state') this.instance.setState((next as LoadingState) || 'idle');\n else super.attributeChangedCallback(name, previous, next);\n }\n\n run(action: () => unknown) {\n return this.instance?.run(action) ?? Promise.resolve(false);\n }\n\n get state() {\n return this.instance?.state ?? 'idle';\n }\n}\n\nexport const defineLoadingButton = () => defineElement('mk-loading-button', MkLoadingButtonElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createBreadcrumb, type BreadcrumbInstance, type BreadcrumbItem } from './engine';\n\n/**\n * <mk-breadcrumb class=\"mk-breadcrumb\" items='[{\"label\":\"Inicio\",\"href\":\"/\"},{\"label\":\"Proyectos\",\"href\":\"/p\"},{\"label\":\"Melon\"}]'>\n * </mk-breadcrumb> — or authored <a>/<span> children. Emits mk:navigate ({item, index}, cancelable).\n */\nexport class MkBreadcrumbElement extends MkElement<BreadcrumbInstance> {\n static options: Record<string, OptionType> = { items: 'json', label: 'string', maxItems: 'number' };\n\n protected create(options: Record<string, unknown>) {\n return createBreadcrumb(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'items') {\n try {\n this.instance.setItems(JSON.parse(next ?? '[]') as BreadcrumbItem[]);\n } catch {\n // Malformed JSON: keep the current path.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineBreadcrumb = () => defineElement('mk-breadcrumb', MkBreadcrumbElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createEmptyState, type EmptyStateInstance } from './engine';\n\n/**\n * <mk-empty-state class=\"mk-empty-state\" illustration=\"search\" title=\"Sin resultados\"\n * description=\"Prueba con otras palabras.\" actions='[{\"id\":\"clear\",\"label\":\"Borrar filtros\"}]'></mk-empty-state>\n * Emits mk:action ({id}).\n */\nexport class MkEmptyStateElement extends MkElement<EmptyStateInstance> {\n static options: Record<string, OptionType> = { illustration: 'string', title: 'string', description: 'string', actions: 'json', loop: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createEmptyState(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'loop') return super.attributeChangedCallback(name, previous, next);\n this.instance.update(this.options);\n }\n}\n\nexport const defineEmptyState = () => defineElement('mk-empty-state', MkEmptyStateElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createStatCard, type StatCardInstance } from './engine';\n\n/**\n * <mk-stat-card class=\"mk-stat-card\" label=\"Ingresos\" value=\"128400\" previous=\"118900\"\n * format='{\"style\":\"currency\",\"currency\":\"MXN\",\"maximumFractionDigits\":0}' series=\"90,98,104,101,118,128\"></mk-stat-card>\n * Changing value, previous, series or target updates it in place (the figure counts).\n */\nexport class MkStatCardElement extends MkElement<StatCardInstance> {\n static options: Record<string, OptionType> = {\n label: 'string',\n value: 'number',\n previous: 'number',\n format: 'json',\n locale: 'string',\n positive: 'string',\n comparison: 'string',\n series: 'list',\n target: 'number',\n countOnView: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createStatCard(this, normalise(options));\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'locale' || name === 'count-on-view') return super.attributeChangedCallback(name, previous, next);\n this.instance.update(normalise(this.options));\n }\n}\n\n/** The series attribute is a comma list: numbers. */\nconst normalise = (options: Record<string, unknown>) => ({\n ...options,\n series: Array.isArray(options.series) ? (options.series as string[]).map(Number).filter(Number.isFinite) : undefined,\n});\n\nexport const defineStatCard = () => defineElement('mk-stat-card', MkStatCardElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createChartTooltip, type ChartTooltipInstance } from './engine';\n\n/**\n * <mk-chart-tooltip class=\"mk-chart-tooltip\" share total>\n * <mk-chart class=\"mk-chart\" tooltip=\"false\" …></mk-chart>\n * </mk-chart-tooltip>\n * Over another chart give it labels, series (JSON), align, inset (JSON), min and max.\n * Emits mk:index-change ({index, pinned}).\n */\nexport class MkChartTooltipElement extends MkElement<ChartTooltipInstance> {\n static options: Record<string, OptionType> = {\n labels: 'list',\n series: 'json',\n align: 'string',\n inset: 'json',\n min: 'number',\n max: 'number',\n delta: 'boolean',\n share: 'boolean',\n total: 'boolean',\n sort: 'boolean',\n pin: 'boolean',\n label: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createChartTooltip(this, options);\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n this.instance.update(this.options);\n }\n}\n\nexport const defineChartTooltip = () => defineElement('mk-chart-tooltip', MkChartTooltipElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createMultiSelect, type MultiSelectInstance } from './engine';\n\n/**\n * <mk-multi-select class=\"mk-multi-select\" label=\"Etiquetas\">\n * <select multiple name=\"etiquetas\"><option>Diseño</option><option selected>Código</option></select>\n * </mk-multi-select>\n * Or options='[{\"value\":\"ana\",\"label\":\"Ana\"}]' value=\"ana\" name=\"personas\". Emits mk:change ({value}).\n */\nexport class MkMultiSelectElement extends MkElement<MultiSelectInstance> {\n static options: Record<string, OptionType> = { options: 'json', value: 'list', placeholder: 'string', label: 'string', name: 'string', max: 'number', closeOnSelect: 'boolean', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createMultiSelect(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue((next ?? '').split(',').map((item) => item.trim()).filter(Boolean));\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? [];\n }\n}\n\nexport const defineMultiSelect = () => defineElement('mk-multi-select', MkMultiSelectElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTagInput, type TagInputInstance } from './engine';\n\n/**\n * <mk-tag-input class=\"mk-tag-input\" label=\"Etiquetas\" value=\"diseño,urgente\" suggestions=\"diseño,código,urgente\" max=\"5\" name=\"tags\">\n * </mk-tag-input>\n * Emits mk:change ({value}).\n */\nexport class MkTagInputElement extends MkElement<TagInputInstance> {\n static options: Record<string, OptionType> = {\n value: 'list',\n suggestions: 'list',\n placeholder: 'string',\n label: 'string',\n name: 'string',\n max: 'number',\n restrict: 'boolean',\n allowDuplicates: 'boolean',\n disabled: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createTagInput(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n const list = (next ?? '').split(',').map((item) => item.trim()).filter(Boolean);\n if (name === 'value') this.instance.setValue(list);\n else if (name === 'suggestions') this.instance.setSuggestions(list);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? [];\n }\n}\n\nexport const defineTagInput = () => defineElement('mk-tag-input', MkTagInputElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createDateTimePicker, type DateTimePickerInstance } from './engine';\n\n/**\n * <mk-date-time-picker class=\"mk-date-time-picker\" value=\"2026-11-23T10:30\" minute-step=\"15\" name=\"cita\"></mk-date-time-picker>\n * Emits mk:change ({value: 'YYYY-MM-DDTHH:MM' | null}).\n */\nexport class MkDateTimePickerElement extends MkElement<DateTimePickerInstance> {\n static options: Record<string, OptionType> = {\n value: 'string',\n min: 'string',\n max: 'string',\n locale: 'string',\n hourCycle: 'number',\n minuteStep: 'number',\n firstDay: 'number',\n unavailable: 'list',\n today: 'string',\n label: 'string',\n name: 'string',\n disabled: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createDateTimePicker(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue(next);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineDateTimePicker = () => defineElement('mk-date-time-picker', MkDateTimePickerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createFilterBuilder, type FilterBuilderInstance } from './engine';\nimport type { FilterField, FilterGroup } from '../../core/filter';\n\n/**\n * <mk-filter-builder class=\"mk-filter-builder\"\n * fields='[{\"key\":\"estado\",\"label\":\"Estado\",\"type\":\"select\",\"options\":[{\"value\":\"activo\",\"label\":\"Activo\"}]},{\"key\":\"monto\",\"label\":\"Monto\",\"type\":\"number\"}]'>\n * </mk-filter-builder>\n * Emits mk:change ({value, summary}).\n */\nexport class MkFilterBuilderElement extends MkElement<FilterBuilderInstance> {\n static options: Record<string, OptionType> = { fields: 'json', value: 'json', maxDepth: 'number', label: 'string', summary: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createFilterBuilder(this, options as { fields?: FilterField[] });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next) {\n try {\n this.instance.setValue(JSON.parse(next) as FilterGroup);\n } catch {\n // Malformed JSON: keep the current filter.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineFilterBuilder = () => defineElement('mk-filter-builder', MkFilterBuilderElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTimeline, type TimelineEvent, type TimelineInstance } from './engine';\n\n/**\n * <mk-timeline class=\"mk-timeline\" events='[{\"id\":\"1\",\"title\":\"Pedido recibido\",\"time\":\"2026-11-23T09:12\",\"status\":\"done\"}]'>\n * </mk-timeline> — or authored <ol><li data-status data-time>Title<p>Description</p></li></ol>.\n */\nexport class MkTimelineElement extends MkElement<TimelineInstance> {\n static options: Record<string, OptionType> = { events: 'json', layout: 'string', group: 'boolean', relative: 'boolean', locale: 'string', label: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createTimeline(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'events') {\n try {\n this.instance.setEvents(JSON.parse(next ?? '[]') as TimelineEvent[]);\n } catch {\n // Malformed JSON: keep the current events.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n\n add(event: TimelineEvent, at?: 'start' | 'end') {\n this.instance?.add(event, at);\n }\n}\n\nexport const defineTimeline = () => defineElement('mk-timeline', MkTimelineElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createActivityFeed, type ActivityFeedInstance, type ActivityItem } from './engine';\n\n/**\n * <mk-activity-feed class=\"mk-activity-feed\" items='[{\"id\":\"1\",\"actor\":\"Ana Gómez\",\"action\":\"comentó en\",\"target\":\"Tarea 12\",\"time\":\"2026-11-23T09:12\",\"kind\":\"comment\"}]'>\n * </mk-activity-feed>. element.prepend([...]) / element.append([...]) for live and older activity.\n */\nexport class MkActivityFeedElement extends MkElement<ActivityFeedInstance> {\n static options: Record<string, OptionType> = { items: 'json', locale: 'string', label: 'string', emptyLabel: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createActivityFeed(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'items') {\n try {\n this.instance.setItems(JSON.parse(next ?? '[]') as ActivityItem[]);\n } catch {\n // Malformed JSON: keep the current entries.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n\n /** New activity on top (not Element.prepend). */\n prependItems(items: ActivityItem[]) {\n this.instance?.prepend(items);\n }\n\n appendItems(items: ActivityItem[]) {\n this.instance?.append(items);\n }\n}\n\nexport const defineActivityFeed = () => defineElement('mk-activity-feed', MkActivityFeedElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTreeView, type TreeNode, type TreeViewInstance } from './engine';\n\n/**\n * <mk-tree-view class=\"mk-tree-view\" checkable search\n * nodes='[{\"id\":\"a\",\"label\":\"Proyectos\",\"children\":[{\"id\":\"a1\",\"label\":\"Melon\"}]}]'></mk-tree-view>\n * Emits mk:select ({id, node}), mk:check ({checked}), mk:expand ({id, expanded}).\n */\nexport class MkTreeViewElement extends MkElement<TreeViewInstance> {\n static options: Record<string, OptionType> = { nodes: 'json', checkable: 'boolean', checked: 'list', expanded: 'list', selected: 'string', search: 'string', label: 'string' };\n\n protected create(options: Record<string, unknown>) {\n // search=\"\" (present without text) turns the field on with its default placeholder.\n const search = this.hasAttribute('search') ? (this.getAttribute('search') || true) : undefined;\n const expanded = this.getAttribute('expanded') === 'all' ? true : options.expanded;\n return createTreeView(this, { ...options, search, expanded } as Parameters<typeof createTreeView>[1]);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'nodes') {\n try {\n this.instance.setNodes(JSON.parse(next ?? '[]') as TreeNode[]);\n } catch {\n // Malformed JSON: keep the current nodes.\n }\n } else if (name === 'selected') this.instance.select(next);\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineTreeView = () => defineElement('mk-tree-view', MkTreeViewElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createFileExplorer, type FileEntry, type FileExplorerInstance } from './engine';\n\n/**\n * <mk-file-explorer class=\"mk-file-explorer\" root-label=\"Mi unidad\" view=\"grid\"\n * files='[{\"id\":\"docs\",\"name\":\"Documentos\",\"children\":[{\"id\":\"cv\",\"name\":\"Currículum.pdf\",\"size\":184320}]}]'>\n * </mk-file-explorer>. Emits mk:open ({id, entry}), mk:navigate ({id, folder}), mk:select ({ids}), mk:change ({files, change}).\n */\nexport class MkFileExplorerElement extends MkElement<FileExplorerInstance> {\n static options: Record<string, OptionType> = {\n files: 'json',\n rootLabel: 'string',\n folder: 'string',\n view: 'string',\n tree: 'boolean',\n readOnly: 'boolean',\n locale: 'string',\n label: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createFileExplorer(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'files') {\n try {\n this.instance.setFiles(JSON.parse(next ?? '[]') as FileEntry[]);\n } catch {\n // Malformed JSON: keep the current files.\n }\n } else if (name === 'view') this.instance.setView(next === 'grid' ? 'grid' : 'list');\n else if (name === 'folder') this.instance.open(next || '/');\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineFileExplorer = () => defineElement('mk-file-explorer', MkFileExplorerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createJsonViewer, type JsonViewerInstance } from './engine';\n\n/**\n * <mk-json-viewer class=\"mk-json-viewer\" expand-depth=\"2\" search data='{\"user\":{\"name\":\"Ana\",\"roles\":[\"admin\"]}}'></mk-json-viewer>\n * Or the JSON as the element's text. Emits mk:select ({path, value}) and mk:copy ({text, path}).\n */\nexport class MkJsonViewerElement extends MkElement<JsonViewerInstance> {\n static options: Record<string, OptionType> = {\n data: 'json',\n expandDepth: 'number',\n rootName: 'string',\n search: 'string',\n toolbar: 'boolean',\n sortKeys: 'boolean',\n label: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n // search=\"\" (present without text) turns the field on with its default placeholder.\n const search = this.hasAttribute('search') ? (this.getAttribute('search') || true) : undefined;\n return createJsonViewer(this, { ...options, search });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'data') {\n try {\n this.instance.setData(JSON.parse(next ?? 'null'));\n } catch {\n // Malformed JSON: keep the current data.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineJsonViewer = () => defineElement('mk-json-viewer', MkJsonViewerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createVirtualList, type VirtualListInstance } from './engine';\n\n/**\n * <mk-virtual-list class=\"mk-virtual-list\" item-height=\"44\" selectable=\"multiple\" items='[\"Uno\",\"Dos\", …]'></mk-virtual-list>\n * Or an authored <ul><li>…</li></ul>. element.instance.setRenderer((item, i, row) => …) draws richer rows.\n * Emits mk:select ({keys, items}).\n */\nexport class MkVirtualListElement extends MkElement<VirtualListInstance> {\n static options: Record<string, OptionType> = {\n items: 'json',\n itemHeight: 'number',\n estimatedHeight: 'number',\n overscan: 'number',\n selectable: 'string',\n selected: 'list',\n label: 'string',\n emptyLabel: 'string',\n locale: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n // selectable=\"\" or \"true\" → one at a time; \"multiple\" → several.\n const raw = this.getAttribute('selectable');\n const selectable = raw === null || raw === 'false' ? false : raw === 'multiple' ? 'multiple' : 'single';\n return createVirtualList(this, { ...options, selectable });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'items') {\n try {\n this.instance.setItems(JSON.parse(next ?? '[]') as unknown[]);\n } catch {\n // Malformed JSON: keep the current rows.\n }\n } else if (name === 'selected') this.instance.select((next ?? '').split(',').map((key) => key.trim()).filter(Boolean));\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineVirtualList = () => defineElement('mk-virtual-list', MkVirtualListElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createResizablePanel, type ResizablePanelInstance } from './engine';\n\n/**\n * <mk-resizable-panel class=\"mk-resizable-panel\" sizes=\"25,75\" collapsible=\"0\" storage-key=\"layout\">\n * <aside data-min=\"15\">…</aside><main>…</main>\n * </mk-resizable-panel>. Emits mk:resize ({sizes}) and mk:collapse ({index, collapsed}).\n */\nexport class MkResizablePanelElement extends MkElement<ResizablePanelInstance> {\n static options: Record<string, OptionType> = {\n orientation: 'string',\n sizes: 'list',\n min: 'number',\n max: 'number',\n collapsible: 'list',\n collapsed: 'list',\n step: 'number',\n storageKey: 'string',\n handleButtons: 'boolean',\n labels: 'list',\n };\n\n protected create(options: Record<string, unknown>) {\n const numbers = (value: unknown) => (Array.isArray(value) ? value.map(Number).filter(Number.isFinite) : undefined);\n return createResizablePanel(this, { ...options, sizes: numbers(options.sizes), collapsible: numbers(options.collapsible), collapsed: numbers(options.collapsed) });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'orientation') this.instance.setOrientation(next === 'vertical' ? 'vertical' : 'horizontal');\n else if (name === 'sizes') this.instance.setSizes((next ?? '').split(',').map(Number).filter(Number.isFinite));\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineResizablePanel = () => defineElement('mk-resizable-panel', MkResizablePanelElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSplitView, type SplitViewInstance } from './engine';\n\n/**\n * <mk-split-view class=\"mk-split-view\" ratio=\"0.35\" stack-below=\"640\" labels=\"Bandeja,Mensaje\">\n * <section>…</section><section>…</section>\n * </mk-split-view>. Emits mk:resize and mk:collapse from its separator.\n */\nexport class MkSplitViewElement extends MkElement<SplitViewInstance> {\n static options: Record<string, OptionType> = {\n orientation: 'string',\n ratio: 'number',\n min: 'number',\n collapsible: 'string',\n stackBelow: 'number',\n storageKey: 'string',\n labels: 'list',\n };\n\n protected create(options: Record<string, unknown>) {\n const raw = this.getAttribute('collapsible');\n const collapsible = raw === null || raw === '' || raw === 'true' ? true : raw === 'false' ? false : raw === 'start' || raw === 'end' ? raw : true;\n const labels = Array.isArray(options.labels) && options.labels.length === 2 ? (options.labels as [string, string]) : undefined;\n return createSplitView(this, { ...options, collapsible, labels });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'ratio' && next !== null && Number.isFinite(Number(next))) this.instance.setRatio(Number(next));\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineSplitView = () => defineElement('mk-split-view', MkSplitViewElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createDataTable, type DataRow, type DataTableInstance } from './engine';\n\n/**\n * <mk-data-table class=\"mk-data-table\" selectable page-size=\"10\" sort=\"monto:desc\"\n * columns='[{\"key\":\"cliente\",\"label\":\"Cliente\"},{\"key\":\"monto\",\"label\":\"Monto\",\"type\":\"number\"}]'\n * rows='[{\"id\":1,\"cliente\":\"Ana\",\"monto\":1200}]' actions='[{\"id\":\"editar\",\"label\":\"Editar\"}]'></mk-data-table>\n * Emits mk:sort, mk:select, mk:action, mk:bulk-action, mk:page and mk:filter.\n */\nexport class MkDataTableElement extends MkElement<DataTableInstance> {\n static options: Record<string, OptionType> = {\n columns: 'json',\n rows: 'json',\n rowKey: 'string',\n caption: 'string',\n pageSize: 'number',\n pageSizes: 'json',\n selectable: 'boolean',\n search: 'string',\n filters: 'boolean',\n columnsMenu: 'boolean',\n actions: 'json',\n bulkActions: 'json',\n sort: 'string',\n loading: 'boolean',\n emptyTitle: 'string',\n emptyDescription: 'string',\n locale: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n // search=\"\" (present without text) keeps the field with its default placeholder; search=\"false\" removes it.\n const raw = this.getAttribute('search');\n const search = raw === null || raw === '' ? true : raw === 'false' ? false : raw;\n // sort=\"key\" or \"key:desc\".\n const [key, direction] = String(options.sort ?? '').split(':');\n const sort = key ? { key, direction: direction === 'desc' ? ('desc' as const) : ('asc' as const) } : null;\n return createDataTable<DataRow>(this, { ...options, search, sort } as Parameters<typeof createDataTable>[1]);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'rows') {\n try {\n this.instance.setRows(JSON.parse(next ?? '[]') as DataRow[]);\n } catch {\n // Malformed JSON: keep the current rows.\n }\n } else if (name === 'loading') this.instance.setLoading(next !== null && next !== 'false');\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineDataTable = () => defineElement('mk-data-table', MkDataTableElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createEditableTable, type EditableTableInstance } from './engine';\nimport type { DataRow } from '../data-table/engine';\n\n/**\n * <mk-editable-table class=\"mk-editable-table\" new-row='{\"estado\":\"nuevo\"}'\n * columns='[{\"key\":\"producto\",\"label\":\"Producto\",\"required\":true},{\"key\":\"precio\",\"label\":\"Precio\",\"type\":\"number\",\"min\":0}]'\n * rows='[{\"id\":1,\"producto\":\"Taza\",\"precio\":189}]'></mk-editable-table>\n * Emits mk:change ({changes}) and mk:save ({changes}); listen to mk:save to send them (the engine keeps them as saved).\n */\nexport class MkEditableTableElement extends MkElement<EditableTableInstance> {\n static options: Record<string, OptionType> = {\n columns: 'json',\n rows: 'json',\n rowKey: 'string',\n caption: 'string',\n pageSize: 'number',\n selectable: 'boolean',\n search: 'string',\n filters: 'boolean',\n columnsMenu: 'boolean',\n newRow: 'json',\n locale: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n const raw = this.getAttribute('search');\n const search = raw === null || raw === '' ? true : raw === 'false' ? false : raw;\n const template = options.newRow as DataRow | undefined;\n return createEditableTable<DataRow>(this, { ...options, search, newRow: template ? () => ({ ...template }) : undefined } as Parameters<typeof createEditableTable>[1]);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'rows') {\n try {\n this.instance.setRows(JSON.parse(next ?? '[]') as DataRow[]);\n } catch {\n // Malformed JSON: keep the current rows.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineEditableTable = () => defineElement('mk-editable-table', MkEditableTableElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createRichTextEditor, type RichCommand, type RichTextEditorInstance } from './engine';\n\n/**\n * <mk-rich-text-editor class=\"mk-rich-text-editor\" name=\"cuerpo\" max-length=\"500\" placeholder=\"Cuenta tu idea…\">\n * <p>Contenido <strong>inicial</strong></p>\n * </mk-rich-text-editor>. Emits mk:change ({html, text}).\n */\nexport class MkRichTextEditorElement extends MkElement<RichTextEditorInstance> {\n static options: Record<string, OptionType> = {\n value: 'string',\n placeholder: 'string',\n toolbar: 'list',\n maxLength: 'number',\n counter: 'string',\n name: 'string',\n label: 'string',\n readOnly: 'boolean',\n markdown: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n const counter = options.counter === 'false' ? false : options.counter === 'characters' ? 'characters' : options.counter === 'words' ? 'words' : undefined;\n return createRichTextEditor(this, { ...options, counter, toolbar: options.toolbar as Array<RichCommand | '|'> | undefined });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue(next ?? '');\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineRichTextEditor = () => defineElement('mk-rich-text-editor', MkRichTextEditorElement);\n","import { MkStudioDockElement } from '../components/studio-dock/element';\nimport { MkTrailerElement } from '../components/trailer/element';\nimport { defineElement } from './base';\nimport { MkThemePickerElement } from '../components/theme-picker/element';\nimport { MkDialogElement } from '../components/dialog/element';\nimport { MkMenuElement } from '../components/menu/element';\nimport { MkToasterElement } from '../components/toast/element';\nimport { MkChatBackgroundElement } from '../components/chat-background/element';\nimport { MkChatElement } from '../components/chat/element';\nimport { MkNavElement } from '../components/nav/element';\nimport { MkStepsElement } from '../components/steps/element';\nimport { MkCursorElement } from '../components/cursor/element';\nimport { MkIslandElement } from '../components/island/element';\nimport { MkQuantityElement } from '../components/quantity/element';\nimport { MkPaginationElement } from '../components/pagination/element';\nimport { MkHoverCardElement } from '../components/hover-card/element';\nimport { MkInputOtpElement } from '../components/input-otp/element';\nimport { MkCalendarElement } from '../components/calendar/element';\nimport { MkSlotPickerElement } from '../components/slot-picker/element';\nimport { MkAttachmentElement } from '../components/attachment/element';\nimport { MkSkeletonElement } from '../components/skeleton/element';\nimport { MkQuestionnaireElement } from '../components/questionnaire/element';\nimport { MkCodeBlockElement } from '../components/code-block/element';\nimport { MkContextMenuElement } from '../components/context-menu/element';\nimport { MkDrawerElement } from '../components/drawer/element';\nimport { MkLinkPreviewElement } from '../components/link-preview/element';\nimport { MkProgressElement } from '../components/progress/element';\nimport { MkRangeSliderElement } from '../components/range-slider/element';\nimport { MkChartElement } from '../components/chart/element';\nimport { MkCreditCardElement } from '../components/credit-card/element';\nimport { MkCommandSearchElement } from '../components/command-search/element';\nimport { MkHoldConfirmElement } from '../components/hold-confirm/element';\nimport { MkImagePreviewElement } from '../components/image-preview/element';\nimport { MkLikeButtonElement } from '../components/like-button/element';\nimport { MkNotificationBellElement } from '../components/notification-bell/element';\nimport { MkPasswordStrengthElement } from '../components/password-strength/element';\nimport { MkScratchCardElement } from '../components/scratch-card/element';\nimport { MkStarRatingElement } from '../components/star-rating/element';\nimport { MkSwipeActionsElement } from '../components/swipe-actions/element';\nimport { MkColorSliderElement } from '../components/color-slider/element';\nimport { MkColorAreaElement } from '../components/color-area/element';\nimport { MkColorFieldElement } from '../components/color-field/element';\nimport { MkColorPickerElement } from '../components/color-picker/element';\nimport { MkTimeFieldElement } from '../components/time-field/element';\nimport { MkRangeCalendarElement } from '../components/range-calendar/element';\nimport { MkDateRangePickerElement } from '../components/date-range-picker/element';\nimport { MkTooltipElement } from '../components/tooltip/element';\nimport { MkPopoverElement } from '../components/popover/element';\nimport { MkLoadingButtonElement } from '../components/loading-button/element';\nimport { MkBreadcrumbElement } from '../components/breadcrumb/element';\nimport { MkEmptyStateElement } from '../components/empty-state/element';\nimport { MkStatCardElement } from '../components/stat-card/element';\nimport { MkChartTooltipElement } from '../components/chart-tooltip/element';\nimport { MkMultiSelectElement } from '../components/multi-select/element';\nimport { MkTagInputElement } from '../components/tag-input/element';\nimport { MkDateTimePickerElement } from '../components/date-time-picker/element';\nimport { MkFilterBuilderElement } from '../components/filter-builder/element';\nimport { MkTimelineElement } from '../components/timeline/element';\nimport { MkActivityFeedElement } from '../components/activity-feed/element';\nimport { MkTreeViewElement } from '../components/tree-view/element';\nimport { MkFileExplorerElement } from '../components/file-explorer/element';\nimport { MkJsonViewerElement } from '../components/json-viewer/element';\nimport { MkVirtualListElement } from '../components/virtual-list/element';\nimport { MkResizablePanelElement } from '../components/resizable-panel/element';\nimport { MkSplitViewElement } from '../components/split-view/element';\nimport { MkDataTableElement } from '../components/data-table/element';\nimport { MkEditableTableElement } from '../components/editable-table/element';\nimport { MkRichTextEditorElement } from '../components/rich-text-editor/element';\n// new-component:imports (scripts/new-component.mjs inserts above this line)\n\nexport { MkElement, SafeHTMLElement, defineElement, type OptionType } from './base';\nexport { MkThemePickerElement } from '../components/theme-picker/element';\nexport { MkDialogElement } from '../components/dialog/element';\nexport { MkMenuElement } from '../components/menu/element';\nexport { MkToasterElement } from '../components/toast/element';\nexport { MkChatBackgroundElement } from '../components/chat-background/element';\nexport { MkChatElement } from '../components/chat/element';\nexport { MkNavElement } from '../components/nav/element';\nexport { MkStepsElement } from '../components/steps/element';\nexport { MkCursorElement } from '../components/cursor/element';\nexport { toast } from '../components/toast/store';\nexport { MkIslandElement } from '../components/island/element';\nexport { MkQuantityElement } from '../components/quantity/element';\nexport { MkPaginationElement } from '../components/pagination/element';\nexport { MkHoverCardElement } from '../components/hover-card/element';\nexport { MkInputOtpElement } from '../components/input-otp/element';\nexport { MkStudioDockElement, defineStudioDock } from '../components/studio-dock/element';\nexport { MkTrailerElement, defineTrailer } from '../components/trailer/element';\nexport { MkCalendarElement } from '../components/calendar/element';\nexport { MkSlotPickerElement } from '../components/slot-picker/element';\nexport { MkAttachmentElement } from '../components/attachment/element';\nexport { MkSkeletonElement } from '../components/skeleton/element';\nexport { MkQuestionnaireElement } from '../components/questionnaire/element';\nexport { MkCodeBlockElement } from '../components/code-block/element';\nexport { MkContextMenuElement } from '../components/context-menu/element';\nexport { MkDrawerElement } from '../components/drawer/element';\nexport { MkLinkPreviewElement } from '../components/link-preview/element';\nexport { MkProgressElement } from '../components/progress/element';\nexport { MkRangeSliderElement } from '../components/range-slider/element';\nexport { MkChartElement } from '../components/chart/element';\nexport { MkCreditCardElement } from '../components/credit-card/element';\nexport { MkCommandSearchElement } from '../components/command-search/element';\nexport { MkHoldConfirmElement } from '../components/hold-confirm/element';\nexport { MkImagePreviewElement } from '../components/image-preview/element';\nexport { MkLikeButtonElement } from '../components/like-button/element';\nexport { MkNotificationBellElement } from '../components/notification-bell/element';\nexport { MkPasswordStrengthElement } from '../components/password-strength/element';\nexport { MkScratchCardElement } from '../components/scratch-card/element';\nexport { MkStarRatingElement } from '../components/star-rating/element';\nexport { MkSwipeActionsElement } from '../components/swipe-actions/element';\nexport { MkColorSliderElement } from '../components/color-slider/element';\nexport { MkColorAreaElement } from '../components/color-area/element';\nexport { MkColorFieldElement } from '../components/color-field/element';\nexport { MkColorPickerElement } from '../components/color-picker/element';\nexport { MkTimeFieldElement } from '../components/time-field/element';\nexport { MkRangeCalendarElement } from '../components/range-calendar/element';\nexport { MkDateRangePickerElement } from '../components/date-range-picker/element';\nexport { MkTooltipElement } from '../components/tooltip/element';\nexport { MkPopoverElement } from '../components/popover/element';\nexport { MkLoadingButtonElement } from '../components/loading-button/element';\nexport { MkBreadcrumbElement } from '../components/breadcrumb/element';\nexport { MkEmptyStateElement } from '../components/empty-state/element';\nexport { MkStatCardElement } from '../components/stat-card/element';\nexport { MkChartTooltipElement } from '../components/chart-tooltip/element';\nexport { MkMultiSelectElement } from '../components/multi-select/element';\nexport { MkTagInputElement } from '../components/tag-input/element';\nexport { MkDateTimePickerElement } from '../components/date-time-picker/element';\nexport { MkFilterBuilderElement } from '../components/filter-builder/element';\nexport { MkTimelineElement } from '../components/timeline/element';\nexport { MkActivityFeedElement } from '../components/activity-feed/element';\nexport { MkTreeViewElement } from '../components/tree-view/element';\nexport { MkFileExplorerElement } from '../components/file-explorer/element';\nexport { MkJsonViewerElement } from '../components/json-viewer/element';\nexport { MkVirtualListElement } from '../components/virtual-list/element';\nexport { MkResizablePanelElement } from '../components/resizable-panel/element';\nexport { MkSplitViewElement } from '../components/split-view/element';\nexport { MkDataTableElement } from '../components/data-table/element';\nexport { MkEditableTableElement } from '../components/editable-table/element';\nexport { MkRichTextEditorElement } from '../components/rich-text-editor/element';\n// new-component:exports\n\n/** Tag name → element class, for every component. */\nexport const ELEMENTS = {\n 'mk-theme-picker': MkThemePickerElement,\n 'mk-dialog': MkDialogElement,\n 'mk-menu': MkMenuElement,\n 'mk-toaster': MkToasterElement,\n 'mk-chat-background': MkChatBackgroundElement,\n 'mk-chat': MkChatElement,\n 'mk-nav': MkNavElement,\n 'mk-steps': MkStepsElement,\n 'mk-cursor': MkCursorElement,\n 'mk-island': MkIslandElement,\n 'mk-quantity': MkQuantityElement,\n 'mk-pagination': MkPaginationElement,\n 'mk-hover-card': MkHoverCardElement,\n 'mk-input-otp': MkInputOtpElement,\n 'mk-studio-dock': MkStudioDockElement,\n'mk-trailer': MkTrailerElement,\n 'mk-calendar': MkCalendarElement,\n 'mk-slot-picker': MkSlotPickerElement,\n 'mk-attachment': MkAttachmentElement,\n 'mk-skeleton': MkSkeletonElement,\n 'mk-questionnaire': MkQuestionnaireElement,\n 'mk-code-block': MkCodeBlockElement,\n 'mk-context-menu': MkContextMenuElement,\n 'mk-drawer': MkDrawerElement,\n 'mk-link-preview': MkLinkPreviewElement,\n 'mk-progress': MkProgressElement,\n 'mk-range-slider': MkRangeSliderElement,\n 'mk-chart': MkChartElement,\n 'mk-credit-card': MkCreditCardElement,\n 'mk-command-search': MkCommandSearchElement,\n 'mk-hold-confirm': MkHoldConfirmElement,\n 'mk-image-preview': MkImagePreviewElement,\n 'mk-like-button': MkLikeButtonElement,\n 'mk-notification-bell': MkNotificationBellElement,\n 'mk-password-strength': MkPasswordStrengthElement,\n 'mk-scratch-card': MkScratchCardElement,\n 'mk-star-rating': MkStarRatingElement,\n 'mk-swipe-actions': MkSwipeActionsElement,\n 'mk-color-slider': MkColorSliderElement,\n 'mk-color-area': MkColorAreaElement,\n 'mk-color-field': MkColorFieldElement,\n 'mk-color-picker': MkColorPickerElement,\n 'mk-time-field': MkTimeFieldElement,\n 'mk-range-calendar': MkRangeCalendarElement,\n 'mk-date-range-picker': MkDateRangePickerElement,\n 'mk-tooltip': MkTooltipElement,\n 'mk-popover': MkPopoverElement,\n 'mk-loading-button': MkLoadingButtonElement,\n 'mk-breadcrumb': MkBreadcrumbElement,\n 'mk-empty-state': MkEmptyStateElement,\n 'mk-stat-card': MkStatCardElement,\n 'mk-chart-tooltip': MkChartTooltipElement,\n 'mk-multi-select': MkMultiSelectElement,\n 'mk-tag-input': MkTagInputElement,\n 'mk-date-time-picker': MkDateTimePickerElement,\n 'mk-filter-builder': MkFilterBuilderElement,\n 'mk-timeline': MkTimelineElement,\n 'mk-activity-feed': MkActivityFeedElement,\n 'mk-tree-view': MkTreeViewElement,\n 'mk-file-explorer': MkFileExplorerElement,\n 'mk-json-viewer': MkJsonViewerElement,\n 'mk-virtual-list': MkVirtualListElement,\n 'mk-resizable-panel': MkResizablePanelElement,\n 'mk-split-view': MkSplitViewElement,\n 'mk-data-table': MkDataTableElement,\n 'mk-editable-table': MkEditableTableElement,\n 'mk-rich-text-editor': MkRichTextEditorElement,\n // new-component:entries\n} as const;\n\nexport type ElementName = keyof typeof ELEMENTS;\n\n/** Register every motion-kit element (or the ones named). Safe to call more than once. */\nexport function defineElements(names: ElementName[] = Object.keys(ELEMENTS) as ElementName[]) {\n for (const name of names) defineElement(name, ELEMENTS[name]);\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/elements/base.ts","../../src/components/studio-dock/element.ts","../../src/components/trailer/element.ts","../../src/components/theme-picker/element.ts","../../src/components/dialog/element.ts","../../src/components/menu/element.ts","../../src/components/toast/element.ts","../../src/components/chat-background/element.ts","../../src/components/chat/element.ts","../../src/components/nav/element.ts","../../src/components/steps/element.ts","../../src/components/cursor/element.ts","../../src/components/island/element.ts","../../src/components/quantity/element.ts","../../src/components/pagination/element.ts","../../src/components/hover-card/element.ts","../../src/components/input-otp/element.ts","../../src/components/calendar/element.ts","../../src/components/slot-picker/element.ts","../../src/components/attachment/element.ts","../../src/components/skeleton/element.ts","../../src/components/questionnaire/element.ts","../../src/components/code-block/element.ts","../../src/components/context-menu/element.ts","../../src/components/drawer/element.ts","../../src/components/link-preview/element.ts","../../src/components/progress/element.ts","../../src/components/range-slider/element.ts","../../src/components/chart/element.ts","../../src/components/credit-card/element.ts","../../src/components/command-search/element.ts","../../src/components/hold-confirm/element.ts","../../src/components/image-preview/element.ts","../../src/components/like-button/element.ts","../../src/components/notification-bell/element.ts","../../src/components/password-strength/element.ts","../../src/components/scratch-card/element.ts","../../src/components/star-rating/element.ts","../../src/components/swipe-actions/element.ts","../../src/components/color-slider/element.ts","../../src/components/color-area/element.ts","../../src/components/color-field/element.ts","../../src/components/color-picker/element.ts","../../src/components/time-field/element.ts","../../src/components/range-calendar/element.ts","../../src/components/date-range-picker/element.ts","../../src/components/tooltip/element.ts","../../src/components/popover/element.ts","../../src/components/loading-button/element.ts","../../src/components/breadcrumb/element.ts","../../src/components/empty-state/element.ts","../../src/components/stat-card/element.ts","../../src/components/chart-tooltip/element.ts","../../src/components/multi-select/element.ts","../../src/components/tag-input/element.ts","../../src/components/date-time-picker/element.ts","../../src/components/filter-builder/element.ts","../../src/components/timeline/element.ts","../../src/components/activity-feed/element.ts","../../src/components/tree-view/element.ts","../../src/components/file-explorer/element.ts","../../src/components/json-viewer/element.ts","../../src/components/virtual-list/element.ts","../../src/components/resizable-panel/element.ts","../../src/components/split-view/element.ts","../../src/components/data-table/element.ts","../../src/components/editable-table/element.ts","../../src/components/rich-text-editor/element.ts","../../src/components/select/element.ts","../../src/components/add-to-cart/element.ts","../../src/components/scroll-island/element.ts","../../src/components/pill-button/element.ts","../../src/components/toolbar/element.ts","../../src/components/bidirectional-slider/element.ts","../../src/components/voice-dots/element.ts","../../src/components/pie-chart/element.ts","../../src/components/radar-chart/element.ts","../../src/components/radial-chart/element.ts","../../src/components/sankey-chart/element.ts","../../src/components/heatmap-chart/element.ts","../../src/components/orbit-menu/element.ts","../../src/elements/index.ts"],"sourcesContent":["import type { Instance } from '../core/types';\n\n/*\n * Base for motion-kit custom elements (Astro / plain HTML). Light DOM only, so\n * themes and project CSS reach the markup. Attributes map to engine options\n * (kebab-case → camelCase); the engine is created on connect, recreated when an\n * observed attribute changes, and destroyed on disconnect.\n */\n\nexport type OptionType = 'string' | 'number' | 'boolean' | 'list' | 'json';\n\n/** `HTMLElement` in the browser; an empty class during SSR so importing never throws. */\nexport const SafeHTMLElement = (typeof HTMLElement === 'undefined' ? class {} : HTMLElement) as typeof HTMLElement;\n\nconst kebab = (name: string) => name.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`);\n\nexport abstract class MkElement<I extends Instance = Instance> extends SafeHTMLElement {\n /** Option name (camelCase) → how to read its attribute. */\n static options: Record<string, OptionType> = {};\n\n static get observedAttributes() {\n return Object.keys(this.options).map(kebab);\n }\n\n /** The live engine (null while disconnected). */\n instance: I | null = null;\n\n protected abstract create(options: Record<string, unknown>): I;\n\n /** Options read from the attributes now. */\n get options(): Record<string, unknown> {\n const types = (this.constructor as typeof MkElement).options;\n const options: Record<string, unknown> = {};\n for (const [name, type] of Object.entries(types)) {\n const raw = this.getAttribute(kebab(name));\n if (type === 'boolean') {\n if (raw !== null) options[name] = raw !== 'false';\n continue;\n }\n if (raw === null) continue;\n if (type === 'number') {\n const value = Number(raw);\n if (Number.isFinite(value)) options[name] = value;\n } else if (type === 'list') options[name] = raw.split(',').map((item) => item.trim()).filter(Boolean);\n else if (type === 'json') {\n try {\n options[name] = JSON.parse(raw);\n } catch {\n // Ignore malformed JSON: the engine keeps its default.\n }\n } else options[name] = raw;\n }\n return options;\n }\n\n connectedCallback() {\n if (!this.instance) this.instance = this.create(this.options);\n }\n\n disconnectedCallback() {\n this.instance?.destroy();\n this.instance = null;\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n this.instance.destroy();\n this.instance = this.create(this.options);\n }\n}\n\n/** customElements.define once; later calls with the same name are ignored. */\nexport function defineElement(name: string, ctor: CustomElementConstructor) {\n if (typeof customElements === 'undefined' || customElements.get(name)) return;\n customElements.define(name, ctor);\n}\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createStudioDock, type StudioDockInstance, type StudioDockView } from './engine';\nexport class MkStudioDockElement extends MkElement<StudioDockInstance> {\n static options: Record<string, OptionType> = { duration: 'number', ease: 'string', focusOnOpen: 'boolean', trapFocus: 'boolean' };\n protected create(options: Record<string, unknown>) { return createStudioDock(this, options); }\n open(view?: StudioDockView) { this.instance?.open(view); }\n close() { this.instance?.close(); }\n toggle() { this.instance?.toggle(); }\n selectPage(index: number) { this.instance?.selectPage(index); }\n}\nexport const defineStudioDock = () => defineElement('mk-studio-dock', MkStudioDockElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTrailer, type TrailerInstance, type TrailerOptions } from './engine';\n\n/** Wrap a consumer-authored native <dialog> containing <video>. */\nexport class MkTrailerElement extends MkElement<TrailerInstance> {\n static options: Record<string, OptionType> = { autoplay: 'boolean', triggers: 'string', closeOnBackdrop: 'boolean' };\n protected create(options: Record<string, unknown>) {\n return createTrailer(this.querySelector('dialog'), options as TrailerOptions);\n }\n open(origin?: HTMLElement | null) { this.instance?.open(origin); }\n close() { this.instance?.close(); }\n}\nexport const defineTrailer = () => defineElement('mk-trailer', MkTrailerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createThemePicker, type ThemePickerInstance } from './engine';\n\n/**\n * <mk-theme-picker show-hidden themes=\"neogreen,pink\"></mk-theme-picker>\n * Emits `mk:theme` on document when a theme is chosen (from setTheme).\n */\nexport class MkThemePickerElement extends MkElement<ThemePickerInstance> {\n static options: Record<string, OptionType> = { showHidden: 'boolean', themes: 'list' };\n\n protected create(options: Record<string, unknown>) {\n return createThemePicker(this, options);\n }\n\n select(id: string) {\n this.instance?.select(id);\n }\n}\n\nexport const defineThemePicker = () => defineElement('mk-theme-picker', MkThemePickerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\r\nimport type { Instance } from '../../core/types';\r\nimport { iconSvg } from '../icons';\r\nimport { createDialog, type DialogInstance, type DialogOptions, type DialogPlacement, type DialogVariant } from './engine';\r\n\r\n/**\r\n * <mk-dialog id=\"crear\" heading=\"Crear proyecto\" [description] [shared=\"id\"] [variant=\"liquid\"]\r\n * [placement=\"anchor|side\"] [size=\"sm|lg|xl\"] [float=\"key\"] [no-backdrop] [persistent] [no-drag]>…</mk-dialog>\r\n * Any [data-mk-open=\"crear\"] opens it from that button. On connect its children\r\n * move into a <dialog class=\"mk-dialog\"> (with `heading`, a header with title and\r\n * close button and a body are made for them); on disconnect they move back.\r\n */\r\nexport class MkDialogElement extends MkElement<Instance> {\r\n static options: Record<string, OptionType> = {\r\n variant: 'string',\r\n placement: 'string',\r\n size: 'string',\r\n heading: 'string',\r\n description: 'string',\r\n float: 'string',\r\n noBackdrop: 'boolean',\r\n persistent: 'boolean',\r\n noDrag: 'boolean',\r\n closeLabel: 'string',\r\n shared: 'string',\r\n };\r\n\r\n dialog: DialogInstance | null = null;\r\n\r\n protected create(options: Record<string, unknown>): Instance {\r\n const original = [...this.childNodes];\r\n const dialog = document.createElement('dialog');\r\n dialog.className = 'mk-dialog';\r\n if (options.size && options.size !== 'md') dialog.classList.add(`mk-dialog--${options.size}`);\r\n const hasParts = original.some((node) => node instanceof Element && node.matches('[data-mk-part]'));\r\n const closeLabel = (options.closeLabel as string | undefined) ?? 'Cerrar';\r\n if (options.heading) {\r\n const header = document.createElement('header');\r\n header.dataset.mkPart = 'header';\r\n const text = document.createElement('div');\r\n const title = document.createElement('h2');\r\n title.dataset.mkPart = 'title';\r\n title.textContent = options.heading as string;\r\n if (options.shared) title.dataset.mkShared = options.shared as string;\r\n text.append(title);\r\n if (options.description) {\r\n const description = document.createElement('p');\r\n description.dataset.mkPart = 'description';\r\n description.textContent = options.description as string;\r\n text.append(description);\r\n }\r\n const actions = document.createElement('div');\r\n actions.dataset.mkPart = 'actions';\r\n if (options.float) {\r\n const handle = document.createElement('button');\r\n handle.type = 'button';\r\n handle.dataset.mkPart = 'handle';\r\n handle.innerHTML = iconSvg('expand', 18);\r\n actions.append(handle);\r\n }\r\n const close = document.createElement('button');\r\n close.type = 'button';\r\n close.dataset.mkPart = 'close';\r\n close.setAttribute('aria-label', closeLabel);\r\n close.innerHTML = iconSvg('close');\r\n actions.append(close);\r\n header.append(text, actions);\r\n const body = document.createElement('div');\r\n body.dataset.mkPart = 'body';\r\n // A footer stays out of the scrolling body.\r\n const isFooter = (node: Node) => node instanceof Element && node.matches('[data-mk-part=\"footer\"]');\r\n body.append(...original.filter((node) => !isFooter(node)));\r\n dialog.append(header, body, ...original.filter(isFooter));\r\n } else if (hasParts) {\r\n dialog.append(...original);\r\n } else {\r\n const body = document.createElement('div');\r\n body.dataset.mkPart = 'body';\r\n body.append(...original);\r\n dialog.append(body);\r\n }\r\n this.append(dialog);\r\n\r\n const engine = this.createEngine(dialog, {\r\n variant: (options.variant as DialogVariant) ?? 'morph',\r\n placement: (options.placement as DialogPlacement) ?? 'center',\r\n backdrop: !options.noBackdrop,\r\n closeOnBackdrop: !options.persistent,\r\n drag: !options.noDrag,\r\n float: (options.float as string) || false,\r\n triggers: this.id || false,\r\n labels: { close: closeLabel },\r\n }, options);\r\n this.dialog = engine;\r\n return {\r\n destroy: () => {\r\n engine.destroy();\r\n this.append(...original);\r\n dialog.remove();\r\n this.dialog = null;\r\n },\r\n };\r\n }\r\n\r\n /** The engine on the built <dialog> (Drawer swaps it). */\r\n protected createEngine(dialog: HTMLDialogElement, options: DialogOptions, _attributes: Record<string, unknown>): DialogInstance {\r\n return createDialog(dialog, options);\r\n }\r\n\r\n open(origin?: HTMLElement | null) {\r\n this.dialog?.open(origin);\r\n }\r\n\r\n close() {\r\n this.dialog?.close();\r\n }\r\n\r\n get isOpen() {\r\n return this.dialog?.isOpen ?? false;\r\n }\r\n}\r\n\r\nexport const defineDialog = () => defineElement('mk-dialog', MkDialogElement);\r\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport type { Instance } from '../../core/types';\nimport type { DialogVariant } from '../dialog/engine';\nimport { createMenu, type MenuInstance } from './engine';\n\n/**\n * <mk-menu id=\"opciones\" [variant=\"liquid\"] [keep-open]>\n * <button data-mk-item data-mk-value=\"ajustes\">Ajustes</button> …\n * </mk-menu>\n * Any [data-mk-open=\"opciones\"] opens it from that button; choosing an option\n * emits `mk:select` (detail.value, detail.item).\n */\nexport class MkMenuElement extends MkElement<Instance> {\n static options: Record<string, OptionType> = { variant: 'string', keepOpen: 'boolean', label: 'string', ticket: 'boolean' };\n\n menu: MenuInstance | null = null;\n\n protected create(options: Record<string, unknown>): Instance {\n const original = [...this.childNodes];\n const dialog = document.createElement('dialog');\n dialog.className = 'mk-dialog mk-menu';\n if (options.label) dialog.setAttribute('aria-label', options.label as string);\n dialog.append(...original);\n this.append(dialog);\n const menu = createMenu(dialog, {\n ticket: Boolean(options.ticket),\n variant: (options.variant as DialogVariant) ?? 'morph',\n closeOnSelect: !options.keepOpen,\n triggers: this.id || false,\n });\n this.menu = menu;\n return {\n destroy: () => {\n menu.destroy();\n this.append(...original);\n dialog.remove();\n this.menu = null;\n },\n };\n }\n\n open(origin?: HTMLElement | null) {\n this.menu?.open(origin);\n }\n\n close() {\n this.menu?.close();\n }\n\n get isOpen() {\n return this.menu?.isOpen ?? false;\n }\n}\n\nexport const defineMenu = () => defineElement('mk-menu', MkMenuElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createToaster, type ToasterInstance } from './engine';\n\n/**\n * <mk-toaster dismiss-label=\"Cerrar\"></mk-toaster> — mount once; then call\n * `toast('Copiado', { origin: button })` from anywhere.\n */\nexport class MkToasterElement extends MkElement<ToasterInstance> {\n static options: Record<string, OptionType> = { dismissLabel: 'string' };\n\n protected create(options: Record<string, unknown>) {\n const host = document.createElement('div');\n host.className = 'mk-toaster';\n this.append(host);\n const toaster = createToaster(host, { labels: { dismiss: options.dismissLabel as string | undefined } });\n return {\n destroy: () => {\n toaster.destroy();\n host.remove();\n },\n };\n }\n}\n\nexport const defineToaster = () => defineElement('mk-toaster', MkToasterElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createChatBackground, type ChatBackgroundInstance } from './engine';\n\n/** <mk-chat-background energy=\"0\" scale=\"1\"></mk-chat-background> inside any positioned container. */\nexport class MkChatBackgroundElement extends MkElement<ChatBackgroundInstance> {\n static options: Record<string, OptionType> = {};\n static get observedAttributes() {\n return ['energy', 'scale'];\n }\n\n protected create() {\n return createChatBackground(this, { energy: Number(this.getAttribute('energy')) || 0, scale: Number(this.getAttribute('scale')) || 1 });\n }\n\n // Energy changes every frame while recording: update the engine instead of rebuilding it.\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'energy') this.instance.setEnergy(Number(next) || 0);\n if (name === 'scale') this.instance.setScale(Number(next) || 1);\n }\n\n setEnergy(energy: number) {\n this.instance?.setEnergy(energy);\n }\n\n busy(on: boolean) {\n this.instance?.busy(on);\n }\n}\n\nexport const defineChatBackground = () => defineElement('mk-chat-background', MkChatBackgroundElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport type { Instance } from '../../core/types';\nimport { iconSvg } from '../icons';\nimport { defineChatBackground } from '../chat-background/element';\nimport { createChat, type ChatInstance, type ChatRole } from './engine';\n\n/**\n * <mk-chat placeholder=\"Escribe un mensaje...\" [background] [mic] [animate-existing]>\n * (optional) your own [data-mk-part=\"messages\"] / composer markup\n * </mk-chat>\n * Empty, it builds the messages list and the composer. Listen to `mk:send`\n * (detail.text) and answer with `element.reply(text)` after `element.pending()`.\n */\nexport class MkChatElement extends MkElement<Instance> {\n static options: Record<string, OptionType> = {\n placeholder: 'string',\n background: 'boolean',\n mic: 'boolean',\n animateExisting: 'boolean',\n thinking: 'string',\n };\n\n chat: ChatInstance | null = null;\n\n protected create(options: Record<string, unknown>): Instance {\n const made: Element[] = [];\n if (!this.querySelector('[data-mk-part=\"messages\"]')) {\n if (options.background && !this.querySelector('.mk-chat-background, mk-chat-background')) {\n defineChatBackground();\n const background = document.createElement('mk-chat-background');\n this.prepend(background);\n made.push(background);\n }\n const messages = document.createElement('div');\n messages.dataset.mkPart = 'messages';\n // Messages written inside the element (history) move into the list.\n messages.append(...[...this.children].filter((child) => child.matches('[data-mk-message]')));\n const composer = document.createElement('form');\n composer.dataset.mkPart = 'composer';\n const input = document.createElement('textarea');\n input.dataset.mkPart = 'input';\n input.rows = 1;\n input.placeholder = (options.placeholder as string | undefined) ?? 'Escribe un mensaje...';\n input.setAttribute('aria-label', input.placeholder);\n const buttons = document.createElement('div');\n buttons.dataset.mkPart = 'buttons';\n if (options.mic) {\n const mic = document.createElement('button');\n mic.type = 'button';\n mic.dataset.mkPart = 'mic';\n mic.setAttribute('aria-label', 'Micrófono');\n mic.innerHTML = iconSvg('mic', 22);\n buttons.append(mic);\n }\n const send = document.createElement('button');\n send.type = 'submit';\n send.dataset.mkPart = 'send';\n send.setAttribute('aria-label', 'Enviar');\n send.innerHTML = iconSvg('send', 22);\n buttons.append(send);\n composer.append(input, buttons);\n this.append(messages, composer);\n made.push(messages, composer);\n }\n const chat = createChat(this, {\n animateExisting: Boolean(options.animateExisting),\n labels: { thinking: options.thinking as string | undefined },\n });\n this.chat = chat;\n return {\n destroy: () => {\n chat.destroy();\n const messages = made.find((node) => node instanceof HTMLElement && node.dataset.mkPart === 'messages');\n if (messages) this.append(...[...messages.children]);\n for (const node of made) node.remove();\n this.chat = null;\n },\n };\n }\n\n add(role: ChatRole, text: string) {\n return this.chat?.add(role, text);\n }\n\n pending() {\n this.chat?.pending();\n }\n\n reply(message: HTMLElement | string) {\n return this.chat?.reply(message);\n }\n\n setRecording(on: boolean) {\n this.chat?.setRecording(on);\n }\n}\n\nexport const defineChat = () => defineElement('mk-chat', MkChatElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createNav, type NavInstance, type NavStyle, type NavStyleAlias } from './engine';\n\n/**\n * <mk-nav class=\"mk-nav mk-nav--pills\" nav-style=\"pills\" [accent] [reveal] [storage-key=\"mi-app-nav\"]>\n * <div class=\"mk-nav__buttons\"><a class=\"mk-nav__button\" href=\"/\">…</a></div>\n * </mk-nav>\n * Emits `mk:navigate` (detail: index, value, item, originalEvent) on click.\n */\nexport class MkNavElement extends MkElement<NavInstance> {\n static options: Record<string, OptionType> = { navStyle: 'string', accent: 'boolean', reveal: 'boolean', storageKey: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createNav(this, {\n style: options.navStyle as NavStyle | NavStyleAlias | undefined,\n accent: options.accent as boolean | undefined,\n reveal: Boolean(options.reveal),\n storageKey: options.storageKey as string | undefined,\n });\n }\n\n // Style and accent change in place: rebuilding would replay the reveal.\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'nav-style' && next) this.instance.setStyle(next as NavStyle | NavStyleAlias);\n else if (name === 'accent') this.instance.setAccent(next !== null && next !== 'false');\n else super.attributeChangedCallback(name, previous, next);\n }\n\n select(target: number | string) {\n this.instance?.select(target);\n }\n\n setStyle(style: NavStyle | NavStyleAlias) {\n this.instance?.setStyle(style);\n }\n}\n\nexport const defineNav = () => defineElement('mk-nav', MkNavElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSteps, type StepsInstance } from './engine';\n\n/**\n * <mk-steps index=\"0\">\n * <mk-chat-background></mk-chat-background>\n * <section data-mk-step><h2 data-mk-flow-item>Hola</h2><button data-mk-flow-item data-mk-step-next>Seguir</button></section>\n * <section data-mk-step>…</section>\n * </mk-steps>\n * Emits `mk:step` (detail: index, previous, step) after each change.\n */\nexport class MkStepsElement extends MkElement<StepsInstance> {\n static options: Record<string, OptionType> = { index: 'number', duration: 'number', animateFirst: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createSteps(this, options);\n }\n\n // A new index moves to that step; rebuilding would jump without the flow.\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'index') void this.instance.goTo(Number(next) || 0);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n next() {\n return this.instance?.next();\n }\n\n prev() {\n return this.instance?.prev();\n }\n\n goTo(index: number) {\n return this.instance?.goTo(index);\n }\n\n busy(on: boolean) {\n this.instance?.busy(on);\n }\n}\n\nexport const defineSteps = () => defineElement('mk-steps', MkStepsElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createCursor, type CursorInstance, type CursorOptions, type CursorVariant } from './engine';\n\n/**\n * <mk-cursor></mk-cursor> glass chip (once per page)\n * <mk-cursor variant=\"dot\" text=\"Scroll\" arrows=\"y\"></mk-cursor> dot, inside its parent\n * zone=\"#hero\" picks another zone.\n */\nexport class MkCursorElement extends MkElement<CursorInstance> {\n static options: Record<string, OptionType> = { variant: 'string', text: 'string', arrows: 'string', zone: 'string' };\n\n protected create(options: Record<string, unknown>) {\n const zone = typeof options.zone === 'string' ? document.querySelector(options.zone) : undefined;\n return createCursor(this, {\n variant: options.variant as CursorVariant | undefined,\n text: options.text as string | undefined,\n arrows: options.arrows as CursorOptions['arrows'],\n zone,\n });\n }\n}\n\nexport const defineCursor = () => defineElement('mk-cursor', MkCursorElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createIsland, type IslandInstance, type IslandOptions } from './engine';\n\n/**\n * <mk-island [entrance=\"false|manual\"] [close-on-scroll=\"false\"] [close-on-navigate=\"false\"] [focus-on-open=\"false\"]>\n * <button class=\"mk-island__backdrop\" data-mk-island-close tabindex=\"-1\" aria-label=\"Cerrar\"></button>\n * <div class=\"mk-island__shell\">…header with [data-mk-island-toggle=\"menu\"]…\n * <div class=\"mk-island__content\"><div><section data-mk-island-panel=\"menu\">…</section></div></div>\n * </div>\n * </mk-island>\n * Emits `mk:island` (detail: { active }) when a panel opens or closes.\n */\nexport class MkIslandElement extends MkElement<IslandInstance> {\n static options: Record<string, OptionType> = {\n entrance: 'string',\n closeOnScroll: 'boolean',\n closeOnNavigate: 'boolean',\n focusOnOpen: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n const entrance: IslandOptions['entrance'] = options.entrance === 'false' ? false : options.entrance === 'manual' ? 'manual' : true;\n return createIsland(this, {\n entrance,\n closeOnScroll: options.closeOnScroll as boolean | undefined,\n closeOnNavigate: options.closeOnNavigate as boolean | undefined,\n focusOnOpen: options.focusOnOpen as boolean | undefined,\n onChange: (active) => this.dispatchEvent(new CustomEvent('mk:island', { detail: { active }, bubbles: true })),\n });\n }\n\n open(name?: string) {\n this.instance?.open(name);\n }\n\n close() {\n this.instance?.close();\n }\n\n ready() {\n this.instance?.ready();\n }\n}\n\nexport const defineIsland = () => defineElement('mk-island', MkIslandElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createQuantity, type QuantityInstance } from './engine';\n/** Light DOM: supply the same child markup shown in the README. */\nexport class MkQuantityElement extends MkElement<QuantityInstance> {\n static options: Record<string, OptionType> = { min: 'number', max: 'number', step: 'number', value: 'number', disabled: 'boolean' };\n protected create(options: Record<string, unknown>) { return createQuantity(this, options); }\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n const value = this.instance.value;\n this.instance.destroy();\n this.instance = this.create({ ...(!this.hasAttribute('value') ? { value } : {}), ...this.options });\n }\n}\nexport const defineQuantity = () => defineElement('mk-quantity', MkQuantityElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createPagination, type PaginationInstance } from './engine';\n/** Light DOM: supply the same child markup shown in the README. */\nexport class MkPaginationElement extends MkElement<PaginationInstance> {\n static options: Record<string, OptionType> = { totalPages: 'number', page: 'number', siblings: 'number' };\n protected create(options: Record<string, unknown>) { return createPagination(this, options); }\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n const page = this.instance.page;\n this.instance.destroy();\n this.instance = this.create({ ...(!this.hasAttribute('page') ? { page } : {}), ...this.options });\n }\n}\nexport const definePagination = () => defineElement('mk-pagination', MkPaginationElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createHoverCard, type HoverCardInstance } from './engine';\n/** Light DOM: supply the same child markup shown in the README. */\nexport class MkHoverCardElement extends MkElement<HoverCardInstance> {\n static options: Record<string, OptionType> = { openDelay: 'number', closeDelay: 'number', placement: 'string' };\n protected create(options: Record<string, unknown>) { return createHoverCard(this, options); }\n}\nexport const defineHoverCard = () => defineElement('mk-hover-card', MkHoverCardElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createInputOtp, type InputOtpInstance } from './engine';\n/** Light DOM: supply the same child markup shown in the README. */\nexport class MkInputOtpElement extends MkElement<InputOtpInstance> {\n static options: Record<string, OptionType> = { length: 'number', value: 'string', mask: 'boolean' };\n protected create(options: Record<string, unknown>) { return createInputOtp(this, options); }\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n const value = this.instance.value;\n this.instance.destroy();\n this.instance = this.create({ ...(!this.hasAttribute('value') ? { value } : {}), ...this.options });\n }\n}\nexport const defineInputOtp = () => defineElement('mk-input-otp', MkInputOtpElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createCalendar, type CalendarEvent, type CalendarInstance } from './engine';\n\n/** Light DOM: supply the header and the [data-mk-calendar-grid] shown in the README. */\nexport class MkCalendarElement extends MkElement<CalendarInstance> {\n static options: Record<string, OptionType> = {\n date: 'string', view: 'string', firstDay: 'number', locale: 'string', maxEvents: 'number', events: 'json', selected: 'string', today: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createCalendar(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n if (name === 'events') {\n this.instance.setEvents((this.options.events as CalendarEvent[] | undefined) ?? []);\n return;\n }\n // Keep where the visitor is unless the changed attribute says otherwise.\n const { date, view, selected } = this.instance;\n this.instance.destroy();\n this.instance = this.create({ date, view, selected, ...this.options });\n }\n}\n\nexport const defineCalendar = () => defineElement('mk-calendar', MkCalendarElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSlotPicker, type SlotPickerInstance, type SlotSource } from './engine';\n\n/** Light DOM: supply the [data-mk-slot-days] and [data-mk-slot-times] markup shown in the README. */\nexport class MkSlotPickerElement extends MkElement<SlotPickerInstance> {\n static options: Record<string, OptionType> = {\n date: 'string', value: 'string', slots: 'json', min: 'string', max: 'string', closedDays: 'json', firstDay: 'number', locale: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createSlotPicker(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.isConnected || !this.instance) return;\n if (name === 'slots') {\n this.instance.setSlots((this.options.slots as SlotSource | undefined) ?? []);\n return;\n }\n // Keep the visitor's pick unless the value itself changed.\n const value = this.instance.value ?? (this.instance.date ? this.instance.date : undefined);\n this.instance.destroy();\n this.instance = this.create({ ...(name !== 'value' && value ? (typeof value === 'string' ? { value } : { date: value }) : {}), ...this.options });\n }\n}\n\nexport const defineSlotPicker = () => defineElement('mk-slot-picker', MkSlotPickerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\r\nimport { createAttachment, type AttachmentInstance, type AttachmentStatus } from './engine';\r\n\r\n/**\r\n * <mk-attachment class=\"mk-attachment\" accept=\"image/*,.pdf\" multiple max-files=\"4\" max-size=\"5000000\"></mk-attachment>\r\n * Emits mk:files ({added, files}), mk:remove ({file, files}) and mk:reject ({file, code, message}).\r\n * Changing an attribute keeps the files already chosen.\r\n */\r\nexport class MkAttachmentElement extends MkElement<AttachmentInstance> {\r\n static options: Record<string, OptionType> = {\r\n accept: 'string',\r\n multiple: 'boolean',\r\n maxFiles: 'number',\r\n maxSize: 'number',\r\n disabled: 'boolean',\r\n name: 'string',\r\n hint: 'string',\r\n initialFiles: 'json',\r\n };\r\n\r\n protected create(options: Record<string, unknown>) {\r\n return createAttachment(this, options);\r\n }\r\n\r\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\r\n if (previous === next || !this.isConnected || !this.instance) return;\r\n const files = this.instance.files;\r\n this.instance.destroy();\r\n this.instance = this.create({ ...this.options, initialFiles: files });\r\n }\r\n\r\n addFiles(files: Iterable<File> | ArrayLike<File>) {\r\n return this.instance?.addFiles(files) ?? [];\r\n }\r\n\r\n /** Remove one file (HTMLElement.remove() still removes the element). */\r\n removeFile(id: string) {\r\n this.instance?.remove(id);\r\n }\r\n\r\n setProgress(id: string, value: number, status?: AttachmentStatus) {\r\n this.instance?.setProgress(id, value, status);\r\n }\r\n\r\n get files() {\r\n return this.instance?.files ?? [];\r\n }\r\n}\r\n\r\nexport const defineAttachment = () => defineElement('mk-attachment', MkAttachmentElement);\r\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSkeleton, type SkeletonInstance } from './engine';\n\n/**\n * <mk-skeleton class=\"mk-skeleton\" shape=\"card\" label=\"Cargando perfil\">\n * <article data-mk-skeleton-content>…</article>\n * </mk-skeleton>\n * Loading until `loaded` is set (or `setLoading(false)`); a placeholder is made from `shape`.\n */\nexport class MkSkeletonElement extends MkElement<SkeletonInstance> {\n static options: Record<string, OptionType> = { loaded: 'boolean', animation: 'string', shape: 'string', lines: 'number', label: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createSkeleton(this, { ...options, loading: !options.loaded });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'loaded') this.instance.setLoading(next === null || next === 'false');\n else super.attributeChangedCallback(name, previous, next);\n }\n\n setLoading(loading: boolean) {\n this.instance?.setLoading(loading);\n }\n\n get loading() {\n return this.instance?.loading ?? false;\n }\n}\n\nexport const defineSkeleton = () => defineElement('mk-skeleton', MkSkeletonElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport type { Instance } from '../../core/types';\nimport { createQuestionnaire, type QuestionnaireInstance } from './engine';\n\ninterface QuestionData {\n id: string;\n label: string;\n type: 'text' | 'textarea' | 'single' | 'multiple';\n options?: Array<string | { value: string; label: string }>;\n required?: boolean;\n description?: string;\n}\n\nconst el = <K extends keyof HTMLElementTagNameMap>(tag: K, attrs: Record<string, string> = {}, text?: string) => {\n const element = document.createElement(tag);\n for (const [name, value] of Object.entries(attrs)) element.setAttribute(name, value);\n if (text !== undefined) element.textContent = text;\n return element;\n};\n\n/** The same form the React <Questionnaire> renders, built with DOM APIs (all text as text). */\nfunction buildForm(questions: QuestionData[]) {\n const form = el('form', { class: 'mk-questionnaire', novalidate: '' });\n const progress = el('div', { 'data-mk-question-progress': '', 'aria-hidden': 'true' });\n progress.append(el('span', { 'data-mk-question-bar': '' }));\n form.append(progress);\n questions.forEach((question, i) => {\n const titleId = `${question.id}-title`;\n const section = el('section', { 'data-mk-question': '', 'aria-labelledby': titleId });\n if (i) section.hidden = true;\n section.append(el('p', { 'data-mk-question-step': '' }, `Pregunta ${i + 1} de ${questions.length}`));\n const title = el('h3', { id: titleId, 'data-mk-step-title': '', 'data-mk-flow-item': '' }, question.label);\n if (question.required) title.append(el('span', { 'data-mk-question-required': '', 'aria-hidden': 'true' }, ' *'));\n section.append(title);\n if (question.description) section.append(el('p', { 'data-mk-question-description': '', 'data-mk-flow-item': '' }, question.description));\n const field = el('div', { 'data-mk-question-field': '', 'data-mk-flow-item': '' });\n if (question.type === 'text' || question.type === 'textarea') {\n const input = question.type === 'text' ? el('input', { type: 'text' }) : el('textarea', { rows: '4' });\n input.name = question.id;\n input.required = Boolean(question.required);\n input.setAttribute('aria-labelledby', titleId);\n field.append(input);\n } else {\n const group = el('div', { role: question.type === 'single' ? 'radiogroup' : 'group', 'aria-labelledby': titleId, 'data-mk-question-options': '' });\n for (const raw of question.options ?? []) {\n const option = typeof raw === 'string' ? { value: raw, label: raw } : raw;\n const label = el('label', { 'data-mk-question-option': '' });\n const input = el('input', { type: question.type === 'single' ? 'radio' : 'checkbox' });\n input.name = question.id;\n input.value = option.value;\n input.required = Boolean(question.required);\n label.append(input, el('span', {}, option.label));\n group.append(label);\n }\n field.append(group);\n }\n section.append(field);\n const actions = el('div', { 'data-mk-question-actions': '', 'data-mk-flow-item': '' });\n if (i) actions.append(el('button', { type: 'button', class: 'mk-button mk-button--text', 'data-mk-question-prev': '' }, 'Anterior'));\n actions.append(\n i < questions.length - 1\n ? el('button', { type: 'button', class: 'mk-button', 'data-mk-question-next': '' }, 'Siguiente')\n : el('button', { type: 'submit', class: 'mk-button' }, 'Finalizar'),\n );\n section.append(actions);\n form.append(section);\n });\n form.append(el('p', { 'data-mk-question-error': '', role: 'alert' }));\n const done = el('div', { 'data-mk-question-complete': '' });\n done.hidden = true;\n done.append(el('p', {}, '¡Gracias! Respuestas enviadas.'), el('button', { type: 'reset', class: 'mk-button mk-button--tonal' }, 'Empezar de nuevo'));\n form.append(done);\n return form;\n}\n\n/**\n * <mk-questionnaire><form>…<section data-mk-question>…</section>…</form></mk-questionnaire>\n * or, empty, <mk-questionnaire questions='[{\"id\":\"name\",\"label\":\"Nombre\",\"type\":\"text\",\"required\":true}]'>.\n * Emits mk:question ({index, previous, answers}), mk:invalid and mk:complete ({answers}).\n */\nexport class MkQuestionnaireElement extends MkElement<Instance> {\n static options: Record<string, OptionType> = { questions: 'json', index: 'number' };\n\n questionnaire: QuestionnaireInstance | null = null;\n\n protected create(options: Record<string, unknown>): Instance {\n const questions = Array.isArray(options.questions) ? (options.questions as QuestionData[]) : null;\n const built = questions && !this.querySelector('[data-mk-question]') ? buildForm(questions) : null;\n if (built) this.append(built);\n const engine = createQuestionnaire(this, { index: options.index as number | undefined });\n this.questionnaire = engine;\n return {\n destroy: () => {\n engine.destroy();\n built?.remove();\n this.questionnaire = null;\n },\n };\n }\n\n next() {\n return this.questionnaire?.next() ?? Promise.resolve(false);\n }\n\n prev() {\n return this.questionnaire?.prev() ?? Promise.resolve();\n }\n\n reset() {\n this.questionnaire?.reset();\n }\n\n get answers() {\n return this.questionnaire?.answers ?? {};\n }\n}\n\nexport const defineQuestionnaire = () => defineElement('mk-questionnaire', MkQuestionnaireElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createCodeBlock, type CodeBlockInstance } from './engine';\n\n/**\n * <mk-code-block class=\"mk-code-block\" title=\"Instalar\" language=\"bash\" line-numbers>\n * <pre><code>npm install @yewdiel21/motion-kit gsap</code></pre>\n * </mk-code-block>\n * Header, copy button and status are made when absent. Emits `mk:copy` ({ok, code}).\n */\nexport class MkCodeBlockElement extends MkElement<CodeBlockInstance> {\n static options: Record<string, OptionType> = {\n code: 'string',\n language: 'string',\n title: 'string',\n lineNumbers: 'boolean',\n copyLabel: 'string',\n copiedLabel: 'string',\n errorLabel: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createCodeBlock(this, options);\n }\n\n setCode(code: string) {\n this.instance?.setCode(code);\n }\n\n copy() {\n return this.instance?.copy() ?? Promise.resolve(false);\n }\n}\n\nexport const defineCodeBlock = () => defineElement('mk-code-block', MkCodeBlockElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createContextMenu, type ContextMenuInstance } from './engine';\n\n/**\n * <mk-context-menu class=\"mk-context-menu\">\n * <article>…the area…</article>\n * <dialog class=\"mk-dialog mk-menu\" data-mk-context-menu aria-label=\"Acciones\">\n * <button data-mk-item data-mk-value=\"rename\">Renombrar</button>\n * <hr data-mk-separator />\n * <button data-mk-item data-mk-value=\"delete\" disabled>Eliminar</button>\n * </dialog>\n * </mk-context-menu>\n * Emits mk:select (detail.value, detail.item) from the dialog.\n */\nexport class MkContextMenuElement extends MkElement<ContextMenuInstance> {\n static options: Record<string, OptionType> = { keepOpen: 'boolean', overrideEditable: 'boolean', longPress: 'number', variant: 'string' };\n\n protected create(options: Record<string, unknown>) {\n const { keepOpen, ...rest } = options;\n return createContextMenu(this, { ...rest, closeOnSelect: !keepOpen });\n }\n\n openAt(x: number, y: number) {\n this.instance?.openAt(x, y);\n }\n\n open(origin?: HTMLElement | null) {\n this.instance?.open(origin);\n }\n\n close() {\n this.instance?.close();\n }\n\n get isOpen() {\n return this.instance?.isOpen ?? false;\n }\n}\n\nexport const defineContextMenu = () => defineElement('mk-context-menu', MkContextMenuElement);\n","import { defineElement, type OptionType } from '../../elements/base';\nimport type { DialogInstance, DialogOptions } from '../dialog/engine';\nimport { MkDialogElement } from '../dialog/element';\nimport { createDrawer, type DrawerSide } from './engine';\n\n/**\n * <mk-drawer id=\"filtros\" side=\"left\" heading=\"Filtros\" [description] [no-backdrop] [persistent]>…</mk-drawer>\n * Any [data-mk-open=\"filtros\"] opens it. Children move into a native <dialog class=\"mk-dialog mk-drawer\">\n * (header, body and a [data-mk-part=\"footer\"] child kept out of the scroll) and back on disconnect.\n */\nexport class MkDrawerElement extends MkDialogElement {\n static options: Record<string, OptionType> = { ...MkDialogElement.options, side: 'string' };\n\n protected createEngine(dialog: HTMLDialogElement, options: DialogOptions, attributes: Record<string, unknown>): DialogInstance {\n dialog.classList.add('mk-drawer');\n const { variant: _variant, placement: _placement, float: _float, ...rest } = options;\n return createDrawer(dialog, { ...rest, side: attributes.side as DrawerSide | undefined });\n }\n}\n\nexport const defineDrawer = () => defineElement('mk-drawer', MkDrawerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createLinkPreview, type LinkPreviewInstance } from './engine';\n\n/**\n * <mk-link-preview class=\"mk-link-preview\" url=\"https://…\" title=\"…\" description=\"…\" image=\"/thumb.jpg\" site-name=\"Blog\"></mk-link-preview>\n * variant=\"hover\" turns it into a link that previews the card (label = link text).\n */\nexport class MkLinkPreviewElement extends MkElement<LinkPreviewInstance> {\n static options: Record<string, OptionType> = {\n url: 'string',\n title: 'string',\n description: 'string',\n image: 'string',\n imageAlt: 'string',\n siteName: 'string',\n variant: 'string',\n label: 'string',\n target: 'string',\n openDelay: 'number',\n closeDelay: 'number',\n placement: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createLinkPreview(this, options);\n }\n}\n\nexport const defineLinkPreview = () => defineElement('mk-link-preview', MkLinkPreviewElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createProgress, type ProgressInstance } from './engine';\n\n/**\n * <mk-progress class=\"mk-progress\" value=\"40\" label=\"Subida\" show-value></mk-progress>\n * Without `value` (or value=\"indeterminate\") it is indeterminate. A new value moves the fill.\n */\nexport class MkProgressElement extends MkElement<ProgressInstance> {\n static options: Record<string, OptionType> = { value: 'number', min: 'number', max: 'number', label: 'string', variant: 'string', showValue: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createProgress(this, { ...options, value: typeof options.value === 'number' ? options.value : null });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue(next === null || !Number.isFinite(Number(next)) ? null : Number(next));\n else super.attributeChangedCallback(name, previous, next);\n }\n\n setValue(value: number | null) {\n this.instance?.setValue(value);\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineProgress = () => defineElement('mk-progress', MkProgressElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\r\nimport { createRangeSlider, type RangeSliderInstance, type RangeValue } from './engine';\r\n\r\n/**\r\n * <mk-range-slider class=\"mk-range-slider\" min=\"0\" max=\"100\" step=\"5\" label=\"Precio\" value=\"[20,80]\">\r\n * <div data-mk-range-track><input type=\"range\" data-mk-range-input value=\"20\"><input type=\"range\" data-mk-range-input value=\"80\"></div>\r\n * <output data-mk-range-output></output>\r\n * </mk-range-slider>\r\n * Empty, it makes its input(s). Emits `mk:input` while dragging and `mk:change` ({value, previous}) on commit.\r\n * `el.formatValue = (n) => `${n} €`` formats the output and aria-valuetext.\r\n */\r\nexport class MkRangeSliderElement extends MkElement<RangeSliderInstance> {\r\n static options: Record<string, OptionType> = { min: 'number', max: 'number', step: 'number', value: 'json', disabled: 'boolean', name: 'string', label: 'string' };\r\n\r\n private format: ((value: number) => string) | undefined;\r\n\r\n /** Formatter for the output and aria-valuetext (code, so a property rather than an attribute). */\r\n get formatValue() {\r\n return this.format;\r\n }\r\n\r\n set formatValue(format: ((value: number) => string) | undefined) {\r\n this.format = format;\r\n this.rebuild(true);\r\n }\r\n\r\n protected create(options: Record<string, unknown>) {\r\n return createRangeSlider(this, { ...options, formatValue: this.format });\r\n }\r\n\r\n /** Rebuild with the current attributes; keepValue keeps the edited value over the `value` attribute. */\r\n private rebuild(keepValue: boolean) {\r\n if (!this.isConnected || !this.instance) return;\r\n const value = this.instance.value;\r\n this.instance.destroy();\r\n this.instance = this.create(keepValue ? { ...this.options, value } : { value, ...this.options });\r\n }\r\n\r\n // Bounds rebuild the engine but keep the edited value unless `value` is set.\r\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\r\n if (previous !== next) this.rebuild(false);\r\n }\r\n\r\n setValue(value: RangeValue, notify?: boolean) {\r\n this.instance?.setValue(value, notify);\r\n }\r\n\r\n get value() {\r\n return this.instance?.value;\r\n }\r\n}\r\n\r\nexport const defineRangeSlider = () => defineElement('mk-range-slider', MkRangeSliderElement);\r\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createChart, type ChartInstance, type ChartOptions } from './engine';\n\n/**\n * <mk-chart class=\"mk-chart\" type=\"bar\" stacked label=\"Sesiones por semana\"\n * labels=\"S1,S2,S3\" series='[{\"name\":\"Ana\",\"values\":[4,6,5]},{\"name\":\"Luis\",\"values\":[2,3,4]}]'></mk-chart>\n * Attribute changes redraw in place. Emits mk:select ({index, label, values, x, y, series}); tooltip=\"false\" leaves the card to chart-tooltip.\n */\nexport class MkChartElement extends MkElement<ChartInstance> {\n static options: Record<string, OptionType> = {\n type: 'string',\n labels: 'list',\n series: 'json',\n points: 'json',\n stacked: 'boolean',\n label: 'string',\n height: 'number',\n emptyLabel: 'string',\n legend: 'boolean',\n tooltip: 'boolean',\n axis: 'boolean',\n endLabel: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createChart(this, options as ChartOptions);\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n this.instance.update({ stacked: false, legend: undefined, ...(this.options as ChartOptions) });\n }\n\n update(options: ChartOptions) {\n this.instance?.update(options);\n }\n\n select(index: number | null) {\n this.instance?.select(index);\n }\n}\n\nexport const defineChart = () => defineElement('mk-chart', MkChartElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createCreditCard, type CreditCardField, type CreditCardInstance } from './engine';\n\n/**\n * <mk-credit-card class=\"mk-credit-card\"></mk-credit-card>\n * Makes the card and the four fields (or uses input[data-mk-card-field=\"number|name|expiry|cvc\"] inside).\n * Emits mk:change ({brand, complete, valid}) and mk:complete; the card data stays in the form.\n */\nexport class MkCreditCardElement extends MkElement<CreditCardInstance> {\n static options: Record<string, OptionType> = { tilt: 'boolean', labels: 'json', names: 'json' };\n\n protected create(options: Record<string, unknown>) {\n return createCreditCard(this, options);\n }\n\n focusField(field: CreditCardField) {\n this.instance?.focus(field);\n }\n\n flip(back?: boolean) {\n this.instance?.flip(back);\n }\n\n get values() {\n return this.instance?.values;\n }\n\n get brand() {\n return this.instance?.brand ?? 'unknown';\n }\n}\n\nexport const defineCreditCard = () => defineElement('mk-credit-card', MkCreditCardElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createCommandSearch, type CommandItem, type CommandSearchInstance } from './engine';\n\n/**\n * <mk-command-search class=\"mk-command-search\" items='[{\"id\":\"charts\",\"label\":\"Charts\",\"group\":\"Páginas\",\"href\":\"/chart\"}]'>\n * <button data-mk-command-open>Buscar <kbd>⌘K</kbd></button>\n * </mk-command-search>\n * ⌘K / Ctrl+K or the button opens it. Emits mk:select ({item}, cancelable), mk:open and mk:close.\n */\nexport class MkCommandSearchElement extends MkElement<CommandSearchInstance> {\n static options: Record<string, OptionType> = { items: 'json', placeholder: 'string', emptyLabel: 'string', label: 'string', shortcut: 'boolean', limit: 'number' };\n\n protected create(options: Record<string, unknown>) {\n return createCommandSearch(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'items') this.instance.setItems((this.options.items as CommandItem[] | undefined) ?? []);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n\n setItems(items: CommandItem[]) {\n this.instance?.setItems(items);\n }\n}\n\nexport const defineCommandSearch = () => defineElement('mk-command-search', MkCommandSearchElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createHoldConfirm, type HoldConfirmInstance } from './engine';\n\n/**\n * <mk-hold-confirm class=\"mk-hold-confirm\" duration=\"1200\"><button>Eliminar cuenta</button></mk-hold-confirm>\n * Hold the button (pointer, Space or Enter) to confirm. Emits mk:confirm.\n */\nexport class MkHoldConfirmElement extends MkElement<HoldConfirmInstance> {\n static options: Record<string, OptionType> = { duration: 'number', resetAfter: 'number', holdingLabel: 'string', doneLabel: 'string', hint: 'string', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createHoldConfirm(this, options);\n }\n\n reset() {\n this.instance?.reset();\n }\n\n get confirmed() {\n return this.instance?.confirmed ?? false;\n }\n}\n\nexport const defineHoldConfirm = () => defineElement('mk-hold-confirm', MkHoldConfirmElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createImagePreview, type ImagePreviewInstance } from './engine';\n\n/**\n * <mk-image-preview class=\"mk-image-preview\">\n * <button data-mk-image data-mk-src=\"/big/1.jpg\" data-mk-caption=\"Atardecer\"><img src=\"/thumb/1.jpg\" alt=\"Atardecer en la sierra\"></button>\n * </mk-image-preview>\n * Emits mk:open, mk:change ({index, previous}) and mk:close.\n */\nexport class MkImagePreviewElement extends MkElement<ImagePreviewInstance> {\n static options: Record<string, OptionType> = { loop: 'boolean', strip: 'boolean', labels: 'json' };\n\n protected create(options: Record<string, unknown>) {\n return createImagePreview(this, options);\n }\n\n open(index?: number) {\n this.instance?.open(index);\n }\n\n close() {\n this.instance?.close();\n }\n}\n\nexport const defineImagePreview = () => defineElement('mk-image-preview', MkImagePreviewElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\r\nimport { createLikeButton, type LikeButtonInstance } from './engine';\r\n\r\n/**\r\n * <mk-like-button class=\"mk-like-button\" count=\"128\"><button></button></mk-like-button>\r\n * Toggles with a burst; emits mk:change ({liked, count}).\r\n */\r\nexport class MkLikeButtonElement extends MkElement<LikeButtonInstance> {\r\n static options: Record<string, OptionType> = { liked: 'boolean', count: 'number', label: 'string', hideCount: 'boolean' };\r\n\r\n protected create(options: Record<string, unknown>) {\r\n // Without a button inside, one is made (and removed again on destroy).\r\n let made: HTMLButtonElement | null = null;\r\n if (!this.querySelector('button')) {\r\n made = document.createElement('button');\r\n made.type = 'button';\r\n this.append(made);\r\n }\r\n const engine = createLikeButton(this, options);\r\n if (made) {\r\n const destroy = engine.destroy;\r\n engine.destroy = () => {\r\n destroy();\r\n made!.remove();\r\n };\r\n }\r\n return engine;\r\n }\r\n\r\n // A new `liked` or `count` attribute updates in place (with the animation).\r\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\r\n if (previous === next || !this.instance) return;\r\n if (name === 'liked') this.instance.setLiked(next !== null && next !== 'false', false);\r\n else if (name === 'count') this.instance.setCount(Number(next));\r\n else super.attributeChangedCallback(name, previous, next);\r\n }\r\n\r\n get liked() {\r\n return this.instance?.liked ?? false;\r\n }\r\n\r\n get count() {\r\n return this.instance?.count ?? 0;\r\n }\r\n}\r\n\r\nexport const defineLikeButton = () => defineElement('mk-like-button', MkLikeButtonElement);\r\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createNotificationBell, type NotificationBellInstance } from './engine';\n\n/**\n * <mk-notification-bell class=\"mk-notification-bell\" count=\"2\"></mk-notification-bell>\n * el.notify('Nueva cita a las 10:00') rings it. Emits mk:open on click and mk:count when the count changes.\n */\nexport class MkNotificationBellElement extends MkElement<NotificationBellInstance> {\n static options: Record<string, OptionType> = { count: 'number', label: 'string', messageDuration: 'number', max: 'number' };\n\n protected create(options: Record<string, unknown>) {\n let made: HTMLButtonElement | null = null;\n if (!this.querySelector('button')) {\n made = document.createElement('button');\n made.type = 'button';\n this.append(made);\n }\n const engine = createNotificationBell(this, options);\n if (made) {\n const destroy = engine.destroy;\n engine.destroy = () => {\n destroy();\n made!.remove();\n };\n }\n return engine;\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'count') this.instance.setCount(Number(next) || 0);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n notify(message?: string) {\n this.instance?.notify(message);\n }\n\n clear() {\n this.instance?.clear();\n }\n\n get count() {\n return this.instance?.count ?? 0;\n }\n}\n\nexport const defineNotificationBell = () => defineElement('mk-notification-bell', MkNotificationBellElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createPasswordStrength, type PasswordStrengthInstance } from './engine';\n\n/**\n * <mk-password-strength class=\"mk-password-strength\" min-length=\"10\">\n * <input type=\"password\" name=\"password\" autocomplete=\"new-password\" aria-label=\"Contraseña\" />\n * </mk-password-strength>\n * Emits mk:strength ({score, label, met}).\n */\nexport class MkPasswordStrengthElement extends MkElement<PasswordStrengthInstance> {\n static options: Record<string, OptionType> = { minLength: 'number', requireScore: 'number', labels: 'json' };\n\n protected create(options: Record<string, unknown>) {\n return createPasswordStrength(this, options);\n }\n\n get score() {\n return this.instance?.score ?? 0;\n }\n}\n\nexport const definePasswordStrength = () => defineElement('mk-password-strength', MkPasswordStrengthElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createScratchCard, type ScratchCardInstance } from './engine';\n\n/**\n * <mk-scratch-card class=\"mk-scratch-card\" threshold=\"0.5\">\n * <div data-mk-scratch-content>…the coupon…</div>\n * </mk-scratch-card>\n * Emits mk:progress ({progress}) and mk:reveal.\n */\nexport class MkScratchCardElement extends MkElement<ScratchCardInstance> {\n static options: Record<string, OptionType> = { threshold: 'number', brush: 'number', coverLabel: 'string', revealLabel: 'string', revealedLabel: 'string', celebrate: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createScratchCard(this, options);\n }\n\n reveal() {\n this.instance?.reveal();\n }\n\n reset() {\n this.instance?.reset();\n }\n\n get revealed() {\n return this.instance?.revealed ?? false;\n }\n}\n\nexport const defineScratchCard = () => defineElement('mk-scratch-card', MkScratchCardElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createStarRating, type StarRatingInstance } from './engine';\n\n/**\n * <mk-star-rating class=\"mk-star-rating\" name=\"valoracion\" value=\"4\" allow-clear></mk-star-rating>\n * readonly with value=\"4.5\" draws a fixed rating. Emits mk:change ({value}).\n */\nexport class MkStarRatingElement extends MkElement<StarRatingInstance> {\n static options: Record<string, OptionType> = { max: 'number', value: 'number', name: 'string', label: 'string', labels: 'list', readonly: 'boolean', allowClear: 'boolean', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createStarRating(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue(Number(next) || 0);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? 0;\n }\n}\n\nexport const defineStarRating = () => defineElement('mk-star-rating', MkStarRatingElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSwipeActions, type SwipeActionsInstance } from './engine';\n\n/**\n * <mk-swipe-actions class=\"mk-swipe-actions\">\n * <div data-mk-swipe-row>\n * <div data-mk-swipe-actions=\"left\"><button data-mk-swipe-action=\"archive\" aria-label=\"Archivar\">…</button></div>\n * <div data-mk-swipe-content>…the row…</div>\n * <div data-mk-swipe-actions=\"right\"><button data-mk-swipe-action=\"delete\" data-mk-swipe-remove aria-label=\"Eliminar\">…</button></div>\n * </div>\n * </mk-swipe-actions>\n * Emits mk:action ({action, row}) and mk:open ({row, side}).\n */\nexport class MkSwipeActionsElement extends MkElement<SwipeActionsInstance> {\n static options: Record<string, OptionType> = { fullSwipe: 'number' };\n\n protected create(options: Record<string, unknown>) {\n return createSwipeActions(this, options);\n }\n\n close() {\n this.instance?.close();\n }\n}\n\nexport const defineSwipeActions = () => defineElement('mk-swipe-actions', MkSwipeActionsElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createColorSlider, type ColorSliderInstance } from './engine';\n\n/**\n * <mk-color-slider class=\"mk-color-slider\" channel=\"hue\" value=\"#ff8800\" show-value></mk-color-slider>\n * Emits mk:input / mk:change ({value, color}). Changing `value` glides the thumb.\n */\nexport class MkColorSliderElement extends MkElement<ColorSliderInstance> {\n static options: Record<string, OptionType> = { channel: 'string', value: 'string', label: 'string', orientation: 'string', step: 'number', showValue: 'boolean', name: 'string', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createColorSlider(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next) this.instance.setColor(next, false);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? '';\n }\n}\n\nexport const defineColorSlider = () => defineElement('mk-color-slider', MkColorSliderElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createColorArea, type ColorAreaInstance } from './engine';\n\n/**\n * <mk-color-area class=\"mk-color-area\" value=\"#ff8800\"></mk-color-area>\n * Emits mk:input / mk:change ({value, color}). Changing `value` glides the thumb.\n */\nexport class MkColorAreaElement extends MkElement<ColorAreaInstance> {\n static options: Record<string, OptionType> = { value: 'string', label: 'string', step: 'number', name: 'string', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createColorArea(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next) this.instance.setColor(next, false);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? '';\n }\n}\n\nexport const defineColorArea = () => defineElement('mk-color-area', MkColorAreaElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createColorField, type ColorFieldInstance } from './engine';\n\n/**\n * <mk-color-field class=\"mk-color-field\" value=\"#ff8800\" format=\"hex\"></mk-color-field>\n * Emits mk:change ({value, color}) when a new colour is committed.\n */\nexport class MkColorFieldElement extends MkElement<ColorFieldInstance> {\n static options: Record<string, OptionType> = { value: 'string', format: 'string', alpha: 'boolean', label: 'string', name: 'string', disabled: 'boolean', readOnly: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createColorField(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next) this.instance.setColor(next, false);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? '';\n }\n}\n\nexport const defineColorField = () => defineElement('mk-color-field', MkColorFieldElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createColorPicker, type ColorPickerInstance } from './engine';\n\n/**\n * <mk-color-picker class=\"mk-color-picker\" value=\"#3b82f6\" label=\"Color del evento\"></mk-color-picker>\n * `inline` shows the panel in place; `swatches=\"#111,#ef4444\"` sets the presets.\n * Emits mk:input (live) and mk:change (committed) with {value, color}.\n */\nexport class MkColorPickerElement extends MkElement<ColorPickerInstance> {\n static options: Record<string, OptionType> = {\n value: 'string',\n alpha: 'boolean',\n format: 'string',\n swatches: 'list',\n label: 'string',\n name: 'string',\n disabled: 'boolean',\n inline: 'boolean',\n eyedropper: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createColorPicker(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next) this.instance.setColor(next, false);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n\n get value() {\n return this.instance?.value ?? '';\n }\n}\n\nexport const defineColorPicker = () => defineElement('mk-color-picker', MkColorPickerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTimeField, type TimeFieldInstance } from './engine';\n\n/**\n * <mk-time-field class=\"mk-time-field\" value=\"09:30\" minute-step=\"15\" name=\"hora\"></mk-time-field>\n * Emits mk:change ({value}: 24 h text, null while incomplete).\n */\nexport class MkTimeFieldElement extends MkElement<TimeFieldInstance> {\n static options: Record<string, OptionType> = {\n value: 'string',\n locale: 'string',\n hourCycle: 'number',\n seconds: 'boolean',\n minuteStep: 'number',\n min: 'string',\n max: 'string',\n label: 'string',\n name: 'string',\n disabled: 'boolean',\n readOnly: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createTimeField(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue(next);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineTimeField = () => defineElement('mk-time-field', MkTimeFieldElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createRangeCalendar, type RangeCalendarInstance } from './engine';\n\n/**\n * <mk-range-calendar class=\"mk-range-calendar\" start=\"2026-11-23\" end=\"2026-11-26\" visible-months=\"2\"\n * unavailable=\"2026-12-24,2026-12-25\"></mk-range-calendar>\n * Emits mk:change ({start, end, length}). Changing start/end moves the range.\n */\nexport class MkRangeCalendarElement extends MkElement<RangeCalendarInstance> {\n static options: Record<string, OptionType> = {\n start: 'string',\n end: 'string',\n month: 'string',\n visibleMonths: 'number',\n firstDay: 'number',\n min: 'string',\n max: 'string',\n unavailable: 'list',\n locale: 'string',\n today: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n const { start, end, ...rest } = options as { start?: string; end?: string };\n return createRangeCalendar(this, { ...rest, value: start && end ? { start, end } : null });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'start' || name === 'end') {\n const start = this.getAttribute('start');\n const end = this.getAttribute('end');\n this.instance.setValue(start && end ? { start, end } : null);\n } else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineRangeCalendar = () => defineElement('mk-range-calendar', MkRangeCalendarElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createDateRangePicker, type DateRangePickerInstance } from './engine';\n\n/**\n * <mk-date-range-picker class=\"mk-date-range-picker\" start=\"2026-11-23\" end=\"2026-11-26\" name=\"viaje\"\n * presets='[{\"label\":\"Puente\",\"start\":\"2026-12-05\",\"end\":\"2026-12-08\"}]'></mk-date-range-picker>\n * Emits mk:change ({start, end, length}) for valid ranges.\n */\nexport class MkDateRangePickerElement extends MkElement<DateRangePickerInstance> {\n static options: Record<string, OptionType> = {\n start: 'string',\n end: 'string',\n min: 'string',\n max: 'string',\n unavailable: 'list',\n firstDay: 'number',\n locale: 'string',\n today: 'string',\n label: 'string',\n name: 'string',\n presets: 'json',\n disabled: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n const { start, end, ...rest } = options as { start?: string; end?: string };\n return createDateRangePicker(this, { ...rest, value: start && end ? { start, end } : null });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'start' || name === 'end') {\n const start = this.getAttribute('start');\n const end = this.getAttribute('end');\n this.instance.setValue(start && end ? { start, end } : null);\n } else super.attributeChangedCallback(name, previous, next);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineDateRangePicker = () => defineElement('mk-date-range-picker', MkDateRangePickerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTooltip, type TooltipInstance } from './engine';\n\n/**\n * <mk-tooltip class=\"mk-tooltip\" content=\"Copiar enlace\"><button>…</button></mk-tooltip>\n * Without `content`, the trigger's title. Emits mk:open-change ({open}).\n */\nexport class MkTooltipElement extends MkElement<TooltipInstance> {\n static options: Record<string, OptionType> = { content: 'string', placement: 'string', openDelay: 'number', closeDelay: 'number', interactive: 'boolean', arrow: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createTooltip(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'content') this.instance.setContent(next ?? '');\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineTooltip = () => defineElement('mk-tooltip', MkTooltipElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createPopover, type PopoverInstance } from './engine';\n\n/**\n * <mk-popover class=\"mk-popover\">\n * <button data-mk-popover-trigger>Filtros</button>\n * <div data-mk-popover-content>…</div>\n * </mk-popover>\n * Emits mk:open-change ({open}).\n */\nexport class MkPopoverElement extends MkElement<PopoverInstance> {\n static options: Record<string, OptionType> = { label: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createPopover(this, options);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n\n get isOpen() {\n return this.instance?.isOpen ?? false;\n }\n}\n\nexport const definePopover = () => defineElement('mk-popover', MkPopoverElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createLoadingButton, type LoadingButtonInstance, type LoadingState } from './engine';\n\n/**\n * <mk-loading-button><button class=\"mk-button\">Guardar</button></mk-loading-button>\n * The `state` attribute (idle | loading | success | error) drives it from outside; run(action) walks the states.\n * Emits mk:state-change ({state}).\n */\nexport class MkLoadingButtonElement extends MkElement<LoadingButtonInstance> {\n static options: Record<string, OptionType> = { labels: 'json', compact: 'boolean', resetAfter: 'number', state: 'string' };\n\n protected create(options: Record<string, unknown>) {\n const { state, ...rest } = options as { state?: LoadingState };\n const instance = createLoadingButton(this, rest);\n if (state) instance.setState(state);\n return instance;\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'state') this.instance.setState((next as LoadingState) || 'idle');\n else super.attributeChangedCallback(name, previous, next);\n }\n\n run(action: () => unknown) {\n return this.instance?.run(action) ?? Promise.resolve(false);\n }\n\n get state() {\n return this.instance?.state ?? 'idle';\n }\n}\n\nexport const defineLoadingButton = () => defineElement('mk-loading-button', MkLoadingButtonElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createBreadcrumb, type BreadcrumbInstance, type BreadcrumbItem } from './engine';\n\n/**\n * <mk-breadcrumb class=\"mk-breadcrumb\" items='[{\"label\":\"Inicio\",\"href\":\"/\"},{\"label\":\"Proyectos\",\"href\":\"/p\"},{\"label\":\"Melon\"}]'>\n * </mk-breadcrumb> — or authored <a>/<span> children. Emits mk:navigate ({item, index}, cancelable).\n */\nexport class MkBreadcrumbElement extends MkElement<BreadcrumbInstance> {\n static options: Record<string, OptionType> = { items: 'json', label: 'string', maxItems: 'number' };\n\n protected create(options: Record<string, unknown>) {\n return createBreadcrumb(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'items') {\n try {\n this.instance.setItems(JSON.parse(next ?? '[]') as BreadcrumbItem[]);\n } catch {\n // Malformed JSON: keep the current path.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineBreadcrumb = () => defineElement('mk-breadcrumb', MkBreadcrumbElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createEmptyState, type EmptyStateInstance } from './engine';\n\n/**\n * <mk-empty-state class=\"mk-empty-state\" illustration=\"search\" title=\"Sin resultados\"\n * description=\"Prueba con otras palabras.\" actions='[{\"id\":\"clear\",\"label\":\"Borrar filtros\"}]'></mk-empty-state>\n * Emits mk:action ({id}).\n */\nexport class MkEmptyStateElement extends MkElement<EmptyStateInstance> {\n static options: Record<string, OptionType> = { illustration: 'string', title: 'string', description: 'string', actions: 'json', loop: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createEmptyState(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'loop') return super.attributeChangedCallback(name, previous, next);\n this.instance.update(this.options);\n }\n}\n\nexport const defineEmptyState = () => defineElement('mk-empty-state', MkEmptyStateElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createStatCard, type StatCardInstance } from './engine';\n\n/**\n * <mk-stat-card class=\"mk-stat-card\" label=\"Ingresos\" value=\"128400\" previous=\"118900\"\n * format='{\"style\":\"currency\",\"currency\":\"MXN\",\"maximumFractionDigits\":0}' series=\"90,98,104,101,118,128\"></mk-stat-card>\n * Changing value, previous, series or target updates it in place (the figure counts).\n */\nexport class MkStatCardElement extends MkElement<StatCardInstance> {\n static options: Record<string, OptionType> = {\n label: 'string',\n value: 'number',\n previous: 'number',\n format: 'json',\n locale: 'string',\n positive: 'string',\n comparison: 'string',\n series: 'list',\n target: 'number',\n countOnView: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createStatCard(this, normalise(options));\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'locale' || name === 'count-on-view') return super.attributeChangedCallback(name, previous, next);\n this.instance.update(normalise(this.options));\n }\n}\n\n/** The series attribute is a comma list: numbers. */\nconst normalise = (options: Record<string, unknown>) => ({\n ...options,\n series: Array.isArray(options.series) ? (options.series as string[]).map(Number).filter(Number.isFinite) : undefined,\n});\n\nexport const defineStatCard = () => defineElement('mk-stat-card', MkStatCardElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createChartTooltip, type ChartTooltipInstance } from './engine';\n\n/**\n * <mk-chart-tooltip class=\"mk-chart-tooltip\" share total>\n * <mk-chart class=\"mk-chart\" tooltip=\"false\" …></mk-chart>\n * </mk-chart-tooltip>\n * Over another chart give it labels, series (JSON), align, inset (JSON), min and max.\n * Emits mk:index-change ({index, pinned}).\n */\nexport class MkChartTooltipElement extends MkElement<ChartTooltipInstance> {\n static options: Record<string, OptionType> = {\n labels: 'list',\n series: 'json',\n align: 'string',\n inset: 'json',\n min: 'number',\n max: 'number',\n delta: 'boolean',\n share: 'boolean',\n total: 'boolean',\n sort: 'boolean',\n pin: 'boolean',\n label: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createChartTooltip(this, options);\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n this.instance.update(this.options);\n }\n}\n\nexport const defineChartTooltip = () => defineElement('mk-chart-tooltip', MkChartTooltipElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createMultiSelect, type MultiSelectInstance } from './engine';\n\n/**\n * <mk-multi-select class=\"mk-multi-select\" label=\"Etiquetas\">\n * <select multiple name=\"etiquetas\"><option>Diseño</option><option selected>Código</option></select>\n * </mk-multi-select>\n * Or options='[{\"value\":\"ana\",\"label\":\"Ana\"}]' value=\"ana\" name=\"personas\". Emits mk:change ({value}).\n */\nexport class MkMultiSelectElement extends MkElement<MultiSelectInstance> {\n static options: Record<string, OptionType> = { options: 'json', value: 'list', placeholder: 'string', label: 'string', name: 'string', max: 'number', closeOnSelect: 'boolean', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createMultiSelect(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue((next ?? '').split(',').map((item) => item.trim()).filter(Boolean));\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? [];\n }\n}\n\nexport const defineMultiSelect = () => defineElement('mk-multi-select', MkMultiSelectElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTagInput, type TagInputInstance } from './engine';\n\n/**\n * <mk-tag-input class=\"mk-tag-input\" label=\"Etiquetas\" value=\"diseño,urgente\" suggestions=\"diseño,código,urgente\" max=\"5\" name=\"tags\">\n * </mk-tag-input>\n * Emits mk:change ({value}).\n */\nexport class MkTagInputElement extends MkElement<TagInputInstance> {\n static options: Record<string, OptionType> = {\n value: 'list',\n suggestions: 'list',\n placeholder: 'string',\n label: 'string',\n name: 'string',\n max: 'number',\n restrict: 'boolean',\n allowDuplicates: 'boolean',\n disabled: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createTagInput(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n const list = (next ?? '').split(',').map((item) => item.trim()).filter(Boolean);\n if (name === 'value') this.instance.setValue(list);\n else if (name === 'suggestions') this.instance.setSuggestions(list);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? [];\n }\n}\n\nexport const defineTagInput = () => defineElement('mk-tag-input', MkTagInputElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createDateTimePicker, type DateTimePickerInstance } from './engine';\n\n/**\n * <mk-date-time-picker class=\"mk-date-time-picker\" value=\"2026-11-23T10:30\" minute-step=\"15\" name=\"cita\"></mk-date-time-picker>\n * Emits mk:change ({value: 'YYYY-MM-DDTHH:MM' | null}).\n */\nexport class MkDateTimePickerElement extends MkElement<DateTimePickerInstance> {\n static options: Record<string, OptionType> = {\n value: 'string',\n min: 'string',\n max: 'string',\n locale: 'string',\n hourCycle: 'number',\n minuteStep: 'number',\n firstDay: 'number',\n unavailable: 'list',\n today: 'string',\n label: 'string',\n name: 'string',\n disabled: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n return createDateTimePicker(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue(next);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineDateTimePicker = () => defineElement('mk-date-time-picker', MkDateTimePickerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createFilterBuilder, type FilterBuilderInstance } from './engine';\nimport type { FilterField, FilterGroup } from '../../core/filter';\n\n/**\n * <mk-filter-builder class=\"mk-filter-builder\"\n * fields='[{\"key\":\"estado\",\"label\":\"Estado\",\"type\":\"select\",\"options\":[{\"value\":\"activo\",\"label\":\"Activo\"}]},{\"key\":\"monto\",\"label\":\"Monto\",\"type\":\"number\"}]'>\n * </mk-filter-builder>\n * Emits mk:change ({value, summary}).\n */\nexport class MkFilterBuilderElement extends MkElement<FilterBuilderInstance> {\n static options: Record<string, OptionType> = { fields: 'json', value: 'json', maxDepth: 'number', label: 'string', summary: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createFilterBuilder(this, options as { fields?: FilterField[] });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next) {\n try {\n this.instance.setValue(JSON.parse(next) as FilterGroup);\n } catch {\n // Malformed JSON: keep the current filter.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? null;\n }\n}\n\nexport const defineFilterBuilder = () => defineElement('mk-filter-builder', MkFilterBuilderElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTimeline, type TimelineEvent, type TimelineInstance } from './engine';\n\n/**\n * <mk-timeline class=\"mk-timeline\" events='[{\"id\":\"1\",\"title\":\"Pedido recibido\",\"time\":\"2026-11-23T09:12\",\"status\":\"done\"}]'>\n * </mk-timeline> — or authored <ol><li data-status data-time>Title<p>Description</p></li></ol>.\n */\nexport class MkTimelineElement extends MkElement<TimelineInstance> {\n static options: Record<string, OptionType> = { events: 'json', layout: 'string', group: 'boolean', relative: 'boolean', locale: 'string', label: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createTimeline(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'events') {\n try {\n this.instance.setEvents(JSON.parse(next ?? '[]') as TimelineEvent[]);\n } catch {\n // Malformed JSON: keep the current events.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n\n add(event: TimelineEvent, at?: 'start' | 'end') {\n this.instance?.add(event, at);\n }\n}\n\nexport const defineTimeline = () => defineElement('mk-timeline', MkTimelineElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createActivityFeed, type ActivityFeedInstance, type ActivityItem } from './engine';\n\n/**\n * <mk-activity-feed class=\"mk-activity-feed\" items='[{\"id\":\"1\",\"actor\":\"Ana Gómez\",\"action\":\"comentó en\",\"target\":\"Tarea 12\",\"time\":\"2026-11-23T09:12\",\"kind\":\"comment\"}]'>\n * </mk-activity-feed>. element.prepend([...]) / element.append([...]) for live and older activity.\n */\nexport class MkActivityFeedElement extends MkElement<ActivityFeedInstance> {\n static options: Record<string, OptionType> = { items: 'json', locale: 'string', label: 'string', emptyLabel: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createActivityFeed(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'items') {\n try {\n this.instance.setItems(JSON.parse(next ?? '[]') as ActivityItem[]);\n } catch {\n // Malformed JSON: keep the current entries.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n\n /** New activity on top (not Element.prepend). */\n prependItems(items: ActivityItem[]) {\n this.instance?.prepend(items);\n }\n\n appendItems(items: ActivityItem[]) {\n this.instance?.append(items);\n }\n}\n\nexport const defineActivityFeed = () => defineElement('mk-activity-feed', MkActivityFeedElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createTreeView, type TreeNode, type TreeViewInstance } from './engine';\n\n/**\n * <mk-tree-view class=\"mk-tree-view\" checkable search\n * nodes='[{\"id\":\"a\",\"label\":\"Proyectos\",\"children\":[{\"id\":\"a1\",\"label\":\"Melon\"}]}]'></mk-tree-view>\n * Emits mk:select ({id, node}), mk:check ({checked}), mk:expand ({id, expanded}).\n */\nexport class MkTreeViewElement extends MkElement<TreeViewInstance> {\n static options: Record<string, OptionType> = { nodes: 'json', checkable: 'boolean', checked: 'list', expanded: 'list', selected: 'string', search: 'string', label: 'string', icons: 'boolean', draggable: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n // search=\"\" (present without text) turns the field on with its default placeholder.\n const search = this.hasAttribute('search') ? (this.getAttribute('search') || true) : undefined;\n const expanded = this.getAttribute('expanded') === 'all' ? true : options.expanded;\n return createTreeView(this, { ...options, search, expanded } as Parameters<typeof createTreeView>[1]);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'nodes') {\n try {\n this.instance.setNodes(JSON.parse(next ?? '[]') as TreeNode[]);\n } catch {\n // Malformed JSON: keep the current nodes.\n }\n } else if (name === 'selected') this.instance.select(next);\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineTreeView = () => defineElement('mk-tree-view', MkTreeViewElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createFileExplorer, type FileEntry, type FileExplorerInstance } from './engine';\n\n/**\n * <mk-file-explorer class=\"mk-file-explorer\" root-label=\"Mi unidad\" view=\"grid\"\n * files='[{\"id\":\"docs\",\"name\":\"Documentos\",\"children\":[{\"id\":\"cv\",\"name\":\"Currículum.pdf\",\"size\":184320}]}]'>\n * </mk-file-explorer>. Emits mk:open ({id, entry}), mk:navigate ({id, folder}), mk:select ({ids}), mk:change ({files, change}).\n */\nexport class MkFileExplorerElement extends MkElement<FileExplorerInstance> {\n static options: Record<string, OptionType> = {\n files: 'json',\n rootLabel: 'string',\n folder: 'string',\n view: 'string',\n tree: 'boolean',\n readOnly: 'boolean',\n locale: 'string',\n label: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createFileExplorer(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'files') {\n try {\n this.instance.setFiles(JSON.parse(next ?? '[]') as FileEntry[]);\n } catch {\n // Malformed JSON: keep the current files.\n }\n } else if (name === 'view') this.instance.setView(next === 'grid' ? 'grid' : 'list');\n else if (name === 'folder') this.instance.open(next || '/');\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineFileExplorer = () => defineElement('mk-file-explorer', MkFileExplorerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createJsonViewer, type JsonViewerInstance } from './engine';\n\n/**\n * <mk-json-viewer class=\"mk-json-viewer\" expand-depth=\"2\" search data='{\"user\":{\"name\":\"Ana\",\"roles\":[\"admin\"]}}'></mk-json-viewer>\n * Or the JSON as the element's text. Emits mk:select ({path, value}) and mk:copy ({text, path}).\n */\nexport class MkJsonViewerElement extends MkElement<JsonViewerInstance> {\n static options: Record<string, OptionType> = {\n data: 'json',\n expandDepth: 'number',\n rootName: 'string',\n search: 'string',\n toolbar: 'boolean',\n sortKeys: 'boolean',\n label: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n // search=\"\" (present without text) turns the field on with its default placeholder.\n const search = this.hasAttribute('search') ? (this.getAttribute('search') || true) : undefined;\n return createJsonViewer(this, { ...options, search });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'data') {\n try {\n this.instance.setData(JSON.parse(next ?? 'null'));\n } catch {\n // Malformed JSON: keep the current data.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineJsonViewer = () => defineElement('mk-json-viewer', MkJsonViewerElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createVirtualList, type VirtualListInstance } from './engine';\n\n/**\n * <mk-virtual-list class=\"mk-virtual-list\" item-height=\"44\" selectable=\"multiple\" items='[\"Uno\",\"Dos\", …]'></mk-virtual-list>\n * Or an authored <ul><li>…</li></ul>. element.instance.setRenderer((item, i, row) => …) draws richer rows.\n * Emits mk:select ({keys, items}).\n */\nexport class MkVirtualListElement extends MkElement<VirtualListInstance> {\n static options: Record<string, OptionType> = {\n items: 'json',\n itemHeight: 'number',\n estimatedHeight: 'number',\n overscan: 'number',\n selectable: 'string',\n selected: 'list',\n label: 'string',\n emptyLabel: 'string',\n locale: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n // selectable=\"\" or \"true\" → one at a time; \"multiple\" → several.\n const raw = this.getAttribute('selectable');\n const selectable = raw === null || raw === 'false' ? false : raw === 'multiple' ? 'multiple' : 'single';\n return createVirtualList(this, { ...options, selectable });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'items') {\n try {\n this.instance.setItems(JSON.parse(next ?? '[]') as unknown[]);\n } catch {\n // Malformed JSON: keep the current rows.\n }\n } else if (name === 'selected') this.instance.select((next ?? '').split(',').map((key) => key.trim()).filter(Boolean));\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineVirtualList = () => defineElement('mk-virtual-list', MkVirtualListElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createResizablePanel, type ResizablePanelInstance } from './engine';\n\n/**\n * <mk-resizable-panel class=\"mk-resizable-panel\" sizes=\"25,75\" collapsible=\"0\" storage-key=\"layout\">\n * <aside data-min=\"15\">…</aside><main>…</main>\n * </mk-resizable-panel>. Emits mk:resize ({sizes}) and mk:collapse ({index, collapsed}).\n */\nexport class MkResizablePanelElement extends MkElement<ResizablePanelInstance> {\n static options: Record<string, OptionType> = {\n orientation: 'string',\n sizes: 'list',\n min: 'number',\n max: 'number',\n collapsible: 'list',\n collapsed: 'list',\n step: 'number',\n storageKey: 'string',\n handleButtons: 'boolean',\n labels: 'list',\n };\n\n protected create(options: Record<string, unknown>) {\n const numbers = (value: unknown) => (Array.isArray(value) ? value.map(Number).filter(Number.isFinite) : undefined);\n return createResizablePanel(this, { ...options, sizes: numbers(options.sizes), collapsible: numbers(options.collapsible), collapsed: numbers(options.collapsed) });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'orientation') this.instance.setOrientation(next === 'vertical' ? 'vertical' : 'horizontal');\n else if (name === 'sizes') this.instance.setSizes((next ?? '').split(',').map(Number).filter(Number.isFinite));\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineResizablePanel = () => defineElement('mk-resizable-panel', MkResizablePanelElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSplitView, type SplitViewInstance } from './engine';\n\n/**\n * <mk-split-view class=\"mk-split-view\" ratio=\"0.35\" stack-below=\"640\" labels=\"Bandeja,Mensaje\">\n * <section>…</section><section>…</section>\n * </mk-split-view>. Emits mk:resize and mk:collapse from its separator.\n */\nexport class MkSplitViewElement extends MkElement<SplitViewInstance> {\n static options: Record<string, OptionType> = {\n orientation: 'string',\n ratio: 'number',\n min: 'number',\n collapsible: 'string',\n stackBelow: 'number',\n storageKey: 'string',\n labels: 'list',\n };\n\n protected create(options: Record<string, unknown>) {\n const raw = this.getAttribute('collapsible');\n const collapsible = raw === null || raw === '' || raw === 'true' ? true : raw === 'false' ? false : raw === 'start' || raw === 'end' ? raw : true;\n const labels = Array.isArray(options.labels) && options.labels.length === 2 ? (options.labels as [string, string]) : undefined;\n return createSplitView(this, { ...options, collapsible, labels });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'ratio' && next !== null && Number.isFinite(Number(next))) this.instance.setRatio(Number(next));\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineSplitView = () => defineElement('mk-split-view', MkSplitViewElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createDataTable, type DataRow, type DataTableInstance } from './engine';\n\n/**\n * <mk-data-table class=\"mk-data-table\" selectable page-size=\"10\" sort=\"monto:desc\"\n * columns='[{\"key\":\"cliente\",\"label\":\"Cliente\"},{\"key\":\"monto\",\"label\":\"Monto\",\"type\":\"number\"}]'\n * rows='[{\"id\":1,\"cliente\":\"Ana\",\"monto\":1200}]' actions='[{\"id\":\"editar\",\"label\":\"Editar\"}]'></mk-data-table>\n * Emits mk:sort, mk:select, mk:action, mk:bulk-action, mk:page and mk:filter.\n */\nexport class MkDataTableElement extends MkElement<DataTableInstance> {\n static options: Record<string, OptionType> = {\n columns: 'json',\n rows: 'json',\n rowKey: 'string',\n caption: 'string',\n pageSize: 'number',\n pageSizes: 'json',\n selectable: 'boolean',\n search: 'string',\n filters: 'boolean',\n columnsMenu: 'boolean',\n actions: 'json',\n bulkActions: 'json',\n sort: 'string',\n loading: 'boolean',\n emptyTitle: 'string',\n emptyDescription: 'string',\n locale: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n // search=\"\" (present without text) keeps the field with its default placeholder; search=\"false\" removes it.\n const raw = this.getAttribute('search');\n const search = raw === null || raw === '' ? true : raw === 'false' ? false : raw;\n // sort=\"key\" or \"key:desc\".\n const [key, direction] = String(options.sort ?? '').split(':');\n const sort = key ? { key, direction: direction === 'desc' ? ('desc' as const) : ('asc' as const) } : null;\n return createDataTable<DataRow>(this, { ...options, search, sort } as Parameters<typeof createDataTable>[1]);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'rows') {\n try {\n this.instance.setRows(JSON.parse(next ?? '[]') as DataRow[]);\n } catch {\n // Malformed JSON: keep the current rows.\n }\n } else if (name === 'loading') this.instance.setLoading(next !== null && next !== 'false');\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineDataTable = () => defineElement('mk-data-table', MkDataTableElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createEditableTable, type EditableTableInstance } from './engine';\nimport type { DataRow } from '../data-table/engine';\n\n/**\n * <mk-editable-table class=\"mk-editable-table\" new-row='{\"estado\":\"nuevo\"}'\n * columns='[{\"key\":\"producto\",\"label\":\"Producto\",\"required\":true},{\"key\":\"precio\",\"label\":\"Precio\",\"type\":\"number\",\"min\":0}]'\n * rows='[{\"id\":1,\"producto\":\"Taza\",\"precio\":189}]'></mk-editable-table>\n * Emits mk:change ({changes}) and mk:save ({changes}); listen to mk:save to send them (the engine keeps them as saved).\n */\nexport class MkEditableTableElement extends MkElement<EditableTableInstance> {\n static options: Record<string, OptionType> = {\n columns: 'json',\n rows: 'json',\n rowKey: 'string',\n caption: 'string',\n pageSize: 'number',\n selectable: 'boolean',\n search: 'string',\n filters: 'boolean',\n columnsMenu: 'boolean',\n newRow: 'json',\n locale: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n const raw = this.getAttribute('search');\n const search = raw === null || raw === '' ? true : raw === 'false' ? false : raw;\n const template = options.newRow as DataRow | undefined;\n return createEditableTable<DataRow>(this, { ...options, search, newRow: template ? () => ({ ...template }) : undefined } as Parameters<typeof createEditableTable>[1]);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'rows') {\n try {\n this.instance.setRows(JSON.parse(next ?? '[]') as DataRow[]);\n } catch {\n // Malformed JSON: keep the current rows.\n }\n } else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineEditableTable = () => defineElement('mk-editable-table', MkEditableTableElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createRichTextEditor, type RichCommand, type RichTextEditorInstance } from './engine';\n\n/**\n * <mk-rich-text-editor class=\"mk-rich-text-editor\" name=\"cuerpo\" max-length=\"500\" placeholder=\"Cuenta tu idea…\">\n * <p>Contenido <strong>inicial</strong></p>\n * </mk-rich-text-editor>. Emits mk:change ({html, text}).\n */\nexport class MkRichTextEditorElement extends MkElement<RichTextEditorInstance> {\n static options: Record<string, OptionType> = {\n value: 'string',\n placeholder: 'string',\n toolbar: 'list',\n maxLength: 'number',\n counter: 'string',\n name: 'string',\n label: 'string',\n readOnly: 'boolean',\n markdown: 'boolean',\n };\n\n protected create(options: Record<string, unknown>) {\n const counter = options.counter === 'false' ? false : options.counter === 'characters' ? 'characters' : options.counter === 'words' ? 'words' : undefined;\n return createRichTextEditor(this, { ...options, counter, toolbar: options.toolbar as Array<RichCommand | '|'> | undefined });\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value') this.instance.setValue(next ?? '');\n else super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineRichTextEditor = () => defineElement('mk-rich-text-editor', MkRichTextEditorElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSelect, type SelectInstance } from './engine';\n\n/**\n * <mk-select class=\"mk-select\" label=\"Equipo\"><select name=\"equipo\">…</select></mk-select>\n * The select inside gives the options and stays in step (forms post it). Emits mk:change ({value}).\n */\nexport class MkSelectElement extends MkElement<SelectInstance> {\n static options: Record<string, OptionType> = { value: 'string', name: 'string', label: 'string', placeholder: 'string', disabled: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createSelect(this, options);\n }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n if (name === 'value' && next !== null) this.instance.setValue(next, false);\n else super.attributeChangedCallback(name, previous, next);\n }\n\n get value() {\n return this.instance?.value ?? '';\n }\n}\n\nexport const defineSelect = () => defineElement('mk-select', MkSelectElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createAddToCart, type AddToCartInstance } from './engine';\n\n/**\n * <mk-add-to-cart class=\"mk-add-to-cart\" target=\"#carrito\"><button>Agregar</button></mk-add-to-cart>\n * Packs the product's [data-mk-cart-image] and flies it to the cart. Emits mk:add and mk:land ({count}).\n */\nexport class MkAddToCartElement extends MkElement<AddToCartInstance> {\n static options: Record<string, OptionType> = { target: 'string', image: 'string', quantity: 'number', count: 'number', label: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createAddToCart(this, options);\n }\n\n get count() {\n return this.instance?.count ?? 0;\n }\n}\n\nexport const defineAddToCart = () => defineElement('mk-add-to-cart', MkAddToCartElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createScrollIsland, type ScrollIslandInstance } from './engine';\n\n/**\n * <mk-scroll-island class=\"mk-scroll-island\" style=\"height: 24rem; overflow: auto\">…</mk-scroll-island>\n * or <mk-scroll-island page></mk-scroll-island> for the page. Emits mk:section ({section}).\n */\nexport class MkScrollIslandElement extends MkElement<ScrollIslandInstance> {\n static options: Record<string, OptionType> = { sections: 'string', reach: 'number', idle: 'number', page: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createScrollIsland(options.page ? document.documentElement : this, options);\n }\n}\n\nexport const defineScrollIsland = () => defineElement('mk-scroll-island', MkScrollIslandElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createPillButton, type PillButtonInstance } from './engine';\n\n/**\n * <mk-pill-button><button type=\"button\">Haz una pregunta</button></mk-pill-button>\n * The dark fill gathers into a circle around the arrow on hover. `expand` starts as the circle.\n */\nexport class MkPillButtonElement extends MkElement<PillButtonInstance> {\n static options: Record<string, OptionType> = { expand: 'boolean', icon: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createPillButton(this, options);\n }\n}\n\nexport const definePillButton = () => defineElement('mk-pill-button', MkPillButtonElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createToolbar, type ToolbarInstance } from './engine';\n\n/**\n * <mk-toolbar class=\"mk-toolbar\" aria-label=\"Herramientas\" value=\"lapiz\">\n * <button data-mk-tool=\"lapiz\" aria-label=\"Lápiz\">…svg…</button> …\n * </mk-toolbar>\n * The chosen tool's blob stretches like slime to the next one. Emits mk:change ({value}).\n */\nexport class MkToolbarElement extends MkElement<ToolbarInstance> {\n static options: Record<string, OptionType> = { value: 'string', orientation: 'string', tips: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createToolbar(this, options);\n }\n\n get value() {\n return this.instance?.value ?? '';\n }\n\n set value(next: string) { this.instance?.setValue(next); }\n setValue(value: string, notify = false) { this.instance?.setValue(value, notify); }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (name === 'value' && this.instance) { if (next !== null) this.instance.setValue(next); return; }\n super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineToolbar = () => defineElement('mk-toolbar', MkToolbarElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createBidirectionalSlider, type BidirectionalSliderInstance } from './engine';\n\n/**\n * <mk-bidirectional-slider class=\"mk-bidirectional-slider\" label=\"Volumen\" icons=\"volume\" value=\"20\"></mk-bidirectional-slider>\n * A value either side of an origin; the fill grows from it. Emits mk:input and mk:change ({value}).\n */\nexport class MkBidirectionalSliderElement extends MkElement<BidirectionalSliderInstance> {\n static options: Record<string, OptionType> = {\n min: 'number',\n max: 'number',\n origin: 'number',\n step: 'number',\n value: 'number',\n disabled: 'boolean',\n name: 'string',\n label: 'string',\n icons: 'string',\n };\n\n protected create(options: Record<string, unknown>) {\n return createBidirectionalSlider(this, { ...options, icons: options.icons === 'none' ? false : (options.icons as 'signs' | 'volume' | undefined) });\n }\n\n get value() {\n return this.instance?.value ?? 0;\n }\n\n set value(next: number) { this.setValue(next); }\n setValue(value: number, notify = false) { this.instance?.setValue(value, notify); }\n reset(notify = false) { this.instance?.reset(notify); }\n\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (name === 'value' && this.instance) {\n this.instance.setValue(Number(next ?? this.options.origin ?? 0));\n return;\n }\n super.attributeChangedCallback(name, previous, next);\n }\n}\n\nexport const defineBidirectionalSlider = () => defineElement('mk-bidirectional-slider', MkBidirectionalSliderElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createVoiceDots, type VoiceDotsInstance, type VoiceState } from './engine';\n\n/**\n * <mk-voice-dots class=\"mk-voice-dots\" state=\"listening\"></mk-voice-dots>\n * Dots that move with a voice. element.listen(stream) follows a microphone; emits mk:state ({state}).\n */\nexport class MkVoiceDotsElement extends MkElement<VoiceDotsInstance> {\n static options: Record<string, OptionType> = { state: 'string', count: 'number', colorful: 'boolean', size: 'number' };\n\n protected create(options: Record<string, unknown>) {\n return createVoiceDots(this, options);\n }\n\n /** A new state flows from where the dots are (the engine, and the audio it follows, stay). */\n attributeChangedCallback(name: string, previous: string | null, next: string | null) {\n if (name === 'state' && this.instance) {\n this.instance.setState((next ?? 'idle') as VoiceState);\n return;\n }\n super.attributeChangedCallback(name, previous, next);\n }\n\n get state() {\n return this.instance?.state ?? 'idle';\n }\n\n set state(next: VoiceState) {\n this.setAttribute('state', next);\n }\n\n setLevel(level: number | number[]) {\n this.instance?.setLevel(level);\n }\n\n listen(source: MediaStream | HTMLMediaElement) {\n return this.instance?.listen(source) ?? Promise.resolve(() => {});\n }\n\n stop() {\n this.instance?.stop();\n }\n}\n\nexport const defineVoiceDots = () => defineElement('mk-voice-dots', MkVoiceDotsElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createPieChart, type PieChartInstance, type PieChartOptions } from './engine';\n\n/**\n * <mk-pie-chart class=\"mk-chart mk-pie-chart\" label=\"Ventas por canal\"\n * data='[{\"label\":\"Tienda\",\"value\":420},{\"label\":\"En línea\",\"value\":310}]'></mk-pie-chart>\n * donut=\"0\" draws a pie. Attribute changes glide in place. Emits mk:select ({index, label, value}).\n */\nexport class MkPieChartElement extends MkElement<PieChartInstance> {\n static options: Record<string, OptionType> = { data: 'json', donut: 'number', gap: 'number', size: 'number', label: 'string', totalLabel: 'string', legend: 'boolean', emptyLabel: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createPieChart(this, options as PieChartOptions);\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n this.instance.update({ legend: undefined, ...(this.options as PieChartOptions) });\n }\n\n update(options: PieChartOptions) {\n this.instance?.update(options);\n }\n\n select(index: number | null) {\n this.instance?.select(index);\n }\n}\n\nexport const definePieChart = () => defineElement('mk-pie-chart', MkPieChartElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createRadarChart, type RadarChartInstance, type RadarChartOptions } from './engine';\n\n/**\n * <mk-radar-chart class=\"mk-chart mk-radar-chart\" label=\"Perfil\" axes=\"Velocidad,Calidad,Precio,Soporte,Diseño\"\n * series='[{\"name\":\"Ana\",\"values\":[8,6,7,9,5]}]'></mk-radar-chart>\n * Attribute changes glide in place. Emits mk:select ({index, label, values}).\n */\nexport class MkRadarChartElement extends MkElement<RadarChartInstance> {\n static options: Record<string, OptionType> = { axes: 'list', series: 'json', max: 'number', levels: 'number', grid: 'string', size: 'number', label: 'string', legend: 'boolean', emptyLabel: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createRadarChart(this, options as RadarChartOptions);\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n this.instance.update({ legend: undefined, max: undefined, ...(this.options as RadarChartOptions) });\n }\n\n update(options: RadarChartOptions) {\n this.instance?.update(options);\n }\n\n select(axis: number | null) {\n this.instance?.select(axis);\n }\n}\n\nexport const defineRadarChart = () => defineElement('mk-radar-chart', MkRadarChartElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createRadialChart, type RadialChartInstance, type RadialChartOptions } from './engine';\n\n/**\n * <mk-radial-chart class=\"mk-chart mk-radial-chart\" label=\"Metas del día\"\n * data='[{\"label\":\"Pasos\",\"value\":7400,\"max\":10000},{\"label\":\"Agua\",\"value\":5,\"max\":8}]'></mk-radial-chart>\n * sweep=\"270\" draws a gauge. Attribute changes glide in place. Emits mk:select ({index, label, value}).\n */\nexport class MkRadialChartElement extends MkElement<RadialChartInstance> {\n static options: Record<string, OptionType> = { data: 'json', max: 'number', sweep: 'number', size: 'number', thickness: 'number', label: 'string', totalLabel: 'string', legend: 'boolean', emptyLabel: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createRadialChart(this, options as RadialChartOptions);\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n this.instance.update({ legend: undefined, max: undefined, ...(this.options as RadialChartOptions) });\n }\n\n update(options: RadialChartOptions) {\n this.instance?.update(options);\n }\n\n select(index: number | null) {\n this.instance?.select(index);\n }\n}\n\nexport const defineRadialChart = () => defineElement('mk-radial-chart', MkRadialChartElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createSankeyChart, type SankeyChartInstance, type SankeyChartOptions } from './engine';\n\n/**\n * <mk-sankey-chart class=\"mk-chart mk-sankey-chart\" label=\"Embudo de ventas\"\n * nodes='[{\"id\":\"visitas\",\"label\":\"Visitas\"},{\"id\":\"carrito\",\"label\":\"Carrito\"}]'\n * links='[{\"source\":\"visitas\",\"target\":\"carrito\",\"value\":420}]'></mk-sankey-chart>\n * Attribute changes glide in place. Emits mk:select ({index, source, target, value}).\n */\nexport class MkSankeyChartElement extends MkElement<SankeyChartInstance> {\n static options: Record<string, OptionType> = { nodes: 'json', links: 'json', height: 'number', nodeWidth: 'number', nodePadding: 'number', label: 'string', emptyLabel: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createSankeyChart(this, options as SankeyChartOptions);\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n this.instance.update(this.options as SankeyChartOptions);\n }\n\n update(options: SankeyChartOptions) {\n this.instance?.update(options);\n }\n\n select(index: number | null) {\n this.instance?.select(index);\n }\n}\n\nexport const defineSankeyChart = () => defineElement('mk-sankey-chart', MkSankeyChartElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createHeatmapChart, type HeatmapChartInstance, type HeatmapChartOptions } from './engine';\n\n/** <mk-heatmap-chart></mk-heatmap-chart> */\nexport class MkHeatmapChartElement extends MkElement<HeatmapChartInstance> {\n static options: Record<string, OptionType> = { data: 'json', end: 'string', weeks: 'number', firstDay: 'number', locale: 'string', levels: 'number', color: 'string', unit: 'string', label: 'string', legend: 'boolean', emptyLabel: 'string' };\n\n protected create(options: Record<string, unknown>) {\n return createHeatmapChart(this, options);\n }\n\n attributeChangedCallback(_name: string, previous: string | null, next: string | null) {\n if (previous === next || !this.instance) return;\n this.instance.update({ legend: undefined, color: undefined, ...this.options });\n }\n\n update(options: HeatmapChartOptions) { this.instance?.update(options); }\n select(date: string | null) { this.instance?.select(date); }\n}\n\nexport const defineHeatmapChart = () => defineElement('mk-heatmap-chart', MkHeatmapChartElement);\n","import { MkElement, defineElement, type OptionType } from '../../elements/base';\nimport { createOrbitMenu, type OrbitMenuInstance } from './engine';\n\n/**\n * <mk-orbit-menu class=\"mk-orbit-menu\">\n * <button data-mk-orbit-toggle aria-label=\"Acciones\"></button>\n * <button data-mk-orbit-item data-mk-value=\"nuevo\" aria-label=\"Nuevo\">…svg…</button> …\n * </mk-orbit-menu>\n * Options swirl out around the middle button. Emits mk:toggle ({open}) and mk:select ({value}).\n */\nexport class MkOrbitMenuElement extends MkElement<OrbitMenuInstance> {\n static options: Record<string, OptionType> = { radius: 'number', start: 'number', closeOnSelect: 'boolean' };\n\n protected create(options: Record<string, unknown>) {\n return createOrbitMenu(this, options);\n }\n\n open() {\n this.instance?.open();\n }\n\n close() {\n this.instance?.close();\n }\n}\n\nexport const defineOrbitMenu = () => defineElement('mk-orbit-menu', MkOrbitMenuElement);\n","import { MkStudioDockElement } from '../components/studio-dock/element';\nimport { MkTrailerElement } from '../components/trailer/element';\nimport { defineElement } from './base';\nimport { MkThemePickerElement } from '../components/theme-picker/element';\nimport { MkDialogElement } from '../components/dialog/element';\nimport { MkMenuElement } from '../components/menu/element';\nimport { MkToasterElement } from '../components/toast/element';\nimport { MkChatBackgroundElement } from '../components/chat-background/element';\nimport { MkChatElement } from '../components/chat/element';\nimport { MkNavElement } from '../components/nav/element';\nimport { MkStepsElement } from '../components/steps/element';\nimport { MkCursorElement } from '../components/cursor/element';\nimport { MkIslandElement } from '../components/island/element';\nimport { MkQuantityElement } from '../components/quantity/element';\nimport { MkPaginationElement } from '../components/pagination/element';\nimport { MkHoverCardElement } from '../components/hover-card/element';\nimport { MkInputOtpElement } from '../components/input-otp/element';\nimport { MkCalendarElement } from '../components/calendar/element';\nimport { MkSlotPickerElement } from '../components/slot-picker/element';\nimport { MkAttachmentElement } from '../components/attachment/element';\nimport { MkSkeletonElement } from '../components/skeleton/element';\nimport { MkQuestionnaireElement } from '../components/questionnaire/element';\nimport { MkCodeBlockElement } from '../components/code-block/element';\nimport { MkContextMenuElement } from '../components/context-menu/element';\nimport { MkDrawerElement } from '../components/drawer/element';\nimport { MkLinkPreviewElement } from '../components/link-preview/element';\nimport { MkProgressElement } from '../components/progress/element';\nimport { MkRangeSliderElement } from '../components/range-slider/element';\nimport { MkChartElement } from '../components/chart/element';\nimport { MkCreditCardElement } from '../components/credit-card/element';\nimport { MkCommandSearchElement } from '../components/command-search/element';\nimport { MkHoldConfirmElement } from '../components/hold-confirm/element';\nimport { MkImagePreviewElement } from '../components/image-preview/element';\nimport { MkLikeButtonElement } from '../components/like-button/element';\nimport { MkNotificationBellElement } from '../components/notification-bell/element';\nimport { MkPasswordStrengthElement } from '../components/password-strength/element';\nimport { MkScratchCardElement } from '../components/scratch-card/element';\nimport { MkStarRatingElement } from '../components/star-rating/element';\nimport { MkSwipeActionsElement } from '../components/swipe-actions/element';\nimport { MkColorSliderElement } from '../components/color-slider/element';\nimport { MkColorAreaElement } from '../components/color-area/element';\nimport { MkColorFieldElement } from '../components/color-field/element';\nimport { MkColorPickerElement } from '../components/color-picker/element';\nimport { MkTimeFieldElement } from '../components/time-field/element';\nimport { MkRangeCalendarElement } from '../components/range-calendar/element';\nimport { MkDateRangePickerElement } from '../components/date-range-picker/element';\nimport { MkTooltipElement } from '../components/tooltip/element';\nimport { MkPopoverElement } from '../components/popover/element';\nimport { MkLoadingButtonElement } from '../components/loading-button/element';\nimport { MkBreadcrumbElement } from '../components/breadcrumb/element';\nimport { MkEmptyStateElement } from '../components/empty-state/element';\nimport { MkStatCardElement } from '../components/stat-card/element';\nimport { MkChartTooltipElement } from '../components/chart-tooltip/element';\nimport { MkMultiSelectElement } from '../components/multi-select/element';\nimport { MkTagInputElement } from '../components/tag-input/element';\nimport { MkDateTimePickerElement } from '../components/date-time-picker/element';\nimport { MkFilterBuilderElement } from '../components/filter-builder/element';\nimport { MkTimelineElement } from '../components/timeline/element';\nimport { MkActivityFeedElement } from '../components/activity-feed/element';\nimport { MkTreeViewElement } from '../components/tree-view/element';\nimport { MkFileExplorerElement } from '../components/file-explorer/element';\nimport { MkJsonViewerElement } from '../components/json-viewer/element';\nimport { MkVirtualListElement } from '../components/virtual-list/element';\nimport { MkResizablePanelElement } from '../components/resizable-panel/element';\nimport { MkSplitViewElement } from '../components/split-view/element';\nimport { MkDataTableElement } from '../components/data-table/element';\nimport { MkEditableTableElement } from '../components/editable-table/element';\nimport { MkRichTextEditorElement } from '../components/rich-text-editor/element';\nimport { MkSelectElement } from '../components/select/element';\nimport { MkAddToCartElement } from '../components/add-to-cart/element';\nimport { MkScrollIslandElement } from '../components/scroll-island/element';\nimport { MkPillButtonElement } from '../components/pill-button/element';\nimport { MkToolbarElement } from '../components/toolbar/element';\nimport { MkBidirectionalSliderElement } from '../components/bidirectional-slider/element';\nimport { MkVoiceDotsElement } from '../components/voice-dots/element';\nimport { MkPieChartElement } from '../components/pie-chart/element';\nimport { MkRadarChartElement } from '../components/radar-chart/element';\nimport { MkRadialChartElement } from '../components/radial-chart/element';\nimport { MkSankeyChartElement } from '../components/sankey-chart/element';\nimport { MkHeatmapChartElement } from '../components/heatmap-chart/element';\nimport { MkOrbitMenuElement } from '../components/orbit-menu/element';\n// new-component:imports (scripts/new-component.mjs inserts above this line)\n\nexport { MkElement, SafeHTMLElement, defineElement, type OptionType } from './base';\nexport { MkThemePickerElement } from '../components/theme-picker/element';\nexport { MkDialogElement } from '../components/dialog/element';\nexport { MkMenuElement } from '../components/menu/element';\nexport { MkToasterElement } from '../components/toast/element';\nexport { MkChatBackgroundElement } from '../components/chat-background/element';\nexport { MkChatElement } from '../components/chat/element';\nexport { MkNavElement } from '../components/nav/element';\nexport { MkStepsElement } from '../components/steps/element';\nexport { MkCursorElement } from '../components/cursor/element';\nexport { toast } from '../components/toast/store';\nexport { MkIslandElement } from '../components/island/element';\nexport { MkQuantityElement } from '../components/quantity/element';\nexport { MkPaginationElement } from '../components/pagination/element';\nexport { MkHoverCardElement } from '../components/hover-card/element';\nexport { MkInputOtpElement } from '../components/input-otp/element';\nexport { MkStudioDockElement, defineStudioDock } from '../components/studio-dock/element';\nexport { MkTrailerElement, defineTrailer } from '../components/trailer/element';\nexport { MkCalendarElement } from '../components/calendar/element';\nexport { MkSlotPickerElement } from '../components/slot-picker/element';\nexport { MkAttachmentElement } from '../components/attachment/element';\nexport { MkSkeletonElement } from '../components/skeleton/element';\nexport { MkQuestionnaireElement } from '../components/questionnaire/element';\nexport { MkCodeBlockElement } from '../components/code-block/element';\nexport { MkContextMenuElement } from '../components/context-menu/element';\nexport { MkDrawerElement } from '../components/drawer/element';\nexport { MkLinkPreviewElement } from '../components/link-preview/element';\nexport { MkProgressElement } from '../components/progress/element';\nexport { MkRangeSliderElement } from '../components/range-slider/element';\nexport { MkChartElement } from '../components/chart/element';\nexport { MkCreditCardElement } from '../components/credit-card/element';\nexport { MkCommandSearchElement } from '../components/command-search/element';\nexport { MkHoldConfirmElement } from '../components/hold-confirm/element';\nexport { MkImagePreviewElement } from '../components/image-preview/element';\nexport { MkLikeButtonElement } from '../components/like-button/element';\nexport { MkNotificationBellElement } from '../components/notification-bell/element';\nexport { MkPasswordStrengthElement } from '../components/password-strength/element';\nexport { MkScratchCardElement } from '../components/scratch-card/element';\nexport { MkStarRatingElement } from '../components/star-rating/element';\nexport { MkSwipeActionsElement } from '../components/swipe-actions/element';\nexport { MkColorSliderElement } from '../components/color-slider/element';\nexport { MkColorAreaElement } from '../components/color-area/element';\nexport { MkColorFieldElement } from '../components/color-field/element';\nexport { MkColorPickerElement } from '../components/color-picker/element';\nexport { MkTimeFieldElement } from '../components/time-field/element';\nexport { MkRangeCalendarElement } from '../components/range-calendar/element';\nexport { MkDateRangePickerElement } from '../components/date-range-picker/element';\nexport { MkTooltipElement } from '../components/tooltip/element';\nexport { MkPopoverElement } from '../components/popover/element';\nexport { MkLoadingButtonElement } from '../components/loading-button/element';\nexport { MkBreadcrumbElement } from '../components/breadcrumb/element';\nexport { MkEmptyStateElement } from '../components/empty-state/element';\nexport { MkStatCardElement } from '../components/stat-card/element';\nexport { MkChartTooltipElement } from '../components/chart-tooltip/element';\nexport { MkMultiSelectElement } from '../components/multi-select/element';\nexport { MkTagInputElement } from '../components/tag-input/element';\nexport { MkDateTimePickerElement } from '../components/date-time-picker/element';\nexport { MkFilterBuilderElement } from '../components/filter-builder/element';\nexport { MkTimelineElement } from '../components/timeline/element';\nexport { MkActivityFeedElement } from '../components/activity-feed/element';\nexport { MkTreeViewElement } from '../components/tree-view/element';\nexport { MkFileExplorerElement } from '../components/file-explorer/element';\nexport { MkJsonViewerElement } from '../components/json-viewer/element';\nexport { MkVirtualListElement } from '../components/virtual-list/element';\nexport { MkResizablePanelElement } from '../components/resizable-panel/element';\nexport { MkSplitViewElement } from '../components/split-view/element';\nexport { MkDataTableElement } from '../components/data-table/element';\nexport { MkEditableTableElement } from '../components/editable-table/element';\nexport { MkRichTextEditorElement } from '../components/rich-text-editor/element';\nexport { MkSelectElement } from '../components/select/element';\nexport { MkAddToCartElement } from '../components/add-to-cart/element';\nexport { MkScrollIslandElement } from '../components/scroll-island/element';\nexport { MkPillButtonElement } from '../components/pill-button/element';\nexport { MkToolbarElement } from '../components/toolbar/element';\nexport { MkBidirectionalSliderElement } from '../components/bidirectional-slider/element';\nexport { MkVoiceDotsElement } from '../components/voice-dots/element';\nexport { MkPieChartElement } from '../components/pie-chart/element';\nexport { MkRadarChartElement } from '../components/radar-chart/element';\nexport { MkRadialChartElement } from '../components/radial-chart/element';\nexport { MkSankeyChartElement } from '../components/sankey-chart/element';\nexport { MkHeatmapChartElement } from '../components/heatmap-chart/element';\nexport { MkOrbitMenuElement } from '../components/orbit-menu/element';\n// new-component:exports\n\n/** Tag name → element class, for every component. */\nexport const ELEMENTS = {\n 'mk-theme-picker': MkThemePickerElement,\n 'mk-dialog': MkDialogElement,\n 'mk-menu': MkMenuElement,\n 'mk-toaster': MkToasterElement,\n 'mk-chat-background': MkChatBackgroundElement,\n 'mk-chat': MkChatElement,\n 'mk-nav': MkNavElement,\n 'mk-steps': MkStepsElement,\n 'mk-cursor': MkCursorElement,\n 'mk-island': MkIslandElement,\n 'mk-quantity': MkQuantityElement,\n 'mk-pagination': MkPaginationElement,\n 'mk-hover-card': MkHoverCardElement,\n 'mk-input-otp': MkInputOtpElement,\n 'mk-studio-dock': MkStudioDockElement,\n'mk-trailer': MkTrailerElement,\n 'mk-calendar': MkCalendarElement,\n 'mk-slot-picker': MkSlotPickerElement,\n 'mk-attachment': MkAttachmentElement,\n 'mk-skeleton': MkSkeletonElement,\n 'mk-questionnaire': MkQuestionnaireElement,\n 'mk-code-block': MkCodeBlockElement,\n 'mk-context-menu': MkContextMenuElement,\n 'mk-drawer': MkDrawerElement,\n 'mk-link-preview': MkLinkPreviewElement,\n 'mk-progress': MkProgressElement,\n 'mk-range-slider': MkRangeSliderElement,\n 'mk-chart': MkChartElement,\n 'mk-credit-card': MkCreditCardElement,\n 'mk-command-search': MkCommandSearchElement,\n 'mk-hold-confirm': MkHoldConfirmElement,\n 'mk-image-preview': MkImagePreviewElement,\n 'mk-like-button': MkLikeButtonElement,\n 'mk-notification-bell': MkNotificationBellElement,\n 'mk-password-strength': MkPasswordStrengthElement,\n 'mk-scratch-card': MkScratchCardElement,\n 'mk-star-rating': MkStarRatingElement,\n 'mk-swipe-actions': MkSwipeActionsElement,\n 'mk-color-slider': MkColorSliderElement,\n 'mk-color-area': MkColorAreaElement,\n 'mk-color-field': MkColorFieldElement,\n 'mk-color-picker': MkColorPickerElement,\n 'mk-time-field': MkTimeFieldElement,\n 'mk-range-calendar': MkRangeCalendarElement,\n 'mk-date-range-picker': MkDateRangePickerElement,\n 'mk-tooltip': MkTooltipElement,\n 'mk-popover': MkPopoverElement,\n 'mk-loading-button': MkLoadingButtonElement,\n 'mk-breadcrumb': MkBreadcrumbElement,\n 'mk-empty-state': MkEmptyStateElement,\n 'mk-stat-card': MkStatCardElement,\n 'mk-chart-tooltip': MkChartTooltipElement,\n 'mk-multi-select': MkMultiSelectElement,\n 'mk-tag-input': MkTagInputElement,\n 'mk-date-time-picker': MkDateTimePickerElement,\n 'mk-filter-builder': MkFilterBuilderElement,\n 'mk-timeline': MkTimelineElement,\n 'mk-activity-feed': MkActivityFeedElement,\n 'mk-tree-view': MkTreeViewElement,\n 'mk-file-explorer': MkFileExplorerElement,\n 'mk-json-viewer': MkJsonViewerElement,\n 'mk-virtual-list': MkVirtualListElement,\n 'mk-resizable-panel': MkResizablePanelElement,\n 'mk-split-view': MkSplitViewElement,\n 'mk-data-table': MkDataTableElement,\n 'mk-editable-table': MkEditableTableElement,\n 'mk-rich-text-editor': MkRichTextEditorElement,\n 'mk-select': MkSelectElement,\n 'mk-add-to-cart': MkAddToCartElement,\n 'mk-scroll-island': MkScrollIslandElement,\n 'mk-pill-button': MkPillButtonElement,\n 'mk-toolbar': MkToolbarElement,\n 'mk-bidirectional-slider': MkBidirectionalSliderElement,\n 'mk-voice-dots': MkVoiceDotsElement,\n 'mk-pie-chart': MkPieChartElement,\n 'mk-radar-chart': MkRadarChartElement,\n 'mk-radial-chart': MkRadialChartElement,\n 'mk-sankey-chart': MkSankeyChartElement,\n 'mk-heatmap-chart': MkHeatmapChartElement,\n 'mk-orbit-menu': MkOrbitMenuElement,\n // new-component:entries\n} as const;\n\nexport type ElementName = keyof typeof ELEMENTS;\n\n/** Register every motion-kit element (or the ones named). Safe to call more than once. */\nexport function defineElements(names: ElementName[] = Object.keys(ELEMENTS) as ElementName[]) {\n for (const name of names) defineElement(name, ELEMENTS[name]);\n}\n"],"mappings":"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","names":[]}