@almadar/ui 6.29.0 → 6.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/{EntityBindingContext-UyeCfEBS.d.cts → EntityBindingContext-ChCONv2W.d.cts} +1 -50
  2. package/dist/{EntityBindingContext-UyeCfEBS.d.ts → EntityBindingContext-ChCONv2W.d.ts} +1 -50
  3. package/dist/avl/index.cjs +5 -6
  4. package/dist/avl/index.js +5 -6
  5. package/dist/components/index.cjs +4 -5
  6. package/dist/components/index.js +4 -5
  7. package/dist/context/index.cjs +135 -105
  8. package/dist/context/index.d.cts +2 -60
  9. package/dist/context/index.d.ts +2 -60
  10. package/dist/context/index.js +135 -105
  11. package/dist/lib/index.cjs +455 -0
  12. package/dist/lib/index.d.cts +42 -1
  13. package/dist/lib/index.d.ts +42 -1
  14. package/dist/lib/index.js +438 -1
  15. package/dist/marketing/index.cjs +4 -5
  16. package/dist/marketing/index.js +4 -5
  17. package/dist/providers/index.cjs +143 -116
  18. package/dist/providers/index.d.cts +1 -1
  19. package/dist/providers/index.d.ts +1 -1
  20. package/dist/providers/index.js +143 -116
  21. package/dist/runtime/index.cjs +5 -6
  22. package/dist/runtime/index.d.cts +2 -2
  23. package/dist/runtime/index.d.ts +2 -2
  24. package/dist/runtime/index.js +5 -6
  25. package/dist/themeTokens-DVRwufw8.d.cts +112 -0
  26. package/dist/themeTokens-DVRwufw8.d.ts +112 -0
  27. package/package.json +6 -5
  28. package/scripts/audit-tailwind-safelist.ts +4 -0
  29. package/tailwind-preset.cjs +155 -28
  30. package/themes/almadar-website.css +37 -107
  31. package/themes/almadar.css +37 -108
  32. package/themes/atelier.css +145 -240
  33. package/themes/bloomberg-dense.css +145 -252
  34. package/themes/clay.css +39 -137
  35. package/themes/comic.css +39 -145
  36. package/themes/corporate.css +39 -131
  37. package/themes/game-adventure.css +22 -87
  38. package/themes/game-rpg.css +22 -84
  39. package/themes/game-sci-fi.css +22 -88
  40. package/themes/game-ui-pack.css +22 -85
  41. package/themes/gazette.css +43 -135
  42. package/themes/glass.css +39 -148
  43. package/themes/kiosk.css +51 -146
  44. package/themes/linear-clean.css +145 -215
  45. package/themes/minimalist.css +39 -125
  46. package/themes/neon.css +39 -132
  47. package/themes/notion-editorial.css +145 -215
  48. package/themes/prism.css +37 -100
  49. package/themes/retro.css +39 -130
  50. package/themes/terminal.css +61 -152
  51. package/themes/trait-wars.css +121 -285
  52. package/themes/wireframe.css +41 -128
package/dist/lib/index.js CHANGED
@@ -2492,4 +2492,441 @@ function applyOperator(input) {
2492
2492
  }
2493
2493
  }
2494
2494
 
