@almadar/ui 6.29.0 → 6.30.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
@@ -2492,6 +2492,443 @@ function applyOperator(input) {
2492
2492
  }
2493
2493
  }
2494
2494
 
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
+
2495
2932
  Object.defineProperty(exports, "PERF_NAMESPACE", {
2496
2933
  enumerable: true,
2497
2934
  get: function () { return ui.PERF_NAMESPACE; }
@@ -2526,10 +2963,25 @@ Object.defineProperty(exports, "getNestedValue", {
2526
2963
  });
2527
2964
  exports.ApiError = ApiError;
2528
2965
  exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
2966
+ exports.DENSITY_ELEMENT_VARS = DENSITY_ELEMENT_VARS;
2967
+ exports.DENSITY_SPACING_VARS = DENSITY_SPACING_VARS;
2529
2968
  exports.EDITOR_MOTIONS = EDITOR_MOTIONS;
2530
2969
  exports.EDITOR_OPERATORS = EDITOR_OPERATORS;
2970
+ exports.ELEVATION_VARS = ELEVATION_VARS;
2971
+ exports.GEOMETRY_VARS = GEOMETRY_VARS;
2972
+ exports.ICONOGRAPHY_VARS = ICONOGRAPHY_VARS;
2973
+ exports.ICON_ALIASES = ICON_ALIASES;
2974
+ exports.ICON_FALLBACK = ICON_FALLBACK;
2975
+ exports.ICON_NATIVE_MAP = ICON_NATIVE_MAP;
2531
2976
  exports.INDENT_UNIT = INDENT_UNIT;
2532
2977
  exports.JAZARI_COLORS = JAZARI_COLORS;
2978
+ exports.LEGACY_PREFIXES = LEGACY_PREFIXES;
2979
+ exports.MOTION_DURATION_KEYS = MOTION_DURATION_KEYS;
2980
+ exports.MOTION_EASING_KEYS = MOTION_EASING_KEYS;
2981
+ exports.MOTION_INTENT_VARS = MOTION_INTENT_VARS;
2982
+ exports.TYPE_FAMILY_VARS = TYPE_FAMILY_VARS;
2983
+ exports.TYPE_INTENT_VARS = TYPE_INTENT_VARS;
2984
+ exports.TYPE_SIZE_KEYS = TYPE_SIZE_KEYS;
2533
2985
  exports.apiClient = apiClient;
2534
2986
  exports.applyMotion = applyMotion;
2535
2987
  exports.applyOperator = applyOperator;
@@ -2628,6 +3080,8 @@ exports.renderStateMachineToDomData = renderStateMachineToDomData;
2628
3080
  exports.renderStateMachineToSvg = renderStateMachineToSvg;
2629
3081
  exports.resolveImageUrl = resolveImageUrl;
2630
3082
  exports.resolveKeyMapEvent = resolveKeyMapEvent;
3083
+ exports.resolveNativeIcon = resolveNativeIcon;
3084
+ exports.resolveThemeForRuntime = resolveThemeForRuntime;
2631
3085
  exports.setDebugEnabled = setDebugEnabled;
2632
3086
  exports.setEntityProvider = setEntityProvider;
2633
3087
  exports.setTickActive = setTickActive;
@@ -2637,6 +3091,7 @@ exports.subscribeToGuardChanges = subscribeToGuardChanges;
2637
3091
  exports.subscribeToTickChanges = subscribeToTickChanges;
2638
3092
  exports.subscribeToTraitChanges = subscribeToTraitChanges;
2639
3093
  exports.subscribeToVerification = subscribeToVerification;
3094
+ exports.themeTokensToCssVars = themeTokensToCssVars;
2640
3095
  exports.toggleDebug = toggleDebug;
2641
3096
  exports.unregisterTick = unregisterTick;
2642
3097
  exports.unregisterTrait = unregisterTrait;
@@ -3,6 +3,7 @@ import { FieldValue, EntityRow, EventKey } from '@almadar/core';
3
3
  export { AssetLoadStatus, BridgeHealth, CheckStatus, EffectTrace, EventLogEntry, OrbitalVerificationAPI, ServerResponseTrace, TraitStateSnapshot, TransitionTrace, VerificationCheck, VerificationSnapshot, VerificationSummary, getNestedValue } from '@almadar/core';
4
4
  export { p as profilerOnRender, u as usePerfBuffer } from '../perf-DaVdsbU0.cjs';
5
5
  export { T as TraitSnapshotGetter, b as bindCanvasCapture, a as bindEventBus, c as bindLastDrawables, d as bindTraitStateGetter, e as clearVerification, g as getAllChecks, f as getBridgeHealth, h as getSnapshot, i as getSummary, j as getTraitSnapshots, k as getTransitions, l as getTransitionsForTrait, r as recordServerResponse, m as recordTransition, n as registerCheck, o as registerTraitSnapshot, s as subscribeToVerification, u as updateAssetStatus, p as updateBridgeHealth, q as updateCheck, w as waitForTransition } from '../verificationRegistry-DTrKDRoa.cjs';
6
+ export { D as DENSITY_ELEMENT_VARS, a as DENSITY_SPACING_VARS, E as ELEVATION_VARS, F as FlatVarEntry, G as GEOMETRY_VARS, I as ICONOGRAPHY_VARS, L as LEGACY_PREFIXES, M as MOTION_DURATION_KEYS, b as MOTION_EASING_KEYS, c as MOTION_INTENT_VARS, S as StringValueKey, d as TYPE_FAMILY_VARS, e as TYPE_INTENT_VARS, f as TYPE_SIZE_KEYS, T as ThemeMode, r as resolveThemeForRuntime, t as themeTokensToCssVars } from '../themeTokens-DVRwufw8.cjs';
6
7
  export { PERF_NAMESPACE, PerfEntry, clearPerf, perfEnd, perfGauge, perfStart, perfTime, perfTimeAsync } from '@almadar/runtime/ui';
7
8
  import 'react';
8
9
  import 'clsx';
@@ -601,4 +602,44 @@ declare function eightPointedStarPath(cx: number, cy: number, outerR: number, in
601
602
  */
602
603
  declare function arrowheadPath(size: number): string;
603
604
 
604
- export { ApiError, type CommandSendPump, type DebugEvent, type DebugEventType, type EntitySnapshot, type EntityState, type GuardContext, type GuardEvaluation, JAZARI_COLORS, type JazariArmLayout, type JazariEffectInfo, type JazariGearLayout, type JazariGuardInfo, type JazariLayout, type KeyMap, type LayoutInput, type LayoutState, type LayoutTransition, type PersistentEntityInfo, type RuntimeEntity, type SortDirection, type TickExecution, type TickSendRelay, type TraitDebugInfo, type TraitGuard, type TraitTransition, type ValueFormat, apiClient, arrowheadPath, brainIconPath, clearDebugEvents, clearEntityProvider, clearGuardHistory, clearTicks, clearTraits, compareCellValues, computeJazariLayout, createCommandSendPump, createTickSendRelay, debug, debugCollision, debugError, debugGameState, debugGroup, debugGroupEnd, debugInput, debugPhysics, debugTable, debugTime, debugTimeEnd, debugWarn, eightPointedStarPath, formatDate, formatDateTime, formatNestedFieldLabel, formatTime, formatValue, gearTeethPath, getAllTicks, getAllTraits, getDebugEvents, getEntitiesByType, getEntityById, getEntitySnapshot, getEventsBySource, getEventsByType, getGuardEvaluationsForTrait, getGuardHistory, getRecentEvents, getRecentGuardEvaluations, getTick, getTrait, humanizeEnumValue, humanizeFieldName, initDebugShortcut, isDebugEnabled, isEditableTarget, keyMapCode, lockIconPath, logDebugEvent, logEffectExecuted, logError, logEventFired, logInfo, logStateChange, logWarning, onDebugToggle, pipeIconPath, recordGuardEvaluation, registerTick, registerTrait, resolveImageUrl, resolveKeyMapEvent, setDebugEnabled, setEntityProvider, setTickActive, sortRows, subscribeToDebugEvents, subscribeToGuardChanges, subscribeToTickChanges, subscribeToTraitChanges, toggleDebug, unregisterTick, unregisterTrait, updateGuardResult, updateTickExecution, updateTraitState };
605
+ /**
606
+ * Lucide canonical icon name → native platform glyph (Layer 1 Iconography
607
+ * axis, native path). `lib/iconFamily.tsx` resolves a canonical name to a
608
+ * React component for the web/runtime path; this table is the same
609
+ * dispatch for the compiled iOS/Android shells, which have no React DOM to
610
+ * render into and instead need a platform symbol name.
611
+ *
612
+ * Hand-curated (no fuzzy matching — see `resolveNativeIcon`). Covers:
613
+ * (a) every alias key in `components/core/atoms/Icon.tsx` `iconAliases`
614
+ * and `lib/iconFamily.tsx` `lucideAliases`
615
+ * (b) every icon name appearing as an icon-prop `default` or in an
616
+ * icon-prop description's quoted examples in
617
+ * `orbital-rust/crates/orbital-compiler/src/baked/patterns-registry.json`
618
+ * (c) every icon name used by the wave-1 native pattern set's React
619
+ * components under `components/core/**`
620
+ * (d) the common Lucide vocabulary: navigation, actions, files,
621
+ * communication, status, media, arrows, editing.
622
+ *
623
+ * `sfSymbol` values are real SF Symbols 5 names; `materialSymbol` values are
624
+ * real Material Symbols names. Consumed by `almadar-sync icon-map`, which
625
+ * emits `IconMap.swift`/`IconMap.kt` from this table — regenerate with
626
+ * `node tools/almadar-pattern-sync/dist/index.js icon-map` after editing.
627
+ */
628
+ interface NativeIconGlyph {
629
+ sfSymbol: string;
630
+ materialSymbol: string;
631
+ }
632
+ declare const ICON_FALLBACK: NativeIconGlyph;
633
+ declare const ICON_NATIVE_MAP: Readonly<Record<string, NativeIconGlyph>>;
634
+ /**
635
+ * Every non-standard name from `iconAliases` (`components/core/atoms/Icon.tsx`)
636
+ * and `lucideAliases` (`lib/iconFamily.tsx`) — the names that don't kebab→Pascal
637
+ * to a real Lucide export. Each one is also a first-class `ICON_NATIVE_MAP` key
638
+ * (requirement (a)); exported so the alias set has one pinned source of truth
639
+ * a test can check against, independent of whatever else the map grows to cover.
640
+ */
641
+ declare const ICON_ALIASES: ReadonlyArray<string>;
642
+ /** Exact key match, then an `iconAliases` alias, then the deterministic fallback — no fuzzy matching. */
643
+ declare function resolveNativeIcon(name: string): NativeIconGlyph;
644
+
645
+ export { ApiError, type CommandSendPump, type DebugEvent, type DebugEventType, type EntitySnapshot, type EntityState, type GuardContext, type GuardEvaluation, ICON_ALIASES, ICON_FALLBACK, ICON_NATIVE_MAP, JAZARI_COLORS, type JazariArmLayout, type JazariEffectInfo, type JazariGearLayout, type JazariGuardInfo, type JazariLayout, type KeyMap, type LayoutInput, type LayoutState, type LayoutTransition, type NativeIconGlyph, type PersistentEntityInfo, type RuntimeEntity, type SortDirection, type TickExecution, type TickSendRelay, type TraitDebugInfo, type TraitGuard, type TraitTransition, type ValueFormat, apiClient, arrowheadPath, brainIconPath, clearDebugEvents, clearEntityProvider, clearGuardHistory, clearTicks, clearTraits, compareCellValues, computeJazariLayout, createCommandSendPump, createTickSendRelay, debug, debugCollision, debugError, debugGameState, debugGroup, debugGroupEnd, debugInput, debugPhysics, debugTable, debugTime, debugTimeEnd, debugWarn, eightPointedStarPath, formatDate, formatDateTime, formatNestedFieldLabel, formatTime, formatValue, gearTeethPath, getAllTicks, getAllTraits, getDebugEvents, getEntitiesByType, getEntityById, getEntitySnapshot, getEventsBySource, getEventsByType, getGuardEvaluationsForTrait, getGuardHistory, getRecentEvents, getRecentGuardEvaluations, getTick, getTrait, humanizeEnumValue, humanizeFieldName, initDebugShortcut, isDebugEnabled, isEditableTarget, keyMapCode, lockIconPath, logDebugEvent, logEffectExecuted, logError, logEventFired, logInfo, logStateChange, logWarning, onDebugToggle, pipeIconPath, recordGuardEvaluation, registerTick, registerTrait, resolveImageUrl, resolveKeyMapEvent, resolveNativeIcon, setDebugEnabled, setEntityProvider, setTickActive, sortRows, subscribeToDebugEvents, subscribeToGuardChanges, subscribeToTickChanges, subscribeToTraitChanges, toggleDebug, unregisterTick, unregisterTrait, updateGuardResult, updateTickExecution, updateTraitState };
@@ -3,6 +3,7 @@ import { FieldValue, EntityRow, EventKey } from '@almadar/core';
3
3
  export { AssetLoadStatus, BridgeHealth, CheckStatus, EffectTrace, EventLogEntry, OrbitalVerificationAPI, ServerResponseTrace, TraitStateSnapshot, TransitionTrace, VerificationCheck, VerificationSnapshot, VerificationSummary, getNestedValue } from '@almadar/core';
4
4
  export { p as profilerOnRender, u as usePerfBuffer } from '../perf-DaVdsbU0.js';
5
5
  export { T as TraitSnapshotGetter, b as bindCanvasCapture, a as bindEventBus, c as bindLastDrawables, d as bindTraitStateGetter, e as clearVerification, g as getAllChecks, f as getBridgeHealth, h as getSnapshot, i as getSummary, j as getTraitSnapshots, k as getTransitions, l as getTransitionsForTrait, r as recordServerResponse, m as recordTransition, n as registerCheck, o as registerTraitSnapshot, s as subscribeToVerification, u as updateAssetStatus, p as updateBridgeHealth, q as updateCheck, w as waitForTransition } from '../verificationRegistry-Cwa52VyK.js';
6
+ export { D as DENSITY_ELEMENT_VARS, a as DENSITY_SPACING_VARS, E as ELEVATION_VARS, F as FlatVarEntry, G as GEOMETRY_VARS, I as ICONOGRAPHY_VARS, L as LEGACY_PREFIXES, M as MOTION_DURATION_KEYS, b as MOTION_EASING_KEYS, c as MOTION_INTENT_VARS, S as StringValueKey, d as TYPE_FAMILY_VARS, e as TYPE_INTENT_VARS, f as TYPE_SIZE_KEYS, T as ThemeMode, r as resolveThemeForRuntime, t as themeTokensToCssVars } from '../themeTokens-DVRwufw8.js';
6
7
  export { PERF_NAMESPACE, PerfEntry, clearPerf, perfEnd, perfGauge, perfStart, perfTime, perfTimeAsync } from '@almadar/runtime/ui';
7
8
  import 'react';
8
9
  import 'clsx';
@@ -601,4 +602,44 @@ declare function eightPointedStarPath(cx: number, cy: number, outerR: number, in
601
602
  */
602
603
  declare function arrowheadPath(size: number): string;
603
604
 
604
- export { ApiError, type CommandSendPump, type DebugEvent, type DebugEventType, type EntitySnapshot, type EntityState, type GuardContext, type GuardEvaluation, JAZARI_COLORS, type JazariArmLayout, type JazariEffectInfo, type JazariGearLayout, type JazariGuardInfo, type JazariLayout, type KeyMap, type LayoutInput, type LayoutState, type LayoutTransition, type PersistentEntityInfo, type RuntimeEntity, type SortDirection, type TickExecution, type TickSendRelay, type TraitDebugInfo, type TraitGuard, type TraitTransition, type ValueFormat, apiClient, arrowheadPath, brainIconPath, clearDebugEvents, clearEntityProvider, clearGuardHistory, clearTicks, clearTraits, compareCellValues, computeJazariLayout, createCommandSendPump, createTickSendRelay, debug, debugCollision, debugError, debugGameState, debugGroup, debugGroupEnd, debugInput, debugPhysics, debugTable, debugTime, debugTimeEnd, debugWarn, eightPointedStarPath, formatDate, formatDateTime, formatNestedFieldLabel, formatTime, formatValue, gearTeethPath, getAllTicks, getAllTraits, getDebugEvents, getEntitiesByType, getEntityById, getEntitySnapshot, getEventsBySource, getEventsByType, getGuardEvaluationsForTrait, getGuardHistory, getRecentEvents, getRecentGuardEvaluations, getTick, getTrait, humanizeEnumValue, humanizeFieldName, initDebugShortcut, isDebugEnabled, isEditableTarget, keyMapCode, lockIconPath, logDebugEvent, logEffectExecuted, logError, logEventFired, logInfo, logStateChange, logWarning, onDebugToggle, pipeIconPath, recordGuardEvaluation, registerTick, registerTrait, resolveImageUrl, resolveKeyMapEvent, setDebugEnabled, setEntityProvider, setTickActive, sortRows, subscribeToDebugEvents, subscribeToGuardChanges, subscribeToTickChanges, subscribeToTraitChanges, toggleDebug, unregisterTick, unregisterTrait, updateGuardResult, updateTickExecution, updateTraitState };
605
+ /**
606
+ * Lucide canonical icon name → native platform glyph (Layer 1 Iconography
607
+ * axis, native path). `lib/iconFamily.tsx` resolves a canonical name to a
608
+ * React component for the web/runtime path; this table is the same
609
+ * dispatch for the compiled iOS/Android shells, which have no React DOM to
610
+ * render into and instead need a platform symbol name.
611
+ *
612
+ * Hand-curated (no fuzzy matching — see `resolveNativeIcon`). Covers:
613
+ * (a) every alias key in `components/core/atoms/Icon.tsx` `iconAliases`
614
+ * and `lib/iconFamily.tsx` `lucideAliases`
615
+ * (b) every icon name appearing as an icon-prop `default` or in an
616
+ * icon-prop description's quoted examples in
617
+ * `orbital-rust/crates/orbital-compiler/src/baked/patterns-registry.json`
618
+ * (c) every icon name used by the wave-1 native pattern set's React
619
+ * components under `components/core/**`
620
+ * (d) the common Lucide vocabulary: navigation, actions, files,
621
+ * communication, status, media, arrows, editing.
622
+ *
623
+ * `sfSymbol` values are real SF Symbols 5 names; `materialSymbol` values are
624
+ * real Material Symbols names. Consumed by `almadar-sync icon-map`, which
625
+ * emits `IconMap.swift`/`IconMap.kt` from this table — regenerate with
626
+ * `node tools/almadar-pattern-sync/dist/index.js icon-map` after editing.
627
+ */
628
+ interface NativeIconGlyph {
629
+ sfSymbol: string;
630
+ materialSymbol: string;
631
+ }
632
+ declare const ICON_FALLBACK: NativeIconGlyph;
633
+ declare const ICON_NATIVE_MAP: Readonly<Record<string, NativeIconGlyph>>;
634
+ /**
635
+ * Every non-standard name from `iconAliases` (`components/core/atoms/Icon.tsx`)
636
+ * and `lucideAliases` (`lib/iconFamily.tsx`) — the names that don't kebab→Pascal
637
+ * to a real Lucide export. Each one is also a first-class `ICON_NATIVE_MAP` key
638
+ * (requirement (a)); exported so the alias set has one pinned source of truth
639
+ * a test can check against, independent of whatever else the map grows to cover.
640
+ */
641
+ declare const ICON_ALIASES: ReadonlyArray<string>;
642
+ /** Exact key match, then an `iconAliases` alias, then the deterministic fallback — no fuzzy matching. */
643
+ declare function resolveNativeIcon(name: string): NativeIconGlyph;
644
+
645
+ export { ApiError, type CommandSendPump, type DebugEvent, type DebugEventType, type EntitySnapshot, type EntityState, type GuardContext, type GuardEvaluation, ICON_ALIASES, ICON_FALLBACK, ICON_NATIVE_MAP, JAZARI_COLORS, type JazariArmLayout, type JazariEffectInfo, type JazariGearLayout, type JazariGuardInfo, type JazariLayout, type KeyMap, type LayoutInput, type LayoutState, type LayoutTransition, type NativeIconGlyph, type PersistentEntityInfo, type RuntimeEntity, type SortDirection, type TickExecution, type TickSendRelay, type TraitDebugInfo, type TraitGuard, type TraitTransition, type ValueFormat, apiClient, arrowheadPath, brainIconPath, clearDebugEvents, clearEntityProvider, clearGuardHistory, clearTicks, clearTraits, compareCellValues, computeJazariLayout, createCommandSendPump, createTickSendRelay, debug, debugCollision, debugError, debugGameState, debugGroup, debugGroupEnd, debugInput, debugPhysics, debugTable, debugTime, debugTimeEnd, debugWarn, eightPointedStarPath, formatDate, formatDateTime, formatNestedFieldLabel, formatTime, formatValue, gearTeethPath, getAllTicks, getAllTraits, getDebugEvents, getEntitiesByType, getEntityById, getEntitySnapshot, getEventsBySource, getEventsByType, getGuardEvaluationsForTrait, getGuardHistory, getRecentEvents, getRecentGuardEvaluations, getTick, getTrait, humanizeEnumValue, humanizeFieldName, initDebugShortcut, isDebugEnabled, isEditableTarget, keyMapCode, lockIconPath, logDebugEvent, logEffectExecuted, logError, logEventFired, logInfo, logStateChange, logWarning, onDebugToggle, pipeIconPath, recordGuardEvaluation, registerTick, registerTrait, resolveImageUrl, resolveKeyMapEvent, resolveNativeIcon, setDebugEnabled, setEntityProvider, setTickActive, sortRows, subscribeToDebugEvents, subscribeToGuardChanges, subscribeToTickChanges, subscribeToTraitChanges, toggleDebug, unregisterTick, unregisterTrait, updateGuardResult, updateTickExecution, updateTraitState };