@adminiumjs/adminium 0.1.0-rc.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.
- package/LICENSE +661 -0
- package/README.md +94 -0
- package/dashboard/assets/DeltaPill-dxlsGh-1.js +2 -0
- package/dashboard/assets/DeltaPill-dxlsGh-1.js.map +1 -0
- package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js +2 -0
- package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js.map +1 -0
- package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js +2 -0
- package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js.map +1 -0
- package/dashboard/assets/RemapEditor-z3vRY12e.js +2 -0
- package/dashboard/assets/RemapEditor-z3vRY12e.js.map +1 -0
- package/dashboard/assets/ReviewScreen-COkLQ3T7.js +2 -0
- package/dashboard/assets/ReviewScreen-COkLQ3T7.js.map +1 -0
- package/dashboard/assets/Sparkline-Cvwo368J.js +2 -0
- package/dashboard/assets/Sparkline-Cvwo368J.js.map +1 -0
- package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js +2 -0
- package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js.map +1 -0
- package/dashboard/assets/arc-CPxb74pf.js +2 -0
- package/dashboard/assets/arc-CPxb74pf.js.map +1 -0
- package/dashboard/assets/bars-ranking-components-9Asn_0gR.js +2 -0
- package/dashboard/assets/bars-ranking-components-9Asn_0gR.js.map +1 -0
- package/dashboard/assets/blocks-track-components-BST-NjK2.js +2 -0
- package/dashboard/assets/blocks-track-components-BST-NjK2.js.map +1 -0
- package/dashboard/assets/calendar-track-components-RgNtGtZR.js +2 -0
- package/dashboard/assets/calendar-track-components-RgNtGtZR.js.map +1 -0
- package/dashboard/assets/chrome-track-components-ClNsentC.js +2 -0
- package/dashboard/assets/chrome-track-components-ClNsentC.js.map +1 -0
- package/dashboard/assets/common-BY1j__bD.js +2 -0
- package/dashboard/assets/common-BY1j__bD.js.map +1 -0
- package/dashboard/assets/common-BdlXKpcB.js +2 -0
- package/dashboard/assets/common-BdlXKpcB.js.map +1 -0
- package/dashboard/assets/common-BqqhgMgB.js +2 -0
- package/dashboard/assets/common-BqqhgMgB.js.map +1 -0
- package/dashboard/assets/common-BribWmIo.js +2 -0
- package/dashboard/assets/common-BribWmIo.js.map +1 -0
- package/dashboard/assets/common-Cmf0_lKV.js +2 -0
- package/dashboard/assets/common-Cmf0_lKV.js.map +1 -0
- package/dashboard/assets/common-i0r48qY9.js +2 -0
- package/dashboard/assets/common-i0r48qY9.js.map +1 -0
- package/dashboard/assets/common-x8cfkwpc.js +2 -0
- package/dashboard/assets/common-x8cfkwpc.js.map +1 -0
- package/dashboard/assets/communication-track-components-CNLZXOH_.js +2 -0
- package/dashboard/assets/communication-track-components-CNLZXOH_.js.map +1 -0
- package/dashboard/assets/components-Bp5cFm2d.js +2 -0
- package/dashboard/assets/components-Bp5cFm2d.js.map +1 -0
- package/dashboard/assets/components-C4-O3_gD.js +2 -0
- package/dashboard/assets/components-C4-O3_gD.js.map +1 -0
- package/dashboard/assets/domain-ops-track-components-BPa41AU7.js +2 -0
- package/dashboard/assets/domain-ops-track-components-BPa41AU7.js.map +1 -0
- package/dashboard/assets/domain-track-components-CQ1i1X1t.js +2 -0
- package/dashboard/assets/domain-track-components-CQ1i1X1t.js.map +1 -0
- package/dashboard/assets/errors-BHUWiAQ3.js +2 -0
- package/dashboard/assets/errors-BHUWiAQ3.js.map +1 -0
- package/dashboard/assets/errors-BbyKweDG.js +2 -0
- package/dashboard/assets/errors-BbyKweDG.js.map +1 -0
- package/dashboard/assets/errors-CMQ6JC31.js +2 -0
- package/dashboard/assets/errors-CMQ6JC31.js.map +1 -0
- package/dashboard/assets/errors-D3nVgTmf.js +2 -0
- package/dashboard/assets/errors-D3nVgTmf.js.map +1 -0
- package/dashboard/assets/errors-IqJSoANC.js +2 -0
- package/dashboard/assets/errors-IqJSoANC.js.map +1 -0
- package/dashboard/assets/errors-gmIkO9F6.js +2 -0
- package/dashboard/assets/errors-gmIkO9F6.js.map +1 -0
- package/dashboard/assets/errors-vFk058Vh.js +2 -0
- package/dashboard/assets/errors-vFk058Vh.js.map +1 -0
- package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js +2 -0
- package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js.map +1 -0
- package/dashboard/assets/format-Lx4cQ8k-.js +2 -0
- package/dashboard/assets/format-Lx4cQ8k-.js.map +1 -0
- package/dashboard/assets/forms-track-components-Bc2Hoxdh.js +2 -0
- package/dashboard/assets/forms-track-components-Bc2Hoxdh.js.map +1 -0
- package/dashboard/assets/generated-1EfWhCMA.js +2 -0
- package/dashboard/assets/generated-1EfWhCMA.js.map +1 -0
- package/dashboard/assets/generated-BB3ZMxvx.js +2 -0
- package/dashboard/assets/generated-BB3ZMxvx.js.map +1 -0
- package/dashboard/assets/generated-C0JVNBRX.js +2 -0
- package/dashboard/assets/generated-C0JVNBRX.js.map +1 -0
- package/dashboard/assets/generated-C1W48_-3.js +2 -0
- package/dashboard/assets/generated-C1W48_-3.js.map +1 -0
- package/dashboard/assets/generated-CluiB_xY.js +2 -0
- package/dashboard/assets/generated-CluiB_xY.js.map +1 -0
- package/dashboard/assets/generated-DDGtlf-4.js +2 -0
- package/dashboard/assets/generated-DDGtlf-4.js.map +1 -0
- package/dashboard/assets/generated-DPCHvNto.js +2 -0
- package/dashboard/assets/generated-DPCHvNto.js.map +1 -0
- package/dashboard/assets/geo-track-components-Ct4-MSRw.js +3 -0
- package/dashboard/assets/geo-track-components-Ct4-MSRw.js.map +1 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-400-normal-CyU-ddYS.woff2 +0 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-500-normal-C4MQITzh.woff2 +0 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-600-normal-0pRdybE_.woff2 +0 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-700-normal-DrtBj6UE.woff2 +0 -0
- package/dashboard/assets/index-DPi4cduu.css +1 -0
- package/dashboard/assets/index-PB1II0WV.js +137 -0
- package/dashboard/assets/index-PB1II0WV.js.map +1 -0
- package/dashboard/assets/jetbrains-mono-latin-ext-wght-italic-BrDczivE.woff2 +0 -0
- package/dashboard/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/dashboard/assets/jetbrains-mono-latin-wght-italic-B2M6KQje.woff2 +0 -0
- package/dashboard/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/dashboard/assets/leaflet-CIGW-MKW.css +1 -0
- package/dashboard/assets/leaflet-src-D12shr04.js +2 -0
- package/dashboard/assets/leaflet-src-D12shr04.js.map +1 -0
- package/dashboard/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
- package/dashboard/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
- package/dashboard/assets/media-track-components-CpeII-tT.js +2 -0
- package/dashboard/assets/media-track-components-CpeII-tT.js.map +1 -0
- package/dashboard/assets/scales-e0tkfEy1.js +2 -0
- package/dashboard/assets/scales-e0tkfEy1.js.map +1 -0
- package/dashboard/assets/sparkline-2JUGDrMW.js +2 -0
- package/dashboard/assets/sparkline-2JUGDrMW.js.map +1 -0
- package/dashboard/assets/stats-BNgXz5BD.js +2 -0
- package/dashboard/assets/stats-BNgXz5BD.js.map +1 -0
- package/dashboard/assets/studio-B7hMOwAF.js +2 -0
- package/dashboard/assets/studio-B7hMOwAF.js.map +1 -0
- package/dashboard/assets/studio-BN_9xHY3.js +2 -0
- package/dashboard/assets/studio-BN_9xHY3.js.map +1 -0
- package/dashboard/assets/studio-Cn2MObe8.js +2 -0
- package/dashboard/assets/studio-Cn2MObe8.js.map +1 -0
- package/dashboard/assets/studio-DZEZCCkw.js +2 -0
- package/dashboard/assets/studio-DZEZCCkw.js.map +1 -0
- package/dashboard/assets/studio-DzatTvLl.js +2 -0
- package/dashboard/assets/studio-DzatTvLl.js.map +1 -0
- package/dashboard/assets/studio-cBlD8x90.js +2 -0
- package/dashboard/assets/studio-cBlD8x90.js.map +1 -0
- package/dashboard/assets/studio-cglZPbJK.js +2 -0
- package/dashboard/assets/studio-cglZPbJK.js.map +1 -0
- package/dashboard/assets/system-track-components-GTYYpnfB.js +2 -0
- package/dashboard/assets/system-track-components-GTYYpnfB.js.map +1 -0
- package/dashboard/assets/tables-tail-components-DiA5GeHB.js +2 -0
- package/dashboard/assets/tables-tail-components-DiA5GeHB.js.map +1 -0
- package/dashboard/assets/tables-track-f-components-CVNPd7rq.js +2 -0
- package/dashboard/assets/tables-track-f-components-CVNPd7rq.js.map +1 -0
- package/dashboard/assets/time-flow-components-nKsaryry.js +2 -0
- package/dashboard/assets/time-flow-components-nKsaryry.js.map +1 -0
- package/dashboard/assets/ui-B-kZetor.js +2 -0
- package/dashboard/assets/ui-B-kZetor.js.map +1 -0
- package/dashboard/assets/ui-BEStJ5Pw.js +2 -0
- package/dashboard/assets/ui-BEStJ5Pw.js.map +1 -0
- package/dashboard/assets/ui-BS5_eDN4.js +2 -0
- package/dashboard/assets/ui-BS5_eDN4.js.map +1 -0
- package/dashboard/assets/ui-BZ0EyxRH.js +2 -0
- package/dashboard/assets/ui-BZ0EyxRH.js.map +1 -0
- package/dashboard/assets/ui-BloJDdt6.js +2 -0
- package/dashboard/assets/ui-BloJDdt6.js.map +1 -0
- package/dashboard/assets/ui-CpdrplJH.js +2 -0
- package/dashboard/assets/ui-CpdrplJH.js.map +1 -0
- package/dashboard/assets/ui-YJfT644k.js +2 -0
- package/dashboard/assets/ui-YJfT644k.js.map +1 -0
- package/dashboard/assets/widgets-uDqZWw4A.js +2 -0
- package/dashboard/assets/widgets-uDqZWw4A.js.map +1 -0
- package/dashboard/index.html +41 -0
- package/dist/app.d.ts +48 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +250 -0
- package/dist/app.js.map +1 -0
- package/dist/auth/audit.d.ts +22 -0
- package/dist/auth/audit.d.ts.map +1 -0
- package/dist/auth/audit.js +17 -0
- package/dist/auth/audit.js.map +1 -0
- package/dist/auth/desktop-session.d.ts +53 -0
- package/dist/auth/desktop-session.d.ts.map +1 -0
- package/dist/auth/desktop-session.js +111 -0
- package/dist/auth/desktop-session.js.map +1 -0
- package/dist/auth/passwords.d.ts +17 -0
- package/dist/auth/passwords.d.ts.map +1 -0
- package/dist/auth/passwords.js +40 -0
- package/dist/auth/passwords.js.map +1 -0
- package/dist/auth/sessions.d.ts +77 -0
- package/dist/auth/sessions.d.ts.map +1 -0
- package/dist/auth/sessions.js +137 -0
- package/dist/auth/sessions.js.map +1 -0
- package/dist/auth/totp.d.ts +30 -0
- package/dist/auth/totp.d.ts.map +1 -0
- package/dist/auth/totp.js +97 -0
- package/dist/auth/totp.js.map +1 -0
- package/dist/backup/backup-service.d.ts +157 -0
- package/dist/backup/backup-service.d.ts.map +1 -0
- package/dist/backup/backup-service.js +354 -0
- package/dist/backup/backup-service.js.map +1 -0
- package/dist/backup/format.d.ts +300 -0
- package/dist/backup/format.d.ts.map +1 -0
- package/dist/backup/format.js +304 -0
- package/dist/backup/format.js.map +1 -0
- package/dist/backup/notify.d.ts +55 -0
- package/dist/backup/notify.d.ts.map +1 -0
- package/dist/backup/notify.js +60 -0
- package/dist/backup/notify.js.map +1 -0
- package/dist/backup/snapshot.d.ts +78 -0
- package/dist/backup/snapshot.d.ts.map +1 -0
- package/dist/backup/snapshot.js +142 -0
- package/dist/backup/snapshot.js.map +1 -0
- package/dist/capabilities/catalog.d.ts +33 -0
- package/dist/capabilities/catalog.d.ts.map +1 -0
- package/dist/capabilities/catalog.js +32 -0
- package/dist/capabilities/catalog.js.map +1 -0
- package/dist/capabilities/grants.d.ts +44 -0
- package/dist/capabilities/grants.d.ts.map +1 -0
- package/dist/capabilities/grants.js +65 -0
- package/dist/capabilities/grants.js.map +1 -0
- package/dist/cli/allowlist.d.ts +46 -0
- package/dist/cli/allowlist.d.ts.map +1 -0
- package/dist/cli/allowlist.js +99 -0
- package/dist/cli/allowlist.js.map +1 -0
- package/dist/cli/args.d.ts +63 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +92 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/command.d.ts +32 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +64 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands/apply-llm-response.d.ts +32 -0
- package/dist/cli/commands/apply-llm-response.d.ts.map +1 -0
- package/dist/cli/commands/apply-llm-response.js +209 -0
- package/dist/cli/commands/apply-llm-response.js.map +1 -0
- package/dist/cli/commands/export-zip.d.ts +17 -0
- package/dist/cli/commands/export-zip.d.ts.map +1 -0
- package/dist/cli/commands/export-zip.js +111 -0
- package/dist/cli/commands/export-zip.js.map +1 -0
- package/dist/cli/commands/generate-prompt.d.ts +29 -0
- package/dist/cli/commands/generate-prompt.d.ts.map +1 -0
- package/dist/cli/commands/generate-prompt.js +154 -0
- package/dist/cli/commands/generate-prompt.js.map +1 -0
- package/dist/cli/commands/import-zip.d.ts +13 -0
- package/dist/cli/commands/import-zip.d.ts.map +1 -0
- package/dist/cli/commands/import-zip.js +95 -0
- package/dist/cli/commands/import-zip.js.map +1 -0
- package/dist/cli/commands/init.d.ts +47 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +372 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/introspect.d.ts +11 -0
- package/dist/cli/commands/introspect.d.ts.map +1 -0
- package/dist/cli/commands/introspect.js +100 -0
- package/dist/cli/commands/introspect.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +11 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +80 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/start.d.ts +22 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +101 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/exit.d.ts +37 -0
- package/dist/cli/exit.d.ts.map +1 -0
- package/dist/cli/exit.js +39 -0
- package/dist/cli/exit.js.map +1 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +17 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/io.d.ts +49 -0
- package/dist/cli/io.d.ts.map +1 -0
- package/dist/cli/io.js +77 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/run.d.ts +35 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +139 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/runtime.d.ts +116 -0
- package/dist/cli/runtime.d.ts.map +1 -0
- package/dist/cli/runtime.js +181 -0
- package/dist/cli/runtime.js.map +1 -0
- package/dist/cli/static-root.d.ts +42 -0
- package/dist/cli/static-root.d.ts.map +1 -0
- package/dist/cli/static-root.js +58 -0
- package/dist/cli/static-root.js.map +1 -0
- package/dist/compose.d.ts +135 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +383 -0
- package/dist/compose.js.map +1 -0
- package/dist/config/bootstrap.d.ts +33 -0
- package/dist/config/bootstrap.d.ts.map +1 -0
- package/dist/config/bootstrap.js +81 -0
- package/dist/config/bootstrap.js.map +1 -0
- package/dist/config/env.d.ts +95 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +236 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/secrets.d.ts +24 -0
- package/dist/config/secrets.d.ts.map +1 -0
- package/dist/config/secrets.js +74 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/connections/crypto.d.ts +9 -0
- package/dist/connections/crypto.d.ts.map +1 -0
- package/dist/connections/crypto.js +16 -0
- package/dist/connections/crypto.js.map +1 -0
- package/dist/connections/dsn.d.ts +42 -0
- package/dist/connections/dsn.d.ts.map +1 -0
- package/dist/connections/dsn.js +131 -0
- package/dist/connections/dsn.js.map +1 -0
- package/dist/connections/effective-schema.d.ts +65 -0
- package/dist/connections/effective-schema.d.ts.map +1 -0
- package/dist/connections/effective-schema.js +249 -0
- package/dist/connections/effective-schema.js.map +1 -0
- package/dist/connections/introspect.d.ts +52 -0
- package/dist/connections/introspect.d.ts.map +1 -0
- package/dist/connections/introspect.js +111 -0
- package/dist/connections/introspect.js.map +1 -0
- package/dist/connections/manager.d.ts +97 -0
- package/dist/connections/manager.d.ts.map +1 -0
- package/dist/connections/manager.js +224 -0
- package/dist/connections/manager.js.map +1 -0
- package/dist/connections/register-adapters.d.ts +42 -0
- package/dist/connections/register-adapters.d.ts.map +1 -0
- package/dist/connections/register-adapters.js +92 -0
- package/dist/connections/register-adapters.js.map +1 -0
- package/dist/crud/filters.d.ts +57 -0
- package/dist/crud/filters.d.ts.map +1 -0
- package/dist/crud/filters.js +177 -0
- package/dist/crud/filters.js.map +1 -0
- package/dist/crud/identifiers.d.ts +58 -0
- package/dist/crud/identifiers.d.ts.map +1 -0
- package/dist/crud/identifiers.js +99 -0
- package/dist/crud/identifiers.js.map +1 -0
- package/dist/crud/list.d.ts +51 -0
- package/dist/crud/list.d.ts.map +1 -0
- package/dist/crud/list.js +126 -0
- package/dist/crud/list.js.map +1 -0
- package/dist/crud/mask.d.ts +23 -0
- package/dist/crud/mask.d.ts.map +1 -0
- package/dist/crud/mask.js +41 -0
- package/dist/crud/mask.js.map +1 -0
- package/dist/crud/records.d.ts +33 -0
- package/dist/crud/records.d.ts.map +1 -0
- package/dist/crud/records.js +126 -0
- package/dist/crud/records.js.map +1 -0
- package/dist/crud/undo.d.ts +55 -0
- package/dist/crud/undo.d.ts.map +1 -0
- package/dist/crud/undo.js +74 -0
- package/dist/crud/undo.js.map +1 -0
- package/dist/data-io/coerce.d.ts +28 -0
- package/dist/data-io/coerce.d.ts.map +1 -0
- package/dist/data-io/coerce.js +123 -0
- package/dist/data-io/coerce.js.map +1 -0
- package/dist/data-io/csv.d.ts +38 -0
- package/dist/data-io/csv.d.ts.map +1 -0
- package/dist/data-io/csv.js +138 -0
- package/dist/data-io/csv.js.map +1 -0
- package/dist/data-io/snapshot-view.d.ts +10 -0
- package/dist/data-io/snapshot-view.d.ts.map +1 -0
- package/dist/data-io/snapshot-view.js +19 -0
- package/dist/data-io/snapshot-view.js.map +1 -0
- package/dist/desktop/demo-seed.d.ts +23 -0
- package/dist/desktop/demo-seed.d.ts.map +1 -0
- package/dist/desktop/demo-seed.js +28 -0
- package/dist/desktop/demo-seed.js.map +1 -0
- package/dist/desktop/lan-share.d.ts +94 -0
- package/dist/desktop/lan-share.d.ts.map +1 -0
- package/dist/desktop/lan-share.js +150 -0
- package/dist/desktop/lan-share.js.map +1 -0
- package/dist/errors.d.ts +72 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +82 -0
- package/dist/errors.js.map +1 -0
- package/dist/export/bundle.d.ts +235 -0
- package/dist/export/bundle.d.ts.map +1 -0
- package/dist/export/bundle.js +172 -0
- package/dist/export/bundle.js.map +1 -0
- package/dist/export/import-service.d.ts +99 -0
- package/dist/export/import-service.d.ts.map +1 -0
- package/dist/export/import-service.js +515 -0
- package/dist/export/import-service.js.map +1 -0
- package/dist/export/readme.d.ts +25 -0
- package/dist/export/readme.d.ts.map +1 -0
- package/dist/export/readme.js +154 -0
- package/dist/export/readme.js.map +1 -0
- package/dist/export/redaction.d.ts +118 -0
- package/dist/export/redaction.d.ts.map +1 -0
- package/dist/export/redaction.js +233 -0
- package/dist/export/redaction.js.map +1 -0
- package/dist/export/zip-service.d.ts +66 -0
- package/dist/export/zip-service.d.ts.map +1 -0
- package/dist/export/zip-service.js +306 -0
- package/dist/export/zip-service.js.map +1 -0
- package/dist/files/storage.d.ts +50 -0
- package/dist/files/storage.d.ts.map +1 -0
- package/dist/files/storage.js +100 -0
- package/dist/files/storage.js.map +1 -0
- package/dist/generate/materialize-llm.d.ts +45 -0
- package/dist/generate/materialize-llm.d.ts.map +1 -0
- package/dist/generate/materialize-llm.js +167 -0
- package/dist/generate/materialize-llm.js.map +1 -0
- package/dist/generate/run.d.ts +48 -0
- package/dist/generate/run.d.ts.map +1 -0
- package/dist/generate/run.js +123 -0
- package/dist/generate/run.js.map +1 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +116 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs/export-run.d.ts +38 -0
- package/dist/jobs/export-run.d.ts.map +1 -0
- package/dist/jobs/export-run.js +172 -0
- package/dist/jobs/export-run.js.map +1 -0
- package/dist/jobs/import-run.d.ts +43 -0
- package/dist/jobs/import-run.d.ts.map +1 -0
- package/dist/jobs/import-run.js +290 -0
- package/dist/jobs/import-run.js.map +1 -0
- package/dist/jobs/llm-run.d.ts +73 -0
- package/dist/jobs/llm-run.d.ts.map +1 -0
- package/dist/jobs/llm-run.js +225 -0
- package/dist/jobs/llm-run.js.map +1 -0
- package/dist/jobs/register.d.ts +90 -0
- package/dist/jobs/register.d.ts.map +1 -0
- package/dist/jobs/register.js +121 -0
- package/dist/jobs/register.js.map +1 -0
- package/dist/jobs/registry.d.ts +74 -0
- package/dist/jobs/registry.d.ts.map +1 -0
- package/dist/jobs/registry.js +78 -0
- package/dist/jobs/registry.js.map +1 -0
- package/dist/jobs/report-run.d.ts +64 -0
- package/dist/jobs/report-run.d.ts.map +1 -0
- package/dist/jobs/report-run.js +221 -0
- package/dist/jobs/report-run.js.map +1 -0
- package/dist/jobs/scheduler.d.ts +72 -0
- package/dist/jobs/scheduler.d.ts.map +1 -0
- package/dist/jobs/scheduler.js +121 -0
- package/dist/jobs/scheduler.js.map +1 -0
- package/dist/jobs/worker.d.ts +110 -0
- package/dist/jobs/worker.d.ts.map +1 -0
- package/dist/jobs/worker.js +282 -0
- package/dist/jobs/worker.js.map +1 -0
- package/dist/llm/apply-service.d.ts +150 -0
- package/dist/llm/apply-service.d.ts.map +1 -0
- package/dist/llm/apply-service.js +463 -0
- package/dist/llm/apply-service.js.map +1 -0
- package/dist/llm/apply-undo-store.d.ts +50 -0
- package/dist/llm/apply-undo-store.d.ts.map +1 -0
- package/dist/llm/apply-undo-store.js +60 -0
- package/dist/llm/apply-undo-store.js.map +1 -0
- package/dist/llm/direct-runner.d.ts +146 -0
- package/dist/llm/direct-runner.d.ts.map +1 -0
- package/dist/llm/direct-runner.js +204 -0
- package/dist/llm/direct-runner.js.map +1 -0
- package/dist/llm/prompt-service.d.ts +90 -0
- package/dist/llm/prompt-service.d.ts.map +1 -0
- package/dist/llm/prompt-service.js +93 -0
- package/dist/llm/prompt-service.js.map +1 -0
- package/dist/llm/provider-resolver.d.ts +25 -0
- package/dist/llm/provider-resolver.d.ts.map +1 -0
- package/dist/llm/provider-resolver.js +81 -0
- package/dist/llm/provider-resolver.js.map +1 -0
- package/dist/llm/run-service.d.ts +215 -0
- package/dist/llm/run-service.d.ts.map +1 -0
- package/dist/llm/run-service.js +343 -0
- package/dist/llm/run-service.js.map +1 -0
- package/dist/llm/stats-collector.d.ts +40 -0
- package/dist/llm/stats-collector.d.ts.map +1 -0
- package/dist/llm/stats-collector.js +74 -0
- package/dist/llm/stats-collector.js.map +1 -0
- package/dist/log-scrub.d.ts +58 -0
- package/dist/log-scrub.d.ts.map +1 -0
- package/dist/log-scrub.js +103 -0
- package/dist/log-scrub.js.map +1 -0
- package/dist/meta/store.d.ts +96 -0
- package/dist/meta/store.d.ts.map +1 -0
- package/dist/meta/store.js +192 -0
- package/dist/meta/store.js.map +1 -0
- package/dist/notifications/notify.d.ts +43 -0
- package/dist/notifications/notify.d.ts.map +1 -0
- package/dist/notifications/notify.js +42 -0
- package/dist/notifications/notify.js.map +1 -0
- package/dist/plugins/auth.d.ts +42 -0
- package/dist/plugins/auth.d.ts.map +1 -0
- package/dist/plugins/auth.js +84 -0
- package/dist/plugins/auth.js.map +1 -0
- package/dist/plugins/core.d.ts +48 -0
- package/dist/plugins/core.d.ts.map +1 -0
- package/dist/plugins/core.js +248 -0
- package/dist/plugins/core.js.map +1 -0
- package/dist/plugins/rbac.d.ts +54 -0
- package/dist/plugins/rbac.d.ts.map +1 -0
- package/dist/plugins/rbac.js +103 -0
- package/dist/plugins/rbac.js.map +1 -0
- package/dist/plugins/static.d.ts +12 -0
- package/dist/plugins/static.d.ts.map +1 -0
- package/dist/plugins/static.js +36 -0
- package/dist/plugins/static.js.map +1 -0
- package/dist/rbac/api-keys.d.ts +30 -0
- package/dist/rbac/api-keys.d.ts.map +1 -0
- package/dist/rbac/api-keys.js +41 -0
- package/dist/rbac/api-keys.js.map +1 -0
- package/dist/rbac/index.d.ts +6 -0
- package/dist/rbac/index.d.ts.map +1 -0
- package/dist/rbac/index.js +6 -0
- package/dist/rbac/index.js.map +1 -0
- package/dist/rbac/permissions.d.ts +107 -0
- package/dist/rbac/permissions.d.ts.map +1 -0
- package/dist/rbac/permissions.js +250 -0
- package/dist/rbac/permissions.js.map +1 -0
- package/dist/rbac/principal.d.ts +33 -0
- package/dist/rbac/principal.d.ts.map +1 -0
- package/dist/rbac/principal.js +31 -0
- package/dist/rbac/principal.js.map +1 -0
- package/dist/rbac/resolver.d.ts +26 -0
- package/dist/rbac/resolver.d.ts.map +1 -0
- package/dist/rbac/resolver.js +46 -0
- package/dist/rbac/resolver.js.map +1 -0
- package/dist/realtime/hub.d.ts +90 -0
- package/dist/realtime/hub.d.ts.map +1 -0
- package/dist/realtime/hub.js +146 -0
- package/dist/realtime/hub.js.map +1 -0
- package/dist/realtime/sse.d.ts +35 -0
- package/dist/realtime/sse.d.ts.map +1 -0
- package/dist/realtime/sse.js +88 -0
- package/dist/realtime/sse.js.map +1 -0
- package/dist/realtime/ws.d.ts +38 -0
- package/dist/realtime/ws.d.ts.map +1 -0
- package/dist/realtime/ws.js +124 -0
- package/dist/realtime/ws.js.map +1 -0
- package/dist/reports/schedule.d.ts +14 -0
- package/dist/reports/schedule.d.ts.map +1 -0
- package/dist/reports/schedule.js +63 -0
- package/dist/reports/schedule.js.map +1 -0
- package/dist/routes/about/index.d.ts +39 -0
- package/dist/routes/about/index.d.ts.map +1 -0
- package/dist/routes/about/index.js +73 -0
- package/dist/routes/about/index.js.map +1 -0
- package/dist/routes/about/schema.d.ts +50 -0
- package/dist/routes/about/schema.d.ts.map +1 -0
- package/dist/routes/about/schema.js +53 -0
- package/dist/routes/about/schema.js.map +1 -0
- package/dist/routes/api-keys/index.d.ts +11 -0
- package/dist/routes/api-keys/index.d.ts.map +1 -0
- package/dist/routes/api-keys/index.js +79 -0
- package/dist/routes/api-keys/index.js.map +1 -0
- package/dist/routes/api-keys/schema.d.ts +62 -0
- package/dist/routes/api-keys/schema.d.ts.map +1 -0
- package/dist/routes/api-keys/schema.js +37 -0
- package/dist/routes/api-keys/schema.js.map +1 -0
- package/dist/routes/audit/index.d.ts +11 -0
- package/dist/routes/audit/index.d.ts.map +1 -0
- package/dist/routes/audit/index.js +107 -0
- package/dist/routes/audit/index.js.map +1 -0
- package/dist/routes/audit/schema.d.ts +129 -0
- package/dist/routes/audit/schema.d.ts.map +1 -0
- package/dist/routes/audit/schema.js +43 -0
- package/dist/routes/audit/schema.js.map +1 -0
- package/dist/routes/auth/desktop-session.d.ts +48 -0
- package/dist/routes/auth/desktop-session.d.ts.map +1 -0
- package/dist/routes/auth/desktop-session.js +132 -0
- package/dist/routes/auth/desktop-session.js.map +1 -0
- package/dist/routes/auth/handlers.d.ts +21 -0
- package/dist/routes/auth/handlers.d.ts.map +1 -0
- package/dist/routes/auth/handlers.js +256 -0
- package/dist/routes/auth/handlers.js.map +1 -0
- package/dist/routes/auth/index.d.ts +27 -0
- package/dist/routes/auth/index.d.ts.map +1 -0
- package/dist/routes/auth/index.js +67 -0
- package/dist/routes/auth/index.js.map +1 -0
- package/dist/routes/auth/schema.d.ts +129 -0
- package/dist/routes/auth/schema.d.ts.map +1 -0
- package/dist/routes/auth/schema.js +84 -0
- package/dist/routes/auth/schema.js.map +1 -0
- package/dist/routes/bootstrap/handlers.d.ts +34 -0
- package/dist/routes/bootstrap/handlers.d.ts.map +1 -0
- package/dist/routes/bootstrap/handlers.js +96 -0
- package/dist/routes/bootstrap/handlers.js.map +1 -0
- package/dist/routes/bootstrap/index.d.ts +9 -0
- package/dist/routes/bootstrap/index.d.ts.map +1 -0
- package/dist/routes/bootstrap/index.js +16 -0
- package/dist/routes/bootstrap/index.js.map +1 -0
- package/dist/routes/bootstrap/schema.d.ts +177 -0
- package/dist/routes/bootstrap/schema.d.ts.map +1 -0
- package/dist/routes/bootstrap/schema.js +55 -0
- package/dist/routes/bootstrap/schema.js.map +1 -0
- package/dist/routes/connections/index.d.ts +21 -0
- package/dist/routes/connections/index.d.ts.map +1 -0
- package/dist/routes/connections/index.js +260 -0
- package/dist/routes/connections/index.js.map +1 -0
- package/dist/routes/connections/schema.d.ts +161 -0
- package/dist/routes/connections/schema.d.ts.map +1 -0
- package/dist/routes/connections/schema.js +91 -0
- package/dist/routes/connections/schema.js.map +1 -0
- package/dist/routes/data/index.d.ts +46 -0
- package/dist/routes/data/index.d.ts.map +1 -0
- package/dist/routes/data/index.js +508 -0
- package/dist/routes/data/index.js.map +1 -0
- package/dist/routes/data/schema.d.ts +128 -0
- package/dist/routes/data/schema.d.ts.map +1 -0
- package/dist/routes/data/schema.js +83 -0
- package/dist/routes/data/schema.js.map +1 -0
- package/dist/routes/desktop/index.d.ts +61 -0
- package/dist/routes/desktop/index.d.ts.map +1 -0
- package/dist/routes/desktop/index.js +91 -0
- package/dist/routes/desktop/index.js.map +1 -0
- package/dist/routes/desktop/schema.d.ts +71 -0
- package/dist/routes/desktop/schema.d.ts.map +1 -0
- package/dist/routes/desktop/schema.js +58 -0
- package/dist/routes/desktop/schema.js.map +1 -0
- package/dist/routes/desktop-capabilities/index.d.ts +9 -0
- package/dist/routes/desktop-capabilities/index.d.ts.map +1 -0
- package/dist/routes/desktop-capabilities/index.js +62 -0
- package/dist/routes/desktop-capabilities/index.js.map +1 -0
- package/dist/routes/desktop-capabilities/schema.d.ts +46 -0
- package/dist/routes/desktop-capabilities/schema.d.ts.map +1 -0
- package/dist/routes/desktop-capabilities/schema.js +30 -0
- package/dist/routes/desktop-capabilities/schema.js.map +1 -0
- package/dist/routes/desktop-demo/handlers.d.ts +94 -0
- package/dist/routes/desktop-demo/handlers.d.ts.map +1 -0
- package/dist/routes/desktop-demo/handlers.js +182 -0
- package/dist/routes/desktop-demo/handlers.js.map +1 -0
- package/dist/routes/desktop-demo/index.d.ts +39 -0
- package/dist/routes/desktop-demo/index.d.ts.map +1 -0
- package/dist/routes/desktop-demo/index.js +73 -0
- package/dist/routes/desktop-demo/index.js.map +1 -0
- package/dist/routes/desktop-demo/schema.d.ts +17 -0
- package/dist/routes/desktop-demo/schema.d.ts.map +1 -0
- package/dist/routes/desktop-demo/schema.js +30 -0
- package/dist/routes/desktop-demo/schema.js.map +1 -0
- package/dist/routes/desktop-lan/index.d.ts +54 -0
- package/dist/routes/desktop-lan/index.d.ts.map +1 -0
- package/dist/routes/desktop-lan/index.js +33 -0
- package/dist/routes/desktop-lan/index.js.map +1 -0
- package/dist/routes/desktop-lan/schema.d.ts +24 -0
- package/dist/routes/desktop-lan/schema.d.ts.map +1 -0
- package/dist/routes/desktop-lan/schema.js +40 -0
- package/dist/routes/desktop-lan/schema.js.map +1 -0
- package/dist/routes/desktop-local-db/handlers.d.ts +92 -0
- package/dist/routes/desktop-local-db/handlers.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/handlers.js +300 -0
- package/dist/routes/desktop-local-db/handlers.js.map +1 -0
- package/dist/routes/desktop-local-db/index.d.ts +39 -0
- package/dist/routes/desktop-local-db/index.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/index.js +83 -0
- package/dist/routes/desktop-local-db/index.js.map +1 -0
- package/dist/routes/desktop-local-db/placeholder.d.ts +75 -0
- package/dist/routes/desktop-local-db/placeholder.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/placeholder.js +420 -0
- package/dist/routes/desktop-local-db/placeholder.js.map +1 -0
- package/dist/routes/desktop-local-db/schema.d.ts +50 -0
- package/dist/routes/desktop-local-db/schema.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/schema.js +71 -0
- package/dist/routes/desktop-local-db/schema.js.map +1 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.d.ts +104 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.js +419 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.js.map +1 -0
- package/dist/routes/email-templates/index.d.ts +7 -0
- package/dist/routes/email-templates/index.d.ts.map +1 -0
- package/dist/routes/email-templates/index.js +70 -0
- package/dist/routes/email-templates/index.js.map +1 -0
- package/dist/routes/email-templates/schema.d.ts +54 -0
- package/dist/routes/email-templates/schema.d.ts.map +1 -0
- package/dist/routes/email-templates/schema.js +35 -0
- package/dist/routes/email-templates/schema.js.map +1 -0
- package/dist/routes/exports/index.d.ts +19 -0
- package/dist/routes/exports/index.d.ts.map +1 -0
- package/dist/routes/exports/index.js +145 -0
- package/dist/routes/exports/index.js.map +1 -0
- package/dist/routes/exports/schema.d.ts +183 -0
- package/dist/routes/exports/schema.d.ts.map +1 -0
- package/dist/routes/exports/schema.js +37 -0
- package/dist/routes/exports/schema.js.map +1 -0
- package/dist/routes/generate/index.d.ts +23 -0
- package/dist/routes/generate/index.d.ts.map +1 -0
- package/dist/routes/generate/index.js +80 -0
- package/dist/routes/generate/index.js.map +1 -0
- package/dist/routes/generate/schema.d.ts +43 -0
- package/dist/routes/generate/schema.d.ts.map +1 -0
- package/dist/routes/generate/schema.js +37 -0
- package/dist/routes/generate/schema.js.map +1 -0
- package/dist/routes/imports/index.d.ts +21 -0
- package/dist/routes/imports/index.d.ts.map +1 -0
- package/dist/routes/imports/index.js +288 -0
- package/dist/routes/imports/index.js.map +1 -0
- package/dist/routes/imports/schema.d.ts +292 -0
- package/dist/routes/imports/schema.d.ts.map +1 -0
- package/dist/routes/imports/schema.js +78 -0
- package/dist/routes/imports/schema.js.map +1 -0
- package/dist/routes/index.d.ts +11 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +8 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/jobs/index.d.ts +29 -0
- package/dist/routes/jobs/index.d.ts.map +1 -0
- package/dist/routes/jobs/index.js +175 -0
- package/dist/routes/jobs/index.js.map +1 -0
- package/dist/routes/jobs/schema.d.ts +170 -0
- package/dist/routes/jobs/schema.d.ts.map +1 -0
- package/dist/routes/jobs/schema.js +57 -0
- package/dist/routes/jobs/schema.js.map +1 -0
- package/dist/routes/llm/config-service.d.ts +48 -0
- package/dist/routes/llm/config-service.d.ts.map +1 -0
- package/dist/routes/llm/config-service.js +102 -0
- package/dist/routes/llm/config-service.js.map +1 -0
- package/dist/routes/llm/index.d.ts +69 -0
- package/dist/routes/llm/index.d.ts.map +1 -0
- package/dist/routes/llm/index.js +412 -0
- package/dist/routes/llm/index.js.map +1 -0
- package/dist/routes/llm/schema.d.ts +605 -0
- package/dist/routes/llm/schema.d.ts.map +1 -0
- package/dist/routes/llm/schema.js +238 -0
- package/dist/routes/llm/schema.js.map +1 -0
- package/dist/routes/me/handlers.d.ts +14 -0
- package/dist/routes/me/handlers.d.ts.map +1 -0
- package/dist/routes/me/handlers.js +88 -0
- package/dist/routes/me/handlers.js.map +1 -0
- package/dist/routes/me/index.d.ts +8 -0
- package/dist/routes/me/index.d.ts.map +1 -0
- package/dist/routes/me/index.js +17 -0
- package/dist/routes/me/index.js.map +1 -0
- package/dist/routes/me/schema.d.ts +270 -0
- package/dist/routes/me/schema.d.ts.map +1 -0
- package/dist/routes/me/schema.js +59 -0
- package/dist/routes/me/schema.js.map +1 -0
- package/dist/routes/me-views/index.d.ts +23 -0
- package/dist/routes/me-views/index.d.ts.map +1 -0
- package/dist/routes/me-views/index.js +76 -0
- package/dist/routes/me-views/index.js.map +1 -0
- package/dist/routes/me-views/schema.d.ts +44 -0
- package/dist/routes/me-views/schema.d.ts.map +1 -0
- package/dist/routes/me-views/schema.js +13 -0
- package/dist/routes/me-views/schema.js.map +1 -0
- package/dist/routes/notifications/index.d.ts +19 -0
- package/dist/routes/notifications/index.d.ts.map +1 -0
- package/dist/routes/notifications/index.js +123 -0
- package/dist/routes/notifications/index.js.map +1 -0
- package/dist/routes/notifications/schema.d.ts +122 -0
- package/dist/routes/notifications/schema.d.ts.map +1 -0
- package/dist/routes/notifications/schema.js +83 -0
- package/dist/routes/notifications/schema.js.map +1 -0
- package/dist/routes/onboarding/derive.d.ts +41 -0
- package/dist/routes/onboarding/derive.d.ts.map +1 -0
- package/dist/routes/onboarding/derive.js +30 -0
- package/dist/routes/onboarding/derive.js.map +1 -0
- package/dist/routes/onboarding/index.d.ts +26 -0
- package/dist/routes/onboarding/index.d.ts.map +1 -0
- package/dist/routes/onboarding/index.js +95 -0
- package/dist/routes/onboarding/index.js.map +1 -0
- package/dist/routes/onboarding/schema.d.ts +22 -0
- package/dist/routes/onboarding/schema.d.ts.map +1 -0
- package/dist/routes/onboarding/schema.js +22 -0
- package/dist/routes/onboarding/schema.js.map +1 -0
- package/dist/routes/pages/index.d.ts +26 -0
- package/dist/routes/pages/index.d.ts.map +1 -0
- package/dist/routes/pages/index.js +119 -0
- package/dist/routes/pages/index.js.map +1 -0
- package/dist/routes/pages/layout-schema.d.ts +19 -0
- package/dist/routes/pages/layout-schema.d.ts.map +1 -0
- package/dist/routes/pages/layout-schema.js +19 -0
- package/dist/routes/pages/layout-schema.js.map +1 -0
- package/dist/routes/pages/schema.d.ts +52 -0
- package/dist/routes/pages/schema.d.ts.map +1 -0
- package/dist/routes/pages/schema.js +35 -0
- package/dist/routes/pages/schema.js.map +1 -0
- package/dist/routes/roles/index.d.ts +17 -0
- package/dist/routes/roles/index.d.ts.map +1 -0
- package/dist/routes/roles/index.js +255 -0
- package/dist/routes/roles/index.js.map +1 -0
- package/dist/routes/roles/schema.d.ts +94 -0
- package/dist/routes/roles/schema.d.ts.map +1 -0
- package/dist/routes/roles/schema.js +57 -0
- package/dist/routes/roles/schema.js.map +1 -0
- package/dist/routes/scheduled-reports/index.d.ts +15 -0
- package/dist/routes/scheduled-reports/index.d.ts.map +1 -0
- package/dist/routes/scheduled-reports/index.js +195 -0
- package/dist/routes/scheduled-reports/index.js.map +1 -0
- package/dist/routes/scheduled-reports/schema.d.ts +154 -0
- package/dist/routes/scheduled-reports/schema.d.ts.map +1 -0
- package/dist/routes/scheduled-reports/schema.js +49 -0
- package/dist/routes/scheduled-reports/schema.js.map +1 -0
- package/dist/routes/schema/index.d.ts +24 -0
- package/dist/routes/schema/index.d.ts.map +1 -0
- package/dist/routes/schema/index.js +224 -0
- package/dist/routes/schema/index.js.map +1 -0
- package/dist/routes/schema/schema.d.ts +92 -0
- package/dist/routes/schema/schema.d.ts.map +1 -0
- package/dist/routes/schema/schema.js +64 -0
- package/dist/routes/schema/schema.js.map +1 -0
- package/dist/routes/schema-import/fallback-parser.d.ts +35 -0
- package/dist/routes/schema-import/fallback-parser.d.ts.map +1 -0
- package/dist/routes/schema-import/fallback-parser.js +349 -0
- package/dist/routes/schema-import/fallback-parser.js.map +1 -0
- package/dist/routes/schema-import/index.d.ts +43 -0
- package/dist/routes/schema-import/index.d.ts.map +1 -0
- package/dist/routes/schema-import/index.js +167 -0
- package/dist/routes/schema-import/index.js.map +1 -0
- package/dist/routes/schema-import/schema.d.ts +65 -0
- package/dist/routes/schema-import/schema.d.ts.map +1 -0
- package/dist/routes/schema-import/schema.js +40 -0
- package/dist/routes/schema-import/schema.js.map +1 -0
- package/dist/routes/search/index.d.ts +71 -0
- package/dist/routes/search/index.d.ts.map +1 -0
- package/dist/routes/search/index.js +361 -0
- package/dist/routes/search/index.js.map +1 -0
- package/dist/routes/search/schema.d.ts +125 -0
- package/dist/routes/search/schema.d.ts.map +1 -0
- package/dist/routes/search/schema.js +70 -0
- package/dist/routes/search/schema.js.map +1 -0
- package/dist/routes/settings/index.d.ts +24 -0
- package/dist/routes/settings/index.d.ts.map +1 -0
- package/dist/routes/settings/index.js +164 -0
- package/dist/routes/settings/index.js.map +1 -0
- package/dist/routes/settings/schema.d.ts +110 -0
- package/dist/routes/settings/schema.d.ts.map +1 -0
- package/dist/routes/settings/schema.js +71 -0
- package/dist/routes/settings/schema.js.map +1 -0
- package/dist/routes/setup/index.d.ts +29 -0
- package/dist/routes/setup/index.d.ts.map +1 -0
- package/dist/routes/setup/index.js +68 -0
- package/dist/routes/setup/index.js.map +1 -0
- package/dist/routes/setup/schema.d.ts +61 -0
- package/dist/routes/setup/schema.d.ts.map +1 -0
- package/dist/routes/setup/schema.js +47 -0
- package/dist/routes/setup/schema.js.map +1 -0
- package/dist/routes/system/handlers.d.ts +63 -0
- package/dist/routes/system/handlers.d.ts.map +1 -0
- package/dist/routes/system/handlers.js +121 -0
- package/dist/routes/system/handlers.js.map +1 -0
- package/dist/routes/system/index.d.ts +34 -0
- package/dist/routes/system/index.d.ts.map +1 -0
- package/dist/routes/system/index.js +18 -0
- package/dist/routes/system/index.js.map +1 -0
- package/dist/routes/system/schema.d.ts +93 -0
- package/dist/routes/system/schema.d.ts.map +1 -0
- package/dist/routes/system/schema.js +109 -0
- package/dist/routes/system/schema.js.map +1 -0
- package/dist/routes/views/index.d.ts +21 -0
- package/dist/routes/views/index.d.ts.map +1 -0
- package/dist/routes/views/index.js +155 -0
- package/dist/routes/views/index.js.map +1 -0
- package/dist/routes/views/schema.d.ts +127 -0
- package/dist/routes/views/schema.d.ts.map +1 -0
- package/dist/routes/views/schema.js +56 -0
- package/dist/routes/views/schema.js.map +1 -0
- package/dist/routes/widget-data/index.d.ts +29 -0
- package/dist/routes/widget-data/index.d.ts.map +1 -0
- package/dist/routes/widget-data/index.js +152 -0
- package/dist/routes/widget-data/index.js.map +1 -0
- package/dist/routes/widget-data/schema.d.ts +252 -0
- package/dist/routes/widget-data/schema.d.ts.map +1 -0
- package/dist/routes/widget-data/schema.js +44 -0
- package/dist/routes/widget-data/schema.js.map +1 -0
- package/dist/setup/service.d.ts +63 -0
- package/dist/setup/service.d.ts.map +1 -0
- package/dist/setup/service.js +103 -0
- package/dist/setup/service.js.map +1 -0
- package/dist/start.d.ts +12 -0
- package/dist/start.d.ts.map +1 -0
- package/dist/start.js +28 -0
- package/dist/start.js.map +1 -0
- package/dist/telemetry/payload.d.ts +66 -0
- package/dist/telemetry/payload.d.ts.map +1 -0
- package/dist/telemetry/payload.js +69 -0
- package/dist/telemetry/payload.js.map +1 -0
- package/dist/telemetry/service.d.ts +67 -0
- package/dist/telemetry/service.d.ts.map +1 -0
- package/dist/telemetry/service.js +103 -0
- package/dist/telemetry/service.js.map +1 -0
- package/dist/telemetry/update-check.d.ts +79 -0
- package/dist/telemetry/update-check.d.ts.map +1 -0
- package/dist/telemetry/update-check.js +103 -0
- package/dist/telemetry/update-check.js.map +1 -0
- package/dist/version.d.ts +14 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +21 -0
- package/dist/version.js.map +1 -0
- package/dist/widget-data/cache.d.ts +35 -0
- package/dist/widget-data/cache.d.ts.map +1 -0
- package/dist/widget-data/cache.js +67 -0
- package/dist/widget-data/cache.js.map +1 -0
- package/dist/widget-data/compiler.d.ts +107 -0
- package/dist/widget-data/compiler.d.ts.map +1 -0
- package/dist/widget-data/compiler.js +362 -0
- package/dist/widget-data/compiler.js.map +1 -0
- package/dist/widget-data/shapers.d.ts +75 -0
- package/dist/widget-data/shapers.d.ts.map +1 -0
- package/dist/widget-data/shapers.js +128 -0
- package/dist/widget-data/shapers.js.map +1 -0
- package/dist/widget-data/stream-publisher.d.ts +42 -0
- package/dist/widget-data/stream-publisher.d.ts.map +1 -0
- package/dist/widget-data/stream-publisher.js +34 -0
- package/dist/widget-data/stream-publisher.js.map +1 -0
- package/package.json +79 -0
- package/vocabulary/llm-allowlist.json +76 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-ops-track-components-BPa41AU7.js","sources":["../../../../packages/widgets/dist/families/domain/SloMonitorCard.js","../../../../packages/widgets/dist/families/domain/UptimeSegmentBar.js","../../../../packages/widgets/dist/families/domain/ExperimentVariantCompare.js","../../../../packages/widgets/dist/families/domain/CreditCardTile.js","../../../../packages/widgets/dist/families/domain/PlanPricingCards.js","../../../../packages/widgets/dist/families/domain/ApiPlayground.js","../../../../packages/widgets/dist/families/domain/OpsMonitoring.js","../../../../packages/widgets/dist/families/domain/OpsTrust.js","../../../../packages/widgets/dist/families/domain/OpsOnboarding.js"],"sourcesContent":["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Badge, IconTile, MonoText, ProgressBar } from '@adminium/ui';\nimport { Activity } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { sloMonitorCardConfigSchema, sloMonitorCardDemoData } from './domain-ops-config.js';\nimport { OPS_TONE_BG, OPS_TONE_BORDER_S, OPS_TONE_TEXT, UPTIME_HEIGHT, UPTIME_TONE, budgetTone, countField, formatMs, formatPct, labelField, opsRowOf, pctField, uptimeStateOf, } from './domain-ops-lib.js';\nimport { OpsEmpty } from './OpsEmpty.js';\n/**\n * `slo-monitor-card` (annex §13) — a per-service SLA card: status rule, icon\n * tile, status pill, mono endpoint, current% against target%, the trailing daily\n * uptime sparkline (height + color by Operational/Degraded/Down), a\n * threshold-colored error-budget bar, and p95 latency. Evidence: SLA Monitoring.\n *\n * DIRECTION (10-i18n-theming.md §5.5) — the sparkline here is NOT a time axis\n * island. It is a compact trailing-history glyph, ~30 undated bars with no axis,\n * no labels and no origin to align a gutter to; nothing in it anchors a reader\n * to \"left = older\" the way the gantt's dated canvas does. So the whole card\n * mirrors as one unit: the bar strip is a plain flex row that reverses under\n * `dir=\"rtl\"`, keeping \"newest\" at the reading END in both directions — which is\n * where a reader's eye lands last, and therefore where \"now\" belongs. The\n * status rule rides `border-s-*` for the same reason (annex \"status left-border\"\n * means the START of the row, not its physical left).\n *\n * ORDERING CONTRACT: `history` arrives OLDEST → NEWEST and is rendered in that\n * order. `flex-row` + `dir=\"rtl\"` does the mirroring; the array is never\n * reversed in JS, so LTR and RTL consume byte-identical data.\n */\nexport { sloMonitorCardConfigSchema, sloMonitorCardDemoData };\n/** Localized status label falls back to the raw enum (a developer fallback). */\nconst STATUS_FALLBACK = {\n operational: 'Operational',\n degraded: 'Degraded',\n down: 'Down',\n unknown: 'Unknown',\n};\nexport function SloMonitorCardView({ monitor, budgetThresholds, windowDays = 30, locale, targetLabel, budgetLabel, latencyLabel, testId, }) {\n const statusTone = UPTIME_TONE[monitor.status];\n const budget = budgetTone(monitor.budget, budgetThresholds);\n // Trailing window: the LAST `windowDays` entries, so a payload carrying 90\n // days still renders the annex's 30-bar strip without the caller pre-slicing.\n const history = monitor.history.slice(-Math.max(1, windowDays));\n // A shortfall against target is the whole point of the card, so the current\n // figure is toned by whether it MET the target — not by the service's\n // instantaneous status, which can read green during a month that already\n // blew its budget.\n const meetsTarget = monitor.current >= monitor.target;\n return (_jsxs(\"div\", { \"data-widget\": \"slo-monitor-card\", \"data-testid\": testId, \"data-status\": monitor.status, className: `flex h-full flex-col gap-3 overflow-auto border-s-4 ${OPS_TONE_BORDER_S[statusTone]} px-4 pb-4`, children: [_jsxs(\"div\", { className: \"flex items-start gap-2.5\", children: [_jsx(IconTile, { tone: statusTone, size: \"sm\", icon: _jsx(Activity, {}) }), _jsxs(\"div\", { className: \"min-w-0 flex-1\", children: [_jsx(\"p\", { className: \"truncate text-body-sm font-bold text-fg\", children: monitor.name }), monitor.endpoint === undefined ? null : (_jsx(MonoText, { className: \"block truncate text-caption text-fg-subtle\", children: monitor.endpoint }))] }), _jsx(Badge, { tone: statusTone, dot: true, \"data-part\": \"slo-status\", children: STATUS_FALLBACK[monitor.status] })] }), _jsxs(\"div\", { className: \"flex items-baseline gap-2\", children: [_jsx(MonoText, { \"data-part\": \"slo-current\", className: `text-h2 font-bold tabular-nums ${meetsTarget ? OPS_TONE_TEXT.pos : OPS_TONE_TEXT.danger}`, children: formatPct(monitor.current, locale, 2) }), _jsxs(\"span\", { className: \"text-caption text-fg-subtle\", children: [targetLabel ?? 'Target', \" \", _jsx(MonoText, { children: formatPct(monitor.target, locale, 2) })] })] }), _jsx(\"div\", { \"aria-hidden\": \"true\", \"data-testid\": \"slo-sparkline\", className: \"flex h-8 items-end gap-px\", children: history.map((state, index) => (_jsx(\"span\", { \"data-part\": \"slo-day\", \"data-state\": state, className: `h-[var(--bar-h)] min-w-px flex-1 rounded-xs ${OPS_TONE_BG[UPTIME_TONE[state]]}`, style: { '--bar-h': `${UPTIME_HEIGHT[state]}%` } }, `${index}-${state}`))) }), _jsxs(\"div\", { className: \"flex flex-col gap-1\", children: [_jsxs(\"div\", { className: \"flex items-center justify-between text-caption\", children: [_jsx(\"span\", { className: \"text-fg-subtle\", children: budgetLabel ?? 'Error budget' }), _jsx(MonoText, { className: `font-bold ${OPS_TONE_TEXT[budget]}`, \"data-part\": \"slo-budget\", children: formatPct(monitor.budget, locale) })] }), _jsx(ProgressBar, { value: monitor.budget, tone: budget, size: \"sm\", animated: false, label: budgetLabel ?? 'Error budget' })] }), monitor.p95 === undefined ? null : (_jsxs(\"p\", { className: \"text-caption text-fg-subtle\", children: [latencyLabel ?? 'p95 latency', \" \", _jsx(MonoText, { className: \"font-semibold text-fg\", children: formatMs(monitor.p95, locale) })] }))] }));\n}\n/** Project the bound `record` onto the monitor model (config-driven columns). */\nfunction monitorOf(config, data) {\n const row = opsRowOf(data);\n if (row === null)\n return null;\n const raw = row[config.historyField];\n const history = (Array.isArray(raw) ? raw : []).map(uptimeStateOf);\n return {\n name: labelField(row, config.nameField, 'Service'),\n endpoint: row[config.endpointField] === undefined ? undefined : labelField(row, config.endpointField, ''),\n target: pctField(row, config.targetField, config.target),\n current: pctField(row, config.currentField, 0),\n status: uptimeStateOf(row[config.statusField]),\n budget: pctField(row, config.budgetField, 0),\n // Latency is milliseconds, NOT a percent — it must not go through\n // `pctField`, which would clamp a real 240ms p95 down to 100.\n p95: row[config.p95Field] === undefined ? undefined : countField(row, config.p95Field, 0),\n history,\n };\n}\nexport function SloMonitorCardWidget({ config, data }) {\n const monitor = useMemo(() => monitorOf(config, data), [config, data]);\n if (monitor === null) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No monitor', body: config.emptyBody ?? 'Bind a monitors table with a status and an availability column.' }));\n }\n return (_jsx(SloMonitorCardView, { monitor: monitor, windowDays: config.windowDays, ...(config.budgetThresholds === undefined ? {} : { budgetThresholds: config.budgetThresholds }), ...(config.format?.locale === undefined ? {} : { locale: config.format.locale }), ...(config.targetLabel === undefined ? {} : { targetLabel: config.targetLabel }), ...(config.budgetLabel === undefined ? {} : { budgetLabel: config.budgetLabel }), ...(config.latencyLabel === undefined ? {} : { latencyLabel: config.latencyLabel }), ...(config.testId === undefined ? {} : { testId: config.testId }) }));\n}\n//# sourceMappingURL=SloMonitorCard.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { MonoText, SegmentedControl, Tooltip, TooltipProvider } from '@adminium/ui';\nimport { useMemo, useState } from 'react';\nimport { uptimeSegmentBarConfigSchema, uptimeSegmentBarDemoData } from './domain-ops-config.js';\nimport { OPS_TONE_BG, UPTIME_TONE, formatDay, formatPct, instantField, interpolate, opsRowsOf, uptimePct, uptimeStateOf, } from './domain-ops-lib.js';\nimport { toneOf } from './domain-lib.js';\nimport { OpsEmpty } from './OpsEmpty.js';\n/**\n * `uptime-segment-bar` (annex §13) — the statuspage-style day strip: n flex\n * segments toned pos/warn/danger with per-day tooltips and a hover scaleY, an\n * axis reading \"{n} days ago / uptime % / Today\", and a 30/90-day toggle.\n * Evidence: Status Page.\n *\n * DIRECTION (10-i18n-theming.md §5.5) — this one MIRRORS, and that is a\n * deliberate call against the gantt's fixed-LTR-island rule, not an oversight.\n * The island rule exists for a DATED canvas: the gantt has a calendar header and\n * a label gutter that must align to a time ORIGIN, so flipping it would put day\n * 0 under a header that says otherwise. A statuspage strip has neither. It has\n * exactly two anchors — an \"N days ago\" caption at one end and \"Today\" at the\n * other — and both are text that mirrors with the reader. Pinning the strip LTR\n * while its own captions flipped would put \"Today\" at the end the newest segment\n * is NOT at: a caption that lies. So the strip is a plain `flex` row and the\n * whole thing reverses under `dir=\"rtl\"`, captions and segments together.\n *\n * The array itself is never reversed in JS — rows arrive oldest → newest and are\n * rendered in that order in both directions, so LTR and RTL consume byte-\n * identical data and only CSS differs.\n */\nexport { uptimeSegmentBarConfigSchema, uptimeSegmentBarDemoData };\n/** Per-day tone: an explicit `stateColors` override, else the shared uptime map. */\nfunction dayTone(state, overrides) {\n const explicit = overrides?.[state];\n return explicit === undefined ? UPTIME_TONE[state] : toneOf(explicit, UPTIME_TONE[state]);\n}\nconst STATUS_FALLBACK = {\n operational: 'Operational',\n degraded: 'Degraded',\n down: 'Down',\n unknown: 'No data',\n};\nexport function UptimeSegmentBarView({ days, period = '90', showToggle = true, stateColors, locale, daysAgoLabel, todayLabel, uptimeLabel, testId, }) {\n // The toggle is COMPONENT state seeded from config: a stored config pins where\n // the strip starts, not where it stays (a widget that reset the user's toggle\n // on every re-render would be unusable).\n const [window, setWindow] = useState(period);\n const size = window === '30' ? 30 : 90;\n const visible = useMemo(() => days.slice(-size), [days, size]);\n const pct = useMemo(() => uptimePct(visible.map((day) => day.state)), [visible]);\n return (_jsx(TooltipProvider, { children: _jsxs(\"div\", { \"data-widget\": \"uptime-segment-bar\", \"data-testid\": testId, \"data-period\": window, className: \"flex h-full flex-col justify-center gap-2 px-4 pb-4\", children: [!showToggle ? null : (_jsx(\"div\", { className: \"flex justify-end\", children: _jsx(SegmentedControl, { value: window, onValueChange: setWindow, \"data-testid\": \"uptime-period-toggle\", options: [\n { value: '30', label: '30d' },\n { value: '90', label: '90d' },\n ] }) })), _jsx(\"div\", { \"aria-hidden\": \"true\", \"data-testid\": \"uptime-strip\", className: \"flex h-9 items-stretch gap-[2px]\", children: visible.map((day) => {\n const tone = dayTone(day.state, stateColors);\n const label = `${formatDay(day.ms, locale) ?? ''} — ${STATUS_FALLBACK[day.state]}`;\n return (_jsx(Tooltip, { content: label, children: _jsx(\"span\", { \"data-part\": \"uptime-segment\", \"data-state\": day.state, className: `min-w-[3px] flex-1 rounded-xs transition-transform duration-150 hover:scale-y-110 ${OPS_TONE_BG[tone]}` }) }, day.ms));\n }) }), _jsxs(\"div\", { className: \"flex items-center justify-between gap-2 text-caption text-fg-subtle\", children: [_jsx(\"span\", { \"data-part\": \"uptime-axis-start\", children: interpolate(daysAgoLabel ?? '{days} days ago', { days: size }) }), _jsxs(MonoText, { className: \"font-bold text-fg\", \"data-part\": \"uptime-pct\", children: [formatPct(pct, locale, 2), \" \", uptimeLabel ?? 'uptime'] }), _jsx(\"span\", { \"data-part\": \"uptime-axis-end\", children: todayLabel ?? 'Today' })] })] }) }));\n}\n/** Project the bound `record-list` onto the day strip (oldest → newest). */\nfunction daysOf(config, data) {\n const rows = opsRowsOf(data);\n const out = [];\n rows.forEach((row, index) => {\n const ms = instantField(row, config.dayField);\n out.push({\n // A status column with no usable date still renders in payload order — the\n // strip's meaning is the SEQUENCE, and dropping undated days would silently\n // shorten the window and inflate the uptime percentage.\n ms: ms ?? index,\n state: uptimeStateOf(row[config.statusField]),\n });\n });\n return out;\n}\nexport function UptimeSegmentBarWidget({ config, data }) {\n const days = useMemo(() => daysOf(config, data), [config, data]);\n if (days.length === 0) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No uptime history', body: config.emptyBody ?? 'Daily status rows appear here as an uptime strip.' }));\n }\n return (_jsx(UptimeSegmentBarView, { days: days, period: config.period, showToggle: config.showToggle, ...(config.stateColors === undefined ? {} : { stateColors: config.stateColors }), ...(config.format?.locale === undefined ? {} : { locale: config.format.locale }), ...(config.daysAgoLabel === undefined ? {} : { daysAgoLabel: config.daysAgoLabel }), ...(config.todayLabel === undefined ? {} : { todayLabel: config.todayLabel }), ...(config.uptimeLabel === undefined ? {} : { uptimeLabel: config.uptimeLabel }), ...(config.testId === undefined ? {} : { testId: config.testId }) }));\n}\n//# sourceMappingURL=UptimeSegmentBar.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Badge, MonoText, ProgressBar } from '@adminium/ui';\nimport { useMemo } from 'react';\nimport { experimentVariantCompareConfigSchema, experimentVariantCompareDemoData } from './domain-ops-config.js';\nimport { OPS_TONE_BG, OPS_TONE_TEXT, booleanField, confidenceTone, countField, formatCount, formatPct, interpolate, labelField, liftPct, opsRowsOf, pctField, } from './domain-ops-lib.js';\nimport { asRecord, clamp, numberField } from './domain-lib.js';\nimport { OpsEmpty } from './OpsEmpty.js';\n/**\n * `experiment-variant-compare` (annex §13) — per-variant horizontal conversion\n * bars (width = conv / maxConv), lift-vs-control pills, CONTROL / WINNER badges,\n * participant + conversion counts, and the paired significance meter: a\n * confidence bar color-coded ≥95 green / ≥80 amber plus a verdict.\n * Evidence: AB Experiments.\n *\n * WINNER IS DERIVED, NEVER BOUND (annex: \"winner derived\") — and it is derived\n * with the significance gate applied, not from `max(conv)` alone. An experiment\n * readout that crowns a \"winner\" at 61% confidence is the single most expensive\n * mistake this widget could make: it tells a reader to ship a change the data\n * does not support. So the badge appears only when the test cleared the high\n * threshold AND the leader is not the control.\n */\nexport { experimentVariantCompareConfigSchema, experimentVariantCompareDemoData };\nexport function ExperimentVariantCompareView({ variants, confidence, confThresholds, showSignificance = true, locale, controlLabel, winnerLabel, significanceLabel, verdictSignificantLabel, verdictInconclusiveLabel, countsLabel, testId, }) {\n const maxConv = useMemo(() => variants.reduce((max, variant) => Math.max(max, variant.conv), 0), [variants]);\n const control = useMemo(() => variants.find((variant) => variant.control), [variants]);\n const high = confThresholds?.high ?? 95;\n const leader = useMemo(() => variants.reduce((best, v) => (best === null || v.conv > best.conv ? v : best), null), [variants]);\n // See the header note: significant AND not the control.\n const winnerId = confidence !== undefined && confidence >= high && leader !== null && !leader.control ? leader.id : null;\n const meterTone = confidence === undefined ? 'neutral' : confidenceTone(confidence, confThresholds);\n const significant = confidence !== undefined && confidence >= high;\n return (_jsxs(\"div\", { \"data-widget\": \"experiment-variant-compare\", \"data-testid\": testId, className: \"flex h-full flex-col gap-3 overflow-auto px-4 pb-4\", children: [_jsx(\"div\", { className: \"flex flex-col gap-2.5\", children: variants.map((variant) => {\n const lift = control === undefined || variant.control ? null : liftPct(variant.conv, control.conv);\n // Bar width is conv / maxConv (annex) — a RELATIVE scale, so the\n // leader always fills the row and small absolute rates stay legible.\n const width = maxConv <= 0 ? 0 : clamp((variant.conv / maxConv) * 100, 0, 100);\n return (_jsxs(\"div\", { \"data-part\": \"variant-row\", \"data-variant\": variant.id, className: \"flex flex-col gap-1\", children: [_jsxs(\"div\", { className: \"flex items-center gap-2\", children: [_jsx(\"span\", { className: \"truncate text-body-sm font-semibold text-fg\", children: variant.name }), variant.control ? (_jsx(Badge, { tone: \"neutral\", \"data-part\": \"variant-control\", children: controlLabel ?? 'CONTROL' })) : null, winnerId === variant.id ? (_jsx(Badge, { tone: \"pos\", \"data-part\": \"variant-winner\", children: winnerLabel ?? 'WINNER' })) : null, _jsxs(\"span\", { className: \"ms-auto flex items-center gap-2\", children: [lift === null ? null : (_jsx(Badge, { tone: lift >= 0 ? 'pos' : 'danger', \"data-part\": \"variant-lift\", children: `${lift >= 0 ? '+' : ''}${formatPct(Math.abs(lift), locale, 1)}` })), _jsx(MonoText, { className: \"text-body-sm font-bold tabular-nums text-fg\", children: formatPct(variant.conv, locale, 2) })] })] }), _jsx(\"div\", { \"aria-hidden\": \"true\", className: \"h-2 overflow-hidden rounded-full bg-surface-3\", children: _jsx(\"div\", { \"data-part\": \"variant-bar\", className: `h-full w-[var(--bar-w)] rounded-full ${winnerId === variant.id ? OPS_TONE_BG.pos : OPS_TONE_BG.accent}`, style: { '--bar-w': `${width}%` } }) }), _jsx(\"p\", { className: \"text-caption text-fg-subtle\", children: interpolate(countsLabel ?? '{users} participants · {conversions} conversions', {\n users: formatCount(variant.users, locale),\n conversions: formatCount(variant.conversions, locale),\n }) })] }, variant.id));\n }) }), !showSignificance || confidence === undefined ? null : (_jsxs(\"div\", { \"data-testid\": \"significance-meter\", className: \"mt-auto flex flex-col gap-1 border-t border-border pt-3\", children: [_jsxs(\"div\", { className: \"flex items-center justify-between text-caption\", children: [_jsx(\"span\", { className: \"text-fg-subtle\", children: significanceLabel ?? 'Confidence' }), _jsx(MonoText, { className: `font-bold ${OPS_TONE_TEXT[meterTone]}`, \"data-part\": \"significance-value\", children: formatPct(confidence, locale, 1) })] }), _jsx(ProgressBar, { value: confidence, tone: meterTone, size: \"sm\", animated: false, label: significanceLabel ?? 'Confidence' }), _jsx(\"p\", { className: \"text-caption text-fg-subtle\", \"data-part\": \"significance-verdict\", children: significant\n ? (verdictSignificantLabel ?? 'Statistically significant — safe to call.')\n : (verdictInconclusiveLabel ?? 'Not yet significant — keep the test running.') })] }))] }));\n}\n/** Project the bound `record-list` onto the variant model. */\nfunction variantsOf(config, data) {\n const rows = opsRowsOf(data);\n return rows.map((row, index) => {\n const conv = pctField(row, config.convField, 0);\n const users = countField(row, config.usersField, 0);\n return {\n id: labelField(row, config.idField, `v${index}`),\n name: labelField(row, config.nameField, `Variant ${index + 1}`),\n conv,\n users,\n // Denormalized conversions when the column exists; else derived from the\n // rate — an experiment table stores one or the other, rarely both.\n conversions: countField(row, config.conversionsField, Math.round((users * conv) / 100)),\n control: booleanField(row, config.controlField) ?? index === 0,\n };\n });\n}\n/**\n * Read the test's significance. Envelope-level first (a server that computes it\n * returns it beside `rows`), then off the leading row (a denormalized variants\n * table stores it per arm). Absent → the meter is simply not rendered.\n */\nfunction confidenceOf(config, data, rows) {\n const envelope = asRecord(data);\n const fromEnvelope = envelope === null ? undefined : numberField(envelope, config.confidenceField);\n if (fromEnvelope !== undefined)\n return clamp(fromEnvelope, 0, 100);\n for (const row of rows) {\n const value = numberField(row, config.confidenceField);\n if (value !== undefined)\n return clamp(value, 0, 100);\n }\n return undefined;\n}\nexport function ExperimentVariantCompareWidget({ config, data }) {\n const variants = useMemo(() => variantsOf(config, data), [config, data]);\n const confidence = useMemo(() => confidenceOf(config, data, opsRowsOf(data)), [config, data]);\n if (variants.length === 0) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No variants', body: config.emptyBody ?? 'Bind an experiment variants table with conversion numbers.' }));\n }\n return (_jsx(ExperimentVariantCompareView, { variants: variants, showSignificance: config.showSignificance, ...(confidence === undefined ? {} : { confidence }), ...(config.confThresholds === undefined ? {} : { confThresholds: config.confThresholds }), ...(config.format?.locale === undefined ? {} : { locale: config.format.locale }), ...(config.controlLabel === undefined ? {} : { controlLabel: config.controlLabel }), ...(config.winnerLabel === undefined ? {} : { winnerLabel: config.winnerLabel }), ...(config.significanceLabel === undefined ? {} : { significanceLabel: config.significanceLabel }), ...(config.verdictSignificantLabel === undefined ? {} : { verdictSignificantLabel: config.verdictSignificantLabel }), ...(config.verdictInconclusiveLabel === undefined\n ? {}\n : { verdictInconclusiveLabel: config.verdictInconclusiveLabel }), ...(config.countsLabel === undefined ? {} : { countsLabel: config.countsLabel }), ...(config.testId === undefined ? {} : { testId: config.testId }) }));\n}\n//# sourceMappingURL=ExperimentVariantCompare.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Badge, Button, MonoText } from '@adminium/ui';\nimport { CreditCard, Plus } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { creditCardTileConfigSchema, creditCardTileDemoData } from './domain-ops-config.js';\nimport { booleanField, cardBrandOf, labelField, maskPan, opsBindingSourceOf, opsRowOf, } from './domain-ops-lib.js';\nimport { OpsEmpty } from './OpsEmpty.js';\n/**\n * `credit-card-tile` (annex §13) — the skeuomorphic payment card: brand\n * gradient, masked PAN, holder, expiry, a Default badge / Set-default action and\n * a hover lift; plus the dashed `add-method` ghost card and the compact\n * `payment-method-row`. Evidence: Payments, Billing & Usage, Billing Overview.\n *\n * The three faces are ONE registry id behind `variant` config, per 04 §2.1\n * (\"visual variants are config, never new registry ids\") — and the annex agrees,\n * naming them under this single heading.\n *\n * A Cloud/marketing + billing surface (M12/M14 consumers): it renders its data\n * contract and holds NO billing logic. It never sees a PAN — the bound table\n * stores `brand` + `last4` and nothing else, and `maskPan` is structurally\n * incapable of printing more than four digits.\n *\n * DIRECTION: the card mirrors whole. The masked PAN is the one exception, and it\n * is not styled as one: `MonoText` + `tabular-nums` in an isolated run keeps the\n * group order stable, because a PAN is a NUMBER, and Unicode bidi already lays\n * digit runs out left-to-right inside RTL text — the same rule that keeps the\n * expiry reading \"04/28\" and not \"28/04\" in Arabic.\n */\nexport { creditCardTileConfigSchema, creditCardTileDemoData };\n/**\n * Brand → gradient. Token utilities only — no raw hex (04 hard rule) — so each\n * network reads distinct in both themes without inventing a color.\n */\nconst BRAND_GRADIENT = {\n visa: 'bg-gradient-to-br from-info to-accent',\n mastercard: 'bg-gradient-to-br from-warn to-danger',\n amex: 'bg-gradient-to-br from-info to-pos',\n discover: 'bg-gradient-to-br from-warn to-accent',\n unknown: 'bg-gradient-to-br from-fg-subtle to-fg-muted',\n};\n/** Brand → wordmark. Overridable via `brandMeta` (the annex's declared config). */\nconst BRAND_NAME = {\n visa: 'VISA',\n mastercard: 'Mastercard',\n amex: 'AMEX',\n discover: 'Discover',\n unknown: 'Card',\n};\nfunction brandNameOf(brand, meta) {\n return meta?.[brand] ?? BRAND_NAME[brand];\n}\nexport function CreditCardTileView({ method, variant = 'tile', brandMeta, defaultLabel, setDefaultLabel, manageLabel, addLabel, expiresLabel, onSetDefault, onManage, testId, }) {\n const pan = maskPan(method.last4, method.brand);\n const brandName = brandNameOf(method.brand, brandMeta);\n if (variant === 'ghost') {\n return (_jsx(\"div\", { \"data-widget\": \"credit-card-tile\", \"data-testid\": testId, \"data-variant\": \"ghost\", className: \"h-full px-4 pb-4\", children: _jsxs(\"button\", { type: \"button\", onClick: onManage, \"data-part\": \"add-method\", className: \"flex h-full min-h-24 w-full flex-col items-center justify-center gap-1.5 rounded-xl border-2 border-dashed border-border-strong text-fg-muted transition-colors hover:border-accent hover:text-accent\", children: [_jsx(Plus, { className: \"size-5\", \"aria-hidden\": \"true\" }), _jsx(\"span\", { className: \"text-body-sm font-semibold\", children: addLabel ?? 'Add payment method' })] }) }));\n }\n if (variant === 'row') {\n return (_jsxs(\"div\", { \"data-widget\": \"credit-card-tile\", \"data-testid\": testId, \"data-variant\": \"row\", className: \"flex h-full items-center gap-3 px-4 pb-4\", children: [_jsx(\"span\", { \"aria-hidden\": \"true\", className: `flex size-9 shrink-0 items-center justify-center rounded-md text-white ${BRAND_GRADIENT[method.brand]}`, children: _jsx(CreditCard, { className: \"size-4\" }) }), _jsxs(\"div\", { className: \"min-w-0 flex-1\", children: [_jsx(MonoText, { className: \"block truncate text-body-sm font-semibold tabular-nums text-fg\", \"data-part\": \"card-pan\", children: pan }), method.exp === undefined ? null : (_jsx(MonoText, { className: \"text-caption text-fg-subtle\", \"data-part\": \"card-exp\", children: method.exp }))] }), method.isDefault ? (_jsx(Badge, { tone: \"accent\", \"data-part\": \"card-default\", children: defaultLabel ?? 'Default' })) : null, onManage === undefined ? null : (_jsx(Button, { variant: \"ghost\", size: \"sm\", onClick: onManage, \"data-part\": \"card-manage\", children: manageLabel ?? 'Manage' }))] }));\n }\n return (_jsx(\"div\", { \"data-widget\": \"credit-card-tile\", \"data-testid\": testId, \"data-variant\": \"tile\", className: \"h-full px-4 pb-4\", children: _jsxs(\"div\", { \"data-part\": \"card-tile\", className: `group flex h-full min-h-32 flex-col justify-between rounded-xl p-4 text-white shadow-card transition-shadow hover:shadow-lg ${BRAND_GRADIENT[method.brand]}`, children: [_jsxs(\"div\", { className: \"flex items-start justify-between gap-2\", children: [_jsx(CreditCard, { className: \"size-5 opacity-80\", \"aria-hidden\": \"true\" }), _jsx(\"span\", { className: \"text-body-sm font-black uppercase tracking-wide\", \"data-part\": \"card-brand\", children: brandName })] }), _jsx(MonoText, { className: \"text-body font-semibold tabular-nums tracking-widest\", \"data-part\": \"card-pan\", children: pan }), _jsxs(\"div\", { className: \"flex items-end justify-between gap-2\", children: [_jsxs(\"div\", { className: \"min-w-0\", children: [method.holder === undefined ? null : (_jsx(\"p\", { className: \"truncate text-caption font-semibold uppercase tracking-wide opacity-90\", \"data-part\": \"card-holder\", children: method.holder })), method.exp === undefined ? null : (_jsxs(\"p\", { className: \"text-caption opacity-75\", children: [expiresLabel ?? 'Expires', \" \", _jsx(MonoText, { \"data-part\": \"card-exp\", children: method.exp })] }))] }), method.isDefault ? (_jsx(Badge, { tone: \"neutral\", \"data-part\": \"card-default\", className: \"bg-white/25 text-white\", children: defaultLabel ?? 'Default' })) : onSetDefault === undefined ? null : (\n // Revealed on hover/focus per the annex, but never hidden from the\n // keyboard: `focus-within` + `focus-visible` keep it reachable, and\n // opacity (not `hidden`) keeps it in the a11y tree throughout.\n _jsx(\"button\", { type: \"button\", onClick: onSetDefault, \"data-part\": \"card-set-default\", className: \"rounded-full bg-white/20 px-2 py-0.5 text-[11px] font-bold opacity-0 transition-opacity focus-visible:opacity-100 group-hover:opacity-100\", children: setDefaultLabel ?? 'Set default' }))] })] }) }));\n}\n/** Project the bound `record` onto the payment-method model. */\nfunction methodOf(config, data) {\n const row = opsRowOf(data);\n if (row === null)\n return null;\n return {\n brand: cardBrandOf(row[config.brandField]),\n last4: labelField(row, config.last4Field, '0000'),\n holder: row[config.holderField] === undefined ? undefined : labelField(row, config.holderField, ''),\n exp: row[config.expField] === undefined ? undefined : labelField(row, config.expField, ''),\n isDefault: booleanField(row, config.defaultField) ?? false,\n };\n}\nexport function CreditCardTileWidget({ config, data, onEvent }) {\n const method = useMemo(() => methodOf(config, data), [config, data]);\n const source = useMemo(() => opsBindingSourceOf(config.binding), [config.binding]);\n // The ghost card is an ADD affordance and has no row to render — it must work\n // on an empty payload, which is exactly when a host mounts it.\n if (method === null && config.variant !== 'ghost') {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No payment method', body: config.emptyBody ?? 'Add a card to see it here.' }));\n }\n const emit = (event) => {\n void onEvent(event);\n };\n return (_jsx(CreditCardTileView, { method: method ?? { brand: 'unknown', last4: '0000', isDefault: false }, variant: config.variant, ...(config.brandMeta === undefined ? {} : { brandMeta: config.brandMeta }), ...(config.defaultLabel === undefined ? {} : { defaultLabel: config.defaultLabel }), ...(config.setDefaultLabel === undefined ? {} : { setDefaultLabel: config.setDefaultLabel }), ...(config.manageLabel === undefined ? {} : { manageLabel: config.manageLabel }), ...(config.addLabel === undefined ? {} : { addLabel: config.addLabel }), ...(config.expiresLabel === undefined ? {} : { expiresLabel: config.expiresLabel }), ...(config.testId === undefined ? {} : { testId: config.testId }), ...(source === null || method === null\n ? {}\n : {\n onSetDefault: () => emit({\n type: 'mutate',\n intent: 'update',\n connectionId: source.connectionId,\n table: source.table,\n values: { [config.defaultField]: true },\n }),\n }), ...(config.href === undefined\n ? {}\n : { onManage: () => emit({ type: 'drill-through', href: config.href }) }) }));\n}\n//# sourceMappingURL=CreditCardTile.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Badge, Button, MonoText, SegmentedControl } from '@adminium/ui';\nimport { Check } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport { planPricingCardsConfigSchema, planPricingCardsDemoData } from './domain-ops-config.js';\nimport { annualMonthly, annualTotal, booleanField, countField, formatMoney, interpolate, labelField, opsRowsOf, stringArrayField, } from './domain-ops-lib.js';\nimport { OpsEmpty } from './OpsEmpty.js';\n/**\n * `plan-pricing-cards` (annex §13) — tier cards: name, tagline, a large mono\n * price with a computed monthly/annual switch, the billing note, a CTA, and the\n * check-list of features; the promoted tier gets an accent border + a POPULAR\n * pill, and an in-modal `selectable` variant turns the cards into radio targets.\n * Evidence: Pricing, Adminium Pricing, Billing & Usage, Billing Overview.\n *\n * A Cloud/marketing surface (M12/M14 consumers) with NO billing logic: it takes\n * plan rows and a discount and renders them. The annual price is COMPUTED here\n * (`monthly × (1 − discount)`) rather than bound as a second column, because the\n * annex specifies a \"monthly/annual computed switch\" — two independently-stored\n * prices drift, and a card showing an annual price that does not match the\n * monthly one times twelve is a support ticket, not a design.\n *\n * The CTA emits `drill-through`; picking a plan is a checkout flow the HOST\n * owns. This widget cannot start a subscription, and must not look like it can.\n */\nexport { planPricingCardsConfigSchema, planPricingCardsDemoData };\nexport function PlanPricingCardsView({ plans, annualDiscount = 0.2, period = 'monthly', selectable = false, currency, locale, ctaLabel, currentLabel, popularLabel, monthlyLabel, annualLabel, perMonthLabel, billedAnnuallyLabel, onSelect, testId, }) {\n // Period is component state seeded from config — the reader's toggle must\n // survive re-renders (a stored config pins the START, not the state).\n const [active, setActive] = useState(period);\n const [selected, setSelected] = useState(null);\n const annual = active === 'annual';\n return (_jsxs(\"div\", { \"data-widget\": \"plan-pricing-cards\", \"data-testid\": testId, \"data-period\": active, className: \"flex h-full flex-col gap-3 overflow-auto px-4 pb-4\", children: [_jsx(\"div\", { className: \"flex justify-center\", children: _jsx(SegmentedControl, { value: active, onValueChange: setActive, \"data-testid\": \"pricing-period-toggle\", options: [\n { value: 'monthly', label: monthlyLabel ?? 'Monthly' },\n { value: 'annual', label: annualLabel ?? 'Annual' },\n ] }) }), _jsx(\"div\", { className: \"grid flex-1 grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3\", children: plans.map((plan) => {\n const monthly = annual ? annualMonthly(plan.monthly, annualDiscount) : plan.monthly;\n const isSelected = selected === plan.id;\n const chosen = selectable && isSelected;\n return (_jsxs(\"div\", { \"data-part\": \"plan-card\", \"data-plan\": plan.id, ...(plan.promoted ? { 'data-promoted': '' } : {}), ...(plan.current ? { 'data-current': '' } : {}), ...(chosen ? { 'data-selected': '' } : {}), className: [\n 'relative flex flex-col gap-3 rounded-xl border bg-surface p-4 transition-shadow',\n plan.promoted || chosen ? 'border-accent shadow-glow' : 'border-border shadow-sm',\n ].join(' '), children: [plan.promoted ? (_jsx(Badge, { tone: \"accent\", \"data-part\": \"plan-popular\", className: \"absolute -top-2 start-4\", children: popularLabel ?? 'POPULAR' })) : null, _jsxs(\"div\", { children: [_jsx(\"p\", { className: \"text-body font-bold text-fg\", children: plan.name }), plan.tagline === undefined ? null : (_jsx(\"p\", { className: \"text-caption text-fg-subtle\", children: plan.tagline }))] }), _jsxs(\"div\", { children: [_jsx(MonoText, { className: \"text-h1 font-black tabular-nums text-fg\", \"data-part\": \"plan-price\", children: formatMoney(monthly, currency, locale) }), _jsx(\"span\", { className: \"ms-1 text-caption text-fg-subtle\", children: perMonthLabel ?? '/ month' }), annual && plan.monthly > 0 ? (_jsx(\"p\", { className: \"text-caption text-fg-subtle\", \"data-part\": \"plan-billing-note\", children: interpolate(billedAnnuallyLabel ?? 'Billed {total} yearly', {\n total: formatMoney(annualTotal(plan.monthly, annualDiscount), currency, locale),\n }) })) : null] }), _jsx(\"ul\", { className: \"flex flex-1 flex-col gap-1.5\", children: plan.features.map((feature, index) => (_jsxs(\"li\", { className: \"flex items-start gap-1.5 text-caption text-fg-muted\", children: [_jsx(Check, { className: \"mt-px size-3.5 shrink-0 text-pos\", \"aria-hidden\": \"true\" }), _jsx(\"span\", { children: feature })] }, `${plan.id}-f${index}`))) }), _jsx(Button, { variant: plan.current ? 'secondary' : plan.promoted ? 'primary' : 'outline', size: \"sm\", disabled: plan.current, \"data-part\": \"plan-cta\", onClick: () => {\n if (selectable)\n setSelected(plan.id);\n onSelect?.(plan.id);\n }, children: plan.current ? (currentLabel ?? 'Current plan') : (ctaLabel ?? 'Choose plan') })] }, plan.id));\n }) })] }));\n}\n/** Project the bound `record-list` onto the plan model. */\nfunction plansOf(config, data) {\n const rows = opsRowsOf(data);\n return rows.map((row, index) => {\n const id = labelField(row, config.idField, `plan-${index}`);\n const name = labelField(row, config.nameField, `Plan ${index + 1}`);\n return {\n id,\n name,\n tagline: row[config.taglineField] === undefined ? undefined : labelField(row, config.taglineField, ''),\n monthly: countField(row, config.priceField, 0),\n features: stringArrayField(row, config.featuresField),\n // `promotedTier` overrides the column, and matches on id OR name so a host\n // can promote by either without knowing the table's key strategy.\n promoted: config.promotedTier === undefined\n ? (booleanField(row, config.promotedField) ?? false)\n : config.promotedTier === id || config.promotedTier === name,\n current: booleanField(row, config.currentField) ?? false,\n };\n });\n}\nexport function PlanPricingCardsWidget({ config, data, onEvent }) {\n const plans = useMemo(() => plansOf(config, data), [config, data]);\n if (plans.length === 0) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No plans', body: config.emptyBody ?? 'Bind a plans table with a name and a monthly price.' }));\n }\n return (_jsx(PlanPricingCardsView, { plans: plans, annualDiscount: config.annualDiscount, period: config.period, selectable: config.selectable, ...(config.format?.currency === undefined ? {} : { currency: config.format.currency }), ...(config.format?.locale === undefined ? {} : { locale: config.format.locale }), ...(config.ctaLabel === undefined ? {} : { ctaLabel: config.ctaLabel }), ...(config.currentLabel === undefined ? {} : { currentLabel: config.currentLabel }), ...(config.popularLabel === undefined ? {} : { popularLabel: config.popularLabel }), ...(config.monthlyLabel === undefined ? {} : { monthlyLabel: config.monthlyLabel }), ...(config.annualLabel === undefined ? {} : { annualLabel: config.annualLabel }), ...(config.perMonthLabel === undefined ? {} : { perMonthLabel: config.perMonthLabel }), ...(config.billedAnnuallyLabel === undefined ? {} : { billedAnnuallyLabel: config.billedAnnuallyLabel }), ...(config.testId === undefined ? {} : { testId: config.testId }), ...(config.href === undefined\n ? {}\n : {\n onSelect: (planId) => {\n void onEvent({ type: 'drill-through', href: `${config.href}?plan=${encodeURIComponent(planId)}` });\n },\n }) }));\n}\n//# sourceMappingURL=PlanPricingCards.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { Badge, Button, Input, MonoText, Tag } from '@adminium/ui';\nimport { Play } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport { apiPlaygroundConfigSchema, apiPlaygroundDemoData } from './domain-ops-config.js';\nimport { METHOD_TONE, countField, formatMs, httpMethodOf, labelField, opsBindingSourceOf, opsRowOf, } from './domain-ops-lib.js';\nimport { asRecord } from './domain-lib.js';\nimport { OpsEmpty } from './OpsEmpty.js';\n/**\n * `api-playground` (annex §13) — the request composer (method, path, editable\n * query params / body fields) feeding the response viewer: a dark terminal block\n * with the body and a status pill. Evidence: API & Backend.\n *\n * IT DOES NOT MAKE REQUESTS. This is a security boundary, not a shortcut:\n * a widget that could issue arbitrary authenticated calls from a dashboard cell\n * — with the viewer's session, against a path the stored page config chose — is\n * a confused deputy. So Send does exactly two things:\n * 1. reveals the response pane, rendering the CANNED body from the bound\n * payload (annex: \"simulated/real Send with latency\"; simulated is what\n * this implements, and `sandboxMode` defaults true);\n * 2. for a WRITE method, emits a `mutate` intent describing the composed\n * request, which the host executes through the CRUD API with its\n * permission checks, undo and audit — the same contract every editing\n * widget follows (04 §2.1). A GET has nothing to mutate and emits nothing.\n * Unbound → no intent either way; the pane still previews, which is the whole\n * point of a playground.\n *\n * SYNTAX HIGHLIGHTING is out of scope (see `code-snippet-block`): the response\n * is a mono block, not a tokenized one. The status pill and the latency carry\n * the signal a reader actually scans for.\n *\n * DIRECTION: the response body is a fixed-LTR island — it is CODE. JSON is\n * left-to-right in every locale, so the pane sets `dir=\"ltr\"` explicitly rather\n * than inheriting an RTL page's direction, which would scatter braces and\n * punctuation to the wrong ends of each line (10-i18n-theming.md §5.5). The\n * chrome around it — labels, params, the Send button — mirrors normally.\n */\nexport { apiPlaygroundConfigSchema, apiPlaygroundDemoData };\n/** Write methods carry a body the host could actually execute. */\nconst WRITE_INTENT = {\n POST: 'insert',\n PATCH: 'update',\n PUT: 'update',\n DELETE: 'delete',\n};\n/** Stable pretty-print for the canned body. */\nfunction prettyJson(value) {\n try {\n return JSON.stringify(value, null, 2) ?? 'null';\n }\n catch {\n // A payload with a cycle (or a BigInt) must not take the widget down.\n return String(value);\n }\n}\nexport function ApiPlaygroundView({ endpoint, paradigm = 'REST', locale, sendLabel, requestLabel, responseLabel, paramsLabel, responsePlaceholder, onSend, testId, }) {\n const [values, setValues] = useState(() => Object.fromEntries(endpoint.params.map((param) => [param.key, param.value])));\n const [sent, setSent] = useState(false);\n const statusTone = endpoint.status >= 500 ? 'danger' : endpoint.status >= 400 ? 'warn' : 'pos';\n return (_jsxs(\"div\", { \"data-widget\": \"api-playground\", \"data-testid\": testId, \"data-paradigm\": paradigm, className: \"flex h-full flex-col gap-3 overflow-auto px-4 pb-4\", children: [_jsxs(\"section\", { className: \"flex flex-col gap-2\", \"aria-label\": requestLabel ?? 'Request', children: [_jsxs(\"div\", { className: \"flex items-center gap-2\", children: [_jsx(Tag, { mono: true, tone: METHOD_TONE[endpoint.method], \"data-part\": \"playground-method\", children: endpoint.method }), _jsx(MonoText, { dir: \"ltr\", className: \"min-w-0 flex-1 truncate text-body-sm text-fg\", \"data-part\": \"playground-path\", children: endpoint.path }), _jsx(Button, { size: \"sm\", iconLeft: _jsx(Play, { className: \"size-3.5\" }), \"data-part\": \"playground-send\", onClick: () => {\n setSent(true);\n onSend?.(values);\n }, children: sendLabel ?? 'Send' })] }), endpoint.params.length === 0 ? null : (_jsxs(\"div\", { className: \"flex flex-col gap-1.5\", children: [_jsx(\"p\", { className: \"text-caption font-semibold text-fg-subtle\", children: paramsLabel ?? 'Parameters' }), endpoint.params.map((param) => (_jsxs(\"label\", { className: \"flex items-center gap-2\", \"data-part\": \"playground-param\", children: [_jsx(MonoText, { className: \"w-28 shrink-0 truncate text-caption text-fg-muted\", children: param.key }), _jsx(Input, { mono: true, value: values[param.key] ?? '', \"data-param\": param.key, onChange: (event) => setValues((current) => ({ ...current, [param.key]: event.target.value })) })] }, param.key)))] }))] }), _jsxs(\"section\", { className: \"flex min-h-0 flex-1 flex-col gap-1.5\", \"aria-label\": responseLabel ?? 'Response', children: [_jsxs(\"div\", { className: \"flex items-center gap-2\", children: [_jsx(\"p\", { className: \"text-caption font-semibold text-fg-subtle\", children: responseLabel ?? 'Response' }), !sent ? null : (_jsxs(_Fragment, { children: [_jsx(Badge, { tone: statusTone, dot: true, \"data-part\": \"playground-status\", children: String(endpoint.status) }), _jsx(MonoText, { className: \"text-caption text-fg-subtle\", \"data-part\": \"playground-latency\", children: formatMs(endpoint.latencyMs, locale) })] }))] }), _jsx(\"div\", { dir: \"ltr\", \"data-testid\": \"playground-response\", className: \"min-h-24 flex-1 overflow-auto rounded-lg bg-fg p-3\", children: sent ? (_jsx(MonoText, { asChild: true, children: _jsx(\"pre\", { className: \"whitespace-pre-wrap break-words text-caption text-bg\", children: prettyJson(endpoint.sample) }) })) : (_jsx(\"p\", { className: \"text-caption text-bg/60\", children: responsePlaceholder ?? 'Send the request to see the response.' })) })] })] }));\n}\n/** Project the bound `record` onto the endpoint model. */\nfunction endpointOf(config, data) {\n const row = opsRowOf(data);\n if (row === null)\n return null;\n const rawParams = row[config.paramsField];\n const params = [];\n if (Array.isArray(rawParams)) {\n for (const entry of rawParams) {\n const param = asRecord(entry);\n if (param === null || typeof param.key !== 'string')\n continue;\n params.push({ key: param.key, value: param.value === undefined ? '' : String(param.value) });\n }\n }\n return {\n method: httpMethodOf(row[config.methodField]),\n path: labelField(row, config.pathField, '/'),\n params,\n sample: row[config.sampleField] ?? null,\n status: countField(row, config.statusField, 200),\n latencyMs: countField(row, config.latencyField, 0),\n };\n}\nexport function ApiPlaygroundWidget({ config, data, onEvent }) {\n const endpoint = useMemo(() => endpointOf(config, data), [config, data]);\n const source = useMemo(() => opsBindingSourceOf(config.binding), [config.binding]);\n if (endpoint === null) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No endpoint selected', body: config.emptyBody ?? 'Pick an endpoint to compose a request against it.' }));\n }\n const intent = WRITE_INTENT[endpoint.method];\n return (_jsx(ApiPlaygroundView, { endpoint: endpoint, paradigm: config.paradigm, ...(config.format?.locale === undefined ? {} : { locale: config.format.locale }), ...(config.sendLabel === undefined ? {} : { sendLabel: config.sendLabel }), ...(config.requestLabel === undefined ? {} : { requestLabel: config.requestLabel }), ...(config.responseLabel === undefined ? {} : { responseLabel: config.responseLabel }), ...(config.paramsLabel === undefined ? {} : { paramsLabel: config.paramsLabel }), ...(config.responsePlaceholder === undefined ? {} : { responsePlaceholder: config.responsePlaceholder }), ...(config.testId === undefined ? {} : { testId: config.testId }), ...(source === null || intent === undefined\n ? {}\n : {\n onSend: (values) => {\n void onEvent({\n type: 'mutate',\n intent,\n connectionId: source.connectionId,\n table: source.table,\n values,\n });\n },\n }) }));\n}\n//# sourceMappingURL=ApiPlayground.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Badge, Button, IconTile, MonoText } from '@adminium/ui';\nimport { Database, Play, RefreshCw, Square } from 'lucide-react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { liveTimerConfigSchema, liveTimerDemoData, OPS_DEMO_NOW_MS, syncStatusCardConfigSchema, syncStatusCardDemoData, } from './domain-ops-config.js';\nimport { booleanField, countField, formatCompact, formatCount, formatDuration, formatMs, formatStamp, instantField, labelField, oneOf, opsBindingSourceOf, opsRowOf, resolveNow, } from './domain-ops-lib.js';\nimport { OpsEmpty } from './OpsEmpty.js';\nexport { liveTimerConfigSchema, liveTimerDemoData, syncStatusCardConfigSchema, syncStatusCardDemoData, };\nexport function SyncStatusCardView({ status, locale, syncAction, connectedLabel, disconnectedLabel, rowsSyncedLabel, tablesLabel, lastSyncLabel, nextSyncLabel, syncingLabel, onSync, testId, }) {\n const syncing = status.phase === 'syncing';\n const tone = status.connected ? (status.phase === 'failed' ? 'danger' : 'pos') : 'danger';\n const last = formatStamp(status.lastSync, locale);\n const next = formatStamp(status.nextSync, locale);\n return (_jsxs(\"div\", { \"data-widget\": \"sync-status-card\", \"data-testid\": testId, \"data-phase\": status.phase, className: \"flex h-full flex-col gap-3 overflow-auto px-4 pb-4\", children: [_jsxs(\"div\", { className: \"flex items-start gap-2.5\", children: [_jsx(IconTile, { tone: tone, size: \"sm\", icon: _jsx(Database, {}) }), _jsxs(\"div\", { className: \"min-w-0 flex-1\", children: [_jsx(MonoText, { className: \"block truncate text-body-sm font-bold text-fg\", children: status.name }), status.engine === undefined ? null : (_jsx(\"p\", { className: \"truncate text-caption text-fg-subtle\", children: status.engine }))] }), _jsx(Badge, { tone: tone, dot: true, \"data-part\": \"sync-connection\", children: status.connected\n ? status.latencyMs === undefined\n ? (connectedLabel ?? 'Connected')\n : `${connectedLabel ?? 'Connected'} · ${formatMs(status.latencyMs, locale)}`\n : (disconnectedLabel ?? 'Disconnected') })] }), _jsxs(\"div\", { children: [_jsx(MonoText, { \"data-part\": \"sync-rows\", className: \"text-h2 font-bold tabular-nums text-fg\", children: formatCompact(status.rowsSynced, locale) }), _jsx(\"p\", { className: \"text-caption text-fg-subtle\", children: rowsSyncedLabel ?? 'Rows synced' })] }), _jsxs(\"dl\", { className: \"grid grid-cols-2 gap-x-3 gap-y-1.5 text-caption\", children: [_jsxs(\"div\", { children: [_jsx(\"dt\", { className: \"text-fg-subtle\", children: tablesLabel ?? 'Tables' }), _jsx(\"dd\", { children: _jsx(MonoText, { className: \"font-semibold text-fg\", children: formatCount(status.tables, locale) }) })] }), last === undefined ? null : (_jsxs(\"div\", { className: \"min-w-0\", children: [_jsx(\"dt\", { className: \"text-fg-subtle\", children: lastSyncLabel ?? 'Last sync' }), _jsx(\"dd\", { className: \"truncate text-fg\", children: last })] })), next === undefined ? null : (_jsxs(\"div\", { className: \"min-w-0\", children: [_jsx(\"dt\", { className: \"text-fg-subtle\", children: nextSyncLabel ?? 'Next sync' }), _jsx(\"dd\", { className: \"truncate text-fg\", children: next })] }))] }), onSync === undefined ? null : (_jsx(Button, { variant: \"secondary\", size: \"sm\", className: \"mt-auto self-start\", \"data-part\": \"sync-now\", disabled: syncing, iconLeft: _jsx(RefreshCw, { className: `size-3.5 ${syncing ? 'animate-spin' : ''}` }), onClick: onSync, children: syncing ? (syncingLabel ?? 'Syncing…') : (syncAction ?? 'Sync now') }))] }));\n}\n/** Project the bound `record` onto the sync model (config-driven columns). */\nfunction syncStatusOf(config, data) {\n const row = opsRowOf(data);\n if (row === null)\n return null;\n return {\n name: labelField(row, config.nameField, 'Connection'),\n engine: row[config.engineField] === undefined ? undefined : labelField(row, config.engineField, ''),\n // Absent column → assume connected: the card binds a connection the host\n // just queried, so \"no `connected` column\" means the table does not track\n // it, not that the database is down.\n connected: booleanField(row, config.connectedField) ?? true,\n latencyMs: row[config.latencyField] === undefined ? undefined : countField(row, config.latencyField, 0),\n rowsSynced: countField(row, config.rowsSyncedField, 0),\n tables: countField(row, config.tablesField, 0),\n lastSync: instantField(row, config.lastSyncField),\n nextSync: instantField(row, config.nextSyncField),\n phase: oneOf(row[config.phaseField], ['idle', 'syncing', 'synced', 'failed'], 'idle'),\n };\n}\nexport function SyncStatusCardWidget({ config, data, onEvent }) {\n const status = useMemo(() => syncStatusOf(config, data), [config, data]);\n const source = useMemo(() => opsBindingSourceOf(config.binding), [config.binding]);\n if (status === null) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No connection', body: config.emptyBody ?? 'Bind a connection row to show its sync status.' }));\n }\n return (_jsx(SyncStatusCardView, { status: status, ...(config.format?.locale === undefined ? {} : { locale: config.format.locale }), ...(config.syncAction === undefined ? {} : { syncAction: config.syncAction }), ...(config.connectedLabel === undefined ? {} : { connectedLabel: config.connectedLabel }), ...(config.disconnectedLabel === undefined ? {} : { disconnectedLabel: config.disconnectedLabel }), ...(config.rowsSyncedLabel === undefined ? {} : { rowsSyncedLabel: config.rowsSyncedLabel }), ...(config.tablesLabel === undefined ? {} : { tablesLabel: config.tablesLabel }), ...(config.lastSyncLabel === undefined ? {} : { lastSyncLabel: config.lastSyncLabel }), ...(config.nextSyncLabel === undefined ? {} : { nextSyncLabel: config.nextSyncLabel }), ...(config.syncingLabel === undefined ? {} : { syncingLabel: config.syncingLabel }), ...(config.testId === undefined ? {} : { testId: config.testId }), ...(source === null\n ? {}\n : {\n onSync: () => void onEvent({\n type: 'mutate',\n intent: 'update',\n connectionId: source.connectionId,\n table: source.table,\n values: { phase: 'syncing' },\n }),\n }) }));\n}\n/**\n * Total elapsed seconds: the paused total plus the current run. PURE in `now` —\n * this function is what the tick re-invokes, and it is why the readout is a\n * function of injected state rather than of when React happened to render.\n */\nexport function timerSeconds(timer, now) {\n if (!timer.running || timer.startedAt === undefined)\n return Math.max(0, timer.elapsed);\n // A `startedAt` in the FUTURE (clock skew between the DB and the browser, or a\n // row written by a server an hour ahead) would otherwise subtract from the\n // paused total and render a stopwatch running backwards.\n const run = Math.max(0, (now - timer.startedAt) / 1000);\n return Math.max(0, timer.elapsed + run);\n}\nexport function LiveTimerView({ timer, now, locale, startLabel, stopLabel, taskPlaceholder, onStart, onStop, testId, }) {\n const seconds = timerSeconds(timer, now);\n /*\n The annex's \"running state restyles card (accent→danger, play→square)\".\n `Button` carries no `tone` — the accent/danger axis is its `variant`, so the\n restyle is primary (accent) → destructive (danger).\n */\n const variant = timer.running ? 'destructive' : 'primary';\n return (_jsxs(\"div\", { \"data-widget\": \"live-timer\", \"data-testid\": testId, \"data-running\": timer.running ? '' : undefined, className: \"flex h-full flex-col justify-center gap-3 px-4 pb-4 sm:flex-row sm:items-center\", children: [_jsxs(\"div\", { className: \"min-w-0 flex-1\", children: [_jsx(\"p\", { className: \"truncate text-body-sm font-semibold text-fg\", \"data-part\": \"timer-task\", children: timer.taskName === '' ? (taskPlaceholder ?? 'Untitled task') : timer.taskName }), timer.project === undefined ? null : (_jsx(Badge, { tone: \"neutral\", className: \"mt-0.5\", \"data-part\": \"timer-project\", children: timer.project }))] }), _jsx(MonoText, { \"data-part\": \"timer-readout\", \"aria-live\": \"off\", className: `text-h1 font-bold tabular-nums ${timer.running ? 'text-danger' : 'text-fg'}`, children: formatDuration(seconds, locale) }), timer.running\n ? onStop === undefined\n ? null\n : (_jsx(Button, { variant: variant, size: \"sm\", \"data-part\": \"timer-stop\", iconLeft: _jsx(Square, { className: \"size-3.5\" }), onClick: () => onStop(Math.floor(seconds)), children: stopLabel ?? 'Stop' }))\n : onStart === undefined\n ? null\n : (_jsx(Button, { variant: variant, size: \"sm\", \"data-part\": \"timer-start\", iconLeft: _jsx(Play, { className: \"size-3.5\" }), onClick: onStart, children: startLabel ?? 'Start' }))] }));\n}\n/** Project the bound `record` onto the timer model (config-driven columns). */\nfunction timerOf(config, data) {\n const row = opsRowOf(data);\n if (row === null)\n return null;\n return {\n taskName: labelField(row, config.taskField, ''),\n project: row[config.projectField] === undefined ? undefined : labelField(row, config.projectField, ''),\n running: booleanField(row, config.runningField) ?? false,\n elapsed: countField(row, config.elapsedField, 0),\n startedAt: instantField(row, config.startedAtField),\n };\n}\n/**\n * The 1s tick — and the reason it is a hook rather than an inline interval.\n *\n * `pinned` (a `format.referenceTime`) means the host wants a FIXED instant:\n * demo payloads, unit tests and VRT captures all pin it, and under a pin the\n * readout must be a pure function of config + data. So the interval is not\n * started at all — not started-and-ignored, which would still schedule timers in\n * every test that mounts this widget and leak them across cases.\n *\n * It also does not run while STOPPED: a paused stopwatch's readout cannot change,\n * so ticking it would be pure wakeups for an unchanging number.\n */\nfunction useTimerNow(pinned, running, fallback) {\n const [tick, setTick] = useState(fallback);\n useEffect(() => {\n if (pinned !== undefined || !running)\n return undefined;\n // Seeded immediately so the first paint after mount reflects the real clock\n // rather than the demo-epoch fallback for a whole second.\n setTick(Date.now());\n const handle = setInterval(() => setTick(Date.now()), 1000);\n return () => clearInterval(handle);\n }, [pinned, running]);\n return resolveNow(pinned, tick);\n}\nexport function LiveTimerWidget({ config, data, onEvent }) {\n const timer = useMemo(() => timerOf(config, data), [config, data]);\n const source = useMemo(() => opsBindingSourceOf(config.binding), [config.binding]);\n const now = useTimerNow(config.format?.referenceTime, timer?.running ?? false, OPS_DEMO_NOW_MS);\n if (timer === null) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No timer', body: config.emptyBody ?? 'Bind a time-entry row with a task and a duration column.' }));\n }\n return (_jsx(LiveTimerView, { timer: timer, now: now, ...(config.format?.locale === undefined ? {} : { locale: config.format.locale }), ...(config.startLabel === undefined ? {} : { startLabel: config.startLabel }), ...(config.stopLabel === undefined ? {} : { stopLabel: config.stopLabel }), ...(config.taskPlaceholder === undefined ? {} : { taskPlaceholder: config.taskPlaceholder }), ...(config.testId === undefined ? {} : { testId: config.testId }), ...(source === null\n ? {}\n : {\n onStart: () => void onEvent({\n type: 'mutate',\n intent: 'update',\n connectionId: source.connectionId,\n table: source.table,\n values: { [config.runningField]: true, [config.startedAtField]: now },\n }),\n /*\n The annex's \"stop auto-creates a time entry\" — an INSERT, not an\n update: the row this widget binds is the running stopwatch, and the\n entry it produces is a new record in the log.\n \n `minSeconds` (annex) discards a too-short run rather than saving it:\n a mis-click that logs a 2-second entry is noise a user then has to\n clean up. The stopwatch still resets — the intent below always\n clears the running flag — so a discarded run does not leave the\n timer stuck on.\n */\n onStop: (seconds) => {\n if (seconds >= config.minSeconds) {\n void onEvent({\n type: 'mutate',\n intent: 'insert',\n connectionId: source.connectionId,\n table: source.table,\n values: {\n [config.taskField]: timer.taskName,\n ...(timer.project === undefined ? {} : { [config.projectField]: timer.project }),\n [config.elapsedField]: seconds,\n billable: config.defaultBillable,\n },\n });\n }\n void onEvent({\n type: 'mutate',\n intent: 'update',\n connectionId: source.connectionId,\n table: source.table,\n values: { [config.runningField]: false, [config.elapsedField]: 0 },\n });\n },\n }) }));\n}\n//# sourceMappingURL=OpsMonitoring.js.map","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Avatar, Badge, IconButton, MonoText, Switch, Tag } from '@adminium/ui';\nimport { Check, Copy, Quote } from 'lucide-react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { ipAllowlistCardConfigSchema, ipAllowlistCardDemoData, policyListConfigSchema, policyListDemoData, testimonialCardConfigSchema, testimonialCardDemoData, trustBadgesConfigSchema, trustBadgesDemoData, } from './domain-ops-config.js';\nimport { booleanField, labelField, opsBindingSourceOf, opsRowOf, opsRowsOf, } from './domain-ops-lib.js';\nimport { OpsEmpty } from './OpsEmpty.js';\nexport { ipAllowlistCardConfigSchema, ipAllowlistCardDemoData, policyListConfigSchema, policyListDemoData, testimonialCardConfigSchema, testimonialCardDemoData, trustBadgesConfigSchema, trustBadgesDemoData, };\n/**\n * TRACK OPS — the ACCESS/ASSURANCE half of the annex §13 ops cards, grouped in\n * one module because all four are read-mostly statements about who may do what,\n * and three of them share the same tiny list-of-claims shape:\n *\n * `policy-list`, `ip-allowlist-card`, `trust-badges`, `testimonial-card`.\n *\n * NEVER WRITES: `policy-list`'s enable toggle emits a `mutate` intent the host\n * runs through the CRUD API with undo + audit (04 §2.1) — disabling an RLS\n * policy is exactly the kind of change that must be audited and reversible, so\n * the widget describes the intent and the host owns the consequence. Unbound →\n * the toggle renders read-only rather than lying about a state it cannot persist.\n *\n * `testimonial-card` / `trust-badges` are the marketing pair (annex: \"Kept for\n * adminium.dev landing/marketplace pages\"): presentational, no intents, no\n * writes.\n */\n// ── policy-list ─────────────────────────────────────────────────────────────\n/**\n * SQL command → tone. Read is informational; the mutating commands escalate, and\n * `ALL` is the widest grant there is, so it reads danger — a policy list where\n * \"ALL\" looked as calm as \"SELECT\" would bury the one row most worth noticing.\n */\nconst CMD_TONE = {\n SELECT: 'info',\n INSERT: 'pos',\n UPDATE: 'warn',\n DELETE: 'danger',\n ALL: 'danger',\n};\nexport function PolicyListView({ policies, enableLabel, onToggle, testId }) {\n return (_jsx(\"ul\", { \"data-widget\": \"policy-list\", \"data-testid\": testId, className: \"flex h-full flex-col gap-1.5 overflow-auto px-4 pb-4\", children: policies.map((policy) => (_jsxs(\"li\", { \"data-part\": \"policy-row\", \"data-enabled\": policy.enabled ? '' : undefined, className: \"flex items-center gap-2 rounded-lg border border-border bg-surface-2 p-2.5\", children: [_jsxs(\"div\", { className: `flex min-w-0 flex-1 items-center gap-2 ${policy.enabled ? '' : 'opacity-50'}`, children: [_jsx(Tag, { mono: true, tone: CMD_TONE[policy.cmd] ?? 'neutral', className: \"shrink-0\", \"data-part\": \"policy-cmd\", children: policy.cmd }), _jsxs(\"div\", { className: \"min-w-0 flex-1\", children: [_jsx(\"p\", { className: \"truncate text-body-sm text-fg\", \"data-part\": \"policy-name\", children: policy.name }), _jsx(MonoText, { className: \"block truncate text-caption text-fg-subtle\", \"data-part\": \"policy-role\", children: policy.role })] })] }), _jsx(Switch, { \"data-part\": \"policy-toggle\", checked: policy.enabled, \"aria-label\": enableLabel ?? policy.name, className: \"shrink-0\", ...(onToggle === undefined\n ? { disabled: true }\n : { onCheckedChange: (checked) => onToggle(policy, checked) }) })] }, policy.id))) }));\n}\n/** Project the bound `record-list` onto the policy model. */\nfunction policiesOf(config, data) {\n return opsRowsOf(data).map((row, index) => ({\n id: labelField(row, config.idField, `p${index}`),\n name: labelField(row, config.nameField, ''),\n // Uppercased so a pg catalog's lowercase `cmd` still hits the tone map — the\n // vocabulary is SQL's, and SQL commands are conventionally upper-cased here.\n cmd: labelField(row, config.cmdField, '').toUpperCase(),\n role: labelField(row, config.roleField, ''),\n enabled: booleanField(row, config.enabledField) ?? false,\n }));\n}\nexport function PolicyListWidget({ config, data, onEvent }) {\n const policies = useMemo(() => policiesOf(config, data), [config, data]);\n const source = useMemo(() => opsBindingSourceOf(config.binding), [config.binding]);\n if (policies.length === 0) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No policies', body: config.emptyBody ?? 'This table has no row-level security policies yet.' }));\n }\n return (_jsx(PolicyListView, { policies: policies, ...(config.enableLabel === undefined ? {} : { enableLabel: config.enableLabel }), ...(config.testId === undefined ? {} : { testId: config.testId }), ...(source === null\n ? {}\n : {\n onToggle: (policy, enabled) => void onEvent({\n type: 'mutate',\n intent: 'update',\n connectionId: source.connectionId,\n table: source.table,\n recordId: policy.id,\n values: { [config.enabledField]: enabled },\n }),\n }) }));\n}\nexport function IpAllowlistCardView({ entries, copyResetMs = 1400, copyLabel, copiedLabel, testId, }) {\n const [copied, setCopied] = useState(null);\n const timer = useRef(undefined);\n useEffect(() => () => clearTimeout(timer.current), []);\n /**\n * The annex's \"Copy → 'Copied ✓' (1.4s)\". `navigator.clipboard` is undefined\n * under plain HTTP and in happy-dom, so the write is optional-chained and the\n * confirmation is driven by our own state either way — the button stays honest\n * rather than throwing. Copying a SECOND row restarts the window instead of\n * inheriting the first row's timer.\n */\n const copy = (ip) => {\n void globalThis.navigator?.clipboard?.writeText?.(ip)?.catch?.(() => { });\n setCopied(ip);\n clearTimeout(timer.current);\n timer.current = setTimeout(() => setCopied(null), copyResetMs);\n };\n return (_jsx(\"ul\", { \"data-widget\": \"ip-allowlist-card\", \"data-testid\": testId, className: \"flex h-full flex-col gap-1 overflow-auto px-4 pb-4\", children: entries.map((entry) => (_jsxs(\"li\", { \"data-part\": \"allowlist-row\", className: \"flex items-center gap-2 rounded-md bg-surface-2 px-2.5 py-1.5\", children: [_jsx(MonoText, { dir: \"ltr\", className: \"min-w-0 flex-1 truncate text-caption text-fg\", \"data-part\": \"allowlist-ip\", children: entry.ip }), entry.label === undefined ? null : (_jsx(Badge, { tone: \"neutral\", className: \"shrink-0\", \"data-part\": \"allowlist-label\", children: entry.label })), _jsx(IconButton, { size: \"sm\", variant: \"ghost\", className: \"shrink-0\", \"data-part\": \"allowlist-copy\", label: copied === entry.ip ? (copiedLabel ?? 'Copied') : (copyLabel ?? 'Copy'), onClick: () => copy(entry.ip), children: copied === entry.ip ? _jsx(Check, { className: \"size-3.5 text-pos\" }) : _jsx(Copy, { className: \"size-3.5\" }) })] }, entry.ip))) }));\n}\nexport function IpAllowlistCardWidget({ config, data }) {\n const entries = useMemo(() => opsRowsOf(data)\n .map((row) => ({\n ip: labelField(row, config.ipField, ''),\n label: row[config.labelFieldName] === undefined ? undefined : labelField(row, config.labelFieldName, ''),\n }))\n // An allowlist row with no address is not a row — it is a copy button\n // that would put an empty string on the clipboard.\n .filter((entry) => entry.ip !== ''), [config, data]);\n if (entries.length === 0) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No egress IPs', body: config.emptyBody ?? 'Egress addresses appear here once the connection is provisioned.' }));\n }\n return (_jsx(IpAllowlistCardView, { entries: entries, copyResetMs: config.copyResetMs, ...(config.copyLabel === undefined ? {} : { copyLabel: config.copyLabel }), ...(config.copiedLabel === undefined ? {} : { copiedLabel: config.copiedLabel }), ...(config.testId === undefined ? {} : { testId: config.testId }) }));\n}\nexport function TrustBadgesView({ badges, testId }) {\n return (_jsx(\"ul\", { \"data-widget\": \"trust-badges\", \"data-testid\": testId, className: \"flex flex-wrap items-center gap-x-2 gap-y-1 px-4 pb-4 text-caption text-fg-muted\", children: badges.map((badge, index) => (_jsxs(\"li\", { className: \"flex items-center gap-2\", \"data-part\": \"trust-badge\", children: [index === 0 ? null : (_jsx(\"span\", { \"aria-hidden\": \"true\", className: \"text-fg-subtle\", children: \"\\u00B7\" })), _jsx(\"span\", { children: badge })] }, badge))) }));\n}\nexport function TrustBadgesWidget({ config, data }) {\n /*\n Host-supplied `badges` render INSTEAD of the bound rows (the schema's\n contract) — a marketing page states its own claims in config rather than\n binding a table for five strings.\n */\n const badges = useMemo(() => config.badges ??\n opsRowsOf(data)\n .map((row) => labelField(row, config.labelFieldName, ''))\n .filter((label) => label !== ''), [config.badges, config.labelFieldName, data]);\n if (badges.length === 0) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No badges', body: config.emptyBody ?? 'Add compliance claims in config or bind a badges table.' }));\n }\n return (_jsx(TrustBadgesView, { badges: badges, ...(config.testId === undefined ? {} : { testId: config.testId }) }));\n}\nexport function TestimonialCardView({ testimonial, locale, testId }) {\n const attribution = [testimonial.role, testimonial.company].filter((part) => part !== undefined && part !== '');\n return (_jsxs(\"figure\", { \"data-widget\": \"testimonial-card\", \"data-testid\": testId, className: \"flex h-full flex-col gap-3 overflow-auto px-4 pb-4\", children: [_jsx(Quote, { \"aria-hidden\": \"true\", className: \"size-5 shrink-0 text-accent opacity-60\" }), _jsx(\"blockquote\", { className: \"flex-1 text-body-sm leading-relaxed text-fg\", \"data-part\": \"testimonial-quote\", children: testimonial.quote }), _jsxs(\"figcaption\", { className: \"flex items-center gap-2.5\", children: [_jsx(Avatar, { size: \"sm\", name: testimonial.initials ?? testimonial.name, label: testimonial.name, \"data-part\": \"testimonial-avatar\", ...(locale === undefined ? {} : { locale }) }), _jsxs(\"div\", { className: \"min-w-0\", children: [_jsx(\"p\", { className: \"truncate text-body-sm font-semibold text-fg\", \"data-part\": \"testimonial-name\", children: testimonial.name }), attribution.length === 0 ? null : (_jsx(\"p\", { className: \"truncate text-caption text-fg-subtle\", \"data-part\": \"testimonial-attribution\", children: attribution.join(' · ') }))] })] })] }));\n}\nexport function TestimonialCardWidget({ config, data }) {\n const testimonial = useMemo(() => {\n const row = opsRowOf(data);\n if (row === null)\n return null;\n const quote = labelField(row, config.quoteField, '');\n // A testimonial with no quote is not a testimonial — it is an avatar and a\n // name, which says nothing. Empty-state instead.\n if (quote === '')\n return null;\n return {\n quote,\n name: labelField(row, config.nameField, ''),\n role: row[config.roleField] === undefined ? undefined : labelField(row, config.roleField, ''),\n company: row[config.companyField] === undefined ? undefined : labelField(row, config.companyField, ''),\n initials: row[config.initialsField] === undefined ? undefined : labelField(row, config.initialsField, ''),\n };\n }, [config, data]);\n if (testimonial === null) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No testimonial', body: config.emptyBody ?? 'Bind a quote row to show a customer testimonial.' }));\n }\n return (_jsx(TestimonialCardView, { testimonial: testimonial, ...(config.format?.locale === undefined ? {} : { locale: config.format.locale }), ...(config.testId === undefined ? {} : { testId: config.testId }) }));\n}\n//# sourceMappingURL=OpsTrust.js.map","import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { Badge, Button, ProgressBar, Tag } from '@adminium/ui';\nimport { Check, FilePlus2 } from 'lucide-react';\nimport { useMemo } from 'react';\nimport { onboardingChecklistConfigSchema, onboardingChecklistDemoData, starterTemplatePickerConfigSchema, starterTemplatePickerDemoData, } from './domain-ops-config.js';\nimport { booleanField, countField, formatMinutes, formatPct, interpolate, labelField, numberArrayField, opsBindingSourceOf, opsRowsOf, } from './domain-ops-lib.js';\nimport { OpsEmpty } from './OpsEmpty.js';\nexport { onboardingChecklistConfigSchema, onboardingChecklistDemoData, starterTemplatePickerConfigSchema, starterTemplatePickerDemoData, };\n/**\n * TRACK OPS — the GETTING-STARTED half of the annex §13 ops cards, grouped in\n * one module because both render a set of do-this-next cards over a progress\n * readout:\n *\n * `starter-template-picker`, `onboarding-checklist`.\n *\n * `onboarding-checklist` IS NOT the app's checklist. apps/dashboard/src/onboarding\n * already ships a reactive checklist (M5-T06) wired to real workspace state, and\n * this widget deliberately shares NO code with it: `@adminium/widgets` must never\n * import `apps/*` — the dependency would invert the architecture (01 §2.3), and\n * `pnpm check-deps` enforces it. So this is built from the DATA CONTRACT (steps +\n * done flags) and stays presentational; the app's copy stays the app's. The two\n * are expected to converge later on the APP's side, by the app mounting this\n * widget — not by this widget reaching into the app.\n *\n * NEVER WRITES: ticking a step emits a `mutate` intent through `onEvent`; the CTA\n * emits `drill-through`. The host owns both (04 §2.1). Unbound → a step renders\n * as a read-only state rather than a checkbox that forgets what it was told.\n */\n// ── starter-template-picker ─────────────────────────────────────────────────\n/** Localized kicker copy per builder — the annex's per-`docType` thumbnail kicker. */\nconst DOC_KICKER = {\n invoice: 'Invoice',\n report: 'Report',\n email: 'Email',\n};\n/**\n * The thumbnail's mini chart (annex: \"mini chart from actual series\"). Pure divs\n * — no chart dependency for a 7-bar glyph in a picker tile — and `aria-hidden`,\n * because the tile's real title is right below it and seven announced bars would\n * be noise.\n */\nfunction StarterThumb({ series }) {\n // A flat-zero series would divide by zero; the denominator floors at 1 so the\n // strip renders flat rather than NaN-tall.\n const peak = Math.max(1, ...series);\n return (_jsx(\"div\", { \"aria-hidden\": \"true\", className: \"flex h-10 items-end gap-0.5\", \"data-part\": \"starter-thumb\", children: series.map((value, index) => (_jsx(\"span\", { className: \"h-[var(--bar-h)] min-w-px flex-1 rounded-xs bg-accent opacity-70\", style: { '--bar-h': `${Math.max(6, (value / peak) * 100)}%` } }, `${index}-${value}`))) }));\n}\nexport function StarterTemplatePickerView({ starters, docType, blankLabel, onSelect, testId, }) {\n const kicker = docType === undefined ? undefined : DOC_KICKER[docType];\n return (_jsx(\"ul\", { \"data-widget\": \"starter-template-picker\", \"data-testid\": testId, className: \"grid h-full grid-cols-[repeat(auto-fill,minmax(9rem,1fr))] gap-2 overflow-auto px-4 pb-4\", children: starters.map((starter) => (_jsx(\"li\", { children: _jsx(\"button\", { type: \"button\", \"data-part\": \"starter-card\", \"data-starter\": starter.id, \"data-blank\": starter.blank ? '' : undefined, disabled: onSelect === undefined, onClick: () => onSelect?.(starter), className: `flex h-full w-full flex-col gap-2 rounded-lg p-2.5 text-start transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent disabled:cursor-default ${starter.blank\n ? 'border-2 border-dashed border-border-strong text-fg-muted hover:border-accent hover:text-accent'\n : 'border border-border bg-surface-2 hover:border-accent'}`, children: starter.blank ? (_jsxs(\"span\", { className: \"flex flex-1 flex-col items-center justify-center gap-1.5 py-2\", children: [_jsx(FilePlus2, { \"aria-hidden\": \"true\", className: \"size-5\" }), _jsx(\"span\", { className: \"text-caption font-semibold\", children: blankLabel ?? 'Blank' })] })) : (_jsxs(_Fragment, { children: [_jsx(\"span\", { \"aria-hidden\": \"true\", className: \"block h-1 w-8 shrink-0 rounded-full bg-accent\" }), _jsx(StarterThumb, { series: starter.series }), _jsx(\"span\", { className: \"line-clamp-2 text-caption font-semibold text-fg\", \"data-part\": \"starter-title\", children: starter.title }), _jsxs(\"span\", { className: \"mt-auto flex flex-wrap items-center gap-1\", children: [starter.category === undefined ? null : (_jsx(Tag, { tone: \"neutral\", \"data-part\": \"starter-category\", children: starter.category })), kicker === undefined ? null : (_jsx(Tag, { tone: \"accent\", \"data-part\": \"starter-kicker\", children: kicker }))] })] })) }) }, starter.id))) }));\n}\nexport function StarterTemplatePickerWidget({ config, data, onEvent }) {\n const source = useMemo(() => opsBindingSourceOf(config.binding), [config.binding]);\n const starters = useMemo(() => {\n /*\n Host-supplied `defs` render INSTEAD of the bound rows (the schema's\n contract): a builder that ships its own starters does not also bind a\n starters table.\n */\n const fromConfig = config.defs?.map((def) => ({\n id: def.id,\n title: def.title,\n category: def.category,\n series: def.series ?? [],\n blank: false,\n }));\n const fromRows = opsRowsOf(data).map((row, index) => ({\n id: labelField(row, config.idField, `st${index}`),\n title: labelField(row, config.titleField, ''),\n category: row[config.categoryField] === undefined ? undefined : labelField(row, config.categoryField, ''),\n series: numberArrayField(row, config.seriesField),\n blank: false,\n }));\n const defs = fromConfig ?? fromRows;\n /*\n The annex's \"+ blank card\". It is appended AFTER the real starters and\n carries a reserved id: the blank tile seeds an empty doc rather than\n merging a starter over the base, so the host must be able to tell it apart\n from a row whose title happens to be \"Blank\".\n */\n return config.showBlank ? [...defs, { id: '__blank__', title: '', series: [], blank: true }] : defs;\n }, [config, data]);\n // `showBlank` alone is never content: a picker offering only the ghost tile has\n // no starters to pick, which is the empty state, not a one-card grid.\n const hasStarters = starters.some((starter) => !starter.blank);\n if (!hasStarters) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'No starters', body: config.emptyBody ?? 'Add starter definitions in config or bind a starters table.' }));\n }\n return (_jsx(StarterTemplatePickerView, { starters: starters, docType: config.docType, ...(config.blankLabel === undefined ? {} : { blankLabel: config.blankLabel }), ...(config.testId === undefined ? {} : { testId: config.testId }), ...(source === null\n ? {}\n : {\n /*\n Selection SEEDS a document (annex: \"selection seeds a full doc\") —\n an insert intent the host turns into a new doc from the starter.\n The blank tile seeds nothing but the base doc, so it carries no\n starter id.\n */\n onSelect: (starter) => void onEvent({\n type: 'mutate',\n intent: 'insert',\n connectionId: source.connectionId,\n table: source.table,\n values: {\n docType: config.docType,\n ...(starter.blank ? {} : { starterId: starter.id }),\n },\n }),\n }) }));\n}\n/**\n * The annex's live-recomputing `gauge-ring`, as a pure SVG ring.\n *\n * It does NOT import the `gauge-ring` WIDGET: widgets are registry entries the\n * host mounts, not components families reach across for — importing kpi's\n * component here would weld the domain chunk to the kpi chunk and defeat the\n * per-family split (04 §2.3). The ring is ~15 lines of geometry; the coupling\n * would cost more than it saves.\n *\n * `aria-hidden` because the same figure is stated in text right beside it.\n */\nfunction ProgressRing({ pct, label }) {\n const RADIUS = 20;\n const circumference = 2 * Math.PI * RADIUS;\n const dash = (Math.min(100, Math.max(0, pct)) / 100) * circumference;\n return (_jsxs(\"svg\", { \"aria-hidden\": \"true\", viewBox: \"0 0 48 48\", className: \"size-12 shrink-0 -rotate-90\", \"data-part\": \"checklist-gauge\", \"data-pct\": Math.round(pct), children: [_jsx(\"circle\", { cx: \"24\", cy: \"24\", r: RADIUS, fill: \"none\", strokeWidth: \"4\", className: \"stroke-surface-3\" }), _jsx(\"circle\", { cx: \"24\", cy: \"24\", r: RADIUS, fill: \"none\", strokeWidth: \"4\", strokeLinecap: \"round\", strokeDasharray: `${dash} ${circumference - dash}`, className: \"stroke-accent transition-[stroke-dasharray] duration-300\", children: _jsx(\"title\", { children: label }) })] }));\n}\nexport function OnboardingChecklistView({ tasks, locale, progressLabel, celebrateOnComplete = true, celebrateTitle, celebrateBody, onToggle, onAction, testId, }) {\n const done = tasks.filter((task) => task.done).length;\n const total = tasks.length;\n const pct = total === 0 ? 0 : (done / total) * 100;\n const complete = total > 0 && done === total;\n const progress = interpolate(progressLabel ?? '{done} of {total} done', {\n done: done.toString(),\n total: total.toString(),\n });\n return (_jsxs(\"div\", { \"data-widget\": \"onboarding-checklist\", \"data-testid\": testId, \"data-complete\": complete ? '' : undefined, className: \"flex h-full flex-col gap-3 overflow-auto px-4 pb-4\", children: [complete && celebrateOnComplete ? (_jsxs(\"div\", { className: \"flex items-center gap-2.5 rounded-lg bg-pos-soft p-3\", \"data-part\": \"checklist-celebrate\", children: [_jsx(Check, { \"aria-hidden\": \"true\", className: \"size-5 shrink-0 text-pos\" }), _jsxs(\"div\", { className: \"min-w-0\", children: [_jsx(\"p\", { className: \"text-body-sm font-bold text-pos\", children: celebrateTitle ?? 'All done' }), celebrateBody === undefined ? null : _jsx(\"p\", { className: \"text-caption text-fg-muted\", children: celebrateBody })] })] })) : (_jsxs(\"div\", { className: \"flex items-center gap-3\", children: [_jsx(ProgressRing, { pct: pct, label: progress }), _jsxs(\"div\", { className: \"min-w-0 flex-1\", children: [_jsx(\"p\", { className: \"text-body-sm font-semibold text-fg\", \"data-part\": \"checklist-progress\", children: progress }), _jsx(ProgressBar, { value: pct, tone: \"accent\", size: \"sm\", animated: false, label: progress, className: \"mt-1\" })] }), _jsx(\"span\", { className: \"shrink-0 text-caption font-bold tabular-nums text-accent\", \"data-part\": \"checklist-pct\", children: formatPct(pct, locale) })] })), _jsx(\"ul\", { className: \"flex flex-col gap-1.5\", children: tasks.map((task) => (_jsxs(\"li\", { \"data-part\": \"checklist-task\", \"data-done\": task.done ? '' : undefined, className: \"flex items-start gap-2.5 rounded-lg border border-border bg-surface-2 p-2.5\", children: [_jsx(\"input\", { type: \"checkbox\", \"data-part\": \"checklist-toggle\", className: \"mt-0.5 size-4 shrink-0 accent-accent\", checked: task.done, disabled: onToggle === undefined, \"aria-label\": task.title, onChange: (event) => onToggle?.(task, event.currentTarget.checked) }), _jsxs(\"div\", { className: \"min-w-0 flex-1\", children: [_jsx(\"p\", { className: `text-body-sm font-semibold ${task.done ? 'text-fg-muted line-through' : 'text-fg'}`, \"data-part\": \"checklist-title\", children: task.title }), task.desc === undefined ? null : (_jsx(\"p\", { className: \"mt-0.5 text-caption text-fg-subtle\", children: task.desc })), task.minutes === undefined ? null : (_jsx(Badge, { tone: \"neutral\", className: \"mt-1\", \"data-part\": \"checklist-time\", children: formatMinutes(task.minutes, locale) }))] }), task.action === undefined || task.done || onAction === undefined ? null : (_jsx(Button, { variant: \"secondary\", size: \"sm\", className: \"shrink-0\", \"data-part\": \"checklist-cta\", onClick: () => onAction(task), children: task.action }))] }, task.id))) })] }));\n}\nexport function OnboardingChecklistWidget({ config, data, onEvent }) {\n const source = useMemo(() => opsBindingSourceOf(config.binding), [config.binding]);\n const tasks = useMemo(() => {\n // Host-supplied `tasks` render INSTEAD of the bound rows (schema contract).\n const fromConfig = config.tasks?.map((task) => ({\n id: task.id,\n title: task.title,\n desc: task.description,\n minutes: task.minutes,\n action: task.action,\n href: task.href,\n done: task.done ?? false,\n }));\n return (fromConfig ??\n opsRowsOf(data).map((row, index) => ({\n id: labelField(row, config.idField, `step${index}`),\n title: labelField(row, config.titleField, ''),\n desc: row[config.descField] === undefined ? undefined : labelField(row, config.descField, ''),\n minutes: row[config.minutesField] === undefined ? undefined : countField(row, config.minutesField, 0),\n action: row[config.actionField] === undefined ? undefined : labelField(row, config.actionField, ''),\n href: row[config.hrefField] === undefined ? undefined : labelField(row, config.hrefField, ''),\n done: booleanField(row, config.doneField) ?? false,\n })));\n }, [config, data]);\n if (tasks.length === 0) {\n return (_jsx(OpsEmpty, { title: config.emptyTitle ?? 'Nothing to set up', body: config.emptyBody ?? 'Add onboarding steps in config or bind a steps table.' }));\n }\n return (_jsx(OnboardingChecklistView, { tasks: tasks, celebrateOnComplete: config.celebrateOnComplete, ...(config.format?.locale === undefined ? {} : { locale: config.format.locale }), ...(config.progressLabel === undefined ? {} : { progressLabel: config.progressLabel }), ...(config.celebrateTitle === undefined ? {} : { celebrateTitle: config.celebrateTitle }), ...(config.celebrateBody === undefined ? {} : { celebrateBody: config.celebrateBody }), ...(config.testId === undefined ? {} : { testId: config.testId }), \n /*\n The CTA is a DRILL-THROUGH, and it needs no binding: an href is a route,\n not a table write, so a config-driven (unbound) checklist still navigates.\n Ticking a step is a write and does need one — hence the two are gated\n separately.\n */\n onAction: (task) => {\n if (task.href === undefined || task.href === '')\n return;\n void onEvent({ type: 'drill-through', href: task.href });\n }, ...(source === null\n ? {}\n : {\n onToggle: (task, done) => void onEvent({\n type: 'mutate',\n intent: 'update',\n connectionId: source.connectionId,\n table: source.table,\n recordId: task.id,\n values: { [config.doneField]: done },\n }),\n }) }));\n}\n//# sourceMappingURL=OpsOnboarding.js.map"],"names":["STATUS_FALLBACK","SloMonitorCardView","monitor","budgetThresholds","windowDays","locale","targetLabel","budgetLabel","latencyLabel","testId","statusTone","UPTIME_TONE","budget","budgetTone","history","meetsTarget","_jsxs","OPS_TONE_BORDER_S","_jsx","IconTile","Activity","MonoText","Badge","OPS_TONE_TEXT","formatPct","state","index","OPS_TONE_BG","UPTIME_HEIGHT","ProgressBar","formatMs","monitorOf","config","data","row","opsRowOf","raw","uptimeStateOf","labelField","pctField","countField","SloMonitorCardWidget","useMemo","OpsEmpty","dayTone","overrides","explicit","toneOf","UptimeSegmentBarView","days","period","showToggle","stateColors","daysAgoLabel","todayLabel","uptimeLabel","window","setWindow","useState","size","visible","pct","uptimePct","day","TooltipProvider","SegmentedControl","tone","label","formatDay","Tooltip","interpolate","daysOf","rows","opsRowsOf","out","ms","instantField","UptimeSegmentBarWidget","ExperimentVariantCompareView","variants","confidence","confThresholds","showSignificance","controlLabel","winnerLabel","significanceLabel","verdictSignificantLabel","verdictInconclusiveLabel","countsLabel","maxConv","max","variant","control","high","leader","best","v","winnerId","meterTone","confidenceTone","significant","lift","liftPct","width","clamp","formatCount","variantsOf","conv","users","booleanField","confidenceOf","envelope","asRecord","fromEnvelope","numberField","value","ExperimentVariantCompareWidget","BRAND_GRADIENT","BRAND_NAME","brandNameOf","brand","meta","CreditCardTileView","method","brandMeta","defaultLabel","setDefaultLabel","manageLabel","addLabel","expiresLabel","onSetDefault","onManage","pan","maskPan","brandName","Plus","CreditCard","Button","methodOf","cardBrandOf","CreditCardTileWidget","onEvent","source","opsBindingSourceOf","emit","event","PlanPricingCardsView","plans","annualDiscount","selectable","currency","ctaLabel","currentLabel","popularLabel","monthlyLabel","annualLabel","perMonthLabel","billedAnnuallyLabel","onSelect","active","setActive","selected","setSelected","annual","plan","monthly","annualMonthly","isSelected","chosen","formatMoney","annualTotal","feature","Check","plansOf","id","name","stringArrayField","PlanPricingCardsWidget","planId","WRITE_INTENT","prettyJson","ApiPlaygroundView","endpoint","paradigm","sendLabel","requestLabel","responseLabel","paramsLabel","responsePlaceholder","onSend","values","setValues","param","sent","setSent","Tag","METHOD_TONE","Play","Input","current","_Fragment","endpointOf","rawParams","params","entry","httpMethodOf","ApiPlaygroundWidget","intent","SyncStatusCardView","status","syncAction","connectedLabel","disconnectedLabel","rowsSyncedLabel","tablesLabel","lastSyncLabel","nextSyncLabel","syncingLabel","onSync","syncing","last","formatStamp","next","Database","formatCompact","RefreshCw","syncStatusOf","oneOf","SyncStatusCardWidget","timerSeconds","timer","now","run","LiveTimerView","startLabel","stopLabel","taskPlaceholder","onStart","onStop","seconds","formatDuration","Square","timerOf","useTimerNow","pinned","running","fallback","tick","setTick","useEffect","handle","resolveNow","LiveTimerWidget","OPS_DEMO_NOW_MS","CMD_TONE","PolicyListView","policies","enableLabel","onToggle","policy","Switch","checked","policiesOf","PolicyListWidget","enabled","IpAllowlistCardView","entries","copyResetMs","copyLabel","copiedLabel","copied","setCopied","useRef","copy","ip","IconButton","Copy","IpAllowlistCardWidget","TrustBadgesView","badges","badge","TrustBadgesWidget","TestimonialCardView","testimonial","attribution","part","Quote","Avatar","TestimonialCardWidget","quote","DOC_KICKER","StarterThumb","series","peak","StarterTemplatePickerView","starters","docType","blankLabel","kicker","starter","FilePlus2","StarterTemplatePickerWidget","fromConfig","def","fromRows","numberArrayField","defs","ProgressRing","circumference","dash","OnboardingChecklistView","tasks","progressLabel","celebrateOnComplete","celebrateTitle","celebrateBody","onAction","done","task","total","complete","progress","formatMinutes","OnboardingChecklistWidget"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as u,j as t,l as L,n as O,t as P,w as E,E as R,o as y,M as z,q as m,s as w,v as C,x as B,y as v,z as S}from"./index-PB1II0WV.js";import{O as K}from"./index-PB1II0WV.js";const p="w-[168px]",f=new Map;function A(e,a){const s=C(e);let l=f.get(s);return l===void 0&&(l=new Intl.DateTimeFormat(s,{month:"short",day:"numeric",timeZone:"UTC"}),f.set(s,l)),l.format(new Date(a))}function W(e){const a=S(e);return a!==null&&Array.isArray(a.rows)?a.rows:[]}function I({data:e,fields:a,totalDays:s,todayLine:l=!0,todayMs:o,weekLabels:n=!0,showLegend:x=!0,phaseColors:i,ungroupedLabel:c,locale:N,emptyTitle:D,emptyBody:F,testId:$}){const b=L(N),g=O(b),h=u.useMemo(()=>W(e),[e]),r=u.useMemo(()=>P(h,a,{totalDays:s,...l?{todayMs:o??Date.now()}:{},...i===void 0?{}:{phaseColors:i},...c===void 0?{}:{ungroupedLabel:c}}),[h,a,s,l,o,i,c]),T=u.useMemo(()=>n?E(r.originMs,r.totalDays):[],[n,r.originMs,r.totalDays]);if(r.groups.length===0)return t.jsx(R,{compact:!0,preset:"no-data",title:D??"Nothing scheduled",body:F??"Tasks appear here once they have start and end dates."});const M=r.todayDay===null?null:y(r.todayDay,r.totalDays);return t.jsxs("div",{"data-widget":"gantt-chart","data-testid":$,className:"flex h-full flex-col",children:[t.jsx("div",{dir:"ltr","data-testid":"gantt-canvas",className:"flex-1 overflow-auto",children:t.jsxs("div",{className:"min-w-[640px]",children:[n&&t.jsxs("div",{className:"sticky top-0 z-10 flex border-b border-border bg-surface",children:[t.jsx("div",{className:`${p} shrink-0`}),t.jsx("div",{className:"relative flex flex-1",children:T.map(d=>t.jsx("div",{"data-testid":"gantt-week-tick",className:"flex-1 border-s border-border py-2 text-center text-[10.5px] font-bold text-fg-subtle",children:t.jsx(z,{className:"tabular-nums",children:A(b,d)})},d))})]}),r.groups.map(d=>t.jsx(U,{group:d,model:r,todayPct:M,formatPercent:G=>g.percent(G/100)},d.key))]})}),x&&r.groups.length>0&&t.jsx("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 border-t border-border px-3 py-2",children:r.groups.map(d=>t.jsxs("span",{className:"flex items-center gap-1.5 text-caption text-fg-muted",children:[t.jsx("span",{className:`size-2 shrink-0 rounded-full ${m[w(d.tone)]}`,"aria-hidden":"true"}),d.name]},d.key))})]})}function U({group:e,model:a,todayPct:s,formatPercent:l}){const o=w(e.tone),n=B(e),x=y(n.startDay,a.totalDays),i=v(n.startDay,n.durDays,a.totalDays);return t.jsxs("div",{"data-testid":`gantt-group-${e.key}`,children:[t.jsxs("div",{className:"flex items-center border-b border-border bg-surface-2",children:[t.jsx("div",{className:`${p} shrink-0 truncate px-3 py-1.5 text-caption font-bold text-fg`,children:e.name}),t.jsxs("div",{className:"relative h-7 flex-1",children:[t.jsx(j,{pct:s}),t.jsx("div",{className:`absolute inset-y-2 start-[var(--bar-x)] w-[var(--bar-w)] rounded ${m[o]} opacity-40`,style:{"--bar-x":`${x}%`,"--bar-w":`${i}%`},"aria-hidden":"true"})]})]}),e.tasks.map(c=>t.jsx(_,{task:c,tone:o,model:a,todayPct:s,formatPercent:l},c.id))]})}function _({task:e,tone:a,model:s,todayPct:l,formatPercent:o}){const n=y(e.startDay,s.totalDays),x=v(e.startDay,e.durDays,s.totalDays),i=`${e.label} · ${o(e.pct)}`;return t.jsxs("div",{"data-testid":`gantt-task-${e.id}`,"data-start-pct":n.toFixed(2),className:"flex items-center border-b border-border transition-colors hover:bg-surface-2",children:[t.jsx("div",{className:`${p} shrink-0 truncate px-3 py-2 text-caption text-fg-muted`,children:e.label}),t.jsxs("div",{className:"relative h-8 flex-1",children:[t.jsx(j,{pct:l}),e.milestone===!0?t.jsx("span",{title:e.label,"aria-label":e.label,role:"img","data-testid":`gantt-milestone-${e.id}`,className:`absolute top-1/2 start-[var(--bar-x)] size-2.5 -translate-y-1/2 rotate-45 ${m[a]}`,style:{"--bar-x":`${n}%`}}):t.jsxs("div",{title:i,"aria-label":i,role:"img",className:"absolute inset-y-1.5 start-[var(--bar-x)] w-[var(--bar-w)] overflow-hidden rounded bg-surface-3",style:{"--bar-x":`${n}%`,"--bar-w":`${x}%`},children:[t.jsx("div",{className:`absolute inset-y-0 start-0 w-[var(--fill-w)] ${m[a]}`,style:{"--fill-w":`${e.pct}%`}}),t.jsx("span",{className:`absolute inset-y-0 start-1.5 flex items-center text-[10px] font-bold tabular-nums ${e.pct>55?"text-white":"text-fg-muted"}`,children:e.pct>0?o(e.pct):""}),e.owner===void 0?null:t.jsx("span",{className:"absolute inset-y-0 end-1.5 flex items-center text-[9.5px] font-bold text-fg-subtle",children:e.owner})]})]})]})}function j({pct:e}){return e===null?null:t.jsx("span",{"data-testid":"gantt-today-line","aria-hidden":"true",className:"absolute inset-y-0 z-[2] w-0.5 start-[var(--today-x)] bg-danger/55",style:{"--today-x":`${e}%`}})}function k(e){return{idField:e.idField,labelField:e.labelField,startField:e.startField,endField:e.endField,progressField:e.progressField,phaseField:e.phaseField,ownerField:e.ownerField,milestoneField:e.milestoneField}}function Z({config:e,data:a}){const s=u.useMemo(()=>k(e),[e]);return t.jsx(I,{data:a,fields:s,...e.totalDays===void 0?{}:{totalDays:e.totalDays},todayLine:e.todayLine,...e.format?.referenceTime===void 0?{}:{todayMs:e.format.referenceTime},weekLabels:e.weekLabels,showLegend:e.showLegend,...e.phaseColors===void 0?{}:{phaseColors:e.phaseColors},...e.ungroupedLabel===void 0?{}:{ungroupedLabel:e.ungroupedLabel},...e.format?.locale===void 0?{}:{locale:e.format.locale},...e.emptyTitle===void 0?{}:{emptyTitle:e.emptyTitle},...e.emptyBody===void 0?{}:{emptyBody:e.emptyBody}})}export{Z as GanttChartWidget,K as OrgChartWidget};
|
|
2
|
+
//# sourceMappingURL=domain-track-components-CQ1i1X1t.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-track-components-CQ1i1X1t.js","sources":["../../../../packages/widgets/dist/families/domain/GanttChart.js"],"sourcesContent":["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { getFormatters, latnDataTag } from '@adminium/i18n';\nimport { EmptyState, MonoText } from '@adminium/ui';\nimport { useMemo } from 'react';\nimport { ganttChartConfigSchema, ganttChartDemoData } from './domain-config.js';\nimport { TONE_SOLID_BG, asRecord, dayToPercent, daysToPercent, groupSpan, resolveLocale, toGanttModel, toneOf, weekTicks, } from './domain-lib.js';\n/**\n * `gantt-chart` (annex §13) — percent-positioned task bars over a week-column\n * grid: phase group summary bars, per-task progress fill with a\n * contrast-switching % label, a today line, 45°-diamond milestones, owner\n * initials, and a legend footer. Built from start/end date columns + a progress\n * column + a phase FK — which is also the auto-instantiation trigger (annex §13:\n * \"start+end dates + phase FK → `gantt-chart`\").\n *\n * DIRECTION — THE LTR ISLAND (10-i18n-theming.md §5.5, verbatim): \"The timeline\n * canvas (date header + bars + today line) is a **fixed-LTR island** — time\n * flows left→right, consistent with the chart rule; the label column stays\n * physically left of the canvas so labels align with the time origin. Everything\n * around it (toolbar, filters, zoom control, page chrome) mirrors.\"\n *\n * So this component does NOT mirror its time axis. The scroll region carries\n * `dir=\"ltr\"`, which pins the label gutter + the axis origin to the physical\n * left inside an RTL page while the widget header/legend (outside the island)\n * mirror normally. This matches `@adminium/charts` — geometry/timelineLanes.ts\n * already states \"The time axis is an LTR island (04 §7.4 — time axes never\n * mirror), so event x-positions are LTR here\" — and it is why the LTR-canonical\n * geometry in domain-lib.ts is used verbatim under both directions.\n *\n * NOTE: this deliberately contradicts a \"the gantt time axis mirrors in RTL\"\n * reading of 04 §7.4's blanket \"all horizontal scales mirror\". 10-i18n-theming\n * §5.5 + its Open decisions #1 narrow that to CATEGORICAL scales; time axes stay\n * LTR. The narrower rule is the one implemented across the charts package, so it\n * is the one implemented here.\n *\n * Digits/dates route through the @adminium/i18n Intl layer; axis dates are\n * DATA-context strings → `latnDataTag` (Latin digits, gregorian) so the header\n * stays `tabular-nums`-aligned in every locale including `ar_EG`\n * (10-i18n-theming.md §4.2: \"gantt date headers … are data context\").\n */\nexport { ganttChartConfigSchema, ganttChartDemoData };\n/** Label-gutter width — the task-name column beside the canvas. */\nconst GUTTER = 'w-[168px]';\nconst axisFmts = new Map();\n/** \"Sep 1\" — short month + day, Latin digits (data context), pinned to UTC. */\nfunction fmtAxisDate(tag, ms) {\n const resolved = latnDataTag(tag);\n let fmt = axisFmts.get(resolved);\n if (fmt === undefined) {\n fmt = new Intl.DateTimeFormat(resolved, { month: 'short', day: 'numeric', timeZone: 'UTC' });\n axisFmts.set(resolved, fmt);\n }\n return fmt.format(new Date(ms));\n}\n/** Tolerant read of the task `record-list` envelope. */\nexport function ganttRowsOf(data) {\n const source = asRecord(data);\n return source !== null && Array.isArray(source.rows) ? source.rows : [];\n}\nexport function GanttChart({ data, fields, totalDays, todayLine = true, todayMs, weekLabels = true, showLegend = true, phaseColors, ungroupedLabel, locale, emptyTitle, emptyBody, testId, }) {\n const tag = resolveLocale(locale);\n const fmt = getFormatters(tag);\n const rows = useMemo(() => ganttRowsOf(data), [data]);\n const model = useMemo(() => toGanttModel(rows, fields, {\n totalDays,\n ...(todayLine ? { todayMs: todayMs ?? Date.now() } : {}),\n ...(phaseColors === undefined ? {} : { phaseColors }),\n ...(ungroupedLabel === undefined ? {} : { ungroupedLabel }),\n }), [rows, fields, totalDays, todayLine, todayMs, phaseColors, ungroupedLabel]);\n const ticks = useMemo(() => (weekLabels ? weekTicks(model.originMs, model.totalDays) : []), [weekLabels, model.originMs, model.totalDays]);\n if (model.groups.length === 0) {\n return (_jsx(EmptyState, { compact: true, preset: \"no-data\", title: emptyTitle ?? 'Nothing scheduled', body: emptyBody ?? 'Tasks appear here once they have start and end dates.' }));\n }\n const todayPct = model.todayDay === null ? null : dayToPercent(model.todayDay, model.totalDays);\n return (_jsxs(\"div\", { \"data-widget\": \"gantt-chart\", \"data-testid\": testId, className: \"flex h-full flex-col\", children: [_jsx(\"div\", { dir: \"ltr\", \"data-testid\": \"gantt-canvas\", className: \"flex-1 overflow-auto\", children: _jsxs(\"div\", { className: \"min-w-[640px]\", children: [weekLabels && (_jsxs(\"div\", { className: \"sticky top-0 z-10 flex border-b border-border bg-surface\", children: [_jsx(\"div\", { className: `${GUTTER} shrink-0` }), _jsx(\"div\", { className: \"relative flex flex-1\", children: ticks.map((ms) => (_jsx(\"div\", { \"data-testid\": \"gantt-week-tick\", className: \"flex-1 border-s border-border py-2 text-center text-[10.5px] font-bold text-fg-subtle\", children: _jsx(MonoText, { className: \"tabular-nums\", children: fmtAxisDate(tag, ms) }) }, ms))) })] })), model.groups.map((group) => (_jsx(GanttGroupRows, { group: group, model: model, todayPct: todayPct, formatPercent: (pct) => fmt.percent(pct / 100) }, group.key)))] }) }), showLegend && model.groups.length > 0 && (_jsx(\"div\", { className: \"flex flex-wrap items-center gap-x-4 gap-y-1 border-t border-border px-3 py-2\", children: model.groups.map((group) => (_jsxs(\"span\", { className: \"flex items-center gap-1.5 text-caption text-fg-muted\", children: [_jsx(\"span\", { className: `size-2 shrink-0 rounded-full ${TONE_SOLID_BG[toneOf(group.tone)]}`, \"aria-hidden\": \"true\" }), group.name] }, group.key))) }))] }));\n}\nfunction GanttGroupRows({ group, model, todayPct, formatPercent }) {\n const tone = toneOf(group.tone);\n const span = groupSpan(group);\n const summaryStart = dayToPercent(span.startDay, model.totalDays);\n const summaryWidth = daysToPercent(span.startDay, span.durDays, model.totalDays);\n return (_jsxs(\"div\", { \"data-testid\": `gantt-group-${group.key}`, children: [_jsxs(\"div\", { className: \"flex items-center border-b border-border bg-surface-2\", children: [_jsx(\"div\", { className: `${GUTTER} shrink-0 truncate px-3 py-1.5 text-caption font-bold text-fg`, children: group.name }), _jsxs(\"div\", { className: \"relative h-7 flex-1\", children: [_jsx(TodayLine, { pct: todayPct }), _jsx(\"div\", { className: `absolute inset-y-2 start-[var(--bar-x)] w-[var(--bar-w)] rounded ${TONE_SOLID_BG[tone]} opacity-40`, style: { '--bar-x': `${summaryStart}%`, '--bar-w': `${summaryWidth}%` }, \"aria-hidden\": \"true\" })] })] }), group.tasks.map((task) => (_jsx(GanttTaskRow, { task: task, tone: tone, model: model, todayPct: todayPct, formatPercent: formatPercent }, task.id)))] }));\n}\nfunction GanttTaskRow({ task, tone, model, todayPct, formatPercent }) {\n const startPct = dayToPercent(task.startDay, model.totalDays);\n const widthPct = daysToPercent(task.startDay, task.durDays, model.totalDays);\n const label = `${task.label} · ${formatPercent(task.pct)}`;\n return (_jsxs(\"div\", { \"data-testid\": `gantt-task-${task.id}`, \"data-start-pct\": startPct.toFixed(2), className: \"flex items-center border-b border-border transition-colors hover:bg-surface-2\", children: [_jsx(\"div\", { className: `${GUTTER} shrink-0 truncate px-3 py-2 text-caption text-fg-muted`, children: task.label }), _jsxs(\"div\", { className: \"relative h-8 flex-1\", children: [_jsx(TodayLine, { pct: todayPct }), task.milestone === true ? (_jsx(\"span\", { title: task.label, \"aria-label\": task.label, role: \"img\", \"data-testid\": `gantt-milestone-${task.id}`, className: `absolute top-1/2 start-[var(--bar-x)] size-2.5 -translate-y-1/2 rotate-45 ${TONE_SOLID_BG[tone]}`, style: { '--bar-x': `${startPct}%` } })) : (_jsxs(\"div\", { title: label, \"aria-label\": label, role: \"img\", className: \"absolute inset-y-1.5 start-[var(--bar-x)] w-[var(--bar-w)] overflow-hidden rounded bg-surface-3\", style: { '--bar-x': `${startPct}%`, '--bar-w': `${widthPct}%` }, children: [_jsx(\"div\", { className: `absolute inset-y-0 start-0 w-[var(--fill-w)] ${TONE_SOLID_BG[tone]}`, style: { '--fill-w': `${task.pct}%` } }), _jsx(\"span\", { className: `absolute inset-y-0 start-1.5 flex items-center text-[10px] font-bold tabular-nums ${task.pct > 55 ? 'text-white' : 'text-fg-muted'}`, children: task.pct > 0 ? formatPercent(task.pct) : '' }), task.owner === undefined ? null : (_jsx(\"span\", { className: \"absolute inset-y-0 end-1.5 flex items-center text-[9.5px] font-bold text-fg-subtle\", children: task.owner }))] }))] })] }));\n}\n/** The today marker — a full-height rule at the axis position (annex §13). */\nfunction TodayLine({ pct }) {\n if (pct === null)\n return null;\n return (_jsx(\"span\", { \"data-testid\": \"gantt-today-line\", \"aria-hidden\": \"true\", className: \"absolute inset-y-0 z-[2] w-0.5 start-[var(--today-x)] bg-danger/55\", style: { '--today-x': `${pct}%` } }));\n}\n/** Resolve the config's field-name map once per render (stable identity). */\nfunction fieldsOf(config) {\n return {\n idField: config.idField,\n labelField: config.labelField,\n startField: config.startField,\n endField: config.endField,\n progressField: config.progressField,\n phaseField: config.phaseField,\n ownerField: config.ownerField,\n milestoneField: config.milestoneField,\n };\n}\nexport function GanttChartWidget({ config, data }) {\n const fields = useMemo(() => fieldsOf(config), [config]);\n return (_jsx(GanttChart, { data: data, fields: fields, ...(config.totalDays === undefined ? {} : { totalDays: config.totalDays }), todayLine: config.todayLine, ...(config.format?.referenceTime === undefined ? {} : { todayMs: config.format.referenceTime }), weekLabels: config.weekLabels, showLegend: config.showLegend, ...(config.phaseColors === undefined ? {} : { phaseColors: config.phaseColors }), ...(config.ungroupedLabel === undefined ? {} : { ungroupedLabel: config.ungroupedLabel }), ...(config.format?.locale === undefined ? {} : { locale: config.format.locale }), ...(config.emptyTitle === undefined ? {} : { emptyTitle: config.emptyTitle }), ...(config.emptyBody === undefined ? {} : { emptyBody: config.emptyBody }) }));\n}\n//# sourceMappingURL=GanttChart.js.map"],"names":["GUTTER","axisFmts","fmtAxisDate","tag","ms","resolved","latnDataTag","fmt","ganttRowsOf","data","source","asRecord","GanttChart","fields","totalDays","todayLine","todayMs","weekLabels","showLegend","phaseColors","ungroupedLabel","locale","emptyTitle","emptyBody","testId","resolveLocale","getFormatters","rows","useMemo","model","toGanttModel","ticks","weekTicks","_jsx","EmptyState","todayPct","dayToPercent","_jsxs","MonoText","group","GanttGroupRows","pct","TONE_SOLID_BG","toneOf","formatPercent","tone","span","groupSpan","summaryStart","summaryWidth","daysToPercent","TodayLine","task","GanttTaskRow","startPct","widthPct","label","fieldsOf","config","GanttChartWidget"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const L={UNAUTHENTICATED:"需要登录才能继续。",SESSION_EXPIRED:"会话已过期。请重新登录以继续。",FORBIDDEN:"你没有执行此操作的权限。",PAGE_FORBIDDEN:"你没有编辑此页面的权限。",NOT_FOUND:"该资源不存在或已被移除。",CONFLICT:"该更改与当前状态冲突。请刷新后重试。",UNIQUE_VIOLATION:"该值已被使用。",VALIDATION_FAILED:"部分字段需要修改后才能保存。",RATE_LIMITED:"请求过多——请稍等片刻再试。",PAYLOAD_TOO_LARGE:"该请求过大。",META_NOT_CONFIGURED:"尚未配置元数据存储。",CONNECTION_FAILED:"Adminium 无法连接到数据库。",INTERNAL:"出错了。请将请求 ID 提供给支持团队。",OFFLINE:"你似乎已离线。请重新联网后继续。",LLM_JSON_PARSE:"AI 返回的内容不是有效的 JSON。",LLM_TRUNCATED:"AI 返回的内容在结束前被截断了。",LLM_VERSION_MISMATCH:"该响应是为不受支持的版本生成的。请在“设置 → AI”中重新生成提示词。",LLM_MODEL_DECLINED:"AI 拒绝为此架构生成建议。",LLM_SCHEMA_INVALID:"AI 响应与预期的结构不匹配。",LLM_LOCALE_KEYS:"某个翻译值缺少一种所请求的语言。",LLM_UNKNOWN_TABLE:"AI 引用了此架构中不存在的表;该建议已被丢弃。",LLM_UNKNOWN_COLUMN:"AI 引用了此架构中不存在的列;该建议已被丢弃。",LLM_BAD_DISPLAY_COLUMN:"建议的显示列是 ID,而非可读值。",LLM_NOT_AN_ENUM:"AI 把某一列当作状态列表,但它并不是。",LLM_ENUM_VALUES:"建议的状态值与该列的实际值不匹配。",LLM_UNKNOWN_RELATION:"AI 确认了此架构中未声明的关系。",LLM_RELATION_INVALID:"建议的关系无效或与现有关系重复。",LLM_UNKNOWN_TEMPLATE:"AI 推荐了不允许使用的页面模板。",LLM_UNKNOWN_WIDGET:"AI 推荐了不允许使用的仪表盘小组件。",LLM_WIDGET_BINDING:"某个建议的小组件绑定到不匹配的列;已被移除。",LLM_GROUP_INVALID:"某个导航分组无效——一个表出现在多个分组中。",LLM_UNKNOWN_ICON:"建议的图标不可用;已改用默认图标。",LLM_RUN_MISMATCH:"该响应似乎是从其他提示词生成的。"};export{L as default};
|
|
2
|
+
//# sourceMappingURL=errors-BHUWiAQ3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-BHUWiAQ3.js","sources":["../../../../packages/i18n/dist/resources/zh-cn/errors.js"],"sourcesContent":["/**\n * GENERATED MIRROR of ../../../locales/zh-CN/errors.json — do not edit by hand.\n * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);\n * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits\n * the other locales) without JSON import attributes (browser + NodeNext safe).\n * Parity is enforced by src/resources/parity.test.ts. Regenerate with\n * scripts/gen-resources.mjs.\n */\nexport default {\n \"UNAUTHENTICATED\": \"需要登录才能继续。\",\n \"SESSION_EXPIRED\": \"会话已过期。请重新登录以继续。\",\n \"FORBIDDEN\": \"你没有执行此操作的权限。\",\n \"PAGE_FORBIDDEN\": \"你没有编辑此页面的权限。\",\n \"NOT_FOUND\": \"该资源不存在或已被移除。\",\n \"CONFLICT\": \"该更改与当前状态冲突。请刷新后重试。\",\n \"UNIQUE_VIOLATION\": \"该值已被使用。\",\n \"VALIDATION_FAILED\": \"部分字段需要修改后才能保存。\",\n \"RATE_LIMITED\": \"请求过多——请稍等片刻再试。\",\n \"PAYLOAD_TOO_LARGE\": \"该请求过大。\",\n \"META_NOT_CONFIGURED\": \"尚未配置元数据存储。\",\n \"CONNECTION_FAILED\": \"Adminium 无法连接到数据库。\",\n \"INTERNAL\": \"出错了。请将请求 ID 提供给支持团队。\",\n \"OFFLINE\": \"你似乎已离线。请重新联网后继续。\",\n \"LLM_JSON_PARSE\": \"AI 返回的内容不是有效的 JSON。\",\n \"LLM_TRUNCATED\": \"AI 返回的内容在结束前被截断了。\",\n \"LLM_VERSION_MISMATCH\": \"该响应是为不受支持的版本生成的。请在“设置 → AI”中重新生成提示词。\",\n \"LLM_MODEL_DECLINED\": \"AI 拒绝为此架构生成建议。\",\n \"LLM_SCHEMA_INVALID\": \"AI 响应与预期的结构不匹配。\",\n \"LLM_LOCALE_KEYS\": \"某个翻译值缺少一种所请求的语言。\",\n \"LLM_UNKNOWN_TABLE\": \"AI 引用了此架构中不存在的表;该建议已被丢弃。\",\n \"LLM_UNKNOWN_COLUMN\": \"AI 引用了此架构中不存在的列;该建议已被丢弃。\",\n \"LLM_BAD_DISPLAY_COLUMN\": \"建议的显示列是 ID,而非可读值。\",\n \"LLM_NOT_AN_ENUM\": \"AI 把某一列当作状态列表,但它并不是。\",\n \"LLM_ENUM_VALUES\": \"建议的状态值与该列的实际值不匹配。\",\n \"LLM_UNKNOWN_RELATION\": \"AI 确认了此架构中未声明的关系。\",\n \"LLM_RELATION_INVALID\": \"建议的关系无效或与现有关系重复。\",\n \"LLM_UNKNOWN_TEMPLATE\": \"AI 推荐了不允许使用的页面模板。\",\n \"LLM_UNKNOWN_WIDGET\": \"AI 推荐了不允许使用的仪表盘小组件。\",\n \"LLM_WIDGET_BINDING\": \"某个建议的小组件绑定到不匹配的列;已被移除。\",\n \"LLM_GROUP_INVALID\": \"某个导航分组无效——一个表出现在多个分组中。\",\n \"LLM_UNKNOWN_ICON\": \"建议的图标不可用;已改用默认图标。\",\n \"LLM_RUN_MISMATCH\": \"该响应似乎是从其他提示词生成的。\"\n};\n//# sourceMappingURL=errors.js.map"],"names":["errors"],"mappings":"AAQA,MAAAA,EAAe,CACX,gBAAmB,YACnB,gBAAmB,kBACnB,UAAa,eACb,eAAkB,eAClB,UAAa,eACb,SAAY,qBACZ,iBAAoB,UACpB,kBAAqB,iBACrB,aAAgB,iBAChB,kBAAqB,SACrB,oBAAuB,aACvB,kBAAqB,qBACrB,SAAY,uBACZ,QAAW,mBACX,eAAkB,sBAClB,cAAiB,oBACjB,qBAAwB,uCACxB,mBAAsB,iBACtB,mBAAsB,kBACtB,gBAAmB,mBACnB,kBAAqB,2BACrB,mBAAsB,2BACtB,uBAA0B,oBAC1B,gBAAmB,uBACnB,gBAAmB,oBACnB,qBAAwB,oBACxB,qBAAwB,mBACxB,qBAAwB,oBACxB,mBAAsB,sBACtB,mBAAsB,yBACtB,kBAAqB,yBACrB,iBAAoB,oBACpB,iBAAoB,kBACxB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e={UNAUTHENTICATED:"Du skal logge ind for at fortsætte.",SESSION_EXPIRED:"Din session er udløbet. Log ind igen for at fortsætte.",FORBIDDEN:"Du har ikke tilladelse til det.",PAGE_FORBIDDEN:"Du har ikke tilladelse til at redigere denne side.",NOT_FOUND:"Ressourcen findes ikke eller er blevet fjernet.",CONFLICT:"Ændringen er i konflikt med den aktuelle tilstand. Genindlæs, og prøv igen.",UNIQUE_VIOLATION:"Værdien er allerede i brug.",VALIDATION_FAILED:"Nogle felter kræver opmærksomhed, før dette kan gemmes.",RATE_LIMITED:"For mange anmodninger — vent et øjeblik, og prøv igen.",PAYLOAD_TOO_LARGE:"Anmodningen er for stor.",META_NOT_CONFIGURED:"Der er endnu ikke konfigureret et metalager.",CONNECTION_FAILED:"Adminium kunne ikke nå databasen.",INTERNAL:"Noget gik galt. Del anmodnings-id'et med support.",OFFLINE:"Du ser ud til at være offline. Opret forbindelse igen for at fortsætte.",LLM_JSON_PARSE:"AI-svaret var ikke gyldig JSON.",LLM_TRUNCATED:"AI-svaret blev afbrudt, før det var færdigt.",LLM_VERSION_MISMATCH:"Dette svar blev lavet til en version, der ikke understøttes. Generér prompten igen under Indstillinger → AI.",LLM_MODEL_DECLINED:"AI’en afviste at lave forslag til dette skema.",LLM_SCHEMA_INVALID:"AI-svaret matchede ikke den forventede struktur.",LLM_LOCALE_KEYS:"En oversat værdi mangler et af de ønskede sprog.",LLM_UNKNOWN_TABLE:"AI’en henviste til en tabel, der ikke findes i dette skema; forslaget blev kasseret.",LLM_UNKNOWN_COLUMN:"AI’en henviste til en kolonne, der ikke findes i dette skema; forslaget blev kasseret.",LLM_BAD_DISPLAY_COLUMN:"Den foreslåede visningskolonne er et id, ikke en læsbar værdi.",LLM_NOT_AN_ENUM:"AI’en behandlede en kolonne som en statusliste, selvom den ikke er det.",LLM_ENUM_VALUES:"De foreslåede statusværdier matcher ikke kolonnens faktiske værdier.",LLM_UNKNOWN_RELATION:"AI’en bekræftede en relation, der ikke er erklæret i dette skema.",LLM_RELATION_INVALID:"Den foreslåede relation er ugyldig eller er en dublet af en eksisterende.",LLM_UNKNOWN_TEMPLATE:"AI’en anbefalede en sideskabelon, der ikke er tilladt.",LLM_UNKNOWN_WIDGET:"AI’en anbefalede en dashboard-widget, der ikke er tilladt.",LLM_WIDGET_BINDING:"En foreslået widget er bundet til kolonner, der ikke passer; den blev fjernet.",LLM_GROUP_INVALID:"En navigationsgruppe er ugyldig — en tabel optræder i mere end én gruppe.",LLM_UNKNOWN_ICON:"Det foreslåede ikon er ikke tilgængeligt; et standardikon blev brugt i stedet.",LLM_RUN_MISMATCH:"Dette svar ser ud til at være genereret ud fra en anden prompt."};export{e as default};
|
|
2
|
+
//# sourceMappingURL=errors-BbyKweDG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-BbyKweDG.js","sources":["../../../../packages/i18n/dist/resources/da-dk/errors.js"],"sourcesContent":["/**\n * GENERATED MIRROR of ../../../locales/da-DK/errors.json — do not edit by hand.\n * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);\n * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits\n * the other locales) without JSON import attributes (browser + NodeNext safe).\n * Parity is enforced by src/resources/parity.test.ts. Regenerate with\n * scripts/gen-resources.mjs.\n */\nexport default {\n \"UNAUTHENTICATED\": \"Du skal logge ind for at fortsætte.\",\n \"SESSION_EXPIRED\": \"Din session er udløbet. Log ind igen for at fortsætte.\",\n \"FORBIDDEN\": \"Du har ikke tilladelse til det.\",\n \"PAGE_FORBIDDEN\": \"Du har ikke tilladelse til at redigere denne side.\",\n \"NOT_FOUND\": \"Ressourcen findes ikke eller er blevet fjernet.\",\n \"CONFLICT\": \"Ændringen er i konflikt med den aktuelle tilstand. Genindlæs, og prøv igen.\",\n \"UNIQUE_VIOLATION\": \"Værdien er allerede i brug.\",\n \"VALIDATION_FAILED\": \"Nogle felter kræver opmærksomhed, før dette kan gemmes.\",\n \"RATE_LIMITED\": \"For mange anmodninger — vent et øjeblik, og prøv igen.\",\n \"PAYLOAD_TOO_LARGE\": \"Anmodningen er for stor.\",\n \"META_NOT_CONFIGURED\": \"Der er endnu ikke konfigureret et metalager.\",\n \"CONNECTION_FAILED\": \"Adminium kunne ikke nå databasen.\",\n \"INTERNAL\": \"Noget gik galt. Del anmodnings-id'et med support.\",\n \"OFFLINE\": \"Du ser ud til at være offline. Opret forbindelse igen for at fortsætte.\",\n \"LLM_JSON_PARSE\": \"AI-svaret var ikke gyldig JSON.\",\n \"LLM_TRUNCATED\": \"AI-svaret blev afbrudt, før det var færdigt.\",\n \"LLM_VERSION_MISMATCH\": \"Dette svar blev lavet til en version, der ikke understøttes. Generér prompten igen under Indstillinger → AI.\",\n \"LLM_MODEL_DECLINED\": \"AI’en afviste at lave forslag til dette skema.\",\n \"LLM_SCHEMA_INVALID\": \"AI-svaret matchede ikke den forventede struktur.\",\n \"LLM_LOCALE_KEYS\": \"En oversat værdi mangler et af de ønskede sprog.\",\n \"LLM_UNKNOWN_TABLE\": \"AI’en henviste til en tabel, der ikke findes i dette skema; forslaget blev kasseret.\",\n \"LLM_UNKNOWN_COLUMN\": \"AI’en henviste til en kolonne, der ikke findes i dette skema; forslaget blev kasseret.\",\n \"LLM_BAD_DISPLAY_COLUMN\": \"Den foreslåede visningskolonne er et id, ikke en læsbar værdi.\",\n \"LLM_NOT_AN_ENUM\": \"AI’en behandlede en kolonne som en statusliste, selvom den ikke er det.\",\n \"LLM_ENUM_VALUES\": \"De foreslåede statusværdier matcher ikke kolonnens faktiske værdier.\",\n \"LLM_UNKNOWN_RELATION\": \"AI’en bekræftede en relation, der ikke er erklæret i dette skema.\",\n \"LLM_RELATION_INVALID\": \"Den foreslåede relation er ugyldig eller er en dublet af en eksisterende.\",\n \"LLM_UNKNOWN_TEMPLATE\": \"AI’en anbefalede en sideskabelon, der ikke er tilladt.\",\n \"LLM_UNKNOWN_WIDGET\": \"AI’en anbefalede en dashboard-widget, der ikke er tilladt.\",\n \"LLM_WIDGET_BINDING\": \"En foreslået widget er bundet til kolonner, der ikke passer; den blev fjernet.\",\n \"LLM_GROUP_INVALID\": \"En navigationsgruppe er ugyldig — en tabel optræder i mere end én gruppe.\",\n \"LLM_UNKNOWN_ICON\": \"Det foreslåede ikon er ikke tilgængeligt; et standardikon blev brugt i stedet.\",\n \"LLM_RUN_MISMATCH\": \"Dette svar ser ud til at være genereret ud fra en anden prompt.\"\n};\n//# sourceMappingURL=errors.js.map"],"names":["errors"],"mappings":"AAQA,MAAAA,EAAe,CACX,gBAAmB,sCACnB,gBAAmB,yDACnB,UAAa,kCACb,eAAkB,qDAClB,UAAa,kDACb,SAAY,8EACZ,iBAAoB,8BACpB,kBAAqB,0DACrB,aAAgB,yDAChB,kBAAqB,2BACrB,oBAAuB,+CACvB,kBAAqB,oCACrB,SAAY,oDACZ,QAAW,0EACX,eAAkB,kCAClB,cAAiB,+CACjB,qBAAwB,+GACxB,mBAAsB,iDACtB,mBAAsB,mDACtB,gBAAmB,mDACnB,kBAAqB,uFACrB,mBAAsB,yFACtB,uBAA0B,iEAC1B,gBAAmB,0EACnB,gBAAmB,uEACnB,qBAAwB,oEACxB,qBAAwB,4EACxB,qBAAwB,yDACxB,mBAAsB,6DACtB,mBAAsB,iFACtB,kBAAqB,4EACrB,iBAAoB,iFACpB,iBAAoB,iEACxB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const o={UNAUTHENTICATED:"Pro pokračování se musíte přihlásit.",SESSION_EXPIRED:"Platnost relace vypršela. Pro pokračování se přihlaste znovu.",FORBIDDEN:"K této akci nemáte oprávnění.",PAGE_FORBIDDEN:"K úpravě této stránky nemáte oprávnění.",NOT_FOUND:"Tento zdroj neexistuje nebo byl odstraněn.",CONFLICT:"Tato změna je v konfliktu s aktuálním stavem. Obnovte stránku a zkuste to znovu.",UNIQUE_VIOLATION:"Tato hodnota se již používá.",VALIDATION_FAILED:"Některá pole vyžadují úpravu, než bude možné uložit.",RATE_LIMITED:"Příliš mnoho požadavků — chvíli počkejte a zkuste to znovu.",PAYLOAD_TOO_LARGE:"Tento požadavek je příliš velký.",META_NOT_CONFIGURED:"Zatím není nakonfigurováno žádné meta úložiště.",CONNECTION_FAILED:"Adminiu se nepodařilo připojit k databázi.",INTERNAL:"Něco se pokazilo. Sdělte podpoře ID požadavku.",OFFLINE:"Vypadá to, že jste offline. Pro pokračování se znovu připojte.",LLM_JSON_PARSE:"Odpověď AI nebyla platný JSON.",LLM_TRUNCATED:"Odpověď AI byla přerušena, než skončila.",LLM_VERSION_MISMATCH:"Tato odpověď byla vytvořena pro nepodporovanou verzi. Vygenerujte prompt znovu v Nastavení → AI.",LLM_MODEL_DECLINED:"AI odmítla vytvořit návrhy pro toto schéma.",LLM_SCHEMA_INVALID:"Odpověď AI neodpovídala očekávané struktuře.",LLM_LOCALE_KEYS:"V přeložené hodnotě chybí jeden z požadovaných jazyků.",LLM_UNKNOWN_TABLE:"AI odkázala na tabulku, která v tomto schématu neexistuje; návrh byl zahozen.",LLM_UNKNOWN_COLUMN:"AI odkázala na sloupec, který v tomto schématu neexistuje; návrh byl zahozen.",LLM_BAD_DISPLAY_COLUMN:"Navržený zobrazovaný sloupec je ID, nikoli člověku čitelná hodnota.",LLM_NOT_AN_ENUM:"AI považovala sloupec za seznam stavů, ačkoli jím není.",LLM_ENUM_VALUES:"Navržené stavové hodnoty neodpovídají skutečným hodnotám sloupce.",LLM_UNKNOWN_RELATION:"AI potvrdila vztah, který není v tomto schématu deklarován.",LLM_RELATION_INVALID:"Navržený vztah je neplatný nebo duplikuje existující.",LLM_UNKNOWN_TEMPLATE:"AI doporučila šablonu stránky, která není povolena.",LLM_UNKNOWN_WIDGET:"AI doporučila widget dashboardu, který není povolen.",LLM_WIDGET_BINDING:"Navržený widget je navázán na nevhodné sloupce; byl vyřazen.",LLM_GROUP_INVALID:"Navigační skupina je neplatná — tabulka se objevuje ve více než jedné skupině.",LLM_UNKNOWN_ICON:"Navržená ikona není k dispozici; místo ní byla použita výchozí.",LLM_RUN_MISMATCH:"Tato odpověď vypadá, že byla vygenerována z jiného promptu."};export{o as default};
|
|
2
|
+
//# sourceMappingURL=errors-CMQ6JC31.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-CMQ6JC31.js","sources":["../../../../packages/i18n/dist/resources/cs-cz/errors.js"],"sourcesContent":["/**\n * GENERATED MIRROR of ../../../locales/cs-CZ/errors.json — do not edit by hand.\n * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);\n * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits\n * the other locales) without JSON import attributes (browser + NodeNext safe).\n * Parity is enforced by src/resources/parity.test.ts. Regenerate with\n * scripts/gen-resources.mjs.\n */\nexport default {\n \"UNAUTHENTICATED\": \"Pro pokračování se musíte přihlásit.\",\n \"SESSION_EXPIRED\": \"Platnost relace vypršela. Pro pokračování se přihlaste znovu.\",\n \"FORBIDDEN\": \"K této akci nemáte oprávnění.\",\n \"PAGE_FORBIDDEN\": \"K úpravě této stránky nemáte oprávnění.\",\n \"NOT_FOUND\": \"Tento zdroj neexistuje nebo byl odstraněn.\",\n \"CONFLICT\": \"Tato změna je v konfliktu s aktuálním stavem. Obnovte stránku a zkuste to znovu.\",\n \"UNIQUE_VIOLATION\": \"Tato hodnota se již používá.\",\n \"VALIDATION_FAILED\": \"Některá pole vyžadují úpravu, než bude možné uložit.\",\n \"RATE_LIMITED\": \"Příliš mnoho požadavků — chvíli počkejte a zkuste to znovu.\",\n \"PAYLOAD_TOO_LARGE\": \"Tento požadavek je příliš velký.\",\n \"META_NOT_CONFIGURED\": \"Zatím není nakonfigurováno žádné meta úložiště.\",\n \"CONNECTION_FAILED\": \"Adminiu se nepodařilo připojit k databázi.\",\n \"INTERNAL\": \"Něco se pokazilo. Sdělte podpoře ID požadavku.\",\n \"OFFLINE\": \"Vypadá to, že jste offline. Pro pokračování se znovu připojte.\",\n \"LLM_JSON_PARSE\": \"Odpověď AI nebyla platný JSON.\",\n \"LLM_TRUNCATED\": \"Odpověď AI byla přerušena, než skončila.\",\n \"LLM_VERSION_MISMATCH\": \"Tato odpověď byla vytvořena pro nepodporovanou verzi. Vygenerujte prompt znovu v Nastavení → AI.\",\n \"LLM_MODEL_DECLINED\": \"AI odmítla vytvořit návrhy pro toto schéma.\",\n \"LLM_SCHEMA_INVALID\": \"Odpověď AI neodpovídala očekávané struktuře.\",\n \"LLM_LOCALE_KEYS\": \"V přeložené hodnotě chybí jeden z požadovaných jazyků.\",\n \"LLM_UNKNOWN_TABLE\": \"AI odkázala na tabulku, která v tomto schématu neexistuje; návrh byl zahozen.\",\n \"LLM_UNKNOWN_COLUMN\": \"AI odkázala na sloupec, který v tomto schématu neexistuje; návrh byl zahozen.\",\n \"LLM_BAD_DISPLAY_COLUMN\": \"Navržený zobrazovaný sloupec je ID, nikoli člověku čitelná hodnota.\",\n \"LLM_NOT_AN_ENUM\": \"AI považovala sloupec za seznam stavů, ačkoli jím není.\",\n \"LLM_ENUM_VALUES\": \"Navržené stavové hodnoty neodpovídají skutečným hodnotám sloupce.\",\n \"LLM_UNKNOWN_RELATION\": \"AI potvrdila vztah, který není v tomto schématu deklarován.\",\n \"LLM_RELATION_INVALID\": \"Navržený vztah je neplatný nebo duplikuje existující.\",\n \"LLM_UNKNOWN_TEMPLATE\": \"AI doporučila šablonu stránky, která není povolena.\",\n \"LLM_UNKNOWN_WIDGET\": \"AI doporučila widget dashboardu, který není povolen.\",\n \"LLM_WIDGET_BINDING\": \"Navržený widget je navázán na nevhodné sloupce; byl vyřazen.\",\n \"LLM_GROUP_INVALID\": \"Navigační skupina je neplatná — tabulka se objevuje ve více než jedné skupině.\",\n \"LLM_UNKNOWN_ICON\": \"Navržená ikona není k dispozici; místo ní byla použita výchozí.\",\n \"LLM_RUN_MISMATCH\": \"Tato odpověď vypadá, že byla vygenerována z jiného promptu.\"\n};\n//# sourceMappingURL=errors.js.map"],"names":["errors"],"mappings":"AAQA,MAAAA,EAAe,CACX,gBAAmB,uCACnB,gBAAmB,gEACnB,UAAa,gCACb,eAAkB,0CAClB,UAAa,6CACb,SAAY,mFACZ,iBAAoB,+BACpB,kBAAqB,uDACrB,aAAgB,8DAChB,kBAAqB,mCACrB,oBAAuB,kDACvB,kBAAqB,6CACrB,SAAY,iDACZ,QAAW,iEACX,eAAkB,iCAClB,cAAiB,2CACjB,qBAAwB,mGACxB,mBAAsB,8CACtB,mBAAsB,+CACtB,gBAAmB,yDACnB,kBAAqB,gFACrB,mBAAsB,gFACtB,uBAA0B,sEAC1B,gBAAmB,0DACnB,gBAAmB,oEACnB,qBAAwB,8DACxB,qBAAwB,wDACxB,qBAAwB,sDACxB,mBAAsB,uDACtB,mBAAsB,+DACtB,kBAAqB,iFACrB,iBAAoB,kEACpB,iBAAoB,6DACxB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e={UNAUTHENTICATED:"Sie müssen sich anmelden, um fortzufahren.",SESSION_EXPIRED:"Ihre Sitzung ist abgelaufen. Melden Sie sich erneut an, um fortzufahren.",FORBIDDEN:"Sie haben dafür keine Berechtigung.",PAGE_FORBIDDEN:"Sie haben keine Berechtigung, diese Seite zu bearbeiten.",NOT_FOUND:"Diese Ressource existiert nicht oder wurde entfernt.",CONFLICT:"Diese Änderung steht im Konflikt mit dem aktuellen Stand. Aktualisieren Sie die Ansicht und versuchen Sie es erneut.",UNIQUE_VIOLATION:"Dieser Wert wird bereits verwendet.",VALIDATION_FAILED:"Einige Felder benötigen noch Korrekturen, bevor gespeichert werden kann.",RATE_LIMITED:"Zu viele Anfragen — warten Sie einen Moment und versuchen Sie es erneut.",PAYLOAD_TOO_LARGE:"Diese Anfrage ist zu groß.",META_NOT_CONFIGURED:"Es ist noch kein Meta-Store konfiguriert.",CONNECTION_FAILED:"Adminium konnte die Datenbank nicht erreichen.",INTERNAL:"Etwas ist schiefgelaufen. Teilen Sie die Anfrage-ID mit dem Support.",OFFLINE:"Sie scheinen offline zu sein. Stellen Sie die Verbindung wieder her, um fortzufahren.",LLM_JSON_PARSE:"Die KI-Antwort war kein gültiges JSON.",LLM_TRUNCATED:"Die KI-Antwort wurde vorzeitig abgeschnitten.",LLM_VERSION_MISMATCH:"Diese Antwort wurde für eine nicht unterstützte Version erstellt. Erzeugen Sie den Prompt in Einstellungen → KI neu.",LLM_MODEL_DECLINED:"Die KI hat es abgelehnt, Vorschläge für dieses Schema zu erstellen.",LLM_SCHEMA_INVALID:"Die KI-Antwort entsprach nicht der erwarteten Struktur.",LLM_LOCALE_KEYS:"In einem übersetzten Wert fehlt eine der angeforderten Sprachen.",LLM_UNKNOWN_TABLE:"Die KI verwies auf eine Tabelle, die nicht in diesem Schema existiert; der Vorschlag wurde verworfen.",LLM_UNKNOWN_COLUMN:"Die KI verwies auf eine Spalte, die nicht in diesem Schema existiert; der Vorschlag wurde verworfen.",LLM_BAD_DISPLAY_COLUMN:"Die vorgeschlagene Anzeigespalte ist eine ID, kein für Menschen lesbarer Wert.",LLM_NOT_AN_ENUM:"Die KI behandelte eine Spalte als Statusliste, obwohl sie keine ist.",LLM_ENUM_VALUES:"Die vorgeschlagenen Statuswerte stimmen nicht mit den tatsächlichen Werten der Spalte überein.",LLM_UNKNOWN_RELATION:"Die KI bestätigte eine Beziehung, die in diesem Schema nicht deklariert ist.",LLM_RELATION_INVALID:"Die vorgeschlagene Beziehung ist ungültig oder dupliziert eine vorhandene.",LLM_UNKNOWN_TEMPLATE:"Die KI empfahl eine Seitenvorlage, die nicht zulässig ist.",LLM_UNKNOWN_WIDGET:"Die KI empfahl ein Dashboard-Widget, das nicht zulässig ist.",LLM_WIDGET_BINDING:"Ein vorgeschlagenes Widget ist an unpassende Spalten gebunden; es wurde verworfen.",LLM_GROUP_INVALID:"Eine Navigationsgruppe ist ungültig — eine Tabelle erscheint in mehr als einer Gruppe.",LLM_UNKNOWN_ICON:"Das vorgeschlagene Symbol ist nicht verfügbar; stattdessen wurde ein Standardsymbol verwendet.",LLM_RUN_MISMATCH:"Diese Antwort scheint aus einem anderen Prompt erzeugt worden zu sein."};export{e as default};
|
|
2
|
+
//# sourceMappingURL=errors-D3nVgTmf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-D3nVgTmf.js","sources":["../../../../packages/i18n/dist/resources/de-de/errors.js"],"sourcesContent":["/**\n * GENERATED MIRROR of ../../../locales/de-DE/errors.json — do not edit by hand.\n * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);\n * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits\n * the other locales) without JSON import attributes (browser + NodeNext safe).\n * Parity is enforced by src/resources/parity.test.ts. Regenerate with\n * scripts/gen-resources.mjs.\n */\nexport default {\n \"UNAUTHENTICATED\": \"Sie müssen sich anmelden, um fortzufahren.\",\n \"SESSION_EXPIRED\": \"Ihre Sitzung ist abgelaufen. Melden Sie sich erneut an, um fortzufahren.\",\n \"FORBIDDEN\": \"Sie haben dafür keine Berechtigung.\",\n \"PAGE_FORBIDDEN\": \"Sie haben keine Berechtigung, diese Seite zu bearbeiten.\",\n \"NOT_FOUND\": \"Diese Ressource existiert nicht oder wurde entfernt.\",\n \"CONFLICT\": \"Diese Änderung steht im Konflikt mit dem aktuellen Stand. Aktualisieren Sie die Ansicht und versuchen Sie es erneut.\",\n \"UNIQUE_VIOLATION\": \"Dieser Wert wird bereits verwendet.\",\n \"VALIDATION_FAILED\": \"Einige Felder benötigen noch Korrekturen, bevor gespeichert werden kann.\",\n \"RATE_LIMITED\": \"Zu viele Anfragen — warten Sie einen Moment und versuchen Sie es erneut.\",\n \"PAYLOAD_TOO_LARGE\": \"Diese Anfrage ist zu groß.\",\n \"META_NOT_CONFIGURED\": \"Es ist noch kein Meta-Store konfiguriert.\",\n \"CONNECTION_FAILED\": \"Adminium konnte die Datenbank nicht erreichen.\",\n \"INTERNAL\": \"Etwas ist schiefgelaufen. Teilen Sie die Anfrage-ID mit dem Support.\",\n \"OFFLINE\": \"Sie scheinen offline zu sein. Stellen Sie die Verbindung wieder her, um fortzufahren.\",\n \"LLM_JSON_PARSE\": \"Die KI-Antwort war kein gültiges JSON.\",\n \"LLM_TRUNCATED\": \"Die KI-Antwort wurde vorzeitig abgeschnitten.\",\n \"LLM_VERSION_MISMATCH\": \"Diese Antwort wurde für eine nicht unterstützte Version erstellt. Erzeugen Sie den Prompt in Einstellungen → KI neu.\",\n \"LLM_MODEL_DECLINED\": \"Die KI hat es abgelehnt, Vorschläge für dieses Schema zu erstellen.\",\n \"LLM_SCHEMA_INVALID\": \"Die KI-Antwort entsprach nicht der erwarteten Struktur.\",\n \"LLM_LOCALE_KEYS\": \"In einem übersetzten Wert fehlt eine der angeforderten Sprachen.\",\n \"LLM_UNKNOWN_TABLE\": \"Die KI verwies auf eine Tabelle, die nicht in diesem Schema existiert; der Vorschlag wurde verworfen.\",\n \"LLM_UNKNOWN_COLUMN\": \"Die KI verwies auf eine Spalte, die nicht in diesem Schema existiert; der Vorschlag wurde verworfen.\",\n \"LLM_BAD_DISPLAY_COLUMN\": \"Die vorgeschlagene Anzeigespalte ist eine ID, kein für Menschen lesbarer Wert.\",\n \"LLM_NOT_AN_ENUM\": \"Die KI behandelte eine Spalte als Statusliste, obwohl sie keine ist.\",\n \"LLM_ENUM_VALUES\": \"Die vorgeschlagenen Statuswerte stimmen nicht mit den tatsächlichen Werten der Spalte überein.\",\n \"LLM_UNKNOWN_RELATION\": \"Die KI bestätigte eine Beziehung, die in diesem Schema nicht deklariert ist.\",\n \"LLM_RELATION_INVALID\": \"Die vorgeschlagene Beziehung ist ungültig oder dupliziert eine vorhandene.\",\n \"LLM_UNKNOWN_TEMPLATE\": \"Die KI empfahl eine Seitenvorlage, die nicht zulässig ist.\",\n \"LLM_UNKNOWN_WIDGET\": \"Die KI empfahl ein Dashboard-Widget, das nicht zulässig ist.\",\n \"LLM_WIDGET_BINDING\": \"Ein vorgeschlagenes Widget ist an unpassende Spalten gebunden; es wurde verworfen.\",\n \"LLM_GROUP_INVALID\": \"Eine Navigationsgruppe ist ungültig — eine Tabelle erscheint in mehr als einer Gruppe.\",\n \"LLM_UNKNOWN_ICON\": \"Das vorgeschlagene Symbol ist nicht verfügbar; stattdessen wurde ein Standardsymbol verwendet.\",\n \"LLM_RUN_MISMATCH\": \"Diese Antwort scheint aus einem anderen Prompt erzeugt worden zu sein.\"\n};\n//# sourceMappingURL=errors.js.map"],"names":["errors"],"mappings":"AAQA,MAAAA,EAAe,CACX,gBAAmB,6CACnB,gBAAmB,2EACnB,UAAa,sCACb,eAAkB,2DAClB,UAAa,uDACb,SAAY,uHACZ,iBAAoB,sCACpB,kBAAqB,2EACrB,aAAgB,2EAChB,kBAAqB,6BACrB,oBAAuB,4CACvB,kBAAqB,iDACrB,SAAY,uEACZ,QAAW,wFACX,eAAkB,yCAClB,cAAiB,gDACjB,qBAAwB,uHACxB,mBAAsB,sEACtB,mBAAsB,0DACtB,gBAAmB,mEACnB,kBAAqB,wGACrB,mBAAsB,uGACtB,uBAA0B,iFAC1B,gBAAmB,uEACnB,gBAAmB,iGACnB,qBAAwB,+EACxB,qBAAwB,6EACxB,qBAAwB,6DACxB,mBAAsB,+DACtB,mBAAsB,qFACtB,kBAAqB,yFACrB,iBAAoB,iGACpB,iBAAoB,wEACxB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e={UNAUTHENTICATED:"Vous devez vous connecter pour continuer.",SESSION_EXPIRED:"Votre session a expiré. Reconnectez-vous pour continuer.",FORBIDDEN:"Vous n’avez pas la permission de faire cela.",PAGE_FORBIDDEN:"Vous n’avez pas la permission de modifier cette page.",NOT_FOUND:"Cette ressource n’existe pas ou a été supprimée.",CONFLICT:"Cette modification entre en conflit avec l’état actuel. Actualisez et réessayez.",UNIQUE_VIOLATION:"Cette valeur est déjà utilisée.",VALIDATION_FAILED:"Certains champs demandent votre attention avant l’enregistrement.",RATE_LIMITED:"Trop de requêtes — patientez un instant et réessayez.",PAYLOAD_TOO_LARGE:"Cette requête est trop volumineuse.",META_NOT_CONFIGURED:"Aucun méta-store n’est encore configuré.",CONNECTION_FAILED:"Adminium n’a pas pu joindre la base de données.",INTERNAL:"Une erreur s’est produite. Communiquez l’identifiant de requête au support.",OFFLINE:"Vous semblez être hors ligne. Reconnectez-vous pour continuer.",LLM_JSON_PARSE:"La réponse de l’IA n’était pas un JSON valide.",LLM_TRUNCATED:"La réponse de l’IA a été coupée avant la fin.",LLM_VERSION_MISMATCH:"Cette réponse a été produite pour une version non prise en charge. Régénérez l’invite dans Paramètres → IA.",LLM_MODEL_DECLINED:"L’IA a refusé de produire des suggestions pour ce schéma.",LLM_SCHEMA_INVALID:"La réponse de l’IA ne correspondait pas à la structure attendue.",LLM_LOCALE_KEYS:"Une valeur traduite ne contient pas l’une des langues demandées.",LLM_UNKNOWN_TABLE:"L’IA a fait référence à une table absente de ce schéma ; la suggestion a été écartée.",LLM_UNKNOWN_COLUMN:"L’IA a fait référence à une colonne absente de ce schéma ; la suggestion a été écartée.",LLM_BAD_DISPLAY_COLUMN:"La colonne d’affichage suggérée est un identifiant, pas une valeur lisible.",LLM_NOT_AN_ENUM:"L’IA a traité une colonne comme une liste de statuts alors qu’elle n’en est pas une.",LLM_ENUM_VALUES:"Les valeurs de statut suggérées ne correspondent pas aux valeurs réelles de la colonne.",LLM_UNKNOWN_RELATION:"L’IA a confirmé une relation qui n’est pas déclarée dans ce schéma.",LLM_RELATION_INVALID:"La relation suggérée est invalide ou fait doublon avec une relation existante.",LLM_UNKNOWN_TEMPLATE:"L’IA a recommandé un modèle de page qui n’est pas autorisé.",LLM_UNKNOWN_WIDGET:"L’IA a recommandé un widget de tableau de bord qui n’est pas autorisé.",LLM_WIDGET_BINDING:"Un widget suggéré est lié à des colonnes inadaptées ; il a été écarté.",LLM_GROUP_INVALID:"Un groupe de navigation est invalide — une table apparaît dans plusieurs groupes.",LLM_UNKNOWN_ICON:"L’icône suggérée n’est pas disponible ; une icône par défaut a été utilisée.",LLM_RUN_MISMATCH:"Cette réponse semble avoir été générée à partir d’une autre invite."};export{e as default};
|
|
2
|
+
//# sourceMappingURL=errors-IqJSoANC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-IqJSoANC.js","sources":["../../../../packages/i18n/dist/resources/fr-fr/errors.js"],"sourcesContent":["/**\n * GENERATED MIRROR of ../../../locales/fr-FR/errors.json — do not edit by hand.\n * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);\n * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits\n * the other locales) without JSON import attributes (browser + NodeNext safe).\n * Parity is enforced by src/resources/parity.test.ts. Regenerate with\n * scripts/gen-resources.mjs.\n */\nexport default {\n \"UNAUTHENTICATED\": \"Vous devez vous connecter pour continuer.\",\n \"SESSION_EXPIRED\": \"Votre session a expiré. Reconnectez-vous pour continuer.\",\n \"FORBIDDEN\": \"Vous n’avez pas la permission de faire cela.\",\n \"PAGE_FORBIDDEN\": \"Vous n’avez pas la permission de modifier cette page.\",\n \"NOT_FOUND\": \"Cette ressource n’existe pas ou a été supprimée.\",\n \"CONFLICT\": \"Cette modification entre en conflit avec l’état actuel. Actualisez et réessayez.\",\n \"UNIQUE_VIOLATION\": \"Cette valeur est déjà utilisée.\",\n \"VALIDATION_FAILED\": \"Certains champs demandent votre attention avant l’enregistrement.\",\n \"RATE_LIMITED\": \"Trop de requêtes — patientez un instant et réessayez.\",\n \"PAYLOAD_TOO_LARGE\": \"Cette requête est trop volumineuse.\",\n \"META_NOT_CONFIGURED\": \"Aucun méta-store n’est encore configuré.\",\n \"CONNECTION_FAILED\": \"Adminium n’a pas pu joindre la base de données.\",\n \"INTERNAL\": \"Une erreur s’est produite. Communiquez l’identifiant de requête au support.\",\n \"OFFLINE\": \"Vous semblez être hors ligne. Reconnectez-vous pour continuer.\",\n \"LLM_JSON_PARSE\": \"La réponse de l’IA n’était pas un JSON valide.\",\n \"LLM_TRUNCATED\": \"La réponse de l’IA a été coupée avant la fin.\",\n \"LLM_VERSION_MISMATCH\": \"Cette réponse a été produite pour une version non prise en charge. Régénérez l’invite dans Paramètres → IA.\",\n \"LLM_MODEL_DECLINED\": \"L’IA a refusé de produire des suggestions pour ce schéma.\",\n \"LLM_SCHEMA_INVALID\": \"La réponse de l’IA ne correspondait pas à la structure attendue.\",\n \"LLM_LOCALE_KEYS\": \"Une valeur traduite ne contient pas l’une des langues demandées.\",\n \"LLM_UNKNOWN_TABLE\": \"L’IA a fait référence à une table absente de ce schéma ; la suggestion a été écartée.\",\n \"LLM_UNKNOWN_COLUMN\": \"L’IA a fait référence à une colonne absente de ce schéma ; la suggestion a été écartée.\",\n \"LLM_BAD_DISPLAY_COLUMN\": \"La colonne d’affichage suggérée est un identifiant, pas une valeur lisible.\",\n \"LLM_NOT_AN_ENUM\": \"L’IA a traité une colonne comme une liste de statuts alors qu’elle n’en est pas une.\",\n \"LLM_ENUM_VALUES\": \"Les valeurs de statut suggérées ne correspondent pas aux valeurs réelles de la colonne.\",\n \"LLM_UNKNOWN_RELATION\": \"L’IA a confirmé une relation qui n’est pas déclarée dans ce schéma.\",\n \"LLM_RELATION_INVALID\": \"La relation suggérée est invalide ou fait doublon avec une relation existante.\",\n \"LLM_UNKNOWN_TEMPLATE\": \"L’IA a recommandé un modèle de page qui n’est pas autorisé.\",\n \"LLM_UNKNOWN_WIDGET\": \"L’IA a recommandé un widget de tableau de bord qui n’est pas autorisé.\",\n \"LLM_WIDGET_BINDING\": \"Un widget suggéré est lié à des colonnes inadaptées ; il a été écarté.\",\n \"LLM_GROUP_INVALID\": \"Un groupe de navigation est invalide — une table apparaît dans plusieurs groupes.\",\n \"LLM_UNKNOWN_ICON\": \"L’icône suggérée n’est pas disponible ; une icône par défaut a été utilisée.\",\n \"LLM_RUN_MISMATCH\": \"Cette réponse semble avoir été générée à partir d’une autre invite.\"\n};\n//# sourceMappingURL=errors.js.map"],"names":["errors"],"mappings":"AAQA,MAAAA,EAAe,CACX,gBAAmB,4CACnB,gBAAmB,2DACnB,UAAa,+CACb,eAAkB,wDAClB,UAAa,mDACb,SAAY,mFACZ,iBAAoB,kCACpB,kBAAqB,oEACrB,aAAgB,wDAChB,kBAAqB,sCACrB,oBAAuB,2CACvB,kBAAqB,kDACrB,SAAY,8EACZ,QAAW,iEACX,eAAkB,iDAClB,cAAiB,gDACjB,qBAAwB,8GACxB,mBAAsB,4DACtB,mBAAsB,mEACtB,gBAAmB,mEACnB,kBAAqB,wFACrB,mBAAsB,0FACtB,uBAA0B,8EAC1B,gBAAmB,uFACnB,gBAAmB,0FACnB,qBAAwB,sEACxB,qBAAwB,iFACxB,qBAAwB,8DACxB,mBAAsB,yEACtB,mBAAsB,yEACtB,kBAAqB,oFACrB,iBAAoB,+EACpB,iBAAoB,qEACxB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const L={UNAUTHENTICATED:"需要登入才能繼續。",SESSION_EXPIRED:"工作階段已過期。請重新登入以繼續。",FORBIDDEN:"你沒有執行此動作的權限。",PAGE_FORBIDDEN:"你沒有編輯此頁面的權限。",NOT_FOUND:"該資源不存在或已被移除。",CONFLICT:"該變更與目前狀態衝突。請重新整理後再試一次。",UNIQUE_VIOLATION:"該值已被使用。",VALIDATION_FAILED:"部分欄位需要修正後才能儲存。",RATE_LIMITED:"要求次數過多——請稍候片刻再試。",PAYLOAD_TOO_LARGE:"該要求過大。",META_NOT_CONFIGURED:"尚未設定中繼資料儲存區。",CONNECTION_FAILED:"Adminium 無法連線至資料庫。",INTERNAL:"發生錯誤。請將要求 ID 提供給支援團隊。",OFFLINE:"你似乎已離線。請重新連線後繼續。",LLM_JSON_PARSE:"AI 回應的內容不是有效的 JSON。",LLM_TRUNCATED:"AI 回應的內容在結束前被截斷了。",LLM_VERSION_MISMATCH:"此回應是為不受支援的版本產生的。請在「設定 → AI」中重新產生提示詞。",LLM_MODEL_DECLINED:"AI 拒絕為此結構描述產生建議。",LLM_SCHEMA_INVALID:"AI 回應與預期的結構不相符。",LLM_LOCALE_KEYS:"某個翻譯值缺少一種所要求的語言。",LLM_UNKNOWN_TABLE:"AI 參照了此結構描述中不存在的資料表;該建議已被捨棄。",LLM_UNKNOWN_COLUMN:"AI 參照了此結構描述中不存在的欄;該建議已被捨棄。",LLM_BAD_DISPLAY_COLUMN:"建議的顯示欄是 ID,而非可讀的值。",LLM_NOT_AN_ENUM:"AI 把某一欄當作狀態清單,但它並不是。",LLM_ENUM_VALUES:"建議的狀態值與該欄的實際值不相符。",LLM_UNKNOWN_RELATION:"AI 確認了此結構描述中未宣告的關聯。",LLM_RELATION_INVALID:"建議的關聯無效或與現有關聯重複。",LLM_UNKNOWN_TEMPLATE:"AI 推薦了不允許使用的頁面範本。",LLM_UNKNOWN_WIDGET:"AI 推薦了不允許使用的儀表板小工具。",LLM_WIDGET_BINDING:"某個建議的小工具繫結到不相符的欄;已被移除。",LLM_GROUP_INVALID:"某個導覽群組無效——一個資料表出現在多個群組中。",LLM_UNKNOWN_ICON:"建議的圖示無法使用;已改用預設圖示。",LLM_RUN_MISMATCH:"此回應似乎是從其他提示詞產生的。"};export{L as default};
|
|
2
|
+
//# sourceMappingURL=errors-gmIkO9F6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors-gmIkO9F6.js","sources":["../../../../packages/i18n/dist/resources/zh-tw/errors.js"],"sourcesContent":["/**\n * GENERATED MIRROR of ../../../locales/zh-TW/errors.json — do not edit by hand.\n * The JSON file is the canonical hand-authored bundle (10-i18n-theming.md §3.1);\n * this TS mirror exists so the runtime bundles en-US resources (and chunk-splits\n * the other locales) without JSON import attributes (browser + NodeNext safe).\n * Parity is enforced by src/resources/parity.test.ts. Regenerate with\n * scripts/gen-resources.mjs.\n */\nexport default {\n \"UNAUTHENTICATED\": \"需要登入才能繼續。\",\n \"SESSION_EXPIRED\": \"工作階段已過期。請重新登入以繼續。\",\n \"FORBIDDEN\": \"你沒有執行此動作的權限。\",\n \"PAGE_FORBIDDEN\": \"你沒有編輯此頁面的權限。\",\n \"NOT_FOUND\": \"該資源不存在或已被移除。\",\n \"CONFLICT\": \"該變更與目前狀態衝突。請重新整理後再試一次。\",\n \"UNIQUE_VIOLATION\": \"該值已被使用。\",\n \"VALIDATION_FAILED\": \"部分欄位需要修正後才能儲存。\",\n \"RATE_LIMITED\": \"要求次數過多——請稍候片刻再試。\",\n \"PAYLOAD_TOO_LARGE\": \"該要求過大。\",\n \"META_NOT_CONFIGURED\": \"尚未設定中繼資料儲存區。\",\n \"CONNECTION_FAILED\": \"Adminium 無法連線至資料庫。\",\n \"INTERNAL\": \"發生錯誤。請將要求 ID 提供給支援團隊。\",\n \"OFFLINE\": \"你似乎已離線。請重新連線後繼續。\",\n \"LLM_JSON_PARSE\": \"AI 回應的內容不是有效的 JSON。\",\n \"LLM_TRUNCATED\": \"AI 回應的內容在結束前被截斷了。\",\n \"LLM_VERSION_MISMATCH\": \"此回應是為不受支援的版本產生的。請在「設定 → AI」中重新產生提示詞。\",\n \"LLM_MODEL_DECLINED\": \"AI 拒絕為此結構描述產生建議。\",\n \"LLM_SCHEMA_INVALID\": \"AI 回應與預期的結構不相符。\",\n \"LLM_LOCALE_KEYS\": \"某個翻譯值缺少一種所要求的語言。\",\n \"LLM_UNKNOWN_TABLE\": \"AI 參照了此結構描述中不存在的資料表;該建議已被捨棄。\",\n \"LLM_UNKNOWN_COLUMN\": \"AI 參照了此結構描述中不存在的欄;該建議已被捨棄。\",\n \"LLM_BAD_DISPLAY_COLUMN\": \"建議的顯示欄是 ID,而非可讀的值。\",\n \"LLM_NOT_AN_ENUM\": \"AI 把某一欄當作狀態清單,但它並不是。\",\n \"LLM_ENUM_VALUES\": \"建議的狀態值與該欄的實際值不相符。\",\n \"LLM_UNKNOWN_RELATION\": \"AI 確認了此結構描述中未宣告的關聯。\",\n \"LLM_RELATION_INVALID\": \"建議的關聯無效或與現有關聯重複。\",\n \"LLM_UNKNOWN_TEMPLATE\": \"AI 推薦了不允許使用的頁面範本。\",\n \"LLM_UNKNOWN_WIDGET\": \"AI 推薦了不允許使用的儀表板小工具。\",\n \"LLM_WIDGET_BINDING\": \"某個建議的小工具繫結到不相符的欄;已被移除。\",\n \"LLM_GROUP_INVALID\": \"某個導覽群組無效——一個資料表出現在多個群組中。\",\n \"LLM_UNKNOWN_ICON\": \"建議的圖示無法使用;已改用預設圖示。\",\n \"LLM_RUN_MISMATCH\": \"此回應似乎是從其他提示詞產生的。\"\n};\n//# sourceMappingURL=errors.js.map"],"names":["errors"],"mappings":"AAQA,MAAAA,EAAe,CACX,gBAAmB,YACnB,gBAAmB,oBACnB,UAAa,eACb,eAAkB,eAClB,UAAa,eACb,SAAY,yBACZ,iBAAoB,UACpB,kBAAqB,iBACrB,aAAgB,mBAChB,kBAAqB,SACrB,oBAAuB,eACvB,kBAAqB,qBACrB,SAAY,wBACZ,QAAW,mBACX,eAAkB,sBAClB,cAAiB,oBACjB,qBAAwB,uCACxB,mBAAsB,mBACtB,mBAAsB,kBACtB,gBAAmB,mBACnB,kBAAqB,+BACrB,mBAAsB,6BACtB,uBAA0B,qBAC1B,gBAAmB,uBACnB,gBAAmB,oBACnB,qBAAwB,sBACxB,qBAAwB,mBACxB,qBAAwB,oBACxB,mBAAsB,sBACtB,mBAAsB,yBACtB,kBAAqB,2BACrB,iBAAoB,qBACpB,iBAAoB,kBACxB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const L={UNAUTHENTICATED:"يلزم تسجيل الدخول للمتابعة.",SESSION_EXPIRED:"انتهت صلاحية جلستك. سجِّل الدخول مجددًا للمتابعة.",FORBIDDEN:"ليست لديك صلاحية للقيام بذلك.",PAGE_FORBIDDEN:"ليست لديك صلاحية لتعديل هذه الصفحة.",NOT_FOUND:"هذا المورد غير موجود أو تمت إزالته.",CONFLICT:"يتعارض هذا التغيير مع الحالة الحالية. حدِّث الصفحة وحاول مجددًا.",UNIQUE_VIOLATION:"هذه القيمة مستخدمة بالفعل.",VALIDATION_FAILED:"تحتاج بعض الحقول إلى مراجعة قبل الحفظ.",RATE_LIMITED:"طلبات كثيرة جدًا — انتظر لحظة وحاول مجددًا.",PAYLOAD_TOO_LARGE:"هذا الطلب كبير جدًا.",META_NOT_CONFIGURED:"لم يُهيَّأ مخزن البيانات الوصفية بعد.",CONNECTION_FAILED:"تعذَّر على Adminium الوصول إلى قاعدة البيانات.",INTERNAL:"حدث خطأ ما. شارك معرِّف الطلب مع فريق الدعم.",OFFLINE:"يبدو أنك غير متصل. أعد الاتصال للمتابعة.",LLM_JSON_PARSE:"لم تكن استجابة الذكاء الاصطناعي بصيغة JSON صالحة.",LLM_TRUNCATED:"اقتُطعت استجابة الذكاء الاصطناعي قبل اكتمالها.",LLM_VERSION_MISMATCH:"أُنشئت هذه الاستجابة لإصدار غير مدعوم. أعد توليد المطالبة من الإعدادات → الذكاء الاصطناعي.",LLM_MODEL_DECLINED:"رفض الذكاء الاصطناعي إنشاء اقتراحات لهذا المخطط.",LLM_SCHEMA_INVALID:"لم تطابق استجابة الذكاء الاصطناعي البنية المتوقعة.",LLM_LOCALE_KEYS:"تفتقد إحدى القيم المترجمة لغة من اللغات المطلوبة.",LLM_UNKNOWN_TABLE:"أشار الذكاء الاصطناعي إلى جدول غير موجود في هذا المخطط؛ فتم تجاهل الاقتراح.",LLM_UNKNOWN_COLUMN:"أشار الذكاء الاصطناعي إلى عمود غير موجود في هذا المخطط؛ فتم تجاهل الاقتراح.",LLM_BAD_DISPLAY_COLUMN:"عمود العرض المقترح مُعرِّف، وليس قيمة قابلة للقراءة.",LLM_NOT_AN_ENUM:"عامل الذكاء الاصطناعي عمودًا كقائمة حالات رغم أنه ليس كذلك.",LLM_ENUM_VALUES:"لا تطابق قيم الحالة المقترحة القيم الفعلية للعمود.",LLM_UNKNOWN_RELATION:"أكّد الذكاء الاصطناعي علاقة غير معلَنة في هذا المخطط.",LLM_RELATION_INVALID:"العلاقة المقترحة غير صالحة أو مكرِّرة لعلاقة موجودة.",LLM_UNKNOWN_TEMPLATE:"أوصى الذكاء الاصطناعي بقالب صفحة غير مسموح به.",LLM_UNKNOWN_WIDGET:"أوصى الذكاء الاصطناعي بأداة لوحة معلومات غير مسموح بها.",LLM_WIDGET_BINDING:"إحدى الأدوات المقترحة مرتبطة بأعمدة غير مناسبة؛ فتم إسقاطها.",LLM_GROUP_INVALID:"إحدى مجموعات التنقل غير صالحة — يظهر جدول في أكثر من مجموعة.",LLM_UNKNOWN_ICON:"الأيقونة المقترحة غير متاحة؛ فاستُخدمت أيقونة افتراضية بدلًا منها.",LLM_RUN_MISMATCH:"تبدو هذه الاستجابة وكأنها أُنشئت من مطالبة مختلفة."};export{L as default};
|
|
2
|
+
//# sourceMappingURL=errors-vFk058Vh.js.map
|