2495
- export { ApiError, DEFAULT_CONFIG, EDITOR_MOTIONS, EDITOR_OPERATORS, INDENT_UNIT, JAZARI_COLORS, apiClient, applyMotion, applyOperator, arrowheadPath, bindCanvasCapture, bindEventBus, bindLastDrawables, bindTraitStateGetter, brainIconPath, clearDebugEvents, clearEntityProvider, clearGuardHistory, clearTicks, clearTraits, clearVerification, cn, compareCellValues, computeJazariLayout, createCommandSendPump, createTickSendRelay, debug, debugCollision, debugError, debugGameState, debugGroup, debugGroupEnd, debugInput, debugPhysics, debugTable, debugTime, debugTimeEnd, debugWarn, eightPointedStarPath, extractOutputsFromTransitions, extractStateMachine, formatDate, formatDateTime, formatGuard, formatNestedFieldLabel, formatTime, formatValue, gearTeethPath, getAllChecks, getAllTicks, getAllTraits, getBridgeHealth, getDebugEvents, getEffectSummary, getEntitiesByType, getEntityById, getEntitySnapshot, getEventsBySource, getEventsByType, getGuardEvaluationsForTrait, getGuardHistory, getRecentEvents, getRecentGuardEvaluations, getSnapshot, getSummary, getTick, getTrait, getTraitSnapshots, getTransitions, getTransitionsForTrait, humanizeEnumValue, humanizeFieldName, initDebugShortcut, isDebugEnabled, isEditableTarget, isEditorMotion, isEditorOperator, keyMapCode, lockIconPath, logDebugEvent, logEffectExecuted, logError, logEventFired, logInfo, logStateChange, logWarning, motionRange, onDebugToggle, parseContentSegments, parseLessonSegments, parseMarkdownWithCodeBlocks, pipeIconPath, profilerOnRender, recordGuardEvaluation, recordServerResponse, recordTransition, registerCheck, registerTick, registerTrait, registerTraitSnapshot, renderStateMachineToDomData, renderStateMachineToSvg, resolveImageUrl, resolveKeyMapEvent, setDebugEnabled, setEntityProvider, setTickActive, sortRows, subscribeToDebugEvents, subscribeToGuardChanges, subscribeToTickChanges, subscribeToTraitChanges, subscribeToVerification, toggleDebug, unregisterTick, unregisterTrait, updateAssetStatus, updateBridgeHealth, updateCheck, updateGuardResult, updateTickExecution, updateTraitState, usePerfBuffer, waitForTransition };
2495
+ // lib/themeTokens.ts
2496
+ function applyFlat(obj, table, vars) {
2497
+ if (!obj) return;
2498
+ for (const { cssVar, key } of table) {
2499
+ const value = obj[key];
2500
+ if (value !== void 0) vars[cssVar] = value;
2501
+ }
2502
+ }
2503
+ var DENSITY_SPACING_VARS = [
2504
+ { cssVar: "--space-0", key: "space0" },
2505
+ { cssVar: "--space-1", key: "space1" },
2506
+ { cssVar: "--space-2", key: "space2" },
2507
+ { cssVar: "--space-3", key: "space3" },
2508
+ { cssVar: "--space-4", key: "space4" },
2509
+ { cssVar: "--space-5", key: "space5" },
2510
+ { cssVar: "--space-6", key: "space6" },
2511
+ { cssVar: "--space-7", key: "space7" },
2512
+ { cssVar: "--space-8", key: "space8" },
2513
+ { cssVar: "--space-9", key: "space9" },
2514
+ { cssVar: "--space-10", key: "space10" },
2515
+ { cssVar: "--space-11", key: "space11" },
2516
+ { cssVar: "--space-12", key: "space12" }
2517
+ ];
2518
+ var DENSITY_ELEMENT_VARS = [
2519
+ { cssVar: "--button-height-sm", key: "buttonHeightSm" },
2520
+ { cssVar: "--button-height-md", key: "buttonHeightMd" },
2521
+ { cssVar: "--button-height-lg", key: "buttonHeightLg" },
2522
+ { cssVar: "--input-height-sm", key: "inputHeightSm" },
2523
+ { cssVar: "--input-height-md", key: "inputHeightMd" },
2524
+ { cssVar: "--input-height-lg", key: "inputHeightLg" },
2525
+ { cssVar: "--row-height-compact", key: "rowHeightCompact" },
2526
+ { cssVar: "--row-height-normal", key: "rowHeightNormal" },
2527
+ { cssVar: "--row-height-spacious", key: "rowHeightSpacious" },
2528
+ { cssVar: "--card-padding-sm", key: "cardPaddingSm" },
2529
+ { cssVar: "--card-padding-md", key: "cardPaddingMd" },
2530
+ { cssVar: "--card-padding-lg", key: "cardPaddingLg" },
2531
+ { cssVar: "--dialog-padding", key: "dialogPadding" },
2532
+ { cssVar: "--section-gap", key: "sectionGap" }
2533
+ ];
2534
+ var TYPE_FAMILY_VARS = [
2535
+ { cssVar: "--font-family-display", key: "displayFamily" },
2536
+ { cssVar: "--font-family-body", key: "bodyFamily" },
2537
+ { cssVar: "--font-family-mono", key: "monoFamily" }
2538
+ ];
2539
+ var TYPE_SIZE_KEYS = [
2540
+ "xs",
2541
+ "sm",
2542
+ "base",
2543
+ "lg",
2544
+ "xl",
2545
+ "2xl",
2546
+ "3xl",
2547
+ "4xl",
2548
+ "display-1",
2549
+ "display-2"
2550
+ ];
2551
+ var TYPE_INTENT_VARS = [
2552
+ { key: "headingMajor", cssName: "heading-major" },
2553
+ { key: "headingMinor", cssName: "heading-minor" },
2554
+ { key: "bodyEmphasis", cssName: "body-emphasis" },
2555
+ { key: "bodyDefault", cssName: "body-default" },
2556
+ { key: "bodyQuiet", cssName: "body-quiet" },
2557
+ { key: "caption", cssName: "caption" },
2558
+ { key: "numeric", cssName: "numeric" }
2559
+ ];
2560
+ var MOTION_DURATION_KEYS = [
2561
+ "instant",
2562
+ "fast",
2563
+ "normal",
2564
+ "slow",
2565
+ "dramatic"
2566
+ ];
2567
+ var MOTION_EASING_KEYS = [
2568
+ "linear",
2569
+ "standard",
2570
+ "emphasized",
2571
+ "spring"
2572
+ ];
2573
+ var MOTION_INTENT_VARS = [
2574
+ { key: "enter", cssName: "enter" },
2575
+ { key: "exit", cssName: "exit" },
2576
+ { key: "hover", cssName: "hover" },
2577
+ { key: "press", cssName: "press" },
2578
+ { key: "expand", cssName: "expand" },
2579
+ { key: "transition", cssName: "transition" }
2580
+ ];
2581
+ var ICONOGRAPHY_VARS = [
2582
+ { cssVar: "--icon-family", key: "family" },
2583
+ { cssVar: "--icon-stroke-width", key: "strokeWidth" },
2584
+ { cssVar: "--icon-default-size", key: "defaultSize" }
2585
+ ];
2586
+ var ELEVATION_VARS = [
2587
+ { cssVar: "--elevation-card", key: "cardElevation" },
2588
+ { cssVar: "--elevation-popover", key: "popoverElevation" },
2589
+ { cssVar: "--elevation-dialog", key: "dialogElevation" },
2590
+ { cssVar: "--elevation-toast", key: "toastElevation" }
2591
+ ];
2592
+ var GEOMETRY_VARS = [
2593
+ { cssVar: "--radius-container", key: "radiusContainer" },
2594
+ { cssVar: "--radius-interactive", key: "radiusInteractive" },
2595
+ { cssVar: "--radius-pill", key: "radiusPill" },
2596
+ { cssVar: "--border-hairline", key: "borderHairline" },
2597
+ { cssVar: "--border-standard", key: "borderStandard" },
2598
+ { cssVar: "--border-heavy", key: "borderHeavy" }
2599
+ ];
2600
+ var LEGACY_PREFIXES = {
2601
+ colors: "--color-",
2602
+ radii: "--radius-",
2603
+ spacing: "--space-",
2604
+ shadows: "--shadow-"
2605
+ };
2606
+ function themeTokensToCssVars(tokens, mode = "light", darkVariant) {
2607
+ const vars = {};
2608
+ const isDark = mode === "dark";
2609
+ const pickColors = isDark && darkVariant?.colors ? darkVariant.colors : tokens.colors;
2610
+ if (pickColors) {
2611
+ for (const [key, value] of Object.entries(pickColors)) {
2612
+ vars[`${LEGACY_PREFIXES.colors}${key}`] = value;
2613
+ }
2614
+ if (isDark && darkVariant?.colors && tokens.colors) {
2615
+ for (const [key, value] of Object.entries(tokens.colors)) {
2616
+ const varName = `${LEGACY_PREFIXES.colors}${key}`;
2617
+ if (!(varName in vars)) vars[varName] = value;
2618
+ }
2619
+ }
2620
+ }
2621
+ const pickRadii = isDark && darkVariant?.radii ? darkVariant.radii : tokens.radii;
2622
+ if (pickRadii) {
2623
+ for (const [key, value] of Object.entries(pickRadii)) {
2624
+ vars[`${LEGACY_PREFIXES.radii}${key}`] = value;
2625
+ }
2626
+ }
2627
+ const pickSpacing = isDark && darkVariant?.spacing ? darkVariant.spacing : tokens.spacing;
2628
+ if (pickSpacing) {
2629
+ for (const [key, value] of Object.entries(pickSpacing)) {
2630
+ vars[`${LEGACY_PREFIXES.spacing}${key}`] = value;
2631
+ }
2632
+ }
2633
+ const pickTypography = isDark && darkVariant?.typography ? darkVariant.typography : tokens.typography;
2634
+ if (pickTypography) {
2635
+ for (const [key, value] of Object.entries(pickTypography)) {
2636
+ vars[`--${key}`] = value;
2637
+ }
2638
+ }
2639
+ const pickShadows = isDark && darkVariant?.shadows ? darkVariant.shadows : tokens.shadows;
2640
+ if (pickShadows) {
2641
+ for (const [key, value] of Object.entries(pickShadows)) {
2642
+ vars[`${LEGACY_PREFIXES.shadows}${key}`] = value;
2643
+ }
2644
+ }
2645
+ const pickDensity = isDark && darkVariant?.density ? darkVariant.density : tokens.density;
2646
+ emitDensity(pickDensity, vars);
2647
+ const pickTypeScale = isDark && darkVariant?.typeScale ? darkVariant.typeScale : tokens.typeScale;
2648
+ emitTypeScale(pickTypeScale, vars);
2649
+ const pickMotion = isDark && darkVariant?.motion ? darkVariant.motion : tokens.motion;
2650
+ emitMotion(pickMotion, vars);
2651
+ const pickIconography = isDark && darkVariant?.iconography ? darkVariant.iconography : tokens.iconography;
2652
+ emitIconography(pickIconography, vars);
2653
+ const pickElevation = isDark && darkVariant?.elevation ? darkVariant.elevation : tokens.elevation;
2654
+ emitElevation(pickElevation, vars);
2655
+ const pickGeometry = isDark && darkVariant?.geometry ? darkVariant.geometry : tokens.geometry;
2656
+ emitGeometry(pickGeometry, vars);
2657
+ return vars;
2658
+ }
2659
+ function emitDensity(density, vars) {
2660
+ if (!density) return;
2661
+ applyFlat(density.spacing, DENSITY_SPACING_VARS, vars);
2662
+ applyFlat(density, DENSITY_ELEMENT_VARS, vars);
2663
+ }
2664
+ function typeSizeKeyStr(k) {
2665
+ return k;
2666
+ }
2667
+ function typeWeightStr(w) {
2668
+ return w;
2669
+ }
2670
+ function emitTypeIntent(name, intent, vars) {
2671
+ const sizeKey = typeSizeKeyStr(intent.size);
2672
+ const weight = typeWeightStr(intent.weight);
2673
+ vars[`--intent-${name}-size`] = `var(--text-${sizeKey})`;
2674
+ vars[`--intent-${name}-weight`] = `var(--font-weight-${weight})`;
2675
+ vars[`--intent-${name}-leading`] = `var(--leading-${sizeKey})`;
2676
+ }
2677
+ function emitTypeScale(ts, vars) {
2678
+ if (!ts) return;
2679
+ applyFlat(ts, TYPE_FAMILY_VARS, vars);
2680
+ if (ts.scale) {
2681
+ const s = ts.scale;
2682
+ for (const k of TYPE_SIZE_KEYS) {
2683
+ const entry = s[k];
2684
+ if (entry !== void 0) {
2685
+ vars[`--text-${k}`] = entry.size;
2686
+ vars[`--leading-${k}`] = entry.lineHeight;
2687
+ }
2688
+ }
2689
+ }
2690
+ if (ts.intents) {
2691
+ const i = ts.intents;
2692
+ for (const { key, cssName } of TYPE_INTENT_VARS) {
2693
+ const intent = i[key];
2694
+ if (intent) emitTypeIntent(cssName, intent, vars);
2695
+ }
2696
+ }
2697
+ }
2698
+ function emitMotionIntent(name, intent, vars) {
2699
+ vars[`--intent-${name}-duration`] = `var(--duration-${intent.duration})`;
2700
+ vars[`--intent-${name}-easing`] = `var(--easing-${intent.easing})`;
2701
+ }
2702
+ function emitMotion(m, vars) {
2703
+ if (!m) return;
2704
+ if (m.durations) {
2705
+ const d = m.durations;
2706
+ for (const k of MOTION_DURATION_KEYS) {
2707
+ const v = d[k];
2708
+ if (v !== void 0) vars[`--duration-${k}`] = v;
2709
+ }
2710
+ }
2711
+ if (m.easings) {
2712
+ const e = m.easings;
2713
+ for (const k of MOTION_EASING_KEYS) {
2714
+ const v = e[k];
2715
+ if (v !== void 0) vars[`--easing-${k}`] = v;
2716
+ }
2717
+ }
2718
+ if (m.intents) {
2719
+ const i = m.intents;
2720
+ for (const { key, cssName } of MOTION_INTENT_VARS) {
2721
+ const intent = i[key];
2722
+ if (intent) emitMotionIntent(cssName, intent, vars);
2723
+ }
2724
+ }
2725
+ }
2726
+ function emitIconography(i, vars) {
2727
+ applyFlat(i, ICONOGRAPHY_VARS, vars);
2728
+ }
2729
+ function emitElevation(e, vars) {
2730
+ applyFlat(e, ELEVATION_VARS, vars);
2731
+ }
2732
+ function emitGeometry(g, vars) {
2733
+ applyFlat(g, GEOMETRY_VARS, vars);
2734
+ }
2735
+ function resolveThemeForRuntime(theme) {
2736
+ if (theme === void 0) return void 0;
2737
+ if (typeof theme === "string") return void 0;
2738
+ return theme;
2739
+ }
2740
+
2741
+ // lib/iconNativeMap.ts
2742
+ var ICON_FALLBACK = {
2743
+ sfSymbol: "questionmark.circle",
2744
+ materialSymbol: "help"
2745
+ };
2746
+ var ICON_NATIVE_MAP = {
2747
+ // --- navigation & chrome ---
2748
+ "home": { sfSymbol: "house", materialSymbol: "home" },
2749
+ "menu": { sfSymbol: "line.3.horizontal", materialSymbol: "menu" },
2750
+ "more-horizontal": { sfSymbol: "ellipsis", materialSymbol: "more_horiz" },
2751
+ "more-vertical": { sfSymbol: "ellipsis", materialSymbol: "more_vert" },
2752
+ "chevron-right": { sfSymbol: "chevron.right", materialSymbol: "chevron_right" },
2753
+ "chevron-left": { sfSymbol: "chevron.left", materialSymbol: "chevron_left" },
2754
+ "chevron-up": { sfSymbol: "chevron.up", materialSymbol: "keyboard_arrow_up" },
2755
+ "chevron-down": { sfSymbol: "chevron.down", materialSymbol: "keyboard_arrow_down" },
2756
+ "chevrons-left": { sfSymbol: "chevron.left.2", materialSymbol: "keyboard_double_arrow_left" },
2757
+ "chevrons-right": { sfSymbol: "chevron.right.2", materialSymbol: "keyboard_double_arrow_right" },
2758
+ "chevrons-up-down": { sfSymbol: "chevron.up.chevron.down", materialSymbol: "unfold_more" },
2759
+ "arrow-left": { sfSymbol: "arrow.left", materialSymbol: "arrow_back" },
2760
+ "arrow-right": { sfSymbol: "arrow.right", materialSymbol: "arrow_forward" },
2761
+ "arrow-up": { sfSymbol: "arrow.up", materialSymbol: "arrow_upward" },
2762
+ "arrow-down": { sfSymbol: "arrow.down", materialSymbol: "arrow_downward" },
2763
+ "arrow-up-right": { sfSymbol: "arrow.up.right", materialSymbol: "north_east" },
2764
+ "arrow-down-left": { sfSymbol: "arrow.down.left", materialSymbol: "south_west" },
2765
+ "corner-up-left": { sfSymbol: "arrow.turn.up.left", materialSymbol: "subdirectory_arrow_left" },
2766
+ "corner-down-right": { sfSymbol: "arrow.turn.down.right", materialSymbol: "subdirectory_arrow_right" },
2767
+ "external-link": { sfSymbol: "arrow.up.forward.square", materialSymbol: "open_in_new" },
2768
+ "log-out": { sfSymbol: "rectangle.portrait.and.arrow.right", materialSymbol: "logout" },
2769
+ "log-in": { sfSymbol: "arrow.right.square", materialSymbol: "login" },
2770
+ // `left_panel_open`/`right_panel_open` (Material Symbols) have no
2771
+ // `Icons.Filled.*` member in androidx `material-icons-extended` (a newer
2772
+ // Material-Symbols-only pair) — `first_page`/`last_page` are the closest
2773
+ // directional stand-ins that actually compile (verified wave C5).
2774
+ "panel-left": { sfSymbol: "sidebar.left", materialSymbol: "first_page" },
2775
+ "panel-right": { sfSymbol: "sidebar.right", materialSymbol: "last_page" },
2776
+ "sidebar": { sfSymbol: "sidebar.left", materialSymbol: "view_sidebar" },
2777
+ "layout-grid": { sfSymbol: "square.grid.2x2", materialSymbol: "grid_view" },
2778
+ "layout-list": { sfSymbol: "list.bullet", materialSymbol: "view_list" },
2779
+ "grid": { sfSymbol: "square.grid.2x2", materialSymbol: "grid_view" },
2780
+ "list": { sfSymbol: "list.bullet", materialSymbol: "list" },
2781
+ // --- actions ---
2782
+ "plus": { sfSymbol: "plus", materialSymbol: "add" },
2783
+ "plus-circle": { sfSymbol: "plus.circle", materialSymbol: "add_circle" },
2784
+ "minus": { sfSymbol: "minus", materialSymbol: "remove" },
2785
+ "minus-circle": { sfSymbol: "minus.circle", materialSymbol: "remove_circle" },
2786
+ "x": { sfSymbol: "xmark", materialSymbol: "close" },
2787
+ "close": { sfSymbol: "xmark", materialSymbol: "close" },
2788
+ "check": { sfSymbol: "checkmark", materialSymbol: "check" },
2789
+ "check-circle": { sfSymbol: "checkmark.circle", materialSymbol: "check_circle" },
2790
+ "check-square": { sfSymbol: "checkmark.square", materialSymbol: "check_box" },
2791
+ "x-circle": { sfSymbol: "xmark.circle", materialSymbol: "cancel" },
2792
+ "trash": { sfSymbol: "trash", materialSymbol: "delete" },
2793
+ "trash-2": { sfSymbol: "trash", materialSymbol: "delete" },
2794
+ "edit": { sfSymbol: "pencil", materialSymbol: "edit" },
2795
+ "edit-2": { sfSymbol: "pencil", materialSymbol: "edit" },
2796
+ "edit-3": { sfSymbol: "pencil", materialSymbol: "edit" },
2797
+ "pencil": { sfSymbol: "pencil", materialSymbol: "edit" },
2798
+ "copy": { sfSymbol: "doc.on.doc", materialSymbol: "content_copy" },
2799
+ "clipboard": { sfSymbol: "clipboard", materialSymbol: "content_paste" },
2800
+ "save": { sfSymbol: "square.and.arrow.down", materialSymbol: "save" },
2801
+ "download": { sfSymbol: "arrow.down.circle", materialSymbol: "download" },
2802
+ "upload": { sfSymbol: "arrow.up.circle", materialSymbol: "upload" },
2803
+ "share": { sfSymbol: "square.and.arrow.up", materialSymbol: "share" },
2804
+ "share-2": { sfSymbol: "square.and.arrow.up", materialSymbol: "share" },
2805
+ "refresh-cw": { sfSymbol: "arrow.clockwise", materialSymbol: "refresh" },
2806
+ "refresh": { sfSymbol: "arrow.clockwise", materialSymbol: "refresh" },
2807
+ "rotate-cw": { sfSymbol: "arrow.clockwise", materialSymbol: "rotate_right" },
2808
+ "rotate-ccw": { sfSymbol: "arrow.counterclockwise", materialSymbol: "rotate_left" },
2809
+ "undo": { sfSymbol: "arrow.uturn.backward", materialSymbol: "undo" },
2810
+ "redo": { sfSymbol: "arrow.uturn.forward", materialSymbol: "redo" },
2811
+ "filter": { sfSymbol: "line.3.horizontal.decrease.circle", materialSymbol: "filter_list" },
2812
+ "sliders": { sfSymbol: "slider.horizontal.3", materialSymbol: "tune" },
2813
+ "search": { sfSymbol: "magnifyingglass", materialSymbol: "search" },
2814
+ "zoom-in": { sfSymbol: "plus.magnifyingglass", materialSymbol: "zoom_in" },
2815
+ "zoom-out": { sfSymbol: "minus.magnifyingglass", materialSymbol: "zoom_out" },
2816
+ "settings": { sfSymbol: "gearshape", materialSymbol: "settings" },
2817
+ "lock": { sfSymbol: "lock", materialSymbol: "lock" },
2818
+ "unlock": { sfSymbol: "lock.open", materialSymbol: "lock_open" },
2819
+ "eye": { sfSymbol: "eye", materialSymbol: "visibility" },
2820
+ "eye-off": { sfSymbol: "eye.slash", materialSymbol: "visibility_off" },
2821
+ "link": { sfSymbol: "link", materialSymbol: "link" },
2822
+ "link-2": { sfSymbol: "link", materialSymbol: "link" },
2823
+ "send": { sfSymbol: "paperplane", materialSymbol: "send" },
2824
+ "power": { sfSymbol: "power", materialSymbol: "power_settings_new" },
2825
+ "scissors": { sfSymbol: "scissors", materialSymbol: "content_cut" },
2826
+ // `ink_eraser` has no `Icons.Filled.*` member in androidx
2827
+ // `material-icons-extended` (newer Material-Symbols-only) — `backspace`
2828
+ // is the closest "erase" glyph that actually compiles (verified wave C5).
2829
+ "eraser": { sfSymbol: "eraser", materialSymbol: "backspace" },
2830
+ "stop": { sfSymbol: "stop.fill", materialSymbol: "stop" },
2831
+ "sort-asc": { sfSymbol: "arrow.up", materialSymbol: "arrow_upward" },
2832
+ "sort-desc": { sfSymbol: "arrow.down", materialSymbol: "arrow_downward" },
2833
+ // --- files ---
2834
+ "file": { sfSymbol: "doc", materialSymbol: "description" },
2835
+ "file-text": { sfSymbol: "doc.text", materialSymbol: "description" },
2836
+ "file-plus": { sfSymbol: "doc.badge.plus", materialSymbol: "note_add" },
2837
+ "file-minus": { sfSymbol: "doc.badge.minus", materialSymbol: "note" },
2838
+ "folder": { sfSymbol: "folder", materialSymbol: "folder" },
2839
+ "folder-open": { sfSymbol: "folder", materialSymbol: "folder_open" },
2840
+ "paperclip": { sfSymbol: "paperclip", materialSymbol: "attach_file" },
2841
+ "image": { sfSymbol: "photo", materialSymbol: "image" },
2842
+ "archive": { sfSymbol: "archivebox", materialSymbol: "archive" },
2843
+ "printer": { sfSymbol: "printer", materialSymbol: "print" },
2844
+ "book": { sfSymbol: "book", materialSymbol: "menu_book" },
2845
+ "bookmark": { sfSymbol: "bookmark", materialSymbol: "bookmark" },
2846
+ // --- communication ---
2847
+ "mail": { sfSymbol: "envelope", materialSymbol: "mail" },
2848
+ "inbox": { sfSymbol: "tray", materialSymbol: "inbox" },
2849
+ "message-circle": { sfSymbol: "bubble.left", materialSymbol: "chat_bubble" },
2850
+ "message-square": { sfSymbol: "bubble.left", materialSymbol: "forum" },
2851
+ "phone": { sfSymbol: "phone", materialSymbol: "call" },
2852
+ "bell": { sfSymbol: "bell", materialSymbol: "notifications" },
2853
+ "bell-off": { sfSymbol: "bell.slash", materialSymbol: "notifications_off" },
2854
+ "user": { sfSymbol: "person", materialSymbol: "person" },
2855
+ "users": { sfSymbol: "person.2", materialSymbol: "group" },
2856
+ "user-plus": { sfSymbol: "person.badge.plus", materialSymbol: "person_add" },
2857
+ "user-circle": { sfSymbol: "person.crop.circle", materialSymbol: "account_circle" },
2858
+ // --- status ---
2859
+ "info": { sfSymbol: "info.circle", materialSymbol: "info" },
2860
+ "alert-circle": { sfSymbol: "exclamationmark.circle", materialSymbol: "error" },
2861
+ "alert-triangle": { sfSymbol: "exclamationmark.triangle", materialSymbol: "warning" },
2862
+ "help-circle": { sfSymbol: "questionmark.circle", materialSymbol: "help" },
2863
+ "star": { sfSymbol: "star", materialSymbol: "star" },
2864
+ "heart": { sfSymbol: "heart", materialSymbol: "favorite" },
2865
+ "flag": { sfSymbol: "flag", materialSymbol: "flag" },
2866
+ "tag": { sfSymbol: "tag", materialSymbol: "label" },
2867
+ "clock": { sfSymbol: "clock", materialSymbol: "schedule" },
2868
+ "calendar": { sfSymbol: "calendar", materialSymbol: "calendar_month" },
2869
+ // `progress_activity` has no `Icons.Filled.*` member in androidx
2870
+ // `material-icons-extended` (newer Material-Symbols-only) — `autorenew`
2871
+ // is the closest spinner/loading glyph that actually compiles (verified
2872
+ // wave C5).
2873
+ "loader": { sfSymbol: "arrow.triangle.2.circlepath", materialSymbol: "autorenew" },
2874
+ "loader-2": { sfSymbol: "arrow.triangle.2.circlepath", materialSymbol: "autorenew" },
2875
+ "activity": { sfSymbol: "waveform.path.ecg", materialSymbol: "monitor_heart" },
2876
+ "smile": { sfSymbol: "face.smiling", materialSymbol: "sentiment_satisfied" },
2877
+ // --- media ---
2878
+ "play": { sfSymbol: "play.fill", materialSymbol: "play_arrow" },
2879
+ "pause": { sfSymbol: "pause.fill", materialSymbol: "pause" },
2880
+ "skip-forward": { sfSymbol: "forward.fill", materialSymbol: "skip_next" },
2881
+ "skip-back": { sfSymbol: "backward.fill", materialSymbol: "skip_previous" },
2882
+ "volume-2": { sfSymbol: "speaker.wave.2", materialSymbol: "volume_up" },
2883
+ "volume": { sfSymbol: "speaker.wave.2", materialSymbol: "volume_up" },
2884
+ "volume-x": { sfSymbol: "speaker.slash", materialSymbol: "volume_off" },
2885
+ "volume-off": { sfSymbol: "speaker.slash", materialSymbol: "volume_off" },
2886
+ "camera": { sfSymbol: "camera", materialSymbol: "photo_camera" },
2887
+ "mic": { sfSymbol: "mic", materialSymbol: "mic" },
2888
+ "video": { sfSymbol: "video", materialSymbol: "videocam" },
2889
+ // --- editing / typography ---
2890
+ "type": { sfSymbol: "textformat", materialSymbol: "text_fields" },
2891
+ "bold": { sfSymbol: "bold", materialSymbol: "format_bold" },
2892
+ "italic": { sfSymbol: "italic", materialSymbol: "format_italic" },
2893
+ "underline": { sfSymbol: "underline", materialSymbol: "format_underlined" },
2894
+ "align-left": { sfSymbol: "text.alignleft", materialSymbol: "format_align_left" },
2895
+ "align-center": { sfSymbol: "text.aligncenter", materialSymbol: "format_align_center" },
2896
+ "align-right": { sfSymbol: "text.alignright", materialSymbol: "format_align_right" },
2897
+ "indent": { sfSymbol: "increase.indent", materialSymbol: "format_indent_increase" },
2898
+ // --- misc ---
2899
+ "shopping-cart": { sfSymbol: "cart", materialSymbol: "shopping_cart" },
2900
+ "credit-card": { sfSymbol: "creditcard", materialSymbol: "credit_card" },
2901
+ "map-pin": { sfSymbol: "mappin", materialSymbol: "location_on" },
2902
+ "globe": { sfSymbol: "globe", materialSymbol: "public" },
2903
+ "wifi": { sfSymbol: "wifi", materialSymbol: "wifi" },
2904
+ "battery": { sfSymbol: "battery.100", materialSymbol: "battery_full" },
2905
+ "moon": { sfSymbol: "moon", materialSymbol: "dark_mode" },
2906
+ "sun": { sfSymbol: "sun.max", materialSymbol: "light_mode" },
2907
+ "square": { sfSymbol: "square", materialSymbol: "crop_square" },
2908
+ "circle": { sfSymbol: "circle", materialSymbol: "circle" }
2909
+ };
2910
+ var ICON_ALIASES = [
2911
+ "close",
2912
+ "trash",
2913
+ "loader",
2914
+ "stop",
2915
+ "volume",
2916
+ "volume-off",
2917
+ "refresh",
2918
+ "share",
2919
+ "sort-asc",
2920
+ "sort-desc"
2921
+ ];
2922
+ function resolveNativeIcon(name) {
2923
+ const direct = ICON_NATIVE_MAP[name];
2924
+ if (direct) return direct;
2925
+ if (ICON_ALIASES.includes(name)) {
2926
+ const aliased = ICON_NATIVE_MAP[name];
2927
+ if (aliased) return aliased;
2928
+ }
2929
+ return ICON_FALLBACK;
2930
+ }
2931
+
2932
+ export { ApiError, DEFAULT_CONFIG, DENSITY_ELEMENT_VARS, DENSITY_SPACING_VARS, EDITOR_MOTIONS, EDITOR_OPERATORS, ELEVATION_VARS, GEOMETRY_VARS, ICONOGRAPHY_VARS, ICON_ALIASES, ICON_FALLBACK, ICON_NATIVE_MAP, INDENT_UNIT, JAZARI_COLORS, LEGACY_PREFIXES, MOTION_DURATION_KEYS, MOTION_EASING_KEYS, MOTION_INTENT_VARS, TYPE_FAMILY_VARS, TYPE_INTENT_VARS, TYPE_SIZE_KEYS, apiClient, applyMotion, applyOperator, arrowheadPath, bindCanvasCapture, bindEventBus, bindLastDrawables, bindTraitStateGetter, brainIconPath, clearDebugEvents, clearEntityProvider, clearGuardHistory, clearTicks, clearTraits, clearVerification, cn, compareCellValues, computeJazariLayout, createCommandSendPump, createTickSendRelay, debug, debugCollision, debugError, debugGameState, debugGroup, debugGroupEnd, debugInput, debugPhysics, debugTable, debugTime, debugTimeEnd, debugWarn, eightPointedStarPath, extractOutputsFromTransitions, extractStateMachine, formatDate, formatDateTime, formatGuard, formatNestedFieldLabel, formatTime, formatValue, gearTeethPath, getAllChecks, getAllTicks, getAllTraits, getBridgeHealth, getDebugEvents, getEffectSummary, getEntitiesByType, getEntityById, getEntitySnapshot, getEventsBySource, getEventsByType, getGuardEvaluationsForTrait, getGuardHistory, getRecentEvents, getRecentGuardEvaluations, getSnapshot, getSummary, getTick, getTrait, getTraitSnapshots, getTransitions, getTransitionsForTrait, humanizeEnumValue, humanizeFieldName, initDebugShortcut, isDebugEnabled, isEditableTarget, isEditorMotion, isEditorOperator, keyMapCode, lockIconPath, logDebugEvent, logEffectExecuted, logError, logEventFired, logInfo, logStateChange, logWarning, motionRange, onDebugToggle, parseContentSegments, parseLessonSegments, parseMarkdownWithCodeBlocks, pipeIconPath, profilerOnRender, recordGuardEvaluation, recordServerResponse, recordTransition, registerCheck, registerTick, registerTrait, registerTraitSnapshot, renderStateMachineToDomData, renderStateMachineToSvg, resolveImageUrl, resolveKeyMapEvent, resolveNativeIcon, resolveThemeForRuntime, setDebugEnabled, setEntityProvider, setTickActive, sortRows, subscribeToDebugEvents, subscribeToGuardChanges, subscribeToTickChanges, subscribeToTraitChanges, subscribeToVerification, themeTokensToCssVars, toggleDebug, unregisterTick, unregisterTrait, updateAssetStatus, updateBridgeHealth, updateCheck, updateGuardResult, updateTickExecution, updateTraitState, usePerfBuffer, waitForTransition };
@@ -4103,11 +4103,10 @@ var tagVariantMap = {
4103
4103
  };
