@svgrid/enterprise 2.7.0 → 3.0.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 (238) hide show
  1. package/README.md +95 -95
  2. package/dist/ExpressionEditorHarness.svelte.d.ts +2 -2
  3. package/dist/SvAdvancedFilter.svelte.d.ts +2 -2
  4. package/dist/SvAlertRuleEditor.svelte.d.ts +2 -2
  5. package/dist/SvAlertsManager.svelte.d.ts +3 -3
  6. package/dist/SvAlertsPanel.svelte.d.ts +1 -1
  7. package/dist/SvAuthGate.svelte +115 -115
  8. package/dist/SvAuthGate.svelte.d.ts +1 -1
  9. package/dist/SvBoard.svelte.d.ts +1 -1
  10. package/dist/SvExportMenu.svelte +553 -553
  11. package/dist/SvExportMenu.svelte.d.ts +2 -2
  12. package/dist/SvExpressionEditor.svelte.d.ts +2 -2
  13. package/dist/SvFileInput.svelte +113 -113
  14. package/dist/SvGridAlerts.svelte.d.ts +2 -2
  15. package/dist/SvGridBoard.svelte +2358 -2358
  16. package/dist/SvGridBulkEditDrawer.svelte.d.ts +1 -1
  17. package/dist/SvGridEditPanel.svelte +1157 -1157
  18. package/dist/SvGridEditPanel.svelte.d.ts +3 -3
  19. package/dist/SvGridMasterDetail.svelte +116 -116
  20. package/dist/SvGridMasterDetail.svelte.d.ts +1 -1
  21. package/dist/SvGridScheduler.svelte +5358 -5358
  22. package/dist/SvImportDialog.svelte +1020 -1020
  23. package/dist/SvImportDialog.svelte.d.ts +2 -2
  24. package/dist/SvLookupInput.svelte +180 -180
  25. package/dist/SvLookupInput.svelte.d.ts +1 -1
  26. package/dist/SvPivotDesigner.svelte +1990 -1990
  27. package/dist/SvPivotDesigner.svelte.d.ts +2 -2
  28. package/dist/SvRecordDetail.svelte.d.ts +1 -1
  29. package/dist/SvSchedule.svelte.d.ts +1 -1
  30. package/dist/SvSchemaChart.svelte +234 -234
  31. package/dist/SvSchemaChart.svelte.d.ts +2 -2
  32. package/dist/SvSchemaDashboard.svelte +130 -130
  33. package/dist/SvSchemaDashboard.svelte.d.ts +3 -3
  34. package/dist/advanced-filter/expr-columns-from-grid.d.ts +1 -1
  35. package/dist/advanced-filter-enable.js +3 -3
  36. package/dist/alerts/alert-engine-attach.d.ts +2 -2
  37. package/dist/alerts/alert-engine-attach.js +3 -3
  38. package/dist/alerts/alert-engine.d.ts +1 -1
  39. package/dist/alerts/alert-engine.js +2 -2
  40. package/dist/alerts/alert-formats.d.ts +1 -1
  41. package/dist/alerts/alert-formats.js +1 -1
  42. package/dist/alerts/alert-observer.d.ts +3 -3
  43. package/dist/alerts/alert-observer.js +1 -1
  44. package/dist/alerts/alert-storage.d.ts +1 -1
  45. package/dist/alerts/alert-store.svelte.d.ts +1 -1
  46. package/dist/alerts/alert-types.d.ts +2 -2
  47. package/dist/alerts.js +2 -2
  48. package/dist/board.js +2 -2
  49. package/dist/cdn/svgrid-enterprise.svelte-external.js +1162 -1145
  50. package/dist/designer/assets/GridMenus-B1JtIN21.js +8 -0
  51. package/dist/designer/assets/SvDateRangeInput-C0iCCZ8o.css +1 -0
  52. package/dist/designer/assets/{SvDateRangeInput-CVn-yqrQ.js → SvDateRangeInput-CjO7nn_x.js} +1 -1
  53. package/dist/designer/assets/SvDateTimePicker-ByBD_ov6.js +1 -0
  54. package/dist/designer/assets/SvDateTimePicker-DPv09DIT.css +1 -0
  55. package/dist/designer/assets/SvField-YDLipR6O.css +1 -0
  56. package/dist/designer/assets/{SvField-BsqiA5me.js → SvField-cj1PFNgZ.js} +1 -1
  57. package/dist/designer/assets/{preload-helper-CG0n22O7.js → SvGrid.helpers-BgT-gnCo.js} +1 -1
  58. package/dist/designer/assets/SvGridCellEditor-0W1L2hJ1.js +2 -0
  59. package/dist/designer/assets/SvGridChart-DBOR4xcz.js +2 -0
  60. package/dist/designer/assets/SvGridChart-fkMWeh1J.css +1 -0
  61. package/dist/designer/assets/SvGridChartPanel-symrhNnR.js +11 -0
  62. package/dist/designer/assets/SvGridChartView-BmRxq6mU.js +1 -0
  63. package/dist/designer/assets/SvGridChartView-DUc-1RUf.css +1 -0
  64. package/dist/designer/assets/SvGridDropdown-Bb3HH2Aj.js +1 -0
  65. package/dist/designer/assets/SvGridDropdown-CcidB3rm.css +1 -0
  66. package/dist/designer/assets/SvListBox-1oUF6Iav.js +110 -0
  67. package/dist/designer/assets/SvListBox-BXfyqy4a.css +1 -0
  68. package/dist/designer/assets/cell-formatting-wr5wm7US.js +1 -0
  69. package/dist/designer/assets/chart-DXFganU8.js +1 -0
  70. package/dist/designer/assets/date-format-DGagAqRc.css +1 -0
  71. package/dist/designer/assets/{date-format-4DJvNtG2.js → date-format-onlYDsrY.js} +1 -1
  72. package/dist/designer/assets/export-format-D-eP4b2l.js +6 -0
  73. package/dist/designer/assets/{index-BvaLmQSd.js → index-C_a9Cj8Y.js} +2984 -141
  74. package/dist/designer/assets/index-k2stW6L8.css +1 -0
  75. package/dist/designer/assets/preload-helper-HclGiUj8.js +1 -0
  76. package/dist/designer/assets/{row-drag-touch-IuJPEt0z.js → row-drag-touch-BdknxBNL.js} +1 -1
  77. package/dist/designer/assets/src-D9p27OGC.js +58 -0
  78. package/dist/designer/index.html +22 -22
  79. package/dist/export-conditional.d.ts +1 -1
  80. package/dist/export-print.js +19 -19
  81. package/dist/export-xls.d.ts +2 -2
  82. package/dist/export.d.ts +2 -2
  83. package/dist/export.js +7 -7
  84. package/dist/expressions/builder-tree.d.ts +2 -2
  85. package/dist/expressions/builder-tree.js +1 -1
  86. package/dist/expressions/compile.d.ts +1 -1
  87. package/dist/import.js +1 -1
  88. package/dist/index.d.ts +53 -53
  89. package/dist/index.js +50 -50
  90. package/dist/install.d.ts +4 -4
  91. package/dist/install.js +11 -11
  92. package/dist/license.d.ts +3 -2
  93. package/dist/license.js +9 -4
  94. package/dist/node/studio.js +124 -115
  95. package/dist/pivot-chart.d.ts +1 -1
  96. package/dist/pivot-designer.d.ts +1 -1
  97. package/dist/pivot-enable.js +3 -3
  98. package/dist/print.d.ts +1 -1
  99. package/dist/print.js +4 -4
  100. package/dist/scheduler-config.d.ts +5 -5
  101. package/dist/scheduler-freebusy.d.ts +1 -1
  102. package/dist/scheduler-freebusy.js +1 -1
  103. package/dist/scheduler.js +2 -2
  104. package/dist/schema-designer.d.ts +1 -1
  105. package/dist/schema-designer.js +2 -2
  106. package/dist/selection-bar.js +2 -2
  107. package/dist/sources/aggregate.d.ts +1 -1
  108. package/dist/sources/auth-supabase.js +1 -1
  109. package/dist/sources/dashboard.d.ts +2 -2
  110. package/dist/sources/dashboard.js +1 -1
  111. package/dist/sources/index.d.ts +13 -13
  112. package/dist/sources/index.js +13 -13
  113. package/dist/sources/realtime-supabase.js +1 -1
  114. package/dist/sources/relation-lookup.d.ts +1 -1
  115. package/dist/sources/relation-lookup.js +1 -1
  116. package/dist/sources/rest-adapters.d.ts +1 -1
  117. package/dist/sources/rest-adapters.js +1 -1
  118. package/dist/sources/rest.d.ts +2 -2
  119. package/dist/sources/rest.js +3 -3
  120. package/dist/sources/supabase.d.ts +2 -2
  121. package/dist/sources/supabase.js +3 -3
  122. package/dist/sources/with-entity-rules.d.ts +1 -1
  123. package/dist/sources/with-entity-rules.js +1 -1
  124. package/dist/sources/with-relation-labels.d.ts +1 -1
  125. package/dist/studio/emit-project.js +2161 -2127
  126. package/dist/studio/emit-schema.js +369 -369
  127. package/dist/studio/index.d.ts +1 -1
  128. package/dist/studio/index.js +1 -1
  129. package/dist/studio/introspect-db.js +45 -45
  130. package/dist/studio/project.d.ts +10 -0
  131. package/dist/studio/samples/crm.js +6 -6
  132. package/dist/studio/samples/fleet.js +7 -7
  133. package/dist/studio/samples/insurance.js +9 -9
  134. package/dist/studio/samples/inventory.js +12 -12
  135. package/dist/studio/samples/projects.js +5 -5
  136. package/dist/studio/samples/support.js +8 -8
  137. package/dist/studio/scaffold-app.js +104 -104
  138. package/dist/studio/scaffold.js +151 -151
  139. package/dist/studio/ui-components.d.ts +7 -0
  140. package/dist/studio/ui-components.js +35 -0
  141. package/dist/sveltekit/in-memory.d.ts +3 -3
  142. package/dist/sveltekit/in-memory.js +4 -4
  143. package/dist/sveltekit/index.d.ts +6 -6
  144. package/dist/sveltekit/index.js +5 -5
  145. package/dist/sveltekit/query-plan.d.ts +1 -1
  146. package/dist/sveltekit/sql-source.d.ts +4 -4
  147. package/dist/sveltekit/sql-source.js +4 -4
  148. package/dist/sveltekit/sql.d.ts +1 -1
  149. package/dist/sveltekit/transport.d.ts +2 -2
  150. package/dist/sveltekit/transport.js +1 -1
  151. package/dist/upgrade-prompt.js +25 -25
  152. package/dist/version.d.ts +1 -1
  153. package/dist/version.js +1 -1
  154. package/package.json +6 -3
  155. package/dist/designer/assets/GridMenus-Cgilexpk.js +0 -8
  156. package/dist/designer/assets/SvDateRangeInput-BV5OXYQ2.css +0 -1
  157. package/dist/designer/assets/SvDateTimePicker-BdioTrJQ.js +0 -1
  158. package/dist/designer/assets/SvDateTimePicker-CY8TK4BT.css +0 -1
  159. package/dist/designer/assets/SvField-BF-9TJSd.css +0 -1
  160. package/dist/designer/assets/SvGridCellEditor-dLY7_kk9.js +0 -2
  161. package/dist/designer/assets/SvGridChart-BEDNTdc5.js +0 -2
  162. package/dist/designer/assets/SvGridChart-Vu4Nvjiv.css +0 -1
  163. package/dist/designer/assets/SvGridChartPanel-x3lzSxuf.js +0 -10
  164. package/dist/designer/assets/SvGridChartView-CAKhPELi.js +0 -1
  165. package/dist/designer/assets/SvGridChartView-DX9HfkBR.css +0 -1
  166. package/dist/designer/assets/SvGridDropdown-CAYG7Y-O.js +0 -1
  167. package/dist/designer/assets/SvGridDropdown-Crwb2P3Q.css +0 -1
  168. package/dist/designer/assets/SvListBox-CVYQcLX9.js +0 -1
  169. package/dist/designer/assets/SvListBox-DgN8kvjt.css +0 -1
  170. package/dist/designer/assets/chart-DHEgt4lN.js +0 -1
  171. package/dist/designer/assets/date-format-Dzy4mTGh.css +0 -1
  172. package/dist/designer/assets/export-format-DwjuTfrQ.js +0 -6
  173. package/dist/designer/assets/index-Cp7fDJ3b.css +0 -1
  174. package/dist/designer/assets/js-scroller.svelte-Bhxqb3-c.js +0 -110
  175. package/dist/designer/assets/src-7qOYsBug.js +0 -2896
  176. package/dist/designer/assets/src-B7DNcoQK.css +0 -1
  177. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -1
  178. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -178
  179. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +0 -3875
  180. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +0 -1
  181. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +0 -21
  182. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +0 -1
  183. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +0 -1938
  184. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +0 -1
  185. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +0 -205
  186. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +0 -1
  187. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +0 -18
  188. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +0 -1
  189. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +0 -264
  190. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +0 -1
  191. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +0 -697
  192. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +0 -1
  193. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -3
  194. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -134
  195. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -1
  196. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -55
  197. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -1
  198. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -2
  199. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -46843
  200. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -1
  201. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -237
  202. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -1
  203. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -2
  204. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -4
  205. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -1
  206. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -7
  207. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -4
  208. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -1
  209. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -5
  210. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -1
  211. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -5
  212. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -1
  213. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -5
  214. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -1
  215. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -6
  216. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -83
  217. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -1
  218. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -559
  219. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -1
  220. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -24
  221. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -1
  222. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -122
  223. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -1
  224. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -2
  225. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -89
  226. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -1
  227. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -241
  228. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -1
  229. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +0 -4938
  230. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +0 -1
  231. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +0 -495
  232. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +0 -1
  233. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +0 -190
  234. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +0 -1
  235. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +0 -8
  236. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +0 -1
  237. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +0 -138
  238. package/dist/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js.map +0 -1
