@backbay/glia 0.2.0-alpha.7 → 0.2.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/dist/audio/index.js +1145 -5
  2. package/dist/audio/index.js.map +1 -1
  3. package/dist/components/index.js +3187 -10
  4. package/dist/components/index.js.map +1 -1
  5. package/dist/core.js +19714 -12
  6. package/dist/core.js.map +1 -1
  7. package/dist/emotion/index.js +1 -1
  8. package/dist/emotion/index.js.map +1 -1
  9. package/dist/hooks/index.js +941 -6
  10. package/dist/hooks/index.js.map +1 -1
  11. package/dist/index.js +31841 -183
  12. package/dist/index.js.map +1 -1
  13. package/dist/primitives/index.js +21111 -57
  14. package/dist/primitives/index.js.map +1 -1
  15. package/dist/protocol/index.js +360 -2
  16. package/dist/protocol/index.js.map +1 -1
  17. package/dist/speakeasy/index.js +2786 -38
  18. package/dist/speakeasy/index.js.map +1 -1
  19. package/dist/styles.css +1 -1
  20. package/dist/theme/index.js +1150 -3
  21. package/dist/theme/index.js.map +1 -1
  22. package/dist/vision/index.js +370 -2
  23. package/dist/vision/index.js.map +1 -1
  24. package/dist/workspace/index.js +16824 -2
  25. package/dist/workspace/index.js.map +1 -1
  26. package/package.json +15 -9
  27. package/dist/AuroraBackground-AP6ZHVFA.js +0 -6
  28. package/dist/AuroraBackground-AP6ZHVFA.js.map +0 -1
  29. package/dist/BentoGrid-CDARICNM.js +0 -6
  30. package/dist/BentoGrid-CDARICNM.js.map +0 -1
  31. package/dist/CommandPalette-JCWJKRBY.js +0 -6
  32. package/dist/CommandPalette-JCWJKRBY.js.map +0 -1
  33. package/dist/Glass-H4X4ZI4P.js +0 -7
  34. package/dist/Glass-H4X4ZI4P.js.map +0 -1
  35. package/dist/GlitchText-KLQ57PPY.js +0 -6
  36. package/dist/GlitchText-KLQ57PPY.js.map +0 -1
  37. package/dist/GlowButton-VGBPMZO7.js +0 -6
  38. package/dist/GlowButton-VGBPMZO7.js.map +0 -1
  39. package/dist/Graph3D-GO7N2EZQ.js +0 -540
  40. package/dist/Graph3D-GO7N2EZQ.js.map +0 -1
  41. package/dist/HUDProgressRing-N6C5NAEV.js +0 -6
  42. package/dist/HUDProgressRing-N6C5NAEV.js.map +0 -1
  43. package/dist/KPIStat-PBQK27ZB.js +0 -6
  44. package/dist/KPIStat-PBQK27ZB.js.map +0 -1
  45. package/dist/NeonToast-W5F7MU3U.js +0 -6
  46. package/dist/NeonToast-W5F7MU3U.js.map +0 -1
  47. package/dist/ParticleField-WK6CNHWU.js +0 -51
  48. package/dist/ParticleField-WK6CNHWU.js.map +0 -1
  49. package/dist/TextGenerateEffect-EUCEIIUJ.js +0 -6
  50. package/dist/TextGenerateEffect-EUCEIIUJ.js.map +0 -1
  51. package/dist/ThreeDCard-VH5I3SSY.js +0 -6
  52. package/dist/ThreeDCard-VH5I3SSY.js.map +0 -1
  53. package/dist/TypingAnimation-GIWOHPIX.js +0 -6
  54. package/dist/TypingAnimation-GIWOHPIX.js.map +0 -1
  55. package/dist/alert-dialog-QOSYBIIE.js +0 -19
  56. package/dist/alert-dialog-QOSYBIIE.js.map +0 -1
  57. package/dist/avatar-N5R37PCU.js +0 -10
  58. package/dist/avatar-N5R37PCU.js.map +0 -1
  59. package/dist/badge-GTVIIGPY.js +0 -8
  60. package/dist/badge-GTVIIGPY.js.map +0 -1
  61. package/dist/button-D7IMSV2D.js +0 -8
  62. package/dist/button-D7IMSV2D.js.map +0 -1
  63. package/dist/chunk-3CMPQOMY.js +0 -69
  64. package/dist/chunk-3CMPQOMY.js.map +0 -1
  65. package/dist/chunk-3OQT6IYR.js +0 -41
  66. package/dist/chunk-3OQT6IYR.js.map +0 -1
  67. package/dist/chunk-43B2WVLS.js +0 -85
  68. package/dist/chunk-43B2WVLS.js.map +0 -1
  69. package/dist/chunk-4SRFO5W3.js +0 -121
  70. package/dist/chunk-4SRFO5W3.js.map +0 -1
  71. package/dist/chunk-5IZELOOU.js +0 -362
  72. package/dist/chunk-5IZELOOU.js.map +0 -1
  73. package/dist/chunk-6DM4ACSS.js +0 -154
  74. package/dist/chunk-6DM4ACSS.js.map +0 -1
  75. package/dist/chunk-6IGT34PC.js +0 -50
  76. package/dist/chunk-6IGT34PC.js.map +0 -1
  77. package/dist/chunk-6RKBCJHN.js +0 -194
  78. package/dist/chunk-6RKBCJHN.js.map +0 -1
  79. package/dist/chunk-6RX2WGCO.js +0 -108
  80. package/dist/chunk-6RX2WGCO.js.map +0 -1
  81. package/dist/chunk-7K4WZM3U.js +0 -189
  82. package/dist/chunk-7K4WZM3U.js.map +0 -1
  83. package/dist/chunk-7MDBHJPT.js +0 -407
  84. package/dist/chunk-7MDBHJPT.js.map +0 -1
  85. package/dist/chunk-7UQD6ROV.js +0 -9
  86. package/dist/chunk-7UQD6ROV.js.map +0 -1
  87. package/dist/chunk-AFNIVLZP.js +0 -1069
  88. package/dist/chunk-AFNIVLZP.js.map +0 -1
  89. package/dist/chunk-ANWYRO6A.js +0 -407
  90. package/dist/chunk-ANWYRO6A.js.map +0 -1
  91. package/dist/chunk-DIXPOHDO.js +0 -71
  92. package/dist/chunk-DIXPOHDO.js.map +0 -1
  93. package/dist/chunk-DWYMKYPI.js +0 -3
  94. package/dist/chunk-DWYMKYPI.js.map +0 -1
  95. package/dist/chunk-E3NVDCZG.js +0 -280
  96. package/dist/chunk-E3NVDCZG.js.map +0 -1
  97. package/dist/chunk-EBM7YBKL.js +0 -399
  98. package/dist/chunk-EBM7YBKL.js.map +0 -1
  99. package/dist/chunk-EPAM7IWW.js +0 -294
  100. package/dist/chunk-EPAM7IWW.js.map +0 -1
  101. package/dist/chunk-EXQ7GYRS.js +0 -134
  102. package/dist/chunk-EXQ7GYRS.js.map +0 -1
  103. package/dist/chunk-F4QTUZ3C.js +0 -136
  104. package/dist/chunk-F4QTUZ3C.js.map +0 -1
  105. package/dist/chunk-FEW533R2.js +0 -105
  106. package/dist/chunk-FEW533R2.js.map +0 -1
  107. package/dist/chunk-FFZLJKC7.js +0 -270
  108. package/dist/chunk-FFZLJKC7.js.map +0 -1
  109. package/dist/chunk-GEAMOBF7.js +0 -8486
  110. package/dist/chunk-GEAMOBF7.js.map +0 -1
  111. package/dist/chunk-GRTRSCTD.js +0 -74
  112. package/dist/chunk-GRTRSCTD.js.map +0 -1
  113. package/dist/chunk-IKGYOGLK.js +0 -16
  114. package/dist/chunk-IKGYOGLK.js.map +0 -1
  115. package/dist/chunk-IQ7WYWVJ.js +0 -73
  116. package/dist/chunk-IQ7WYWVJ.js.map +0 -1
  117. package/dist/chunk-IXIVWQLF.js +0 -543
  118. package/dist/chunk-IXIVWQLF.js.map +0 -1
  119. package/dist/chunk-JCJU57RC.js +0 -115
  120. package/dist/chunk-JCJU57RC.js.map +0 -1
  121. package/dist/chunk-KORSTBU4.js +0 -117
  122. package/dist/chunk-KORSTBU4.js.map +0 -1
  123. package/dist/chunk-KSEZ6UM2.js +0 -235
  124. package/dist/chunk-KSEZ6UM2.js.map +0 -1
  125. package/dist/chunk-MHPF7R3O.js +0 -1376
  126. package/dist/chunk-MHPF7R3O.js.map +0 -1
  127. package/dist/chunk-MPC5IH7E.js +0 -81
  128. package/dist/chunk-MPC5IH7E.js.map +0 -1
  129. package/dist/chunk-MQIU2NYA.js +0 -114
  130. package/dist/chunk-MQIU2NYA.js.map +0 -1
  131. package/dist/chunk-NYMBJOGR.js +0 -2192
  132. package/dist/chunk-NYMBJOGR.js.map +0 -1
  133. package/dist/chunk-OBZD2M3C.js +0 -169
  134. package/dist/chunk-OBZD2M3C.js.map +0 -1
  135. package/dist/chunk-ODM2AG6G.js +0 -176
  136. package/dist/chunk-ODM2AG6G.js.map +0 -1
  137. package/dist/chunk-ONDKF5LP.js +0 -53
  138. package/dist/chunk-ONDKF5LP.js.map +0 -1
  139. package/dist/chunk-P25YCWQB.js +0 -41
  140. package/dist/chunk-P25YCWQB.js.map +0 -1
  141. package/dist/chunk-PFYVNM6H.js +0 -14
  142. package/dist/chunk-PFYVNM6H.js.map +0 -1
  143. package/dist/chunk-PWNNSGFL.js +0 -20
  144. package/dist/chunk-PWNNSGFL.js.map +0 -1
  145. package/dist/chunk-Q2PGZVOT.js +0 -36
  146. package/dist/chunk-Q2PGZVOT.js.map +0 -1
  147. package/dist/chunk-Q2XDMV7U.js +0 -76
  148. package/dist/chunk-Q2XDMV7U.js.map +0 -1
  149. package/dist/chunk-QG7FH2FI.js +0 -45
  150. package/dist/chunk-QG7FH2FI.js.map +0 -1
  151. package/dist/chunk-R7HUOK2D.js +0 -1914
  152. package/dist/chunk-R7HUOK2D.js.map +0 -1
  153. package/dist/chunk-REUYY7G5.js +0 -773
  154. package/dist/chunk-REUYY7G5.js.map +0 -1
  155. package/dist/chunk-RHC2Z2HT.js +0 -199
  156. package/dist/chunk-RHC2Z2HT.js.map +0 -1
  157. package/dist/chunk-RMCVLIFE.js +0 -23
  158. package/dist/chunk-RMCVLIFE.js.map +0 -1
  159. package/dist/chunk-ROZLTXGR.js +0 -234
  160. package/dist/chunk-ROZLTXGR.js.map +0 -1
  161. package/dist/chunk-RSS2C2O3.js +0 -17
  162. package/dist/chunk-RSS2C2O3.js.map +0 -1
  163. package/dist/chunk-SAGCG5SH.js +0 -355
  164. package/dist/chunk-SAGCG5SH.js.map +0 -1
  165. package/dist/chunk-TM6AOUSD.js +0 -40
  166. package/dist/chunk-TM6AOUSD.js.map +0 -1
  167. package/dist/chunk-TPK4BYCO.js +0 -970
  168. package/dist/chunk-TPK4BYCO.js.map +0 -1
  169. package/dist/chunk-UNQIL4K2.js +0 -34
  170. package/dist/chunk-UNQIL4K2.js.map +0 -1
  171. package/dist/chunk-UUG6L75Y.js +0 -47
  172. package/dist/chunk-UUG6L75Y.js.map +0 -1
  173. package/dist/chunk-V2SYMV4W.js +0 -114
  174. package/dist/chunk-V2SYMV4W.js.map +0 -1
  175. package/dist/chunk-V7EN5CTH.js +0 -130
  176. package/dist/chunk-V7EN5CTH.js.map +0 -1
  177. package/dist/chunk-VITKG2HL.js +0 -1125
  178. package/dist/chunk-VITKG2HL.js.map +0 -1
  179. package/dist/chunk-VYEWU5LO.js +0 -2631
  180. package/dist/chunk-VYEWU5LO.js.map +0 -1
  181. package/dist/chunk-W67QAGSH.js +0 -178
  182. package/dist/chunk-W67QAGSH.js.map +0 -1
  183. package/dist/chunk-WWBIN6KV.js +0 -1353
  184. package/dist/chunk-WWBIN6KV.js.map +0 -1
  185. package/dist/chunk-X77Z4PFB.js +0 -224
  186. package/dist/chunk-X77Z4PFB.js.map +0 -1
  187. package/dist/chunk-X7VG7OTT.js +0 -8
  188. package/dist/chunk-X7VG7OTT.js.map +0 -1
  189. package/dist/chunk-XE4K2SGI.js +0 -74
  190. package/dist/chunk-XE4K2SGI.js.map +0 -1
  191. package/dist/chunk-YIUG7IJK.js +0 -628
  192. package/dist/chunk-YIUG7IJK.js.map +0 -1
  193. package/dist/chunk-YNVN3V4Y.js +0 -13
  194. package/dist/chunk-YNVN3V4Y.js.map +0 -1
  195. package/dist/chunk-Z2S54IZX.js +0 -198
  196. package/dist/chunk-Z2S54IZX.js.map +0 -1
  197. package/dist/chunk-ZR6AH25Z.js +0 -17
  198. package/dist/chunk-ZR6AH25Z.js.map +0 -1
  199. package/dist/dialog-SPM3DTTI.js +0 -17
  200. package/dist/dialog-SPM3DTTI.js.map +0 -1
  201. package/dist/dropdown-menu-HMTWKWGK.js +0 -21
  202. package/dist/dropdown-menu-HMTWKWGK.js.map +0 -1
  203. package/dist/input-BH4P4S26.js +0 -6
  204. package/dist/input-BH4P4S26.js.map +0 -1
  205. package/dist/label-5Z4Q6VER.js +0 -8
  206. package/dist/label-5Z4Q6VER.js.map +0 -1
  207. package/dist/popover-IFOUXYLI.js +0 -18
  208. package/dist/popover-IFOUXYLI.js.map +0 -1
  209. package/dist/scroll-area-DJXNW6QX.js +0 -14
  210. package/dist/scroll-area-DJXNW6QX.js.map +0 -1
  211. package/dist/select-FZ277C3G.js +0 -22
  212. package/dist/select-FZ277C3G.js.map +0 -1
  213. package/dist/separator-BTMLN4NB.js +0 -8
  214. package/dist/separator-BTMLN4NB.js.map +0 -1
  215. package/dist/skeleton-DXIWBH4W.js +0 -6
  216. package/dist/skeleton-DXIWBH4W.js.map +0 -1
  217. package/dist/switch-4MCXIZBY.js +0 -13
  218. package/dist/switch-4MCXIZBY.js.map +0 -1
  219. package/dist/tabs-O7AW3APK.js +0 -17
  220. package/dist/tabs-O7AW3APK.js.map +0 -1
  221. package/dist/textarea-IB5WAFDO.js +0 -6
  222. package/dist/textarea-IB5WAFDO.js.map +0 -1
  223. package/dist/toggle-XVPPG6P4.js +0 -10
  224. package/dist/toggle-XVPPG6P4.js.map +0 -1
  225. package/dist/tooltip-JICZTD4F.js +0 -18
  226. package/dist/tooltip-JICZTD4F.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
