@fluix-ui/vanilla 0.0.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../core/src/primitives/store.ts","../../core/src/primitives/spring.ts","../../core/src/components/toast/toast.machine.ts","../../core/src/components/toast/toast.api.ts","../../core/src/components/toast/toast.attrs.ts","../../core/src/components/toast/toast.connect.ts","../../core/src/components/toast/toast.toaster.ts","../src/toast.ts"],"names":["getPillAlign","machine"],"mappings":"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","file":"index.global.js","sourcesContent":["/**\n * Minimal observable store.\n *\n * Design decisions:\n * - Compatible with React's useSyncExternalStore out of the box\n * - Immutable updates (fn receives prev, must return next)\n * - Synchronous notifications (listeners called immediately on update)\n * - No batching — each update triggers all listeners. Adapters can batch if needed.\n */\n\nexport interface Store<T> {\n\t/** Get current state snapshot. */\n\tgetSnapshot(): T;\n\t/** Subscribe to state changes. Returns unsubscribe function. */\n\tsubscribe(listener: () => void): () => void;\n\t/** Update state with a pure function. */\n\tupdate(fn: (prev: T) => T): void;\n\t/** Set state directly (shorthand for update that ignores prev). */\n\tset(next: T): void;\n\t/** Server snapshot for SSR (React requirement). */\n\tgetServerSnapshot(): T;\n}\n\nexport function createStore<T>(initialState: T): Store<T> {\n\tlet state = initialState;\n\tconst listeners = new Set<() => void>();\n\n\tconst store: Store<T> = {\n\t\tgetSnapshot() {\n\t\t\treturn state;\n\t\t},\n\n\t\tgetServerSnapshot() {\n\t\t\treturn initialState;\n\t\t},\n\n\t\tsubscribe(listener) {\n\t\t\tlisteners.add(listener);\n\t\t\treturn () => {\n\t\t\t\tlisteners.delete(listener);\n\t\t\t};\n\t\t},\n\n\t\tupdate(fn) {\n\t\t\tconst next = fn(state);\n\t\t\tif (next === state) return; // Bail if reference-equal (no-op update)\n\t\t\tstate = next;\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tlistener();\n\t\t\t}\n\t\t},\n\n\t\tset(next) {\n\t\t\tstore.update(() => next);\n\t\t},\n\t};\n\n\treturn store;\n}\n","/**\n * Spring physics solver.\n *\n * Provides three levels of spring animation:\n * 1. CSS linear() easing — best performance (compositor thread), generated once\n * 2. Web Animations API — programmatic, pre-computed keyframes\n * 3. requestAnimationFrame — manual fallback (not implemented yet, reserved)\n *\n * The spring model is a damped harmonic oscillator:\n * x'' = -stiffness * (x - target) - damping * x'\n */\n\nexport interface SpringConfig {\n\t/** Spring stiffness. Higher = faster. Default: 100 */\n\tstiffness?: number;\n\t/** Damping coefficient. Higher = less oscillation. Default: 10 */\n\tdamping?: number;\n\t/** Mass of the object. Higher = more inertia. Default: 1 */\n\tmass?: number;\n}\n\ninterface SpringState {\n\tposition: number;\n\tvelocity: number;\n}\n\nconst DEFAULT_CONFIG: Required<SpringConfig> = {\n\tstiffness: 100,\n\tdamping: 10,\n\tmass: 1,\n};\n\nconst SOLVER_STEP = 1 / 120; // 120Hz simulation step (ms precision)\nconst SETTLE_THRESHOLD = 0.001; // Position + velocity threshold to consider settled\nconst MAX_DURATION_S = 3; // Safety cap\n\nfunction resolveConfig(config?: SpringConfig): Required<SpringConfig> {\n\treturn { ...DEFAULT_CONFIG, ...config };\n}\n\n/**\n * Simulate spring from 0 to 1 and return an array of [time, value] samples.\n * Used internally by both linearEasing and keyframes generators.\n */\nfunction simulateSpring(config?: SpringConfig): Array<[time: number, value: number]> {\n\tconst { stiffness, damping, mass } = resolveConfig(config);\n\tconst samples: Array<[number, number]> = [];\n\n\tlet state: SpringState = { position: 0, velocity: 0 };\n\tlet t = 0;\n\n\tsamples.push([0, 0]);\n\n\twhile (t < MAX_DURATION_S) {\n\t\t// RK4-lite: two half-steps for better accuracy without full RK4 cost\n\t\tconst dt = SOLVER_STEP;\n\t\tconst acceleration = (-stiffness * (state.position - 1) - damping * state.velocity) / mass;\n\t\tconst midVelocity = state.velocity + acceleration * (dt / 2);\n\t\tconst midPosition = state.position + state.velocity * (dt / 2);\n\t\tconst midAcceleration = (-stiffness * (midPosition - 1) - damping * midVelocity) / mass;\n\n\t\tstate = {\n\t\t\tvelocity: state.velocity + midAcceleration * dt,\n\t\t\tposition: state.position + midVelocity * dt,\n\t\t};\n\t\tt += dt;\n\n\t\tsamples.push([t, state.position]);\n\n\t\t// Check if settled\n\t\tif (\n\t\t\tMath.abs(state.position - 1) < SETTLE_THRESHOLD &&\n\t\t\tMath.abs(state.velocity) < SETTLE_THRESHOLD\n\t\t) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Ensure we end exactly at 1\n\tsamples.push([t, 1]);\n\treturn samples;\n}\n\n/**\n * Generate a CSS `linear()` easing string from spring parameters.\n *\n * CSS `linear()` defines an easing as a series of points.\n * We simulate the spring and downsample to ~40-60 points\n * which is enough for smooth visual fidelity.\n *\n * Returns: { easing: string, durationMs: number }\n */\nexport function springToCSS(config?: SpringConfig): { easing: string; durationMs: number } {\n\tconst samples = simulateSpring(config);\n\tconst totalTime = samples[samples.length - 1][0];\n\tconst durationMs = Math.round(totalTime * 1000);\n\n\t// Downsample to ~50 points for reasonable CSS size\n\tconst targetPoints = 50;\n\tconst step = Math.max(1, Math.floor(samples.length / targetPoints));\n\tconst points: string[] = [];\n\n\tfor (let i = 0; i < samples.length; i += step) {\n\t\tconst [t, value] = samples[i];\n\t\tconst pct = (t / totalTime) * 100;\n\t\tpoints.push(`${round(value)} ${round(pct)}%`);\n\t}\n\n\t// Always include the final point\n\tconst last = samples[samples.length - 1];\n\tconst lastPct = (last[0] / totalTime) * 100;\n\tconst lastEntry = `${round(last[1])} ${round(lastPct)}%`;\n\tif (points[points.length - 1] !== lastEntry) {\n\t\tpoints.push(lastEntry);\n\t}\n\n\treturn {\n\t\teasing: `linear(${points.join(\", \")})`,\n\t\tdurationMs,\n\t};\n}\n\n/**\n * Generate WAAPI keyframes for animating a property from `from` to `to`\n * with spring physics.\n */\nexport function springKeyframes(\n\tfrom: number,\n\tto: number,\n\tconfig?: SpringConfig,\n): { keyframes: Keyframe[]; durationMs: number } {\n\tconst samples = simulateSpring(config);\n\tconst totalTime = samples[samples.length - 1][0];\n\tconst range = to - from;\n\n\t// Downsample for WAAPI (fewer frames needed than CSS linear)\n\tconst targetFrames = 30;\n\tconst step = Math.max(1, Math.floor(samples.length / targetFrames));\n\tconst keyframes: Keyframe[] = [];\n\n\tfor (let i = 0; i < samples.length; i += step) {\n\t\tconst [t, value] = samples[i];\n\t\tkeyframes.push({\n\t\t\toffset: t / totalTime,\n\t\t\t// We store the normalized value; caller maps to actual property\n\t\t\t_value: from + value * range,\n\t\t} as Keyframe & { _value: number });\n\t}\n\n\treturn { keyframes, durationMs: Math.round(totalTime * 1000) };\n}\n\n/**\n * Animate an element's CSS properties with spring physics using WAAPI.\n * Returns the Animation object for control (cancel, finish, etc.)\n */\nexport function animateSpring(\n\tel: Element,\n\tproperties: Record<string, { from: number; to: number; unit?: string }>,\n\tconfig?: SpringConfig,\n): Animation | null {\n\tconst samples = simulateSpring(config);\n\tconst totalTime = samples[samples.length - 1][0];\n\tconst durationMs = Math.round(totalTime * 1000);\n\n\t// Downsample\n\tconst targetFrames = 40;\n\tconst step = Math.max(1, Math.floor(samples.length / targetFrames));\n\tconst keyframes: Keyframe[] = [];\n\n\tfor (let i = 0; i < samples.length; i += step) {\n\t\tconst [t, value] = samples[i];\n\t\tconst frame: Keyframe = { offset: t / totalTime };\n\t\tfor (const [prop, { from, to, unit }] of Object.entries(properties)) {\n\t\t\tconst v = from + value * (to - from);\n\t\t\tframe[prop] = unit ? `${round(v)}${unit}` : round(v);\n\t\t}\n\t\tkeyframes.push(frame);\n\t}\n\n\ttry {\n\t\treturn el.animate(keyframes, {\n\t\t\tduration: durationMs,\n\t\t\tfill: \"forwards\",\n\t\t\teasing: \"linear\", // Easing is baked into the keyframes\n\t\t});\n\t} catch {\n\t\t// WAAPI not supported or element not in DOM\n\t\treturn null;\n\t}\n}\n\n/** Round to 3 decimal places to keep CSS compact */\nfunction round(n: number): number {\n\treturn Math.round(n * 1000) / 1000;\n}\n\n/**\n * Pre-computed default spring easing for Fluix.\n * Matches the feel of Sileo's spring (bounce: 0.25, duration: 0.6s).\n */\nexport const FLUIX_SPRING: Required<SpringConfig> = {\n\tstiffness: 170,\n\tdamping: 18,\n\tmass: 1,\n};\n\n/** Cached default CSS spring — generated once, reused everywhere */\nlet cachedDefaultCSS: { easing: string; durationMs: number } | null = null;\n\nexport function getDefaultSpringCSS(): { easing: string; durationMs: number } {\n\tif (!cachedDefaultCSS) {\n\t\tcachedDefaultCSS = springToCSS(FLUIX_SPRING);\n\t}\n\treturn cachedDefaultCSS;\n}\n","/**\n * Toast state machine.\n *\n * Manages the global list of toasts, their lifecycle (create, update, dismiss, exit),\n * and timing (auto-dismiss, auto-expand, auto-collapse).\n *\n * This is the single source of truth. Adapters subscribe to the store\n * and render based on snapshots.\n */\n\nimport { type Store, createStore } from \"../../primitives/store\";\nimport type {\n\tFluixPosition,\n\tFluixToastItem,\n\tFluixToastLayout,\n\tFluixToastOptions,\n\tFluixToastState,\n\tFluixToasterConfig,\n} from \"./toast.types\";\n\n/* -------------------------------- Constants -------------------------------- */\n\nexport const TOAST_DEFAULTS = {\n\tduration: 6000,\n\tlightFill: \"#FFFFFF\",\n\tdarkFill: \"#141416\",\n\troundness: 16,\n\ttheme: \"light\" as const,\n\tposition: \"top-right\" as FluixPosition,\n\tlayout: \"stack\" as FluixToastLayout,\n} as const;\n\n/** Exit animation duration — toast is in \"exiting\" state for this long before removal */\nexport const EXIT_DURATION_MS = TOAST_DEFAULTS.duration * 0.1;\n\n/** Auto-expand delay (time before toast auto-expands to show description) */\nexport const AUTO_EXPAND_DELAY_MS = TOAST_DEFAULTS.duration * 0.025;\n\n/** Auto-collapse delay (time before expanded toast collapses back) */\nexport const AUTO_COLLAPSE_DELAY_MS = TOAST_DEFAULTS.duration - 450;\n\n/* ---------------------------------- State ---------------------------------- */\n\nexport interface ToastMachineState {\n\ttoasts: FluixToastItem[];\n\tconfig: FluixToasterConfig;\n}\n\n/* -------------------------------- ID generation ----------------------------- */\n\nlet idCounter = 0;\n\nfunction generateId(): string {\n\treturn `${++idCounter}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\n/* -------------------------------- Machine ---------------------------------- */\n\nexport interface ToastMachine {\n\tstore: Store<ToastMachineState>;\n\t/** Create or replace a toast. Returns the toast ID. */\n\tcreate(options: FluixToastOptions & { state?: FluixToastState }): string;\n\t/** Update an existing toast in-place. */\n\tupdate(id: string, options: FluixToastOptions & { state?: FluixToastState }): void;\n\t/** Begin exit animation, then remove. */\n\tdismiss(id: string): void;\n\t/** Remove all toasts, optionally filtered by position. */\n\tclear(position?: FluixPosition): void;\n\t/** Update toaster configuration. */\n\tconfigure(config: FluixToasterConfig): void;\n\t/** Clean up all timers. */\n\tdestroy(): void;\n}\n\nexport function createToastMachine(): ToastMachine {\n\tconst store = createStore<ToastMachineState>({\n\t\ttoasts: [],\n\t\tconfig: { position: TOAST_DEFAULTS.position, layout: TOAST_DEFAULTS.layout },\n\t});\n\n\tconst exitTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\n\t/* ------------------------------ Helpers ------------------------------ */\n\n\tfunction getConfig(): FluixToasterConfig {\n\t\treturn store.getSnapshot().config;\n\t}\n\n\tfunction resolveAutopilot(\n\t\topts: FluixToastOptions,\n\t\tduration: number | null,\n\t): { expandDelayMs?: number; collapseDelayMs?: number } {\n\t\tif (opts.autopilot === false || !duration || duration <= 0) return {};\n\t\tconst cfg = typeof opts.autopilot === \"object\" ? opts.autopilot : undefined;\n\t\tconst clamp = (v: number) => Math.min(duration, Math.max(0, v));\n\t\treturn {\n\t\t\texpandDelayMs: clamp(cfg?.expand ?? AUTO_EXPAND_DELAY_MS),\n\t\t\tcollapseDelayMs: clamp(cfg?.collapse ?? AUTO_COLLAPSE_DELAY_MS),\n\t\t};\n\t}\n\n\tfunction mergeDefaults(opts: FluixToastOptions): FluixToastOptions {\n\t\tconst defaults = getConfig().defaults;\n\t\tif (!defaults) return opts;\n\t\treturn {\n\t\t\t...defaults,\n\t\t\t...opts,\n\t\t\tstyles: { ...defaults.styles, ...opts.styles },\n\t\t};\n\t}\n\n\tfunction buildItem(\n\t\topts: FluixToastOptions & { state?: FluixToastState },\n\t\tid: string,\n\t\tfallbackPosition?: FluixPosition,\n\t): FluixToastItem {\n\t\tconst merged = mergeDefaults(opts);\n\t\tconst theme = merged.theme ?? TOAST_DEFAULTS.theme;\n\t\tconst duration = merged.duration ?? TOAST_DEFAULTS.duration;\n\t\tconst auto = resolveAutopilot(merged, duration);\n\n\t\treturn {\n\t\t\t...merged,\n\t\t\tid,\n\t\t\tinstanceId: generateId(),\n\t\t\tstate: opts.state ?? \"success\",\n\t\t\ttheme,\n\t\t\tposition:\n\t\t\t\tmerged.position ?? fallbackPosition ?? getConfig().position ?? TOAST_DEFAULTS.position,\n\t\t\tduration,\n\t\t\tfill: merged.fill ?? (theme === \"dark\" ? TOAST_DEFAULTS.darkFill : TOAST_DEFAULTS.lightFill),\n\t\t\troundness: merged.roundness ?? TOAST_DEFAULTS.roundness,\n\t\t\texiting: false,\n\t\t\tautoExpandDelayMs: auto.expandDelayMs,\n\t\t\tautoCollapseDelayMs: auto.collapseDelayMs,\n\t\t};\n\t}\n\n\t/* ----------------------------- Public API ----------------------------- */\n\n\tfunction create(opts: FluixToastOptions & { state?: FluixToastState }): string {\n\t\tconst requestedId = opts.id ?? generateId();\n\t\tlet resolvedId = requestedId;\n\n\t\tstore.update((prev) => {\n\t\t\tconst live = prev.toasts.filter((t) => !t.exiting);\n\t\t\tconst existing = live.find((t) => t.id === requestedId);\n\t\t\tconst item = buildItem(opts, requestedId, existing?.position);\n\t\t\tconst layout = prev.config.layout ?? TOAST_DEFAULTS.layout;\n\n\t\t\tif (existing) {\n\t\t\t\treturn {\n\t\t\t\t\t...prev,\n\t\t\t\t\ttoasts: prev.toasts.map((t) => (t.id === requestedId ? item : t)),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (layout === \"notch\") {\n\t\t\t\tconst currentAtPosition = live.find((t) => t.position === item.position);\n\t\t\t\tif (currentAtPosition) {\n\t\t\t\t\t// Dynamic island behavior: keep a single mounted toast per position\n\t\t\t\t\t// and replace its content in-place.\n\t\t\t\t\tresolvedId = currentAtPosition.id;\n\t\t\t\t\tconst replaced = {\n\t\t\t\t\t\t...item,\n\t\t\t\t\t\tid: currentAtPosition.id,\n\t\t\t\t\t\tinstanceId: currentAtPosition.instanceId,\n\t\t\t\t\t};\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...prev,\n\t\t\t\t\t\ttoasts: prev.toasts.map((t) => (t.id === currentAtPosition.id ? replaced : t)),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t...prev,\n\t\t\t\t\ttoasts: [...prev.toasts.filter((t) => t.id !== requestedId), item],\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\ttoasts: [...prev.toasts.filter((t) => t.id !== requestedId), item],\n\t\t\t};\n\t\t});\n\n\t\treturn resolvedId;\n\t}\n\n\tfunction update(id: string, opts: FluixToastOptions & { state?: FluixToastState }): void {\n\t\tstore.update((prev) => {\n\t\t\tconst existing = prev.toasts.find((t) => t.id === id);\n\t\t\tif (!existing) return prev;\n\t\t\tconst item = buildItem(opts, id, existing.position);\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\ttoasts: prev.toasts.map((t) => (t.id === id ? item : t)),\n\t\t\t};\n\t\t});\n\t}\n\n\tfunction dismiss(id: string): void {\n\t\tconst { toasts } = store.getSnapshot();\n\t\tconst item = toasts.find((t) => t.id === id);\n\t\tif (!item || item.exiting) return;\n\n\t\t// Mark as exiting\n\t\tstore.update((prev) => ({\n\t\t\t...prev,\n\t\t\ttoasts: prev.toasts.map((t) => (t.id === id ? { ...t, exiting: true } : t)),\n\t\t}));\n\n\t\t// Remove after exit animation\n\t\tconst timer = setTimeout(() => {\n\t\t\texitTimers.delete(id);\n\t\t\tstore.update((prev) => ({\n\t\t\t\t...prev,\n\t\t\t\ttoasts: prev.toasts.filter((t) => t.id !== id),\n\t\t\t}));\n\t\t}, EXIT_DURATION_MS);\n\n\t\texitTimers.set(id, timer);\n\t}\n\n\tfunction clear(position?: FluixPosition): void {\n\t\tstore.update((prev) => ({\n\t\t\t...prev,\n\t\t\ttoasts: position ? prev.toasts.filter((t) => t.position !== position) : [],\n\t\t}));\n\t}\n\n\tfunction configure(config: FluixToasterConfig): void {\n\t\tstore.update((prev) => ({\n\t\t\t...prev,\n\t\t\tconfig: { ...prev.config, ...config },\n\t\t}));\n\t}\n\n\tfunction destroy(): void {\n\t\tfor (const timer of exitTimers.values()) clearTimeout(timer);\n\t\texitTimers.clear();\n\t}\n\n\treturn { store, create, update, dismiss, clear, configure, destroy };\n}\n","/**\n * Imperative Toast API.\n *\n * This is the public-facing API that users import and call directly.\n * It wraps a singleton toast machine.\n *\n * Usage:\n * import { fluix } from \"@fluix-ui/core\";\n * fluix.success({ title: \"Saved!\" });\n */\n\nimport { type ToastMachine, createToastMachine } from \"./toast.machine\";\nimport type {\n\tFluixPosition,\n\tFluixToastOptions,\n\tFluixToastPromiseOptions,\n\tFluixToasterConfig,\n} from \"./toast.types\";\n\n/* ----------------------------- Singleton Machine --------------------------- */\n\nlet machine: ToastMachine | null = null;\n\nexport function getToastMachine(): ToastMachine {\n\tif (!machine) {\n\t\tmachine = createToastMachine();\n\t}\n\treturn machine;\n}\n\n/** Reset the singleton (useful for tests). */\nexport function resetToastMachine(): void {\n\tmachine?.destroy();\n\tmachine = null;\n}\n\n/* -------------------------------- Public API -------------------------------- */\n\nexport const fluix = {\n\t/** Show a toast with explicit options. */\n\tshow(opts: FluixToastOptions): string {\n\t\treturn getToastMachine().create(opts);\n\t},\n\n\t/** Show a success toast. */\n\tsuccess(opts: FluixToastOptions): string {\n\t\treturn getToastMachine().create({ ...opts, state: \"success\" });\n\t},\n\n\t/** Show an error toast. */\n\terror(opts: FluixToastOptions): string {\n\t\treturn getToastMachine().create({ ...opts, state: \"error\" });\n\t},\n\n\t/** Show a warning toast. */\n\twarning(opts: FluixToastOptions): string {\n\t\treturn getToastMachine().create({ ...opts, state: \"warning\" });\n\t},\n\n\t/** Show an info toast. */\n\tinfo(opts: FluixToastOptions): string {\n\t\treturn getToastMachine().create({ ...opts, state: \"info\" });\n\t},\n\n\t/** Show an action toast (with button). */\n\taction(opts: FluixToastOptions): string {\n\t\treturn getToastMachine().create({ ...opts, state: \"action\" });\n\t},\n\n\t/**\n\t * Bind a promise to a toast.\n\t * Shows loading state, then transitions to success or error.\n\t */\n\tpromise<T>(\n\t\tpromise: Promise<T> | (() => Promise<T>),\n\t\topts: FluixToastPromiseOptions<T>,\n\t): Promise<T> {\n\t\tconst m = getToastMachine();\n\t\tconst id = m.create({\n\t\t\t...opts.loading,\n\t\t\tstate: \"loading\",\n\t\t\tduration: null, // Persistent until promise resolves\n\t\t\tposition: opts.position,\n\t\t});\n\n\t\tconst p = typeof promise === \"function\" ? promise() : promise;\n\n\t\tp.then((data) => {\n\t\t\tif (opts.action) {\n\t\t\t\tconst actionOpts = typeof opts.action === \"function\" ? opts.action(data) : opts.action;\n\t\t\t\tm.update(id, { ...actionOpts, state: \"action\", id });\n\t\t\t} else {\n\t\t\t\tconst successOpts = typeof opts.success === \"function\" ? opts.success(data) : opts.success;\n\t\t\t\tm.update(id, { ...successOpts, state: \"success\", id });\n\t\t\t}\n\t\t}).catch((err) => {\n\t\t\tconst errorOpts = typeof opts.error === \"function\" ? opts.error(err) : opts.error;\n\t\t\tm.update(id, { ...errorOpts, state: \"error\", id });\n\t\t});\n\n\t\treturn p;\n\t},\n\n\t/** Dismiss a specific toast by ID. */\n\tdismiss(id: string): void {\n\t\tgetToastMachine().dismiss(id);\n\t},\n\n\t/** Clear all toasts, or only those at a specific position. */\n\tclear(position?: FluixPosition): void {\n\t\tgetToastMachine().clear(position);\n\t},\n\n\t/** Update default toaster configuration. */\n\tconfigure(config: FluixToasterConfig): void {\n\t\tgetToastMachine().configure(config);\n\t},\n};\n","/**\n * Toast DOM Attribute Contract.\n *\n * Maps toast state to data-attributes that CSS selectors target.\n * This is the bridge between core logic and styling.\n *\n * Every adapter must apply these attributes to the correct DOM elements\n * for the component to look and animate correctly.\n */\n\nimport type { FluixPosition, FluixToastItem, FluixToastLayout } from \"./toast.types\";\n\nexport interface ToastAttrs {\n\tviewport: Record<string, string>;\n\troot: Record<string, string>;\n\tcanvas: Record<string, string>;\n\theader: Record<string, string>;\n\tbadge: Record<string, string>;\n\ttitle: Record<string, string>;\n\tcontent: Record<string, string>;\n\tdescription: Record<string, string>;\n\tbutton: Record<string, string>;\n}\n\ntype ExpandDirection = \"top\" | \"bottom\";\ntype PillAlign = \"left\" | \"center\" | \"right\";\n\nfunction getPillAlign(position: FluixPosition): PillAlign {\n\tif (position.includes(\"right\")) return \"right\";\n\tif (position.includes(\"center\")) return \"center\";\n\treturn \"left\";\n}\n\nfunction getExpandDirection(position: FluixPosition): ExpandDirection {\n\treturn position.startsWith(\"top\") ? \"bottom\" : \"top\";\n}\n\n/** Generate viewport container attributes for a position group. */\nexport function getViewportAttrs(\n\tposition: FluixPosition,\n\tlayout: FluixToastLayout = \"stack\",\n): Record<string, string> {\n\treturn {\n\t\t\"data-fluix-viewport\": \"\",\n\t\t\"data-position\": position,\n\t\t\"data-layout\": layout,\n\t\t\"aria-live\": \"polite\",\n\t\trole: \"region\",\n\t};\n}\n\n/** Generate all data-attributes for a single toast item. */\nexport function getToastAttrs(\n\titem: FluixToastItem,\n\tcontext: {\n\t\tready: boolean;\n\t\texpanded: boolean;\n\t},\n): ToastAttrs {\n\tconst edge = getExpandDirection(item.position);\n\tconst pillAlign = getPillAlign(item.position);\n\n\treturn {\n\t\tviewport: getViewportAttrs(item.position),\n\n\t\troot: {\n\t\t\t\"data-fluix-toast\": \"\",\n\t\t\t\"data-state\": item.state,\n\t\t\t\"data-theme\": item.theme,\n\t\t\t\"data-ready\": String(context.ready),\n\t\t\t\"data-expanded\": String(context.expanded),\n\t\t\t\"data-exiting\": String(item.exiting),\n\t\t\t\"data-edge\": edge,\n\t\t\t\"data-position\": pillAlign,\n\t\t},\n\n\t\tcanvas: {\n\t\t\t\"data-fluix-canvas\": \"\",\n\t\t\t\"data-edge\": edge,\n\t\t},\n\n\t\theader: {\n\t\t\t\"data-fluix-header\": \"\",\n\t\t\t\"data-edge\": edge,\n\t\t},\n\n\t\tbadge: {\n\t\t\t\"data-fluix-badge\": \"\",\n\t\t\t\"data-state\": item.state,\n\t\t},\n\n\t\ttitle: {\n\t\t\t\"data-fluix-title\": \"\",\n\t\t\t\"data-state\": item.state,\n\t\t},\n\n\t\tcontent: {\n\t\t\t\"data-fluix-content\": \"\",\n\t\t\t\"data-edge\": edge,\n\t\t\t\"data-visible\": String(context.expanded),\n\t\t},\n\n\t\tdescription: {\n\t\t\t\"data-fluix-description\": \"\",\n\t\t},\n\n\t\tbutton: {\n\t\t\t\"data-fluix-button\": \"\",\n\t\t\t\"data-state\": item.state,\n\t\t},\n\t};\n}\n","/**\n * Toast DOM event wiring.\n *\n * Connects a toast DOM element to the machine.\n * Handles: hover (expand/collapse), swipe-to-dismiss, pointer events.\n *\n * Used directly by the vanilla adapter and as reference implementation\n * for framework adapters that may inline these handlers.\n */\n\nimport type { FluixToastItem } from \"./toast.types\";\n\nexport interface ToastConnectCallbacks {\n\tonExpand(): void;\n\tonCollapse(): void;\n\tonDismiss(): void;\n\tonHoverStart(): void;\n\tonHoverEnd(): void;\n}\n\nconst SWIPE_DISMISS_THRESHOLD = 30; // px\nconst SWIPE_MAX_VISUAL = 20; // px (visual clamp during drag)\n\nexport function connectToast(\n\telement: HTMLElement,\n\tcallbacks: ToastConnectCallbacks,\n\titem: FluixToastItem,\n): { destroy(): void } {\n\tconst cleanups: Array<() => void> = [];\n\tlet pointerStartY: number | null = null;\n\tconst hasDescription = Boolean(item.description) || Boolean(item.button);\n\n\t/* ----------------------------- Hover ----------------------------- */\n\n\tconst handleMouseEnter = () => {\n\t\tcallbacks.onHoverStart();\n\t\tif (hasDescription && item.state !== \"loading\") {\n\t\t\tcallbacks.onExpand();\n\t\t}\n\t};\n\n\tconst handleMouseLeave = () => {\n\t\tcallbacks.onHoverEnd();\n\t\tcallbacks.onCollapse();\n\t};\n\n\telement.addEventListener(\"mouseenter\", handleMouseEnter);\n\telement.addEventListener(\"mouseleave\", handleMouseLeave);\n\tcleanups.push(() => {\n\t\telement.removeEventListener(\"mouseenter\", handleMouseEnter);\n\t\telement.removeEventListener(\"mouseleave\", handleMouseLeave);\n\t});\n\n\t/* ----------------------------- Swipe ----------------------------- */\n\n\tconst handlePointerMove = (e: PointerEvent) => {\n\t\tif (pointerStartY === null) return;\n\t\tconst dy = e.clientY - pointerStartY;\n\t\tconst sign = dy > 0 ? 1 : -1;\n\t\tconst clamped = Math.min(Math.abs(dy), SWIPE_MAX_VISUAL) * sign;\n\t\telement.style.transform = `translateY(${clamped}px)`;\n\t};\n\n\tconst handlePointerUp = (e: PointerEvent) => {\n\t\tif (pointerStartY === null) return;\n\t\tconst dy = e.clientY - pointerStartY;\n\t\tpointerStartY = null;\n\t\telement.style.transform = \"\";\n\n\t\telement.removeEventListener(\"pointermove\", handlePointerMove);\n\t\telement.removeEventListener(\"pointerup\", handlePointerUp);\n\n\t\tif (Math.abs(dy) > SWIPE_DISMISS_THRESHOLD) {\n\t\t\tcallbacks.onDismiss();\n\t\t}\n\t};\n\n\tconst handlePointerDown = (e: PointerEvent) => {\n\t\tif (item.exiting) return;\n\n\t\t// Don't capture swipe if clicking the action button\n\t\tconst target = e.target as HTMLElement;\n\t\tif (target.closest(\"[data-fluix-button]\")) return;\n\n\t\tpointerStartY = e.clientY;\n\t\t(e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n\n\t\telement.addEventListener(\"pointermove\", handlePointerMove, { passive: true });\n\t\telement.addEventListener(\"pointerup\", handlePointerUp, { passive: true });\n\t};\n\n\telement.addEventListener(\"pointerdown\", handlePointerDown);\n\tcleanups.push(() => {\n\t\telement.removeEventListener(\"pointerdown\", handlePointerDown);\n\t\telement.removeEventListener(\"pointermove\", handlePointerMove);\n\t\telement.removeEventListener(\"pointerup\", handlePointerUp);\n\t});\n\n\treturn {\n\t\tdestroy() {\n\t\t\tfor (const cleanup of cleanups) cleanup();\n\t\t\tcleanups.length = 0;\n\t\t},\n\t};\n}\n","/**\n * Toaster — single entry point for the toast component from core.\n *\n * Adapters (React, Vue, etc.) use this to subscribe, get attrs, and connect\n * DOM events. All toast logic lives here; adapters only bind to their framework.\n */\n\nimport { getToastMachine, resetToastMachine } from \"./toast.api\";\nimport { getToastAttrs, getViewportAttrs } from \"./toast.attrs\";\nimport type { ToastAttrs } from \"./toast.attrs\";\nimport { connectToast } from \"./toast.connect\";\nimport type { ToastConnectCallbacks } from \"./toast.connect\";\nimport type { ToastMachine } from \"./toast.machine\";\nimport type { FluixPosition, FluixToastItem, FluixToastLayout } from \"./toast.types\";\n\nexport interface ToasterApi {\n\t/** Get the singleton toast machine (store + create/dismiss/configure). */\n\tgetMachine(): ToastMachine;\n\t/** Reset the singleton (e.g. for tests). */\n\treset(): void;\n\t/** Get data-attributes for a single toast. */\n\tgetAttrs(item: FluixToastItem, context: { ready: boolean; expanded: boolean }): ToastAttrs;\n\t/** Get data-attributes for a viewport container by position. */\n\tgetViewportAttrs(position: FluixPosition, layout?: FluixToastLayout): Record<string, string>;\n\t/** Wire DOM events (hover, swipe, expand/collapse) for a toast element. */\n\tconnect(\n\t\telement: HTMLElement,\n\t\tcallbacks: ToastConnectCallbacks,\n\t\titem: FluixToastItem,\n\t): { destroy(): void };\n}\n\nexport const Toaster: ToasterApi = {\n\tgetMachine: getToastMachine,\n\treset: resetToastMachine,\n\tgetAttrs: getToastAttrs,\n\tgetViewportAttrs,\n\tconnect: connectToast,\n};\n","/**\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"]}