@fluix-ui/vanilla 0.0.6 → 0.0.8

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.
@@ -1 +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","../../core/src/components/notch/notch.machine.ts","../../core/src/components/notch/notch.attrs.ts","../src/toast.ts","../src/notch.ts"],"names":["getPillAlign","machine","SVG_NS","applyAttrs"],"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\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,\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 * Notch state machine.\n *\n * Manages open/close state and content dimensions.\n * Adapters subscribe to the store and animate based on snapshots.\n */\n\nimport { type Store, createStore } from \"../../primitives/store\";\nimport type { NotchConfig, NotchPosition, NotchSize, NotchTrigger } from \"./notch.types\";\n\nexport const NOTCH_DEFAULTS = {\n\tposition: \"top-center\" as NotchPosition,\n\ttrigger: \"click\" as NotchTrigger,\n\troundness: 20,\n\tpillHeight: 40,\n\tpillMinWidth: 40,\n} as const;\n\nexport interface NotchMachineState {\n\topen: boolean;\n\tconfig: NotchConfig;\n\t/** Measured size of the expanded content slot */\n\tcontentSize: NotchSize;\n\t/** Measured size of the collapsed pill slot */\n\tbaseSize: NotchSize;\n}\n\nexport interface NotchMachine {\n\tstore: Store<NotchMachineState>;\n\topen(): void;\n\tclose(): void;\n\ttoggle(): void;\n\t/** Update measured content dimensions (called by adapter's ResizeObserver) */\n\tsetContentSize(size: NotchSize): void;\n\t/** Update measured base pill dimensions */\n\tsetBaseSize(size: NotchSize): void;\n\t/** Update config */\n\tconfigure(config: NotchConfig): void;\n\tdestroy(): void;\n}\n\nexport function createNotchMachine(initialConfig?: NotchConfig): NotchMachine {\n\tconst store = createStore<NotchMachineState>({\n\t\topen: false,\n\t\tconfig: { ...initialConfig },\n\t\tcontentSize: { w: 0, h: 0 },\n\t\tbaseSize: { w: NOTCH_DEFAULTS.pillMinWidth, h: NOTCH_DEFAULTS.pillHeight },\n\t});\n\n\tfunction open() {\n\t\tstore.update((prev) => (prev.open ? prev : { ...prev, open: true }));\n\t}\n\n\tfunction close() {\n\t\tstore.update((prev) => (prev.open ? { ...prev, open: false } : prev));\n\t}\n\n\tfunction toggle() {\n\t\tstore.update((prev) => ({ ...prev, open: !prev.open }));\n\t}\n\n\tfunction setContentSize(size: NotchSize) {\n\t\tstore.update((prev) => {\n\t\t\tif (prev.contentSize.w === size.w && prev.contentSize.h === size.h) return prev;\n\t\t\treturn { ...prev, contentSize: size };\n\t\t});\n\t}\n\n\tfunction setBaseSize(size: NotchSize) {\n\t\tstore.update((prev) => {\n\t\t\tif (prev.baseSize.w === size.w && prev.baseSize.h === size.h) return prev;\n\t\t\treturn { ...prev, baseSize: size };\n\t\t});\n\t}\n\n\tfunction configure(config: NotchConfig) {\n\t\tstore.update((prev) => ({ ...prev, config: { ...prev.config, ...config } }));\n\t}\n\n\tfunction destroy() {\n\t\t// Reserved for future timer/listener cleanup\n\t}\n\n\treturn { store, open, close, toggle, setContentSize, setBaseSize, configure, destroy };\n}\n","/**\n * Notch DOM Attribute Contract.\n *\n * Maps notch state to data-attributes that CSS selectors target.\n */\n\nimport type { NotchPosition, NotchTheme } from \"./notch.types\";\n\nexport interface NotchAttrs {\n\troot: Record<string, string>;\n\tcanvas: Record<string, string>;\n\tpill: Record<string, string>;\n\tcontent: Record<string, string>;\n}\n\nexport function getNotchAttrs(context: {\n\topen: boolean;\n\tposition: NotchPosition;\n\ttheme?: NotchTheme;\n}): NotchAttrs {\n\tconst root: Record<string, string> = {\n\t\t\"data-fluix-notch\": \"\",\n\t\t\"data-open\": String(context.open),\n\t\t\"data-position\": context.position,\n\t};\n\tif (context.theme) {\n\t\troot[\"data-theme\"] = context.theme;\n\t}\n\n\treturn {\n\t\troot,\n\t\tcanvas: {\n\t\t\t\"data-fluix-notch-canvas\": \"\",\n\t\t},\n\t\tpill: {\n\t\t\t\"data-fluix-notch-pill\": \"\",\n\t\t},\n\t\tcontent: {\n\t\t\t\"data-fluix-notch-content\": \"\",\n\t\t\t\"data-open\": String(context.open),\n\t\t},\n\t};\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 ?? \"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","/**\r\n * Vanilla JS Notch — imperative DOM adapter for the Fluix Notch component.\r\n *\r\n * Creates all DOM elements (measurer, root, SVG canvas with gooey filter +\r\n * highlight rect, pill div, content div), subscribes to the core notch machine,\r\n * and drives WAAPI spring animations.\r\n */\r\n\r\nimport {\r\n\tcreateNotchMachine,\r\n\tgetNotchAttrs,\r\n\tanimateSpring,\r\n\tFLUIX_SPRING,\r\n\tNOTCH_DEFAULTS,\r\n\ttype NotchMachine,\r\n\ttype NotchPosition,\r\n\ttype NotchTrigger,\r\n\ttype NotchTheme,\r\n\ttype SpringConfig,\r\n} from \"@fluix-ui/core\";\r\n\r\n/* ----------------------------- Constants ----------------------------- */\r\n\r\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\r\n\r\n/* ----------------------------- Types ----------------------------- */\r\n\r\nexport interface NotchOptions {\r\n\ttrigger?: NotchTrigger;\r\n\tposition?: NotchPosition;\r\n\tspring?: SpringConfig;\r\n\t/** Collapsed dot size in px. Default: 36 */\r\n\tdotSize?: number;\r\n\troundness?: number;\r\n\t/** Visual theme. Default: \"dark\" */\r\n\ttheme?: NotchTheme;\r\n\tfill?: string;\r\n\topen?: boolean;\r\n\tonOpenChange?: (open: boolean) => void;\r\n\t/** Icon/content shown in the collapsed dot */\r\n\tpill: HTMLElement | string;\r\n\t/** Content shown when expanded */\r\n\tcontent: HTMLElement | string;\r\n}\r\n\r\nexport interface NotchInstance {\r\n\topen(): void;\r\n\tclose(): void;\r\n\ttoggle(): void;\r\n\tdestroy(): void;\r\n\tupdate(opts: Partial<NotchOptions>): void;\r\n}\r\n\r\n/* ----------------------------- Helpers ----------------------------- */\r\n\r\nfunction applyAttrs(el: Element, attrs: Record<string, string>) {\r\n\tfor (const [key, value] of Object.entries(attrs)) {\r\n\t\tel.setAttribute(key, value);\r\n\t}\r\n}\r\n\r\nfunction resolveContent(source: HTMLElement | string): HTMLElement {\r\n\tif (source instanceof HTMLElement) return source;\r\n\tconst span = document.createElement(\"span\");\r\n\tspan.textContent = source;\r\n\treturn span;\r\n}\r\n\r\n/* ----------------------------- createNotch ----------------------------- */\r\n\r\nexport function createNotch(\r\n\tcontainer: HTMLElement,\r\n\toptions: NotchOptions,\r\n): NotchInstance {\r\n\tlet {\r\n\t\ttrigger = \"click\",\r\n\t\tposition = \"top-center\",\r\n\t\tspring,\r\n\t\tdotSize = 36,\r\n\t\troundness = NOTCH_DEFAULTS.roundness,\r\n\t\ttheme = \"dark\",\r\n\t\tfill,\r\n\t\topen: controlledOpen,\r\n\t\tonOpenChange,\r\n\t} = options;\r\n\r\n\tconst springConfig = (): SpringConfig => spring ?? FLUIX_SPRING;\r\n\r\n\t/* ---- Core machine ---- */\r\n\tconst machine: NotchMachine = createNotchMachine({\r\n\t\tposition,\r\n\t\ttrigger,\r\n\t\troundness,\r\n\t\tfill,\r\n\t\tspring,\r\n\t});\r\n\r\n\tlet snapshot = machine.store.getSnapshot();\r\n\tlet prevOpenVal: boolean | undefined;\r\n\r\n\t/* ---- Derived values ---- */\r\n\tconst blur = () => Math.min(10, Math.max(6, roundness * 0.45));\r\n\r\n\tconst collapsedW = () => dotSize;\r\n\tconst collapsedH = () => dotSize;\r\n\r\n\tlet contentSize = { w: 200, h: 44 };\r\n\r\n\tconst hlPad = 12;\r\n\tconst expandedW = () => contentSize.w + hlPad * 2;\r\n\tconst expandedH = () => Math.max(contentSize.h + hlPad, dotSize);\r\n\r\n\tconst targetW = () => (snapshot.open ? expandedW() : collapsedW());\r\n\tconst targetH = () => (snapshot.open ? expandedH() : collapsedH());\r\n\r\n\tconst rootW = () => Math.max(expandedW(), collapsedW());\r\n\tconst rootH = () => Math.max(expandedH(), collapsedH());\r\n\r\n\t/* ---- Animation state ---- */\r\n\tconst prev = { w: 0, h: 0, initialized: false };\r\n\tlet currentAnim: Animation | null = null;\r\n\r\n\t/* ---- Hover blob state ---- */\n\tlet highlightAnim: Animation | null = null;\n\tconst hlPrev = { x: 0, y: 0, w: 0, h: 0, visible: false };\n\r\n\t/* ---- Create DOM: Hidden content measurer ---- */\r\n\tconst measureEl = document.createElement(\"div\");\r\n\tmeasureEl.setAttribute(\"data-fluix-notch-measure\", \"\");\r\n\tmeasureEl.appendChild(resolveContent(options.content).cloneNode(true));\r\n\tcontainer.appendChild(measureEl);\r\n\r\n\t/* ---- Create DOM: Root ---- */\r\n\tconst rootEl = document.createElement(\"div\");\r\n\tconst attrs = getNotchAttrs({ open: snapshot.open, position, theme });\r\n\tapplyAttrs(rootEl, attrs.root);\r\n\trootEl.style.width = `${rootW()}px`;\r\n\trootEl.style.height = `${rootH()}px`;\r\n\r\n\t/* ---- Create DOM: SVG canvas ---- */\r\n\tconst canvasDiv = document.createElement(\"div\");\r\n\tapplyAttrs(canvasDiv, attrs.canvas);\r\n\r\n\tconst svg = document.createElementNS(SVG_NS, \"svg\");\r\n\tsvg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\r\n\tsvg.setAttribute(\"width\", String(rootW()));\r\n\tsvg.setAttribute(\"height\", String(rootH()));\r\n\tsvg.setAttribute(\"viewBox\", `0 0 ${rootW()} ${rootH()}`);\r\n\tsvg.setAttribute(\"aria-hidden\", \"true\");\r\n\r\n\t// Defs + gooey filter\r\n\tconst defs = document.createElementNS(SVG_NS, \"defs\");\r\n\tconst filter = document.createElementNS(SVG_NS, \"filter\");\r\n\tfilter.setAttribute(\"id\", \"fluix-notch-goo\");\r\n\tfilter.setAttribute(\"x\", \"-20%\");\r\n\tfilter.setAttribute(\"y\", \"-20%\");\r\n\tfilter.setAttribute(\"width\", \"140%\");\r\n\tfilter.setAttribute(\"height\", \"140%\");\r\n\tfilter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\r\n\r\n\tconst feBlur = document.createElementNS(SVG_NS, \"feGaussianBlur\");\r\n\tfeBlur.setAttribute(\"in\", \"SourceGraphic\");\r\n\tfeBlur.setAttribute(\"stdDeviation\", String(blur()));\r\n\tfeBlur.setAttribute(\"result\", \"blur\");\r\n\r\n\tconst feCM = document.createElementNS(SVG_NS, \"feColorMatrix\");\r\n\tfeCM.setAttribute(\"in\", \"blur\");\r\n\tfeCM.setAttribute(\"type\", \"matrix\");\r\n\tfeCM.setAttribute(\"values\", \"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10\");\r\n\tfeCM.setAttribute(\"result\", \"goo\");\r\n\r\n\tconst feComp = document.createElementNS(SVG_NS, \"feComposite\");\r\n\tfeComp.setAttribute(\"in\", \"SourceGraphic\");\r\n\tfeComp.setAttribute(\"in2\", \"goo\");\r\n\tfeComp.setAttribute(\"operator\", \"atop\");\r\n\r\n\tfilter.appendChild(feBlur);\r\n\tfilter.appendChild(feCM);\r\n\tfilter.appendChild(feComp);\r\n\tdefs.appendChild(filter);\r\n\tsvg.appendChild(defs);\r\n\r\n\tconst gGroup = document.createElementNS(SVG_NS, \"g\");\r\n\tgGroup.setAttribute(\"filter\", \"url(#fluix-notch-goo)\");\r\n\r\n\t// Main shape rect\r\n\tconst svgRectEl = document.createElementNS(SVG_NS, \"rect\");\r\n\tconst cw = collapsedW();\r\n\tconst ch = collapsedH();\r\n\tsvgRectEl.setAttribute(\"x\", String((rootW() - cw) / 2));\r\n\tsvgRectEl.setAttribute(\"y\", String((rootH() - ch) / 2));\r\n\tsvgRectEl.setAttribute(\"width\", String(cw));\r\n\tsvgRectEl.setAttribute(\"height\", String(ch));\r\n\tsvgRectEl.setAttribute(\"rx\", String(cw / 2));\r\n\tsvgRectEl.setAttribute(\"ry\", String(ch / 2));\r\n\tsvgRectEl.setAttribute(\"fill\", fill ?? \"var(--fluix-notch-bg)\");\r\n\r\n\tgGroup.appendChild(svgRectEl);\r\n\tsvg.appendChild(gGroup);\r\n\r\n\t// Hover blob (same fill, inside gooey group for local deformation)\n\tconst hoverBlobEl = document.createElementNS(SVG_NS, \"rect\");\n\thoverBlobEl.setAttribute(\"x\", String((rootW() - cw) / 2));\n\thoverBlobEl.setAttribute(\"y\", String((rootH() - ch) / 2));\n\thoverBlobEl.setAttribute(\"width\", \"0\");\n\thoverBlobEl.setAttribute(\"height\", \"0\");\n\thoverBlobEl.setAttribute(\"rx\", \"0\");\n\thoverBlobEl.setAttribute(\"ry\", \"0\");\n\thoverBlobEl.setAttribute(\"opacity\", \"0\");\n\thoverBlobEl.setAttribute(\"fill\", fill ?? \"var(--fluix-notch-bg)\");\n\tgGroup.appendChild(hoverBlobEl);\n\r\n\tcanvasDiv.appendChild(svg);\r\n\trootEl.appendChild(canvasDiv);\r\n\r\n\t/* ---- Create DOM: Pill div ---- */\r\n\tconst pillDiv = document.createElement(\"div\");\r\n\tapplyAttrs(pillDiv, attrs.pill);\r\n\tpillDiv.style.width = `${dotSize}px`;\r\n\tpillDiv.style.height = `${dotSize}px`;\r\n\tpillDiv.appendChild(resolveContent(options.pill));\r\n\trootEl.appendChild(pillDiv);\r\n\r\n\t/* ---- Create DOM: Content div ---- */\r\n\tconst contentDiv = document.createElement(\"div\");\r\n\tapplyAttrs(contentDiv, attrs.content);\r\n\tcontentDiv.appendChild(resolveContent(options.content));\r\n\trootEl.appendChild(contentDiv);\r\n\r\n\tcontainer.appendChild(rootEl);\r\n\r\n\t/* ---- Initialize prev for animation ---- */\r\n\tprev.w = cw;\r\n\tprev.h = ch;\r\n\tprev.initialized = true;\r\n\r\n\t/* ---- ResizeObserver for content measurement ---- */\r\n\tlet measureRaf = 0;\r\n\tconst measureObs = new ResizeObserver(() => {\r\n\t\tcancelAnimationFrame(measureRaf);\r\n\t\tmeasureRaf = requestAnimationFrame(() => {\r\n\t\t\tconst r = measureEl.getBoundingClientRect();\r\n\t\t\tif (r.width > 0 && r.height > 0) {\r\n\t\t\t\tconst newSize = { w: Math.ceil(r.width), h: Math.ceil(r.height) };\r\n\t\t\t\tif (newSize.w !== contentSize.w || newSize.h !== contentSize.h) {\r\n\t\t\t\t\tcontentSize = newSize;\r\n\t\t\t\t\tupdateLayout();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\tmeasureObs.observe(measureEl);\r\n\r\n\t/* ---- Highlight tracking ---- */\r\n\tfunction onItemEnter(e: MouseEvent) {\n\t\tconst target = (e.target as HTMLElement).closest(\"a, button\") as HTMLElement | null;\r\n\t\tif (!target || !snapshot.open) return;\r\n\r\n\t\tconst rootRect = rootEl.getBoundingClientRect();\r\n\t\tconst itemW = target.offsetWidth;\r\n\t\tconst itemH = target.offsetHeight;\r\n\t\tconst itemRect = target.getBoundingClientRect();\r\n\t\tconst itemCenterX = itemRect.left + itemRect.width / 2;\r\n\t\tconst itemCenterY = itemRect.top + itemRect.height / 2;\r\n\r\n\t\tconst padX = 8;\n\t\tconst padY = 4;\n\t\tconst blobOvershoot = Math.max(6, roundness * 0.35);\n\t\tconst toW = itemW + padX * 2;\n\t\tconst toH = Math.max(itemH + padY * 2, rootRect.height + blobOvershoot * 2);\n\t\tconst toX = itemCenterX - rootRect.left - toW / 2;\n\t\tconst toY = itemCenterY - rootRect.top - toH / 2;\n\t\tconst toRx = toH / 2;\r\n\r\n\t\tconst fromX = hlPrev.visible ? hlPrev.x : toX + toW / 2;\n\t\tconst fromY = hlPrev.visible ? hlPrev.y : toY + toH / 2;\n\t\tconst fromW = hlPrev.visible ? hlPrev.w : 0;\n\t\tconst fromH = hlPrev.visible ? hlPrev.h : 0;\n\t\tconst fromR = hlPrev.visible ? hlPrev.h / 2 : 0;\n\n\t\tif (highlightAnim) {\n\t\t\thighlightAnim.cancel();\n\t\t\thighlightAnim = null;\n\t\t}\r\n\r\n\t\tconst sc = springConfig();\r\n\t\tconst a = animateSpring(\r\n\t\t\thoverBlobEl,\n\t\t\t{\n\t\t\t\tx: { from: fromX, to: toX, unit: \"px\" },\n\t\t\t\ty: { from: fromY, to: toY, unit: \"px\" },\n\t\t\t\twidth: { from: fromW, to: toW, unit: \"px\" },\n\t\t\t\theight: { from: fromH, to: toH, unit: \"px\" },\n\t\t\t\trx: { from: fromR, to: toRx, unit: \"px\" },\n\t\t\t\try: { from: fromR, to: toRx, unit: \"px\" },\n\t\t\t},\n\t\t\t{ ...sc, stiffness: (sc.stiffness ?? 300) * 1.2 },\n\t\t);\n\r\n\t\thlPrev.x = toX;\r\n\t\thlPrev.y = toY;\r\n\t\thlPrev.w = toW;\r\n\t\thlPrev.h = toH;\r\n\r\n\t\tif (a) {\r\n\t\t\thighlightAnim = a;\r\n\t\t\ta.onfinish = () => {\r\n\t\t\t\thighlightAnim = null;\n\t\t\t\thoverBlobEl.setAttribute(\"x\", String(toX));\n\t\t\t\thoverBlobEl.setAttribute(\"y\", String(toY));\n\t\t\t\thoverBlobEl.setAttribute(\"width\", String(toW));\n\t\t\t\thoverBlobEl.setAttribute(\"height\", String(toH));\n\t\t\t\thoverBlobEl.setAttribute(\"rx\", String(toRx));\n\t\t\t\thoverBlobEl.setAttribute(\"ry\", String(toRx));\n\t\t\t\thoverBlobEl.setAttribute(\"opacity\", \"1\");\n\t\t\t};\n\t\t} else {\n\t\t\thoverBlobEl.setAttribute(\"x\", String(toX));\n\t\t\thoverBlobEl.setAttribute(\"y\", String(toY));\n\t\t\thoverBlobEl.setAttribute(\"width\", String(toW));\n\t\t\thoverBlobEl.setAttribute(\"height\", String(toH));\n\t\t\thoverBlobEl.setAttribute(\"rx\", String(toRx));\n\t\t\thoverBlobEl.setAttribute(\"ry\", String(toRx));\n\t\t\thoverBlobEl.setAttribute(\"opacity\", \"1\");\n\t\t}\n\t\thoverBlobEl.setAttribute(\"opacity\", \"1\");\n\t\thlPrev.visible = true;\n\t}\n\n\tfunction resetHoverBlobImmediate() {\n\t\tif (highlightAnim) {\n\t\t\thighlightAnim.cancel();\n\t\t\thighlightAnim = null;\n\t\t}\n\t\thoverBlobEl.setAttribute(\"x\", String(rootW() / 2));\n\t\thoverBlobEl.setAttribute(\"y\", String(rootH() / 2));\n\t\thoverBlobEl.setAttribute(\"width\", \"0\");\n\t\thoverBlobEl.setAttribute(\"height\", \"0\");\n\t\thoverBlobEl.setAttribute(\"rx\", \"0\");\n\t\thoverBlobEl.setAttribute(\"ry\", \"0\");\n\t\thoverBlobEl.setAttribute(\"opacity\", \"0\");\n\t\thlPrev.visible = false;\n\t}\n\n\tfunction onItemLeave() {\n\t\tif (!hlPrev.visible) return;\n\t\tconst cx = hlPrev.x + hlPrev.w / 2;\n\t\tconst cy = hlPrev.y + hlPrev.h / 2;\n\t\tconst sc = springConfig();\n\t\tconst a = animateSpring(\n\t\t\thoverBlobEl,\n\t\t\t{\n\t\t\t\tx: { from: hlPrev.x, to: cx, unit: \"px\" },\n\t\t\t\ty: { from: hlPrev.y, to: cy, unit: \"px\" },\n\t\t\t\twidth: { from: hlPrev.w, to: 0, unit: \"px\" },\n\t\t\t\theight: { from: hlPrev.h, to: 0, unit: \"px\" },\n\t\t\t\trx: { from: hlPrev.h / 2, to: 0, unit: \"px\" },\n\t\t\t\try: { from: hlPrev.h / 2, to: 0, unit: \"px\" },\n\t\t\t},\n\t\t\t{ ...sc, stiffness: (sc.stiffness ?? 300) * 1.2 },\n\t\t);\n\t\tif (a) {\n\t\t\thighlightAnim = a;\n\t\t\ta.onfinish = () => {\n\t\t\t\thighlightAnim = null;\n\t\t\t\thoverBlobEl.setAttribute(\"x\", String(cx));\n\t\t\t\thoverBlobEl.setAttribute(\"y\", String(cy));\n\t\t\t\thoverBlobEl.setAttribute(\"width\", \"0\");\n\t\t\t\thoverBlobEl.setAttribute(\"height\", \"0\");\n\t\t\t\thoverBlobEl.setAttribute(\"rx\", \"0\");\n\t\t\t\thoverBlobEl.setAttribute(\"ry\", \"0\");\n\t\t\t\thoverBlobEl.setAttribute(\"opacity\", \"0\");\n\t\t\t};\n\t\t} else {\n\t\t\thoverBlobEl.setAttribute(\"x\", String(cx));\n\t\t\thoverBlobEl.setAttribute(\"y\", String(cy));\n\t\t\thoverBlobEl.setAttribute(\"width\", \"0\");\n\t\t\thoverBlobEl.setAttribute(\"height\", \"0\");\n\t\t\thoverBlobEl.setAttribute(\"rx\", \"0\");\n\t\t\thoverBlobEl.setAttribute(\"ry\", \"0\");\n\t\t\thoverBlobEl.setAttribute(\"opacity\", \"0\");\n\t\t}\n\t\thlPrev.visible = false;\n\t}\n\r\n\t/* ---- Event handlers ---- */\r\n\tfunction handleOpen() {\r\n\t\tif (controlledOpen === undefined) machine.open();\r\n\t\telse onOpenChange?.(true);\r\n\t}\r\n\tfunction handleClose() {\r\n\t\tif (controlledOpen === undefined) machine.close();\r\n\t\telse onOpenChange?.(false);\r\n\t}\r\n\tfunction handleToggle() {\r\n\t\tif (controlledOpen === undefined) machine.toggle();\r\n\t\telse onOpenChange?.(!snapshot.open);\r\n\t}\r\n\tfunction onMouseEnter() {\r\n\t\tif (trigger === \"hover\") handleOpen();\r\n\t}\r\n\tfunction onMouseLeave() {\n\t\tif (trigger === \"hover\") {\n\t\t\thandleClose();\n\t\t\tresetHoverBlobImmediate();\n\t\t\treturn;\n\t\t}\n\t\tonItemLeave();\n\t}\n\tfunction onClick() {\r\n\t\tif (trigger === \"click\") handleToggle();\r\n\t}\r\n\r\n\trootEl.addEventListener(\"mouseenter\", onMouseEnter);\r\n\trootEl.addEventListener(\"mouseleave\", onMouseLeave);\r\n\trootEl.addEventListener(\"mouseover\", onItemEnter);\r\n\trootEl.addEventListener(\"click\", onClick);\r\n\r\n\t/* ---- SVG rect animation ---- */\r\n\tfunction animateRect() {\r\n\t\tconst tw = targetW();\r\n\t\tconst th = targetH();\r\n\r\n\t\tif (tw === prev.w && th === prev.h) return;\r\n\r\n\t\tif (currentAnim) {\r\n\t\t\tcurrentAnim.cancel();\r\n\t\t\tcurrentAnim = null;\r\n\t\t}\r\n\r\n\t\tconst rw = rootW();\r\n\t\tconst rh = rootH();\r\n\r\n\t\tconst fromW = prev.w;\r\n\t\tconst fromH = prev.h;\r\n\t\tconst fromX = (rw - fromW) / 2;\r\n\t\tconst fromY = (rh - fromH) / 2;\r\n\t\tconst toX = (rw - tw) / 2;\r\n\t\tconst toY = (rh - th) / 2;\r\n\r\n\t\tprev.w = tw;\r\n\t\tprev.h = th;\r\n\r\n\t\tconst isCollapsing = tw === collapsedW() && th === collapsedH();\r\n\t\tconst wasCollapsed = fromW === collapsedW() && fromH === collapsedH();\r\n\t\tconst fromRx = wasCollapsed ? collapsedW() / 2 : roundness;\r\n\t\tconst toRx = isCollapsing ? collapsedW() / 2 : roundness;\r\n\r\n\t\tconst a = animateSpring(\r\n\t\t\tsvgRectEl,\r\n\t\t\t{\r\n\t\t\t\twidth: { from: fromW, to: tw, unit: \"px\" },\r\n\t\t\t\theight: { from: fromH, to: th, unit: \"px\" },\r\n\t\t\t\tx: { from: fromX, to: toX, unit: \"px\" },\r\n\t\t\t\ty: { from: fromY, to: toY, unit: \"px\" },\r\n\t\t\t\trx: { from: fromRx, to: toRx, unit: \"px\" },\r\n\t\t\t\try: { from: fromRx, to: toRx, unit: \"px\" },\r\n\t\t\t},\r\n\t\t\tspringConfig(),\r\n\t\t);\r\n\r\n\t\tif (a) {\r\n\t\t\tcurrentAnim = a;\r\n\t\t\ta.onfinish = () => {\r\n\t\t\t\tcurrentAnim = null;\r\n\t\t\t\tsvgRectEl.setAttribute(\"width\", String(tw));\r\n\t\t\t\tsvgRectEl.setAttribute(\"height\", String(th));\r\n\t\t\t\tsvgRectEl.setAttribute(\"x\", String(toX));\r\n\t\t\t\tsvgRectEl.setAttribute(\"y\", String(toY));\r\n\t\t\t\tsvgRectEl.setAttribute(\"rx\", String(toRx));\r\n\t\t\t\tsvgRectEl.setAttribute(\"ry\", String(toRx));\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tsvgRectEl.setAttribute(\"width\", String(tw));\r\n\t\t\tsvgRectEl.setAttribute(\"height\", String(th));\r\n\t\t\tsvgRectEl.setAttribute(\"x\", String(toX));\r\n\t\t\tsvgRectEl.setAttribute(\"y\", String(toY));\r\n\t\t\tsvgRectEl.setAttribute(\"rx\", String(toRx));\r\n\t\t\tsvgRectEl.setAttribute(\"ry\", String(toRx));\r\n\t\t}\r\n\t}\r\n\r\n\t/* ---- Layout update ---- */\r\n\tfunction updateLayout() {\r\n\t\tconst isOpen = snapshot.open;\r\n\t\tconst newAttrs = getNotchAttrs({ open: isOpen, position, theme });\r\n\r\n\t\t// Update root attrs and size\r\n\t\tapplyAttrs(rootEl, newAttrs.root);\r\n\t\trootEl.style.width = `${rootW()}px`;\r\n\t\trootEl.style.height = `${rootH()}px`;\r\n\r\n\t\t// Update SVG viewBox\r\n\t\tsvg.setAttribute(\"width\", String(rootW()));\r\n\t\tsvg.setAttribute(\"height\", String(rootH()));\r\n\t\tsvg.setAttribute(\"viewBox\", `0 0 ${rootW()} ${rootH()}`);\r\n\r\n\t\t// Update gooey filter blur\r\n\t\tfeBlur.setAttribute(\"stdDeviation\", String(blur()));\r\n\r\n\t\t// Update fill\n\t\tsvgRectEl.setAttribute(\"fill\", fill ?? \"var(--fluix-notch-bg)\");\n\t\thoverBlobEl.setAttribute(\"fill\", fill ?? \"var(--fluix-notch-bg)\");\n\r\n\t\t// Update content attrs\r\n\t\tapplyAttrs(contentDiv, newAttrs.content);\r\n\r\n\t\t// Animate the SVG rect\r\n\t\tanimateRect();\r\n\r\n\t\t// Reset hover blob when closing\n\t\tif (!isOpen) {\n\t\t\tresetHoverBlobImmediate();\n\t\t}\n\r\n\t\t// Expose notch height as CSS variable for toast collision avoidance\r\n\t\tdocument.documentElement.style.setProperty(\r\n\t\t\t\"--fluix-notch-offset\",\r\n\t\t\t`${rootH()}px`,\r\n\t\t);\r\n\t}\r\n\r\n\t/* ---- Store subscription ---- */\r\n\tconst unsubscribe = machine.store.subscribe(() => {\r\n\t\tconst next = machine.store.getSnapshot();\r\n\t\tsnapshot = next;\r\n\r\n\t\t// Controlled open sync\r\n\t\tif (controlledOpen !== undefined) {\r\n\t\t\tif (controlledOpen && !next.open) machine.open();\r\n\t\t\telse if (!controlledOpen && next.open) machine.close();\r\n\t\t}\r\n\r\n\t\t// Fire onOpenChange callback\r\n\t\tif (prevOpenVal !== undefined && prevOpenVal !== next.open) {\r\n\t\t\tonOpenChange?.(next.open);\r\n\t\t}\r\n\t\tprevOpenVal = next.open;\r\n\r\n\t\tupdateLayout();\r\n\t});\r\n\r\n\t// Initial layout\r\n\tupdateLayout();\r\n\r\n\t// Set initial CSS variable\r\n\tdocument.documentElement.style.setProperty(\r\n\t\t\"--fluix-notch-offset\",\r\n\t\t`${rootH()}px`,\r\n\t);\r\n\r\n\t/* ---- Public API ---- */\r\n\treturn {\r\n\t\topen() {\r\n\t\t\thandleOpen();\r\n\t\t},\r\n\r\n\t\tclose() {\r\n\t\t\thandleClose();\r\n\t\t},\r\n\r\n\t\ttoggle() {\r\n\t\t\thandleToggle();\r\n\t\t},\r\n\r\n\t\tdestroy() {\r\n\t\t\tunsubscribe();\r\n\t\t\tcancelAnimationFrame(measureRaf);\r\n\t\t\tmeasureObs.disconnect();\r\n\t\t\tcurrentAnim?.cancel();\r\n\t\t\thighlightAnim?.cancel();\r\n\t\t\trootEl.removeEventListener(\"mouseenter\", onMouseEnter);\r\n\t\t\trootEl.removeEventListener(\"mouseleave\", onMouseLeave);\r\n\t\t\trootEl.removeEventListener(\"mouseover\", onItemEnter);\r\n\t\t\trootEl.removeEventListener(\"click\", onClick);\r\n\t\t\tmachine.destroy();\r\n\t\t\tmeasureEl.remove();\r\n\t\t\trootEl.remove();\r\n\t\t\tdocument.documentElement.style.removeProperty(\"--fluix-notch-offset\");\r\n\t\t},\r\n\r\n\t\tupdate(opts: Partial<NotchOptions>) {\r\n\t\t\t// Update local option values\r\n\t\t\tif (opts.trigger !== undefined) trigger = opts.trigger;\r\n\t\t\tif (opts.position !== undefined) position = opts.position;\r\n\t\t\tif (opts.spring !== undefined) spring = opts.spring;\r\n\t\t\tif (opts.dotSize !== undefined) dotSize = opts.dotSize;\r\n\t\t\tif (opts.roundness !== undefined) roundness = opts.roundness;\r\n\t\t\tif (opts.theme !== undefined) theme = opts.theme;\r\n\t\t\tif (opts.fill !== undefined) fill = opts.fill;\r\n\t\t\tif (opts.open !== undefined) controlledOpen = opts.open;\r\n\t\t\tif (opts.onOpenChange !== undefined) onOpenChange = opts.onOpenChange;\r\n\r\n\t\t\t// Update pill content\r\n\t\t\tif (opts.pill !== undefined) {\r\n\t\t\t\tpillDiv.textContent = \"\";\r\n\t\t\t\tpillDiv.appendChild(resolveContent(opts.pill));\r\n\t\t\t}\r\n\r\n\t\t\t// Update expanded content\r\n\t\t\tif (opts.content !== undefined) {\r\n\t\t\t\tcontentDiv.textContent = \"\";\r\n\t\t\t\tcontentDiv.appendChild(resolveContent(opts.content));\r\n\t\t\t\tmeasureEl.textContent = \"\";\r\n\t\t\t\tmeasureEl.appendChild(resolveContent(opts.content).cloneNode(true));\r\n\t\t\t}\r\n\r\n\t\t\t// Update pill style\r\n\t\t\tpillDiv.style.width = `${dotSize}px`;\r\n\t\t\tpillDiv.style.height = `${dotSize}px`;\r\n\r\n\t\t\t// Reconfigure the core machine\r\n\t\t\tmachine.configure({ position, trigger, roundness, fill, spring });\r\n\r\n\t\t\t// Sync controlled open\r\n\t\t\tif (controlledOpen !== undefined) {\r\n\t\t\t\tif (controlledOpen && !snapshot.open) machine.open();\r\n\t\t\t\telse if (!controlledOpen && snapshot.open) machine.close();\r\n\t\t\t}\r\n\r\n\t\t\t// Re-apply event listeners (trigger may have changed)\r\n\t\t\trootEl.removeEventListener(\"mouseenter\", onMouseEnter);\r\n\t\t\trootEl.removeEventListener(\"mouseleave\", onMouseLeave);\r\n\t\t\trootEl.removeEventListener(\"click\", onClick);\r\n\t\t\trootEl.addEventListener(\"mouseenter\", onMouseEnter);\r\n\t\t\trootEl.addEventListener(\"mouseleave\", onMouseLeave);\r\n\t\t\trootEl.addEventListener(\"click\", onClick);\r\n\r\n\t\t\tupdateLayout();\r\n\t\t},\r\n\t};\r\n}\r\n"]}
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","../../core/src/components/notch/notch.machine.ts","../../core/src/components/notch/notch.attrs.ts","../../core/src/components/menu/menu.machine.ts","../../core/src/components/menu/menu.attrs.ts","../../core/src/components/menu/menu.connect.ts","../src/toast.ts","../src/notch.ts","../src/menu.ts"],"names":["to","getPillAlign","machine","SVG_NS","applyAttrs"],"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\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,\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 * Notch state machine.\n *\n * Manages open/close state and content dimensions.\n * Adapters subscribe to the store and animate based on snapshots.\n */\n\nimport { type Store, createStore } from \"../../primitives/store\";\nimport type { NotchConfig, NotchPosition, NotchSize, NotchTrigger } from \"./notch.types\";\n\nexport const NOTCH_DEFAULTS = {\n\tposition: \"top-center\" as NotchPosition,\n\ttrigger: \"click\" as NotchTrigger,\n\troundness: 20,\n\tpillHeight: 40,\n\tpillMinWidth: 40,\n} as const;\n\nexport interface NotchMachineState {\n\topen: boolean;\n\tconfig: NotchConfig;\n\t/** Measured size of the expanded content slot */\n\tcontentSize: NotchSize;\n\t/** Measured size of the collapsed pill slot */\n\tbaseSize: NotchSize;\n}\n\nexport interface NotchMachine {\n\tstore: Store<NotchMachineState>;\n\topen(): void;\n\tclose(): void;\n\ttoggle(): void;\n\t/** Update measured content dimensions (called by adapter's ResizeObserver) */\n\tsetContentSize(size: NotchSize): void;\n\t/** Update measured base pill dimensions */\n\tsetBaseSize(size: NotchSize): void;\n\t/** Update config */\n\tconfigure(config: NotchConfig): void;\n\tdestroy(): void;\n}\n\nexport function createNotchMachine(initialConfig?: NotchConfig): NotchMachine {\n\tconst store = createStore<NotchMachineState>({\n\t\topen: false,\n\t\tconfig: { ...initialConfig },\n\t\tcontentSize: { w: 0, h: 0 },\n\t\tbaseSize: { w: NOTCH_DEFAULTS.pillMinWidth, h: NOTCH_DEFAULTS.pillHeight },\n\t});\n\n\tfunction open() {\n\t\tstore.update((prev) => (prev.open ? prev : { ...prev, open: true }));\n\t}\n\n\tfunction close() {\n\t\tstore.update((prev) => (prev.open ? { ...prev, open: false } : prev));\n\t}\n\n\tfunction toggle() {\n\t\tstore.update((prev) => ({ ...prev, open: !prev.open }));\n\t}\n\n\tfunction setContentSize(size: NotchSize) {\n\t\tstore.update((prev) => {\n\t\t\tif (prev.contentSize.w === size.w && prev.contentSize.h === size.h) return prev;\n\t\t\treturn { ...prev, contentSize: size };\n\t\t});\n\t}\n\n\tfunction setBaseSize(size: NotchSize) {\n\t\tstore.update((prev) => {\n\t\t\tif (prev.baseSize.w === size.w && prev.baseSize.h === size.h) return prev;\n\t\t\treturn { ...prev, baseSize: size };\n\t\t});\n\t}\n\n\tfunction configure(config: NotchConfig) {\n\t\tstore.update((prev) => ({ ...prev, config: { ...prev.config, ...config } }));\n\t}\n\n\tfunction destroy() {\n\t\t// Reserved for future timer/listener cleanup\n\t}\n\n\treturn { store, open, close, toggle, setContentSize, setBaseSize, configure, destroy };\n}\n","/**\n * Notch DOM Attribute Contract.\n *\n * Maps notch state to data-attributes that CSS selectors target.\n */\n\nimport type { NotchPosition, NotchTheme } from \"./notch.types\";\n\nexport interface NotchAttrs {\n\troot: Record<string, string>;\n\tcanvas: Record<string, string>;\n\tpill: Record<string, string>;\n\tcontent: Record<string, string>;\n}\n\nexport function getNotchAttrs(context: {\n\topen: boolean;\n\tposition: NotchPosition;\n\ttheme?: NotchTheme;\n}): NotchAttrs {\n\tconst root: Record<string, string> = {\n\t\t\"data-fluix-notch\": \"\",\n\t\t\"data-open\": String(context.open),\n\t\t\"data-position\": context.position,\n\t};\n\tif (context.theme) {\n\t\troot[\"data-theme\"] = context.theme;\n\t}\n\n\treturn {\n\t\troot,\n\t\tcanvas: {\n\t\t\t\"data-fluix-notch-canvas\": \"\",\n\t\t},\n\t\tpill: {\n\t\t\t\"data-fluix-notch-pill\": \"\",\n\t\t},\n\t\tcontent: {\n\t\t\t\"data-fluix-notch-content\": \"\",\n\t\t\t\"data-open\": String(context.open),\n\t\t},\n\t};\n}\n","import { type Store, createStore } from \"../../primitives/store\";\nimport type { MenuConfig, MenuOrientation } from \"./menu.types\";\n\nexport const MENU_DEFAULTS = {\n\torientation: \"vertical\" as MenuOrientation,\n\troundness: 16,\n} as const;\n\nexport interface MenuMachineState {\n\tactiveId: string | null;\n\tconfig: MenuConfig;\n}\n\nexport interface MenuMachine {\n\tstore: Store<MenuMachineState>;\n\tsetActive(id: string | null): void;\n\tconfigure(config: MenuConfig): void;\n\tdestroy(): void;\n}\n\nexport function createMenuMachine(initialConfig?: MenuConfig): MenuMachine {\n\tconst store = createStore<MenuMachineState>({\n\t\tactiveId: initialConfig?.initialActiveId ?? null,\n\t\tconfig: { ...initialConfig },\n\t});\n\n\tfunction setActive(id: string | null) {\n\t\tstore.update((prev) => {\n\t\t\tif (prev.activeId === id) return prev;\n\t\t\treturn { ...prev, activeId: id };\n\t\t});\n\t}\n\n\tfunction configure(config: MenuConfig) {\n\t\tstore.update((prev) => {\n\t\t\tconst merged = { ...prev.config, ...config };\n\t\t\tconst keys = Object.keys(merged) as (keyof MenuConfig)[];\n\t\t\tif (keys.every((k) => prev.config[k] === merged[k])) return prev;\n\t\t\treturn { ...prev, config: merged };\n\t\t});\n\t}\n\n\tfunction destroy() {\n\t\t// Reserved for future cleanup.\n\t}\n\n\treturn { store, setActive, configure, destroy };\n}\n","import type { MenuOrientation, MenuTheme, MenuVariant } from \"./menu.types\";\n\nexport interface MenuAttrs {\n\troot: Record<string, string>;\n\tlist: Record<string, string>;\n\tcanvas: Record<string, string>;\n\tindicator: Record<string, string>;\n\titem(context: { id: string; active: boolean; disabled?: boolean }): Record<string, string>;\n}\n\nexport function getMenuAttrs(context: {\n\torientation: MenuOrientation;\n\ttheme?: MenuTheme;\n\tvariant?: MenuVariant;\n}): MenuAttrs {\n\tconst root: Record<string, string> = {\n\t\t\"data-fluix-menu\": \"\",\n\t\t\"data-orientation\": context.orientation,\n\t};\n\n\tif (context.theme) {\n\t\troot[\"data-theme\"] = context.theme;\n\t}\n\n\tif (context.variant) {\n\t\troot[\"data-variant\"] = context.variant;\n\t}\n\n\treturn {\n\t\troot,\n\t\tlist: {\n\t\t\t\"data-fluix-menu-list\": \"\",\n\t\t},\n\t\tcanvas: {\n\t\t\t\"data-fluix-menu-canvas\": \"\",\n\t\t},\n\t\tindicator: {\n\t\t\t\"data-fluix-menu-indicator\": \"\",\n\t\t},\n\t\titem(itemContext) {\n\t\t\tconst item: Record<string, string> = {\n\t\t\t\t\"data-fluix-menu-item\": \"\",\n\t\t\t\t\"data-menu-id\": itemContext.id,\n\t\t\t\t\"data-state\": itemContext.active ? \"active\" : \"inactive\",\n\t\t\t};\n\n\t\t\tif (itemContext.disabled) {\n\t\t\t\titem[\"data-disabled\"] = \"true\";\n\t\t\t}\n\n\t\t\treturn item;\n\t\t},\n\t};\n}\n","import { FLUIX_SPRING, type SpringConfig } from \"../../primitives/spring\";\nimport type { MenuOrientation, MenuVariant } from \"./menu.types\";\n\nexport interface MenuConnectOptions {\n\troot: HTMLElement;\n\tindicator: SVGRectElement | SVGPathElement;\n\tgetActiveId(): string | null;\n\tonSelect?(id: string): void;\n\tspring?: SpringConfig;\n\tpadding?: number;\n\tvariant?: MenuVariant;\n\torientation?: MenuOrientation;\n}\n\ninterface IndicatorFrame {\n\tx: number;\n\ty: number;\n\twidth: number;\n\theight: number;\n\tradius: number;\n\tvisible: boolean;\n}\n\n/** Minimal animation handle shared by WAAPI and RAF-based animations. */\ninterface AnimationHandle {\n\tcancel(): void;\n\tonfinish: (() => void) | null;\n}\n\nconst ITEM_SELECTOR = \"[data-fluix-menu-item]\";\nconst TAB_CURVE_RADIUS = 14;\n\nfunction readItemFrame(\n\troot: HTMLElement,\n\tactiveId: string,\n\tpadding: number,\n\tvariant?: MenuVariant,\n\torientation?: MenuOrientation,\n): IndicatorFrame | null {\n\tconst activeItem = root.querySelector<HTMLElement>(\n\t\t`${ITEM_SELECTOR}[data-menu-id=\"${CSS.escape(activeId)}\"]`,\n\t);\n\tif (!activeItem) return null;\n\n\tconst rootRect = root.getBoundingClientRect();\n\tconst itemRect = activeItem.getBoundingClientRect();\n\tconst width = Math.max(0, itemRect.width + padding * 2);\n\tconst height = Math.max(0, itemRect.height + padding * 2);\n\tconst x = itemRect.left - rootRect.left - padding;\n\tconst y = itemRect.top - rootRect.top - padding;\n\n\tif (variant === \"tab\") {\n\t\tif (orientation === \"horizontal\") {\n\t\t\t// Horizontal tab: extend height downward to the root bottom edge.\n\t\t\t// The root's padding-bottom controls how far below the items\n\t\t\t// the indicator reaches (and where it meets the content area).\n\t\t\tconst extendedHeight = rootRect.height - y + 1; // +1 to avoid sub-pixel gap\n\t\t\treturn {\n\t\t\t\tx,\n\t\t\t\ty,\n\t\t\t\twidth,\n\t\t\t\theight: extendedHeight,\n\t\t\t\tradius: height / 2, // use original item height for top pill arc\n\t\t\t\tvisible: width > 0 && height > 0,\n\t\t\t};\n\t\t}\n\t\tconst extendedWidth = rootRect.width - x;\n\t\treturn {\n\t\t\tx,\n\t\t\ty,\n\t\t\twidth: extendedWidth,\n\t\t\theight,\n\t\t\tradius: height / 2,\n\t\t\tvisible: width > 0 && height > 0,\n\t\t};\n\t}\n\n\treturn {\n\t\tx,\n\t\ty,\n\t\twidth,\n\t\theight,\n\t\tradius: height / 2,\n\t\tvisible: width > 0 && height > 0,\n\t};\n}\n\n/**\n * Generate an SVG path for the tab shape:\n * - Rounded left side (pill)\n * - Flat right edge\n * - Concave curves at top-right and bottom-right corners\n */\nfunction generateTabPath(frame: IndicatorFrame, cr: number): string {\n\tconst { x, y, width, height } = frame;\n\t// Clamp radii so the shape stays valid even at very small widths\n\tconst r = Math.min(frame.radius, height / 2, width / 2);\n\tconst rw = x + width; // right edge\n\n\tconst concaveR = Math.min(cr, height / 2, Math.max(0, width / 2 - r));\n\n\treturn [\n\t\t`M ${x + r} ${y}`,\n\t\t`L ${rw - concaveR} ${y}`,\n\t\t`Q ${rw} ${y} ${rw} ${y - concaveR}`,\n\t\t`L ${rw} ${y + height + concaveR}`,\n\t\t`Q ${rw} ${y + height} ${rw - concaveR} ${y + height}`,\n\t\t`L ${x + r} ${y + height}`,\n\t\t`A ${r} ${r} 0 0 1 ${x} ${y + height - r}`,\n\t\t`L ${x} ${y + r}`,\n\t\t`A ${r} ${r} 0 0 1 ${x + r} ${y}`,\n\t\t\"Z\",\n\t].join(\" \");\n}\n\n/**\n * Generate an SVG path for the horizontal tab shape (rotated 90° from vertical):\n * - Rounded top (pill arc at top-left, top-right)\n * - Flat bottom edge (flush with content boundary)\n * - Concave curves at bottom-left and bottom-right corners\n */\nfunction generateHorizontalTabPath(frame: IndicatorFrame, cr: number): string {\n\tconst { x, y, width, height } = frame;\n\tconst r = Math.min(frame.radius, width / 2, height / 2);\n\tconst bottom = y + height; // bottom edge\n\n\t// Allow concave curves as long as there's enough vertical space below the top arcs\n\tconst concaveR = Math.min(cr, width / 2, Math.max(0, height - r));\n\n\treturn [\n\t\t// Start at top-left, after the rounded corner\n\t\t`M ${x} ${y + r}`,\n\t\t// Arc from left edge to top edge (top-left rounded corner)\n\t\t`A ${r} ${r} 0 0 1 ${x + r} ${y}`,\n\t\t// Top edge to top-right corner\n\t\t`L ${x + width - r} ${y}`,\n\t\t// Arc from top edge to right edge (top-right rounded corner)\n\t\t`A ${r} ${r} 0 0 1 ${x + width} ${y + r}`,\n\t\t// Right edge down to bottom-right concave\n\t\t`L ${x + width} ${bottom - concaveR}`,\n\t\t// Concave curve at bottom-right (curves outward)\n\t\t`Q ${x + width} ${bottom} ${x + width + concaveR} ${bottom}`,\n\t\t// Flat bottom edge (off to the right, then back to the left)\n\t\t`L ${x - concaveR} ${bottom}`,\n\t\t// Concave curve at bottom-left (curves outward)\n\t\t`Q ${x} ${bottom} ${x} ${bottom - concaveR}`,\n\t\t// Left edge back up\n\t\t`L ${x} ${y + r}`,\n\t\t\"Z\",\n\t].join(\" \");\n}\n\nfunction applyFrame(indicator: SVGRectElement | SVGPathElement, frame: IndicatorFrame, variant?: MenuVariant, orientation?: MenuOrientation) {\n\tif (variant === \"tab\") {\n\t\tconst path = indicator as SVGPathElement;\n\t\tconst generator = orientation === \"horizontal\" ? generateHorizontalTabPath : generateTabPath;\n\t\tpath.setAttribute(\"d\", generator(frame, TAB_CURVE_RADIUS));\n\t\tpath.setAttribute(\"opacity\", frame.visible ? \"1\" : \"0\");\n\t} else {\n\t\tconst rect = indicator as SVGRectElement;\n\t\trect.setAttribute(\"x\", String(frame.x));\n\t\trect.setAttribute(\"y\", String(frame.y));\n\t\trect.setAttribute(\"width\", String(frame.width));\n\t\trect.setAttribute(\"height\", String(frame.height));\n\t\trect.setAttribute(\"rx\", String(frame.radius));\n\t\trect.setAttribute(\"ry\", String(frame.radius));\n\t\trect.setAttribute(\"opacity\", frame.visible ? \"1\" : \"0\");\n\t}\n}\n\nfunction frameEquals(a: IndicatorFrame | null, b: IndicatorFrame | null): boolean {\n\tif (!a || !b) return false;\n\treturn (\n\t\ta.x === b.x &&\n\t\ta.y === b.y &&\n\t\ta.width === b.width &&\n\t\ta.height === b.height &&\n\t\ta.radius === b.radius &&\n\t\ta.visible === b.visible\n\t);\n}\n\n/**\n * Simulate a spring from 0→1 and return normalized sample values.\n */\nfunction simulateSpringValues(config: Required<SpringConfig>): number[] {\n\tconst { stiffness, damping, mass } = config;\n\tconst dt = 1 / 120;\n\tconst maxDuration = 3;\n\tconst samples: number[] = [0];\n\n\tlet position = 0;\n\tlet velocity = 0;\n\tlet t = 0;\n\n\twhile (t < maxDuration) {\n\t\tconst acceleration = (-stiffness * (position - 1) - damping * velocity) / mass;\n\t\tconst midVelocity = velocity + acceleration * (dt / 2);\n\t\tconst midPosition = position + velocity * (dt / 2);\n\t\tconst midAcceleration = (-stiffness * (midPosition - 1) - damping * midVelocity) / mass;\n\n\t\tvelocity = velocity + midAcceleration * dt;\n\t\tposition = position + midVelocity * dt;\n\t\tt += dt;\n\t\tsamples.push(position);\n\n\t\tif (Math.abs(position - 1) < 0.001 && Math.abs(velocity) < 0.001) break;\n\t}\n\n\tsamples.push(1);\n\treturn samples;\n}\n\nfunction lerp(a: number, b: number, t: number): number {\n\treturn a + (b - a) * t;\n}\n\n/** Fast ease-out curve: 1 − (1−t)³ */\nfunction easeOutCubic(t: number): number {\n\treturn 1 - (1 - t) ** 3;\n}\n\nconst EXIT_MS = 130;\n\n/**\n * Enter-only animation: expands the tab from the right edge to the target position.\n * Used for the initial appearance (invisible → visible).\n */\nfunction animateTabEnter(\n\tpath: SVGPathElement,\n\tfrom: IndicatorFrame,\n\tto: IndicatorFrame,\n\tcr: number,\n\tspring: Required<SpringConfig>,\n): AnimationHandle {\n\tconst rightEdge = from.x + from.width;\n\tconst samples = simulateSpringValues(spring);\n\tconst count = samples.length;\n\tconst durationMs = (count / 120) * 1000;\n\tconst startTime = performance.now();\n\tlet cancelled = false;\n\n\tconst handle: AnimationHandle = {\n\t\tonfinish: null,\n\t\tcancel() { cancelled = true; },\n\t};\n\n\tfunction tick() {\n\t\tif (cancelled) return;\n\t\tconst elapsed = performance.now() - startTime;\n\t\tconst progress = Math.min(elapsed / durationMs, 1);\n\t\tconst idx = Math.min(Math.floor(progress * (count - 1)), count - 1);\n\t\tconst t = samples[idx];\n\n\t\tconst frame: IndicatorFrame = {\n\t\t\tx: lerp(rightEdge, to.x, t),\n\t\t\ty: to.y,\n\t\t\twidth: lerp(0, to.width, t),\n\t\t\theight: to.height,\n\t\t\tradius: to.radius,\n\t\t\tvisible: true,\n\t\t};\n\n\t\tpath.setAttribute(\"d\", generateTabPath(frame, cr));\n\n\t\tif (progress < 1) {\n\t\t\trequestAnimationFrame(tick);\n\t\t} else {\n\t\t\thandle.onfinish?.();\n\t\t}\n\t}\n\n\trequestAnimationFrame(tick);\n\treturn handle;\n}\n\n/**\n * Enter-only animation for horizontal tab: expands upward from the bottom edge.\n */\nfunction animateHorizontalTabEnter(\n\tpath: SVGPathElement,\n\tfrom: IndicatorFrame,\n\tto: IndicatorFrame,\n\tcr: number,\n\tspring: Required<SpringConfig>,\n): AnimationHandle {\n\tconst bottomEdge = from.y + from.height;\n\tconst samples = simulateSpringValues(spring);\n\tconst count = samples.length;\n\tconst durationMs = (count / 120) * 1000;\n\tconst startTime = performance.now();\n\tlet cancelled = false;\n\n\tconst handle: AnimationHandle = {\n\t\tonfinish: null,\n\t\tcancel() { cancelled = true; },\n\t};\n\n\tfunction tick() {\n\t\tif (cancelled) return;\n\t\tconst elapsed = performance.now() - startTime;\n\t\tconst progress = Math.min(elapsed / durationMs, 1);\n\t\tconst idx = Math.min(Math.floor(progress * (count - 1)), count - 1);\n\t\tconst t = samples[idx];\n\n\t\tconst frame: IndicatorFrame = {\n\t\t\tx: to.x,\n\t\t\ty: lerp(bottomEdge, to.y, t),\n\t\t\twidth: to.width,\n\t\t\theight: lerp(0, to.height, t),\n\t\t\tradius: to.radius,\n\t\t\tvisible: true,\n\t\t};\n\n\t\tpath.setAttribute(\"d\", generateHorizontalTabPath(frame, cr));\n\n\t\tif (progress < 1) {\n\t\t\trequestAnimationFrame(tick);\n\t\t} else {\n\t\t\thandle.onfinish?.();\n\t\t}\n\t}\n\n\trequestAnimationFrame(tick);\n\treturn handle;\n}\n\n/**\n * Two-phase tab animation driven by requestAnimationFrame:\n *\n * Phase 1 (exit ~130 ms): Quick ease-out collapse to the right.\n * Phase 2 (enter ~280 ms): Spring expansion from the right at the new Y.\n *\n * `onEnterStart` fires when phase 2 begins — used to flip `data-state`\n * only after the indicator has left the old position.\n */\nfunction animateTabIndicator(\n\tpath: SVGPathElement,\n\tfrom: IndicatorFrame,\n\tto: IndicatorFrame,\n\tcr: number,\n\tspring: Required<SpringConfig>,\n\tonEnterStart?: () => void,\n): AnimationHandle {\n\tconst rightEdge = from.x + from.width;\n\n\t// Stiff spring for enter phase — fast with a subtle bounce\n\tconst enterSamples = simulateSpringValues({\n\t\tstiffness: spring.stiffness * 3,\n\t\tdamping: spring.damping * 1.8,\n\t\tmass: spring.mass,\n\t});\n\tconst enterCount = enterSamples.length;\n\tconst enterMs = (enterCount / 120) * 1000;\n\tconst totalMs = EXIT_MS + enterMs;\n\n\tconst startTime = performance.now();\n\tlet cancelled = false;\n\tlet enteredPhase2 = false;\n\n\tconst handle: AnimationHandle = {\n\t\tonfinish: null,\n\t\tcancel() { cancelled = true; },\n\t};\n\n\tfunction tick() {\n\t\tif (cancelled) return;\n\n\t\tconst elapsed = performance.now() - startTime;\n\t\tlet frame: IndicatorFrame;\n\n\t\tif (elapsed < EXIT_MS) {\n\t\t\t// ── Phase 1: exit (collapse to the right) ──\n\t\t\tconst t = easeOutCubic(elapsed / EXIT_MS);\n\t\t\tframe = {\n\t\t\t\tx: lerp(from.x, rightEdge, t),\n\t\t\t\ty: from.y,\n\t\t\t\twidth: lerp(from.width, 0, t),\n\t\t\t\theight: from.height,\n\t\t\t\tradius: from.radius,\n\t\t\t\tvisible: true,\n\t\t\t};\n\t\t} else {\n\t\t\tif (!enteredPhase2) {\n\t\t\t\tenteredPhase2 = true;\n\t\t\t\tonEnterStart?.();\n\t\t\t}\n\t\t\t// ── Phase 2: enter (expand from the right at new Y) ──\n\t\t\tconst phaseElapsed = elapsed - EXIT_MS;\n\t\t\tconst phaseProgress = Math.min(phaseElapsed / enterMs, 1);\n\t\t\tconst idx = Math.min(\n\t\t\t\tMath.floor(phaseProgress * (enterCount - 1)),\n\t\t\t\tenterCount - 1,\n\t\t\t);\n\t\t\tconst t = enterSamples[idx];\n\t\t\tframe = {\n\t\t\t\tx: lerp(rightEdge, to.x, t),\n\t\t\t\ty: to.y,\n\t\t\t\twidth: lerp(0, to.width, t),\n\t\t\t\theight: to.height,\n\t\t\t\tradius: to.radius,\n\t\t\t\tvisible: true,\n\t\t\t};\n\t\t}\n\n\t\tpath.setAttribute(\"d\", generateTabPath(frame, cr));\n\n\t\tif (elapsed < totalMs) {\n\t\t\trequestAnimationFrame(tick);\n\t\t} else {\n\t\t\thandle.onfinish?.();\n\t\t}\n\t}\n\n\trequestAnimationFrame(tick);\n\treturn handle;\n}\n\n/**\n * Two-phase horizontal tab animation:\n *\n * Phase 1 (exit ~130 ms): Collapse downward to the bottom edge.\n * Phase 2 (enter ~spring): Expand upward from the bottom at the new X.\n */\nfunction animateHorizontalTabIndicator(\n\tpath: SVGPathElement,\n\tfrom: IndicatorFrame,\n\tto: IndicatorFrame,\n\tcr: number,\n\tspring: Required<SpringConfig>,\n\tonEnterStart?: () => void,\n): AnimationHandle {\n\tconst bottomEdge = from.y + from.height;\n\n\tconst enterSamples = simulateSpringValues({\n\t\tstiffness: spring.stiffness * 3,\n\t\tdamping: spring.damping * 1.8,\n\t\tmass: spring.mass,\n\t});\n\tconst enterCount = enterSamples.length;\n\tconst enterMs = (enterCount / 120) * 1000;\n\tconst totalMs = EXIT_MS + enterMs;\n\n\tconst startTime = performance.now();\n\tlet cancelled = false;\n\tlet enteredPhase2 = false;\n\n\tconst handle: AnimationHandle = {\n\t\tonfinish: null,\n\t\tcancel() { cancelled = true; },\n\t};\n\n\tfunction tick() {\n\t\tif (cancelled) return;\n\n\t\tconst elapsed = performance.now() - startTime;\n\t\tlet frame: IndicatorFrame;\n\n\t\tif (elapsed < EXIT_MS) {\n\t\t\t// ── Phase 1: exit (collapse downward to bottom edge) ──\n\t\t\tconst t = easeOutCubic(elapsed / EXIT_MS);\n\t\t\tframe = {\n\t\t\t\tx: from.x,\n\t\t\t\ty: lerp(from.y, bottomEdge, t),\n\t\t\t\twidth: from.width,\n\t\t\t\theight: lerp(from.height, 0, t),\n\t\t\t\tradius: from.radius,\n\t\t\t\tvisible: true,\n\t\t\t};\n\t\t} else {\n\t\t\tif (!enteredPhase2) {\n\t\t\t\tenteredPhase2 = true;\n\t\t\t\tonEnterStart?.();\n\t\t\t}\n\t\t\t// ── Phase 2: enter (expand upward from bottom at new X) ──\n\t\t\tconst phaseElapsed = elapsed - EXIT_MS;\n\t\t\tconst phaseProgress = Math.min(phaseElapsed / enterMs, 1);\n\t\t\tconst idx = Math.min(\n\t\t\t\tMath.floor(phaseProgress * (enterCount - 1)),\n\t\t\t\tenterCount - 1,\n\t\t\t);\n\t\t\tconst t = enterSamples[idx];\n\t\t\tframe = {\n\t\t\t\tx: to.x,\n\t\t\t\ty: lerp(bottomEdge, to.y, t),\n\t\t\t\twidth: to.width,\n\t\t\t\theight: lerp(0, to.height, t),\n\t\t\t\tradius: to.radius,\n\t\t\t\tvisible: true,\n\t\t\t};\n\t\t}\n\n\t\tpath.setAttribute(\"d\", generateHorizontalTabPath(frame, cr));\n\n\t\tif (elapsed < totalMs) {\n\t\t\trequestAnimationFrame(tick);\n\t\t} else {\n\t\t\thandle.onfinish?.();\n\t\t}\n\t}\n\n\trequestAnimationFrame(tick);\n\treturn handle;\n}\n\nconst STRETCH_MS = 150;\n\n/**\n * Pill morph animation — single rect, two phases:\n *\n * Phase 1 (stretch ~150ms easeOut): rect expands to cover both old and new positions.\n * Phase 2 (contract ~spring): rect contracts from the stretched shape to the new position.\n */\nfunction animatePillMorph(\n\trect: SVGRectElement,\n\tfrom: IndicatorFrame,\n\tto: IndicatorFrame,\n\tspring: Required<SpringConfig>,\n): AnimationHandle {\n\tconst stretchedX = Math.min(from.x, to.x);\n\tconst stretchedRight = Math.max(from.x + from.width, to.x + to.width);\n\tconst stretchedWidth = stretchedRight - stretchedX;\n\n\tconst contractSamples = simulateSpringValues({\n\t\tstiffness: spring.stiffness * 2.5,\n\t\tdamping: spring.damping * 1.6,\n\t\tmass: spring.mass,\n\t});\n\tconst contractCount = contractSamples.length;\n\tconst contractMs = (contractCount / 120) * 1000;\n\tconst totalMs = STRETCH_MS + contractMs;\n\n\tconst startTime = performance.now();\n\tlet cancelled = false;\n\n\tconst handle: AnimationHandle = {\n\t\tonfinish: null,\n\t\tcancel() { cancelled = true; },\n\t};\n\n\tfunction applyRect(x: number, y: number, w: number, h: number, r: number) {\n\t\trect.setAttribute(\"x\", String(x));\n\t\trect.setAttribute(\"y\", String(y));\n\t\trect.setAttribute(\"width\", String(w));\n\t\trect.setAttribute(\"height\", String(h));\n\t\trect.setAttribute(\"rx\", String(r));\n\t\trect.setAttribute(\"ry\", String(r));\n\t}\n\n\tfunction tick() {\n\t\tif (cancelled) return;\n\t\tconst elapsed = performance.now() - startTime;\n\n\t\tif (elapsed < STRETCH_MS) {\n\t\t\tconst t = easeOutCubic(elapsed / STRETCH_MS);\n\t\t\tapplyRect(\n\t\t\t\tlerp(from.x, stretchedX, t),\n\t\t\t\tlerp(from.y, to.y, t),\n\t\t\t\tlerp(from.width, stretchedWidth, t),\n\t\t\t\tlerp(from.height, to.height, t),\n\t\t\t\tlerp(from.radius, to.radius, t),\n\t\t\t);\n\t\t} else {\n\t\t\tconst phaseElapsed = elapsed - STRETCH_MS;\n\t\t\tconst phaseProgress = Math.min(phaseElapsed / contractMs, 1);\n\t\t\tconst idx = Math.min(Math.floor(phaseProgress * (contractCount - 1)), contractCount - 1);\n\t\t\tconst t = contractSamples[idx];\n\t\t\tapplyRect(\n\t\t\t\tlerp(stretchedX, to.x, t),\n\t\t\t\tto.y,\n\t\t\t\tlerp(stretchedWidth, to.width, t),\n\t\t\t\tto.height,\n\t\t\t\tto.radius,\n\t\t\t);\n\t\t}\n\n\t\tif (elapsed < totalMs) {\n\t\t\trequestAnimationFrame(tick);\n\t\t} else {\n\t\t\thandle.onfinish?.();\n\t\t}\n\t}\n\n\trequestAnimationFrame(tick);\n\treturn handle;\n}\n\nexport function connectMenu(options: MenuConnectOptions): {\n\tsync(immediate?: boolean): void;\n\tdestroy(): void;\n} {\n\tconst spring = options.spring ?? FLUIX_SPRING;\n\tconst padding = options.padding ?? 6;\n\tconst variant = options.variant;\n\tconst orientation = options.orientation;\n\tconst cleanups: Array<() => void> = [];\n\tlet currentAnimation: AnimationHandle | null = null;\n\tlet lastFrame: IndicatorFrame | null = null;\n\tlet rafId = 0;\n\tlet resizeObserver: ResizeObserver | null = null;\n\tlet mutationObserver: MutationObserver | null = null;\n\n\t/** Track previous active ID so we can manage data-state during tab animation */\n\tlet previousActiveId: string | null = null;\n\t/** IDs whose data-state we're controlling during tab animation */\n\tlet animOldId: string | null = null;\n\tlet animNewId: string | null = null;\n\tlet animPhase: \"exit\" | \"enter\" | null = null;\n\n\tfunction setItemState(id: string, state: \"active\" | \"inactive\") {\n\t\tconst el = options.root.querySelector<HTMLElement>(\n\t\t\t`${ITEM_SELECTOR}[data-menu-id=\"${CSS.escape(id)}\"]`,\n\t\t);\n\t\tif (el && el.dataset[\"state\"] !== state) {\n\t\t\tel.dataset[\"state\"] = state;\n\t\t}\n\t}\n\n\t/** Re-enforce the correct data-state for managed items (fights React re-renders) */\n\tfunction enforceAnimStates() {\n\t\tif (!animPhase) return;\n\t\tif (animPhase === \"exit\") {\n\t\t\tif (animOldId) setItemState(animOldId, \"active\");\n\t\t\tif (animNewId) setItemState(animNewId, \"inactive\");\n\t\t} else {\n\t\t\tif (animOldId) setItemState(animOldId, \"inactive\");\n\t\t\tif (animNewId) setItemState(animNewId, \"active\");\n\t\t}\n\t}\n\n\tfunction clearAnimState() {\n\t\tanimOldId = null;\n\t\tanimNewId = null;\n\t\tanimPhase = null;\n\t}\n\n\tfunction apply(frame: IndicatorFrame) {\n\t\tapplyFrame(options.indicator, frame, variant, orientation);\n\t}\n\n\tconst updateIndicator = (immediate = false) => {\n\t\tconst activeId = options.getActiveId();\n\t\tconst nextFrame = activeId ? readItemFrame(options.root, activeId, padding, variant, orientation) : null;\n\t\tconst fallbackFrame: IndicatorFrame =\n\t\t\tnextFrame ??\n\t\t\tlastFrame ?? {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0,\n\t\t\t\tradius: 0,\n\t\t\t\tvisible: false,\n\t\t\t};\n\n\t\tif (!lastFrame) {\n\t\t\tlastFrame = fallbackFrame;\n\t\t\tpreviousActiveId = activeId;\n\t\t\tapply(fallbackFrame);\n\t\t\treturn;\n\t\t}\n\t\tif (frameEquals(lastFrame, fallbackFrame)) return;\n\n\t\tif (currentAnimation) {\n\t\t\tcurrentAnimation.cancel();\n\t\t\tcurrentAnimation = null;\n\t\t\tclearAnimState();\n\t\t}\n\n\t\t// For tab variant, first appearance (invisible→visible) plays the enter animation\n\t\tif (variant === \"tab\" && !immediate && fallbackFrame.visible && !lastFrame.visible) {\n\t\t\tconst to = fallbackFrame;\n\t\t\tlastFrame = to;\n\t\t\tpreviousActiveId = activeId;\n\t\t\tconst isHorizontal = orientation === \"horizontal\";\n\n\t\t\t// Build a collapsed frame at the edge to animate from\n\t\t\tconst collapsedFrom: IndicatorFrame = isHorizontal\n\t\t\t\t? {\n\t\t\t\t\tx: to.x,\n\t\t\t\t\ty: to.y + to.height, // bottom edge\n\t\t\t\t\twidth: to.width,\n\t\t\t\t\theight: 0,\n\t\t\t\t\tradius: to.radius,\n\t\t\t\t\tvisible: true,\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\tx: to.x + to.width, // right edge\n\t\t\t\t\ty: to.y,\n\t\t\t\t\twidth: 0,\n\t\t\t\t\theight: to.height,\n\t\t\t\t\tradius: to.radius,\n\t\t\t\t\tvisible: true,\n\t\t\t\t};\n\n\t\t\t// First appearance — no old item to manage, let React handle data-state naturally\n\t\t\t(options.indicator as SVGPathElement).setAttribute(\"opacity\", \"1\");\n\n\t\t\tconst springConfig = { stiffness: spring.stiffness ?? 170, damping: spring.damping ?? 18, mass: spring.mass ?? 1 };\n\t\t\tconst enterAnim = isHorizontal\n\t\t\t\t? animateHorizontalTabEnter(\n\t\t\t\t\toptions.indicator as SVGPathElement,\n\t\t\t\t\tcollapsedFrom,\n\t\t\t\t\tto,\n\t\t\t\t\tTAB_CURVE_RADIUS,\n\t\t\t\t\tspringConfig,\n\t\t\t\t)\n\t\t\t\t: animateTabEnter(\n\t\t\t\t\toptions.indicator as SVGPathElement,\n\t\t\t\t\tcollapsedFrom,\n\t\t\t\t\tto,\n\t\t\t\t\tTAB_CURVE_RADIUS,\n\t\t\t\t\tspringConfig,\n\t\t\t\t);\n\n\t\t\tcurrentAnimation = enterAnim;\n\t\t\tenterAnim.onfinish = () => {\n\t\t\t\tcurrentAnimation = null;\n\t\t\t\t// Re-read frame to absorb any font-weight layout shifts\n\t\t\t\tconst settledId = options.getActiveId();\n\t\t\t\tconst settled = settledId ? readItemFrame(options.root, settledId, padding, variant, orientation) : null;\n\t\t\t\tif (settled) {\n\t\t\t\t\tlastFrame = settled;\n\t\t\t\t\tapply(settled);\n\t\t\t\t} else {\n\t\t\t\t\tapply(to);\n\t\t\t\t}\n\t\t\t};\n\t\t\treturn;\n\t\t}\n\n\t\tif (immediate || !fallbackFrame.visible || !lastFrame.visible) {\n\t\t\tlastFrame = fallbackFrame;\n\t\t\tpreviousActiveId = activeId;\n\t\t\tapply(fallbackFrame);\n\t\t\treturn;\n\t\t}\n\n\t\tconst from = lastFrame;\n\t\tconst to = fallbackFrame;\n\t\tconst oldActiveId = previousActiveId;\n\t\tconst newActiveId = activeId;\n\t\tlastFrame = to;\n\t\tpreviousActiveId = activeId;\n\n\t\tlet animation: AnimationHandle | null = null;\n\n\t\tif (variant === \"tab\") {\n\t\t\t// Start managing data-state: keep old active during exit\n\t\t\tanimOldId = oldActiveId;\n\t\t\tanimNewId = newActiveId;\n\t\t\tanimPhase = \"exit\";\n\t\t\tenforceAnimStates();\n\n\t\t\tconst springConfig = { stiffness: spring.stiffness ?? 170, damping: spring.damping ?? 18, mass: spring.mass ?? 1 };\n\t\t\tconst onEnterStart = () => {\n\t\t\t\t// Enter phase started — flip data-state\n\t\t\t\tanimPhase = \"enter\";\n\t\t\t\tenforceAnimStates();\n\t\t\t};\n\n\t\t\tanimation = orientation === \"horizontal\"\n\t\t\t\t? animateHorizontalTabIndicator(\n\t\t\t\t\toptions.indicator as SVGPathElement,\n\t\t\t\t\tfrom,\n\t\t\t\t\tto,\n\t\t\t\t\tTAB_CURVE_RADIUS,\n\t\t\t\t\tspringConfig,\n\t\t\t\t\tonEnterStart,\n\t\t\t\t)\n\t\t\t\t: animateTabIndicator(\n\t\t\t\t\toptions.indicator as SVGPathElement,\n\t\t\t\t\tfrom,\n\t\t\t\t\tto,\n\t\t\t\t\tTAB_CURVE_RADIUS,\n\t\t\t\t\tspringConfig,\n\t\t\t\t\tonEnterStart,\n\t\t\t\t);\n\t\t} else {\n\t\t\tanimation = animatePillMorph(\n\t\t\t\toptions.indicator as SVGRectElement,\n\t\t\t\tfrom,\n\t\t\t\tto,\n\t\t\t\t{ stiffness: spring.stiffness ?? 170, damping: spring.damping ?? 18, mass: spring.mass ?? 1 },\n\t\t\t);\n\t\t}\n\n\t\tif (!animation) {\n\t\t\tapply(to);\n\t\t\treturn;\n\t\t}\n\n\t\tcurrentAnimation = animation;\n\t\tanimation.onfinish = () => {\n\t\t\tcurrentAnimation = null;\n\t\t\t// Ensure final data-state is correct and release control\n\t\t\tif (variant === \"tab\") {\n\t\t\t\tif (newActiveId) setItemState(newActiveId, \"active\");\n\t\t\t\tif (oldActiveId && oldActiveId !== newActiveId) setItemState(oldActiveId, \"inactive\");\n\t\t\t\tclearAnimState();\n\t\t\t}\n\t\t\t// Re-read frame after data-state change to absorb font-weight layout shifts.\n\t\t\t// Without this, the width change from font-weight 500→650 causes readItemFrame\n\t\t\t// to return a different frame, triggering an infinite animation loop.\n\t\t\tconst settledId = options.getActiveId();\n\t\t\tconst settled = settledId ? readItemFrame(options.root, settledId, padding, variant, orientation) : null;\n\t\t\tif (settled) {\n\t\t\t\tlastFrame = settled;\n\t\t\t\tapply(settled);\n\t\t\t} else {\n\t\t\t\tapply(to);\n\t\t\t}\n\t\t};\n\t};\n\n\tconst sync = (immediate = false) => {\n\t\tcancelAnimationFrame(rafId);\n\t\trafId = requestAnimationFrame(() => updateIndicator(immediate));\n\t};\n\n\tconst handleClick = (event: Event) => {\n\t\tif (!options.onSelect) return;\n\t\tconst target = event.target as HTMLElement | null;\n\t\tif (!target) return;\n\t\tconst item = target.closest<HTMLElement>(ITEM_SELECTOR);\n\t\tif (!item || item.dataset[\"disabled\"] === \"true\") return;\n\t\tconst id = item.dataset[\"menuId\"];\n\t\tif (!id) return;\n\t\toptions.onSelect(id);\n\t};\n\n\toptions.root.addEventListener(\"click\", handleClick);\n\tcleanups.push(() => options.root.removeEventListener(\"click\", handleClick));\n\n\tconst scheduleSync = () => {\n\t\t// During tab animation, font-weight changes cause item resize which would\n\t\t// cancel the running animation and restart it in an infinite loop.\n\t\t// Skip resize-triggered syncs while animating — onfinish re-reads the frame.\n\t\tif (animPhase) return;\n\t\tsync(false);\n\t};\n\tresizeObserver = new ResizeObserver(scheduleSync);\n\tresizeObserver.observe(options.root);\n\tfor (const item of options.root.querySelectorAll<HTMLElement>(ITEM_SELECTOR)) {\n\t\tresizeObserver.observe(item);\n\t}\n\tcleanups.push(() => {\n\t\tresizeObserver?.disconnect();\n\t\tresizeObserver = null;\n\t});\n\n\tmutationObserver = new MutationObserver(() => {\n\t\t// During tab animation, React may re-render and reset data-state — override it\n\t\tif (animPhase) {\n\t\t\tenforceAnimStates();\n\t\t\treturn;\n\t\t}\n\t\tif (!resizeObserver) return;\n\t\tresizeObserver.disconnect();\n\t\tresizeObserver.observe(options.root);\n\t\tfor (const item of options.root.querySelectorAll<HTMLElement>(ITEM_SELECTOR)) {\n\t\t\tresizeObserver.observe(item);\n\t\t}\n\t\tsync(false);\n\t});\n\tmutationObserver.observe(options.root, {\n\t\tchildList: true,\n\t\tsubtree: true,\n\t\tattributes: true,\n\t\tattributeFilter: [\"data-menu-id\", \"data-state\"],\n\t});\n\tcleanups.push(() => {\n\t\tmutationObserver?.disconnect();\n\t\tmutationObserver = null;\n\t});\n\n\tsync(true);\n\n\treturn {\n\t\tsync,\n\t\tdestroy() {\n\t\t\tcancelAnimationFrame(rafId);\n\t\t\tif (currentAnimation) {\n\t\t\t\tcurrentAnimation.cancel();\n\t\t\t\tcurrentAnimation = null;\n\t\t\t}\n\t\t\tfor (const cleanup of cleanups) cleanup();\n\t\t\tcleanups.length = 0;\n\t\t},\n\t};\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 ?? \"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","/**\r\n * Vanilla JS Notch — imperative DOM adapter for the Fluix Notch component.\r\n *\r\n * Creates all DOM elements (measurer, root, SVG canvas with gooey filter +\r\n * highlight rect, pill div, content div), subscribes to the core notch machine,\r\n * and drives WAAPI spring animations.\r\n */\r\n\r\nimport {\r\n\tcreateNotchMachine,\r\n\tgetNotchAttrs,\r\n\tanimateSpring,\r\n\tFLUIX_SPRING,\r\n\tNOTCH_DEFAULTS,\r\n\ttype NotchMachine,\r\n\ttype NotchPosition,\r\n\ttype NotchTrigger,\r\n\ttype NotchTheme,\r\n\ttype SpringConfig,\r\n} from \"@fluix-ui/core\";\r\n\r\n/* ----------------------------- Constants ----------------------------- */\r\n\r\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\r\n\r\n/* ----------------------------- Types ----------------------------- */\r\n\r\nexport interface NotchOptions {\r\n\ttrigger?: NotchTrigger;\r\n\tposition?: NotchPosition;\r\n\tspring?: SpringConfig;\r\n\t/** Collapsed dot size in px. Default: 36 */\r\n\tdotSize?: number;\r\n\troundness?: number;\r\n\t/** Visual theme. Default: \"dark\" */\r\n\ttheme?: NotchTheme;\r\n\tfill?: string;\r\n\topen?: boolean;\r\n\tonOpenChange?: (open: boolean) => void;\r\n\t/** Icon/content shown in the collapsed dot */\r\n\tpill: HTMLElement | string;\r\n\t/** Content shown when expanded */\r\n\tcontent: HTMLElement | string;\r\n}\r\n\r\nexport interface NotchInstance {\r\n\topen(): void;\r\n\tclose(): void;\r\n\ttoggle(): void;\r\n\tdestroy(): void;\r\n\tupdate(opts: Partial<NotchOptions>): void;\r\n}\r\n\r\n/* ----------------------------- Helpers ----------------------------- */\r\n\r\nfunction applyAttrs(el: Element, attrs: Record<string, string>) {\r\n\tfor (const [key, value] of Object.entries(attrs)) {\r\n\t\tel.setAttribute(key, value);\r\n\t}\r\n}\r\n\r\nfunction resolveContent(source: HTMLElement | string): HTMLElement {\r\n\tif (source instanceof HTMLElement) return source;\r\n\tconst span = document.createElement(\"span\");\r\n\tspan.textContent = source;\r\n\treturn span;\r\n}\r\n\r\n/* ----------------------------- createNotch ----------------------------- */\r\n\r\nexport function createNotch(\r\n\tcontainer: HTMLElement,\r\n\toptions: NotchOptions,\r\n): NotchInstance {\r\n\tlet {\r\n\t\ttrigger = \"click\",\r\n\t\tposition = \"top-center\",\r\n\t\tspring,\r\n\t\tdotSize = 36,\r\n\t\troundness = NOTCH_DEFAULTS.roundness,\r\n\t\ttheme = \"dark\",\r\n\t\tfill,\r\n\t\topen: controlledOpen,\r\n\t\tonOpenChange,\r\n\t} = options;\r\n\r\n\tconst springConfig = (): SpringConfig => spring ?? FLUIX_SPRING;\r\n\r\n\t/* ---- Core machine ---- */\r\n\tconst machine: NotchMachine = createNotchMachine({\r\n\t\tposition,\r\n\t\ttrigger,\r\n\t\troundness,\r\n\t\tfill,\r\n\t\tspring,\r\n\t});\r\n\r\n\tlet snapshot = machine.store.getSnapshot();\r\n\tlet prevOpenVal: boolean | undefined;\r\n\r\n\t/* ---- Derived values ---- */\r\n\tconst blur = () => Math.min(10, Math.max(6, roundness * 0.45));\r\n\r\n\tconst collapsedW = () => dotSize;\r\n\tconst collapsedH = () => dotSize;\r\n\r\n\tlet contentSize = { w: 200, h: 44 };\r\n\r\n\tconst hlPad = 12;\r\n\tconst expandedW = () => contentSize.w + hlPad * 2;\r\n\tconst expandedH = () => Math.max(contentSize.h + hlPad, dotSize);\r\n\r\n\tconst targetW = () => (snapshot.open ? expandedW() : collapsedW());\r\n\tconst targetH = () => (snapshot.open ? expandedH() : collapsedH());\r\n\r\n\tconst rootW = () => Math.max(expandedW(), collapsedW());\r\n\tconst rootH = () => Math.max(expandedH(), collapsedH());\r\n\r\n\t/* ---- Animation state ---- */\r\n\tconst prev = { w: 0, h: 0, initialized: false };\r\n\tlet currentAnim: Animation | null = null;\r\n\r\n\t/* ---- Hover blob state ---- */\n\tlet highlightAnim: Animation | null = null;\n\tconst hlPrev = { x: 0, y: 0, w: 0, h: 0, visible: false };\n\r\n\t/* ---- Create DOM: Hidden content measurer ---- */\r\n\tconst measureEl = document.createElement(\"div\");\r\n\tmeasureEl.setAttribute(\"data-fluix-notch-measure\", \"\");\r\n\tmeasureEl.appendChild(resolveContent(options.content).cloneNode(true));\r\n\tcontainer.appendChild(measureEl);\r\n\r\n\t/* ---- Create DOM: Root ---- */\r\n\tconst rootEl = document.createElement(\"div\");\r\n\tconst attrs = getNotchAttrs({ open: snapshot.open, position, theme });\r\n\tapplyAttrs(rootEl, attrs.root);\r\n\trootEl.style.width = `${rootW()}px`;\r\n\trootEl.style.height = `${rootH()}px`;\r\n\r\n\t/* ---- Create DOM: SVG canvas ---- */\r\n\tconst canvasDiv = document.createElement(\"div\");\r\n\tapplyAttrs(canvasDiv, attrs.canvas);\r\n\r\n\tconst svg = document.createElementNS(SVG_NS, \"svg\");\r\n\tsvg.setAttribute(\"xmlns\", \"http://www.w3.org/2000/svg\");\r\n\tsvg.setAttribute(\"width\", String(rootW()));\r\n\tsvg.setAttribute(\"height\", String(rootH()));\r\n\tsvg.setAttribute(\"viewBox\", `0 0 ${rootW()} ${rootH()}`);\r\n\tsvg.setAttribute(\"aria-hidden\", \"true\");\r\n\r\n\t// Defs + gooey filter\r\n\tconst defs = document.createElementNS(SVG_NS, \"defs\");\r\n\tconst filter = document.createElementNS(SVG_NS, \"filter\");\r\n\tfilter.setAttribute(\"id\", \"fluix-notch-goo\");\r\n\tfilter.setAttribute(\"x\", \"-20%\");\r\n\tfilter.setAttribute(\"y\", \"-20%\");\r\n\tfilter.setAttribute(\"width\", \"140%\");\r\n\tfilter.setAttribute(\"height\", \"140%\");\r\n\tfilter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\r\n\r\n\tconst feBlur = document.createElementNS(SVG_NS, \"feGaussianBlur\");\r\n\tfeBlur.setAttribute(\"in\", \"SourceGraphic\");\r\n\tfeBlur.setAttribute(\"stdDeviation\", String(blur()));\r\n\tfeBlur.setAttribute(\"result\", \"blur\");\r\n\r\n\tconst feCM = document.createElementNS(SVG_NS, \"feColorMatrix\");\r\n\tfeCM.setAttribute(\"in\", \"blur\");\r\n\tfeCM.setAttribute(\"type\", \"matrix\");\r\n\tfeCM.setAttribute(\"values\", \"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10\");\r\n\tfeCM.setAttribute(\"result\", \"goo\");\r\n\r\n\tconst feComp = document.createElementNS(SVG_NS, \"feComposite\");\r\n\tfeComp.setAttribute(\"in\", \"SourceGraphic\");\r\n\tfeComp.setAttribute(\"in2\", \"goo\");\r\n\tfeComp.setAttribute(\"operator\", \"atop\");\r\n\r\n\tfilter.appendChild(feBlur);\r\n\tfilter.appendChild(feCM);\r\n\tfilter.appendChild(feComp);\r\n\tdefs.appendChild(filter);\r\n\tsvg.appendChild(defs);\r\n\r\n\tconst gGroup = document.createElementNS(SVG_NS, \"g\");\r\n\tgGroup.setAttribute(\"filter\", \"url(#fluix-notch-goo)\");\r\n\r\n\t// Main shape rect\r\n\tconst svgRectEl = document.createElementNS(SVG_NS, \"rect\");\r\n\tconst cw = collapsedW();\r\n\tconst ch = collapsedH();\r\n\tsvgRectEl.setAttribute(\"x\", String((rootW() - cw) / 2));\r\n\tsvgRectEl.setAttribute(\"y\", String((rootH() - ch) / 2));\r\n\tsvgRectEl.setAttribute(\"width\", String(cw));\r\n\tsvgRectEl.setAttribute(\"height\", String(ch));\r\n\tsvgRectEl.setAttribute(\"rx\", String(cw / 2));\r\n\tsvgRectEl.setAttribute(\"ry\", String(ch / 2));\r\n\tsvgRectEl.setAttribute(\"fill\", fill ?? \"var(--fluix-notch-bg)\");\r\n\r\n\tgGroup.appendChild(svgRectEl);\r\n\tsvg.appendChild(gGroup);\r\n\r\n\t// Hover blob (same fill, inside gooey group for local deformation)\n\tconst hoverBlobEl = document.createElementNS(SVG_NS, \"rect\");\n\thoverBlobEl.setAttribute(\"x\", String((rootW() - cw) / 2));\n\thoverBlobEl.setAttribute(\"y\", String((rootH() - ch) / 2));\n\thoverBlobEl.setAttribute(\"width\", \"0\");\n\thoverBlobEl.setAttribute(\"height\", \"0\");\n\thoverBlobEl.setAttribute(\"rx\", \"0\");\n\thoverBlobEl.setAttribute(\"ry\", \"0\");\n\thoverBlobEl.setAttribute(\"opacity\", \"0\");\n\thoverBlobEl.setAttribute(\"fill\", fill ?? \"var(--fluix-notch-bg)\");\n\tgGroup.appendChild(hoverBlobEl);\n\r\n\tcanvasDiv.appendChild(svg);\r\n\trootEl.appendChild(canvasDiv);\r\n\r\n\t/* ---- Create DOM: Pill div ---- */\r\n\tconst pillDiv = document.createElement(\"div\");\r\n\tapplyAttrs(pillDiv, attrs.pill);\r\n\tpillDiv.style.width = `${dotSize}px`;\r\n\tpillDiv.style.height = `${dotSize}px`;\r\n\tpillDiv.appendChild(resolveContent(options.pill));\r\n\trootEl.appendChild(pillDiv);\r\n\r\n\t/* ---- Create DOM: Content div ---- */\r\n\tconst contentDiv = document.createElement(\"div\");\r\n\tapplyAttrs(contentDiv, attrs.content);\r\n\tcontentDiv.appendChild(resolveContent(options.content));\r\n\trootEl.appendChild(contentDiv);\r\n\r\n\tcontainer.appendChild(rootEl);\r\n\r\n\t/* ---- Initialize prev for animation ---- */\r\n\tprev.w = cw;\r\n\tprev.h = ch;\r\n\tprev.initialized = true;\r\n\r\n\t/* ---- ResizeObserver for content measurement ---- */\r\n\tlet measureRaf = 0;\r\n\tconst measureObs = new ResizeObserver(() => {\r\n\t\tcancelAnimationFrame(measureRaf);\r\n\t\tmeasureRaf = requestAnimationFrame(() => {\r\n\t\t\tconst r = measureEl.getBoundingClientRect();\r\n\t\t\tif (r.width > 0 && r.height > 0) {\r\n\t\t\t\tconst newSize = { w: Math.ceil(r.width), h: Math.ceil(r.height) };\r\n\t\t\t\tif (newSize.w !== contentSize.w || newSize.h !== contentSize.h) {\r\n\t\t\t\t\tcontentSize = newSize;\r\n\t\t\t\t\tupdateLayout();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\tmeasureObs.observe(measureEl);\r\n\r\n\t/* ---- Highlight tracking ---- */\r\n\tfunction onItemEnter(e: MouseEvent) {\n\t\tconst target = (e.target as HTMLElement).closest(\"a, button\") as HTMLElement | null;\r\n\t\tif (!target || !snapshot.open) return;\r\n\r\n\t\tconst rootRect = rootEl.getBoundingClientRect();\r\n\t\tconst itemW = target.offsetWidth;\r\n\t\tconst itemH = target.offsetHeight;\r\n\t\tconst itemRect = target.getBoundingClientRect();\r\n\t\tconst itemCenterX = itemRect.left + itemRect.width / 2;\r\n\t\tconst itemCenterY = itemRect.top + itemRect.height / 2;\r\n\r\n\t\tconst padX = 8;\n\t\tconst padY = 4;\n\t\tconst blobOvershoot = Math.max(6, roundness * 0.35);\n\t\tconst toW = itemW + padX * 2;\n\t\tconst toH = Math.max(itemH + padY * 2, rootRect.height + blobOvershoot * 2);\n\t\tconst toX = itemCenterX - rootRect.left - toW / 2;\n\t\tconst toY = itemCenterY - rootRect.top - toH / 2;\n\t\tconst toRx = toH / 2;\r\n\r\n\t\tconst fromX = hlPrev.visible ? hlPrev.x : toX + toW / 2;\n\t\tconst fromY = hlPrev.visible ? hlPrev.y : toY + toH / 2;\n\t\tconst fromW = hlPrev.visible ? hlPrev.w : 0;\n\t\tconst fromH = hlPrev.visible ? hlPrev.h : 0;\n\t\tconst fromR = hlPrev.visible ? hlPrev.h / 2 : 0;\n\n\t\tif (highlightAnim) {\n\t\t\thighlightAnim.cancel();\n\t\t\thighlightAnim = null;\n\t\t}\r\n\r\n\t\tconst sc = springConfig();\r\n\t\tconst a = animateSpring(\r\n\t\t\thoverBlobEl,\n\t\t\t{\n\t\t\t\tx: { from: fromX, to: toX, unit: \"px\" },\n\t\t\t\ty: { from: fromY, to: toY, unit: \"px\" },\n\t\t\t\twidth: { from: fromW, to: toW, unit: \"px\" },\n\t\t\t\theight: { from: fromH, to: toH, unit: \"px\" },\n\t\t\t\trx: { from: fromR, to: toRx, unit: \"px\" },\n\t\t\t\try: { from: fromR, to: toRx, unit: \"px\" },\n\t\t\t},\n\t\t\t{ ...sc, stiffness: (sc.stiffness ?? 300) * 1.2 },\n\t\t);\n\r\n\t\thlPrev.x = toX;\r\n\t\thlPrev.y = toY;\r\n\t\thlPrev.w = toW;\r\n\t\thlPrev.h = toH;\r\n\r\n\t\tif (a) {\r\n\t\t\thighlightAnim = a;\r\n\t\t\ta.onfinish = () => {\r\n\t\t\t\thighlightAnim = null;\n\t\t\t\thoverBlobEl.setAttribute(\"x\", String(toX));\n\t\t\t\thoverBlobEl.setAttribute(\"y\", String(toY));\n\t\t\t\thoverBlobEl.setAttribute(\"width\", String(toW));\n\t\t\t\thoverBlobEl.setAttribute(\"height\", String(toH));\n\t\t\t\thoverBlobEl.setAttribute(\"rx\", String(toRx));\n\t\t\t\thoverBlobEl.setAttribute(\"ry\", String(toRx));\n\t\t\t\thoverBlobEl.setAttribute(\"opacity\", \"1\");\n\t\t\t};\n\t\t} else {\n\t\t\thoverBlobEl.setAttribute(\"x\", String(toX));\n\t\t\thoverBlobEl.setAttribute(\"y\", String(toY));\n\t\t\thoverBlobEl.setAttribute(\"width\", String(toW));\n\t\t\thoverBlobEl.setAttribute(\"height\", String(toH));\n\t\t\thoverBlobEl.setAttribute(\"rx\", String(toRx));\n\t\t\thoverBlobEl.setAttribute(\"ry\", String(toRx));\n\t\t\thoverBlobEl.setAttribute(\"opacity\", \"1\");\n\t\t}\n\t\thoverBlobEl.setAttribute(\"opacity\", \"1\");\n\t\thlPrev.visible = true;\n\t}\n\n\tfunction resetHoverBlobImmediate() {\n\t\tif (highlightAnim) {\n\t\t\thighlightAnim.cancel();\n\t\t\thighlightAnim = null;\n\t\t}\n\t\thoverBlobEl.setAttribute(\"x\", String(rootW() / 2));\n\t\thoverBlobEl.setAttribute(\"y\", String(rootH() / 2));\n\t\thoverBlobEl.setAttribute(\"width\", \"0\");\n\t\thoverBlobEl.setAttribute(\"height\", \"0\");\n\t\thoverBlobEl.setAttribute(\"rx\", \"0\");\n\t\thoverBlobEl.setAttribute(\"ry\", \"0\");\n\t\thoverBlobEl.setAttribute(\"opacity\", \"0\");\n\t\thlPrev.visible = false;\n\t}\n\n\tfunction onItemLeave() {\n\t\tif (!hlPrev.visible) return;\n\t\tconst cx = hlPrev.x + hlPrev.w / 2;\n\t\tconst cy = hlPrev.y + hlPrev.h / 2;\n\t\tconst sc = springConfig();\n\t\tconst a = animateSpring(\n\t\t\thoverBlobEl,\n\t\t\t{\n\t\t\t\tx: { from: hlPrev.x, to: cx, unit: \"px\" },\n\t\t\t\ty: { from: hlPrev.y, to: cy, unit: \"px\" },\n\t\t\t\twidth: { from: hlPrev.w, to: 0, unit: \"px\" },\n\t\t\t\theight: { from: hlPrev.h, to: 0, unit: \"px\" },\n\t\t\t\trx: { from: hlPrev.h / 2, to: 0, unit: \"px\" },\n\t\t\t\try: { from: hlPrev.h / 2, to: 0, unit: \"px\" },\n\t\t\t},\n\t\t\t{ ...sc, stiffness: (sc.stiffness ?? 300) * 1.2 },\n\t\t);\n\t\tif (a) {\n\t\t\thighlightAnim = a;\n\t\t\ta.onfinish = () => {\n\t\t\t\thighlightAnim = null;\n\t\t\t\thoverBlobEl.setAttribute(\"x\", String(cx));\n\t\t\t\thoverBlobEl.setAttribute(\"y\", String(cy));\n\t\t\t\thoverBlobEl.setAttribute(\"width\", \"0\");\n\t\t\t\thoverBlobEl.setAttribute(\"height\", \"0\");\n\t\t\t\thoverBlobEl.setAttribute(\"rx\", \"0\");\n\t\t\t\thoverBlobEl.setAttribute(\"ry\", \"0\");\n\t\t\t\thoverBlobEl.setAttribute(\"opacity\", \"0\");\n\t\t\t};\n\t\t} else {\n\t\t\thoverBlobEl.setAttribute(\"x\", String(cx));\n\t\t\thoverBlobEl.setAttribute(\"y\", String(cy));\n\t\t\thoverBlobEl.setAttribute(\"width\", \"0\");\n\t\t\thoverBlobEl.setAttribute(\"height\", \"0\");\n\t\t\thoverBlobEl.setAttribute(\"rx\", \"0\");\n\t\t\thoverBlobEl.setAttribute(\"ry\", \"0\");\n\t\t\thoverBlobEl.setAttribute(\"opacity\", \"0\");\n\t\t}\n\t\thlPrev.visible = false;\n\t}\n\r\n\t/* ---- Event handlers ---- */\r\n\tfunction handleOpen() {\r\n\t\tif (controlledOpen === undefined) machine.open();\r\n\t\telse onOpenChange?.(true);\r\n\t}\r\n\tfunction handleClose() {\r\n\t\tif (controlledOpen === undefined) machine.close();\r\n\t\telse onOpenChange?.(false);\r\n\t}\r\n\tfunction handleToggle() {\r\n\t\tif (controlledOpen === undefined) machine.toggle();\r\n\t\telse onOpenChange?.(!snapshot.open);\r\n\t}\r\n\tfunction onMouseEnter() {\r\n\t\tif (trigger === \"hover\") handleOpen();\r\n\t}\r\n\tfunction onMouseLeave() {\n\t\tif (trigger === \"hover\") {\n\t\t\thandleClose();\n\t\t\tresetHoverBlobImmediate();\n\t\t\treturn;\n\t\t}\n\t\tonItemLeave();\n\t}\n\tfunction onClick() {\r\n\t\tif (trigger === \"click\") handleToggle();\r\n\t}\r\n\r\n\trootEl.addEventListener(\"mouseenter\", onMouseEnter);\r\n\trootEl.addEventListener(\"mouseleave\", onMouseLeave);\r\n\trootEl.addEventListener(\"mouseover\", onItemEnter);\r\n\trootEl.addEventListener(\"click\", onClick);\r\n\r\n\t/* ---- SVG rect animation ---- */\r\n\tfunction animateRect() {\r\n\t\tconst tw = targetW();\r\n\t\tconst th = targetH();\r\n\r\n\t\tif (tw === prev.w && th === prev.h) return;\r\n\r\n\t\tif (currentAnim) {\r\n\t\t\tcurrentAnim.cancel();\r\n\t\t\tcurrentAnim = null;\r\n\t\t}\r\n\r\n\t\tconst rw = rootW();\r\n\t\tconst rh = rootH();\r\n\r\n\t\tconst fromW = prev.w;\r\n\t\tconst fromH = prev.h;\r\n\t\tconst fromX = (rw - fromW) / 2;\r\n\t\tconst fromY = (rh - fromH) / 2;\r\n\t\tconst toX = (rw - tw) / 2;\r\n\t\tconst toY = (rh - th) / 2;\r\n\r\n\t\tprev.w = tw;\r\n\t\tprev.h = th;\r\n\r\n\t\tconst isCollapsing = tw === collapsedW() && th === collapsedH();\r\n\t\tconst wasCollapsed = fromW === collapsedW() && fromH === collapsedH();\r\n\t\tconst fromRx = wasCollapsed ? collapsedW() / 2 : roundness;\r\n\t\tconst toRx = isCollapsing ? collapsedW() / 2 : roundness;\r\n\r\n\t\tconst a = animateSpring(\r\n\t\t\tsvgRectEl,\r\n\t\t\t{\r\n\t\t\t\twidth: { from: fromW, to: tw, unit: \"px\" },\r\n\t\t\t\theight: { from: fromH, to: th, unit: \"px\" },\r\n\t\t\t\tx: { from: fromX, to: toX, unit: \"px\" },\r\n\t\t\t\ty: { from: fromY, to: toY, unit: \"px\" },\r\n\t\t\t\trx: { from: fromRx, to: toRx, unit: \"px\" },\r\n\t\t\t\try: { from: fromRx, to: toRx, unit: \"px\" },\r\n\t\t\t},\r\n\t\t\tspringConfig(),\r\n\t\t);\r\n\r\n\t\tif (a) {\r\n\t\t\tcurrentAnim = a;\r\n\t\t\ta.onfinish = () => {\r\n\t\t\t\tcurrentAnim = null;\r\n\t\t\t\tsvgRectEl.setAttribute(\"width\", String(tw));\r\n\t\t\t\tsvgRectEl.setAttribute(\"height\", String(th));\r\n\t\t\t\tsvgRectEl.setAttribute(\"x\", String(toX));\r\n\t\t\t\tsvgRectEl.setAttribute(\"y\", String(toY));\r\n\t\t\t\tsvgRectEl.setAttribute(\"rx\", String(toRx));\r\n\t\t\t\tsvgRectEl.setAttribute(\"ry\", String(toRx));\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tsvgRectEl.setAttribute(\"width\", String(tw));\r\n\t\t\tsvgRectEl.setAttribute(\"height\", String(th));\r\n\t\t\tsvgRectEl.setAttribute(\"x\", String(toX));\r\n\t\t\tsvgRectEl.setAttribute(\"y\", String(toY));\r\n\t\t\tsvgRectEl.setAttribute(\"rx\", String(toRx));\r\n\t\t\tsvgRectEl.setAttribute(\"ry\", String(toRx));\r\n\t\t}\r\n\t}\r\n\r\n\t/* ---- Layout update ---- */\r\n\tfunction updateLayout() {\r\n\t\tconst isOpen = snapshot.open;\r\n\t\tconst newAttrs = getNotchAttrs({ open: isOpen, position, theme });\r\n\r\n\t\t// Update root attrs and size\r\n\t\tapplyAttrs(rootEl, newAttrs.root);\r\n\t\trootEl.style.width = `${rootW()}px`;\r\n\t\trootEl.style.height = `${rootH()}px`;\r\n\r\n\t\t// Update SVG viewBox\r\n\t\tsvg.setAttribute(\"width\", String(rootW()));\r\n\t\tsvg.setAttribute(\"height\", String(rootH()));\r\n\t\tsvg.setAttribute(\"viewBox\", `0 0 ${rootW()} ${rootH()}`);\r\n\r\n\t\t// Update gooey filter blur\r\n\t\tfeBlur.setAttribute(\"stdDeviation\", String(blur()));\r\n\r\n\t\t// Update fill\n\t\tsvgRectEl.setAttribute(\"fill\", fill ?? \"var(--fluix-notch-bg)\");\n\t\thoverBlobEl.setAttribute(\"fill\", fill ?? \"var(--fluix-notch-bg)\");\n\r\n\t\t// Update content attrs\r\n\t\tapplyAttrs(contentDiv, newAttrs.content);\r\n\r\n\t\t// Animate the SVG rect\r\n\t\tanimateRect();\r\n\r\n\t\t// Reset hover blob when closing\n\t\tif (!isOpen) {\n\t\t\tresetHoverBlobImmediate();\n\t\t}\n\r\n\t\t// Expose notch height as CSS variable for toast collision avoidance\r\n\t\tdocument.documentElement.style.setProperty(\r\n\t\t\t\"--fluix-notch-offset\",\r\n\t\t\t`${rootH()}px`,\r\n\t\t);\r\n\t}\r\n\r\n\t/* ---- Store subscription ---- */\r\n\tconst unsubscribe = machine.store.subscribe(() => {\r\n\t\tconst next = machine.store.getSnapshot();\r\n\t\tsnapshot = next;\r\n\r\n\t\t// Controlled open sync\r\n\t\tif (controlledOpen !== undefined) {\r\n\t\t\tif (controlledOpen && !next.open) machine.open();\r\n\t\t\telse if (!controlledOpen && next.open) machine.close();\r\n\t\t}\r\n\r\n\t\t// Fire onOpenChange callback\r\n\t\tif (prevOpenVal !== undefined && prevOpenVal !== next.open) {\r\n\t\t\tonOpenChange?.(next.open);\r\n\t\t}\r\n\t\tprevOpenVal = next.open;\r\n\r\n\t\tupdateLayout();\r\n\t});\r\n\r\n\t// Initial layout\r\n\tupdateLayout();\r\n\r\n\t// Set initial CSS variable\r\n\tdocument.documentElement.style.setProperty(\r\n\t\t\"--fluix-notch-offset\",\r\n\t\t`${rootH()}px`,\r\n\t);\r\n\r\n\t/* ---- Public API ---- */\r\n\treturn {\r\n\t\topen() {\r\n\t\t\thandleOpen();\r\n\t\t},\r\n\r\n\t\tclose() {\r\n\t\t\thandleClose();\r\n\t\t},\r\n\r\n\t\ttoggle() {\r\n\t\t\thandleToggle();\r\n\t\t},\r\n\r\n\t\tdestroy() {\r\n\t\t\tunsubscribe();\r\n\t\t\tcancelAnimationFrame(measureRaf);\r\n\t\t\tmeasureObs.disconnect();\r\n\t\t\tcurrentAnim?.cancel();\r\n\t\t\thighlightAnim?.cancel();\r\n\t\t\trootEl.removeEventListener(\"mouseenter\", onMouseEnter);\r\n\t\t\trootEl.removeEventListener(\"mouseleave\", onMouseLeave);\r\n\t\t\trootEl.removeEventListener(\"mouseover\", onItemEnter);\r\n\t\t\trootEl.removeEventListener(\"click\", onClick);\r\n\t\t\tmachine.destroy();\r\n\t\t\tmeasureEl.remove();\r\n\t\t\trootEl.remove();\r\n\t\t\tdocument.documentElement.style.removeProperty(\"--fluix-notch-offset\");\r\n\t\t},\r\n\r\n\t\tupdate(opts: Partial<NotchOptions>) {\r\n\t\t\t// Update local option values\r\n\t\t\tif (opts.trigger !== undefined) trigger = opts.trigger;\r\n\t\t\tif (opts.position !== undefined) position = opts.position;\r\n\t\t\tif (opts.spring !== undefined) spring = opts.spring;\r\n\t\t\tif (opts.dotSize !== undefined) dotSize = opts.dotSize;\r\n\t\t\tif (opts.roundness !== undefined) roundness = opts.roundness;\r\n\t\t\tif (opts.theme !== undefined) theme = opts.theme;\r\n\t\t\tif (opts.fill !== undefined) fill = opts.fill;\r\n\t\t\tif (opts.open !== undefined) controlledOpen = opts.open;\r\n\t\t\tif (opts.onOpenChange !== undefined) onOpenChange = opts.onOpenChange;\r\n\r\n\t\t\t// Update pill content\r\n\t\t\tif (opts.pill !== undefined) {\r\n\t\t\t\tpillDiv.textContent = \"\";\r\n\t\t\t\tpillDiv.appendChild(resolveContent(opts.pill));\r\n\t\t\t}\r\n\r\n\t\t\t// Update expanded content\r\n\t\t\tif (opts.content !== undefined) {\r\n\t\t\t\tcontentDiv.textContent = \"\";\r\n\t\t\t\tcontentDiv.appendChild(resolveContent(opts.content));\r\n\t\t\t\tmeasureEl.textContent = \"\";\r\n\t\t\t\tmeasureEl.appendChild(resolveContent(opts.content).cloneNode(true));\r\n\t\t\t}\r\n\r\n\t\t\t// Update pill style\r\n\t\t\tpillDiv.style.width = `${dotSize}px`;\r\n\t\t\tpillDiv.style.height = `${dotSize}px`;\r\n\r\n\t\t\t// Reconfigure the core machine\r\n\t\t\tmachine.configure({ position, trigger, roundness, fill, spring });\r\n\r\n\t\t\t// Sync controlled open\r\n\t\t\tif (controlledOpen !== undefined) {\r\n\t\t\t\tif (controlledOpen && !snapshot.open) machine.open();\r\n\t\t\t\telse if (!controlledOpen && snapshot.open) machine.close();\r\n\t\t\t}\r\n\r\n\t\t\t// Re-apply event listeners (trigger may have changed)\r\n\t\t\trootEl.removeEventListener(\"mouseenter\", onMouseEnter);\r\n\t\t\trootEl.removeEventListener(\"mouseleave\", onMouseLeave);\r\n\t\t\trootEl.removeEventListener(\"click\", onClick);\r\n\t\t\trootEl.addEventListener(\"mouseenter\", onMouseEnter);\r\n\t\t\trootEl.addEventListener(\"mouseleave\", onMouseLeave);\r\n\t\t\trootEl.addEventListener(\"click\", onClick);\r\n\r\n\t\t\tupdateLayout();\r\n\t\t},\r\n\t};\r\n}\r\n","/**\r\n * Vanilla JS Menu — imperative DOM adapter for the Fluix Menu component.\r\n *\r\n * Creates all DOM elements (nav, item buttons, SVG canvas with indicator),\r\n * subscribes to the core menu machine, and drives the indicator animation\r\n * via connectMenu.\r\n */\r\n\r\nimport {\r\n\tFLUIX_SPRING,\r\n\tMENU_DEFAULTS,\r\n\tconnectMenu,\r\n\tcreateMenuMachine,\r\n\tgetMenuAttrs,\r\n\ttype MenuMachine,\r\n\ttype MenuOrientation,\r\n\ttype MenuVariant,\r\n\ttype MenuTheme,\r\n\ttype SpringConfig,\r\n} from \"@fluix-ui/core\";\r\n\r\n/* ----------------------------- Constants ----------------------------- */\r\n\r\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\r\nconst GOO_MATRIX = \"1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 20 -10\";\r\n\r\n/* ----------------------------- Types ----------------------------- */\r\n\r\nexport interface MenuItemConfig {\r\n\tid: string;\r\n\tlabel: string;\r\n\tdisabled?: boolean;\r\n}\r\n\r\nexport interface MenuOptions {\r\n\torientation?: MenuOrientation;\r\n\tvariant?: MenuVariant;\r\n\ttheme?: MenuTheme;\r\n\tactiveId?: string | null;\r\n\tonActiveChange?: (id: string) => void;\r\n\tspring?: SpringConfig;\r\n\troundness?: number;\r\n\tblur?: number;\r\n\tfill?: string;\r\n\titems: MenuItemConfig[];\r\n}\r\n\r\nexport interface MenuInstance {\r\n\tsetActive(id: string | null): void;\r\n\tupdate(opts: Partial<MenuOptions>): void;\r\n\tdestroy(): void;\r\n}\r\n\r\n/* ----------------------------- Helpers ----------------------------- */\r\n\r\nfunction applyAttrs(el: Element, attrs: Record<string, string>) {\r\n\tfor (const [key, value] of Object.entries(attrs)) {\r\n\t\tel.setAttribute(key, value);\r\n\t}\r\n}\r\n\r\n/* ----------------------------- createMenu ----------------------------- */\r\n\r\nexport function createMenu(\r\n\tcontainer: HTMLElement,\r\n\toptions: MenuOptions,\r\n): MenuInstance {\r\n\tlet {\r\n\t\torientation = MENU_DEFAULTS.orientation,\r\n\t\tvariant = \"pill\",\r\n\t\ttheme = \"dark\",\r\n\t\tactiveId: controlledActiveId,\r\n\t\tonActiveChange,\r\n\t\tspring,\r\n\t\troundness = MENU_DEFAULTS.roundness,\r\n\t\tblur: blurProp,\r\n\t\tfill,\r\n\t\titems,\r\n\t} = options;\r\n\r\n\tconst springConfig = (): SpringConfig => spring ?? FLUIX_SPRING;\r\n\tconst resolvedBlur = () => blurProp ?? Math.min(10, Math.max(6, roundness * 0.45));\r\n\r\n\t/* ---- Core machine ---- */\r\n\tconst machine: MenuMachine = createMenuMachine({\r\n\t\torientation,\r\n\t\tvariant,\r\n\t\tspring,\r\n\t\troundness,\r\n\t\tblur: blurProp,\r\n\t\tfill,\r\n\t\tinitialActiveId: controlledActiveId ?? null,\r\n\t});\r\n\r\n\tlet snapshot = machine.store.getSnapshot();\r\n\tlet lastActiveNotified: string | null = snapshot.activeId;\r\n\r\n\t/* ---- Create DOM ---- */\r\n\tconst attrs = getMenuAttrs({ orientation, theme, variant });\r\n\tconst filterId = `fluix-menu-goo-${Math.random().toString(36).slice(2, 8)}`;\r\n\tconst isTab = variant === \"tab\";\r\n\r\n\t// Nav root\r\n\tconst navEl = document.createElement(\"nav\");\r\n\tapplyAttrs(navEl, attrs.root);\r\n\tnavEl.setAttribute(\"aria-label\", \"Fluix menu\");\r\n\r\n\t// SVG canvas\r\n\tconst canvasDiv = document.createElement(\"div\");\r\n\tapplyAttrs(canvasDiv, attrs.canvas);\r\n\r\n\tconst svg = document.createElementNS(SVG_NS, \"svg\");\r\n\tsvg.setAttribute(\"xmlns\", SVG_NS);\r\n\tsvg.setAttribute(\"width\", \"1\");\r\n\tsvg.setAttribute(\"height\", \"1\");\r\n\tsvg.setAttribute(\"viewBox\", \"0 0 1 1\");\r\n\tsvg.setAttribute(\"aria-hidden\", \"true\");\r\n\r\n\tlet indicatorEl: SVGRectElement | SVGPathElement;\r\n\r\n\tif (isTab) {\r\n\t\tindicatorEl = document.createElementNS(SVG_NS, \"path\") as SVGPathElement;\r\n\t\tapplyAttrs(indicatorEl, attrs.indicator);\r\n\t\tindicatorEl.setAttribute(\"d\", \"\");\r\n\t\tindicatorEl.setAttribute(\"opacity\", \"0\");\r\n\t\tindicatorEl.style.fill = fill ?? \"var(--fluix-menu-indicator)\";\r\n\t\tsvg.appendChild(indicatorEl);\r\n\t} else {\r\n\t\t// Defs + gooey filter\r\n\t\tconst defs = document.createElementNS(SVG_NS, \"defs\");\r\n\t\tconst filter = document.createElementNS(SVG_NS, \"filter\");\r\n\t\tfilter.setAttribute(\"id\", filterId);\r\n\t\tfilter.setAttribute(\"x\", \"-20%\");\r\n\t\tfilter.setAttribute(\"y\", \"-20%\");\r\n\t\tfilter.setAttribute(\"width\", \"140%\");\r\n\t\tfilter.setAttribute(\"height\", \"140%\");\r\n\t\tfilter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\r\n\r\n\t\tconst feBlur = document.createElementNS(SVG_NS, \"feGaussianBlur\");\r\n\t\tfeBlur.setAttribute(\"in\", \"SourceGraphic\");\r\n\t\tfeBlur.setAttribute(\"stdDeviation\", String(resolvedBlur()));\r\n\t\tfeBlur.setAttribute(\"result\", \"blur\");\r\n\r\n\t\tconst feCM = document.createElementNS(SVG_NS, \"feColorMatrix\");\r\n\t\tfeCM.setAttribute(\"in\", \"blur\");\r\n\t\tfeCM.setAttribute(\"type\", \"matrix\");\r\n\t\tfeCM.setAttribute(\"values\", GOO_MATRIX);\r\n\t\tfeCM.setAttribute(\"result\", \"goo\");\r\n\r\n\t\tconst feComp = document.createElementNS(SVG_NS, \"feComposite\");\r\n\t\tfeComp.setAttribute(\"in\", \"SourceGraphic\");\r\n\t\tfeComp.setAttribute(\"in2\", \"goo\");\r\n\t\tfeComp.setAttribute(\"operator\", \"atop\");\r\n\r\n\t\tfilter.appendChild(feBlur);\r\n\t\tfilter.appendChild(feCM);\r\n\t\tfilter.appendChild(feComp);\r\n\t\tdefs.appendChild(filter);\r\n\t\tsvg.appendChild(defs);\r\n\r\n\t\tconst gGroup = document.createElementNS(SVG_NS, \"g\");\r\n\t\tgGroup.setAttribute(\"filter\", `url(#${filterId})`);\r\n\r\n\t\tindicatorEl = document.createElementNS(SVG_NS, \"rect\") as SVGRectElement;\r\n\t\tapplyAttrs(indicatorEl, attrs.indicator);\r\n\t\tindicatorEl.setAttribute(\"x\", \"0\");\r\n\t\tindicatorEl.setAttribute(\"y\", \"0\");\r\n\t\tindicatorEl.setAttribute(\"width\", \"0\");\r\n\t\tindicatorEl.setAttribute(\"height\", \"0\");\r\n\t\tindicatorEl.setAttribute(\"rx\", \"0\");\r\n\t\tindicatorEl.setAttribute(\"ry\", \"0\");\r\n\t\tindicatorEl.setAttribute(\"opacity\", \"0\");\r\n\t\tindicatorEl.style.fill = fill ?? \"var(--fluix-menu-indicator)\";\r\n\r\n\t\tgGroup.appendChild(indicatorEl);\r\n\t\tsvg.appendChild(gGroup);\r\n\t}\r\n\r\n\tcanvasDiv.appendChild(svg);\r\n\tnavEl.appendChild(canvasDiv);\r\n\r\n\t// Item list\r\n\tconst listDiv = document.createElement(\"div\");\r\n\tapplyAttrs(listDiv, attrs.list);\r\n\r\n\tconst buttonMap = new Map<string, HTMLButtonElement>();\r\n\r\n\tfunction createItemButton(item: MenuItemConfig) {\r\n\t\tconst btn = document.createElement(\"button\");\r\n\t\tbtn.type = \"button\";\r\n\t\tconst active = snapshot.activeId === item.id;\r\n\t\tconst itemAttrs = attrs.item({ id: item.id, active, disabled: item.disabled });\r\n\t\tapplyAttrs(btn, itemAttrs);\r\n\t\tif (item.disabled) btn.disabled = true;\r\n\t\tbtn.textContent = item.label;\r\n\t\tbtn.addEventListener(\"click\", () => {\r\n\t\t\tif (item.disabled) return;\r\n\t\t\tif (controlledActiveId === undefined) {\r\n\t\t\t\tmachine.setActive(item.id);\r\n\t\t\t} else {\r\n\t\t\t\tonActiveChange?.(item.id);\r\n\t\t\t}\r\n\t\t});\r\n\t\tbuttonMap.set(item.id, btn);\r\n\t\tlistDiv.appendChild(btn);\r\n\t}\r\n\r\n\tfor (const item of items) {\r\n\t\tcreateItemButton(item);\r\n\t}\r\n\r\n\tnavEl.appendChild(listDiv);\r\n\tcontainer.appendChild(navEl);\r\n\r\n\t/* ---- ResizeObserver ---- */\r\n\tlet size = { width: 0, height: 0 };\r\n\tlet measureRaf = 0;\r\n\r\n\tconst measure = () => {\r\n\t\tconst rect = navEl.getBoundingClientRect();\r\n\t\tconst w = Math.ceil(rect.width);\r\n\t\tconst h = Math.ceil(rect.height);\r\n\t\tif (size.width !== w || size.height !== h) {\r\n\t\t\tsize = { width: w, height: h };\r\n\t\t\tupdateSvgSize();\r\n\t\t\tconnection?.sync(false);\r\n\t\t}\r\n\t};\r\n\r\n\tconst resizeObs = new ResizeObserver(() => {\r\n\t\tcancelAnimationFrame(measureRaf);\r\n\t\tmeasureRaf = requestAnimationFrame(measure);\r\n\t});\r\n\tresizeObs.observe(navEl);\r\n\r\n\tfunction updateSvgSize() {\r\n\t\tconst w = Math.max(1, size.width);\r\n\t\tconst h = Math.max(1, size.height);\r\n\t\tsvg.setAttribute(\"width\", String(w));\r\n\t\tsvg.setAttribute(\"height\", String(h));\r\n\t\tsvg.setAttribute(\"viewBox\", `0 0 ${w} ${h}`);\r\n\t}\r\n\r\n\t/* ---- connectMenu ---- */\r\n\tlet connection = connectMenu({\r\n\t\troot: navEl,\r\n\t\tindicator: indicatorEl,\r\n\t\tgetActiveId: () => snapshot.activeId,\r\n\t\tonSelect(id) {\r\n\t\t\tif (controlledActiveId === undefined) {\r\n\t\t\t\tmachine.setActive(id);\r\n\t\t\t} else {\r\n\t\t\t\tonActiveChange?.(id);\r\n\t\t\t}\r\n\t\t},\r\n\t\tspring: springConfig(),\r\n\t\tvariant,\r\n\t\torientation,\r\n\t});\r\n\r\n\t// Initial measure\r\n\trequestAnimationFrame(() => {\r\n\t\tmeasure();\r\n\t\tconnection.sync(false);\r\n\t});\r\n\r\n\t/* ---- Store subscription ---- */\r\n\tconst unsubscribe = machine.store.subscribe(() => {\r\n\t\tconst next = machine.store.getSnapshot();\r\n\t\tsnapshot = next;\r\n\r\n\t\t// Update item button states\r\n\t\tfor (const item of items) {\r\n\t\t\tconst btn = buttonMap.get(item.id);\r\n\t\t\tif (btn) {\r\n\t\t\t\tconst active = next.activeId === item.id;\r\n\t\t\t\tconst itemAttrs = attrs.item({ id: item.id, active, disabled: item.disabled });\r\n\t\t\t\tapplyAttrs(btn, itemAttrs);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Fire onActiveChange callback\r\n\t\tif (next.activeId && lastActiveNotified !== next.activeId && onActiveChange) {\r\n\t\t\tonActiveChange(next.activeId);\r\n\t\t}\r\n\t\tlastActiveNotified = next.activeId;\r\n\r\n\t\tconnection.sync(false);\r\n\t});\r\n\r\n\t/* ---- Public API ---- */\r\n\treturn {\r\n\t\tsetActive(id: string | null) {\r\n\t\t\tmachine.setActive(id);\r\n\t\t},\r\n\r\n\t\tupdate(opts: Partial<MenuOptions>) {\r\n\t\t\tif (opts.orientation !== undefined) orientation = opts.orientation;\r\n\t\t\tif (opts.variant !== undefined) variant = opts.variant;\r\n\t\t\tif (opts.theme !== undefined) theme = opts.theme;\r\n\t\t\tif (opts.activeId !== undefined) controlledActiveId = opts.activeId;\r\n\t\t\tif (opts.onActiveChange !== undefined) onActiveChange = opts.onActiveChange;\r\n\t\t\tif (opts.spring !== undefined) spring = opts.spring;\r\n\t\t\tif (opts.roundness !== undefined) roundness = opts.roundness;\r\n\t\t\tif (opts.blur !== undefined) blurProp = opts.blur;\r\n\t\t\tif (opts.fill !== undefined) fill = opts.fill;\r\n\r\n\t\t\tmachine.configure({ orientation, variant, spring, roundness, blur: blurProp, fill });\r\n\r\n\t\t\tif (controlledActiveId !== undefined) {\r\n\t\t\t\tmachine.setActive(controlledActiveId ?? null);\r\n\t\t\t}\r\n\r\n\t\t\t// Update root attrs\r\n\t\t\tconst newAttrs = getMenuAttrs({ orientation, theme, variant });\r\n\t\t\tapplyAttrs(navEl, newAttrs.root);\r\n\r\n\t\t\t// Rebuild items if provided\r\n\t\t\tif (opts.items !== undefined) {\r\n\t\t\t\titems = opts.items;\r\n\t\t\t\tlistDiv.innerHTML = \"\";\r\n\t\t\t\tbuttonMap.clear();\r\n\t\t\t\tfor (const item of items) {\r\n\t\t\t\t\tcreateItemButton(item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Reconnect\r\n\t\t\tconnection.destroy();\r\n\t\t\tconnection = connectMenu({\r\n\t\t\t\troot: navEl,\r\n\t\t\t\tindicator: indicatorEl,\r\n\t\t\t\tgetActiveId: () => snapshot.activeId,\r\n\t\t\t\tonSelect(id) {\r\n\t\t\t\t\tif (controlledActiveId === undefined) {\r\n\t\t\t\t\t\tmachine.setActive(id);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tonActiveChange?.(id);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tspring: springConfig(),\r\n\t\t\t\tvariant,\r\n\t\t\t\torientation,\r\n\t\t\t});\r\n\r\n\t\t\trequestAnimationFrame(() => {\r\n\t\t\t\tmeasure();\r\n\t\t\t\tconnection.sync(false);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tdestroy() {\r\n\t\t\tunsubscribe();\r\n\t\t\tcancelAnimationFrame(measureRaf);\r\n\t\t\tresizeObs.disconnect();\r\n\t\t\tconnection.destroy();\r\n\t\t\tmachine.destroy();\r\n\t\t\tnavEl.remove();\r\n\t\t},\r\n\t};\r\n}\r\n"]}