selva-shared 0.8.1

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 (506) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +45 -0
  3. package/dist/components/AppLayout.svelte +439 -0
  4. package/dist/components/AppLayout.svelte.d.ts +17 -0
  5. package/dist/components/CollapsedPanelStrip.svelte +67 -0
  6. package/dist/components/CollapsedPanelStrip.svelte.d.ts +11 -0
  7. package/dist/components/ComputeMessages.svelte +172 -0
  8. package/dist/components/ComputeMessages.svelte.d.ts +7 -0
  9. package/dist/components/ErrorScreen.svelte +55 -0
  10. package/dist/components/ErrorScreen.svelte.d.ts +9 -0
  11. package/dist/components/StateManager.svelte +318 -0
  12. package/dist/components/StateManager.svelte.d.ts +9 -0
  13. package/dist/components/Viewer.svelte +207 -0
  14. package/dist/components/Viewer.svelte.d.ts +12 -0
  15. package/dist/components/layout/FooterItemRenderer.svelte +20 -0
  16. package/dist/components/layout/FooterItemRenderer.svelte.d.ts +7 -0
  17. package/dist/components/layout/PageContainer.svelte +36 -0
  18. package/dist/components/layout/PageContainer.svelte.d.ts +12 -0
  19. package/dist/components/layout/PageFooter.svelte +223 -0
  20. package/dist/components/layout/PageFooter.svelte.d.ts +9 -0
  21. package/dist/components/layout/PageHeader.svelte +89 -0
  22. package/dist/components/layout/PageHeader.svelte.d.ts +12 -0
  23. package/dist/components/layout/index.d.ts +3 -0
  24. package/dist/components/layout/index.js +4 -0
  25. package/dist/components/preview/ChartOutput.svelte +257 -0
  26. package/dist/components/preview/ChartOutput.svelte.d.ts +8 -0
  27. package/dist/components/preview/Group.svelte +121 -0
  28. package/dist/components/preview/Group.svelte.d.ts +23 -0
  29. package/dist/components/preview/InputControl.svelte +119 -0
  30. package/dist/components/preview/InputControl.svelte.d.ts +11 -0
  31. package/dist/components/preview/OutputDisplay.svelte +296 -0
  32. package/dist/components/preview/OutputDisplay.svelte.d.ts +9 -0
  33. package/dist/components/preview/TabBar.svelte +36 -0
  34. package/dist/components/preview/TabBar.svelte.d.ts +8 -0
  35. package/dist/components/preview/TabContent.svelte +124 -0
  36. package/dist/components/preview/TabContent.svelte.d.ts +13 -0
  37. package/dist/components/preview/TabLayout.svelte +109 -0
  38. package/dist/components/preview/TabLayout.svelte.d.ts +13 -0
  39. package/dist/components/preview/index.d.ts +3 -0
  40. package/dist/components/preview/index.js +4 -0
  41. package/dist/components/preview/inputs/CheckboxInput.svelte +29 -0
  42. package/dist/components/preview/inputs/CheckboxInput.svelte.d.ts +10 -0
  43. package/dist/components/preview/inputs/ColorInput.svelte +21 -0
  44. package/dist/components/preview/inputs/ColorInput.svelte.d.ts +7 -0
  45. package/dist/components/preview/inputs/DropdownInput.svelte +40 -0
  46. package/dist/components/preview/inputs/DropdownInput.svelte.d.ts +10 -0
  47. package/dist/components/preview/inputs/FileInput.svelte +358 -0
  48. package/dist/components/preview/inputs/FileInput.svelte.d.ts +10 -0
  49. package/dist/components/preview/inputs/NumberInput.svelte +152 -0
  50. package/dist/components/preview/inputs/NumberInput.svelte.d.ts +11 -0
  51. package/dist/components/preview/inputs/TextInput.svelte +74 -0
  52. package/dist/components/preview/inputs/TextInput.svelte.d.ts +11 -0
  53. package/dist/components/preview/inputs/index.d.ts +6 -0
  54. package/dist/components/preview/inputs/index.js +6 -0
  55. package/dist/components/ui/CalculateButton.svelte +56 -0
  56. package/dist/components/ui/CalculateButton.svelte.d.ts +9 -0
  57. package/dist/components/ui/SolvingIndicator.svelte +55 -0
  58. package/dist/components/ui/SolvingIndicator.svelte.d.ts +6 -0
  59. package/dist/components/ui/StateDisplay.svelte +106 -0
  60. package/dist/components/ui/StateDisplay.svelte.d.ts +10 -0
  61. package/dist/components/ui/alert/alert-description.svelte +23 -0
  62. package/dist/components/ui/alert/alert-description.svelte.d.ts +5 -0
  63. package/dist/components/ui/alert/alert-title.svelte +20 -0
  64. package/dist/components/ui/alert/alert-title.svelte.d.ts +5 -0
  65. package/dist/components/ui/alert/alert.svelte +44 -0
  66. package/dist/components/ui/alert/alert.svelte.d.ts +26 -0
  67. package/dist/components/ui/alert/index.d.ts +5 -0
  68. package/dist/components/ui/alert/index.js +7 -0
  69. package/dist/components/ui/alert-dialog/alert-dialog-action.svelte +18 -0
  70. package/dist/components/ui/alert-dialog/alert-dialog-action.svelte.d.ts +4 -0
  71. package/dist/components/ui/alert-dialog/alert-dialog-cancel.svelte +18 -0
  72. package/dist/components/ui/alert-dialog/alert-dialog-cancel.svelte.d.ts +4 -0
  73. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte +27 -0
  74. package/dist/components/ui/alert-dialog/alert-dialog-content.svelte.d.ts +8 -0
  75. package/dist/components/ui/alert-dialog/alert-dialog-description.svelte +17 -0
  76. package/dist/components/ui/alert-dialog/alert-dialog-description.svelte.d.ts +4 -0
  77. package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte +20 -0
  78. package/dist/components/ui/alert-dialog/alert-dialog-footer.svelte.d.ts +5 -0
  79. package/dist/components/ui/alert-dialog/alert-dialog-header.svelte +20 -0
  80. package/dist/components/ui/alert-dialog/alert-dialog-header.svelte.d.ts +5 -0
  81. package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte +20 -0
  82. package/dist/components/ui/alert-dialog/alert-dialog-overlay.svelte.d.ts +4 -0
  83. package/dist/components/ui/alert-dialog/alert-dialog-title.svelte +17 -0
  84. package/dist/components/ui/alert-dialog/alert-dialog-title.svelte.d.ts +4 -0
  85. package/dist/components/ui/alert-dialog/alert-dialog-trigger.svelte +7 -0
  86. package/dist/components/ui/alert-dialog/alert-dialog-trigger.svelte.d.ts +4 -0
  87. package/dist/components/ui/alert-dialog/index.d.ts +12 -0
  88. package/dist/components/ui/alert-dialog/index.js +15 -0
  89. package/dist/components/ui/badge/badge.svelte +50 -0
  90. package/dist/components/ui/badge/badge.svelte.d.ts +32 -0
  91. package/dist/components/ui/badge/index.d.ts +2 -0
  92. package/dist/components/ui/badge/index.js +2 -0
  93. package/dist/components/ui/button/button.svelte +83 -0
  94. package/dist/components/ui/button/button.svelte.d.ts +67 -0
  95. package/dist/components/ui/button/index.d.ts +2 -0
  96. package/dist/components/ui/button/index.js +4 -0
  97. package/dist/components/ui/button-group/button-group-separator.svelte +20 -0
  98. package/dist/components/ui/button-group/button-group-separator.svelte.d.ts +13 -0
  99. package/dist/components/ui/button-group/button-group-text.svelte +30 -0
  100. package/dist/components/ui/button-group/button-group-text.svelte.d.ts +11 -0
  101. package/dist/components/ui/button-group/button-group.svelte +46 -0
  102. package/dist/components/ui/button-group/button-group.svelte.d.ts +26 -0
  103. package/dist/components/ui/button-group/index.d.ts +4 -0
  104. package/dist/components/ui/button-group/index.js +6 -0
  105. package/dist/components/ui/card/card-action.svelte +20 -0
  106. package/dist/components/ui/card/card-action.svelte.d.ts +5 -0
  107. package/dist/components/ui/card/card-content.svelte +15 -0
  108. package/dist/components/ui/card/card-content.svelte.d.ts +5 -0
  109. package/dist/components/ui/card/card-description.svelte +20 -0
  110. package/dist/components/ui/card/card-description.svelte.d.ts +5 -0
  111. package/dist/components/ui/card/card-footer.svelte +20 -0
  112. package/dist/components/ui/card/card-footer.svelte.d.ts +5 -0
  113. package/dist/components/ui/card/card-header.svelte +23 -0
  114. package/dist/components/ui/card/card-header.svelte.d.ts +5 -0
  115. package/dist/components/ui/card/card-title.svelte +20 -0
  116. package/dist/components/ui/card/card-title.svelte.d.ts +5 -0
  117. package/dist/components/ui/card/card.svelte +23 -0
  118. package/dist/components/ui/card/card.svelte.d.ts +5 -0
  119. package/dist/components/ui/card/index.d.ts +8 -0
  120. package/dist/components/ui/card/index.js +10 -0
  121. package/dist/components/ui/checkbox/checkbox.svelte +36 -0
  122. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +4 -0
  123. package/dist/components/ui/checkbox/index.d.ts +2 -0
  124. package/dist/components/ui/checkbox/index.js +4 -0
  125. package/dist/components/ui/collapsible/collapsible-content.svelte +7 -0
  126. package/dist/components/ui/collapsible/collapsible-content.svelte.d.ts +4 -0
  127. package/dist/components/ui/collapsible/collapsible-trigger.svelte +7 -0
  128. package/dist/components/ui/collapsible/collapsible-trigger.svelte.d.ts +4 -0
  129. package/dist/components/ui/collapsible/collapsible.svelte +11 -0
  130. package/dist/components/ui/collapsible/collapsible.svelte.d.ts +4 -0
  131. package/dist/components/ui/collapsible/index.d.ts +4 -0
  132. package/dist/components/ui/collapsible/index.js +6 -0
  133. package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte +38 -0
  134. package/dist/components/ui/context-menu/context-menu-checkbox-item.svelte.d.ts +9 -0
  135. package/dist/components/ui/context-menu/context-menu-content.svelte +25 -0
  136. package/dist/components/ui/context-menu/context-menu-content.svelte.d.ts +7 -0
  137. package/dist/components/ui/context-menu/context-menu-group-heading.svelte +21 -0
  138. package/dist/components/ui/context-menu/context-menu-group-heading.svelte.d.ts +7 -0
  139. package/dist/components/ui/context-menu/context-menu-group.svelte +7 -0
  140. package/dist/components/ui/context-menu/context-menu-group.svelte.d.ts +4 -0
  141. package/dist/components/ui/context-menu/context-menu-item.svelte +27 -0
  142. package/dist/components/ui/context-menu/context-menu-item.svelte.d.ts +8 -0
  143. package/dist/components/ui/context-menu/context-menu-label.svelte +24 -0
  144. package/dist/components/ui/context-menu/context-menu-label.svelte.d.ts +8 -0
  145. package/dist/components/ui/context-menu/context-menu-radio-group.svelte +16 -0
  146. package/dist/components/ui/context-menu/context-menu-radio-group.svelte.d.ts +4 -0
  147. package/dist/components/ui/context-menu/context-menu-radio-item.svelte +31 -0
  148. package/dist/components/ui/context-menu/context-menu-radio-item.svelte.d.ts +4 -0
  149. package/dist/components/ui/context-menu/context-menu-separator.svelte +17 -0
  150. package/dist/components/ui/context-menu/context-menu-separator.svelte.d.ts +4 -0
  151. package/dist/components/ui/context-menu/context-menu-shortcut.svelte +20 -0
  152. package/dist/components/ui/context-menu/context-menu-shortcut.svelte.d.ts +5 -0
  153. package/dist/components/ui/context-menu/context-menu-sub-content.svelte +20 -0
  154. package/dist/components/ui/context-menu/context-menu-sub-content.svelte.d.ts +4 -0
  155. package/dist/components/ui/context-menu/context-menu-sub-trigger.svelte +29 -0
  156. package/dist/components/ui/context-menu/context-menu-sub-trigger.svelte.d.ts +8 -0
  157. package/dist/components/ui/context-menu/context-menu-trigger.svelte +7 -0
  158. package/dist/components/ui/context-menu/context-menu-trigger.svelte.d.ts +4 -0
  159. package/dist/components/ui/context-menu/index.d.ts +16 -0
  160. package/dist/components/ui/context-menu/index.js +19 -0
  161. package/dist/components/ui/dialog/dialog-close.svelte +7 -0
  162. package/dist/components/ui/dialog/dialog-close.svelte.d.ts +4 -0
  163. package/dist/components/ui/dialog/dialog-content.svelte +43 -0
  164. package/dist/components/ui/dialog/dialog-content.svelte.d.ts +11 -0
  165. package/dist/components/ui/dialog/dialog-description.svelte +17 -0
  166. package/dist/components/ui/dialog/dialog-description.svelte.d.ts +4 -0
  167. package/dist/components/ui/dialog/dialog-footer.svelte +20 -0
  168. package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +5 -0
  169. package/dist/components/ui/dialog/dialog-header.svelte +20 -0
  170. package/dist/components/ui/dialog/dialog-header.svelte.d.ts +5 -0
  171. package/dist/components/ui/dialog/dialog-overlay.svelte +20 -0
  172. package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +4 -0
  173. package/dist/components/ui/dialog/dialog-title.svelte +17 -0
  174. package/dist/components/ui/dialog/dialog-title.svelte.d.ts +4 -0
  175. package/dist/components/ui/dialog/dialog-trigger.svelte +7 -0
  176. package/dist/components/ui/dialog/dialog-trigger.svelte.d.ts +4 -0
  177. package/dist/components/ui/dialog/index.d.ts +11 -0
  178. package/dist/components/ui/dialog/index.js +14 -0
  179. package/dist/components/ui/field/field-content.svelte +20 -0
  180. package/dist/components/ui/field/field-content.svelte.d.ts +5 -0
  181. package/dist/components/ui/field/field-description.svelte +25 -0
  182. package/dist/components/ui/field/field-description.svelte.d.ts +5 -0
  183. package/dist/components/ui/field/field-error.svelte +58 -0
  184. package/dist/components/ui/field/field-error.svelte.d.ts +12 -0
  185. package/dist/components/ui/field/field-group.svelte +23 -0
  186. package/dist/components/ui/field/field-group.svelte.d.ts +5 -0
  187. package/dist/components/ui/field/field-label.svelte +26 -0
  188. package/dist/components/ui/field/field-label.svelte.d.ts +10 -0
  189. package/dist/components/ui/field/field-legend.svelte +29 -0
  190. package/dist/components/ui/field/field-legend.svelte.d.ts +8 -0
  191. package/dist/components/ui/field/field-separator.svelte +38 -0
  192. package/dist/components/ui/field/field-separator.svelte.d.ts +9 -0
  193. package/dist/components/ui/field/field-set.svelte +24 -0
  194. package/dist/components/ui/field/field-set.svelte.d.ts +5 -0
  195. package/dist/components/ui/field/field-title.svelte +23 -0
  196. package/dist/components/ui/field/field-title.svelte.d.ts +5 -0
  197. package/dist/components/ui/field/field.svelte +53 -0
  198. package/dist/components/ui/field/field.svelte.d.ts +29 -0
  199. package/dist/components/ui/field/index.d.ts +11 -0
  200. package/dist/components/ui/field/index.js +13 -0
  201. package/dist/components/ui/index.d.ts +21 -0
  202. package/dist/components/ui/index.js +24 -0
  203. package/dist/components/ui/input/index.d.ts +2 -0
  204. package/dist/components/ui/input/index.js +4 -0
  205. package/dist/components/ui/input/input.svelte +52 -0
  206. package/dist/components/ui/input/input.svelte.d.ts +13 -0
  207. package/dist/components/ui/label/index.d.ts +2 -0
  208. package/dist/components/ui/label/index.js +4 -0
  209. package/dist/components/ui/label/label.svelte +20 -0
  210. package/dist/components/ui/label/label.svelte.d.ts +4 -0
  211. package/dist/components/ui/mode-toggle/index.d.ts +1 -0
  212. package/dist/components/ui/mode-toggle/index.js +1 -0
  213. package/dist/components/ui/mode-toggle/mode-toggle.svelte +16 -0
  214. package/dist/components/ui/mode-toggle/mode-toggle.svelte.d.ts +18 -0
  215. package/dist/components/ui/resizable/index.d.ts +4 -0
  216. package/dist/components/ui/resizable/index.js +6 -0
  217. package/dist/components/ui/resizable/resizable-handle.svelte +30 -0
  218. package/dist/components/ui/resizable/resizable-handle.svelte.d.ts +8 -0
  219. package/dist/components/ui/resizable/resizable-pane-group.svelte +20 -0
  220. package/dist/components/ui/resizable/resizable-pane-group.svelte.d.ts +7 -0
  221. package/dist/components/ui/scroll-area/index.d.ts +3 -0
  222. package/dist/components/ui/scroll-area/index.js +5 -0
  223. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +31 -0
  224. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +4 -0
  225. package/dist/components/ui/scroll-area/scroll-area.svelte +43 -0
  226. package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +11 -0
  227. package/dist/components/ui/select/index.d.ts +11 -0
  228. package/dist/components/ui/select/index.js +14 -0
  229. package/dist/components/ui/select/select-content.svelte +40 -0
  230. package/dist/components/ui/select/select-content.svelte.d.ts +8 -0
  231. package/dist/components/ui/select/select-group-heading.svelte +21 -0
  232. package/dist/components/ui/select/select-group-heading.svelte.d.ts +10 -0
  233. package/dist/components/ui/select/select-group.svelte +7 -0
  234. package/dist/components/ui/select/select-group.svelte.d.ts +4 -0
  235. package/dist/components/ui/select/select-item.svelte +38 -0
  236. package/dist/components/ui/select/select-item.svelte.d.ts +4 -0
  237. package/dist/components/ui/select/select-label.svelte +20 -0
  238. package/dist/components/ui/select/select-label.svelte.d.ts +6 -0
  239. package/dist/components/ui/select/select-scroll-down-button.svelte +20 -0
  240. package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +4 -0
  241. package/dist/components/ui/select/select-scroll-up-button.svelte +20 -0
  242. package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +4 -0
  243. package/dist/components/ui/select/select-separator.svelte +18 -0
  244. package/dist/components/ui/select/select-separator.svelte.d.ts +4 -0
  245. package/dist/components/ui/select/select-trigger.svelte +29 -0
  246. package/dist/components/ui/select/select-trigger.svelte.d.ts +8 -0
  247. package/dist/components/ui/separator/index.d.ts +2 -0
  248. package/dist/components/ui/separator/index.js +4 -0
  249. package/dist/components/ui/separator/separator.svelte +21 -0
  250. package/dist/components/ui/separator/separator.svelte.d.ts +4 -0
  251. package/dist/components/ui/slider/index.d.ts +2 -0
  252. package/dist/components/ui/slider/index.js +4 -0
  253. package/dist/components/ui/slider/slider.svelte +52 -0
  254. package/dist/components/ui/slider/slider.svelte.d.ts +5 -0
  255. package/dist/components/ui/sonner/index.d.ts +2 -0
  256. package/dist/components/ui/sonner/index.js +2 -0
  257. package/dist/components/ui/sonner/sonner.svelte +13 -0
  258. package/dist/components/ui/sonner/sonner.svelte.d.ts +4 -0
  259. package/dist/components/ui/switch/index.d.ts +2 -0
  260. package/dist/components/ui/switch/index.js +4 -0
  261. package/dist/components/ui/switch/switch.svelte +29 -0
  262. package/dist/components/ui/switch/switch.svelte.d.ts +4 -0
  263. package/dist/components/ui/tabs/index.d.ts +5 -0
  264. package/dist/components/ui/tabs/index.js +7 -0
  265. package/dist/components/ui/tabs/tabs-content.svelte +17 -0
  266. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +4 -0
  267. package/dist/components/ui/tabs/tabs-list.svelte +16 -0
  268. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +4 -0
  269. package/dist/components/ui/tabs/tabs-trigger.svelte +20 -0
  270. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +4 -0
  271. package/dist/components/ui/tabs/tabs.svelte +19 -0
  272. package/dist/components/ui/tabs/tabs.svelte.d.ts +4 -0
  273. package/dist/components/ui/textarea/index.d.ts +2 -0
  274. package/dist/components/ui/textarea/index.js +4 -0
  275. package/dist/components/ui/textarea/textarea.svelte +23 -0
  276. package/dist/components/ui/textarea/textarea.svelte.d.ts +5 -0
  277. package/dist/components/ui/theme-switcher/ThemeSwitcher.svelte +39 -0
  278. package/dist/components/ui/theme-switcher/ThemeSwitcher.svelte.d.ts +3 -0
  279. package/dist/components/ui/theme-switcher/index.d.ts +1 -0
  280. package/dist/components/ui/theme-switcher/index.js +1 -0
  281. package/dist/composables/useFooterItem.svelte.d.ts +15 -0
  282. package/dist/composables/useFooterItem.svelte.js +31 -0
  283. package/dist/constants.d.ts +6 -0
  284. package/dist/constants.js +6 -0
  285. package/dist/contexts/FOOTER_USAGE.md +164 -0
  286. package/dist/contexts/footerContext.svelte.d.ts +17 -0
  287. package/dist/contexts/footerContext.svelte.js +24 -0
  288. package/dist/dummy-output-values.d.ts +3 -0
  289. package/dist/dummy-output-values.js +53 -0
  290. package/dist/dummy-surface-chart.json +13 -0
  291. package/dist/example-schema-left-only.json +367 -0
  292. package/dist/example-schema-right-only.json +322 -0
  293. package/dist/example-schema.json +1582 -0
  294. package/dist/features/preview/handlers.d.ts +55 -0
  295. package/dist/features/preview/handlers.js +175 -0
  296. package/dist/features/preview/index.d.ts +2 -0
  297. package/dist/features/preview/index.js +2 -0
  298. package/dist/features/preview/notifications.d.ts +11 -0
  299. package/dist/features/preview/notifications.js +41 -0
  300. package/dist/index.d.ts +29 -0
  301. package/dist/index.js +39 -0
  302. package/dist/stores/themeStore.svelte.d.ts +12 -0
  303. package/dist/stores/themeStore.svelte.js +42 -0
  304. package/dist/styles/base.css +142 -0
  305. package/dist/styles/themes/cyberpunk.css +98 -0
  306. package/dist/styles/themes/neutral.css +72 -0
  307. package/dist/styles/themes/ocean.css +75 -0
  308. package/dist/styles/themes/selva.css +105 -0
  309. package/dist/themes.d.ts +5 -0
  310. package/dist/themes.js +13 -0
  311. package/dist/types/generated/index.d.ts +6 -0
  312. package/dist/types/generated/index.js +6 -0
  313. package/dist/types/generated/preset.d.ts +80 -0
  314. package/dist/types/generated/preset.js +7 -0
  315. package/dist/types/generated/schema.d.ts +451 -0
  316. package/dist/types/generated/schema.js +48 -0
  317. package/dist/utils/computeThrottle.svelte.d.ts +28 -0
  318. package/dist/utils/computeThrottle.svelte.js +93 -0
  319. package/dist/utils/debounce.d.ts +14 -0
  320. package/dist/utils/debounce.js +25 -0
  321. package/dist/utils/file-download.d.ts +26 -0
  322. package/dist/utils/file-download.js +76 -0
  323. package/dist/utils/loadScript.d.ts +14 -0
  324. package/dist/utils/loadScript.js +41 -0
  325. package/dist/utils/param-exporter.d.ts +30 -0
  326. package/dist/utils/param-exporter.js +186 -0
  327. package/dist/utils/solving.svelte.d.ts +12 -0
  328. package/dist/utils/solving.svelte.js +86 -0
  329. package/dist/utils/utils-shared.d.ts +9 -0
  330. package/dist/utils/utils-shared.js +53 -0
  331. package/dist/utils/visibility-rules.d.ts +12 -0
  332. package/dist/utils/visibility-rules.js +52 -0
  333. package/dist/utils.d.ts +12 -0
  334. package/dist/utils.js +5 -0
  335. package/package.json +70 -0
  336. package/src/lib/components/AppLayout.svelte +439 -0
  337. package/src/lib/components/CollapsedPanelStrip.svelte +67 -0
  338. package/src/lib/components/ComputeMessages.svelte +172 -0
  339. package/src/lib/components/ErrorScreen.svelte +55 -0
  340. package/src/lib/components/StateManager.svelte +318 -0
  341. package/src/lib/components/Viewer.svelte +207 -0
  342. package/src/lib/components/layout/FooterItemRenderer.svelte +20 -0
  343. package/src/lib/components/layout/PageContainer.svelte +36 -0
  344. package/src/lib/components/layout/PageFooter.svelte +223 -0
  345. package/src/lib/components/layout/PageHeader.svelte +89 -0
  346. package/src/lib/components/layout/index.ts +4 -0
  347. package/src/lib/components/preview/ChartOutput.svelte +257 -0
  348. package/src/lib/components/preview/Group.svelte +121 -0
  349. package/src/lib/components/preview/InputControl.svelte +119 -0
  350. package/src/lib/components/preview/OutputDisplay.svelte +296 -0
  351. package/src/lib/components/preview/TabBar.svelte +36 -0
  352. package/src/lib/components/preview/TabContent.svelte +124 -0
  353. package/src/lib/components/preview/TabLayout.svelte +109 -0
  354. package/src/lib/components/preview/index.ts +4 -0
  355. package/src/lib/components/preview/inputs/CheckboxInput.svelte +29 -0
  356. package/src/lib/components/preview/inputs/ColorInput.svelte +21 -0
  357. package/src/lib/components/preview/inputs/DropdownInput.svelte +40 -0
  358. package/src/lib/components/preview/inputs/FileInput.svelte +358 -0
  359. package/src/lib/components/preview/inputs/NumberInput.svelte +152 -0
  360. package/src/lib/components/preview/inputs/TextInput.svelte +74 -0
  361. package/src/lib/components/preview/inputs/index.ts +6 -0
  362. package/src/lib/components/ui/CalculateButton.svelte +56 -0
  363. package/src/lib/components/ui/SolvingIndicator.svelte +55 -0
  364. package/src/lib/components/ui/StateDisplay.svelte +106 -0
  365. package/src/lib/components/ui/alert/alert-description.svelte +23 -0
  366. package/src/lib/components/ui/alert/alert-title.svelte +20 -0
  367. package/src/lib/components/ui/alert/alert.svelte +44 -0
  368. package/src/lib/components/ui/alert/index.ts +14 -0
  369. package/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte +18 -0
  370. package/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte +18 -0
  371. package/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte +27 -0
  372. package/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte +17 -0
  373. package/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte +20 -0
  374. package/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte +20 -0
  375. package/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte +20 -0
  376. package/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte +17 -0
  377. package/src/lib/components/ui/alert-dialog/alert-dialog-trigger.svelte +7 -0
  378. package/src/lib/components/ui/alert-dialog/index.ts +39 -0
  379. package/src/lib/components/ui/badge/badge.svelte +50 -0
  380. package/src/lib/components/ui/badge/index.ts +2 -0
  381. package/src/lib/components/ui/button/button.svelte +83 -0
  382. package/src/lib/components/ui/button/index.ts +17 -0
  383. package/src/lib/components/ui/button-group/button-group-separator.svelte +20 -0
  384. package/src/lib/components/ui/button-group/button-group-text.svelte +30 -0
  385. package/src/lib/components/ui/button-group/button-group.svelte +46 -0
  386. package/src/lib/components/ui/button-group/index.ts +13 -0
  387. package/src/lib/components/ui/card/card-action.svelte +20 -0
  388. package/src/lib/components/ui/card/card-content.svelte +15 -0
  389. package/src/lib/components/ui/card/card-description.svelte +20 -0
  390. package/src/lib/components/ui/card/card-footer.svelte +20 -0
  391. package/src/lib/components/ui/card/card-header.svelte +23 -0
  392. package/src/lib/components/ui/card/card-title.svelte +20 -0
  393. package/src/lib/components/ui/card/card.svelte +23 -0
  394. package/src/lib/components/ui/card/index.ts +25 -0
  395. package/src/lib/components/ui/checkbox/checkbox.svelte +36 -0
  396. package/src/lib/components/ui/checkbox/index.ts +6 -0
  397. package/src/lib/components/ui/collapsible/collapsible-content.svelte +7 -0
  398. package/src/lib/components/ui/collapsible/collapsible-trigger.svelte +7 -0
  399. package/src/lib/components/ui/collapsible/collapsible.svelte +11 -0
  400. package/src/lib/components/ui/collapsible/index.ts +13 -0
  401. package/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte +38 -0
  402. package/src/lib/components/ui/context-menu/context-menu-content.svelte +25 -0
  403. package/src/lib/components/ui/context-menu/context-menu-group-heading.svelte +21 -0
  404. package/src/lib/components/ui/context-menu/context-menu-group.svelte +7 -0
  405. package/src/lib/components/ui/context-menu/context-menu-item.svelte +27 -0
  406. package/src/lib/components/ui/context-menu/context-menu-label.svelte +24 -0
  407. package/src/lib/components/ui/context-menu/context-menu-radio-group.svelte +16 -0
  408. package/src/lib/components/ui/context-menu/context-menu-radio-item.svelte +31 -0
  409. package/src/lib/components/ui/context-menu/context-menu-separator.svelte +17 -0
  410. package/src/lib/components/ui/context-menu/context-menu-shortcut.svelte +20 -0
  411. package/src/lib/components/ui/context-menu/context-menu-sub-content.svelte +20 -0
  412. package/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte +29 -0
  413. package/src/lib/components/ui/context-menu/context-menu-trigger.svelte +7 -0
  414. package/src/lib/components/ui/context-menu/index.ts +51 -0
  415. package/src/lib/components/ui/dialog/dialog-close.svelte +7 -0
  416. package/src/lib/components/ui/dialog/dialog-content.svelte +43 -0
  417. package/src/lib/components/ui/dialog/dialog-description.svelte +17 -0
  418. package/src/lib/components/ui/dialog/dialog-footer.svelte +20 -0
  419. package/src/lib/components/ui/dialog/dialog-header.svelte +20 -0
  420. package/src/lib/components/ui/dialog/dialog-overlay.svelte +20 -0
  421. package/src/lib/components/ui/dialog/dialog-title.svelte +17 -0
  422. package/src/lib/components/ui/dialog/dialog-trigger.svelte +7 -0
  423. package/src/lib/components/ui/dialog/index.ts +37 -0
  424. package/src/lib/components/ui/field/field-content.svelte +20 -0
  425. package/src/lib/components/ui/field/field-description.svelte +25 -0
  426. package/src/lib/components/ui/field/field-error.svelte +58 -0
  427. package/src/lib/components/ui/field/field-group.svelte +23 -0
  428. package/src/lib/components/ui/field/field-label.svelte +26 -0
  429. package/src/lib/components/ui/field/field-legend.svelte +29 -0
  430. package/src/lib/components/ui/field/field-separator.svelte +38 -0
  431. package/src/lib/components/ui/field/field-set.svelte +24 -0
  432. package/src/lib/components/ui/field/field-title.svelte +23 -0
  433. package/src/lib/components/ui/field/field.svelte +53 -0
  434. package/src/lib/components/ui/field/index.ts +33 -0
  435. package/src/lib/components/ui/index.ts +33 -0
  436. package/src/lib/components/ui/input/index.ts +7 -0
  437. package/src/lib/components/ui/input/input.svelte +52 -0
  438. package/src/lib/components/ui/label/index.ts +7 -0
  439. package/src/lib/components/ui/label/label.svelte +20 -0
  440. package/src/lib/components/ui/mode-toggle/index.ts +1 -0
  441. package/src/lib/components/ui/mode-toggle/mode-toggle.svelte +16 -0
  442. package/src/lib/components/ui/resizable/index.ts +13 -0
  443. package/src/lib/components/ui/resizable/resizable-handle.svelte +30 -0
  444. package/src/lib/components/ui/resizable/resizable-pane-group.svelte +20 -0
  445. package/src/lib/components/ui/scroll-area/index.ts +10 -0
  446. package/src/lib/components/ui/scroll-area/scroll-area-scrollbar.svelte +31 -0
  447. package/src/lib/components/ui/scroll-area/scroll-area.svelte +43 -0
  448. package/src/lib/components/ui/select/index.ts +37 -0
  449. package/src/lib/components/ui/select/select-content.svelte +40 -0
  450. package/src/lib/components/ui/select/select-group-heading.svelte +21 -0
  451. package/src/lib/components/ui/select/select-group.svelte +7 -0
  452. package/src/lib/components/ui/select/select-item.svelte +38 -0
  453. package/src/lib/components/ui/select/select-label.svelte +20 -0
  454. package/src/lib/components/ui/select/select-scroll-down-button.svelte +20 -0
  455. package/src/lib/components/ui/select/select-scroll-up-button.svelte +20 -0
  456. package/src/lib/components/ui/select/select-separator.svelte +18 -0
  457. package/src/lib/components/ui/select/select-trigger.svelte +29 -0
  458. package/src/lib/components/ui/separator/index.ts +7 -0
  459. package/src/lib/components/ui/separator/separator.svelte +21 -0
  460. package/src/lib/components/ui/slider/index.ts +7 -0
  461. package/src/lib/components/ui/slider/slider.svelte +52 -0
  462. package/src/lib/components/ui/sonner/index.ts +2 -0
  463. package/src/lib/components/ui/sonner/sonner.svelte +13 -0
  464. package/src/lib/components/ui/switch/index.ts +7 -0
  465. package/src/lib/components/ui/switch/switch.svelte +29 -0
  466. package/src/lib/components/ui/tabs/index.ts +16 -0
  467. package/src/lib/components/ui/tabs/tabs-content.svelte +17 -0
  468. package/src/lib/components/ui/tabs/tabs-list.svelte +16 -0
  469. package/src/lib/components/ui/tabs/tabs-trigger.svelte +20 -0
  470. package/src/lib/components/ui/tabs/tabs.svelte +19 -0
  471. package/src/lib/components/ui/textarea/index.ts +7 -0
  472. package/src/lib/components/ui/textarea/textarea.svelte +23 -0
  473. package/src/lib/components/ui/theme-switcher/ThemeSwitcher.svelte +39 -0
  474. package/src/lib/components/ui/theme-switcher/index.ts +1 -0
  475. package/src/lib/composables/useFooterItem.svelte.ts +39 -0
  476. package/src/lib/constants.ts +6 -0
  477. package/src/lib/contexts/FOOTER_USAGE.md +164 -0
  478. package/src/lib/contexts/footerContext.svelte.ts +52 -0
  479. package/src/lib/dummy-output-values.ts +62 -0
  480. package/src/lib/dummy-surface-chart.json +13 -0
  481. package/src/lib/example-schema-left-only.json +367 -0
  482. package/src/lib/example-schema-right-only.json +322 -0
  483. package/src/lib/example-schema.json +1582 -0
  484. package/src/lib/features/preview/handlers.ts +243 -0
  485. package/src/lib/features/preview/index.ts +2 -0
  486. package/src/lib/features/preview/notifications.ts +52 -0
  487. package/src/lib/index.ts +52 -0
  488. package/src/lib/stores/themeStore.svelte.ts +54 -0
  489. package/src/lib/styles/base.css +142 -0
  490. package/src/lib/styles/themes/cyberpunk.css +98 -0
  491. package/src/lib/styles/themes/neutral.css +72 -0
  492. package/src/lib/styles/themes/ocean.css +75 -0
  493. package/src/lib/styles/themes/selva.css +105 -0
  494. package/src/lib/themes.ts +18 -0
  495. package/src/lib/types/generated/index.ts +6 -0
  496. package/src/lib/types/generated/preset.ts +82 -0
  497. package/src/lib/types/generated/schema.ts +527 -0
  498. package/src/lib/utils/computeThrottle.svelte.ts +117 -0
  499. package/src/lib/utils/debounce.ts +30 -0
  500. package/src/lib/utils/file-download.ts +88 -0
  501. package/src/lib/utils/loadScript.ts +52 -0
  502. package/src/lib/utils/param-exporter.ts +242 -0
  503. package/src/lib/utils/solving.svelte.ts +100 -0
  504. package/src/lib/utils/utils-shared.ts +57 -0
  505. package/src/lib/utils/visibility-rules.ts +97 -0
  506. package/src/lib/utils.ts +13 -0
