@selvajs/ui 6.5.1-beta.0 → 6.6.0-beta.11

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 (444) hide show
  1. package/dist/components/ConfirmDialog.svelte +2 -10
  2. package/dist/components/ErrorScreen.svelte +21 -27
  3. package/dist/components/compute/AppLayout.svelte +286 -116
  4. package/dist/components/compute/AppLayout.svelte.d.ts +22 -0
  5. package/dist/components/compute/ComputeApp.svelte +45 -24
  6. package/dist/components/compute/ComputeApp.svelte.d.ts +19 -2
  7. package/dist/components/compute/ComputeMessagesDialog.svelte +47 -83
  8. package/dist/components/compute/ParameterPresetManager.svelte +37 -130
  9. package/dist/components/compute/ParameterPresetManager.svelte.d.ts +4 -5
  10. package/dist/components/compute/SolveMessages.svelte +131 -77
  11. package/dist/components/compute/SolveMessages.svelte.d.ts +7 -12
  12. package/dist/components/layout/AppShell.svelte +10 -6
  13. package/dist/components/layout/PageFooter.svelte +23 -11
  14. package/dist/components/layout/PageHeader.svelte +11 -7
  15. package/dist/components/layout/Pagination.svelte +2 -4
  16. package/dist/components/layout/SectionHeader.svelte +4 -2
  17. package/dist/components/layout/SideNav.svelte +56 -7
  18. package/dist/components/preview/ChartOutput.svelte +35 -25
  19. package/dist/components/preview/Group.svelte +92 -103
  20. package/dist/components/preview/Group.svelte.d.ts +1 -1
  21. package/dist/components/preview/HelpButton.svelte +36 -0
  22. package/dist/components/preview/HelpButton.svelte.d.ts +8 -0
  23. package/dist/components/preview/ImageOutput.svelte +430 -71
  24. package/dist/components/preview/InputControl.svelte +163 -90
  25. package/dist/components/preview/InputControl.svelte.d.ts +5 -1
  26. package/dist/components/preview/OutputDisplay.svelte +28 -33
  27. package/dist/components/preview/TabBar.svelte +106 -22
  28. package/dist/components/preview/TabBar.svelte.d.ts +1 -0
  29. package/dist/components/preview/TabContent.svelte +63 -57
  30. package/dist/components/preview/TabContent.svelte.d.ts +5 -1
  31. package/dist/components/preview/TabLayout.svelte +27 -5
  32. package/dist/components/preview/TabLayout.svelte.d.ts +5 -0
  33. package/dist/components/preview/inputs/CheckboxInput.svelte +7 -7
  34. package/dist/components/preview/inputs/CheckboxInput.svelte.d.ts +3 -0
  35. package/dist/components/preview/inputs/ChecklistInput.svelte +7 -2
  36. package/dist/components/preview/inputs/ChecklistInput.svelte.d.ts +2 -1
  37. package/dist/components/preview/inputs/ColorInput.svelte +4 -2
  38. package/dist/components/preview/inputs/ColorInput.svelte.d.ts +1 -0
  39. package/dist/components/preview/inputs/DropdownInput.svelte +19 -4
  40. package/dist/components/preview/inputs/DropdownInput.svelte.d.ts +2 -1
  41. package/dist/components/preview/inputs/FileInput.svelte +112 -108
  42. package/dist/components/preview/inputs/GeometryInput.svelte +128 -0
  43. package/dist/components/preview/inputs/GeometryInput.svelte.d.ts +21 -0
  44. package/dist/components/preview/inputs/NumberInput.svelte +123 -61
  45. package/dist/components/preview/inputs/NumberInput.svelte.d.ts +2 -0
  46. package/dist/components/preview/inputs/OptionGlyph.svelte +29 -0
  47. package/dist/components/preview/inputs/OptionGlyph.svelte.d.ts +8 -0
  48. package/dist/components/preview/inputs/SegmentedInput.svelte +44 -0
  49. package/dist/components/preview/inputs/SegmentedInput.svelte.d.ts +12 -0
  50. package/dist/components/preview/inputs/TextInput.svelte +8 -4
  51. package/dist/components/preview/inputs/TileInput.svelte +80 -0
  52. package/dist/components/preview/inputs/TileInput.svelte.d.ts +12 -0
  53. package/dist/components/preview/inputs/index.d.ts +3 -0
  54. package/dist/components/preview/inputs/index.js +3 -0
  55. package/dist/components/primitives/CalculateButton.svelte +56 -24
  56. package/dist/components/primitives/CalculateButton.svelte.d.ts +3 -0
  57. package/dist/components/primitives/Callout.svelte +11 -18
  58. package/dist/components/primitives/DataTable.svelte +38 -5
  59. package/dist/components/primitives/DataTable.svelte.d.ts +2 -0
  60. package/dist/components/primitives/FilterableDropdown.svelte +42 -129
  61. package/dist/components/primitives/FilterableDropdown.svelte.d.ts +1 -1
  62. package/dist/components/primitives/IssueList.svelte +56 -0
  63. package/dist/components/primitives/IssueList.svelte.d.ts +20 -0
  64. package/dist/components/primitives/SeverityIcon.svelte +15 -0
  65. package/dist/components/primitives/SeverityIcon.svelte.d.ts +8 -0
  66. package/dist/components/primitives/SolvingIndicator.svelte +43 -42
  67. package/dist/components/primitives/SolvingIndicator.svelte.d.ts +6 -0
  68. package/dist/components/primitives/StateDisplay.svelte +19 -79
  69. package/dist/components/primitives/ViewToggle.svelte +18 -33
  70. package/dist/components/primitives/alert-dialog/alert-dialog-action.svelte +9 -3
  71. package/dist/components/primitives/alert-dialog/alert-dialog-action.svelte.d.ts +6 -1
  72. package/dist/components/primitives/alert-dialog/alert-dialog-content.svelte +1 -1
  73. package/dist/components/primitives/alert-dialog/alert-dialog-overlay.svelte +1 -1
  74. package/dist/components/primitives/badge/badge.svelte +2 -2
  75. package/dist/components/primitives/badge/badge.svelte.d.ts +4 -4
  76. package/dist/components/primitives/button/button.svelte +6 -2
  77. package/dist/components/primitives/button/button.svelte.d.ts +10 -4
  78. package/dist/components/primitives/card/card-header.svelte +1 -1
  79. package/dist/components/primitives/card/card.svelte +21 -5
  80. package/dist/components/primitives/card/card.svelte.d.ts +25 -1
  81. package/dist/components/primitives/card/index.d.ts +1 -2
  82. package/dist/components/primitives/card/index.js +2 -3
  83. package/dist/components/primitives/checkbox/checkbox.svelte +1 -1
  84. package/dist/components/primitives/command/command-dialog.svelte +42 -0
  85. package/dist/components/primitives/command/command-dialog.svelte.d.ts +14 -0
  86. package/dist/components/primitives/command/command-empty.svelte +17 -0
  87. package/dist/components/primitives/command/command-empty.svelte.d.ts +4 -0
  88. package/dist/components/primitives/command/command-group.svelte +33 -0
  89. package/dist/components/primitives/command/command-group.svelte.d.ts +7 -0
  90. package/dist/components/primitives/command/command-input.svelte +36 -0
  91. package/dist/components/primitives/command/command-input.svelte.d.ts +4 -0
  92. package/dist/components/primitives/command/command-item.svelte +28 -0
  93. package/dist/components/primitives/command/command-item.svelte.d.ts +4 -0
  94. package/dist/components/primitives/command/command-link-item.svelte +21 -0
  95. package/dist/components/primitives/command/command-link-item.svelte.d.ts +4 -0
  96. package/dist/components/primitives/command/command-list.svelte +20 -0
  97. package/dist/components/primitives/command/command-list.svelte.d.ts +4 -0
  98. package/dist/components/primitives/command/command-loading.svelte +7 -0
  99. package/dist/components/primitives/command/command-loading.svelte.d.ts +4 -0
  100. package/dist/components/primitives/command/command-separator.svelte +17 -0
  101. package/dist/components/primitives/command/command-separator.svelte.d.ts +4 -0
  102. package/dist/components/primitives/command/command-shortcut.svelte +23 -0
  103. package/dist/components/primitives/command/command-shortcut.svelte.d.ts +5 -0
  104. package/dist/components/primitives/command/command.svelte +28 -0
  105. package/dist/components/primitives/command/command.svelte.d.ts +8 -0
  106. package/dist/components/primitives/command/index.d.ts +12 -0
  107. package/dist/components/primitives/command/index.js +14 -0
  108. package/dist/components/primitives/context-menu/context-menu-content.svelte +1 -1
  109. package/dist/components/primitives/context-menu/context-menu-sub-content.svelte +1 -1
  110. package/dist/components/primitives/dialog/dialog-content.svelte +11 -3
  111. package/dist/components/primitives/dialog/dialog-content.svelte.d.ts +2 -0
  112. package/dist/components/primitives/dialog/dialog-overlay.svelte +1 -1
  113. package/dist/components/primitives/dialog/dialog-title.svelte +6 -2
  114. package/dist/components/primitives/dialog/dialog-title.svelte.d.ts +5 -1
  115. package/dist/components/primitives/drawer/Drawer.svelte +2 -2
  116. package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
  117. package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +4 -0
  118. package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte +46 -0
  119. package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +9 -0
  120. package/dist/components/primitives/dropdown-menu/dropdown-menu-content.svelte +31 -0
  121. package/dist/components/primitives/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -0
  122. package/dist/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
  123. package/dist/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +8 -0
  124. package/dist/components/primitives/dropdown-menu/dropdown-menu-group.svelte +7 -0
  125. package/dist/components/primitives/dropdown-menu/dropdown-menu-group.svelte.d.ts +4 -0
  126. package/dist/components/primitives/dropdown-menu/dropdown-menu-item.svelte +27 -0
  127. package/dist/components/primitives/dropdown-menu/dropdown-menu-item.svelte.d.ts +8 -0
  128. package/dist/components/primitives/dropdown-menu/dropdown-menu-label.svelte +24 -0
  129. package/dist/components/primitives/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
  130. package/dist/components/primitives/dropdown-menu/dropdown-menu-portal.svelte +7 -0
  131. package/dist/components/primitives/dropdown-menu/dropdown-menu-portal.svelte.d.ts +3 -0
  132. package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
  133. package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +4 -0
  134. package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte +36 -0
  135. package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
  136. package/dist/components/primitives/dropdown-menu/dropdown-menu-separator.svelte +17 -0
  137. package/dist/components/primitives/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
  138. package/dist/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte +23 -0
  139. package/dist/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
  140. package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte +31 -0
  141. package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +10 -0
  142. package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
  143. package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
  144. package/dist/components/primitives/dropdown-menu/dropdown-menu-sub.svelte +7 -0
  145. package/dist/components/primitives/dropdown-menu/dropdown-menu-sub.svelte.d.ts +3 -0
  146. package/dist/components/primitives/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
  147. package/dist/components/primitives/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +4 -0
  148. package/dist/components/primitives/dropdown-menu/dropdown-menu.svelte +7 -0
  149. package/dist/components/primitives/dropdown-menu/dropdown-menu.svelte.d.ts +3 -0
  150. package/dist/components/primitives/dropdown-menu/index.d.ts +18 -0
  151. package/dist/components/primitives/dropdown-menu/index.js +18 -0
  152. package/dist/components/primitives/{alert/alert-description.svelte → empty/empty-content.svelte} +3 -3
  153. package/dist/components/primitives/empty/empty-content.svelte.d.ts +5 -0
  154. package/dist/components/primitives/empty/empty-description.svelte +23 -0
  155. package/dist/components/primitives/{alert/alert-description.svelte.d.ts → empty/empty-description.svelte.d.ts} +4 -4
  156. package/dist/components/primitives/{alert/alert-title.svelte → empty/empty-header.svelte} +3 -3
  157. package/dist/components/primitives/empty/empty-header.svelte.d.ts +5 -0
  158. package/dist/components/primitives/empty/empty-media.svelte +41 -0
  159. package/dist/components/primitives/empty/empty-media.svelte.d.ts +26 -0
  160. package/dist/components/primitives/{card/card-action.svelte → empty/empty-title.svelte} +2 -2
  161. package/dist/components/primitives/{card/card-action.svelte.d.ts → empty/empty-title.svelte.d.ts} +3 -3
  162. package/dist/components/primitives/empty/empty.svelte +23 -0
  163. package/dist/components/primitives/empty/empty.svelte.d.ts +5 -0
  164. package/dist/components/primitives/empty/index.d.ts +7 -0
  165. package/dist/components/primitives/empty/index.js +9 -0
  166. package/dist/components/primitives/index.d.ts +10 -1
  167. package/dist/components/primitives/index.js +10 -1
  168. package/dist/components/primitives/input/input.svelte +4 -4
  169. package/dist/components/primitives/input-group/index.d.ts +7 -0
  170. package/dist/components/primitives/input-group/index.js +9 -0
  171. package/dist/components/primitives/input-group/input-group-addon.svelte +53 -0
  172. package/dist/components/primitives/input-group/input-group-addon.svelte.d.ts +32 -0
  173. package/dist/components/primitives/input-group/input-group-button.svelte +49 -0
  174. package/dist/components/primitives/input-group/input-group-button.svelte.d.ts +32 -0
  175. package/dist/components/primitives/input-group/input-group-input.svelte +25 -0
  176. package/dist/components/primitives/input-group/input-group-input.svelte.d.ts +11 -0
  177. package/dist/components/primitives/input-group/input-group-text.svelte +22 -0
  178. package/dist/components/primitives/input-group/input-group-text.svelte.d.ts +5 -0
  179. package/dist/components/primitives/input-group/input-group-textarea.svelte +23 -0
  180. package/dist/components/primitives/input-group/input-group-textarea.svelte.d.ts +3 -0
  181. package/dist/components/primitives/input-group/input-group.svelte +24 -0
  182. package/dist/components/primitives/{alert/alert-title.svelte.d.ts → input-group/input-group.svelte.d.ts} +4 -4
  183. package/dist/components/primitives/mode-toggle/mode-toggle.svelte +6 -7
  184. package/dist/components/primitives/popover/index.d.ts +9 -0
  185. package/dist/components/primitives/popover/index.js +11 -0
  186. package/dist/components/primitives/popover/popover-close.svelte +7 -0
  187. package/dist/components/primitives/popover/popover-close.svelte.d.ts +4 -0
  188. package/dist/components/primitives/popover/popover-content.svelte +31 -0
  189. package/dist/components/primitives/popover/popover-content.svelte.d.ts +10 -0
  190. package/dist/components/primitives/popover/popover-description.svelte +20 -0
  191. package/dist/components/primitives/popover/popover-description.svelte.d.ts +5 -0
  192. package/dist/components/primitives/popover/popover-header.svelte +20 -0
  193. package/dist/components/primitives/popover/popover-header.svelte.d.ts +5 -0
  194. package/dist/components/primitives/popover/popover-portal.svelte +7 -0
  195. package/dist/components/primitives/popover/popover-portal.svelte.d.ts +3 -0
  196. package/dist/components/primitives/popover/popover-title.svelte +15 -0
  197. package/dist/components/primitives/popover/popover-title.svelte.d.ts +5 -0
  198. package/dist/components/primitives/popover/popover-trigger.svelte +17 -0
  199. package/dist/components/primitives/popover/popover-trigger.svelte.d.ts +4 -0
  200. package/dist/components/primitives/popover/popover.svelte +7 -0
  201. package/dist/components/primitives/popover/popover.svelte.d.ts +3 -0
  202. package/dist/components/primitives/resizable/resizable-handle.svelte +6 -2
  203. package/dist/components/primitives/resizable/resizable-handle.svelte.d.ts +2 -0
  204. package/dist/components/primitives/resizable/resizable-pane-group.svelte +1 -4
  205. package/dist/components/primitives/scroll-area/scroll-area.svelte +1 -1
  206. package/dist/components/primitives/search/search.svelte +3 -3
  207. package/dist/components/primitives/select/select-content.svelte +1 -1
  208. package/dist/components/primitives/select/select-trigger.svelte +1 -1
  209. package/dist/components/primitives/severity.d.ts +7 -0
  210. package/dist/components/primitives/severity.js +19 -0
  211. package/dist/components/primitives/slider/slider.svelte +8 -3
  212. package/dist/components/primitives/slider/slider.svelte.d.ts +5 -1
  213. package/dist/components/primitives/sonner/sonner.svelte +1 -1
  214. package/dist/components/primitives/spinner/index.d.ts +1 -0
  215. package/dist/components/primitives/spinner/index.js +1 -0
  216. package/dist/components/primitives/spinner/spinner.svelte +29 -0
  217. package/dist/components/primitives/spinner/spinner.svelte.d.ts +4 -0
  218. package/dist/components/primitives/switch/switch.svelte +2 -2
  219. package/dist/components/primitives/tabs/tabs-list.svelte +27 -5
  220. package/dist/components/primitives/tabs/tabs-list.svelte.d.ts +22 -1
  221. package/dist/components/primitives/tabs/tabs-trigger.svelte +23 -5
  222. package/dist/components/primitives/tabs/tabs-trigger.svelte.d.ts +22 -1
  223. package/dist/components/primitives/tabs/tabs.svelte +6 -2
  224. package/dist/components/primitives/tabs/tabs.svelte.d.ts +5 -1
  225. package/dist/components/primitives/textarea/textarea.svelte +1 -1
  226. package/dist/components/primitives/theme-switcher/ThemeSwitcher.svelte +1 -1
  227. package/dist/components/primitives/toggle/index.d.ts +3 -0
  228. package/dist/components/primitives/toggle/index.js +5 -0
  229. package/dist/components/primitives/toggle/toggle.svelte +54 -0
  230. package/dist/components/primitives/toggle/toggle.svelte.d.ts +46 -0
  231. package/dist/components/primitives/toggle-group/index.d.ts +3 -0
  232. package/dist/components/primitives/toggle-group/index.js +5 -0
  233. package/dist/components/primitives/toggle-group/toggle-group-item.svelte +35 -0
  234. package/dist/components/primitives/toggle-group/toggle-group-item.svelte.d.ts +6 -0
  235. package/dist/components/primitives/toggle-group/toggle-group.svelte +75 -0
  236. package/dist/components/primitives/toggle-group/toggle-group.svelte.d.ts +17 -0
  237. package/dist/components/viewer/MeshMetadataPanel.svelte +119 -0
  238. package/dist/components/viewer/MeshMetadataPanel.svelte.d.ts +9 -0
  239. package/dist/components/viewer/SceneManager.svelte +14 -5
  240. package/dist/components/viewer/Viewer.svelte +243 -221
  241. package/dist/components/viewer/Viewer.svelte.d.ts +3 -0
  242. package/dist/compute/run-panel-action.d.ts +8 -0
  243. package/dist/compute/run-panel-action.js +12 -0
  244. package/dist/compute/solving.svelte.d.ts +11 -7
  245. package/dist/compute/solving.svelte.js +64 -45
  246. package/dist/compute/useSolveSession.svelte.js +3 -0
  247. package/dist/constants.d.ts +6 -8
  248. package/dist/constants.js +7 -9
  249. package/dist/contexts/hostContext.svelte.d.ts +39 -0
  250. package/dist/contexts/hostContext.svelte.js +9 -0
  251. package/dist/i18n/localeContext.svelte.d.ts +10 -3
  252. package/dist/i18n/localeContext.svelte.js +27 -5
  253. package/dist/i18n/messages.d.ts +150 -2
  254. package/dist/i18n/messages.js +261 -11
  255. package/dist/index.d.ts +4 -1
  256. package/dist/index.js +3 -0
  257. package/dist/public.d.ts +1 -1
  258. package/dist/schema/host-support.d.ts +29 -0
  259. package/dist/schema/host-support.js +97 -0
  260. package/dist/schema/option-display.d.ts +12 -0
  261. package/dist/schema/option-display.js +29 -0
  262. package/dist/schema/param-exporter.d.ts +4 -1
  263. package/dist/schema/param-exporter.js +10 -6
  264. package/dist/schema/visibility-rules.js +21 -0
  265. package/dist/styles/base.css +80 -10
  266. package/dist/types/actionButton.d.ts +17 -3
  267. package/dist/types/presetLabels.d.ts +3 -2
  268. package/dist/types/presetLabels.js +9 -8
  269. package/dist/utils/file-download.js +10 -22
  270. package/dist/utils/host-files.d.ts +12 -0
  271. package/dist/utils/host-files.js +46 -0
  272. package/dist/utils/loadScript.d.ts +2 -0
  273. package/dist/utils/loadScript.js +2 -0
  274. package/dist/utils/webp-to-png.d.ts +10 -0
  275. package/dist/utils/webp-to-png.js +41 -0
  276. package/package.json +15 -15
  277. package/src/lib/components/ConfirmDialog.svelte +2 -10
  278. package/src/lib/components/ErrorScreen.svelte +21 -27
  279. package/src/lib/components/compute/AppLayout.svelte +286 -116
  280. package/src/lib/components/compute/ComputeApp.svelte +45 -24
  281. package/src/lib/components/compute/ComputeMessagesDialog.svelte +47 -83
  282. package/src/lib/components/compute/ParameterPresetManager.svelte +37 -130
  283. package/src/lib/components/compute/SolveMessages.svelte +131 -77
  284. package/src/lib/components/layout/AppShell.svelte +10 -6
  285. package/src/lib/components/layout/PageFooter.svelte +23 -11
  286. package/src/lib/components/layout/PageHeader.svelte +11 -7
  287. package/src/lib/components/layout/Pagination.svelte +2 -4
  288. package/src/lib/components/layout/SectionHeader.svelte +4 -2
  289. package/src/lib/components/layout/SideNav.svelte +56 -7
  290. package/src/lib/components/preview/ChartOutput.svelte +35 -25
  291. package/src/lib/components/preview/Group.svelte +92 -103
  292. package/src/lib/components/preview/HelpButton.svelte +36 -0
  293. package/src/lib/components/preview/ImageOutput.svelte +430 -71
  294. package/src/lib/components/preview/InputControl.svelte +163 -90
  295. package/src/lib/components/preview/OutputDisplay.svelte +28 -33
  296. package/src/lib/components/preview/TabBar.svelte +106 -22
  297. package/src/lib/components/preview/TabContent.svelte +63 -57
  298. package/src/lib/components/preview/TabLayout.svelte +27 -5
  299. package/src/lib/components/preview/inputs/CheckboxInput.svelte +7 -7
  300. package/src/lib/components/preview/inputs/ChecklistInput.svelte +7 -2
  301. package/src/lib/components/preview/inputs/ColorInput.svelte +4 -2
  302. package/src/lib/components/preview/inputs/DropdownInput.svelte +19 -4
  303. package/src/lib/components/preview/inputs/FileInput.svelte +112 -108
  304. package/src/lib/components/preview/inputs/GeometryInput.svelte +128 -0
  305. package/src/lib/components/preview/inputs/NumberInput.svelte +123 -61
  306. package/src/lib/components/preview/inputs/OptionGlyph.svelte +29 -0
  307. package/src/lib/components/preview/inputs/SegmentedInput.svelte +44 -0
  308. package/src/lib/components/preview/inputs/TextInput.svelte +8 -4
  309. package/src/lib/components/preview/inputs/TileInput.svelte +80 -0
  310. package/src/lib/components/preview/inputs/index.ts +3 -0
  311. package/src/lib/components/primitives/CalculateButton.svelte +56 -24
  312. package/src/lib/components/primitives/Callout.svelte +11 -18
  313. package/src/lib/components/primitives/DataTable.svelte +38 -5
  314. package/src/lib/components/primitives/FilterableDropdown.svelte +42 -129
  315. package/src/lib/components/primitives/IssueList.svelte +56 -0
  316. package/src/lib/components/primitives/SeverityIcon.svelte +15 -0
  317. package/src/lib/components/primitives/SolvingIndicator.svelte +43 -42
  318. package/src/lib/components/primitives/StateDisplay.svelte +19 -79
  319. package/src/lib/components/primitives/ViewToggle.svelte +18 -33
  320. package/src/lib/components/primitives/alert-dialog/alert-dialog-action.svelte +9 -3
  321. package/src/lib/components/primitives/alert-dialog/alert-dialog-content.svelte +1 -1
  322. package/src/lib/components/primitives/alert-dialog/alert-dialog-overlay.svelte +1 -1
  323. package/src/lib/components/primitives/badge/badge.svelte +2 -2
  324. package/src/lib/components/primitives/button/button.svelte +6 -2
  325. package/src/lib/components/primitives/card/card-header.svelte +1 -1
  326. package/src/lib/components/primitives/card/card.svelte +21 -5
  327. package/src/lib/components/primitives/card/index.ts +1 -4
  328. package/src/lib/components/primitives/checkbox/checkbox.svelte +1 -1
  329. package/src/lib/components/primitives/command/command-dialog.svelte +42 -0
  330. package/src/lib/components/primitives/command/command-empty.svelte +17 -0
  331. package/src/lib/components/primitives/command/command-group.svelte +33 -0
  332. package/src/lib/components/primitives/command/command-input.svelte +36 -0
  333. package/src/lib/components/primitives/command/command-item.svelte +28 -0
  334. package/src/lib/components/primitives/command/command-link-item.svelte +21 -0
  335. package/src/lib/components/primitives/command/command-list.svelte +20 -0
  336. package/src/lib/components/primitives/command/command-loading.svelte +7 -0
  337. package/src/lib/components/primitives/command/command-separator.svelte +17 -0
  338. package/src/lib/components/primitives/command/command-shortcut.svelte +23 -0
  339. package/src/lib/components/primitives/command/command.svelte +28 -0
  340. package/src/lib/components/primitives/command/index.ts +37 -0
  341. package/src/lib/components/primitives/context-menu/context-menu-content.svelte +1 -1
  342. package/src/lib/components/primitives/context-menu/context-menu-sub-content.svelte +1 -1
  343. package/src/lib/components/primitives/dialog/dialog-content.svelte +11 -3
  344. package/src/lib/components/primitives/dialog/dialog-overlay.svelte +1 -1
  345. package/src/lib/components/primitives/dialog/dialog-title.svelte +6 -2
  346. package/src/lib/components/primitives/drawer/Drawer.svelte +2 -2
  347. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
  348. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte +46 -0
  349. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-content.svelte +31 -0
  350. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
  351. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-group.svelte +7 -0
  352. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-item.svelte +27 -0
  353. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-label.svelte +24 -0
  354. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-portal.svelte +7 -0
  355. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
  356. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte +36 -0
  357. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-separator.svelte +17 -0
  358. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte +23 -0
  359. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte +31 -0
  360. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
  361. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub.svelte +7 -0
  362. package/src/lib/components/primitives/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
  363. package/src/lib/components/primitives/dropdown-menu/dropdown-menu.svelte +7 -0
  364. package/src/lib/components/primitives/dropdown-menu/index.ts +54 -0
  365. package/src/lib/components/primitives/{alert/alert-description.svelte → empty/empty-content.svelte} +3 -3
  366. package/src/lib/components/primitives/empty/empty-description.svelte +23 -0
  367. package/src/lib/components/primitives/{alert/alert-title.svelte → empty/empty-header.svelte} +3 -3
  368. package/src/lib/components/primitives/empty/empty-media.svelte +41 -0
  369. package/src/lib/components/primitives/{card/card-action.svelte → empty/empty-title.svelte} +2 -2
  370. package/src/lib/components/primitives/empty/empty.svelte +23 -0
  371. package/src/lib/components/primitives/empty/index.ts +22 -0
  372. package/src/lib/components/primitives/index.ts +10 -1
  373. package/src/lib/components/primitives/input/input.svelte +4 -4
  374. package/src/lib/components/primitives/input-group/index.ts +22 -0
  375. package/src/lib/components/primitives/input-group/input-group-addon.svelte +53 -0
  376. package/src/lib/components/primitives/input-group/input-group-button.svelte +49 -0
  377. package/src/lib/components/primitives/input-group/input-group-input.svelte +25 -0
  378. package/src/lib/components/primitives/input-group/input-group-text.svelte +22 -0
  379. package/src/lib/components/primitives/input-group/input-group-textarea.svelte +23 -0
  380. package/src/lib/components/primitives/input-group/input-group.svelte +24 -0
  381. package/src/lib/components/primitives/mode-toggle/mode-toggle.svelte +6 -7
  382. package/src/lib/components/primitives/popover/index.ts +28 -0
  383. package/src/lib/components/primitives/popover/popover-close.svelte +7 -0
  384. package/src/lib/components/primitives/popover/popover-content.svelte +31 -0
  385. package/src/lib/components/primitives/popover/popover-description.svelte +20 -0
  386. package/src/lib/components/primitives/popover/popover-header.svelte +20 -0
  387. package/src/lib/components/primitives/popover/popover-portal.svelte +7 -0
  388. package/src/lib/components/primitives/popover/popover-title.svelte +15 -0
  389. package/src/lib/components/primitives/popover/popover-trigger.svelte +17 -0
  390. package/src/lib/components/primitives/popover/popover.svelte +7 -0
  391. package/src/lib/components/primitives/resizable/resizable-handle.svelte +6 -2
  392. package/src/lib/components/primitives/resizable/resizable-pane-group.svelte +1 -4
  393. package/src/lib/components/primitives/scroll-area/scroll-area.svelte +1 -1
  394. package/src/lib/components/primitives/search/search.svelte +3 -3
  395. package/src/lib/components/primitives/select/select-content.svelte +1 -1
  396. package/src/lib/components/primitives/select/select-trigger.svelte +1 -1
  397. package/src/lib/components/primitives/severity.ts +26 -0
  398. package/src/lib/components/primitives/slider/slider.svelte +8 -3
  399. package/src/lib/components/primitives/sonner/sonner.svelte +1 -1
  400. package/src/lib/components/primitives/spinner/index.ts +1 -0
  401. package/src/lib/components/primitives/spinner/spinner.svelte +29 -0
  402. package/src/lib/components/primitives/switch/switch.svelte +2 -2
  403. package/src/lib/components/primitives/tabs/tabs-list.svelte +27 -5
  404. package/src/lib/components/primitives/tabs/tabs-trigger.svelte +23 -5
  405. package/src/lib/components/primitives/tabs/tabs.svelte +6 -2
  406. package/src/lib/components/primitives/textarea/textarea.svelte +1 -1
  407. package/src/lib/components/primitives/theme-switcher/ThemeSwitcher.svelte +1 -1
  408. package/src/lib/components/primitives/toggle/index.ts +13 -0
  409. package/src/lib/components/primitives/toggle/toggle.svelte +54 -0
  410. package/src/lib/components/primitives/toggle-group/index.ts +10 -0
  411. package/src/lib/components/primitives/toggle-group/toggle-group-item.svelte +35 -0
  412. package/src/lib/components/primitives/toggle-group/toggle-group.svelte +75 -0
  413. package/src/lib/components/viewer/MeshMetadataPanel.svelte +119 -0
  414. package/src/lib/components/viewer/SceneManager.svelte +14 -5
  415. package/src/lib/components/viewer/Viewer.svelte +243 -221
  416. package/src/lib/compute/run-panel-action.ts +16 -0
  417. package/src/lib/compute/solving.svelte.ts +66 -50
  418. package/src/lib/compute/useSolveSession.svelte.ts +3 -0
  419. package/src/lib/constants.ts +7 -9
  420. package/src/lib/contexts/hostContext.svelte.ts +51 -0
  421. package/src/lib/i18n/localeContext.svelte.ts +40 -5
  422. package/src/lib/i18n/messages.ts +453 -13
  423. package/src/lib/index.ts +21 -0
  424. package/src/lib/public.ts +1 -0
  425. package/src/lib/schema/host-support.ts +129 -0
  426. package/src/lib/schema/option-display.ts +44 -0
  427. package/src/lib/schema/param-exporter.ts +10 -7
  428. package/src/lib/schema/visibility-rules.ts +23 -0
  429. package/src/lib/styles/base.css +80 -10
  430. package/src/lib/types/actionButton.ts +16 -3
  431. package/src/lib/types/presetLabels.ts +13 -11
  432. package/src/lib/utils/file-download.ts +11 -21
  433. package/src/lib/utils/host-files.ts +61 -0
  434. package/src/lib/utils/loadScript.ts +3 -0
  435. package/src/lib/utils/webp-to-png.ts +48 -0
  436. package/dist/components/primitives/alert/alert.svelte +0 -44
  437. package/dist/components/primitives/alert/alert.svelte.d.ts +0 -26
  438. package/dist/components/primitives/alert/index.d.ts +0 -5
  439. package/dist/components/primitives/alert/index.js +0 -7
  440. package/dist/components/viewer/MeshMetadataDialog.svelte +0 -126
  441. package/dist/components/viewer/MeshMetadataDialog.svelte.d.ts +0 -10
  442. package/src/lib/components/primitives/alert/alert.svelte +0 -44
  443. package/src/lib/components/primitives/alert/index.ts +0 -14
  444. package/src/lib/components/viewer/MeshMetadataDialog.svelte +0 -126
