@espressif/dashboard-ui-components 1.10.0 → 1.11.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 (340) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/dist/_vendor/@radix-ui/primitive/dist/index.js +9 -0
  3. package/dist/_vendor/@radix-ui/react-checkbox/dist/index.js +185 -0
  4. package/dist/_vendor/@radix-ui/react-compose-refs/dist/index.js +28 -0
  5. package/dist/_vendor/@radix-ui/react-context/dist/index.js +68 -0
  6. package/dist/_vendor/@radix-ui/react-presence/dist/index.js +127 -0
  7. package/dist/_vendor/@radix-ui/react-primitive/dist/index.js +42 -0
  8. package/dist/_vendor/@radix-ui/react-use-controllable-state/dist/index.js +55 -0
  9. package/dist/_vendor/@radix-ui/react-use-layout-effect/dist/index.js +5 -0
  10. package/dist/_vendor/@radix-ui/react-use-previous/dist/index.js +17 -0
  11. package/dist/_vendor/@radix-ui/react-use-size/dist/index.js +39 -0
  12. package/dist/_vendor/lottie-react/build/index.es.js +537 -0
  13. package/dist/_vendor/lottie-web/build/player/lottie.js +14149 -0
  14. package/dist/_virtual/_rolldown/runtime.js +24 -0
  15. package/dist/assets/illustrations/bulb-cloud-drawing.js +4 -0
  16. package/dist/assets/illustrations/rm-dashboard-update.js +4 -0
  17. package/dist/assets/illustrations/rm-data-download.js +4 -0
  18. package/dist/assets/logos/espressif/espressif-no-text.js +4 -0
  19. package/dist/assets/logos/espressif/espressif-with-text-dm.js +4 -0
  20. package/dist/assets/logos/espressif/espressif-with-text.js +4 -0
  21. package/dist/assets/logos/insights/insights-no-text.js +4 -0
  22. package/dist/assets/logos/insights/insights-with-text-dm.js +4 -0
  23. package/dist/assets/logos/insights/insights-with-text.js +4 -0
  24. package/dist/assets/logos/launchpad/launchpad-no-text-dm.js +4 -0
  25. package/dist/assets/logos/launchpad/launchpad-no-text.js +4 -0
  26. package/dist/assets/logos/launchpad/launchpad-with-text-dm.js +4 -0
  27. package/dist/assets/logos/launchpad/launchpad-with-text.js +4 -0
  28. package/dist/assets/logos/private-agents/private-agents-no-text.js +4 -0
  29. package/dist/assets/logos/private-agents/private-agents-with-text-dm.js +4 -0
  30. package/dist/assets/logos/private-agents/private-agents-with-text.js +4 -0
  31. package/dist/assets/logos/rainmaker/rainmaker-no-text.js +4 -0
  32. package/dist/assets/logos/rainmaker/rainmaker-with-text-dm.js +4 -0
  33. package/dist/assets/logos/rainmaker/rainmaker-with-text.js +4 -0
  34. package/dist/assets/logos/rainmaker-classic/rainmaker-classic-no-text-dm.js +4 -0
  35. package/dist/assets/logos/rainmaker-classic/rainmaker-classic-no-text.js +4 -0
  36. package/dist/assets/logos/rainmaker-classic/rainmaker-classic-with-text-dm.js +4 -0
  37. package/dist/assets/logos/rainmaker-classic/rainmaker-classic-with-text.js +4 -0
  38. package/dist/assets/logos/rainmaker-neo/rainmaker-neo-no-text.js +4 -0
  39. package/dist/assets/logos/rainmaker-neo/rainmaker-neo-with-text-dm.js +4 -0
  40. package/dist/assets/logos/rainmaker-neo/rainmaker-neo-with-text.js +4 -0
  41. package/dist/assets/logos/ui-components/ui-components-no-text.js +4 -0
  42. package/dist/assets/logos/ui-components/ui-components-with-text-dm.js +4 -0
  43. package/dist/assets/logos/ui-components/ui-components-with-text.js +4 -0
  44. package/dist/assets/logos/zerocode/zerocode-no-text.js +4 -0
  45. package/dist/assets/logos/zerocode/zerocode-with-text-dm.js +4 -0
  46. package/dist/assets/logos/zerocode/zerocode-with-text.js +4 -0
  47. package/dist/assets/logos/zerocode-ai/zerocode-ai-no-text.js +4 -0
  48. package/dist/assets/logos/zerocode-ai/zerocode-ai-with-text-dm.js +4 -0
  49. package/dist/assets/logos/zerocode-ai/zerocode-ai-with-text.js +4 -0
  50. package/dist/common/animated-rainmaker-logo/animated-rainmaker-logo.constants.js +18 -0
  51. package/dist/common/animated-rainmaker-logo/animated-rainmaker-logo.js +24 -0
  52. package/dist/common/animated-rainmaker-logo/rainmaker-c-logo.js +50 -0
  53. package/dist/common/animated-rainmaker-logo/use-animated-rainmaker-logo-animation.js +85 -0
  54. package/dist/common/app-logo/app-logo.js +59 -0
  55. package/dist/common/app-logo/logo-config.js +297 -0
  56. package/dist/common/copyright-card/copyright-card.js +39 -0
  57. package/dist/common/footer-card/footer-card.js +22 -0
  58. package/dist/common/index.js +8 -8
  59. package/dist/common/my-account-menu/my-account-menu.js +32 -0
  60. package/dist/common/page-loader/page-loader.js +21 -0
  61. package/dist/common/profile-card/profile-card.js +26 -0
  62. package/dist/components/accordion/accordion.js +52 -0
  63. package/dist/components/advanced-search-box/advanced-search-box.js +106 -0
  64. package/dist/components/alert/alert.js +85 -0
  65. package/dist/components/animated-containers/pop-collection-item.js +28 -0
  66. package/dist/components/async-multi-select/async-multi-select.js +199 -0
  67. package/dist/components/avatar/avatar.js +41 -0
  68. package/dist/components/button/button.js +191 -0
  69. package/dist/components/button/flash-button.js +110 -0
  70. package/dist/components/button/invert-button.js +13 -0
  71. package/dist/components/calendar/calendar.js +105 -0
  72. package/dist/components/cards/animated-card/animated-card-animations.js +57 -0
  73. package/dist/components/cards/animated-card/animated-card.js +42 -0
  74. package/dist/components/cards/basic-details-card.js +46 -0
  75. package/dist/components/cards/collapsible-card.js +48 -0
  76. package/dist/components/cards/no-data-card/no-data-card.js +30 -0
  77. package/dist/components/cards/section-card.js +265 -0
  78. package/dist/components/cards/simple-card.js +24 -0
  79. package/dist/components/carousel/carousel.js +158 -0
  80. package/dist/components/chart/area-chart.js +135 -0
  81. package/dist/components/chart/bar-chart.js +151 -0
  82. package/dist/components/chart/chart-colors.js +85 -0
  83. package/dist/components/chart/chart-series-data.js +53 -0
  84. package/dist/components/chart/chart.js +147 -0
  85. package/dist/components/chart/chart.types.js +7 -0
  86. package/dist/components/chart/composed-chart.js +182 -0
  87. package/dist/components/chart/donut-chart.js +177 -0
  88. package/dist/components/chart/line-chart.js +137 -0
  89. package/dist/components/chart/treemap-chart.js +294 -0
  90. package/dist/components/circular-progress/circular-progress.js +125 -0
  91. package/dist/components/code-editor/code-editor.js +235 -0
  92. package/dist/components/code-editor/code-editor.utils.js +122 -0
  93. package/dist/components/code-editor/use-code-editor-keys.js +79 -0
  94. package/dist/components/code-editor/use-highlighted-html.js +102 -0
  95. package/dist/components/confirmation-dialog/confirmation-dialog.js +72 -0
  96. package/dist/components/content-container/content-container.js +20 -0
  97. package/dist/components/copiable-text/copiable-text.js +46 -0
  98. package/dist/components/data-table/data-table.js +186 -0
  99. package/dist/components/data-table/responsive-columns.js +65 -0
  100. package/dist/components/data-table/row-actions.js +27 -0
  101. package/dist/components/data-table/sticky-columns.js +71 -0
  102. package/dist/components/data-table/table-body.js +57 -0
  103. package/dist/components/data-table/table-header.js +21 -0
  104. package/dist/components/date-picker/date-picker.js +95 -0
  105. package/dist/components/date-range-picker/date-range-picker.js +301 -0
  106. package/dist/components/date-range-picker/presets.js +174 -0
  107. package/dist/components/date-time-picker/date-time-picker.js +144 -0
  108. package/dist/components/date-time-picker/date-time-picker.utils.js +32 -0
  109. package/dist/components/device-icon/device-icon.config.js +194 -0
  110. package/dist/components/device-icon/device-icon.js +17 -0
  111. package/dist/components/device-icon/icons/air-conditioner.js +22 -0
  112. package/dist/components/device-icon/icons/blind.js +24 -0
  113. package/dist/components/device-icon/icons/dimmer.js +14 -0
  114. package/dist/components/device-icon/icons/extension-board.js +42 -0
  115. package/dist/components/device-icon/icons/fan.js +14 -0
  116. package/dist/components/device-icon/icons/knob.js +14 -0
  117. package/dist/components/device-icon/icons/led-strip.js +22 -0
  118. package/dist/components/device-icon/icons/light.js +14 -0
  119. package/dist/components/device-icon/icons/refrigerator.js +18 -0
  120. package/dist/components/device-icon/icons/retro-switch.js +18 -0
  121. package/dist/components/device-icon/icons/router.js +20 -0
  122. package/dist/components/device-icon/icons/sensor.js +20 -0
  123. package/dist/components/device-icon/icons/socket.js +19 -0
  124. package/dist/components/device-icon/icons/switch.js +19 -0
  125. package/dist/components/device-icon/icons/thermostat.js +21 -0
  126. package/dist/components/device-icon/icons/washing-machine.js +22 -0
  127. package/dist/components/device-icon/match-device.js +61 -0
  128. package/dist/components/dynamic-list/dynamic-list.js +445 -0
  129. package/dist/components/error-display/full-size-error/full-size-error.js +20 -0
  130. package/dist/components/error-display/inline-error/inline-error.js +12 -0
  131. package/dist/components/file-input/file-input.js +318 -0
  132. package/dist/components/file-upload/file-upload.js +317 -0
  133. package/dist/components/filters-bar/filters-bar.js +36 -0
  134. package/dist/components/fullscreen-dialog/fullscreen-dialog.js +68 -0
  135. package/dist/components/icon-avatar/icon-avatar.js +130 -0
  136. package/dist/components/icon-text-action-card/icon-text-action-card.js +190 -0
  137. package/dist/components/illustration/illustration-registry.js +37 -0
  138. package/dist/components/illustration/illustration-variants.js +21 -0
  139. package/dist/components/illustration/illustration.js +68 -0
  140. package/dist/components/index.d.ts +0 -20
  141. package/dist/components/index.js +134 -6
  142. package/dist/components/key-value-manager/key-value-manager-add-popover.js +126 -0
  143. package/dist/components/key-value-manager/key-value-manager-field.js +47 -0
  144. package/dist/components/key-value-manager/key-value-manager-table.js +188 -0
  145. package/dist/components/key-value-manager/key-value-manager.js +111 -0
  146. package/dist/components/key-value-manager/key-value-manager.props.js +28 -0
  147. package/dist/components/key-value-manager/key-value-manager.utils.js +21 -0
  148. package/dist/components/link/link.js +67 -0
  149. package/dist/components/list/dropdown-list-item.js +60 -0
  150. package/dist/components/list/list-item.utils.js +76 -0
  151. package/dist/components/list/list.js +49 -0
  152. package/dist/components/list/list.props.js +27 -0
  153. package/dist/components/list/standard-list-item.js +66 -0
  154. package/dist/components/list-details/list-details-item-button.js +46 -0
  155. package/dist/components/list-details/list-details-item-dropdown.js +112 -0
  156. package/dist/components/list-details/list-details-item-strip.js +125 -0
  157. package/dist/components/list-details/list-details.js +148 -0
  158. package/dist/components/lottie-animation-container/lottie-animation-container.js +31 -0
  159. package/dist/components/lottie-animations/animation-data/access-denied.js +3980 -0
  160. package/dist/components/lottie-animations/animation-data/active.js +825 -0
  161. package/dist/components/lottie-animations/animation-data/bar-chart.js +610 -0
  162. package/dist/components/lottie-animations/animation-data/chart-loading.js +5368 -0
  163. package/dist/components/lottie-animations/animation-data/cloud-download.js +1660 -0
  164. package/dist/components/lottie-animations/animation-data/cloud-sync.js +932 -0
  165. package/dist/components/lottie-animations/animation-data/coud-upload.js +7060 -0
  166. package/dist/components/lottie-animations/animation-data/cross-throb.js +1506 -0
  167. package/dist/components/lottie-animations/animation-data/dashboard-loading.js +14330 -0
  168. package/dist/components/lottie-animations/animation-data/error-spread-out.js +5567 -0
  169. package/dist/components/lottie-animations/animation-data/error.js +1211 -0
  170. package/dist/components/lottie-animations/animation-data/green-success.js +14826 -0
  171. package/dist/components/lottie-animations/animation-data/inactive.js +723 -0
  172. package/dist/components/lottie-animations/animation-data/light.js +2678 -0
  173. package/dist/components/lottie-animations/animation-data/lock.js +900 -0
  174. package/dist/components/lottie-animations/animation-data/lock2.js +1686 -0
  175. package/dist/components/lottie-animations/animation-data/locked.js +641 -0
  176. package/dist/components/lottie-animations/animation-data/search-error.js +954 -0
  177. package/dist/components/lottie-animations/animation-data/security.js +4121 -0
  178. package/dist/components/lottie-animations/animation-data/success.js +404 -0
  179. package/dist/components/lottie-animations/animation-data/verification-in-progress.js +10138 -0
  180. package/dist/components/lottie-animations/animation-data/warning.js +843 -0
  181. package/dist/components/lottie-animations/verification-in-progress/verification-in-progress.js +19 -0
  182. package/dist/components/markdown-content/markdown-content.components.js +114 -0
  183. package/dist/components/markdown-content/markdown-content.js +39 -0
  184. package/dist/components/menu/menu.js +19 -0
  185. package/dist/components/monospace-content/monospace-content.js +80 -0
  186. package/dist/components/nav-bar/nav-bar-details-panel.js +51 -0
  187. package/dist/components/nav-bar/nav-bar-mobile-menu.js +105 -0
  188. package/dist/components/nav-bar/nav-bar.js +449 -0
  189. package/dist/components/nav-bar/use-nav-bar-overflow.js +74 -0
  190. package/dist/components/nav-bar/use-nav-bar-scroll.js +42 -0
  191. package/dist/components/overflow-badge-list/overflow-badge-list.js +58 -0
  192. package/dist/components/page-container/page-container-skeleton.js +72 -0
  193. package/dist/components/page-container/page-container.js +93 -0
  194. package/dist/components/pagination/pagination.js +96 -0
  195. package/dist/components/pagination/pagination.props.js +16 -0
  196. package/dist/components/progress-bar/progress-bar.js +106 -0
  197. package/dist/components/radio-group/radio-group.js +41 -0
  198. package/dist/components/requirement-list/requirement-list.js +83 -0
  199. package/dist/components/scrollable-sections/scrollable-sections.js +270 -0
  200. package/dist/components/search-box/search-box.js +54 -0
  201. package/dist/components/search-field-shell.js +24 -0
  202. package/dist/components/selectable-card-list/checkbox-card-list.js +85 -0
  203. package/dist/components/selectable-card-list/radio-card-list.js +99 -0
  204. package/dist/components/selectable-card-list/selectable-card-list-shared.js +135 -0
  205. package/dist/components/selectable-card-list/selectable-card-list.js +34 -0
  206. package/dist/components/sidebar/sidebar.js +344 -0
  207. package/dist/components/sidebar/types.js +6 -0
  208. package/dist/components/simple-clickable-card/simple-clickable-card-shared.js +309 -0
  209. package/dist/components/simple-clickable-card/simple-clickable-card.js +106 -0
  210. package/dist/components/simple-info-card/simple-info-card.js +154 -0
  211. package/dist/components/simple-list/simple-list.js +146 -0
  212. package/dist/components/simple-paginated-list/simple-paginated-list.js +178 -0
  213. package/dist/components/simplified-date/simplified-date.js +56 -0
  214. package/dist/components/skeletons/table-skeleton.js +16 -0
  215. package/dist/components/spinner/spinner.js +25 -0
  216. package/dist/components/stat-card/stat-card.js +206 -0
  217. package/dist/components/status-badge/status-badge.js +108 -0
  218. package/dist/components/status-card-list/status-card-list.js +282 -0
  219. package/dist/components/tag/tag.js +144 -0
  220. package/dist/components/tag-input/tag-input.js +161 -0
  221. package/dist/components/text-effects/glitch-effect/glitch-text.js +115 -0
  222. package/dist/components/text-effects/gradient-text/gradient-text.js +32 -0
  223. package/dist/components/text-effects/highlight-text/highlight-text.js +35 -0
  224. package/dist/components/text-effects/parse-text-markup.js +53 -0
  225. package/dist/components/text-effects/shimmer-text/shimmer-text.js +67 -0
  226. package/dist/components/time-picker/time-picker.js +23 -0
  227. package/dist/components/toast/toast.js +126 -0
  228. package/dist/components/togglable-items-list/togglable-items-list.js +28 -0
  229. package/dist/components/tooltip/tooltip.js +21 -0
  230. package/dist/components/transfer-list/transfer-list.js +413 -0
  231. package/dist/components/truncated-line-with-tooltip/truncated-line-with-tooltip.js +61 -0
  232. package/dist/components/typography/typography-variants.js +41 -0
  233. package/dist/components/typography/typography.js +15 -0
  234. package/dist/components/user-type-badge/user-type-badge.js +40 -0
  235. package/dist/components/user-type-badge/user-type-badge.registry.js +17 -0
  236. package/dist/components/vertical-stepper/vertical-stepper.js +171 -0
  237. package/dist/core/alert.js +33 -0
  238. package/dist/core/animate-ui/components/animate/code-header.js +30 -0
  239. package/dist/core/animate-ui/components/animate/code.js +35 -0
  240. package/dist/core/animate-ui/components/animate/tabs.js +188 -0
  241. package/dist/core/animate-ui/components/animate/tooltip.js +39 -0
  242. package/dist/core/animate-ui/components/base/preview-card.js +29 -0
  243. package/dist/core/animate-ui/components/base/progress.js +32 -0
  244. package/dist/core/animate-ui/components/base/radio.js +24 -0
  245. package/dist/core/animate-ui/components/buttons/copy.js +95 -0
  246. package/dist/core/animate-ui/components/radix/accordion.js +36 -0
  247. package/dist/core/animate-ui/components/radix/dialog.js +60 -0
  248. package/dist/core/animate-ui/components/radix/dropdown-menu.js +129 -0
  249. package/dist/core/animate-ui/components/radix/sheet.js +110 -0
  250. package/dist/core/animate-ui/components/radix/sidebar.js +416 -0
  251. package/dist/core/animate-ui/components/radix/switch.js +34 -0
  252. package/dist/core/animate-ui/components/radix/toggle-group.js +115 -0
  253. package/dist/core/animate-ui/components/radix/toggle.js +24 -0
  254. package/dist/core/animate-ui/primitives/animate/code-block.js +131 -0
  255. package/dist/core/animate-ui/primitives/animate/escape-html.js +7 -0
  256. package/dist/core/animate-ui/primitives/animate/shiki-highlighter.js +64 -0
  257. package/dist/core/animate-ui/primitives/animate/slot.js +39 -0
  258. package/dist/core/animate-ui/primitives/animate/tabs.js +202 -0
  259. package/dist/core/animate-ui/primitives/animate/tooltip.js +351 -0
  260. package/dist/core/animate-ui/primitives/base/preview-card.js +107 -0
  261. package/dist/core/animate-ui/primitives/base/progress.js +60 -0
  262. package/dist/core/animate-ui/primitives/base/radio.js +83 -0
  263. package/dist/core/animate-ui/primitives/buttons/button.js +15 -0
  264. package/dist/core/animate-ui/primitives/effects/highlight.js +407 -0
  265. package/dist/core/animate-ui/primitives/radix/accordion.js +76 -0
  266. package/dist/core/animate-ui/primitives/radix/dialog.js +136 -0
  267. package/dist/core/animate-ui/primitives/radix/dropdown-menu.js +305 -0
  268. package/dist/core/animate-ui/primitives/radix/sheet.js +165 -0
  269. package/dist/core/animate-ui/primitives/radix/switch.js +86 -0
  270. package/dist/core/animate-ui/primitives/radix/toggle-group.js +100 -0
  271. package/dist/core/animate-ui/primitives/texts/counting-number.js +75 -0
  272. package/dist/core/avatar.js +32 -0
  273. package/dist/core/badge.js +27 -0
  274. package/dist/core/breadcrumb.js +62 -0
  275. package/dist/core/button/button.js +43 -0
  276. package/dist/core/button/craft-button.js +78 -0
  277. package/dist/core/button-group.js +38 -0
  278. package/dist/core/button.js +40 -0
  279. package/dist/core/card.js +42 -0
  280. package/dist/core/carousel/carousel.js +149 -0
  281. package/dist/core/checkbox/motion-checkbox.js +103 -0
  282. package/dist/core/collapsible.js +54 -0
  283. package/dist/core/combobox/combobox.js +85 -0
  284. package/dist/core/command.js +61 -0
  285. package/dist/core/field-end-icons.js +36 -0
  286. package/dist/core/field-label-row.js +33 -0
  287. package/dist/core/form.js +92 -0
  288. package/dist/core/hooks/use-controlled-state.js +27 -0
  289. package/dist/core/hooks/use-data-state.js +39 -0
  290. package/dist/core/hooks/use-is-in-view.js +18 -0
  291. package/dist/core/hooks/use-mobile.js +19 -0
  292. package/dist/core/hooks/use-reveal-on-scroll-up.js +141 -0
  293. package/dist/core/hooks/use-scroll-overflow.js +50 -0
  294. package/dist/core/index.js +18 -52
  295. package/dist/core/input/input-password.js +30 -0
  296. package/dist/core/input/input.js +147 -0
  297. package/dist/core/input-otp/input-otp.js +183 -0
  298. package/dist/core/label.js +15 -0
  299. package/dist/core/popover.js +31 -0
  300. package/dist/core/scroll-area.js +42 -0
  301. package/dist/core/select.js +121 -0
  302. package/dist/core/separator.js +40 -0
  303. package/dist/core/skeleton.js +11 -0
  304. package/dist/core/table.js +59 -0
  305. package/dist/core/textarea/textarea.js +97 -0
  306. package/dist/core/utils/get-strict-context.js +18 -0
  307. package/dist/index.js +148 -9
  308. package/dist/layouts/entry-layout/entry-layout-bg.js +4 -0
  309. package/dist/layouts/entry-layout/entry-layout.js +52 -0
  310. package/dist/layouts/index.js +7 -6
  311. package/dist/layouts/workspace-layout/account-menu/account-menu.js +108 -0
  312. package/dist/layouts/workspace-layout/breadcrumbs/derive-breadcrumbs.js +37 -0
  313. package/dist/layouts/workspace-layout/breadcrumbs/workspace-breadcrumbs.js +22 -0
  314. package/dist/layouts/workspace-layout/footer/footer.js +15 -0
  315. package/dist/layouts/workspace-layout/header/header.js +54 -0
  316. package/dist/layouts/workspace-layout/workspace-layout.js +157 -0
  317. package/dist/tailwind-preset.js +3 -4
  318. package/dist/utils/cn.js +8 -0
  319. package/dist/utils/color.js +72 -0
  320. package/dist/utils/index.js +3 -2
  321. package/dist/utils/path-match.js +17 -0
  322. package/dist/utils/silver-shine.js +63 -0
  323. package/dist/utils/variant-gradient-underlay.js +45 -0
  324. package/dist/utils/variant.js +426 -0
  325. package/package.json +7 -4
  326. package/dist/chunk-2GDYZAKR.js +0 -505
  327. package/dist/chunk-ALCWXFUC.js +0 -733
  328. package/dist/chunk-CDHBLANU.js +0 -59
  329. package/dist/chunk-LUESSJAF.js +0 -70068
  330. package/dist/chunk-TMORRNEB.js +0 -323
  331. package/dist/chunk-TRTQSARU.js +0 -31
  332. package/dist/chunk-VU4CZ76T.js +0 -43
  333. package/dist/chunk-XNLCVHBC.js +0 -364
  334. package/dist/chunk-Z4776NRY.js +0 -4347
  335. package/src/assets/illustrations/add-to-group.svg +0 -32
  336. package/src/assets/illustrations/chip.svg +0 -51
  337. package/src/assets/illustrations/create-new-group.svg +0 -27
  338. package/src/assets/illustrations/new-ota.svg +0 -61
  339. package/src/assets/illustrations/secured-key.svg +0 -48
  340. /package/dist/assets/{entry-layout-bg-JPI7GJ42.webp → entry-layout-bg-DUM0UhT3.webp} +0 -0
