silvery 0.17.3 → 0.18.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 (154) hide show
  1. package/README.md +7 -13
  2. package/dist/{UPNG-AVSMjiFE.mjs → UPNG-DvKjM6wE.mjs} +1 -1
  3. package/dist/{UPNG-AVSMjiFE.mjs.map → UPNG-DvKjM6wE.mjs.map} +1 -1
  4. package/dist/{__vite-browser-external-2447137e-D3GdsvS_.mjs → __vite-browser-external-2447137e-DPKHHqQK.mjs} +1 -1
  5. package/dist/{__vite-browser-external-2447137e-D3GdsvS_.mjs.map → __vite-browser-external-2447137e-DPKHHqQK.mjs.map} +1 -1
  6. package/dist/{animation-C_PTO0uH.mjs → animation-DhINOJk8.mjs} +1 -1
  7. package/dist/{animation-C_PTO0uH.mjs.map → animation-DhINOJk8.mjs.map} +1 -1
  8. package/dist/{ansi-CXLE_pt1.mjs → ansi-C6Qs1Wn2.mjs} +1 -1
  9. package/dist/{ansi-CXLE_pt1.mjs.map → ansi-C6Qs1Wn2.mjs.map} +1 -1
  10. package/dist/{ansi-zmNzgkPB.d.mts → ansi-CsjnZtAw.d.mts} +1 -1
  11. package/dist/{ansi-zmNzgkPB.d.mts.map → ansi-CsjnZtAw.d.mts.map} +1 -1
  12. package/dist/apng-CvSlLBtc.mjs +3 -0
  13. package/dist/{apng-ENBAJk-H.mjs → apng-DFFVOItr.mjs} +3 -3
  14. package/dist/{apng-ENBAJk-H.mjs.map → apng-DFFVOItr.mjs.map} +1 -1
  15. package/dist/{backend-CkIkIHR-.mjs → backend-DU0Y938U.mjs} +1 -1
  16. package/dist/{backend-CkIkIHR-.mjs.map → backend-DU0Y938U.mjs.map} +1 -1
  17. package/dist/{backends-CkvbG3js.mjs → backends-BihMKFY_.mjs} +3 -3
  18. package/dist/{backends-CkvbG3js.mjs.map → backends-BihMKFY_.mjs.map} +1 -1
  19. package/dist/backends-Dk_5G_gC.mjs +3 -0
  20. package/dist/cli-GwJ0S2In.mjs +4 -0
  21. package/dist/{context-QreF3UHr.mjs → context-BjWgrikx.mjs} +1 -1
  22. package/dist/{context-QreF3UHr.mjs.map → context-BjWgrikx.mjs.map} +1 -1
  23. package/dist/{derive-D7bFJdfU.d.mts → derive-O_Kb1Bk_.d.mts} +3 -3
  24. package/dist/derive-O_Kb1Bk_.d.mts.map +1 -0
  25. package/dist/{devtools-owvUPfBi.mjs → devtools-CeO9X_uv.mjs} +4 -4
  26. package/dist/{devtools-owvUPfBi.mjs.map → devtools-CeO9X_uv.mjs.map} +1 -1
  27. package/dist/devtools-nX4tj6OH.mjs +2 -0
  28. package/dist/{eta-DLiVPaSD.mjs → eta-BnQSZcWf.mjs} +1 -1
  29. package/dist/{eta-DLiVPaSD.mjs.map → eta-BnQSZcWf.mjs.map} +1 -1
  30. package/dist/{flexily-zero-adapter-DmG4Ge8t.mjs → flexily-zero-adapter-BOM0cl8R.mjs} +61 -9
  31. package/dist/flexily-zero-adapter-BOM0cl8R.mjs.map +1 -0
  32. package/dist/{flexily-zero-adapter-GHwEW11s.mjs → flexily-zero-adapter-V8R3HQtK.mjs} +1 -1
  33. package/dist/{gif-Bp6fIyN3.mjs → gif-B9Uq4qZA.mjs} +3 -3
  34. package/dist/{gif-Bp6fIyN3.mjs.map → gif-B9Uq4qZA.mjs.map} +1 -1
  35. package/dist/gif-BdrLRBmM.mjs +3 -0
  36. package/dist/{gifenc-GiVCZ9-3.mjs → gifenc-DfhOb4xr.mjs} +1 -1
  37. package/dist/{gifenc-GiVCZ9-3.mjs.map → gifenc-DfhOb4xr.mjs.map} +1 -1
  38. package/dist/{image-Dx7gYjkq.mjs → image-B0zMbVUr.mjs} +136 -5
  39. package/dist/image-B0zMbVUr.mjs.map +1 -0
  40. package/dist/index-Bh3U1K09.d.mts +10823 -0
  41. package/dist/index-Bh3U1K09.d.mts.map +1 -0
  42. package/dist/{index-p-wBs_wH.d.mts → index-C4vrhbud.d.mts} +1 -1
  43. package/dist/{index-p-wBs_wH.d.mts.map → index-C4vrhbud.d.mts.map} +1 -1
  44. package/dist/{index-DCVL3jHo.d.mts → index-dehZ18K-.d.mts} +144 -99
  45. package/dist/index-dehZ18K-.d.mts.map +1 -0
  46. package/dist/index.d.mts +7 -7219
  47. package/dist/index.d.mts.map +1 -1
  48. package/dist/index.mjs +13 -9343
  49. package/dist/index.mjs.map +1 -1
  50. package/dist/{key-mapping-BsUHe_nk.mjs → key-mapping-7k2ufK2b.mjs} +1 -1
  51. package/dist/{key-mapping-DsyfLEdC.mjs → key-mapping-WLUmxjx1.mjs} +1 -1
  52. package/dist/{key-mapping-DsyfLEdC.mjs.map → key-mapping-WLUmxjx1.mjs.map} +1 -1
  53. package/dist/{layout-engine-D_lSR4i9.mjs → layout-engine--drvrWjD.mjs} +1 -1
  54. package/dist/{layout-engine-B3dsnVLU.mjs → layout-engine-Dr3cY5U4.mjs} +3 -3
  55. package/dist/{layout-engine-B3dsnVLU.mjs.map → layout-engine-Dr3cY5U4.mjs.map} +1 -1
  56. package/dist/{multi-progress-CQVB9lES.mjs → multi-progress-CcdqJFlf.mjs} +3 -3
  57. package/dist/{multi-progress-CQVB9lES.mjs.map → multi-progress-CcdqJFlf.mjs.map} +1 -1
  58. package/dist/{multi-progress-C0-rkn86.d.mts → multi-progress-DQ-uUzLf.d.mts} +2 -2
  59. package/dist/{multi-progress-C0-rkn86.d.mts.map → multi-progress-DQ-uUzLf.d.mts.map} +1 -1
  60. package/dist/{node-Dedx-6xF.mjs → node-CP5WChgr.mjs} +1 -1
  61. package/dist/{node-Dedx-6xF.mjs.map → node-CP5WChgr.mjs.map} +1 -1
  62. package/dist/{progress-bar-COPSBlT9.mjs → progress-bar-IrUjkLfU.mjs} +4 -4
  63. package/dist/{progress-bar-COPSBlT9.mjs.map → progress-bar-IrUjkLfU.mjs.map} +1 -1
  64. package/dist/{reconciler-B-NaZvbO.mjs → reconciler-B8uxQxaU.mjs} +57 -81
  65. package/dist/reconciler-B8uxQxaU.mjs.map +1 -0
  66. package/dist/{render-string-CZKpuKXo.mjs → render-string-BwLG7rIX.mjs} +1 -1
  67. package/dist/{pipeline-BmfaZb1O.mjs → render-string-DVfgc8xr.mjs} +836 -508
  68. package/dist/render-string-DVfgc8xr.mjs.map +1 -0
  69. package/dist/{resvg-js-V6oMi8CY.mjs → resvg-js-Cwipz-_J.mjs} +1 -1
  70. package/dist/{resvg-js-V6oMi8CY.mjs.map → resvg-js-Cwipz-_J.mjs.map} +1 -1
  71. package/dist/runtime.d.mts +2 -2
  72. package/dist/runtime.mjs +3 -3
  73. package/dist/{spinner-Cgej6Vnb.d.mts → spinner-BRkaJI0N.d.mts} +2 -2
  74. package/dist/{spinner-Cgej6Vnb.d.mts.map → spinner-BRkaJI0N.d.mts.map} +1 -1
  75. package/dist/{spinner-DSByknyx.mjs → spinner-BmldKx0M.mjs} +3 -3
  76. package/dist/{spinner-DSByknyx.mjs.map → spinner-BmldKx0M.mjs.map} +1 -1
  77. package/dist/{src-C9f3hiVG.mjs → src-C0sOQW-t.mjs} +402 -156
  78. package/dist/src-C0sOQW-t.mjs.map +1 -0
  79. package/dist/src-CJPXf3fC.mjs +18348 -0
  80. package/dist/src-CJPXf3fC.mjs.map +1 -0
  81. package/dist/{src-fJVbhdn-.mjs → src-D8kLrQBT.mjs} +1 -1
  82. package/dist/{src-fJVbhdn-.mjs.map → src-D8kLrQBT.mjs.map} +1 -1
  83. package/dist/{src-9B5k0JmY.mjs → src-D_BS-as7.mjs} +1130 -100
  84. package/dist/src-D_BS-as7.mjs.map +1 -0
  85. package/dist/theme.d.mts +45 -30
  86. package/dist/theme.d.mts.map +1 -1
  87. package/dist/theme.mjs +3 -3
  88. package/dist/{types-CDgkE-Rw.d.mts → types-B4A8Ebba.d.mts} +1 -1
  89. package/dist/{types-CDgkE-Rw.d.mts.map → types-B4A8Ebba.d.mts.map} +1 -1
  90. package/dist/types-e4dpfbSa.mjs +468 -0
  91. package/dist/types-e4dpfbSa.mjs.map +1 -0
  92. package/dist/ui/animation.d.mts +1 -1
  93. package/dist/ui/animation.mjs +1 -1
  94. package/dist/ui/ansi.d.mts +1 -1
  95. package/dist/ui/ansi.mjs +1 -1
  96. package/dist/ui/cli.d.mts +3 -3
  97. package/dist/ui/cli.mjs +5 -5
  98. package/dist/ui/display.d.mts +2 -2
  99. package/dist/ui/display.mjs +1 -1
  100. package/dist/ui/display.mjs.map +1 -1
  101. package/dist/ui/image.d.mts +1 -1
  102. package/dist/ui/image.mjs +1 -1
  103. package/dist/ui/input.d.mts +3 -3
  104. package/dist/ui/input.mjs +2 -2
  105. package/dist/ui/input.mjs.map +1 -1
  106. package/dist/ui/progress.d.mts +3 -3
  107. package/dist/ui/progress.mjs +4 -4
  108. package/dist/ui/progress.mjs.map +1 -1
  109. package/dist/ui/react.d.mts +3 -3
  110. package/dist/ui/react.mjs +4 -4
  111. package/dist/ui/react.mjs.map +1 -1
  112. package/dist/ui/utils.mjs +1 -1
  113. package/dist/ui/wrappers.d.mts +2 -2
  114. package/dist/ui/wrappers.mjs +1 -1
  115. package/dist/ui.d.mts +5 -5
  116. package/dist/ui.mjs +6 -6
  117. package/dist/{useLatest-BMIYXd6e.d.mts → useLatest-6xqnGIU6.d.mts} +1 -1
  118. package/dist/{useLatest-BMIYXd6e.d.mts.map → useLatest-6xqnGIU6.d.mts.map} +1 -1
  119. package/dist/{with-text-input-CmHf_9d6.d.mts → with-text-input-lUh9gYAG.d.mts} +3 -3
  120. package/dist/{with-text-input-CmHf_9d6.d.mts.map → with-text-input-lUh9gYAG.d.mts.map} +1 -1
  121. package/dist/{wrapper-Dqh0zi2W.mjs → wrapper-CE6GQ27z.mjs} +1 -1
  122. package/dist/{wrapper-Dqh0zi2W.mjs.map → wrapper-CE6GQ27z.mjs.map} +1 -1
  123. package/dist/{wrappers-hhL8EQ_n.mjs → wrappers-JrEYTuKA.mjs} +4 -4
  124. package/dist/wrappers-JrEYTuKA.mjs.map +1 -0
  125. package/dist/yoga-adapter-B8LZpQcE.mjs +2 -0
  126. package/dist/{yoga-adapter-BJ9SOhTY.mjs → yoga-adapter-Bc8XT9cN.mjs} +11 -2
  127. package/dist/yoga-adapter-Bc8XT9cN.mjs.map +1 -0
  128. package/package.json +20 -17
  129. package/dist/apng-DCWY913R.mjs +0 -3
  130. package/dist/backends-CyJqNLeK.mjs +0 -3
  131. package/dist/cli-B-k7Bm56.mjs +0 -4
  132. package/dist/derive-D7bFJdfU.d.mts.map +0 -1
  133. package/dist/devtools-DS9NseGT.mjs +0 -2
  134. package/dist/flexily-zero-adapter-DmG4Ge8t.mjs.map +0 -1
  135. package/dist/gif-BaJNREpP.mjs +0 -3
  136. package/dist/image-Dx7gYjkq.mjs.map +0 -1
  137. package/dist/index-CBcSpGSM.d.mts +0 -3416
  138. package/dist/index-CBcSpGSM.d.mts.map +0 -1
  139. package/dist/index-DCVL3jHo.d.mts.map +0 -1
  140. package/dist/pipeline-BmfaZb1O.mjs.map +0 -1
  141. package/dist/reconciler-B-NaZvbO.mjs.map +0 -1
  142. package/dist/render-string-Bvh1XzBv.mjs +0 -201
  143. package/dist/render-string-Bvh1XzBv.mjs.map +0 -1
  144. package/dist/runtime-PH2xY1DM.mjs +0 -8723
  145. package/dist/runtime-PH2xY1DM.mjs.map +0 -1
  146. package/dist/src-9B5k0JmY.mjs.map +0 -1
  147. package/dist/src-C9f3hiVG.mjs.map +0 -1
  148. package/dist/types-Bhj5QkIQ.mjs +0 -13
  149. package/dist/types-Bhj5QkIQ.mjs.map +0 -1
  150. package/dist/useLayout-BG2cGl15.mjs +0 -139
  151. package/dist/useLayout-BG2cGl15.mjs.map +0 -1
  152. package/dist/wrappers-hhL8EQ_n.mjs.map +0 -1
  153. package/dist/yoga-adapter-BJ9SOhTY.mjs.map +0 -1
  154. package/dist/yoga-adapter-Daq6-dw1.mjs +0 -2