@@ -0,0 +1,48 @@
1
+ // Grasshopper's PDF export can't read WebP: the plugin's PDF library has no WebP decoder, and
2
+ // nothing on Windows or Rhino.Compute decodes it reliably. The browser can, so a WebP picked for
3
+ // an input that also takes PNG is re-encoded here. PNG rather than JPEG keeps transparency.
4
+
5
+ /** True when a WebP should go out as PNG: the input takes PNG, so a PNG is a valid value. */
6
+ export function shouldConvertWebp(fileEnding: string, acceptedFormats: readonly string[]): boolean {
7
+ return fileEnding === '.webp' && acceptedFormats.includes('.png');
8
+ }
9
+
10
+ /** Whether the input takes a file with this ending, counting a WebP it would get as PNG. */
11
+ export function acceptsFileEnding(fileEnding: string, acceptedFormats: readonly string[]): boolean {
12
+ const ending = fileEnding.toLowerCase();
13
+ if (acceptedFormats.length === 0 || acceptedFormats.includes(ending)) return true;
14
+ return shouldConvertWebp(ending, acceptedFormats);
15
+ }
16
+
17
+ const ascii = (bytes: Uint8Array, start: number, end: number) =>
18
+ String.fromCharCode(...bytes.subarray(start, end));
19
+
20
+ /**
21
+ * By content, not name: image CDNs serve WebP from URLs with no extension or one naming another
22
+ * format. A WebP file starts `RIFF`, a 4-byte size, then `WEBP`.
23
+ */
24
+ export async function isWebp(blob: Blob): Promise<boolean> {
25
+ if (blob.type === 'image/webp') return true;
26
+ const head = new Uint8Array(await blob.slice(0, 12).arrayBuffer());
27
+ return head.length === 12 && ascii(head, 0, 4) === 'RIFF' && ascii(head, 8, 12) === 'WEBP';
28
+ }
29
+
30
+ export async function webpToPng(blob: Blob): Promise<Blob> {
31
+ const bitmap = await createImageBitmap(blob);
32
+ try {
33
+ const canvas = document.createElement('canvas');
34
+ canvas.width = bitmap.width;
35
+ canvas.height = bitmap.height;
36
+ const context = canvas.getContext('2d');
37
+ if (!context) throw new Error('Canvas 2D context unavailable');
38
+ context.drawImage(bitmap, 0, 0);
39
+ return await new Promise<Blob>((resolve, reject) =>
40
+ canvas.toBlob(
41
+ (png) => (png ? resolve(png) : reject(new Error('PNG encoding failed'))),
42
+ 'image/png'
43
+ )
44
+ );
45
+ } finally {
46
+ bitmap.close();
47
+ }
48
+ }
@@ -1,44 +0,0 @@
1
- <script lang="ts" module>
2
- import { type VariantProps, tv } from 'tailwind-variants';
3
-
4
- export const alertVariants = tv({
5
- base: 'relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',
6
- variants: {
7
- variant: {
8
- default: 'bg-card text-card-foreground',
9
- destructive:
10
- 'text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current'
11
- }
12
- },
13
- defaultVariants: {
14
- variant: 'default'
15
- }
16
- });
17
-
18
- export type AlertVariant = VariantProps<typeof alertVariants>['variant'];
19
- </script>
20
-
21
- <script lang="ts">
22
- import type { HTMLAttributes } from 'svelte/elements';
23
- import { cn, type WithElementRef } from '../../../utils.js';
24
-
25
- let {
26
- ref = $bindable(null),
27
- class: className,
28
- variant = 'default',
29
- children,
30
- ...restProps
31
- }: WithElementRef<HTMLAttributes<HTMLDivElement>> & {
32
- variant?: AlertVariant;
33
- } = $props();
34
- </script>
35
-
36
- <div
37
- bind:this={ref}
38
- data-slot="alert"
39
- class={cn(alertVariants({ variant }), className)}
40
- {...restProps}
41
- role="alert"
42
- >
43
- {@render children?.()}
44
- </div>
@@ -1,26 +0,0 @@
1
- import { type VariantProps } from 'tailwind-variants';
2
- export declare const alertVariants: import("tailwind-variants").TVReturnType<{
3
- variant: {
4
- default: "bg-card text-card-foreground";
5
- destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current";
6
- };
7
- }, undefined, "relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
8
- variant: {
9
- default: "bg-card text-card-foreground";
10
- destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current";
11
- };
12
- }, undefined, import("tailwind-variants").TVReturnTypeLike<{
13
- variant: {
14
- default: "bg-card text-card-foreground";
15
- destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current";
16
- };
17
- }, undefined>>;
18
- export type AlertVariant = VariantProps<typeof alertVariants>['variant'];
19
- import type { HTMLAttributes } from 'svelte/elements';
20
- import { type WithElementRef } from '../../../utils.js';
21
- type $$ComponentProps = WithElementRef<HTMLAttributes<HTMLDivElement>> & {
22
- variant?: AlertVariant;
23
- };
24
- declare const Alert: import("svelte").Component<$$ComponentProps, {}, "ref">;
25
- type Alert = ReturnType<typeof Alert>;
26
- export default Alert;
@@ -1,5 +0,0 @@
1
- import Root from './alert.svelte';
2
- import Description from './alert-description.svelte';
3
- import Title from './alert-title.svelte';
4
- export { alertVariants, type AlertVariant } from './alert.svelte';
5
- export { Root, Description, Title, Root as Alert, Description as AlertDescription, Title as AlertTitle };
@@ -1,7 +0,0 @@
1
- import Root from './alert.svelte';
2
- import Description from './alert-description.svelte';
3
- import Title from './alert-title.svelte';
4
- export { alertVariants } from './alert.svelte';
5
- export { Root, Description, Title,
6
- //
7
- Root as Alert, Description as AlertDescription, Title as AlertTitle };
@@ -1,126 +0,0 @@
1
- <script lang="ts">
2
- import * as Dialog from '../primitives/dialog/index.js';
3
- import { getLocaleContext } from '../../i18n/localeContext.svelte';
4
-
5
- const locale = getLocaleContext();
6
- const t = $derived(locale.messages);
7
-
8
- interface Props {
9
- open: boolean;
10
- metadata: Record<string, any> | null;
11
- meshName: string | null;
12
- onOpenChange: (open: boolean) => void;
13
- isFullscreen?: boolean;
14
- }
15
-
16
- const EXCLUDED_KEYS = new Set(['name', 'layer', 'id']);
17
-
18
- let {
19
- open = $bindable(),
20
- metadata,
21
- meshName,
22
- onOpenChange,
23
- isFullscreen = false
24
- }: Props = $props();
25
-
26
- $effect(() => {
27
- document.body.toggleAttribute('data-viewer-fullscreen', isFullscreen);
28
- });
29
-
30
- const getFilteredMetadata = () => {
31
- if (!metadata) return {};
32
- const entries = Object.entries(metadata).filter(([key]) => !EXCLUDED_KEYS.has(key));
33
- const result: Record<string, unknown> = {};
34
- for (const [key, value] of entries) {
35
- if (
36
- key === 'metadata' &&
37
- typeof value === 'object' &&
38
- value !== null &&
39
- !Array.isArray(value)
40
- ) {
41
- Object.assign(result, value);
42
- } else {
43
- result[key] = value;
44
- }
45
- }
46
- return result;
47
- };
48
- </script>
49
-
50
- <Dialog.Root bind:open {onOpenChange}>
51
- <Dialog.Content class="min-w-60 max-w-xs p-0 gap-0 w-auto overflow-hidden">
52
- {#if meshName}
53
- <div class="px-4 pt-3 pb-2 border-b">
54
- <Dialog.Title class="text-sm font-semibold">{meshName}</Dialog.Title>
55
- </div>
56
- {:else}
57
- <Dialog.Title class="sr-only">{t.objectFallbackName}</Dialog.Title>
58
- {/if}
59
-
60
- <div class="max-h-80 overflow-y-auto">
61
- {#if !metadata || Object.keys(getFilteredMetadata()).length === 0}
62
- <p class="px-4 py-3 text-xs text-muted-foreground">{t.noMetadata}</p>
63
- {:else}
64
- <table class="text-xs w-full border-collapse">
65
- <tbody>
66
- {#each Object.entries(getFilteredMetadata()) as [key, value] (key)}
67
- <tr class="border-b border-border/60 transition-colors hover:bg-muted/40">
68
- <th
69
- scope="row"
70
- class="px-4 py-2 font-normal text-left align-top whitespace-nowrap text-muted-foreground"
71
- >{key}</th
72
- >
73
- <td class="px-4 py-2 text-right align-top text-foreground">
74
- {#if typeof value === 'object' && value !== null}
75
- {#if Array.isArray(value)}
76
- <div class="space-y-1 text-left">
77
- {#each value as item, index (index)}
78
- {#if typeof item === 'object'}
79
- <div class="space-y-0.5">
80
- {#each Object.entries(item) as [k, v] (k)}
81
- <div class="gap-2 flex">
82
- <span class="shrink-0 text-muted-foreground">{k}:</span>
83
- <span>{v}</span>
84
- </div>
85
- {/each}
86
- </div>
87
- {:else}
88
- <div>{item}</div>
89
- {/if}
90
- {/each}
91
- </div>
92
- {:else}
93
- <div class="space-y-0.5 text-left">
94
- {#each Object.entries(value) as [k, v] (k)}
95
- <div class="gap-2 flex">
96
- <span class="shrink-0 text-muted-foreground">{k}:</span>
97
- <span>{v}</span>
98
- </div>
99
- {/each}
100
- </div>
101
- {/if}
102
- {:else if typeof value === 'number'}
103
- <span class="font-mono">{value}</span>
104
- {:else if typeof value === 'boolean'}
105
- <span class={value ? 'text-green-500' : 'text-muted-foreground'}
106
- >{value ? 'true' : 'false'}</span
107
- >
108
- {:else}
109
- <span class="break-all">{value}</span>
110
- {/if}
111
- </td>
112
- </tr>
113
- {/each}
114
- </tbody>
115
- </table>
116
- {/if}
117
- </div>
118
- </Dialog.Content>
119
- </Dialog.Root>
120
-
121
- <style>
122
- :global([data-viewer-fullscreen] [data-slot='dialog-content']),
123
- :global([data-viewer-fullscreen] [data-slot='dialog-overlay']) {
124
- z-index: 10001;
125
- }
126
- </style>
@@ -1,10 +0,0 @@
1
- interface Props {
2
- open: boolean;
3
- metadata: Record<string, any> | null;
4
- meshName: string | null;
5
- onOpenChange: (open: boolean) => void;
6
- isFullscreen?: boolean;
7
- }
8
- declare const MeshMetadataDialog: import("svelte").Component<Props, {}, "open">;
9
- type MeshMetadataDialog = ReturnType<typeof MeshMetadataDialog>;
10
- export default MeshMetadataDialog;
@@ -1,44 +0,0 @@
1
- <script lang="ts" module>
2
- import { type VariantProps, tv } from 'tailwind-variants';
3
-
4
- export const alertVariants = tv({
5
- base: 'relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current',
6
- variants: {
7
- variant: {
8
- default: 'bg-card text-card-foreground',
9
- destructive:
10
- 'text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current'
11
- }
12
- },
13
- defaultVariants: {
14
- variant: 'default'
15
- }
16
- });
17
-
18
- export type AlertVariant = VariantProps<typeof alertVariants>['variant'];
19
- </script>
20
-
21
- <script lang="ts">
22
- import type { HTMLAttributes } from 'svelte/elements';
23
- import { cn, type WithElementRef } from '$lib/utils.js';
24
-
25
- let {
26
- ref = $bindable(null),
27
- class: className,
28
- variant = 'default',
29
- children,
30
- ...restProps
31
- }: WithElementRef<HTMLAttributes<HTMLDivElement>> & {
32
- variant?: AlertVariant;
33
- } = $props();
34
- </script>
35
-
36
- <div
37
- bind:this={ref}
38
- data-slot="alert"
39
- class={cn(alertVariants({ variant }), className)}
40
- {...restProps}
41
- role="alert"
42
- >
43
- {@render children?.()}
44
- </div>
@@ -1,14 +0,0 @@
1
- import Root from './alert.svelte';
2
- import Description from './alert-description.svelte';
3
- import Title from './alert-title.svelte';
4
- export { alertVariants, type AlertVariant } from './alert.svelte';
5
-
6
- export {
7
- Root,
8
- Description,
9
- Title,
10
- //
11
- Root as Alert,
12
- Description as AlertDescription,
13
- Title as AlertTitle
14
- };
@@ -1,126 +0,0 @@
1
- <script lang="ts">
2
- import * as Dialog from '../primitives/dialog/index.js';
3
- import { getLocaleContext } from '$lib/i18n/localeContext.svelte';
4
-
5
- const locale = getLocaleContext();
6
- const t = $derived(locale.messages);
7
-
8
- interface Props {
9
- open: boolean;
10
- metadata: Record<string, any> | null;
11
- meshName: string | null;
12
- onOpenChange: (open: boolean) => void;
13
- isFullscreen?: boolean;
14
- }
15
-
16
- const EXCLUDED_KEYS = new Set(['name', 'layer', 'id']);
17
-
18
- let {
19
- open = $bindable(),
20
- metadata,
21
- meshName,
22
- onOpenChange,
23
- isFullscreen = false
24
- }: Props = $props();
25
-
26
- $effect(() => {
27
- document.body.toggleAttribute('data-viewer-fullscreen', isFullscreen);
28
- });
29
-
30
- const getFilteredMetadata = () => {
31
- if (!metadata) return {};
32
- const entries = Object.entries(metadata).filter(([key]) => !EXCLUDED_KEYS.has(key));
33
- const result: Record<string, unknown> = {};
34
- for (const [key, value] of entries) {
35
- if (
36
- key === 'metadata' &&
37
- typeof value === 'object' &&
38
- value !== null &&
39
- !Array.isArray(value)
40
- ) {
41
- Object.assign(result, value);
42
- } else {
43
- result[key] = value;
44
- }
45
- }
46
- return result;
47
- };
48
- </script>
49
-
50
- <Dialog.Root bind:open {onOpenChange}>
51
- <Dialog.Content class="min-w-60 max-w-xs p-0 gap-0 w-auto overflow-hidden">
52
- {#if meshName}
53
- <div class="px-4 pt-3 pb-2 border-b">
54
- <Dialog.Title class="text-sm font-semibold">{meshName}</Dialog.Title>
55
- </div>
56
- {:else}
57
- <Dialog.Title class="sr-only">{t.objectFallbackName}</Dialog.Title>
58
- {/if}
59
-
60
- <div class="max-h-80 overflow-y-auto">
61
- {#if !metadata || Object.keys(getFilteredMetadata()).length === 0}
62
- <p class="px-4 py-3 text-xs text-muted-foreground">{t.noMetadata}</p>
63
- {:else}
64
- <table class="text-xs w-full border-collapse">
65
- <tbody>
66
- {#each Object.entries(getFilteredMetadata()) as [key, value] (key)}
67
- <tr class="border-b border-border/60 transition-colors hover:bg-muted/40">
68
- <th
69
- scope="row"
70
- class="px-4 py-2 font-normal text-left align-top whitespace-nowrap text-muted-foreground"
71
- >{key}</th
72
- >
73
- <td class="px-4 py-2 text-right align-top text-foreground">
74
- {#if typeof value === 'object' && value !== null}
75
- {#if Array.isArray(value)}
76
- <div class="space-y-1 text-left">
77
- {#each value as item, index (index)}
78
- {#if typeof item === 'object'}
79
- <div class="space-y-0.5">
80
- {#each Object.entries(item) as [k, v] (k)}
81
- <div class="gap-2 flex">
82
- <span class="shrink-0 text-muted-foreground">{k}:</span>
83
- <span>{v}</span>
84
- </div>
85
- {/each}
86
- </div>
87
- {:else}
88
- <div>{item}</div>
89
- {/if}
90
- {/each}
91
- </div>
92
- {:else}
93
- <div class="space-y-0.5 text-left">
94
- {#each Object.entries(value) as [k, v] (k)}
95
- <div class="gap-2 flex">
96
- <span class="shrink-0 text-muted-foreground">{k}:</span>
97
- <span>{v}</span>
98
- </div>
99
- {/each}
100
- </div>
101
- {/if}
102
- {:else if typeof value === 'number'}
103
- <span class="font-mono">{value}</span>
104
- {:else if typeof value === 'boolean'}
105
- <span class={value ? 'text-green-500' : 'text-muted-foreground'}
106
- >{value ? 'true' : 'false'}</span
107
- >
108
- {:else}
109
- <span class="break-all">{value}</span>
110
- {/if}
111
- </td>
112
- </tr>
113
- {/each}
114
- </tbody>
115
- </table>
116
- {/if}
117
- </div>
118
- </Dialog.Content>
119
- </Dialog.Root>
120
-
121
- <style>
122
- :global([data-viewer-fullscreen] [data-slot='dialog-content']),
123
- :global([data-viewer-fullscreen] [data-slot='dialog-overlay']) {
124
- z-index: 10001;
125
- }
126
- </style>