@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,134 +1,134 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { memo } from "react";
3
1
  import { useTheme } from "../../theme/ThemeProvider.js";
4
2
  import { classNames } from "../../utils/index.js";
5
- const Badge = memo(function Badge2({
6
- variant = "filled",
7
- size = "small",
8
- status,
9
- color,
10
- icon,
11
- onRemove,
12
- children,
13
- className = "",
14
- onClick
15
- }) {
16
- const { tokens } = useTheme();
17
- const baseColor = color ?? (status ? tokens.colors.status[status] : tokens.colors.accent.primary);
18
- const getContrastText = (bg) => {
19
- const hex = bg.replace("#", "");
20
- if (hex.length < 6) return "#ffffff";
21
- const r = parseInt(hex.slice(0, 2), 16) / 255;
22
- const g = parseInt(hex.slice(2, 4), 16) / 255;
23
- const b = parseInt(hex.slice(4, 6), 16) / 255;
24
- const toLinear = (c) => c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
25
- const L = 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);
26
- return L > 0.179 ? "#000000" : "#ffffff";
27
- };
28
- const sizeConfig = {
29
- small: {
30
- padding: `2px ${tokens.spacing.xs}`,
31
- fontSize: tokens.typography.fontSize.xs,
32
- height: "20px"
33
- },
34
- medium: {
35
- padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,
36
- fontSize: tokens.typography.fontSize.sm,
37
- height: "26px"
38
- }
39
- };
40
- const config = sizeConfig[size];
41
- const variantStyles = {
42
- filled: {
43
- backgroundColor: baseColor,
44
- color: getContrastText(baseColor),
45
- // WCAG AA: auto dark/light text based on bg luminance
46
- border: "none"
47
- },
48
- outline: {
49
- backgroundColor: "transparent",
50
- color: baseColor,
51
- border: `1px solid ${baseColor}`
52
- },
53
- subtle: {
54
- backgroundColor: `${baseColor}20`,
55
- color: baseColor,
56
- border: "none"
57
- }
58
- };
59
- const isInteractive = !!onClick;
60
- return /* @__PURE__ */ jsxs(
61
- "span",
62
- {
63
- className: classNames("zendir-badge", `zendir-badge--${variant}`, className),
64
- onClick,
65
- role: isInteractive ? "button" : void 0,
66
- tabIndex: isInteractive ? 0 : void 0,
67
- onKeyDown: onClick ? (e) => {
68
- if (e.key === "Enter" || e.key === " ") {
69
- e.preventDefault();
70
- onClick();
71
- }
72
- } : void 0,
73
- style: {
74
- display: "inline-flex",
75
- alignItems: "center",
76
- gap: tokens.spacing.xs,
77
- padding: config.padding,
78
- height: config.height,
79
- fontSize: config.fontSize,
80
- fontWeight: tokens.typography.fontWeight.medium,
81
- fontFamily: tokens.typography.fontFamily.primary,
82
- borderRadius: tokens.borderRadius.full,
83
- cursor: isInteractive ? "pointer" : "default",
84
- transition: `all ${tokens.animation.fast}`,
85
- whiteSpace: "nowrap",
86
- ...variantStyles[variant]
87
- },
88
- children: [
89
- icon,
90
- children,
91
- onRemove && /* @__PURE__ */ jsx(
92
- "button",
93
- {
94
- type: "button",
95
- onClick: (e) => {
96
- e.stopPropagation();
97
- onRemove();
98
- },
99
- "aria-label": "Remove",
100
- style: {
101
- display: "flex",
102
- alignItems: "center",
103
- justifyContent: "center",
104
- /* Visual size stays 14px; touch target expanded to 24px via padding (WCAG 2.5.8) */
105
- padding: "5px",
106
- marginLeft: tokens.spacing.xxs,
107
- width: "24px",
108
- height: "24px",
109
- backgroundColor: "transparent",
110
- border: "none",
111
- borderRadius: "50%",
112
- cursor: "pointer",
113
- color: "inherit",
114
- opacity: 0.7,
115
- transition: `opacity ${tokens.animation.fast}`,
116
- boxSizing: "border-box"
117
- },
118
- onMouseEnter: (e) => {
119
- e.currentTarget.style.opacity = "1";
120
- },
121
- onMouseLeave: (e) => {
122
- e.currentTarget.style.opacity = "0.7";
123
- },
124
- children: /* @__PURE__ */ jsx("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) })
125
- }
126
- )
127
- ]
128
- }
129
- );
3
+ import { memo } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/react/core/display/Badge.tsx
6
+ /**
7
+ * @zendir/ui - Badge/Tag Component
8
+ *
9
+ * Badge and tag following Astro UX Design System.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * <Badge>Default</Badge>
14
+ * <Badge status="normal">Active</Badge>
15
+ * <Badge variant="outline" status="caution">Warning</Badge>
16
+ * <Badge icon={<Icon name="satellite" size={12} />}>Satellite</Badge>
17
+ * ```
18
+ */
19
+ var Badge = memo(function Badge({ variant = "filled", size = "small", status, color, icon, onRemove, children, className = "", onClick }) {
20
+ const { tokens } = useTheme();
21
+ const baseColor = color ?? (status ? tokens.colors.status[status] : tokens.colors.accent.primary);
22
+ const getContrastText = (bg) => {
23
+ const hex = bg.replace("#", "");
24
+ if (hex.length < 6) return "#ffffff";
25
+ const r = parseInt(hex.slice(0, 2), 16) / 255;
26
+ const g = parseInt(hex.slice(2, 4), 16) / 255;
27
+ const b = parseInt(hex.slice(4, 6), 16) / 255;
28
+ const toLinear = (c) => c <= .03928 ? c / 12.92 : Math.pow((c + .055) / 1.055, 2.4);
29
+ return .2126 * toLinear(r) + .7152 * toLinear(g) + .0722 * toLinear(b) > .179 ? "#000000" : "#ffffff";
30
+ };
31
+ const config = {
32
+ small: {
33
+ padding: `2px ${tokens.spacing.xs}`,
34
+ fontSize: tokens.typography.fontSize.xs,
35
+ height: "20px"
36
+ },
37
+ medium: {
38
+ padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,
39
+ fontSize: tokens.typography.fontSize.sm,
40
+ height: "26px"
41
+ }
42
+ }[size];
43
+ const variantStyles = {
44
+ filled: {
45
+ backgroundColor: baseColor,
46
+ color: getContrastText(baseColor),
47
+ border: "none"
48
+ },
49
+ outline: {
50
+ backgroundColor: "transparent",
51
+ color: baseColor,
52
+ border: `1px solid ${baseColor}`
53
+ },
54
+ subtle: {
55
+ backgroundColor: `${baseColor}20`,
56
+ color: baseColor,
57
+ border: "none"
58
+ }
59
+ };
60
+ const isInteractive = !!onClick;
61
+ return /* @__PURE__ */ jsxs("span", {
62
+ className: classNames("zendir-badge", `zendir-badge--${variant}`, className),
63
+ onClick,
64
+ role: isInteractive ? "button" : void 0,
65
+ tabIndex: isInteractive ? 0 : void 0,
66
+ onKeyDown: onClick ? (e) => {
67
+ if (e.key === "Enter" || e.key === " ") {
68
+ e.preventDefault();
69
+ onClick();
70
+ }
71
+ } : void 0,
72
+ style: {
73
+ display: "inline-flex",
74
+ alignItems: "center",
75
+ gap: tokens.spacing.xs,
76
+ padding: config.padding,
77
+ height: config.height,
78
+ fontSize: config.fontSize,
79
+ fontWeight: tokens.typography.fontWeight.medium,
80
+ fontFamily: tokens.typography.fontFamily.primary,
81
+ borderRadius: tokens.borderRadius.full,
82
+ cursor: isInteractive ? "pointer" : "default",
83
+ transition: `all ${tokens.animation.fast}`,
84
+ whiteSpace: "nowrap",
85
+ ...variantStyles[variant]
86
+ },
87
+ children: [
88
+ icon,
89
+ children,
90
+ onRemove && /* @__PURE__ */ jsx("button", {
91
+ type: "button",
92
+ onClick: (e) => {
93
+ e.stopPropagation();
94
+ onRemove();
95
+ },
96
+ "aria-label": "Remove",
97
+ style: {
98
+ display: "flex",
99
+ alignItems: "center",
100
+ justifyContent: "center",
101
+ padding: "5px",
102
+ marginLeft: tokens.spacing.xxs,
103
+ width: "24px",
104
+ height: "24px",
105
+ backgroundColor: "transparent",
106
+ border: "none",
107
+ borderRadius: "50%",
108
+ cursor: "pointer",
109
+ color: "inherit",
110
+ opacity: .7,
111
+ transition: `opacity ${tokens.animation.fast}`,
112
+ boxSizing: "border-box"
113
+ },
114
+ onMouseEnter: (e) => {
115
+ e.currentTarget.style.opacity = "1";
116
+ },
117
+ onMouseLeave: (e) => {
118
+ e.currentTarget.style.opacity = "0.7";
119
+ },
120
+ children: /* @__PURE__ */ jsx("svg", {
121
+ width: "10",
122
+ height: "10",
123
+ viewBox: "0 0 24 24",
124
+ fill: "currentColor",
125
+ children: /* @__PURE__ */ jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })
126
+ })
127
+ })
128
+ ]
129
+ });
130
130
  });