package/README.md CHANGED
@@ -1,95 +1,95 @@
1
- <p align="center">
2
- <img src="https://svgrid.com/brand/svgrid-logo-icon-1200.png" alt="SvGrid" width="100" height="100" />
3
- </p>
4
-
5
- <h1 align="center">@svgrid/enterprise</h1>
6
-
7
- <p align="center"><strong>Excel export, import, pivot tables, and print for SvGrid.</strong></p>
8
-
9
- <p align="center">
10
- <a href="https://www.npmjs.com/package/@svgrid/enterprise"><img src="https://img.shields.io/npm/v/%40svgrid%2Fenterprise.svg?label=%40svgrid%2Fenterprise" alt="npm version" /></a>
11
- <a href="https://svgrid.com/pricing/"><img src="https://img.shields.io/badge/license-commercial-blue.svg" alt="Commercial license" /></a>
12
- <a href="https://svelte.dev"><img src="https://img.shields.io/badge/svelte-5-ff3e00.svg" alt="Svelte 5" /></a>
13
- </p>
14
-
15
- <p align="center">
16
- <a href="https://svgrid.com">Website</a> ·
17
- <a href="https://svgrid.com/docs/">Docs</a> ·
18
- <a href="https://svgrid.com/pricing/">Pricing</a>
19
- </p>
20
-
21
- ---
22
-
23
- `@svgrid/enterprise` layers production export, printing, analytics, extra grid views, and a full data-app layer on top of the MIT [`@svgrid/grid`](https://www.npmjs.com/package/@svgrid/grid) core. It attaches to the grid's public API without changing it - the same `api` object you already hold simply gains new methods.
24
-
25
- ## What it adds
26
-
27
- - **Data export** - Excel (`.xlsx`), PDF, styled HTML and XML, with theme-matched styling, headers/footers, and image support. CSV, TSV and JSON export (and copy-to-clipboard) are free in `@svgrid/grid`; Enterprise adds the paid formats and a single `exportGrid()` entry point over all of them.
28
- - **Data import** - read Excel / CSV / TSV / JSON into typed rows with column auto-mapping, type inference, and per-row validation, plus a ready-made `SvImportDialog`.
29
- - **Paginated print** - opens a clean, paginated, printable view of the grid with title and page breaks.
30
- - **Pivot tables** - drag-and-drop pivot Designer with row/column/value fields, aggregation, drill-through to source rows, and pivot-to-chart.
31
- - **Scheduler / calendar view** - a Month/Week/Day/Agenda calendar rendered as a view of the grid: `enableSchedulerView()` lets `<SvGrid scheduler={...}>` show events with resources, recurrence, and drag/resize.
32
- - **Staged editing** - collect edits into a reviewable change set before committing.
33
- - **Scheduling automation** - a client-side cron / one-off scheduler (`createScheduler`, `parseCron`, `CRON_PRESETS`) to drive recurring exports and alerts with no backend.
34
- - **SvGrid Studio** - a schema-driven data-app layer: `EntitySchema`, memory / SQL / Supabase / REST data sources, a SvelteKit adapter, edit panels, master/detail, schema charts + KPI dashboards, and the project model + codegen behind the visual designer. See [`@svgrid/studio`](https://www.npmjs.com/package/@svgrid/studio).
35
-
36
- ## Install
37
-
38
- ```bash
39
- npm install @svgrid/enterprise
40
- ```
41
-
42
- Format engines are optional peer dependencies - install only the ones you use:
43
-
44
- ```bash
45
- npm install jszip # Excel (.xlsx) export + import
46
- npm install pdfmake # PDF export
47
- ```
48
-
49
- ## Usage
50
-
51
- ```ts
52
- import { setLicenseKey, installEnterprise } from '@svgrid/enterprise'
53
-
54
- setLicenseKey('SVENTERPRISE-XXXX-XXXX-XXXX') // your Enterprise key
55
-
56
- // Inside <SvGrid onApiReady={(api) => { ... }}>:
57
- const pro = installEnterprise(api)
58
-
59
- // Export / print
60
- await pro.exportData({ format: 'xlsx', filename: 'orders' })
61
- pro.print({ title: 'Q2 Orders' })
62
-
63
- // Import
64
- const result = await pro.importData({ file, format: 'xlsx' })
65
-
66
- // Pivot - returns { rows, columns } for a second <SvGrid>
67
- const { rows, columns } = pro.pivot.build({
68
- rows: ['region'],
69
- values: [{ field: 'total', agg: 'sum' }],
70
- })
71
- ```
72
-
73
- The AI helpers are **not** in this package. Natural-language filter,
74
- smart fill, summarize, classify, anomaly detection, and "chart this" are
75
- built in and free in [`@svgrid/grid`](https://www.npmjs.com/package/@svgrid/grid).
76
- Installing Enterprise only adds the Excel/PDF export engine that
77
- AI-planned exports write through.
78
-
79
- `installEnterprise` returns the same grid API with the enterprise methods (`exportData`, `copyExport`, `print`, `importData`, `pivot.*`) added on top, so the rest of your integration is unchanged. It also registers the Kanban board and scheduler / calendar views, so `<SvGrid board={...}>` and `<SvGrid scheduler={...}>` render.
80
-
81
- ## Licensing
82
-
83
- Commercial. A valid Enterprise key is required at runtime; calls throw without one. Purchase a key at [svgrid.com/pricing](https://svgrid.com/pricing/).
84
-
85
- OSS projects under an [OSI-approved license](https://opensource.org/licenses) qualify for a **free Enterprise key**.
86
-
87
- The source in this package is published for evaluation and for paying customers; visibility does not grant a license. See [LICENSE](./LICENSE).
88
-
89
- ## Support
90
-
91
- Enterprise licenses include commercial and priority support. Open an issue at [github.com/sv-grid/sv-grid](https://github.com/sv-grid/sv-grid/issues) or reach the team via [svgrid.com](https://svgrid.com).
92
-
93
- ## Trademark
94
-
95
- SvGrid&trade; and sv-grid&trade; are trademarks of jQWidgets Ltd.
1
+ <p align="center">
2
+ <img src="https://svgrid.com/brand/svgrid-logo-icon-1200.png" alt="SvGrid" width="100" height="100" />
3
+ </p>
4
+
5
+ <h1 align="center">@svgrid/enterprise</h1>
6
+
7
+ <p align="center"><strong>Excel export, import, pivot tables, and print for SvGrid.</strong></p>
8
+
9
+ <p align="center">
10
+ <a href="https://www.npmjs.com/package/@svgrid/enterprise"><img src="https://img.shields.io/npm/v/%40svgrid%2Fenterprise.svg?label=%40svgrid%2Fenterprise" alt="npm version" /></a>
11
+ <a href="https://svgrid.com/pricing/"><img src="https://img.shields.io/badge/license-commercial-blue.svg" alt="Commercial license" /></a>
12
+ <a href="https://svelte.dev"><img src="https://img.shields.io/badge/svelte-5-ff3e00.svg" alt="Svelte 5" /></a>
13
+ </p>
14
+
15
+ <p align="center">
16
+ <a href="https://svgrid.com">Website</a> ·
17
+ <a href="https://svgrid.com/docs/">Docs</a> ·
18
+ <a href="https://svgrid.com/pricing/">Pricing</a>
19
+ </p>
20
+
21
+ ---
22
+
23
+ `@svgrid/enterprise` layers production export, printing, analytics, extra grid views, and a full data-app layer on top of the MIT [`@svgrid/grid`](https://www.npmjs.com/package/@svgrid/grid) core. It attaches to the grid's public API without changing it - the same `api` object you already hold simply gains new methods.
24
+
25
+ ## What it adds
26
+
27
+ - **Data export** - Excel (`.xlsx`), PDF, styled HTML and XML, with theme-matched styling, headers/footers, and image support. CSV, TSV and JSON export (and copy-to-clipboard) are free in `@svgrid/grid`; Enterprise adds the paid formats and a single `exportGrid()` entry point over all of them.
28
+ - **Data import** - read Excel / CSV / TSV / JSON into typed rows with column auto-mapping, type inference, and per-row validation, plus a ready-made `SvImportDialog`.
29
+ - **Paginated print** - opens a clean, paginated, printable view of the grid with title and page breaks.
30
+ - **Pivot tables** - drag-and-drop pivot Designer with row/column/value fields, aggregation, drill-through to source rows, and pivot-to-chart.
31
+ - **Scheduler / calendar view** - a Month/Week/Day/Agenda calendar rendered as a view of the grid: `enableSchedulerView()` lets `<SvGrid scheduler={...}>` show events with resources, recurrence, and drag/resize.
32
+ - **Staged editing** - collect edits into a reviewable change set before committing.
33
+ - **Scheduling automation** - a client-side cron / one-off scheduler (`createScheduler`, `parseCron`, `CRON_PRESETS`) to drive recurring exports and alerts with no backend.
34
+ - **SvGrid Studio** - a schema-driven data-app layer: `EntitySchema`, memory / SQL / Supabase / REST data sources, a SvelteKit adapter, edit panels, master/detail, schema charts + KPI dashboards, and the project model + codegen behind the visual designer. See [`@svgrid/studio`](https://www.npmjs.com/package/@svgrid/studio).
35
+
36
+ ## Install
37
+
38
+ ```bash
39
+ npm install @svgrid/enterprise
40
+ ```
41
+
42
+ Format engines are optional peer dependencies - install only the ones you use:
43
+
44
+ ```bash
45
+ npm install jszip # Excel (.xlsx) export + import
46
+ npm install pdfmake # PDF export
47
+ ```
48
+
49
+ ## Usage
50
+
51
+ ```ts
52
+ import { setLicenseKey, installEnterprise } from '@svgrid/enterprise'
53
+
54
+ setLicenseKey('SVENTERPRISE-XXXX-XXXX-XXXX') // your Enterprise key
55
+
56
+ // Inside <SvGrid onApiReady={(api) => { ... }}>:
57
+ const pro = installEnterprise(api)
58
+
59
+ // Export / print
60
+ await pro.exportData({ format: 'xlsx', filename: 'orders' })
61
+ pro.print({ title: 'Q2 Orders' })
62
+
63
+ // Import
64
+ const result = await pro.importData({ file, format: 'xlsx' })
65
+
66
+ // Pivot - returns { rows, columns } for a second <SvGrid>
67
+ const { rows, columns } = pro.pivot.build({
68
+ rows: ['region'],
69
+ values: [{ field: 'total', agg: 'sum' }],
70
+ })
71
+ ```
72
+
73
+ The AI helpers are **not** in this package. Natural-language filter,
74
+ smart fill, summarize, classify, anomaly detection, and "chart this" are
75
+ built in and free in [`@svgrid/grid`](https://www.npmjs.com/package/@svgrid/grid).
76
+ Installing Enterprise only adds the Excel/PDF export engine that
77
+ AI-planned exports write through.
78
+
79
+ `installEnterprise` returns the same grid API with the enterprise methods (`exportData`, `copyExport`, `print`, `importData`, `pivot.*`) added on top, so the rest of your integration is unchanged. It also registers the Kanban board and scheduler / calendar views, so `<SvGrid board={...}>` and `<SvGrid scheduler={...}>` render.
80
+
81
+ ## Licensing
82
+
83
+ Commercial. A valid Enterprise key is required at runtime; calls throw without one. Purchase a key at [svgrid.com/pricing](https://svgrid.com/pricing/).
84
+
85
+ OSS projects under an [OSI-approved license](https://opensource.org/licenses) qualify for a **free Enterprise key**.
86
+
87
+ The source in this package is published for evaluation and for paying customers; visibility does not grant a license. See [LICENSE](./LICENSE).
88
+
89
+ ## Support
90
+
91
+ Enterprise licenses include commercial and priority support. Open an issue at [github.com/sv-grid/sv-grid](https://github.com/sv-grid/sv-grid/issues) or reach the team via [svgrid.com](https://svgrid.com).
92
+
93
+ ## Trademark
94
+
95
+ SvGrid&trade; and sv-grid&trade; are trademarks of jQWidgets Ltd.
@@ -1,5 +1,5 @@
1
- import type { ExprColumn } from './expressions/expression-columns';
2
- import type { PredicateExpr } from './expressions/expression-types';
1
+ import type { ExprColumn } from './expressions/expression-columns.js';
2
+ import type { PredicateExpr } from './expressions/expression-types.js';
3
3
  type Props = {
4
4
  columns: ReadonlyArray<ExprColumn>;
5
5
  initial: PredicateExpr;
@@ -1,5 +1,5 @@
1
- import type { ExprColumn } from './expressions/expression-columns';
2
- import type { PredicateExpr } from './expressions/expression-types';
1
+ import type { ExprColumn } from './expressions/expression-columns.js';
2
+ import type { PredicateExpr } from './expressions/expression-types.js';
3
3
  type MinimalApi = {
4
4
  getColumns(): ReadonlyArray<{
5
5
  id: string;
@@ -1,5 +1,5 @@
1
- import type { ExprColumn } from './expressions/expression-columns';
2
- import type { AlertRule } from './alerts/alert-types';
1
+ import type { ExprColumn } from './expressions/expression-columns.js';
2
+ import type { AlertRule } from './alerts/alert-types.js';
3
3
  type Props = {
4
4
  open?: boolean;
5
5
  columns: ReadonlyArray<ExprColumn>;
@@ -1,6 +1,6 @@
1
- import type { ExprColumn } from './expressions/expression-columns';
2
- import type { AlertRulesManager } from './alerts/alert-storage';
3
- import type { AlertRule } from './alerts/alert-types';
1
+ import type { ExprColumn } from './expressions/expression-columns.js';
2
+ import type { AlertRulesManager } from './alerts/alert-storage.js';
3
+ import type { AlertRule } from './alerts/alert-types.js';
4
4
  type Props = {
5
5
  open?: boolean;
6
6
  manager: AlertRulesManager;
@@ -1,4 +1,4 @@
1
- import type { AlertEvent } from './alerts/alert-types';
1
+ import type { AlertEvent } from './alerts/alert-types.js';
2
2
  type Props = {
3
3
  open?: boolean;
4
4
  onJump?: (event: AlertEvent) => void;
@@ -1,115 +1,115 @@
1
- <script lang="ts">
2
- /**
3
- * SvAuthGate - require a signed-in user before showing its content. Renders a
4
- * login / sign-up form when signed out (Supabase Auth via `createSupabaseAuth`)
5
- * and its children when signed in, with a small "signed in as ... / Sign out"
6
- * bar. Pair with Row-Level Security so each user sees only their own rows.
7
- *
8
- * <SvAuthGate {client}>
9
- * <MyStudioScreen />
10
- * </SvAuthGate>
11
- */
12
- import type { Snippet } from 'svelte'
13
- import { createSupabaseAuth, type AuthState, type SupabaseAuthClientLike, type SupabaseAuthController } from './sources/auth-supabase'
14
-
15
- type Props = {
16
- client: SupabaseAuthClientLike
17
- children: Snippet
18
- title?: string
19
- /** Show the "signed in as ... / Sign out" bar. Default true. */
20
- showBar?: boolean
21
- }
22
-
23
- let { client, children, title = 'Sign in', showBar = true }: Props = $props()
24
-
25
- let auth = $state<SupabaseAuthController | undefined>()
26
- let authState = $state<AuthState>({ user: null, loading: true, error: null })
27
- let mode = $state<'signin' | 'signup'>('signin')
28
- let email = $state('')
29
- let password = $state('')
30
-
31
- $effect(() => {
32
- const controller = createSupabaseAuth({ client, onChange: (s) => (authState = s) })
33
- auth = controller
34
- return () => controller.dispose()
35
- })
36
-
37
- function submit(e: SubmitEvent) {
38
- e.preventDefault()
39
- if (mode === 'signin') auth?.signIn(email, password)
40
- else auth?.signUp(email, password)
41
- }
42
- </script>
43
-
44
- {#if authState.user}
45
- {#if showBar}
46
- <div class="sv-auth-bar">
47
- <span>Signed in as <strong>{authState.user.email ?? authState.user.id}</strong></span>
48
- <button type="button" onclick={() => auth?.signOut()} disabled={authState.loading}>Sign out</button>
49
- </div>
50
- {/if}
51
- {@render children()}
52
- {:else}
53
- <div class="sv-auth">
54
- <form class="sv-auth__form" onsubmit={submit}>
55
- <h2 class="sv-auth__title">{mode === 'signin' ? title : 'Create account'}</h2>
56
-
57
- <label class="sv-auth__field">
58
- <span>Email</span>
59
- <input type="email" autocomplete="email" bind:value={email} required />
60
- </label>
61
- <label class="sv-auth__field">
62
- <span>Password</span>
63
- <input type="password" autocomplete="current-password" bind:value={password} required />
64
- </label>
65
-
66
- {#if authState.error}<p class="sv-auth__error">{authState.error}</p>{/if}
67
-
68
- <button class="sv-auth__submit" type="submit" disabled={authState.loading}>
69
- {authState.loading ? 'Please wait…' : mode === 'signin' ? 'Sign in' : 'Create account'}
70
- </button>
71
-
72
- <button
73
- type="button"
74
- class="sv-auth__toggle"
75
- onclick={() => (mode = mode === 'signin' ? 'signup' : 'signin')}
76
- >
77
- {mode === 'signin' ? 'Need an account? Sign up' : 'Have an account? Sign in'}
78
- </button>
79
- </form>
80
- </div>
81
- {/if}
82
-
83
- <style>
84
- .sv-auth { display: flex; justify-content: center; padding: 32px 16px; }
85
- .sv-auth__form {
86
- display: flex; flex-direction: column; gap: 12px; width: 100%; max-width: 320px;
87
- padding: 24px; border: 1px solid var(--sg-border, #e2e2e2); border-radius: 12px;
88
- background: var(--sg-bg, #fff); color: var(--sg-fg, inherit);
89
- }
90
- .sv-auth__title { margin: 0 0 4px; font-size: 18px; font-weight: 600; }
91
- .sv-auth__field { display: flex; flex-direction: column; gap: 4px; font-size: 12px; font-weight: 600; color: var(--sg-muted, #555); }
92
- .sv-auth__field input {
93
- padding: 8px 10px; border: 1px solid var(--sg-border, #ccc); border-radius: 6px;
94
- background: var(--sg-input-bg, #fff); color: var(--sg-fg, inherit); font: inherit;
95
- }
96
- .sv-auth__error { margin: 0; font-size: 13px; color: #dc2626; }
97
- .sv-auth__submit {
98
- padding: 9px 12px; border: 1px solid var(--sg-accent, #2563eb); border-radius: 6px;
99
- background: var(--sg-accent, #2563eb); color: #fff; cursor: pointer; font: inherit; font-weight: 600;
100
- }
101
- .sv-auth__submit:disabled { opacity: 0.6; cursor: default; }
102
- .sv-auth__toggle { border: none; background: none; color: var(--sg-accent, #2563eb); cursor: pointer; font: inherit; font-size: 13px; }
103
-
104
- .sv-auth-bar {
105
- display: flex; align-items: center; justify-content: space-between; gap: 12px;
106
- padding: 8px 12px; margin-bottom: 12px; font-size: 13px;
107
- border: 1px solid var(--sg-border, #e2e2e2); border-radius: 8px;
108
- background: var(--sg-header-bg, #f8fafc); color: var(--sg-fg, inherit);
109
- }
110
- .sv-auth-bar button {
111
- padding: 5px 10px; border: 1px solid var(--sg-border, #ccc); border-radius: 6px;
112
- background: var(--sg-bg, #fff); color: var(--sg-fg, inherit); cursor: pointer; font: inherit;
113
- }
114
- .sv-auth-bar button:disabled { opacity: 0.5; cursor: default; }
115
- </style>
1
+ <script lang="ts">
2
+ /**
3
+ * SvAuthGate - require a signed-in user before showing its content. Renders a
4
+ * login / sign-up form when signed out (Supabase Auth via `createSupabaseAuth`)
5
+ * and its children when signed in, with a small "signed in as ... / Sign out"
6
+ * bar. Pair with Row-Level Security so each user sees only their own rows.
7
+ *
8
+ * <SvAuthGate {client}>
9
+ * <MyStudioScreen />
10
+ * </SvAuthGate>
11
+ */
12
+ import type { Snippet } from 'svelte'
13
+ import { createSupabaseAuth, type AuthState, type SupabaseAuthClientLike, type SupabaseAuthController } from './sources/auth-supabase'
14
+
15
+ type Props = {
16
+ client: SupabaseAuthClientLike
17
+ children: Snippet
18
+ title?: string
19
+ /** Show the "signed in as ... / Sign out" bar. Default true. */
20
+ showBar?: boolean
21
+ }
22
+
23
+ let { client, children, title = 'Sign in', showBar = true }: Props = $props()
24
+
25
+ let auth = $state<SupabaseAuthController | undefined>()
26
+ let authState = $state<AuthState>({ user: null, loading: true, error: null })
27
+ let mode = $state<'signin' | 'signup'>('signin')
28
+ let email = $state('')
29
+ let password = $state('')
30
+
31
+ $effect(() => {
32
+ const controller = createSupabaseAuth({ client, onChange: (s) => (authState = s) })
33
+ auth = controller
34
+ return () => controller.dispose()
35
+ })
36
+
37
+ function submit(e: SubmitEvent) {
38
+ e.preventDefault()
39
+ if (mode === 'signin') auth?.signIn(email, password)
40
+ else auth?.signUp(email, password)
41
+ }
42
+ </script>
43
+
44
+ {#if authState.user}
45
+ {#if showBar}
46
+ <div class="sv-auth-bar">
47
+ <span>Signed in as <strong>{authState.user.email ?? authState.user.id}</strong></span>
48
+ <button type="button" onclick={() => auth?.signOut()} disabled={authState.loading}>Sign out</button>
49
+ </div>
50
+ {/if}
51
+ {@render children()}
52
+ {:else}
53
+ <div class="sv-auth">
54
+ <form class="sv-auth__form" onsubmit={submit}>
55
+ <h2 class="sv-auth__title">{mode === 'signin' ? title : 'Create account'}</h2>
56
+
57
+ <label class="sv-auth__field">
58
+ <span>Email</span>
59
+ <input type="email" autocomplete="email" bind:value={email} required />
60
+ </label>
61
+ <label class="sv-auth__field">
62
+ <span>Password</span>
63
+ <input type="password" autocomplete="current-password" bind:value={password} required />
64
+ </label>
65
+
66
+ {#if authState.error}<p class="sv-auth__error">{authState.error}</p>{/if}
67
+
68
+ <button class="sv-auth__submit" type="submit" disabled={authState.loading}>
69
+ {authState.loading ? 'Please wait…' : mode === 'signin' ? 'Sign in' : 'Create account'}
70
+ </button>
71
+
72
+ <button
73
+ type="button"
74
+ class="sv-auth__toggle"
75
+ onclick={() => (mode = mode === 'signin' ? 'signup' : 'signin')}
76
+ >
77
+ {mode === 'signin' ? 'Need an account? Sign up' : 'Have an account? Sign in'}
78
+ </button>
79
+ </form>
80
+ </div>
81
+ {/if}
82
+
83
+ <style>
84
+ .sv-auth { display: flex; justify-content: center; padding: 32px 16px; }
85
+ .sv-auth__form {
86
+ display: flex; flex-direction: column; gap: 12px; width: 100%; max-width: 320px;
87
+ padding: 24px; border: 1px solid var(--sg-border, #e2e2e2); border-radius: 12px;
88
+ background: var(--sg-bg, #fff); color: var(--sg-fg, inherit);
89
+ }
90
+ .sv-auth__title { margin: 0 0 4px; font-size: 18px; font-weight: 600; }
91
+ .sv-auth__field { display: flex; flex-direction: column; gap: 4px; font-size: 12px; font-weight: 600; color: var(--sg-muted, #555); }
92
+ .sv-auth__field input {
93
+ padding: 8px 10px; border: 1px solid var(--sg-border, #ccc); border-radius: 6px;
94
+ background: var(--sg-input-bg, #fff); color: var(--sg-fg, inherit); font: inherit;
95
+ }
96
+ .sv-auth__error { margin: 0; font-size: 13px; color: #dc2626; }
97
+ .sv-auth__submit {
98
+ padding: 9px 12px; border: 1px solid var(--sg-accent, #2563eb); border-radius: 6px;
99
+ background: var(--sg-accent, #2563eb); color: #fff; cursor: pointer; font: inherit; font-weight: 600;
100
+ }
101
+ .sv-auth__submit:disabled { opacity: 0.6; cursor: default; }
102
+ .sv-auth__toggle { border: none; background: none; color: var(--sg-accent, #2563eb); cursor: pointer; font: inherit; font-size: 13px; }
103
+
104
+ .sv-auth-bar {
105
+ display: flex; align-items: center; justify-content: space-between; gap: 12px;
106
+ padding: 8px 12px; margin-bottom: 12px; font-size: 13px;
107
+ border: 1px solid var(--sg-border, #e2e2e2); border-radius: 8px;
108
+ background: var(--sg-header-bg, #f8fafc); color: var(--sg-fg, inherit);
109
+ }
110
+ .sv-auth-bar button {
111
+ padding: 5px 10px; border: 1px solid var(--sg-border, #ccc); border-radius: 6px;
112
+ background: var(--sg-bg, #fff); color: var(--sg-fg, inherit); cursor: pointer; font: inherit;
113
+ }
114
+ .sv-auth-bar button:disabled { opacity: 0.5; cursor: default; }
115
+ </style>
@@ -9,7 +9,7 @@
9
9
  * </SvAuthGate>
10
10
  */
11
11
  import type { Snippet } from 'svelte';
12
- import { type SupabaseAuthClientLike } from './sources/auth-supabase';
12
+ import { type SupabaseAuthClientLike } from './sources/auth-supabase.js';
13
13
  type Props = {
14
14
  client: SupabaseAuthClientLike;
15
15
  children: Snippet;
@@ -9,7 +9,7 @@
9
9
  * SvSchemaChart / SvGridEditPanel), so both the generated app and the designer
10
10
  * preview render it identically.
11
11
  */
12
- import type { EntitySchema } from './schema';
12
+ import type { EntitySchema } from './schema.js';
13
13
  type Row = Record<string, unknown>;
14
14
  type $$ComponentProps = {
15
15
  schema: EntitySchema<any>;