@svgrid/enterprise 2.5.2 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SvAlertRuleEditor.svelte.d.ts +13 -0
- package/dist/SvAlertsManager.svelte.d.ts +14 -0
- package/dist/SvAlertsPanel.svelte.d.ts +9 -0
- package/dist/SvAuthGate.svelte.d.ts +22 -0
- package/dist/SvBoard.svelte.d.ts +35 -0
- package/dist/SvExportMenu.svelte.d.ts +61 -0
- package/dist/SvExpressionEditor.svelte.d.ts +12 -0
- package/dist/SvFileInput.svelte.d.ts +20 -0
- package/dist/SvGridAlerts.svelte.d.ts +77 -0
- package/dist/SvGridBoard.svelte.d.ts +30 -0
- package/dist/SvGridEditPanel.svelte.d.ts +73 -0
- package/dist/SvGridMasterDetail.svelte.d.ts +49 -0
- package/dist/SvGridScheduler.svelte.d.ts +30 -0
- package/dist/SvImportDialog.svelte.d.ts +88 -0
- package/dist/SvLookupInput.svelte.d.ts +21 -0
- package/dist/SvPivotDesigner.svelte.d.ts +176 -0
- package/dist/SvRecordDetail.svelte.d.ts +58 -0
- package/dist/SvSchedule.svelte.d.ts +29 -0
- package/dist/SvSchemaChart.svelte.d.ts +61 -0
- package/dist/SvSchemaDashboard.svelte.d.ts +46 -0
- package/dist/alerts/alert-engine-attach.d.ts +79 -0
- package/dist/alerts/alert-engine-attach.js +106 -0
- package/dist/alerts/alert-engine.d.ts +42 -0
- package/dist/alerts/alert-engine.js +196 -0
- package/dist/alerts/alert-formats.d.ts +26 -0
- package/dist/alerts/alert-formats.js +58 -0
- package/dist/alerts/alert-observer.d.ts +54 -0
- package/dist/alerts/alert-observer.js +156 -0
- package/dist/alerts/alert-scheduler.d.ts +30 -0
- package/dist/alerts/alert-scheduler.js +54 -0
- package/dist/alerts/alert-storage.d.ts +31 -0
- package/dist/alerts/alert-storage.js +92 -0
- package/dist/alerts/alert-store.svelte.d.ts +24 -0
- package/dist/alerts/alert-store.svelte.js +69 -0
- package/dist/alerts/alert-types.d.ts +86 -0
- package/dist/alerts/alert-types.js +1 -0
- package/dist/alerts.d.ts +2 -0
- package/{src/alerts.ts → dist/alerts.js} +9 -9
- package/dist/board.d.ts +7 -0
- package/{src/board.ts → dist/board.js} +13 -14
- package/dist/cdn/svgrid-enterprise.svelte-external.js +2987 -2981
- package/dist/designer/assets/{index-CM5xvaOy.js → index-BF0UH638.js} +3 -3
- package/dist/designer/assets/{src-D-ET9Mmo.js → src-BPJruwB9.js} +184 -184
- package/dist/designer/index.html +2 -2
- package/dist/edit-panel.d.ts +105 -0
- package/dist/edit-panel.js +350 -0
- package/dist/export-conditional.d.ts +31 -0
- package/dist/export-conditional.js +65 -0
- package/dist/export-ooxml.d.ts +93 -0
- package/dist/export-ooxml.js +385 -0
- package/dist/export-pdf.d.ts +107 -0
- package/dist/export-pdf.js +144 -0
- package/dist/export-print.d.ts +55 -0
- package/dist/export-print.js +91 -0
- package/{src/export-serialize.ts → dist/export-serialize.d.ts} +11 -24
- package/dist/export-serialize.js +11 -0
- package/dist/export-xls.d.ts +26 -0
- package/dist/export-xls.js +157 -0
- package/dist/export.d.ts +323 -0
- package/dist/export.js +1021 -0
- package/dist/expressions/evaluate.d.ts +17 -0
- package/dist/expressions/evaluate.js +214 -0
- package/dist/expressions/expression-columns.d.ts +61 -0
- package/dist/expressions/expression-columns.js +72 -0
- package/dist/expressions/expression-types.d.ts +125 -0
- package/dist/expressions/expression-types.js +1 -0
- package/dist/expressions/parse.d.ts +25 -0
- package/dist/expressions/parse.js +537 -0
- package/dist/import.d.ts +232 -0
- package/dist/import.js +846 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +91 -0
- package/dist/install.d.ts +70 -0
- package/dist/install.js +61 -0
- package/dist/license-core.d.ts +37 -0
- package/dist/license-core.js +81 -0
- package/dist/license.d.ts +30 -0
- package/dist/license.js +139 -0
- package/dist/master-detail.d.ts +23 -0
- package/dist/master-detail.js +35 -0
- package/dist/node/studio.js +1 -1
- package/dist/pivot-chart.d.ts +28 -0
- package/dist/pivot-chart.js +71 -0
- package/dist/pivot-designer.d.ts +69 -0
- package/dist/pivot-designer.js +38 -0
- package/dist/pivot-enable.d.ts +6 -0
- package/{src/pivot-enable.ts → dist/pivot-enable.js} +13 -18
- package/dist/pivot.d.ts +111 -0
- package/dist/pivot.js +353 -0
- package/dist/print.d.ts +33 -0
- package/dist/print.js +61 -0
- package/dist/revoked.d.ts +1 -0
- package/{src/revoked.ts → dist/revoked.js} +5 -6
- package/dist/scheduler-assignments.d.ts +64 -0
- package/dist/scheduler-assignments.js +92 -0
- package/dist/scheduler-axis.d.ts +81 -0
- package/dist/scheduler-axis.js +180 -0
- package/{src/scheduler-booking.ts → dist/scheduler-booking.d.ts} +10 -43
- package/dist/scheduler-booking.js +50 -0
- package/dist/scheduler-config.d.ts +177 -0
- package/dist/scheduler-config.js +1 -0
- package/dist/scheduler-dependencies.d.ts +89 -0
- package/dist/scheduler-dependencies.js +179 -0
- package/dist/scheduler-freebusy.d.ts +19 -0
- package/{src/scheduler-freebusy.ts → dist/scheduler-freebusy.js} +9 -19
- package/{src/scheduler-heatmap.ts → dist/scheduler-heatmap.d.ts} +12 -35
- package/dist/scheduler-heatmap.js +41 -0
- package/dist/scheduler-resource-tree.d.ts +48 -0
- package/dist/scheduler-resource-tree.js +78 -0
- package/dist/scheduler-slots.d.ts +37 -0
- package/dist/scheduler-slots.js +80 -0
- package/dist/scheduler-summary.d.ts +41 -0
- package/dist/scheduler-summary.js +54 -0
- package/dist/scheduler.d.ts +7 -0
- package/{src/scheduler.ts → dist/scheduler.js} +13 -14
- package/dist/scheduling.d.ts +132 -0
- package/dist/scheduling.js +228 -0
- package/dist/schema-designer.d.ts +42 -0
- package/dist/schema-designer.js +117 -0
- package/dist/schema.d.ts +369 -0
- package/dist/schema.js +216 -0
- package/dist/smart-shim.d.ts +62 -0
- package/dist/smart-shim.js +34 -0
- package/dist/sources/aggregate.d.ts +43 -0
- package/dist/sources/aggregate.js +60 -0
- package/dist/sources/auth-supabase.d.ts +69 -0
- package/dist/sources/auth-supabase.js +39 -0
- package/dist/sources/dashboard.d.ts +65 -0
- package/dist/sources/dashboard.js +95 -0
- package/dist/sources/field-inference.d.ts +23 -0
- package/dist/sources/field-inference.js +52 -0
- package/dist/sources/filters.d.ts +35 -0
- package/dist/sources/filters.js +52 -0
- package/dist/sources/index.d.ts +18 -0
- package/dist/sources/index.js +18 -0
- package/dist/sources/introspect-supabase.d.ts +30 -0
- package/dist/sources/introspect-supabase.js +134 -0
- package/dist/sources/realtime-supabase.d.ts +37 -0
- package/dist/sources/realtime-supabase.js +52 -0
- package/dist/sources/relation-lookup.d.ts +50 -0
- package/dist/sources/relation-lookup.js +77 -0
- package/dist/sources/rest-adapters.d.ts +48 -0
- package/dist/sources/rest-adapters.js +85 -0
- package/dist/sources/rest.d.ts +38 -0
- package/dist/sources/rest.js +86 -0
- package/dist/sources/schema-from-columns.d.ts +37 -0
- package/dist/sources/schema-from-columns.js +48 -0
- package/dist/sources/supabase.d.ts +33 -0
- package/dist/sources/supabase.js +74 -0
- package/dist/sources/with-entity-rules.d.ts +25 -0
- package/dist/sources/with-entity-rules.js +47 -0
- package/dist/sources/with-relation-labels.d.ts +26 -0
- package/dist/sources/with-relation-labels.js +38 -0
- package/dist/staged-editing.d.ts +85 -0
- package/dist/staged-editing.js +0 -0
- package/dist/studio/bug-report.d.ts +61 -0
- package/dist/studio/bug-report.js +126 -0
- package/dist/studio/cli.d.ts +56 -0
- package/dist/studio/cli.js +70 -0
- package/dist/studio/copilot-core.d.ts +22 -0
- package/{src/studio/copilot-core.ts → dist/studio/copilot-core.js} +34 -38
- package/dist/studio/csv.d.ts +36 -0
- package/dist/studio/csv.js +173 -0
- package/dist/studio/db-connect-string.d.ts +45 -0
- package/dist/studio/db-connect-string.js +113 -0
- package/dist/studio/deploy-cli.d.ts +35 -0
- package/dist/studio/deploy-cli.js +81 -0
- package/dist/studio/emit-project.d.ts +77 -0
- package/dist/studio/emit-project.js +5389 -0
- package/dist/studio/emit-schema.d.ts +110 -0
- package/dist/studio/emit-schema.js +1128 -0
- package/dist/studio/index.d.ts +35 -0
- package/dist/studio/index.js +38 -0
- package/dist/studio/init-flow.d.ts +58 -0
- package/dist/studio/init-flow.js +451 -0
- package/dist/studio/introspect-db.d.ts +47 -0
- package/dist/studio/introspect-db.js +255 -0
- package/dist/studio/introspect-openapi.d.ts +19 -0
- package/dist/studio/introspect-openapi.js +244 -0
- package/dist/studio/introspect-prisma.d.ts +25 -0
- package/dist/studio/introspect-prisma.js +164 -0
- package/dist/studio/introspect.d.ts +35 -0
- package/dist/studio/introspect.js +306 -0
- package/dist/studio/project.d.ts +1327 -0
- package/dist/studio/project.js +1798 -0
- package/dist/studio/sample-data.d.ts +19 -0
- package/dist/studio/sample-data.js +207 -0
- package/dist/studio/samples/ats.d.ts +2 -0
- package/dist/studio/samples/ats.js +194 -0
- package/dist/studio/samples/clinic.d.ts +2 -0
- package/dist/studio/samples/clinic.js +171 -0
- package/dist/studio/samples/crm.d.ts +2 -0
- package/dist/studio/samples/crm.js +280 -0
- package/dist/studio/samples/datasets.d.ts +38 -0
- package/dist/studio/samples/datasets.js +296 -0
- package/dist/studio/samples/ecommerce.d.ts +2 -0
- package/dist/studio/samples/ecommerce.js +178 -0
- package/dist/studio/samples/events.d.ts +2 -0
- package/dist/studio/samples/events.js +192 -0
- package/dist/studio/samples/fleet.d.ts +2 -0
- package/dist/studio/samples/fleet.js +203 -0
- package/dist/studio/samples/gym.d.ts +2 -0
- package/dist/studio/samples/gym.js +205 -0
- package/dist/studio/samples/hr.d.ts +2 -0
- package/dist/studio/samples/hr.js +186 -0
- package/dist/studio/samples/index.d.ts +13 -0
- package/dist/studio/samples/index.js +44 -0
- package/dist/studio/samples/insurance.d.ts +2 -0
- package/dist/studio/samples/insurance.js +220 -0
- package/dist/studio/samples/inventory.d.ts +2 -0
- package/dist/studio/samples/inventory.js +204 -0
- package/dist/studio/samples/invoicing.d.ts +2 -0
- package/dist/studio/samples/invoicing.js +154 -0
- package/dist/studio/samples/library.d.ts +2 -0
- package/dist/studio/samples/library.js +171 -0
- package/dist/studio/samples/live-data.d.ts +5 -0
- package/dist/studio/samples/live-data.js +261 -0
- package/dist/studio/samples/projects.d.ts +2 -0
- package/dist/studio/samples/projects.js +203 -0
- package/dist/studio/samples/realestate.d.ts +2 -0
- package/dist/studio/samples/realestate.js +187 -0
- package/dist/studio/samples/restaurant.d.ts +2 -0
- package/dist/studio/samples/restaurant.js +180 -0
- package/dist/studio/samples/school.d.ts +2 -0
- package/dist/studio/samples/school.js +188 -0
- package/dist/studio/samples/shared.d.ts +142 -0
- package/dist/studio/samples/shared.js +164 -0
- package/dist/studio/samples/starter.d.ts +4 -0
- package/dist/studio/samples/starter.js +237 -0
- package/dist/studio/samples/subscriptions.d.ts +2 -0
- package/dist/studio/samples/subscriptions.js +175 -0
- package/dist/studio/samples/support.d.ts +2 -0
- package/dist/studio/samples/support.js +209 -0
- package/dist/studio/scaffold-app.d.ts +22 -0
- package/{src/studio/scaffold-app.ts → dist/studio/scaffold-app.js} +45 -63
- package/dist/studio/scaffold.d.ts +63 -0
- package/dist/studio/scaffold.js +346 -0
- package/dist/studio/screen-suites.d.ts +193 -0
- package/dist/studio/screen-suites.js +297 -0
- package/dist/studio/themes.d.ts +34 -0
- package/dist/studio/themes.js +41 -0
- package/dist/studio/ui-components.d.ts +89 -0
- package/dist/studio/ui-components.generated.d.ts +29 -0
- package/dist/studio/ui-components.generated.js +7139 -0
- package/dist/studio/ui-components.js +673 -0
- package/dist/studio/user-error.d.ts +23 -0
- package/{src/studio/user-error.ts → dist/studio/user-error.js} +10 -13
- package/dist/studio/verify.d.ts +34 -0
- package/dist/studio/verify.js +47 -0
- package/dist/sveltekit/in-memory.d.ts +14 -0
- package/dist/sveltekit/in-memory.js +113 -0
- package/dist/sveltekit/index.d.ts +6 -0
- package/dist/sveltekit/index.js +5 -0
- package/dist/sveltekit/query-plan.d.ts +44 -0
- package/dist/sveltekit/query-plan.js +76 -0
- package/dist/sveltekit/sql-source.d.ts +47 -0
- package/dist/sveltekit/sql-source.js +106 -0
- package/dist/sveltekit/sql.d.ts +48 -0
- package/dist/sveltekit/sql.js +73 -0
- package/dist/sveltekit/transport.d.ts +209 -0
- package/dist/sveltekit/transport.js +219 -0
- package/{src/sveltekit/types.ts → dist/sveltekit/types.d.ts} +8 -11
- package/dist/sveltekit/types.js +1 -0
- package/dist/upgrade-prompt.d.ts +16 -0
- package/dist/upgrade-prompt.js +141 -0
- package/dist/version.d.ts +13 -0
- package/{src/version.ts → dist/version.js} +1 -1
- package/dist/watermark.d.ts +2 -0
- package/dist/watermark.js +146 -0
- package/package.json +26 -24
- package/src/SvBoard.dom.test.ts +0 -67
- package/src/SvGridAlerts.dom.test.ts +0 -113
- package/src/SvGridEditPanel.dom.test.ts +0 -320
- package/src/SvRecordDetail.dom.test.ts +0 -137
- package/src/SvSchedule.dom.test.ts +0 -57
- package/src/ai-export-pdf.dom.test.ts +0 -77
- package/src/ai-export-xlsx.dom.test.ts +0 -90
- package/src/ai-export.dom.test.ts +0 -114
- package/src/alerts/alert-engine-attach.ts +0 -165
- package/src/alerts/alert-engine.test.ts +0 -135
- package/src/alerts/alert-engine.ts +0 -260
- package/src/alerts/alert-formats.test.ts +0 -87
- package/src/alerts/alert-formats.ts +0 -77
- package/src/alerts/alert-observer.test.ts +0 -189
- package/src/alerts/alert-observer.ts +0 -208
- package/src/alerts/alert-scheduler.ts +0 -96
- package/src/alerts/alert-storage.test.ts +0 -54
- package/src/alerts/alert-storage.ts +0 -116
- package/src/alerts/alert-store.svelte.ts +0 -80
- package/src/alerts/alert-types.ts +0 -94
- package/src/board.dom.test.ts +0 -941
- package/src/edit-panel.test.ts +0 -322
- package/src/edit-panel.ts +0 -379
- package/src/export-conditional.test.ts +0 -60
- package/src/export-conditional.ts +0 -94
- package/src/export-ooxml.test.ts +0 -152
- package/src/export-ooxml.ts +0 -489
- package/src/export-pdf.test.ts +0 -138
- package/src/export-pdf.ts +0 -245
- package/src/export-print.test.ts +0 -66
- package/src/export-print.ts +0 -132
- package/src/export-serialize.test.ts +0 -56
- package/src/export-xls.ts +0 -199
- package/src/export-xlsx-roundtrip.test.ts +0 -120
- package/src/export-xlsx.test.ts +0 -150
- package/src/export.test.ts +0 -349
- package/src/export.ts +0 -1464
- package/src/expressions/evaluate.test.ts +0 -111
- package/src/expressions/evaluate.ts +0 -237
- package/src/expressions/expression-columns.ts +0 -133
- package/src/expressions/expression-types.ts +0 -84
- package/src/expressions/parse.test.ts +0 -106
- package/src/expressions/parse.ts +0 -610
- package/src/import-automap.test.ts +0 -131
- package/src/import-hardening.test.ts +0 -158
- package/src/import.test.ts +0 -415
- package/src/import.ts +0 -1044
- package/src/index.ts +0 -569
- package/src/install.ts +0 -154
- package/src/license-core.test.ts +0 -23
- package/src/license-core.ts +0 -107
- package/src/license-expiry.test.ts +0 -127
- package/src/license.ts +0 -137
- package/src/master-detail.test.ts +0 -61
- package/src/master-detail.ts +0 -42
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -178
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js +0 -3875
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-ZrPsKxob.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js +0 -21
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-ACqvWGE2.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js +0 -1938
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-D3w5jt92.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js +0 -205
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-CC2V3H0y.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js +0 -18
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-BXP37tAa.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js +0 -264
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-DwubnU5b.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js +0 -697
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-hD7f6PUz.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -134
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -55
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -2
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -46843
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -237
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -2
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -4
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -7
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -4
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -5
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -5
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -5
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -6
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -83
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -559
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -24
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -122
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -2
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -89
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -241
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js +0 -4938
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DBx1SCN6.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js +0 -495
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-gjfpSTFS.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js +0 -190
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-DKoOKg8S.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js +0 -8
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-C0MiR7eR.js.map +0 -1
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js +0 -138
- package/src/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-B6Y7P0Q-.js.map +0 -1
- package/src/pivot-chart.test.ts +0 -86
- package/src/pivot-chart.ts +0 -112
- package/src/pivot-designer.ts +0 -101
- package/src/pivot.test.ts +0 -335
- package/src/pivot.ts +0 -578
- package/src/print.ts +0 -107
- package/src/scheduler-assignments.test.ts +0 -97
- package/src/scheduler-assignments.ts +0 -134
- package/src/scheduler-axis.test.ts +0 -108
- package/src/scheduler-axis.ts +0 -238
- package/src/scheduler-booking.test.ts +0 -57
- package/src/scheduler-config.ts +0 -179
- package/src/scheduler-dependencies.test.ts +0 -155
- package/src/scheduler-dependencies.ts +0 -223
- package/src/scheduler-freebusy.test.ts +0 -41
- package/src/scheduler-heatmap.test.ts +0 -39
- package/src/scheduler-resource-tree.test.ts +0 -84
- package/src/scheduler-resource-tree.ts +0 -107
- package/src/scheduler-slots.test.ts +0 -53
- package/src/scheduler-slots.ts +0 -94
- package/src/scheduler-summary.test.ts +0 -47
- package/src/scheduler-summary.ts +0 -81
- package/src/scheduling.test.ts +0 -194
- package/src/scheduling.ts +0 -293
- package/src/schema-designer.test.ts +0 -121
- package/src/schema-designer.ts +0 -142
- package/src/schema.test.ts +0 -268
- package/src/schema.ts +0 -562
- package/src/smart-shim.ts +0 -107
- package/src/sources/aggregate.test.ts +0 -79
- package/src/sources/aggregate.ts +0 -102
- package/src/sources/auth-supabase.test.ts +0 -80
- package/src/sources/auth-supabase.ts +0 -87
- package/src/sources/dashboard.kpi.test.ts +0 -50
- package/src/sources/dashboard.test.ts +0 -61
- package/src/sources/dashboard.ts +0 -136
- package/src/sources/field-inference.test.ts +0 -60
- package/src/sources/field-inference.ts +0 -63
- package/src/sources/filters.test.ts +0 -58
- package/src/sources/filters.ts +0 -70
- package/src/sources/index.ts +0 -67
- package/src/sources/introspect-supabase.test.ts +0 -112
- package/src/sources/introspect-supabase.ts +0 -139
- package/src/sources/realtime-supabase.test.ts +0 -93
- package/src/sources/realtime-supabase.ts +0 -99
- package/src/sources/relation-lookup.test.ts +0 -99
- package/src/sources/relation-lookup.ts +0 -128
- package/src/sources/rest-adapters.test.ts +0 -95
- package/src/sources/rest-adapters.ts +0 -120
- package/src/sources/rest.test.ts +0 -104
- package/src/sources/rest.ts +0 -129
- package/src/sources/schema-from-columns.test.ts +0 -106
- package/src/sources/schema-from-columns.ts +0 -88
- package/src/sources/supabase.test.ts +0 -110
- package/src/sources/supabase.ts +0 -99
- package/src/sources/with-entity-rules.test.ts +0 -104
- package/src/sources/with-entity-rules.ts +0 -78
- package/src/sources/with-relation-labels.test.ts +0 -75
- package/src/sources/with-relation-labels.ts +0 -73
- package/src/staged-editing.ts +0 -0
- package/src/studio/bug-report.test.ts +0 -101
- package/src/studio/bug-report.ts +0 -165
- package/src/studio/cli.test.ts +0 -187
- package/src/studio/cli.ts +0 -117
- package/src/studio/copilot-core.test.ts +0 -45
- package/src/studio/csv.test.ts +0 -90
- package/src/studio/csv.ts +0 -165
- package/src/studio/db-connect-string.test.ts +0 -94
- package/src/studio/db-connect-string.ts +0 -128
- package/src/studio/deploy-cli.test.ts +0 -56
- package/src/studio/deploy-cli.ts +0 -100
- package/src/studio/emit-project.test.ts +0 -3324
- package/src/studio/emit-project.ts +0 -5377
- package/src/studio/emit-schema.test.ts +0 -111
- package/src/studio/emit-schema.ts +0 -1181
- package/src/studio/index.ts +0 -380
- package/src/studio/init-flow.test.ts +0 -514
- package/src/studio/init-flow.ts +0 -556
- package/src/studio/introspect-db.test.ts +0 -186
- package/src/studio/introspect-db.ts +0 -312
- package/src/studio/introspect-openapi.test.ts +0 -84
- package/src/studio/introspect-openapi.ts +0 -252
- package/src/studio/introspect-prisma.test.ts +0 -99
- package/src/studio/introspect-prisma.ts +0 -175
- package/src/studio/introspect.test.ts +0 -172
- package/src/studio/introspect.ts +0 -310
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -1
- package/src/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -3
- package/src/studio/pipeline.test.ts +0 -42
- package/src/studio/project-robust.test.ts +0 -157
- package/src/studio/project.test.ts +0 -929
- package/src/studio/project.ts +0 -2394
- package/src/studio/sample-data.test.ts +0 -58
- package/src/studio/sample-data.ts +0 -203
- package/src/studio/samples/ats.ts +0 -202
- package/src/studio/samples/clinic.ts +0 -179
- package/src/studio/samples/crm.ts +0 -291
- package/src/studio/samples/datasets.test.ts +0 -84
- package/src/studio/samples/datasets.ts +0 -340
- package/src/studio/samples/ecommerce.ts +0 -187
- package/src/studio/samples/events.ts +0 -201
- package/src/studio/samples/fleet.ts +0 -213
- package/src/studio/samples/gym.ts +0 -215
- package/src/studio/samples/hr.ts +0 -195
- package/src/studio/samples/index.ts +0 -55
- package/src/studio/samples/insurance.ts +0 -229
- package/src/studio/samples/inventory.ts +0 -213
- package/src/studio/samples/invoicing.ts +0 -162
- package/src/studio/samples/library.ts +0 -180
- package/src/studio/samples/live-data.test.ts +0 -99
- package/src/studio/samples/live-data.ts +0 -306
- package/src/studio/samples/projects.ts +0 -212
- package/src/studio/samples/realestate.ts +0 -196
- package/src/studio/samples/restaurant.ts +0 -189
- package/src/studio/samples/samples.test.ts +0 -304
- package/src/studio/samples/school.ts +0 -197
- package/src/studio/samples/seed-floor.test.ts +0 -25
- package/src/studio/samples/shared.ts +0 -237
- package/src/studio/samples/starter.ts +0 -251
- package/src/studio/samples/subscriptions.ts +0 -183
- package/src/studio/samples/support.ts +0 -216
- package/src/studio/scaffold-app.test.ts +0 -91
- package/src/studio/scaffold.test.ts +0 -192
- package/src/studio/scaffold.ts +0 -390
- package/src/studio/screen-suites.test.ts +0 -269
- package/src/studio/screen-suites.ts +0 -448
- package/src/studio/themes.ts +0 -62
- package/src/studio/ui-components-surface.test.ts +0 -185
- package/src/studio/ui-components.generated.ts +0 -7154
- package/src/studio/ui-components.ts +0 -742
- package/src/studio/verify.test.ts +0 -47
- package/src/studio/verify.ts +0 -79
- package/src/sveltekit/in-memory.test.ts +0 -104
- package/src/sveltekit/in-memory.ts +0 -129
- package/src/sveltekit/index.ts +0 -24
- package/src/sveltekit/query-plan.test.ts +0 -109
- package/src/sveltekit/query-plan.ts +0 -125
- package/src/sveltekit/sql-source.test.ts +0 -198
- package/src/sveltekit/sql-source.ts +0 -171
- package/src/sveltekit/sql.test.ts +0 -80
- package/src/sveltekit/sql.ts +0 -131
- package/src/sveltekit/transport-scope.test.ts +0 -125
- package/src/sveltekit/transport.test.ts +0 -201
- package/src/sveltekit/transport.ts +0 -373
- package/src/upgrade-prompt.test.ts +0 -71
- package/src/upgrade-prompt.ts +0 -162
- package/src/version.test.ts +0 -17
- package/src/watermark.test.ts +0 -97
- package/src/watermark.ts +0 -156
- /package/{src → dist}/SvAlertRuleEditor.svelte +0 -0
- /package/{src → dist}/SvAlertsManager.svelte +0 -0
- /package/{src → dist}/SvAlertsPanel.svelte +0 -0
- /package/{src → dist}/SvAuthGate.svelte +0 -0
- /package/{src → dist}/SvBoard.svelte +0 -0
- /package/{src → dist}/SvExportMenu.svelte +0 -0
- /package/{src → dist}/SvExpressionEditor.svelte +0 -0
- /package/{src → dist}/SvFileInput.svelte +0 -0
- /package/{src → dist}/SvGridAlerts.svelte +0 -0
- /package/{src → dist}/SvGridBoard.svelte +0 -0
- /package/{src → dist}/SvGridEditPanel.svelte +0 -0
- /package/{src → dist}/SvGridMasterDetail.svelte +0 -0
- /package/{src → dist}/SvGridScheduler.svelte +0 -0
- /package/{src → dist}/SvImportDialog.svelte +0 -0
- /package/{src → dist}/SvLookupInput.svelte +0 -0
- /package/{src → dist}/SvPivotDesigner.svelte +0 -0
- /package/{src → dist}/SvRecordDetail.svelte +0 -0
- /package/{src → dist}/SvSchedule.svelte +0 -0
- /package/{src → dist}/SvSchemaChart.svelte +0 -0
- /package/{src → dist}/SvSchemaDashboard.svelte +0 -0
- /package/{src → dist}/pdfmake-shims.d.ts +0 -0
- /package/{src → dist}/smart.export.d.ts +0 -0
- /package/{src → dist}/smart.export.js +0 -0
- /package/{src → dist}/studio/HANDLERS-DESIGN.md +0 -0
- /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/_svelte_metadata.json +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/_metadata.json +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/attachments-BOv1rBKp.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/constants-B9vgIdCd.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/dev-T1qbW_qD.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/events-Bo11SfVK.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/flags-X7D4vfrZ.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/hydration-oyUje5i1.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/legacy-client-DeSQgSFm.js.map +0 -0
- /package/{src → dist/studio}/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/package.json +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_animate.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_attachments.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_compiler.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_easing.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_events.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_client.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_disclose-version.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_async.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_legacy.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_flags_tracing.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_internal_server.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_legacy.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_motion.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_reactivity_window.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_server.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_store.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/svelte_transition.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-BbWyXNk1.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/utils-DI_fC7vt.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/validate-Dyr3lQv9.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/version-_9FHH-LF.js.map +0 -0
- /package/{src → dist}/studio/node_modules/.vite/vitest/be65d27ae088a0e03fd8e1331d90b01649464cb6/deps___vitest__/warnings-CUbSPnyP.js +0 -0
- /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
|
+
}>;
|