131
- export {
132
- Badge
133
- };
134
- //# sourceMappingURL=Badge.js.map
131
+ //#endregion
132
+ export { Badge, Badge as default };
133
+
134
+ //# sourceMappingURL=Badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","sources":["../../../../src/react/core/display/Badge.tsx"],"sourcesContent":["/**\n * @zendir/ui - Badge/Tag Component\n * \n * Badge and tag following Astro UX Design System.\n * \n * @example\n * ```tsx\n * <Badge>Default</Badge>\n * <Badge status=\"normal\">Active</Badge>\n * <Badge variant=\"outline\" status=\"caution\">Warning</Badge>\n * <Badge icon={<Icon name=\"satellite\" size={12} />}>Satellite</Badge>\n * ```\n */\n\nimport React, { memo } from 'react';\nimport { useTheme } from '../../theme';\nimport { classNames, type StatusLevel } from '../../utils';\n\nexport type BadgeVariant = 'filled' | 'outline' | 'subtle';\nexport type BadgeSize = 'small' | 'medium';\n\nexport interface BadgeProps {\n /** Visual variant */\n variant?: BadgeVariant;\n /** Size */\n size?: BadgeSize;\n /** Status-based coloring */\n status?: StatusLevel;\n /** Custom color */\n color?: string;\n /** Icon before text */\n icon?: React.ReactNode;\n /** Removable (shows X button) */\n onRemove?: () => void;\n /** Children */\n children: React.ReactNode;\n /** Custom className */\n className?: string;\n /** Click handler */\n onClick?: () => void;\n}\n\nexport const Badge = memo(function Badge({\n variant = 'filled',\n size = 'small',\n status,\n color,\n icon,\n onRemove,\n children,\n className = '',\n onClick,\n}: BadgeProps): React.ReactElement {\n const { tokens } = useTheme();\n \n // Determine base color\n const baseColor = color ?? (status ? tokens.colors.status[status] : tokens.colors.accent.primary);\n\n // WCAG AA: choose black or white text based on background luminance\n // Uses relative luminance formula (WCAG 2.1 SC 1.4.3)\n const getContrastText = (bg: string): string => {\n const hex = bg.replace('#', '');\n if (hex.length < 6) return '#ffffff';\n const r = parseInt(hex.slice(0, 2), 16) / 255;\n const g = parseInt(hex.slice(2, 4), 16) / 255;\n const b = parseInt(hex.slice(4, 6), 16) / 255;\n const toLinear = (c: number) => c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n const L = 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);\n // If luminance > 0.179, background is bright → use dark text\n return L > 0.179 ? '#000000' : '#ffffff';\n };\n \n const sizeConfig = {\n small: {\n padding: `2px ${tokens.spacing.xs}`,\n fontSize: tokens.typography.fontSize.xs,\n height: '20px',\n },\n medium: {\n padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,\n fontSize: tokens.typography.fontSize.sm,\n height: '26px',\n },\n };\n const config = sizeConfig[size];\n \n const variantStyles: Record<BadgeVariant, React.CSSProperties> = {\n filled: {\n backgroundColor: baseColor,\n color: getContrastText(baseColor), // WCAG AA: auto dark/light text based on bg luminance\n border: 'none',\n },\n outline: {\n backgroundColor: 'transparent',\n color: baseColor,\n border: `1px solid ${baseColor}`,\n },\n subtle: {\n backgroundColor: `${baseColor}20`,\n color: baseColor,\n border: 'none',\n },\n };\n \n const isInteractive = !!onClick;\n \n return (\n <span\n className={classNames('zendir-badge', `zendir-badge--${variant}`, className)}\n onClick={onClick}\n role={isInteractive ? 'button' : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n onKeyDown={onClick ? (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onClick(); } } : undefined}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: tokens.spacing.xs,\n padding: config.padding,\n height: config.height,\n fontSize: config.fontSize,\n fontWeight: tokens.typography.fontWeight.medium,\n fontFamily: tokens.typography.fontFamily.primary,\n borderRadius: tokens.borderRadius.full,\n cursor: isInteractive ? 'pointer' : 'default',\n transition: `all ${tokens.animation.fast}`,\n whiteSpace: 'nowrap',\n ...variantStyles[variant],\n }}\n >\n {icon}\n {children}\n {onRemove && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n aria-label=\"Remove\"\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n /* Visual size stays 14px; touch target expanded to 24px via padding (WCAG 2.5.8) */\n padding: '5px',\n marginLeft: tokens.spacing.xxs,\n width: '24px',\n height: '24px',\n backgroundColor: 'transparent',\n border: 'none',\n borderRadius: '50%',\n cursor: 'pointer',\n color: 'inherit',\n opacity: 0.7,\n transition: `opacity ${tokens.animation.fast}`,\n boxSizing: 'border-box',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = '1';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = '0.7';\n }}\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n </svg>\n </button>\n )}\n </span>\n );\n});\n\nexport default Badge;\n"],"names":["Badge"],"mappings":"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"}
1
+ {"version":3,"file":"Badge.js","names":[],"sources":["../../../../src/react/core/display/Badge.tsx"],"sourcesContent":["/**\n * @zendir/ui - Badge/Tag Component\n *\n * Badge and tag following Astro UX Design System.\n *\n * @example\n * ```tsx\n * <Badge>Default</Badge>\n * <Badge status=\"normal\">Active</Badge>\n * <Badge variant=\"outline\" status=\"caution\">Warning</Badge>\n * <Badge icon={<Icon name=\"satellite\" size={12} />}>Satellite</Badge>\n * ```\n */\n\nimport React, { memo } from \"react\";\nimport { useTheme } from \"../../theme\";\nimport { classNames, type StatusLevel } from \"../../utils\";\n\nexport type BadgeVariant = \"filled\" | \"outline\" | \"subtle\";\nexport type BadgeSize = \"small\" | \"medium\";\n\nexport interface BadgeProps {\n /** Visual variant */\n variant?: BadgeVariant;\n /** Size */\n size?: BadgeSize;\n /** Status-based coloring */\n status?: StatusLevel;\n /** Custom color */\n color?: string;\n /** Icon before text */\n icon?: React.ReactNode;\n /** Removable (shows X button) */\n onRemove?: () => void;\n /** Children */\n children: React.ReactNode;\n /** Custom className */\n className?: string;\n /** Click handler */\n onClick?: () => void;\n}\n\nexport const Badge = memo(function Badge({\n variant = \"filled\",\n size = \"small\",\n status,\n color,\n icon,\n onRemove,\n children,\n className = \"\",\n onClick,\n}: BadgeProps): React.ReactElement {\n const { tokens } = useTheme();\n\n // Determine base color\n const baseColor =\n color ??\n (status ? tokens.colors.status[status] : tokens.colors.accent.primary);\n\n // WCAG AA: choose black or white text based on background luminance\n // Uses relative luminance formula (WCAG 2.1 SC 1.4.3)\n const getContrastText = (bg: string): string => {\n const hex = bg.replace(\"#\", \"\");\n if (hex.length < 6) return \"#ffffff\";\n const r = parseInt(hex.slice(0, 2), 16) / 255;\n const g = parseInt(hex.slice(2, 4), 16) / 255;\n const b = parseInt(hex.slice(4, 6), 16) / 255;\n const toLinear = (c: number) =>\n c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n const L =\n 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);\n // If luminance > 0.179, background is bright → use dark text\n return L > 0.179 ? \"#000000\" : \"#ffffff\";\n };\n\n const sizeConfig = {\n small: {\n padding: `2px ${tokens.spacing.xs}`,\n fontSize: tokens.typography.fontSize.xs,\n height: \"20px\",\n },\n medium: {\n padding: `${tokens.spacing.xs} ${tokens.spacing.sm}`,\n fontSize: tokens.typography.fontSize.sm,\n height: \"26px\",\n },\n };\n const config = sizeConfig[size];\n\n const variantStyles: Record<BadgeVariant, React.CSSProperties> = {\n filled: {\n backgroundColor: baseColor,\n color: getContrastText(baseColor), // WCAG AA: auto dark/light text based on bg luminance\n border: \"none\",\n },\n outline: {\n backgroundColor: \"transparent\",\n color: baseColor,\n border: `1px solid ${baseColor}`,\n },\n subtle: {\n backgroundColor: `${baseColor}20`,\n color: baseColor,\n border: \"none\",\n },\n };\n\n const isInteractive = !!onClick;\n\n return (\n <span\n className={classNames(\n \"zendir-badge\",\n `zendir-badge--${variant}`,\n className,\n )}\n onClick={onClick}\n role={isInteractive ? \"button\" : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n onKeyDown={\n onClick\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick();\n }\n }\n : undefined\n }\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: tokens.spacing.xs,\n padding: config.padding,\n height: config.height,\n fontSize: config.fontSize,\n fontWeight: tokens.typography.fontWeight.medium,\n fontFamily: tokens.typography.fontFamily.primary,\n borderRadius: tokens.borderRadius.full,\n cursor: isInteractive ? \"pointer\" : \"default\",\n transition: `all ${tokens.animation.fast}`,\n whiteSpace: \"nowrap\",\n ...variantStyles[variant],\n }}\n >\n {icon}\n {children}\n {onRemove && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n aria-label=\"Remove\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n /* Visual size stays 14px; touch target expanded to 24px via padding (WCAG 2.5.8) */\n padding: \"5px\",\n marginLeft: tokens.spacing.xxs,\n width: \"24px\",\n height: \"24px\",\n backgroundColor: \"transparent\",\n border: \"none\",\n borderRadius: \"50%\",\n cursor: \"pointer\",\n color: \"inherit\",\n opacity: 0.7,\n transition: `opacity ${tokens.animation.fast}`,\n boxSizing: \"border-box\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = \"1\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = \"0.7\";\n }}\n >\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n </svg>\n </button>\n )}\n </span>\n );\n});\n\nexport default Badge;\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { default as React } from 'react';
2
2
  import { AstroIconName } from './AstroIcon';
3
3
  import { StatusLevel } from '../../utils';
4
-
5
4
  export interface CardHeaderProps {
6
5
  /** Icon name (AstroIcon) */
7
6
  icon: AstroIconName | string;