package/dist/theme.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as detectTheme, A as everforestDark, At as HueName, B as oneDark, C as ayuMirage, Ct as ThemeContext, D as snazzy, Dt as AnsiPrimary, E as materialLight, Et as useTheme, F as rosePine, G as solarizedLight, H as tokyoNightDay, I as rosePineDawn, J as catppuccinFrappe, K as dracula, L as rosePineMoon, M as kanagawaDragon, Mt as AnsiColorName, N as kanagawaLotus, O as monokai, Ot as COLOR_PALETTE_FIELDS, P as kanagawaWave, Q as DetectThemeOptions, R as gruvboxDark, S as ayuLight, St as generateTheme, T as materialDark, Tt as ThemeProviderProps, U as tokyoNightStorm, V as tokyoNight, W as solarizedDark, X as catppuccinMacchiato, Y as catppuccinLatte, Z as catppuccinMocha, _ as moonfly, _t as fromColors, a as defaultDarkTheme, at as resolveAliases, b as nightfox, bt as presetTheme, c as getThemeByName, ct as ThemeValidationResult, d as edgeDark, dt as validateColorPalette, et as exportBase16, f as edgeLight, ft as getActiveTheme, g as nightfly, gt as fromBase16, h as oxocarbonLight, ht as setActiveTheme, i as builtinThemes, it as themeToCSSVars, j as everforestLight, jt as Theme, k as monokaiPro, kt as ColorPalette, l as modusOperandi, lt as validateTheme, m as oxocarbonDark, mt as pushContextTheme, n as ansi16LightTheme, nt as Base16Scheme, o as defaultLightTheme, ot as resolveTokenAlias, p as sonokai, pt as popContextTheme, q as nord, r as builtinPalettes, rt as autoGenerateTheme, s as getPaletteByName, st as THEME_TOKEN_KEYS, t as ansi16DarkTheme, tt as importBase16, u as modusVivendi, ut as ValidationResult, v as horizon, vt as fromPreset, w as palenight, wt as ThemeProvider, x as ayuDark, xt as quickTheme, y as dawnfox, yt as createTheme, z as gruvboxLight } from "./index-DCVL3jHo.mjs";
2
- import { n as deriveTheme, r as resolveThemeColor, t as ThemeAdjustment } from "./derive-D7bFJdfU.mjs";
1
+ import { $ as detectTheme, A as everforestDark, At as AnsiPrimary, B as oneDark, C as ayuMirage, Ct as presetTheme, D as snazzy, Dt as ThemeProvider, E as materialLight, Et as ThemeContext, F as rosePine, Ft as AnsiColorName, G as solarizedLight, H as tokyoNightDay, I as rosePineDawn, J as catppuccinFrappe, K as dracula, L as rosePineMoon, M as kanagawaDragon, Mt as ColorScheme, N as kanagawaLotus, Nt as HueName, O as monokai, Ot as ThemeProviderProps, P as kanagawaWave, Pt as Theme, Q as DetectThemeOptions, R as gruvboxDark, S as ayuLight, St as createTheme, T as materialDark, Tt as generateTheme, U as tokyoNightStorm, V as tokyoNight, W as solarizedDark, X as catppuccinMacchiato, Y as catppuccinLatte, Z as catppuccinMocha, _ as moonfly, _t as setActiveColorLevel, a as defaultDarkTheme, at as resolveAliases, b as nightfox, bt as fromColors, c as getThemeByName, ct as ThemeValidationResult, d as edgeDark, dt as validateColorScheme, et as exportBase16, f as edgeLight, ft as ActiveColorLevel, g as nightfly, gt as pushContextTheme, h as oxocarbonLight, ht as popContextTheme, i as builtinThemes, it as themeToCSSVars, j as everforestLight, jt as COLOR_SCHEME_FIELDS, k as monokaiPro, kt as useTheme, l as modusOperandi, lt as validateTheme, m as oxocarbonDark, mt as getActiveTheme, n as ansi16LightTheme, nt as Base16Scheme, o as defaultLightTheme, ot as resolveTokenAlias, p as sonokai, pt as getActiveColorLevel, q as nord, r as builtinPalettes, rt as autoGenerateTheme, s as getSchemeByName, st as THEME_TOKEN_KEYS, t as ansi16DarkTheme, tt as importBase16, u as modusVivendi, ut as ValidationResult, v as horizon, vt as setActiveTheme, w as palenight, wt as quickTheme, x as ayuDark, xt as fromPreset, y as dawnfox, yt as fromBase16, z as gruvboxLight } from "./index-dehZ18K-.mjs";
2
+ import { n as deriveTheme, r as resolveThemeColor, t as ThemeAdjustment } from "./derive-O_Kb1Bk_.mjs";
3
3
 