4104
4104
  var backgroundStyles = {
4105
4105
  dark: "bg-foreground text-background",
4106
- gradient: [
4107
- "bg-[radial-gradient(ellipse_at_top,var(--color-primary)/0.08,transparent_60%),",
4108
- "radial-gradient(ellipse_at_bottom_right,var(--color-accent)/0.06,transparent_50%)]",
4109
- "bg-background"
4110
- ].join(" "),
4106
+ // A single bracket value: joining this as two array entries put a space
4107
+ // inside the class (Tailwind splits utilities on whitespace), so neither
4108
+ // half was a valid utility and the gradient rendered as nothing.
4109
+ gradient: "bg-[radial-gradient(ellipse_at_top,var(--color-primary)/0.08,transparent_60%),radial-gradient(ellipse_at_bottom_right,var(--color-accent)/0.06,transparent_50%)] bg-background",
4111
4110
  subtle: "bg-muted/30"
4112
4111
  };
4113
4112
  var MarketingImage = ({ src, alt, className }) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -4082,11 +4082,10 @@ var tagVariantMap = {
4082
4082
  };
4083
4083
  var backgroundStyles = {
4084
4084
  dark: "bg-foreground text-background",
4085
- gradient: [
4086
- "bg-[radial-gradient(ellipse_at_top,var(--color-primary)/0.08,transparent_60%),",
4087
- "radial-gradient(ellipse_at_bottom_right,var(--color-accent)/0.06,transparent_50%)]",
4088
- "bg-background"
4089
- ].join(" "),
4085
+ // A single bracket value: joining this as two array entries put a space
4086
+ // inside the class (Tailwind splits utilities on whitespace), so neither
4087
+ // half was a valid utility and the gradient rendered as nothing.
4088
+ gradient: "bg-[radial-gradient(ellipse_at_top,var(--color-primary)/0.08,transparent_60%),radial-gradient(ellipse_at_bottom_right,var(--color-accent)/0.06,transparent_50%)] bg-background",
4090
4089
  subtle: "bg-muted/30"
4091
4090
  };
4092
4091
  var MarketingImage = ({ src, alt, className }) => /* @__PURE__ */ jsx(