@zendir/ui 0.4.1 → 0.6.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 (391) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/README.md +640 -631
  3. package/dist/_virtual/_rolldown/runtime.js +13 -0
  4. package/dist/index.js +17 -221
  5. package/dist/react/3d/CesiumCaptureSource.d.ts +0 -1
  6. package/dist/react/3d/CesiumCaptureSource.js +364 -283
  7. package/dist/react/3d/CesiumCaptureSource.js.map +1 -1
  8. package/dist/react/3d/ZenSpace3D.d.ts +2 -3
  9. package/dist/react/3d/ZenSpace3D.js +1681 -1237
  10. package/dist/react/3d/ZenSpace3D.js.map +1 -1
  11. package/dist/react/3d/ZenSpace3DCesium.d.ts +0 -1
  12. package/dist/react/3d/ZenSpace3DCesium.js +513 -560
  13. package/dist/react/3d/ZenSpace3DCesium.js.map +1 -1
  14. package/dist/react/3d/ZenSpace3DShaders.js +61 -66
  15. package/dist/react/3d/ZenSpace3DShaders.js.map +1 -1
  16. package/dist/react/3d/ZenSpace3DTypes.d.ts +19 -20
  17. package/dist/react/3d/ZenSpace3DUtils.d.ts +0 -1
  18. package/dist/react/3d/ZenSpace3DUtils.js +37 -24
  19. package/dist/react/3d/ZenSpace3DUtils.js.map +1 -1
  20. package/dist/react/3d/capturePngAnalysis.js +42 -36
  21. package/dist/react/3d/capturePngAnalysis.js.map +1 -1
  22. package/dist/react/3d/index.d.ts +3 -3
  23. package/dist/react/3d/index.js +5 -53
  24. package/dist/react/3d/threeLoader.d.ts +1 -1
  25. package/dist/react/3d/threeLoader.js +23 -18
  26. package/dist/react/3d/threeLoader.js.map +1 -1
  27. package/dist/react/astro/ClassificationBanner.d.ts +2 -3
  28. package/dist/react/astro/ClassificationBanner.js +95 -79
  29. package/dist/react/astro/ClassificationBanner.js.map +1 -1
  30. package/dist/react/astro/GlobalStatusBar.d.ts +0 -1
  31. package/dist/react/astro/GlobalStatusBar.js +157 -163
  32. package/dist/react/astro/GlobalStatusBar.js.map +1 -1
  33. package/dist/react/astro/MissionClock.d.ts +7 -8
  34. package/dist/react/astro/MissionClock.js +377 -400
  35. package/dist/react/astro/MissionClock.js.map +1 -1
  36. package/dist/react/astro/MonitoringIcon.d.ts +1 -2
  37. package/dist/react/astro/MonitoringIcon.js +422 -358
  38. package/dist/react/astro/MonitoringIcon.js.map +1 -1
  39. package/dist/react/astro/Notification.d.ts +1 -2
  40. package/dist/react/astro/Notification.js +229 -126
  41. package/dist/react/astro/Notification.js.map +1 -1
  42. package/dist/react/astro/Progress.d.ts +0 -1
  43. package/dist/react/astro/Progress.js +199 -141
  44. package/dist/react/astro/Progress.js.map +1 -1
  45. package/dist/react/astro/SimulationControls.d.ts +3 -4
  46. package/dist/react/astro/SimulationControls.js +596 -650
  47. package/dist/react/astro/SimulationControls.js.map +1 -1
  48. package/dist/react/astro/StatusIndicator.d.ts +0 -1
  49. package/dist/react/astro/StatusIndicator.js +236 -170
  50. package/dist/react/astro/StatusIndicator.js.map +1 -1
  51. package/dist/react/astro/UnifiedTimeline.d.ts +9 -10
  52. package/dist/react/astro/UnifiedTimeline.js +2345 -2392
  53. package/dist/react/astro/UnifiedTimeline.js.map +1 -1
  54. package/dist/react/astro/index.d.ts +5 -5
  55. package/dist/react/astro/index.js +1 -25
  56. package/dist/react/cards/AccessCard.d.ts +0 -1
  57. package/dist/react/cards/AccessCard.js +471 -405
  58. package/dist/react/cards/AccessCard.js.map +1 -1
  59. package/dist/react/cards/OrbitCard.d.ts +0 -1
  60. package/dist/react/cards/OrbitCard.js +487 -364
  61. package/dist/react/cards/OrbitCard.js.map +1 -1
  62. package/dist/react/cards/SpacecraftCard.d.ts +0 -1
  63. package/dist/react/cards/SpacecraftCard.js +813 -925
  64. package/dist/react/cards/SpacecraftCard.js.map +1 -1
  65. package/dist/react/cards/TelemetryCard.d.ts +0 -1
  66. package/dist/react/cards/TelemetryCard.js +1055 -732
  67. package/dist/react/cards/TelemetryCard.js.map +1 -1
  68. package/dist/react/cards/TelemetryStreamCard.d.ts +0 -1
  69. package/dist/react/cards/TelemetryStreamCard.js +323 -297
  70. package/dist/react/cards/TelemetryStreamCard.js.map +1 -1
  71. package/dist/react/cards/index.d.ts +1 -1
  72. package/dist/react/cards/index.js +1 -8
  73. package/dist/react/charts/GroundTrackMap.d.ts +6 -7
  74. package/dist/react/charts/GroundTrackMap.js +1377 -1256
  75. package/dist/react/charts/GroundTrackMap.js.map +1 -1
  76. package/dist/react/charts/GroundTrackMapLeaflet.d.ts +1 -2
  77. package/dist/react/charts/GroundTrackMapLeaflet.js +1065 -987
  78. package/dist/react/charts/GroundTrackMapLeaflet.js.map +1 -1
  79. package/dist/react/charts/groundTrackMapLeafletTiles.js +34 -25
  80. package/dist/react/charts/groundTrackMapLeafletTiles.js.map +1 -1
  81. package/dist/react/charts/groundTrackMapLeafletUtils.js +70 -61
  82. package/dist/react/charts/groundTrackMapLeafletUtils.js.map +1 -1
  83. package/dist/react/charts/index.d.ts +1 -1
  84. package/dist/react/charts/index.js +7 -100
  85. package/dist/react/charts/unified/AstroChart.d.ts +1 -2
  86. package/dist/react/charts/unified/AstroChart.js +1331 -1411
  87. package/dist/react/charts/unified/AstroChart.js.map +1 -1
  88. package/dist/react/charts/unified/PowerOverviewChart.d.ts +3 -3
  89. package/dist/react/charts/unified/PowerOverviewChart.js +495 -478
  90. package/dist/react/charts/unified/PowerOverviewChart.js.map +1 -1
  91. package/dist/react/charts/unified/domain.d.ts +12 -13
  92. package/dist/react/charts/unified/domain.js +3999 -3145
  93. package/dist/react/charts/unified/domain.js.map +1 -1
  94. package/dist/react/charts/unified/generators.d.ts +3 -4
  95. package/dist/react/charts/unified/generators.js +561 -498
  96. package/dist/react/charts/unified/generators.js.map +1 -1
  97. package/dist/react/charts/unified/index.d.ts +1 -1
  98. package/dist/react/charts/unified/presets.d.ts +14 -15
  99. package/dist/react/charts/unified/presets.js +857 -994
  100. package/dist/react/charts/unified/presets.js.map +1 -1
  101. package/dist/react/charts/unified/sync.d.ts +2 -3
  102. package/dist/react/charts/unified/sync.js +229 -195
  103. package/dist/react/charts/unified/sync.js.map +1 -1
  104. package/dist/react/charts/unified/theme.d.ts +11 -12
  105. package/dist/react/charts/unified/theme.js +606 -642
  106. package/dist/react/charts/unified/theme.js.map +1 -1
  107. package/dist/react/charts/unified/types.d.ts +32 -33
  108. package/dist/react/charts/unified/useChartStream.d.ts +1 -2
  109. package/dist/react/charts/unified/useChartStream.js +203 -216
  110. package/dist/react/charts/unified/useChartStream.js.map +1 -1
  111. package/dist/react/chatgpt/AppCard.d.ts +1 -2
  112. package/dist/react/chatgpt/index.d.ts +7 -7
  113. package/dist/react/chatgpt/index.js +160 -139
  114. package/dist/react/chatgpt/index.js.map +1 -1
  115. package/dist/react/context/CategoryContext.d.ts +0 -1
  116. package/dist/react/context/CategoryContext.js +78 -29
  117. package/dist/react/context/CategoryContext.js.map +1 -1
  118. package/dist/react/context/DisplaySettingsContext.d.ts +1 -2
  119. package/dist/react/context/DisplaySettingsContext.js +205 -156
  120. package/dist/react/context/DisplaySettingsContext.js.map +1 -1
  121. package/dist/react/context/SpatialSelectionContext.d.ts +0 -1
  122. package/dist/react/context/SpatialSelectionContext.js +36 -7
  123. package/dist/react/context/SpatialSelectionContext.js.map +1 -1
  124. package/dist/react/core/data/DataTable.d.ts +3 -4
  125. package/dist/react/core/data/DataTable.js +473 -440
  126. package/dist/react/core/data/DataTable.js.map +1 -1
  127. package/dist/react/core/data/DataValue.d.ts +4 -5
  128. package/dist/react/core/data/DataValue.js +605 -538
  129. package/dist/react/core/data/DataValue.js.map +1 -1
  130. package/dist/react/core/data/propertyConfig.d.ts +1 -2
  131. package/dist/react/core/data/propertyConfig.js +446 -382
  132. package/dist/react/core/data/propertyConfig.js.map +1 -1
  133. package/dist/react/core/display/AstroIcon.d.ts +4 -5
  134. package/dist/react/core/display/AstroIcon.js +339 -429
  135. package/dist/react/core/display/AstroIcon.js.map +1 -1
  136. package/dist/react/core/display/Badge.d.ts +2 -3
  137. package/dist/react/core/display/Badge.js +131 -131
  138. package/dist/react/core/display/Badge.js.map +1 -1
  139. package/dist/react/core/display/CardHeader.d.ts +0 -1
  140. package/dist/react/core/display/CardHeader.js +398 -311
  141. package/dist/react/core/display/CardHeader.js.map +1 -1
  142. package/dist/react/core/display/Container.d.ts +2 -3
  143. package/dist/react/core/display/Container.js +640 -668
  144. package/dist/react/core/display/Container.js.map +1 -1
  145. package/dist/react/core/display/CopyButton.d.ts +1 -2
  146. package/dist/react/core/display/CopyButton.js +158 -101
  147. package/dist/react/core/display/CopyButton.js.map +1 -1
  148. package/dist/react/core/display/GlassCard.d.ts +3 -4
  149. package/dist/react/core/display/GlassCard.js +416 -369
  150. package/dist/react/core/display/GlassCard.js.map +1 -1
  151. package/dist/react/core/display/HeaderIconWithStatus.d.ts +0 -1
  152. package/dist/react/core/display/HeaderIconWithStatus.js +152 -152
  153. package/dist/react/core/display/HeaderIconWithStatus.js.map +1 -1
  154. package/dist/react/core/display/Icon.d.ts +2 -3
  155. package/dist/react/core/display/Icon.js +172 -143
  156. package/dist/react/core/display/Icon.js.map +1 -1
  157. package/dist/react/core/display/Typography.d.ts +24 -25
  158. package/dist/react/core/display/Typography.js +360 -178
  159. package/dist/react/core/display/Typography.js.map +1 -1
  160. package/dist/react/core/feedback/ConfirmDialog.d.ts +1 -2
  161. package/dist/react/core/feedback/ConfirmDialog.js +343 -304
  162. package/dist/react/core/feedback/ConfirmDialog.js.map +1 -1
  163. package/dist/react/core/feedback/Dialog.d.ts +2 -3
  164. package/dist/react/core/feedback/Dialog.js +189 -197
  165. package/dist/react/core/feedback/Dialog.js.map +1 -1
  166. package/dist/react/core/feedback/Toast.d.ts +2 -3
  167. package/dist/react/core/feedback/Toast.js +346 -207
  168. package/dist/react/core/feedback/Toast.js.map +1 -1
  169. package/dist/react/core/index.d.ts +26 -26
  170. package/dist/react/core/index.js +7 -119
  171. package/dist/react/core/inputs/Button.d.ts +2 -3
  172. package/dist/react/core/inputs/Button.js +281 -304
  173. package/dist/react/core/inputs/Button.js.map +1 -1
  174. package/dist/react/core/inputs/Checkbox.d.ts +2 -3
  175. package/dist/react/core/inputs/Checkbox.js +139 -127
  176. package/dist/react/core/inputs/Checkbox.js.map +1 -1
  177. package/dist/react/core/inputs/Input.d.ts +3 -4
  178. package/dist/react/core/inputs/Input.js +277 -285
  179. package/dist/react/core/inputs/Input.js.map +1 -1
  180. package/dist/react/core/inputs/LimitsBar.d.ts +1 -2
  181. package/dist/react/core/inputs/LimitsBar.js +271 -196
  182. package/dist/react/core/inputs/LimitsBar.js.map +1 -1
  183. package/dist/react/core/inputs/NumberInput.d.ts +2 -3
  184. package/dist/react/core/inputs/NumberInput.js +531 -503
  185. package/dist/react/core/inputs/NumberInput.js.map +1 -1
  186. package/dist/react/core/inputs/PinInput.d.ts +2 -3
  187. package/dist/react/core/inputs/PinInput.js +224 -207
  188. package/dist/react/core/inputs/PinInput.js.map +1 -1
  189. package/dist/react/core/inputs/Select.d.ts +1 -2
  190. package/dist/react/core/inputs/Select.js +298 -299
  191. package/dist/react/core/inputs/Select.js.map +1 -1
  192. package/dist/react/core/inputs/Toggle.d.ts +2 -3
  193. package/dist/react/core/inputs/Toggle.js +142 -148
  194. package/dist/react/core/inputs/Toggle.js.map +1 -1
  195. package/dist/react/core/layout/Box.d.ts +3 -4
  196. package/dist/react/core/layout/Box.js +118 -122
  197. package/dist/react/core/layout/Box.js.map +1 -1
  198. package/dist/react/core/layout/Center.d.ts +0 -1
  199. package/dist/react/core/layout/Center.js +45 -32
  200. package/dist/react/core/layout/Center.js.map +1 -1
  201. package/dist/react/core/layout/Divider.d.ts +1 -2
  202. package/dist/react/core/layout/Divider.js +112 -106
  203. package/dist/react/core/layout/Divider.js.map +1 -1
  204. package/dist/react/core/layout/Flex.d.ts +4 -5
  205. package/dist/react/core/layout/Flex.js +120 -124
  206. package/dist/react/core/layout/Flex.js.map +1 -1
  207. package/dist/react/core/layout/Grid.d.ts +5 -6
  208. package/dist/react/core/layout/Grid.js +131 -138
  209. package/dist/react/core/layout/Grid.js.map +1 -1
  210. package/dist/react/core/layout/Spacer.d.ts +0 -1
  211. package/dist/react/core/layout/Spacer.js +36 -29
  212. package/dist/react/core/layout/Spacer.js.map +1 -1
  213. package/dist/react/core/layout/Stack.d.ts +4 -5
  214. package/dist/react/core/layout/Stack.js +127 -70
  215. package/dist/react/core/layout/Stack.js.map +1 -1
  216. package/dist/react/core/layout/responsive.d.ts +1 -2
  217. package/dist/react/core/layout/responsive.js +25 -19
  218. package/dist/react/core/layout/responsive.js.map +1 -1
  219. package/dist/react/core/layout/useBreakpoint.d.ts +1 -1
  220. package/dist/react/core/layout/useBreakpoint.js +119 -66
  221. package/dist/react/core/layout/useBreakpoint.js.map +1 -1
  222. package/dist/react/core/navigation/AppBar.d.ts +1 -2
  223. package/dist/react/core/navigation/AppBar.js +827 -805
  224. package/dist/react/core/navigation/AppBar.js.map +1 -1
  225. package/dist/react/core/navigation/Pagination.d.ts +2 -3
  226. package/dist/react/core/navigation/Pagination.js +207 -187
  227. package/dist/react/core/navigation/Pagination.js.map +1 -1
  228. package/dist/react/core/navigation/SideNav.d.ts +11 -5
  229. package/dist/react/core/navigation/SideNav.js +857 -602
  230. package/dist/react/core/navigation/SideNav.js.map +1 -1
  231. package/dist/react/core/navigation/Tabs.d.ts +0 -1
  232. package/dist/react/core/navigation/Tabs.js +113 -119
  233. package/dist/react/core/navigation/Tabs.js.map +1 -1
  234. package/dist/react/core/overlays/Popover.d.ts +2 -3
  235. package/dist/react/core/overlays/Popover.js +303 -282
  236. package/dist/react/core/overlays/Popover.js.map +1 -1
  237. package/dist/react/core/overlays/SidePanel.d.ts +1 -2
  238. package/dist/react/core/overlays/SidePanel.js +217 -212
  239. package/dist/react/core/overlays/SidePanel.js.map +1 -1
  240. package/dist/react/core/overlays/Tooltip.d.ts +1 -2
  241. package/dist/react/core/overlays/Tooltip.js +170 -176
  242. package/dist/react/core/overlays/Tooltip.js.map +1 -1
  243. package/dist/react/core/widgets/ActivityPlanner.d.ts +0 -1
  244. package/dist/react/core/widgets/ActivityPlanner.js +855 -517
  245. package/dist/react/core/widgets/ActivityPlanner.js.map +1 -1
  246. package/dist/react/core/widgets/Capture.d.ts +2 -3
  247. package/dist/react/core/widgets/Capture.js +965 -779
  248. package/dist/react/core/widgets/Capture.js.map +1 -1
  249. package/dist/react/core/widgets/ChatPanel.d.ts +16 -17
  250. package/dist/react/core/widgets/ChatPanel.js +1734 -1034
  251. package/dist/react/core/widgets/ChatPanel.js.map +1 -1
  252. package/dist/react/core/widgets/ColorPickerPanel.d.ts +0 -1
  253. package/dist/react/core/widgets/ColorPickerPanel.js +298 -287
  254. package/dist/react/core/widgets/ColorPickerPanel.js.map +1 -1
  255. package/dist/react/core/widgets/CommandBuilder.d.ts +2 -3
  256. package/dist/react/core/widgets/CommandBuilder.js +624 -516
  257. package/dist/react/core/widgets/CommandBuilder.js.map +1 -1
  258. package/dist/react/core/widgets/ConnectionForm.d.ts +2 -3
  259. package/dist/react/core/widgets/ConnectionForm.js +528 -492
  260. package/dist/react/core/widgets/ConnectionForm.js.map +1 -1
  261. package/dist/react/core/widgets/FileExplorer.d.ts +3 -4
  262. package/dist/react/core/widgets/FileExplorer.js +617 -505
  263. package/dist/react/core/widgets/FileExplorer.js.map +1 -1
  264. package/dist/react/core/widgets/HexViewer.d.ts +2 -3
  265. package/dist/react/core/widgets/HexViewer.js +1353 -1091
  266. package/dist/react/core/widgets/HexViewer.js.map +1 -1
  267. package/dist/react/core/widgets/ImageFrame.d.ts +1 -2
  268. package/dist/react/core/widgets/ImageFrame.js +230 -193
  269. package/dist/react/core/widgets/ImageFrame.js.map +1 -1
  270. package/dist/react/core/widgets/ImageGallery.d.ts +2 -1
  271. package/dist/react/core/widgets/ImageGallery.js +380 -314
  272. package/dist/react/core/widgets/ImageGallery.js.map +1 -1
  273. package/dist/react/core/widgets/ImagePanel.d.ts +0 -1
  274. package/dist/react/core/widgets/ImagePanel.js +110 -101
  275. package/dist/react/core/widgets/ImagePanel.js.map +1 -1
  276. package/dist/react/core/widgets/LogViewer.d.ts +2 -3
  277. package/dist/react/core/widgets/LogViewer.js +711 -607
  278. package/dist/react/core/widgets/LogViewer.js.map +1 -1
  279. package/dist/react/core/widgets/MessageStream.d.ts +3 -4
  280. package/dist/react/core/widgets/MessageStream.js +514 -444
  281. package/dist/react/core/widgets/MessageStream.js.map +1 -1
  282. package/dist/react/core/widgets/MissionCalendar.d.ts +3 -4
  283. package/dist/react/core/widgets/MissionCalendar.js +1488 -1020
  284. package/dist/react/core/widgets/MissionCalendar.js.map +1 -1
  285. package/dist/react/core/widgets/PacketViewer.d.ts +2 -3
  286. package/dist/react/core/widgets/PacketViewer.js +550 -421
  287. package/dist/react/core/widgets/PacketViewer.js.map +1 -1
  288. package/dist/react/core/widgets/capture-placeholder.png.js +6 -5
  289. package/dist/react/core/widgets/capture-placeholder.png.js.map +1 -1
  290. package/dist/react/hooks/index.d.ts +5 -5
  291. package/dist/react/hooks/useAccessWindows.d.ts +0 -1
  292. package/dist/react/hooks/useCompactMode.d.ts +1 -1
  293. package/dist/react/hooks/useCompactMode.js +104 -58
  294. package/dist/react/hooks/useCompactMode.js.map +1 -1
  295. package/dist/react/hooks/useGroundTrackHistory.d.ts +0 -1
  296. package/dist/react/hooks/useSimulationScene.d.ts +1 -2
  297. package/dist/react/hooks/useSimulationScene.js +481 -374
  298. package/dist/react/hooks/useSimulationScene.js.map +1 -1
  299. package/dist/react/index.d.ts +3 -3
  300. package/dist/react/panels/LayerControlPanel.d.ts +1 -2
  301. package/dist/react/panels/LayerControlPanel.js +223 -180
  302. package/dist/react/panels/LayerControlPanel.js.map +1 -1
  303. package/dist/react/panels/ObjectInventoryPanel.d.ts +2 -3
  304. package/dist/react/panels/ObjectInventoryPanel.js +315 -250
  305. package/dist/react/panels/ObjectInventoryPanel.js.map +1 -1
  306. package/dist/react/panels/index.d.ts +1 -1
  307. package/dist/react/panels/index.js +1 -6
  308. package/dist/react/shared/ErrorBoundary.d.ts +1 -2
  309. package/dist/react/shared/ErrorBoundary.js +170 -139
  310. package/dist/react/shared/ErrorBoundary.js.map +1 -1
  311. package/dist/react/shared/Skeleton.d.ts +1 -2
  312. package/dist/react/shared/Skeleton.js +300 -301
  313. package/dist/react/shared/Skeleton.js.map +1 -1
  314. package/dist/react/theme/ThemeProvider.d.ts +2 -321
  315. package/dist/react/theme/ThemeProvider.js +312 -939
  316. package/dist/react/theme/ThemeProvider.js.map +1 -1
  317. package/dist/react/theme/cardAccent.d.ts +1 -2
  318. package/dist/react/theme/cardAccent.js +196 -126
  319. package/dist/react/theme/cardAccent.js.map +1 -1
  320. package/dist/react/theme/config.d.ts +0 -1
  321. package/dist/react/theme/config.js +47 -25
  322. package/dist/react/theme/config.js.map +1 -1
  323. package/dist/react/theme/index.d.ts +2 -2
  324. package/dist/react/theme/index.js +1 -16
  325. package/dist/react/theme/types.d.ts +332 -0
  326. package/dist/react/theme/types.js +39 -0
  327. package/dist/react/theme/types.js.map +1 -0
  328. package/dist/react/types.d.ts +8 -8
  329. package/dist/react/types.js +147 -47
  330. package/dist/react/types.js.map +1 -1
  331. package/dist/react/utils/categoryPalette.d.ts +0 -1
  332. package/dist/react/utils/categoryPalette.js +91 -102
  333. package/dist/react/utils/categoryPalette.js.map +1 -1
  334. package/dist/react/utils/index.d.ts +5 -5
  335. package/dist/react/utils/index.js +457 -371
  336. package/dist/react/utils/index.js.map +1 -1
  337. package/dist/react/visualizations/EclipseTimerCard.d.ts +0 -1
  338. package/dist/react/visualizations/LinkBudgetCard.d.ts +0 -1
  339. package/dist/react/visualizations/NavBallCard.d.ts +0 -1
  340. package/dist/react/visualizations/PropulsionCard.d.ts +1 -2
  341. package/dist/react/visualizations/SensorFootprintCard.d.ts +1 -2
  342. package/dist/react/visualizations/ThermalHeatmapCard.d.ts +0 -1
  343. package/dist/react/visualizations/index.d.ts +3 -3
  344. package/dist/react.d.ts +2 -1
  345. package/dist/react.js +17 -221
  346. package/dist/shaders/atmosphere.frag.js +6 -5
  347. package/dist/shaders/atmosphere.frag.js.map +1 -1
  348. package/dist/shaders/atmosphere.vert.js +6 -5
  349. package/dist/shaders/atmosphere.vert.js.map +1 -1
  350. package/dist/shaders/stars.frag.js +6 -5
  351. package/dist/shaders/stars.frag.js.map +1 -1
  352. package/dist/shaders/stars.vert.js +6 -5
  353. package/dist/shaders/stars.vert.js.map +1 -1
  354. package/dist/style.css +217 -194
  355. package/dist/tokens/core.d.ts +159 -0
  356. package/dist/tokens/core.js +144 -0
  357. package/dist/tokens/core.js.map +1 -0
  358. package/dist/tokens/css-vars.d.ts +213 -2
  359. package/dist/tokens/css-vars.js +590 -227
  360. package/dist/tokens/css-vars.js.map +1 -1
  361. package/dist/tokens/index.d.ts +31 -228
  362. package/dist/tokens/index.js +281 -366
  363. package/dist/tokens/index.js.map +1 -1
  364. package/dist/tokens/palettes/astro.d.ts +129 -0
  365. package/dist/tokens/palettes/astro.js +112 -0
  366. package/dist/tokens/palettes/astro.js.map +1 -0
  367. package/dist/tokens/palettes/index.d.ts +288 -0
  368. package/dist/tokens/palettes/index.js +35 -0
  369. package/dist/tokens/palettes/index.js.map +1 -0
  370. package/dist/tokens/palettes/tailwind.d.ts +324 -0
  371. package/dist/tokens/palettes/tailwind.js +201 -0
  372. package/dist/tokens/palettes/tailwind.js.map +1 -0
  373. package/dist/tokens/palettes/zendir.d.ts +126 -0
  374. package/dist/tokens/palettes/zendir.js +92 -0
  375. package/dist/tokens/palettes/zendir.js.map +1 -0
  376. package/dist/tokens/themes.d.ts +30 -0
  377. package/dist/tokens/themes.js +704 -0
  378. package/dist/tokens/themes.js.map +1 -0
  379. package/dist/tokens/tokens.css +419 -41
  380. package/dist/types/index.d.ts +2 -2
  381. package/package.json +310 -313
  382. package/dist/index.js.map +0 -1
  383. package/dist/react/3d/index.js.map +0 -1
  384. package/dist/react/astro/index.js.map +0 -1
  385. package/dist/react/cards/index.js.map +0 -1
  386. package/dist/react/charts/index.js.map +0 -1
  387. package/dist/react/core/index.js.map +0 -1
  388. package/dist/react/panels/index.js.map +0 -1
  389. package/dist/react/theme/astro-tokens.d.ts +0 -153
  390. package/dist/react/theme/index.js.map +0 -1
  391. package/dist/react.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPickerPanel.js","sources":["../../../../src/react/core/widgets/ColorPickerPanel.tsx"],"sourcesContent":["/**\n * @zendir/ui - ColorPickerPanel Component\n * \n * Compact color picker with preset colors and target selector.\n * Used in AppBar for selecting accent and glass tint colors.\n * \n * Features:\n * - Preset color swatches grid\n * - Target toggle: Both | Accent Only | Glass Only\n * - Popover design with smooth animations\n * - Keyboard accessible\n * \n * @example\n * ```tsx\n * <ColorPickerPanel\n * accentColor=\"#8b5cf6\"\n * glassTint=\"#8b5cf6\"\n * colorTarget=\"both\"\n * onAccentChange={setAccentColor}\n * onGlassTintChange={setGlassTint}\n * onTargetChange={setColorTarget}\n * />\n * ```\n */\n\nimport React, { memo, useState, useRef, useEffect } from 'react';\nimport { useTheme } from '../../theme';\nimport { PRESET_COLORS, type ColorTarget } from '../../context/DisplaySettingsContext';\nimport { AstroIcon } from '../display/AstroIcon';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface ColorPickerPanelProps {\n /** Current accent color */\n accentColor: string;\n \n /** Current glass tint color */\n glassTint: string;\n \n /** Which color to affect: both, accent, or glass */\n colorTarget: ColorTarget;\n \n /** Callback when accent color changes */\n onAccentChange: (color: string) => void;\n \n /** Callback when glass tint changes */\n onGlassTintChange: (color: string) => void;\n \n /** Callback when target changes */\n onTargetChange: (target: ColorTarget) => void;\n \n /** Callback when any color is selected (respects target) */\n onColorSelect?: (color: string) => void;\n \n /** Compact mode - show only trigger button */\n compact?: boolean;\n \n /** Custom className */\n className?: string;\n}\n\n// =============================================================================\n// Color Swatches\n// =============================================================================\n\nconst COLOR_SWATCHES = Object.entries(PRESET_COLORS).map(([key, color]) => ({\n key,\n color,\n label: key.charAt(0).toUpperCase() + key.slice(1),\n}));\n\n// =============================================================================\n// Target Toggle Component\n// =============================================================================\n\ninterface TargetToggleProps {\n value: ColorTarget;\n onChange: (target: ColorTarget) => void;\n tokens: any;\n}\n\nconst TargetToggle = memo(function TargetToggle({ value, onChange, tokens }: TargetToggleProps) {\n const targets: { key: ColorTarget; label: string }[] = [\n { key: 'both', label: 'Both' },\n { key: 'accent', label: 'Accent' },\n { key: 'glass', label: 'Glass' },\n ];\n \n return (\n <div style={{\n display: 'flex',\n gap: 2,\n padding: 2,\n backgroundColor: 'rgba(255,255,255,0.05)',\n borderRadius: tokens.borderRadius.sm,\n }}>\n {targets.map(({ key, label }) => (\n <button\n key={key}\n onClick={() => onChange(key)}\n style={{\n flex: 1,\n padding: '4px 8px',\n border: 'none',\n borderRadius: tokens.borderRadius.sm - 2,\n backgroundColor: value === key ? 'rgba(255,255,255,0.15)' : 'transparent',\n color: value === key ? tokens.colors.text.primary : tokens.colors.text.tertiary,\n fontSize: '0.625rem', // 10px in rem\n fontWeight: value === key ? 600 : 400,\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n }}\n >\n {label}\n </button>\n ))}\n </div>\n );\n});\n\n// =============================================================================\n// Color Grid Component\n// =============================================================================\n\ninterface ColorGridProps {\n selectedColor: string;\n onSelect: (color: string) => void;\n tokens: any;\n}\n\nconst ColorGrid = memo(function ColorGrid({ selectedColor, onSelect, tokens: _tokens }: ColorGridProps) {\n return (\n <div style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(6, 1fr)',\n gap: 4,\n }}>\n {COLOR_SWATCHES.map(({ key, color, label }) => {\n const isSelected = selectedColor.toLowerCase() === color.toLowerCase();\n \n return (\n <button\n key={key}\n onClick={() => onSelect(color)}\n aria-label={`Select ${label}`}\n title={label}\n style={{\n width: 24,\n height: 24,\n padding: 0,\n border: isSelected ? '2px solid white' : '1px solid rgba(255,255,255,0.2)',\n borderRadius: 4,\n backgroundColor: color,\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n transform: isSelected ? 'scale(1.1)' : 'scale(1)',\n boxShadow: isSelected ? `0 0 8px ${color}80` : 'none',\n }}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.transform = 'scale(1.15)';\n e.currentTarget.style.borderColor = 'rgba(255,255,255,0.5)';\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = isSelected ? 'scale(1.1)' : 'scale(1)';\n e.currentTarget.style.borderColor = isSelected ? 'white' : 'rgba(255,255,255,0.2)';\n }}\n />\n );\n })}\n </div>\n );\n});\n\n// =============================================================================\n// ColorPickerPanel Component\n// =============================================================================\n\nexport const ColorPickerPanel = memo(function ColorPickerPanel({\n accentColor,\n glassTint,\n colorTarget,\n onAccentChange,\n onGlassTintChange,\n onTargetChange,\n onColorSelect,\n compact = true,\n className = '',\n}: ColorPickerPanelProps): React.ReactElement {\n const { tokens, theme } = useTheme();\n const [isOpen, setIsOpen] = useState(false);\n const panelRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n \n const isTransparentTheme = theme === 'transparent' || theme === 'transparent-bold' || theme === 'transparent-minimal';\n \n // Current display color based on target\n const displayColor = colorTarget === 'glass' ? glassTint : accentColor;\n \n // Handle color selection\n const handleColorSelect = (color: string) => {\n if (onColorSelect) {\n onColorSelect(color);\n } else {\n switch (colorTarget) {\n case 'accent':\n onAccentChange(color);\n break;\n case 'glass':\n onGlassTintChange(color);\n break;\n case 'both':\n default:\n onAccentChange(color);\n onGlassTintChange(color);\n break;\n }\n }\n };\n \n // Close panel when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n panelRef.current &&\n !panelRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n \n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n }, [isOpen]);\n \n // Close on escape key\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n triggerRef.current?.focus();\n }\n };\n \n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }\n }, [isOpen]);\n \n if (compact) {\n return (\n <div style={{ position: 'relative' }} className={className}>\n {/* Trigger Button */}\n <button\n ref={triggerRef}\n onClick={() => setIsOpen(!isOpen)}\n aria-label=\"Open color picker\"\n aria-expanded={isOpen}\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 36,\n height: 36,\n padding: 0,\n border: '2px solid rgba(255,255,255,0.3)',\n borderRadius: tokens.borderRadius.md,\n backgroundColor: displayColor,\n cursor: 'pointer',\n transition: 'all 0.15s ease',\n boxShadow: isOpen ? `0 0 12px ${displayColor}60` : 'none',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.borderColor = 'rgba(255,255,255,0.5)';\n e.currentTarget.style.transform = 'scale(1.05)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.borderColor = 'rgba(255,255,255,0.3)';\n e.currentTarget.style.transform = 'scale(1)';\n }}\n >\n <AstroIcon name=\"palette\" size={16} color=\"white\" />\n </button>\n \n {/* Popover Panel */}\n {isOpen && (\n <div\n ref={panelRef}\n style={{\n position: 'absolute',\n top: '100%',\n right: 0,\n marginTop: 8,\n padding: 12,\n backgroundColor: tokens.colors.background.elevated,\n border: `1px solid ${tokens.colors.border.default}`,\n borderRadius: tokens.borderRadius.lg,\n boxShadow: tokens.shadows.lg,\n zIndex: 1000,\n minWidth: 180,\n }}\n >\n {/* Target Toggle - only show for transparent themes */}\n {isTransparentTheme && (\n <div style={{ marginBottom: 12 }}>\n <div style={{\n fontSize: '0.625rem', // 10px in rem\n fontWeight: 500,\n color: tokens.colors.text.tertiary,\n marginBottom: 6,\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n }}>\n Apply to\n </div>\n <TargetToggle\n value={colorTarget}\n onChange={onTargetChange}\n tokens={tokens}\n />\n </div>\n )}\n \n {/* Color Grid */}\n <div>\n <div style={{\n fontSize: '0.625rem', // 10px in rem\n fontWeight: 500,\n color: tokens.colors.text.tertiary,\n marginBottom: 6,\n textTransform: 'uppercase',\n letterSpacing: '0.05em',\n }}>\n {colorTarget === 'glass' ? 'Glass Tint' : colorTarget === 'accent' ? 'Accent Color' : 'Color'}\n </div>\n <ColorGrid\n selectedColor={displayColor}\n onSelect={handleColorSelect}\n tokens={tokens}\n />\n </div>\n \n {/* Current Colors Display */}\n {isTransparentTheme && colorTarget === 'both' && accentColor !== glassTint && (\n <div style={{\n marginTop: 12,\n paddingTop: 12,\n borderTop: `1px solid ${tokens.colors.border.muted}`,\n display: 'flex',\n gap: 8,\n fontSize: '0.625rem', // 10px in rem\n color: tokens.colors.text.tertiary,\n }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <span style={{\n width: 12,\n height: 12,\n borderRadius: 2,\n backgroundColor: accentColor,\n border: '1px solid rgba(255,255,255,0.2)',\n }} />\n Accent\n </div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <span style={{\n width: 12,\n height: 12,\n borderRadius: 2,\n backgroundColor: glassTint,\n border: '1px solid rgba(255,255,255,0.2)',\n }} />\n Glass\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n \n // Expanded/inline mode\n return (\n <div className={className} style={{ display: 'flex', flexDirection: 'column', gap: 12 }}>\n {isTransparentTheme && (\n <TargetToggle\n value={colorTarget}\n onChange={onTargetChange}\n tokens={tokens}\n />\n )}\n <ColorGrid\n selectedColor={displayColor}\n onSelect={handleColorSelect}\n tokens={tokens}\n />\n </div>\n );\n});\n\nexport default ColorPickerPanel;\n"],"names":["TargetToggle","ColorGrid","ColorPickerPanel"],"mappings":"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"}
