@svgrid/enterprise 2.5.3 → 2.6.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 (624) 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/{src → dist}/SvExpressionEditor.svelte +4 -1
  8. package/dist/SvExpressionEditor.svelte.d.ts +12 -0
  9. package/dist/SvFileInput.svelte.d.ts +20 -0
  10. package/dist/SvGridAlerts.svelte.d.ts +77 -0
  11. package/dist/SvGridBoard.svelte.d.ts +30 -0
  12. package/{src → dist}/SvGridEditPanel.svelte +173 -28
  13. package/dist/SvGridEditPanel.svelte.d.ts +75 -0
  14. package/dist/SvGridMasterDetail.svelte.d.ts +49 -0
  15. package/dist/SvGridScheduler.svelte.d.ts +30 -0
  16. package/dist/SvImportDialog.svelte.d.ts +88 -0
  17. package/dist/SvLookupInput.svelte.d.ts +21 -0
  18. package/dist/SvPivotDesigner.svelte.d.ts +176 -0
  19. package/dist/SvRecordDetail.svelte.d.ts +58 -0
  20. package/dist/SvSchedule.svelte.d.ts +29 -0
  21. package/dist/SvSchemaChart.svelte.d.ts +61 -0
  22. package/dist/SvSchemaDashboard.svelte.d.ts +46 -0
  23. package/dist/alerts/alert-engine-attach.d.ts +79 -0
  24. package/dist/alerts/alert-engine-attach.js +106 -0
  25. package/dist/alerts/alert-engine.d.ts +42 -0
  26. package/dist/alerts/alert-engine.js +196 -0
  27. package/dist/alerts/alert-formats.d.ts +26 -0
  28. package/dist/alerts/alert-formats.js +58 -0
  29. package/dist/alerts/alert-observer.d.ts +54 -0
  30. package/dist/alerts/alert-observer.js +156 -0
  31. package/dist/alerts/alert-scheduler.d.ts +30 -0
  32. package/dist/alerts/alert-scheduler.js +54 -0
  33. package/dist/alerts/alert-storage.d.ts +31 -0
  34. package/dist/alerts/alert-storage.js +92 -0
  35. package/dist/alerts/alert-store.svelte.d.ts +24 -0
  36. package/dist/alerts/alert-store.svelte.js +69 -0
  37. package/dist/alerts/alert-types.d.ts +86 -0
  38. package/dist/alerts/alert-types.js +1 -0
  39. package/dist/alerts.d.ts +2 -0
  40. package/{src/alerts.ts → dist/alerts.js} +9 -9
  41. package/dist/board.d.ts +7 -0
  42. package/{src/board.ts → dist/board.js} +13 -14
  43. package/dist/cdn/svgrid-enterprise.svelte-external.js +3220 -2607
  44. package/dist/designer/assets/index-BfzoL904.css +1 -0
  45. package/dist/designer/assets/{index-CBYU-KNn.js → index-CKdwDseq.js} +139 -139
  46. package/dist/designer/assets/src-DCKhP5Xy.css +1 -0
  47. package/dist/designer/assets/{src-i309BeJb.js → src-DLsSdh3J.js} +213 -193
  48. package/dist/designer/index.html +4 -4
  49. package/dist/edit-panel.d.ts +105 -0
  50. package/dist/edit-panel.js +350 -0
  51. package/dist/export-conditional.d.ts +31 -0
  52. package/dist/export-conditional.js +65 -0
  53. package/dist/export-ooxml.d.ts +93 -0
  54. package/dist/export-ooxml.js +385 -0
  55. package/dist/export-pdf.d.ts +107 -0
  56. package/dist/export-pdf.js +144 -0
  57. package/dist/export-print.d.ts +55 -0
  58. package/dist/export-print.js +91 -0
  59. package/{src/export-serialize.ts → dist/export-serialize.d.ts} +11 -24
  60. package/dist/export-serialize.js +11 -0
  61. package/dist/export-xls.d.ts +26 -0
  62. package/dist/export-xls.js +157 -0
  63. package/dist/export.d.ts +323 -0
  64. package/dist/export.js +1021 -0
  65. package/dist/expressions/evaluate.d.ts +17 -0
  66. package/dist/expressions/evaluate.js +214 -0
  67. package/dist/expressions/expression-columns.d.ts +61 -0
  68. package/dist/expressions/expression-columns.js +72 -0
  69. package/dist/expressions/expression-types.d.ts +125 -0
  70. package/dist/expressions/expression-types.js +1 -0
  71. package/dist/expressions/parse.d.ts +25 -0
  72. package/dist/expressions/parse.js +537 -0
  73. package/dist/import.d.ts +232 -0
  74. package/dist/import.js +846 -0
  75. package/dist/index.d.ts +66 -0
  76. package/dist/index.js +91 -0
  77. package/dist/install.d.ts +70 -0
  78. package/dist/install.js +61 -0
  79. package/dist/license-core.d.ts +37 -0
  80. package/dist/license-core.js +81 -0
  81. package/dist/license.d.ts +30 -0
  82. package/dist/license.js +139 -0
  83. package/dist/master-detail.d.ts +23 -0
  84. package/dist/master-detail.js +35 -0
  85. package/dist/node/studio.js +683 -13
  86. package/dist/pivot-chart.d.ts +28 -0
  87. package/dist/pivot-chart.js +71 -0
  88. package/dist/pivot-designer.d.ts +69 -0
  89. package/dist/pivot-designer.js +38 -0
  90. package/dist/pivot-enable.d.ts +6 -0
  91. package/{src/pivot-enable.ts → dist/pivot-enable.js} +13 -18
  92. package/dist/pivot.d.ts +111 -0
  93. package/dist/pivot.js +353 -0
  94. package/dist/print.d.ts +33 -0
  95. package/dist/print.js +61 -0
  96. package/dist/revoked.d.ts +1 -0
  97. package/{src/revoked.ts → dist/revoked.js} +5 -6
  98. package/dist/scheduler-assignments.d.ts +64 -0
  99. package/dist/scheduler-assignments.js +92 -0
  100. package/dist/scheduler-axis.d.ts +81 -0
  101. package/dist/scheduler-axis.js +180 -0
  102. package/{src/scheduler-booking.ts → dist/scheduler-booking.d.ts} +10 -43
  103. package/dist/scheduler-booking.js +50 -0
  104. package/dist/scheduler-config.d.ts +177 -0
  105. package/dist/scheduler-config.js +1 -0
  106. package/dist/scheduler-dependencies.d.ts +89 -0
  107. package/dist/scheduler-dependencies.js +179 -0
  108. package/dist/scheduler-freebusy.d.ts +19 -0
  109. package/{src/scheduler-freebusy.ts → dist/scheduler-freebusy.js} +9 -19
  110. package/{src/scheduler-heatmap.ts → dist/scheduler-heatmap.d.ts} +12 -35
  111. package/dist/scheduler-heatmap.js +41 -0
  112. package/dist/scheduler-resource-tree.d.ts +48 -0
  113. package/dist/scheduler-resource-tree.js +78 -0
  114. package/dist/scheduler-slots.d.ts +37 -0
  115. package/dist/scheduler-slots.js +80 -0
  116. package/dist/scheduler-summary.d.ts +41 -0
  117. package/dist/scheduler-summary.js +54 -0
  118. package/dist/scheduler.d.ts +7 -0
  119. package/{src/scheduler.ts → dist/scheduler.js} +13 -14
  120. package/dist/scheduling.d.ts +132 -0
  121. package/dist/scheduling.js +228 -0
  122. package/dist/schema-designer.d.ts +42 -0
  123. package/dist/schema-designer.js +117 -0
  124. package/dist/schema.d.ts +408 -0
  125. package/dist/schema.js +225 -0
  126. package/dist/smart-shim.d.ts +62 -0
  127. package/dist/smart-shim.js +34 -0
  128. package/dist/sources/aggregate.d.ts +43 -0
  129. package/dist/sources/aggregate.js +60 -0
  130. package/dist/sources/auth-supabase.d.ts +69 -0
  131. package/dist/sources/auth-supabase.js +39 -0
  132. package/dist/sources/dashboard.d.ts +65 -0
  133. package/dist/sources/dashboard.js +95 -0
  134. package/dist/sources/field-inference.d.ts +23 -0
  135. package/dist/sources/field-inference.js +52 -0
  136. package/dist/sources/filters.d.ts +35 -0
  137. package/dist/sources/filters.js +52 -0
  138. package/dist/sources/index.d.ts +18 -0
  139. package/dist/sources/index.js +18 -0
  140. package/dist/sources/introspect-supabase.d.ts +30 -0
  141. package/dist/sources/introspect-supabase.js +134 -0
  142. package/dist/sources/realtime-supabase.d.ts +37 -0
  143. package/dist/sources/realtime-supabase.js +52 -0
  144. package/dist/sources/relation-lookup.d.ts +50 -0
  145. package/dist/sources/relation-lookup.js +77 -0
  146. package/dist/sources/rest-adapters.d.ts +48 -0
  147. package/dist/sources/rest-adapters.js +85 -0
  148. package/dist/sources/rest.d.ts +38 -0
  149. package/dist/sources/rest.js +86 -0
  150. package/dist/sources/schema-from-columns.d.ts +37 -0
  151. package/dist/sources/schema-from-columns.js +48 -0
  152. package/dist/sources/supabase.d.ts +33 -0
  153. package/dist/sources/supabase.js +74 -0
  154. package/dist/sources/with-entity-rules.d.ts +25 -0
  155. package/dist/sources/with-entity-rules.js +47 -0
  156. package/dist/sources/with-relation-labels.d.ts +26 -0
  157. package/dist/sources/with-relation-labels.js +38 -0
  158. package/dist/staged-editing.d.ts +85 -0
  159. package/dist/staged-editing.js +0 -0
  160. package/dist/studio/bug-report.d.ts +61 -0
  161. package/dist/studio/bug-report.js +126 -0
  162. package/dist/studio/cli.d.ts +56 -0
  163. package/dist/studio/cli.js +70 -0
  164. package/dist/studio/copilot-core.d.ts +22 -0
  165. package/{src/studio/copilot-core.ts → dist/studio/copilot-core.js} +34 -38
  166. package/dist/studio/csv.d.ts +36 -0
  167. package/dist/studio/csv.js +173 -0
  168. package/dist/studio/db-connect-string.d.ts +45 -0
  169. package/dist/studio/db-connect-string.js +113 -0
  170. package/dist/studio/deploy-cli.d.ts +35 -0
  171. package/dist/studio/deploy-cli.js +81 -0
  172. package/dist/studio/emit-project.d.ts +77 -0
  173. package/dist/studio/emit-project.js +5463 -0
  174. package/dist/studio/emit-schema.d.ts +110 -0
  175. package/dist/studio/emit-schema.js +1128 -0
  176. package/dist/studio/index.d.ts +35 -0
  177. package/dist/studio/index.js +41 -0
  178. package/dist/studio/init-flow.d.ts +58 -0
  179. package/dist/studio/init-flow.js +451 -0
  180. package/dist/studio/introspect-db.d.ts +47 -0
  181. package/dist/studio/introspect-db.js +255 -0
  182. package/dist/studio/introspect-openapi.d.ts +19 -0
  183. package/dist/studio/introspect-openapi.js +244 -0
  184. package/dist/studio/introspect-prisma.d.ts +25 -0
  185. package/dist/studio/introspect-prisma.js +164 -0
  186. package/dist/studio/introspect.d.ts +35 -0
  187. package/dist/studio/introspect.js +306 -0
  188. package/dist/studio/project.d.ts +1448 -0
  189. package/dist/studio/project.js +2187 -0
  190. package/dist/studio/sample-data.d.ts +19 -0
  191. package/dist/studio/sample-data.js +207 -0
  192. package/dist/studio/samples/ats.d.ts +2 -0
  193. package/dist/studio/samples/ats.js +194 -0
  194. package/dist/studio/samples/clinic.d.ts +2 -0
  195. package/dist/studio/samples/clinic.js +171 -0
  196. package/dist/studio/samples/crm.d.ts +2 -0
  197. package/dist/studio/samples/crm.js +280 -0
  198. package/dist/studio/samples/datasets.d.ts +38 -0
  199. package/dist/studio/samples/datasets.js +296 -0
  200. package/dist/studio/samples/ecommerce.d.ts +2 -0
  201. package/dist/studio/samples/ecommerce.js +178 -0
  202. package/dist/studio/samples/events.d.ts +2 -0
  203. package/dist/studio/samples/events.js +192 -0
  204. package/dist/studio/samples/fleet.d.ts +2 -0
  205. package/dist/studio/samples/fleet.js +203 -0
  206. package/dist/studio/samples/gym.d.ts +2 -0
  207. package/dist/studio/samples/gym.js +205 -0
  208. package/dist/studio/samples/hr.d.ts +2 -0
  209. package/dist/studio/samples/hr.js +186 -0
  210. package/dist/studio/samples/index.d.ts +13 -0
  211. package/dist/studio/samples/index.js +44 -0
  212. package/dist/studio/samples/insurance.d.ts +2 -0
  213. package/dist/studio/samples/insurance.js +220 -0
  214. package/dist/studio/samples/inventory.d.ts +2 -0
  215. package/dist/studio/samples/inventory.js +204 -0
  216. package/dist/studio/samples/invoicing.d.ts +2 -0
  217. package/dist/studio/samples/invoicing.js +154 -0
  218. package/dist/studio/samples/library.d.ts +2 -0
  219. package/dist/studio/samples/library.js +171 -0
  220. package/dist/studio/samples/live-data.d.ts +5 -0
  221. package/dist/studio/samples/live-data.js +261 -0
  222. package/dist/studio/samples/projects.d.ts +2 -0
  223. package/dist/studio/samples/projects.js +203 -0
  224. package/dist/studio/samples/realestate.d.ts +2 -0
  225. package/dist/studio/samples/realestate.js +187 -0
  226. package/dist/studio/samples/restaurant.d.ts +2 -0
  227. package/dist/studio/samples/restaurant.js +180 -0
  228. package/dist/studio/samples/school.d.ts +2 -0
  229. package/dist/studio/samples/school.js +188 -0
  230. package/dist/studio/samples/shared.d.ts +142 -0
  231. package/dist/studio/samples/shared.js +164 -0
  232. package/dist/studio/samples/starter.d.ts +4 -0
  233. package/dist/studio/samples/starter.js +237 -0
  234. package/dist/studio/samples/subscriptions.d.ts +2 -0
  235. package/dist/studio/samples/subscriptions.js +175 -0
  236. package/dist/studio/samples/support.d.ts +2 -0
  237. package/dist/studio/samples/support.js +209 -0
  238. package/dist/studio/scaffold-app.d.ts +22 -0
  239. package/{src/studio/scaffold-app.ts → dist/studio/scaffold-app.js} +45 -63
  240. package/dist/studio/scaffold.d.ts +63 -0
  241. package/dist/studio/scaffold.js +346 -0
  242. package/dist/studio/screen-suites.d.ts +193 -0
  243. package/dist/studio/screen-suites.js +297 -0
  244. package/dist/studio/themes.d.ts +34 -0
  245. package/dist/studio/themes.js +41 -0
  246. package/dist/studio/ui-components.d.ts +89 -0
  247. package/dist/studio/ui-components.generated.d.ts +29 -0
  248. package/dist/studio/ui-components.generated.js +7319 -0
  249. package/dist/studio/ui-components.js +673 -0
  250. package/dist/studio/user-error.d.ts +23 -0
  251. package/{src/studio/user-error.ts → dist/studio/user-error.js} +10 -13
  252. package/dist/studio/verify.d.ts +34 -0
  253. package/dist/studio/verify.js +47 -0
  254. package/dist/sveltekit/in-memory.d.ts +14 -0
  255. package/dist/sveltekit/in-memory.js +113 -0
  256. package/dist/sveltekit/index.d.ts +6 -0
  257. package/dist/sveltekit/index.js +5 -0
  258. package/dist/sveltekit/query-plan.d.ts +44 -0
  259. package/dist/sveltekit/query-plan.js +76 -0
  260. package/dist/sveltekit/sql-source.d.ts +47 -0
  261. package/dist/sveltekit/sql-source.js +106 -0
  262. package/dist/sveltekit/sql.d.ts +48 -0
  263. package/dist/sveltekit/sql.js +73 -0
  264. package/dist/sveltekit/transport.d.ts +209 -0
  265. package/dist/sveltekit/transport.js +219 -0
  266. package/{src/sveltekit/types.ts → dist/sveltekit/types.d.ts} +8 -11
  267. package/dist/sveltekit/types.js +1 -0
  268. package/dist/upgrade-prompt.d.ts +16 -0
  269. package/dist/upgrade-prompt.js +141 -0
  270. package/dist/version.d.ts +13 -0
  271. package/{src/version.ts → dist/version.js} +1 -1
  272. package/dist/watermark.d.ts +2 -0
  273. package/dist/watermark.js +146 -0
  274. package/package.json +28 -26
  275. package/dist/designer/assets/index-oYok52zd.css +0 -1
  276. package/dist/designer/assets/src-D-O2F805.css +0 -1
  277. package/src/SvBoard.dom.test.ts +0 -67
  278. package/src/SvGridAlerts.dom.test.ts +0 -113
  279. package/src/SvGridEditPanel.dom.test.ts +0 -320
  280. package/src/SvRecordDetail.dom.test.ts +0 -137
  281. package/src/SvSchedule.dom.test.ts +0 -57
  282. package/src/ai-export-pdf.dom.test.ts +0 -77
  283. package/src/ai-export-xlsx.dom.test.ts +0 -90
  284. package/src/ai-export.dom.test.ts +0 -114
  285. package/src/alerts/alert-engine-attach.ts +0 -165
  286. package/src/alerts/alert-engine.test.ts +0 -135
  287. package/src/alerts/alert-engine.ts +0 -260
  288. package/src/alerts/alert-formats.test.ts +0 -87
  289. package/src/alerts/alert-formats.ts +0 -77
  290. package/src/alerts/alert-observer.test.ts +0 -189
  291. package/src/alerts/alert-observer.ts +0 -208
  292. package/src/alerts/alert-scheduler.ts +0 -96
  293. package/src/alerts/alert-storage.test.ts +0 -54
  294. package/src/alerts/alert-storage.ts +0 -116
  295. package/src/alerts/alert-store.svelte.ts +0 -80
  296. package/src/alerts/alert-types.ts +0 -94
  297. package/src/board.dom.test.ts +0 -941
  298. package/src/edit-panel.test.ts +0 -322
  299. package/src/edit-panel.ts +0 -379
  300. package/src/export-conditional.test.ts +0 -60
  301. package/src/export-conditional.ts +0 -94
  302. package/src/export-ooxml.test.ts +0 -152
  303. package/src/export-ooxml.ts +0 -489
  304. package/src/export-pdf.test.ts +0 -138
  305. package/src/export-pdf.ts +0 -245
  306. package/src/export-print.test.ts +0 -66
  307. package/src/export-print.ts +0 -132
  308. package/src/export-serialize.test.ts +0 -56
  309. package/src/export-xls.ts +0 -199
  310. package/src/export-xlsx-roundtrip.test.ts +0 -120
  311. package/src/export-xlsx.test.ts +0 -150
  312. package/src/export.test.ts +0 -349
  313. package/src/export.ts +0 -1464
  314. package/src/expressions/evaluate.test.ts +0 -111
  315. package/src/expressions/evaluate.ts +0 -237
  316. package/src/expressions/expression-columns.ts +0 -133
  317. package/src/expressions/expression-types.ts +0 -84
  318. package/src/expressions/parse.test.ts +0 -106
  319. package/src/expressions/parse.ts +0 -610
  320. package/src/import-automap.test.ts +0 -131
  321. package/src/import-hardening.test.ts +0 -158
  322. package/src/import.test.ts +0 -415
  323. package/src/import.ts +0 -1044
  324. package/src/index.ts +0 -569
  325. package/src/install.ts +0 -154
  326. package/src/license-core.test.ts +0 -23
  327. package/src/license-core.ts +0 -107
  328. package/src/license-expiry.test.ts +0 -144
  329. package/src/license.ts +0 -157
  330. package/src/master-detail.test.ts +0 -61
  331. package/src/master-detail.ts +0 -42
  332. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -178
  333. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js +0 -3875
  334. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js.map +0 -1
  335. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js +0 -21
  336. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js.map +0 -1
  337. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js +0 -1938
  338. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js.map +0 -1
  339. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js +0 -205
  340. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js.map +0 -1
  341. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js +0 -18
  342. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js.map +0 -1
  343. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js +0 -264
  344. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js.map +0 -1
  345. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js +0 -697
  346. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js.map +0 -1
  347. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -134
  348. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -1
  349. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -55
  350. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -1
  351. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -2
  352. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -46843
  353. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -1
  354. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -237
  355. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -1
  356. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -2
  357. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -4
  358. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -1
  359. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -7
  360. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -4
  361. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -1
  362. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -5
  363. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -1
  364. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -5
  365. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -1
  366. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -5
  367. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -1
  368. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -6
  369. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -83
  370. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -1
  371. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -559
  372. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -1
  373. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -24
  374. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -1
  375. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -122
  376. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -1
  377. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -2
  378. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -89
  379. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -1
  380. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -241
  381. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -1
  382. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js +0 -4938
  383. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js.map +0 -1
  384. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js +0 -495
  385. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js.map +0 -1
  386. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js +0 -190
  387. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js.map +0 -1
  388. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js +0 -8
  389. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js.map +0 -1
  390. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js +0 -138
  391. package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js.map +0 -1
  392. package/src/pivot-chart.test.ts +0 -86
  393. package/src/pivot-chart.ts +0 -112
  394. package/src/pivot-designer.ts +0 -101
  395. package/src/pivot.test.ts +0 -335
  396. package/src/pivot.ts +0 -578
  397. package/src/print.ts +0 -107
  398. package/src/scheduler-assignments.test.ts +0 -97
  399. package/src/scheduler-assignments.ts +0 -134
  400. package/src/scheduler-axis.test.ts +0 -108
  401. package/src/scheduler-axis.ts +0 -238
  402. package/src/scheduler-booking.test.ts +0 -57
  403. package/src/scheduler-config.ts +0 -179
  404. package/src/scheduler-dependencies.test.ts +0 -155
  405. package/src/scheduler-dependencies.ts +0 -223
  406. package/src/scheduler-freebusy.test.ts +0 -41
  407. package/src/scheduler-heatmap.test.ts +0 -39
  408. package/src/scheduler-resource-tree.test.ts +0 -84
  409. package/src/scheduler-resource-tree.ts +0 -107
  410. package/src/scheduler-slots.test.ts +0 -53
  411. package/src/scheduler-slots.ts +0 -94
  412. package/src/scheduler-summary.test.ts +0 -47
  413. package/src/scheduler-summary.ts +0 -81
  414. package/src/scheduling.test.ts +0 -194
  415. package/src/scheduling.ts +0 -293
  416. package/src/schema-designer.test.ts +0 -121
  417. package/src/schema-designer.ts +0 -142
  418. package/src/schema.test.ts +0 -268
  419. package/src/schema.ts +0 -562
  420. package/src/smart-shim.ts +0 -107
  421. package/src/sources/aggregate.test.ts +0 -79
  422. package/src/sources/aggregate.ts +0 -102
  423. package/src/sources/auth-supabase.test.ts +0 -80
  424. package/src/sources/auth-supabase.ts +0 -87
  425. package/src/sources/dashboard.kpi.test.ts +0 -50
  426. package/src/sources/dashboard.test.ts +0 -61
  427. package/src/sources/dashboard.ts +0 -136
  428. package/src/sources/field-inference.test.ts +0 -60
  429. package/src/sources/field-inference.ts +0 -63
  430. package/src/sources/filters.test.ts +0 -58
  431. package/src/sources/filters.ts +0 -70
  432. package/src/sources/index.ts +0 -67
  433. package/src/sources/introspect-supabase.test.ts +0 -112
  434. package/src/sources/introspect-supabase.ts +0 -139
  435. package/src/sources/realtime-supabase.test.ts +0 -93
  436. package/src/sources/realtime-supabase.ts +0 -99
  437. package/src/sources/relation-lookup.test.ts +0 -99
  438. package/src/sources/relation-lookup.ts +0 -128
  439. package/src/sources/rest-adapters.test.ts +0 -95
  440. package/src/sources/rest-adapters.ts +0 -120
  441. package/src/sources/rest.test.ts +0 -104
  442. package/src/sources/rest.ts +0 -129
  443. package/src/sources/schema-from-columns.test.ts +0 -106
  444. package/src/sources/schema-from-columns.ts +0 -88
  445. package/src/sources/supabase.test.ts +0 -110
  446. package/src/sources/supabase.ts +0 -99
  447. package/src/sources/with-entity-rules.test.ts +0 -104
  448. package/src/sources/with-entity-rules.ts +0 -78
  449. package/src/sources/with-relation-labels.test.ts +0 -75
  450. package/src/sources/with-relation-labels.ts +0 -73
  451. package/src/staged-editing.ts +0 -0
  452. package/src/studio/bug-report.test.ts +0 -101
  453. package/src/studio/bug-report.ts +0 -165
  454. package/src/studio/cli.test.ts +0 -187
  455. package/src/studio/cli.ts +0 -117
  456. package/src/studio/copilot-core.test.ts +0 -45
  457. package/src/studio/csv.test.ts +0 -90
  458. package/src/studio/csv.ts +0 -165
  459. package/src/studio/db-connect-string.test.ts +0 -94
  460. package/src/studio/db-connect-string.ts +0 -128
  461. package/src/studio/deploy-cli.test.ts +0 -56
  462. package/src/studio/deploy-cli.ts +0 -100
  463. package/src/studio/emit-project.test.ts +0 -3324
  464. package/src/studio/emit-project.ts +0 -5377
  465. package/src/studio/emit-schema.test.ts +0 -111
  466. package/src/studio/emit-schema.ts +0 -1181
  467. package/src/studio/index.ts +0 -380
  468. package/src/studio/init-flow.test.ts +0 -514
  469. package/src/studio/init-flow.ts +0 -556
  470. package/src/studio/introspect-db.test.ts +0 -186
  471. package/src/studio/introspect-db.ts +0 -312
  472. package/src/studio/introspect-openapi.test.ts +0 -84
  473. package/src/studio/introspect-openapi.ts +0 -252
  474. package/src/studio/introspect-prisma.test.ts +0 -99
  475. package/src/studio/introspect-prisma.ts +0 -175
  476. package/src/studio/introspect.test.ts +0 -172
  477. package/src/studio/introspect.ts +0 -310
  478. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -1
  479. package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -3
  480. package/src/studio/pipeline.test.ts +0 -42
  481. package/src/studio/project-robust.test.ts +0 -157
  482. package/src/studio/project.test.ts +0 -929
  483. package/src/studio/project.ts +0 -2394
  484. package/src/studio/sample-data.test.ts +0 -58
  485. package/src/studio/sample-data.ts +0 -203
  486. package/src/studio/samples/ats.ts +0 -202
  487. package/src/studio/samples/clinic.ts +0 -179
  488. package/src/studio/samples/crm.ts +0 -291
  489. package/src/studio/samples/datasets.test.ts +0 -84
  490. package/src/studio/samples/datasets.ts +0 -340
  491. package/src/studio/samples/ecommerce.ts +0 -187
  492. package/src/studio/samples/events.ts +0 -201
  493. package/src/studio/samples/fleet.ts +0 -213
  494. package/src/studio/samples/gym.ts +0 -215
  495. package/src/studio/samples/hr.ts +0 -195
  496. package/src/studio/samples/index.ts +0 -55
  497. package/src/studio/samples/insurance.ts +0 -229
  498. package/src/studio/samples/inventory.ts +0 -213
  499. package/src/studio/samples/invoicing.ts +0 -162
  500. package/src/studio/samples/library.ts +0 -180
  501. package/src/studio/samples/live-data.test.ts +0 -99
  502. package/src/studio/samples/live-data.ts +0 -306
  503. package/src/studio/samples/projects.ts +0 -212
  504. package/src/studio/samples/realestate.ts +0 -196
  505. package/src/studio/samples/restaurant.ts +0 -189
  506. package/src/studio/samples/samples.test.ts +0 -304
  507. package/src/studio/samples/school.ts +0 -197
  508. package/src/studio/samples/seed-floor.test.ts +0 -25
  509. package/src/studio/samples/shared.ts +0 -237
  510. package/src/studio/samples/starter.ts +0 -251
  511. package/src/studio/samples/subscriptions.ts +0 -183
  512. package/src/studio/samples/support.ts +0 -216
  513. package/src/studio/scaffold-app.test.ts +0 -91
  514. package/src/studio/scaffold.test.ts +0 -192
  515. package/src/studio/scaffold.ts +0 -390
  516. package/src/studio/screen-suites.test.ts +0 -269
  517. package/src/studio/screen-suites.ts +0 -448
  518. package/src/studio/themes.ts +0 -62
  519. package/src/studio/ui-components-surface.test.ts +0 -185
  520. package/src/studio/ui-components.generated.ts +0 -7154
  521. package/src/studio/ui-components.ts +0 -742
  522. package/src/studio/verify.test.ts +0 -47
  523. package/src/studio/verify.ts +0 -79
  524. package/src/sveltekit/in-memory.test.ts +0 -104
  525. package/src/sveltekit/in-memory.ts +0 -129
  526. package/src/sveltekit/index.ts +0 -24
  527. package/src/sveltekit/query-plan.test.ts +0 -109
  528. package/src/sveltekit/query-plan.ts +0 -125
  529. package/src/sveltekit/sql-source.test.ts +0 -198
  530. package/src/sveltekit/sql-source.ts +0 -171
  531. package/src/sveltekit/sql.test.ts +0 -80
  532. package/src/sveltekit/sql.ts +0 -131
  533. package/src/sveltekit/transport-scope.test.ts +0 -125
  534. package/src/sveltekit/transport.test.ts +0 -201
  535. package/src/sveltekit/transport.ts +0 -373
  536. package/src/upgrade-prompt.test.ts +0 -71
  537. package/src/upgrade-prompt.ts +0 -162
  538. package/src/version.test.ts +0 -17
  539. package/src/watermark.test.ts +0 -97
  540. package/src/watermark.ts +0 -156
  541. /package/{src → dist}/SvAlertRuleEditor.svelte +0 -0
  542. /package/{src → dist}/SvAlertsManager.svelte +0 -0
  543. /package/{src → dist}/SvAlertsPanel.svelte +0 -0
  544. /package/{src → dist}/SvAuthGate.svelte +0 -0
  545. /package/{src → dist}/SvBoard.svelte +0 -0
  546. /package/{src → dist}/SvExportMenu.svelte +0 -0
  547. /package/{src → dist}/SvFileInput.svelte +0 -0
  548. /package/{src → dist}/SvGridAlerts.svelte +0 -0
  549. /package/{src → dist}/SvGridBoard.svelte +0 -0
  550. /package/{src → dist}/SvGridMasterDetail.svelte +0 -0
  551. /package/{src → dist}/SvGridScheduler.svelte +0 -0
  552. /package/{src → dist}/SvImportDialog.svelte +0 -0
  553. /package/{src → dist}/SvLookupInput.svelte +0 -0
  554. /package/{src → dist}/SvPivotDesigner.svelte +0 -0
  555. /package/{src → dist}/SvRecordDetail.svelte +0 -0
  556. /package/{src → dist}/SvSchedule.svelte +0 -0
  557. /package/{src → dist}/SvSchemaChart.svelte +0 -0
  558. /package/{src → dist}/SvSchemaDashboard.svelte +0 -0
  559. /package/{src → dist}/pdfmake-shims.d.ts +0 -0
  560. /package/{src → dist}/smart.export.d.ts +0 -0
  561. /package/{src → dist}/smart.export.js +0 -0
  562. /package/{src → dist}/studio/HANDLERS-DESIGN.md +0 -0
  563. /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -0
  564. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -0
  565. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +0 -0
  566. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +0 -0
  567. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +0 -0
  568. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +0 -0
  569. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +0 -0
  570. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +0 -0
  571. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +0 -0
  572. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +0 -0
  573. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +0 -0
  574. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +0 -0
  575. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +0 -0
  576. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +0 -0
  577. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +0 -0
  578. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +0 -0
  579. /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -0
  580. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -0
  581. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -0
  582. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -0
  583. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -0
  584. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -0
  585. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -0
  586. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -0
  587. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -0
  588. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -0
  589. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -0
  590. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -0
  591. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -0
  592. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -0
  593. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -0
  594. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -0
  595. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -0
  596. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -0
  597. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -0
  598. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -0
  599. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -0
  600. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -0
  601. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -0
  602. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -0
  603. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -0
  604. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -0
  605. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -0
  606. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -0
  607. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -0
  608. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -0
  609. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -0
  610. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -0
  611. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -0
  612. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -0
  613. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -0
  614. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -0
  615. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +0 -0
  616. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +0 -0
  617. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +0 -0
  618. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +0 -0
  619. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +0 -0
  620. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +0 -0
  621. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +0 -0
  622. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +0 -0
  623. /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +0 -0
  624. /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
+ }>;