@fluix-ui/vanilla 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,6 +15,14 @@ import { createToaster, fluix } from "@fluix-ui/vanilla";
15
15
  import "@fluix-ui/css";
16
16
  ```
17
17
 
18
+ ### Custom themes
19
+
20
+ Pass any theme name — themes are pure CSS. See `@fluix-ui/css` for details.
21
+
22
+ ```ts
23
+ fluix.success({ title: "Done", theme: "midnight" });
24
+ ```
25
+
18
26
  ## Docs
19
27
 
20
28
  - Official docs: https://fluix.ivanlopezdev.es
package/dist/index.cjs CHANGED
@@ -287,7 +287,7 @@ function createInstance(item, machine) {
287
287
  pillEl.setAttribute("height", String(HEIGHT));
288
288
  pillEl.setAttribute("rx", String(roundness));
289
289
  pillEl.setAttribute("ry", String(roundness));
290
- pillEl.setAttribute("fill", item.fill ?? "#FFFFFF");
290
+ pillEl.setAttribute("fill", item.fill ?? "var(--fluix-surface-contrast)");
291
291
  const bodyEl = document.createElementNS(SVG_NS, "rect");
292
292
  bodyEl.setAttribute("data-fluix-body", "");
293
293
  bodyEl.setAttribute("x", "0");
@@ -296,7 +296,7 @@ function createInstance(item, machine) {
296
296
  bodyEl.setAttribute("height", "0");
297
297
  bodyEl.setAttribute("rx", String(roundness));
298
298
  bodyEl.setAttribute("ry", String(roundness));
299
- bodyEl.setAttribute("fill", item.fill ?? "#FFFFFF");
299
+ bodyEl.setAttribute("fill", item.fill ?? "var(--fluix-surface-contrast)");
300
300
  bodyEl.setAttribute("opacity", "0");
301
301
  g.appendChild(pillEl);
302
302
  g.appendChild(bodyEl);
@@ -452,11 +452,11 @@ function createInstance(item, machine) {
452
452
  () => {
453
453
  inst.localState.ready = true;
454
454
  applyUpdate(inst, inst.item);
455
+ setupAutopilot(inst, inst.item);
455
456
  },
456
457
  32
457
458
  );
458
459
  setupAutoDismiss(inst, item, machine);
459
- setupAutopilot(inst, item);
460
460
  measurePillWidth(inst);
461
461
  return inst;
462
462
  }
@@ -548,7 +548,6 @@ function setupAutoDismiss(inst, item, machine) {
548
548
  );
549
549
  }
550
550
  function setupAutopilot(inst, item, machine) {
551
- if (!inst.localState.ready) return;
552
551
  if (item.autoExpandDelayMs != null && item.autoExpandDelayMs > 0) {
553
552
  setTimer(
554
553
  inst,
@@ -591,14 +590,59 @@ function applyUpdate(inst, item, _machine) {
591
590
  applyAttrs(titleEl, attrs.title);
592
591
  if (item.styles?.title) titleEl.className = item.styles.title;
593
592
  }
593
+ const hasDesc = Boolean(item.description) || Boolean(item.button);
594
+ if (hasDesc && !inst.contentEl) {
595
+ const contentEl = document.createElement("div");
596
+ const descriptionEl = document.createElement("div");
597
+ contentEl.appendChild(descriptionEl);
598
+ inst.el.appendChild(contentEl);
599
+ inst.contentEl = contentEl;
600
+ inst.descriptionEl = descriptionEl;
601
+ inst.contentRo = new ResizeObserver(() => {
602
+ requestAnimationFrame(() => {
603
+ const h = descriptionEl.scrollHeight;
604
+ if (h !== inst.contentHeight) {
605
+ inst.contentHeight = h;
606
+ applyVars(inst, inst.item);
607
+ }
608
+ });
609
+ });
610
+ inst.contentRo.observe(descriptionEl);
611
+ }
594
612
  if (inst.contentEl) applyAttrs(inst.contentEl, attrs.content);
595
- if (inst.descriptionEl) applyAttrs(inst.descriptionEl, attrs.description);
596
- if (item.button && inst.descriptionEl) {
597
- const btnEl = inst.descriptionEl.querySelector("button");
598
- if (btnEl) applyAttrs(btnEl, attrs.button);
613
+ if (inst.descriptionEl) {
614
+ applyAttrs(inst.descriptionEl, attrs.description);
615
+ if (item.styles?.description) {
616
+ inst.descriptionEl.className = item.styles.description;
617
+ }
618
+ const existingBtn = inst.descriptionEl.querySelector("[data-fluix-button]");
619
+ inst.descriptionEl.textContent = "";
620
+ if (item.description != null) {
621
+ if (typeof item.description === "string") {
622
+ inst.descriptionEl.textContent = item.description;
623
+ } else if (item.description instanceof HTMLElement) {
624
+ inst.descriptionEl.appendChild(item.description);
625
+ }
626
+ }
627
+ if (item.button) {
628
+ let btnEl = existingBtn;
629
+ if (!btnEl) {
630
+ btnEl = document.createElement("button");
631
+ btnEl.type = "button";
632
+ }
633
+ btnEl.textContent = item.button.title;
634
+ if (item.styles?.button) btnEl.className = item.styles.button;
635
+ applyAttrs(btnEl, attrs.button);
636
+ const newBtn = btnEl.cloneNode(true);
637
+ newBtn.addEventListener("click", (e) => {
638
+ e.stopPropagation();
639
+ item.button?.onClick();
640
+ });
641
+ inst.descriptionEl.appendChild(newBtn);
642
+ }
599
643
  }
600
- inst.pillEl.setAttribute("fill", item.fill ?? "#FFFFFF");
601
- inst.bodyEl.setAttribute("fill", item.fill ?? "#FFFFFF");
644
+ inst.pillEl.setAttribute("fill", item.fill ?? "var(--fluix-surface-contrast)");
645
+ inst.bodyEl.setAttribute("fill", item.fill ?? "var(--fluix-surface-contrast)");
602
646
  const newHeaderKey = `${item.state}-${item.title ?? item.state}`;
603
647
  if (newHeaderKey !== inst.headerKey) {
604
648
  crossfadeHeader(inst, item, attrs);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/toast.ts"],"names":["TOAST_DEFAULTS","CoreToaster","animateSpring","FLUIX_SPRING"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Vanilla JS Toaster — imperative DOM adapter for the Fluix toast system.\n *\n * Subscribes to the core store and diffs snapshots to create, update, and\n * destroy toast DOM elements without any framework dependency.\n */\n\nimport {\n\tToaster as CoreToaster,\n\tFLUIX_SPRING,\n\ttype FluixPosition,\n\ttype FluixToastItem,\n\ttype FluixToastLayout,\n\ttype FluixToasterConfig,\n\tTOAST_DEFAULTS,\n\ttype ToastMachine,\n\tanimateSpring,\n} from \"@fluix-ui/core\";\n\n/* ----------------------------- Constants ----------------------------- */\n\nconst WIDTH = 350;\nconst HEIGHT = 40;\nconst PILL_PADDING = 10;\nconst MIN_EXPAND_RATIO = 2.25;\nconst HEADER_EXIT_MS = 600 * 0.7;\nconst BODY_MERGE_OVERLAP = 6;\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n/* ----------------------------- Types ----------------------------- */\n\ninterface ToastInstance {\n\tel: HTMLButtonElement;\n\tpillEl: SVGRectElement;\n\tbodyEl: SVGRectElement;\n\tsvgEl: SVGSVGElement;\n\theaderEl: HTMLDivElement;\n\tinnerEl: HTMLDivElement;\n\theaderStackEl: HTMLDivElement;\n\tcontentEl: HTMLDivElement | null;\n\tdescriptionEl: HTMLDivElement | null;\n\tlocalState: { ready: boolean; expanded: boolean };\n\tpillWidth: number;\n\tcontentHeight: number;\n\tfrozenExpanded: number;\n\thovering: boolean;\n\tpendingDismiss: boolean;\n\tdismissRequested: boolean;\n\tpillRo: ResizeObserver;\n\tcontentRo: ResizeObserver | null;\n\tpillAnim: Animation | null;\n\tprevPill: { x: number; width: number; height: number };\n\tpillFirst: boolean;\n\theaderKey: string;\n\theaderPad: number | null;\n\tconnectHandle: { destroy(): void };\n\ttimers: Set<ReturnType<typeof setTimeout>>;\n\titem: FluixToastItem;\n}\n\n/* ----------------------------- SVG icon builders ----------------------------- */\n\nfunction createSvgIcon(state: FluixToastItem[\"state\"]): SVGSVGElement | null {\n\tconst svg = document.createElementNS(SVG_NS, \"svg\");\n\tsvg.setAttribute(\"width\", \"14\");\n\tsvg.setAttribute(\"height\", \"14\");\n\tsvg.setAttribute(\"viewBox\", \"0 0 24 24\");\n\tsvg.setAttribute(\"fill\", \"none\");\n\tsvg.setAttribute(\"stroke\", \"currentColor\");\n\tsvg.setAttribute(\"stroke-width\", \"2.5\");\n\tsvg.setAttribute(\"stroke-linecap\", \"round\");\n\tsvg.setAttribute(\"stroke-linejoin\", \"round\");\n\tsvg.setAttribute(\"aria-hidden\", \"true\");\n\n\tswitch (state) {\n\t\tcase \"success\": {\n\t\t\tconst p = document.createElementNS(SVG_NS, \"polyline\");\n\t\t\tp.setAttribute(\"points\", \"20 6 9 17 4 12\");\n\t\t\tsvg.appendChild(p);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"error\": {\n\t\t\tconst l1 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl1.setAttribute(\"x1\", \"18\");\n\t\t\tl1.setAttribute(\"y1\", \"6\");\n\t\t\tl1.setAttribute(\"x2\", \"6\");\n\t\t\tl1.setAttribute(\"y2\", \"18\");\n\t\t\tconst l2 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl2.setAttribute(\"x1\", \"6\");\n\t\t\tl2.setAttribute(\"y1\", \"6\");\n\t\t\tl2.setAttribute(\"x2\", \"18\");\n\t\t\tl2.setAttribute(\"y2\", \"18\");\n\t\t\tsvg.appendChild(l1);\n\t\t\tsvg.appendChild(l2);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"warning\": {\n\t\t\tconst path = document.createElementNS(SVG_NS, \"path\");\n\t\t\tpath.setAttribute(\n\t\t\t\t\"d\",\n\t\t\t\t\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\",\n\t\t\t);\n\t\t\tconst l1 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl1.setAttribute(\"x1\", \"12\");\n\t\t\tl1.setAttribute(\"y1\", \"9\");\n\t\t\tl1.setAttribute(\"x2\", \"12\");\n\t\t\tl1.setAttribute(\"y2\", \"13\");\n\t\t\tconst l2 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl2.setAttribute(\"x1\", \"12\");\n\t\t\tl2.setAttribute(\"y1\", \"17\");\n\t\t\tl2.setAttribute(\"x2\", \"12.01\");\n\t\t\tl2.setAttribute(\"y2\", \"17\");\n\t\t\tsvg.appendChild(path);\n\t\t\tsvg.appendChild(l1);\n\t\t\tsvg.appendChild(l2);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"info\": {\n\t\t\tconst c = document.createElementNS(SVG_NS, \"circle\");\n\t\t\tc.setAttribute(\"cx\", \"12\");\n\t\t\tc.setAttribute(\"cy\", \"12\");\n\t\t\tc.setAttribute(\"r\", \"10\");\n\t\t\tconst l1 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl1.setAttribute(\"x1\", \"12\");\n\t\t\tl1.setAttribute(\"y1\", \"16\");\n\t\t\tl1.setAttribute(\"x2\", \"12\");\n\t\t\tl1.setAttribute(\"y2\", \"12\");\n\t\t\tconst l2 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl2.setAttribute(\"x1\", \"12\");\n\t\t\tl2.setAttribute(\"y1\", \"8\");\n\t\t\tl2.setAttribute(\"x2\", \"12.01\");\n\t\t\tl2.setAttribute(\"y2\", \"8\");\n\t\t\tsvg.appendChild(c);\n\t\t\tsvg.appendChild(l1);\n\t\t\tsvg.appendChild(l2);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"loading\": {\n\t\t\tsvg.setAttribute(\"data-fluix-icon\", \"spin\");\n\t\t\tconst lines: [string, string, string, string][] = [\n\t\t\t\t[\"12\", \"2\", \"12\", \"6\"],\n\t\t\t\t[\"12\", \"18\", \"12\", \"22\"],\n\t\t\t\t[\"4.93\", \"4.93\", \"7.76\", \"7.76\"],\n\t\t\t\t[\"16.24\", \"16.24\", \"19.07\", \"19.07\"],\n\t\t\t\t[\"2\", \"12\", \"6\", \"12\"],\n\t\t\t\t[\"18\", \"12\", \"22\", \"12\"],\n\t\t\t\t[\"4.93\", \"19.07\", \"7.76\", \"16.24\"],\n\t\t\t\t[\"16.24\", \"7.76\", \"19.07\", \"4.93\"],\n\t\t\t];\n\t\t\tfor (const [x1, y1, x2, y2] of lines) {\n\t\t\t\tconst l = document.createElementNS(SVG_NS, \"line\");\n\t\t\t\tl.setAttribute(\"x1\", x1);\n\t\t\t\tl.setAttribute(\"y1\", y1);\n\t\t\t\tl.setAttribute(\"x2\", x2);\n\t\t\t\tl.setAttribute(\"y2\", y2);\n\t\t\t\tsvg.appendChild(l);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"action\": {\n\t\t\tconst c = document.createElementNS(SVG_NS, \"circle\");\n\t\t\tc.setAttribute(\"cx\", \"12\");\n\t\t\tc.setAttribute(\"cy\", \"12\");\n\t\t\tc.setAttribute(\"r\", \"10\");\n\t\t\tconst poly = document.createElementNS(SVG_NS, \"polygon\");\n\t\t\tpoly.setAttribute(\"points\", \"10 8 16 12 10 16 10 8\");\n\t\t\tpoly.setAttribute(\"fill\", \"currentColor\");\n\t\t\tpoly.setAttribute(\"stroke\", \"none\");\n\t\t\tsvg.appendChild(c);\n\t\t\tsvg.appendChild(poly);\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t\treturn null;\n\t}\n\treturn svg;\n}\n\nfunction renderIconInto(container: HTMLElement, icon: unknown, state: FluixToastItem[\"state\"]) {\n\tcontainer.textContent = \"\";\n\tif (icon != null) {\n\t\tif (icon instanceof HTMLElement || icon instanceof SVGElement) {\n\t\t\tcontainer.appendChild(icon);\n\t\t} else {\n\t\t\tconst span = document.createElement(\"span\");\n\t\t\tspan.setAttribute(\"aria-hidden\", \"true\");\n\t\t\tspan.textContent = String(icon);\n\t\t\tcontainer.appendChild(span);\n\t\t}\n\t\treturn;\n\t}\n\tconst svgIcon = createSvgIcon(state);\n\tif (svgIcon) container.appendChild(svgIcon);\n}\n\n/* ----------------------------- Helpers ----------------------------- */\n\nfunction getPillAlign(position: FluixPosition): \"left\" | \"center\" | \"right\" {\n\tif (position.includes(\"right\")) return \"right\";\n\tif (position.includes(\"center\")) return \"center\";\n\treturn \"left\";\n}\n\nfunction applyAttrs(el: Element, attrs: Record<string, string>) {\n\tfor (const [key, value] of Object.entries(attrs)) {\n\t\tel.setAttribute(key, value);\n\t}\n}\n\nfunction resolveOffsetValue(v: number | string): string {\n\treturn typeof v === \"number\" ? `${v}px` : v;\n}\n\nfunction applyViewportOffset(\n\tel: HTMLElement,\n\toffset: FluixToasterConfig[\"offset\"],\n\tposition: FluixPosition,\n) {\n\tel.style.top = \"\";\n\tel.style.right = \"\";\n\tel.style.bottom = \"\";\n\tel.style.left = \"\";\n\tel.style.paddingLeft = \"\";\n\tel.style.paddingRight = \"\";\n\n\tif (offset == null) return;\n\n\tlet top: string | undefined;\n\tlet right: string | undefined;\n\tlet bottom: string | undefined;\n\tlet left: string | undefined;\n\n\tif (typeof offset === \"number\" || typeof offset === \"string\") {\n\t\tconst v = resolveOffsetValue(offset as number | string);\n\t\ttop = v;\n\t\tright = v;\n\t\tbottom = v;\n\t\tleft = v;\n\t} else {\n\t\tif (offset.top != null) top = resolveOffsetValue(offset.top);\n\t\tif (offset.right != null) right = resolveOffsetValue(offset.right);\n\t\tif (offset.bottom != null) bottom = resolveOffsetValue(offset.bottom);\n\t\tif (offset.left != null) left = resolveOffsetValue(offset.left);\n\t}\n\n\tif (position.startsWith(\"top\") && top) el.style.top = top;\n\tif (position.startsWith(\"bottom\") && bottom) el.style.bottom = bottom;\n\tif (position.endsWith(\"right\") && right) el.style.right = right;\n\tif (position.endsWith(\"left\") && left) el.style.left = left;\n\tif (position.endsWith(\"center\")) {\n\t\tif (left) el.style.paddingLeft = left;\n\t\tif (right) el.style.paddingRight = right;\n\t}\n}\n\nfunction setTimer(inst: ToastInstance, fn: () => void, ms: number): ReturnType<typeof setTimeout> {\n\tconst id = setTimeout(() => {\n\t\tinst.timers.delete(id);\n\t\tfn();\n\t}, ms);\n\tinst.timers.add(id);\n\treturn id;\n}\n\n/* ----------------------------- Compute layout values ----------------------------- */\n\nfunction computeLayout(item: FluixToastItem, inst: ToastInstance) {\n\tconst { ready, expanded: isExpanded } = inst.localState;\n\tconst roundness = item.roundness ?? TOAST_DEFAULTS.roundness;\n\tconst blur = Math.min(10, Math.max(6, roundness * 0.45));\n\tconst hasDesc = Boolean(item.description) || Boolean(item.button);\n\tconst isLoading = item.state === \"loading\";\n\tconst open = hasDesc && isExpanded && !isLoading;\n\tconst position = getPillAlign(item.position);\n\tconst edge = item.position.startsWith(\"top\") ? \"bottom\" : \"top\";\n\n\tconst resolvedPillWidth = Math.max(inst.pillWidth || HEIGHT, HEIGHT);\n\tconst pillHeight = HEIGHT + blur * 3;\n\tconst pillX =\n\t\tposition === \"right\"\n\t\t\t? WIDTH - resolvedPillWidth\n\t\t\t: position === \"center\"\n\t\t\t\t? (WIDTH - resolvedPillWidth) / 2\n\t\t\t\t: 0;\n\n\tconst minExpanded = HEIGHT * MIN_EXPAND_RATIO;\n\tconst rawExpanded = hasDesc ? Math.max(minExpanded, HEIGHT + inst.contentHeight) : minExpanded;\n\tif (open) {\n\t\tinst.frozenExpanded = rawExpanded;\n\t}\n\tconst expanded = open ? rawExpanded : inst.frozenExpanded;\n\tconst expandedContent = Math.max(0, expanded - HEIGHT);\n\tconst svgHeight = hasDesc ? Math.max(expanded, minExpanded) : HEIGHT;\n\n\treturn {\n\t\tready,\n\t\tisExpanded,\n\t\troundness,\n\t\tblur,\n\t\thasDesc,\n\t\tisLoading,\n\t\topen,\n\t\tposition,\n\t\tedge,\n\t\tresolvedPillWidth,\n\t\tpillHeight,\n\t\tpillX,\n\t\tminExpanded,\n\t\texpanded,\n\t\texpandedContent,\n\t\tsvgHeight,\n\t};\n}\n\n/* ----------------------------- createInstance ----------------------------- */\n\nfunction createInstance(item: FluixToastItem, machine: ToastMachine): ToastInstance {\n\tconst localState = { ready: false, expanded: false };\n\tconst roundness = item.roundness ?? TOAST_DEFAULTS.roundness;\n\tconst blur = Math.min(10, Math.max(6, roundness * 0.45));\n\tconst filterId = `fluix-gooey-${item.id.replace(/[^a-z0-9-]/gi, \"-\")}`;\n\tconst hasDesc = Boolean(item.description) || Boolean(item.button);\n\n\t// Root button\n\tconst el = document.createElement(\"button\");\n\tel.type = \"button\";\n\n\t// Canvas div\n\tconst canvasDiv = document.createElement(\"div\");\n\n\t// SVG — initial height accounts for description area (matches React/Vue)\n\tconst minExpanded = HEIGHT * MIN_EXPAND_RATIO;\n\tconst initialSvgHeight = hasDesc ? minExpanded : HEIGHT;\n\tconst svg = document.createElementNS(SVG_NS, \"svg\");\n\tsvg.setAttribute(\"data-fluix-svg\", \"\");\n\tsvg.setAttribute(\"width\", String(WIDTH));\n\tsvg.setAttribute(\"height\", String(initialSvgHeight));\n\tsvg.setAttribute(\"viewBox\", `0 0 ${WIDTH} ${initialSvgHeight}`);\n\tsvg.setAttribute(\"aria-hidden\", \"true\");\n\n\t// Defs + filter\n\tconst defs = document.createElementNS(SVG_NS, \"defs\");\n\tconst filter = document.createElementNS(SVG_NS, \"filter\");\n\tfilter.setAttribute(\"id\", filterId);\n\tfilter.setAttribute(\"x\", \"-20%\");\n\tfilter.setAttribute(\"y\", \"-20%\");\n\tfilter.setAttribute(\"width\", \"140%\");\n\tfilter.setAttribute(\"height\", \"140%\");\n\tfilter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n\n\tconst feBlur = document.createElementNS(SVG_NS, \"feGaussianBlur\");\n\tfeBlur.setAttribute(\"in\", \"SourceGraphic\");\n\tfeBlur.setAttribute(\"stdDeviation\", String(blur));\n\tfeBlur.setAttribute(\"result\", \"blur\");\n\n\tconst feCM = document.createElementNS(SVG_NS, \"feColorMatrix\");\n\tfeCM.setAttribute(\"in\", \"blur\");\n\tfeCM.setAttribute(\"type\", \"matrix\");\n\tfeCM.setAttribute(\"values\", \"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10\");\n\tfeCM.setAttribute(\"result\", \"goo\");\n\n\tconst feComp = document.createElementNS(SVG_NS, \"feComposite\");\n\tfeComp.setAttribute(\"in\", \"SourceGraphic\");\n\tfeComp.setAttribute(\"in2\", \"goo\");\n\tfeComp.setAttribute(\"operator\", \"atop\");\n\n\tfilter.appendChild(feBlur);\n\tfilter.appendChild(feCM);\n\tfilter.appendChild(feComp);\n\tdefs.appendChild(filter);\n\tsvg.appendChild(defs);\n\n\tconst g = document.createElementNS(SVG_NS, \"g\");\n\tg.setAttribute(\"filter\", `url(#${filterId})`);\n\n\t// Pill rect — initial position matches React/Vue (computed from position)\n\tconst initialPillX =\n\t\tgetPillAlign(item.position) === \"right\"\n\t\t\t? WIDTH - HEIGHT\n\t\t\t: getPillAlign(item.position) === \"center\"\n\t\t\t\t? (WIDTH - HEIGHT) / 2\n\t\t\t\t: 0;\n\tconst pillEl = document.createElementNS(SVG_NS, \"rect\");\n\tpillEl.setAttribute(\"data-fluix-pill\", \"\");\n\tpillEl.setAttribute(\"x\", String(initialPillX));\n\tpillEl.setAttribute(\"y\", \"0\");\n\tpillEl.setAttribute(\"width\", String(HEIGHT));\n\tpillEl.setAttribute(\"height\", String(HEIGHT));\n\tpillEl.setAttribute(\"rx\", String(roundness));\n\tpillEl.setAttribute(\"ry\", String(roundness));\n\tpillEl.setAttribute(\"fill\", item.fill ?? \"#FFFFFF\");\n\n\t// Body rect\n\tconst bodyEl = document.createElementNS(SVG_NS, \"rect\");\n\tbodyEl.setAttribute(\"data-fluix-body\", \"\");\n\tbodyEl.setAttribute(\"x\", \"0\");\n\tbodyEl.setAttribute(\"y\", String(HEIGHT));\n\tbodyEl.setAttribute(\"width\", String(WIDTH));\n\tbodyEl.setAttribute(\"height\", \"0\");\n\tbodyEl.setAttribute(\"rx\", String(roundness));\n\tbodyEl.setAttribute(\"ry\", String(roundness));\n\tbodyEl.setAttribute(\"fill\", item.fill ?? \"#FFFFFF\");\n\tbodyEl.setAttribute(\"opacity\", \"0\");\n\n\tg.appendChild(pillEl);\n\tg.appendChild(bodyEl);\n\tsvg.appendChild(g);\n\tcanvasDiv.appendChild(svg);\n\tel.appendChild(canvasDiv);\n\n\t// Header div\n\tconst headerEl = document.createElement(\"div\");\n\tconst headerStackEl = document.createElement(\"div\");\n\theaderStackEl.setAttribute(\"data-fluix-header-stack\", \"\");\n\n\tconst innerEl = document.createElement(\"div\");\n\tinnerEl.setAttribute(\"data-fluix-header-inner\", \"\");\n\tinnerEl.setAttribute(\"data-layer\", \"current\");\n\n\tconst badgeEl = document.createElement(\"div\");\n\trenderIconInto(badgeEl, item.icon, item.state);\n\n\tconst titleEl = document.createElement(\"span\");\n\ttitleEl.textContent = item.title ?? item.state;\n\n\tinnerEl.appendChild(badgeEl);\n\tinnerEl.appendChild(titleEl);\n\theaderStackEl.appendChild(innerEl);\n\theaderEl.appendChild(headerStackEl);\n\tel.appendChild(headerEl);\n\n\t// Content div (optional)\n\tlet contentEl: HTMLDivElement | null = null;\n\tlet descriptionEl: HTMLDivElement | null = null;\n\n\tif (hasDesc) {\n\t\tcontentEl = document.createElement(\"div\");\n\t\tdescriptionEl = document.createElement(\"div\");\n\t\tif (item.styles?.description) {\n\t\t\tdescriptionEl.className = item.styles.description;\n\t\t}\n\n\t\tif (item.description != null) {\n\t\t\tif (typeof item.description === \"string\") {\n\t\t\t\tdescriptionEl.textContent = item.description;\n\t\t\t} else if (item.description instanceof HTMLElement) {\n\t\t\t\tdescriptionEl.appendChild(item.description);\n\t\t\t}\n\t\t}\n\n\t\tif (item.button) {\n\t\t\tconst btn = document.createElement(\"button\");\n\t\t\tbtn.type = \"button\";\n\t\t\tbtn.textContent = item.button.title;\n\t\t\tif (item.styles?.button) {\n\t\t\t\tbtn.className = item.styles.button;\n\t\t\t}\n\t\t\tbtn.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\titem.button?.onClick();\n\t\t\t});\n\t\t\tdescriptionEl.appendChild(btn);\n\t\t}\n\n\t\tcontentEl.appendChild(descriptionEl);\n\t\tel.appendChild(contentEl);\n\t}\n\n\t// Apply initial attrs\n\tconst attrs = CoreToaster.getAttrs(item, localState);\n\tapplyAttrs(el, attrs.root);\n\tapplyAttrs(canvasDiv, attrs.canvas);\n\tapplyAttrs(headerEl, attrs.header);\n\tapplyAttrs(badgeEl, attrs.badge);\n\tif (item.styles?.badge) badgeEl.className = item.styles.badge;\n\tapplyAttrs(titleEl, attrs.title);\n\tif (item.styles?.title) titleEl.className = item.styles.title;\n\tif (contentEl) applyAttrs(contentEl, attrs.content);\n\tif (descriptionEl) applyAttrs(descriptionEl, attrs.description);\n\n\t// Apply button attrs\n\tif (item.button && descriptionEl) {\n\t\tconst btnEl = descriptionEl.querySelector(\"button\");\n\t\tif (btnEl) applyAttrs(btnEl, attrs.button);\n\t}\n\n\tconst headerKey = `${item.state}-${item.title ?? item.state}`;\n\n\tconst inst: ToastInstance = {\n\t\tel,\n\t\tpillEl,\n\t\tbodyEl,\n\t\tsvgEl: svg,\n\t\theaderEl,\n\t\tinnerEl,\n\t\theaderStackEl,\n\t\tcontentEl,\n\t\tdescriptionEl,\n\t\tlocalState,\n\t\tpillWidth: 0,\n\t\tcontentHeight: 0,\n\t\tfrozenExpanded: HEIGHT * MIN_EXPAND_RATIO,\n\t\thovering: false,\n\t\tpendingDismiss: false,\n\t\tdismissRequested: false,\n\t\tpillRo: null!,\n\t\tcontentRo: null,\n\t\tpillAnim: null,\n\t\tprevPill: { x: initialPillX, width: HEIGHT, height: HEIGHT },\n\t\tpillFirst: true,\n\t\theaderKey,\n\t\theaderPad: null,\n\t\tconnectHandle: null!,\n\t\ttimers: new Set(),\n\t\titem,\n\t};\n\n\t// Set up pill ResizeObserver\n\tinst.pillRo = new ResizeObserver(() => {\n\t\trequestAnimationFrame(() => {\n\t\t\tmeasurePillWidth(inst);\n\t\t\tapplyVars(inst, inst.item);\n\t\t\tanimatePill(inst, inst.item);\n\t\t});\n\t});\n\tinst.pillRo.observe(innerEl);\n\n\t// Set up content ResizeObserver\n\tif (descriptionEl) {\n\t\tinst.contentRo = new ResizeObserver(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst h = descriptionEl!.scrollHeight;\n\t\t\t\tif (h !== inst.contentHeight) {\n\t\t\t\t\tinst.contentHeight = h;\n\t\t\t\t\tapplyVars(inst, inst.item);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tinst.contentRo.observe(descriptionEl);\n\t}\n\n\t// Wire connect\n\tinst.connectHandle = CoreToaster.connect(\n\t\tel,\n\t\t{\n\t\t\tonExpand: () => {\n\t\t\t\tif (inst.item.exiting || inst.dismissRequested) return;\n\t\t\t\tinst.localState.expanded = true;\n\t\t\t\tapplyUpdate(inst, inst.item, machine);\n\t\t\t},\n\t\t\tonCollapse: () => {\n\t\t\t\tif (inst.item.exiting || inst.dismissRequested) return;\n\t\t\t\tif (inst.item.autopilot !== false) return;\n\t\t\t\tinst.localState.expanded = false;\n\t\t\t\tapplyUpdate(inst, inst.item, machine);\n\t\t\t},\n\t\t\tonDismiss: () => {\n\t\t\t\tif (inst.dismissRequested) return;\n\t\t\t\tinst.dismissRequested = true;\n\t\t\t\tmachine.dismiss(item.id);\n\t\t\t},\n\t\t\tonHoverStart: () => {\n\t\t\t\tinst.hovering = true;\n\t\t\t},\n\t\t\tonHoverEnd: () => {\n\t\t\t\tinst.hovering = false;\n\t\t\t\tif (inst.pendingDismiss) {\n\t\t\t\t\tinst.pendingDismiss = false;\n\t\t\t\t\tif (inst.dismissRequested) return;\n\t\t\t\t\tinst.dismissRequested = true;\n\t\t\t\t\tmachine.dismiss(inst.item.id);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\titem,\n\t);\n\n\t// Apply initial CSS vars\n\tapplyVars(inst, item);\n\n\t// Ready timer\n\tsetTimer(\n\t\tinst,\n\t\t() => {\n\t\t\tinst.localState.ready = true;\n\t\t\tapplyUpdate(inst, inst.item, machine);\n\t\t},\n\t\t32,\n\t);\n\n\t// Auto-dismiss timer\n\tsetupAutoDismiss(inst, item, machine);\n\n\t// Autopilot timers\n\tsetupAutopilot(inst, item, machine);\n\n\t// Initial pill measurement\n\tmeasurePillWidth(inst);\n\n\treturn inst;\n}\n\n/* ----------------------------- measurePillWidth ----------------------------- */\n\nfunction measurePillWidth(inst: ToastInstance) {\n\t// Skip measurement if the element is not connected to the DOM yet\n\tif (!inst.el.isConnected) return;\n\n\tif (inst.headerPad === null) {\n\t\tconst cs = getComputedStyle(inst.headerEl);\n\t\tinst.headerPad = Number.parseFloat(cs.paddingLeft) + Number.parseFloat(cs.paddingRight);\n\t}\n\t// Use getBoundingClientRect for accurate measurement (matches Vue adapter)\n\tconst intrinsicWidth = inst.innerEl.getBoundingClientRect().width;\n\tconst w = intrinsicWidth + inst.headerPad + PILL_PADDING;\n\tif (w > PILL_PADDING && w !== inst.pillWidth) {\n\t\tinst.pillWidth = w;\n\t}\n}\n\n/* ----------------------------- applyVars ----------------------------- */\n\nfunction applyVars(inst: ToastInstance, item: FluixToastItem) {\n\tconst layout = computeLayout(item, inst);\n\tconst { open, expanded, resolvedPillWidth, pillX, edge, expandedContent, svgHeight } = layout;\n\n\tconst vars: Record<string, string> = {\n\t\t\"--_h\": `${open ? expanded : HEIGHT}px`,\n\t\t\"--_pw\": `${resolvedPillWidth}px`,\n\t\t\"--_px\": `${pillX}px`,\n\t\t\"--_ht\": `translateY(${open ? (edge === \"bottom\" ? 3 : -3) : 0}px) scale(${open ? 0.9 : 1})`,\n\t\t\"--_co\": `${open ? 1 : 0}`,\n\t\t\"--_cy\": `${open ? 0 : -14}px`,\n\t\t\"--_cm\": `${open ? expandedContent : 0}px`,\n\t\t\"--_by\": `${open ? HEIGHT - BODY_MERGE_OVERLAP : HEIGHT}px`,\n\t\t\"--_bh\": `${open ? expandedContent : 0}px`,\n\t\t\"--_bo\": `${open ? 1 : 0}`,\n\t};\n\n\tfor (const [key, value] of Object.entries(vars)) {\n\t\tinst.el.style.setProperty(key, value);\n\t}\n\n\t// Update SVG dimensions\n\tinst.svgEl.setAttribute(\"height\", String(svgHeight));\n\tinst.svgEl.setAttribute(\"viewBox\", `0 0 ${WIDTH} ${svgHeight}`);\n}\n\n/* ----------------------------- animatePill ----------------------------- */\n\nfunction animatePill(inst: ToastInstance, item: FluixToastItem) {\n\tconst layout = computeLayout(item, inst);\n\tconst { open, resolvedPillWidth, pillX, pillHeight } = layout;\n\n\tconst prev = inst.prevPill;\n\tconst next = { x: pillX, width: resolvedPillWidth, height: open ? pillHeight : HEIGHT };\n\n\tif (prev.x === next.x && prev.width === next.width && prev.height === next.height) return;\n\n\tinst.pillAnim?.cancel();\n\n\t// Before ready or on first measurement, set attributes directly (no spring)\n\tif (!inst.localState.ready || inst.pillFirst) {\n\t\tinst.pillFirst = false;\n\t\tinst.pillEl.setAttribute(\"x\", String(next.x));\n\t\tinst.pillEl.setAttribute(\"width\", String(next.width));\n\t\tinst.pillEl.setAttribute(\"height\", String(next.height));\n\t\tinst.prevPill = next;\n\t\treturn;\n\t}\n\n\tconst anim = animateSpring(\n\t\tinst.pillEl,\n\t\t{\n\t\t\tx: { from: prev.x, to: next.x, unit: \"px\" },\n\t\t\twidth: { from: prev.width, to: next.width, unit: \"px\" },\n\t\t\theight: { from: prev.height, to: next.height, unit: \"px\" },\n\t\t},\n\t\tFLUIX_SPRING,\n\t);\n\n\tinst.pillAnim = anim;\n\tinst.prevPill = next;\n}\n\n/* ----------------------------- setupAutoDismiss ----------------------------- */\n\nfunction setupAutoDismiss(inst: ToastInstance, item: FluixToastItem, machine: ToastMachine) {\n\tconst duration = item.duration;\n\tif (duration == null || duration <= 0) return;\n\n\tsetTimer(\n\t\tinst,\n\t\t() => {\n\t\t\tif (inst.hovering) {\n\t\t\t\tinst.pendingDismiss = true;\n\t\t\t\tsetTimer(\n\t\t\t\t\tinst,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tif (inst.dismissRequested) return;\n\t\t\t\t\t\tinst.dismissRequested = true;\n\t\t\t\t\t\tinst.pendingDismiss = false;\n\t\t\t\t\t\tmachine.dismiss(item.id);\n\t\t\t\t\t},\n\t\t\t\t\t1200,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tinst.pendingDismiss = false;\n\t\t\tinst.dismissRequested = true;\n\t\t\tmachine.dismiss(item.id);\n\t\t},\n\t\tduration,\n\t);\n}\n\n/* ----------------------------- setupAutopilot ----------------------------- */\n\nfunction setupAutopilot(inst: ToastInstance, item: FluixToastItem, machine: ToastMachine) {\n\tif (!inst.localState.ready) return;\n\n\tif (item.autoExpandDelayMs != null && item.autoExpandDelayMs > 0) {\n\t\tsetTimer(\n\t\t\tinst,\n\t\t\t() => {\n\t\t\t\tif (!inst.hovering) {\n\t\t\t\t\tinst.localState.expanded = true;\n\t\t\t\t\tapplyUpdate(inst, inst.item, machine);\n\t\t\t\t}\n\t\t\t},\n\t\t\titem.autoExpandDelayMs,\n\t\t);\n\t}\n\n\tif (item.autoCollapseDelayMs != null && item.autoCollapseDelayMs > 0) {\n\t\tsetTimer(\n\t\t\tinst,\n\t\t\t() => {\n\t\t\t\tif (!inst.hovering) {\n\t\t\t\t\tinst.localState.expanded = false;\n\t\t\t\t\tapplyUpdate(inst, inst.item, machine);\n\t\t\t\t}\n\t\t\t},\n\t\t\titem.autoCollapseDelayMs,\n\t\t);\n\t}\n}\n\n/* ----------------------------- applyUpdate ----------------------------- */\n\nfunction applyUpdate(inst: ToastInstance, item: FluixToastItem, _machine: ToastMachine) {\n\tinst.item = item;\n\n\tconst attrs = CoreToaster.getAttrs(item, inst.localState);\n\tapplyAttrs(inst.el, attrs.root);\n\n\t// Canvas\n\tconst canvasEl = inst.el.querySelector(\"[data-fluix-canvas]\");\n\tif (canvasEl) applyAttrs(canvasEl, attrs.canvas);\n\n\t// Header\n\tapplyAttrs(inst.headerEl, attrs.header);\n\n\t// Badge & title in current layer\n\tconst badgeEl = inst.innerEl.querySelector(\"[data-fluix-badge]\");\n\tif (badgeEl) {\n\t\tapplyAttrs(badgeEl, attrs.badge);\n\t\tif (item.styles?.badge) (badgeEl as HTMLElement).className = item.styles.badge;\n\t}\n\tconst titleEl = inst.innerEl.querySelector(\"[data-fluix-title]\");\n\tif (titleEl) {\n\t\tapplyAttrs(titleEl, attrs.title);\n\t\tif (item.styles?.title) (titleEl as HTMLElement).className = item.styles.title;\n\t}\n\n\t// Content\n\tif (inst.contentEl) applyAttrs(inst.contentEl, attrs.content);\n\tif (inst.descriptionEl) applyAttrs(inst.descriptionEl, attrs.description);\n\n\t// Button attrs\n\tif (item.button && inst.descriptionEl) {\n\t\tconst btnEl = inst.descriptionEl.querySelector(\"button\");\n\t\tif (btnEl) applyAttrs(btnEl, attrs.button);\n\t}\n\n\t// Update pill fill\n\tinst.pillEl.setAttribute(\"fill\", item.fill ?? \"#FFFFFF\");\n\tinst.bodyEl.setAttribute(\"fill\", item.fill ?? \"#FFFFFF\");\n\n\t// Header crossfade\n\tconst newHeaderKey = `${item.state}-${item.title ?? item.state}`;\n\tif (newHeaderKey !== inst.headerKey) {\n\t\tcrossfadeHeader(inst, item, attrs);\n\t\tinst.headerKey = newHeaderKey;\n\t}\n\n\tapplyVars(inst, item);\n\tanimatePill(inst, item);\n}\n\n/* ----------------------------- crossfadeHeader ----------------------------- */\n\nfunction crossfadeHeader(\n\tinst: ToastInstance,\n\titem: FluixToastItem,\n\tattrs: ReturnType<typeof CoreToaster.getAttrs>,\n) {\n\t// Move current → prev (exiting)\n\tconst oldInner = inst.innerEl;\n\toldInner.setAttribute(\"data-layer\", \"prev\");\n\toldInner.setAttribute(\"data-exiting\", \"true\");\n\n\t// Create new current\n\tconst newInner = document.createElement(\"div\");\n\tnewInner.setAttribute(\"data-fluix-header-inner\", \"\");\n\tnewInner.setAttribute(\"data-layer\", \"current\");\n\n\tconst badgeEl = document.createElement(\"div\");\n\tapplyAttrs(badgeEl, attrs.badge);\n\tif (item.styles?.badge) badgeEl.className = item.styles.badge;\n\trenderIconInto(badgeEl, item.icon, item.state);\n\n\tconst titleEl = document.createElement(\"span\");\n\tapplyAttrs(titleEl, attrs.title);\n\tif (item.styles?.title) titleEl.className = item.styles.title;\n\ttitleEl.textContent = item.title ?? item.state;\n\n\tnewInner.appendChild(badgeEl);\n\tnewInner.appendChild(titleEl);\n\tinst.headerStackEl.insertBefore(newInner, oldInner);\n\tinst.innerEl = newInner;\n\n\t// Re-observe for pill measurement\n\tinst.pillRo.unobserve(oldInner);\n\tinst.pillRo.observe(newInner);\n\n\t// Remove old after exit animation\n\tsetTimer(\n\t\tinst,\n\t\t() => {\n\t\t\toldInner.remove();\n\t\t},\n\t\tHEADER_EXIT_MS,\n\t);\n\n\t// Re-measure pill\n\trequestAnimationFrame(() => {\n\t\tmeasurePillWidth(inst);\n\t\tapplyVars(inst, inst.item);\n\t\tanimatePill(inst, inst.item);\n\t});\n}\n\n/* ----------------------------- destroyInstance ----------------------------- */\n\nfunction destroyInstance(inst: ToastInstance) {\n\tfor (const t of inst.timers) clearTimeout(t);\n\tinst.timers.clear();\n\tinst.pillAnim?.cancel();\n\tinst.pillRo.disconnect();\n\tinst.contentRo?.disconnect();\n\tinst.connectHandle.destroy();\n\tinst.el.remove();\n}\n\n/* ----------------------------- createToaster ----------------------------- */\n\nexport function createToaster(config?: FluixToasterConfig): {\n\tdestroy(): void;\n\tupdate(config: FluixToasterConfig): void;\n} {\n\tconst machine = CoreToaster.getMachine();\n\tlet currentConfig = config;\n\tif (currentConfig) machine.configure(currentConfig);\n\n\tconst instances = new Map<string, ToastInstance>();\n\tconst viewports = new Map<FluixPosition, HTMLElement>();\n\n\tfunction ensureViewport(\n\t\tposition: FluixPosition,\n\t\tlayout: FluixToastLayout,\n\t\toffset: FluixToasterConfig[\"offset\"],\n\t): HTMLElement {\n\t\tlet vp = viewports.get(position);\n\t\tif (!vp) {\n\t\t\tvp = document.createElement(\"section\");\n\t\t\tconst vpAttrs = CoreToaster.getViewportAttrs(position, layout);\n\t\t\tapplyAttrs(vp, vpAttrs);\n\t\t\tapplyViewportOffset(vp, offset, position);\n\t\t\tdocument.body.appendChild(vp);\n\t\t\tviewports.set(position, vp);\n\t\t}\n\t\treturn vp;\n\t}\n\n\tfunction removeViewport(position: FluixPosition) {\n\t\tconst vp = viewports.get(position);\n\t\tif (vp) {\n\t\t\tvp.remove();\n\t\t\tviewports.delete(position);\n\t\t}\n\t}\n\n\tfunction sync() {\n\t\tconst next = machine.store.getSnapshot();\n\t\tconst resolvedLayout = next.config?.layout ?? currentConfig?.layout ?? \"stack\";\n\t\tconst resolvedOffset = next.config?.offset ?? currentConfig?.offset;\n\n\t\t// Track which positions are active\n\t\tconst activePositions = new Set<FluixPosition>();\n\t\tconst nextIds = new Set(next.toasts.map((t) => t.id));\n\n\t\t// Remove instances for toasts that are gone\n\t\tfor (const [id, inst] of instances) {\n\t\t\tif (!nextIds.has(id)) {\n\t\t\t\tdestroyInstance(inst);\n\t\t\t\tinstances.delete(id);\n\t\t\t}\n\t\t}\n\n\t\t// Create/update instances\n\t\tfor (const item of next.toasts) {\n\t\t\tactivePositions.add(item.position);\n\t\t\tconst vp = ensureViewport(item.position, resolvedLayout, resolvedOffset);\n\n\t\t\tconst existing = instances.get(item.id);\n\t\t\tif (!existing) {\n\t\t\t\t// New toast\n\t\t\t\tconst inst = createInstance(item, machine);\n\t\t\t\tinstances.set(item.id, inst);\n\t\t\t\tvp.appendChild(inst.el);\n\t\t\t} else if (existing.item.instanceId !== item.instanceId) {\n\t\t\t\t// Content swapped (e.g., promise resolution) - rebuild\n\t\t\t\tdestroyInstance(existing);\n\t\t\t\tconst inst = createInstance(item, machine);\n\t\t\t\tinstances.set(item.id, inst);\n\t\t\t\tvp.appendChild(inst.el);\n\t\t\t} else {\n\t\t\t\t// Same instance, update attrs/vars\n\t\t\t\tapplyUpdate(existing, item, machine);\n\t\t\t\t// Ensure it's in the right viewport\n\t\t\t\tif (existing.el.parentElement !== vp) {\n\t\t\t\t\tvp.appendChild(existing.el);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update viewport attrs (layout may have changed)\n\t\tfor (const [position, vp] of viewports) {\n\t\t\tconst vpAttrs = CoreToaster.getViewportAttrs(position, resolvedLayout);\n\t\t\tapplyAttrs(vp, vpAttrs);\n\t\t\tapplyViewportOffset(vp, resolvedOffset, position);\n\t\t}\n\n\t\t// Remove empty viewports\n\t\tfor (const [position] of viewports) {\n\t\t\tif (!activePositions.has(position)) {\n\t\t\t\tremoveViewport(position);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Initial sync\n\tsync();\n\n\t// Subscribe to store changes\n\tconst unsubscribe = machine.store.subscribe(sync);\n\n\treturn {\n\t\tdestroy() {\n\t\t\tunsubscribe();\n\t\t\tfor (const inst of instances.values()) {\n\t\t\t\tdestroyInstance(inst);\n\t\t\t}\n\t\t\tinstances.clear();\n\t\t\tfor (const vp of viewports.values()) {\n\t\t\t\tvp.remove();\n\t\t\t}\n\t\t\tviewports.clear();\n\t\t},\n\t\tupdate(newConfig: FluixToasterConfig) {\n\t\t\tcurrentConfig = newConfig;\n\t\t\tmachine.configure(newConfig);\n\t\t},\n\t};\n}\n"]}
