{"version":3,"file":"solid-blocks.mjs","sources":["../node_modules/solid-js/web/dist/web.js","../src/blocks/tools.ts","../src/blocks/accordion.tsx","../src/blocks/avatar.tsx","../src/blocks/bar.tsx","../src/blocks/breadcrumbs.tsx","../src/blocks/button.tsx","../src/blocks/checkbox.tsx","../src/blocks/message.tsx","../src/blocks/meter.tsx","../src/blocks/menu.tsx","../src/blocks/modal.tsx","../src/blocks/progress.tsx","../src/blocks/radio.tsx","../src/blocks/select.tsx","../src/blocks/spinner.tsx","../src/blocks/tabs.tsx","../src/blocks/tag.tsx","../src/blocks/textfield.tsx","../src/blocks/toast.tsx","../src/blocks/tooltip.tsx"],"sourcesContent":["import { createRoot, createRenderEffect, sharedConfig, untrack, enableHydration, createSignal, onCleanup, splitProps, createMemo } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = /*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n  className: \"class\",\n  htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n  class: \"className\",\n  formnovalidate: \"formNoValidate\",\n  ismap: \"isMap\",\n  nomodule: \"noModule\",\n  playsinline: \"playsInline\",\n  readonly: \"readOnly\"\n});\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\"]);\n\nfunction reconcileArrays(parentNode, a, b) {\n  let bLength = b.length,\n      aEnd = a.length,\n      bEnd = bLength,\n      aStart = 0,\n      bStart = 0,\n      after = a[aEnd - 1].nextSibling,\n      map = null;\n  while (aStart < aEnd || bStart < bEnd) {\n    if (a[aStart] === b[bStart]) {\n      aStart++;\n      bStart++;\n      continue;\n    }\n    while (a[aEnd - 1] === b[bEnd - 1]) {\n      aEnd--;\n      bEnd--;\n    }\n    if (aEnd === aStart) {\n      const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n      while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n    } else if (bEnd === bStart) {\n      while (aStart < aEnd) {\n        if (!map || !map.has(a[aStart])) a[aStart].remove();\n        aStart++;\n      }\n    } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n      const node = a[--aEnd].nextSibling;\n      parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n      parentNode.insertBefore(b[--bEnd], node);\n      a[aEnd] = b[bEnd];\n    } else {\n      if (!map) {\n        map = new Map();\n        let i = bStart;\n        while (i < bEnd) map.set(b[i], i++);\n      }\n      const index = map.get(a[aStart]);\n      if (index != null) {\n        if (bStart < index && index < bEnd) {\n          let i = aStart,\n              sequence = 1,\n              t;\n          while (++i < aEnd && i < bEnd) {\n            if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n            sequence++;\n          }\n          if (sequence > index - bStart) {\n            const node = a[aStart];\n            while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n          } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n        } else aStart++;\n      } else a[aStart++].remove();\n    }\n  }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n  let disposer;\n  createRoot(dispose => {\n    disposer = dispose;\n    element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n  }, options.owner);\n  return () => {\n    disposer();\n    element.textContent = \"\";\n  };\n}\nfunction template(html, check, isSVG) {\n  const t = document.createElement(\"template\");\n  t.innerHTML = html;\n  let node = t.content.firstChild;\n  if (isSVG) node = node.firstChild;\n  return node;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n  const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n  for (let i = 0, l = eventNames.length; i < l; i++) {\n    const name = eventNames[i];\n    if (!e.has(name)) {\n      e.add(name);\n      document.addEventListener(name, eventHandler);\n    }\n  }\n}\nfunction clearDelegatedEvents(document = window.document) {\n  if (document[$$EVENTS]) {\n    for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n    delete document[$$EVENTS];\n  }\n}\nfunction setAttribute(node, name, value) {\n  if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n  if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n  if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n  if (delegate) {\n    if (Array.isArray(handler)) {\n      node[`$$${name}`] = handler[0];\n      node[`$$${name}Data`] = handler[1];\n    } else node[`$$${name}`] = handler;\n  } else if (Array.isArray(handler)) {\n    const handlerFn = handler[0];\n    node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n  } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n  const classKeys = Object.keys(value || {}),\n        prevKeys = Object.keys(prev);\n  let i, len;\n  for (i = 0, len = prevKeys.length; i < len; i++) {\n    const key = prevKeys[i];\n    if (!key || key === \"undefined\" || value[key]) continue;\n    toggleClassKey(node, key, false);\n    delete prev[key];\n  }\n  for (i = 0, len = classKeys.length; i < len; i++) {\n    const key = classKeys[i],\n          classValue = !!value[key];\n    if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n    toggleClassKey(node, key, true);\n    prev[key] = classValue;\n  }\n  return prev;\n}\nfunction style(node, value, prev) {\n  if (!value) return prev ? setAttribute(node, \"style\") : value;\n  const nodeStyle = node.style;\n  if (typeof value === \"string\") return nodeStyle.cssText = value;\n  typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n  prev || (prev = {});\n  value || (value = {});\n  let v, s;\n  for (s in prev) {\n    value[s] == null && nodeStyle.removeProperty(s);\n    delete prev[s];\n  }\n  for (s in value) {\n    v = value[s];\n    if (v !== prev[s]) {\n      nodeStyle.setProperty(s, v);\n      prev[s] = v;\n    }\n  }\n  return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n  const prevProps = {};\n  if (!skipChildren) {\n    createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n  }\n  createRenderEffect(() => props.ref && props.ref(node));\n  createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n  return prevProps;\n}\nfunction dynamicProperty(props, key) {\n  const src = props[key];\n  Object.defineProperty(props, key, {\n    get() {\n      return src();\n    },\n    enumerable: true\n  });\n  return props;\n}\nfunction innerHTML(parent, content) {\n  !sharedConfig.context && (parent.innerHTML = content);\n}\nfunction use(fn, element, arg) {\n  return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n  if (marker !== undefined && !initial) initial = [];\n  if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n  createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n  props || (props = {});\n  for (const prop in prevProps) {\n    if (!(prop in props)) {\n      if (prop === \"children\") continue;\n      prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n    }\n  }\n  for (const prop in props) {\n    if (prop === \"children\") {\n      if (!skipChildren) insertExpression(node, props.children);\n      continue;\n    }\n    const value = props[prop];\n    prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n  }\n}\nfunction hydrate$1(code, element, options = {}) {\n  sharedConfig.completed = globalThis._$HY.completed;\n  sharedConfig.events = globalThis._$HY.events;\n  sharedConfig.load = globalThis._$HY.load;\n  sharedConfig.gather = root => gatherHydratable(element, root);\n  sharedConfig.registry = new Map();\n  sharedConfig.context = {\n    id: options.renderId || \"\",\n    count: 0\n  };\n  gatherHydratable(element, options.renderId);\n  const dispose = render(code, element, [...element.childNodes], options);\n  sharedConfig.context = null;\n  return dispose;\n}\nfunction getNextElement(template) {\n  let node, key;\n  if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n    return template.cloneNode(true);\n  }\n  if (sharedConfig.completed) sharedConfig.completed.add(node);\n  sharedConfig.registry.delete(key);\n  return node;\n}\nfunction getNextMatch(el, nodeName) {\n  while (el && el.localName !== nodeName) el = el.nextSibling;\n  return el;\n}\nfunction getNextMarker(start) {\n  let end = start,\n      count = 0,\n      current = [];\n  if (sharedConfig.context) {\n    while (end) {\n      if (end.nodeType === 8) {\n        const v = end.nodeValue;\n        if (v === \"#\") count++;else if (v === \"/\") {\n          if (count === 0) return [end, current];\n          count--;\n        }\n      }\n      current.push(end);\n      end = end.nextSibling;\n    }\n  }\n  return [end, current];\n}\nfunction runHydrationEvents() {\n  if (sharedConfig.events && !sharedConfig.events.queued) {\n    queueMicrotask(() => {\n      const {\n        completed,\n        events\n      } = sharedConfig;\n      events.queued = false;\n      while (events.length) {\n        const [el, e] = events[0];\n        if (!completed.has(el)) return;\n        eventHandler(e);\n        events.shift();\n      }\n    });\n    sharedConfig.events.queued = true;\n  }\n}\nfunction toPropertyName(name) {\n  return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n  const classNames = key.trim().split(/\\s+/);\n  for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n  let isCE, isProp, isChildProp;\n  if (prop === \"style\") return style(node, value, prev);\n  if (prop === \"classList\") return classList(node, value, prev);\n  if (value === prev) return prev;\n  if (prop === \"ref\") {\n    if (!skipRef) value(node);\n  } else if (prop.slice(0, 3) === \"on:\") {\n    const e = prop.slice(3);\n    prev && node.removeEventListener(e, prev);\n    value && node.addEventListener(e, value);\n  } else if (prop.slice(0, 10) === \"oncapture:\") {\n    const e = prop.slice(10);\n    prev && node.removeEventListener(e, prev, true);\n    value && node.addEventListener(e, value, true);\n  } else if (prop.slice(0, 2) === \"on\") {\n    const name = prop.slice(2).toLowerCase();\n    const delegate = DelegatedEvents.has(name);\n    if (!delegate && prev) {\n      const h = Array.isArray(prev) ? prev[0] : prev;\n      node.removeEventListener(name, h);\n    }\n    if (delegate || value) {\n      addEventListener(node, name, value, delegate);\n      delegate && delegateEvents([name]);\n    }\n  } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n    if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;\n  } else {\n    const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n    if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n  }\n  return value;\n}\nfunction eventHandler(e) {\n  const key = `$$${e.type}`;\n  let node = e.composedPath && e.composedPath()[0] || e.target;\n  if (e.target !== node) {\n    Object.defineProperty(e, \"target\", {\n      configurable: true,\n      value: node\n    });\n  }\n  Object.defineProperty(e, \"currentTarget\", {\n    configurable: true,\n    get() {\n      return node || document;\n    }\n  });\n  if (sharedConfig.registry && !sharedConfig.done) {\n    sharedConfig.done = true;\n    document.querySelectorAll(\"[id^=pl-]\").forEach(elem => elem.remove());\n  }\n  while (node !== null) {\n    const handler = node[key];\n    if (handler && !node.disabled) {\n      const data = node[`${key}Data`];\n      data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n      if (e.cancelBubble) return;\n    }\n    node = node.host && node.host !== node && node.host instanceof Node ? node.host : node.parentNode;\n  }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n  if (sharedConfig.context && !current) current = [...parent.childNodes];\n  while (typeof current === \"function\") current = current();\n  if (value === current) return current;\n  const t = typeof value,\n        multi = marker !== undefined;\n  parent = multi && current[0] && current[0].parentNode || parent;\n  if (t === \"string\" || t === \"number\") {\n    if (sharedConfig.context) return current;\n    if (t === \"number\") value = value.toString();\n    if (multi) {\n      let node = current[0];\n      if (node && node.nodeType === 3) {\n        node.data = value;\n      } else node = document.createTextNode(value);\n      current = cleanChildren(parent, current, marker, node);\n    } else {\n      if (current !== \"\" && typeof current === \"string\") {\n        current = parent.firstChild.data = value;\n      } else current = parent.textContent = value;\n    }\n  } else if (value == null || t === \"boolean\") {\n    if (sharedConfig.context) return current;\n    current = cleanChildren(parent, current, marker);\n  } else if (t === \"function\") {\n    createRenderEffect(() => {\n      let v = value();\n      while (typeof v === \"function\") v = v();\n      current = insertExpression(parent, v, current, marker);\n    });\n    return () => current;\n  } else if (Array.isArray(value)) {\n    const array = [];\n    const currentArray = current && Array.isArray(current);\n    if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n      createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n      return () => current;\n    }\n    if (sharedConfig.context) {\n      if (!array.length) return current;\n      for (let i = 0; i < array.length; i++) {\n        if (array[i].parentNode) return current = array;\n      }\n    }\n    if (array.length === 0) {\n      current = cleanChildren(parent, current, marker);\n      if (multi) return current;\n    } else if (currentArray) {\n      if (current.length === 0) {\n        appendNodes(parent, array, marker);\n      } else reconcileArrays(parent, current, array);\n    } else {\n      current && cleanChildren(parent);\n      appendNodes(parent, array);\n    }\n    current = array;\n  } else if (value instanceof Node) {\n    if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n    if (Array.isArray(current)) {\n      if (multi) return current = cleanChildren(parent, current, marker, value);\n      cleanChildren(parent, current, null, value);\n    } else if (current == null || current === \"\" || !parent.firstChild) {\n      parent.appendChild(value);\n    } else parent.replaceChild(value, parent.firstChild);\n    current = value;\n  } else ;\n  return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n  let dynamic = false;\n  for (let i = 0, len = array.length; i < len; i++) {\n    let item = array[i],\n        prev = current && current[i];\n    if (item instanceof Node) {\n      normalized.push(item);\n    } else if (item == null || item === true || item === false) ; else if (Array.isArray(item)) {\n      dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n    } else if ((typeof item) === \"function\") {\n      if (unwrap) {\n        while (typeof item === \"function\") item = item();\n        dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n      } else {\n        normalized.push(item);\n        dynamic = true;\n      }\n    } else {\n      const value = String(item);\n      if (prev && prev.nodeType === 3 && prev.data === value) {\n        normalized.push(prev);\n      } else normalized.push(document.createTextNode(value));\n    }\n  }\n  return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n  for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n  if (marker === undefined) return parent.textContent = \"\";\n  const node = replacement || document.createTextNode(\"\");\n  if (current.length) {\n    let inserted = false;\n    for (let i = current.length - 1; i >= 0; i--) {\n      const el = current[i];\n      if (node !== el) {\n        const isParent = el.parentNode === parent;\n        if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n      } else inserted = true;\n    }\n  } else parent.insertBefore(node, marker);\n  return [node];\n}\nfunction gatherHydratable(element, root) {\n  const templates = element.querySelectorAll(`*[data-hk]`);\n  for (let i = 0; i < templates.length; i++) {\n    const node = templates[i];\n    const key = node.getAttribute(\"data-hk\");\n    if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n  }\n}\nfunction getHydrationKey() {\n  const hydrate = sharedConfig.context;\n  return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n  return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n  return props.children;\n}\nfunction voidFn() {}\n\nfunction throwInBrowser(func) {\n  const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n  console.error(err);\n}\nfunction renderToString(fn, options) {\n  throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n  throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n  throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n  return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n  enableHydration();\n  return hydrate$1(...args);\n};\nfunction Portal(props) {\n  const {\n    useShadow\n  } = props,\n        marker = document.createTextNode(\"\"),\n        mount = props.mount || document.body;\n  function renderPortal() {\n    if (sharedConfig.context) {\n      const [s, set] = createSignal(false);\n      queueMicrotask(() => set(true));\n      return () => s() && props.children;\n    } else return () => props.children;\n  }\n  if (mount instanceof HTMLHeadElement) {\n    const [clean, setClean] = createSignal(false);\n    const cleanup = () => setClean(true);\n    createRoot(dispose => insert(mount, () => !clean() ? renderPortal()() : dispose(), null));\n    onCleanup(() => {\n      if (sharedConfig.context) queueMicrotask(cleanup);else cleanup();\n    });\n  } else {\n    const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n          renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n      mode: \"open\"\n    }) : container;\n    Object.defineProperty(container, \"host\", {\n      get() {\n        return marker.parentNode;\n      },\n      configurable: true\n    });\n    insert(renderRoot, renderPortal());\n    mount.appendChild(container);\n    props.ref && props.ref(container);\n    onCleanup(() => mount.removeChild(container));\n  }\n  return marker;\n}\nfunction Dynamic(props) {\n  const [p, others] = splitProps(props, [\"component\"]);\n  const cached = createMemo(() => p.component);\n  return createMemo(() => {\n    const component = cached();\n    switch (typeof component) {\n      case \"function\":\n        return untrack(() => component(others));\n      case \"string\":\n        const isSvg = SVGElements.has(component);\n        const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n        spread(el, others, isSvg);\n        return el;\n    }\n  });\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, PropAliases, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, hydrate, innerHTML, insert, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n","import { JSX, createEffect, createSignal, onCleanup, createMemo, Accessor, Setter } from \"solid-js\";\n\nexport type WrappedElement<P> = (props: P) => JSX.Element;\n\nexport const toStyleObject = (style: string | JSX.CSSProperties) => {\n  if (typeof style === \"object\") {\n    return style;\n  }\n  const styleObject: JSX.CSSProperties = {};\n  (style || \"\").replace(/([\\w-]+)\\s*:\\s*([^;]+)/g, (_, prop, value) => {\n    styleObject[prop] = value;\n    return \"\";\n  });\n  return styleObject;\n};\n\nexport const composeStyles = (...styles: (JSX.CSSProperties | string)[]) =>\n  Object.assign({}, ...styles.map(toStyleObject));\n\nexport const getNearestNode = (\n  target: EventTarget | null | undefined,\n  name: string\n): Node | null | undefined => {\n  if (!target) {\n    return;\n  }\n  let nearest: Node & ParentNode | null = target as Node & ParentNode;\n  while (nearest && nearest.nodeName !== name) {\n    nearest = nearest.parentNode;\n  }\n  return nearest;\n};\n\nexport const maxRandom = 8;\nlet lastItem = 0;\nexport const getRandom = () => {\n  const nextItem =\n    1 + Math.floor(Math.random() * (maxRandom - (lastItem ? 1 : 0)));\n  lastItem = lastItem ? nextItem + (nextItem === lastItem ? 1 : 0) : nextItem;\n  return lastItem;\n};\n\nexport type MediaQueryItem = \n  |'all'\n  | 'print'\n  | 'screen' \n  | `(${'min-' | 'max-' | ''}${\n    | 'aspect-ratio'\n    | 'color'\n    | 'color-gamut'\n    | 'color-index'\n    | 'display-mode'\n    | 'grid'\n    | 'inverted-colors'\n    | 'height'\n    | 'orientation'\n    | 'pointer'\n    | `prefers-${'color-scheme' | 'contrast' | 'reduced-motion' | 'reduced-transparency'}`\n    | 'resolution'\n    | 'scan'\n    | 'width'\n  }: ${string})`;\nexport type MediaQueryOperator = ' and ' | ' not ' | ' only ' | ', ';\nexport type MediaQueryString = \n  | MediaQueryItem\n  | `${MediaQueryItem}${MediaQueryOperator}${MediaQueryItem}`\n\nexport const useMediaQuery = (query: MediaQueryString): Accessor<boolean> => {\n  const matcher = window.matchMedia(query);\n  const [matches, setMatches] = createSignal(matcher.matches);\n\n  const changeHandler = (ev: MediaQueryListEvent) => setMatches(ev.matches);\n  matcher.addEventListener('change', changeHandler);\n  onCleanup(() => matcher.removeEventListener('change', changeHandler));\n\n  return matches\n}\n\nconst parseStorage = <T extends any | string>(data: string | null | undefined, useJson: boolean): T | undefined =>\n  useJson ? (data ? JSON.parse(data) : undefined) : data ?? undefined;\n\nconst putStorage = <T extends any | string>(key: string, data: T): void =>\n  localStorage.setItem(key, typeof data === 'string' ? data : JSON.stringify(data))\n\nexport function createLocalStorageSignal<T extends any | string>(key: string, initialValue?: T, useJson = false):\n  [Accessor<T | undefined>, Setter<T | undefined>] {\n  if (localStorage.getItem(key) === null && initialValue !== undefined) {\n    putStorage(key, initialValue);\n  }\n  const [value, setValue] = createSignal(parseStorage<T>(localStorage.getItem(key), useJson));\n  \n  createEffect(() =>\n    useJson && value() === undefined\n    ? localStorage.removeItem(key)\n    : putStorage(key, value())\n  );\n  \n  return [value, setValue];\n}\n\nexport const useDarkMode = (localStorageKey = \"COLOR_SCHEME\") => {\n  const mediaQueryPrefersDark = useMediaQuery(\"(prefers-color-scheme: dark)\");\n  const [storedPrefersDark, setStoredPrefersDark] = createLocalStorageSignal<boolean>(localStorageKey, undefined, true);\n  const darkMode = createMemo(() => storedPrefersDark() ?? mediaQueryPrefersDark());\n\n  createEffect(() => {\n    document.body.classList.toggle('dark-mode', darkMode())\n  });\n\n  return [darkMode, setStoredPrefersDark];\n};\n\nexport type NodeName = string;\n\nexport const getElements = (\n  children: JSX.Element | ((...args: any[]) => JSX.Element),\n  filter?: NodeName | ((node: HTMLElement) => boolean),\n  /** if the children contains a callback, you may add an array of props */\n  props: any = [],\n  /** you can add prepended results if you want */\n  result = []\n): HTMLElement[] | undefined => {\n  if (!children) {\n    return;\n  }\n  if (Array.isArray(children)) {\n    children.forEach((child) => getElements(child, filter, props, result));\n  } else if (typeof children === \"function\") {\n    getElements(children.apply(null, props), filter, props, result);\n  } else {\n    const node = children as HTMLElement;\n    if (\n      !filter || (typeof filter === \"function\" ? filter(node) : node.nodeName === filter)\n    ) {\n      (result as HTMLElement[]).push(node);\n    }\n  }\n  return result;\n};\n\n// TODO: types\nexport const runEvent = <\n  E extends Event,\n  T extends HTMLElement,\n  EV = E & { currentTarget: T, target: Element },\n  EU = JSX.EventHandlerUnion<T, E>\n>(ev: EV, handler?: EU): void => {\n  if (Array.isArray(handler)) {\n    handler[1](handler[0], ev);\n  } else if (typeof handler === \"function\") {\n    handler(ev);\n  }\n}\n","import {\n  createContext,\n  createEffect,\n  createSignal,\n  mergeProps,\n  on,\n  onMount,\n  splitProps,\n  useContext,\n} from \"solid-js\";\nimport type { Component, JSX } from \"solid-js\";\nimport { runEvent } from \"./tools\";\n\nimport \"./base.css\";\nimport \"./accordion.css\";\n\ndeclare module \"solid-js\" {\n  namespace JSX {\n    interface Directives {\n      closeAccordion: {}\n    }\n  }\n};\n\nexport type _C = JSX.Directives['closeAccordion'];\n\nconst accordionContext = createContext<[\n  options: { allowMultiple?: boolean, allowToggle?: boolean },\n  /** get the index of the current accordion */\n  getIndex: () => number,\n  /**\n   * if allowMultiple is false, the index of the currently opened accordion or -1 if none is opened\n   * otherwise the number of opened tabs\n   */\n  opened: () => number,\n  \n  setOpened: (opened: number) => void\n] | []>([]);\n\nexport type AccordionProps = JSX.HTMLAttributes<HTMLDetailsElement> & {\n  open?: boolean,\n  setOpen?: (isOpen: boolean) => void\n};\n\nexport const Accordion: Component<AccordionProps> = (props) => {\n  const [local, detailsProps] = splitProps(props, [\"setOpen\"]);\n  const [accordionRef, closeAccordion] = createSignal<HTMLDetailsElement>();\n  closeAccordion;\n  const [options, getIndex, opened, setOpened] = useContext(accordionContext);\n  const index = getIndex ? getIndex() : 0;\n  \n  if (options && opened && setOpened) {\n    onMount(() => {\n      if (props.open) { setOpened(options.allowMultiple ? opened() + 1 : index); }\n    });\n\n    createEffect(on([opened, accordionRef], ([open, ref]) => {\n      if (ref && options.allowMultiple === false && open !== index) {\n        ref.open = false;\n      }\n    }, { defer: true }));\n  }\n\n  return (\n    <details\n      use:closeAccordion\n      {...detailsProps}\n      classList={mergeProps(props.classList ?? {}, { \"sb-accordion\": true })}\n      onClick={options && opened ? (ev) => {\n        runEvent(ev, ev.currentTarget);\n        if (accordionRef()?.open && !options.allowToggle && (!options.allowMultiple || opened() === 1)) {\n          ev.preventDefault();\n        }\n      } : props.onClick}\n      onToggle={(ev) => {\n        if (options && opened && setOpened) {\n          if (options.allowMultiple === true) {\n            setOpened(opened() + (ev.currentTarget.open ? 1 : -1));\n          } else if (ev.currentTarget.open) {\n            setOpened(index);\n          }\n        }\n        runEvent(ev, ev.currentTarget);\n        local.setOpen?.(ev.currentTarget.open);\n      }}\n      open={!!props.open}\n    />\n  );\n};\n\nexport type AccordionHeaderProps = JSX.HTMLAttributes<HTMLElement>;\n\nexport const AccordionHeader: Component<AccordionHeaderProps> = (props) => (\n  <summary\n    {...props}\n    classList={mergeProps(props.classList ?? {}, {\n      \"sb-accordion-header\": true,\n    })}\n  />\n);\n\nexport type AccordionGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n  /** opening another accordion does not close the last opened one */\n  allowMultiple?: boolean;\n  /** the last open accordion may be closed */\n  allowToggle?: boolean;\n};\n\nexport const AccordionGroup: Component<AccordionGroupProps> = (props) => {\n  const [local, divProps] = splitProps(props, [\"allowMultiple\", \"allowToggle\"]);\n  let accordions = -1;\n  const [opened, setOpened] = createSignal(0);\n  \n  return (\n    <accordionContext.Provider value={[local, () => ++accordions, opened, setOpened]}>\n      <div\n        {...divProps}\n        classList={mergeProps(props.classList ?? {}, {\n          \"sb-accordion-group\": true,\n        })}\n      />\n    </accordionContext.Provider>\n  );\n};\n","import { Component, JSX, createMemo, splitProps, mergeProps } from \"solid-js\";\nimport { composeStyles, getRandom } from \"./tools\";\nimport \"./base.css\";\nimport \"./avatar.css\";\n\nexport type AvatarProps = {\n  img?: string;\n  name?: string;\n  fallback?: JSX.Element;\n  plus?: number;\n} & JSX.HTMLAttributes<HTMLDivElement>;\n\nconst char =\n  \"[A-Za-z\\xAA\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02E0-\\u02E4\\u0370-\\u0373\\u0375-\\u0377\\u037A-\\u037D\\u037F\\u0384\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03E1\\u03F0-\\u0484\\u0487-\\u052F\\u1C80-\\u1C88\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFE\\u2071\\u207F\\u2090-\\u209C\\u2126\\u212A\\u212B\\u2132\\u214E\\u2160-\\u2188\\u2C60-\\u2C7F\\u2DE0-\\u2DFF\\uA640-\\uA69F\\uA722-\\uA787\\uA78B-\\uA7BF\\uA7C2-\\uA7C6\\uA7F7-\\uA7FF\\uAB30-\\uAB5A\\uAB5C-\\uAB67\\uFB00-\\uFB06\\uFE2E\\uFE2F\\uFF21-\\uFF3A\\uFF41-\\uFF5A]|\\uD800[\\uDD40-\\uDD8E\\uDDA0]|\\uD834[\\uDE00-\\uDE45]\";\nconst initialsRegexp = new RegExp(`^.*?(${char})(?:.*\\\\s+\\\\S*?(${char}))?.*$`);\n\nexport const getInitials = (name: string) =>\n  name\n    // remove superfluous spaces and stuff in brackets\n    .replace(/^\\s+|\\(.*?\\)|\\{.*?\\}|\\[.*\\]|<.*?>|\\s+$/g, \"\")\n    // find first char of the first name and the last name\n    .replace(initialsRegexp, \"$1$2\")\n    .toUpperCase();\n\nexport const Avatar: Component<AvatarProps> = (props) => {\n  const [local, divProps] = splitProps(props, [\n    \"classList\",\n    \"children\",\n    \"img\",\n    \"name\",\n    \"fallback\",\n  ]);\n  const initials = createMemo(() =>\n    local.name ? getInitials(local.name) : \"\"\n  );\n\n  if (local.img) {\n    return (\n      <div\n        classList={mergeProps(local.classList ?? {}, { \"sb-avatar\": true })}\n        role=\"figure\"\n        data-random={getRandom()}\n        {...divProps}\n      >\n        <img src={local.img} alt={local.name} />\n        <span aria-hidden=\"true\">{initials}</span>\n        {local.children}\n      </div>\n    );\n  }\n  if (local.name) {\n    return (\n      <div\n        classList={mergeProps(local.classList ?? {}, { \"sb-avatar\": true })}\n        role=\"img\"\n        aria-label={local.name}\n        data-random={getRandom()}\n        {...divProps}\n      >\n        {initials}\n        {local.children}\n      </div>\n    );\n  }\n  return (\n    <div\n      classList={mergeProps(local.classList ?? {}, { \"sb-avatar\": true })}\n      role=\"img\"\n      data-random={getRandom()}\n      aria-label=\"Unknown\"\n      {...divProps}\n    >\n      {local.fallback ?? \"?\"}\n      {local.children}\n    </div>\n  );\n};\n\nexport type AvatarBadgeProps = {\n  borderColor?: string;\n  background?: string;\n} & JSX.HTMLAttributes<HTMLSpanElement>;\n\nexport const AvatarBadge: Component<AvatarBadgeProps> = (props) => {\n  const [local, spanProps] = splitProps(props, [\n    \"classList\",\n    \"borderColor\",\n    \"background\",\n    \"style\",\n  ]);\n  const composedStyle = composeStyles(local.style ?? {}, {\n    \"border-color\": local.borderColor,\n    background: local.background,\n  });\n\n  return (\n    <span\n      classList={mergeProps(local.classList ?? {}, { \"sb-badge\": true })}\n      {...spanProps}\n      style={composedStyle}\n    />\n  );\n};\n\nexport type AvatarGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n  \"data-plus\"?: string;\n};\n\nexport const AvatarGroup: Component<AvatarGroupProps> = (props) => (\n  <div\n    {...props}\n    classList={mergeProps(props.classList ?? {}, { \"sb-avatar\": true })}\n    role=\"group\"\n    aria-haspopup={Array.isArray(props.children) && props.children.length > 3}\n  />\n);\n","import { Component, JSX, mergeProps, splitProps } from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\n\nimport \"./base.css\";\nimport \"./bar.css\";\n\nexport type BarProps = JSX.HTMLAttributes<HTMLDivElement> & {\n  mount?: HTMLElement;\n  placement?: \"top\" | \"right\" | \"bottom\" | \"left\";\n  position?: Omit<JSX.CSSProperties[\"position\"], \"static\">;\n  portal?: boolean;\n};\n\nexport const Bar: Component<BarProps> = (props) => {\n  const [local, rest] = splitProps(props, [\n    \"placement\",\n    \"position\",\n    \"mount\",\n    \"portal\",\n  ]);\n  const divProps = mergeProps(rest, {\n    class: `${local.placement}${\n      local.position ? \" \" + local.position : \"\"\n    } sb-bar ${props.class ? \" \" + props.class : \"\"}`,\n  });\n  return local.portal === false ? (\n    <div {...divProps} />\n  ) : (\n    <Portal mount={local.mount}>\n      <div {...divProps} />\n    </Portal>\n  );\n};\n","import { Component, JSX, For } from \"solid-js\";\n\nimport \"./base.css\";\nimport \"./breadcrumbs.css\";\n\nexport type BreadcrumbsProps = JSX.HTMLAttributes<HTMLOListElement> & {\n  children: JSX.Element | JSX.Element[];\n};\n\nexport const Breadcrumbs: Component<BreadcrumbsProps> = (props) => (\n  <nav class=\"sb-breadcrumbs\">\n    <ol {...props}>\n      <For\n        each={Array.isArray(props.children) ? props.children : [props.children]}\n      >\n        {(item) => <li>{item}</li>}\n      </For>\n    </ol>\n  </nav>\n);\n","import { Component, JSX, mergeProps, splitProps } from \"solid-js\";\n\nimport \"./base.css\";\nimport \"./button.css\";\n\nexport type ButtonProps = JSX.HTMLAttributes<HTMLButtonElement> & {\n  variant?: \"primary\" | \"secondary\" | \"link\" | \"icon\";\n};\n\nexport const Button: Component<ButtonProps> = (props) => {\n  const [local, buttonProps] = splitProps(props, [\"variant\", \"classList\"]);\n\n  return (\n    <button\n      {...buttonProps}\n      classList={mergeProps(local.classList ?? {}, {\n        \"sb-button\": true,\n        [local.variant ?? \"primary\"]: true,\n      })}\n    />\n  );\n};\n","import { Component, JSX, splitProps, Show } from \"solid-js\";\n\nimport { runEvent } from \"./tools\";\n\nimport \"./base.css\";\nimport \"./checkbox.css\";\n\nexport type CheckboxProps = JSX.HTMLAttributes<HTMLInputElement> & {\n  /**\n   * align the checkbox inside its label\n   * can be 'left' or 'right; default is 'left'\n   */\n  align?: \"left\" | \"right\";\n  autofocus?: boolean;\n  checked?: boolean;\n  disabled?: boolean;\n  name?: string;\n  setChecked?: (checked: boolean) => void;\n  oninvalid?: JSX.EventHandler<HTMLInputElement, Event>;\n  required?: boolean;\n  switch?: boolean;\n  value?: string;\n};\n\nexport const Checkbox: Component<CheckboxProps> = (props) => {\n  const [inputProps, content, labelProps] = splitProps(\n    props,\n    [\n      \"accessKey\",\n      \"aria-disabled\",\n      \"aria-invalid\",\n      \"autofocus\",\n      \"checked\",\n      \"class\",\n      \"disabled\",\n      \"id\",\n      \"name\",\n      \"onclick\",\n      \"onkeydown\",\n      \"onkeypress\",\n      \"onkeyup\",\n      \"oninvalid\",\n      \"required\",\n      \"value\",\n    ],\n    [\"align\", \"children\", \"onChange\", \"setChecked\", \"switch\"]\n  );\n  \n  return (\n    <label\n      class={`${content.align || \"left\"} ${\n        content.switch ? \" switch\" : \"\"\n      } sb-checkbox`}\n      {...labelProps as JSX.HTMLAttributes<HTMLLabelElement>}\n    >\n      <Show when={content.align === \"right\"}>{content.children}</Show>\n      <input\n        ref={props.ref}\n        type=\"checkbox\"\n        role={content.switch ? \"switch\" : undefined}\n        {...inputProps}\n        onChange={(ev): void => {\n          runEvent(ev, content.onChange);\n          content.setChecked?.(ev.currentTarget.checked);\n        }}\n      />\n      <Show when={content.align !== \"right\"}>{content.children}</Show>\n    </label>\n  );\n};\n","import { Component, JSX, createMemo, splitProps } from \"solid-js\";\n\nimport \"./base.css\";\nimport \"./message.css\";\n\nexport type MessageProps = {\n  type: \"success\" | \"info\" | \"warning\" | \"error\";\n  inline?: boolean;\n} & JSX.HTMLAttributes<HTMLDivElement>;\n\nexport const Message: Component<MessageProps> = (props) => {\n  const [messageProps, divProps] = splitProps(props, [\n    \"type\",\n    \"class\",\n    \"inline\",\n  ]);\n  const className = createMemo(() =>\n    [\n      ...new Set(\n        [\n          \"sb-message\",\n          messageProps.type,\n          messageProps.class,\n          messageProps.inline && \"inline\",\n        ].filter(Boolean)\n      ),\n    ].join(\" \")\n  );\n\n  return (\n    <p\n      class={className()}\n      role={messageProps.type === \"error\" ? \"alert\" : undefined}\n      {...divProps}\n    />\n  );\n};\n","import { Component, JSX } from \"solid-js\";\n\nimport \"./base.css\";\nimport \"./meter.css\";\n\nexport type MeterProps = JSX.HTMLAttributes<HTMLDivElement> & {\n  min?: number | string;\n  max?: number | string;\n  value?: number | string;\n};\n\nexport const Meter: Component<MeterProps> = (props) => (\n  <div\n    {...props}\n    role={\n      \"meter\" as MeterProps[\"role\"] /* https://github.com/ryansolid/dom-expressions/pull/79 */\n    }\n    class={props.class ? `sb-meter ${props.class}` : \"sb-meter\"}\n    aria-valuenow={props.value ?? props[\"aria-valuenow\"]}\n    aria-valuemin={props.min ?? props[\"aria-valuemin\"]}\n    aria-valuemax={props.max ?? props[\"aria-valuemax\"]}\n  >\n    <svg\n      aria-hidden=\"true\"\n      viewBox={`0 0 ${props.max ?? props[\"aria-valuemax\"]} 10`}\n    >\n      <rect\n        x=\"0\"\n        y=\"0\"\n        height=\"10\"\n        width={props.value ?? props[\"aria-valuenow\"] ?? 0}\n      />\n    </svg>\n    {props.children}\n  </div>\n);\n","import {\n  Accessor,\n  JSX,\n  Component,\n  onMount,\n  onCleanup,\n  createSignal,\n  createMemo,\n  createContext,\n  useContext,\n  splitProps,\n  createEffect,\n  Show,\n} from \"solid-js\";\nimport { Button, ButtonProps } from \"./button\";\nimport { getElements } from \"./tools\";\n\nimport \"./base.css\";\nimport \"./menu.css\";\nimport { isServer } from \"solid-js/web\";\n\nexport type MenuProps = JSX.HTMLAttributes<HTMLDivElement> & {\n  open?: boolean;\n  ontoggle?: (open?: boolean) => void;\n  align?: \"left\" | \"center\" | \"right\";\n};\n\nconst getFirstMenuButton = (open: Accessor<boolean>) => {\n  let counter = 0;\n  return (node: HTMLElement) => {\n    const isButton =\n      node.nodeName === \"BUTTON\" || node.getAttribute(\"role\") === \"button\";\n    const isMenuButton =\n      isButton && node.getAttribute(\"aria-haspopup\") === \"menu\";\n    const isFirstMenuButton = isMenuButton && counter++ === 0;\n    if (isFirstMenuButton) {\n      if (open() && node.getAttribute(\"aria-expanded\") !== \"true\") {\n        node.setAttribute(\"aria-expanded\", \"true\");\n      } else if (!open() && node.getAttribute(\"aria-expanded\") === \"true\") {\n        node.setAttribute(\"aria-expanded\", \"false\");\n      }\n    }\n    return isFirstMenuButton;\n  };\n};\n\nconst getMenuItems = () => {\n  let counter = 0;\n  return (node: HTMLElement) => {\n    const isButton =\n      node.nodeName === \"BUTTON\" || node.getAttribute(\"role\") === \"button\";\n    const isMenuButton =\n      isButton && node.getAttribute(\"aria-haspopup\") === \"menu\";\n    const isFirstMenuButton = isMenuButton && counter++ === 0;\n    return !isFirstMenuButton;\n  };\n};\n\nexport const Menu: Component<MenuProps> = (props) => {\n  const [open, setOpen] = createSignal(!!props.open);\n  const [local, divProps] = splitProps(props, [\n    \"open\",\n    \"children\",\n    \"ontoggle\",\n    \"align\",\n  ]);\n  const opener = createMemo<HTMLElement | undefined>(\n    () => (getElements(props.children, getFirstMenuButton(open), [open()]) ?? [])[0]\n  );\n  const menuItems = createMemo(() =>\n    getElements(props.children, getMenuItems(), [open()]) ?? []\n  );\n\n  let menuRef!: HTMLDivElement;\n\n  createEffect(() => {\n    const visible = open();\n    local.ontoggle?.(visible);\n    if (visible) {\n      menuItems()[0].focus();\n    }\n  });\n\n  const clickHandler = (ev: MouseEvent) => {\n    const target = ev.target as HTMLElement;\n    const role = target?.getAttribute(\"role\");\n    const button = opener();\n    if (!ev.defaultPrevented && button) {\n      if (ev.target === button) {\n        setOpen(\n          (open) => !open && button.getAttribute(\"aria-disabled\") !== \"true\"\n        );\n      } else if (\n        !button.contains(target) &&\n        role !== \"menuitemradio\" &&\n        role !== \"menuitemcheckbox\"\n      ) {\n        setOpen(false);\n      }\n    }\n  };\n\n  onMount(() => !isServer && document.addEventListener(\"click\", clickHandler, { capture: false }));\n  onCleanup(() => !isServer && document.removeEventListener(\"click\", clickHandler));\n\n  let focusItem: HTMLElement | undefined;\n  const overHandler = (ev: MouseEvent) => {\n    const target = ev.target as HTMLElement;\n    if (\n      [\"menuitem\", \"menuitemradio\", \"menuitemcheckbox\"].includes(\n        target?.getAttribute(\"role\") ?? ''\n      ) &&\n      target?.tabIndex !== -1 &&\n      target?.getAttribute(\"aria-disabled\") !== \"true\"\n    ) {\n      focusItem = target;\n      focusItem?.focus();\n    }\n  };\n\n  const moveFocus = (step: 1 | -1) => {\n    const menuItems = menuRef.querySelectorAll<HTMLElement>(\n      '[role^=menuitem]:not([aria-disabled], [tabIndex=\"-1\"])'\n    );\n    const currentPos = focusItem\n      ? Array.prototype.findIndex.call(menuItems, (item) => item === focusItem)\n      : -1;\n    const newPos =\n      currentPos === -1\n        ? 1\n        : (menuItems.length + step + currentPos) % menuItems.length;\n    focusItem = menuItems[newPos];\n    focusItem.focus();\n  };\n\n  const keyHandler = (ev: KeyboardEvent) => {\n    const target = ev.target as HTMLElement;\n    if (ev.key === \"Escape\" && open()) {\n      setOpen(false);\n      opener()?.focus();\n    }\n    const role = target?.getAttribute(\"role\");\n    if (\n      ev.key === \" \" &&\n      [\"menuitem\", \"menuitemradio\", \"menuitemcheckbox\"].includes(role ?? '')\n    ) {\n      target.click();\n      if (role === \"menuitemradio\") {\n        const radios = target.parentNode?.querySelectorAll<HTMLElement>(\n          '[role=\"menuitemradio\"]:not([aria-disabled], [tabIndex=\"-1\"]'\n        ) ?? [];\n        const currentPos = Array.prototype.indexOf.call(radios, target);\n        const newPos = (radios.length + 1 + currentPos) % radios.length;\n        focusItem = radios[newPos];\n        focusItem?.focus();\n      }\n      ev.preventDefault();\n    }\n    if (ev.key === \"ArrowDown\") {\n      moveFocus(1);\n      ev.preventDefault();\n    } else if (ev.key === \"ArrowUp\") {\n      moveFocus(-1);\n      ev.preventDefault();\n    }\n  };\n\n  return (\n    <div\n      ref={menuRef}\n      {...divProps}\n      class={`sb-menu${divProps.class ? \" \" + divProps.class : \"\"}${\n        local.align ? \" \" + local.align : \"\"\n      }`}\n      onkeydown={keyHandler}\n    >\n      {opener()}\n      <div tabIndex=\"-1\" role=\"menu\" hidden={!open()} onmouseover={overHandler}>\n        {menuItems()}\n      </div>\n    </div>\n  );\n};\n\nexport type MenuButtonProps = ButtonProps;\n\nexport const MenuButton: Component<MenuButtonProps> = (props) => (\n  <Button {...props} aria-haspopup=\"menu\" />\n);\n\nexport type MenuItemProps = JSX.HTMLAttributes<HTMLDivElement>;\n\nexport const MenuItem: Component<MenuItemProps> = (props) => (\n  <div tabIndex=\"0\" {...props} role=\"menuitem\" />\n);\n\nexport type MenuItemGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n  title?: JSX.Element;\n};\n\nexport const MenuItemGroup: Component<MenuItemGroupProps> = (props) => {\n  const [local, divProps] = splitProps(props, [\"title\", \"children\"]);\n  return (\n    <div {...divProps} role=\"group\">\n      <Show when={typeof props.title === \"string\"} fallback={local.title}>\n        <p>{local.title}</p>\n      </Show>\n      {local.children}\n    </div>\n  );\n};\n\nexport type MenuOptionsContextValue = [\n  value: Accessor<string[]>,\n  change: (value: string) => void,\n  type?: \"checkbox\" | \"radio\"\n];\n\nexport const MenuOptionsContext = createContext<MenuOptionsContextValue>([\n  () => [],\n  (value) => console.warn(\"context default!\", value),\n]);\n\nexport type MenuOptionProps = Omit<\n  JSX.HTMLAttributes<HTMLDivElement>,\n  \"onchange\"\n> & {\n  onchange?: (checked?: boolean) => void;\n  value: string;\n};\n\nexport const MenuOption: Component<MenuOptionProps> = (props) => {\n  const [local, divProps] = splitProps(props, [\"value\", \"onchange\"]);\n  const [value, change, type] = useContext(MenuOptionsContext);\n  const selected = createMemo(() => value().includes(props.value));\n  const clickHandler = createMemo(\n    () => () => props[\"aria-disabled\"] !== \"true\" && change(props.value)\n  );\n  const keyHandler = createMemo(() => (ev: KeyboardEvent) => {\n    if (ev.key === \" \") {\n      ev.preventDefault();\n      props[\"aria-disabled\"] !== \"true\" && change(props.value);\n    }\n  });\n\n  createEffect(() => {\n    props.onchange?.(selected());\n  });\n\n  return (\n    <div\n      aria-selected={selected()}\n      tabIndex={\n        (type === \"checkbox\" || !selected()) &&\n        props[\"aria-disabled\"] !== \"true\"\n          ? \"0\"\n          : \"-1\"\n      }\n      {...divProps}\n      role={type !== \"checkbox\" ? \"menuitemradio\" : \"menuitemcheckbox\"}\n      onclick={clickHandler()}\n      onkeypress={keyHandler()}\n    />\n  );\n};\n\nexport type MenuOptionGroupProps = Omit<\n  JSX.HTMLAttributes<HTMLDivElement>,\n  \"onchange\"\n> &\n  (\n    | {\n        type: \"checkbox\";\n        onchange?: (value: string[]) => void;\n        title?: JSX.Element;\n        value?: string[];\n      }\n    | {\n        type?: \"radio\" | undefined;\n        onchange?: (value: string) => void;\n        title?: JSX.Element;\n        value?: [string] | string;\n      }\n  );\n\nexport const MenuOptionGroup = (props: MenuOptionGroupProps): JSX.Element => {\n  const [local, divProps] = splitProps(props, [\n    \"title\",\n    \"value\",\n    \"onchange\",\n    \"children\",\n    \"type\",\n  ]);\n  const [value, setValue] = createSignal(\n    Array.isArray(local.value) ? local.value : local.value ? [local.value] : [],\n    {\n      equals: (prev, next) =>\n        prev.length === next.length && prev[0] === next[0],\n    }\n  );\n  const change = createMemo<(value: string) => void>(() =>\n    props.type === \"checkbox\"\n      ? (value) =>\n          setValue((prev) =>\n            prev.includes(value)\n              ? prev.filter((item) => item !== value)\n              : [...prev, value]\n          )\n      : (value) => setValue((prev) => (prev[0] === value ? prev : [value]))\n  );\n\n  createEffect((lastVal?: string | string[] | [string]) => {\n    if (lastVal !== local.value) {\n      setValue(\n        Array.isArray(local.value)\n          ? local.value\n          : local.value\n          ? [local.value]\n          : []\n      );\n    }\n    return local.value;\n  }, local.value);\n\n  createEffect((lastVal?: string[]) => {\n    const newVal = value();\n    if (\n      props.type === \"checkbox\"\n        ? newVal.length === lastVal?.length\n        : newVal[0] === lastVal?.[0]\n    ) {\n      return lastVal;\n    }\n    props.type === \"checkbox\"\n      ? props.onchange?.(newVal)\n      : props.onchange?.(newVal[0]);\n    return newVal;\n  }, value());\n\n  return (\n    <div tabIndex=\"-1\" role=\"group\" {...divProps}>\n      <Show when={typeof props.title === \"string\"} fallback={local.title}>\n        <p>{local.title}</p>\n      </Show>\n      <MenuOptionsContext.Provider value={[value, change(), local.type]}>\n        {local.children}\n      </MenuOptionsContext.Provider>\n    </div>\n  );\n};\n","import {\n  Accessor,\n  Component,\n  JSX,\n  splitProps,\n  createEffect,\n  createSignal,\n  createMemo,\n  mergeProps,\n  Switch,\n  Match,\n} from \"solid-js\";\nimport { Portal } from \"solid-js/web\";\n\nimport \"./base.css\";\nimport \"./modal.css\";\nimport { getElements, WrappedElement } from \"./tools\";\n\nexport type WrappedModalContentProps = {\n  open: Accessor<boolean>;\n  /**\n   * toggle\n   *\n   * if called with boolean argument, it will set the open state\n   * according to the argument, otherwise toggle it\n   */\n  toggle: (open?: boolean | unknown) => void;\n};\n\nexport type ModalProps = Omit<\n  JSX.HTMLAttributes<HTMLDivElement>,\n  \"children\"\n> & {\n  closeOnClickOutside?: boolean;\n  closeOnEsc?: boolean;\n  open?: boolean;\n  noPortal?: boolean;\n  children: WrappedElement<WrappedModalContentProps> | JSX.Element;\n};\n\nlet modalCount = 0;\n\nexport const Modal = (props: ModalProps): JSX.Element => {\n  const [local, containerProps] = splitProps(props, [\n    \"open\",\n    \"noPortal\",\n    \"children\",\n  ]);\n  const [open, setOpen] = createSignal(local.open);\n  const toggle = (open?: boolean) =>\n    setOpen(typeof open === \"boolean\" ? open : (o) => !o);\n  const modalContent = createMemo(() =>\n    getElements(\n      local.children,\n      (node) => node.className.indexOf(\"sb-modal-content\") !== -1,\n      [{ open, toggle }]\n    ) ?? []\n  );\n  const otherChildren = createMemo(() =>\n    getElements(\n      local.children,\n      (node) => node.className.indexOf(\"sb-modal-content\") === -1,\n      [{ open, toggle }]\n    )\n  );\n\n  let modalRef!: HTMLDivElement;\n  createEffect(() => open() && (modalRef?.focus(), modalRef?.scrollIntoView()));\n\n  modalCount++;\n\n  createEffect(() => {\n    if (!modalRef) {\n      return;\n    }\n    const header = modalRef.querySelector(\".sb-modal-header\");\n    if (header) {\n      modalRef.setAttribute(\n        \"aria-labelledby\",\n        header.id || (() => (header.id = `sb-modal-header-${modalCount}`))()\n      );\n    }\n    const body = modalRef.querySelector(\".sb-modal-body\");\n    if (body) {\n      modalRef.setAttribute(\n        \"aria-describedby\",\n        body.id || (() => (body.id = `sb-modal-body-${modalCount}`))()\n      );\n    }\n  });\n\n  const divProps = mergeProps(containerProps, {\n    role: \"dialog\" as JSX.HTMLAttributes<HTMLDivElement>['role'],\n    tabIndex: -1,\n    class: props.class ? `sb-modal ${props.class}` : \"sb-modal\",\n    children: modalContent(),\n    onClick: createMemo(() =>\n      props.closeOnClickOutside\n        ? (ev: MouseEvent) => {\n            const target = ev.target as HTMLElement;\n            if (!modalContent().some((content) => content?.contains(target))) {\n              toggle(false);\n            }\n          }\n        : undefined\n    )(),\n    onkeyup: createMemo(() =>\n      props.closeOnEsc !== false\n        ? (ev: KeyboardEvent) => {\n            console.log(ev);\n            if (ev.key === \"Escape\" && !ev.defaultPrevented) {\n              setOpen(false);\n            }\n          }\n        : undefined\n    )(),\n  });\n\n  return (\n    <Switch>\n      <Match when={!open()}>{otherChildren()}</Match>\n      <Match when={open() && local.noPortal}>\n        <>\n          {otherChildren()}\n          <div ref={modalRef} {...divProps} />\n        </>\n      </Match>\n      <Match when={open() && !local.noPortal}>\n        <>\n          {otherChildren()}\n          <Portal mount={document.body}>\n            <div ref={modalRef} {...divProps} />\n          </Portal>\n        </>\n      </Match>\n    </Switch>\n  );\n};\n\nexport type ModalContentProps = JSX.HTMLAttributes<HTMLDivElement>;\n\nexport const ModalContent: Component<ModalContentProps> = (props) => (\n  <div\n    {...props}\n    class={props.class ? `sb-modal-content ${props.class}` : \"sb-modal-content\"}\n  />\n);\n\nexport type ModalHeaderProps = JSX.HTMLAttributes<HTMLElement>;\n\nexport const ModalHeader: Component<ModalHeaderProps> = (props) => (\n  <header\n    {...props}\n    class={props.class ? `sb-modal-header ${props.class}` : \"sb-modal-header\"}\n  />\n);\n\nexport type ModalBodyProps = JSX.HTMLAttributes<HTMLElement>;\n\nexport const ModalBody: Component<ModalBodyProps> = (props) => (\n  <main\n    {...props}\n    class={props.class ? `sb-modal-body ${props.class}` : \"sb-modal-body\"}\n  />\n);\n\nexport type ModalFooterProps = JSX.HTMLAttributes<HTMLElement>;\n\nexport const ModalFooter: Component<ModalFooterProps> = (props) => (\n  <footer\n    {...props}\n    class={props.class ? `sb-modal-footer ${props.class}` : \"sb-modal-footer\"}\n  />\n);\n","import { Component, JSX } from \"solid-js\";\n\nimport \"./base.css\";\nimport \"./progress.css\";\n\nexport type ProgressProps = JSX.ProgressHTMLAttributes<HTMLProgressElement>;\n\nexport const Progress: Component<ProgressProps> = (props) => (\n  <progress\n    aria-busy={props?.value !== props?.max}\n    aria-live=\"polite\"\n    {...props}\n    class={props.class ? `sb-progress ${props.class}` : \"sb-progress\"}\n  />\n);\n","import {\n  Accessor,\n  Component,\n  createSelector,\n  createSignal,\n  JSX,\n  on,\n  Setter,\n  splitProps,  \n  Show,\n  createContext,\n  createEffect,\n  useContext\n} from \"solid-js\";\nimport { runEvent } from \"./tools\";\n\nimport \"./base.css\";\nimport \"./radio.css\";\n\nexport const radioContext = createContext<[Accessor<string>, Setter<string>, (value: string) => boolean] | []>([]);\n\nexport type RadioProps = JSX.HTMLAttributes<HTMLInputElement> & {\n    /**\n     * align the checkbox inside its label\n     * can be 'left' or 'right; default is 'left'\n     */\n    align?: \"left\" | \"right\";\n    autofocus?: boolean;\n    checked?: boolean;\n    setChecked?: (checked?: boolean) => void;\n    disabled?: boolean;\n    name?: string;\n    onInvalid?: JSX.EventHandler<HTMLInputElement, Event>;\n    required?: boolean;\n    value?: string;\n  };\n\nexport const Radio: Component<RadioProps> = (props) => {\n  const [inputProps, content, labelProps] = splitProps(\n    props,\n    [\n      \"accessKey\",\n      \"align\",\n      \"aria-disabled\",\n      \"aria-invalid\",\n      \"autofocus\",\n      \"checked\",\n      \"class\",\n      \"disabled\",\n      \"id\",\n      \"name\",\n      \"onchange\",\n      \"onclick\",\n      \"onkeydown\",\n      \"onkeypress\",\n      \"onkeyup\",\n      \"oninvalid\",\n      \"required\",\n      \"value\",\n    ],\n    [\"align\", \"checked\", \"onChange\", \"setChecked\", \"children\"]\n  );\n\n  const [_value, setValue, isValueActive] = useContext(radioContext);\n  \n  return (\n    <label\n      class={`${content.align || \"left\"} sb-radio${\n        inputProps.disabled ? \" disabled\" : \"\"\n      }`}\n      {...labelProps as JSX.HTMLAttributes<HTMLLabelElement>}\n    >\n      <Show when={content.align === \"right\"}>{content.children}</Show>\n      <input\n        type=\"radio\"\n        ref={props.ref}\n        {...inputProps}\n        checked={isValueActive ? isValueActive(inputProps.value || \"\") : content.checked}\n        onChange={(ev: Event & { currentTarget: HTMLInputElement, target: Element }): void => {\n          runEvent(ev, content.onChange);\n          content.setChecked?.(ev.currentTarget.checked);\n          if (ev.currentTarget.checked) {\n            setValue?.(props.value || \"\");\n          }\n        }}\n      />\n      <Show when={content.align !== \"right\"}>{content.children}</Show>\n    </label>\n  );\n};\n\nexport type RadioGroupProps = JSX.HTMLAttributes<HTMLDivElement> & {\n  setValue?: (value: string) => void;\n  value?: Accessor<string>;\n};\n\nexport const RadioGroup: Component<RadioGroupProps> = (props) => {  \n  const [local, divProps] = splitProps(props, [\n    \"setValue\",\n    \"value\",\n    \"children\",\n  ]);\n  const [value, setValue] = createSignal(typeof props.value === 'function' ? props.value() : \"\");\n\n  createEffect(() => setValue(typeof props.value === 'function' ? props.value() : \"\"));\n  createEffect(on([value], ([value]) => local.setValue?.(value), { defer: true }));\n  \n  return (\n    <radioContext.Provider value={[value, setValue, createSelector(value)]}>\n      <div\n        role=\"radiogroup\"\n        {...divProps}\n        class={\n          divProps.class ? `sb-radiogroup ${divProps.class}` : \"sb-radiogroup\"\n        }\n      >\n        {local.children}\n      </div>\n    </radioContext.Provider>\n  );\n};\n","import { Component, JSX, splitProps, Accessor } from \"solid-js\";\n\nimport { runEvent } from \"./tools\";\n\nimport \"./base.css\";\nimport \"./select.css\";\n\nexport type SelectProps = JSX.SelectHTMLAttributes<HTMLSelectElement> & {\n  label: JSX.Element;\n  setValue?: (value: string) => void;\n};\n\nexport const Select: Component<SelectProps> = (props) => {\n  const [local, fieldProps] = splitProps(props, [\n    \"aria-orientation\",\n    \"label\",\n    \"onChange\",\n    \"setValue\",\n    \"value\"\n  ]);\n  return (\n    <label\n      classList={{ \"sb-select\": true, disabled: props.disabled }}\n      aria-orientation={local[\"aria-orientation\"]}\n    >\n      <span class=\"sb-select-label\">{local.label}</span>\n      <select\n        {...fieldProps}\n        onChange={(ev): void => {\n          runEvent(ev, local.onChange);\n          local.setValue?.(ev.currentTarget.value);\n        }}\n      />\n    </label>\n  );\n};\n","import { Component, JSX } from \"solid-js\";\n\nimport \"./base.css\";\nimport \"./spinner.css\";\n\nexport type SpinnerProps = JSX.HTMLAttributes<HTMLProgressElement>;\n\nexport const Spinner: Component<SpinnerProps> = (props) => (\n  <progress\n    class={props.class ? `sb-spinner ${props.class}` : \"sb-spinner\"}\n    aria-busy=\"true\"\n    aria-live=\"polite\"\n    {...props}\n  />\n);\n","import {\n  Component,\n  JSX,\n  createContext,\n  createEffect,\n  createSignal,\n  createSelector,\n  createUniqueId,\n  mergeProps,\n  on,\n  useContext\n} from \"solid-js\";\n\nimport \"./base.css\";\nimport \"./tabs.css\";\n\nexport type TabsProps = Omit<JSX.HTMLAttributes<HTMLElement>, 'onchange'> & {\n  index?: number;\n  setIndex?: (index?: number) => void;\n};\n\nexport const tabsContext = createContext<[\n  index: () => number,\n  setIndex: (index: number) => void,\n  isActive: (index: number) => boolean,\n  getIndex: (isContainer: boolean) => number,\n  id: string\n] | []>([]);\n\nexport const Tabs: Component<TabsProps> = (props) => {\n  const [index, setIndex] = createSignal(props.index || 0);\n  const isActive = createSelector(index);\n  const indices = { tabs: -1, container: -1 };\n  const id = props.id || createUniqueId();\n  createEffect(on(index, (index) => props.setIndex?.(index), { defer: true }));\n  return (\n    <tabsContext.Provider value={[\n      index,\n      (index: number) => index > indices.tabs\n        ? setIndex(indices.tabs)\n        : index >= 0\n        ? setIndex(index)\n        : setIndex(0),\n      isActive,\n      (isContainer) => isContainer ? ++indices.container : ++indices.tabs,\n      id\n    ]}>\n      <div classList={mergeProps(props.classList ?? {}, { \"sb-tabs\": true })}>\n        {props.children}\n      </div>\n    </tabsContext.Provider>\n  );\n};\n\nexport type TabListProps = JSX.HTMLAttributes<HTMLDivElement>;\n\nexport const tabListContext = createContext('');\n\nexport const TabList: Component<TabListProps> = (props) => (\n  <div\n    role=\"tablist\"\n    {...props}\n    aria-orientation={props[\"aria-orientation\"]}\n  />\n);\n\nexport type TabProps = JSX.HTMLAttributes<HTMLButtonElement>;\n\nexport const Tab: Component<TabProps> = (props) => {\n  const [_index, setIndex, isActive, getIndex, id] = useContext(tabsContext);\n  const [ref, setRef] = createSignal<HTMLButtonElement>();\n  const index = getIndex ? getIndex(false) : -1;\n  const active = () => isActive && isActive(index);\n  createEffect(on(\n    () => isActive && isActive(index),\n    (active) => active && ref()?.focus(),\n    { defer: true }\n  ));\n  return <button\n    ref={setRef}\n    role=\"tab\"\n    type=\"button\"\n    aria-selected={active()}\n    tabIndex={!active() ? -1 : undefined}\n    aria-controls={`${id}-container${index}`}\n    id={`${id}-tab${index}`}\n    onClick={setIndex && [(index) => setIndex(index), index]}\n    onKeyDown={setIndex && [(index, ev) => ev.key === \"Home\"\n      ? (ev.preventDefault(), ev.stopPropagation(), setIndex(0))\n      : ev.key === \"End\"\n      ? (ev.preventDefault(), ev.stopPropagation(), setIndex(Infinity))\n      : ev.key === \"ArrowLeft\"\n      ? setIndex(index - 1)\n      : ev.key === \"ArrowRight\"\n      ? setIndex(index + 1)\n      : 0, index]}\n    {...(active() ? {} : { tabIndex: -1 })}\n    {...props}\n  />;\n};\n\nexport type TabContainerProps = JSX.HTMLAttributes<HTMLDivElement>;\n\nexport const TabContainer: Component<TabContainerProps> = (props) => {\n  const [_index, _setIndex, isActive, getIndex, id] = useContext(tabsContext);\n  const index = getIndex ? getIndex(true) : -1;\n  return <div\n    role=\"tabpanel\"\n    id={`${id}-container${index}`}\n    aria-labelledby={`${id}-tab${index}`}\n    tabIndex={isActive && isActive(index) ? 0 : undefined}\n    hidden={!isActive || isActive(index) ? undefined : true }\n    {...props}\n  />;\n};\n","import { Component, JSX, mergeProps, splitProps, Show } from \"solid-js\";\n\nimport { getRandom } from \"./tools\";\n\nimport \"./base.css\";\nimport \"./tag.css\";\n\nexport type TagProps = (JSX.HTMLAttributes<HTMLSpanElement> &\n  Partial<JSX.AnchorHTMLAttributes<HTMLAnchorElement>>) & { plain?: boolean };\n\nexport const Tag: Component<TagProps> = (props) => {\n  const [local, tagProps] = splitProps(props, [\"plain\"]);\n  const mergedProps = mergeProps(\n    {\n      \"data-random\": local.plain ? undefined : getRandom(),\n      rel: props.target ? \"tag noopener\" : \"tag\",\n    },\n    tagProps,\n    { class: props.class ? `sb-tag ${props.class}` : \"sb-tag\" }\n  );\n  return (\n    <Show\n      when={typeof mergedProps.href === \"string\"}\n      fallback={<span {...mergedProps} />}\n    >\n      <a {...mergedProps} />\n    </Show>\n  );\n};\n\nexport type TagGroupProps = JSX.HTMLAttributes<HTMLDivElement>;\n\nexport const TagGroup: Component<TagGroupProps> = (props) => {\n  return (\n    <div\n      {...props}\n      class={props.class ? `sb-tag-group ${props.class}` : \"sb-tag-group\"}\n    />\n  );\n};\n","import { Component, JSX, splitProps, mergeProps } from \"solid-js\";\nimport { Show } from \"solid-js/web\";\nimport { runEvent } from \"./tools\";\n\nimport \"./base.css\";\nimport \"./textfield.css\";\n\nexport type TextFieldType =\n  | \"text\"\n  | \"color\"\n  | \"date\"\n  | \"datetime-local\"\n  | \"email\"\n  | \"file\"\n  | \"month\"\n  | \"number\"\n  | \"password\"\n  | \"range\"\n  | \"search\"\n  | \"tel\"\n  | \"time\"\n  | \"url\"\n  | \"week\";\n\nexport type SingleLineTextFieldProps = JSX.InputHTMLAttributes<HTMLInputElement> & {\n  \"aria-orientation\"?: \"horizontal\" | \"vertical\";\n  multiline?: false;\n  label: JSX.Element;\n  type?: TextFieldType;\n  setValue?: (value: string) => void;\n};\n\nexport type MultiLineTextFieldProps = JSX.TextareaHTMLAttributes<HTMLTextAreaElement> & {\n  \"aria-orientation\"?: \"horizontal\" | \"vertical\";\n  multiline: true;\n  label: JSX.Element;\n  setValue?: (value: string) => void;\n};\n\nexport type TextFieldProps = SingleLineTextFieldProps | MultiLineTextFieldProps;\n\nexport const TextField: Component<TextFieldProps> = (props) => {\n  const [local, fieldProps] = splitProps(props, [\n    \"aria-orientation\",\n    \"classList\",\n    \"label\",\n    \"multiline\",\n    \"onInput\",\n    \"children\",\n    \"setValue\"\n  ]);\n\n  return (\n    <label\n      classList={mergeProps(local.classList ?? {}, { \"sb-textfield\": true })}\n      aria-orientation={props[\"aria-orientation\"]}\n    >\n      <span class=\"sb-textfield-label\">{local.label}</span>\n      <Show when={local.multiline} fallback={\n        <input\n          {...fieldProps as JSX.HTMLAttributes<HTMLInputElement>}\n          onInput={(ev) => {\n            runEvent(ev, local.onInput);\n            local.setValue?.(ev.currentTarget.value);\n          }}\n        />\n      }>\n        <textarea\n          {...fieldProps as JSX.HTMLAttributes<HTMLTextAreaElement>}\n          onInput={(ev) => {\n            runEvent(ev, local.onInput);\n            local.setValue?.(ev.currentTarget.value); \n          }}\n        />\n      </Show>\n      {local.children}\n    </label>\n  );\n};\n","import {\n  createEffect,\n  createSignal,\n  JSX,\n  onMount,\n  Show,\n  Setter,\n  splitProps,\n  createMemo,\n} from \"solid-js\";\nimport { isServer, Portal } from \"solid-js/web\";\nimport { getElements, WrappedElement } from \"./tools\";\n\nimport \"./base.css\";\nimport \"./toast.css\";\n\nconst toastPositions = [\n  \"top\",\n  \"top-right\",\n  \"top-left\",\n  \"bottom\",\n  \"bottom-right\",\n  \"bottom-left\",\n] as const;\n\nexport type ToastPosition = typeof toastPositions[number];\n\n// load previously created containers\nconst toastMountPoints = toastPositions.reduce((nodes, pos) => {\n  nodes[pos] = isServer ? null : document.getElementById(`sb-toast-${pos}`);\n  return nodes;\n}, {} as Partial<Record<ToastPosition, HTMLElement | null>>);\n\nexport type WrappedToastContentProps = {\n  update: Setter<JSX.Element | WrappedElement<WrappedToastContentProps>>;\n  hide: () => void;\n};\n\nexport type ToastProps = Omit<\n  JSX.HTMLAttributes<HTMLDivElement>,\n  \"children\"\n> & {\n  children: JSX.Element | WrappedElement<WrappedToastContentProps>;\n  /**\n   * the number of milliseconds until the toast should be hidden again;\n   * 0 means never, undefined 5 seconds\n   */\n  timeout?: number;\n  /** indicates where the toast should be rendered; default position will be top-right */\n  position?: ToastPosition;\n  mount?: HTMLElement;\n  onhide?: () => void;\n};\n\nconst div = document.createElement(\"div\");\n\nconst addMountPoint = (position: ToastPosition = \"top-right\") => {\n  const mountPoint = div.cloneNode() as HTMLDivElement;\n  mountPoint.id = `sb-toast-${position}`;\n  toastMountPoints[position] = mountPoint;\n  document.body.appendChild(mountPoint);\n  return mountPoint;\n};\n\nexport const Toast = (props: ToastProps): JSX.Element => {\n  const [local, divProps] = splitProps(props, [\n    \"timeout\",\n    \"position\",\n    \"children\",\n    \"mount\",\n    \"onhide\",\n  ]);\n  const mountPoint = createMemo(\n    () =>\n      local.mount ||\n      toastMountPoints[local.position || \"top-right\"] ||\n      addMountPoint(local.position)\n  );\n\n  const [visible, setVisible] = createSignal(true);\n  const hide = () => setVisible(false);\n  const [newChildren, update] = createSignal<JSX.Element>();\n  const [children, setChildren] = createSignal(\n    getElements(local.children, () => true, [{ update, hide }])\n  );\n\n  onMount(\n    () =>\n      props.timeout !== 0 &&\n      setTimeout(() => setVisible(false), props.timeout ?? 5000)\n  );\n\n  createEffect(() => {\n    newChildren() &&\n      setChildren(getElements(newChildren(), () => true, [{ update, hide }]));\n  });\n\n  createEffect(() => !visible() && props.onhide?.());\n\n  createEffect(() => {\n    const container = mountPoint();\n    if (container === props.mount) {\n      return;\n    }\n    if (!visible() && container?.childElementCount === 0) {\n      document.body.removeChild(container);\n    } else if (visible() && container && !container?.parentNode) {\n      document.body.appendChild(container);\n    }\n  });\n\n  return (\n    <Show when={visible()}>\n      <Portal mount={mountPoint()}>\n        <div\n          {...divProps}\n          class={divProps.class ? `sb-toast ${divProps.class}` : \"sb-toast\"}\n        >\n          {children()}\n        </div>\n      </Portal>\n    </Show>\n  );\n};\n","import {\n  Accessor,\n  Component,\n  createEffect,\n  createMemo,\n  createSignal,\n  splitProps,\n} from \"solid-js\";\nimport type { JSX } from \"solid-js\";\nimport \"./base.css\";\nimport \"./tooltip.css\";\n\nexport type TooltipTrigger =\n  | boolean\n  | \"focus\"\n  | \"hover\"\n  | Accessor<boolean>\n  | (\"focus\" | \"hover\" | Accessor<boolean>)[];\n\nexport type TooltipPosition = \"nw\" | \"n\" | \"ne\" | \"e\" | \"se\" | \"s\" | \"sw\" | \"w\";\n\nexport type TooltipProps = JSX.HTMLAttributes<HTMLSpanElement> & {\n  arrow?: boolean;\n  nowrap?: boolean;\n  position?: TooltipPosition;\n  content: JSX.Element;\n  trigger?: TooltipTrigger;\n};\n\ndeclare module \"solid-js\" {\n  namespace JSX {\n    interface CustomCaptureEvents {\n      focus: FocusEvent;\n      blur: FocusEvent;\n    }\n  }\n}\n\nconst computeVisible = (\n  trigger: TooltipTrigger | undefined,\n  initial?: boolean\n): boolean =>\n  trigger === undefined\n    ? false\n    : (Array.isArray(trigger) ? trigger : [trigger]).reduce<boolean>(\n        (visible: boolean, trigger: TooltipTrigger) =>\n          typeof trigger === \"boolean\"\n            ? trigger\n            : typeof trigger === \"function\"\n            ? trigger()\n            : visible,\n        initial ?? false\n      );\n\nconst triggerHas = (\n  trigger: TooltipProps[\"trigger\"] | undefined,\n  event: \"focus\" | \"hover\"\n) =>\n  trigger === undefined ||\n  trigger === event ||\n  (Array.isArray(trigger) && trigger.includes(event));\n\nconst wrapText = (children: JSX.Element): JSX.Element => {\n  if (typeof children === \"function\") {\n    return wrapText(children());\n  }\n  if (typeof children === \"string\") {\n    return (<span tabIndex=\"0\">{children}</span>);\n  }\n  if (Array.isArray(children)) {\n    const result = children.map((child) =>\n      typeof child === \"function\" ? child() : child\n    );\n    if (result.every((child) => typeof child === \"string\")) {\n      return (<span tabIndex=\"0\">{result}</span>);\n    }\n    return result;\n  }\n  return children;\n};\n\nexport const Tooltip: Component<TooltipProps> = (props) => {\n  let wrapperRef!: HTMLSpanElement;\n\n  const [local, spanProps] = splitProps(props, [\n    \"children\",\n    \"position\",\n    \"content\",\n    \"trigger\",\n    \"arrow\",\n    \"nowrap\",\n  ]);\n  const useFocus = createMemo(() => triggerHas(local.trigger, \"focus\"));\n  const useHover = createMemo(() => triggerHas(local.trigger, \"hover\"));\n  const children = createMemo(() =>\n    triggerHas(local.trigger, \"focus\")\n      ? wrapText(local.children)\n      : local.children\n  );\n  const [visible, setVisible] = createSignal(false);\n  createEffect(() => setVisible(computeVisible(local.trigger)));\n\n  const [positionStyle, setPositionStyle] = createSignal<JSX.CSSProperties>();\n\n  const focusHandler = createMemo(\n    () => (ev: FocusEvent) => useFocus() && setVisible(ev.type === \"focus\")\n  );\n  const hoverHandler = createMemo(\n    () => (ev: MouseEvent & { toElement?: HTMLElement }) =>\n      useHover() && setVisible(wrapperRef.contains((ev.toElement ?? ev.target) as Node | null))\n  );\n\n  createEffect(() => {\n    if (!visible() || !wrapperRef?.offsetHeight) {\n      return { top: \"10px\" };\n    }\n    setPositionStyle(\n      local.position === \"nw\"\n        ? {\n            top: `${wrapperRef.offsetTop}px`,\n            left: `${wrapperRef.offsetLeft}px`,\n          }\n        : local.position === \"n\"\n        ? {\n            top: `${wrapperRef.offsetTop}px`,\n            left: `${wrapperRef.offsetLeft + (wrapperRef.offsetWidth >> 1)}px`,\n          }\n        : local.position === \"ne\"\n        ? {\n            top: `${wrapperRef.offsetTop}px`,\n            left: `${wrapperRef.offsetLeft + wrapperRef.offsetWidth}px`,\n          }\n        : local.position === \"e\"\n        ? {\n            top: `${wrapperRef.offsetTop + (wrapperRef.offsetHeight >> 1)}px`,\n            left: `${wrapperRef.offsetLeft + wrapperRef.offsetWidth}px`,\n          }\n        : local.position === \"se\"\n        ? {\n            top: `${wrapperRef.offsetTop + wrapperRef.offsetHeight}px`,\n            left: `${wrapperRef.offsetLeft + wrapperRef.offsetWidth}px`,\n          }\n        : local.position === \"sw\"\n        ? {\n            top: `${wrapperRef.offsetTop + wrapperRef.offsetHeight}px`,\n            left: `${wrapperRef.offsetLeft}px`,\n          }\n        : local.position === \"w\"\n        ? {\n            top: `${wrapperRef.offsetTop + (wrapperRef.offsetHeight >> 1)}px`,\n            left: `${wrapperRef.offsetLeft}px`,\n          }\n        : /* s is default */ {\n            top: `${wrapperRef.offsetTop + wrapperRef.offsetHeight}px`,\n            left: `${wrapperRef.offsetLeft + (wrapperRef.offsetWidth >> 1)}px`,\n          }\n    );\n  });\n\n  return (\n    <span\n      ref={wrapperRef}\n      aria-haspopup=\"true\"\n      aria-expanded={visible()}\n      class={`sb-tooltip-wrapper position-${local.position ?? \"s\"}${\n        local.arrow === false ? \"\" : \" arrow\"\n      }${local.nowrap ? \" nowrap\" : \"\"}`}\n      oncapture:focus={focusHandler()}\n      oncapture:blur={focusHandler()}\n      onmouseover={hoverHandler()}\n      onmouseleave={hoverHandler()}\n    >\n      {children()}\n      <span\n        {...spanProps}\n        role=\"tooltip\"\n        hidden={!visible()}\n        style={positionStyle()}\n      >\n        {local.content}\n      </span>\n    </span>\n  );\n};\n"],"names":["booleans","Properties","ChildProperties","Aliases","PropAliases","DelegatedEvents","SVGNamespace","reconcileArrays","parentNode","a","b","bLength","aEnd","bEnd","aStart","bStart","after","map","node","i","index","sequence","t","$$EVENTS","template","html","check","isSVG","delegateEvents","eventNames","document","e","l","name","eventHandler","setAttribute","value","setAttributeNS","namespace","className","addEventListener","handler","delegate","handlerFn","classList","prev","classKeys","prevKeys","len","key","toggleClassKey","classValue","style","nodeStyle","v","s","spread","props","skipChildren","prevProps","createRenderEffect","insertExpression","assign","use","fn","element","arg","untrack","insert","parent","accessor","marker","initial","current","skipRef","prop","assignProp","toPropertyName","_","w","classNames","nameLen","isCE","isProp","isChildProp","h","ns","sharedConfig","elem","data","unwrapArray","multi","cleanChildren","array","currentArray","normalizeIncomingArray","appendNodes","normalized","unwrap","dynamic","item","replacement","inserted","el","isParent","isServer","SVG_NAMESPACE","createElement","tagName","Portal","useShadow","mount","renderPortal","set","createSignal","clean","setClean","cleanup","createRoot","dispose","onCleanup","container","renderRoot","toStyleObject","styleObject","composeStyles","styles","getNearestNode","target","nearest","maxRandom","lastItem","getRandom","nextItem","useMediaQuery","query","matcher","matches","setMatches","changeHandler","ev","parseStorage","useJson","putStorage","createLocalStorageSignal","initialValue","setValue","createEffect","useDarkMode","localStorageKey","mediaQueryPrefersDark","storedPrefersDark","setStoredPrefersDark","darkMode","createMemo","_a","getElements","children","filter","result","child","runEvent","accordionContext","createContext","Accordion","local","detailsProps","splitProps","accordionRef","closeAccordion","options","getIndex","opened","setOpened","useContext","onMount","open","allowMultiple","on","ref","defer","_el$","_tmpl$","currentTarget","setOpen","_$addEventListener","allowToggle","preventDefault","onClick","_$use","_$spread","_$effect","_p$","_v$","mergeProps","_v$2","_$classList","AccordionHeader","_el$2","_tmpl$2","_$p","AccordionGroup","divProps","accordions","_$createComponent","_el$3","_tmpl$3","char","initialsRegexp","RegExp","getInitials","replace","toUpperCase","Avatar","initials","img","_$insert","_$setAttribute","_v$3","_v$4","_el$4","_v$5","_v$7","_v$6","_el$5","fallback","_v$8","_v$9","AvatarBadge","spanProps","composedStyle","borderColor","background","_el$6","_tmpl$4","_v$10","_v$11","_$style","AvatarGroup","_el$7","_tmpl$5","_v$12","_v$13","Array","isArray","length","Bar","rest","class","placement","position","portal","Breadcrumbs","For","Button","buttonProps","variant","Checkbox","inputProps","content","labelProps","Show","align","onChange","setChecked","checked","switch","undefined","_$className","Message","messageProps","Set","type","inline","Boolean","join","Meter","min","max","getFirstMenuButton","counter","isFirstMenuButton","nodeName","getAttribute","getMenuItems","Menu","opener","menuItems","menuRef","visible","ontoggle","focus","clickHandler","role","button","defaultPrevented","contains","capture","removeEventListener","focusItem","overHandler","includes","tabIndex","moveFocus","step","querySelectorAll","currentPos","prototype","findIndex","call","newPos","keyHandler","click","radios","indexOf","_ref$","MenuButton","MenuItem","MenuItemGroup","title","MenuOptionsContext","console","warn","MenuOption","change","selected","onchange","MenuOptionGroup","equals","next","lastVal","newVal","_tmpl$6","_el$8","modalCount","Modal","containerProps","toggle","o","modalContent","otherChildren","modalRef","scrollIntoView","header","querySelector","id","body","closeOnClickOutside","some","onkeyup","closeOnEsc","log","Switch","Match","noPortal","_$memo","_ref$2","ModalContent","ModalHeader","ModalBody","ModalFooter","Progress","radioContext","Radio","_value","isValueActive","disabled","RadioGroup","createSelector","Select","fieldProps","label","Spinner","tabsContext","Tabs","setIndex","isActive","indices","tabs","createUniqueId","isContainer","tabListContext","TabList","Tab","_index","setRef","active","stopPropagation","Infinity","TabContainer","_setIndex","Tag","tagProps","mergedProps","plain","rel","href","TagGroup","TextField","multiline","onInput","toastPositions","toastMountPoints","reduce","nodes","pos","getElementById","div","addMountPoint","mountPoint","cloneNode","appendChild","Toast","setVisible","hide","newChildren","update","setChildren","timeout","setTimeout","onhide","childElementCount","removeChild","computeVisible","trigger","triggerHas","event","wrapText","every","Tooltip","wrapperRef","useFocus","useHover","positionStyle","setPositionStyle","focusHandler","hoverHandler","toElement","offsetHeight","top","offsetTop","left","offsetLeft","offsetWidth","arrow","nowrap"],"mappings":"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"}