4
4
  //#region packages/color/src/types.d.ts
5
5
  /** HSL color: [hue: 0-360, saturation: 0-1, lightness: 0-1] */
@@ -20,39 +20,54 @@ declare function hexToRgb(hex: string): [number, number, number] | null;
20
20
  /** Convert [r, g, b] (0-255) to hex string. */
21
21
  declare function rgbToHex(r: number, g: number, b: number): string;
22
22
  /**
23
- * Blend two hex colors. t=0 returns a, t=1 returns b.
23
+ * Blend two hex colors in OKLab space. t=0 returns a, t=1 returns b.
24
+ * Perceptually-uniform midpoints (unlike naive RGB blending which produces
25
+ * muddy halfway colors).
26
+ *
27
+ * Interpolation is done in OKLab (rectangular a/b), not OKLCH (polar). This
28
+ * matches CSS Color Module 4's default interpolation space and avoids hue-arc
29
+ * weirdness when one endpoint is near-neutral (its hue is effectively
30
+ * undefined). For explicit hue-rotation blending, use `lerpOklch` directly.
31
+ *
24
32
  * For non-hex inputs (ANSI names), returns `a` unchanged.
25
33
  */
26
34
  declare function blend(a: string, b: string, t: number): string;
27
35
  /**
28
- * Brighten a hex color. amount=0.1 adds 10% lightness toward white.
29
- * For non-hex inputs (ANSI names), returns the color unchanged.
36
+ * Brighten a hex color by raising OKLCH lightness. amount=0.1 adds 0.1 to L
37
+ * (perceptually linear 10% brighter looks 10% brighter regardless of hue).
38
+ *
39
+ * For non-hex inputs, returns the color unchanged.
30
40
  */
31
41
  declare function brighten(color: string, amount: number): string;
32
42
  /**
33
- * Darken a hex color. amount=0.1 adds 10% darkness toward black.
34
- * For non-hex inputs (ANSI names), returns the color unchanged.
43
+ * Darken a hex color by lowering OKLCH lightness. amount=0.1 subtracts 0.1 from L.
44
+ *
45
+ * For non-hex inputs, returns the color unchanged.
35
46
  */
36
47
  declare function darken(color: string, amount: number): string;
37
48
  /**
38
- * Pick black or white text for readability on the given background.
39
- * Uses relative luminance (WCAG formula).
40
- */
41
- declare function contrastFg(bg: string): "#000000" | "#FFFFFF";
42
- declare function rgbToHsl(r: number, g: number, b: number): HSL;
43
- declare function hslToHex(h: number, s: number, l: number): string;
44
- declare function hexToHsl(hex: string): HSL | null;
45
- /**
46
- * Desaturate a hex color by reducing saturation.
47
- * amount=0.4 reduces saturation by 40%.
49
+ * Desaturate a hex color by lowering OKLCH chroma. amount=0.4 reduces C by 40%
50
+ * (relative consistent with the original HSL-based contract). For a flat
51
+ * subtraction, use `saturate(color, -amount)`.
52
+ *
48
53
  * For non-hex inputs, returns the color unchanged.
49
54
  */
50
55
  declare function desaturate(color: string, amount: number): string;
51
56
  /**
52
- * Get the complementary color (180° hue rotation).
57
+ * Get the complementary color (180° hue rotation) in OKLCH. Preserves L + C,
58
+ * so the complement has the same perceived brightness and colorfulness.
59
+ *
53
60
  * For non-hex inputs, returns the color unchanged.
54
61
  */
55
62
  declare function complement(color: string): string;