1
+ {"version":3,"sources":["../src/toast.ts"],"names":["TOAST_DEFAULTS","CoreToaster","animateSpring","FLUIX_SPRING"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Vanilla JS Toaster — imperative DOM adapter for the Fluix toast system.\n *\n * Subscribes to the core store and diffs snapshots to create, update, and\n * destroy toast DOM elements without any framework dependency.\n */\n\nimport {\n\tToaster as CoreToaster,\n\tFLUIX_SPRING,\n\ttype FluixPosition,\n\ttype FluixToastItem,\n\ttype FluixToastLayout,\n\ttype FluixToasterConfig,\n\tTOAST_DEFAULTS,\n\ttype ToastMachine,\n\tanimateSpring,\n} from \"@fluix-ui/core\";\n\n/* ----------------------------- Constants ----------------------------- */\n\nconst WIDTH = 350;\nconst HEIGHT = 40;\nconst PILL_PADDING = 10;\nconst MIN_EXPAND_RATIO = 2.25;\nconst HEADER_EXIT_MS = 600 * 0.7;\nconst BODY_MERGE_OVERLAP = 6;\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\n/* ----------------------------- Types ----------------------------- */\n\ninterface ToastInstance {\n\tel: HTMLButtonElement;\n\tpillEl: SVGRectElement;\n\tbodyEl: SVGRectElement;\n\tsvgEl: SVGSVGElement;\n\theaderEl: HTMLDivElement;\n\tinnerEl: HTMLDivElement;\n\theaderStackEl: HTMLDivElement;\n\tcontentEl: HTMLDivElement | null;\n\tdescriptionEl: HTMLDivElement | null;\n\tlocalState: { ready: boolean; expanded: boolean };\n\tpillWidth: number;\n\tcontentHeight: number;\n\tfrozenExpanded: number;\n\thovering: boolean;\n\tpendingDismiss: boolean;\n\tdismissRequested: boolean;\n\tpillRo: ResizeObserver;\n\tcontentRo: ResizeObserver | null;\n\tpillAnim: Animation | null;\n\tprevPill: { x: number; width: number; height: number };\n\tpillFirst: boolean;\n\theaderKey: string;\n\theaderPad: number | null;\n\tconnectHandle: { destroy(): void };\n\ttimers: Set<ReturnType<typeof setTimeout>>;\n\titem: FluixToastItem;\n}\n\n/* ----------------------------- SVG icon builders ----------------------------- */\n\nfunction createSvgIcon(state: FluixToastItem[\"state\"]): SVGSVGElement | null {\n\tconst svg = document.createElementNS(SVG_NS, \"svg\");\n\tsvg.setAttribute(\"width\", \"14\");\n\tsvg.setAttribute(\"height\", \"14\");\n\tsvg.setAttribute(\"viewBox\", \"0 0 24 24\");\n\tsvg.setAttribute(\"fill\", \"none\");\n\tsvg.setAttribute(\"stroke\", \"currentColor\");\n\tsvg.setAttribute(\"stroke-width\", \"2.5\");\n\tsvg.setAttribute(\"stroke-linecap\", \"round\");\n\tsvg.setAttribute(\"stroke-linejoin\", \"round\");\n\tsvg.setAttribute(\"aria-hidden\", \"true\");\n\n\tswitch (state) {\n\t\tcase \"success\": {\n\t\t\tconst p = document.createElementNS(SVG_NS, \"polyline\");\n\t\t\tp.setAttribute(\"points\", \"20 6 9 17 4 12\");\n\t\t\tsvg.appendChild(p);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"error\": {\n\t\t\tconst l1 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl1.setAttribute(\"x1\", \"18\");\n\t\t\tl1.setAttribute(\"y1\", \"6\");\n\t\t\tl1.setAttribute(\"x2\", \"6\");\n\t\t\tl1.setAttribute(\"y2\", \"18\");\n\t\t\tconst l2 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl2.setAttribute(\"x1\", \"6\");\n\t\t\tl2.setAttribute(\"y1\", \"6\");\n\t\t\tl2.setAttribute(\"x2\", \"18\");\n\t\t\tl2.setAttribute(\"y2\", \"18\");\n\t\t\tsvg.appendChild(l1);\n\t\t\tsvg.appendChild(l2);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"warning\": {\n\t\t\tconst path = document.createElementNS(SVG_NS, \"path\");\n\t\t\tpath.setAttribute(\n\t\t\t\t\"d\",\n\t\t\t\t\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\",\n\t\t\t);\n\t\t\tconst l1 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl1.setAttribute(\"x1\", \"12\");\n\t\t\tl1.setAttribute(\"y1\", \"9\");\n\t\t\tl1.setAttribute(\"x2\", \"12\");\n\t\t\tl1.setAttribute(\"y2\", \"13\");\n\t\t\tconst l2 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl2.setAttribute(\"x1\", \"12\");\n\t\t\tl2.setAttribute(\"y1\", \"17\");\n\t\t\tl2.setAttribute(\"x2\", \"12.01\");\n\t\t\tl2.setAttribute(\"y2\", \"17\");\n\t\t\tsvg.appendChild(path);\n\t\t\tsvg.appendChild(l1);\n\t\t\tsvg.appendChild(l2);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"info\": {\n\t\t\tconst c = document.createElementNS(SVG_NS, \"circle\");\n\t\t\tc.setAttribute(\"cx\", \"12\");\n\t\t\tc.setAttribute(\"cy\", \"12\");\n\t\t\tc.setAttribute(\"r\", \"10\");\n\t\t\tconst l1 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl1.setAttribute(\"x1\", \"12\");\n\t\t\tl1.setAttribute(\"y1\", \"16\");\n\t\t\tl1.setAttribute(\"x2\", \"12\");\n\t\t\tl1.setAttribute(\"y2\", \"12\");\n\t\t\tconst l2 = document.createElementNS(SVG_NS, \"line\");\n\t\t\tl2.setAttribute(\"x1\", \"12\");\n\t\t\tl2.setAttribute(\"y1\", \"8\");\n\t\t\tl2.setAttribute(\"x2\", \"12.01\");\n\t\t\tl2.setAttribute(\"y2\", \"8\");\n\t\t\tsvg.appendChild(c);\n\t\t\tsvg.appendChild(l1);\n\t\t\tsvg.appendChild(l2);\n\t\t\tbreak;\n\t\t}\n\t\tcase \"loading\": {\n\t\t\tsvg.setAttribute(\"data-fluix-icon\", \"spin\");\n\t\t\tconst lines: [string, string, string, string][] = [\n\t\t\t\t[\"12\", \"2\", \"12\", \"6\"],\n\t\t\t\t[\"12\", \"18\", \"12\", \"22\"],\n\t\t\t\t[\"4.93\", \"4.93\", \"7.76\", \"7.76\"],\n\t\t\t\t[\"16.24\", \"16.24\", \"19.07\", \"19.07\"],\n\t\t\t\t[\"2\", \"12\", \"6\", \"12\"],\n\t\t\t\t[\"18\", \"12\", \"22\", \"12\"],\n\t\t\t\t[\"4.93\", \"19.07\", \"7.76\", \"16.24\"],\n\t\t\t\t[\"16.24\", \"7.76\", \"19.07\", \"4.93\"],\n\t\t\t];\n\t\t\tfor (const [x1, y1, x2, y2] of lines) {\n\t\t\t\tconst l = document.createElementNS(SVG_NS, \"line\");\n\t\t\t\tl.setAttribute(\"x1\", x1);\n\t\t\t\tl.setAttribute(\"y1\", y1);\n\t\t\t\tl.setAttribute(\"x2\", x2);\n\t\t\t\tl.setAttribute(\"y2\", y2);\n\t\t\t\tsvg.appendChild(l);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"action\": {\n\t\t\tconst c = document.createElementNS(SVG_NS, \"circle\");\n\t\t\tc.setAttribute(\"cx\", \"12\");\n\t\t\tc.setAttribute(\"cy\", \"12\");\n\t\t\tc.setAttribute(\"r\", \"10\");\n\t\t\tconst poly = document.createElementNS(SVG_NS, \"polygon\");\n\t\t\tpoly.setAttribute(\"points\", \"10 8 16 12 10 16 10 8\");\n\t\t\tpoly.setAttribute(\"fill\", \"currentColor\");\n\t\t\tpoly.setAttribute(\"stroke\", \"none\");\n\t\t\tsvg.appendChild(c);\n\t\t\tsvg.appendChild(poly);\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t\treturn null;\n\t}\n\treturn svg;\n}\n\nfunction renderIconInto(container: HTMLElement, icon: unknown, state: FluixToastItem[\"state\"]) {\n\tcontainer.textContent = \"\";\n\tif (icon != null) {\n\t\tif (icon instanceof HTMLElement || icon instanceof SVGElement) {\n\t\t\tcontainer.appendChild(icon);\n\t\t} else {\n\t\t\tconst span = document.createElement(\"span\");\n\t\t\tspan.setAttribute(\"aria-hidden\", \"true\");\n\t\t\tspan.textContent = String(icon);\n\t\t\tcontainer.appendChild(span);\n\t\t}\n\t\treturn;\n\t}\n\tconst svgIcon = createSvgIcon(state);\n\tif (svgIcon) container.appendChild(svgIcon);\n}\n\n/* ----------------------------- Helpers ----------------------------- */\n\nfunction getPillAlign(position: FluixPosition): \"left\" | \"center\" | \"right\" {\n\tif (position.includes(\"right\")) return \"right\";\n\tif (position.includes(\"center\")) return \"center\";\n\treturn \"left\";\n}\n\nfunction applyAttrs(el: Element, attrs: Record<string, string>) {\n\tfor (const [key, value] of Object.entries(attrs)) {\n\t\tel.setAttribute(key, value);\n\t}\n}\n\nfunction resolveOffsetValue(v: number | string): string {\n\treturn typeof v === \"number\" ? `${v}px` : v;\n}\n\nfunction applyViewportOffset(\n\tel: HTMLElement,\n\toffset: FluixToasterConfig[\"offset\"],\n\tposition: FluixPosition,\n) {\n\tel.style.top = \"\";\n\tel.style.right = \"\";\n\tel.style.bottom = \"\";\n\tel.style.left = \"\";\n\tel.style.paddingLeft = \"\";\n\tel.style.paddingRight = \"\";\n\n\tif (offset == null) return;\n\n\tlet top: string | undefined;\n\tlet right: string | undefined;\n\tlet bottom: string | undefined;\n\tlet left: string | undefined;\n\n\tif (typeof offset === \"number\" || typeof offset === \"string\") {\n\t\tconst v = resolveOffsetValue(offset as number | string);\n\t\ttop = v;\n\t\tright = v;\n\t\tbottom = v;\n\t\tleft = v;\n\t} else {\n\t\tif (offset.top != null) top = resolveOffsetValue(offset.top);\n\t\tif (offset.right != null) right = resolveOffsetValue(offset.right);\n\t\tif (offset.bottom != null) bottom = resolveOffsetValue(offset.bottom);\n\t\tif (offset.left != null) left = resolveOffsetValue(offset.left);\n\t}\n\n\tif (position.startsWith(\"top\") && top) el.style.top = top;\n\tif (position.startsWith(\"bottom\") && bottom) el.style.bottom = bottom;\n\tif (position.endsWith(\"right\") && right) el.style.right = right;\n\tif (position.endsWith(\"left\") && left) el.style.left = left;\n\tif (position.endsWith(\"center\")) {\n\t\tif (left) el.style.paddingLeft = left;\n\t\tif (right) el.style.paddingRight = right;\n\t}\n}\n\nfunction setTimer(inst: ToastInstance, fn: () => void, ms: number): ReturnType<typeof setTimeout> {\n\tconst id = setTimeout(() => {\n\t\tinst.timers.delete(id);\n\t\tfn();\n\t}, ms);\n\tinst.timers.add(id);\n\treturn id;\n}\n\n/* ----------------------------- Compute layout values ----------------------------- */\n\nfunction computeLayout(item: FluixToastItem, inst: ToastInstance) {\n\tconst { ready, expanded: isExpanded } = inst.localState;\n\tconst roundness = item.roundness ?? TOAST_DEFAULTS.roundness;\n\tconst blur = Math.min(10, Math.max(6, roundness * 0.45));\n\tconst hasDesc = Boolean(item.description) || Boolean(item.button);\n\tconst isLoading = item.state === \"loading\";\n\tconst open = hasDesc && isExpanded && !isLoading;\n\tconst position = getPillAlign(item.position);\n\tconst edge = item.position.startsWith(\"top\") ? \"bottom\" : \"top\";\n\n\tconst resolvedPillWidth = Math.max(inst.pillWidth || HEIGHT, HEIGHT);\n\tconst pillHeight = HEIGHT + blur * 3;\n\tconst pillX =\n\t\tposition === \"right\"\n\t\t\t? WIDTH - resolvedPillWidth\n\t\t\t: position === \"center\"\n\t\t\t\t? (WIDTH - resolvedPillWidth) / 2\n\t\t\t\t: 0;\n\n\tconst minExpanded = HEIGHT * MIN_EXPAND_RATIO;\n\tconst rawExpanded = hasDesc ? Math.max(minExpanded, HEIGHT + inst.contentHeight) : minExpanded;\n\tif (open) {\n\t\tinst.frozenExpanded = rawExpanded;\n\t}\n\tconst expanded = open ? rawExpanded : inst.frozenExpanded;\n\tconst expandedContent = Math.max(0, expanded - HEIGHT);\n\tconst svgHeight = hasDesc ? Math.max(expanded, minExpanded) : HEIGHT;\n\n\treturn {\n\t\tready,\n\t\tisExpanded,\n\t\troundness,\n\t\tblur,\n\t\thasDesc,\n\t\tisLoading,\n\t\topen,\n\t\tposition,\n\t\tedge,\n\t\tresolvedPillWidth,\n\t\tpillHeight,\n\t\tpillX,\n\t\tminExpanded,\n\t\texpanded,\n\t\texpandedContent,\n\t\tsvgHeight,\n\t};\n}\n\n/* ----------------------------- createInstance ----------------------------- */\n\nfunction createInstance(item: FluixToastItem, machine: ToastMachine): ToastInstance {\n\tconst localState = { ready: false, expanded: false };\n\tconst roundness = item.roundness ?? TOAST_DEFAULTS.roundness;\n\tconst blur = Math.min(10, Math.max(6, roundness * 0.45));\n\tconst filterId = `fluix-gooey-${item.id.replace(/[^a-z0-9-]/gi, \"-\")}`;\n\tconst hasDesc = Boolean(item.description) || Boolean(item.button);\n\n\t// Root button\n\tconst el = document.createElement(\"button\");\n\tel.type = \"button\";\n\n\t// Canvas div\n\tconst canvasDiv = document.createElement(\"div\");\n\n\t// SVG — initial height accounts for description area (matches React/Vue)\n\tconst minExpanded = HEIGHT * MIN_EXPAND_RATIO;\n\tconst initialSvgHeight = hasDesc ? minExpanded : HEIGHT;\n\tconst svg = document.createElementNS(SVG_NS, \"svg\");\n\tsvg.setAttribute(\"data-fluix-svg\", \"\");\n\tsvg.setAttribute(\"width\", String(WIDTH));\n\tsvg.setAttribute(\"height\", String(initialSvgHeight));\n\tsvg.setAttribute(\"viewBox\", `0 0 ${WIDTH} ${initialSvgHeight}`);\n\tsvg.setAttribute(\"aria-hidden\", \"true\");\n\n\t// Defs + filter\n\tconst defs = document.createElementNS(SVG_NS, \"defs\");\n\tconst filter = document.createElementNS(SVG_NS, \"filter\");\n\tfilter.setAttribute(\"id\", filterId);\n\tfilter.setAttribute(\"x\", \"-20%\");\n\tfilter.setAttribute(\"y\", \"-20%\");\n\tfilter.setAttribute(\"width\", \"140%\");\n\tfilter.setAttribute(\"height\", \"140%\");\n\tfilter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n\n\tconst feBlur = document.createElementNS(SVG_NS, \"feGaussianBlur\");\n\tfeBlur.setAttribute(\"in\", \"SourceGraphic\");\n\tfeBlur.setAttribute(\"stdDeviation\", String(blur));\n\tfeBlur.setAttribute(\"result\", \"blur\");\n\n\tconst feCM = document.createElementNS(SVG_NS, \"feColorMatrix\");\n\tfeCM.setAttribute(\"in\", \"blur\");\n\tfeCM.setAttribute(\"type\", \"matrix\");\n\tfeCM.setAttribute(\"values\", \"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10\");\n\tfeCM.setAttribute(\"result\", \"goo\");\n\n\tconst feComp = document.createElementNS(SVG_NS, \"feComposite\");\n\tfeComp.setAttribute(\"in\", \"SourceGraphic\");\n\tfeComp.setAttribute(\"in2\", \"goo\");\n\tfeComp.setAttribute(\"operator\", \"atop\");\n\n\tfilter.appendChild(feBlur);\n\tfilter.appendChild(feCM);\n\tfilter.appendChild(feComp);\n\tdefs.appendChild(filter);\n\tsvg.appendChild(defs);\n\n\tconst g = document.createElementNS(SVG_NS, \"g\");\n\tg.setAttribute(\"filter\", `url(#${filterId})`);\n\n\t// Pill rect — initial position matches React/Vue (computed from position)\n\tconst initialPillX =\n\t\tgetPillAlign(item.position) === \"right\"\n\t\t\t? WIDTH - HEIGHT\n\t\t\t: getPillAlign(item.position) === \"center\"\n\t\t\t\t? (WIDTH - HEIGHT) / 2\n\t\t\t\t: 0;\n\tconst pillEl = document.createElementNS(SVG_NS, \"rect\");\n\tpillEl.setAttribute(\"data-fluix-pill\", \"\");\n\tpillEl.setAttribute(\"x\", String(initialPillX));\n\tpillEl.setAttribute(\"y\", \"0\");\n\tpillEl.setAttribute(\"width\", String(HEIGHT));\n\tpillEl.setAttribute(\"height\", String(HEIGHT));\n\tpillEl.setAttribute(\"rx\", String(roundness));\n\tpillEl.setAttribute(\"ry\", String(roundness));\n\tpillEl.setAttribute(\"fill\", item.fill ?? \"var(--fluix-surface-contrast)\");\n\n\t// Body rect\n\tconst bodyEl = document.createElementNS(SVG_NS, \"rect\");\n\tbodyEl.setAttribute(\"data-fluix-body\", \"\");\n\tbodyEl.setAttribute(\"x\", \"0\");\n\tbodyEl.setAttribute(\"y\", String(HEIGHT));\n\tbodyEl.setAttribute(\"width\", String(WIDTH));\n\tbodyEl.setAttribute(\"height\", \"0\");\n\tbodyEl.setAttribute(\"rx\", String(roundness));\n\tbodyEl.setAttribute(\"ry\", String(roundness));\n\tbodyEl.setAttribute(\"fill\", item.fill ?? \"var(--fluix-surface-contrast)\");\n\tbodyEl.setAttribute(\"opacity\", \"0\");\n\n\tg.appendChild(pillEl);\n\tg.appendChild(bodyEl);\n\tsvg.appendChild(g);\n\tcanvasDiv.appendChild(svg);\n\tel.appendChild(canvasDiv);\n\n\t// Header div\n\tconst headerEl = document.createElement(\"div\");\n\tconst headerStackEl = document.createElement(\"div\");\n\theaderStackEl.setAttribute(\"data-fluix-header-stack\", \"\");\n\n\tconst innerEl = document.createElement(\"div\");\n\tinnerEl.setAttribute(\"data-fluix-header-inner\", \"\");\n\tinnerEl.setAttribute(\"data-layer\", \"current\");\n\n\tconst badgeEl = document.createElement(\"div\");\n\trenderIconInto(badgeEl, item.icon, item.state);\n\n\tconst titleEl = document.createElement(\"span\");\n\ttitleEl.textContent = item.title ?? item.state;\n\n\tinnerEl.appendChild(badgeEl);\n\tinnerEl.appendChild(titleEl);\n\theaderStackEl.appendChild(innerEl);\n\theaderEl.appendChild(headerStackEl);\n\tel.appendChild(headerEl);\n\n\t// Content div (optional)\n\tlet contentEl: HTMLDivElement | null = null;\n\tlet descriptionEl: HTMLDivElement | null = null;\n\n\tif (hasDesc) {\n\t\tcontentEl = document.createElement(\"div\");\n\t\tdescriptionEl = document.createElement(\"div\");\n\t\tif (item.styles?.description) {\n\t\t\tdescriptionEl.className = item.styles.description;\n\t\t}\n\n\t\tif (item.description != null) {\n\t\t\tif (typeof item.description === \"string\") {\n\t\t\t\tdescriptionEl.textContent = item.description;\n\t\t\t} else if (item.description instanceof HTMLElement) {\n\t\t\t\tdescriptionEl.appendChild(item.description);\n\t\t\t}\n\t\t}\n\n\t\tif (item.button) {\n\t\t\tconst btn = document.createElement(\"button\");\n\t\t\tbtn.type = \"button\";\n\t\t\tbtn.textContent = item.button.title;\n\t\t\tif (item.styles?.button) {\n\t\t\t\tbtn.className = item.styles.button;\n\t\t\t}\n\t\t\tbtn.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\titem.button?.onClick();\n\t\t\t});\n\t\t\tdescriptionEl.appendChild(btn);\n\t\t}\n\n\t\tcontentEl.appendChild(descriptionEl);\n\t\tel.appendChild(contentEl);\n\t}\n\n\t// Apply initial attrs\n\tconst attrs = CoreToaster.getAttrs(item, localState);\n\tapplyAttrs(el, attrs.root);\n\tapplyAttrs(canvasDiv, attrs.canvas);\n\tapplyAttrs(headerEl, attrs.header);\n\tapplyAttrs(badgeEl, attrs.badge);\n\tif (item.styles?.badge) badgeEl.className = item.styles.badge;\n\tapplyAttrs(titleEl, attrs.title);\n\tif (item.styles?.title) titleEl.className = item.styles.title;\n\tif (contentEl) applyAttrs(contentEl, attrs.content);\n\tif (descriptionEl) applyAttrs(descriptionEl, attrs.description);\n\n\t// Apply button attrs\n\tif (item.button && descriptionEl) {\n\t\tconst btnEl = descriptionEl.querySelector(\"button\");\n\t\tif (btnEl) applyAttrs(btnEl, attrs.button);\n\t}\n\n\tconst headerKey = `${item.state}-${item.title ?? item.state}`;\n\n\tconst inst: ToastInstance = {\n\t\tel,\n\t\tpillEl,\n\t\tbodyEl,\n\t\tsvgEl: svg,\n\t\theaderEl,\n\t\tinnerEl,\n\t\theaderStackEl,\n\t\tcontentEl,\n\t\tdescriptionEl,\n\t\tlocalState,\n\t\tpillWidth: 0,\n\t\tcontentHeight: 0,\n\t\tfrozenExpanded: HEIGHT * MIN_EXPAND_RATIO,\n\t\thovering: false,\n\t\tpendingDismiss: false,\n\t\tdismissRequested: false,\n\t\tpillRo: null!,\n\t\tcontentRo: null,\n\t\tpillAnim: null,\n\t\tprevPill: { x: initialPillX, width: HEIGHT, height: HEIGHT },\n\t\tpillFirst: true,\n\t\theaderKey,\n\t\theaderPad: null,\n\t\tconnectHandle: null!,\n\t\ttimers: new Set(),\n\t\titem,\n\t};\n\n\t// Set up pill ResizeObserver\n\tinst.pillRo = new ResizeObserver(() => {\n\t\trequestAnimationFrame(() => {\n\t\t\tmeasurePillWidth(inst);\n\t\t\tapplyVars(inst, inst.item);\n\t\t\tanimatePill(inst, inst.item);\n\t\t});\n\t});\n\tinst.pillRo.observe(innerEl);\n\n\t// Set up content ResizeObserver\n\tif (descriptionEl) {\n\t\tinst.contentRo = new ResizeObserver(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst h = descriptionEl!.scrollHeight;\n\t\t\t\tif (h !== inst.contentHeight) {\n\t\t\t\t\tinst.contentHeight = h;\n\t\t\t\t\tapplyVars(inst, inst.item);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tinst.contentRo.observe(descriptionEl);\n\t}\n\n\t// Wire connect\n\tinst.connectHandle = CoreToaster.connect(\n\t\tel,\n\t\t{\n\t\t\tonExpand: () => {\n\t\t\t\tif (inst.item.exiting || inst.dismissRequested) return;\n\t\t\t\tinst.localState.expanded = true;\n\t\t\t\tapplyUpdate(inst, inst.item, machine);\n\t\t\t},\n\t\t\tonCollapse: () => {\n\t\t\t\tif (inst.item.exiting || inst.dismissRequested) return;\n\t\t\t\tif (inst.item.autopilot !== false) return;\n\t\t\t\tinst.localState.expanded = false;\n\t\t\t\tapplyUpdate(inst, inst.item, machine);\n\t\t\t},\n\t\t\tonDismiss: () => {\n\t\t\t\tif (inst.dismissRequested) return;\n\t\t\t\tinst.dismissRequested = true;\n\t\t\t\tmachine.dismiss(item.id);\n\t\t\t},\n\t\t\tonHoverStart: () => {\n\t\t\t\tinst.hovering = true;\n\t\t\t},\n\t\t\tonHoverEnd: () => {\n\t\t\t\tinst.hovering = false;\n\t\t\t\tif (inst.pendingDismiss) {\n\t\t\t\t\tinst.pendingDismiss = false;\n\t\t\t\t\tif (inst.dismissRequested) return;\n\t\t\t\t\tinst.dismissRequested = true;\n\t\t\t\t\tmachine.dismiss(inst.item.id);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\titem,\n\t);\n\n\t// Apply initial CSS vars\n\tapplyVars(inst, item);\n\n\t// Ready timer\n\tsetTimer(\n\t\tinst,\n\t\t() => {\n\t\t\tinst.localState.ready = true;\n\t\t\tapplyUpdate(inst, inst.item, machine);\n\t\t\t// Autopilot must be set up after ready (matches React's useEffect dep on ready)\n\t\t\tsetupAutopilot(inst, inst.item, machine);\n\t\t},\n\t\t32,\n\t);\n\n\t// Auto-dismiss timer\n\tsetupAutoDismiss(inst, item, machine);\n\n\t// Initial pill measurement\n\tmeasurePillWidth(inst);\n\n\treturn inst;\n}\n\n/* ----------------------------- measurePillWidth ----------------------------- */\n\nfunction measurePillWidth(inst: ToastInstance) {\n\t// Skip measurement if the element is not connected to the DOM yet\n\tif (!inst.el.isConnected) return;\n\n\tif (inst.headerPad === null) {\n\t\tconst cs = getComputedStyle(inst.headerEl);\n\t\tinst.headerPad = Number.parseFloat(cs.paddingLeft) + Number.parseFloat(cs.paddingRight);\n\t}\n\t// Use getBoundingClientRect for accurate measurement (matches Vue adapter)\n\tconst intrinsicWidth = inst.innerEl.getBoundingClientRect().width;\n\tconst w = intrinsicWidth + inst.headerPad + PILL_PADDING;\n\tif (w > PILL_PADDING && w !== inst.pillWidth) {\n\t\tinst.pillWidth = w;\n\t}\n}\n\n/* ----------------------------- applyVars ----------------------------- */\n\nfunction applyVars(inst: ToastInstance, item: FluixToastItem) {\n\tconst layout = computeLayout(item, inst);\n\tconst { open, expanded, resolvedPillWidth, pillX, edge, expandedContent, svgHeight } = layout;\n\n\tconst vars: Record<string, string> = {\n\t\t\"--_h\": `${open ? expanded : HEIGHT}px`,\n\t\t\"--_pw\": `${resolvedPillWidth}px`,\n\t\t\"--_px\": `${pillX}px`,\n\t\t\"--_ht\": `translateY(${open ? (edge === \"bottom\" ? 3 : -3) : 0}px) scale(${open ? 0.9 : 1})`,\n\t\t\"--_co\": `${open ? 1 : 0}`,\n\t\t\"--_cy\": `${open ? 0 : -14}px`,\n\t\t\"--_cm\": `${open ? expandedContent : 0}px`,\n\t\t\"--_by\": `${open ? HEIGHT - BODY_MERGE_OVERLAP : HEIGHT}px`,\n\t\t\"--_bh\": `${open ? expandedContent : 0}px`,\n\t\t\"--_bo\": `${open ? 1 : 0}`,\n\t};\n\n\tfor (const [key, value] of Object.entries(vars)) {\n\t\tinst.el.style.setProperty(key, value);\n\t}\n\n\t// Update SVG dimensions\n\tinst.svgEl.setAttribute(\"height\", String(svgHeight));\n\tinst.svgEl.setAttribute(\"viewBox\", `0 0 ${WIDTH} ${svgHeight}`);\n}\n\n/* ----------------------------- animatePill ----------------------------- */\n\nfunction animatePill(inst: ToastInstance, item: FluixToastItem) {\n\tconst layout = computeLayout(item, inst);\n\tconst { open, resolvedPillWidth, pillX, pillHeight } = layout;\n\n\tconst prev = inst.prevPill;\n\tconst next = { x: pillX, width: resolvedPillWidth, height: open ? pillHeight : HEIGHT };\n\n\tif (prev.x === next.x && prev.width === next.width && prev.height === next.height) return;\n\n\tinst.pillAnim?.cancel();\n\n\t// Before ready or on first measurement, set attributes directly (no spring)\n\tif (!inst.localState.ready || inst.pillFirst) {\n\t\tinst.pillFirst = false;\n\t\tinst.pillEl.setAttribute(\"x\", String(next.x));\n\t\tinst.pillEl.setAttribute(\"width\", String(next.width));\n\t\tinst.pillEl.setAttribute(\"height\", String(next.height));\n\t\tinst.prevPill = next;\n\t\treturn;\n\t}\n\n\tconst anim = animateSpring(\n\t\tinst.pillEl,\n\t\t{\n\t\t\tx: { from: prev.x, to: next.x, unit: \"px\" },\n\t\t\twidth: { from: prev.width, to: next.width, unit: \"px\" },\n\t\t\theight: { from: prev.height, to: next.height, unit: \"px\" },\n\t\t},\n\t\tFLUIX_SPRING,\n\t);\n\n\tinst.pillAnim = anim;\n\tinst.prevPill = next;\n}\n\n/* ----------------------------- setupAutoDismiss ----------------------------- */\n\nfunction setupAutoDismiss(inst: ToastInstance, item: FluixToastItem, machine: ToastMachine) {\n\tconst duration = item.duration;\n\tif (duration == null || duration <= 0) return;\n\n\tsetTimer(\n\t\tinst,\n\t\t() => {\n\t\t\tif (inst.hovering) {\n\t\t\t\tinst.pendingDismiss = true;\n\t\t\t\tsetTimer(\n\t\t\t\t\tinst,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tif (inst.dismissRequested) return;\n\t\t\t\t\t\tinst.dismissRequested = true;\n\t\t\t\t\t\tinst.pendingDismiss = false;\n\t\t\t\t\t\tmachine.dismiss(item.id);\n\t\t\t\t\t},\n\t\t\t\t\t1200,\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tinst.pendingDismiss = false;\n\t\t\tinst.dismissRequested = true;\n\t\t\tmachine.dismiss(item.id);\n\t\t},\n\t\tduration,\n\t);\n}\n\n/* ----------------------------- setupAutopilot ----------------------------- */\n\nfunction setupAutopilot(inst: ToastInstance, item: FluixToastItem, machine: ToastMachine) {\n\tif (item.autoExpandDelayMs != null && item.autoExpandDelayMs > 0) {\n\t\tsetTimer(\n\t\t\tinst,\n\t\t\t() => {\n\t\t\t\tif (!inst.hovering) {\n\t\t\t\t\tinst.localState.expanded = true;\n\t\t\t\t\tapplyUpdate(inst, inst.item, machine);\n\t\t\t\t}\n\t\t\t},\n\t\t\titem.autoExpandDelayMs,\n\t\t);\n\t}\n\n\tif (item.autoCollapseDelayMs != null && item.autoCollapseDelayMs > 0) {\n\t\tsetTimer(\n\t\t\tinst,\n\t\t\t() => {\n\t\t\t\tif (!inst.hovering) {\n\t\t\t\t\tinst.localState.expanded = false;\n\t\t\t\t\tapplyUpdate(inst, inst.item, machine);\n\t\t\t\t}\n\t\t\t},\n\t\t\titem.autoCollapseDelayMs,\n\t\t);\n\t}\n}\n\n/* ----------------------------- applyUpdate ----------------------------- */\n\nfunction applyUpdate(inst: ToastInstance, item: FluixToastItem, _machine: ToastMachine) {\n\tinst.item = item;\n\n\tconst attrs = CoreToaster.getAttrs(item, inst.localState);\n\tapplyAttrs(inst.el, attrs.root);\n\n\t// Canvas\n\tconst canvasEl = inst.el.querySelector(\"[data-fluix-canvas]\");\n\tif (canvasEl) applyAttrs(canvasEl, attrs.canvas);\n\n\t// Header\n\tapplyAttrs(inst.headerEl, attrs.header);\n\n\t// Badge & title in current layer\n\tconst badgeEl = inst.innerEl.querySelector(\"[data-fluix-badge]\");\n\tif (badgeEl) {\n\t\tapplyAttrs(badgeEl, attrs.badge);\n\t\tif (item.styles?.badge) (badgeEl as HTMLElement).className = item.styles.badge;\n\t}\n\tconst titleEl = inst.innerEl.querySelector(\"[data-fluix-title]\");\n\tif (titleEl) {\n\t\tapplyAttrs(titleEl, attrs.title);\n\t\tif (item.styles?.title) (titleEl as HTMLElement).className = item.styles.title;\n\t}\n\n\t// Content — update description text and button (notch mode swaps content)\n\tconst hasDesc = Boolean(item.description) || Boolean(item.button);\n\tif (hasDesc && !inst.contentEl) {\n\t\t// Toast gained a description — create content elements\n\t\tconst contentEl = document.createElement(\"div\");\n\t\tconst descriptionEl = document.createElement(\"div\");\n\t\tcontentEl.appendChild(descriptionEl);\n\t\tinst.el.appendChild(contentEl);\n\t\tinst.contentEl = contentEl;\n\t\tinst.descriptionEl = descriptionEl;\n\n\t\t// Set up content ResizeObserver\n\t\tinst.contentRo = new ResizeObserver(() => {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst h = descriptionEl.scrollHeight;\n\t\t\t\tif (h !== inst.contentHeight) {\n\t\t\t\t\tinst.contentHeight = h;\n\t\t\t\t\tapplyVars(inst, inst.item);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\tinst.contentRo.observe(descriptionEl);\n\t}\n\n\tif (inst.contentEl) applyAttrs(inst.contentEl, attrs.content);\n\tif (inst.descriptionEl) {\n\t\tapplyAttrs(inst.descriptionEl, attrs.description);\n\t\tif (item.styles?.description) {\n\t\t\tinst.descriptionEl.className = item.styles.description;\n\t\t}\n\n\t\t// Update description content\n\t\t// Remove old children except action button\n\t\tconst existingBtn = inst.descriptionEl.querySelector(\"[data-fluix-button]\");\n\t\tinst.descriptionEl.textContent = \"\";\n\n\t\tif (item.description != null) {\n\t\t\tif (typeof item.description === \"string\") {\n\t\t\t\tinst.descriptionEl.textContent = item.description;\n\t\t\t} else if (item.description instanceof HTMLElement) {\n\t\t\t\tinst.descriptionEl.appendChild(item.description);\n\t\t\t}\n\t\t}\n\n\t\t// Update or create action button\n\t\tif (item.button) {\n\t\t\tlet btnEl = existingBtn as HTMLButtonElement | null;\n\t\t\tif (!btnEl) {\n\t\t\t\tbtnEl = document.createElement(\"button\");\n\t\t\t\tbtnEl.type = \"button\";\n\t\t\t}\n\t\t\tbtnEl.textContent = item.button.title;\n\t\t\tif (item.styles?.button) btnEl.className = item.styles.button;\n\t\t\tapplyAttrs(btnEl, attrs.button);\n\t\t\t// Re-wire click handler\n\t\t\tconst newBtn = btnEl.cloneNode(true) as HTMLButtonElement;\n\t\t\tnewBtn.addEventListener(\"click\", (e) => {\n\t\t\t\te.stopPropagation();\n\t\t\t\titem.button?.onClick();\n\t\t\t});\n\t\t\tinst.descriptionEl.appendChild(newBtn);\n\t\t}\n\t}\n\n\t// Update pill fill\n\tinst.pillEl.setAttribute(\"fill\", item.fill ?? \"var(--fluix-surface-contrast)\");\n\tinst.bodyEl.setAttribute(\"fill\", item.fill ?? \"var(--fluix-surface-contrast)\");\n\n\t// Header crossfade\n\tconst newHeaderKey = `${item.state}-${item.title ?? item.state}`;\n\tif (newHeaderKey !== inst.headerKey) {\n\t\tcrossfadeHeader(inst, item, attrs);\n\t\tinst.headerKey = newHeaderKey;\n\t}\n\n\tapplyVars(inst, item);\n\tanimatePill(inst, item);\n}\n\n/* ----------------------------- crossfadeHeader ----------------------------- */\n\nfunction crossfadeHeader(\n\tinst: ToastInstance,\n\titem: FluixToastItem,\n\tattrs: ReturnType<typeof CoreToaster.getAttrs>,\n) {\n\t// Move current → prev (exiting)\n\tconst oldInner = inst.innerEl;\n\toldInner.setAttribute(\"data-layer\", \"prev\");\n\toldInner.setAttribute(\"data-exiting\", \"true\");\n\n\t// Create new current\n\tconst newInner = document.createElement(\"div\");\n\tnewInner.setAttribute(\"data-fluix-header-inner\", \"\");\n\tnewInner.setAttribute(\"data-layer\", \"current\");\n\n\tconst badgeEl = document.createElement(\"div\");\n\tapplyAttrs(badgeEl, attrs.badge);\n\tif (item.styles?.badge) badgeEl.className = item.styles.badge;\n\trenderIconInto(badgeEl, item.icon, item.state);\n\n\tconst titleEl = document.createElement(\"span\");\n\tapplyAttrs(titleEl, attrs.title);\n\tif (item.styles?.title) titleEl.className = item.styles.title;\n\ttitleEl.textContent = item.title ?? item.state;\n\n\tnewInner.appendChild(badgeEl);\n\tnewInner.appendChild(titleEl);\n\tinst.headerStackEl.insertBefore(newInner, oldInner);\n\tinst.innerEl = newInner;\n\n\t// Re-observe for pill measurement\n\tinst.pillRo.unobserve(oldInner);\n\tinst.pillRo.observe(newInner);\n\n\t// Remove old after exit animation\n\tsetTimer(\n\t\tinst,\n\t\t() => {\n\t\t\toldInner.remove();\n\t\t},\n\t\tHEADER_EXIT_MS,\n\t);\n\n\t// Re-measure pill\n\trequestAnimationFrame(() => {\n\t\tmeasurePillWidth(inst);\n\t\tapplyVars(inst, inst.item);\n\t\tanimatePill(inst, inst.item);\n\t});\n}\n\n/* ----------------------------- destroyInstance ----------------------------- */\n\nfunction destroyInstance(inst: ToastInstance) {\n\tfor (const t of inst.timers) clearTimeout(t);\n\tinst.timers.clear();\n\tinst.pillAnim?.cancel();\n\tinst.pillRo.disconnect();\n\tinst.contentRo?.disconnect();\n\tinst.connectHandle.destroy();\n\tinst.el.remove();\n}\n\n/* ----------------------------- createToaster ----------------------------- */\n\nexport function createToaster(config?: FluixToasterConfig): {\n\tdestroy(): void;\n\tupdate(config: FluixToasterConfig): void;\n} {\n\tconst machine = CoreToaster.getMachine();\n\tlet currentConfig = config;\n\tif (currentConfig) machine.configure(currentConfig);\n\n\tconst instances = new Map<string, ToastInstance>();\n\tconst viewports = new Map<FluixPosition, HTMLElement>();\n\n\tfunction ensureViewport(\n\t\tposition: FluixPosition,\n\t\tlayout: FluixToastLayout,\n\t\toffset: FluixToasterConfig[\"offset\"],\n\t): HTMLElement {\n\t\tlet vp = viewports.get(position);\n\t\tif (!vp) {\n\t\t\tvp = document.createElement(\"section\");\n\t\t\tconst vpAttrs = CoreToaster.getViewportAttrs(position, layout);\n\t\t\tapplyAttrs(vp, vpAttrs);\n\t\t\tapplyViewportOffset(vp, offset, position);\n\t\t\tdocument.body.appendChild(vp);\n\t\t\tviewports.set(position, vp);\n\t\t}\n\t\treturn vp;\n\t}\n\n\tfunction removeViewport(position: FluixPosition) {\n\t\tconst vp = viewports.get(position);\n\t\tif (vp) {\n\t\t\tvp.remove();\n\t\t\tviewports.delete(position);\n\t\t}\n\t}\n\n\tfunction sync() {\n\t\tconst next = machine.store.getSnapshot();\n\t\tconst resolvedLayout = next.config?.layout ?? currentConfig?.layout ?? \"stack\";\n\t\tconst resolvedOffset = next.config?.offset ?? currentConfig?.offset;\n\n\t\t// Track which positions are active\n\t\tconst activePositions = new Set<FluixPosition>();\n\t\tconst nextIds = new Set(next.toasts.map((t) => t.id));\n\n\t\t// Remove instances for toasts that are gone\n\t\tfor (const [id, inst] of instances) {\n\t\t\tif (!nextIds.has(id)) {\n\t\t\t\tdestroyInstance(inst);\n\t\t\t\tinstances.delete(id);\n\t\t\t}\n\t\t}\n\n\t\t// Create/update instances\n\t\tfor (const item of next.toasts) {\n\t\t\tactivePositions.add(item.position);\n\t\t\tconst vp = ensureViewport(item.position, resolvedLayout, resolvedOffset);\n\n\t\t\tconst existing = instances.get(item.id);\n\t\t\tif (!existing) {\n\t\t\t\t// New toast\n\t\t\t\tconst inst = createInstance(item, machine);\n\t\t\t\tinstances.set(item.id, inst);\n\t\t\t\tvp.appendChild(inst.el);\n\t\t\t} else if (existing.item.instanceId !== item.instanceId) {\n\t\t\t\t// Content swapped (e.g., promise resolution) - rebuild\n\t\t\t\tdestroyInstance(existing);\n\t\t\t\tconst inst = createInstance(item, machine);\n\t\t\t\tinstances.set(item.id, inst);\n\t\t\t\tvp.appendChild(inst.el);\n\t\t\t} else {\n\t\t\t\t// Same instance, update attrs/vars\n\t\t\t\tapplyUpdate(existing, item, machine);\n\t\t\t\t// Ensure it's in the right viewport\n\t\t\t\tif (existing.el.parentElement !== vp) {\n\t\t\t\t\tvp.appendChild(existing.el);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update viewport attrs (layout may have changed)\n\t\tfor (const [position, vp] of viewports) {\n\t\t\tconst vpAttrs = CoreToaster.getViewportAttrs(position, resolvedLayout);\n\t\t\tapplyAttrs(vp, vpAttrs);\n\t\t\tapplyViewportOffset(vp, resolvedOffset, position);\n\t\t}\n\n\t\t// Remove empty viewports\n\t\tfor (const [position] of viewports) {\n\t\t\tif (!activePositions.has(position)) {\n\t\t\t\tremoveViewport(position);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Initial sync\n\tsync();\n\n\t// Subscribe to store changes\n\tconst unsubscribe = machine.store.subscribe(sync);\n\n\treturn {\n\t\tdestroy() {\n\t\t\tunsubscribe();\n\t\t\tfor (const inst of instances.values()) {\n\t\t\t\tdestroyInstance(inst);\n\t\t\t}\n\t\t\tinstances.clear();\n\t\t\tfor (const vp of viewports.values()) {\n\t\t\t\tvp.remove();\n\t\t\t}\n\t\t\tviewports.clear();\n\t\t},\n\t\tupdate(newConfig: FluixToasterConfig) {\n\t\t\tcurrentConfig = newConfig;\n\t\t\tmachine.configure(newConfig);\n\t\t},\n\t};\n}\n"]}
@@ -105,8 +105,6 @@ var Fluix = (function (exports) {
105
105
  };
106
106
  var TOAST_DEFAULTS = {
107
107
  duration: 6e3,
108
- lightFill: "#FFFFFF",
109
- darkFill: "#141416",
110
108
  roundness: 16,
111
109
  theme: "light",
112
110
  position: "top-right",
@@ -159,7 +157,7 @@ var Fluix = (function (exports) {
159
157
  theme,
160
158
  position: merged.position ?? fallbackPosition ?? getConfig().position ?? TOAST_DEFAULTS.position,
161
159
  duration,
162
- fill: merged.fill ?? (theme === "dark" ? TOAST_DEFAULTS.darkFill : TOAST_DEFAULTS.lightFill),
160
+ fill: merged.fill,
163
161
  roundness: merged.roundness ?? TOAST_DEFAULTS.roundness,
164
162
  exiting: false,
165
163
  autoExpandDelayMs: auto.expandDelayMs,
@@ -746,7 +744,7 @@ var Fluix = (function (exports) {
746
744
  pillEl.setAttribute("height", String(HEIGHT));
747
745
  pillEl.setAttribute("rx", String(roundness));
748
746
  pillEl.setAttribute("ry", String(roundness));
749
- pillEl.setAttribute("fill", item.fill ?? "#FFFFFF");
747
+ pillEl.setAttribute("fill", item.fill ?? "var(--fluix-surface-contrast)");
750
748
  const bodyEl = document.createElementNS(SVG_NS, "rect");
751
749
  bodyEl.setAttribute("data-fluix-body", "");
752
750
  bodyEl.setAttribute("x", "0");
@@ -755,7 +753,7 @@ var Fluix = (function (exports) {
755
753
  bodyEl.setAttribute("height", "0");
756
754
  bodyEl.setAttribute("rx", String(roundness));
757
755
  bodyEl.setAttribute("ry", String(roundness));
758
- bodyEl.setAttribute("fill", item.fill ?? "#FFFFFF");
756
+ bodyEl.setAttribute("fill", item.fill ?? "var(--fluix-surface-contrast)");
759
757
  bodyEl.setAttribute("opacity", "0");
760
758
  g.appendChild(pillEl);
761
759
  g.appendChild(bodyEl);
@@ -911,11 +909,11 @@ var Fluix = (function (exports) {
911
909
  () => {
912
910
  inst.localState.ready = true;
913
911
  applyUpdate(inst, inst.item);
912
+ setupAutopilot(inst, inst.item);
914
913
  },
915
914
  32
916
915
  );
917
916
  setupAutoDismiss(inst, item, machine2);
918
- setupAutopilot(inst, item);
919
917
  measurePillWidth(inst);
920
918
  return inst;
921
919
  }
@@ -1007,7 +1005,6 @@ var Fluix = (function (exports) {
1007
1005
  );
1008
1006
  }
1009
1007
  function setupAutopilot(inst, item, machine2) {
1010
- if (!inst.localState.ready) return;
1011
1008
  if (item.autoExpandDelayMs != null && item.autoExpandDelayMs > 0) {
1012
1009
  setTimer(
1013
1010
  inst,
@@ -1050,14 +1047,59 @@ var Fluix = (function (exports) {
1050
1047
  applyAttrs(titleEl, attrs.title);
1051
1048
  if (item.styles?.title) titleEl.className = item.styles.title;
1052
1049
  }
1050
+ const hasDesc = Boolean(item.description) || Boolean(item.button);
1051
+ if (hasDesc && !inst.contentEl) {
1052
+ const contentEl = document.createElement("div");
1053
+ const descriptionEl = document.createElement("div");
1054
+ contentEl.appendChild(descriptionEl);
1055
+ inst.el.appendChild(contentEl);
1056
+ inst.contentEl = contentEl;
1057
+ inst.descriptionEl = descriptionEl;
1058
+ inst.contentRo = new ResizeObserver(() => {
1059
+ requestAnimationFrame(() => {
1060
+ const h = descriptionEl.scrollHeight;
1061
+ if (h !== inst.contentHeight) {
1062
+ inst.contentHeight = h;
1063
+ applyVars(inst, inst.item);
1064
+ }
1065
+ });
1066
+ });
1067
+ inst.contentRo.observe(descriptionEl);
1068
+ }
1053
1069
  if (inst.contentEl) applyAttrs(inst.contentEl, attrs.content);
1054
- if (inst.descriptionEl) applyAttrs(inst.descriptionEl, attrs.description);
1055
- if (item.button && inst.descriptionEl) {
1056
- const btnEl = inst.descriptionEl.querySelector("button");
1057
- if (btnEl) applyAttrs(btnEl, attrs.button);
1070
+ if (inst.descriptionEl) {
1071
+ applyAttrs(inst.descriptionEl, attrs.description);
1072
+ if (item.styles?.description) {
1073
+ inst.descriptionEl.className = item.styles.description;
1074
+ }
1075
+ const existingBtn = inst.descriptionEl.querySelector("[data-fluix-button]");
1076
+ inst.descriptionEl.textContent = "";
1077
+ if (item.description != null) {
1078
+ if (typeof item.description === "string") {
1079
+ inst.descriptionEl.textContent = item.description;
1080
+ } else if (item.description instanceof HTMLElement) {
1081
+ inst.descriptionEl.appendChild(item.description);
1082
+ }
1083
+ }
1084
+ if (item.button) {
1085
+ let btnEl = existingBtn;
1086
+ if (!btnEl) {
1087
+ btnEl = document.createElement("button");
1088
+ btnEl.type = "button";
1089
+ }
1090
+ btnEl.textContent = item.button.title;
1091
+ if (item.styles?.button) btnEl.className = item.styles.button;
1092
+ applyAttrs(btnEl, attrs.button);
1093
+ const newBtn = btnEl.cloneNode(true);
1094
+ newBtn.addEventListener("click", (e) => {
1095
+ e.stopPropagation();
1096
+ item.button?.onClick();
1097
+ });
1098
+ inst.descriptionEl.appendChild(newBtn);
1099
+ }
1058
1100
  }
1059
- inst.pillEl.setAttribute("fill", item.fill ?? "#FFFFFF");
1060
- inst.bodyEl.setAttribute("fill", item.fill ?? "#FFFFFF");
1101
+ inst.pillEl.setAttribute("fill", item.fill ?? "var(--fluix-surface-contrast)");
1102
+ inst.bodyEl.setAttribute("fill", item.fill ?? "var(--fluix-surface-contrast)");
1061
1103
  const newHeaderKey = `${item.state}-${item.title ?? item.state}`;
1062
1104
  if (newHeaderKey !== inst.headerKey) {
1063
1105
  crossfadeHeader(inst, item, attrs);