@svgrid/enterprise 2.5.2 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. package/dist/SvAlertRuleEditor.svelte.d.ts +13 -0
  2. package/dist/SvAlertsManager.svelte.d.ts +14 -0
  3. package/dist/SvAlertsPanel.svelte.d.ts +9 -0
  4. package/dist/SvAuthGate.svelte.d.ts +22 -0
  5. package/dist/SvBoard.svelte.d.ts +35 -0
  6. package/dist/SvExportMenu.svelte.d.ts +61 -0
  7. package/dist/SvExpressionEditor.svelte.d.ts +12 -0
  8. package/dist/SvFileInput.svelte.d.ts +20 -0
  9. package/dist/SvGridAlerts.svelte.d.ts +77 -0
  10. package/dist/SvGridBoard.svelte.d.ts +30 -0
  11. package/dist/SvGridEditPanel.svelte.d.ts +73 -0
  12. package/dist/SvGridMasterDetail.svelte.d.ts +49 -0
  13. package/dist/SvGridScheduler.svelte.d.ts +30 -0
  14. package/dist/SvImportDialog.svelte.d.ts +88 -0
  15. package/dist/SvLookupInput.svelte.d.ts +21 -0
  16. package/dist/SvPivotDesigner.svelte.d.ts +176 -0
  17. package/dist/SvRecordDetail.svelte.d.ts +58 -0
  18. package/dist/SvSchedule.svelte.d.ts +29 -0
  19. package/dist/SvSchemaChart.svelte.d.ts +61 -0
  20. package/dist/SvSchemaDashboard.svelte.d.ts +46 -0
  21. package/dist/alerts/alert-engine-attach.d.ts +79 -0
  22. package/dist/alerts/alert-engine-attach.js +106 -0
  23. package/dist/alerts/alert-engine.d.ts +42 -0
  24. package/dist/alerts/alert-engine.js +196 -0
  25. package/dist/alerts/alert-formats.d.ts +26 -0
  26. package/dist/alerts/alert-formats.js +58 -0
  27. package/dist/alerts/alert-observer.d.ts +54 -0
  28. package/dist/alerts/alert-observer.js +156 -0
  29. package/dist/alerts/alert-scheduler.d.ts +30 -0
  30. package/dist/alerts/alert-scheduler.js +54 -0
  31. package/dist/alerts/alert-storage.d.ts +31 -0
  32. package/dist/alerts/alert-storage.js +92 -0
  33. package/dist/alerts/alert-store.svelte.d.ts +24 -0
  34. package/dist/alerts/alert-store.svelte.js +69 -0
  35. package/dist/alerts/alert-types.d.ts +86 -0
  36. package/dist/alerts/alert-types.js +1 -0
  37. package/dist/alerts.d.ts +2 -0
  38. package/{src/alerts.ts → dist/alerts.js} +9 -9
  39. package/dist/board.d.ts +7 -0
  40. package/{src/board.ts → dist/board.js} +13 -14
  41. package/dist/cdn/svgrid-enterprise.svelte-external.js +2987 -2981
  42. package/dist/designer/assets/{index-CM5xvaOy.js → index-BF0UH638.js} +3 -3
  43. package/dist/designer/assets/{src-D-ET9Mmo.js → src-BPJruwB9.js} +184 -184
  44. package/dist/designer/index.html +2 -2
  45. package/dist/edit-panel.d.ts +105 -0
  46. package/dist/edit-panel.js +350 -0
  47. package/dist/export-conditional.d.ts +31 -0
  48. package/dist/export-conditional.js +65 -0
  49. package/dist/export-ooxml.d.ts +93 -0
  50. package/dist/export-ooxml.js +385 -0
  51. package/dist/export-pdf.d.ts +107 -0
  52. package/dist/export-pdf.js +144 -0
  53. package/dist/export-print.d.ts +55 -0
  54. package/dist/export-print.js +91 -0
  55. package/{src/export-serialize.ts → dist/export-serialize.d.ts} +11 -24
  56. package/dist/export-serialize.js +11 -0
  57. package/dist/export-xls.d.ts +26 -0
  58. package/dist/export-xls.js +157 -0
  59. package/dist/export.d.ts +323 -0
  60. package/dist/export.js +1021 -0
  61. package/dist/expressions/evaluate.d.ts +17 -0
  62. package/dist/expressions/evaluate.js +214 -0
  63. package/dist/expressions/expression-columns.d.ts +61 -0
  64. package/dist/expressions/expression-columns.js +72 -0
  65. package/dist/expressions/expression-types.d.ts +125 -0
  66. package/dist/expressions/expression-types.js +1 -0
  67. package/dist/expressions/parse.d.ts +25 -0
  68. package/dist/expressions/parse.js +537 -0
  69. package/dist/import.d.ts +232 -0
  70. package/dist/import.js +846 -0
  71. package/dist/index.d.ts +66 -0
  72. package/dist/index.js +91 -0
  73. package/dist/install.d.ts +70 -0
  74. package/dist/install.js +61 -0
  75. package/dist/license-core.d.ts +37 -0
  76. package/dist/license-core.js +81 -0
  77. package/dist/license.d.ts +30 -0
  78. package/dist/license.js +139 -0
  79. package/dist/master-detail.d.ts +23 -0
  80. package/dist/master-detail.js +35 -0
  81. package/dist/node/studio.js +1 -1
  82. package/dist/pivot-chart.d.ts +28 -0
  83. package/dist/pivot-chart.js +71 -0
  84. package/dist/pivot-designer.d.ts +69 -0
  85. package/dist/pivot-designer.js +38 -0
  86. package/dist/pivot-enable.d.ts +6 -0
  87. package/{src/pivot-enable.ts → dist/pivot-enable.js} +13 -18
  88. package/dist/pivot.d.ts +111 -0
  89. package/dist/pivot.js +353 -0
  90. package/dist/print.d.ts +33 -0
  91. package/dist/print.js +61 -0
  92. package/dist/revoked.d.ts +1 -0
  93. package/{src/revoked.ts → dist/revoked.js} +5 -6
  94. package/dist/scheduler-assignments.d.ts +64 -0
  95. package/dist/scheduler-assignments.js +92 -0
  96. package/dist/scheduler-axis.d.ts +81 -0
  97. package/dist/scheduler-axis.js +180 -0
  98. package/{src/scheduler-booking.ts → dist/scheduler-booking.d.ts} +10 -43
  99. package/dist/scheduler-booking.js +50 -0
  100. package/dist/scheduler-config.d.ts +177 -0
  101. package/dist/scheduler-config.js +1 -0
  102. package/dist/scheduler-dependencies.d.ts +89 -0
  103. package/dist/scheduler-dependencies.js +179 -0
  104. package/dist/scheduler-freebusy.d.ts +19 -0
  105. package/{src/scheduler-freebusy.ts → dist/scheduler-freebusy.js} +9 -19
  106. package/{src/scheduler-heatmap.ts → dist/scheduler-heatmap.d.ts} +12 -35
  107. package/dist/scheduler-heatmap.js +41 -0
  108. package/dist/scheduler-resource-tree.d.ts +48 -0
  109. package/dist/scheduler-resource-tree.js +78 -0
  110. package/dist/scheduler-slots.d.ts +37 -0
  111. package/dist/scheduler-slots.js +80 -0
  112. package/dist/scheduler-summary.d.ts +41 -0
  113. package/dist/scheduler-summary.js +54 -0
  114. package/dist/scheduler.d.ts +7 -0
  115. package/{src/scheduler.ts → dist/scheduler.js} +13 -14
  116. package/dist/scheduling.d.ts +132 -0
  117. package/dist/scheduling.js +228 -0
  118. package/dist/schema-designer.d.ts +42 -0
  119. package/dist/schema-designer.js +117 -0
  120. package/dist/schema.d.ts +369 -0
  121. package/dist/schema.js +216 -0
  122. package/dist/smart-shim.d.ts +62 -0
  123. package/dist/smart-shim.js +34 -0
  124. package/dist/sources/aggregate.d.ts +43 -0
  125. package/dist/sources/aggregate.js +60 -0
  126. package/dist/sources/auth-supabase.d.ts +69 -0
  127. package/dist/sources/auth-supabase.js +39 -0
  128. package/dist/sources/dashboard.d.ts +65 -0
  129. package/dist/sources/dashboard.js +95 -0
  130. package/dist/sources/field-inference.d.ts +23 -0
  131. package/dist/sources/field-inference.js +52 -0
  132. package/dist/sources/filters.d.ts +35 -0
  133. package/dist/sources/filters.js +52 -0
  134. package/dist/sources/index.d.ts +18 -0
  135. package/dist/sources/index.js +18 -0
  136. package/dist/sources/introspect-supabase.d.ts +30 -0
  137. package/dist/sources/introspect-supabase.js +134 -0
  138. package/dist/sources/realtime-supabase.d.ts +37 -0
  139. package/dist/sources/realtime-supabase.js +52 -0
  140. package/dist/sources/relation-lookup.d.ts +50 -0
  141. package/dist/sources/relation-lookup.js +77 -0
  142. package/dist/sources/rest-adapters.d.ts +48 -0
  143. package/dist/sources/rest-adapters.js +85 -0
  144. package/dist/sources/rest.d.ts +38 -0
  145. package/dist/sources/rest.js +86 -0
  146. package/dist/sources/schema-from-columns.d.ts +37 -0
  147. package/dist/sources/schema-from-columns.js +48 -0
  148. package/dist/sources/supabase.d.ts +33 -0
  149. package/dist/sources/supabase.js +74 -0
  150. package/dist/sources/with-entity-rules.d.ts +25 -0
  151. package/dist/sources/with-entity-rules.js +47 -0
  152. package/dist/sources/with-relation-labels.d.ts +26 -0
  153. package/dist/sources/with-relation-labels.js +38 -0
  154. package/dist/staged-editing.d.ts +85 -0
  155. package/dist/staged-editing.js +0 -0
  156. package/dist/studio/bug-report.d.ts +61 -0
  157. package/dist/studio/bug-report.js +126 -0
  158. package/dist/studio/cli.d.ts +56 -0
  159. package/dist/studio/cli.js +70 -0
  160. package/dist/studio/copilot-core.d.ts +22 -0
  161. package/{src/studio/copilot-core.ts → dist/studio/copilot-core.js} +34 -38
  162. package/dist/studio/csv.d.ts +36 -0
  163. package/dist/studio/csv.js +173 -0
  164. package/dist/studio/db-connect-string.d.ts +45 -0
  165. package/dist/studio/db-connect-string.js +113 -0
  166. package/dist/studio/deploy-cli.d.ts +35 -0
  167. package/dist/studio/deploy-cli.js +81 -0
  168. package/dist/studio/emit-project.d.ts +77 -0
  169. package/dist/studio/emit-project.js +5389 -0
  170. package/dist/studio/emit-schema.d.ts +110 -0
  171. package/dist/studio/emit-schema.js +1128 -0
  172. package/dist/studio/index.d.ts +35 -0
  173. package/dist/studio/index.js +38 -0
  174. package/dist/studio/init-flow.d.ts +58 -0
  175. package/dist/studio/init-flow.js +451 -0
  176. package/dist/studio/introspect-db.d.ts +47 -0
  177. package/dist/studio/introspect-db.js +255 -0
  178. package/dist/studio/introspect-openapi.d.ts +19 -0
  179. package/dist/studio/introspect-openapi.js +244 -0
  180. package/dist/studio/introspect-prisma.d.ts +25 -0
  181. package/dist/studio/introspect-prisma.js +164 -0
  182. package/dist/studio/introspect.d.ts +35 -0
  183. package/dist/studio/introspect.js +306 -0
  184. package/dist/studio/project.d.ts +1327 -0
  185. package/dist/studio/project.js +1798 -0
  186. package/dist/studio/sample-data.d.ts +19 -0
  187. package/dist/studio/sample-data.js +207 -0
  188. package/dist/studio/samples/ats.d.ts +2 -0
  189. package/dist/studio/samples/ats.js +194 -0
  190. package/dist/studio/samples/clinic.d.ts +2 -0
  191. package/dist/studio/samples/clinic.js +171 -0
  192. package/dist/studio/samples/crm.d.ts +2 -0
  193. package/dist/studio/samples/crm.js +280 -0
  194. package/dist/studio/samples/datasets.d.ts +38 -0
  195. package/dist/studio/samples/datasets.js +296 -0
  196. package/dist/studio/samples/ecommerce.d.ts +2 -0
  197. package/dist/studio/samples/ecommerce.js +178 -0
  198. package/dist/studio/samples/events.d.ts +2 -0
  199. package/dist/studio/samples/events.js +192 -0
  200. package/dist/studio/samples/fleet.d.ts +2 -0
  201. package/dist/studio/samples/fleet.js +203 -0
  202. package/dist/studio/samples/gym.d.ts +2 -0
  203. package/dist/studio/samples/gym.js +205 -0
  204. package/dist/studio/samples/hr.d.ts +2 -0
  205. package/dist/studio/samples/hr.js +186 -0
  206. package/dist/studio/samples/index.d.ts +13 -0
  207. package/dist/studio/samples/index.js +44 -0
  208. package/dist/studio/samples/insurance.d.ts +2 -0
  209. package/dist/studio/samples/insurance.js +220 -0
  210. package/dist/studio/samples/inventory.d.ts +2 -0
  211. package/dist/studio/samples/inventory.js +204 -0
  212. package/dist/studio/samples/invoicing.d.ts +2 -0
  213. package/dist/studio/samples/invoicing.js +154 -0
  214. package/dist/studio/samples/library.d.ts +2 -0
  215. package/dist/studio/samples/library.js +171 -0
  216. package/dist/studio/samples/live-data.d.ts +5 -0
  217. package/dist/studio/samples/live-data.js +261 -0
  218. package/dist/studio/samples/projects.d.ts +2 -0
  219. package/dist/studio/samples/projects.js +203 -0
  220. package/dist/studio/samples/realestate.d.ts +2 -0
  221. package/dist/studio/samples/realestate.js +187 -0
  222. package/dist/studio/samples/restaurant.d.ts +2 -0
  223. package/dist/studio/samples/restaurant.js +180 -0
  224. package/dist/studio/samples/school.d.ts +2 -0
  225. package/dist/studio/samples/school.js +188 -0
  226. package/dist/studio/samples/shared.d.ts +142 -0
  227. package/dist/studio/samples/shared.js +164 -0
  228. package/dist/studio/samples/starter.d.ts +4 -0
  229. package/dist/studio/samples/starter.js +237 -0
  230. package/dist/studio/samples/subscriptions.d.ts +2 -0
  231. package/dist/studio/samples/subscriptions.js +175 -0
  232. package/dist/studio/samples/support.d.ts +2 -0
  233. package/dist/studio/samples/support.js +209 -0
  234. package/dist/studio/scaffold-app.d.ts +22 -0
  235. package/{src/studio/scaffold-app.ts → dist/studio/scaffold-app.js} +45 -63
  236. package/dist/studio/scaffold.d.ts +63 -0
  237. package/dist/studio/scaffold.js +346 -0
  238. package/dist/studio/screen-suites.d.ts +193 -0
  239. package/dist/studio/screen-suites.js +297 -0
  240. package/dist/studio/themes.d.ts +34 -0
  241. package/dist/studio/themes.js +41 -0
  242. package/dist/studio/ui-components.d.ts +89 -0
  243. package/dist/studio/ui-components.generated.d.ts +29 -0
  244. package/dist/studio/ui-components.generated.js +7139 -0
  245. package/dist/studio/ui-components.js +673 -0
  246. package/dist/studio/user-error.d.ts +23 -0
  247. package/{src/studio/user-error.ts → dist/studio/user-error.js} +10 -13
  248. package/dist/studio/verify.d.ts +34 -0
  249. package/dist/studio/verify.js +47 -0
  250. package/dist/sveltekit/in-memory.d.ts +14 -0
  251. package/dist/sveltekit/in-memory.js +113 -0
  252. package/dist/sveltekit/index.d.ts +6 -0
  253. package/dist/sveltekit/index.js +5 -0
  254. package/dist/sveltekit/query-plan.d.ts +44 -0
  255. package/dist/sveltekit/query-plan.js +76 -0
  256. package/dist/sveltekit/sql-source.d.ts +47 -0
  257. package/dist/sveltekit/sql-source.js +106 -0
  258. package/dist/sveltekit/sql.d.ts +48 -0
  259. package/dist/sveltekit/sql.js +73 -0
  260. package/dist/sveltekit/transport.d.ts +209 -0
  261. package/dist/sveltekit/transport.js +219 -0
  262. package/{src/sveltekit/types.ts → dist/sveltekit/types.d.ts} +8 -11
  263. package/dist/sveltekit/types.js +1 -0
  264. package/dist/upgrade-prompt.d.ts +16 -0
  265. package/dist/upgrade-prompt.js +141 -0
  266. package/dist/version.d.ts +13 -0
  267. package/{src/version.ts → dist/version.js} +1 -1
  268. package/dist/watermark.d.ts +2 -0
  269. package/dist/watermark.js +146 -0
  270. package/package.json +26 -24
  271. package/src/SvBoard.dom.test.ts +0 -67
  272. package/src/SvGridAlerts.dom.test.ts +0 -113
  273. package/src/SvGridEditPanel.dom.test.ts +0 -320
  274. package/src/SvRecordDetail.dom.test.ts +0 -137
  275. package/src/SvSchedule.dom.test.ts +0 -57
  276. package/src/ai-export-pdf.dom.test.ts +0 -77
  277. package/src/ai-export-xlsx.dom.test.ts +0 -90
  278. package/src/ai-export.dom.test.ts +0 -114
  279. package/src/alerts/alert-engine-attach.ts +0 -165
  280. package/src/alerts/alert-engine.test.ts +0 -135
  281. package/src/alerts/alert-engine.ts +0 -260
  282. package/src/alerts/alert-formats.test.ts +0 -87
  283. package/src/alerts/alert-formats.ts +0 -77
  284. package/src/alerts/alert-observer.test.ts +0 -189
  285. package/src/alerts/alert-observer.ts +0 -208
  286. package/src/alerts/alert-scheduler.ts +0 -96
  287. package/src/alerts/alert-storage.test.ts +0 -54
  288. package/src/alerts/alert-storage.ts +0 -116
  289. package/src/alerts/alert-store.svelte.ts +0 -80
  290. package/src/alerts/alert-types.ts +0 -94
  291. package/src/board.dom.test.ts +0 -941
  292. package/src/edit-panel.test.ts +0 -322
  293. package/src/edit-panel.ts +0 -379
  294. package/src/export-conditional.test.ts +0 -60
  295. package/src/export-conditional.ts +0 -94
  296. package/src/export-ooxml.test.ts +0 -152
  297. package/src/export-ooxml.ts +0 -489
  298. package/src/export-pdf.test.ts +0 -138
  299. package/src/export-pdf.ts +0 -245
  300. package/src/export-print.test.ts +0 -66
  301. package/src/export-print.ts +0 -132
  302. package/src/export-serialize.test.ts +0 -56
  303. package/src/export-xls.ts +0 -199
  304. package/src/export-xlsx-roundtrip.test.ts +0 -120
  305. package/src/export-xlsx.test.ts +0 -150
  306. package/src/export.test.ts +0 -349
  307. package/src/export.ts +0 -1464
  308. package/src/expressions/evaluate.test.ts +0 -111
  309. package/src/expressions/evaluate.ts +0 -237
  310. package/src/expressions/expression-columns.ts +0 -133
  311. package/src/expressions/expression-types.ts +0 -84
  312. package/src/expressions/parse.test.ts +0 -106
  313. package/src/expressions/parse.ts +0 -610
  314. package/src/import-automap.test.ts +0 -131
  315. package/src/import-hardening.test.ts +0 -158
  316. package/src/import.test.ts +0 -415
  317. package/src/import.ts +0 -1044
  318. package/src/index.ts +0 -569
  319. package/src/install.ts +0 -154
  320. package/src/license-core.test.ts +0 -23
  321. package/src/license-core.ts +0 -107
  322. package/src/license-expiry.test.ts +0 -127
  323. package/src/license.ts +0 -137
  324. package/src/master-detail.test.ts +0 -61
  325. package/src/master-detail.ts +0 -42
  326. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -178
  327. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js +0 -3875
  328. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js.map +0 -1
  329. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js +0 -21
  330. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js.map +0 -1
  331. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js +0 -1938
  332. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js.map +0 -1
  333. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js +0 -205
  334. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js.map +0 -1
  335. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js +0 -18
  336. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js.map +0 -1
  337. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js +0 -264
  338. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js.map +0 -1
  339. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js +0 -697
  340. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js.map +0 -1
  341. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -134
  342. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -1
  343. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -55
  344. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -1
  345. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -2
  346. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -46843
  347. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -1
  348. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -237
  349. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -1
  350. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -2
  351. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -4
  352. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -1
  353. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -7
  354. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -4
  355. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -1
  356. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -5
  357. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -1
  358. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -5
  359. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -1
  360. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -5
  361. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -1
  362. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -6
  363. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -83
  364. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -1
  365. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -559
  366. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -1
  367. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -24
  368. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -1
  369. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -122
  370. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -1
  371. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -2
  372. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -89
  373. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -1
  374. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -241
  375. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -1
  376. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js +0 -4938
  377. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js.map +0 -1
  378. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js +0 -495
  379. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js.map +0 -1
  380. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js +0 -190
  381. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js.map +0 -1
  382. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js +0 -8
  383. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js.map +0 -1
  384. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js +0 -138
  385. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js.map +0 -1
  386. package/src/pivot-chart.test.ts +0 -86
  387. package/src/pivot-chart.ts +0 -112
  388. package/src/pivot-designer.ts +0 -101
  389. package/src/pivot.test.ts +0 -335
  390. package/src/pivot.ts +0 -578
  391. package/src/print.ts +0 -107
  392. package/src/scheduler-assignments.test.ts +0 -97
  393. package/src/scheduler-assignments.ts +0 -134
  394. package/src/scheduler-axis.test.ts +0 -108
  395. package/src/scheduler-axis.ts +0 -238
  396. package/src/scheduler-booking.test.ts +0 -57
  397. package/src/scheduler-config.ts +0 -179
  398. package/src/scheduler-dependencies.test.ts +0 -155
  399. package/src/scheduler-dependencies.ts +0 -223
  400. package/src/scheduler-freebusy.test.ts +0 -41
  401. package/src/scheduler-heatmap.test.ts +0 -39
  402. package/src/scheduler-resource-tree.test.ts +0 -84
  403. package/src/scheduler-resource-tree.ts +0 -107
  404. package/src/scheduler-slots.test.ts +0 -53
  405. package/src/scheduler-slots.ts +0 -94
  406. package/src/scheduler-summary.test.ts +0 -47
  407. package/src/scheduler-summary.ts +0 -81
  408. package/src/scheduling.test.ts +0 -194
  409. package/src/scheduling.ts +0 -293
  410. package/src/schema-designer.test.ts +0 -121
  411. package/src/schema-designer.ts +0 -142
  412. package/src/schema.test.ts +0 -268
  413. package/src/schema.ts +0 -562
  414. package/src/smart-shim.ts +0 -107
  415. package/src/sources/aggregate.test.ts +0 -79
  416. package/src/sources/aggregate.ts +0 -102
  417. package/src/sources/auth-supabase.test.ts +0 -80
  418. package/src/sources/auth-supabase.ts +0 -87
  419. package/src/sources/dashboard.kpi.test.ts +0 -50
  420. package/src/sources/dashboard.test.ts +0 -61
  421. package/src/sources/dashboard.ts +0 -136
  422. package/src/sources/field-inference.test.ts +0 -60
  423. package/src/sources/field-inference.ts +0 -63
  424. package/src/sources/filters.test.ts +0 -58
  425. package/src/sources/filters.ts +0 -70
  426. package/src/sources/index.ts +0 -67
  427. package/src/sources/introspect-supabase.test.ts +0 -112
  428. package/src/sources/introspect-supabase.ts +0 -139
  429. package/src/sources/realtime-supabase.test.ts +0 -93
  430. package/src/sources/realtime-supabase.ts +0 -99
  431. package/src/sources/relation-lookup.test.ts +0 -99
  432. package/src/sources/relation-lookup.ts +0 -128
  433. package/src/sources/rest-adapters.test.ts +0 -95
  434. package/src/sources/rest-adapters.ts +0 -120
  435. package/src/sources/rest.test.ts +0 -104
  436. package/src/sources/rest.ts +0 -129
  437. package/src/sources/schema-from-columns.test.ts +0 -106
  438. package/src/sources/schema-from-columns.ts +0 -88
  439. package/src/sources/supabase.test.ts +0 -110
  440. package/src/sources/supabase.ts +0 -99
  441. package/src/sources/with-entity-rules.test.ts +0 -104
  442. package/src/sources/with-entity-rules.ts +0 -78
  443. package/src/sources/with-relation-labels.test.ts +0 -75
  444. package/src/sources/with-relation-labels.ts +0 -73
  445. package/src/staged-editing.ts +0 -0
  446. package/src/studio/bug-report.test.ts +0 -101
  447. package/src/studio/bug-report.ts +0 -165
  448. package/src/studio/cli.test.ts +0 -187
  449. package/src/studio/cli.ts +0 -117
  450. package/src/studio/copilot-core.test.ts +0 -45
  451. package/src/studio/csv.test.ts +0 -90
  452. package/src/studio/csv.ts +0 -165
  453. package/src/studio/db-connect-string.test.ts +0 -94
  454. package/src/studio/db-connect-string.ts +0 -128
  455. package/src/studio/deploy-cli.test.ts +0 -56
  456. package/src/studio/deploy-cli.ts +0 -100
  457. package/src/studio/emit-project.test.ts +0 -3324
  458. package/src/studio/emit-project.ts +0 -5377
  459. package/src/studio/emit-schema.test.ts +0 -111
  460. package/src/studio/emit-schema.ts +0 -1181
  461. package/src/studio/index.ts +0 -380
  462. package/src/studio/init-flow.test.ts +0 -514
  463. package/src/studio/init-flow.ts +0 -556
  464. package/src/studio/introspect-db.test.ts +0 -186
  465. package/src/studio/introspect-db.ts +0 -312
  466. package/src/studio/introspect-openapi.test.ts +0 -84
  467. package/src/studio/introspect-openapi.ts +0 -252
  468. package/src/studio/introspect-prisma.test.ts +0 -99
  469. package/src/studio/introspect-prisma.ts +0 -175
  470. package/src/studio/introspect.test.ts +0 -172
  471. package/src/studio/introspect.ts +0 -310
  472. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -1
  473. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -3
  474. package/src/studio/pipeline.test.ts +0 -42
  475. package/src/studio/project-robust.test.ts +0 -157
  476. package/src/studio/project.test.ts +0 -929
  477. package/src/studio/project.ts +0 -2394
  478. package/src/studio/sample-data.test.ts +0 -58
  479. package/src/studio/sample-data.ts +0 -203
  480. package/src/studio/samples/ats.ts +0 -202
  481. package/src/studio/samples/clinic.ts +0 -179
  482. package/src/studio/samples/crm.ts +0 -291
  483. package/src/studio/samples/datasets.test.ts +0 -84
  484. package/src/studio/samples/datasets.ts +0 -340
  485. package/src/studio/samples/ecommerce.ts +0 -187
  486. package/src/studio/samples/events.ts +0 -201
  487. package/src/studio/samples/fleet.ts +0 -213
  488. package/src/studio/samples/gym.ts +0 -215
  489. package/src/studio/samples/hr.ts +0 -195
  490. package/src/studio/samples/index.ts +0 -55
  491. package/src/studio/samples/insurance.ts +0 -229
  492. package/src/studio/samples/inventory.ts +0 -213
  493. package/src/studio/samples/invoicing.ts +0 -162
  494. package/src/studio/samples/library.ts +0 -180
  495. package/src/studio/samples/live-data.test.ts +0 -99
  496. package/src/studio/samples/live-data.ts +0 -306
  497. package/src/studio/samples/projects.ts +0 -212
  498. package/src/studio/samples/realestate.ts +0 -196
  499. package/src/studio/samples/restaurant.ts +0 -189
  500. package/src/studio/samples/samples.test.ts +0 -304
  501. package/src/studio/samples/school.ts +0 -197
  502. package/src/studio/samples/seed-floor.test.ts +0 -25
  503. package/src/studio/samples/shared.ts +0 -237
  504. package/src/studio/samples/starter.ts +0 -251
  505. package/src/studio/samples/subscriptions.ts +0 -183
  506. package/src/studio/samples/support.ts +0 -216
  507. package/src/studio/scaffold-app.test.ts +0 -91
  508. package/src/studio/scaffold.test.ts +0 -192
  509. package/src/studio/scaffold.ts +0 -390
  510. package/src/studio/screen-suites.test.ts +0 -269
  511. package/src/studio/screen-suites.ts +0 -448
  512. package/src/studio/themes.ts +0 -62
  513. package/src/studio/ui-components-surface.test.ts +0 -185
  514. package/src/studio/ui-components.generated.ts +0 -7154
  515. package/src/studio/ui-components.ts +0 -742
  516. package/src/studio/verify.test.ts +0 -47
  517. package/src/studio/verify.ts +0 -79
  518. package/src/sveltekit/in-memory.test.ts +0 -104
  519. package/src/sveltekit/in-memory.ts +0 -129
  520. package/src/sveltekit/index.ts +0 -24
  521. package/src/sveltekit/query-plan.test.ts +0 -109
  522. package/src/sveltekit/query-plan.ts +0 -125
  523. package/src/sveltekit/sql-source.test.ts +0 -198
  524. package/src/sveltekit/sql-source.ts +0 -171
  525. package/src/sveltekit/sql.test.ts +0 -80
  526. package/src/sveltekit/sql.ts +0 -131
  527. package/src/sveltekit/transport-scope.test.ts +0 -125
  528. package/src/sveltekit/transport.test.ts +0 -201
  529. package/src/sveltekit/transport.ts +0 -373
  530. package/src/upgrade-prompt.test.ts +0 -71
  531. package/src/upgrade-prompt.ts +0 -162
  532. package/src/version.test.ts +0 -17
  533. package/src/watermark.test.ts +0 -97
  534. package/src/watermark.ts +0 -156
  535. /package/{src → dist}/SvAlertRuleEditor.svelte +0 -0
  536. /package/{src → dist}/SvAlertsManager.svelte +0 -0
  537. /package/{src → dist}/SvAlertsPanel.svelte +0 -0
  538. /package/{src → dist}/SvAuthGate.svelte +0 -0
  539. /package/{src → dist}/SvBoard.svelte +0 -0
  540. /package/{src → dist}/SvExportMenu.svelte +0 -0
  541. /package/{src → dist}/SvExpressionEditor.svelte +0 -0
  542. /package/{src → dist}/SvFileInput.svelte +0 -0
  543. /package/{src → dist}/SvGridAlerts.svelte +0 -0
  544. /package/{src → dist}/SvGridBoard.svelte +0 -0
  545. /package/{src → dist}/SvGridEditPanel.svelte +0 -0
  546. /package/{src → dist}/SvGridMasterDetail.svelte +0 -0
  547. /package/{src → dist}/SvGridScheduler.svelte +0 -0
  548. /package/{src → dist}/SvImportDialog.svelte +0 -0
  549. /package/{src → dist}/SvLookupInput.svelte +0 -0
  550. /package/{src → dist}/SvPivotDesigner.svelte +0 -0
  551. /package/{src → dist}/SvRecordDetail.svelte +0 -0
  552. /package/{src → dist}/SvSchedule.svelte +0 -0
  553. /package/{src → dist}/SvSchemaChart.svelte +0 -0
  554. /package/{src → dist}/SvSchemaDashboard.svelte +0 -0
  555. /package/{src → dist}/pdfmake-shims.d.ts +0 -0
  556. /package/{src → dist}/smart.export.d.ts +0 -0
  557. /package/{src → dist}/smart.export.js +0 -0
  558. /package/{src → dist}/studio/HANDLERS-DESIGN.md +0 -0
  559. /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -0
  560. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -0
  561. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +0 -0
  562. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +0 -0
  563. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +0 -0
  564. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +0 -0
  565. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +0 -0
  566. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +0 -0
  567. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +0 -0
  568. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +0 -0
  569. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +0 -0
  570. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +0 -0
  571. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +0 -0
  572. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +0 -0
  573. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +0 -0
  574. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +0 -0
  575. /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -0
  576. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -0
  577. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -0
  578. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -0
  579. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -0
  580. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -0
  581. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -0
  582. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -0
  583. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -0
  584. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -0
  585. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -0
  586. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -0
  587. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -0
  588. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -0
  589. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -0
  590. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -0
  591. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -0
  592. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -0
  593. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -0
  594. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -0
  595. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -0
  596. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -0
  597. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -0
  598. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -0
  599. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -0
  600. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -0
  601. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -0
  602. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -0
  603. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -0
  604. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -0
  605. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -0
  606. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -0
  607. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -0
  608. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -0
  609. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -0
  610. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -0
  611. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +0 -0
  612. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +0 -0
  613. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +0 -0
  614. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +0 -0
  615. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +0 -0
  616. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +0 -0
  617. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +0 -0
  618. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +0 -0
  619. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +0 -0
  620. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js.map +0 -0