1
+ {"version":3,"sources":["../../src/theme/nebula.ts","../../src/theme/solarpunk.ts","../../src/theme/registry.ts","../../src/lib/accessibility.ts","../../src/theme/UiThemeProvider.tsx","../../src/theme/GliaThemeProvider.tsx","../../src/theme/bridge.ts","../../src/theme/materials.ts"],"names":["React2","STORAGE_KEY","jsx","easeToCss"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Nebula Theme - Clinical Cyberpunk HUD\n *\n * The original Out-of-Scope aesthetic: deep space darkness with\n * cyan/magenta neon accents, glass panels, and starfield ambience.\n */\n\nimport type { UiTheme } from \"./types\";\n\nexport const nebulaTheme: UiTheme = {\n id: \"nebula\",\n name: \"Nebula\",\n description: \"Clinical cyberpunk HUD with neon accents and starfield ambience\",\n\n color: {\n bg: {\n body: \"#02040a\",\n panel: \"rgba(4, 8, 16, 0.94)\",\n elevated: \"rgba(12, 17, 23, 0.98)\",\n horizon: \"#050609\",\n },\n text: {\n primary: \"#E5E7EB\",\n muted: \"#94A3B8\",\n soft: \"#64748B\",\n },\n accent: {\n primary: \"#22D3EE\", // cyan-neon\n secondary: \"#F43F5E\", // magenta-neon\n positive: \"#10B981\", // emerald-neon\n warning: \"#EAB308\", // yellow-warning\n destructive: \"#F43F5E\",\n },\n border: \"rgba(34, 211, 238, 0.12)\",\n ring: \"#22D3EE\",\n },\n\n glass: {\n panelBg: \"rgba(4, 8, 16, 0.94)\",\n panelBorder: \"rgba(34, 211, 238, 0.12)\",\n panelBlur: \"24px\",\n headerGradient:\n \"linear-gradient(to right, rgba(255, 255, 255, 0.025), rgba(255, 255, 255, 0.015), transparent)\",\n cardBg: \"rgba(255, 255, 255, 0.015)\",\n cardBorder: \"rgba(255, 255, 255, 0.04)\",\n hoverBg: \"rgba(34, 211, 238, 0.08)\",\n activeBorder: \"rgba(34, 211, 238, 0.35)\",\n activeShadow: \"0 6px 28px rgba(34, 211, 238, 0.1)\",\n },\n\n elevation: {\n softDrop: \"0 2px 8px rgba(0, 0, 0, 0.15)\",\n hudPanel: \"0 8px 32px rgba(2, 4, 8, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.02)\",\n hudRail: \"0 -6px 32px rgba(2, 4, 8, 0.6), inset 0 1px 0 rgba(255, 255, 255, 0.02)\",\n modal: \"0 16px 48px rgba(0, 0, 0, 0.5), 0 8px 24px rgba(34, 211, 238, 0.08)\",\n glow: \"0 0 16px 1px rgba(34, 211, 238, 0.4)\",\n },\n\n motion: {\n fast: { duration: 0.15, ease: \"easeOut\" },\n normal: { duration: 0.2, ease: \"easeOut\" },\n spring: { type: \"spring\", damping: 25, stiffness: 280 },\n ambientDrift: { duration: 8, ease: \"linear\" },\n ripple: { duration: 2, ease: \"easeInOut\" },\n },\n\n ambient: {\n type: \"nebula-stars\",\n particleColors: [\"#22D3EE\", \"#F43F5E\", \"#8B5CF6\", \"#10B981\"],\n particleDensity: 0.6,\n particleSpeed: 0.3,\n particleSizeRange: [1, 3],\n horizonGradient: `\n radial-gradient(ellipse at top left, rgba(34, 211, 238, 0.08), transparent 50%),\n radial-gradient(ellipse at bottom right, rgba(139, 92, 246, 0.06), transparent 50%),\n radial-gradient(circle at 30% 70%, rgba(244, 63, 94, 0.04), transparent 40%)\n `,\n rippleColorPrimary: \"rgba(34, 211, 238, 0.04)\",\n rippleColorSecondary: \"rgba(217, 70, 239, 0.025)\",\n glowIntensity: 0.8,\n },\n\n controls: {\n switch: {\n track: {\n bg: {\n on: \"rgba(34, 211, 238, 0.2)\",\n off: \"rgba(255, 255, 255, 0.08)\",\n },\n border: {\n on: \"rgba(34, 211, 238, 0.4)\",\n off: \"rgba(255, 255, 255, 0.15)\",\n },\n },\n thumb: {\n bg: {\n on: \"#22D3EE\",\n off: \"#64748B\",\n },\n shadow: {\n on: \"0 0 8px rgba(34, 211, 238, 0.5)\",\n off: \"0 1px 2px rgba(0, 0, 0, 0.2)\",\n },\n },\n },\n slider: {\n track: {\n bg: \"rgba(255, 255, 255, 0.08)\",\n border: \"rgba(255, 255, 255, 0.15)\",\n },\n thumb: {\n bg: \"#22D3EE\",\n shadow: \"0 0 8px rgba(34, 211, 238, 0.5)\",\n },\n fill: \"rgba(34, 211, 238, 0.6)\",\n },\n buttonGlow: {\n hoverBg: \"rgba(34, 211, 238, 0.08)\",\n hoverText: \"#22D3EE\",\n hoverShadow: \"0 0 10px rgba(34, 211, 238, 0.1)\",\n },\n },\n\n fonts: {\n display: \"'Inter', sans-serif\",\n body: \"'Inter', sans-serif\",\n mono: \"'JetBrains Mono', monospace\",\n },\n\n radii: {\n sm: \"6px\",\n md: \"8px\",\n lg: \"8px\",\n },\n\n spacing: {\n taskbarHeight: \"48px\",\n titlebarHeight: \"36px\",\n windowPadding: \"12px\",\n iconSize: \"64px\",\n iconGap: \"16px\",\n windowBorderWidth: \"1px\",\n },\n};\n","/**\n * Solarpunk Theme - Botanical Observatory\n *\n * A warmer, sunlit aesthetic: deep navy with jade and gold accents,\n * soft analog controls, and floating dust motes.\n */\n\nimport type { UiTheme } from \"./types\";\n\nexport const solarpunkTheme: UiTheme = {\n id: \"solarpunk\",\n name: \"Solarpunk Observatory\",\n description: \"Botanical space station with sunlit warmth and organic calm\",\n\n color: {\n bg: {\n body: \"#0a0f14\", // Slightly warmer than nebula\n panel: \"rgba(16, 24, 32, 0.92)\",\n elevated: \"rgba(24, 32, 40, 0.96)\",\n horizon: \"#0d1318\",\n },\n text: {\n primary: \"#F0EDE8\", // Warm white\n muted: \"#A8B4A8\", // Sage-tinged gray\n soft: \"#6B7B6B\", // Muted sage\n },\n accent: {\n primary: \"#F5A623\", // Warm gold (sun)\n secondary: \"#4ADE80\", // Leaf green\n positive: \"#4ADE80\", // Same leaf green\n warning: \"#FB923C\", // Warm orange\n destructive: \"#EF4444\", // Softer red\n },\n border: \"rgba(74, 222, 128, 0.15)\",\n ring: \"#4ADE80\",\n },\n\n glass: {\n panelBg: \"rgba(16, 24, 20, 0.88)\", // Jade-tinted\n panelBorder: \"rgba(74, 222, 128, 0.12)\",\n panelBlur: \"20px\", // Slightly less blur for organic feel\n headerGradient:\n \"linear-gradient(to right, rgba(245, 166, 35, 0.06), rgba(74, 222, 128, 0.04), transparent)\",\n cardBg: \"rgba(245, 166, 35, 0.02)\",\n cardBorder: \"rgba(74, 222, 128, 0.08)\",\n hoverBg: \"rgba(245, 166, 35, 0.06)\",\n activeBorder: \"rgba(245, 166, 35, 0.35)\",\n activeShadow: \"0 6px 24px rgba(245, 166, 35, 0.1)\",\n },\n\n elevation: {\n softDrop: \"0 4px 12px rgba(0, 0, 0, 0.12)\",\n hudPanel: \"0 8px 32px rgba(10, 15, 20, 0.5), inset 0 1px 0 rgba(245, 166, 35, 0.02)\",\n hudRail: \"0 -6px 28px rgba(10, 15, 20, 0.5), inset 0 1px 0 rgba(74, 222, 128, 0.03)\",\n modal: \"0 16px 48px rgba(0, 0, 0, 0.4), 0 4px 16px rgba(245, 166, 35, 0.06)\",\n glow: \"0 0 20px 2px rgba(245, 166, 35, 0.25)\",\n },\n\n motion: {\n fast: { duration: 0.18, ease: \"easeOut\" },\n normal: { duration: 0.25, ease: [0.4, 0, 0.2, 1] }, // Slightly smoother\n spring: { type: \"spring\", damping: 28, stiffness: 240 }, // More relaxed\n ambientDrift: { duration: 12, ease: \"linear\" }, // Slower drift\n ripple: { duration: 2.5, ease: \"easeInOut\" },\n },\n\n ambient: {\n type: \"dust-motes\",\n particleColors: [\n \"rgba(245, 166, 35, 0.6)\", // Gold\n \"rgba(255, 248, 220, 0.5)\", // Warm cream\n \"rgba(74, 222, 128, 0.3)\", // Faint green\n \"rgba(255, 255, 255, 0.4)\", // White\n ],\n particleDensity: 0.35, // Sparser than stars\n particleSpeed: 0.15, // Slower, lazier drift\n particleSizeRange: [2, 6], // Larger motes\n horizonGradient: `\n radial-gradient(ellipse at top, rgba(245, 166, 35, 0.06), transparent 60%),\n radial-gradient(ellipse at bottom left, rgba(74, 222, 128, 0.05), transparent 50%),\n linear-gradient(to bottom, rgba(16, 24, 20, 0.3), transparent 70%)\n `,\n rippleColorPrimary: \"rgba(245, 166, 35, 0.035)\",\n rippleColorSecondary: \"rgba(74, 222, 128, 0.025)\",\n glowIntensity: 0.5, // Softer glow\n },\n\n controls: {\n switch: {\n track: {\n bg: {\n on: \"rgba(74, 222, 128, 0.2)\",\n off: \"rgba(245, 230, 210, 0.1)\", // Warm cream off state\n },\n border: {\n on: \"rgba(74, 222, 128, 0.4)\",\n off: \"rgba(245, 230, 210, 0.2)\",\n },\n },\n thumb: {\n bg: {\n on: \"#F5A623\", // Gold sun disk\n off: \"#8B9B8B\", // Sage gray\n },\n shadow: {\n on: \"0 0 10px rgba(245, 166, 35, 0.5), inset 0 -1px 2px rgba(0,0,0,0.1)\",\n off: \"0 1px 3px rgba(0, 0, 0, 0.15)\",\n },\n },\n },\n slider: {\n track: {\n bg: \"rgba(245, 230, 210, 0.1)\",\n border: \"rgba(74, 222, 128, 0.15)\",\n },\n thumb: {\n bg: \"linear-gradient(135deg, #F5A623, #D4860F)\", // Brass/wood knob\n shadow: \"0 2px 6px rgba(0, 0, 0, 0.2), 0 0 8px rgba(245, 166, 35, 0.3)\",\n },\n fill: \"rgba(74, 222, 128, 0.5)\",\n },\n buttonGlow: {\n hoverBg: \"rgba(245, 166, 35, 0.08)\",\n hoverText: \"#F5A623\",\n hoverShadow: \"0 0 12px rgba(245, 166, 35, 0.12)\",\n },\n },\n\n fonts: {\n display: \"'Inter', sans-serif\",\n body: \"'Inter', sans-serif\",\n mono: \"'JetBrains Mono', monospace\",\n },\n\n radii: {\n sm: \"6px\",\n md: \"8px\",\n lg: \"8px\",\n },\n\n spacing: {\n taskbarHeight: \"48px\",\n titlebarHeight: \"36px\",\n windowPadding: \"12px\",\n iconSize: \"64px\",\n iconGap: \"16px\",\n windowBorderWidth: \"1px\",\n },\n};\n","/**\n * Theme Registry\n *\n * Central registry of all available UI themes.\n * Provides lookup and utility functions for theme management.\n */\n\nimport { nebulaTheme } from \"./nebula\";\nimport { solarpunkTheme } from \"./solarpunk\";\nimport type { ThemeCssVariables, UiTheme, UiThemeId } from \"./types\";\n\n// ============================================================================\n// THEME REGISTRY\n// ============================================================================\n\nexport const THEMES: Record<UiThemeId, UiTheme> = {\n nebula: nebulaTheme,\n solarpunk: solarpunkTheme,\n};\n\nexport const DEFAULT_THEME_ID: UiThemeId = \"nebula\";\n\nexport function getTheme(id: UiThemeId): UiTheme {\n return THEMES[id] ?? THEMES[DEFAULT_THEME_ID];\n}\n\nexport function getThemeIds(): UiThemeId[] {\n return Object.keys(THEMES) as UiThemeId[];\n}\n\n// ============================================================================\n// CSS VARIABLE GENERATION\n// ============================================================================\n\ntype RgbColor = { r: number; g: number; b: number };\n\nfunction clampByte(value: number): number {\n if (Number.isNaN(value)) return 0;\n return Math.min(255, Math.max(0, value));\n}\n\nfunction parseHexColor(hex: string): RgbColor | null {\n const value = hex.trim();\n if (!value.startsWith(\"#\")) return null;\n\n const raw = value.slice(1);\n if (raw.length === 3) {\n const r = Number.parseInt(raw[0] + raw[0], 16);\n const g = Number.parseInt(raw[1] + raw[1], 16);\n const b = Number.parseInt(raw[2] + raw[2], 16);\n if ([r, g, b].some((n) => Number.isNaN(n))) return null;\n return { r, g, b };\n }\n\n if (raw.length === 6) {\n const r = Number.parseInt(raw.slice(0, 2), 16);\n const g = Number.parseInt(raw.slice(2, 4), 16);\n const b = Number.parseInt(raw.slice(4, 6), 16);\n if ([r, g, b].some((n) => Number.isNaN(n))) return null;\n return { r, g, b };\n }\n\n return null;\n}\n\nfunction parseRgbFunction(color: string): RgbColor | null {\n const match = color\n .trim()\n .match(/^rgba?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)(?:\\s*,\\s*[\\d.]+)?\\s*\\)$/i);\n if (!match) return null;\n\n const r = clampByte(Number.parseFloat(match[1]));\n const g = clampByte(Number.parseFloat(match[2]));\n const b = clampByte(Number.parseFloat(match[3]));\n return { r, g, b };\n}\n\nfunction parseColorToRgb(color: string): RgbColor | null {\n return parseHexColor(color) ?? parseRgbFunction(color);\n}\n\nfunction rgbToHslComponents(rgb: RgbColor): string {\n const r = rgb.r / 255;\n const g = rgb.g / 255;\n const b = rgb.b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (delta !== 0) {\n s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / delta + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / delta + 2;\n break;\n default:\n h = (r - g) / delta + 4;\n break;\n }\n\n h /= 6;\n }\n\n const hDeg = Math.round(h * 360);\n const sPct = Math.round(s * 100);\n const lPct = Math.round(l * 100);\n return `${hDeg} ${sPct}% ${lPct}%`;\n}\n\nexport function colorToHslComponents(color: string): string | null {\n const rgb = parseColorToRgb(color);\n if (!rgb) return null;\n return rgbToHslComponents(rgb);\n}\n\n/**\n * Converts a theme object to CSS custom properties\n */\nexport function themeToCssVariables(theme: UiTheme): ThemeCssVariables {\n return {\n // Colors\n \"--theme-bg-body\": theme.color.bg.body,\n \"--theme-bg-panel\": theme.color.bg.panel,\n \"--theme-bg-elevated\": theme.color.bg.elevated,\n \"--theme-bg-horizon\": theme.color.bg.horizon,\n \"--theme-text-primary\": theme.color.text.primary,\n \"--theme-text-muted\": theme.color.text.muted,\n \"--theme-text-soft\": theme.color.text.soft,\n \"--theme-accent-primary\": theme.color.accent.primary,\n \"--theme-accent-secondary\": theme.color.accent.secondary,\n \"--theme-accent-positive\": theme.color.accent.positive,\n \"--theme-accent-warning\": theme.color.accent.warning,\n \"--theme-accent-destructive\": theme.color.accent.destructive,\n \"--theme-border\": theme.color.border,\n \"--theme-ring\": theme.color.ring,\n\n // Glass\n \"--theme-glass-panel-bg\": theme.glass.panelBg,\n \"--theme-glass-panel-border\": theme.glass.panelBorder,\n \"--theme-glass-panel-blur\": theme.glass.panelBlur,\n \"--theme-glass-header-gradient\": theme.glass.headerGradient,\n \"--theme-glass-card-bg\": theme.glass.cardBg,\n \"--theme-glass-card-border\": theme.glass.cardBorder,\n \"--theme-glass-hover-bg\": theme.glass.hoverBg,\n \"--theme-glass-active-border\": theme.glass.activeBorder,\n \"--theme-glass-active-shadow\": theme.glass.activeShadow,\n\n // Elevation\n \"--theme-shadow-soft\": theme.elevation.softDrop,\n \"--theme-shadow-hud-panel\": theme.elevation.hudPanel,\n \"--theme-shadow-hud-rail\": theme.elevation.hudRail,\n \"--theme-shadow-modal\": theme.elevation.modal,\n \"--theme-shadow-glow\": theme.elevation.glow,\n\n // Ambient\n \"--theme-ambient-horizon\": theme.ambient.horizonGradient,\n \"--theme-ambient-ripple-primary\": theme.ambient.rippleColorPrimary,\n \"--theme-ambient-ripple-secondary\": theme.ambient.rippleColorSecondary,\n \"--theme-ambient-glow-intensity\": String(theme.ambient.glowIntensity),\n\n // Controls\n \"--theme-switch-track-on\": theme.controls.switch.track.bg.on,\n \"--theme-switch-track-off\": theme.controls.switch.track.bg.off,\n \"--theme-switch-thumb-on\": theme.controls.switch.thumb.bg.on,\n \"--theme-switch-thumb-off\": theme.controls.switch.thumb.bg.off,\n \"--theme-button-glow-hover-bg\": theme.controls.buttonGlow.hoverBg,\n \"--theme-button-glow-hover-text\": theme.controls.buttonGlow.hoverText,\n \"--theme-button-glow-hover-shadow\": theme.controls.buttonGlow.hoverShadow,\n };\n}\n\nconst TAILWIND_CSS_VARIABLE_KEYS = [\n \"--cyan-neon\",\n \"--magenta-neon\",\n \"--emerald-neon\",\n \"--violet-neon\",\n \"--yellow-warning\",\n \"--background\",\n \"--foreground\",\n \"--card\",\n \"--card-foreground\",\n \"--popover\",\n \"--popover-foreground\",\n \"--primary\",\n \"--primary-foreground\",\n \"--secondary\",\n \"--secondary-foreground\",\n \"--muted\",\n \"--muted-foreground\",\n \"--accent\",\n \"--accent-foreground\",\n \"--destructive\",\n \"--destructive-foreground\",\n \"--border\",\n \"--input\",\n \"--ring\",\n] as const;\n\ntype TailwindCssVariables = Partial<Record<(typeof TAILWIND_CSS_VARIABLE_KEYS)[number], string>>;\n\nfunction themeToTailwindCssVariables(theme: UiTheme): TailwindCssVariables {\n const bg = colorToHslComponents(theme.color.bg.body);\n const fg = colorToHslComponents(theme.color.text.primary);\n const panel = colorToHslComponents(theme.color.bg.panel);\n const elevated = colorToHslComponents(theme.color.bg.elevated);\n const primary = colorToHslComponents(theme.color.accent.primary);\n const secondary = colorToHslComponents(theme.color.accent.secondary);\n const positive = colorToHslComponents(theme.color.accent.positive);\n const warning = colorToHslComponents(theme.color.accent.warning);\n const destructive = colorToHslComponents(theme.color.accent.destructive);\n const border = colorToHslComponents(theme.color.border);\n const ring = colorToHslComponents(theme.color.ring);\n const mutedFg = colorToHslComponents(theme.color.text.muted);\n\n const violetFallback =\n theme.id === \"nebula\"\n ? colorToHslComponents(\"#8B5CF6\")\n : colorToHslComponents(theme.color.accent.secondary);\n\n return {\n \"--cyan-neon\": primary ?? undefined,\n \"--magenta-neon\": secondary ?? undefined,\n \"--emerald-neon\": positive ?? undefined,\n \"--violet-neon\": violetFallback ?? undefined,\n \"--yellow-warning\": warning ?? undefined,\n\n \"--background\": bg ?? undefined,\n \"--foreground\": fg ?? undefined,\n\n \"--card\": panel ?? undefined,\n \"--card-foreground\": fg ?? undefined,\n\n \"--popover\": elevated ?? undefined,\n \"--popover-foreground\": fg ?? undefined,\n\n \"--primary\": primary ?? undefined,\n \"--primary-foreground\": bg ?? undefined,\n\n \"--secondary\": secondary ?? undefined,\n \"--secondary-foreground\": fg ?? undefined,\n\n \"--muted\": elevated ?? undefined,\n \"--muted-foreground\": mutedFg ?? undefined,\n\n \"--accent\": panel ?? undefined,\n \"--accent-foreground\": primary ?? undefined,\n\n \"--destructive\": destructive ?? undefined,\n \"--destructive-foreground\": fg ?? undefined,\n\n \"--border\": border ?? undefined,\n \"--input\": elevated ?? undefined,\n \"--ring\": ring ?? undefined,\n };\n}\n\n/**\n * Applies theme CSS variables to a target element\n */\nexport function applyThemeCssVariables(\n theme: UiTheme,\n target: HTMLElement = document.documentElement\n): void {\n const variables = themeToCssVariables(theme);\n const tailwindVariables = themeToTailwindCssVariables(theme);\n\n for (const [key, value] of Object.entries(variables)) {\n target.style.setProperty(key, value);\n }\n\n for (const [key, value] of Object.entries(tailwindVariables)) {\n if (!value) continue;\n target.style.setProperty(key, value);\n }\n\n // Set data attribute for CSS selectors\n target.dataset.uiTheme = theme.id;\n}\n\n/**\n * Removes theme CSS variables from a target element\n */\nexport function removeThemeCssVariables(target: HTMLElement = document.documentElement): void {\n const variables = themeToCssVariables(THEMES.nebula);\n\n for (const key of Object.keys(variables)) {\n target.style.removeProperty(key);\n }\n\n for (const key of TAILWIND_CSS_VARIABLE_KEYS) {\n target.style.removeProperty(key);\n }\n\n delete target.dataset.uiTheme;\n}\n","\"use client\";\n\nimport { useSyncExternalStore } from \"react\";\n\n// ============================================================================\n// MEDIA QUERY SUBSCRIPTION HELPER\n// ============================================================================\n\n/**\n * Creates a concurrent-safe subscription to a CSS media query\n * for use with React.useSyncExternalStore.\n */\nfunction createMediaQueryStore(query: string) {\n function subscribe(callback: () => void): () => void {\n if (typeof window === \"undefined\") return () => {};\n const mql = window.matchMedia(query);\n mql.addEventListener(\"change\", callback);\n return () => mql.removeEventListener(\"change\", callback);\n }\n\n function getSnapshot(): boolean {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(query).matches;\n }\n\n function getServerSnapshot(): boolean {\n return false;\n }\n\n return { subscribe, getSnapshot, getServerSnapshot };\n}\n\n// ============================================================================\n// REDUCED TRANSPARENCY\n// ============================================================================\n\nconst reducedTransparencyStore = createMediaQueryStore(\n \"(prefers-reduced-transparency: reduce)\"\n);\n\n/**\n * Check if user prefers reduced transparency.\n *\n * Uses the CSS media query `prefers-reduced-transparency: reduce`.\n * SSR-safe: returns false on the server.\n *\n * NOTE: Browser support is limited (Safari 16.4+, Firefox 113+).\n * Falls back to false when not supported.\n */\nexport function prefersReducedTransparency(): boolean {\n if (typeof window === \"undefined\") return false;\n return window.matchMedia(\"(prefers-reduced-transparency: reduce)\").matches;\n}\n\n/**\n * React hook that reactively tracks the user's reduced-transparency preference.\n *\n * Unlike the bare `prefersReducedTransparency()` function, this hook\n * subscribes to media-query change events and triggers a re-render\n * when the preference changes (e.g. user toggles the OS setting).\n *\n * @returns boolean -- true when the user prefers reduced transparency\n */\nexport function usePrefersReducedTransparency(): boolean {\n return useSyncExternalStore(\n reducedTransparencyStore.subscribe,\n reducedTransparencyStore.getSnapshot,\n reducedTransparencyStore.getServerSnapshot\n );\n}\n\n// ============================================================================\n// REDUCED MOTION\n// ============================================================================\n\nconst reducedMotionStore = createMediaQueryStore(\n \"(prefers-reduced-motion: reduce)\"\n);\n\n/**\n * React hook that reactively tracks the user's reduced-motion preference.\n *\n * Subscribes to media-query change events and triggers a re-render\n * when the preference changes (e.g. user toggles the OS setting).\n *\n * @returns boolean -- true when the user prefers reduced motion\n */\nexport function usePrefersReducedMotion(): boolean {\n return useSyncExternalStore(\n reducedMotionStore.subscribe,\n reducedMotionStore.getSnapshot,\n reducedMotionStore.getServerSnapshot\n );\n}\n\n// ============================================================================\n// COLOR SCHEME\n// ============================================================================\n\nconst colorSchemeStore = createMediaQueryStore(\n \"(prefers-color-scheme: dark)\"\n);\n\n/**\n * React hook that reactively tracks the user's preferred color scheme.\n *\n * @returns \"dark\" | \"light\" based on the OS/browser preference\n */\nexport function usePrefersColorScheme(): \"dark\" | \"light\" {\n const isDark = useSyncExternalStore(\n colorSchemeStore.subscribe,\n colorSchemeStore.getSnapshot,\n colorSchemeStore.getServerSnapshot\n );\n return isDark ? \"dark\" : \"light\";\n}\n\n// ============================================================================\n// HIGH CONTRAST\n// ============================================================================\n\nconst highContrastStore = createMediaQueryStore(\n \"(prefers-contrast: more)\"\n);\n\n/**\n * React hook that reactively tracks the user's high-contrast preference.\n *\n * @returns boolean -- true when the user prefers higher contrast\n */\nexport function usePrefersHighContrast(): boolean {\n return useSyncExternalStore(\n highContrastStore.subscribe,\n highContrastStore.getSnapshot,\n highContrastStore.getServerSnapshot\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { MotionConfig } from \"framer-motion\";\nimport { applyThemeCssVariables, DEFAULT_THEME_ID, getTheme } from \"./registry\";\nimport type { UiTheme, UiThemeContextValue, UiThemeId } from \"./types\";\nimport { usePrefersReducedMotion } from \"../lib/accessibility\";\n\n// ============================================================================\n// CONTEXT\n// ============================================================================\n\nconst UiThemeContext = React.createContext<UiThemeContextValue | null>(null);\n\n// ============================================================================\n// PROVIDER\n// ============================================================================\n\nexport interface UiThemeProviderProps {\n children: React.ReactNode;\n /** Initial theme ID */\n defaultThemeId?: UiThemeId;\n /** Controlled theme ID */\n themeId?: UiThemeId;\n /** Callback when theme changes */\n onThemeChange?: (themeId: UiThemeId) => void;\n /** Storage key for persisting theme preference */\n storageKey?: string;\n /** Disable CSS variable injection (for SSR or custom handling) */\n disableCssVariables?: boolean;\n}\n\nconst STORAGE_KEY = \"oos-ui-theme\";\n\nexport function UiThemeProvider({\n children,\n defaultThemeId = DEFAULT_THEME_ID,\n themeId: controlledThemeId,\n onThemeChange,\n storageKey = STORAGE_KEY,\n disableCssVariables = false,\n}: UiThemeProviderProps) {\n const deprecationWarned = React.useRef(false);\n if (!deprecationWarned.current) {\n deprecationWarned.current = true;\n console.warn(\"[Glia] UiThemeProvider is deprecated. Use GliaThemeProvider instead.\");\n }\n\n const [isHydrating, setIsHydrating] = React.useState(true);\n const [internalThemeId, setInternalThemeId] = React.useState<UiThemeId>(defaultThemeId);\n\n // Determine active theme ID (controlled vs uncontrolled)\n const activeThemeId = controlledThemeId ?? internalThemeId;\n const theme = getTheme(activeThemeId);\n\n // Load persisted theme on mount\n React.useEffect(() => {\n if (controlledThemeId !== undefined) {\n setIsHydrating(false);\n return;\n }\n\n try {\n const stored = localStorage.getItem(storageKey);\n if (stored && (stored === \"nebula\" || stored === \"solarpunk\")) {\n setInternalThemeId(stored as UiThemeId);\n }\n } catch {\n // localStorage not available\n }\n\n setIsHydrating(false);\n }, [controlledThemeId, storageKey]);\n\n // Apply CSS variables when theme changes\n React.useEffect(() => {\n if (disableCssVariables || isHydrating) return;\n\n applyThemeCssVariables(theme);\n\n return () => {\n // Cleanup is handled by the next theme application\n };\n }, [theme, disableCssVariables, isHydrating]);\n\n // Theme setter\n const setThemeId = React.useCallback(\n (id: UiThemeId) => {\n if (controlledThemeId === undefined) {\n setInternalThemeId(id);\n try {\n localStorage.setItem(storageKey, id);\n } catch {\n // localStorage not available\n }\n }\n onThemeChange?.(id);\n },\n [controlledThemeId, onThemeChange, storageKey]\n );\n\n const contextValue = React.useMemo<UiThemeContextValue>(\n () => ({\n theme,\n themeId: activeThemeId,\n setThemeId,\n isHydrating,\n }),\n [theme, activeThemeId, setThemeId, isHydrating]\n );\n\n const reduceMotion = usePrefersReducedMotion();\n\n return (\n <UiThemeContext.Provider value={contextValue}>\n <MotionConfig reducedMotion={reduceMotion ? \"always\" : \"never\"}>\n {children}\n </MotionConfig>\n </UiThemeContext.Provider>\n );\n}\n\n// ============================================================================\n// HOOKS\n// ============================================================================\n\n/**\n * Access the current UI theme context\n */\nexport function useUiTheme(): UiThemeContextValue {\n const context = React.useContext(UiThemeContext);\n\n if (!context) {\n throw new Error(\"useUiTheme must be used within a UiThemeProvider\");\n }\n\n return context;\n}\n\n/**\n * Access just the current theme object (shorthand)\n */\nexport function useThemeTokens(): UiTheme {\n const { theme } = useUiTheme();\n return theme;\n}\n\n/**\n * Access specific token groups\n */\nexport function useGlassTokens() {\n const { theme } = useUiTheme();\n return theme.glass;\n}\n\nexport function useColorTokens() {\n const { theme } = useUiTheme();\n return theme.color;\n}\n\nexport function useMotionTokens() {\n const { theme } = useUiTheme();\n return theme.motion;\n}\n\nexport function useAmbientTokens() {\n const { theme } = useUiTheme();\n return theme.ambient;\n}\n\nexport function useControlTokens() {\n const { theme } = useUiTheme();\n return theme.controls;\n}\n\nexport function useElevationTokens() {\n const { theme } = useUiTheme();\n return theme.elevation;\n}\n\n// ============================================================================\n// UTILITY HOOKS\n// ============================================================================\n\n/**\n * Returns true if the current theme is Solarpunk\n */\nexport function useIsSolarpunk(): boolean {\n const { themeId } = useUiTheme();\n return themeId === \"solarpunk\";\n}\n\n/**\n * Returns true if the current theme is Nebula\n */\nexport function useIsNebula(): boolean {\n const { themeId } = useUiTheme();\n return themeId === \"nebula\";\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n getTheme,\n DEFAULT_THEME_ID,\n applyThemeCssVariables,\n colorToHslComponents,\n} from \"./registry\";\nimport type { UiTheme, UiThemeId } from \"./types\";\n\n// SSR-safe useLayoutEffect\nconst useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\n// ============================================================================\n// GLIA CSS VARIABLE GENERATION\n// ============================================================================\n\n/**\n * Convert a UiTheme motion ease value to a CSS easing string.\n */\nfunction easeToCss(ease: string | number[]): string {\n if (Array.isArray(ease)) {\n return `cubic-bezier(${ease[0]}, ${ease[1]}, ${ease[2]}, ${ease[3]})`;\n }\n const map: Record<string, string> = {\n linear: \"linear\",\n easeIn: \"cubic-bezier(0.4, 0, 1, 1)\",\n easeOut: \"cubic-bezier(0, 0, 0.2, 1)\",\n easeInOut: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n };\n return map[ease] ?? \"cubic-bezier(0.4, 0, 0.2, 1)\";\n}\n\n/**\n * Build all --glia-* CSS variables from a UiTheme.\n * Also produces backward-compatible --theme-* and --bb-* aliases.\n */\nexport function buildGliaCssVariables(theme: UiTheme): Record<string, string> {\n const vars: Record<string, string> = {};\n\n // ---- Colors ----\n vars[\"--glia-color-bg-body\"] = theme.color.bg.body;\n vars[\"--glia-color-bg-panel\"] = theme.color.bg.panel;\n vars[\"--glia-color-bg-elevated\"] = theme.color.bg.elevated;\n vars[\"--glia-color-bg-horizon\"] = theme.color.bg.horizon;\n vars[\"--glia-color-text-primary\"] = theme.color.text.primary;\n vars[\"--glia-color-text-muted\"] = theme.color.text.muted;\n vars[\"--glia-color-text-soft\"] = theme.color.text.soft;\n vars[\"--glia-color-accent\"] = theme.color.accent.primary;\n vars[\"--glia-color-accent-secondary\"] = theme.color.accent.secondary;\n vars[\"--glia-color-accent-positive\"] = theme.color.accent.positive;\n vars[\"--glia-color-accent-warning\"] = theme.color.accent.warning;\n vars[\"--glia-color-accent-destructive\"] = theme.color.accent.destructive;\n vars[\"--glia-color-border\"] = theme.color.border;\n vars[\"--glia-color-ring\"] = theme.color.ring;\n\n // ---- Glass ----\n vars[\"--glia-glass-panel-bg\"] = theme.glass.panelBg;\n vars[\"--glia-glass-panel-border\"] = theme.glass.panelBorder;\n vars[\"--glia-glass-panel-blur\"] = theme.glass.panelBlur;\n vars[\"--glia-glass-header-gradient\"] = theme.glass.headerGradient;\n vars[\"--glia-glass-card-bg\"] = theme.glass.cardBg;\n vars[\"--glia-glass-card-border\"] = theme.glass.cardBorder;\n vars[\"--glia-glass-hover-bg\"] = theme.glass.hoverBg;\n vars[\"--glia-glass-active-border\"] = theme.glass.activeBorder;\n vars[\"--glia-glass-active-shadow\"] = theme.glass.activeShadow;\n\n // ---- Elevation ----\n vars[\"--glia-shadow-soft\"] = theme.elevation.softDrop;\n vars[\"--glia-shadow-hud-panel\"] = theme.elevation.hudPanel;\n vars[\"--glia-shadow-hud-rail\"] = theme.elevation.hudRail;\n vars[\"--glia-shadow-modal\"] = theme.elevation.modal;\n vars[\"--glia-shadow-glow\"] = theme.elevation.glow;\n\n // ---- Ambient ----\n vars[\"--glia-ambient-horizon\"] = theme.ambient.horizonGradient;\n vars[\"--glia-ambient-ripple-primary\"] = theme.ambient.rippleColorPrimary;\n vars[\"--glia-ambient-ripple-secondary\"] = theme.ambient.rippleColorSecondary;\n vars[\"--glia-ambient-glow-intensity\"] = String(theme.ambient.glowIntensity);\n\n // ---- Controls ----\n vars[\"--glia-switch-track-on\"] = theme.controls.switch.track.bg.on;\n vars[\"--glia-switch-track-off\"] = theme.controls.switch.track.bg.off;\n vars[\"--glia-switch-thumb-on\"] = theme.controls.switch.thumb.bg.on;\n vars[\"--glia-switch-thumb-off\"] = theme.controls.switch.thumb.bg.off;\n vars[\"--glia-button-glow-hover-bg\"] = theme.controls.buttonGlow.hoverBg;\n vars[\"--glia-button-glow-hover-text\"] = theme.controls.buttonGlow.hoverText;\n vars[\"--glia-button-glow-hover-shadow\"] = theme.controls.buttonGlow.hoverShadow;\n\n // ---- Fonts ----\n vars[\"--glia-font-display\"] = theme.fonts.display;\n vars[\"--glia-font-body\"] = theme.fonts.body;\n vars[\"--glia-font-mono\"] = theme.fonts.mono;\n\n // ---- Radii ----\n vars[\"--glia-radius-sm\"] = theme.radii.sm;\n vars[\"--glia-radius-md\"] = theme.radii.md;\n vars[\"--glia-radius-lg\"] = theme.radii.lg;\n\n // ---- Spacing ----\n vars[\"--glia-spacing-taskbar-height\"] = theme.spacing.taskbarHeight;\n vars[\"--glia-spacing-titlebar-height\"] = theme.spacing.titlebarHeight;\n vars[\"--glia-spacing-window-padding\"] = theme.spacing.windowPadding;\n vars[\"--glia-spacing-icon-size\"] = theme.spacing.iconSize;\n vars[\"--glia-spacing-icon-gap\"] = theme.spacing.iconGap;\n vars[\"--glia-spacing-window-border-width\"] = theme.spacing.windowBorderWidth;\n\n // ---- Motion / Animation ----\n const fastMs = Math.round(theme.motion.fast.duration * 1000);\n const normalMs = Math.round(theme.motion.normal.duration * 1000);\n const slowMs = Math.round(theme.motion.normal.duration * 1500);\n vars[\"--glia-duration-fast\"] = `${fastMs}ms`;\n vars[\"--glia-duration-normal\"] = `${normalMs}ms`;\n vars[\"--glia-duration-slow\"] = `${slowMs}ms`;\n vars[\"--glia-easing-default\"] = easeToCss(theme.motion.normal.ease);\n vars[\"--glia-easing-spring\"] = \"cubic-bezier(0.34, 1.56, 0.64, 1)\";\n vars[\"--glia-easing-bounce\"] = \"cubic-bezier(0.68, -0.55, 0.265, 1.55)\";\n\n // ---- Blur ----\n vars[\"--glia-blur-backdrop\"] = `blur(${theme.glass.panelBlur})`;\n\n // ---- Tailwind HSL component variables (--glia-tw-*) ----\n const twMap: Record<string, string> = {\n \"background\": theme.color.bg.body,\n \"foreground\": theme.color.text.primary,\n \"card\": theme.color.bg.panel,\n \"card-foreground\": theme.color.text.primary,\n \"popover\": theme.color.bg.elevated,\n \"popover-foreground\": theme.color.text.primary,\n \"primary\": theme.color.accent.primary,\n \"primary-foreground\": theme.color.bg.body,\n \"secondary\": theme.color.accent.secondary,\n \"secondary-foreground\": theme.color.text.primary,\n \"muted\": theme.color.bg.elevated,\n \"muted-foreground\": theme.color.text.muted,\n \"accent\": theme.color.bg.panel,\n \"accent-foreground\": theme.color.accent.primary,\n \"destructive\": theme.color.accent.destructive,\n \"destructive-foreground\": theme.color.text.primary,\n \"border\": theme.color.border,\n \"input\": theme.color.bg.elevated,\n \"ring\": theme.color.ring,\n };\n for (const [name, color] of Object.entries(twMap)) {\n const hsl = colorToHslComponents(color);\n if (hsl) {\n vars[`--glia-tw-${name}`] = hsl;\n }\n }\n\n // Neon accents for Tailwind\n const neonMap: Record<string, string> = {\n \"cyan-neon\": theme.color.accent.primary,\n \"magenta-neon\": theme.color.accent.secondary,\n \"emerald-neon\": theme.color.accent.positive,\n \"yellow-warning\": theme.color.accent.warning,\n };\n const violetFallback =\n theme.id === \"nebula\" ? \"#8B5CF6\" : theme.color.accent.secondary;\n neonMap[\"violet-neon\"] = violetFallback;\n for (const [name, color] of Object.entries(neonMap)) {\n const hsl = colorToHslComponents(color);\n if (hsl) {\n vars[`--glia-tw-${name}`] = hsl;\n }\n }\n\n // ============================================================================\n // BACKWARD-COMPATIBLE ALIASES: --theme-* -> var(--glia-*)\n // ============================================================================\n vars[\"--theme-bg-body\"] = \"var(--glia-color-bg-body)\";\n vars[\"--theme-bg-panel\"] = \"var(--glia-color-bg-panel)\";\n vars[\"--theme-bg-elevated\"] = \"var(--glia-color-bg-elevated)\";\n vars[\"--theme-bg-horizon\"] = \"var(--glia-color-bg-horizon)\";\n vars[\"--theme-text-primary\"] = \"var(--glia-color-text-primary)\";\n vars[\"--theme-text-muted\"] = \"var(--glia-color-text-muted)\";\n vars[\"--theme-text-soft\"] = \"var(--glia-color-text-soft)\";\n vars[\"--theme-accent-primary\"] = \"var(--glia-color-accent)\";\n vars[\"--theme-accent-secondary\"] = \"var(--glia-color-accent-secondary)\";\n vars[\"--theme-accent-positive\"] = \"var(--glia-color-accent-positive)\";\n vars[\"--theme-accent-warning\"] = \"var(--glia-color-accent-warning)\";\n vars[\"--theme-accent-destructive\"] = \"var(--glia-color-accent-destructive)\";\n vars[\"--theme-border\"] = \"var(--glia-color-border)\";\n vars[\"--theme-ring\"] = \"var(--glia-color-ring)\";\n vars[\"--theme-glass-panel-bg\"] = \"var(--glia-glass-panel-bg)\";\n vars[\"--theme-glass-panel-border\"] = \"var(--glia-glass-panel-border)\";\n vars[\"--theme-glass-panel-blur\"] = \"var(--glia-glass-panel-blur)\";\n vars[\"--theme-glass-header-gradient\"] = \"var(--glia-glass-header-gradient)\";\n vars[\"--theme-glass-card-bg\"] = \"var(--glia-glass-card-bg)\";\n vars[\"--theme-glass-card-border\"] = \"var(--glia-glass-card-border)\";\n vars[\"--theme-glass-hover-bg\"] = \"var(--glia-glass-hover-bg)\";\n vars[\"--theme-glass-active-border\"] = \"var(--glia-glass-active-border)\";\n vars[\"--theme-glass-active-shadow\"] = \"var(--glia-glass-active-shadow)\";\n vars[\"--theme-shadow-soft\"] = \"var(--glia-shadow-soft)\";\n vars[\"--theme-shadow-hud-panel\"] = \"var(--glia-shadow-hud-panel)\";\n vars[\"--theme-shadow-hud-rail\"] = \"var(--glia-shadow-hud-rail)\";\n vars[\"--theme-shadow-modal\"] = \"var(--glia-shadow-modal)\";\n vars[\"--theme-shadow-glow\"] = \"var(--glia-shadow-glow)\";\n vars[\"--theme-ambient-horizon\"] = \"var(--glia-ambient-horizon)\";\n vars[\"--theme-ambient-ripple-primary\"] = \"var(--glia-ambient-ripple-primary)\";\n vars[\"--theme-ambient-ripple-secondary\"] = \"var(--glia-ambient-ripple-secondary)\";\n vars[\"--theme-ambient-glow-intensity\"] = \"var(--glia-ambient-glow-intensity)\";\n vars[\"--theme-switch-track-on\"] = \"var(--glia-switch-track-on)\";\n vars[\"--theme-switch-track-off\"] = \"var(--glia-switch-track-off)\";\n vars[\"--theme-switch-thumb-on\"] = \"var(--glia-switch-thumb-on)\";\n vars[\"--theme-switch-thumb-off\"] = \"var(--glia-switch-thumb-off)\";\n vars[\"--theme-button-glow-hover-bg\"] = \"var(--glia-button-glow-hover-bg)\";\n vars[\"--theme-button-glow-hover-text\"] = \"var(--glia-button-glow-hover-text)\";\n vars[\"--theme-button-glow-hover-shadow\"] = \"var(--glia-button-glow-hover-shadow)\";\n\n // ============================================================================\n // BACKWARD-COMPATIBLE ALIASES: --bb-* -> var(--glia-*)\n // ============================================================================\n // Colors\n vars[\"--bb-color-window-bg\"] = \"var(--glia-color-bg-panel)\";\n vars[\"--bb-color-window-border\"] = \"var(--glia-color-border)\";\n vars[\"--bb-color-window-border-focused\"] = \"var(--glia-glass-active-border)\";\n vars[\"--bb-color-titlebar-bg\"] = \"var(--glia-color-bg-panel)\";\n vars[\"--bb-color-titlebar-text\"] = \"var(--glia-color-text-primary)\";\n vars[\"--bb-color-accent\"] = \"var(--glia-color-accent)\";\n vars[\"--bb-color-accent-muted\"] = \"var(--glia-glass-hover-bg)\";\n vars[\"--bb-color-accent-glow\"] = \"var(--glia-glass-active-shadow)\";\n vars[\"--bb-color-taskbar-bg\"] = \"var(--glia-glass-panel-bg)\";\n vars[\"--bb-color-taskbar-text\"] = \"var(--glia-color-text-muted)\";\n vars[\"--bb-color-start-menu-bg\"] = \"var(--glia-color-bg-elevated)\";\n vars[\"--bb-color-context-menu-bg\"] = \"var(--glia-color-bg-elevated)\";\n vars[\"--bb-color-context-menu-hover\"] = \"var(--glia-glass-hover-bg)\";\n vars[\"--bb-color-desktop-bg\"] = \"var(--glia-color-bg-body)\";\n vars[\"--bb-color-icon-text\"] = \"var(--glia-color-text-muted)\";\n vars[\"--bb-color-icon-selected\"] = \"var(--glia-glass-hover-bg)\";\n vars[\"--bb-color-destructive\"] = \"var(--glia-color-accent-destructive)\";\n vars[\"--bb-color-success\"] = \"var(--glia-color-accent-positive)\";\n vars[\"--bb-color-warning\"] = \"var(--glia-color-accent-warning)\";\n vars[\"--bb-color-text-primary\"] = \"var(--glia-color-text-primary)\";\n vars[\"--bb-color-text-secondary\"] = \"var(--glia-color-text-muted)\";\n vars[\"--bb-color-text-muted\"] = \"var(--glia-color-text-soft)\";\n // Fonts\n vars[\"--bb-font-display\"] = \"var(--glia-font-display)\";\n vars[\"--bb-font-body\"] = \"var(--glia-font-body)\";\n vars[\"--bb-font-mono\"] = \"var(--glia-font-mono)\";\n // Radii\n vars[\"--bb-radius-window\"] = \"var(--glia-radius-lg)\";\n vars[\"--bb-radius-button\"] = \"var(--glia-radius-sm)\";\n vars[\"--bb-radius-menu\"] = \"var(--glia-radius-md)\";\n vars[\"--bb-radius-input\"] = \"var(--glia-radius-sm)\";\n // Shadows\n vars[\"--bb-shadow-window\"] = \"var(--glia-shadow-hud-panel)\";\n vars[\"--bb-shadow-window-focused\"] = \"var(--glia-shadow-modal)\";\n vars[\"--bb-shadow-menu\"] = \"var(--glia-shadow-hud-panel)\";\n vars[\"--bb-shadow-tooltip\"] = \"var(--glia-shadow-soft)\";\n // Spacing\n vars[\"--bb-spacing-window-padding\"] = \"var(--glia-spacing-window-padding)\";\n vars[\"--bb-spacing-taskbar-height\"] = \"var(--glia-spacing-taskbar-height)\";\n vars[\"--bb-spacing-icon-size\"] = \"var(--glia-spacing-icon-size)\";\n vars[\"--bb-spacing-icon-gap\"] = \"var(--glia-spacing-icon-gap)\";\n vars[\"--bb-spacing-titlebar-height\"] = \"var(--glia-spacing-titlebar-height)\";\n vars[\"--bb-spacing-window-border-width\"] = \"var(--glia-spacing-window-border-width)\";\n // Animation\n vars[\"--bb-duration-fast\"] = \"var(--glia-duration-fast)\";\n vars[\"--bb-duration-normal\"] = \"var(--glia-duration-normal)\";\n vars[\"--bb-duration-slow\"] = \"var(--glia-duration-slow)\";\n vars[\"--bb-easing-default\"] = \"var(--glia-easing-default)\";\n vars[\"--bb-easing-spring\"] = \"var(--glia-easing-spring)\";\n vars[\"--bb-easing-bounce\"] = \"var(--glia-easing-bounce)\";\n // Blur\n vars[\"--bb-blur-backdrop\"] = \"var(--glia-blur-backdrop)\";\n\n return vars;\n}\n\n/**\n * Apply all --glia-* CSS variables (plus backward-compat aliases) to an element.\n * Also sets Tailwind-compatible variables via the existing registry machinery.\n */\nexport function applyGliaCssVariables(\n theme: UiTheme,\n target: HTMLElement = document.documentElement,\n): void {\n const vars = buildGliaCssVariables(theme);\n for (const [key, value] of Object.entries(vars)) {\n target.style.setProperty(key, value);\n }\n\n // Apply legacy --theme-* and Tailwind vars with real values\n // (applyThemeCssVariables sets --theme-* + bare --background, etc.)\n applyThemeCssVariables(theme, target);\n\n target.dataset.gliaTheme = theme.id;\n}\n\n// ============================================================================\n// CONTEXT\n// ============================================================================\n\nexport interface GliaThemeContextValue {\n theme: UiTheme;\n themeId: UiThemeId;\n setThemeId: (id: UiThemeId) => void;\n}\n\nconst GliaThemeContext = React.createContext<GliaThemeContextValue | null>(null);\n\n// ============================================================================\n// PROVIDER\n// ============================================================================\n\nexport interface GliaThemeProviderProps {\n children: React.ReactNode;\n /** Theme ID (default: 'nebula') */\n themeId?: UiThemeId;\n /** Deep partial overrides merged on top of the resolved theme */\n overrides?: Partial<UiTheme>;\n /** Storage key for persisting theme preference */\n storageKey?: string;\n}\n\nconst STORAGE_KEY = \"glia-theme\";\n\nexport function GliaThemeProvider({\n children,\n themeId: controlledThemeId,\n overrides,\n storageKey = STORAGE_KEY,\n}: GliaThemeProviderProps) {\n const [internalThemeId, setInternalThemeId] = React.useState<UiThemeId>(\n controlledThemeId ?? DEFAULT_THEME_ID,\n );\n\n const activeThemeId = controlledThemeId ?? internalThemeId;\n\n const theme = React.useMemo(() => {\n const base = getTheme(activeThemeId);\n if (!overrides) return base;\n return { ...base, ...overrides } as UiTheme;\n }, [activeThemeId, overrides]);\n\n // Load persisted theme on mount (uncontrolled mode only)\n React.useEffect(() => {\n if (controlledThemeId !== undefined) return;\n try {\n const stored = localStorage.getItem(storageKey);\n if (stored && (stored === \"nebula\" || stored === \"solarpunk\")) {\n setInternalThemeId(stored as UiThemeId);\n }\n } catch {\n // localStorage not available\n }\n }, [controlledThemeId, storageKey]);\n\n // Inject CSS variables\n useIsomorphicLayoutEffect(() => {\n applyGliaCssVariables(theme);\n return () => {\n // Cleanup handled by next theme application\n };\n }, [theme]);\n\n const setThemeId = React.useCallback(\n (id: UiThemeId) => {\n if (controlledThemeId === undefined) {\n setInternalThemeId(id);\n try {\n localStorage.setItem(storageKey, id);\n } catch {\n // localStorage not available\n }\n }\n },\n [controlledThemeId, storageKey],\n );\n\n const contextValue = React.useMemo<GliaThemeContextValue>(\n () => ({ theme, themeId: activeThemeId, setThemeId }),\n [theme, activeThemeId, setThemeId],\n );\n\n return (\n <GliaThemeContext.Provider value={contextValue}>\n {children}\n </GliaThemeContext.Provider>\n );\n}\n\n// ============================================================================\n// HOOKS\n// ============================================================================\n\nexport function useGliaTheme(): GliaThemeContextValue {\n const context = React.useContext(GliaThemeContext);\n if (!context) {\n throw new Error(\"useGliaTheme must be used within a GliaThemeProvider\");\n }\n return context;\n}\n\nexport function useFontTokens() {\n const { theme } = useGliaTheme();\n return theme.fonts;\n}\n\nexport function useRadiiTokens() {\n const { theme } = useGliaTheme();\n return theme.radii;\n}\n\nexport function useSpacingTokens() {\n const { theme } = useGliaTheme();\n return theme.spacing;\n}\n","/**\n * Theme Bridge -- Maps UiTheme tokens to DesktopOSTheme tokens.\n *\n * Allows the desktop OS shell to be styled consistently with the\n * active UiTheme, creating a unified visual experience.\n *\n * @example\n * ```tsx\n * import { nebulaTheme } from '@backbay/glia/theme';\n * import { desktopThemeFromUiTheme } from '@backbay/glia/theme';\n *\n * const desktopTheme = desktopThemeFromUiTheme(nebulaTheme);\n * // Use with <DesktopOSProvider theme={desktopTheme}>\n * ```\n */\n\nimport type { UiTheme } from './types';\nimport type { DesktopOSTheme } from '../desktop/themes/types';\n\n/**\n * Options for customizing the bridge mapping.\n */\nexport interface ThemeBridgeOptions {\n /** Override specific DesktopOSTheme values after mapping */\n overrides?: Partial<{\n colors: Partial<DesktopOSTheme['colors']>;\n fonts: Partial<DesktopOSTheme['fonts']>;\n radii: Partial<DesktopOSTheme['radii']>;\n shadows: Partial<DesktopOSTheme['shadows']>;\n spacing: Partial<DesktopOSTheme['spacing']>;\n }>;\n /** Custom font families (UiTheme doesn't include font tokens) */\n fonts?: {\n display?: string;\n body?: string;\n mono?: string;\n };\n}\n\n/**\n * Named easing presets used by framer-motion / UiTheme motion tokens.\n * Maps to CSS cubic-bezier equivalents.\n */\nconst EASING_MAP: Record<string, string> = {\n linear: 'linear',\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n easeOut: 'cubic-bezier(0, 0, 0.2, 1)',\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n};\n\n/**\n * Convert a UiTheme motion ease value to a CSS easing string.\n *\n * Handles both named easings (e.g. \"easeOut\") and numeric arrays\n * (e.g. [0.4, 0, 0.2, 1]).\n */\nfunction easeToCss(ease: string | number[]): string {\n if (Array.isArray(ease)) {\n return `cubic-bezier(${ease[0]}, ${ease[1]}, ${ease[2]}, ${ease[3]})`;\n }\n return EASING_MAP[ease] ?? 'cubic-bezier(0.4, 0, 0.2, 1)';\n}\n\n/**\n * Extract an rgba color from a CSS box-shadow string.\n *\n * Looks for `rgba(...)` or `rgb(...)` patterns and returns the first match.\n * Falls back to the provided fallback color if no match is found.\n */\nfunction extractColorFromShadow(shadow: string, fallback: string): string {\n const rgbaMatch = shadow.match(/rgba?\\([^)]+\\)/);\n return rgbaMatch ? rgbaMatch[0] : fallback;\n}\n\n/**\n * Nudge the alpha channel of an rgba color string by a delta.\n *\n * If the input isn't a valid rgba() string, returns it unchanged.\n */\nfunction nudgeAlpha(color: string, delta: number): string {\n const match = color.match(\n /^rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)$/,\n );\n if (!match) return color;\n const [, r, g, b, a] = match;\n const newAlpha = Math.min(1, Math.max(0, parseFloat(a) + delta));\n return `rgba(${r}, ${g}, ${b}, ${newAlpha})`;\n}\n\n/**\n * Derive a complete DesktopOSTheme from a UiTheme.\n *\n * This is the core bridge function. It is pure (no side effects, no DOM\n * access) and produces a full DesktopOSTheme ready for use with the\n * desktop shell's ThemeProvider.\n */\nexport function desktopThemeFromUiTheme(\n uiTheme: UiTheme,\n options: ThemeBridgeOptions = {},\n): DesktopOSTheme {\n const { overrides, fonts: fontOverrides } = options;\n\n // --- Colors ---\n const colors: DesktopOSTheme['colors'] = {\n windowBg: uiTheme.color.bg.panel,\n windowBorder: uiTheme.color.border,\n windowBorderFocused: uiTheme.glass.activeBorder,\n titlebarBg: nudgeAlpha(uiTheme.color.bg.panel, 0.02),\n titlebarText: uiTheme.color.text.primary,\n accent: uiTheme.color.accent.primary,\n accentMuted: uiTheme.glass.hoverBg,\n accentGlow: extractColorFromShadow(\n uiTheme.glass.activeShadow,\n uiTheme.color.accent.primary,\n ),\n taskbarBg: uiTheme.glass.panelBg,\n taskbarText: uiTheme.color.text.muted,\n startMenuBg: uiTheme.color.bg.elevated,\n contextMenuBg: uiTheme.color.bg.elevated,\n contextMenuHover: uiTheme.glass.hoverBg,\n desktopBg: uiTheme.color.bg.body,\n iconText: uiTheme.color.text.muted,\n iconSelected: uiTheme.glass.hoverBg,\n destructive: uiTheme.color.accent.destructive,\n success: uiTheme.color.accent.positive,\n warning: uiTheme.color.accent.warning,\n textPrimary: uiTheme.color.text.primary,\n textSecondary: uiTheme.color.text.muted,\n textMuted: uiTheme.color.text.soft,\n ...overrides?.colors,\n };\n\n // --- Fonts ---\n const fonts: DesktopOSTheme['fonts'] = {\n display: fontOverrides?.display ?? uiTheme.fonts.display,\n body: fontOverrides?.body ?? uiTheme.fonts.body,\n mono: fontOverrides?.mono ?? uiTheme.fonts.mono,\n ...overrides?.fonts,\n };\n\n // --- Radii ---\n const radii: DesktopOSTheme['radii'] = {\n window: uiTheme.radii.lg,\n button: uiTheme.radii.sm,\n menu: uiTheme.radii.md,\n input: uiTheme.radii.sm,\n ...overrides?.radii,\n };\n\n // --- Shadows ---\n const shadows: DesktopOSTheme['shadows'] = {\n window: uiTheme.elevation.hudPanel,\n windowFocused: uiTheme.elevation.modal,\n menu: uiTheme.elevation.hudPanel,\n tooltip: uiTheme.elevation.softDrop,\n ...overrides?.shadows,\n };\n\n // --- Spacing ---\n const spacing: DesktopOSTheme['spacing'] = {\n windowPadding: uiTheme.spacing.windowPadding,\n taskbarHeight: uiTheme.spacing.taskbarHeight,\n iconSize: uiTheme.spacing.iconSize,\n iconGap: uiTheme.spacing.iconGap,\n titlebarHeight: uiTheme.spacing.titlebarHeight,\n windowBorderWidth: uiTheme.spacing.windowBorderWidth,\n ...overrides?.spacing,\n };\n\n // --- Animation ---\n const fastMs = Math.round(uiTheme.motion.fast.duration * 1000);\n const normalMs = Math.round(uiTheme.motion.normal.duration * 1000);\n const slowMs = Math.round(uiTheme.motion.normal.duration * 1500);\n\n const animation: DesktopOSTheme['animation'] = {\n duration: {\n fast: `${fastMs}ms`,\n normal: `${normalMs}ms`,\n slow: `${slowMs}ms`,\n },\n easing: {\n default: easeToCss(uiTheme.motion.normal.ease),\n spring: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n bounce: 'cubic-bezier(0.68, -0.55, 0.265, 1.55)',\n },\n };\n\n // --- Blur ---\n const blur: DesktopOSTheme['blur'] = {\n backdrop: `blur(${uiTheme.glass.panelBlur})`,\n };\n\n return {\n id: `bridged-${uiTheme.id}`,\n name: `${uiTheme.name} (Bridged)`,\n colors,\n fonts,\n radii,\n shadows,\n spacing,\n animation,\n blur,\n };\n}\n","/**\n * Glass Materials -- Predefined glassmorphism material combinations.\n *\n * Materials define the visual \"substance\" of glass surfaces:\n * backdrop-filter settings, background opacity overrides,\n * border treatment, and noise overlay configuration.\n *\n * @example\n * ```tsx\n * <GlassPanel material=\"frosted\">\n * Content behind frosted glass\n * </GlassPanel>\n * ```\n */\n\nimport type { NoisePreset } from \"../lib/noise\";\n\nexport interface GlassMaterial {\n /** Material identifier */\n id: string;\n /** Human-readable name */\n name: string;\n /** Backdrop filter value (blur + optional saturate/brightness) */\n backdropFilter: string;\n /** Background opacity multiplier (0-1, applied to panelBg alpha) */\n bgOpacity: number;\n /** Border opacity multiplier (0-1, applied to panelBorder alpha) */\n borderOpacity: number;\n /** Whether to show noise overlay */\n showNoise: boolean;\n /** Noise preset to use (if showNoise is true) */\n noisePreset: NoisePreset;\n /** Noise opacity override */\n noiseOpacity: number;\n /** Additional saturate filter (percentage). 100 = normal. */\n saturate: number;\n /** Additional brightness filter (percentage). 100 = normal. */\n brightness: number;\n}\n\n/**\n * Predefined glass materials.\n */\nexport const GLASS_MATERIALS: Record<string, GlassMaterial> = {\n /**\n * Standard frosted glass -- the default material.\n * Medium blur, full opacity, subtle noise grain.\n */\n frosted: {\n id: \"frosted\",\n name: \"Frosted Glass\",\n backdropFilter: \"blur(24px)\",\n bgOpacity: 1.0,\n borderOpacity: 1.0,\n showNoise: true,\n noisePreset: \"glass\",\n noiseOpacity: 0.03,\n saturate: 180,\n brightness: 110,\n },\n\n /**\n * Thin/clear glass -- minimal blur, very transparent.\n * For subtle layering where content behind should remain visible.\n */\n thin: {\n id: \"thin\",\n name: \"Thin Glass\",\n backdropFilter: \"blur(8px)\",\n bgOpacity: 0.4,\n borderOpacity: 0.6,\n showNoise: false,\n noisePreset: \"fine\",\n noiseOpacity: 0.02,\n saturate: 120,\n brightness: 105,\n },\n\n /**\n * Thick/dense glass -- heavy blur, opaque, strong borders.\n * For modals, dialogs, and high-contrast surfaces.\n */\n thick: {\n id: \"thick\",\n name: \"Thick Glass\",\n backdropFilter: \"blur(40px)\",\n bgOpacity: 1.2,\n borderOpacity: 1.5,\n showNoise: true,\n noisePreset: \"card\",\n noiseOpacity: 0.05,\n saturate: 200,\n brightness: 100,\n },\n\n /**\n * Clear glass -- no blur, just tinted transparency.\n * For overlays that should be visible but not obscured.\n */\n clear: {\n id: \"clear\",\n name: \"Clear Glass\",\n backdropFilter: \"blur(0px)\",\n bgOpacity: 0.3,\n borderOpacity: 0.4,\n showNoise: false,\n noisePreset: \"glass\",\n noiseOpacity: 0,\n saturate: 100,\n brightness: 100,\n },\n\n /**\n * Holographic glass -- saturated, vibrant, with heavy noise.\n * For decorative/accent panels with a sci-fi feel.\n */\n holographic: {\n id: \"holographic\",\n name: \"Holographic Glass\",\n backdropFilter: \"blur(20px)\",\n bgOpacity: 0.8,\n borderOpacity: 1.0,\n showNoise: true,\n noisePreset: \"heavy\",\n noiseOpacity: 0.08,\n saturate: 250,\n brightness: 120,\n },\n};\n\nexport type GlassMaterialId = keyof typeof GLASS_MATERIALS;\n\n/**\n * Get a glass material by ID, with fallback to 'frosted'.\n */\nexport function getGlassMaterial(id: GlassMaterialId | string): GlassMaterial {\n return GLASS_MATERIALS[id] ?? GLASS_MATERIALS.frosted;\n}\n\n/**\n * Build the complete backdrop-filter CSS value for a material.\n * Combines blur with saturate and brightness.\n */\nexport function buildBackdropFilter(material: GlassMaterial): string {\n const parts = [material.backdropFilter];\n if (material.saturate !== 100) {\n parts.push(`saturate(${material.saturate}%)`);\n }\n if (material.brightness !== 100) {\n parts.push(`brightness(${material.brightness}%)`);\n }\n return parts.join(\" \");\n}\n\n/**\n * Compute the \"reduced transparency\" fallback for a material.\n * When the user prefers reduced transparency, we replace\n * backdrop-filter with a solid background and remove noise.\n */\nexport function getReducedTransparencyStyles(material: GlassMaterial): {\n backdropFilter: string;\n bgOpacity: number;\n showNoise: boolean;\n} {\n return {\n backdropFilter: \"none\",\n bgOpacity: Math.min(material.bgOpacity * 2.5, 1.0),\n showNoise: false,\n };\n}\n"]}
@@ -1,4 +1,372 @@
1
- export { CanvasCaptureAdapter, RaymondVisionAdapter, useVisionCaptureController } from '../chunk-SAGCG5SH.js';
2
- import '../chunk-TM6AOUSD.js';
1
+ import * as raymond_star from '@backbay/raymond';
2
+ import { PhongTracingModel, fromObjectTransform, newVector, PointLight, defaultMaterial, Quad, Circle, Eye } from '@backbay/raymond';
3
+ import * as React from 'react';
4
+
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget);
22
+
23
+ // src/vision/index.ts
24
+ var vision_exports = {};
25
+ __export(vision_exports, {
26
+ CanvasCaptureAdapter: () => CanvasCaptureAdapter,
27
+ RaymondVisionAdapter: () => RaymondVisionAdapter,
28
+ useVisionCaptureController: () => useVisionCaptureController
29
+ });
30
+
31
+ // src/vision/adapters/canvasCapture.ts
32
+ var CanvasCaptureAdapter = class {
33
+ id;
34
+ label;
35
+ getCanvas;
36
+ topologyProvider;
37
+ channelId;
38
+ format;
39
+ quality;
40
+ constructor(options) {
41
+ this.id = options.id ?? "canvas-capture";
42
+ this.label = options.label;
43
+ this.getCanvas = options.getCanvas;
44
+ this.topologyProvider = options.getTopology;
45
+ this.channelId = options.channelId ?? "color";
46
+ this.format = options.format ?? "image/png";
47
+ this.quality = options.quality;
48
+ }
49
+ getTopology() {
50
+ return this.topologyProvider?.() ?? null;
51
+ }
52
+ async capture(options) {
53
+ const canvas = this.getCanvas();
54
+ const capturedAt = Date.now();
55
+ if (!canvas) {
56
+ return {
57
+ source: this.id,
58
+ capturedAt,
59
+ channels: [],
60
+ topology: options?.includeTopology ? this.topologyProvider?.() ?? void 0 : void 0,
61
+ meta: { error: "canvas_unavailable" }
62
+ };
63
+ }
64
+ const targetSize = options?.size ?? { width: canvas.width, height: canvas.height };
65
+ const outputCanvas = targetSize.width === canvas.width && targetSize.height === canvas.height ? canvas : this.scaleCanvas(canvas, targetSize.width, targetSize.height);
66
+ const dataUrl = outputCanvas.toDataURL(this.format, this.quality);
67
+ const channel = {
68
+ id: this.channelId,
69
+ kind: "color",
70
+ data: dataUrl,
71
+ width: targetSize.width,
72
+ height: targetSize.height,
73
+ meta: { format: this.format }
74
+ };
75
+ return {
76
+ source: this.id,
77
+ capturedAt,
78
+ size: targetSize,
79
+ channels: [channel],
80
+ topology: options?.includeTopology ? this.topologyProvider?.() ?? void 0 : void 0
81
+ };
82
+ }
83
+ scaleCanvas(source, width, height) {
84
+ const scaled = document.createElement("canvas");
85
+ scaled.width = width;
86
+ scaled.height = height;
87
+ const ctx = scaled.getContext("2d");
88
+ if (ctx) {
89
+ ctx.drawImage(source, 0, 0, width, height);
90
+ }
91
+ return scaled;
92
+ }
93
+ };
94
+ var RaymondVisionAdapter = class {
95
+ id;
96
+ label;
97
+ topologyProvider;
98
+ sceneProvider;
99
+ eyeOptions;
100
+ lights;
101
+ axis;
102
+ scale;
103
+ includeSegments;
104
+ includeShadowRays;
105
+ lightingModel;
106
+ lightingParams;
107
+ nodeMaterial;
108
+ nodeShape;
109
+ constructor(options = {}) {
110
+ this.id = options.id ?? "raymond-vision";
111
+ this.label = options.label;
112
+ this.topologyProvider = options.topologyProvider;
113
+ this.sceneProvider = options.sceneProvider;
114
+ this.eyeOptions = options.eye ?? {};
115
+ this.lights = options.lights ?? [{ position: [-4, 2], color: "#ffffff" }];
116
+ this.axis = options.axis ?? "xz";
117
+ this.scale = options.scale ?? 1;
118
+ this.includeSegments = options.includeSegments ?? false;
119
+ this.includeShadowRays = options.includeShadowRays ?? false;
120
+ this.lightingModel = options.lightingModel;
121
+ this.lightingParams = options.lightingParams;
122
+ this.nodeMaterial = options.nodeMaterial;
123
+ this.nodeShape = options.nodeShape;
124
+ }
125
+ getTopology() {
126
+ return this.topologyProvider?.() ?? null;
127
+ }
128
+ async capture(options) {
129
+ const capturedAt = Date.now();
130
+ const topology = this.topologyProvider?.() ?? void 0;
131
+ const scene = this.sceneProvider?.() ?? this.buildSceneFromTopology(topology, options);
132
+ if (!scene) {
133
+ return {
134
+ source: this.id,
135
+ capturedAt,
136
+ channels: [],
137
+ topology: options?.includeTopology ? topology : void 0,
138
+ meta: { error: "scene_unavailable" }
139
+ };
140
+ }
141
+ const result = scene.lightingModel.computeSegments(
142
+ scene.eye,
143
+ scene.shapes,
144
+ scene.lights,
145
+ scene.lightingParams
146
+ );
147
+ const visionChannel = {
148
+ id: "raymond:vision",
149
+ kind: "raymond/vision",
150
+ data: result.vision,
151
+ width: result.vision.length,
152
+ height: 1
153
+ };
154
+ const channels = [visionChannel];
155
+ if (this.includeSegments) {
156
+ channels.push({
157
+ id: "raymond:segments",
158
+ kind: "raymond/segments",
159
+ data: result.segments
160
+ });
161
+ }
162
+ if (this.includeShadowRays) {
163
+ channels.push({
164
+ id: "raymond:shadow-rays",
165
+ kind: "raymond/shadow-rays",
166
+ data: result.shadowRays
167
+ });
168
+ }
169
+ return {
170
+ source: this.id,
171
+ capturedAt,
172
+ size: { width: result.vision.length, height: 1 },
173
+ channels,
174
+ topology: options?.includeTopology ? topology : void 0,
175
+ meta: {
176
+ lightingModel: scene.lightingModel.id
177
+ }
178
+ };
179
+ }
180
+ buildSceneFromTopology(topology, options) {
181
+ const model = this.lightingModel ?? new PhongTracingModel();
182
+ const lightingParams = this.lightingParams ?? defaultLightingParams(model);
183
+ const nodes = topology?.nodes ?? [];
184
+ const shapes = nodes.map((node) => this.mapNodeToShape(node)).filter((shape) => Boolean(shape));
185
+ const lights = this.lights.map((light) => {
186
+ const transform = fromObjectTransform({
187
+ translation: newVector(light.position[0], light.position[1]),
188
+ rotation: 0,
189
+ scale: newVector(1, 1)
190
+ });
191
+ return new PointLight(hexToColor(light.color ?? "#ffffff"), transform);
192
+ });
193
+ const eye = buildEye(nodes, this.eyeOptions, this.axis, options);
194
+ return {
195
+ eye,
196
+ shapes,
197
+ lights,
198
+ lightingModel: model,
199
+ lightingParams
200
+ };
201
+ }
202
+ mapNodeToShape(node) {
203
+ if (!node.position) return null;
204
+ const [x, y] = projectPosition(node.position, this.axis);
205
+ const scale = this.nodeScale(node) * this.scale;
206
+ const transform = fromObjectTransform({
207
+ translation: newVector(x, y),
208
+ rotation: 0,
209
+ scale: newVector(scale, scale)
210
+ });
211
+ const baseMaterial = defaultMaterial();
212
+ const material = this.nodeMaterial ? this.nodeMaterial(node, baseMaterial) : { ...baseMaterial, color: hexToColor(node.color ?? "#66cc66") };
213
+ const shape = this.nodeShape?.(node) ?? inferShape(node);
214
+ return shape === "quad" ? new Quad(transform, material) : new Circle(transform, material);
215
+ }
216
+ nodeScale(node) {
217
+ if (node.radius) return Math.max(node.radius, 0.05);
218
+ if (node.bounds) {
219
+ const dx = Math.abs(node.bounds.max[0] - node.bounds.min[0]);
220
+ const dy = Math.abs(node.bounds.max[1] - node.bounds.min[1]);
221
+ const dz = Math.abs(node.bounds.max[2] - node.bounds.min[2]);
222
+ return Math.max(dx, dy, dz) / 2;
223
+ }
224
+ return 0.5;
225
+ }
226
+ };
227
+ function defaultLightingParams(model) {
228
+ const params = {};
229
+ for (const param of model.parameters) {
230
+ params[param.id] = param.default;
231
+ }
232
+ return params;
233
+ }
234
+ function buildEye(nodes, options, axis, captureOptions) {
235
+ const bounds = computeBounds(nodes, axis);
236
+ const position = options.position ?? [bounds.minX - 4, bounds.centerY];
237
+ const rotation = options.rotation ?? 0;
238
+ const transform = fromObjectTransform({
239
+ translation: newVector(position[0], position[1]),
240
+ rotation,
241
+ scale: newVector(1, 1)
242
+ });
243
+ const eye = new Eye(transform);
244
+ eye.fov = options.fov ?? Math.PI / 3;
245
+ const targetRays = options.rays ?? captureOptions?.size?.width ?? 120;
246
+ eye.numRays = Math.max(1, Math.min(240, Math.round(targetRays)));
247
+ return eye;
248
+ }
249
+ function inferShape(node) {
250
+ const explicit = node.meta?.shape;
251
+ if (explicit === "quad" || explicit === "circle") return explicit;
252
+ return node.type === "node" ? "quad" : "circle";
253
+ }
254
+ function projectPosition(position, axis) {
255
+ const [x, y, z] = position;
256
+ switch (axis) {
257
+ case "xz":
258
+ return [x, z];
259
+ case "yz":
260
+ return [y, z];
261
+ case "xy":
262
+ default:
263
+ return [x, y];
264
+ }
265
+ }
266
+ function computeBounds(nodes, axis) {
267
+ const initial = {
268
+ minX: 0,
269
+ maxX: 0,
270
+ minY: 0,
271
+ maxY: 0,
272
+ centerY: 0
273
+ };
274
+ if (nodes.length === 0) return initial;
275
+ let minX = Infinity;
276
+ let maxX = -Infinity;
277
+ let minY = Infinity;
278
+ let maxY = -Infinity;
279
+ nodes.forEach((node) => {
280
+ if (!node.position) return;
281
+ const [x, y] = projectPosition(node.position, axis);
282
+ minX = Math.min(minX, x);
283
+ maxX = Math.max(maxX, x);
284
+ minY = Math.min(minY, y);
285
+ maxY = Math.max(maxY, y);
286
+ });
287
+ if (!Number.isFinite(minX)) {
288
+ return initial;
289
+ }
290
+ return {
291
+ minX,
292
+ maxX,
293
+ minY,
294
+ maxY,
295
+ centerY: (minY + maxY) / 2
296
+ };
297
+ }
298
+ function hexToColor(input) {
299
+ const hex = input.replace("#", "");
300
+ if (hex.length !== 6) {
301
+ return { r: 1, g: 1, b: 1 };
302
+ }
303
+ const r = Number.parseInt(hex.slice(0, 2), 16) / 255;
304
+ const g = Number.parseInt(hex.slice(2, 4), 16) / 255;
305
+ const b = Number.parseInt(hex.slice(4, 6), 16) / 255;
306
+ return { r, g, b };
307
+ }
308
+ function useVisionCaptureController(options) {
309
+ const {
310
+ capture,
311
+ ready = true,
312
+ topology,
313
+ initialMode = "manual",
314
+ initialIntervalMs = 2e3,
315
+ minIntervalMs = 500
316
+ } = options;
317
+ const [mode, setMode] = React.useState(initialMode);
318
+ const [intervalMs, setIntervalMs] = React.useState(initialIntervalMs);
319
+ const [busy, setBusy] = React.useState(false);
320
+ const busyRef = React.useRef(false);
321
+ const lastCaptureRef = React.useRef(0);
322
+ const captureNow = React.useCallback(async () => {
323
+ if (!ready || busyRef.current) return;
324
+ busyRef.current = true;
325
+ setBusy(true);
326
+ try {
327
+ await capture();
328
+ } finally {
329
+ setBusy(false);
330
+ busyRef.current = false;
331
+ }
332
+ }, [capture, ready]);
333
+ const requestCapture = React.useCallback(() => {
334
+ if (!ready || busyRef.current) return;
335
+ const now = Date.now();
336
+ if (now - lastCaptureRef.current < minIntervalMs) return;
337
+ lastCaptureRef.current = now;
338
+ void captureNow();
339
+ }, [ready, captureNow, minIntervalMs]);
340
+ React.useEffect(() => {
341
+ if (!ready || mode !== "interval") return;
342
+ const intervalId = window.setInterval(() => {
343
+ requestCapture();
344
+ }, Math.max(minIntervalMs, intervalMs));
345
+ return () => window.clearInterval(intervalId);
346
+ }, [mode, intervalMs, ready, requestCapture, minIntervalMs]);
347
+ React.useEffect(() => {
348
+ if (!ready || mode !== "topology") return;
349
+ if (!topology) return;
350
+ requestCapture();
351
+ }, [mode, topology, ready, requestCapture]);
352
+ return {
353
+ mode,
354
+ setMode,
355
+ intervalMs,
356
+ setIntervalMs,
357
+ busy,
358
+ captureNow,
359
+ requestCapture
360
+ };
361
+ }
362
+
363
+ // src/vision/raymond/index.ts
364
+ var raymond_exports = {};
365
+ __reExport(raymond_exports, raymond_star);
366
+
367
+ // src/vision/index.ts
368
+ __reExport(vision_exports, raymond_exports);
369
+
370
+ export { CanvasCaptureAdapter, RaymondVisionAdapter, useVisionCaptureController };
3
371
  //# sourceMappingURL=index.js.map
4
372
  //# sourceMappingURL=index.js.map