@reddb-io/ui 0.3.4 → 0.3.5
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/build/_app/immutable/assets/0.kZZvCfcb.css +1 -0
- package/build/_app/immutable/assets/jetbrains-mono-variable.D5KFAJfm.woff2 +0 -0
- package/build/_app/immutable/assets/space-grotesk-variable.BhU9QXUp.woff2 +0 -0
- package/build/_app/immutable/chunks/{DpZOD-db.js → B0VvmBoI.js} +1 -1
- package/build/_app/immutable/chunks/{C3SGj6Qd.js → BRBZjpE2.js} +1 -1
- package/build/_app/immutable/chunks/{CAWnp6XP.js → BVwWA3xx.js} +6 -6
- package/build/_app/immutable/chunks/BW1DXKuJ.js +1 -0
- package/build/_app/immutable/chunks/Bl--JRJL.js +35 -0
- package/build/_app/immutable/chunks/{BRIMmWzq.js → CN4cKZHK.js} +1 -1
- package/build/_app/immutable/chunks/CqNT6kY9.js +5 -0
- package/build/_app/immutable/chunks/nuKvOE41.js +2 -0
- package/build/_app/immutable/chunks/{C_WxkIDp.js → zWSbcoVP.js} +1 -1
- package/build/_app/immutable/entry/app.CaFS7aa2.js +2 -0
- package/build/_app/immutable/entry/start.CHBGG1k_.js +1 -0
- package/build/_app/immutable/nodes/0.BbSvq8nk.js +2 -0
- package/build/_app/immutable/nodes/1.CRP48TvS.js +1 -0
- package/build/_app/immutable/nodes/10.CXsR87Il.js +1 -0
- package/build/_app/immutable/nodes/{12.CzMvqoYS.js → 12.B0WbW-6G.js} +1 -1
- package/build/_app/immutable/nodes/15.C0aUvI2r.js +60 -0
- package/build/_app/version.json +1 -1
- package/build/index.html +30 -21
- package/dist/embed/{AnalyticsView-b7oALOd5.js → AnalyticsView-CZV8ntM5.js} +567 -549
- package/dist/embed/AnalyticsView-CZV8ntM5.js.map +1 -0
- package/dist/embed/RedUiEmbedRoot-Cn7wCgaP.js +34803 -0
- package/dist/embed/RedUiEmbedRoot-Cn7wCgaP.js.map +1 -0
- package/dist/embed/index-BEbHY5Se.js +3264 -0
- package/dist/embed/index-BEbHY5Se.js.map +1 -0
- package/dist/embed/index-client-DxIHaYUc.js +969 -0
- package/dist/embed/index-client-DxIHaYUc.js.map +1 -0
- package/dist/embed/index.js +1 -1
- package/dist/embed/{sigma.esm-CvtUChKS.js → sigma.esm-BXKPmNCu.js} +2 -2
- package/dist/embed/{sigma.esm-CvtUChKS.js.map → sigma.esm-BXKPmNCu.js.map} +1 -1
- package/package.json +11 -30
- package/src/app.css +51 -148
- package/src/lib/ActivityIndicator.svelte +6 -3
- package/src/lib/AnalyticsView.svelte +8 -6
- package/src/lib/Appearance.svelte +2 -2
- package/src/lib/AskView.svelte +16 -13
- package/src/lib/ClusterView.svelte +19 -17
- package/src/lib/CollectionHistory.svelte +10 -5
- package/src/lib/CommandPalette.svelte +1 -1
- package/src/lib/ConnectDropdown.svelte +10 -12
- package/src/lib/DevConsole.svelte +4 -1
- package/src/lib/EmptyState.svelte +11 -19
- package/src/lib/ErrorBoundary.svelte +3 -2
- package/src/lib/LiveChanges.svelte +7 -3
- package/src/lib/MasterPasswordDialog.svelte +8 -4
- package/src/lib/MetricChart.svelte +5 -5
- package/src/lib/PendingChangesPanel.svelte +5 -3
- package/src/lib/QueryEditor.svelte +6 -4
- package/src/lib/ResultsPane.svelte +19 -7
- package/src/lib/SchemaTree.svelte +8 -4
- package/src/lib/SecurityView.svelte +19 -12
- package/src/lib/SettingsView.svelte +23 -24
- package/src/lib/ShortcutOverlay.svelte +1 -1
- package/src/lib/Splash.svelte +1 -1
- package/src/lib/StatusBar.svelte +5 -2
- package/src/lib/Topbar.svelte +14 -5
- package/src/lib/embed/index.ts +20 -57
- package/src/lib/reddb/client.ts +1 -1
- package/src/lib/renderers/DiffRenderer.svelte +9 -6
- package/src/lib/renderers/DocumentRenderer.svelte +8 -5
- package/src/lib/renderers/GraphRenderer.svelte +36 -20
- package/src/lib/renderers/HypertableRenderer.svelte +8 -5
- package/src/lib/renderers/KvRenderer.svelte +7 -4
- package/src/lib/renderers/QueueRenderer.svelte +15 -8
- package/src/lib/renderers/StatsRenderer.svelte +7 -5
- package/src/lib/renderers/TableRenderer.svelte +12 -7
- package/src/lib/renderers/VectorRenderer.svelte +16 -9
- package/src/lib/shadow-dom-spike/mount-shadow-dom-spike.ts +3 -2
- package/src/lib/skins/skins.ts +49 -20
- package/src/lib/theme.svelte.ts +22 -3
- package/vendor/ds/assets/fonts/jetbrains-mono-variable.woff2 +0 -0
- package/vendor/ds/assets/fonts/space-grotesk-variable.woff2 +0 -0
- package/vendor/ds/assets/fonts.css +38 -0
- package/vendor/ds/design-system.receipt.json +871 -0
- package/vendor/ds/kits/app/README.md +601 -0
- package/vendor/ds/kits/app/interaction-allowlist.json +35 -0
- package/vendor/ds/kits/app/kit.json +5 -0
- package/vendor/ds/kits/app/src/composites/ActionPanel.svelte +66 -0
- package/vendor/ds/kits/app/src/composites/ActivityFeed.svelte +29 -0
- package/vendor/ds/kits/app/src/composites/ApplicationShell.svelte +99 -0
- package/vendor/ds/kits/app/src/composites/BottomNavigation.svelte +68 -0
- package/vendor/ds/kits/app/src/composites/CardHeading.svelte +44 -0
- package/vendor/ds/kits/app/src/composites/CategoryFilter.svelte +83 -0
- package/vendor/ds/kits/app/src/composites/CategoryPreview.svelte +45 -0
- package/vendor/ds/kits/app/src/composites/ChatMessage.svelte +53 -0
- package/vendor/ds/kits/app/src/composites/CheckoutForm.svelte +91 -0
- package/vendor/ds/kits/app/src/composites/CommandPalette.svelte +80 -0
- package/vendor/ds/kits/app/src/composites/ContextMenu.svelte +138 -0
- package/vendor/ds/kits/app/src/composites/Diff.svelte +146 -0
- package/vendor/ds/kits/app/src/composites/EntityInspector.svelte +40 -0
- package/vendor/ds/kits/app/src/composites/EntityJourney.svelte +60 -0
- package/vendor/ds/kits/app/src/composites/Filter.svelte +42 -0
- package/vendor/ds/kits/app/src/composites/Incentive.svelte +61 -0
- package/vendor/ds/kits/app/src/composites/Menubar.svelte +121 -0
- package/vendor/ds/kits/app/src/composites/MultiColumnLayout.svelte +51 -0
- package/vendor/ds/kits/app/src/composites/OrderHistory.svelte +70 -0
- package/vendor/ds/kits/app/src/composites/OrderSummary.svelte +60 -0
- package/vendor/ds/kits/app/src/composites/PageHeading.svelte +46 -0
- package/vendor/ds/kits/app/src/composites/PhaseSummary.svelte +38 -0
- package/vendor/ds/kits/app/src/composites/PlaybackControls.svelte +62 -0
- package/vendor/ds/kits/app/src/composites/ProductFeature.svelte +71 -0
- package/vendor/ds/kits/app/src/composites/ProductList.svelte +74 -0
- package/vendor/ds/kits/app/src/composites/ProductOverview.svelte +77 -0
- package/vendor/ds/kits/app/src/composites/ProductQuickview.svelte +62 -0
- package/vendor/ds/kits/app/src/composites/PropertyPanel.svelte +42 -0
- package/vendor/ds/kits/app/src/composites/Review.svelte +68 -0
- package/vendor/ds/kits/app/src/composites/SettingsRow.svelte +38 -0
- package/vendor/ds/kits/app/src/composites/ShoppingCart.svelte +136 -0
- package/vendor/ds/kits/app/src/composites/SidebarLayout.svelte +349 -0
- package/vendor/ds/kits/app/src/composites/SidebarNavigation.svelte +74 -0
- package/vendor/ds/kits/app/src/composites/SidebarPanel.svelte +50 -0
- package/vendor/ds/kits/app/src/composites/SidebarRail.svelte +162 -0
- package/vendor/ds/kits/app/src/composites/SpeedDial.svelte +67 -0
- package/vendor/ds/kits/app/src/composites/StoreNavigation.svelte +53 -0
- package/vendor/ds/kits/app/src/composites/TaskCard.svelte +71 -0
- package/vendor/ds/kits/app/src/composites/TaskList.svelte +52 -0
- package/vendor/ds/kits/app/src/composites/TelemetryRow.svelte +41 -0
- package/vendor/ds/kits/app/src/composites/Toolbar.svelte +67 -0
- package/vendor/ds/kits/app/src/composites/action-panel.variants.ts +12 -0
- package/vendor/ds/kits/app/src/composites/activity-feed.variants.ts +10 -0
- package/vendor/ds/kits/app/src/composites/application-shell.behavior.ts +25 -0
- package/vendor/ds/kits/app/src/composites/application-shell.variants.ts +35 -0
- package/vendor/ds/kits/app/src/composites/bottom-navigation.variants.ts +20 -0
- package/vendor/ds/kits/app/src/composites/card-heading.variants.ts +7 -0
- package/vendor/ds/kits/app/src/composites/category-filter.variants.ts +22 -0
- package/vendor/ds/kits/app/src/composites/category-preview.variants.ts +21 -0
- package/vendor/ds/kits/app/src/composites/chat-message.variants.ts +16 -0
- package/vendor/ds/kits/app/src/composites/checkout-form.appearance.ts +19 -0
- package/vendor/ds/kits/app/src/composites/checkout-form.variants.ts +7 -0
- package/vendor/ds/kits/app/src/composites/command-palette.behavior.ts +11 -0
- package/vendor/ds/kits/app/src/composites/command-palette.variants.ts +15 -0
- package/vendor/ds/kits/app/src/composites/command-surfaces.behavior.ts +24 -0
- package/vendor/ds/kits/app/src/composites/context-menu.variants.ts +19 -0
- package/vendor/ds/kits/app/src/composites/diff.variants.ts +31 -0
- package/vendor/ds/kits/app/src/composites/filter.variants.ts +21 -0
- package/vendor/ds/kits/app/src/composites/incentive.variants.ts +18 -0
- package/vendor/ds/kits/app/src/composites/main-landmark.ts +23 -0
- package/vendor/ds/kits/app/src/composites/menubar.variants.ts +18 -0
- package/vendor/ds/kits/app/src/composites/multi-column-layout.variants.ts +39 -0
- package/vendor/ds/kits/app/src/composites/navigation.behavior.ts +84 -0
- package/vendor/ds/kits/app/src/composites/order-history.variants.ts +38 -0
- package/vendor/ds/kits/app/src/composites/order-summary.variants.ts +23 -0
- package/vendor/ds/kits/app/src/composites/page-heading.variants.ts +22 -0
- package/vendor/ds/kits/app/src/composites/product-feature.variants.ts +37 -0
- package/vendor/ds/kits/app/src/composites/product-list.behavior.ts +4 -0
- package/vendor/ds/kits/app/src/composites/product-list.variants.ts +35 -0
- package/vendor/ds/kits/app/src/composites/product-overview.variants.ts +23 -0
- package/vendor/ds/kits/app/src/composites/product-quickview.variants.ts +21 -0
- package/vendor/ds/kits/app/src/composites/review.variants.ts +17 -0
- package/vendor/ds/kits/app/src/composites/settings-row.variants.ts +17 -0
- package/vendor/ds/kits/app/src/composites/shopping-cart.appearance.ts +32 -0
- package/vendor/ds/kits/app/src/composites/shopping-cart.variants.ts +5 -0
- package/vendor/ds/kits/app/src/composites/sidebar-layout.variants.ts +211 -0
- package/vendor/ds/kits/app/src/composites/sidebar-navigation.variants.ts +12 -0
- package/vendor/ds/kits/app/src/composites/sidebar-panel.variants.ts +13 -0
- package/vendor/ds/kits/app/src/composites/sidebar-rail.variants.ts +58 -0
- package/vendor/ds/kits/app/src/composites/speed-dial.variants.ts +22 -0
- package/vendor/ds/kits/app/src/composites/store-navigation.variants.ts +15 -0
- package/vendor/ds/kits/app/src/composites/task-list.behavior.ts +51 -0
- package/vendor/ds/kits/app/src/composites/task-list.variants.ts +18 -0
- package/vendor/ds/kits/app/src/composites/toolbar.variants.ts +27 -0
- package/vendor/ds/kits/app/src/core/category-filter.ts +4 -0
- package/vendor/ds/kits/app/src/core/checkout-form.ts +22 -0
- package/vendor/ds/kits/app/src/core/contracts/actionpanel.ts +24 -0
- package/vendor/ds/kits/app/src/core/contracts/activityfeed.ts +10 -0
- package/vendor/ds/kits/app/src/core/contracts/applicationshell.ts +17 -0
- package/vendor/ds/kits/app/src/core/contracts/bottomnavigation.ts +20 -0
- package/vendor/ds/kits/app/src/core/contracts/cardheading.ts +15 -0
- package/vendor/ds/kits/app/src/core/contracts/categoryfilter.ts +21 -0
- package/vendor/ds/kits/app/src/core/contracts/categorypreview.ts +18 -0
- package/vendor/ds/kits/app/src/core/contracts/chatmessage.ts +18 -0
- package/vendor/ds/kits/app/src/core/contracts/checkoutform.ts +18 -0
- package/vendor/ds/kits/app/src/core/contracts/commandpalette.ts +24 -0
- package/vendor/ds/kits/app/src/core/contracts/contextmenu.ts +30 -0
- package/vendor/ds/kits/app/src/core/contracts/diff.ts +18 -0
- package/vendor/ds/kits/app/src/core/contracts/entityinspector.ts +25 -0
- package/vendor/ds/kits/app/src/core/contracts/entityjourney.ts +14 -0
- package/vendor/ds/kits/app/src/core/contracts/filter.ts +22 -0
- package/vendor/ds/kits/app/src/core/contracts/incentive.ts +11 -0
- package/vendor/ds/kits/app/src/core/contracts/listrow.ts +15 -0
- package/vendor/ds/kits/app/src/core/contracts/menubar.ts +28 -0
- package/vendor/ds/kits/app/src/core/contracts/multicolumnlayout.ts +7 -0
- package/vendor/ds/kits/app/src/core/contracts/navitem.ts +17 -0
- package/vendor/ds/kits/app/src/core/contracts/nodebadge.ts +11 -0
- package/vendor/ds/kits/app/src/core/contracts/orderhistory.ts +25 -0
- package/vendor/ds/kits/app/src/core/contracts/ordersummary.ts +19 -0
- package/vendor/ds/kits/app/src/core/contracts/pageheading.ts +9 -0
- package/vendor/ds/kits/app/src/core/contracts/phasesummary.ts +9 -0
- package/vendor/ds/kits/app/src/core/contracts/pill.ts +17 -0
- package/vendor/ds/kits/app/src/core/contracts/playbackcontrols.ts +20 -0
- package/vendor/ds/kits/app/src/core/contracts/productfeature.ts +14 -0
- package/vendor/ds/kits/app/src/core/contracts/productlist.ts +17 -0
- package/vendor/ds/kits/app/src/core/contracts/productoverview.ts +20 -0
- package/vendor/ds/kits/app/src/core/contracts/productquickview.ts +16 -0
- package/vendor/ds/kits/app/src/core/contracts/propertypanel.ts +9 -0
- package/vendor/ds/kits/app/src/core/contracts/review.ts +22 -0
- package/vendor/ds/kits/app/src/core/contracts/settingsrow.ts +13 -0
- package/vendor/ds/kits/app/src/core/contracts/shoppingcart.ts +29 -0
- package/vendor/ds/kits/app/src/core/contracts/sidebarlayout.ts +40 -0
- package/vendor/ds/kits/app/src/core/contracts/sidebarnavigation.ts +16 -0
- package/vendor/ds/kits/app/src/core/contracts/sidebarpanel.ts +22 -0
- package/vendor/ds/kits/app/src/core/contracts/sidebarrail.ts +13 -0
- package/vendor/ds/kits/app/src/core/contracts/speeddial.ts +32 -0
- package/vendor/ds/kits/app/src/core/contracts/splitview.ts +15 -0
- package/vendor/ds/kits/app/src/core/contracts/storenavigation.ts +20 -0
- package/vendor/ds/kits/app/src/core/contracts/taskcard.ts +7 -0
- package/vendor/ds/kits/app/src/core/contracts/tasklist.ts +13 -0
- package/vendor/ds/kits/app/src/core/contracts/telemetryrow.ts +17 -0
- package/vendor/ds/kits/app/src/core/contracts/toolbar.ts +25 -0
- package/vendor/ds/kits/app/src/core/diff.ts +7 -0
- package/vendor/ds/kits/app/src/core/entity-inspector.ts +26 -0
- package/vendor/ds/kits/app/src/core/entity-journey.ts +52 -0
- package/vendor/ds/kits/app/src/core/measure.ts +7 -0
- package/vendor/ds/kits/app/src/core/operational.ts +42 -0
- package/vendor/ds/kits/app/src/core/product-list.ts +16 -0
- package/vendor/ds/kits/app/src/core/settings-row.ts +9 -0
- package/vendor/ds/kits/app/src/core/shopping-cart.ts +17 -0
- package/vendor/ds/kits/app/src/core/sidebar-rail.ts +58 -0
- package/vendor/ds/kits/app/src/entity-inspector.variants.ts +14 -0
- package/vendor/ds/kits/app/src/entity-journey.variants.ts +38 -0
- package/vendor/ds/kits/app/src/index.ts +429 -0
- package/vendor/ds/kits/app/src/operational.variants.ts +20 -0
- package/vendor/ds/kits/app/src/primitives/ListRow.svelte +95 -0
- package/vendor/ds/kits/app/src/primitives/NavItem.svelte +87 -0
- package/vendor/ds/kits/app/src/primitives/NodeBadge.svelte +47 -0
- package/vendor/ds/kits/app/src/primitives/Pill.svelte +81 -0
- package/vendor/ds/kits/app/src/primitives/SplitView.svelte +148 -0
- package/vendor/ds/kits/app/src/primitives/list-row.variants.ts +82 -0
- package/vendor/ds/kits/app/src/primitives/nav-item.variants.ts +56 -0
- package/vendor/ds/kits/app/src/primitives/node-badge.variants.ts +73 -0
- package/vendor/ds/kits/app/src/primitives/pill.variants.ts +117 -0
- package/vendor/ds/kits/app/src/primitives/split-view.behavior.ts +113 -0
- package/vendor/ds/kits/app/src/primitives/split-view.variants.ts +60 -0
- package/vendor/ds/kits/app/src/recipes.ts +44 -0
- package/vendor/ds/kits/app/svelte.config.js +6 -0
- package/vendor/ds/kits/app/test/action-panel.test.ts +63 -0
- package/vendor/ds/kits/app/test/activity-feed.test.ts +74 -0
- package/vendor/ds/kits/app/test/application-shell.test.ts +147 -0
- package/vendor/ds/kits/app/test/base-contraction.test.ts +60 -0
- package/vendor/ds/kits/app/test/button-migration.test.ts +134 -0
- package/vendor/ds/kits/app/test/card-heading.test.ts +53 -0
- package/vendor/ds/kits/app/test/category-filter.test.ts +84 -0
- package/vendor/ds/kits/app/test/category-preview.test.ts +75 -0
- package/vendor/ds/kits/app/test/chat-message.test.ts +70 -0
- package/vendor/ds/kits/app/test/checkout-form.test.ts +134 -0
- package/vendor/ds/kits/app/test/coherence.test.ts +193 -0
- package/vendor/ds/kits/app/test/command-palette.test.ts +177 -0
- package/vendor/ds/kits/app/test/command-surface-failures.test.ts +28 -0
- package/vendor/ds/kits/app/test/commerce-readiness.ts +54 -0
- package/vendor/ds/kits/app/test/consumer-check.test.ts +61 -0
- package/vendor/ds/kits/app/test/context-menu.test.ts +96 -0
- package/vendor/ds/kits/app/test/density.test.ts +487 -0
- package/vendor/ds/kits/app/test/diff.test.ts +121 -0
- package/vendor/ds/kits/app/test/elevation.test.ts +77 -0
- package/vendor/ds/kits/app/test/entity-inspector.test.ts +97 -0
- package/vendor/ds/kits/app/test/entity-journey.test.ts +100 -0
- package/vendor/ds/kits/app/test/event-dialect.test.ts +183 -0
- package/vendor/ds/kits/app/test/filter.test.ts +161 -0
- package/vendor/ds/kits/app/test/fixtures/ApplicationLayoutsConsumer.svelte +26 -0
- package/vendor/ds/kits/app/test/fixtures/ApplicationLayoutsContractFailures.svelte +19 -0
- package/vendor/ds/kits/app/test/fixtures/CommandPaletteConsumer.svelte +22 -0
- package/vendor/ds/kits/app/test/fixtures/CommandPaletteContractFailures.svelte +20 -0
- package/vendor/ds/kits/app/test/fixtures/CommandSurfaceContractFailures.svelte +24 -0
- package/vendor/ds/kits/app/test/fixtures/CommerceContractFailures.svelte +17 -0
- package/vendor/ds/kits/app/test/fixtures/CommerceSurfacesConsumer.svelte +30 -0
- package/vendor/ds/kits/app/test/fixtures/DiffConsumer.svelte +18 -0
- package/vendor/ds/kits/app/test/fixtures/DiffContractFailures.svelte +5 -0
- package/vendor/ds/kits/app/test/fixtures/EntityInspector.svelte +7 -0
- package/vendor/ds/kits/app/test/fixtures/EntityJourney.svelte +11 -0
- package/vendor/ds/kits/app/test/fixtures/FilterContractFailures.svelte +16 -0
- package/vendor/ds/kits/app/test/fixtures/FilterSurfacesConsumer.svelte +24 -0
- package/vendor/ds/kits/app/test/fixtures/FrameworkApp.svelte +28 -0
- package/vendor/ds/kits/app/test/fixtures/HeadingContractFailures.svelte +10 -0
- package/vendor/ds/kits/app/test/fixtures/MainOwnershipConsumer.svelte +35 -0
- package/vendor/ds/kits/app/test/fixtures/MerchandisingContractFailures.svelte +3 -0
- package/vendor/ds/kits/app/test/fixtures/MerchandisingSurfacesConsumer.svelte +28 -0
- package/vendor/ds/kits/app/test/fixtures/NavigationContractFailures.svelte +22 -0
- package/vendor/ds/kits/app/test/fixtures/NavigationSurfacesConsumer.svelte +23 -0
- package/vendor/ds/kits/app/test/fixtures/NestedSplitViewConsumer.svelte +20 -0
- package/vendor/ds/kits/app/test/fixtures/Operational.svelte +34 -0
- package/vendor/ds/kits/app/test/fixtures/ProductCatalogueConsumer.svelte +58 -0
- package/vendor/ds/kits/app/test/fixtures/ProductCatalogueContractFailures.svelte +29 -0
- package/vendor/ds/kits/app/test/fixtures/SettingsRows.svelte +10 -0
- package/vendor/ds/kits/app/test/fixtures/ShellBrandComposition.svelte +52 -0
- package/vendor/ds/kits/app/test/fixtures/SocialContractFailures.svelte +20 -0
- package/vendor/ds/kits/app/test/fixtures/SocialSurfacesConsumer.svelte +43 -0
- package/vendor/ds/kits/app/test/fixtures/TestGlyph.svelte +9 -0
- package/vendor/ds/kits/app/test/fixtures/TitlingSurfacesConsumer.svelte +21 -0
- package/vendor/ds/kits/app/test/fixtures/command-surfaces-consumer.ts +14 -0
- package/vendor/ds/kits/app/test/fixtures/consumer-check/Unfixed.svelte +50 -0
- package/vendor/ds/kits/app/test/fixtures/consumer-check/tsconfig.json +4 -0
- package/vendor/ds/kits/app/test/fixtures/markers/fixture-badge.variants.ts +12 -0
- package/vendor/ds/kits/app/test/fixtures/markers/fixture-chip.variants.ts +8 -0
- package/vendor/ds/kits/app/test/fixtures/tree-shaking/button-only.ts +7 -0
- package/vendor/ds/kits/app/test/fixtures/tree-shaking/menu-only.ts +9 -0
- package/vendor/ds/kits/app/test/fixtures/tree-shaking/number-field-only.ts +1 -0
- package/vendor/ds/kits/app/test/fixtures/tree-shaking/task-list-only.ts +1 -0
- package/vendor/ds/kits/app/test/framework-app.test.ts +140 -0
- package/vendor/ds/kits/app/test/framework-operational.test.ts +97 -0
- package/vendor/ds/kits/app/test/heading-level.test.ts +38 -0
- package/vendor/ds/kits/app/test/incentive.test.ts +60 -0
- package/vendor/ds/kits/app/test/label-in-name.ts +43 -0
- package/vendor/ds/kits/app/test/layout-readiness.ts +49 -0
- package/vendor/ds/kits/app/test/lint.test.ts +54 -0
- package/vendor/ds/kits/app/test/list-row.test.ts +117 -0
- package/vendor/ds/kits/app/test/main-ownership.test.ts +56 -0
- package/vendor/ds/kits/app/test/markers.test.ts +94 -0
- package/vendor/ds/kits/app/test/markers.ts +94 -0
- package/vendor/ds/kits/app/test/menubar.test.ts +93 -0
- package/vendor/ds/kits/app/test/mount.ts +86 -0
- package/vendor/ds/kits/app/test/multi-column-layout.test.ts +106 -0
- package/vendor/ds/kits/app/test/nav-item.test.ts +125 -0
- package/vendor/ds/kits/app/test/navigation-markers.test.ts +31 -0
- package/vendor/ds/kits/app/test/node-badge.test.ts +81 -0
- package/vendor/ds/kits/app/test/order-history.test.ts +78 -0
- package/vendor/ds/kits/app/test/order-summary.test.ts +77 -0
- package/vendor/ds/kits/app/test/page-heading.test.ts +90 -0
- package/vendor/ds/kits/app/test/pill.test.ts +63 -0
- package/vendor/ds/kits/app/test/product-feature.test.ts +76 -0
- package/vendor/ds/kits/app/test/product-list.test.ts +95 -0
- package/vendor/ds/kits/app/test/product-overview.test.ts +92 -0
- package/vendor/ds/kits/app/test/product-quickview.test.ts +116 -0
- package/vendor/ds/kits/app/test/react-consumer.tsx +36 -0
- package/vendor/ds/kits/app/test/review.test.ts +84 -0
- package/vendor/ds/kits/app/test/settings-row.test.ts +34 -0
- package/vendor/ds/kits/app/test/shell-brand.test.ts +22 -0
- package/vendor/ds/kits/app/test/shopping-cart.test.ts +172 -0
- package/vendor/ds/kits/app/test/sidebar-layout.test.ts +133 -0
- package/vendor/ds/kits/app/test/sidebar-navigation-bottom-navigation-store-navigation.test.ts +245 -0
- package/vendor/ds/kits/app/test/sidebar-panel.test.ts +29 -0
- package/vendor/ds/kits/app/test/sidebar-rail.test.ts +320 -0
- package/vendor/ds/kits/app/test/speed-dial.test.ts +53 -0
- package/vendor/ds/kits/app/test/split-view.behavior.test.ts +137 -0
- package/vendor/ds/kits/app/test/split-view.dense-tooling.test.ts +66 -0
- package/vendor/ds/kits/app/test/split-view.test.ts +210 -0
- package/vendor/ds/kits/app/test/task-list.test.ts +26 -0
- package/vendor/ds/kits/app/test/taxonomy.test.ts +149 -0
- package/vendor/ds/kits/app/test/toolbar.test.ts +42 -0
- package/vendor/ds/kits/app/test/tree-shaking.test.ts +381 -0
- package/vendor/ds/kits/app/test/vocabulary.test.ts +182 -0
- package/vendor/ds/kits/app/tools/build-cli.ts +34 -0
- package/vendor/ds/kits/app/tools/check-cli.ts +33 -0
- package/vendor/ds/kits/app/tools/consumer-check.ts +117 -0
- package/vendor/ds/kits/app/tools/lint-cli.ts +19 -0
- package/vendor/ds/kits/app/tools/paths.ts +47 -0
- package/vendor/ds/kits/app/tsconfig.consumer.json +30 -0
- package/vendor/ds/kits/app/tsconfig.json +26 -0
- package/vendor/ds/kits/app/type-ledger.json +4 -0
- package/vendor/ds/kits/app/vite.config.ts +28 -0
- package/vendor/ds/kits/base/README.md +1482 -0
- package/vendor/ds/kits/base/interaction-allowlist.json +106 -0
- package/vendor/ds/kits/base/kit.json +4 -0
- package/vendor/ds/kits/base/src/Accordion.svelte +113 -0
- package/vendor/ds/kits/base/src/Alert.svelte +51 -0
- package/vendor/ds/kits/base/src/AlertDialog.svelte +77 -0
- package/vendor/ds/kits/base/src/AppearanceSwitch.svelte +73 -0
- package/vendor/ds/kits/base/src/AspectRatio.svelte +32 -0
- package/vendor/ds/kits/base/src/Avatar.svelte +75 -0
- package/vendor/ds/kits/base/src/Badge.svelte +63 -0
- package/vendor/ds/kits/base/src/Breadcrumbs.svelte +57 -0
- package/vendor/ds/kits/base/src/BrowserMockup.svelte +53 -0
- package/vendor/ds/kits/base/src/BulletsSlide.svelte +60 -0
- package/vendor/ds/kits/base/src/Button.svelte +123 -0
- package/vendor/ds/kits/base/src/Calendar.svelte +156 -0
- package/vendor/ds/kits/base/src/Card.svelte +213 -0
- package/vendor/ds/kits/base/src/Carousel.svelte +172 -0
- package/vendor/ds/kits/base/src/Checkbox.svelte +99 -0
- package/vendor/ds/kits/base/src/CodeBlock.svelte +113 -0
- package/vendor/ds/kits/base/src/Combobox.svelte +124 -0
- package/vendor/ds/kits/base/src/Container.svelte +29 -0
- package/vendor/ds/kits/base/src/ContentMask.svelte +32 -0
- package/vendor/ds/kits/base/src/ControlGroup.svelte +42 -0
- package/vendor/ds/kits/base/src/Countdown.svelte +55 -0
- package/vendor/ds/kits/base/src/DateField.svelte +157 -0
- package/vendor/ds/kits/base/src/DatePicker.svelte +112 -0
- package/vendor/ds/kits/base/src/DateRangeField.svelte +81 -0
- package/vendor/ds/kits/base/src/DateRangePicker.svelte +137 -0
- package/vendor/ds/kits/base/src/Deck.svelte +24 -0
- package/vendor/ds/kits/base/src/DescriptionList.svelte +40 -0
- package/vendor/ds/kits/base/src/Dialog.svelte +143 -0
- package/vendor/ds/kits/base/src/Disclosure.svelte +85 -0
- package/vendor/ds/kits/base/src/Divider.svelte +22 -0
- package/vendor/ds/kits/base/src/Drawer.svelte +17 -0
- package/vendor/ds/kits/base/src/DropdownMenu.svelte +192 -0
- package/vendor/ds/kits/base/src/EmptyState.svelte +54 -0
- package/vendor/ds/kits/base/src/Eyebrow.svelte +21 -0
- package/vendor/ds/kits/base/src/Field.svelte +75 -0
- package/vendor/ds/kits/base/src/Fieldset.svelte +70 -0
- package/vendor/ds/kits/base/src/FigureSlide.svelte +70 -0
- package/vendor/ds/kits/base/src/FileInput.svelte +104 -0
- package/vendor/ds/kits/base/src/Form.svelte +21 -0
- package/vendor/ds/kits/base/src/GridList.svelte +51 -0
- package/vendor/ds/kits/base/src/Heading.svelte +41 -0
- package/vendor/ds/kits/base/src/Icon.svelte +75 -0
- package/vendor/ds/kits/base/src/Image.svelte +133 -0
- package/vendor/ds/kits/base/src/Indicator.svelte +35 -0
- package/vendor/ds/kits/base/src/InlineEdit.svelte +86 -0
- package/vendor/ds/kits/base/src/Input.svelte +84 -0
- package/vendor/ds/kits/base/src/Kbd.svelte +41 -0
- package/vendor/ds/kits/base/src/Label.svelte +21 -0
- package/vendor/ds/kits/base/src/Link.svelte +21 -0
- package/vendor/ds/kits/base/src/LinkPreview.svelte +95 -0
- package/vendor/ds/kits/base/src/List.svelte +28 -0
- package/vendor/ds/kits/base/src/ListContainer.svelte +51 -0
- package/vendor/ds/kits/base/src/LoadingIndicator.svelte +48 -0
- package/vendor/ds/kits/base/src/Logo.svelte +183 -0
- package/vendor/ds/kits/base/src/MediaObject.svelte +46 -0
- package/vendor/ds/kits/base/src/Meter.svelte +130 -0
- package/vendor/ds/kits/base/src/Navbar.svelte +176 -0
- package/vendor/ds/kits/base/src/NavigationMenu.svelte +124 -0
- package/vendor/ds/kits/base/src/NavigationScope.svelte +57 -0
- package/vendor/ds/kits/base/src/Notification.svelte +74 -0
- package/vendor/ds/kits/base/src/NumberField.svelte +104 -0
- package/vendor/ds/kits/base/src/OneTimeCodeInput.svelte +176 -0
- package/vendor/ds/kits/base/src/Pagination.svelte +40 -0
- package/vendor/ds/kits/base/src/PhoneInput.svelte +96 -0
- package/vendor/ds/kits/base/src/PhoneMockup.svelte +42 -0
- package/vendor/ds/kits/base/src/Popover.svelte +116 -0
- package/vendor/ds/kits/base/src/Progress.svelte +115 -0
- package/vendor/ds/kits/base/src/Prose.svelte +40 -0
- package/vendor/ds/kits/base/src/QuoteSlide.svelte +60 -0
- package/vendor/ds/kits/base/src/RadialProgress.svelte +85 -0
- package/vendor/ds/kits/base/src/RadioGroup.svelte +117 -0
- package/vendor/ds/kits/base/src/RangeCalendar.svelte +171 -0
- package/vendor/ds/kits/base/src/Rating.svelte +126 -0
- package/vendor/ds/kits/base/src/Reveal.svelte +36 -0
- package/vendor/ds/kits/base/src/ScrollArea.svelte +40 -0
- package/vendor/ds/kits/base/src/SearchSelect.svelte +203 -0
- package/vendor/ds/kits/base/src/SectionHeading.svelte +59 -0
- package/vendor/ds/kits/base/src/SectionSlide.svelte +56 -0
- package/vendor/ds/kits/base/src/Select.svelte +95 -0
- package/vendor/ds/kits/base/src/Skeleton.svelte +35 -0
- package/vendor/ds/kits/base/src/SkipLink.svelte +39 -0
- package/vendor/ds/kits/base/src/SlideFrame.svelte +63 -0
- package/vendor/ds/kits/base/src/Slider.svelte +107 -0
- package/vendor/ds/kits/base/src/Stack.svelte +57 -0
- package/vendor/ds/kits/base/src/Statistic.svelte +74 -0
- package/vendor/ds/kits/base/src/StatusIndicator.svelte +52 -0
- package/vendor/ds/kits/base/src/Steps.svelte +51 -0
- package/vendor/ds/kits/base/src/Swap.svelte +85 -0
- package/vendor/ds/kits/base/src/Switch.svelte +91 -0
- package/vendor/ds/kits/base/src/Table.svelte +96 -0
- package/vendor/ds/kits/base/src/Tabs.svelte +131 -0
- package/vendor/ds/kits/base/src/Text.svelte +45 -0
- package/vendor/ds/kits/base/src/Textarea.svelte +63 -0
- package/vendor/ds/kits/base/src/TimeField.svelte +118 -0
- package/vendor/ds/kits/base/src/TimeRangeField.svelte +81 -0
- package/vendor/ds/kits/base/src/Timeline.svelte +49 -0
- package/vendor/ds/kits/base/src/TitleSlide.svelte +63 -0
- package/vendor/ds/kits/base/src/ToggleButton.svelte +78 -0
- package/vendor/ds/kits/base/src/ToggleGroup.svelte +79 -0
- package/vendor/ds/kits/base/src/Tooltip.svelte +109 -0
- package/vendor/ds/kits/base/src/Transfer.svelte +31 -0
- package/vendor/ds/kits/base/src/TwoColumnSlide.svelte +63 -0
- package/vendor/ds/kits/base/src/WindowMockup.svelte +51 -0
- package/vendor/ds/kits/base/src/a11y.ts +21 -0
- package/vendor/ds/kits/base/src/accordion.variants.ts +26 -0
- package/vendor/ds/kits/base/src/alert-dialog.variants.ts +17 -0
- package/vendor/ds/kits/base/src/alert.variants.ts +36 -0
- package/vendor/ds/kits/base/src/appearance-switch.behavior.ts +29 -0
- package/vendor/ds/kits/base/src/aspect-ratio.variants.ts +14 -0
- package/vendor/ds/kits/base/src/avatar.variants.ts +29 -0
- package/vendor/ds/kits/base/src/badge.variants.ts +89 -0
- package/vendor/ds/kits/base/src/breadcrumbs.variants.ts +15 -0
- package/vendor/ds/kits/base/src/browser-mockup.variants.ts +18 -0
- package/vendor/ds/kits/base/src/button.variants.ts +186 -0
- package/vendor/ds/kits/base/src/calendar.variants.ts +35 -0
- package/vendor/ds/kits/base/src/card.variants.ts +293 -0
- package/vendor/ds/kits/base/src/carousel.variants.ts +19 -0
- package/vendor/ds/kits/base/src/checkbox.variants.ts +64 -0
- package/vendor/ds/kits/base/src/code-block.variants.ts +58 -0
- package/vendor/ds/kits/base/src/collapsible.style.ts +15 -0
- package/vendor/ds/kits/base/src/combobox.variants.ts +62 -0
- package/vendor/ds/kits/base/src/container.variants.ts +27 -0
- package/vendor/ds/kits/base/src/content-mask.variants.ts +57 -0
- package/vendor/ds/kits/base/src/control-group.variants.ts +22 -0
- package/vendor/ds/kits/base/src/core/a11y.ts +106 -0
- package/vendor/ds/kits/base/src/core/appearance-switch.ts +39 -0
- package/vendor/ds/kits/base/src/core/avatar.ts +27 -0
- package/vendor/ds/kits/base/src/core/breadcrumbs.ts +11 -0
- package/vendor/ds/kits/base/src/core/calendar.ts +95 -0
- package/vendor/ds/kits/base/src/core/carousel.ts +8 -0
- package/vendor/ds/kits/base/src/core/choices.ts +29 -0
- package/vendor/ds/kits/base/src/core/code-block.ts +23 -0
- package/vendor/ds/kits/base/src/core/confirmation.ts +24 -0
- package/vendor/ds/kits/base/src/core/contracts/accordion.ts +28 -0
- package/vendor/ds/kits/base/src/core/contracts/carousel.ts +23 -0
- package/vendor/ds/kits/base/src/core/contracts/combobox.ts +35 -0
- package/vendor/ds/kits/base/src/core/contracts/datefield.ts +23 -0
- package/vendor/ds/kits/base/src/core/contracts/datepicker.ts +62 -0
- package/vendor/ds/kits/base/src/core/contracts/daterangefield.ts +33 -0
- package/vendor/ds/kits/base/src/core/contracts/daterangepicker.ts +88 -0
- package/vendor/ds/kits/base/src/core/contracts/dialog.ts +24 -0
- package/vendor/ds/kits/base/src/core/contracts/disclosure.ts +15 -0
- package/vendor/ds/kits/base/src/core/contracts/linkpreview.ts +29 -0
- package/vendor/ds/kits/base/src/core/contracts/navbar.ts +30 -0
- package/vendor/ds/kits/base/src/core/contracts/navigationmenu.ts +35 -0
- package/vendor/ds/kits/base/src/core/contracts/phoneinput.ts +55 -0
- package/vendor/ds/kits/base/src/core/contracts/popover.ts +29 -0
- package/vendor/ds/kits/base/src/core/contracts/searchselect.ts +38 -0
- package/vendor/ds/kits/base/src/core/contracts/tabs.ts +26 -0
- package/vendor/ds/kits/base/src/core/contracts/timefield.ts +23 -0
- package/vendor/ds/kits/base/src/core/contracts/timerangefield.ts +33 -0
- package/vendor/ds/kits/base/src/core/contracts/tooltip.ts +12 -0
- package/vendor/ds/kits/base/src/core/contracts/transfer.ts +13 -0
- package/vendor/ds/kits/base/src/core/date-segments.ts +18 -0
- package/vendor/ds/kits/base/src/core/description-list.ts +5 -0
- package/vendor/ds/kits/base/src/core/dropdown-menu.ts +55 -0
- package/vendor/ds/kits/base/src/core/feedback.ts +5 -0
- package/vendor/ds/kits/base/src/core/field.ts +57 -0
- package/vendor/ds/kits/base/src/core/fieldset.ts +10 -0
- package/vendor/ds/kits/base/src/core/focus-scope.ts +27 -0
- package/vendor/ds/kits/base/src/core/icon.ts +15 -0
- package/vendor/ds/kits/base/src/core/index.ts +2 -0
- package/vendor/ds/kits/base/src/core/inline-edit.ts +86 -0
- package/vendor/ds/kits/base/src/core/input.ts +9 -0
- package/vendor/ds/kits/base/src/core/modal.ts +73 -0
- package/vendor/ds/kits/base/src/core/native-controls.ts +43 -0
- package/vendor/ds/kits/base/src/core/navbar.ts +16 -0
- package/vendor/ds/kits/base/src/core/navigation-disclosures.ts +10 -0
- package/vendor/ds/kits/base/src/core/navigation.ts +48 -0
- package/vendor/ds/kits/base/src/core/number-field.ts +8 -0
- package/vendor/ds/kits/base/src/core/one-time-code.ts +17 -0
- package/vendor/ds/kits/base/src/core/operational-motion.ts +174 -0
- package/vendor/ds/kits/base/src/core/pagination.ts +8 -0
- package/vendor/ds/kits/base/src/core/phone-input.ts +106 -0
- package/vendor/ds/kits/base/src/core/portal-appearance.ts +15 -0
- package/vendor/ds/kits/base/src/core/reveal.ts +60 -0
- package/vendor/ds/kits/base/src/core/segments.ts +28 -0
- package/vendor/ds/kits/base/src/core/skip-link.ts +7 -0
- package/vendor/ds/kits/base/src/core/slider.ts +23 -0
- package/vendor/ds/kits/base/src/core/steps.ts +12 -0
- package/vendor/ds/kits/base/src/core/table.ts +21 -0
- package/vendor/ds/kits/base/src/core/timeline.ts +14 -0
- package/vendor/ds/kits/base/src/core/toggle-group.ts +41 -0
- package/vendor/ds/kits/base/src/countdown.behavior.ts +26 -0
- package/vendor/ds/kits/base/src/countdown.variants.ts +11 -0
- package/vendor/ds/kits/base/src/date-field.variants.ts +24 -0
- package/vendor/ds/kits/base/src/date-picker.variants.ts +16 -0
- package/vendor/ds/kits/base/src/date-range-field.variants.ts +21 -0
- package/vendor/ds/kits/base/src/date-range-picker.variants.ts +15 -0
- package/vendor/ds/kits/base/src/deck.variants.ts +10 -0
- package/vendor/ds/kits/base/src/deprecation.ts +24 -0
- package/vendor/ds/kits/base/src/description-list.appearance.ts +32 -0
- package/vendor/ds/kits/base/src/description-list.variants.ts +6 -0
- package/vendor/ds/kits/base/src/dialog.variants.ts +30 -0
- package/vendor/ds/kits/base/src/disclosure.variants.ts +14 -0
- package/vendor/ds/kits/base/src/divider.variants.ts +17 -0
- package/vendor/ds/kits/base/src/drawer.variants.ts +48 -0
- package/vendor/ds/kits/base/src/dropdown-menu.behavior.ts +6 -0
- package/vendor/ds/kits/base/src/dropdown-menu.variants.ts +38 -0
- package/vendor/ds/kits/base/src/empty-state.variants.ts +41 -0
- package/vendor/ds/kits/base/src/eyebrow.variants.ts +14 -0
- package/vendor/ds/kits/base/src/field.variants.ts +54 -0
- package/vendor/ds/kits/base/src/fieldset.variants.ts +29 -0
- package/vendor/ds/kits/base/src/file-input.variants.ts +18 -0
- package/vendor/ds/kits/base/src/form.variants.ts +13 -0
- package/vendor/ds/kits/base/src/grid-list.variants.ts +38 -0
- package/vendor/ds/kits/base/src/heading.variants.ts +35 -0
- package/vendor/ds/kits/base/src/image.variants.ts +121 -0
- package/vendor/ds/kits/base/src/index.ts +1039 -0
- package/vendor/ds/kits/base/src/indicator.variants.ts +35 -0
- package/vendor/ds/kits/base/src/inline-edit.variants.ts +33 -0
- package/vendor/ds/kits/base/src/input.variants.ts +33 -0
- package/vendor/ds/kits/base/src/interaction.ts +3 -0
- package/vendor/ds/kits/base/src/kbd.variants.ts +25 -0
- package/vendor/ds/kits/base/src/label.variants.ts +8 -0
- package/vendor/ds/kits/base/src/link-preview.variants.ts +10 -0
- package/vendor/ds/kits/base/src/link.variants.ts +20 -0
- package/vendor/ds/kits/base/src/list.variants.ts +17 -0
- package/vendor/ds/kits/base/src/loading-indicator.variants.ts +31 -0
- package/vendor/ds/kits/base/src/logo.box.ts +128 -0
- package/vendor/ds/kits/base/src/logo.marks.ts +248 -0
- package/vendor/ds/kits/base/src/logo.surface.ts +45 -0
- package/vendor/ds/kits/base/src/logo.variants.ts +53 -0
- package/vendor/ds/kits/base/src/marks/reddb-horizontal-color.svg +14 -0
- package/vendor/ds/kits/base/src/marks/reddb-horizontal-inverse.svg +14 -0
- package/vendor/ds/kits/base/src/marks/reddb-icon-color.svg +5 -0
- package/vendor/ds/kits/base/src/marks/reddb-stacked-color.svg +16 -0
- package/vendor/ds/kits/base/src/marks/reddb-stacked-inverse.svg +16 -0
- package/vendor/ds/kits/base/src/marks/reddb-symbol-black.svg +5 -0
- package/vendor/ds/kits/base/src/marks/reddb-symbol-color.svg +5 -0
- package/vendor/ds/kits/base/src/marks/reddb-symbol-knockout.svg +4 -0
- package/vendor/ds/kits/base/src/marks/reddb-symbol-white.svg +5 -0
- package/vendor/ds/kits/base/src/marks/reddb-wordmark-black.svg +10 -0
- package/vendor/ds/kits/base/src/marks/reddb-wordmark-white.svg +10 -0
- package/vendor/ds/kits/base/src/media-object.variants.ts +29 -0
- package/vendor/ds/kits/base/src/meter.variants.ts +55 -0
- package/vendor/ds/kits/base/src/navbar.variants.ts +78 -0
- package/vendor/ds/kits/base/src/navigation-menu.behavior.ts +24 -0
- package/vendor/ds/kits/base/src/navigation-menu.variants.ts +39 -0
- package/vendor/ds/kits/base/src/navigation.ts +45 -0
- package/vendor/ds/kits/base/src/notification.variants.ts +14 -0
- package/vendor/ds/kits/base/src/number-field.variants.ts +10 -0
- package/vendor/ds/kits/base/src/one-time-code-input.variants.ts +23 -0
- package/vendor/ds/kits/base/src/pagination.variants.ts +19 -0
- package/vendor/ds/kits/base/src/phone-input.variants.ts +17 -0
- package/vendor/ds/kits/base/src/phone-mockup.variants.ts +16 -0
- package/vendor/ds/kits/base/src/popover.variants.ts +12 -0
- package/vendor/ds/kits/base/src/portal-appearance.svelte.ts +12 -0
- package/vendor/ds/kits/base/src/progress.behavior.ts +37 -0
- package/vendor/ds/kits/base/src/progress.variants.ts +31 -0
- package/vendor/ds/kits/base/src/prose.variants.ts +231 -0
- package/vendor/ds/kits/base/src/quiet-control.variants.ts +90 -0
- package/vendor/ds/kits/base/src/radial-progress.variants.ts +47 -0
- package/vendor/ds/kits/base/src/radio-group.variants.ts +59 -0
- package/vendor/ds/kits/base/src/rating.variants.ts +22 -0
- package/vendor/ds/kits/base/src/recipes.ts +100 -0
- package/vendor/ds/kits/base/src/reduced-motion.svelte.ts +40 -0
- package/vendor/ds/kits/base/src/reveal.variants.ts +43 -0
- package/vendor/ds/kits/base/src/scroll-area.variants.ts +29 -0
- package/vendor/ds/kits/base/src/search-select.variants.ts +39 -0
- package/vendor/ds/kits/base/src/section-heading.variants.ts +41 -0
- package/vendor/ds/kits/base/src/segments.variants.ts +8 -0
- package/vendor/ds/kits/base/src/select.variants.ts +30 -0
- package/vendor/ds/kits/base/src/skeleton.variants.ts +17 -0
- package/vendor/ds/kits/base/src/skip-link.variants.ts +17 -0
- package/vendor/ds/kits/base/src/slide-frame.variants.ts +94 -0
- package/vendor/ds/kits/base/src/slide-layout.variants.ts +43 -0
- package/vendor/ds/kits/base/src/slider.variants.ts +16 -0
- package/vendor/ds/kits/base/src/stack.variants.ts +65 -0
- package/vendor/ds/kits/base/src/statistic.variants.ts +12 -0
- package/vendor/ds/kits/base/src/status-indicator.variants.ts +52 -0
- package/vendor/ds/kits/base/src/steps.variants.ts +18 -0
- package/vendor/ds/kits/base/src/structured-data.ts +94 -0
- package/vendor/ds/kits/base/src/swap.variants.ts +13 -0
- package/vendor/ds/kits/base/src/switch.variants.ts +20 -0
- package/vendor/ds/kits/base/src/table.variants.ts +31 -0
- package/vendor/ds/kits/base/src/tabs.variants.ts +32 -0
- package/vendor/ds/kits/base/src/text.variants.ts +51 -0
- package/vendor/ds/kits/base/src/textarea.variants.ts +19 -0
- package/vendor/ds/kits/base/src/time-field.variants.ts +21 -0
- package/vendor/ds/kits/base/src/time-range-field.variants.ts +21 -0
- package/vendor/ds/kits/base/src/timeline.variants.ts +22 -0
- package/vendor/ds/kits/base/src/toggle-button.variants.ts +26 -0
- package/vendor/ds/kits/base/src/toggle-group.variants.ts +38 -0
- package/vendor/ds/kits/base/src/tone.ts +24 -0
- package/vendor/ds/kits/base/src/tooltip.variants.ts +14 -0
- package/vendor/ds/kits/base/src/transfer.variants.ts +5 -0
- package/vendor/ds/kits/base/src/type-roles.ts +22 -0
- package/vendor/ds/kits/base/src/window-mockup.variants.ts +18 -0
- package/vendor/ds/kits/base/svelte.config.js +6 -0
- package/vendor/ds/kits/base/test/accessible-name.test.ts +66 -0
- package/vendor/ds/kits/base/test/accordion.test.ts +81 -0
- package/vendor/ds/kits/base/test/alert-dialog.test.ts +81 -0
- package/vendor/ds/kits/base/test/alert.test.ts +75 -0
- package/vendor/ds/kits/base/test/appearance-switch.test.ts +124 -0
- package/vendor/ds/kits/base/test/avatar-media-object-carousel-failures.test.ts +25 -0
- package/vendor/ds/kits/base/test/avatar.test.ts +75 -0
- package/vendor/ds/kits/base/test/badge.test.ts +99 -0
- package/vendor/ds/kits/base/test/breadcrumbs.test.ts +45 -0
- package/vendor/ds/kits/base/test/browser-mockup.test.ts +57 -0
- package/vendor/ds/kits/base/test/browser-phone-window-mockup.test.ts +58 -0
- package/vendor/ds/kits/base/test/button.test.ts +340 -0
- package/vendor/ds/kits/base/test/calendar.test.ts +86 -0
- package/vendor/ds/kits/base/test/card-busy.test.ts +25 -0
- package/vendor/ds/kits/base/test/card-divider-aspect-ratio-failures.test.ts +29 -0
- package/vendor/ds/kits/base/test/card-divider-aspect-ratio.test.ts +201 -0
- package/vendor/ds/kits/base/test/card-media.test.ts +113 -0
- package/vendor/ds/kits/base/test/card-tone-api.test.ts +12 -0
- package/vendor/ds/kits/base/test/card-tone-contrast.test.ts +120 -0
- package/vendor/ds/kits/base/test/card-tone.test.ts +103 -0
- package/vendor/ds/kits/base/test/carousel.test.ts +63 -0
- package/vendor/ds/kits/base/test/checkbox.test.ts +165 -0
- package/vendor/ds/kits/base/test/code-block.test.ts +148 -0
- package/vendor/ds/kits/base/test/coherence.test.ts +124 -0
- package/vendor/ds/kits/base/test/combobox.test.ts +172 -0
- package/vendor/ds/kits/base/test/components.test.ts +113 -0
- package/vendor/ds/kits/base/test/consumer-check.test.ts +42 -0
- package/vendor/ds/kits/base/test/container-stack-skip-link-failures.test.ts +31 -0
- package/vendor/ds/kits/base/test/container.test.ts +41 -0
- package/vendor/ds/kits/base/test/content-mask-failures.test.ts +24 -0
- package/vendor/ds/kits/base/test/content-mask.test.ts +134 -0
- package/vendor/ds/kits/base/test/control-group.test.ts +51 -0
- package/vendor/ds/kits/base/test/control-size.test.ts +60 -0
- package/vendor/ds/kits/base/test/countdown.test.ts +70 -0
- package/vendor/ds/kits/base/test/date-field.test.ts +126 -0
- package/vendor/ds/kits/base/test/date-picker.test.ts +122 -0
- package/vendor/ds/kits/base/test/date-range-field.test.ts +96 -0
- package/vendor/ds/kits/base/test/date-range-picker.test.ts +104 -0
- package/vendor/ds/kits/base/test/description-list.test.ts +84 -0
- package/vendor/ds/kits/base/test/dialog-tooltip-failures.test.ts +52 -0
- package/vendor/ds/kits/base/test/dialog.test.ts +122 -0
- package/vendor/ds/kits/base/test/disclosure.test.ts +51 -0
- package/vendor/ds/kits/base/test/drawer-alert-dialog-appearance.test.ts +25 -0
- package/vendor/ds/kits/base/test/drawer-alert-dialog-failures.test.ts +36 -0
- package/vendor/ds/kits/base/test/drawer.test.ts +49 -0
- package/vendor/ds/kits/base/test/dropdown-menu.test.ts +344 -0
- package/vendor/ds/kits/base/test/dropdown-navigation-menu-failures.test.ts +29 -0
- package/vendor/ds/kits/base/test/elevation.test.ts +81 -0
- package/vendor/ds/kits/base/test/empty-state.test.ts +126 -0
- package/vendor/ds/kits/base/test/event-dialect.test.ts +239 -0
- package/vendor/ds/kits/base/test/field.test.ts +106 -0
- package/vendor/ds/kits/base/test/fieldset.test.ts +95 -0
- package/vendor/ds/kits/base/test/file-input.test.ts +99 -0
- package/vendor/ds/kits/base/test/fixtures/AccessibleNameConsumer.svelte +65 -0
- package/vendor/ds/kits/base/test/fixtures/BinaryChoiceConsumer.svelte +63 -0
- package/vendor/ds/kits/base/test/fixtures/BinaryChoiceContractFailures.svelte +17 -0
- package/vendor/ds/kits/base/test/fixtures/BindingConsumer.svelte +19 -0
- package/vendor/ds/kits/base/test/fixtures/CalendarConsumer.svelte +9 -0
- package/vendor/ds/kits/base/test/fixtures/CalendarContractFailures.svelte +27 -0
- package/vendor/ds/kits/base/test/fixtures/CardActionsConsumer.svelte +12 -0
- package/vendor/ds/kits/base/test/fixtures/CardHorizontalConsumer.svelte +15 -0
- package/vendor/ds/kits/base/test/fixtures/CollectionStructureConsumer.svelte +37 -0
- package/vendor/ds/kits/base/test/fixtures/CollectionStructureContractFailures.svelte +16 -0
- package/vendor/ds/kits/base/test/fixtures/ComboboxConsumer.svelte +43 -0
- package/vendor/ds/kits/base/test/fixtures/ComboboxContractFailures.svelte +27 -0
- package/vendor/ds/kits/base/test/fixtures/ContainerStackSkipLinkFailures.svelte +16 -0
- package/vendor/ds/kits/base/test/fixtures/ContentMaskConsumer.svelte +25 -0
- package/vendor/ds/kits/base/test/fixtures/ContentMaskContractFailures.svelte +19 -0
- package/vendor/ds/kits/base/test/fixtures/ControlledDialogConsumer.svelte +29 -0
- package/vendor/ds/kits/base/test/fixtures/DateEntryConsumer.svelte +45 -0
- package/vendor/ds/kits/base/test/fixtures/DateEntryContractFailures.svelte +31 -0
- package/vendor/ds/kits/base/test/fixtures/DatePickerConsumer.svelte +34 -0
- package/vendor/ds/kits/base/test/fixtures/DatePickerContractFailures.svelte +29 -0
- package/vendor/ds/kits/base/test/fixtures/DialogTooltipBehaviorFailures.svelte +33 -0
- package/vendor/ds/kits/base/test/fixtures/DisclosureFamilyConsumer.svelte +68 -0
- package/vendor/ds/kits/base/test/fixtures/DisclosureFamilyContractFailures.svelte +21 -0
- package/vendor/ds/kits/base/test/fixtures/DrawerAlertDialogBehaviorFailures.svelte +30 -0
- package/vendor/ds/kits/base/test/fixtures/DrawerAlertDialogConsumer.svelte +18 -0
- package/vendor/ds/kits/base/test/fixtures/FieldInputAccessibilityFailures.svelte +29 -0
- package/vendor/ds/kits/base/test/fixtures/FieldInputConsumer.svelte +33 -0
- package/vendor/ds/kits/base/test/fixtures/FormScaffoldingConsumer.svelte +55 -0
- package/vendor/ds/kits/base/test/fixtures/FormScaffoldingFailures.svelte +20 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkBase.svelte +52 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkChoices.svelte +20 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkCodeActions.svelte +15 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkComposition.svelte +36 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkEditReveal.svelte +11 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkField.svelte +10 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkIdentityControls.svelte +11 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkInput.svelte +8 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkManaged.svelte +43 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkMedia.svelte +20 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkNativeControls.svelte +11 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkNumericEntry.svelte +12 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkPrimitive.svelte +17 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkReadings.svelte +23 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkSlides.svelte +31 -0
- package/vendor/ds/kits/base/test/fixtures/FrameworkTextarea.svelte +8 -0
- package/vendor/ds/kits/base/test/fixtures/InlineTextConsumer.svelte +15 -0
- package/vendor/ds/kits/base/test/fixtures/InlineTextContractFailures.svelte +20 -0
- package/vendor/ds/kits/base/test/fixtures/LayoutConsumer.svelte +17 -0
- package/vendor/ds/kits/base/test/fixtures/MediaPresentationConsumer.svelte +41 -0
- package/vendor/ds/kits/base/test/fixtures/MediaPresentationContractFailures.svelte +23 -0
- package/vendor/ds/kits/base/test/fixtures/MenuBehaviorFailures.svelte +19 -0
- package/vendor/ds/kits/base/test/fixtures/MockupConsumer.svelte +34 -0
- package/vendor/ds/kits/base/test/fixtures/MockupContractFailures.svelte +23 -0
- package/vendor/ds/kits/base/test/fixtures/NavbarMasthead.svelte +55 -0
- package/vendor/ds/kits/base/test/fixtures/NavigationScopeConsumer.svelte +40 -0
- package/vendor/ds/kits/base/test/fixtures/NotificationEmptyStateConsumer.svelte +28 -0
- package/vendor/ds/kits/base/test/fixtures/NotificationEmptyStateContractFailures.svelte +21 -0
- package/vendor/ds/kits/base/test/fixtures/NumberFieldConsumer.svelte +9 -0
- package/vendor/ds/kits/base/test/fixtures/NumericChronologyConsumer.svelte +34 -0
- package/vendor/ds/kits/base/test/fixtures/NumericChronologyContractFailures.svelte +17 -0
- package/vendor/ds/kits/base/test/fixtures/Operational.svelte +20 -0
- package/vendor/ds/kits/base/test/fixtures/PopoverLinkPreviewFailures.svelte +38 -0
- package/vendor/ds/kits/base/test/fixtures/ProgressFeedbackConsumer.svelte +26 -0
- package/vendor/ds/kits/base/test/fixtures/ProgressLoadingContractFailures.svelte +17 -0
- package/vendor/ds/kits/base/test/fixtures/RangePressedConsumer.svelte +67 -0
- package/vendor/ds/kits/base/test/fixtures/RangePressedContractFailures.svelte +20 -0
- package/vendor/ds/kits/base/test/fixtures/RevealAppearanceConsumer.svelte +17 -0
- package/vendor/ds/kits/base/test/fixtures/SpecializedEntryConsumer.svelte +56 -0
- package/vendor/ds/kits/base/test/fixtures/SpecializedEntryContractFailures.svelte +26 -0
- package/vendor/ds/kits/base/test/fixtures/StatusVocabularyConsumer.svelte +19 -0
- package/vendor/ds/kits/base/test/fixtures/StatusVocabularyContractFailures.svelte +5 -0
- package/vendor/ds/kits/base/test/fixtures/SurfaceControlsConsumer.svelte +35 -0
- package/vendor/ds/kits/base/test/fixtures/SurfaceControlsContractFailures.svelte +30 -0
- package/vendor/ds/kits/base/test/fixtures/SurfaceSeparationConsumer.svelte +20 -0
- package/vendor/ds/kits/base/test/fixtures/SurfaceSeparationContractFailures.svelte +15 -0
- package/vendor/ds/kits/base/test/fixtures/TableConsumer.svelte +25 -0
- package/vendor/ds/kits/base/test/fixtures/TableContractFailures.svelte +22 -0
- package/vendor/ds/kits/base/test/fixtures/TabsFragmentConsumer.svelte +18 -0
- package/vendor/ds/kits/base/test/fixtures/TestGlyph.svelte +22 -0
- package/vendor/ds/kits/base/test/fixtures/TextareaSelectConsumer.svelte +30 -0
- package/vendor/ds/kits/base/test/fixtures/TextareaSelectContractFailures.svelte +19 -0
- package/vendor/ds/kits/base/test/fixtures/TimeEntryConsumer.svelte +45 -0
- package/vendor/ds/kits/base/test/fixtures/TimeEntryContractFailures.svelte +29 -0
- package/vendor/ds/kits/base/test/fixtures/TooltipChildConsumer.svelte +10 -0
- package/vendor/ds/kits/base/test/fixtures/UncontrolledFieldConsumer.svelte +16 -0
- package/vendor/ds/kits/base/test/fixtures/WayfindingConsumer.svelte +26 -0
- package/vendor/ds/kits/base/test/fixtures/WayfindingContractFailures.svelte +17 -0
- package/vendor/ds/kits/base/test/fixtures/alert-consumer.ts +11 -0
- package/vendor/ds/kits/base/test/fixtures/binary-choice-consumer.ts +15 -0
- package/vendor/ds/kits/base/test/fixtures/button-consumer.ts +16 -0
- package/vendor/ds/kits/base/test/fixtures/calendar-consumer.ts +7 -0
- package/vendor/ds/kits/base/test/fixtures/collection-structure-consumer.ts +17 -0
- package/vendor/ds/kits/base/test/fixtures/combobox-consumer.ts +9 -0
- package/vendor/ds/kits/base/test/fixtures/content-mask-consumer.ts +10 -0
- package/vendor/ds/kits/base/test/fixtures/date-entry-consumer.ts +11 -0
- package/vendor/ds/kits/base/test/fixtures/date-picker-consumer.ts +11 -0
- package/vendor/ds/kits/base/test/fixtures/dialog-tooltip-consumer.ts +9 -0
- package/vendor/ds/kits/base/test/fixtures/disclosure-family-consumer.ts +14 -0
- package/vendor/ds/kits/base/test/fixtures/drawer-alert-dialog-consumer.ts +13 -0
- package/vendor/ds/kits/base/test/fixtures/field-input-consumer.ts +15 -0
- package/vendor/ds/kits/base/test/fixtures/form-scaffolding-consumer.ts +13 -0
- package/vendor/ds/kits/base/test/fixtures/layout-consumer.ts +16 -0
- package/vendor/ds/kits/base/test/fixtures/media-presentation-consumer.ts +9 -0
- package/vendor/ds/kits/base/test/fixtures/menu-consumer.ts +20 -0
- package/vendor/ds/kits/base/test/fixtures/mockup-consumer.ts +14 -0
- package/vendor/ds/kits/base/test/fixtures/notification-empty-state-consumer.ts +12 -0
- package/vendor/ds/kits/base/test/fixtures/numeric-chronology-consumer.ts +11 -0
- package/vendor/ds/kits/base/test/fixtures/popover-link-preview-consumer.ts +9 -0
- package/vendor/ds/kits/base/test/fixtures/progress-feedback-consumer.ts +21 -0
- package/vendor/ds/kits/base/test/fixtures/range-pressed-consumer.ts +16 -0
- package/vendor/ds/kits/base/test/fixtures/specialized-entry-consumer.ts +15 -0
- package/vendor/ds/kits/base/test/fixtures/status-vocabulary-consumer.ts +22 -0
- package/vendor/ds/kits/base/test/fixtures/surface-controls-consumer.ts +22 -0
- package/vendor/ds/kits/base/test/fixtures/surface-separation-consumer.ts +31 -0
- package/vendor/ds/kits/base/test/fixtures/textarea-select-consumer.ts +13 -0
- package/vendor/ds/kits/base/test/fixtures/time-entry-consumer.ts +11 -0
- package/vendor/ds/kits/base/test/form.test.ts +72 -0
- package/vendor/ds/kits/base/test/framework-appearance.test.ts +53 -0
- package/vendor/ds/kits/base/test/framework-base.test.ts +128 -0
- package/vendor/ds/kits/base/test/framework-choices.test.ts +137 -0
- package/vendor/ds/kits/base/test/framework-code-actions.test.ts +123 -0
- package/vendor/ds/kits/base/test/framework-composition.test.ts +91 -0
- package/vendor/ds/kits/base/test/framework-contracts.test.ts +126 -0
- package/vendor/ds/kits/base/test/framework-edit-reveal.test.ts +183 -0
- package/vendor/ds/kits/base/test/framework-identity-controls.test.ts +162 -0
- package/vendor/ds/kits/base/test/framework-managed.test.ts +256 -0
- package/vendor/ds/kits/base/test/framework-media.test.ts +96 -0
- package/vendor/ds/kits/base/test/framework-native-controls.test.ts +156 -0
- package/vendor/ds/kits/base/test/framework-numeric-entry.test.ts +146 -0
- package/vendor/ds/kits/base/test/framework-operational.test.ts +162 -0
- package/vendor/ds/kits/base/test/framework-readings.test.ts +110 -0
- package/vendor/ds/kits/base/test/framework-slides.test.ts +100 -0
- package/vendor/ds/kits/base/test/grid-list.test.ts +64 -0
- package/vendor/ds/kits/base/test/icon.test.ts +59 -0
- package/vendor/ds/kits/base/test/image.test.ts +120 -0
- package/vendor/ds/kits/base/test/indicator.test.ts +68 -0
- package/vendor/ds/kits/base/test/inline-edit.test.ts +56 -0
- package/vendor/ds/kits/base/test/input.test.ts +82 -0
- package/vendor/ds/kits/base/test/kbd.test.ts +32 -0
- package/vendor/ds/kits/base/test/label-in-name.ts +43 -0
- package/vendor/ds/kits/base/test/label.test.ts +68 -0
- package/vendor/ds/kits/base/test/link-kbd-code-block-appearance.test.ts +31 -0
- package/vendor/ds/kits/base/test/link-preview.test.ts +80 -0
- package/vendor/ds/kits/base/test/link.test.ts +63 -0
- package/vendor/ds/kits/base/test/lint.test.ts +60 -0
- package/vendor/ds/kits/base/test/list-container.test.ts +45 -0
- package/vendor/ds/kits/base/test/list.test.ts +60 -0
- package/vendor/ds/kits/base/test/loading-indicator.test.ts +57 -0
- package/vendor/ds/kits/base/test/logo.test.ts +484 -0
- package/vendor/ds/kits/base/test/marks.test.ts +140 -0
- package/vendor/ds/kits/base/test/media-object.test.ts +58 -0
- package/vendor/ds/kits/base/test/meter.test.ts +79 -0
- package/vendor/ds/kits/base/test/mount.ts +79 -0
- package/vendor/ds/kits/base/test/navbar.test.ts +419 -0
- package/vendor/ds/kits/base/test/navigation-menu.test.ts +118 -0
- package/vendor/ds/kits/base/test/navigation-scope.test.ts +62 -0
- package/vendor/ds/kits/base/test/notification.test.ts +94 -0
- package/vendor/ds/kits/base/test/number-field.test.ts +38 -0
- package/vendor/ds/kits/base/test/one-time-code-input.test.ts +123 -0
- package/vendor/ds/kits/base/test/pagination.test.ts +50 -0
- package/vendor/ds/kits/base/test/phone-input.test.ts +95 -0
- package/vendor/ds/kits/base/test/phone-mockup.test.ts +51 -0
- package/vendor/ds/kits/base/test/popover-link-preview-failures.test.ts +43 -0
- package/vendor/ds/kits/base/test/popover.test.ts +79 -0
- package/vendor/ds/kits/base/test/progress-loading-failures.test.ts +27 -0
- package/vendor/ds/kits/base/test/progress.test.ts +70 -0
- package/vendor/ds/kits/base/test/prose.test.ts +138 -0
- package/vendor/ds/kits/base/test/quiet-control.test.ts +89 -0
- package/vendor/ds/kits/base/test/radial-progress.test.ts +52 -0
- package/vendor/ds/kits/base/test/radio-cards.test.ts +21 -0
- package/vendor/ds/kits/base/test/radio-group.test.ts +180 -0
- package/vendor/ds/kits/base/test/range-calendar.test.ts +102 -0
- package/vendor/ds/kits/base/test/rating.test.ts +98 -0
- package/vendor/ds/kits/base/test/react-accessible-name.test.ts +44 -0
- package/vendor/ds/kits/base/test/react-consumer.tsx +283 -0
- package/vendor/ds/kits/base/test/react.test.ts +110 -0
- package/vendor/ds/kits/base/test/reveal.test.ts +148 -0
- package/vendor/ds/kits/base/test/scroll-area.test.ts +58 -0
- package/vendor/ds/kits/base/test/search-select.test.ts +40 -0
- package/vendor/ds/kits/base/test/section-heading.test.ts +59 -0
- package/vendor/ds/kits/base/test/select.test.ts +125 -0
- package/vendor/ds/kits/base/test/setup-storage.ts +14 -0
- package/vendor/ds/kits/base/test/skeleton.test.ts +56 -0
- package/vendor/ds/kits/base/test/skip-link.test.ts +49 -0
- package/vendor/ds/kits/base/test/slider.test.ts +89 -0
- package/vendor/ds/kits/base/test/slides.test.ts +207 -0
- package/vendor/ds/kits/base/test/stack.test.ts +87 -0
- package/vendor/ds/kits/base/test/statistic.test.ts +37 -0
- package/vendor/ds/kits/base/test/status-indicator.test.ts +102 -0
- package/vendor/ds/kits/base/test/steps.test.ts +38 -0
- package/vendor/ds/kits/base/test/structured-data.test.ts +88 -0
- package/vendor/ds/kits/base/test/swap.test.ts +70 -0
- package/vendor/ds/kits/base/test/switch.test.ts +89 -0
- package/vendor/ds/kits/base/test/table.test.ts +108 -0
- package/vendor/ds/kits/base/test/tabs.test.ts +130 -0
- package/vendor/ds/kits/base/test/taxonomy.test.ts +41 -0
- package/vendor/ds/kits/base/test/textarea.test.ts +106 -0
- package/vendor/ds/kits/base/test/time-field.test.ts +108 -0
- package/vendor/ds/kits/base/test/time-range-field.test.ts +91 -0
- package/vendor/ds/kits/base/test/timeline.test.ts +75 -0
- package/vendor/ds/kits/base/test/toggle-button.test.ts +70 -0
- package/vendor/ds/kits/base/test/toggle-group.test.ts +177 -0
- package/vendor/ds/kits/base/test/tooltip.test.ts +61 -0
- package/vendor/ds/kits/base/test/type-primitives.test.ts +191 -0
- package/vendor/ds/kits/base/test/vocabulary-contrast.test.ts +258 -0
- package/vendor/ds/kits/base/test/wave2-bindings-overlays.test.ts +174 -0
- package/vendor/ds/kits/base/test/window-mockup.test.ts +49 -0
- package/vendor/ds/kits/base/tools/build-cli.ts +29 -0
- package/vendor/ds/kits/base/tools/lint-cli.ts +18 -0
- package/vendor/ds/kits/base/tools/paths.ts +46 -0
- package/vendor/ds/kits/base/tsconfig.consumer.json +19 -0
- package/vendor/ds/kits/base/tsconfig.json +26 -0
- package/vendor/ds/kits/base/type-ledger.json +4 -0
- package/vendor/ds/kits/base/types/marks.d.ts +20 -0
- package/vendor/ds/kits/base/vite.config.ts +29 -0
- package/vendor/ds/package.json +51 -0
- package/vendor/ds/styles/all.css +12 -0
- package/vendor/ds/styles/application.css +12 -0
- package/vendor/ds/styles/base.css +11 -0
- package/vendor/ds/theme/print.css +65 -0
- package/vendor/ds/theme/scheme-dark.css +77 -0
- package/vendor/ds/theme/scheme-light.css +78 -0
- package/vendor/ds/theme/theme-application.css +29 -0
- package/vendor/ds/theme/theme-base.css +180 -0
- package/vendor/ds/theme/theme.css +283 -0
- package/vendor/ds/tokens/density-comfortable.css +51 -0
- package/vendor/ds/tokens/density-compact.css +49 -0
- package/vendor/ds/tokens/density-spacious.css +49 -0
- package/vendor/ds/tokens/density-tiny.css +49 -0
- package/vendor/ds/tokens/tokens.css +182 -0
- package/build/_app/immutable/assets/0.BR-GggVq.css +0 -1
- package/build/_app/immutable/assets/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2 +0 -0
- package/build/_app/immutable/assets/inter-cyrillic-wght-normal.DqGufNeO.woff2 +0 -0
- package/build/_app/immutable/assets/inter-greek-ext-wght-normal.DlzME5K_.woff2 +0 -0
- package/build/_app/immutable/assets/inter-greek-wght-normal.CkhJZR-_.woff2 +0 -0
- package/build/_app/immutable/assets/inter-latin-ext-wght-normal.DO1Apj_S.woff2 +0 -0
- package/build/_app/immutable/assets/inter-latin-wght-normal.Dx4kXJAl.woff2 +0 -0
- package/build/_app/immutable/assets/inter-vietnamese-wght-normal.CBcvBZtf.woff2 +0 -0
- package/build/_app/immutable/assets/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2 +0 -0
- package/build/_app/immutable/assets/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2 +0 -0
- package/build/_app/immutable/assets/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2 +0 -0
- package/build/_app/immutable/assets/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2 +0 -0
- package/build/_app/immutable/assets/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2 +0 -0
- package/build/_app/immutable/chunks/3j4cZ58b.js +0 -1
- package/build/_app/immutable/chunks/BspmDMQv.js +0 -404
- package/build/_app/immutable/chunks/CgQYykwo.js +0 -1164
- package/build/_app/immutable/chunks/D4Buwe3n.js +0 -1
- package/build/_app/immutable/chunks/DN7v3Tar.js +0 -2
- package/build/_app/immutable/entry/app.A4vKpDuk.js +0 -2
- package/build/_app/immutable/entry/start.CPPUYn3g.js +0 -1
- package/build/_app/immutable/nodes/0.CNfy1rZt.js +0 -2
- package/build/_app/immutable/nodes/1.DyKCxpV1.js +0 -1
- package/build/_app/immutable/nodes/10.tDyQ2Z5A.js +0 -96
- package/build/_app/immutable/nodes/15.CZWDD8kn.js +0 -60
- package/dist/embed/AnalyticsView-b7oALOd5.js.map +0 -1
- package/dist/embed/RedUiEmbedRoot-Bngci7ez.js +0 -35616
- package/dist/embed/RedUiEmbedRoot-Bngci7ez.js.map +0 -1
- package/dist/embed/bundle-mjs-UuVRz3O4.js +0 -3047
- package/dist/embed/bundle-mjs-UuVRz3O4.js.map +0 -1
- package/dist/embed/index-C0FJgu3h.js +0 -881
- package/dist/embed/index-C0FJgu3h.js.map +0 -1
- package/dist/embed/index-client-BHUUkI8H.js +0 -3304
- package/dist/embed/index-client-BHUUkI8H.js.map +0 -1
- /package/build/_app/immutable/assets/{EmptyState.RXcH7ryE.css → link-2.RXcH7ryE.css} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-C0FJgu3h.js","sources":["../../src/lib/reddb/dev-console.ts","../../src/lib/build-info.ts","../../src/lib/reddb/server-capabilities.ts","../../src/lib/reddb/client.ts","../../src/lib/reddb/connection-provider.ts","../../src/lib/reddb/injected-client-provider.ts","../../src/lib/embed/index.ts"],"sourcesContent":["// Instrumented developer console (#128). A deliberately framework-agnostic,\n// rune-free observable store so the data layer (`RedClient`, transports) can\n// log every query and HTTP call *without* importing Svelte — the client seam\n// must not depend on the UI runtime. The Svelte panel bridges this store into\n// reactivity by subscribing and copying the snapshot into `$state`.\n//\n// Every entry is one round-trip the client made: the verb (HTTP method /\n// statement head), the target (path or endpoint), how long it took, how many\n// rows came back, and a *sanitized* payload — secrets are redacted before an\n// entry is ever stored, so a copy action can never leak a token.\n\n/** What kind of round-trip an entry records. */\nexport type ConsoleEntryKind = \"query\" | \"http\";\n\nexport interface ConsoleEntry {\n /** Monotonic id, assigned on record. Stable for keying/dedup in the panel. */\n id: number;\n kind: ConsoleEntryKind;\n /** HTTP method or statement head, e.g. `POST`, `GET`, `SELECT`. */\n verb: string;\n /** Endpoint path or logical target the call hit, e.g. `/query`. */\n target: string;\n /** Absolute wall-clock time the call started. */\n startedAt: number;\n /** Round-trip duration in milliseconds. */\n durationMs: number;\n /** True when the call succeeded (2xx / resolved). */\n ok: boolean;\n /** HTTP status code when one is known. */\n status?: number;\n /** Rows returned, when the response carries a row/record count. */\n rowCount?: number;\n /** Sanitized request payload or query text — copyable, never contains secrets. */\n payload?: string;\n /** Error text when the call failed. */\n error?: string;\n}\n\n/** A record as handed to the store — the store owns `id`. */\nexport type ConsoleEntryInput = Omit<ConsoleEntry, \"id\">;\n\n/**\n * A per-entry tap on the console. Unlike `subscribe` (which observes the whole\n * snapshot for rendering), a sink receives each entry exactly once, as it is\n * recorded — the shape an embedding host wants for mirroring red-ui's traffic\n * into its own developer console.\n */\nexport type ConsoleSink = (entry: ConsoleEntry) => void;\n\ntype Listener = (entries: readonly ConsoleEntry[]) => void;\n\n/** Keys whose values are always masked, matched case-insensitively as substrings. */\nconst SENSITIVE_KEY_RE =\n /pass(word)?|secret|token|api[-_]?key|authorization|auth|credential|cookie|session|bearer|private[-_]?key|mfa/i;\n\nconst REDACTED = \"«redacted»\";\n\n/**\n * Recursively redact sensitive values from an arbitrary structure, returning a\n * plain clone safe to stringify. A value under a sensitive key is replaced with\n * a marker rather than dropped, so the reader still sees *that* a field existed.\n * Depth- and breadth-bounded so a pathological payload can't blow the console.\n */\nexport function redactSecrets(value: unknown, depth = 0): unknown {\n if (depth > 6) return \"«…»\";\n if (Array.isArray(value)) {\n return value.slice(0, 100).map((v) => redactSecrets(v, depth + 1));\n }\n if (value && typeof value === \"object\") {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(value as Record<string, unknown>)) {\n out[k] = SENSITIVE_KEY_RE.test(k)\n ? REDACTED\n : redactSecrets(v, depth + 1);\n }\n return out;\n }\n return value;\n}\n\n/**\n * Turn a request body (a JSON string, an object, or anything else) into a\n * sanitized, human-readable string for the entry's copyable payload. Parses\n * JSON so keys can be redacted; falls back to a truncated raw string when the\n * body isn't JSON. Returns `undefined` for an absent body.\n */\nexport function sanitizePayload(body: unknown): string | undefined {\n if (body === undefined || body === null) return undefined;\n let parsed: unknown = body;\n if (typeof body === \"string\") {\n if (body.length === 0) return undefined;\n try {\n parsed = JSON.parse(body);\n } catch {\n return body.length > 2000 ? `${body.slice(0, 2000)}…` : body;\n }\n }\n try {\n const json = JSON.stringify(redactSecrets(parsed), null, 2);\n return json.length > 4000 ? `${json.slice(0, 4000)}…` : json;\n } catch {\n return undefined;\n }\n}\n\n/**\n * The developer console log. A bounded ring of entries with a minimal\n * subscribe/emit surface — no framework, no runes. `record` is the single\n * write path the client seam calls; `subscribe` is how the panel observes.\n */\nexport class DevConsoleStore {\n private entries: ConsoleEntry[] = [];\n private readonly listeners = new Set<Listener>();\n private readonly sinks = new Set<ConsoleSink>();\n private nextId = 1;\n\n /** Cap on retained entries; oldest are dropped past this. */\n constructor(private readonly capacity = 500) {}\n\n /** Append one round-trip. Assigns the id, trims to capacity, notifies. */\n record(input: ConsoleEntryInput): ConsoleEntry {\n const entry: ConsoleEntry = { ...input, id: this.nextId++ };\n this.entries.push(entry);\n if (this.entries.length > this.capacity) {\n this.entries.splice(0, this.entries.length - this.capacity);\n }\n this.emit();\n for (const sink of this.sinks) {\n try {\n sink(entry);\n } catch {\n // A host-owned sink must never be able to break the client seam.\n }\n }\n return entry;\n }\n\n /**\n * Tap every future entry. Entries recorded before the sink was added are\n * not replayed — a host mirrors live traffic, it doesn't import history.\n * Returns an unsubscribe.\n */\n addSink(sink: ConsoleSink): () => void {\n this.sinks.add(sink);\n return () => {\n this.sinks.delete(sink);\n };\n }\n\n /** A frozen, newest-last snapshot of the log. */\n snapshot(): readonly ConsoleEntry[] {\n return this.entries.slice();\n }\n\n /** Number of retained entries. */\n get size(): number {\n return this.entries.length;\n }\n\n /** Drop every entry and notify. */\n clear(): void {\n if (this.entries.length === 0) return;\n this.entries = [];\n this.emit();\n }\n\n /**\n * Observe the log. The listener fires immediately with the current snapshot\n * and again on every change. Returns an unsubscribe.\n */\n subscribe(listener: Listener): () => void {\n this.listeners.add(listener);\n listener(this.snapshot());\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n private emit(): void {\n const snap = this.snapshot();\n for (const listener of this.listeners) listener(snap);\n }\n}\n\n/** The singleton the client seam records into and the panel observes. */\nexport const devConsole = new DevConsoleStore();\n","// Single source of truth for \"what version am I\" across the Web/PWA, the\n// Embeddable Lib, and the Tauri desktop webview (which all run this same\n// bundle). Mirrors ../red-skills/src/packages/build-info: the version is\n// injected at build time by Vite `define` (see vite.config.ts /\n// vite.embed.config.ts) from `packages/ui/package.json` — overridable by the\n// `RED_BUILD_VERSION` env the release CI sets from the git tag. Falls back to\n// `0.0.0-dev` for an un-stamped local dev build.\n\ndeclare const __RED_UI_VERSION__: string | undefined;\ndeclare const __RED_UI_GIT_SHA__: string | undefined;\ndeclare const __RED_UI_BUILD_TIME__: string | undefined;\n\nexport interface BuildInfo {\n version: string;\n gitSha: string;\n buildTime: string;\n}\n\nfunction injected(read: () => string | undefined): string | undefined {\n try {\n const v = read();\n return typeof v === \"string\" && v.length > 0 ? v : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction stripTagPrefix(v: string): string {\n return v.startsWith(\"v\") ? v.slice(1) : v;\n}\n\nexport function readBuildInfo(): BuildInfo {\n return {\n version: stripTagPrefix(injected(() => __RED_UI_VERSION__) ?? \"0.0.0-dev\"),\n gitSha: injected(() => __RED_UI_GIT_SHA__) ?? \"unknown\",\n buildTime: injected(() => __RED_UI_BUILD_TIME__) ?? \"unknown\",\n };\n}\n\n/** The resolved app version, e.g. `0.1.1` (or `0.0.0-dev` un-stamped). */\nexport const RED_UI_VERSION: string = readBuildInfo().version;\n","// Server-version capability negotiation (#22). One UI build talks to many\n// reddb server versions: rather than assume every endpoint exists, the UI\n// resolves a capability map for the active connection and HIDES controls the\n// server can't honour (absent, not greyed — the permission-aware rule).\n//\n// Resolution prefers a STABLE server signal (`GET /capabilities`) over\n// inferring from 404s, and FAILS SAFE — any uncertainty resolves to \"not\n// supported\" so a newer UI never assumes a capability a server lacks.\n\n/** The feature flags the UI gates controls on. Extend as features are added. */\nexport interface ServerCapabilities {\n /** Version control (commits / diffs) — `/repo/commits`, `/collections/:n/vcs`. */\n vcs: boolean\n /** Cluster topology + status — `/cluster/status`. */\n clusterStatus: boolean\n /** Per-collection metadata route — `GET /collections/:name`. */\n collectionMetadata: boolean\n /** Server-sent change stream — `/changes/stream`. */\n cdcStream: boolean\n}\n\n/** Fail-safe baseline: nothing is assumed present until proven. */\nexport const EMPTY_SERVER_CAPABILITIES: ServerCapabilities = Object.freeze({\n vcs: false,\n clusterStatus: false,\n collectionMetadata: false,\n cdcStream: false,\n})\n\n/** Shape of the optional stable `/capabilities` signal. */\nexport interface RawCapabilities {\n ok?: boolean\n /** Flat feature names, e.g. [\"vcs\",\"cluster_status\"]. */\n features?: string[]\n /** Or an explicit flag map, e.g. { vcs: true }. */\n capabilities?: Record<string, boolean>\n}\n\n// Server feature names → our capability keys. Several aliases per key so we\n// tolerate naming drift across server versions without a UI release.\nconst FEATURE_ALIASES: Record<string, keyof ServerCapabilities> = {\n vcs: 'vcs',\n versioning: 'vcs',\n version_control: 'vcs',\n cluster: 'clusterStatus',\n cluster_status: 'clusterStatus',\n collection_metadata: 'collectionMetadata',\n collections_metadata: 'collectionMetadata',\n cdc: 'cdcStream',\n changes_stream: 'cdcStream',\n cdc_stream: 'cdcStream',\n}\n\n/**\n * Build a capability map from the stable `/capabilities` signal. Unknown\n * feature names are ignored (a server advertising features this UI version\n * doesn't model is harmless); known ones flip their flag on. The explicit\n * `capabilities` map, when present, takes precedence over the `features` list.\n */\nexport function capabilitiesFromSignal(raw: RawCapabilities): ServerCapabilities {\n const out: ServerCapabilities = { ...EMPTY_SERVER_CAPABILITIES }\n for (const name of raw.features ?? []) {\n const key = FEATURE_ALIASES[name?.toLowerCase?.() ?? '']\n if (key) out[key] = true\n }\n for (const [name, on] of Object.entries(raw.capabilities ?? {})) {\n const key = FEATURE_ALIASES[name.toLowerCase()]\n if (key) out[key] = on === true\n }\n return out\n}\n","// Real HTTP client for a running reddb instance.\n// Endpoints discovered from reddb/crates/reddb-server/src/server/routing.rs.\n\nimport {\n capabilitiesFromSignal,\n EMPTY_SERVER_CAPABILITIES,\n type RawCapabilities,\n type ServerCapabilities,\n} from \"./server-capabilities\";\nimport type {\n PermissionCheck,\n PermissionDecision,\n PermissionResource,\n} from \"../permission-gate\";\nimport type { ClusterStatus, ReplicationStatus } from \"./cluster-status\";\nimport type { MetricDescriptor, PromResponse } from \"./analytics\";\nimport type { AskResponse, AskOptions } from \"./ask\";\nimport { devConsole, sanitizePayload } from \"./dev-console\";\n\nexport interface QueryRow {\n values: Record<string, unknown>;\n edges?: Record<string, unknown>;\n nodes?: Record<string, unknown>;\n paths?: unknown[];\n vector_results?: Array<{\n id?: number | string;\n collection?: string;\n distance?: number;\n vector?: number[];\n metadata?: Record<string, unknown>;\n linked_node?: string;\n linked_row?: [string, number];\n }>;\n}\n\nexport interface QueryResult {\n ok: boolean;\n query: string;\n capability?: string;\n engine?: string;\n mode?: string;\n record_count: number;\n result: { columns: string[]; records: QueryRow[] };\n error?: string;\n /** True when this result was assembled from the NDJSON streaming endpoint\n * (`POST /query/stream`) rather than the buffered `POST /query`. */\n streamed?: boolean;\n /** True when streaming stopped at `maxRows` and more rows remained on the\n * server (the cursor was cancelled). Surfaced so the UI never silently\n * drops rows. */\n truncated?: boolean;\n}\n\n/** Result of collecting a read-only SELECT over the NDJSON streaming endpoint. */\nexport interface StreamedQueryResult {\n columns: string[];\n schemaFingerprint?: string;\n rows: Array<Record<string, unknown>>;\n rowCount: number;\n /** Hit the `maxRows` cap with more rows still on the server. */\n truncated: boolean;\n /** Opaque resume token from the `cursor` frame, if one was emitted. */\n cursor?: string;\n}\n\nexport interface CollectionMetadata {\n ok?: boolean;\n name: string;\n kind?: string;\n capability?: string;\n capabilities?: string[];\n schema?: Record<string, unknown>;\n indexes?: Array<Record<string, unknown>>;\n retention?: Record<string, unknown>;\n tenant?: string;\n actions?: Record<string, boolean | { allowed: boolean; reason?: string }>;\n}\n\nexport interface Stats {\n active_connections: number;\n idle_connections: number;\n started_at_unix_ms: number;\n store: {\n collection_count: number;\n cross_ref_count: number;\n total_entities: number;\n total_memory_bytes: number;\n };\n system: {\n arch: string;\n cpu_cores: number;\n hostname: string;\n os: string;\n pid: number;\n total_memory_bytes: number;\n available_memory_bytes: number;\n };\n kv?: {\n gets: number;\n puts: number;\n deletes: number;\n cas_success: number;\n cas_conflict: number;\n };\n /**\n * Set by the server when the store is open read-only — e.g. an embedded file\n * already held by an active writer (lock detection is owned by reddb). Absent\n * when the server reports no read-only signal, in which case the UI shows no\n * badge and behaves normally (#23). `read_only_reason` is an optional\n * human-facing explanation for the badge tooltip.\n */\n read_only?: boolean;\n read_only_reason?: string;\n}\n\nexport interface Whoami {\n ok: boolean;\n authenticated: boolean;\n username: string;\n role: string;\n note?: string;\n}\n\nexport interface RedClientOptions {\n headers?: HeadersInit;\n fetch?: typeof fetch;\n}\n\nexport interface AuthUser {\n username: string;\n role?: string;\n created_at?: number;\n last_active?: number;\n mfa?: boolean;\n}\n\nexport interface AuthTenant {\n id?: string;\n name?: string;\n slug?: string;\n role?: string;\n grants?: string[];\n created_at?: number;\n}\n\nexport interface AuthPolicy {\n id?: string;\n name?: string;\n tenant?: string;\n principal?: string;\n resource?: string;\n action?: string;\n effect?: \"allow\" | \"deny\" | string;\n description?: string;\n created_at?: number;\n}\n\ninterface AuthCanResponse {\n ok?: boolean;\n results?: Array<Partial<PermissionDecision>>;\n error?: string;\n}\n\nexport interface ChangeEvent {\n lsn: number;\n timestamp: number;\n collection: string;\n kind: string;\n operation: \"insert\" | \"update\" | \"delete\" | \"refresh\";\n rid?: number;\n}\n\nexport interface VcsEnvelope<T> {\n ok: boolean;\n result: T;\n error?: string;\n}\n\nexport interface CollectionVcsState {\n collection: string;\n versioned: boolean;\n}\n\nexport interface VcsAuthor {\n name: string;\n email: string;\n}\n\nexport interface VcsCommit {\n hash: string;\n root_xid?: number;\n parents: string[];\n height?: number;\n author?: VcsAuthor;\n committer?: VcsAuthor;\n message: string;\n timestamp_ms: number;\n signature?: string;\n}\n\nexport interface VcsDiffEntry {\n collection: string;\n entity_id: string;\n change: \"added\" | \"removed\" | \"modified\" | string;\n before?: unknown;\n after?: unknown;\n}\n\nexport interface VcsDiff {\n from: string;\n to: string;\n added: number;\n removed: number;\n modified: number;\n entries: VcsDiffEntry[];\n}\n\nconst unsupportedCollectionMetadata = new Set<string>();\nconst collectionMetadataSupportProbe = new Map<string, Promise<boolean>>();\n\nfunction isUnsupportedCollectionMetadataRoute(e: unknown): boolean {\n const message = e instanceof Error ? e.message : String(e);\n return message.includes(\"route not found: GET /collections/\");\n}\n\n/**\n * Generalised \"the server doesn't have this route\" check (#22). `json()`\n * throws `<METHOD> <path> → <status> <body>`, so a 404 or a \"route not found\"\n * body both signal an unsupported route. Distinct from auth/5xx/network errors\n * — but capability negotiation treats *any* probe failure as unsupported\n * (fail safe), so this is only used to tell \"route absent\" from \"signal\n * present\" when reading the stable `/capabilities` endpoint.\n */\nfunction isUnsupportedRoute(e: unknown): boolean {\n const message = e instanceof Error ? e.message : String(e);\n return / → 404\\b/.test(message) || message.includes(\"route not found\");\n}\n\nfunction unsupportedCollectionMetadataError(baseUrl: string): Error {\n return new Error(\n `GET /collections/:name unsupported by this reddb server (${baseUrl})`\n );\n}\n\nfunction isPermissionResource(value: unknown): value is PermissionResource {\n if (!value || typeof value !== \"object\") return false;\n const candidate = value as Partial<PermissionResource>;\n return (\n typeof candidate.kind === \"string\" &&\n candidate.kind.length > 0 &&\n typeof candidate.name === \"string\" &&\n candidate.name.length > 0 &&\n (candidate.tenant === undefined || typeof candidate.tenant === \"string\")\n );\n}\n\n/** One NDJSON frame from `POST /query/stream`. Discriminated by its single key. */\ntype NdjsonFrame =\n | {\n descriptor: {\n columns: Array<string | { name: string }>;\n schema_fingerprint?: string;\n };\n }\n | { cursor: { token: string; snapshot_lsn?: number; resumable?: boolean } }\n | { row: Record<string, unknown> }\n | { end: { row_count?: number } }\n | { cancelled: Record<string, unknown> };\n\n/**\n * Parse a chunked `application/x-ndjson` body into one frame per line. Buffers\n * across chunk boundaries (a JSON object split over two TCP reads is emitted\n * exactly once, in order) and flushes a trailing newline-less line at EOF.\n */\nasync function* parseNdjsonFrames(\n body: ReadableStream<Uint8Array>\n): AsyncGenerator<NdjsonFrame> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buf = \"\";\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n buf += decoder.decode(value, { stream: true });\n let nl: number;\n while ((nl = buf.indexOf(\"\\n\")) !== -1) {\n const line = buf.slice(0, nl).trim();\n buf = buf.slice(nl + 1);\n if (line) yield JSON.parse(line) as NdjsonFrame;\n }\n }\n const tail = buf.trim();\n if (tail) yield JSON.parse(tail) as NdjsonFrame;\n } finally {\n reader.releaseLock();\n }\n}\n\nconst SELECT_RE = /^\\s*select\\b/i;\n\n/**\n * Pull a row count out of a parsed response for the developer console (#128).\n * Recognises the `/query` envelope (`record_count`, else the length of\n * `result.records`) and a bare array; returns `undefined` when the shape\n * carries no notion of rows. Purely structural — never throws.\n */\nexport function extractRowCount(data: unknown): number | undefined {\n if (Array.isArray(data)) return data.length;\n if (data && typeof data === \"object\") {\n const d = data as {\n record_count?: unknown;\n result?: { records?: unknown };\n };\n if (typeof d.record_count === \"number\") return d.record_count;\n if (Array.isArray(d.result?.records)) return d.result.records.length;\n }\n return undefined;\n}\n\n/**\n * Extract a human-readable message from any thrown value. Tauri's `invoke` and\n * the HTTP plugin reject with plain strings or bare objects (not `Error`), so\n * `(e as Error).message` is often `undefined` — this never returns that.\n */\nexport function errorText(e: unknown): string {\n if (e instanceof Error) return e.message || String(e);\n if (typeof e === \"string\") return e;\n if (e && typeof e === \"object\") {\n const m = (e as { message?: unknown }).message;\n if (typeof m === \"string\" && m) return m;\n try {\n const s = JSON.stringify(e);\n if (s && s !== \"{}\") return s;\n } catch {\n /* circular — fall through */\n }\n }\n return String(e);\n}\n\n/**\n * Run a query, preferring the bounded-memory NDJSON stream for a plain SELECT\n * and falling back to the buffered `POST /query` for everything else — and for\n * any streaming failure (network, a non-SELECT 400, or an older server with no\n * `/query/stream` route returning 404). The fallback makes this strictly safe:\n * behaviour is identical to {@link RedClient.query} unless the server supports\n * streaming AND the statement is a SELECT, in which case the server streams\n * rows instead of buffering the whole result set.\n */\nexport async function runQueryPreferStream(\n client: Pick<RedClient, \"query\" | \"queryStreamCollect\">,\n sql: string,\n opts: { maxRows?: number; signal?: AbortSignal } = {}\n): Promise<QueryResult> {\n const queryOpts = opts.signal ? { signal: opts.signal } : undefined;\n if (!SELECT_RE.test(sql))\n return queryOpts ? client.query(sql, queryOpts) : client.query(sql);\n try {\n const s = await client.queryStreamCollect(sql, opts);\n return {\n ok: true,\n query: sql,\n record_count: s.rowCount,\n result: {\n columns: s.columns,\n records: s.rows.map((row) =>\n row.values &&\n typeof row.values === \"object\" &&\n (\"nodes\" in row ||\n \"edges\" in row ||\n \"paths\" in row ||\n \"vector_results\" in row)\n ? (row as unknown as QueryRow)\n : { values: row }\n ),\n },\n streamed: true,\n truncated: s.truncated,\n };\n } catch (e) {\n if (\n opts.signal?.aborted ||\n (e instanceof Error && e.name === \"AbortError\")\n ) {\n throw e;\n }\n return queryOpts ? client.query(sql, queryOpts) : client.query(sql);\n }\n}\n\nexport class RedClient {\n readonly baseUrl: string;\n private readonly headers: HeadersInit | undefined;\n private readonly fetcher: typeof fetch;\n\n constructor(baseUrl: string, opts: RedClientOptions = {}) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n this.headers = opts.headers;\n this.fetcher = opts.fetch ?? fetch;\n }\n\n private async json<T>(path: string, init?: RequestInit): Promise<T> {\n const url = `${this.baseUrl}${path}`;\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n Object.assign(headers, this.headers as Record<string, string> | undefined);\n Object.assign(headers, init?.headers as Record<string, string> | undefined);\n\n // Developer console instrumentation (#128). Every HTTP call the client\n // makes is timed and logged from this single seam, so every Surface is\n // covered without touching each caller. The request body is sanitized\n // before it lands in an entry — a copy action can never leak a secret.\n const verb = init?.method ?? \"GET\";\n const startedAt = Date.now();\n const start = performance.now();\n const payload = sanitizePayload(init?.body);\n const elapsed = () => Math.round(performance.now() - start);\n\n let res: Response;\n try {\n res = await this.fetcher(url, { ...init, headers });\n } catch (e) {\n devConsole.record({\n kind: \"http\",\n verb,\n target: path,\n startedAt,\n durationMs: elapsed(),\n ok: false,\n payload,\n error: errorText(e),\n });\n throw e;\n }\n\n if (!res.ok) {\n const body = await res.text().catch(() => \"\");\n const message = `${verb} ${path} → ${res.status} ${body.slice(0, 200)}`;\n devConsole.record({\n kind: \"http\",\n verb,\n target: path,\n startedAt,\n durationMs: elapsed(),\n ok: false,\n status: res.status,\n payload,\n error: message,\n });\n throw new Error(message);\n }\n\n const data = (await res.json()) as T;\n const rowCount = extractRowCount(data);\n devConsole.record({\n // A response carrying a row count is a query round-trip; everything else\n // is a plain HTTP call. This is how `/query` entries mark themselves.\n kind: rowCount === undefined ? \"http\" : \"query\",\n verb,\n target: path,\n startedAt,\n durationMs: elapsed(),\n ok: true,\n status: res.status,\n ...(rowCount === undefined ? {} : { rowCount }),\n payload,\n });\n return data;\n }\n\n /** Exchange credentials for a session token. Neither value is persisted. */\n async login(username: string, password: string): Promise<string> {\n const endpoint = new URL(this.baseUrl);\n if (\n endpoint.username ||\n endpoint.password ||\n endpoint.search ||\n endpoint.hash ||\n (endpoint.protocol !== \"https:\" &&\n !(\n endpoint.protocol === \"http:\" &&\n [\"localhost\", \"127.0.0.1\", \"[::1]\"].includes(endpoint.hostname)\n ))\n ) {\n throw new Error(\"Use HTTPS to sign in to a remote database.\");\n }\n // Bypass query instrumentation: credentials and the session response must\n // never enter the developer console, including an authentication failure.\n const response = await this.fetcher(`${this.baseUrl}/auth/login`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"omit\",\n redirect: \"error\",\n body: JSON.stringify({ username, password }),\n });\n if (!response.ok)\n throw new Error(\n \"Database sign-in failed. Check your credentials and try again.\"\n );\n const session = await response.json();\n if (\n session.ok !== true ||\n typeof session.token !== \"string\" ||\n !session.token\n ) {\n throw new Error(\"The database did not return a session token.\");\n }\n return session.token;\n }\n\n async stats(): Promise<Stats> {\n return this.json<Stats>(\"/stats\");\n }\n\n async clusterStatus(): Promise<ClusterStatus> {\n return this.json<ClusterStatus>(\"/cluster/status\");\n }\n\n /**\n * List registered metric descriptors from the typed `red.metrics`\n * projection (reddb #747). One row per `CREATE METRIC`, carrying the\n * `kind` (counter|gauge|histogram|ratio|derived) the UI uses to auto-select\n * a chart. Returns `[]` when the server has no analytics surface.\n */\n async metricsCatalog(): Promise<MetricDescriptor[]> {\n const r = await this.query(\n \"SELECT path, kind, role, unit, supports_prometheus_query, created_at_ms FROM red.metrics\"\n );\n return r.result.records.map((rec) => {\n const v = rec.values;\n return {\n path: String(v.path ?? \"\"),\n kind: v.kind as MetricDescriptor[\"kind\"],\n role: String(v.role ?? \"metric\"),\n unit: (v.unit as string | null) ?? null,\n supports_prometheus_query: v.supports_prometheus_query !== false,\n created_at_ms:\n typeof v.created_at_ms === \"number\" ? v.created_at_ms : undefined,\n } satisfies MetricDescriptor;\n });\n }\n\n /**\n * Prometheus instant query (`GET /api/v1/query`). Returns the raw\n * Prometheus-shaped envelope; callers normalise with `parsePromVector`.\n */\n async promQuery(query: string, time?: number): Promise<PromResponse> {\n const qs = new URLSearchParams({ query });\n if (time !== undefined) qs.set(\"time\", String(time));\n return this.json<PromResponse>(`/api/v1/query?${qs}`);\n }\n\n /**\n * Prometheus range query (`GET /api/v1/query_range`). `start`/`end` are unix\n * seconds, `step` is the resolution in seconds. Normalise with\n * `parsePromMatrix`.\n */\n async promQueryRange(\n query: string,\n start: number,\n end: number,\n step: number\n ): Promise<PromResponse> {\n const qs = new URLSearchParams({\n query,\n start: String(start),\n end: String(end),\n step: String(step),\n });\n return this.json<PromResponse>(`/api/v1/query_range?${qs}`);\n }\n\n async ping(): Promise<\n { ok: true; rtt_ms: number } | { ok: false; error: string }\n > {\n const start = performance.now();\n try {\n await this.json(\"/stats\");\n return { ok: true, rtt_ms: Math.round(performance.now() - start) };\n } catch (e) {\n return { ok: false, error: errorText(e) };\n }\n }\n\n /**\n * Resolve the server's capability map (#22). Prefers the stable\n * `/capabilities` signal; when that route is absent (older server), infers\n * from lightweight, side-effect-free GET probes. Any non-404 failure\n * (network, auth, 5xx) fails safe to the empty map, so the UI hides controls\n * rather than showing ones the server can't honour.\n */\n async capabilities(): Promise<ServerCapabilities> {\n try {\n const raw = await this.json<RawCapabilities>(\"/capabilities\");\n return capabilitiesFromSignal(raw);\n } catch (e) {\n // Only an absent route falls through to inference; anything else (a\n // flaky network, an auth wall, a 5xx) hides everything.\n if (!isUnsupportedRoute(e)) return { ...EMPTY_SERVER_CAPABILITIES };\n }\n const [vcs, clusterStatus] = await Promise.all([\n this.probeGet(\"/repo/commits?limit=1\"),\n this.probeGet(\"/cluster/status\"),\n ]);\n return { ...EMPTY_SERVER_CAPABILITIES, vcs, clusterStatus };\n }\n\n /** True iff a GET to `path` succeeds; any failure (404/auth/5xx/network) is\n * treated as unsupported — the fail-safe-to-hide rule of #22. */\n private async probeGet(path: string): Promise<boolean> {\n try {\n await this.json(path);\n return true;\n } catch {\n return false;\n }\n }\n\n async collections(): Promise<string[]> {\n const r = await this.json<{ collections: string[] }>(\"/collections\");\n return r.collections;\n }\n\n async collection(name: string): Promise<CollectionMetadata> {\n if (unsupportedCollectionMetadata.has(this.baseUrl)) {\n throw unsupportedCollectionMetadataError(this.baseUrl);\n }\n\n const path = `/collections/${encodeURIComponent(name)}`;\n const inFlightProbe = collectionMetadataSupportProbe.get(this.baseUrl);\n if (inFlightProbe) {\n const supported = await inFlightProbe;\n if (!supported) throw unsupportedCollectionMetadataError(this.baseUrl);\n return this.json<CollectionMetadata>(path);\n }\n\n let resolveProbe: (supported: boolean) => void;\n const probe = new Promise<boolean>((resolve) => {\n resolveProbe = resolve;\n });\n collectionMetadataSupportProbe.set(this.baseUrl, probe);\n\n try {\n const metadata = await this.json<CollectionMetadata>(path);\n resolveProbe!(true);\n return metadata;\n } catch (e) {\n if (isUnsupportedCollectionMetadataRoute(e)) {\n unsupportedCollectionMetadata.add(this.baseUrl);\n resolveProbe!(false);\n } else {\n resolveProbe!(true);\n }\n throw e;\n } finally {\n collectionMetadataSupportProbe.delete(this.baseUrl);\n }\n }\n\n async createCollection(name: string): Promise<void> {\n await this.json(\"/collections\", {\n method: \"POST\",\n body: JSON.stringify({ name }),\n });\n }\n\n async insertDocument(\n collection: string,\n doc: Record<string, unknown>\n ): Promise<{ id: number }> {\n return this.json<{ id: number }>(\n `/collections/${encodeURIComponent(collection)}/documents`,\n {\n method: \"POST\",\n body: JSON.stringify(doc),\n }\n );\n }\n\n async query(\n query: string,\n opts: { signal?: AbortSignal } = {}\n ): Promise<QueryResult> {\n return this.json<QueryResult>(\"/query\", {\n method: \"POST\",\n body: JSON.stringify({ query }),\n signal: opts.signal,\n });\n }\n\n /**\n * Stream a read-only SELECT through `POST /query/stream` (NDJSON, chunked).\n * The server emits rows through a bounded-memory channel — it never buffers\n * the whole result — and we collect up to `maxRows` (default 10 000) before\n * cancelling the server cursor. The NDJSON frame order is fixed\n * (`descriptor` → `cursor` → `row`* → `end`|`cancelled`), verified against\n * ../reddb/docs/api/query-streaming.md.\n *\n * Throws for a non-SELECT (server `400 stream_unsupported_statement`) and for\n * an absent route on an older server (`404`) — callers fall back to\n * {@link query}. Browser-reachable: this is `fetch` + `ReadableStream`, not\n * `EventSource` (the endpoint is POST-based).\n */\n async queryStreamCollect(\n query: string,\n opts: { maxRows?: number; signal?: AbortSignal } = {}\n ): Promise<StreamedQueryResult> {\n const maxRows = opts.maxRows ?? 10_000;\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Accept: \"application/x-ndjson\",\n };\n Object.assign(headers, this.headers as Record<string, string> | undefined);\n\n // Developer console instrumentation (#128). The streaming endpoint skips\n // `json()`, so it logs its own query round-trip here (verb `POST`, target\n // `/query/stream`) with the collected row count.\n const startedAt = Date.now();\n const start = performance.now();\n const body = JSON.stringify({ query });\n const payload = sanitizePayload(body);\n const elapsed = () => Math.round(performance.now() - start);\n\n let res: Response;\n try {\n res = await this.fetcher(`${this.baseUrl}/query/stream`, {\n method: \"POST\",\n headers,\n body,\n signal: opts.signal,\n });\n } catch (e) {\n devConsole.record({\n kind: \"query\",\n verb: \"POST\",\n target: \"/query/stream\",\n startedAt,\n durationMs: elapsed(),\n ok: false,\n payload,\n error: errorText(e),\n });\n throw e;\n }\n if (!res.ok || !res.body) {\n const errBody = res.body ? await res.text().catch(() => \"\") : \"\";\n const message = `POST /query/stream → ${res.status} ${errBody.slice(0, 200)}`;\n devConsole.record({\n kind: \"query\",\n verb: \"POST\",\n target: \"/query/stream\",\n startedAt,\n durationMs: elapsed(),\n ok: false,\n status: res.status,\n payload,\n error: message,\n });\n throw new Error(message);\n }\n\n const out: StreamedQueryResult = {\n columns: [],\n rows: [],\n rowCount: 0,\n truncated: false,\n };\n\n for await (const frame of parseNdjsonFrames(res.body)) {\n if (\"descriptor\" in frame) {\n out.columns = (frame.descriptor.columns ?? []).map((column) =>\n typeof column === \"string\" ? column : column.name\n );\n out.schemaFingerprint = frame.descriptor.schema_fingerprint;\n } else if (\"cursor\" in frame) {\n out.cursor = frame.cursor.token;\n } else if (\"row\" in frame) {\n if (out.rows.length >= maxRows) {\n out.truncated = true;\n break;\n }\n out.rows.push(frame.row);\n out.rowCount = out.rows.length;\n } else if (\"end\" in frame || \"cancelled\" in frame) {\n break;\n }\n }\n\n devConsole.record({\n kind: \"query\",\n verb: \"POST\",\n target: \"/query/stream\",\n startedAt,\n durationMs: elapsed(),\n ok: true,\n status: res.status,\n rowCount: out.rowCount,\n payload,\n });\n\n // We stopped early with more rows on the server — release the pinned cursor.\n if (out.truncated && out.cursor) {\n await this.cancelQueryStream(out.cursor).catch(() => {\n // best-effort: the cursor TTL reclaims it anyway.\n });\n }\n return out;\n }\n\n /** Cancel a streaming-query cursor server-side (`POST /query/stream/cancel`). */\n async cancelQueryStream(cursor: string): Promise<void> {\n await this.json(\"/query/stream/cancel\", {\n method: \"POST\",\n body: JSON.stringify({ cursor }),\n }).catch(() => undefined);\n }\n\n async collectionVcs(name: string): Promise<CollectionVcsState> {\n const r = await this.json<VcsEnvelope<CollectionVcsState>>(\n `/collections/${encodeURIComponent(name)}/vcs`\n );\n return r.result;\n }\n\n async setCollectionVcs(\n name: string,\n versioned: boolean\n ): Promise<CollectionVcsState> {\n const r = await this.json<VcsEnvelope<CollectionVcsState>>(\n `/collections/${encodeURIComponent(name)}/vcs`,\n {\n method: \"PUT\",\n body: JSON.stringify({ versioned }),\n }\n );\n return r.result;\n }\n\n async commits(\n opts: {\n from?: string;\n to?: string;\n branch?: string;\n limit?: number;\n skip?: number;\n noMerges?: boolean;\n } = {}\n ): Promise<VcsCommit[]> {\n const qs = new URLSearchParams();\n if (opts.from) qs.set(\"from\", opts.from);\n if (opts.to) qs.set(\"to\", opts.to);\n if (opts.branch) qs.set(\"branch\", opts.branch);\n if (opts.limit !== undefined) qs.set(\"limit\", String(opts.limit));\n if (opts.skip !== undefined) qs.set(\"skip\", String(opts.skip));\n if (opts.noMerges !== undefined) qs.set(\"no_merges\", String(opts.noMerges));\n const suffix = qs.toString() ? `?${qs}` : \"\";\n const r = await this.json<VcsEnvelope<VcsCommit[]>>(\n `/repo/commits${suffix}`\n );\n return r.result;\n }\n\n async commitDiff(\n from: string,\n to: string,\n opts: { collection?: string; summary?: boolean } = {}\n ): Promise<VcsDiff> {\n const qs = new URLSearchParams();\n if (opts.collection) qs.set(\"collection\", opts.collection);\n if (opts.summary !== undefined) qs.set(\"summary\", String(opts.summary));\n const suffix = qs.toString() ? `?${qs}` : \"\";\n const r = await this.json<VcsEnvelope<VcsDiff>>(\n `/repo/commits/${encodeURIComponent(from)}/diff/${encodeURIComponent(to)}${suffix}`\n );\n return r.result;\n }\n\n async replication(): Promise<ReplicationStatus> {\n return this.json<ReplicationStatus>(\"/replication/status\").catch(() => ({\n ok: false,\n role: \"standalone\" as const,\n }));\n }\n\n async whoami(): Promise<Whoami> {\n return this.json<Whoami>(\"/auth/whoami\");\n }\n\n /**\n * Grounded natural-language query (`POST /ai/ask`, ADR 0013). Returns the\n * synthesised answer plus the `sources_flat` it was grounded on and the\n * `[^N]` citations linking claims to sources. Requires the server's AI\n * provider to be configured; an unconfigured server answers with an error\n * status (surfaced by `json()`).\n */\n async ask(question: string, opts: AskOptions = {}): Promise<AskResponse> {\n return this.json<AskResponse>(\"/ai/ask\", {\n method: \"POST\",\n body: JSON.stringify({ question, ...opts }),\n });\n }\n\n async users(): Promise<AuthUser[]> {\n const r = await this.json<{ ok: boolean; users: AuthUser[] }>(\n \"/auth/users\"\n );\n return r.users;\n }\n\n async tenants(): Promise<AuthTenant[]> {\n const r = await this.json<{ ok: boolean; tenants: AuthTenant[] }>(\n \"/auth/tenants\"\n );\n return r.tenants ?? [];\n }\n\n async policies(): Promise<AuthPolicy[]> {\n const r = await this.json<{ ok: boolean; policies: AuthPolicy[] }>(\n \"/auth/policies\"\n );\n return r.policies ?? [];\n }\n\n async authCan(checks: PermissionCheck[]): Promise<PermissionDecision[]> {\n const r = await this.json<AuthCanResponse>(\"/auth/can\", {\n method: \"POST\",\n body: JSON.stringify({ checks }),\n });\n if (!Array.isArray(r.results)) {\n throw new Error(r.error ?? \"POST /auth/can returned no results\");\n }\n return checks.map((check, index) => {\n const result = r.results?.[index] ?? {};\n const resource = isPermissionResource(result.resource)\n ? result.resource\n : check.resource;\n return {\n action:\n typeof result.action === \"string\" ? result.action : check.action,\n resource,\n current_tenant:\n typeof result.current_tenant === \"string\"\n ? result.current_tenant\n : check.current_tenant,\n allowed: result.allowed === true,\n reason: typeof result.reason === \"string\" ? result.reason : undefined,\n };\n });\n }\n\n async changes(\n sinceLsn?: number,\n opts: { collection?: string; limit?: number } = {}\n ): Promise<ChangeEvent[]> {\n const qs = new URLSearchParams();\n if (sinceLsn !== undefined) qs.set(\"since_lsn\", String(sinceLsn));\n if (opts.limit !== undefined) qs.set(\"limit\", String(opts.limit));\n const suffix = qs.toString() ? `?${qs}` : \"\";\n const r = await this.json<{ events: ChangeEvent[] }>(\"/changes\" + suffix);\n const events = r.events ?? [];\n return opts.collection\n ? events.filter((e) => e.collection === opts.collection)\n : events;\n }\n\n // Convenience: turn a /query response into plain row objects.\n async rows(query: string): Promise<Array<Record<string, unknown>>> {\n const r = await this.query(query);\n return r.result.records.map((rec) => rec.values);\n }\n}\n","// ConnectionProvider — deep module: the UI's only seam for \"how do I\n// discover and select databases?\". Local OSS lives behind LocalUrlProvider;\n// cloud SSO (ReddbIoSsoProvider) will land in a separate slice without\n// touching the consumers.\n\nimport type { RedClient } from './client'\nimport type { Transport } from './types'\nimport type { BootParams } from './boot-params'\n\nexport type ConnectionRole = 'primary' | 'replica' | 'embedded'\n\nexport interface Connection {\n id: string\n label: string\n url: string\n role?: ConnectionRole\n description?: string\n}\n\nexport interface Identity {\n authenticated: boolean\n username: string\n role: string\n}\n\nexport interface ActiveConnection {\n connection: Connection\n client: RedClient\n rtt_ms: number\n}\n\nexport interface ConnectionProvider {\n list(): Promise<Connection[]>\n connect(id: string): Promise<ActiveConnection>\n whoami(): Promise<Identity>\n /**\n * The wire transports this provider can actually materialize on its Surface\n * (#34, ADR-0003). The Connect UI offers only these, so the user never picks\n * a transport that fails. Optional: a provider that omits it is treated as\n * browser-reachable (http/https + coerced red://) by the consumer.\n */\n transports?(): Transport[]\n\n /**\n * Non-secret connection config seeded by the Surface (#36, ADR-0005) — the\n * endpoint and initial view from the app URL. The Core reads it through this\n * seam (not a special MCP branch) to connect without the Connect flow.\n * Tokens never appear here. Returns null when nothing was seeded.\n */\n bootParams?(): BootParams | null\n}\n\nexport class UnknownConnectionError extends Error {\n constructor(public readonly id: string) {\n super(`Unknown connection: ${id}`)\n this.name = 'UnknownConnectionError'\n }\n}\n\nexport class NotConnectedError extends Error {\n constructor() {\n super('No active connection — call connect() first')\n this.name = 'NotConnectedError'\n }\n}\n\nexport class UnreachableConnectionError extends Error {\n constructor(public readonly id: string, public readonly reason: string) {\n super(`Connection ${id} unreachable: ${reason}`)\n this.name = 'UnreachableConnectionError'\n }\n}\n","// InjectedClientProvider — the embed-Surface implementation of\n// ConnectionProvider. The embedding host owns auth (ADR-0001 / ADR-0005): it\n// constructs and authenticates a RedClient, then hands it to the Core. The\n// Core stays agnostic — it acquires its client through the same\n// ConnectionProvider seam as the PWA/Desktop Surfaces, never knowing whether\n// the connection came from a Connect flow or from its host.\n//\n// Unlike LocalUrlProvider this is a *single-connection* provider: there is no\n// discovery, no history, no Connect flow. `list()` surfaces exactly one\n// connection and `connect()` returns the host-supplied client immediately. A\n// ping only measures RTT for the status bar — a failed probe does NOT block\n// the mount, because the host vouches for the client it injected.\n\nimport type { RedClient } from './client'\nimport {\n NotConnectedError,\n UnknownConnectionError,\n type ActiveConnection,\n type Connection,\n type ConnectionProvider,\n type Identity,\n} from './connection-provider'\n\nexport interface InjectedClientOptions {\n /** The host-supplied, already-authenticated client. */\n client: RedClient\n /** UI metadata for the single connection this provider exposes. */\n connection?: Partial<Connection>\n}\n\nexport class InjectedClientProvider implements ConnectionProvider {\n private readonly client: RedClient\n /** The sole connection this provider resolves. */\n readonly connection: Connection\n private connected = false\n\n constructor(opts: InjectedClientOptions) {\n this.client = opts.client\n this.connection = {\n id: opts.connection?.id ?? 'host',\n label: opts.connection?.label ?? 'Host connection',\n url: opts.connection?.url ?? '',\n role: opts.connection?.role ?? 'primary',\n description: opts.connection?.description ?? 'Injected by the embedding host.',\n }\n }\n\n async list(): Promise<Connection[]> {\n return [this.connection]\n }\n\n /**\n * Resolve the single host connection. Any other id throws\n * UnknownConnectionError — there is nothing else to connect to. The probe is\n * best-effort: an unreachable host still yields an ActiveConnection (rtt 0)\n * rather than rejecting, since the host owns the client's lifecycle.\n */\n async connect(id: string): Promise<ActiveConnection> {\n if (id !== this.connection.id) throw new UnknownConnectionError(id)\n let rtt_ms = 0\n try {\n const ping = await this.client.ping()\n if (ping.ok) rtt_ms = ping.rtt_ms\n } catch {\n /* host vouches for the client — surface rtt 0, don't block the mount */\n }\n this.connected = true\n return { connection: this.connection, client: this.client, rtt_ms }\n }\n\n async whoami(): Promise<Identity> {\n if (!this.connected) throw new NotConnectedError()\n const w = await this.client.whoami()\n return { authenticated: w.authenticated, username: w.username, role: w.role }\n }\n}\n","import appCss from \"../../app.css?inline\";\nimport type { Component } from \"svelte\";\nimport type { ConnectionProvider, ConsoleSink } from \"../reddb\";\nimport { devConsole } from \"../reddb/dev-console\";\nimport type { Theme } from \"../theme.svelte\";\nimport { RED_UI_VERSION, readBuildInfo } from \"../build-info\";\n\n/** Build version of the embeddable bundle, stamped at build time. */\nexport { RED_UI_VERSION, readBuildInfo };\n\ndeclare global {\n interface Window {\n __RED_UI_EMBED_SURFACE__?: boolean;\n }\n}\n\nexport {\n InjectedClientProvider,\n RedClient,\n type Connection,\n type ConnectionProvider,\n type ConsoleEntry,\n type ConsoleEntryKind,\n type ConsoleSink,\n type InjectedClientOptions,\n type RedClientOptions,\n} from \"../reddb\";\n\nexport interface RedUiEmbedOptions {\n connectionProvider: ConnectionProvider;\n initialRoute?: string;\n theme?: Theme;\n shadowRoot?: ShadowRootInit;\n /**\n * Host tap on red-ui's developer console. When set, every query/HTTP\n * round-trip the embedded Core records — verb, target, duration, row count,\n * sanitized payload — is also delivered to the host, so a host app (e.g.\n * red-request) can mirror red-ui's RQL/SQL traffic into its own developer\n * bar. Entries are already secret-redacted before they reach the sink.\n */\n consoleSink?: ConsoleSink;\n}\n\nexport interface RedUiEmbedHandle {\n host: HTMLElement;\n shadowRoot: ShadowRoot;\n portalTarget: HTMLElement;\n destroy(): void;\n}\n\nexport type RedUiElementTagName = `${string}-${string}`;\n\nconst shadowCss = `\n:host {\n display: block;\n min-height: 720px;\n color-scheme: light dark;\n contain: content;\n font-family: var(--font-sans);\n}\n\n:host,\n:host([data-theme='light']) {\n --color-bg-0: #ffffff;\n --color-bg-1: #fafafa;\n --color-bg-2: #f4f4f5;\n --color-bg-3: #e7e7ea;\n --color-fg-0: #0a0a0b;\n --color-fg-1: #3f3f46;\n --color-fg-2: #52525b;\n --color-fg-3: #71717a;\n --color-line-1: #ececef;\n --color-line-2: #d4d4d8;\n --color-line-3: #a1a1aa;\n --color-accent: #e11d48;\n --color-accent-soft: rgba(225, 29, 72, 0.10);\n --color-accent-glow: rgba(225, 29, 72, 0.30);\n --color-ok: #16a34a;\n --color-warn: #b45309;\n --color-danger: #dc2626;\n --color-info: #2563eb;\n --color-role-primary: #e11d48;\n --color-role-replica: #2563eb;\n --color-role-embedded: #16a34a;\n --color-ambient-glow: rgba(225, 29, 72, 0.04);\n --shadow-md: 0 4px 12px rgba(15, 23, 42, 0.08), 0 0 0 1px var(--color-line-2);\n --shadow-lg: 0 16px 48px rgba(15, 23, 42, 0.14), 0 0 0 1px var(--color-line-2);\n}\n\n:host([data-theme='dark']) {\n --color-bg-0: #050607;\n --color-bg-1: #0d0f13;\n --color-bg-2: #181b21;\n --color-bg-3: #232730;\n --color-fg-0: #f7f8fa;\n --color-fg-1: #c8ccd4;\n --color-fg-2: #9ca1a9;\n --color-fg-3: #7a7f87;\n --color-line-1: #181b21;\n --color-line-2: #2a2e36;\n --color-line-3: #3d424b;\n --color-accent: #ff2056;\n --color-accent-soft: rgba(255, 32, 86, 0.12);\n --color-accent-glow: rgba(255, 32, 86, 0.45);\n --color-ok: #4ade80;\n --color-warn: #fbbf24;\n --color-danger: #ff5470;\n --color-info: #60a5fa;\n --color-role-primary: #ff2056;\n --color-role-replica: #60a5fa;\n --color-role-embedded: #4ade80;\n --color-ambient-glow: rgba(255, 32, 86, 0.06);\n --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 0 1px var(--color-line-2);\n --shadow-lg: 0 16px 48px rgba(0, 0, 0, 0.6), 0 0 0 1px var(--color-line-2);\n}\n\n:host * {\n box-sizing: border-box;\n}\n\n.red-ui-shadow-mount {\n min-height: 720px;\n background: var(--color-bg-0);\n color: var(--color-fg-0);\n font-family: var(--font-sans);\n font-size: 13px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n}\n\n[data-red-ui-shadow-portal] {\n position: relative;\n z-index: 2147483647;\n}\n`;\n\nfunction markEmbedSurface() {\n if (typeof window !== \"undefined\") window.__RED_UI_EMBED_SURFACE__ = true;\n}\n\nexport async function mountRedUi(\n host: HTMLElement,\n opts: RedUiEmbedOptions\n): Promise<RedUiEmbedHandle> {\n markEmbedSurface();\n host.dataset.theme = opts.theme ?? host.dataset.theme ?? \"dark\";\n\n const shadowRoot =\n host.shadowRoot ?? host.attachShadow(opts.shadowRoot ?? { mode: \"open\" });\n shadowRoot.textContent = \"\";\n\n const style = document.createElement(\"style\");\n style.textContent = `${appCss}\\n${shadowCss}`;\n\n const mountTarget = document.createElement(\"div\");\n mountTarget.className = \"red-ui-shadow-mount\";\n\n const portalTarget = document.createElement(\"div\");\n portalTarget.setAttribute(\"data-red-ui-shadow-portal\", \"\");\n\n shadowRoot.append(style, mountTarget, portalTarget);\n\n const [{ mount, unmount }, root] = await Promise.all([\n import(\"svelte\"),\n import(\"./RedUiEmbedRoot.svelte\") as Promise<{\n default: Component<Record<string, unknown>>;\n }>,\n ]);\n\n const instance = mount(root.default, {\n target: mountTarget,\n props: {\n connectionProvider: opts.connectionProvider,\n portalTarget,\n shadowHost: host,\n initialRoute: opts.initialRoute,\n initialTheme: opts.theme,\n },\n });\n\n const removeSink = opts.consoleSink\n ? devConsole.addSink(opts.consoleSink)\n : undefined;\n\n return {\n host,\n shadowRoot,\n portalTarget,\n destroy: () => {\n removeSink?.();\n void unmount(instance);\n shadowRoot.textContent = \"\";\n },\n };\n}\n\nexport class RedUiElement extends HTMLElement {\n #connectionProvider: ConnectionProvider | null = null;\n #consoleSink: ConsoleSink | null = null;\n initialRoute: string | undefined;\n theme: Theme | undefined;\n #handle: RedUiEmbedHandle | null = null;\n #mounting: Promise<void> | null = null;\n\n /** Build version of the embedded bundle (also reflected as a `version`\n * attribute on connect, so a host can read `el.getAttribute('version')`). */\n static readonly version = RED_UI_VERSION;\n get version(): string {\n return RED_UI_VERSION;\n }\n\n get connectionProvider(): ConnectionProvider | null {\n return this.#connectionProvider;\n }\n\n set connectionProvider(provider: ConnectionProvider | null) {\n this.#connectionProvider = provider;\n if (this.isConnected) this.#mounting = this.#mount();\n }\n\n get consoleSink(): ConsoleSink | null {\n return this.#consoleSink;\n }\n\n /**\n * Host tap on the embedded Core's developer console (see\n * `RedUiEmbedOptions.consoleSink`). Setting it after mount remounts, like\n * `connectionProvider` — hosts normally assign both before attach.\n */\n set consoleSink(sink: ConsoleSink | null) {\n this.#consoleSink = sink;\n if (this.isConnected) this.#mounting = this.#mount();\n }\n\n connectedCallback() {\n if (!this.hasAttribute(\"version\"))\n this.setAttribute(\"version\", RED_UI_VERSION);\n this.#mounting ??= this.#mount();\n }\n\n disconnectedCallback() {\n this.#handle?.destroy();\n this.#handle = null;\n this.#mounting = null;\n }\n\n async #mount() {\n if (!this.#connectionProvider) return;\n this.#handle?.destroy();\n this.#handle = await mountRedUi(this, {\n connectionProvider: this.#connectionProvider,\n initialRoute: this.initialRoute,\n theme: this.theme,\n consoleSink: this.#consoleSink ?? undefined,\n });\n }\n}\n\nexport function registerRedUiElement(\n tagName: RedUiElementTagName = \"red-ui-app\"\n): typeof RedUiElement {\n markEmbedSurface();\n if (!customElements.get(tagName))\n customElements.define(tagName, RedUiElement);\n return customElements.get(tagName) as typeof RedUiElement;\n}\n"],"names":["SENSITIVE_KEY_RE","REDACTED","redactSecrets","value","depth","v","out","k","sanitizePayload","body","parsed","json","DevConsoleStore","capacity","__publicField","input","entry","sink","listener","snap","devConsole","injected","read","stripTagPrefix","readBuildInfo","RED_UI_VERSION","EMPTY_SERVER_CAPABILITIES","FEATURE_ALIASES","capabilitiesFromSignal","raw","name","key","_a","on","unsupportedCollectionMetadata","collectionMetadataSupportProbe","isUnsupportedCollectionMetadataRoute","e","isUnsupportedRoute","message","unsupportedCollectionMetadataError","baseUrl","isPermissionResource","candidate","parseNdjsonFrames","reader","decoder","buf","done","nl","line","tail","SELECT_RE","extractRowCount","data","d","errorText","m","s","runQueryPreferStream","client","sql","opts","queryOpts","row","RedClient","path","init","url","headers","verb","startedAt","start","payload","elapsed","res","rowCount","username","password","endpoint","response","session","rec","query","time","qs","end","step","vcs","clusterStatus","inFlightProbe","resolveProbe","probe","resolve","metadata","collection","doc","maxRows","errBody","frame","column","cursor","versioned","suffix","from","to","question","checks","r","check","index","result","resource","sinceLsn","events","UnknownConnectionError","id","NotConnectedError","UnreachableConnectionError","reason","InjectedClientProvider","_b","_c","_d","_e","rtt_ms","ping","w","shadowCss","markEmbedSurface","mountRedUi","host","shadowRoot","style","appCss","mountTarget","portalTarget","mount","unmount","root","n","instance","removeSink","RedUiElement","__privateAdd","_RedUiElement_instances","_connectionProvider","_consoleSink","_handle","_mounting","__privateGet","provider","__privateSet","__privateMethod","mount_fn","registerRedUiElement","tagName"],"mappings":"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"}
|