1
+ {"version":3,"file":"ColorPickerPanel.js","names":[],"sources":["../../../../src/react/core/widgets/ColorPickerPanel.tsx"],"sourcesContent":["/**\n * @zendir/ui - ColorPickerPanel Component\n *\n * Compact color picker with preset colors and target selector.\n * Used in AppBar for selecting accent and glass tint colors.\n *\n * Features:\n * - Preset color swatches grid\n * - Target toggle: Both | Accent Only | Glass Only\n * - Popover design with smooth animations\n * - Keyboard accessible\n *\n * @example\n * ```tsx\n * <ColorPickerPanel\n * accentColor=\"#8b5cf6\"\n * glassTint=\"#8b5cf6\"\n * colorTarget=\"both\"\n * onAccentChange={setAccentColor}\n * onGlassTintChange={setGlassTint}\n * onTargetChange={setColorTarget}\n * />\n * ```\n */\n\nimport React, { memo, useState, useRef, useEffect } from \"react\";\nimport { useTheme } from \"../../theme\";\nimport {\n PRESET_COLORS,\n type ColorTarget,\n} from \"../../context/DisplaySettingsContext\";\nimport { AstroIcon } from \"../display/AstroIcon\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface ColorPickerPanelProps {\n /** Current accent color */\n accentColor: string;\n\n /** Current glass tint color */\n glassTint: string;\n\n /** Which color to affect: both, accent, or glass */\n colorTarget: ColorTarget;\n\n /** Callback when accent color changes */\n onAccentChange: (color: string) => void;\n\n /** Callback when glass tint changes */\n onGlassTintChange: (color: string) => void;\n\n /** Callback when target changes */\n onTargetChange: (target: ColorTarget) => void;\n\n /** Callback when any color is selected (respects target) */\n onColorSelect?: (color: string) => void;\n\n /** Compact mode - show only trigger button */\n compact?: boolean;\n\n /** Custom className */\n className?: string;\n}\n\n// =============================================================================\n// Color Swatches\n// =============================================================================\n\nconst COLOR_SWATCHES = Object.entries(PRESET_COLORS).map(([key, color]) => ({\n key,\n color,\n label: key.charAt(0).toUpperCase() + key.slice(1),\n}));\n\n// =============================================================================\n// Target Toggle Component\n// =============================================================================\n\ninterface TargetToggleProps {\n value: ColorTarget;\n onChange: (target: ColorTarget) => void;\n tokens: any;\n}\n\nconst TargetToggle = memo(function TargetToggle({\n value,\n onChange,\n tokens,\n}: TargetToggleProps) {\n const targets: { key: ColorTarget; label: string }[] = [\n { key: \"both\", label: \"Both\" },\n { key: \"accent\", label: \"Accent\" },\n { key: \"glass\", label: \"Glass\" },\n ];\n\n return (\n <div\n style={{\n display: \"flex\",\n gap: 2,\n padding: 2,\n backgroundColor: \"rgba(255,255,255,0.05)\",\n borderRadius: tokens.borderRadius.sm,\n }}\n >\n {targets.map(({ key, label }) => (\n <button\n key={key}\n onClick={() => onChange(key)}\n style={{\n flex: 1,\n padding: \"4px 8px\",\n border: \"none\",\n borderRadius: tokens.borderRadius.sm - 2,\n backgroundColor:\n value === key ? \"rgba(255,255,255,0.15)\" : \"transparent\",\n color:\n value === key\n ? tokens.colors.text.primary\n : tokens.colors.text.tertiary,\n fontSize: \"0.625rem\", // 10px in rem\n fontWeight: value === key ? 600 : 400,\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n }}\n >\n {label}\n </button>\n ))}\n </div>\n );\n});\n\n// =============================================================================\n// Color Grid Component\n// =============================================================================\n\ninterface ColorGridProps {\n selectedColor: string;\n onSelect: (color: string) => void;\n tokens: any;\n}\n\nconst ColorGrid = memo(function ColorGrid({\n selectedColor,\n onSelect,\n tokens: _tokens,\n}: ColorGridProps) {\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(6, 1fr)\",\n gap: 4,\n }}\n >\n {COLOR_SWATCHES.map(({ key, color, label }) => {\n const isSelected = selectedColor.toLowerCase() === color.toLowerCase();\n\n return (\n <button\n key={key}\n onClick={() => onSelect(color)}\n aria-label={`Select ${label}`}\n title={label}\n style={{\n width: 24,\n height: 24,\n padding: 0,\n border: isSelected\n ? \"2px solid white\"\n : \"1px solid rgba(255,255,255,0.2)\",\n borderRadius: 4,\n backgroundColor: color,\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n transform: isSelected ? \"scale(1.1)\" : \"scale(1)\",\n boxShadow: isSelected ? `0 0 8px ${color}80` : \"none\",\n }}\n onMouseEnter={(e) => {\n if (!isSelected) {\n e.currentTarget.style.transform = \"scale(1.15)\";\n e.currentTarget.style.borderColor = \"rgba(255,255,255,0.5)\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = isSelected\n ? \"scale(1.1)\"\n : \"scale(1)\";\n e.currentTarget.style.borderColor = isSelected\n ? \"white\"\n : \"rgba(255,255,255,0.2)\";\n }}\n />\n );\n })}\n </div>\n );\n});\n\n// =============================================================================\n// ColorPickerPanel Component\n// =============================================================================\n\nexport const ColorPickerPanel = memo(function ColorPickerPanel({\n accentColor,\n glassTint,\n colorTarget,\n onAccentChange,\n onGlassTintChange,\n onTargetChange,\n onColorSelect,\n compact = true,\n className = \"\",\n}: ColorPickerPanelProps): React.ReactElement {\n const { tokens, theme } = useTheme();\n const [isOpen, setIsOpen] = useState(false);\n const panelRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n const isTransparentTheme =\n theme === \"transparent\" ||\n theme === \"transparent-bold\" ||\n theme === \"transparent-minimal\";\n\n // Current display color based on target\n const displayColor = colorTarget === \"glass\" ? glassTint : accentColor;\n\n // Handle color selection\n const handleColorSelect = (color: string) => {\n if (onColorSelect) {\n onColorSelect(color);\n } else {\n switch (colorTarget) {\n case \"accent\":\n onAccentChange(color);\n break;\n case \"glass\":\n onGlassTintChange(color);\n break;\n case \"both\":\n default:\n onAccentChange(color);\n onGlassTintChange(color);\n break;\n }\n }\n };\n\n // Close panel when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n panelRef.current &&\n !panelRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }\n }, [isOpen]);\n\n // Close on escape key\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsOpen(false);\n triggerRef.current?.focus();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }\n }, [isOpen]);\n\n if (compact) {\n return (\n <div style={{ position: \"relative\" }} className={className}>\n {/* Trigger Button */}\n <button\n ref={triggerRef}\n onClick={() => setIsOpen(!isOpen)}\n aria-label=\"Open color picker\"\n aria-expanded={isOpen}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 36,\n height: 36,\n padding: 0,\n border: \"2px solid rgba(255,255,255,0.3)\",\n borderRadius: tokens.borderRadius.md,\n backgroundColor: displayColor,\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n boxShadow: isOpen ? `0 0 12px ${displayColor}60` : \"none\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.borderColor = \"rgba(255,255,255,0.5)\";\n e.currentTarget.style.transform = \"scale(1.05)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.borderColor = \"rgba(255,255,255,0.3)\";\n e.currentTarget.style.transform = \"scale(1)\";\n }}\n >\n <AstroIcon name=\"palette\" size={16} color=\"white\" />\n </button>\n\n {/* Popover Panel */}\n {isOpen && (\n <div\n ref={panelRef}\n style={{\n position: \"absolute\",\n top: \"100%\",\n right: 0,\n marginTop: 8,\n padding: 12,\n backgroundColor: tokens.colors.background.elevated,\n border: `1px solid ${tokens.colors.border.default}`,\n borderRadius: tokens.borderRadius.lg,\n boxShadow: tokens.shadows.lg,\n zIndex: 1000,\n minWidth: 180,\n }}\n >\n {/* Target Toggle - only show for transparent themes */}\n {isTransparentTheme && (\n <div style={{ marginBottom: 12 }}>\n <div\n style={{\n fontSize: \"0.625rem\", // 10px in rem\n fontWeight: 500,\n color: tokens.colors.text.tertiary,\n marginBottom: 6,\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n }}\n >\n Apply to\n </div>\n <TargetToggle\n value={colorTarget}\n onChange={onTargetChange}\n tokens={tokens}\n />\n </div>\n )}\n\n {/* Color Grid */}\n <div>\n <div\n style={{\n fontSize: \"0.625rem\", // 10px in rem\n fontWeight: 500,\n color: tokens.colors.text.tertiary,\n marginBottom: 6,\n textTransform: \"uppercase\",\n letterSpacing: \"0.05em\",\n }}\n >\n {colorTarget === \"glass\"\n ? \"Glass Tint\"\n : colorTarget === \"accent\"\n ? \"Accent Color\"\n : \"Color\"}\n </div>\n <ColorGrid\n selectedColor={displayColor}\n onSelect={handleColorSelect}\n tokens={tokens}\n />\n </div>\n\n {/* Current Colors Display */}\n {isTransparentTheme &&\n colorTarget === \"both\" &&\n accentColor !== glassTint && (\n <div\n style={{\n marginTop: 12,\n paddingTop: 12,\n borderTop: `1px solid ${tokens.colors.border.muted}`,\n display: \"flex\",\n gap: 8,\n fontSize: \"0.625rem\", // 10px in rem\n color: tokens.colors.text.tertiary,\n }}\n >\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: 4 }}\n >\n <span\n style={{\n width: 12,\n height: 12,\n borderRadius: 2,\n backgroundColor: accentColor,\n border: \"1px solid rgba(255,255,255,0.2)\",\n }}\n />\n Accent\n </div>\n <div\n style={{ display: \"flex\", alignItems: \"center\", gap: 4 }}\n >\n <span\n style={{\n width: 12,\n height: 12,\n borderRadius: 2,\n backgroundColor: glassTint,\n border: \"1px solid rgba(255,255,255,0.2)\",\n }}\n />\n Glass\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n\n // Expanded/inline mode\n return (\n <div\n className={className}\n style={{ display: \"flex\", flexDirection: \"column\", gap: 12 }}\n >\n {isTransparentTheme && (\n <TargetToggle\n value={colorTarget}\n onChange={onTargetChange}\n tokens={tokens}\n />\n )}\n <ColorGrid\n selectedColor={displayColor}\n onSelect={handleColorSelect}\n tokens={tokens}\n />\n </div>\n );\n});\n\nexport default ColorPickerPanel;\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { default as React } from 'react';
2
-
3
- export type CommandParamType = 'int' | 'uint' | 'float' | 'string' | 'boolean' | 'enum' | 'hex' | 'block';
2
+ export type CommandParamType = "int" | "uint" | "float" | "string" | "boolean" | "enum" | "hex" | "block";
4
3
  export interface CommandParameter {
5
4
  /** Parameter name */
6
5
  name: string;
@@ -35,7 +34,7 @@ export interface CommandHistoryEntry {
35
34
  target: string;
36
35
  command: string;
37
36
  parameters: Record<string, unknown>;
38
- status: 'sent' | 'success' | 'error';
37
+ status: "sent" | "success" | "error";
39
38
  error?: string;
40
39
  }
41
40
  export interface CommandBuilderProps {