@@ -0,0 +1,297 @@
1
+ import { defaultBlockConfig, defaultEntitySource, entityOf, pickFacetFields, sanitizeProject, withSsrDefaults, } from './project.js';
2
+ /** The default grid config with enterprise options merged on. */
3
+ export function gridConfig(entity, opts) {
4
+ const base = defaultBlockConfig('grid', entity);
5
+ return {
6
+ ...base,
7
+ ...(opts.format ? { formatRules: opts.format } : {}),
8
+ ...(opts.rowActions ? { rowActions: opts.rowActions } : {}),
9
+ ...(opts.rowLink ? { rowLink: opts.rowLink } : {}),
10
+ ...(opts.summaries ? { rowSummaries: true } : {}),
11
+ ...(opts.density ? { density: opts.density } : {}),
12
+ ...(opts.pageSize ? { pageSize: opts.pageSize } : {}),
13
+ ...(opts.editing ? { editing: opts.editing } : {}),
14
+ ...(opts.formPresentation ? { formPresentation: opts.formPresentation } : {}),
15
+ };
16
+ }
17
+ /** One dashboard tile -> a Block. Recurses for `tabs` (whose children must be
18
+ * display blocks: chart / kpi / gauge / pivot / tree). `nextId` yields ids unique
19
+ * across the WHOLE screen (top-level tiles AND every nested tab child) - a per-level
20
+ * index would collide (top-level `blk-1` vs each tab's first child `blk-1`), which
21
+ * makes a keyed each throw `each_key_duplicate`. */
22
+ function tileBlock(entity, t, nextId) {
23
+ const id = nextId();
24
+ if ('kpi' in t) {
25
+ const config = {
26
+ kind: 'kpi', label: t.kpi, ...(t.measure ? { measure: t.measure } : {}), reduce: t.reduce,
27
+ ...(t.format ? { format: t.format } : {}), ...(t.trendField ? { trendField: t.trendField } : {}),
28
+ ...(t.trendReduce ? { trendReduce: t.trendReduce } : {}), ...(t.target != null ? { target: t.target } : {}),
29
+ };
30
+ return { id, span: t.span ?? 1, config };
31
+ }
32
+ if ('chart' in t) {
33
+ return { id, span: t.span ?? 2, config: { kind: 'chart', dimension: t.chart, ...(t.measure ? { measure: t.measure } : {}), reduce: t.reduce ?? 'sum', type: t.type ?? 'bar' } };
34
+ }
35
+ if ('gauge' in t) {
36
+ return { id, span: t.span ?? 1, config: { kind: 'gauge', label: t.gauge, ...(t.measure ? { measure: t.measure } : {}), reduce: t.reduce, min: t.min ?? 0, max: t.max ?? 100, ...(t.unit ? { unit: t.unit } : {}) } };
37
+ }
38
+ if ('pivot' in t) {
39
+ return { id, span: t.span ?? 3, config: { kind: 'pivot', rows: t.pivot.rows, cols: t.pivot.cols, ...(t.pivot.measure ? { measure: t.pivot.measure } : {}), aggregate: t.pivot.aggregate ?? 'sum' } };
40
+ }
41
+ if ('tree' in t) {
42
+ return { id, span: t.span ?? 1, config: { kind: 'tree', labelField: t.tree.labelField, parentField: t.tree.parentField } };
43
+ }
44
+ if ('filter' in t) {
45
+ return { id, span: t.span ?? 3, config: { kind: 'filter', fields: t.filter } };
46
+ }
47
+ if ('tabs' in t) {
48
+ return { id, span: t.span ?? 3, config: { kind: 'tabs', tabs: t.tabs.map((tab) => ({ label: tab.label, blocks: tab.tiles.map((tt) => tileBlock(entity, tt, nextId)) })) } };
49
+ }
50
+ return { id, span: t.span ?? 3, config: gridConfig(entity, t) };
51
+ }
52
+ /** Compose a dashboard screen from explicit tiles (KPI cards + gauges + charts +
53
+ * pivots + trees + a rich grid). */
54
+ export function dashScreen(entity, meta, tiles) {
55
+ let n = 0;
56
+ const nextId = () => `blk-${++n}`;
57
+ const blocks = tiles.map((t) => tileBlock(entity, t, nextId));
58
+ return { id: meta.id, entity: entity.name, title: meta.title, route: meta.id, blocks, nav: { show: true, label: meta.title, order: meta.order } };
59
+ }
60
+ /** FormatRule[] that color-code an enum field's cells by its option colors -
61
+ * turns a plain status column into enterprise status pills. */
62
+ export function statusPills(entity, field) {
63
+ const f = entity.fields.find((x) => x.field === field);
64
+ if (!f?.options)
65
+ return [];
66
+ return f.options
67
+ .filter((o) => o.color)
68
+ .map((o) => ({ field, op: 'eq', value: o.value, background: `color-mix(in srgb, ${o.color} 18%, transparent)`, color: o.color, bold: true }));
69
+ }
70
+ /** A list screen: an optional faceted filter panel + a rich grid (status pills,
71
+ * totals, row actions, drill-through). */
72
+ export function listScreen(entity, meta, opts = {}) {
73
+ const blocks = [];
74
+ if (opts.filter?.length)
75
+ blocks.push({ id: 'filter-1', span: 3, config: { kind: 'filter', fields: opts.filter } });
76
+ blocks.push({ id: 'grid-1', span: 3, config: gridConfig(entity, opts.grid ?? {}) });
77
+ return { id: meta.id, entity: entity.name, title: meta.title, route: meta.id, blocks, nav: { show: true, label: meta.title, order: meta.order } };
78
+ }
79
+ /**
80
+ * A form-showcase screen: a grid to pick a row + an editable record panel that
81
+ * renders the full field form (phone / rating / tags / mask / slider editors)
82
+ * inline. Lets a user see and try the rich editors on load, not just on edit.
83
+ */
84
+ export function formScreen(entity, meta, fields, grid, filter) {
85
+ const blocks = [];
86
+ if (filter?.length)
87
+ blocks.push({ id: 'filter-1', span: 3, config: { kind: 'filter', fields: filter } });
88
+ blocks.push({ id: 'grid-1', span: 3, config: gridConfig(entity, grid ?? {}) });
89
+ blocks.push({ id: 'record-1', span: 3, config: { kind: 'record', editable: true, ...(fields ? { fields } : {}) } });
90
+ return { id: meta.id, entity: entity.name, title: meta.title, route: meta.id, blocks, nav: { show: true, label: meta.title, order: meta.order } };
91
+ }
92
+ /** A record detail-page screen: a full record view (header + status pill + metric
93
+ * tiles + tabbed Overview / related timelines) - the signature view for
94
+ * relation-heavy records (a customer / deal / patient / trip page). */
95
+ export function detailScreen(entity, meta, opts) {
96
+ const blocks = [{ id: 'detail-1', span: 3, config: {
97
+ kind: 'detail', titleField: opts.titleField,
98
+ ...(opts.subtitleField ? { subtitleField: opts.subtitleField } : {}),
99
+ ...(opts.statusField ? { statusField: opts.statusField } : {}),
100
+ ...(opts.metricFields?.length ? { metricFields: opts.metricFields } : {}),
101
+ ...(opts.sections?.length ? { sections: opts.sections } : {}),
102
+ ...(opts.related?.length ? { related: opts.related } : {}),
103
+ } }];
104
+ return { id: meta.id, entity: entity.name, title: meta.title, route: meta.id, blocks, nav: { show: true, label: meta.title, order: meta.order } };
105
+ }
106
+ /** `base`, or the first free `${base}-${n}`. Records the result in `taken`. */
107
+ function claim(base, taken) {
108
+ if (!taken.has(base)) {
109
+ taken.add(base);
110
+ return base;
111
+ }
112
+ let n = 2;
113
+ while (taken.has(`${base}-${n}`))
114
+ n++;
115
+ const out = `${base}-${n}`;
116
+ taken.add(out);
117
+ return out;
118
+ }
119
+ const primaryKeyOf = (entity) => entity.idField ?? entity.fields.find((f) => f.primaryKey)?.field ?? entity.fields[0]?.field ?? 'id';
120
+ const isNumeric = (f) => f.type === 'number' && !f.primaryKey;
121
+ /** Every relation pointing AT `entity` - each becomes a related-children tab on
122
+ * the detail page (including a self-referential FK, which reads as a hierarchy). */
123
+ function relatedChildren(entity, entities) {
124
+ const out = [];
125
+ for (const other of entities) {
126
+ for (const f of other.fields) {
127
+ if (f.type !== 'relation' || f.relation?.entity !== entity.name)
128
+ continue;
129
+ const title = other.fields.find((x) => x.type === 'text' && !x.primaryKey)?.field;
130
+ const status = other.fields.find((x) => x.type === 'enum' && !x.primaryKey)?.field;
131
+ const date = other.fields.find((x) => (x.type === 'date' || x.type === 'datetime' || x.type === 'dateString') && !x.primaryKey)?.field;
132
+ out.push({
133
+ entity: other.name,
134
+ foreignKey: f.field,
135
+ label: other.label ?? other.name,
136
+ ...(title ? { titleField: title } : {}),
137
+ ...(status ? { statusField: status } : {}),
138
+ ...(date ? { dateField: date } : {}),
139
+ });
140
+ }
141
+ }
142
+ return out;
143
+ }
144
+ /**
145
+ * The screens for one entity: a list, an edit form, a record detail page, and/or
146
+ * an overview dashboard - already linked to each other. `entities` is the full
147
+ * schema set so relations resolve (drill-through targets + child collections).
148
+ */
149
+ export function crudSuiteScreens(entity, entities, opts = {}) {
150
+ const label = entity.label ?? entity.name;
151
+ const pk = primaryKeyOf(entity);
152
+ const children = relatedChildren(entity, entities);
153
+ const kinds = opts.screens ?? (children.length ? ['list', 'form', 'detail'] : ['list', 'form']);
154
+ const wants = (k) => kinds.includes(k);
155
+ const editing = opts.editing ?? 'form';
156
+ const order = opts.navOrder ?? 0;
157
+ // Claim ids + routes up front so `rowLink` can point at the detail screen's
158
+ // FINAL id (deduping afterwards would leave the link dangling).
159
+ const ids = new Set(opts.taken?.ids ?? []);
160
+ const routes = new Set(opts.taken?.routes ?? []);
161
+ const idFor = (base) => claim(base, ids);
162
+ const routeFor = (base) => claim(base, routes);
163
+ const listId = wants('list') ? idFor(entity.name) : '';
164
+ const listRoute = wants('list') ? routeFor(entity.name) : '';
165
+ const formId = wants('form') ? idFor(`${entity.name}-manage`) : '';
166
+ const formRoute = wants('form') ? routeFor(`${entity.name}-manage`) : '';
167
+ const detailId = wants('detail') ? idFor(`${entity.name}-detail`) : '';
168
+ const detailRoute = wants('detail') ? routeFor(`${entity.name}-detail`) : '';
169
+ const dashId = wants('dashboard') ? idFor(`${entity.name}-overview`) : '';
170
+ const dashRoute = wants('dashboard') ? routeFor(`${entity.name}-overview`) : '';
171
+ const detailCfg = defaultBlockConfig('detail', entity);
172
+ const facets = opts.filter === false ? [] : pickFacetFields(entity);
173
+ const pills = detailCfg.statusField ? statusPills(entity, detailCfg.statusField) : [];
174
+ const hasNumeric = entity.fields.some(isNumeric);
175
+ // 'detail' editing = a read-only list whose rows drill into the detail page.
176
+ const drills = editing === 'detail' && !!detailId;
177
+ const grid = {
178
+ ...(pills.length ? { format: pills } : {}),
179
+ ...(hasNumeric ? { summaries: true } : {}),
180
+ editing: drills ? 'none' : editing === 'inline' ? 'inline' : 'form',
181
+ ...(drills ? { rowLink: { screen: detailId, targetField: pk } } : {}),
182
+ };
183
+ // Nav order is assigned once at the end, from the order the screens were
184
+ // built, so no branch has to know how many ran before it.
185
+ const screens = [];
186
+ if (wants('dashboard')) {
187
+ const measure = entity.fields.find(isNumeric)?.field;
188
+ const dimension = detailCfg.statusField ?? entity.fields.find((f) => f.type === 'enum' && !f.primaryKey)?.field;
189
+ const tiles = [{ kpi: `Total ${label}`, reduce: 'count' }];
190
+ if (measure)
191
+ tiles.push({ kpi: `Total ${measure}`, measure, reduce: 'sum' });
192
+ if (dimension)
193
+ tiles.push({ chart: dimension, ...(measure ? { measure } : {}), reduce: measure ? 'sum' : 'count', type: 'bar' });
194
+ tiles.push({ grid: true, ...(pills.length ? { format: pills } : {}) });
195
+ screens.push({ ...dashScreen(entity, { id: dashId, title: `${label} overview`, order: 0 }, tiles), route: dashRoute });
196
+ }
197
+ if (wants('list')) {
198
+ screens.push({
199
+ ...listScreen(entity, { id: listId, title: label, order: 0 }, { ...(facets.length ? { filter: facets } : {}), grid }),
200
+ route: listRoute,
201
+ });
202
+ }
203
+ if (wants('form')) {
204
+ screens.push({
205
+ ...formScreen(entity, { id: formId, title: `Manage ${label}`, order: 0 }, undefined, { editing: editing === 'inline' ? 'inline' : 'form' }),
206
+ route: formRoute,
207
+ });
208
+ }
209
+ if (wants('detail')) {
210
+ const base = detailScreen(entity, { id: detailId, title: `${label} detail`, order: 0 }, {
211
+ titleField: detailCfg.titleField,
212
+ ...(detailCfg.subtitleField ? { subtitleField: detailCfg.subtitleField } : {}),
213
+ ...(detailCfg.statusField ? { statusField: detailCfg.statusField } : {}),
214
+ ...(detailCfg.metricFields?.length ? { metricFields: detailCfg.metricFields } : {}),
215
+ ...(children.length ? { related: children } : {}),
216
+ });
217
+ // A drill-through target is reached by clicking a row, so it stays out of the
218
+ // nav; a detail page nobody links to keeps its nav entry.
219
+ screens.push({ ...base, route: detailRoute, nav: { ...base.nav, show: !drills } });
220
+ }
221
+ return screens.map((s, i) => ({ ...s, nav: { ...s.nav, order: order + i } }));
222
+ }
223
+ /** Append a full CRUD suite for an existing entity (immutable, like `addScreenFromTemplate`). */
224
+ export function addCrudSuite(project, entityName, opts = {}) {
225
+ const entity = entityOf(project, entityName);
226
+ if (!entity)
227
+ return project;
228
+ const taken = {
229
+ ids: new Set(project.screens.map((s) => s.id)),
230
+ routes: new Set(project.screens.map((s) => s.route)),
231
+ };
232
+ const navOrder = opts.navOrder ?? project.screens.length;
233
+ const screens = crudSuiteScreens(entity, project.entities, { ...opts, navOrder, taken });
234
+ return { ...project, screens: [...project.screens, ...screens] };
235
+ }
236
+ /** The entity the most relations point at (an app's hub - customers, projects,
237
+ * patients); falls back to the first schema. */
238
+ function hubEntity(schemas) {
239
+ let best;
240
+ let bestScore = -1;
241
+ for (const e of schemas) {
242
+ const score = schemas.reduce((n, other) => n + other.fields.filter((f) => f.type === 'relation' && f.relation?.entity === e.name).length, 0);
243
+ if (score > bestScore) {
244
+ best = e;
245
+ bestScore = score;
246
+ }
247
+ }
248
+ return best;
249
+ }
250
+ /**
251
+ * A complete app from a set of schemas: an overview dashboard plus a CRUD suite
252
+ * per entity, bound to the given data sources. This is the guided-onboarding
253
+ * output - the designer wizard and `svgrid-studio init` both land here, so a
254
+ * database connected from either host scaffolds the same app.
255
+ */
256
+ export function crudAppFromSchemas(schemas, opts = {}) {
257
+ const kind = opts.dataSource ?? 'memory';
258
+ const hub = hubEntity(schemas);
259
+ const ids = new Set();
260
+ const routes = new Set();
261
+ const screens = [];
262
+ if (opts.overviewDashboard !== false && hub) {
263
+ const [overview] = crudSuiteScreens(hub, schemas, {
264
+ screens: ['dashboard'],
265
+ navOrder: 0,
266
+ taken: { ids, routes },
267
+ });
268
+ // The app's front page: a plain "Overview" at the top of the nav.
269
+ if (overview)
270
+ screens.push({ ...overview, title: 'Overview', nav: { ...overview.nav, label: 'Overview', order: 0 } });
271
+ }
272
+ for (const schema of schemas) {
273
+ screens.push(...crudSuiteScreens(schema, schemas, {
274
+ ...opts.perEntity?.[schema.name],
275
+ navOrder: screens.length,
276
+ taken: { ids, routes },
277
+ }));
278
+ }
279
+ const dataSources = {};
280
+ for (const schema of schemas) {
281
+ const source = opts.sources?.[schema.name] ?? defaultEntitySource(kind, schema.name);
282
+ const seed = opts.seed?.[schema.name];
283
+ dataSources[schema.name] = seed?.length && (source.kind === 'memory' || source.kind === 'pglite')
284
+ ? { ...source, seed }
285
+ : source;
286
+ }
287
+ // Database-backed screens render on the server by default, so a generated app
288
+ // ships real SvelteKit (load + form actions) rather than a client SPA.
289
+ return withSsrDefaults(sanitizeProject({
290
+ title: opts.title ?? 'My Studio App',
291
+ entities: [...schemas],
292
+ screens,
293
+ dataSource: kind,
294
+ dataSources,
295
+ ...(opts.theme ? { theme: opts.theme } : {}),
296
+ }));
297
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * The Studio look-and-feel themes: a `ProjectTheme`-aware wrapper around
3
+ * `@svgrid/grid`'s built-in design-system presets (shadcn/ui, Tailwind,
4
+ * Material 3, Excel, Fluent 2, ...) - the single source of truth for these
5
+ * tokens, also used directly (as plain CSS) by app code that isn't going
6
+ * through Studio's project model.
7
+ *
8
+ * Picking a preset (and a light/dark mode) restyles the WHOLE generated app -
9
+ * shell, grids, charts, KPIs, forms - not just the accent.
10
+ *
11
+ * Pure + node-safe (studio subtree): plain data + helpers, so the same tokens
12
+ * drive the browser preview and the emitted `+layout.svelte` / `app.css`.
13
+ */
14
+ import { type ThemeMode, type ThemePalette, type ThemePreset } from '@svgrid/grid/themes';
15
+ import type { ProjectTheme } from './project.js';
16
+ export type { ThemeMode, ThemePalette };
17
+ /** @deprecated Use `ThemePreset` from `@svgrid/grid/themes` - kept as an alias for the pre-existing public name. */
18
+ export type StudioTheme = ThemePreset;
19
+ /** The built-in Studio themes, in gallery order (default first). */
20
+ export declare const studioThemes: StudioTheme[];
21
+ /** The default theme (used when a project has no `preset`). */
22
+ export declare const defaultStudioTheme: StudioTheme;
23
+ /** Look up a theme by id. */
24
+ export declare const getStudioTheme: (id?: string) => StudioTheme | undefined;
25
+ /** True when the project's theme is rendering in dark mode. */
26
+ export declare const isDarkTheme: (theme?: ProjectTheme) => boolean;
27
+ /** Resolve the effective `--sg-*` tokens for a project theme: the chosen preset
28
+ * (default if none) in the chosen mode, with the accent override applied. */
29
+ export declare function resolveThemeTokens(theme?: ProjectTheme): Record<string, string>;
30
+ /** Resolve the `--sg-*` tokens for a project theme in an EXPLICIT mode (for the
31
+ * generated app's light/dark switcher, which ships both token sets). */
32
+ export declare function resolveThemeTokensFor(theme: ProjectTheme | undefined, mode: 'light' | 'dark'): Record<string, string>;
33
+ /** An inline `style` string (`--sg-x: y; ...; color-scheme; font-family`) for previews. */
34
+ export declare function themeStyleString(theme?: ProjectTheme): string;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * The Studio look-and-feel themes: a `ProjectTheme`-aware wrapper around
3
+ * `@svgrid/grid`'s built-in design-system presets (shadcn/ui, Tailwind,
4
+ * Material 3, Excel, Fluent 2, ...) - the single source of truth for these
5
+ * tokens, also used directly (as plain CSS) by app code that isn't going
6
+ * through Studio's project model.
7
+ *
8
+ * Picking a preset (and a light/dark mode) restyles the WHOLE generated app -
9
+ * shell, grids, charts, KPIs, forms - not just the accent.
10
+ *
11
+ * Pure + node-safe (studio subtree): plain data + helpers, so the same tokens
12
+ * drive the browser preview and the emitted `+layout.svelte` / `app.css`.
13
+ */
14
+ import { themePresets, defaultThemePreset, getThemePreset, resolveThemeTokens as resolveTokens, } from '@svgrid/grid/themes';
15
+ /** The built-in Studio themes, in gallery order (default first). */
16
+ export const studioThemes = themePresets;
17
+ /** The default theme (used when a project has no `preset`). */
18
+ export const defaultStudioTheme = defaultThemePreset;
19
+ /** Look up a theme by id. */
20
+ export const getStudioTheme = (id) => getThemePreset(id);
21
+ /** True when the project's theme is rendering in dark mode. */
22
+ export const isDarkTheme = (theme) => theme?.mode === 'dark';
23
+ /** Resolve the effective `--sg-*` tokens for a project theme: the chosen preset
24
+ * (default if none) in the chosen mode, with the accent override applied. */
25
+ export function resolveThemeTokens(theme) {
26
+ const preset = getStudioTheme(theme?.preset) ?? defaultStudioTheme;
27
+ const mode = theme?.mode === 'dark' ? 'dark' : 'light';
28
+ return resolveTokens(preset, mode, theme?.accent);
29
+ }
30
+ /** Resolve the `--sg-*` tokens for a project theme in an EXPLICIT mode (for the
31
+ * generated app's light/dark switcher, which ships both token sets). */
32
+ export function resolveThemeTokensFor(theme, mode) {
33
+ const preset = getStudioTheme(theme?.preset) ?? defaultStudioTheme;
34
+ return resolveTokens(preset, mode, theme?.accent);
35
+ }
36
+ /** An inline `style` string (`--sg-x: y; ...; color-scheme; font-family`) for previews. */
37
+ export function themeStyleString(theme) {
38
+ const tokens = resolveThemeTokens(theme);
39
+ const vars = Object.entries(tokens).map(([k, v]) => `${k}: ${v}`).join('; ');
40
+ return `${vars}; color-scheme: ${isDarkTheme(theme) ? 'dark' : 'light'}; font-family: ${tokens['--sg-font']}`;
41
+ }
@@ -0,0 +1,89 @@
1
+ /**
2
+ * A curated catalogue of SvGrid UI-kit components a Studio screen can host as a
3
+ * `'component'` block (see `ComponentConfig` in `project.ts`) - entity-agnostic,
4
+ * usable on any screen including a freestanding one. Pure metadata: no Svelte
5
+ * import here (this subtree stays Svelte-free), so the designer holds the live
6
+ * component references and this module only describes what to configure and how
7
+ * to generate.
8
+ *
9
+ * Only "chrome" props (scalar values a form can drive) are listed - every
10
+ * component's real content is typically a Svelte `Snippet`, which this registry
11
+ * can't represent. A component with `hasContent` gets one extra literal-text
12
+ * field in the property panel (stored under the reserved `_content` props key)
13
+ * that becomes its plain-text children in both the live preview and codegen.
14
+ */
15
+ export type UiPropType = 'string' | 'number' | 'boolean' | 'select' | 'color' | 'json' | 'date';
16
+ export type UiPropGroup = 'common' | 'appearance' | 'behavior' | 'advanced';
17
+ export type UiComponentProp = {
18
+ key: string;
19
+ label: string;
20
+ type: UiPropType;
21
+ /** Choices for `type: 'select'`. */
22
+ options?: string[];
23
+ default?: unknown;
24
+ /** Guidance shown as the property panel tooltip - sourced from the component's
25
+ * own JSDoc via the extractor, so it stays true to the source. */
26
+ description?: string;
27
+ /** Property-panel grouping (defaults to 'common'). */
28
+ group?: UiPropGroup;
29
+ /** A function / code-only prop (e.g. loadChildren) - listed read-only, set in code. */
30
+ code?: boolean;
31
+ };
32
+ /** A wireable component event: `key` is the handle event name (`ctx.x.on<key>`),
33
+ * `prop` the component callback prop that fires it (e.g. `onChange`). */
34
+ export type UiComponentEvent = {
35
+ key: string;
36
+ label: string;
37
+ prop?: string;
38
+ description?: string;
39
+ };
40
+ /** Standard DOM / interaction events EVERY component block can wire (VS-style full
41
+ * event surface) - forwarded by the generated wrapper to the block's handle. `dom`
42
+ * is the DOM event the wrapper listens for; `key` is the handle event name. */
43
+ export declare const STANDARD_UI_EVENTS: ReadonlyArray<{
44
+ key: string;
45
+ label: string;
46
+ dom: string;
47
+ description: string;
48
+ }>;
49
+ export type UiComponentSpec = {
50
+ /** Registry key - stored as `ComponentConfig.component`. */
51
+ key: string;
52
+ label: string;
53
+ category: string;
54
+ /** Named export from `@svgrid/grid`. */
55
+ importName: string;
56
+ /** Hand-curated prop entries. In the EXPORTED registry these are merged with
57
+ * the extracted full surface (ui-components.generated.ts): hand entries win
58
+ * by key (label/options/default), extraction supplies the rest + tooltips. */
59
+ props: UiComponentProp[];
60
+ /** Wireable events (merged with extracted function-prop events the same way). */
61
+ events?: UiComponentEvent[];
62
+ /** Extracted props to keep OUT of the property panel (edge cases). */
63
+ hiddenProps?: string[];
64
+ /** True if the component's real content is a `children` snippet - adds one
65
+ * literal-text field to the property panel, stored under `props._content`. */
66
+ hasContent?: boolean;
67
+ contentLabel?: string;
68
+ contentDefault?: string;
69
+ /** Array / object props a scalar form can't express (a Timeline's `items`, a
70
+ * Sparkline's `data`). Each is emitted verbatim in codegen as `key={<expr>}`
71
+ * with a baked demo dataset the user then edits in Code view, and its `preview`
72
+ * value drives the live designer canvas. Not shown in the property panel. */
73
+ fixed?: Array<{
74
+ key: string;
75
+ expr: string;
76
+ preview: unknown;
77
+ }>;
78
+ };
79
+ export declare const UI_COMPONENT_REGISTRY: ReadonlyArray<UiComponentSpec>;
80
+ export declare function uiComponentSpec(key: string): UiComponentSpec | undefined;
81
+ export declare const GRID_CURATED_PROPS: ReadonlySet<string>;
82
+ /** The Grid's raw prop surface for the "All properties" panel: every extracted SvGrid
83
+ * prop the curated controls do NOT already manage. Sorted by group then label. */
84
+ export declare function gridPropSurface(): UiComponentProp[];
85
+ /** The Grid props settable at runtime through `ctx.grid.<prop> = value` (backed by
86
+ * `api.setOption`): the full extracted SvGrid surface minus controller-owned /
87
+ * seed-once props and function/snippet props. Drives the `ctx.grid` type + the code
88
+ * view autocomplete. Sorted alphabetically. */
89
+ export declare function gridApiSettableProps(): UiComponentProp[];
@@ -0,0 +1,29 @@
1
+ /**
2
+ * AUTO-GENERATED by scripts/extract-ui-props.mjs - DO NOT EDIT.
3
+ * Regenerate: npm run extract:ui-props (packages/enterprise).
4
+ *
5
+ * The full prop + event surface of every toolbox component, extracted from the
6
+ * components' own `Props` types in packages/grid/src. `description` is the
7
+ * prop's JSDoc comment - it renders as the property panel's guidance tooltip.
8
+ */
9
+ export type GeneratedUiProp = {
10
+ key: string;
11
+ label: string;
12
+ type: 'string' | 'number' | 'boolean' | 'select' | 'color' | 'json' | 'date';
13
+ options?: string[];
14
+ default?: unknown;
15
+ description?: string;
16
+ group?: 'common' | 'appearance' | 'behavior' | 'advanced';
17
+ /** A function / code-only prop (e.g. loadChildren): listed read-only, set in code. */
18
+ code?: boolean;
19
+ };
20
+ export type GeneratedUiEvent = {
21
+ key: string;
22
+ label: string;
23
+ prop: string;
24
+ description?: string;
25
+ };
26
+ export declare const GENERATED_UI_SURFACE: Record<string, {
27
+ props: GeneratedUiProp[];
28
+ events: GeneratedUiEvent[];
29
+ }>;