@@ -0,0 +1,445 @@
1
+ import { cn } from "../../utils/cn.js";
2
+ import { Avatar, AvatarFallback } from "../../core/avatar.js";
3
+ import { BasicDetailsCard } from "../cards/basic-details-card.js";
4
+ import { Badge } from "../../core/badge.js";
5
+ import { Link } from "../link/link.js";
6
+ import { CopiableText } from "../copiable-text/copiable-text.js";
7
+ import { Tag as Tag$1 } from "../tag/tag.js";
8
+ import { Alert } from "../alert/alert.js";
9
+ import { Code } from "../../core/animate-ui/components/animate/code.js";
10
+ import { MonospaceContent } from "../monospace-content/monospace-content.js";
11
+ import { SimpleList } from "../simple-list/simple-list.js";
12
+ import { cloneElement, createElement, isValidElement } from "react";
13
+ import { jsx, jsxs } from "react/jsx-runtime";
14
+ import { Bolt, Check, X } from "lucide-react";
15
+ import { format, isValid } from "date-fns";
16
+ import { startCase } from "lodash-es";
17
+ //#region src/components/dynamic-list/dynamic-list.tsx
18
+ function isPrimitive(value) {
19
+ if (value === null) return true;
20
+ const t = typeof value;
21
+ return t === "string" || t === "number" || t === "boolean" || t === "undefined";
22
+ }
23
+ function formatValue(value) {
24
+ if (value === null || value === void 0) return "-";
25
+ if (isPrimitive(value)) return String(value);
26
+ return JSON.stringify(value);
27
+ }
28
+ /** `typeof value === "object"` includes arrays; excludes `null`. */
29
+ function isStructuredNonPrimitive(value) {
30
+ return value !== null && typeof value === "object";
31
+ }
32
+ function stringifyForCode(value) {
33
+ try {
34
+ return JSON.stringify(value, null, 2);
35
+ } catch {
36
+ return String(value);
37
+ }
38
+ }
39
+ function isPlainStringArray(value) {
40
+ return Array.isArray(value) && value.every((el) => typeof el === "string");
41
+ }
42
+ function isTagsPropertyKey(key) {
43
+ return key.toLowerCase().includes("tags");
44
+ }
45
+ function parseNameColonValue(entry) {
46
+ const i = entry.indexOf(":");
47
+ if (i === -1) return null;
48
+ return {
49
+ name: entry.slice(0, i),
50
+ value: entry.slice(i + 1)
51
+ };
52
+ }
53
+ function renderOverflowSafeBadgeText(text) {
54
+ return /* @__PURE__ */ jsx("span", {
55
+ className: "min-w-0 break-all",
56
+ children: text
57
+ });
58
+ }
59
+ function renderPlainStringArrayBadges(strings) {
60
+ if (strings.length === 0) return "-";
61
+ return /* @__PURE__ */ jsx("div", {
62
+ className: "flex min-w-0 w-full flex-wrap justify-end gap-1",
63
+ children: strings.map((s, i) => /* @__PURE__ */ jsx(Badge, {
64
+ variant: "outline",
65
+ color: "gray",
66
+ className: "min-w-0 max-w-full",
67
+ children: renderOverflowSafeBadgeText(s)
68
+ }, i))
69
+ });
70
+ }
71
+ function renderTagsPropertyArray(strings) {
72
+ if (strings.length === 0) return "-";
73
+ return /* @__PURE__ */ jsx("div", {
74
+ className: "flex min-w-0 w-full flex-wrap justify-start gap-2",
75
+ children: strings.map((s, i) => {
76
+ const parsed = parseNameColonValue(s);
77
+ if (parsed != null) return /* @__PURE__ */ jsx(Tag$1, {
78
+ name: parsed.name,
79
+ value: parsed.value,
80
+ variant: "outline",
81
+ color: "gray"
82
+ }, i);
83
+ return /* @__PURE__ */ jsx(Badge, {
84
+ variant: "outline",
85
+ color: "gray",
86
+ className: "min-w-0 max-w-full",
87
+ children: renderOverflowSafeBadgeText(s)
88
+ }, i);
89
+ })
90
+ });
91
+ }
92
+ function isTimestampKey(key) {
93
+ return key.toLowerCase().includes("timestamp") || /_ts$/i.test(key);
94
+ }
95
+ function formatNumericTimestamp(n) {
96
+ if (!Number.isFinite(n)) return null;
97
+ const abs = Math.abs(n);
98
+ let ms;
99
+ if (abs < 1e11) ms = n * 1e3;
100
+ else if (abs < 0x5af3107a4000) ms = n;
101
+ else if (abs < 0x16345785d8a0000) ms = n / 1e3;
102
+ else ms = n / 1e6;
103
+ const d = new Date(ms);
104
+ if (!isValid(d)) return null;
105
+ const y = d.getFullYear();
106
+ if (y < 1970 || y > 2200) return null;
107
+ return format(d, "PPpp");
108
+ }
109
+ function formatTimestampStringForKey(key, value) {
110
+ if (typeof value !== "number") return null;
111
+ if (!isTimestampKey(key)) return null;
112
+ return formatNumericTimestamp(value);
113
+ }
114
+ /** Aligns with `Link` external detection for absolute / protocol-relative URLs. */
115
+ var URL_EXTERNAL_PROTOCOL = /^(https?:|mailto:|tel:|sms:|ftp:)/i;
116
+ var URL_PROTOCOL_RELATIVE = /^\/\//;
117
+ function isLikelyUrlString(s) {
118
+ if (/[\n\r]/.test(s)) return false;
119
+ if (URL_EXTERNAL_PROTOCOL.test(s)) try {
120
+ new URL(s);
121
+ return true;
122
+ } catch {
123
+ return false;
124
+ }
125
+ if (URL_PROTOCOL_RELATIVE.test(s)) try {
126
+ new URL(`https:${s}`);
127
+ return true;
128
+ } catch {
129
+ return false;
130
+ }
131
+ if (s.startsWith("/")) return /^\/[A-Za-z0-9._~!$&'()*+,;=:@%-/]*$/.test(s);
132
+ return false;
133
+ }
134
+ function resolveEffectiveType(key, value, rowMeta) {
135
+ const explicit = rowMeta?.type;
136
+ if (explicit != null) return explicit;
137
+ if (rowMeta?.valueFormatter != null || rowMeta?.valueRender != null) return;
138
+ if (!key.endsWith("_url")) return void 0;
139
+ if (typeof value !== "string") return void 0;
140
+ const trimmed = value.trim();
141
+ if (trimmed.length === 0) return void 0;
142
+ if (!isLikelyUrlString(trimmed)) return void 0;
143
+ return "url";
144
+ }
145
+ function renderBooleanIcon(value) {
146
+ if (value) return /* @__PURE__ */ jsx(Check, {
147
+ className: "h-4 w-4 shrink-0 text-success",
148
+ "aria-hidden": true
149
+ });
150
+ return /* @__PURE__ */ jsx(X, {
151
+ className: "h-4 w-4 shrink-0 text-error",
152
+ "aria-hidden": true
153
+ });
154
+ }
155
+ function forcesColumnLayout(type) {
156
+ return type === "info" || type === "error" || type === "mono" || type === "url";
157
+ }
158
+ /** Default JSON/Code rendering for objects & arrays; stacks label above value like info/mono. */
159
+ function rowUsesDefaultStructuredCode(value, rowMeta) {
160
+ return isStructuredNonPrimitive(value) && !rowMeta?.valueRender && !rowMeta?.valueFormatter && !isPlainStringArray(value);
161
+ }
162
+ /** Keys containing "tags" with a string[] value stack label above tags like info/mono/url. */
163
+ function rowUsesTagsPropertyArray(key, value, rowMeta) {
164
+ return isTagsPropertyKey(key) && isPlainStringArray(value) && !rowMeta?.valueRender && !rowMeta?.valueFormatter;
165
+ }
166
+ var CODE_DISPLAY_CLASSNAME = "min-w-0 w-full max-w-full max-h-[200px] text-start [&_pre]:text-start";
167
+ var DYNAMIC_LIST_SIZE_STYLES = {
168
+ sm: {
169
+ listGap: "gap-4",
170
+ rowGap: "gap-3",
171
+ itemGap: "gap-1.5",
172
+ labelTypography: "text-xs font-semibold",
173
+ valueTypography: "text-xs",
174
+ avatarSize: "h-8 w-8",
175
+ avatarFallbackTypography: "text-[10px]",
176
+ rowIcon: "h-3 w-3 shrink-0"
177
+ },
178
+ default: {
179
+ listGap: "gap-5",
180
+ rowGap: "gap-4",
181
+ itemGap: "gap-2",
182
+ labelTypography: "text-sm font-semibold",
183
+ valueTypography: "text-sm",
184
+ avatarSize: "h-10 w-10",
185
+ avatarFallbackTypography: "text-xs",
186
+ rowIcon: "h-3.5 w-3.5 shrink-0"
187
+ },
188
+ lg: {
189
+ listGap: "gap-6",
190
+ rowGap: "gap-5",
191
+ itemGap: "gap-3",
192
+ labelTypography: "text-base font-semibold",
193
+ valueTypography: "text-base",
194
+ avatarSize: "h-12 w-12",
195
+ avatarFallbackTypography: "text-sm",
196
+ rowIcon: "h-4 w-4 shrink-0"
197
+ }
198
+ };
199
+ function effectiveRowDirection(effectiveType, rowMeta, listDirection, value, key) {
200
+ if (forcesColumnLayout(effectiveType)) return "column";
201
+ if (rowUsesDefaultStructuredCode(value, rowMeta)) return "column";
202
+ if (rowUsesTagsPropertyArray(key, value, rowMeta)) return "column";
203
+ return listDirection;
204
+ }
205
+ /**
206
+ * When non-null, the value is shown as unstyled `formatValue` text (no meta type, badges, Code, etc.)
207
+ * and should be wrapped with `CopiableText`.
208
+ */
209
+ function getPlainTextForCopiable(value, rowMeta, key, opts, effectiveType) {
210
+ if (effectiveType != null) return null;
211
+ if (rowMeta?.valueRender != null || rowMeta?.valueFormatter != null) return null;
212
+ if (isTagsPropertyKey(key) && isPlainStringArray(value)) return null;
213
+ if (isPlainStringArray(value)) return null;
214
+ if (opts.useIconsForBoolean && typeof value === "boolean") return null;
215
+ if (isStructuredNonPrimitive(value)) return null;
216
+ if (typeof value === "number" && (rowMeta?.type === "timestamp" || isTimestampKey(key))) {
217
+ if (formatNumericTimestamp(value) != null) return null;
218
+ }
219
+ return formatValue(value);
220
+ }
221
+ function resolveBaseValueNode(value, rowMeta, key, opts) {
222
+ if (rowMeta?.valueRender) return rowMeta.valueRender(value);
223
+ if (rowMeta?.valueFormatter) return rowMeta.valueFormatter(value);
224
+ if (isTagsPropertyKey(key) && isPlainStringArray(value)) return renderTagsPropertyArray(value);
225
+ if (isPlainStringArray(value)) return renderPlainStringArrayBadges(value);
226
+ if (opts.useIconsForBoolean && typeof value === "boolean") return renderBooleanIcon(value);
227
+ if (typeof value === "number" && (rowMeta?.type === "timestamp" || isTimestampKey(key))) {
228
+ const ts = formatNumericTimestamp(value);
229
+ if (ts != null) return ts;
230
+ }
231
+ if (isStructuredNonPrimitive(value)) return /* @__PURE__ */ jsx(Code, {
232
+ className: CODE_DISPLAY_CLASSNAME,
233
+ code: stringifyForCode(value),
234
+ lang: "json"
235
+ });
236
+ return formatValue(value);
237
+ }
238
+ function resolveMonoString(value, rowMeta, key) {
239
+ if (rowMeta?.valueFormatter) return rowMeta.valueFormatter(value);
240
+ const ts = formatTimestampStringForKey(key, value);
241
+ if (ts != null) return ts;
242
+ return formatValue(value);
243
+ }
244
+ function wrapTypedValue(value, rowMeta, key, opts, effectiveType) {
245
+ const base = resolveBaseValueNode(value, rowMeta, key, opts);
246
+ const t = effectiveType;
247
+ if (t == null) {
248
+ const plainText = getPlainTextForCopiable(value, rowMeta, key, opts, effectiveType);
249
+ if (plainText != null) return /* @__PURE__ */ jsx(CopiableText, {
250
+ text: plainText,
251
+ className: "min-w-0 max-w-full"
252
+ });
253
+ return base;
254
+ }
255
+ switch (t) {
256
+ case "badge": return /* @__PURE__ */ jsx(Badge, {
257
+ variant: "solid",
258
+ color: "gray",
259
+ className: cn("w-fit max-w-full self-start font-medium", DYNAMIC_LIST_SIZE_STYLES[opts.size].valueTypography),
260
+ children: base
261
+ });
262
+ case "info": return /* @__PURE__ */ jsx(Alert, {
263
+ variant: "soft",
264
+ color: "info",
265
+ type: "info",
266
+ size: opts.size,
267
+ children: base
268
+ });
269
+ case "error": return /* @__PURE__ */ jsx(Alert, {
270
+ variant: "soft",
271
+ color: "error",
272
+ type: "error",
273
+ size: opts.size,
274
+ children: base
275
+ });
276
+ case "mono":
277
+ if (rowMeta?.valueRender) return base;
278
+ if (!rowMeta?.valueFormatter && isPlainStringArray(value)) return base;
279
+ if (!rowMeta?.valueRender && !rowMeta?.valueFormatter && opts.useIconsForBoolean && typeof value === "boolean") return base;
280
+ if (isStructuredNonPrimitive(value) && !rowMeta?.valueFormatter && !isPlainStringArray(value)) return /* @__PURE__ */ jsx(Code, {
281
+ className: CODE_DISPLAY_CLASSNAME,
282
+ code: stringifyForCode(value),
283
+ lang: "json"
284
+ });
285
+ return /* @__PURE__ */ jsx(MonospaceContent, {
286
+ value: resolveMonoString(value, rowMeta, key),
287
+ color: "gray",
288
+ size: opts.size
289
+ });
290
+ case "url":
291
+ if (rowMeta?.valueRender || rowMeta?.valueFormatter) return base;
292
+ if (typeof value !== "string") return base;
293
+ {
294
+ const href = value.trim();
295
+ if (href.length === 0 || !isLikelyUrlString(href)) return base;
296
+ return /* @__PURE__ */ jsx(Link, {
297
+ to: href,
298
+ color: "info",
299
+ className: "min-w-0 break-all font-normal",
300
+ children: href
301
+ });
302
+ }
303
+ default: return base;
304
+ }
305
+ }
306
+ function defaultRowIcon(iconClass) {
307
+ return /* @__PURE__ */ jsx(Bolt, { className: iconClass });
308
+ }
309
+ function isComponentLike(icon) {
310
+ if (icon == null) return false;
311
+ if (typeof icon === "function") return true;
312
+ if (typeof icon === "object" && "$$typeof" in icon) return !isValidElement(icon);
313
+ return false;
314
+ }
315
+ function resolveLegacyRowIcon(rowMeta, iconClass) {
316
+ if (rowMeta?.icon == null) return defaultRowIcon(iconClass);
317
+ const ic = rowMeta.icon;
318
+ if (isValidElement(ic)) {
319
+ const el = ic;
320
+ return cloneElement(el, { className: cn(el.props.className, iconClass) });
321
+ }
322
+ if (isComponentLike(ic)) return createElement(ic, {
323
+ className: iconClass,
324
+ "aria-hidden": true
325
+ });
326
+ return ic;
327
+ }
328
+ function resolveRowLabel(key, rowMeta, verbatimKeyLabels) {
329
+ return rowMeta?.label ?? (verbatimKeyLabels ? key : startCase(key));
330
+ }
331
+ function toSimpleListItems(items, meta, hideIcon, resolveOpts, verbatimKeyLabels, labelClassName, valueClassName) {
332
+ return items.map(({ key, value }) => {
333
+ const rowMeta = meta?.[key];
334
+ const effectiveType = resolveEffectiveType(key, value, rowMeta);
335
+ const labelText = resolveRowLabel(key, rowMeta, verbatimKeyLabels);
336
+ const item = {
337
+ key,
338
+ label: labelClassName != null ? /* @__PURE__ */ jsx("span", {
339
+ className: labelClassName,
340
+ children: labelText
341
+ }) : labelText,
342
+ content: /* @__PURE__ */ jsx("div", {
343
+ className: cn("min-w-0", valueClassName),
344
+ children: wrapTypedValue(value, rowMeta, key, resolveOpts, effectiveType)
345
+ })
346
+ };
347
+ if (!hideIcon) item.icon = rowMeta?.icon ?? Bolt;
348
+ if (forcesColumnLayout(effectiveType) || rowUsesDefaultStructuredCode(value, rowMeta) || rowUsesTagsPropertyArray(key, value, rowMeta)) item.direction = "column";
349
+ return item;
350
+ });
351
+ }
352
+ function DynamicList({ items, meta, className, size = "default", labelClassName, valueClassName, simple = false, hideIcon = false, direction = "column", keyWidth = 30, useIconsForBoolean = false, verbatimKeyLabels = false }) {
353
+ const keyWidthPct = Math.min(100, Math.max(1, keyWidth));
354
+ const valueWidthPct = 100 - keyWidthPct;
355
+ const resolveOpts = {
356
+ useIconsForBoolean,
357
+ size
358
+ };
359
+ const sizeStyles = DYNAMIC_LIST_SIZE_STYLES[size];
360
+ if (simple) return /* @__PURE__ */ jsx(SimpleList, {
361
+ className,
362
+ size,
363
+ direction,
364
+ iconStyle: hideIcon ? "none" : "inline",
365
+ items: toSimpleListItems(items, meta, hideIcon, resolveOpts, verbatimKeyLabels, labelClassName, valueClassName)
366
+ });
367
+ return /* @__PURE__ */ jsx("div", {
368
+ className: cn("flex flex-col", sizeStyles.listGap, className),
369
+ children: items.map(({ key, value }) => {
370
+ const rowMeta = meta?.[key];
371
+ const effectiveType = resolveEffectiveType(key, value, rowMeta);
372
+ const labelText = resolveRowLabel(key, rowMeta, verbatimKeyLabels);
373
+ const valueDisplay = wrapTypedValue(value, rowMeta, key, resolveOpts, effectiveType);
374
+ const rowDir = effectiveRowDirection(effectiveType, rowMeta, direction, value, key);
375
+ const rowIcon = resolveLegacyRowIcon(rowMeta, sizeStyles.rowIcon);
376
+ const hasTypedOrEffectiveMetaLayout = effectiveType != null;
377
+ const rendersPlainStringBadges = !rowMeta?.valueRender && !rowMeta?.valueFormatter && isPlainStringArray(value);
378
+ const usesDefaultStructuredCode = rowUsesDefaultStructuredCode(value, rowMeta);
379
+ const usesBadgeArrayLayout = rendersPlainStringBadges;
380
+ const valueRowAlignStart = usesBadgeArrayLayout;
381
+ const needsBlockValueLayout = hasTypedOrEffectiveMetaLayout || usesDefaultStructuredCode || usesBadgeArrayLayout;
382
+ if (rowDir === "row") {
383
+ const splitStyle = {
384
+ "--dynamic-list-key-width": `${keyWidthPct}%`,
385
+ "--dynamic-list-value-width": `${valueWidthPct}%`
386
+ };
387
+ return /* @__PURE__ */ jsxs("div", {
388
+ className: cn("flex w-full min-w-0 items-start sm:items-center", sizeStyles.rowGap),
389
+ children: [!hideIcon && /* @__PURE__ */ jsx(Avatar, {
390
+ className: sizeStyles.avatarSize,
391
+ children: /* @__PURE__ */ jsx(AvatarFallback, {
392
+ className: cn("flex items-center justify-center gap-1 border", sizeStyles.avatarFallbackTypography),
393
+ children: rowIcon
394
+ })
395
+ }), /* @__PURE__ */ jsxs("div", {
396
+ className: cn("flex min-w-0 flex-1 flex-col sm:flex-row sm:gap-0", sizeStyles.itemGap, valueRowAlignStart ? "sm:items-start" : "sm:items-center"),
397
+ style: splitStyle,
398
+ children: [/* @__PURE__ */ jsx("span", {
399
+ className: cn("truncate sm:flex-none sm:basis-[var(--dynamic-list-key-width)]", sizeStyles.labelTypography, labelClassName),
400
+ children: labelText
401
+ }), /* @__PURE__ */ jsx("div", {
402
+ className: cn("flex min-w-0 text-muted-foreground sm:flex-none sm:basis-[var(--dynamic-list-value-width)] sm:justify-end", sizeStyles.valueTypography, usesBadgeArrayLayout ? "items-start sm:pt-0.5 text-start" : "items-center"),
403
+ children: /* @__PURE__ */ jsx("div", {
404
+ className: cn("min-w-0 max-w-full", !usesBadgeArrayLayout && "sm:truncate sm:text-end", valueClassName),
405
+ children: valueDisplay
406
+ })
407
+ })]
408
+ })]
409
+ }, key);
410
+ }
411
+ if (!needsBlockValueLayout) return /* @__PURE__ */ jsx(BasicDetailsCard, {
412
+ icon: hideIcon ? void 0 : rowIcon,
413
+ primaryText: /* @__PURE__ */ jsx("span", {
414
+ className: cn(sizeStyles.labelTypography, labelClassName),
415
+ children: labelText
416
+ }),
417
+ secondaryText: /* @__PURE__ */ jsx("span", {
418
+ className: cn(sizeStyles.valueTypography, valueClassName),
419
+ children: valueDisplay
420
+ })
421
+ }, key);
422
+ return /* @__PURE__ */ jsxs("div", {
423
+ className: cn("flex min-w-0 items-start", sizeStyles.rowGap),
424
+ children: [!hideIcon && /* @__PURE__ */ jsx(Avatar, {
425
+ className: sizeStyles.avatarSize,
426
+ children: /* @__PURE__ */ jsx(AvatarFallback, {
427
+ className: cn("flex items-center justify-center gap-1 border", sizeStyles.avatarFallbackTypography),
428
+ children: rowIcon
429
+ })
430
+ }), /* @__PURE__ */ jsxs("div", {
431
+ className: cn("flex min-w-0 flex-1 flex-col", sizeStyles.itemGap),
432
+ children: [/* @__PURE__ */ jsx("span", {
433
+ className: cn(sizeStyles.labelTypography, labelClassName),
434
+ children: labelText
435
+ }), /* @__PURE__ */ jsx("div", {
436
+ className: cn("min-w-0", sizeStyles.valueTypography, valueClassName),
437
+ children: valueDisplay
438
+ })]
439
+ })]
440
+ }, key);
441
+ })
442
+ });
443
+ }
444
+ //#endregion
445
+ export { DynamicList };
@@ -0,0 +1,20 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ //#region src/components/error-display/full-size-error/full-size-error.tsx
3
+ function FullSizeError({ title, children, illustration }) {
4
+ return /* @__PURE__ */ jsxs("div", {
5
+ className: "flex flex-col items-center justify-center gap-4 py-12 text-destructive",
6
+ children: [
7
+ illustration,
8
+ title && /* @__PURE__ */ jsx("h3", {
9
+ className: "text-lg font-semibold",
10
+ children: title
11
+ }),
12
+ /* @__PURE__ */ jsx("div", {
13
+ className: "text-muted-foreground text-sm",
14
+ children
15
+ })
16
+ ]
17
+ });
18
+ }
19
+ //#endregion
20
+ export { FullSizeError };
@@ -0,0 +1,12 @@
1
+ import { Alert } from "../../alert/alert.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/components/error-display/inline-error/inline-error.tsx
4
+ function InlineError({ title, children }) {
5
+ return /* @__PURE__ */ jsx(Alert, {
6
+ color: "error",
7
+ title,
8
+ children
9
+ });
10
+ }
11
+ //#endregion
12
+ export { InlineError };