63
+ /**
64
+ * Pick black or white text for readability on the given background.
65
+ * Uses WCAG 2.1 relative luminance.
66
+ */
67
+ declare function contrastFg(bg: string): "#000000" | "#FFFFFF";
68
+ declare function rgbToHsl(r: number, g: number, b: number): HSL;
69
+ declare function hslToHex(h: number, s: number, l: number): string;
70
+ declare function hexToHsl(hex: string): HSL | null;
56
71
  //#endregion
57
72
  //#region packages/color/src/contrast.d.ts
58
73
  /**
@@ -76,24 +91,24 @@ declare function complement(color: string): string;
76
91
  */
77
92
  declare function checkContrast(fg: string, bg: string): ContrastResult | null;
78
93
  /**
79
- * Adjust a color's lightness until it meets a minimum contrast ratio
80
- * against a reference color. Preserves hue and saturation — only
81
- * lightness is shifted, and only as much as needed.
94
+ * Adjust a color's OKLCH lightness until it meets a minimum WCAG contrast ratio
95
+ * against a reference color. Preserves hue and chroma — only lightness shifts,
96
+ * and only as much as needed.
82
97
  *
83
98
  * Returns the original color unchanged if it already meets the target.
84
99
  *
100
+ * For impossible targets (e.g. 21:1 against mid-gray), returns the
101
+ * best achievable color (near-black or near-white in the same hue).
102
+ *
85
103
  * @param color - The color to adjust (hex)
86
104
  * @param against - The reference background color (hex)
87
105
  * @param minRatio - Minimum contrast ratio to achieve (e.g. 4.5 for AA)
88
106
  * @returns Adjusted hex color meeting the target, or original if already OK
89
107
  *
90
- * For impossible targets (e.g. 21:1 against mid-gray), returns the
91
- * best achievable color (near-black or near-white in the same hue).
92
- *
93
108
  * @example
94
109
  * ```typescript
95
- * // Yellow on white — too low contrast, gets darkened
96
- * ensureContrast("#FFAB91", "#FFFFFF", 4.5) // → "#B35600" (darker orange)
110
+ * // Yellow on white — too low contrast, gets darkened (perceptually; same hue preserved)
111
+ * ensureContrast("#FFAB91", "#FFFFFF", 4.5)
97
112
  *
98
113
  * // Blue on dark bg — already fine, returned unchanged
99
114
  * ensureContrast("#5C9FFF", "#1A1A2E", 4.5) // → "#5C9FFF"
@@ -102,14 +117,14 @@ declare function checkContrast(fg: string, bg: string): ContrastResult | null;
102
117
  declare function ensureContrast(color: string, against: string, minRatio: number): string;
103
118
  //#endregion
104
119
  //#region packages/ansi/src/theme/detect.d.ts
105
- interface DetectedPalette {
120
+ interface DetectedScheme {
106
121
  fg: string | null;
107
122
  bg: string | null;
108
123
  ansi: (string | null)[];
109
124
  dark: boolean;
110
- palette: Partial<ColorPalette>;
125
+ palette: Partial<ColorScheme>;
111
126
  }
112
- declare function detectTerminalPalette(timeoutMs?: number): Promise<DetectedPalette | null>;
127
+ declare function detectTerminalScheme(timeoutMs?: number): Promise<DetectedScheme | null>;
113
128
  //#endregion
114
- export { AnsiColorName, AnsiPrimary, Base16Scheme, COLOR_PALETTE_FIELDS, ColorPalette, ContrastResult, DetectThemeOptions, DetectedPalette, HSL, HueName, THEME_TOKEN_KEYS, Theme, ThemeAdjustment, ThemeContext, ThemeProvider, ThemeProviderProps, ThemeValidationResult, ValidationResult, ansi16DarkTheme, ansi16LightTheme, autoGenerateTheme, ayuDark, ayuLight, ayuMirage, blend, brighten, builtinPalettes, builtinThemes, catppuccinFrappe, catppuccinLatte, catppuccinMacchiato, catppuccinMocha, checkContrast, complement, contrastFg, createTheme, darken, dawnfox, defaultDarkTheme, defaultLightTheme, deriveTheme, desaturate, detectTerminalPalette, detectTheme, dracula, edgeDark, edgeLight, ensureContrast, everforestDark, everforestLight, exportBase16, fromBase16, fromColors, fromPreset, generateTheme, getActiveTheme, getPaletteByName, getThemeByName, gruvboxDark, gruvboxLight, hexToHsl, hexToRgb, horizon, hslToHex, importBase16, kanagawaDragon, kanagawaLotus, kanagawaWave, materialDark, materialLight, modusOperandi, modusVivendi, monokai, monokaiPro, moonfly, nightfly, nightfox, nord, oneDark, oxocarbonDark, oxocarbonLight, palenight, popContextTheme, presetTheme, pushContextTheme, quickTheme, resolveAliases, resolveThemeColor, resolveTokenAlias, rgbToHex, rgbToHsl, rosePine, rosePineDawn, rosePineMoon, setActiveTheme, snazzy, solarizedDark, solarizedLight, sonokai, themeToCSSVars, tokyoNight, tokyoNightDay, tokyoNightStorm, useTheme, validateColorPalette, validateTheme };
129
+ export { ActiveColorLevel, AnsiColorName, AnsiPrimary, Base16Scheme, COLOR_SCHEME_FIELDS, ColorScheme, ContrastResult, DetectThemeOptions, DetectedScheme, HSL, HueName, THEME_TOKEN_KEYS, Theme, ThemeAdjustment, ThemeContext, ThemeProvider, ThemeProviderProps, ThemeValidationResult, ValidationResult, ansi16DarkTheme, ansi16LightTheme, autoGenerateTheme, ayuDark, ayuLight, ayuMirage, blend, brighten, builtinPalettes, builtinThemes, catppuccinFrappe, catppuccinLatte, catppuccinMacchiato, catppuccinMocha, checkContrast, complement, contrastFg, createTheme, darken, dawnfox, defaultDarkTheme, defaultLightTheme, deriveTheme, desaturate, detectTerminalScheme, detectTheme, dracula, edgeDark, edgeLight, ensureContrast, everforestDark, everforestLight, exportBase16, fromBase16, fromColors, fromPreset, generateTheme, getActiveColorLevel, getActiveTheme, getSchemeByName, getThemeByName, gruvboxDark, gruvboxLight, hexToHsl, hexToRgb, horizon, hslToHex, importBase16, kanagawaDragon, kanagawaLotus, kanagawaWave, materialDark, materialLight, modusOperandi, modusVivendi, monokai, monokaiPro, moonfly, nightfly, nightfox, nord, oneDark, oxocarbonDark, oxocarbonLight, palenight, popContextTheme, presetTheme, pushContextTheme, quickTheme, resolveAliases, resolveThemeColor, resolveTokenAlias, rgbToHex, rgbToHsl, rosePine, rosePineDawn, rosePineMoon, setActiveColorLevel, setActiveTheme, snazzy, solarizedDark, solarizedLight, sonokai, themeToCSSVars, tokyoNight, tokyoNightDay, tokyoNightStorm, useTheme, validateColorScheme, validateTheme };
115
130
  //# sourceMappingURL=theme.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.mts","names":[],"sources":["../packages/color/src/types.ts","../packages/color/src/color.ts","../packages/color/src/contrast.ts","../packages/ansi/src/theme/detect.ts"],"mappings":";;;;;KACY,GAAA;;UAGK,cAAA;EAHL;EAKV,KAAA;;EAEA,EAAA;EAPa;EASb,GAAA;AAAA;;;;iBCQc,QAAA,CAAS,GAAA;;iBAaT,QAAA,CAAS,CAAA,UAAW,CAAA,UAAW,CAAA;;;;;iBAa/B,KAAA,CAAM,CAAA,UAAW,CAAA,UAAW,CAAA;;AA1B5C;;;iBA0CgB,QAAA,CAAS,KAAA,UAAe,MAAA;;AA7BxC;;;iBAqCgB,MAAA,CAAO,KAAA,UAAe,MAAA;;;;AARtC;iBAwCgB,UAAA,CAAW,EAAA;AAAA,iBAUX,QAAA,CAAS,CAAA,UAAW,CAAA,UAAW,CAAA,WAAY,GAAA;AAAA,iBAiB3C,QAAA,CAAS,CAAA,UAAW,CAAA,UAAW,CAAA;AAAA,iBAU/B,QAAA,CAAS,GAAA,WAAc,GAAA;AArEvC;;;;;AAAA,iBAgFgB,UAAA,CAAW,KAAA,UAAe,MAAA;;;;;iBAW1B,UAAA,CAAW,KAAA;;;AD3J3B;;;;;;;;;;;;ACcA;;;;;AAaA;;AD3BA,iBE2BgB,aAAA,CAAc,EAAA,UAAY,EAAA,WAAa,cAAA;;;;;;;ADavD;;;;;;;;;AAgBA;;;;;AAQA;;;;iBCGgB,cAAA,CAAe,KAAA,UAAe,OAAA,UAAiB,QAAA;;;UC7D9C,eAAA;EACf,EAAA;EACA,EAAA;EACA,IAAA;EACA,IAAA;EACA,OAAA,EAAS,OAAA,CAAQ,YAAA;AAAA;AAAA,iBAGG,qBAAA,CAAsB,SAAA,YAAkB,OAAA,CAAQ,eAAA"}
1
+ {"version":3,"file":"theme.d.mts","names":[],"sources":["../packages/color/src/types.ts","../packages/color/src/color.ts","../packages/color/src/contrast.ts","../packages/ansi/src/theme/detect.ts"],"mappings":";;;;;KACY,GAAA;;UAGK,cAAA;EAHL;EAKV,KAAA;;EAEA,EAAA;EAPa;EASb,GAAA;AAAA;;;;iBCYc,QAAA,CAAS,GAAA;;iBAaT,QAAA,CAAS,CAAA,UAAW,CAAA,UAAW,CAAA;;;;;AAA/C;;;;;;;;iBAmCgB,KAAA,CAAM,CAAA,UAAW,CAAA,UAAW,CAAA;AAA5C;;;;;;AAAA,iBAUgB,QAAA,CAAS,KAAA,UAAe,MAAA;;;AAAxC;;;iBAWgB,MAAA,CAAO,KAAA,UAAe,MAAA;;;;;AAqCtC;;;iBAZgB,UAAA,CAAW,KAAA,UAAe,MAAA;;AAqD1C;;;;;iBAzCgB,UAAA,CAAW,KAAA;;;;;iBAyCX,UAAA,CAAW,EAAA;AAAA,iBAUX,QAAA,CAAS,CAAA,UAAW,CAAA,UAAW,CAAA,WAAY,GAAA;AAAA,iBAiB3C,QAAA,CAAS,CAAA,UAAW,CAAA,UAAW,CAAA;AAAA,iBAU/B,QAAA,CAAS,GAAA,WAAc,GAAA;;;;;;;;;;;;;AAxLvC;;;;;AAaA;;;;iBCDgB,aAAA,CAAc,EAAA,UAAY,EAAA,WAAa,cAAA;;;;;ADoCvD;;;;;;;;;AAUA;;;;;AAWA;;;;;AAyBA;iBC1CgB,cAAA,CAAe,KAAA,UAAe,OAAA,UAAiB,QAAA;;;UChE9C,cAAA;EACf,EAAA;EACA,EAAA;EACA,IAAA;EACA,IAAA;EACA,OAAA,EAAS,OAAA,CAAQ,WAAA;AAAA;AAAA,iBAGG,oBAAA,CAAqB,SAAA,YAAkB,OAAA,CAAQ,cAAA"}
package/dist/theme.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { A as contrastFg, C as resolveThemeColor, D as blend, E as ensureContrast, F as hslToHex, I as rgbToHex, L as rgbToHsl, M as desaturate, N as hexToHsl, O as brighten, P as hexToRgb, T as checkContrast, _ as COLOR_PALETTE_FIELDS, b as deriveTheme, j as darken, k as complement, n as detectTerminalPalette } from "./src-9B5k0JmY.mjs";
2
- import { $ as ayuMirage, A as setActiveTheme, B as modusVivendi, C as ThemeProvider, Ct as nord, Dt as catppuccinMocha, E as getActiveTheme, Et as catppuccinMacchiato, F as defaultDarkTheme, G as oxocarbonLight, H as edgeLight, I as defaultLightTheme, J as horizon, K as nightfly, L as getPaletteByName, M as ansi16LightTheme, N as builtinPalettes, O as popContextTheme, P as builtinThemes, Q as ayuLight, R as getThemeByName, S as ThemeContext, St as dracula, T as useTheme, Tt as catppuccinLatte, U as sonokai, V as edgeDark, W as oxocarbonDark, X as nightfox, Y as dawnfox, Z as ayuDark, _ as fromColors, _t as tokyoNight, a as exportBase16, at as monokaiPro, b as generateTheme, bt as solarizedDark, c as resolveAliases, ct as kanagawaDragon, d as validateTheme, dt as rosePine, et as palenight, f as validateColorPalette, ft as rosePineDawn, g as fromBase16, gt as oneDark, h as quickTheme, ht as gruvboxLight, it as monokai, j as ansi16DarkTheme, k as pushContextTheme, l as resolveTokenAlias, lt as kanagawaLotus, m as presetTheme, mt as gruvboxDark, nt as materialLight, o as autoGenerateTheme, ot as everforestDark, p as createTheme, pt as rosePineMoon, q as moonfly, r as detectTheme, rt as snazzy, s as themeToCSSVars, st as everforestLight, t as init_src, tt as materialDark, u as THEME_TOKEN_KEYS, ut as kanagawaWave, v as fromPreset, vt as tokyoNightDay, wt as catppuccinFrappe, xt as solarizedLight, y as importBase16, yt as tokyoNightStorm, z as modusOperandi } from "./src-C9f3hiVG.mjs";
1
+ import { A as brighten, B as rgbToHsl, D as checkContrast, F as hexToHsl, I as hexToRgb, L as hslToHex, M as contrastFg, N as darken, O as ensureContrast, P as desaturate, S as deriveTheme, T as resolveThemeColor, b as COLOR_SCHEME_FIELDS, j as complement, k as blend, r as detectTerminalScheme, z as rgbToHex } from "./src-D_BS-as7.mjs";
2
+ import { $ as ayuDark, A as pushContextTheme, B as getThemeByName, C as ThemeProvider, Ct as solarizedLight, D as getActiveTheme, Dt as catppuccinLatte, E as getActiveColorLevel, Et as catppuccinFrappe, F as builtinPalettes, G as sonokai, H as modusVivendi, I as builtinThemes, J as nightfly, K as oxocarbonDark, L as defaultDarkTheme, M as setActiveTheme, N as ansi16DarkTheme, Ot as catppuccinMacchiato, P as ansi16LightTheme, Q as nightfox, R as defaultLightTheme, S as ThemeContext, St as solarizedDark, T as useTheme, Tt as nord, U as edgeDark, V as modusOperandi, W as edgeLight, X as horizon, Y as moonfly, Z as dawnfox, _ as fromColors, _t as gruvboxLight, a as exportBase16, at as snazzy, b as generateTheme, bt as tokyoNightDay, c as resolveAliases, ct as everforestDark, d as validateTheme, dt as kanagawaLotus, et as ayuLight, f as validateColorScheme, ft as kanagawaWave, g as fromBase16, gt as gruvboxDark, h as quickTheme, ht as rosePineMoon, it as materialLight, j as setActiveColorLevel, k as popContextTheme, kt as catppuccinMocha, l as resolveTokenAlias, lt as everforestLight, m as presetTheme, mt as rosePineDawn, nt as palenight, o as autoGenerateTheme, ot as monokai, p as createTheme, pt as rosePine, q as oxocarbonLight, r as detectTheme, rt as materialDark, s as themeToCSSVars, st as monokaiPro, t as init_src, tt as ayuMirage, u as THEME_TOKEN_KEYS, ut as kanagawaDragon, v as fromPreset, vt as oneDark, wt as dracula, xt as tokyoNightStorm, y as importBase16, yt as tokyoNight, z as getSchemeByName } from "./src-C0sOQW-t.mjs";
3
3
  //#region src/theme.ts
4
4
  init_src();
5
5
  //#endregion
6
- export { COLOR_PALETTE_FIELDS, THEME_TOKEN_KEYS, ThemeContext, ThemeProvider, ansi16DarkTheme, ansi16LightTheme, autoGenerateTheme, ayuDark, ayuLight, ayuMirage, blend, brighten, builtinPalettes, builtinThemes, catppuccinFrappe, catppuccinLatte, catppuccinMacchiato, catppuccinMocha, checkContrast, complement, contrastFg, createTheme, darken, dawnfox, defaultDarkTheme, defaultLightTheme, deriveTheme, desaturate, detectTerminalPalette, detectTheme, dracula, edgeDark, edgeLight, ensureContrast, everforestDark, everforestLight, exportBase16, fromBase16, fromColors, fromPreset, generateTheme, getActiveTheme, getPaletteByName, getThemeByName, gruvboxDark, gruvboxLight, hexToHsl, hexToRgb, horizon, hslToHex, importBase16, kanagawaDragon, kanagawaLotus, kanagawaWave, materialDark, materialLight, modusOperandi, modusVivendi, monokai, monokaiPro, moonfly, nightfly, nightfox, nord, oneDark, oxocarbonDark, oxocarbonLight, palenight, popContextTheme, presetTheme, pushContextTheme, quickTheme, resolveAliases, resolveThemeColor, resolveTokenAlias, rgbToHex, rgbToHsl, rosePine, rosePineDawn, rosePineMoon, setActiveTheme, snazzy, solarizedDark, solarizedLight, sonokai, themeToCSSVars, tokyoNight, tokyoNightDay, tokyoNightStorm, useTheme, validateColorPalette, validateTheme };
6
+ export { COLOR_SCHEME_FIELDS, THEME_TOKEN_KEYS, ThemeContext, ThemeProvider, ansi16DarkTheme, ansi16LightTheme, autoGenerateTheme, ayuDark, ayuLight, ayuMirage, blend, brighten, builtinPalettes, builtinThemes, catppuccinFrappe, catppuccinLatte, catppuccinMacchiato, catppuccinMocha, checkContrast, complement, contrastFg, createTheme, darken, dawnfox, defaultDarkTheme, defaultLightTheme, deriveTheme, desaturate, detectTerminalScheme, detectTheme, dracula, edgeDark, edgeLight, ensureContrast, everforestDark, everforestLight, exportBase16, fromBase16, fromColors, fromPreset, generateTheme, getActiveColorLevel, getActiveTheme, getSchemeByName, getThemeByName, gruvboxDark, gruvboxLight, hexToHsl, hexToRgb, horizon, hslToHex, importBase16, kanagawaDragon, kanagawaLotus, kanagawaWave, materialDark, materialLight, modusOperandi, modusVivendi, monokai, monokaiPro, moonfly, nightfly, nightfox, nord, oneDark, oxocarbonDark, oxocarbonLight, palenight, popContextTheme, presetTheme, pushContextTheme, quickTheme, resolveAliases, resolveThemeColor, resolveTokenAlias, rgbToHex, rgbToHsl, rosePine, rosePineDawn, rosePineMoon, setActiveColorLevel, setActiveTheme, snazzy, solarizedDark, solarizedLight, sonokai, themeToCSSVars, tokyoNight, tokyoNightDay, tokyoNightStorm, useTheme, validateColorScheme, validateTheme };
7
7
 
8
8
  //# sourceMappingURL=theme.mjs.map
@@ -238,4 +238,4 @@ interface WithSelectOptions {
238
238
  }
239
239
  //#endregion
240
240
  export { TextInputOptions as _, ProgressInfo as a, WithSelectOptions as b, SpinnerOptions as c, StepProgress as d, TableColumn as f, TaskStatus as g, TaskState as h, ProgressGenerator as i, SpinnerProps as l, TaskProps as m, ProgressBarProps as n, SelectOption as o, TableProps as p, ProgressCallback as r, SelectProps as s, ProgressBarOptions as t, SpinnerStyle as u, TextInputProps as v, WithSpinnerOptions as x, WithProgressOptions as y };
241
- //# sourceMappingURL=types-CDgkE-Rw.d.mts.map
241
+ //# sourceMappingURL=types-B4A8Ebba.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-CDgkE-Rw.d.mts","names":[],"sources":["../packages/ag-react/src/ui/types.ts"],"mappings":"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"}
1
+ {"version":3,"file":"types-B4A8Ebba.d.mts","names":[],"sources":["../packages/ag-react/src/ui/types.ts"],"mappings":"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"}
@@ -0,0 +1,468 @@
1
+ //#region ../../node_modules/.bun/alien-signals@3.1.2/node_modules/alien-signals/esm/system.mjs
2
+ function createReactiveSystem({ update, notify, unwatched }) {
3
+ return {
4
+ link,
5
+ unlink,
6
+ propagate,
7
+ checkDirty,
8
+ shallowPropagate
9
+ };
10
+ function link(dep, sub, version) {
11
+ const prevDep = sub.depsTail;
12
+ if (prevDep !== void 0 && prevDep.dep === dep) return;
13
+ const nextDep = prevDep !== void 0 ? prevDep.nextDep : sub.deps;
14
+ if (nextDep !== void 0 && nextDep.dep === dep) {
15
+ nextDep.version = version;
16
+ sub.depsTail = nextDep;
17
+ return;
18
+ }
19
+ const prevSub = dep.subsTail;
20
+ if (prevSub !== void 0 && prevSub.version === version && prevSub.sub === sub) return;
21
+ const newLink = sub.depsTail = dep.subsTail = {
22
+ version,
23
+ dep,
24
+ sub,
25
+ prevDep,
26
+ nextDep,
27
+ prevSub,
28
+ nextSub: void 0
29
+ };
30
+ if (nextDep !== void 0) nextDep.prevDep = newLink;
31
+ if (prevDep !== void 0) prevDep.nextDep = newLink;
32
+ else sub.deps = newLink;
33
+ if (prevSub !== void 0) prevSub.nextSub = newLink;
34
+ else dep.subs = newLink;
35
+ }
36
+ function unlink(link, sub = link.sub) {
37
+ const dep = link.dep;
38
+ const prevDep = link.prevDep;
39
+ const nextDep = link.nextDep;
40
+ const nextSub = link.nextSub;
41
+ const prevSub = link.prevSub;
42
+ if (nextDep !== void 0) nextDep.prevDep = prevDep;
43
+ else sub.depsTail = prevDep;
44
+ if (prevDep !== void 0) prevDep.nextDep = nextDep;
45
+ else sub.deps = nextDep;
46
+ if (nextSub !== void 0) nextSub.prevSub = prevSub;
47
+ else dep.subsTail = prevSub;
48
+ if (prevSub !== void 0) prevSub.nextSub = nextSub;
49
+ else if ((dep.subs = nextSub) === void 0) unwatched(dep);
50
+ return nextDep;
51
+ }
52
+ function propagate(link) {
53
+ let next = link.nextSub;
54
+ let stack;
55
+ top: do {
56
+ const sub = link.sub;
57
+ let flags = sub.flags;
58
+ if (!(flags & 60)) sub.flags = flags | 32;
59
+ else if (!(flags & 12)) flags = 0;
60
+ else if (!(flags & 4)) sub.flags = flags & -9 | 32;
61
+ else if (!(flags & 48) && isValidLink(link, sub)) {
62
+ sub.flags = flags | 40;
63
+ flags &= 1;
64
+ } else flags = 0;
65
+ if (flags & 2) notify(sub);
66
+ if (flags & 1) {
67
+ const subSubs = sub.subs;
68
+ if (subSubs !== void 0) {
69
+ const nextSub = (link = subSubs).nextSub;
70
+ if (nextSub !== void 0) {
71
+ stack = {
72
+ value: next,
73
+ prev: stack
74
+ };
75
+ next = nextSub;
76
+ }
77
+ continue;
78
+ }
79
+ }
80
+ if ((link = next) !== void 0) {
81
+ next = link.nextSub;
82
+ continue;
83
+ }
84
+ while (stack !== void 0) {
85
+ link = stack.value;
86
+ stack = stack.prev;
87
+ if (link !== void 0) {
88
+ next = link.nextSub;
89
+ continue top;
90
+ }
91
+ }
92
+ break;
93
+ } while (true);
94
+ }
95
+ function checkDirty(link, sub) {
96
+ let stack;
97
+ let checkDepth = 0;
98
+ let dirty = false;
99
+ top: do {
100
+ const dep = link.dep;
101
+ const flags = dep.flags;
102
+ if (sub.flags & 16) dirty = true;
103
+ else if ((flags & 17) === 17) {
104
+ if (update(dep)) {
105
+ const subs = dep.subs;
106
+ if (subs.nextSub !== void 0) shallowPropagate(subs);
107
+ dirty = true;
108
+ }
109
+ } else if ((flags & 33) === 33) {
110
+ if (link.nextSub !== void 0 || link.prevSub !== void 0) stack = {
111
+ value: link,
112
+ prev: stack
113
+ };
114
+ link = dep.deps;
115
+ sub = dep;
116
+ ++checkDepth;
117
+ continue;
118
+ }
119
+ if (!dirty) {
120
+ const nextDep = link.nextDep;
121
+ if (nextDep !== void 0) {
122
+ link = nextDep;
123
+ continue;
124
+ }
125
+ }
126
+ while (checkDepth--) {
127
+ const firstSub = sub.subs;
128
+ const hasMultipleSubs = firstSub.nextSub !== void 0;
129
+ if (hasMultipleSubs) {
130
+ link = stack.value;
131
+ stack = stack.prev;
132
+ } else link = firstSub;
133
+ if (dirty) {
134
+ if (update(sub)) {
135
+ if (hasMultipleSubs) shallowPropagate(firstSub);
136
+ sub = link.sub;
137
+ continue;
138
+ }
139
+ dirty = false;
140
+ } else sub.flags &= -33;
141
+ sub = link.sub;
142
+ const nextDep = link.nextDep;
143
+ if (nextDep !== void 0) {
144
+ link = nextDep;
145
+ continue top;
146
+ }
147
+ }
148
+ return dirty;
149
+ } while (true);
150
+ }
151
+ function shallowPropagate(link) {
152
+ do {
153
+ const sub = link.sub;
154
+ const flags = sub.flags;
155
+ if ((flags & 48) === 32) {
156
+ sub.flags = flags | 16;
157
+ if ((flags & 6) === 2) notify(sub);
158
+ }
159
+ } while ((link = link.nextSub) !== void 0);
160
+ }
161
+ function isValidLink(checkLink, sub) {
162
+ let link = sub.depsTail;
163
+ while (link !== void 0) {
164
+ if (link === checkLink) return true;
165
+ link = link.prevDep;
166
+ }
167
+ return false;
168
+ }
169
+ }
170
+ //#endregion
171
+ //#region ../../node_modules/.bun/alien-signals@3.1.2/node_modules/alien-signals/esm/index.mjs
172
+ let cycle = 0;
173
+ let notifyIndex = 0;
174
+ let queuedLength = 0;
175
+ let activeSub;
176
+ const queued = [];
177
+ const { link, unlink, propagate, checkDirty, shallowPropagate } = createReactiveSystem({
178
+ update(node) {
179
+ if (node.depsTail !== void 0) return updateComputed(node);
180
+ else return updateSignal(node);
181
+ },
182
+ notify(effect) {
183
+ let insertIndex = queuedLength;
184
+ let firstInsertedIndex = insertIndex;
185
+ do {
186
+ queued[insertIndex++] = effect;
187
+ effect.flags &= -3;
188
+ effect = effect.subs?.sub;
189
+ if (effect === void 0 || !(effect.flags & 2)) break;
190
+ } while (true);
191
+ queuedLength = insertIndex;
192
+ while (firstInsertedIndex < --insertIndex) {
193
+ const left = queued[firstInsertedIndex];
194
+ queued[firstInsertedIndex++] = queued[insertIndex];
195
+ queued[insertIndex] = left;
196
+ }
197
+ },
198
+ unwatched(node) {
199
+ if (!(node.flags & 1)) effectScopeOper.call(node);
200
+ else if (node.depsTail !== void 0) {
201
+ node.depsTail = void 0;
202
+ node.flags = 17;
203
+ purgeDeps(node);
204
+ }
205
+ }
206
+ });
207
+ function setActiveSub(sub) {
208
+ const prevSub = activeSub;
209
+ activeSub = sub;
210
+ return prevSub;
211
+ }
212
+ function signal(initialValue) {
213
+ return signalOper.bind({
214
+ currentValue: initialValue,
215
+ pendingValue: initialValue,
216
+ subs: void 0,
217
+ subsTail: void 0,
218
+ flags: 1
219
+ });
220
+ }
221
+ function computed(getter) {
222
+ return computedOper.bind({
223
+ value: void 0,
224
+ subs: void 0,
225
+ subsTail: void 0,
226
+ deps: void 0,
227
+ depsTail: void 0,
228
+ flags: 0,
229
+ getter
230
+ });
231
+ }
232
+ function effect(fn) {
233
+ const e = {
234
+ fn,
235
+ subs: void 0,
236
+ subsTail: void 0,
237
+ deps: void 0,
238
+ depsTail: void 0,
239
+ flags: 6
240
+ };
241
+ const prevSub = setActiveSub(e);
242
+ if (prevSub !== void 0) link(e, prevSub, 0);
243
+ try {
244
+ e.fn();
245
+ } finally {
246
+ activeSub = prevSub;
247
+ e.flags &= -5;
248
+ }
249
+ return effectOper.bind(e);
250
+ }
251
+ function updateComputed(c) {
252
+ ++cycle;
253
+ c.depsTail = void 0;
254
+ c.flags = 5;
255
+ const prevSub = setActiveSub(c);
256
+ try {
257
+ const oldValue = c.value;
258
+ return oldValue !== (c.value = c.getter(oldValue));
259
+ } finally {
260
+ activeSub = prevSub;
261
+ c.flags &= -5;
262
+ purgeDeps(c);
263
+ }
264
+ }
265
+ function updateSignal(s) {
266
+ s.flags = 1;
267
+ return s.currentValue !== (s.currentValue = s.pendingValue);
268
+ }
269
+ function run(e) {
270
+ const flags = e.flags;
271
+ if (flags & 16 || flags & 32 && checkDirty(e.deps, e)) {
272
+ ++cycle;
273
+ e.depsTail = void 0;
274
+ e.flags = 6;
275
+ const prevSub = setActiveSub(e);
276
+ try {
277
+ e.fn();
278
+ } finally {
279
+ activeSub = prevSub;
280
+ e.flags &= -5;
281
+ purgeDeps(e);
282
+ }
283
+ } else e.flags = 2;
284
+ }
285
+ function flush() {
286
+ try {
287
+ while (notifyIndex < queuedLength) {
288
+ const effect = queued[notifyIndex];
289
+ queued[notifyIndex++] = void 0;
290
+ run(effect);
291
+ }
292
+ } finally {
293
+ while (notifyIndex < queuedLength) {
294
+ const effect = queued[notifyIndex];
295
+ queued[notifyIndex++] = void 0;
296
+ effect.flags |= 10;
297
+ }
298
+ notifyIndex = 0;
299
+ queuedLength = 0;
300
+ }
301
+ }
302
+ function computedOper() {
303
+ const flags = this.flags;
304
+ if (flags & 16 || flags & 32 && (checkDirty(this.deps, this) || (this.flags = flags & -33, false))) {
305
+ if (updateComputed(this)) {
306
+ const subs = this.subs;
307
+ if (subs !== void 0) shallowPropagate(subs);
308
+ }
309
+ } else if (!flags) {
310
+ this.flags = 5;
311
+ const prevSub = setActiveSub(this);
312
+ try {
313
+ this.value = this.getter();
314
+ } finally {
315
+ activeSub = prevSub;
316
+ this.flags &= -5;
317
+ }
318
+ }
319
+ const sub = activeSub;
320
+ if (sub !== void 0) link(this, sub, cycle);
321
+ return this.value;
322
+ }
323
+ function signalOper(...value) {
324
+ if (value.length) {
325
+ if (this.pendingValue !== (this.pendingValue = value[0])) {
326
+ this.flags = 17;
327
+ const subs = this.subs;
328
+ if (subs !== void 0) {
329
+ propagate(subs);
330
+ flush();
331
+ }
332
+ }
333
+ } else {
334
+ if (this.flags & 16) {
335
+ if (updateSignal(this)) {
336
+ const subs = this.subs;
337
+ if (subs !== void 0) shallowPropagate(subs);
338
+ }
339
+ }
340
+ let sub = activeSub;
341
+ while (sub !== void 0) {
342
+ if (sub.flags & 3) {
343
+ link(this, sub, cycle);
344
+ break;
345
+ }
346
+ sub = sub.subs?.sub;
347
+ }
348
+ return this.currentValue;
349
+ }
350
+ }
351
+ function effectOper() {
352
+ effectScopeOper.call(this);
353
+ }
354
+ function effectScopeOper() {
355
+ this.depsTail = void 0;
356
+ this.flags = 0;
357
+ purgeDeps(this);
358
+ const sub = this.subs;
359
+ if (sub !== void 0) unlink(sub);
360
+ }
361
+ function purgeDeps(sub) {
362
+ const depsTail = sub.depsTail;
363
+ let dep = depsTail !== void 0 ? depsTail.nextDep : sub.deps;
364
+ while (dep !== void 0) dep = unlink(dep, sub);
365
+ }
366
+ //#endregion
367
+ //#region packages/ag/src/layout-signals.ts
368
+ /**
369
+ * withLayoutSignals — reactive signal layer for AgNode layout outputs.
370
+ *
371
+ * Composable plugin that wraps an AgNode with reactive signals for layout
372
+ * rects, text content, and focus state. Engine-agnostic — works with
373
+ * Flexily, Yoga, or any future layout engine.
374
+ *
375
+ * Signals are WeakMap-backed and lazily created. Nodes without subscribers
376
+ * pay zero cost. After layout completes, the pipeline calls `syncSignals()`
377
+ * to propagate imperative state into signals.
378
+ *
379
+ * ## Usage
380
+ *
381
+ * ```ts
382
+ * import { getLayoutSignals, syncSignals } from "@silvery/ag/layout-signals"
383
+ *
384
+ * // Get (or create) signals for a node
385
+ * const signals = getLayoutSignals(node)
386
+ * signals.boxRect() // read current rect
387
+ * signals.textContent() // read current text
388
+ *
389
+ * // After layout/reconciler mutations, sync imperative → reactive
390
+ * syncSignals(node)
391
+ * ```
392
+ *
393
+ * ## Three-layer stack
394
+ *
395
+ * Layer 0: alien-signals (signal, computed, effect)
396
+ * Layer 1: getLayoutSignals() — this module (@silvery/ag, framework-agnostic)
397
+ * Layer 2: useSignal(signal) — @silvery/ag-react (React bridge)
398
+ * Layer 3: useBoxRect(), useAgNode() — semantic convenience hooks
399
+ */
400
+ const signalMap = /* @__PURE__ */ new WeakMap();
401
+ /**
402
+ * Get or create layout signals for a node.
403
+ *
404
+ * Lazily created on first access. Automatically garbage-collected
405
+ * when the node is removed from the tree (WeakMap semantics).
406
+ */
407
+ function getLayoutSignals(node) {
408
+ let s = signalMap.get(node);
409
+ if (!s) {
410
+ s = {
411
+ boxRect: signal(node.boxRect),
412
+ scrollRect: signal(node.scrollRect),
413
+ screenRect: signal(node.screenRect),
414
+ textContent: signal(node.textContent),
415
+ focused: signal(node.interactiveState?.focused ?? false)
416
+ };
417
+ signalMap.set(node, s);
418
+ }
419
+ return s;
420
+ }
421
+ /**
422
+ * Sync all rect signals from the node's current values.
423
+ *
424
+ * Called from notifyLayoutSubscribers after layout + scroll + sticky
425
+ * phases complete. Only syncs nodes that have signals allocated.
426
+ * Reference-equality check prevents unnecessary downstream updates.
427
+ */
428
+ function syncRectSignals(node) {
429
+ const s = signalMap.get(node);
430
+ if (!s) return;
431
+ if (node.boxRect !== s.boxRect()) s.boxRect(node.boxRect);
432
+ if (node.scrollRect !== s.scrollRect()) s.scrollRect(node.scrollRect);
433
+ if (node.screenRect !== s.screenRect()) s.screenRect(node.screenRect);
434
+ }
435
+ /**
436
+ * Sync textContent signal from the node's current value.
437
+ *
438
+ * Called from commitTextUpdate in the reconciler.
439
+ */
440
+ function syncTextContentSignal(node) {
441
+ const s = signalMap.get(node);
442
+ if (!s) return;
443
+ if (node.textContent !== s.textContent()) s.textContent(node.textContent);
444
+ }
445
+ /**
446
+ * Sync focused signal for a node.
447
+ *
448
+ * Called from FocusManager when focus changes.
449
+ */
450
+ function syncFocusedSignal(node, focused) {
451
+ const s = signalMap.get(node);
452
+ if (!s) return;
453
+ if (focused !== s.focused()) s.focused(focused);
454
+ }
455
+ //#endregion
456
+ //#region packages/ag/src/types.ts
457
+ /**
458
+ * Check if two rects are equal (same position and size).
459
+ */
460
+ function rectEqual(a, b) {
461
+ if (a === b) return true;
462
+ if (!a || !b) return false;
463
+ return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
464
+ }
465
+ //#endregion
466
+ export { syncTextContentSignal as a, signal as c, syncRectSignals as i, getLayoutSignals as n, computed as o, syncFocusedSignal as r, effect as s, rectEqual as t };
467
+
468
+ //# sourceMappingURL=types-e4dpfbSa.mjs.map