@zendir/ui 0.5.0 → 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 +20 -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 -571
  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 +5 -6
  229. package/dist/react/core/navigation/SideNav.js +855 -629
  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,665 +1,629 @@
1
- const ZENDIR_BRAND_COLORS = {
2
- // === Core Brand Colors ===
3
- /** Electric - Primary accent (#3E3CFF) */
4
- electric: "#3E3CFF",
5
- /** Purple - Secondary accent (#9D70FF) */
6
- purple: "#9D70FF",
7
- /** Prussian Blue - Subsections (#1B2DA0) */
8
- prussianBlue: "#1B2DA0",
9
- /** Black */
10
- black: "#000000",
11
- /** White */
12
- white: "#FFFFFF",
13
- // === Electric Shades (10%, 20%, 35% overlays) ===
14
- electricLighter: "#9997FF",
15
- // 35% white overlay
16
- electricLight: "#6B69FF",
17
- // 20% white overlay
18
- electricSoft: "#5250FF",
19
- // 10% white overlay
20
- electricDark: "#3836E6",
21
- // 10% black overlay
22
- electricDarker: "#3230CC",
23
- // 20% black overlay
24
- electricDeep: "#2926A3",
25
- // 35% black overlay
26
- // === Purple Shades ===
27
- purpleLighter: "#C9A8FF",
28
- // 35% white overlay
29
- purpleLight: "#B48DFF",
30
- // 20% white overlay
31
- purpleSoft: "#A97FFF",
32
- // 10% white overlay
33
- purpleDark: "#8E64E6",
34
- // 10% black overlay
35
- purpleDarker: "#7E5ACC",
36
- // 20% black overlay
37
- purpleDeep: "#5F4499",
38
- // 35% black overlay
39
- // === Prussian Blue Shades ===
40
- prussianBlueLighter: "#4A5FD6",
41
- // 35% white overlay
42
- prussianBlueLight: "#3548C0",
43
- // 20% white overlay
44
- prussianBlueSoft: "#2838B0",
45
- // 10% white overlay
46
- prussianBlueDark: "#182890",
47
- // 10% black overlay
48
- prussianBlueDarker: "#142380",
49
- // 20% black overlay
50
- prussianBlueDeep: "#0F1A60"
51
- // 35% black overlay
1
+ //#region src/react/charts/unified/theme.ts
2
+ /**
3
+ * Zendir Brand Colors (from Brand Guide v2026)
4
+ * Core: Electric (#3E3CFF), Purple (#9D70FF), Prussian Blue (#1B2DA0)
5
+ * Shades derived using 10%, 20%, 35% white/black overlays per brand guide
6
+ */
7
+ var ZENDIR_BRAND_COLORS = {
8
+ /** Electric - Primary accent (#3E3CFF) */
9
+ electric: "#3E3CFF",
10
+ /** Purple - Secondary accent (#9D70FF) */
11
+ purple: "#9D70FF",
12
+ /** Prussian Blue - Subsections (#1B2DA0) */
13
+ prussianBlue: "#1B2DA0",
14
+ /** Black */
15
+ black: "#000000",
16
+ /** White */
17
+ white: "#FFFFFF",
18
+ electricLighter: "#9997FF",
19
+ electricLight: "#6B69FF",
20
+ electricSoft: "#5250FF",
21
+ electricDark: "#3836E6",
22
+ electricDarker: "#3230CC",
23
+ electricDeep: "#2926A3",
24
+ purpleLighter: "#C9A8FF",
25
+ purpleLight: "#B48DFF",
26
+ purpleSoft: "#A97FFF",
27
+ purpleDark: "#8E64E6",
28
+ purpleDarker: "#7E5ACC",
29
+ purpleDeep: "#5F4499",
30
+ prussianBlueLighter: "#4A5FD6",
31
+ prussianBlueLight: "#3548C0",
32
+ prussianBlueSoft: "#2838B0",
33
+ prussianBlueDark: "#182890",
34
+ prussianBlueDarker: "#142380",
35
+ prussianBlueDeep: "#0F1A60"
52
36
  };
53
- const OFFICIAL_ASTRO_DATA_VIZ_COLORS = {
54
- /** Official AstroUXDS data visualization palette (8 colors) */
55
- primary: [
56
- "#00c7cb",
57
- // color-data-visualization-1 - Teal 500
58
- "#938bdb",
59
- // color-data-visualization-2 - Purple 400
60
- "#4dacff",
61
- // color-data-visualization-3 - Brightblue 500
62
- "#70dde0",
63
- // color-data-visualization-4 - Teal 300
64
- "#c9c5ed",
65
- // color-data-visualization-5 - Purple 200
66
- "#92cbff",
67
- // color-data-visualization-6 - Brightblue 400
68
- "#a1e9eb",
69
- // color-data-visualization-7 - Teal 200
70
- "#b7dcff"
71
- // color-data-visualization-8 - Brightblue 300
72
- ],
73
- /** Extended palette - primary + additional derived colors for 11 max */
74
- extended: [
75
- "#00c7cb",
76
- // Teal 500 - Primary
77
- "#938bdb",
78
- // Purple 400 - Secondary
79
- "#4dacff",
80
- // Brightblue 500
81
- "#70dde0",
82
- // Teal 300
83
- "#c9c5ed",
84
- // Purple 200
85
- "#92cbff",
86
- // Brightblue 400
87
- "#a1e9eb",
88
- // Teal 200
89
- "#b7dcff",
90
- // Brightblue 300
91
- "#009a9d",
92
- // Teal 600 (darker)
93
- "#756bb8",
94
- // Purple 500 (darker)
95
- "#2b659b"
96
- // Brightblue 700 (darker)
97
- ],
98
- /** Sequential palettes for heatmaps using AstroUXDS colors */
99
- sequential: {
100
- /** Teal sequential */
101
- teal: ["#e5f9f9", "#a1e9eb", "#70dde0", "#00c7cb", "#009a9d", "#006e70"],
102
- /** Purple sequential */
103
- purple: ["#eceaf7", "#c9c5ed", "#a9a3dc", "#938bdb", "#756bb8", "#5b5299"],
104
- /** Brightblue sequential */
105
- brightblue: ["#e8f4ff", "#b7dcff", "#92cbff", "#4dacff", "#2b659b", "#1c3f5e"],
106
- /** Thermal - Status colors for temperature */
107
- thermal: ["#00c7cb", "#56f000", "#fce83a", "#ffb302", "#ff6b35", "#ff3838"]
108
- }
37
+ /**
38
+ * Official AstroUXDS Data Visualization Color Palette
39
+ * Per https://astrouxds.com/design-tokens/system/#data-viz
40
+ *
41
+ * These are the OFFICIAL AstroUXDS data visualization colors from the design system.
42
+ * Use these for pure AstroUXDS compliance (e.g., 'astro' theme).
43
+ *
44
+ * @see https://astrouxds.com/design-tokens/system/
45
+ */
46
+ var OFFICIAL_ASTRO_DATA_VIZ_COLORS = {
47
+ /** Official AstroUXDS data visualization palette (8 colors) */
48
+ primary: [
49
+ "#00c7cb",
50
+ "#938bdb",
51
+ "#4dacff",
52
+ "#70dde0",
53
+ "#c9c5ed",
54
+ "#92cbff",
55
+ "#a1e9eb",
56
+ "#b7dcff"
57
+ ],
58
+ /** Extended palette - primary + additional derived colors for 11 max */
59
+ extended: [
60
+ "#00c7cb",
61
+ "#938bdb",
62
+ "#4dacff",
63
+ "#70dde0",
64
+ "#c9c5ed",
65
+ "#92cbff",
66
+ "#a1e9eb",
67
+ "#b7dcff",
68
+ "#009a9d",
69
+ "#756bb8",
70
+ "#2b659b"
71
+ ],
72
+ /** Sequential palettes for heatmaps using AstroUXDS colors */
73
+ sequential: {
74
+ /** Teal sequential */
75
+ teal: [
76
+ "#e5f9f9",
77
+ "#a1e9eb",
78
+ "#70dde0",
79
+ "#00c7cb",
80
+ "#009a9d",
81
+ "#006e70"
82
+ ],
83
+ /** Purple sequential */
84
+ purple: [
85
+ "#eceaf7",
86
+ "#c9c5ed",
87
+ "#a9a3dc",
88
+ "#938bdb",
89
+ "#756bb8",
90
+ "#5b5299"
91
+ ],
92
+ /** Brightblue sequential */
93
+ brightblue: [
94
+ "#e8f4ff",
95
+ "#b7dcff",
96
+ "#92cbff",
97
+ "#4dacff",
98
+ "#2b659b",
99
+ "#1c3f5e"
100
+ ],
101
+ /** Thermal - Status colors for temperature */
102
+ thermal: [
103
+ "#00c7cb",
104
+ "#56f000",
105
+ "#fce83a",
106
+ "#ffb302",
107
+ "#ff6b35",
108
+ "#ff3838"
109
+ ]
110
+ }
109
111
  };
110
- const ASTRO_DATA_VIZ_COLORS = {
111
- /**
112
- * Primary data visualization palette - Pure Zendir Brand
113
- * Uses only Zendir brand colors and their derived shades
114
- * Max 11 colors per AstroUXDS compliance requirement 3.2.1
115
- *
116
- * NOTE: Status colors (green, yellow, red) reserved for status indication only
117
- */
118
- mixed: [
119
- ZENDIR_BRAND_COLORS.electric,
120
- // #3E3CFF - Primary
121
- ZENDIR_BRAND_COLORS.purple,
122
- // #9D70FF - Secondary
123
- ZENDIR_BRAND_COLORS.electricLight,
124
- // #6B69FF - Electric 20% lighter
125
- ZENDIR_BRAND_COLORS.purpleLight,
126
- // #B48DFF - Purple 20% lighter
127
- ZENDIR_BRAND_COLORS.prussianBlueLight,
128
- // #3548C0 - Prussian Blue lighter
129
- ZENDIR_BRAND_COLORS.electricLighter,
130
- // #9997FF - Electric 35% lighter
131
- ZENDIR_BRAND_COLORS.purpleLighter,
132
- // #C9A8FF - Purple 35% lighter
133
- ZENDIR_BRAND_COLORS.prussianBlue,
134
- // #1B2DA0 - Prussian Blue
135
- ZENDIR_BRAND_COLORS.electricDarker,
136
- // #3230CC - Electric 20% darker
137
- ZENDIR_BRAND_COLORS.purpleDarker,
138
- // #7E5ACC - Purple 20% darker
139
- ZENDIR_BRAND_COLORS.prussianBlueLighter
140
- // #4A5FD6 - Prussian Blue lightest
141
- ],
142
- /**
143
- * Zendir Brand palette - Full brand spectrum
144
- * Complete set of Zendir brand colors for maximum brand expression
145
- */
146
- zendir: [
147
- ZENDIR_BRAND_COLORS.electric,
148
- // #3E3CFF - Primary
149
- ZENDIR_BRAND_COLORS.purple,
150
- // #9D70FF - Secondary
151
- ZENDIR_BRAND_COLORS.electricLight,
152
- // #6B69FF
153
- ZENDIR_BRAND_COLORS.purpleLight,
154
- // #B48DFF
155
- ZENDIR_BRAND_COLORS.prussianBlue,
156
- // #1B2DA0
157
- ZENDIR_BRAND_COLORS.electricLighter,
158
- // #9997FF
159
- ZENDIR_BRAND_COLORS.purpleLighter,
160
- // #C9A8FF
161
- ZENDIR_BRAND_COLORS.prussianBlueLight
162
- // #3548C0
163
- ],
164
- /**
165
- * Extended Zendir palette - All shades for complex visualizations
166
- * Includes dark and light variants for maximum differentiation
167
- */
168
- zendirExtended: [
169
- ZENDIR_BRAND_COLORS.electric,
170
- // #3E3CFF
171
- ZENDIR_BRAND_COLORS.purple,
172
- // #9D70FF
173
- ZENDIR_BRAND_COLORS.prussianBlue,
174
- // #1B2DA0
175
- ZENDIR_BRAND_COLORS.electricLight,
176
- // #6B69FF
177
- ZENDIR_BRAND_COLORS.purpleLight,
178
- // #B48DFF
179
- ZENDIR_BRAND_COLORS.prussianBlueLight,
180
- // #3548C0
181
- ZENDIR_BRAND_COLORS.electricLighter,
182
- // #9997FF
183
- ZENDIR_BRAND_COLORS.purpleLighter,
184
- // #C9A8FF
185
- ZENDIR_BRAND_COLORS.electricDarker,
186
- // #3230CC
187
- ZENDIR_BRAND_COLORS.purpleDarker,
188
- // #7E5ACC
189
- ZENDIR_BRAND_COLORS.prussianBlueDarker
190
- // #142380
191
- ],
192
- /**
193
- * Cool palette - Blues and purples
194
- * Professional Zendir-branded cool tones
195
- */
196
- cool: [
197
- ZENDIR_BRAND_COLORS.electric,
198
- // #3E3CFF
199
- ZENDIR_BRAND_COLORS.prussianBlue,
200
- // #1B2DA0
201
- ZENDIR_BRAND_COLORS.purple,
202
- // #9D70FF
203
- ZENDIR_BRAND_COLORS.electricLight,
204
- // #6B69FF
205
- ZENDIR_BRAND_COLORS.prussianBlueLight,
206
- // #3548C0
207
- ZENDIR_BRAND_COLORS.purpleLight,
208
- // #B48DFF
209
- ZENDIR_BRAND_COLORS.electricLighter,
210
- // #9997FF
211
- ZENDIR_BRAND_COLORS.prussianBlueLighter
212
- // #4A5FD6
213
- ],
214
- /**
215
- * Warm accent palette - For charts needing warm tones
216
- * Use sparingly - not part of Zendir brand
217
- */
218
- warm: [
219
- "#ffb302",
220
- // Amber
221
- "#ff9966",
222
- // Coral
223
- "#fce83a",
224
- // Yellow
225
- "#ff6b6b",
226
- // Salmon
227
- "#f0a000",
228
- // Orange
229
- "#ffcc80",
230
- // Peach
231
- "#e0a86c",
232
- // Tan
233
- "#d4b896"
234
- // Sand
235
- ],
236
- /**
237
- * Electric-Purple gradient palette (Zendir brand gradient)
238
- * Matches the official brand gradient from Electric to Purple
239
- */
240
- electricPurple: [
241
- ZENDIR_BRAND_COLORS.electric,
242
- // #3E3CFF
243
- ZENDIR_BRAND_COLORS.electricSoft,
244
- // #5250FF
245
- ZENDIR_BRAND_COLORS.electricLight,
246
- // #6B69FF
247
- "#8070FF",
248
- // Blend E→P
249
- ZENDIR_BRAND_COLORS.purple,
250
- // #9D70FF
251
- ZENDIR_BRAND_COLORS.purpleLight,
252
- // #B48DFF
253
- ZENDIR_BRAND_COLORS.purpleLighter,
254
- // #C9A8FF
255
- "#DCC4FF"
256
- // Lightest
257
- ],
258
- /**
259
- * Prussian-Electric gradient palette
260
- * Deep to vibrant brand progression
261
- */
262
- prussianElectric: [
263
- ZENDIR_BRAND_COLORS.prussianBlueDarker,
264
- // #142380
265
- ZENDIR_BRAND_COLORS.prussianBlue,
266
- // #1B2DA0
267
- ZENDIR_BRAND_COLORS.prussianBlueLight,
268
- // #3548C0
269
- ZENDIR_BRAND_COLORS.electricDarker,
270
- // #3230CC
271
- ZENDIR_BRAND_COLORS.electric,
272
- // #3E3CFF
273
- ZENDIR_BRAND_COLORS.electricLight
274
- // #6B69FF
275
- ],
276
- /**
277
- * Full Zendir spectrum gradient
278
- * Prussian Blue → Electric → Purple
279
- */
280
- zendirSpectrum: [
281
- ZENDIR_BRAND_COLORS.prussianBlue,
282
- // #1B2DA0
283
- ZENDIR_BRAND_COLORS.prussianBlueLight,
284
- // #3548C0
285
- ZENDIR_BRAND_COLORS.electric,
286
- // #3E3CFF
287
- ZENDIR_BRAND_COLORS.electricLight,
288
- // #6B69FF
289
- ZENDIR_BRAND_COLORS.purple,
290
- // #9D70FF
291
- ZENDIR_BRAND_COLORS.purpleLight
292
- // #B48DFF
293
- ],
294
- /**
295
- * Sequential palettes for heatmaps and gradual data
296
- * Zendir brand-forward gradients
297
- */
298
- sequential: {
299
- /** Zendir Electric sequential - Primary brand gradient */
300
- electric: ["#E8E8FF", "#C9C8FF", "#9997FF", "#6B69FF", "#3E3CFF", "#3230CC", "#262499"],
301
- /** Zendir Purple sequential - Secondary brand gradient */
302
- purple: ["#F0E8FF", "#DCC4FF", "#C9A8FF", "#B48DFF", "#9D70FF", "#7E5ACC", "#5F4499"],
303
- /** Zendir Prussian Blue sequential - Deep brand gradient */
304
- prussianBlue: ["#E8ECFF", "#C5CFF0", "#8A9DD6", "#4A5FD6", "#3548C0", "#1B2DA0", "#0F1A60"],
305
- /** Zendir gradient - Electric → Purple blend */
306
- brand: ["#3E3CFF", "#5250FF", "#6B69FF", "#7E70FF", "#9D70FF", "#B48DFF", "#C9A8FF"],
307
- /** Thermal - Status colors for temperature (AstroUXDS compliant) */
308
- thermal: ["#00C7CB", "#56F000", "#FCE83A", "#FFB302", "#FF6B35", "#FF3838"]
309
- }
112
+ /**
113
+ * Zendir-branded Data Visualization Color Palette
114
+ * Uses Zendir brand colors (Electric, Purple, Prussian Blue)
115
+ * while maintaining AstroUXDS compliance (max 11 colors, colorblind-accessible)
116
+ *
117
+ * @see https://www.astrouxds.com/patterns/data-visualization/
118
+ */
119
+ var ASTRO_DATA_VIZ_COLORS = {
120
+ /**
121
+ * Primary data visualization palette - Pure Zendir Brand
122
+ * Uses only Zendir brand colors and their derived shades
123
+ * Max 11 colors per AstroUXDS compliance requirement 3.2.1
124
+ *
125
+ * NOTE: Status colors (green, yellow, red) reserved for status indication only
126
+ */
127
+ mixed: [
128
+ ZENDIR_BRAND_COLORS.electric,
129
+ ZENDIR_BRAND_COLORS.purple,
130
+ ZENDIR_BRAND_COLORS.electricLight,
131
+ ZENDIR_BRAND_COLORS.purpleLight,
132
+ ZENDIR_BRAND_COLORS.prussianBlueLight,
133
+ ZENDIR_BRAND_COLORS.electricLighter,
134
+ ZENDIR_BRAND_COLORS.purpleLighter,
135
+ ZENDIR_BRAND_COLORS.prussianBlue,
136
+ ZENDIR_BRAND_COLORS.electricDarker,
137
+ ZENDIR_BRAND_COLORS.purpleDarker,
138
+ ZENDIR_BRAND_COLORS.prussianBlueLighter
139
+ ],
140
+ /**
141
+ * Zendir Brand palette - Full brand spectrum
142
+ * Complete set of Zendir brand colors for maximum brand expression
143
+ */
144
+ zendir: [
145
+ ZENDIR_BRAND_COLORS.electric,
146
+ ZENDIR_BRAND_COLORS.purple,
147
+ ZENDIR_BRAND_COLORS.electricLight,
148
+ ZENDIR_BRAND_COLORS.purpleLight,
149
+ ZENDIR_BRAND_COLORS.prussianBlue,
150
+ ZENDIR_BRAND_COLORS.electricLighter,
151
+ ZENDIR_BRAND_COLORS.purpleLighter,
152
+ ZENDIR_BRAND_COLORS.prussianBlueLight
153
+ ],
154
+ /**
155
+ * Extended Zendir palette - All shades for complex visualizations
156
+ * Includes dark and light variants for maximum differentiation
157
+ */
158
+ zendirExtended: [
159
+ ZENDIR_BRAND_COLORS.electric,
160
+ ZENDIR_BRAND_COLORS.purple,
161
+ ZENDIR_BRAND_COLORS.prussianBlue,
162
+ ZENDIR_BRAND_COLORS.electricLight,
163
+ ZENDIR_BRAND_COLORS.purpleLight,
164
+ ZENDIR_BRAND_COLORS.prussianBlueLight,
165
+ ZENDIR_BRAND_COLORS.electricLighter,
166
+ ZENDIR_BRAND_COLORS.purpleLighter,
167
+ ZENDIR_BRAND_COLORS.electricDarker,
168
+ ZENDIR_BRAND_COLORS.purpleDarker,
169
+ ZENDIR_BRAND_COLORS.prussianBlueDarker
170
+ ],
171
+ /**
172
+ * Cool palette - Blues and purples
173
+ * Professional Zendir-branded cool tones
174
+ */
175
+ cool: [
176
+ ZENDIR_BRAND_COLORS.electric,
177
+ ZENDIR_BRAND_COLORS.prussianBlue,
178
+ ZENDIR_BRAND_COLORS.purple,
179
+ ZENDIR_BRAND_COLORS.electricLight,
180
+ ZENDIR_BRAND_COLORS.prussianBlueLight,
181
+ ZENDIR_BRAND_COLORS.purpleLight,
182
+ ZENDIR_BRAND_COLORS.electricLighter,
183
+ ZENDIR_BRAND_COLORS.prussianBlueLighter
184
+ ],
185
+ /**
186
+ * Warm accent palette - For charts needing warm tones
187
+ * Use sparingly - not part of Zendir brand
188
+ */
189
+ warm: [
190
+ "#ffb302",
191
+ "#ff9966",
192
+ "#fce83a",
193
+ "#ff6b6b",
194
+ "#f0a000",
195
+ "#ffcc80",
196
+ "#e0a86c",
197
+ "#d4b896"
198
+ ],
199
+ /**
200
+ * Electric-Purple gradient palette (Zendir brand gradient)
201
+ * Matches the official brand gradient from Electric to Purple
202
+ */
203
+ electricPurple: [
204
+ ZENDIR_BRAND_COLORS.electric,
205
+ ZENDIR_BRAND_COLORS.electricSoft,
206
+ ZENDIR_BRAND_COLORS.electricLight,
207
+ "#8070FF",
208
+ ZENDIR_BRAND_COLORS.purple,
209
+ ZENDIR_BRAND_COLORS.purpleLight,
210
+ ZENDIR_BRAND_COLORS.purpleLighter,
211
+ "#DCC4FF"
212
+ ],
213
+ /**
214
+ * Prussian-Electric gradient palette
215
+ * Deep to vibrant brand progression
216
+ */
217
+ prussianElectric: [
218
+ ZENDIR_BRAND_COLORS.prussianBlueDarker,
219
+ ZENDIR_BRAND_COLORS.prussianBlue,
220
+ ZENDIR_BRAND_COLORS.prussianBlueLight,
221
+ ZENDIR_BRAND_COLORS.electricDarker,
222
+ ZENDIR_BRAND_COLORS.electric,
223
+ ZENDIR_BRAND_COLORS.electricLight
224
+ ],
225
+ /**
226
+ * Full Zendir spectrum gradient
227
+ * Prussian Blue → Electric → Purple
228
+ */
229
+ zendirSpectrum: [
230
+ ZENDIR_BRAND_COLORS.prussianBlue,
231
+ ZENDIR_BRAND_COLORS.prussianBlueLight,
232
+ ZENDIR_BRAND_COLORS.electric,
233
+ ZENDIR_BRAND_COLORS.electricLight,
234
+ ZENDIR_BRAND_COLORS.purple,
235
+ ZENDIR_BRAND_COLORS.purpleLight
236
+ ],
237
+ /**
238
+ * Sequential palettes for heatmaps and gradual data
239
+ * Zendir brand-forward gradients
240
+ */
241
+ sequential: {
242
+ /** Zendir Electric sequential - Primary brand gradient */
243
+ electric: [
244
+ "#E8E8FF",
245
+ "#C9C8FF",
246
+ "#9997FF",
247
+ "#6B69FF",
248
+ "#3E3CFF",
249
+ "#3230CC",
250
+ "#262499"
251
+ ],
252
+ /** Zendir Purple sequential - Secondary brand gradient */
253
+ purple: [
254
+ "#F0E8FF",
255
+ "#DCC4FF",
256
+ "#C9A8FF",
257
+ "#B48DFF",
258
+ "#9D70FF",
259
+ "#7E5ACC",
260
+ "#5F4499"
261
+ ],
262
+ /** Zendir Prussian Blue sequential - Deep brand gradient */
263
+ prussianBlue: [
264
+ "#E8ECFF",
265
+ "#C5CFF0",
266
+ "#8A9DD6",
267
+ "#4A5FD6",
268
+ "#3548C0",
269
+ "#1B2DA0",
270
+ "#0F1A60"
271
+ ],
272
+ /** Zendir gradient - Electric → Purple blend */
273
+ brand: [
274
+ "#3E3CFF",
275
+ "#5250FF",
276
+ "#6B69FF",
277
+ "#7E70FF",
278
+ "#9D70FF",
279
+ "#B48DFF",
280
+ "#C9A8FF"
281
+ ],
282
+ /** Thermal - Status colors for temperature (AstroUXDS compliant) */
283
+ thermal: [
284
+ "#00C7CB",
285
+ "#56F000",
286
+ "#FCE83A",
287
+ "#FFB302",
288
+ "#FF6B35",
289
+ "#FF3838"
290
+ ]
291
+ }
310
292
  };
311
- const STATUS_COLORS = {
312
- normal: "#56f000",
313
- // Green - System operating normally
314
- standby: "#2dccff",
315
- // Cyan - Awaiting/standby state
316
- caution: "#fce83a",
317
- // Yellow - Requires attention
318
- serious: "#ffb302",
319
- // Orange - Significant issue
320
- critical: "#ff3838",
321
- // Red - Immediate action required
322
- off: "#a4abb6"
323
- // Grey - Inactive/off state
293
+ /**
294
+ * AstroUXDS Status Colors (DO NOT MODIFY)
295
+ * Per https://www.astrouxds.com/patterns/status-system/
296
+ *
297
+ * These colors are RESERVED for status indication only.
298
+ * Per compliance requirement, do not use status colors for
299
+ * non-status data visualization.
300
+ *
301
+ * @see https://www.astrouxds.com/compliance/astro-design-compliance/
302
+ * Rule 3.1.2: Elements indicating state shall use only specified Status Colors
303
+ */
304
+ var STATUS_COLORS = {
305
+ normal: "#56f000",
306
+ standby: "#2dccff",
307
+ caution: "#fce83a",
308
+ serious: "#ffb302",
309
+ critical: "#ff3838",
310
+ off: "#a4abb6"
324
311
  };
325
- ({
326
- /** Primary accent - Zendir Electric */
327
- primary: ZENDIR_BRAND_COLORS.electric,
328
- /** Secondary accent - Zendir Purple */
329
- secondary: ZENDIR_BRAND_COLORS.purple,
330
- /** Tertiary accent - Zendir Prussian Blue */
331
- tertiary: ZENDIR_BRAND_COLORS.prussianBlue,
332
- /** Info accent - Prussian Blue Light */
333
- info: ZENDIR_BRAND_COLORS.prussianBlueLight,
334
- /** Highlight - Electric Light */
335
- highlight: ZENDIR_BRAND_COLORS.electricLight
336
- });
312
+ ZENDIR_BRAND_COLORS.electric, ZENDIR_BRAND_COLORS.purple, ZENDIR_BRAND_COLORS.prussianBlue, ZENDIR_BRAND_COLORS.prussianBlueLight, ZENDIR_BRAND_COLORS.electricLight;
313
+ /**
314
+ * Generate ECharts theme from Astro tokens
315
+ *
316
+ * Creates a theme that:
317
+ * - Uses official AstroUXDS colors for 'astro' theme variant
318
+ * - Uses Zendir brand colors for all other theme variants
319
+ * - Maintains AstroUXDS compliance (max 11 colors, 14pt min font)
320
+ * - Preserves status colors for their reserved purposes
321
+ * - Supports both dark and light modes
322
+ *
323
+ * @param tokens - Theme tokens from ThemeProvider
324
+ * @param mode - Current theme mode ('dark' | 'light')
325
+ * @param themeVariant - Optional theme variant to determine color palette
326
+ * @returns ECharts theme configuration
327
+ */
337
328
  function createAstroEChartsTheme(tokens, mode, themeVariant) {
338
- const isDark = mode === "dark";
339
- const isAstroTheme = themeVariant === "astro";
340
- const dataVizColors = isAstroTheme ? [...OFFICIAL_ASTRO_DATA_VIZ_COLORS.extended] : ASTRO_DATA_VIZ_COLORS.mixed;
341
- return {
342
- // Data visualization color palette
343
- // - 'astro' theme: Official AstroUXDS colors (teal, purple, brightblue)
344
- // - Other themes: Zendir brand colors (electric, purple, prussian blue)
345
- color: dataVizColors,
346
- // Background
347
- backgroundColor: "transparent",
348
- // Global text style - 14pt minimum per AstroUXDS; no white border on labels
349
- textStyle: {
350
- color: tokens.colors.text.primary,
351
- fontFamily: tokens.typography.fontFamily.primary,
352
- fontSize: 14,
353
- // AstroUXD minimum requirement
354
- textBorderWidth: 0,
355
- textBorderColor: "transparent"
356
- },
357
- // Title - Grey for readability, AstroUXDS compliant
358
- title: {
359
- textStyle: {
360
- color: tokens.colors.text.secondary,
361
- // Grey for headings
362
- fontSize: 14,
363
- fontWeight: "bold",
364
- textBorderWidth: 0,
365
- textBorderColor: "transparent"
366
- },
367
- subtextStyle: {
368
- color: tokens.colors.text.tertiary,
369
- fontSize: 12,
370
- textBorderWidth: 0,
371
- textBorderColor: "transparent"
372
- }
373
- },
374
- // Legend
375
- legend: {
376
- textStyle: {
377
- color: tokens.colors.text.secondary,
378
- fontSize: 12,
379
- textBorderWidth: 0,
380
- textBorderColor: "transparent"
381
- },
382
- inactiveColor: tokens.colors.text.tertiary
383
- },
384
- // Tooltip
385
- tooltip: {
386
- backgroundColor: isDark ? "rgba(27, 45, 62, 0.95)" : "rgba(255, 255, 255, 0.95)",
387
- borderColor: tokens.colors.border.default,
388
- borderWidth: 1,
389
- textStyle: {
390
- color: tokens.colors.text.primary,
391
- fontSize: 12,
392
- textBorderWidth: 0,
393
- textBorderColor: "transparent"
394
- },
395
- extraCssText: `
329
+ const isDark = mode === "dark";
330
+ const isAstroTheme = themeVariant === "astro";
331
+ return {
332
+ color: isAstroTheme ? [...OFFICIAL_ASTRO_DATA_VIZ_COLORS.extended] : ASTRO_DATA_VIZ_COLORS.mixed,
333
+ backgroundColor: "transparent",
334
+ textStyle: {
335
+ color: tokens.colors.text.primary,
336
+ fontFamily: tokens.typography.fontFamily.primary,
337
+ fontSize: 14,
338
+ textBorderWidth: 0,
339
+ textBorderColor: "transparent"
340
+ },
341
+ title: {
342
+ textStyle: {
343
+ color: tokens.colors.text.secondary,
344
+ fontSize: 14,
345
+ fontWeight: "bold",
346
+ textBorderWidth: 0,
347
+ textBorderColor: "transparent"
348
+ },
349
+ subtextStyle: {
350
+ color: tokens.colors.text.tertiary,
351
+ fontSize: 12,
352
+ textBorderWidth: 0,
353
+ textBorderColor: "transparent"
354
+ }
355
+ },
356
+ legend: {
357
+ textStyle: {
358
+ color: tokens.colors.text.secondary,
359
+ fontSize: 12,
360
+ textBorderWidth: 0,
361
+ textBorderColor: "transparent"
362
+ },
363
+ inactiveColor: tokens.colors.text.tertiary
364
+ },
365
+ tooltip: {
366
+ backgroundColor: isDark ? "rgba(27, 45, 62, 0.95)" : "rgba(255, 255, 255, 0.95)",
367
+ borderColor: tokens.colors.border.default,
368
+ borderWidth: 1,
369
+ textStyle: {
370
+ color: tokens.colors.text.primary,
371
+ fontSize: 12,
372
+ textBorderWidth: 0,
373
+ textBorderColor: "transparent"
374
+ },
375
+ extraCssText: `
396
376
  border-radius: ${tokens.borderRadius.md};
397
377
  box-shadow: ${tokens.shadows.lg};
398
378
  backdrop-filter: blur(8px);
399
379
  `
400
- },
401
- // Axis pointer / crosshair - Subtle grey for clarity
402
- axisPointer: {
403
- lineStyle: {
404
- color: tokens.colors.text.tertiary,
405
- // Subtle grey
406
- width: 1
407
- },
408
- crossStyle: {
409
- color: tokens.colors.text.tertiary,
410
- // Subtle grey
411
- width: 1
412
- }
413
- },
414
- // X Axis
415
- xAxis: {
416
- axisLine: {
417
- lineStyle: {
418
- color: tokens.colors.border.default
419
- }
420
- },
421
- axisTick: {
422
- lineStyle: {
423
- color: tokens.colors.border.muted
424
- }
425
- },
426
- axisLabel: {
427
- color: tokens.colors.text.secondary,
428
- fontSize: 12,
429
- fontFamily: tokens.typography.fontFamily.mono,
430
- // Tabular numbers
431
- textBorderWidth: 0,
432
- textBorderColor: "transparent"
433
- },
434
- splitLine: {
435
- lineStyle: {
436
- color: tokens.colors.border.muted,
437
- type: "dashed"
438
- }
439
- },
440
- nameTextStyle: {
441
- color: tokens.colors.text.secondary,
442
- fontSize: 12,
443
- textBorderWidth: 0,
444
- textBorderColor: "transparent"
445
- }
446
- },
447
- // Y Axis
448
- yAxis: {
449
- axisLine: {
450
- lineStyle: {
451
- color: tokens.colors.border.default
452
- }
453
- },
454
- axisTick: {
455
- lineStyle: {
456
- color: tokens.colors.border.muted
457
- }
458
- },
459
- axisLabel: {
460
- color: tokens.colors.text.secondary,
461
- fontSize: 12,
462
- fontFamily: tokens.typography.fontFamily.mono,
463
- // Tabular numbers
464
- textBorderWidth: 0,
465
- textBorderColor: "transparent"
466
- },
467
- splitLine: {
468
- lineStyle: {
469
- color: tokens.colors.border.muted,
470
- type: "dashed"
471
- }
472
- },
473
- nameTextStyle: {
474
- color: tokens.colors.text.secondary,
475
- fontSize: 12,
476
- textBorderWidth: 0,
477
- textBorderColor: "transparent"
478
- }
479
- },
480
- // Series defaults
481
- series: {
482
- line: {
483
- lineStyle: {
484
- width: 2
485
- },
486
- symbolSize: 6
487
- },
488
- bar: {
489
- barMaxWidth: 40,
490
- itemStyle: {
491
- borderRadius: [4, 4, 0, 0]
492
- }
493
- },
494
- pie: {
495
- itemStyle: {
496
- borderColor: tokens.colors.background.surface,
497
- borderWidth: 2
498
- },
499
- label: {
500
- color: tokens.colors.text.primary,
501
- textBorderWidth: 0,
502
- textBorderColor: "transparent",
503
- fontSize: 12
504
- }
505
- },
506
- scatter: {
507
- symbolSize: 10
508
- },
509
- gauge: {
510
- axisLine: {
511
- lineStyle: {
512
- width: 10
513
- }
514
- }
515
- }
516
- },
517
- // Data zoom - Theme-aware interactive controls
518
- dataZoom: {
519
- backgroundColor: isDark ? "rgba(27, 45, 62, 0.5)" : "rgba(234, 238, 244, 0.5)",
520
- borderColor: tokens.colors.border.muted,
521
- // Astro theme uses brightblue, others use Zendir Electric
522
- fillerColor: isAstroTheme ? "rgba(77, 172, 255, 0.15)" : "rgba(62, 60, 255, 0.15)",
523
- // Zendir Electric
524
- handleColor: isAstroTheme ? "#4dacff" : ZENDIR_BRAND_COLORS.electric,
525
- // Zendir Electric
526
- textStyle: {
527
- color: tokens.colors.text.secondary,
528
- textBorderWidth: 0,
529
- textBorderColor: "transparent"
530
- }
531
- },
532
- // Visual map (for heatmaps) - Theme-aware sequential palette
533
- visualMap: {
534
- textStyle: {
535
- color: tokens.colors.text.secondary,
536
- textBorderWidth: 0,
537
- textBorderColor: "transparent"
538
- },
539
- inRange: {
540
- // Astro theme uses official teal gradient, others use Zendir Electric
541
- color: isAstroTheme ? [...OFFICIAL_ASTRO_DATA_VIZ_COLORS.sequential.teal] : ASTRO_DATA_VIZ_COLORS.sequential.electric
542
- }
543
- },
544
- // Grid
545
- grid: {
546
- borderColor: tokens.colors.border.muted
547
- }
548
- };
380
+ },
381
+ axisPointer: {
382
+ lineStyle: {
383
+ color: tokens.colors.text.tertiary,
384
+ width: 1
385
+ },
386
+ crossStyle: {
387
+ color: tokens.colors.text.tertiary,
388
+ width: 1
389
+ }
390
+ },
391
+ xAxis: {
392
+ axisLine: { lineStyle: { color: tokens.colors.border.default } },
393
+ axisTick: { lineStyle: { color: tokens.colors.border.muted } },
394
+ axisLabel: {
395
+ color: tokens.colors.text.secondary,
396
+ fontSize: 12,
397
+ fontFamily: tokens.typography.fontFamily.mono,
398
+ textBorderWidth: 0,
399
+ textBorderColor: "transparent"
400
+ },
401
+ splitLine: { lineStyle: {
402
+ color: tokens.colors.border.muted,
403
+ type: "dashed"
404
+ } },
405
+ nameTextStyle: {
406
+ color: tokens.colors.text.secondary,
407
+ fontSize: 12,
408
+ textBorderWidth: 0,
409
+ textBorderColor: "transparent"
410
+ }
411
+ },
412
+ yAxis: {
413
+ axisLine: { lineStyle: { color: tokens.colors.border.default } },
414
+ axisTick: { lineStyle: { color: tokens.colors.border.muted } },
415
+ axisLabel: {
416
+ color: tokens.colors.text.secondary,
417
+ fontSize: 12,
418
+ fontFamily: tokens.typography.fontFamily.mono,
419
+ textBorderWidth: 0,
420
+ textBorderColor: "transparent"
421
+ },
422
+ splitLine: { lineStyle: {
423
+ color: tokens.colors.border.muted,
424
+ type: "dashed"
425
+ } },
426
+ nameTextStyle: {
427
+ color: tokens.colors.text.secondary,
428
+ fontSize: 12,
429
+ textBorderWidth: 0,
430
+ textBorderColor: "transparent"
431
+ }
432
+ },
433
+ series: {
434
+ line: {
435
+ lineStyle: { width: 2 },
436
+ symbolSize: 6
437
+ },
438
+ bar: {
439
+ barMaxWidth: 40,
440
+ itemStyle: { borderRadius: [
441
+ 4,
442
+ 4,
443
+ 0,
444
+ 0
445
+ ] }
446
+ },
447
+ pie: {
448
+ itemStyle: {
449
+ borderColor: tokens.colors.background.surface,
450
+ borderWidth: 2
451
+ },
452
+ label: {
453
+ color: tokens.colors.text.primary,
454
+ textBorderWidth: 0,
455
+ textBorderColor: "transparent",
456
+ fontSize: 12
457
+ }
458
+ },
459
+ scatter: { symbolSize: 10 },
460
+ gauge: { axisLine: { lineStyle: { width: 10 } } }
461
+ },
462
+ dataZoom: {
463
+ backgroundColor: isDark ? "rgba(27, 45, 62, 0.5)" : "rgba(234, 238, 244, 0.5)",
464
+ borderColor: tokens.colors.border.muted,
465
+ fillerColor: isAstroTheme ? "rgba(77, 172, 255, 0.15)" : "rgba(62, 60, 255, 0.15)",
466
+ handleColor: isAstroTheme ? "#4dacff" : ZENDIR_BRAND_COLORS.electric,
467
+ textStyle: {
468
+ color: tokens.colors.text.secondary,
469
+ textBorderWidth: 0,
470
+ textBorderColor: "transparent"
471
+ }
472
+ },
473
+ visualMap: {
474
+ textStyle: {
475
+ color: tokens.colors.text.secondary,
476
+ textBorderWidth: 0,
477
+ textBorderColor: "transparent"
478
+ },
479
+ inRange: { color: isAstroTheme ? [...OFFICIAL_ASTRO_DATA_VIZ_COLORS.sequential.teal] : ASTRO_DATA_VIZ_COLORS.sequential.electric }
480
+ },
481
+ grid: { borderColor: tokens.colors.border.muted }
482
+ };
549
483
  }
484
+ /**
485
+ * Get status color from value and thresholds
486
+ */
550
487
  function getStatusColor(value, thresholds) {
551
- if (thresholds.critical !== void 0 && value >= thresholds.critical) {
552
- return STATUS_COLORS.critical;
553
- }
554
- if (thresholds.serious !== void 0 && value >= thresholds.serious) {
555
- return STATUS_COLORS.serious;
556
- }
557
- if (thresholds.caution !== void 0 && value >= thresholds.caution) {
558
- return STATUS_COLORS.caution;
559
- }
560
- return STATUS_COLORS.normal;
488
+ if (thresholds.critical !== void 0 && value >= thresholds.critical) return STATUS_COLORS.critical;
489
+ if (thresholds.serious !== void 0 && value >= thresholds.serious) return STATUS_COLORS.serious;
490
+ if (thresholds.caution !== void 0 && value >= thresholds.caution) return STATUS_COLORS.caution;
491
+ return STATUS_COLORS.normal;
561
492
  }
493
+ /**
494
+ * Get color for series by index (wraps around palette)
495
+ *
496
+ * @param index - Series index
497
+ * @param palette - Color palette to use (defaults to Zendir-Astro mixed)
498
+ * @returns Hex color string
499
+ *
500
+ * @example
501
+ * ```tsx
502
+ * // Uses Zendir-Astro fusion palette
503
+ * const color = getSeriesColor(0); // #3E3CFF (Zendir Electric)
504
+ *
505
+ * // Use Zendir-only palette
506
+ * const brandColor = getSeriesColor(0, ASTRO_DATA_VIZ_COLORS.zendir);
507
+ * ```
508
+ */
562
509
  function getSeriesColor(index, palette = ASTRO_DATA_VIZ_COLORS.mixed) {
563
- return palette[index % palette.length];
510
+ return palette[index % palette.length];
564
511
  }
512
+ /**
513
+ * Get appropriate palette based on data type and optional theme
514
+ *
515
+ * @param dataType - Type of data being visualized
516
+ * @param useAstroTheme - If true, uses official AstroUXDS colors; otherwise Zendir colors
517
+ * @returns Appropriate color palette
518
+ *
519
+ * @example
520
+ * ```tsx
521
+ * // For general multi-series data (Zendir brand - default)
522
+ * const colors = getPaletteForDataType('categorical');
523
+ *
524
+ * // For official AstroUXDS colors
525
+ * const astroColors = getPaletteForDataType('categorical', true);
526
+ *
527
+ * // For Zendir brand-forward charts
528
+ * const brandColors = getPaletteForDataType('zendir');
529
+ *
530
+ * // For official AstroUXDS palette explicitly
531
+ * const officialColors = getPaletteForDataType('astro-official');
532
+ *
533
+ * // For status-based data (uses reserved AstroUXDS status colors)
534
+ * const statusColors = getPaletteForDataType('status');
535
+ * ```
536
+ */
565
537
  function getPaletteForDataType(dataType, useAstroTheme = false) {
566
- if (useAstroTheme && (dataType === "categorical" || dataType === "sequential")) {
567
- return dataType === "sequential" ? [...OFFICIAL_ASTRO_DATA_VIZ_COLORS.sequential.teal] : [...OFFICIAL_ASTRO_DATA_VIZ_COLORS.extended];
568
- }
569
- switch (dataType) {
570
- case "astro-official":
571
- return [...OFFICIAL_ASTRO_DATA_VIZ_COLORS.extended];
572
- case "categorical":
573
- return ASTRO_DATA_VIZ_COLORS.mixed;
574
- case "zendir":
575
- return ASTRO_DATA_VIZ_COLORS.zendir;
576
- case "zendirExtended":
577
- return ASTRO_DATA_VIZ_COLORS.zendirExtended;
578
- case "sequential":
579
- return ASTRO_DATA_VIZ_COLORS.sequential.electric;
580
- case "diverging":
581
- return [...ASTRO_DATA_VIZ_COLORS.sequential.electric].reverse().concat(ASTRO_DATA_VIZ_COLORS.sequential.purple);
582
- case "status":
583
- return [
584
- STATUS_COLORS.normal,
585
- STATUS_COLORS.standby,
586
- STATUS_COLORS.caution,
587
- STATUS_COLORS.serious,
588
- STATUS_COLORS.critical
589
- ];
590
- case "cool":
591
- return ASTRO_DATA_VIZ_COLORS.cool;
592
- case "warm":
593
- return ASTRO_DATA_VIZ_COLORS.warm;
594
- default:
595
- return ASTRO_DATA_VIZ_COLORS.mixed;
596
- }
538
+ if (useAstroTheme && (dataType === "categorical" || dataType === "sequential")) return dataType === "sequential" ? [...OFFICIAL_ASTRO_DATA_VIZ_COLORS.sequential.teal] : [...OFFICIAL_ASTRO_DATA_VIZ_COLORS.extended];
539
+ switch (dataType) {
540
+ case "astro-official": return [...OFFICIAL_ASTRO_DATA_VIZ_COLORS.extended];
541
+ case "categorical": return ASTRO_DATA_VIZ_COLORS.mixed;
542
+ case "zendir": return ASTRO_DATA_VIZ_COLORS.zendir;
543
+ case "zendirExtended": return ASTRO_DATA_VIZ_COLORS.zendirExtended;
544
+ case "sequential": return ASTRO_DATA_VIZ_COLORS.sequential.electric;
545
+ case "diverging": return [...ASTRO_DATA_VIZ_COLORS.sequential.electric].reverse().concat(ASTRO_DATA_VIZ_COLORS.sequential.purple);
546
+ case "status": return [
547
+ STATUS_COLORS.normal,
548
+ STATUS_COLORS.standby,
549
+ STATUS_COLORS.caution,
550
+ STATUS_COLORS.serious,
551
+ STATUS_COLORS.critical
552
+ ];
553
+ case "cool": return ASTRO_DATA_VIZ_COLORS.cool;
554
+ case "warm": return ASTRO_DATA_VIZ_COLORS.warm;
555
+ default: return ASTRO_DATA_VIZ_COLORS.mixed;
556
+ }
597
557
  }
558
+ /**
559
+ * Create gradient for area charts
560
+ */
598
561
  function createAreaGradient(color, direction = "vertical") {
599
- return {
600
- type: "linear",
601
- x: 0,
602
- y: direction === "vertical" ? 0 : 0,
603
- x2: direction === "horizontal" ? 1 : 0,
604
- y2: direction === "vertical" ? 1 : 0,
605
- colorStops: [
606
- { offset: 0, color: `${color}40` },
607
- { offset: 1, color: `${color}05` }
608
- ]
609
- };
562
+ return {
563
+ type: "linear",
564
+ x: 0,
565
+ y: direction === "vertical" ? 0 : 0,
566
+ x2: direction === "horizontal" ? 1 : 0,
567
+ y2: direction === "vertical" ? 1 : 0,
568
+ colorStops: [{
569
+ offset: 0,
570
+ color: `${color}40`
571
+ }, {
572
+ offset: 1,
573
+ color: `${color}05`
574
+ }]
575
+ };
610
576
  }
577
+ /**
578
+ * Format time for axis labels
579
+ */
611
580
  function formatTimeLabel(timestamp, format = "short") {
612
- const date = new Date(timestamp);
613
- switch (format) {
614
- case "short":
615
- return date.toLocaleTimeString([], {
616
- hour: "2-digit",
617
- minute: "2-digit",
618
- hour12: false
619
- });
620
- case "medium":
621
- return date.toLocaleTimeString([], {
622
- hour: "2-digit",
623
- minute: "2-digit",
624
- second: "2-digit",
625
- hour12: false
626
- });
627
- case "long":
628
- return date.toLocaleString([], {
629
- month: "short",
630
- day: "numeric",
631
- hour: "2-digit",
632
- minute: "2-digit",
633
- hour12: false
634
- });
635
- }
581
+ const date = new Date(timestamp);
582
+ switch (format) {
583
+ case "short": return date.toLocaleTimeString([], {
584
+ hour: "2-digit",
585
+ minute: "2-digit",
586
+ hour12: false
587
+ });
588
+ case "medium": return date.toLocaleTimeString([], {
589
+ hour: "2-digit",
590
+ minute: "2-digit",
591
+ second: "2-digit",
592
+ hour12: false
593
+ });
594
+ case "long": return date.toLocaleString([], {
595
+ month: "short",
596
+ day: "numeric",
597
+ hour: "2-digit",
598
+ minute: "2-digit",
599
+ hour12: false
600
+ });
601
+ }
636
602
  }
603
+ /**
604
+ * Format number with unit suffix
605
+ */
637
606
  function formatValueWithUnit(value, unit, precision = 2) {
638
- const formatted = Number.isInteger(value) ? value.toString() : value.toFixed(precision);
639
- return unit ? `${formatted}${unit}` : formatted;
607
+ const formatted = Number.isInteger(value) ? value.toString() : value.toFixed(precision);
608
+ return unit ? `${formatted}${unit}` : formatted;
640
609
  }
641
- function calculateAxisBounds(values, padding = 0.1) {
642
- if (values.length === 0) return { min: 0, max: 100 };
643
- const min = Math.min(...values);
644
- const max = Math.max(...values);
645
- const range = max - min || 1;
646
- return {
647
- min: min - range * padding,
648
- max: max + range * padding
649
- };
610
+ /**
611
+ * Calculate nice axis bounds
612
+ */
613
+ function calculateAxisBounds(values, padding = .1) {
614
+ if (values.length === 0) return {
615
+ min: 0,
616
+ max: 100
617
+ };
618
+ const min = Math.min(...values);
619
+ const max = Math.max(...values);
620
+ const range = max - min || 1;
621
+ return {
622
+ min: min - range * padding,
623
+ max: max + range * padding
624
+ };
650
625
  }
651
- export {
652
- ASTRO_DATA_VIZ_COLORS,
653
- OFFICIAL_ASTRO_DATA_VIZ_COLORS,
654
- STATUS_COLORS,
655
- ZENDIR_BRAND_COLORS,
656
- calculateAxisBounds,
657
- createAreaGradient,
658
- createAstroEChartsTheme,
659
- formatTimeLabel,
660
- formatValueWithUnit,
661
- getPaletteForDataType,
662
- getSeriesColor,
663
- getStatusColor
664
- };
665
- //# sourceMappingURL=theme.js.map
626
+ //#endregion
627
+ export { ASTRO_DATA_VIZ_COLORS, OFFICIAL_ASTRO_DATA_VIZ_COLORS, STATUS_COLORS, ZENDIR_BRAND_COLORS, calculateAxisBounds, createAreaGradient, createAstroEChartsTheme, formatTimeLabel, formatValueWithUnit, getPaletteForDataType, getSeriesColor, getStatusColor };
628
+
629
+ //# sourceMappingURL=theme.js.map