@@ -0,0 +1,1582 @@
1
+ {
2
+ "id": "c8f7a6e9-3c5b-4a2d-9e1f-7b2a8c9d0e3f",
3
+ "name": "Super Comprehensive Test Schema",
4
+ "description": "Exhaustive test schema covering all UI widget types, configurations, visibility conditions, and layout features",
5
+ "projectFileName": "comprehensive_test.gh",
6
+ "documentId": "a1b2c3d4-e5f6-7a8b-9c0d-e1f2a3b4c5d6",
7
+ "pluginVersion": "0.7.0.0",
8
+ "tags": ["test", "schema", "comprehensive", "validation", "visibility", "extensive"],
9
+ "category": "Testing",
10
+ "author": "Test Suite",
11
+ "organization": "Selva",
12
+ "schemaVersion": "2.1.0",
13
+ "minPluginVersion": "0.5.0.0",
14
+ "created": "2026-03-06T10:00:00.0000000Z",
15
+ "lastModified": "2026-03-06T10:00:00.0000000Z",
16
+ "viewerOptions": {
17
+ "enableLocal": true,
18
+ "enableRemote": true,
19
+ "backgroundColor": "#f5f5f5"
20
+ },
21
+ "instanceSolve": false,
22
+ "inputs": [
23
+ {
24
+ "id": "input-001",
25
+ "nickname": "Basic Slider",
26
+ "paramType": "number",
27
+ "description": "A simple number slider with min/max and step"
28
+ },
29
+ {
30
+ "id": "input-002",
31
+ "nickname": "Project Name",
32
+ "paramType": "text",
33
+ "description": "Text input with max length validation"
34
+ },
35
+ {
36
+ "id": "input-003",
37
+ "nickname": "Design Type",
38
+ "paramType": "generic",
39
+ "description": "Primary selector for conditional visibility"
40
+ },
41
+ {
42
+ "id": "input-004",
43
+ "nickname": "Apply Symmetry",
44
+ "paramType": "boolean",
45
+ "description": "Toggle to enable/disable symmetry"
46
+ },
47
+ {
48
+ "id": "input-005",
49
+ "nickname": "Symmetry Axis",
50
+ "paramType": "generic",
51
+ "description": "Dropdown for symmetry axis - conditional visibility"
52
+ },
53
+ {
54
+ "id": "input-006",
55
+ "nickname": "Scale Factor",
56
+ "paramType": "number",
57
+ "description": "Fine-grained number control"
58
+ },
59
+ {
60
+ "id": "input-007",
61
+ "nickname": "Quality Level",
62
+ "paramType": "integer",
63
+ "description": "Integer slider from 1 to 10"
64
+ },
65
+ {
66
+ "id": "input-008",
67
+ "nickname": "Email",
68
+ "paramType": "text",
69
+ "description": "Email input with pattern validation"
70
+ },
71
+ {
72
+ "id": "input-009",
73
+ "nickname": "Export Format",
74
+ "paramType": "generic",
75
+ "description": "Choose export format"
76
+ },
77
+ {
78
+ "id": "input-010",
79
+ "nickname": "Geometry File",
80
+ "paramType": "file",
81
+ "description": "Upload geometry file"
82
+ },
83
+ {
84
+ "id": "input-011",
85
+ "nickname": "Resolution",
86
+ "paramType": "integer",
87
+ "description": "Output resolution in pixels"
88
+ },
89
+ {
90
+ "id": "input-012",
91
+ "nickname": "Auto Calculate",
92
+ "paramType": "boolean",
93
+ "description": "Auto-calculate based on inputs"
94
+ },
95
+ {
96
+ "id": "input-013",
97
+ "nickname": "Small Number",
98
+ "paramType": "number",
99
+ "description": "Very small increments"
100
+ },
101
+ {
102
+ "id": "input-014",
103
+ "nickname": "Large Range",
104
+ "paramType": "number",
105
+ "description": "Large number range"
106
+ },
107
+ {
108
+ "id": "input-015",
109
+ "nickname": "Description Text",
110
+ "paramType": "text",
111
+ "description": "Text with placeholder"
112
+ },
113
+ {
114
+ "id": "input-016",
115
+ "nickname": "Phone Number",
116
+ "paramType": "text",
117
+ "description": "Phone validation pattern"
118
+ },
119
+ {
120
+ "id": "input-017",
121
+ "nickname": "URL",
122
+ "paramType": "text",
123
+ "description": "URL validation"
124
+ },
125
+ {
126
+ "id": "input-018",
127
+ "nickname": "Color Toggle",
128
+ "paramType": "boolean",
129
+ "description": "Enable color options"
130
+ },
131
+ {
132
+ "id": "input-019",
133
+ "nickname": "Color Choice",
134
+ "paramType": "generic",
135
+ "description": "Color selection - conditional"
136
+ },
137
+ {
138
+ "id": "input-020",
139
+ "nickname": "Material Type",
140
+ "paramType": "generic",
141
+ "description": "Material selection"
142
+ },
143
+ {
144
+ "id": "input-021",
145
+ "nickname": "Finish",
146
+ "paramType": "generic",
147
+ "description": "Finish selection - conditional"
148
+ },
149
+ {
150
+ "id": "input-022",
151
+ "nickname": "Enable Advanced",
152
+ "paramType": "boolean",
153
+ "description": "Show advanced options"
154
+ },
155
+ {
156
+ "id": "input-023",
157
+ "nickname": "Iterations",
158
+ "paramType": "integer",
159
+ "description": "Number of iterations"
160
+ },
161
+ {
162
+ "id": "input-024",
163
+ "nickname": "Damping",
164
+ "paramType": "number",
165
+ "description": "Damping coefficient"
166
+ },
167
+ {
168
+ "id": "input-025",
169
+ "nickname": "Threshold",
170
+ "paramType": "number",
171
+ "description": "Convergence threshold"
172
+ },
173
+ {
174
+ "id": "input-026",
175
+ "nickname": "Enable Optimization",
176
+ "paramType": "boolean",
177
+ "description": "Enable optimization"
178
+ },
179
+ {
180
+ "id": "input-027",
181
+ "nickname": "Optimization Level",
182
+ "paramType": "generic",
183
+ "description": "Optimization strength"
184
+ },
185
+ {
186
+ "id": "input-028",
187
+ "nickname": "Minimum Value",
188
+ "paramType": "number",
189
+ "description": "Test negative range"
190
+ },
191
+ {
192
+ "id": "input-029",
193
+ "nickname": "Maximum Value",
194
+ "paramType": "number",
195
+ "description": "Test large range"
196
+ },
197
+ {
198
+ "id": "input-030",
199
+ "nickname": "Document Title",
200
+ "paramType": "text",
201
+ "description": "Required text field"
202
+ },
203
+ {
204
+ "id": "input-031",
205
+ "nickname": "Reference File",
206
+ "paramType": "file",
207
+ "description": "Reference geometry"
208
+ },
209
+ {
210
+ "id": "input-032",
211
+ "nickname": "Source Preset",
212
+ "paramType": "generic",
213
+ "description": "Load from preset"
214
+ },
215
+ {
216
+ "id": "input-033",
217
+ "nickname": "Density",
218
+ "paramType": "number",
219
+ "description": "Mesh density"
220
+ },
221
+ {
222
+ "id": "input-034",
223
+ "nickname": "Interpolation",
224
+ "paramType": "generic",
225
+ "description": "Interpolation method"
226
+ },
227
+ {
228
+ "id": "input-035",
229
+ "nickname": "Enable Texturing",
230
+ "paramType": "boolean",
231
+ "description": "Enable texture mapping"
232
+ },
233
+ {
234
+ "id": "input-036",
235
+ "nickname": "Texture File",
236
+ "paramType": "file",
237
+ "description": "Upload texture"
238
+ },
239
+ {
240
+ "id": "input-037",
241
+ "nickname": "Scale UV",
242
+ "paramType": "number",
243
+ "description": "UV scale multiplier"
244
+ },
245
+ {
246
+ "id": "input-038",
247
+ "nickname": "Repeat Mode",
248
+ "paramType": "generic",
249
+ "description": "Texture repeat mode"
250
+ },
251
+ {
252
+ "id": "input-039",
253
+ "nickname": "Repeat Mode",
254
+ "paramType": "color",
255
+ "description": "Texture repeat mode"
256
+ }
257
+ ],
258
+ "outputs": [
259
+ {
260
+ "id": "output-001",
261
+ "nickname": "Status",
262
+ "description": "Processing status text",
263
+ "type": "text"
264
+ },
265
+ {
266
+ "id": "output-002",
267
+ "nickname": "Metrics",
268
+ "description": "Numerical metrics",
269
+ "type": "number"
270
+ },
271
+ {
272
+ "id": "output-003",
273
+ "nickname": "Result File",
274
+ "description": "Downloadable result geometry",
275
+ "type": "file"
276
+ },
277
+ {
278
+ "id": "output-004",
279
+ "nickname": "Detailed Log",
280
+ "description": "Detailed processing log",
281
+ "type": "text"
282
+ },
283
+ {
284
+ "id": "output-005",
285
+ "nickname": "Performance Stats",
286
+ "description": "Performance metrics",
287
+ "type": "number"
288
+ },
289
+ {
290
+ "id": "output-006",
291
+ "nickname": "Export Geometry",
292
+ "description": "Exported geometry file",
293
+ "type": "file"
294
+ },
295
+ {
296
+ "id": "output-007",
297
+ "nickname": "Plot",
298
+ "description": "Plotly chart output",
299
+ "type": "chart"
300
+ },
301
+ {
302
+ "id": "output-008",
303
+ "nickname": "Contour Plot",
304
+ "description": "Plotly contour chart output",
305
+ "type": "chart"
306
+ }
307
+ ],
308
+ "layout": {
309
+ "type": "tabbed",
310
+ "gap": 16,
311
+ "tabs": [
312
+ {
313
+ "id": "tab-basic",
314
+ "label": "Number Ranges",
315
+ "icon": "mingcute:linkedin-fill",
316
+ "order": 0,
317
+ "position": "left",
318
+ "groups": [
319
+ {
320
+ "id": "group-numbers-basic",
321
+ "label": "Basic Sliders",
322
+ "description": "Standard number slider configurations",
323
+ "order": 0,
324
+ "collapsed": false,
325
+ "columns": 1,
326
+ "items": [
327
+ {
328
+ "type": "input",
329
+ "widgetType": "number",
330
+ "id": "item-001",
331
+ "paramId": "input-001",
332
+ "displayName": "Slider 0-100",
333
+ "description": "Basic slider with step 5",
334
+ "order": 0,
335
+ "span": 1,
336
+ "visible": true,
337
+ "config": {
338
+ "minimum": 0.0,
339
+ "maximum": 100.0,
340
+ "stepSize": 5.0,
341
+ "placeholder": "0-100",
342
+ "renderAsSlider": true
343
+ }
344
+ },
345
+ {
346
+ "type": "input",
347
+ "widgetType": "number",
348
+ "id": "item-002",
349
+ "paramId": "input-013",
350
+ "displayName": "Fine-Grained",
351
+ "description": "Very small increments (0.001)",
352
+ "order": 1,
353
+ "span": 1,
354
+ "visible": true,
355
+ "config": {
356
+ "minimum": 0.0,
357
+ "maximum": 1.0,
358
+ "stepSize": 0.001,
359
+ "renderAsSlider": true
360
+ }
361
+ },
362
+ {
363
+ "type": "input",
364
+ "widgetType": "number",
365
+ "id": "item-003",
366
+ "paramId": "input-014",
367
+ "displayName": "Large Range",
368
+ "description": "0 to 1,000,000",
369
+ "order": 2,
370
+ "span": 1,
371
+ "visible": true,
372
+ "config": {
373
+ "minimum": 0.0,
374
+ "maximum": 1000000.0,
375
+ "stepSize": 1000.0,
376
+ "renderAsSlider": false
377
+ }
378
+ },
379
+ {
380
+ "type": "input",
381
+ "widgetType": "color",
382
+ "id": "item-003",
383
+ "paramId": "input-039",
384
+ "displayName": "Color 0",
385
+ "description": "Basic color picker",
386
+ "order": 0,
387
+ "span": 2,
388
+ "visible": true
389
+ }
390
+ ]
391
+ },
392
+ {
393
+ "id": "group-numbers-advanced",
394
+ "label": "Advanced Configurations",
395
+ "description": "Special number configurations",
396
+ "order": 1,
397
+ "collapsed": false,
398
+ "columns": 2,
399
+ "items": [
400
+ {
401
+ "type": "input",
402
+ "widgetType": "number",
403
+ "id": "item-004",
404
+ "paramId": "input-006",
405
+ "displayName": "Scale Factor",
406
+ "description": "0.1 to 5.0 step 0.1",
407
+ "order": 0,
408
+ "span": 1,
409
+ "visible": true,
410
+ "config": {
411
+ "minimum": 0.1,
412
+ "maximum": 5.0,
413
+ "stepSize": 0.1,
414
+ "renderAsSlider": true
415
+ }
416
+ },
417
+ {
418
+ "type": "input",
419
+ "widgetType": "number",
420
+ "id": "item-005",
421
+ "paramId": "input-028",
422
+ "displayName": "Negative Range",
423
+ "description": "-100 to +100",
424
+ "order": 1,
425
+ "span": 1,
426
+ "visible": true,
427
+ "config": {
428
+ "minimum": -100.0,
429
+ "maximum": 100.0,
430
+ "stepSize": 1.0,
431
+ "renderAsSlider": true
432
+ }
433
+ },
434
+ {
435
+ "type": "linebreak",
436
+ "id": "lb-adv-001"
437
+ },
438
+ {
439
+ "type": "input",
440
+ "widgetType": "number",
441
+ "id": "item-006",
442
+ "paramId": "input-029",
443
+ "displayName": "Very Large",
444
+ "description": "-1M to +1M",
445
+ "order": 2,
446
+ "span": 1,
447
+ "visible": true,
448
+ "config": {
449
+ "minimum": -1000000.0,
450
+ "maximum": 1000000.0,
451
+ "stepSize": 10000.0,
452
+ "renderAsSlider": false
453
+ }
454
+ },
455
+ {
456
+ "type": "input",
457
+ "widgetType": "number",
458
+ "id": "item-007",
459
+ "paramId": "input-011",
460
+ "displayName": "Resolution",
461
+ "description": "512-4096 step 256",
462
+ "order": 3,
463
+ "span": 1,
464
+ "visible": true,
465
+ "config": {
466
+ "minimum": 512.0,
467
+ "maximum": 4096.0,
468
+ "stepSize": 256.0,
469
+ "renderAsSlider": true
470
+ }
471
+ }
472
+ ]
473
+ },
474
+ {
475
+ "id": "group-advanced-solver",
476
+ "label": "Advanced Solver Parameters",
477
+ "description": "Parameters for computational solving",
478
+ "order": 2,
479
+ "collapsed": false,
480
+ "columns": 2,
481
+ "items": [
482
+ {
483
+ "type": "input",
484
+ "widgetType": "number",
485
+ "id": "item-008",
486
+ "paramId": "input-024",
487
+ "displayName": "Damping Coefficient",
488
+ "description": "0.0 to 1.0 with 0.01 steps",
489
+ "order": 0,
490
+ "span": 1,
491
+ "visible": true,
492
+ "config": {
493
+ "minimum": 0.0,
494
+ "maximum": 1.0,
495
+ "stepSize": 0.01,
496
+ "renderAsSlider": true
497
+ }
498
+ },
499
+ {
500
+ "type": "input",
501
+ "widgetType": "number",
502
+ "id": "item-009",
503
+ "paramId": "input-025",
504
+ "displayName": "Convergence Threshold",
505
+ "description": "0.00001 to 0.1",
506
+ "order": 1,
507
+ "span": 1,
508
+ "visible": true,
509
+ "config": {
510
+ "minimum": 0.00001,
511
+ "maximum": 0.1,
512
+ "stepSize": 0.00001,
513
+ "renderAsSlider": false
514
+ }
515
+ },
516
+ {
517
+ "type": "linebreak",
518
+ "id": "lb-solver-001"
519
+ },
520
+ {
521
+ "type": "input",
522
+ "widgetType": "number",
523
+ "id": "item-010",
524
+ "paramId": "input-033",
525
+ "displayName": "Density Multiplier",
526
+ "description": "0.5 to 2.0",
527
+ "order": 2,
528
+ "span": 1,
529
+ "visible": true,
530
+ "config": {
531
+ "minimum": 0.5,
532
+ "maximum": 2.0,
533
+ "stepSize": 0.1,
534
+ "renderAsSlider": true
535
+ }
536
+ },
537
+ {
538
+ "type": "input",
539
+ "widgetType": "number",
540
+ "id": "item-011",
541
+ "paramId": "input-037",
542
+ "displayName": "UV Scale",
543
+ "description": "0.1 to 10.0",
544
+ "order": 3,
545
+ "span": 1,
546
+ "visible": true,
547
+ "config": {
548
+ "minimum": 0.1,
549
+ "maximum": 10.0,
550
+ "stepSize": 0.5,
551
+ "renderAsSlider": true
552
+ }
553
+ }
554
+ ]
555
+ }
556
+ ]
557
+ },
558
+ {
559
+ "id": "tab-text",
560
+ "label": "Text Inputs",
561
+ "icon": "solar:export-bold",
562
+ "order": 1,
563
+ "position": "center",
564
+ "groups": [
565
+ {
566
+ "id": "group-text-basic",
567
+ "label": "Basic Text Fields",
568
+ "description": "Simple text input types",
569
+ "order": 0,
570
+ "collapsed": false,
571
+ "columns": 1,
572
+ "items": [
573
+ {
574
+ "type": "input",
575
+ "widgetType": "text",
576
+ "id": "item-text-001",
577
+ "paramId": "input-002",
578
+ "displayName": "Project Name",
579
+ "description": "Name (max 50 chars)",
580
+ "order": 0,
581
+ "span": 1,
582
+ "visible": true,
583
+ "config": {
584
+ "placeholder": "e.g., My Project",
585
+ "required": true,
586
+ "maxLength": 50
587
+ }
588
+ },
589
+ {
590
+ "type": "input",
591
+ "widgetType": "text",
592
+ "id": "item-text-002",
593
+ "paramId": "input-015",
594
+ "displayName": "Description",
595
+ "description": "Longer description text",
596
+ "order": 1,
597
+ "span": 1,
598
+ "visible": true,
599
+ "config": {
600
+ "placeholder": "Enter project description",
601
+ "maxLength": 500
602
+ }
603
+ },
604
+ {
605
+ "type": "input",
606
+ "widgetType": "text",
607
+ "id": "item-text-003",
608
+ "paramId": "input-030",
609
+ "displayName": "Document Title",
610
+ "description": "Required field only",
611
+ "order": 2,
612
+ "span": 1,
613
+ "visible": true,
614
+ "config": {
615
+ "placeholder": "Enter document title",
616
+ "required": true
617
+ }
618
+ }
619
+ ]
620
+ },
621
+ {
622
+ "id": "group-text-validation",
623
+ "label": "Validation Patterns",
624
+ "description": "Text inputs with pattern validation",
625
+ "order": 1,
626
+ "collapsed": false,
627
+ "columns": 1,
628
+ "items": [
629
+ {
630
+ "type": "input",
631
+ "widgetType": "text",
632
+ "id": "item-text-004",
633
+ "paramId": "input-008",
634
+ "displayName": "Email Address",
635
+ "description": "Valid email format required",
636
+ "order": 0,
637
+ "span": 1,
638
+ "visible": true,
639
+ "config": {
640
+ "placeholder": "you@example.com",
641
+ "required": true,
642
+ "pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$",
643
+ "customErrorMessage": "Please enter a valid email"
644
+ }
645
+ },
646
+ {
647
+ "type": "input",
648
+ "widgetType": "text",
649
+ "id": "item-text-005",
650
+ "paramId": "input-016",
651
+ "displayName": "Phone Number",
652
+ "description": "Phone format: +1-234-567-8900",
653
+ "order": 1,
654
+ "span": 1,
655
+ "visible": true,
656
+ "config": {
657
+ "placeholder": "+1-234-567-8900",
658
+ "pattern": "^\\+?[1-9]\\d{1,14}$",
659
+ "customErrorMessage": "Please enter a valid phone number"
660
+ }
661
+ },
662
+ {
663
+ "type": "input",
664
+ "widgetType": "text",
665
+ "id": "item-text-006",
666
+ "paramId": "input-017",
667
+ "displayName": "URL",
668
+ "description": "Valid website URL",
669
+ "order": 2,
670
+ "span": 1,
671
+ "visible": true,
672
+ "config": {
673
+ "placeholder": "https://example.com",
674
+ "pattern": "^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$",
675
+ "customErrorMessage": "Please enter a valid URL"
676
+ }
677
+ }
678
+ ]
679
+ }
680
+ ]
681
+ },
682
+ {
683
+ "id": "tab-dropdowns",
684
+ "label": "Dropdowns",
685
+ "icon": "mdi:import",
686
+ "order": 2,
687
+ "position": "center",
688
+ "groups": [
689
+ {
690
+ "id": "group-dropdown-basic",
691
+ "label": "Basic Selections",
692
+ "description": "Simple dropdown menus",
693
+ "order": 0,
694
+ "collapsed": false,
695
+ "columns": 1,
696
+ "items": [
697
+ {
698
+ "type": "input",
699
+ "widgetType": "dropdown",
700
+ "id": "item-dd-001",
701
+ "paramId": "input-003",
702
+ "displayName": "Design Type",
703
+ "description": "Choose design approach",
704
+ "order": 0,
705
+ "span": 1,
706
+ "visible": true,
707
+ "config": {
708
+ "options": {
709
+ "parametric": "Parametric",
710
+ "algorithmic": "Algorithmic",
711
+ "generative": "Generative",
712
+ "hybrid": "Hybrid",
713
+ "manual": "Manual"
714
+ },
715
+ "required": true
716
+ }
717
+ },
718
+ {
719
+ "type": "input",
720
+ "widgetType": "dropdown",
721
+ "id": "item-dd-002",
722
+ "paramId": "input-020",
723
+ "displayName": "Material Type",
724
+ "description": "Select material",
725
+ "order": 1,
726
+ "span": 1,
727
+ "visible": true,
728
+ "config": {
729
+ "options": {
730
+ "concrete": "Concrete",
731
+ "steel": "Steel",
732
+ "aluminum": "Aluminum",
733
+ "wood": "Wood",
734
+ "stone": "Stone",
735
+ "glass": "Glass"
736
+ }
737
+ }
738
+ },
739
+ {
740
+ "type": "input",
741
+ "widgetType": "dropdown",
742
+ "id": "item-dd-003",
743
+ "paramId": "input-032",
744
+ "displayName": "Load Preset",
745
+ "description": "Load from saved preset",
746
+ "order": 2,
747
+ "span": 1,
748
+ "visible": true,
749
+ "config": {
750
+ "options": {
751
+ "preset-1": "Preset 1: Default",
752
+ "preset-2": "Preset 2: High Detail",
753
+ "preset-3": "Preset 3: Fast Render",
754
+ "preset-4": "Preset 4: Custom"
755
+ }
756
+ }
757
+ }
758
+ ]
759
+ },
760
+ {
761
+ "id": "group-dropdown-conditional",
762
+ "label": "Conditional Dropdowns",
763
+ "description": "Dropdowns shown based on other inputs",
764
+ "order": 1,
765
+ "collapsed": false,
766
+ "columns": 1,
767
+ "items": [
768
+ {
769
+ "type": "input",
770
+ "widgetType": "dropdown",
771
+ "id": "item-dd-004",
772
+ "paramId": "input-021",
773
+ "displayName": "Finish Type",
774
+ "description": "Available when material is selected",
775
+ "order": 0,
776
+ "span": 1,
777
+ "visible": true,
778
+ "visibilityCondition": {
779
+ "mode": "all",
780
+ "rules": [
781
+ {
782
+ "paramId": "input-020",
783
+ "operator": "notEquals",
784
+ "value": ""
785
+ }
786
+ ],
787
+ "action": "show"
788
+ },
789
+ "config": {
790
+ "options": {
791
+ "matte": "Matte",
792
+ "glossy": "Glossy",
793
+ "semi-gloss": "Semi-Gloss",
794
+ "textured": "Textured",
795
+ "polished": "Polished"
796
+ }
797
+ }
798
+ },
799
+ {
800
+ "type": "input",
801
+ "widgetType": "dropdown",
802
+ "id": "item-dd-005",
803
+ "paramId": "input-034",
804
+ "displayName": "Interpolation",
805
+ "description": "Interpolation method",
806
+ "order": 1,
807
+ "span": 1,
808
+ "visible": true,
809
+ "config": {
810
+ "options": {
811
+ "linear": "Linear",
812
+ "cubic": "Cubic",
813
+ "smooth": "Smooth",
814
+ "hermite": "Hermite"
815
+ }
816
+ }
817
+ },
818
+ {
819
+ "type": "input",
820
+ "widgetType": "dropdown",
821
+ "id": "item-dd-006",
822
+ "paramId": "input-027",
823
+ "displayName": "Optimization Level",
824
+ "description": "Shown if optimization enabled",
825
+ "order": 2,
826
+ "span": 1,
827
+ "visible": true,
828
+ "visibilityCondition": {
829
+ "mode": "all",
830
+ "rules": [
831
+ {
832
+ "paramId": "input-026",
833
+ "operator": "equals",
834
+ "value": true
835
+ }
836
+ ],
837
+ "action": "show"
838
+ },
839
+ "config": {
840
+ "options": {
841
+ "low": "Low",
842
+ "medium": "Medium",
843
+ "high": "High",
844
+ "maximum": "Maximum"
845
+ }
846
+ }
847
+ },
848
+ {
849
+ "type": "input",
850
+ "widgetType": "dropdown",
851
+ "id": "item-dd-007",
852
+ "paramId": "input-038",
853
+ "displayName": "Texture Repeat",
854
+ "description": "Shown if texturing enabled",
855
+ "order": 3,
856
+ "span": 1,
857
+ "visible": true,
858
+ "visibilityCondition": {
859
+ "mode": "all",
860
+ "rules": [
861
+ {
862
+ "paramId": "input-035",
863
+ "operator": "equals",
864
+ "value": true
865
+ }
866
+ ],
867
+ "action": "show"
868
+ },
869
+ "config": {
870
+ "options": {
871
+ "clamp": "Clamp",
872
+ "repeat": "Repeat",
873
+ "mirror": "Mirror"
874
+ }
875
+ }
876
+ }
877
+ ]
878
+ }
879
+ ]
880
+ },
881
+ {
882
+ "id": "tab-toggles",
883
+ "label": "Checkboxes",
884
+ "icon": "solar:check-square-bold",
885
+ "order": 3,
886
+ "position": "right",
887
+ "groups": [
888
+ {
889
+ "id": "group-checkboxes",
890
+ "label": "Toggle Options",
891
+ "description": "Boolean checkbox inputs",
892
+ "order": 0,
893
+ "collapsed": false,
894
+ "columns": 2,
895
+ "items": [
896
+ {
897
+ "type": "input",
898
+ "widgetType": "checkbox",
899
+ "id": "item-cb-001",
900
+ "paramId": "input-004",
901
+ "displayName": "Enable Symmetry",
902
+ "description": "Toggle symmetry feature",
903
+ "order": 0,
904
+ "span": 1,
905
+ "visible": true
906
+ },
907
+ {
908
+ "type": "input",
909
+ "widgetType": "checkbox",
910
+ "id": "item-cb-002",
911
+ "paramId": "input-012",
912
+ "displayName": "Auto Calculate",
913
+ "description": "Auto-calculate on change",
914
+ "order": 1,
915
+ "span": 1,
916
+ "visible": true
917
+ },
918
+ {
919
+ "type": "input",
920
+ "widgetType": "checkbox",
921
+ "id": "item-cb-003",
922
+ "paramId": "input-018",
923
+ "displayName": "Enable Colors",
924
+ "description": "Enable color options",
925
+ "order": 2,
926
+ "span": 1,
927
+ "visible": true
928
+ },
929
+ {
930
+ "type": "input",
931
+ "widgetType": "checkbox",
932
+ "id": "item-cb-004",
933
+ "paramId": "input-022",
934
+ "displayName": "Advanced Options",
935
+ "description": "Show advanced settings",
936
+ "order": 3,
937
+ "span": 1,
938
+ "visible": true
939
+ },
940
+ {
941
+ "type": "input",
942
+ "widgetType": "checkbox",
943
+ "id": "item-cb-005",
944
+ "paramId": "input-026",
945
+ "displayName": "Enable Optimization",
946
+ "description": "Enable optimization mode",
947
+ "order": 4,
948
+ "span": 1,
949
+ "visible": true
950
+ },
951
+ {
952
+ "type": "input",
953
+ "widgetType": "checkbox",
954
+ "id": "item-cb-006",
955
+ "paramId": "input-035",
956
+ "displayName": "Enable Texturing",
957
+ "description": "Enable texture mapping",
958
+ "order": 5,
959
+ "span": 1,
960
+ "visible": true
961
+ }
962
+ ]
963
+ }
964
+ ]
965
+ },
966
+ {
967
+ "id": "tab-files",
968
+ "label": "Files & Outputs",
969
+ "icon": "majesticons:battery-full-line",
970
+ "order": 2,
971
+ "position": "right",
972
+ "groups": [
973
+ {
974
+ "id": "group-uploads",
975
+ "label": "File Uploads",
976
+ "description": "File input controls",
977
+ "order": 0,
978
+ "collapsed": false,
979
+ "columns": 1,
980
+ "items": [
981
+ {
982
+ "type": "input",
983
+ "widgetType": "file",
984
+ "id": "item-file-001",
985
+ "paramId": "input-010",
986
+ "displayName": "Geometry File",
987
+ "description": "3D geometry upload/URL",
988
+ "order": 0,
989
+ "span": 1,
990
+ "visible": true,
991
+ "config": {
992
+ "acceptedFormats": [".3dm", ".stp", ".step", ".obj", ".fbx"],
993
+ "defaultInputMode": "upload",
994
+ "allowedInputModes": ["upload", "url"]
995
+ }
996
+ },
997
+ {
998
+ "type": "input",
999
+ "widgetType": "file",
1000
+ "id": "item-file-002",
1001
+ "paramId": "input-031",
1002
+ "displayName": "Reference File",
1003
+ "description": "Reference geometry upload",
1004
+ "order": 1,
1005
+ "span": 1,
1006
+ "visible": true,
1007
+ "config": {
1008
+ "acceptedFormats": [".3dm", ".iges", ".stp"],
1009
+ "defaultInputMode": "upload"
1010
+ }
1011
+ },
1012
+ {
1013
+ "type": "input",
1014
+ "widgetType": "file",
1015
+ "id": "item-file-003",
1016
+ "paramId": "input-036",
1017
+ "displayName": "Texture File",
1018
+ "description": "Shown if texturing enabled",
1019
+ "order": 2,
1020
+ "span": 1,
1021
+ "visible": true,
1022
+ "visibilityCondition": {
1023
+ "mode": "all",
1024
+ "rules": [
1025
+ {
1026
+ "paramId": "input-035",
1027
+ "operator": "equals",
1028
+ "value": true
1029
+ }
1030
+ ],
1031
+ "action": "show"
1032
+ },
1033
+ "config": {
1034
+ "acceptedFormats": [".jpg", ".png", ".exr", ".hdr"]
1035
+ }
1036
+ }
1037
+ ]
1038
+ },
1039
+ {
1040
+ "id": "group-outputs",
1041
+ "label": "Outputs & Results",
1042
+ "description": "Output displays and downloads",
1043
+ "order": 1,
1044
+ "collapsed": false,
1045
+ "columns": 1,
1046
+ "items": [
1047
+ {
1048
+ "type": "output",
1049
+ "widgetType": "text",
1050
+ "id": "item-out-001",
1051
+ "paramId": "output-001",
1052
+ "displayName": "Status",
1053
+ "order": 0,
1054
+ "span": 1,
1055
+ "visible": true
1056
+ },
1057
+ {
1058
+ "type": "output",
1059
+ "widgetType": "text",
1060
+ "id": "item-out-002",
1061
+ "paramId": "output-004",
1062
+ "displayName": "Detailed Log",
1063
+ "order": 1,
1064
+ "span": 1,
1065
+ "visible": true
1066
+ },
1067
+ {
1068
+ "type": "output",
1069
+ "widgetType": "number",
1070
+ "id": "item-out-003",
1071
+ "paramId": "output-002",
1072
+ "displayName": "Metrics",
1073
+ "order": 2,
1074
+ "span": 1,
1075
+ "visible": true
1076
+ },
1077
+ {
1078
+ "type": "output",
1079
+ "widgetType": "number",
1080
+ "id": "item-out-004",
1081
+ "paramId": "output-005",
1082
+ "displayName": "Performance Stats",
1083
+ "order": 3,
1084
+ "span": 1,
1085
+ "visible": true
1086
+ },
1087
+ {
1088
+ "type": "output",
1089
+ "widgetType": "file",
1090
+ "id": "item-out-005",
1091
+ "paramId": "output-003",
1092
+ "displayName": "Result Geometry",
1093
+ "order": 4,
1094
+ "span": 1,
1095
+ "visible": true,
1096
+ "config": {
1097
+ "buttonLabel": "Download",
1098
+ "fileFormat": "3dm"
1099
+ }
1100
+ },
1101
+ {
1102
+ "type": "output",
1103
+ "widgetType": "chart",
1104
+ "id": "item-out-007",
1105
+ "paramId": "output-007",
1106
+ "displayName": "Plot",
1107
+ "order": 6,
1108
+ "span": 1,
1109
+ "visible": true
1110
+ },
1111
+ {
1112
+ "type": "output",
1113
+ "widgetType": "chart",
1114
+ "id": "item-out-008",
1115
+ "paramId": "output-008",
1116
+ "displayName": "Contour Plot",
1117
+ "order": 7,
1118
+ "span": 1,
1119
+ "visible": true
1120
+ },
1121
+ {
1122
+ "type": "output",
1123
+ "widgetType": "file",
1124
+ "id": "item-out-006",
1125
+ "paramId": "output-006",
1126
+ "displayName": "Export File",
1127
+ "order": 5,
1128
+ "span": 1,
1129
+ "visible": true,
1130
+ "config": {
1131
+ "buttonLabel": "Export",
1132
+ "fileFormat": "step"
1133
+ }
1134
+ }
1135
+ ]
1136
+ }
1137
+ ]
1138
+ },
1139
+ {
1140
+ "id": "tab-conditions",
1141
+ "label": "Conditional Logic",
1142
+ "icon": "solar:logic-gate-and-bold",
1143
+ "order": 5,
1144
+ "position": "left",
1145
+ "groups": [
1146
+ {
1147
+ "id": "group-visibility-main",
1148
+ "label": "Visibility Rule Tester",
1149
+ "description": "Test all visibility operators",
1150
+ "order": 0,
1151
+ "collapsed": false,
1152
+ "columns": 1,
1153
+ "items": [
1154
+ {
1155
+ "type": "input",
1156
+ "widgetType": "number",
1157
+ "id": "item-cond-001",
1158
+ "paramId": "input-007",
1159
+ "displayName": "Quality Level (1-10)",
1160
+ "description": "Controls visibility below",
1161
+ "order": 0,
1162
+ "span": 1,
1163
+ "visible": true,
1164
+ "config": {
1165
+ "minimum": 1.0,
1166
+ "maximum": 10.0,
1167
+ "stepSize": 1.0,
1168
+ "renderAsSlider": true
1169
+ }
1170
+ },
1171
+ {
1172
+ "type": "input",
1173
+ "widgetType": "number",
1174
+ "id": "item-cond-002",
1175
+ "paramId": "input-023",
1176
+ "displayName": "Hidden: Quality > 5",
1177
+ "description": "Shows when quality > 5 (greaterThan)",
1178
+ "order": 1,
1179
+ "span": 1,
1180
+ "visible": true,
1181
+ "visibilityCondition": {
1182
+ "mode": "all",
1183
+ "rules": [
1184
+ {
1185
+ "paramId": "input-007",
1186
+ "operator": "greaterThan",
1187
+ "value": 5
1188
+ }
1189
+ ],
1190
+ "action": "show"
1191
+ },
1192
+ "config": {
1193
+ "minimum": 1.0,
1194
+ "maximum": 100.0,
1195
+ "stepSize": 1.0,
1196
+ "renderAsSlider": true
1197
+ }
1198
+ },
1199
+ {
1200
+ "type": "input",
1201
+ "widgetType": "number",
1202
+ "id": "item-cond-003",
1203
+ "paramId": "input-024",
1204
+ "displayName": "Hidden: Quality <= 5",
1205
+ "description": "Shows when quality <= 5 (lessThanOrEqual)",
1206
+ "order": 2,
1207
+ "span": 1,
1208
+ "visible": true,
1209
+ "visibilityCondition": {
1210
+ "mode": "all",
1211
+ "rules": [
1212
+ {
1213
+ "paramId": "input-007",
1214
+ "operator": "lessThanOrEqual",
1215
+ "value": 5
1216
+ }
1217
+ ],
1218
+ "action": "show"
1219
+ },
1220
+ "config": {
1221
+ "minimum": 0.0,
1222
+ "maximum": 1.0,
1223
+ "stepSize": 0.1,
1224
+ "renderAsSlider": true
1225
+ }
1226
+ },
1227
+ {
1228
+ "type": "input",
1229
+ "widgetType": "checkbox",
1230
+ "id": "item-cond-004",
1231
+ "paramId": "input-005",
1232
+ "displayName": "Hidden: Quality between 3-7",
1233
+ "description": "Shows when quality between 3-7 (between)",
1234
+ "order": 3,
1235
+ "span": 1,
1236
+ "visible": true,
1237
+ "visibilityCondition": {
1238
+ "mode": "all",
1239
+ "rules": [
1240
+ {
1241
+ "paramId": "input-007",
1242
+ "operator": "between",
1243
+ "values": [3, 7]
1244
+ }
1245
+ ],
1246
+ "action": "show"
1247
+ }
1248
+ }
1249
+ ]
1250
+ },
1251
+ {
1252
+ "id": "group-symmetry-conditional",
1253
+ "label": "Symmetry Controls",
1254
+ "description": "Conditional symmetry options",
1255
+ "order": 1,
1256
+ "collapsed": false,
1257
+ "columns": 1,
1258
+ "items": [
1259
+ {
1260
+ "type": "input",
1261
+ "widgetType": "dropdown",
1262
+ "id": "item-cond-005",
1263
+ "paramId": "input-005",
1264
+ "displayName": "Symmetry Axis",
1265
+ "description": "Only shown when symmetry enabled",
1266
+ "order": 0,
1267
+ "span": 1,
1268
+ "visible": true,
1269
+ "visibilityCondition": {
1270
+ "mode": "all",
1271
+ "rules": [
1272
+ {
1273
+ "paramId": "input-004",
1274
+ "operator": "equals",
1275
+ "value": true
1276
+ }
1277
+ ],
1278
+ "action": "show"
1279
+ },
1280
+ "config": {
1281
+ "options": {
1282
+ "x": "X Axis",
1283
+ "y": "Y Axis",
1284
+ "z": "Z Axis",
1285
+ "xy": "XY Plane",
1286
+ "xz": "XZ Plane",
1287
+ "yz": "YZ Plane"
1288
+ },
1289
+ "required": true
1290
+ }
1291
+ }
1292
+ ]
1293
+ },
1294
+ {
1295
+ "id": "group-color-conditional",
1296
+ "label": "Color Options",
1297
+ "description": "Conditional color controls",
1298
+ "order": 2,
1299
+ "collapsed": false,
1300
+ "columns": 1,
1301
+ "items": [
1302
+ {
1303
+ "type": "input",
1304
+ "widgetType": "dropdown",
1305
+ "id": "item-cond-006",
1306
+ "paramId": "input-019",
1307
+ "displayName": "Color Palette",
1308
+ "description": "Only when colors enabled",
1309
+ "order": 0,
1310
+ "span": 1,
1311
+ "visible": true,
1312
+ "visibilityCondition": {
1313
+ "mode": "all",
1314
+ "rules": [
1315
+ {
1316
+ "paramId": "input-018",
1317
+ "operator": "equals",
1318
+ "value": true
1319
+ }
1320
+ ],
1321
+ "action": "show"
1322
+ },
1323
+ "config": {
1324
+ "options": {
1325
+ "warm": "Warm",
1326
+ "cool": "Cool",
1327
+ "neutral": "Neutral",
1328
+ "vibrant": "Vibrant"
1329
+ }
1330
+ }
1331
+ }
1332
+ ]
1333
+ }
1334
+ ]
1335
+ },
1336
+ {
1337
+ "id": "tab-layouts",
1338
+ "label": "Layout Variations",
1339
+ "icon": "solar:layout-bold",
1340
+ "order": 6,
1341
+ "position": "left",
1342
+ "groups": [
1343
+ {
1344
+ "id": "group-single-col",
1345
+ "label": "Single Column",
1346
+ "description": "Items in one column",
1347
+ "order": 0,
1348
+ "collapsed": false,
1349
+ "columns": 1,
1350
+ "items": [
1351
+ {
1352
+ "type": "input",
1353
+ "widgetType": "text",
1354
+ "id": "item-layout-001",
1355
+ "paramId": "input-002",
1356
+ "displayName": "Item 1",
1357
+ "order": 0,
1358
+ "span": 1,
1359
+ "visible": true,
1360
+ "config": { "placeholder": "Single column" }
1361
+ },
1362
+ {
1363
+ "type": "input",
1364
+ "widgetType": "text",
1365
+ "id": "item-layout-002",
1366
+ "paramId": "input-015",
1367
+ "displayName": "Item 2",
1368
+ "order": 1,
1369
+ "span": 1,
1370
+ "visible": true,
1371
+ "config": { "placeholder": "Single column" }
1372
+ }
1373
+ ]
1374
+ },
1375
+ {
1376
+ "id": "group-two-col",
1377
+ "label": "Two Columns",
1378
+ "description": "2-column layout",
1379
+ "order": 1,
1380
+ "collapsed": false,
1381
+ "columns": 2,
1382
+ "items": [
1383
+ {
1384
+ "type": "input",
1385
+ "widgetType": "number",
1386
+ "id": "item-layout-003",
1387
+ "paramId": "input-001",
1388
+ "displayName": "Col 1",
1389
+ "order": 0,
1390
+ "span": 1,
1391
+ "visible": true,
1392
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1393
+ },
1394
+ {
1395
+ "type": "input",
1396
+ "widgetType": "number",
1397
+ "id": "item-layout-004",
1398
+ "paramId": "input-006",
1399
+ "displayName": "Col 2",
1400
+ "order": 1,
1401
+ "span": 1,
1402
+ "visible": true,
1403
+ "config": { "minimum": 0, "maximum": 10, "stepSize": 0.1 }
1404
+ },
1405
+ {
1406
+ "type": "input",
1407
+ "widgetType": "number",
1408
+ "id": "item-layout-005",
1409
+ "paramId": "input-011",
1410
+ "displayName": "Full Width (span 2)",
1411
+ "order": 2,
1412
+ "span": 2,
1413
+ "visible": true,
1414
+ "config": { "minimum": 100, "maximum": 4096, "stepSize": 100 }
1415
+ }
1416
+ ]
1417
+ },
1418
+ {
1419
+ "id": "group-three-col",
1420
+ "label": "Three Columns",
1421
+ "description": "3-column layout",
1422
+ "order": 2,
1423
+ "collapsed": false,
1424
+ "columns": 3,
1425
+ "items": [
1426
+ {
1427
+ "type": "input",
1428
+ "widgetType": "number",
1429
+ "id": "item-layout-006",
1430
+ "paramId": "input-001",
1431
+ "displayName": "A",
1432
+ "order": 0,
1433
+ "span": 1,
1434
+ "visible": true,
1435
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1436
+ },
1437
+ {
1438
+ "type": "input",
1439
+ "widgetType": "number",
1440
+ "id": "item-layout-007",
1441
+ "paramId": "input-006",
1442
+ "displayName": "B",
1443
+ "order": 1,
1444
+ "span": 1,
1445
+ "visible": true,
1446
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1447
+ },
1448
+ {
1449
+ "type": "input",
1450
+ "widgetType": "number",
1451
+ "id": "item-layout-008",
1452
+ "paramId": "input-011",
1453
+ "displayName": "C",
1454
+ "order": 2,
1455
+ "span": 1,
1456
+ "visible": true,
1457
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1458
+ },
1459
+ {
1460
+ "type": "linebreak",
1461
+ "id": "lb-three-001"
1462
+ },
1463
+ {
1464
+ "type": "input",
1465
+ "widgetType": "number",
1466
+ "id": "item-layout-009",
1467
+ "paramId": "input-013",
1468
+ "displayName": "Span 2",
1469
+ "order": 3,
1470
+ "span": 2,
1471
+ "visible": true,
1472
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1473
+ },
1474
+ {
1475
+ "type": "input",
1476
+ "widgetType": "number",
1477
+ "id": "item-layout-010",
1478
+ "paramId": "input-014",
1479
+ "displayName": "Single",
1480
+ "order": 4,
1481
+ "span": 1,
1482
+ "visible": true,
1483
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1484
+ }
1485
+ ]
1486
+ },
1487
+ {
1488
+ "id": "group-four-col",
1489
+ "label": "Four Columns",
1490
+ "description": "4-column layout with various spans",
1491
+ "order": 3,
1492
+ "collapsed": false,
1493
+ "columns": 4,
1494
+ "items": [
1495
+ {
1496
+ "type": "input",
1497
+ "widgetType": "number",
1498
+ "id": "item-layout-011",
1499
+ "paramId": "input-001",
1500
+ "displayName": "1",
1501
+ "order": 0,
1502
+ "span": 1,
1503
+ "visible": true,
1504
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1505
+ },
1506
+ {
1507
+ "type": "input",
1508
+ "widgetType": "number",
1509
+ "id": "item-layout-012",
1510
+ "paramId": "input-006",
1511
+ "displayName": "2",
1512
+ "order": 1,
1513
+ "span": 1,
1514
+ "visible": true,
1515
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1516
+ },
1517
+ {
1518
+ "type": "input",
1519
+ "widgetType": "number",
1520
+ "id": "item-layout-013",
1521
+ "paramId": "input-011",
1522
+ "displayName": "3",
1523
+ "order": 2,
1524
+ "span": 1,
1525
+ "visible": true,
1526
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1527
+ },
1528
+ {
1529
+ "type": "input",
1530
+ "widgetType": "number",
1531
+ "id": "item-layout-014",
1532
+ "paramId": "input-013",
1533
+ "displayName": "4",
1534
+ "order": 3,
1535
+ "span": 1,
1536
+ "visible": true,
1537
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1538
+ },
1539
+ {
1540
+ "type": "linebreak",
1541
+ "id": "lb-four-001"
1542
+ },
1543
+ {
1544
+ "type": "input",
1545
+ "widgetType": "number",
1546
+ "id": "item-layout-015",
1547
+ "paramId": "input-014",
1548
+ "displayName": "Span 2",
1549
+ "order": 4,
1550
+ "span": 2,
1551
+ "visible": true,
1552
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1553
+ },
1554
+ {
1555
+ "type": "input",
1556
+ "widgetType": "number",
1557
+ "id": "item-layout-016",
1558
+ "paramId": "input-028",
1559
+ "displayName": "Span 2",
1560
+ "order": 5,
1561
+ "span": 2,
1562
+ "visible": true,
1563
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1564
+ },
1565
+ {
1566
+ "type": "input",
1567
+ "widgetType": "number",
1568
+ "id": "item-layout-017",
1569
+ "paramId": "input-029",
1570
+ "displayName": "Full Width",
1571
+ "order": 6,
1572
+ "span": 4,
1573
+ "visible": true,
1574
+ "config": { "minimum": 0, "maximum": 100, "stepSize": 1 }
1575
+ }
1576
+ ]
1577
+ }
1578
+ ]
1579
+ }
1580
+ ]
1581
+ }
1582
+ }