@reddb-io/ui-kit 0.3.3 → 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/package.json +11 -13
- package/src/lib/Badge.svelte +7 -27
- package/src/lib/Button.svelte +10 -33
- package/src/lib/Card.svelte +5 -20
- package/src/lib/EmptyState.svelte +5 -26
- package/src/lib/ListRow.svelte +14 -49
- package/src/lib/NodeBadge.svelte +6 -14
- package/src/lib/Pill.svelte +7 -25
- package/src/lib/SectionHeading.svelte +7 -20
- package/src/lib/index.ts +7 -18
- package/src/lib/tone.ts +11 -0
- package/src/tokens/index.ts +40 -17
- package/src/tokens/styles.css +4 -0
- package/src/tokens/tokens.css +68 -89
- 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/src/lib/Kbd.svelte +0 -8
- package/src/lib/LoadingState.svelte +0 -20
- package/src/lib/NavItem.svelte +0 -53
- package/src/lib/SplitView.svelte +0 -145
|
@@ -0,0 +1,601 @@
|
|
|
1
|
+
# Application Kit
|
|
2
|
+
|
|
3
|
+
## Task lifecycles
|
|
4
|
+
|
|
5
|
+
`TaskList` presents caller-owned tasks in caller order. Each `TaskListItem` needs
|
|
6
|
+
a stable unique `id`, `title` and `state` (`queued`, `running`, `paused`, `blocked`,
|
|
7
|
+
`succeeded`, `failed`, `cancelled`). Optional `stateLabel` localizes the status;
|
|
8
|
+
`tone` overrides its default Feedback Role. Numeric `progress` draws canonical
|
|
9
|
+
Progress, null draws indeterminate progress, and omission hides the track.
|
|
10
|
+
`worker`, `estimate`, `description` and `reason` are already formatted by the
|
|
11
|
+
application; a reason stays visible beside a blocker or failure.
|
|
12
|
+
|
|
13
|
+
`actions(item)` receives the current task and composes application-owned controls.
|
|
14
|
+
The component does not execute or schedule tasks, calculate estimates, run timers,
|
|
15
|
+
fetch data or announce every progress tick. Applications own those lifecycles and
|
|
16
|
+
may add a concise status announcement after a user action. Empty lists use
|
|
17
|
+
EmptyState (`emptyLabel`, `emptyDescription`) or a caller-supplied `empty` snippet.
|
|
18
|
+
|
|
19
|
+
The Showcase's Resource collection, Operations inbox and Project onboarding
|
|
20
|
+
examples compose these contracts into complete illustrative workflows. Selection,
|
|
21
|
+
filtering, message read/archive state, configuration drafts and retries remain
|
|
22
|
+
local to those examples, outside the distributed Kits.
|
|
23
|
+
|
|
24
|
+
SidebarRail and SidebarNavigation destinations accept `badge`, `badgeLabel`,
|
|
25
|
+
`badgeTone` and `status: { label, tone? }`. Counts and presence are independent
|
|
26
|
+
of the selected destination, share its focus target, and remain in its
|
|
27
|
+
accessible name. Numeric rail counts above 99 display `99+` while the full
|
|
28
|
+
count stays accessible. SidebarPanel accepts the same markers in its heading;
|
|
29
|
+
rich avatar rows compose Base Indicator and StatusIndicator in ListRow's slots.
|
|
30
|
+
|
|
31
|
+
The Kit every public Product Application receives (`kit.json` routes it to
|
|
32
|
+
`"*"`). It is the landing place for the Harvest: components brought in from the
|
|
33
|
+
applications, re-based on the DS Layers, and organized here
|
|
34
|
+
(`.red/contexts/component-system/CONTEXT.md`).
|
|
35
|
+
|
|
36
|
+
## What is in it
|
|
37
|
+
|
|
38
|
+
Five **Primitives**, seeded from red-ui's `ui-kit` in the first two Harvest
|
|
39
|
+
batches (issues #7 and #8):
|
|
40
|
+
|
|
41
|
+
| Component | What it is |
|
|
42
|
+
| ---------------- | ----------------------------------------------------------- |
|
|
43
|
+
| `Pill` | A round-ended token — a filter, a tag — optionally dismissible. |
|
|
44
|
+
| `ListRow` | One row of a list, rendering the element its behavior calls for. |
|
|
45
|
+
| `NavItem` | One navigation entry, which says where you are and does not only tint. |
|
|
46
|
+
| `NodeBadge` | A reddb node and whether the cluster can reach it. |
|
|
47
|
+
| `SplitView` | Two panes and a divider movable by pointer or by arrow key. |
|
|
48
|
+
|
|
49
|
+
…and **Composites** including the canonical application frame and column
|
|
50
|
+
arrangements, command surfaces, titling surfaces, refinement controls, social surfaces,
|
|
51
|
+
commerce surfaces, commerce catalogue contracts, comparison, and merchandising contracts:
|
|
52
|
+
|
|
53
|
+
| Component | What it is |
|
|
54
|
+
| -------------- | ------------------------------------------------------------- |
|
|
55
|
+
| `ContextMenu` | Pointer and keyboard context commands over canonical menu rows. |
|
|
56
|
+
| `CommandPalette` | Global caller-owned command search composing canonical Popover and Combobox focus. |
|
|
57
|
+
| `Menubar` | Top-level application commands with roving focus and menus. |
|
|
58
|
+
| `SidebarNavigation` | A vertical destination list with exactly one announced current item. |
|
|
59
|
+
| `SidebarPanel` | Contextual toolbar, heading actions, controls, scrolling links or rich rows, and an optional footer. |
|
|
60
|
+
| `SidebarRail` | A compact workspace rail of Tooltip-labelled controls with roving focus and a caller-owned selection. |
|
|
61
|
+
| `BottomNavigation` | A compact, keyboard-reachable destination bar with consumer-owned placement. |
|
|
62
|
+
| `StoreNavigation` | A store masthead composing the canonical Base Navbar around caller-owned regions. |
|
|
63
|
+
| `ApplicationShell` | Keyboard bypass, product chrome, and one focusable main landmark. |
|
|
64
|
+
| `MultiColumnLayout` | Two or three caller-owned responsive columns in stable document order. |
|
|
65
|
+
| `SidebarLayout` | A named complementary landmark beside one main landmark, on either edge. |
|
|
66
|
+
| `SpeedDial` | A canonical Button revealing related actions in a Popover. |
|
|
67
|
+
| `Toolbar` | A named row or column of controls with one roving tab stop. |
|
|
68
|
+
| `PageHeading` | The page's one `h1`, with caller-owned context and actions. |
|
|
69
|
+
| `CardHeading` | A compact canonical SectionHeading for a card header. |
|
|
70
|
+
| `ActionPanel` | A named Card pairing caller content with associated actions. |
|
|
71
|
+
| `ProductList` | A named responsive collection of canonical product cards. |
|
|
72
|
+
| `ProductOverview` | Product identity and media with caller-owned detail and purchase controls. |
|
|
73
|
+
| `ProductFeature` | A product story over canonical media, heading, and flow contracts. |
|
|
74
|
+
| `ProductQuickview` | Product detail inside the canonical Dialog focus lifecycle. |
|
|
75
|
+
| `Filter` | One named active filter composed from the canonical ToggleGroup. |
|
|
76
|
+
| `CategoryFilter` | Named multi-select categories composed from Fieldset and Checkbox. |
|
|
77
|
+
| `Diff` | Caller-computed change rows, inline or side by side in a resizable SplitView. |
|
|
78
|
+
| `CategoryPreview` | A visibly named category destination over canonical Card, AspectRatio, and Link. |
|
|
79
|
+
| `Incentive` | A named value proposition over canonical MediaObject and SectionHeading. |
|
|
80
|
+
| `ActivityFeed` | Ordered application activity composed from the canonical Timeline. |
|
|
81
|
+
| `ChatMessage` | Authored conversation composed from MediaObject and Avatar. |
|
|
82
|
+
| `Review` | A scored authored review composed from Card, MediaObject, Avatar, and Rating. |
|
|
83
|
+
| `CheckoutForm` | Caller-owned checkout groups bound through canonical Form, Fieldset, Field, and Input. |
|
|
84
|
+
| `ShoppingCart` | Native quantity and removal controls, optional caller-owned item media, and a politely announced total inside Form. |
|
|
85
|
+
| `OrderSummary` | A named Card of caller-owned amounts, total, and actions. |
|
|
86
|
+
| `OrderHistory` | A captioned, keyboard-scrollable native table of caller-owned order facts. |
|
|
87
|
+
|
|
88
|
+
The split is mechanical, not a judgement: a Primitive imports no other Kit
|
|
89
|
+
component and a Composite composes at least one, and `test/taxonomy.test.ts`
|
|
90
|
+
reads the imports and decides. It checks both directions — a component under
|
|
91
|
+
`src/primitives` that reached for another is in the wrong place, and so is one
|
|
92
|
+
under `src/composites` that composes nothing — so the directory is a claim and
|
|
93
|
+
the imports are the fact.
|
|
94
|
+
|
|
95
|
+
`SplitView` is the case worth naming on the Primitive side: it composes
|
|
96
|
+
nothing, and the module it does import is its own behavior, which is a `.ts`
|
|
97
|
+
file and not a component. Universal command menus and mastheads live in Base
|
|
98
|
+
as `DropdownMenu` and `Navbar`; this Kit receives both through its parent edge
|
|
99
|
+
without retaining same-named local sources, exports, or catalogue entries.
|
|
100
|
+
|
|
101
|
+
Loading feedback is universal rather than application-directional. The former
|
|
102
|
+
`LoadingState` contract now lives canonically in Base as `LoadingIndicator`,
|
|
103
|
+
which this Kit receives through its parent edge without shadowing the name or
|
|
104
|
+
behavior locally.
|
|
105
|
+
|
|
106
|
+
The generic zero-data surface follows the same boundary. `EmptyState` now
|
|
107
|
+
lives canonically in Base, and Application receives it through inheritance
|
|
108
|
+
without retaining a local source, export, or catalogue entry.
|
|
109
|
+
|
|
110
|
+
## How a component is built
|
|
111
|
+
|
|
112
|
+
shadcn-svelte's split, in two files per component:
|
|
113
|
+
|
|
114
|
+
- `<name>.variants.ts` — one `tv()` call holding every class the component can
|
|
115
|
+
wear, exported so a consumer can put the look on its own element without
|
|
116
|
+
forking the component.
|
|
117
|
+
- `<Name>.svelte` — the element and its behavior, with `{...rest}` passing the
|
|
118
|
+
platform straight through. No `<style>` block: a scoped stylesheet is a
|
|
119
|
+
second styling source the Themes cannot reach.
|
|
120
|
+
|
|
121
|
+
A third file appears when a component's behavior is arithmetic rather than
|
|
122
|
+
markup — `<name>.behavior.ts`, as `SplitView` and the command surfaces have.
|
|
123
|
+
Everything that can be decided without a DOM lives there and is tested without
|
|
124
|
+
one; the component keeps only the parts that need an element. The module is
|
|
125
|
+
exported too, so an application building a splitter of its own gets the same
|
|
126
|
+
clamping instead of writing the edges again.
|
|
127
|
+
|
|
128
|
+
## How behavior enters
|
|
129
|
+
|
|
130
|
+
Managed focus is not something a Kit should write twice, so it does not write
|
|
131
|
+
it at all: **Bits UI** is the Composites' behavior base (ADR 0005) — the
|
|
132
|
+
headless Svelte 5 layer shadcn-svelte itself builds on. It brings the roving
|
|
133
|
+
tab stop, the wrapping arrows, typeahead, Escape, Tab-out, the ARIA roles and
|
|
134
|
+
the positioning; the DS brings the appearance, through the same `tv()` call
|
|
135
|
+
over the same Theme utilities and Density roles a Primitive uses.
|
|
136
|
+
|
|
137
|
+
The seam between the two halves is Bits' `child` snippet, which hands back the
|
|
138
|
+
props for an element and lets this Kit render it:
|
|
139
|
+
|
|
140
|
+
```svelte
|
|
141
|
+
<Bits.Trigger>
|
|
142
|
+
{#snippet child({ props })}
|
|
143
|
+
<Button {...props} {variant} {size}>{label}</Button>
|
|
144
|
+
{/snippet}
|
|
145
|
+
</Bits.Trigger>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
That is the whole recipe, and it is worth being precise about what it buys. The
|
|
149
|
+
classes land on the real `role="menu"` surface and the real `role="menuitem"`
|
|
150
|
+
rows rather than on a wrapper around them; the trigger is the Kit's own
|
|
151
|
+
`Button` component rather than a copy of its classes; and where Bits' own
|
|
152
|
+
output is wrong for the pattern — its menu separator and its group heading both
|
|
153
|
+
carry the run's own `role="group"` — this Kit writes the right role after the
|
|
154
|
+
spread, because what an application receives is this layer and not Bits'.
|
|
155
|
+
|
|
156
|
+
daisyUI was evaluated and deliberately stays out (ADR 0005): it is appearance
|
|
157
|
+
only, so it cannot answer the Composite problem, and as a second styling
|
|
158
|
+
vocabulary it is the split-brain the anti-hardcode lint exists to prevent. What
|
|
159
|
+
it contributes instead is the bar — a Composite's API has to feel as
|
|
160
|
+
ready-to-use as daisyUI's, with good defaults and one obvious way. The
|
|
161
|
+
canonical Base `DropdownMenu` and `Navbar` meet that bar once for every child
|
|
162
|
+
Kit; Application specializations compose them explicitly when needed, as
|
|
163
|
+
`StoreNavigation` does with `Navbar`.
|
|
164
|
+
|
|
165
|
+
The three directional navigation surfaces share one item contract and require
|
|
166
|
+
`currentId` to identify exactly one destination. `SidebarNavigation` and
|
|
167
|
+
`BottomNavigation` render the existing `NavItem`, so native links, disabled
|
|
168
|
+
state, focus rings, and `aria-current` remain one contract. `StoreNavigation`
|
|
169
|
+
composes the canonical Base `Navbar`; its optional announcement, brand, and
|
|
170
|
+
actions are snippets so promotion language and commerce behavior stay in the
|
|
171
|
+
consumer. Bottom placement likewise remains consumer-owned rather than fixing
|
|
172
|
+
the component to a page arrangement.
|
|
173
|
+
|
|
174
|
+
The three application layouts stay on the same side of that boundary. The
|
|
175
|
+
shell composes Base `SkipLink`, `Container`, and `Stack`; the two column
|
|
176
|
+
arrangements compose Base `Stack` for their internal rhythm. They decide only
|
|
177
|
+
the reusable frame, responsive columns, landmarks, and focus order. Navigation
|
|
178
|
+
trees, page headings, filters, inspector panels, and all business content stay
|
|
179
|
+
in the snippets a Product Application supplies. Every inset and gap remains a
|
|
180
|
+
Density role, and none of the layouts selects Theme, Color Scheme, or Density
|
|
181
|
+
for the content nested inside it.
|
|
182
|
+
|
|
183
|
+
The titling surfaces keep outline semantics separate from page arrangement.
|
|
184
|
+
`PageHeading` always contributes the page's single `h1`; context, supporting
|
|
185
|
+
copy, and canonical action controls remain caller-owned. `CardHeading` composes
|
|
186
|
+
Base `SectionHeading`, so its visual size stays independent from the explicit
|
|
187
|
+
`h2`–`h6` depth chosen by the consumer. `ActionPanel` composes Base `Card` and
|
|
188
|
+
`SectionHeading` into a named region with one body and one footer action
|
|
189
|
+
cluster. None owns a page layout, form schema, or business sentence.
|
|
190
|
+
|
|
191
|
+
The commerce catalogue surfaces follow that same boundary. `ProductList`
|
|
192
|
+
composes Base `GridList` and `Card` into a required named collection;
|
|
193
|
+
`ProductOverview` and `ProductFeature` compose the canonical heading, media,
|
|
194
|
+
and flow contracts while accepting all product language and imagery from the
|
|
195
|
+
consumer. `ProductQuickview` delegates modal labeling, focus containment,
|
|
196
|
+
Escape dismissal, and focus return to Base `Dialog`. None selects a Theme,
|
|
197
|
+
Color Scheme, or Density, and none decides the page around it.
|
|
198
|
+
|
|
199
|
+
```svelte
|
|
200
|
+
<PageHeading title="Deployments" description="Manage releases.">
|
|
201
|
+
{#snippet actions()}<Button>New deployment</Button>{/snippet}
|
|
202
|
+
</PageHeading>
|
|
203
|
+
|
|
204
|
+
<ActionPanel title="Production deployment">
|
|
205
|
+
<DeploymentFields />
|
|
206
|
+
{#snippet actions()}<Button>Save</Button>{/snippet}
|
|
207
|
+
</ActionPanel>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
The refinement surfaces likewise keep query behavior and result arrangement
|
|
211
|
+
local. `Filter` composes Base `ToggleGroup`, so one active option, roving arrow
|
|
212
|
+
focus, `aria-pressed`, and optional native submission remain the canonical
|
|
213
|
+
contract. `CategoryFilter` composes Base `Fieldset` and `Checkbox`, so every
|
|
214
|
+
active category is independently announced and keyboard reachable. Consumers
|
|
215
|
+
own the option labels, selected values, and what changing those values does;
|
|
216
|
+
neither surface selects Theme, Color Scheme, or Density.
|
|
217
|
+
|
|
218
|
+
```svelte
|
|
219
|
+
<Filter legend="Availability" {filters} bind:value={availability} />
|
|
220
|
+
<CategoryFilter legend="Categories" {categories} bind:values={selectedCategories} />
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
`Diff` presents caller-computed comparison rows without taking ownership of
|
|
224
|
+
source parsing or business content. Its default inline mode keeps changes in
|
|
225
|
+
one reading order; `mode="side-by-side"` aligns the same rows in the canonical
|
|
226
|
+
keyboard-resizable `SplitView`. Removal and addition feedback uses the Theme's
|
|
227
|
+
danger and success roles, while visible `−` and `+` markers and announced
|
|
228
|
+
change labels preserve the meaning without colour. All row insets and gaps
|
|
229
|
+
remain live Density roles, and the component selects none of the appearance
|
|
230
|
+
axes around its content.
|
|
231
|
+
|
|
232
|
+
```svelte
|
|
233
|
+
<Diff
|
|
234
|
+
label="Deployment changes"
|
|
235
|
+
rows={[
|
|
236
|
+
{ before: "replicas = 2", after: "replicas = 3" },
|
|
237
|
+
{ after: "health_check = true" },
|
|
238
|
+
]}
|
|
239
|
+
mode="side-by-side"
|
|
240
|
+
/>
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
The three social surfaces keep chronology, identity, and score semantics in
|
|
244
|
+
their existing canonical contracts. `ActivityFeed` delegates its ordered list,
|
|
245
|
+
machine-readable time, and optional links to Base `Timeline`. `ChatMessage`
|
|
246
|
+
composes Base `MediaObject` and `Avatar` around caller-owned message content.
|
|
247
|
+
`Review` adds Base `Card` and a disabled Base `Rating`, whose native selected
|
|
248
|
+
value, visible filled and empty symbols, and numeric output make the score
|
|
249
|
+
perceivable without colour. Authors, timestamps, message and review copy,
|
|
250
|
+
actions, destinations, and the arrangement of the surrounding page all remain
|
|
251
|
+
consumer-owned.
|
|
252
|
+
|
|
253
|
+
The commerce surfaces own reusable relationships, never a checkout page.
|
|
254
|
+
`CheckoutForm` binds caller-owned field definitions to Base `Form`, `Fieldset`,
|
|
255
|
+
`Field`, and `Input`, so native submission and complete error associations stay
|
|
256
|
+
canonical. `ShoppingCart` uses the same native submission boundary for named
|
|
257
|
+
quantity controls and keeps its total in one polite atomic live region.
|
|
258
|
+
`OrderSummary` composes `Card`, `SectionHeading`, and `DescriptionList`, while
|
|
259
|
+
`OrderHistory` composes `SectionHeading` and `Table` for caption, header scope,
|
|
260
|
+
machine-readable dates, and keyboard-reachable overflow. Product names, money
|
|
261
|
+
formatting, field vocabulary, actions, validation policy, persistence, and page
|
|
262
|
+
arrangement all remain consumer-owned.
|
|
263
|
+
|
|
264
|
+
The merchandising surfaces keep the same boundary. `CategoryPreview` composes
|
|
265
|
+
Base `Card`, `AspectRatio`, and `Link`, so its destination is visibly named and
|
|
266
|
+
keyboard reachable while imagery, category language, and surrounding collection
|
|
267
|
+
remain caller-owned. `Incentive` composes `MediaObject` and `SectionHeading` into
|
|
268
|
+
a named value proposition; its artwork, copy, actions, and page placement stay
|
|
269
|
+
local to the Product Application. Both inherit every appearance axis and route
|
|
270
|
+
their rhythm through Density roles.
|
|
271
|
+
|
|
272
|
+
```svelte
|
|
273
|
+
<CheckoutForm {sections} submitLabel="Place order" aria-label="Checkout" />
|
|
274
|
+
<ShoppingCart title="Shopping cart" {items} totalLabel="Total" {total} />
|
|
275
|
+
<OrderSummary title="Order summary" {lines} totalLabel="Total" {total} />
|
|
276
|
+
<OrderHistory title="Order history" caption="Past orders" {orders} />
|
|
277
|
+
<CategoryPreview name="Desks" href="/categories/desks" media={categoryMedia} />
|
|
278
|
+
<Incentive title="Complimentary delivery" description="Orders over $50 ship free." icon={deliveryIcon} />
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## What a page pays for
|
|
282
|
+
|
|
283
|
+
Only what it imports. Bits hydrates where it is imported and nowhere else, and
|
|
284
|
+
the Kit's barrel is named exports over side-effect-free modules — which is what
|
|
285
|
+
`"sideEffects": false` in `package.json` tells a bundler, and without which
|
|
286
|
+
every Primitive in the barrel survives into every bundle that touches one.
|
|
287
|
+
|
|
288
|
+
`test/tree-shaking.test.ts` is that claim as a measurement rather than a
|
|
289
|
+
promise: it puts two entry files through a real production build — one
|
|
290
|
+
importing the inherited Base `DropdownMenu`, one importing the inherited Base
|
|
291
|
+
`Button` — and reads the output. The menu's bundle carries the canonical
|
|
292
|
+
Composite, its Button, and Bits' menu, without pulling in Application
|
|
293
|
+
components or unrelated Bits primitives; Button's bundle carries no behavior
|
|
294
|
+
base at all.
|
|
295
|
+
|
|
296
|
+
## How it stays on-Brand
|
|
297
|
+
|
|
298
|
+
The Kit names colours and radii — `bg-primary`, `rounded-lg` — and never values.
|
|
299
|
+
Those utilities come from the Theme Layer's `@theme` surface and resolve to
|
|
300
|
+
`--reddb-*` custom properties, which is what lets one component render under
|
|
301
|
+
any Theme without knowing Themes exist.
|
|
302
|
+
|
|
303
|
+
`pnpm --filter kit-app lint` enforces it, over Composites exactly as
|
|
304
|
+
over Primitives — a Composite's appearance comes from the same `tv()` call over
|
|
305
|
+
the same utilities, so there is nothing new to lint and nothing new to learn.
|
|
306
|
+
The rule itself lives in `@reddb-io/kit-lint`, shared with the Base Kit since
|
|
307
|
+
its first component arrived (issue #47): what is this Kit's own is
|
|
308
|
+
`tools/lint-cli.ts` and the files it hands over.
|
|
309
|
+
The vocabulary it checks against is read from the generated artifacts, not
|
|
310
|
+
restated: a colour must be one the **Color Schemes declare**, not merely one the
|
|
311
|
+
Tokens Layer ships. The
|
|
312
|
+
difference matters — `bg-neutral-900` resolves through a real token and is
|
|
313
|
+
still wrong here, because no Color Scheme reassigns it, so a component wearing
|
|
314
|
+
it would ignore contrast changes. The showcase's per-component routes
|
|
315
|
+
are where you see that hold.
|
|
316
|
+
|
|
317
|
+
## How it answers to Density
|
|
318
|
+
|
|
319
|
+
Spatial values — control heights, insets, gaps — are named the same way, as
|
|
320
|
+
roles of the Density axis rather than as Tailwind steps: `h-8` compiles to a
|
|
321
|
+
fixed length, so a Kit written in steps is frozen against a density stop exactly
|
|
322
|
+
as a Kit written in hex would be frozen against a Theme. What a component wears
|
|
323
|
+
instead is a reference to the role:
|
|
324
|
+
|
|
325
|
+
```
|
|
326
|
+
h-[var(--reddb-spatial-control-height-md)] px-[var(--reddb-spatial-inset-md)]
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
A stop reassigns those roles onto steps of the Brand's spacing scale (ADR 0003),
|
|
330
|
+
so the same component renders denser inside a `data-density="compact"` subtree
|
|
331
|
+
without knowing the axis exists. The neutral stop anchors every role at the step
|
|
332
|
+
the Kit already shipped, so adopting the axis moved nothing on screen.
|
|
333
|
+
|
|
334
|
+
Three things stay on Tailwind's own steps, and each is a decision rather than an
|
|
335
|
+
omission. **Type, radius and icon scale**, because density shrinks components,
|
|
336
|
+
not legibility — a `Kbd` cap is sized to the sentence it sits in, and a spinner
|
|
337
|
+
keeps the scale of the label beside it. **A width**, such as `SplitView`'s
|
|
338
|
+
divider, because the Brand ships no token family for widths at all. And **a
|
|
339
|
+
value the axis has no role at**: the axis ships three steps each of height,
|
|
340
|
+
inset and gap, and a Kit value that falls between them is left where it is
|
|
341
|
+
rather than pushed onto the nearest, which would move what the neutral renders.
|
|
342
|
+
|
|
343
|
+
The same `lint` enforces this half too. A spatial position the axis owns —
|
|
344
|
+
`h-*`/`min-h-*`/`max-h-*`, any padding, any gap — must name a role, and the lint
|
|
345
|
+
knows which steps are owned by reading where each role anchors under the neutral
|
|
346
|
+
stop: `h-8` compiles to 2rem, which is what `control-height-md` renders at,
|
|
347
|
+
so it is a violation, while `pt-1` is the same 0.25rem as `gap-sm` in a position
|
|
348
|
+
the axis ships no inset for and is left alone. An arbitrary value in one of
|
|
349
|
+
those positions holds a `--reddb-spatial-*` role or nothing: a raw length is the
|
|
350
|
+
same freeze spelled out, and `[var(--reddb-spacing-6)]` is a real token that no
|
|
351
|
+
stop reassigns. `test/fixtures/raw-spatial.variants.ts` is a component written
|
|
352
|
+
all four wrong ways, kept committed so the rule is known to fail; between it and
|
|
353
|
+
`test/density.test.ts`, where every routed value is pinned, a step the axis owns
|
|
354
|
+
cannot quietly come back.
|
|
355
|
+
|
|
356
|
+
## Consuming it
|
|
357
|
+
|
|
358
|
+
A Product Application receives this directory as vendorable Svelte 5 source via
|
|
359
|
+
`ds-sync` at a pinned DS release (ADR 0002), inside the one package the Sync
|
|
360
|
+
assembles, where this Kit is the `./app` subpath (ADR 0006):
|
|
361
|
+
|
|
362
|
+
```svelte
|
|
363
|
+
<script lang="ts">
|
|
364
|
+
import { Button, DropdownMenu, Kbd } from "@reddb-io/design-system/base";
|
|
365
|
+
</script>
|
|
366
|
+
|
|
367
|
+
<Button variant="secondary" size="sm">Search <Kbd keys={["Ctrl", "K"]} /></Button>
|
|
368
|
+
|
|
369
|
+
<DropdownMenu
|
|
370
|
+
triggerLabel="Account"
|
|
371
|
+
contentLabel="Account actions"
|
|
372
|
+
items={[
|
|
373
|
+
{ id: "profile", label: "Profile", onselect: openProfile },
|
|
374
|
+
{ id: "settings", label: "Settings", href: "/settings" },
|
|
375
|
+
{ heading: "Workspace", items: [{ id: "members", label: "Members", onselect: openMembers }] },
|
|
376
|
+
]}
|
|
377
|
+
/>
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
…and the whole masthead, with the Logo the Base Kit routed to the same
|
|
381
|
+
consumer (ADR 0004) in the region that exists for it:
|
|
382
|
+
|
|
383
|
+
```svelte
|
|
384
|
+
<script lang="ts">
|
|
385
|
+
import { DropdownMenu, Logo, Navbar } from "@reddb-io/design-system/base";
|
|
386
|
+
</script>
|
|
387
|
+
|
|
388
|
+
<Navbar
|
|
389
|
+
align="center"
|
|
390
|
+
links={[
|
|
391
|
+
{ id: "nodes", label: "Nodes", href: "/nodes", active: true },
|
|
392
|
+
{ id: "queries", label: "Queries", href: "/queries" },
|
|
393
|
+
]}
|
|
394
|
+
>
|
|
395
|
+
{#snippet brand()}<Logo href="/" />{/snippet}
|
|
396
|
+
{#snippet actions()}
|
|
397
|
+
<DropdownMenu triggerLabel="Account" contentLabel="Account actions" items={accountItems} />
|
|
398
|
+
{/snippet}
|
|
399
|
+
</Navbar>
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
The application shell owns one brand mark even when several of its regions
|
|
403
|
+
offer a brand slot. Resolve that ownership once, at the composition level:
|
|
404
|
+
|
|
405
|
+
```svelte
|
|
406
|
+
<script lang="ts">
|
|
407
|
+
import { shellBrandRegion } from "@reddb-io/design-system/app";
|
|
408
|
+
|
|
409
|
+
const brandRegion = shellBrandRegion({ navbar: true, rail: true });
|
|
410
|
+
</script>
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
The precedence is **Navbar brand region → SidebarRail top region → sidebar
|
|
414
|
+
panel header**. Render the shared brand snippet only when a region matches the
|
|
415
|
+
resolver's result; do not pass the same mark independently to every available
|
|
416
|
+
slot. This keeps the composition configurable while guaranteeing one brand
|
|
417
|
+
mark. Omitting `navbar` selects the rail, and omitting both selects the panel
|
|
418
|
+
header.
|
|
419
|
+
|
|
420
|
+
The application frame and a sidebar arrangement use the same public subpath.
|
|
421
|
+
Each owns a main landmark, so they are alternative page frames rather than
|
|
422
|
+
landmarks to nest inside one another:
|
|
423
|
+
|
|
424
|
+
```svelte
|
|
425
|
+
<script lang="ts">
|
|
426
|
+
import { ApplicationShell, SidebarLayout } from "@reddb-io/design-system/app";
|
|
427
|
+
</script>
|
|
428
|
+
|
|
429
|
+
<ApplicationShell>
|
|
430
|
+
{#snippet header()}Product navigation{/snippet}
|
|
431
|
+
{#snippet children()}Page content{/snippet}
|
|
432
|
+
</ApplicationShell>
|
|
433
|
+
|
|
434
|
+
<SidebarLayout sidebarLabel="Workspace navigation">
|
|
435
|
+
{#snippet sidebar()}Navigation{/snippet}
|
|
436
|
+
{#snippet children()}Workspace content{/snippet}
|
|
437
|
+
</SidebarLayout>
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
What lands is installable as it arrives: this Kit's own `package.json` does not
|
|
441
|
+
travel — out there the Kit is a subpath, not a package — and `ds-sync` folds
|
|
442
|
+
its runtime contract into the one manifest it assembles for the package, with
|
|
443
|
+
no workspace refs and none of the DS-internal scripts below
|
|
444
|
+
(`scripts/producer/README.md`). That contract has two entries:
|
|
445
|
+
`tailwind-variants` for the appearance and `bits-ui` for the Composites'
|
|
446
|
+
behavior, both published ranges a consumer's own install resolves. The Kit's
|
|
447
|
+
`tsconfig.json` does travel, with its `extends` chain inlined, so it reaches for
|
|
448
|
+
nothing outside the consumer tree.
|
|
449
|
+
|
|
450
|
+
Tailwind must be told to scan the vendored Kit, since it lives outside the
|
|
451
|
+
consumer's own source tree — see `apps/showcase/src/app.css` for the
|
|
452
|
+
`@source` line the showcase uses.
|
|
453
|
+
|
|
454
|
+
The same file shows the stylesheets an application has to link. One of them is
|
|
455
|
+
newly load-bearing: **a density stop artifact must be linked**, or the roles the
|
|
456
|
+
Kit's spatial classes name resolve to nothing, the declarations are dropped, and
|
|
457
|
+
every control loses its height and inset. Linking
|
|
458
|
+
`@reddb-io/tokens/density-comfortable.css` alone is enough and changes nothing —
|
|
459
|
+
it is the neutral, declared at `:where(:root)`, which is what the Kit already
|
|
460
|
+
rendered at. Link the other two as well to let the application switch stops, and
|
|
461
|
+
declare the one it runs at in `data-density` on the root.
|
|
462
|
+
|
|
463
|
+
Because the Kit ships as source, the compiler that judges it is the consumer's.
|
|
464
|
+
`tsconfig.consumer.json` is that compiler's settings — strict, with no DS base
|
|
465
|
+
config behind it — and the `check` command runs the consumer's own
|
|
466
|
+
`svelte-check` against it over `src`. A component can compile, mount and pass
|
|
467
|
+
every test here while failing the first `svelte-check` it meets in an
|
|
468
|
+
application; this is what closes that gap (issue #50), and
|
|
469
|
+
`test/consumer-check.test.ts` runs it on every `test` so it cannot reopen.
|
|
470
|
+
|
|
471
|
+
## Commands
|
|
472
|
+
|
|
473
|
+
```
|
|
474
|
+
pnpm --filter kit-app test # component tests, the Taxonomy and tree-shaking tests, the check's own tests
|
|
475
|
+
pnpm --filter kit-app check # consumer svelte-check over the Kit's source, strict tsconfig
|
|
476
|
+
pnpm --filter kit-app lint # anti-hardcode lint over the Kit's source: colour, radius, spatial
|
|
477
|
+
pnpm --filter kit-app build # stage the vendorable source into dist/ for the release bundle
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
## Contextual sidebar panels
|
|
481
|
+
|
|
482
|
+
SidebarPanel owns the rhythm of a contextual toolbar, title with `actions`,
|
|
483
|
+
`controls` such as search and filters, a named native scrolling body and optional
|
|
484
|
+
`footer`. Its children may be SidebarNavigation links or grouped ListRows with
|
|
485
|
+
Avatar leading content, supporting text, timestamps and counts. Use SectionHeading
|
|
486
|
+
for labelled groups and native Buttons or DropdownMenu for panel actions.
|
|
487
|
+
|
|
488
|
+
`backHref` and `ondismiss` are opt-in. Supplying `toolbar` replaces the complete
|
|
489
|
+
contextual row, so custom actions never duplicate built-in Back or Close controls.
|
|
490
|
+
SidebarNavigation also accepts a toolbar for a simpler destination-only panel.
|
|
491
|
+
The `/kit/sidebar-panel` specimen exercises both forms and a rich grouped list.
|
|
492
|
+
|
|
493
|
+
SidebarRail keeps its compact icon column free of native scrollbars; wheel, touch
|
|
494
|
+
and roving keyboard focus continue to scroll its collection. Content panels keep
|
|
495
|
+
their ordinary native scrollbar. This prevents a narrow horizontal scrollbar
|
|
496
|
+
from appearing when the vertical rail overflows.
|
|
497
|
+
|
|
498
|
+
### Rail groups and visible labels
|
|
499
|
+
|
|
500
|
+
`SidebarRail showLabels` places each destination label below its icon or
|
|
501
|
+
initials. An item with `separatorBefore: true` begins a new group with a
|
|
502
|
+
Divider, without adding a tab stop. Notification counts and presence remain
|
|
503
|
+
independent of selection. SidebarLayout follows the supplied rail width,
|
|
504
|
+
including label presentation and Density changes, without a second size prop.
|
|
505
|
+
|
|
506
|
+
### Coordinated primary navigation
|
|
507
|
+
|
|
508
|
+
`SidebarLayout` can own the application navigation frame from one primary item list:
|
|
509
|
+
|
|
510
|
+
```svelte
|
|
511
|
+
<SidebarLayout navigation={sections} currentId={currentSection} dockable>
|
|
512
|
+
{#snippet header()}
|
|
513
|
+
<Navbar links={products} {brand} {actions} />
|
|
514
|
+
{/snippet}
|
|
515
|
+
{#snippet sidebar({ item, close })}
|
|
516
|
+
<!-- Render this section's menu; its native links dismiss the mobile drawer. -->
|
|
517
|
+
{/snippet}
|
|
518
|
+
<!-- Current page -->
|
|
519
|
+
</SidebarLayout>
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
The Navbar's global product links collapse into its menu at the top. The primary rail becomes a bottom dock on mobile, with up to five entries and automatic More overflow. `href` items navigate; items without `href` open a contextual sidebar. Opening a menu does not change `currentId`; the application updates that when the route changes. `dockable={false}` keeps the primary rail vertical. The docking configuration belongs to the layout so the header, rail, drawer and content spacing stay coordinated.
|
|
523
|
+
|
|
524
|
+
Use the existing `rail` snippet for organization/workspace switchers. Those keep their existing presentation rather than automatically becoming page navigation. See `/examples/responsive-navigation` for the complete composition and append `?dock=false` to review the opt-out.
|
|
525
|
+
|
|
526
|
+
## Compact operational components
|
|
527
|
+
|
|
528
|
+
`TaskCard` accepts a shared `TaskListItem` and optional caller actions. TaskList
|
|
529
|
+
composes the same content. `TelemetryRow` separates the resource measurement from
|
|
530
|
+
operational status and an independent condition. `PropertyPanel` displays named
|
|
531
|
+
read-only properties with optional header actions.
|
|
532
|
+
|
|
533
|
+
`PhaseSummary` takes explicit named gates (`pending`, `running`, `passed`,
|
|
534
|
+
`failed`); neither 100% progress nor delivery count approves a result.
|
|
535
|
+
`PlaybackControls` reports play, seek, speed and step requests. Its `playing`,
|
|
536
|
+
`position`, `duration` and `speed` are caller-owned: no clock or scheduling
|
|
537
|
+
runs in the component. Missing callbacks disable the corresponding controls.
|
|
538
|
+
|
|
539
|
+
All visual recipes and portable contracts are shared by the native Svelte and
|
|
540
|
+
React adapters. The four `/examples/labs-*` references compose these capabilities
|
|
541
|
+
with Data visualizations; App itself imports no Data components.
|
|
542
|
+
|
|
543
|
+
### SettingsRow: field names and actions
|
|
544
|
+
|
|
545
|
+
SettingsRow places a setting name and description beside a native control or
|
|
546
|
+
independently named actions. `children` receives the field's native id,
|
|
547
|
+
requirement and help/error association. Help is rendered outside the label.
|
|
548
|
+
`actions` receives no naming overrides: an Install app action keeps that name
|
|
549
|
+
instead of inheriting the setting title. A self-labelled Switch also fits here.
|
|
550
|
+
Both flavors share the same association logic and Density-responsive recipe.
|
|
551
|
+
|
|
552
|
+
```svelte
|
|
553
|
+
<SettingsRow label="Signing secret" description="Use at least 16 characters.">
|
|
554
|
+
{#snippet children(control)}<Input {...control} type="password" />{/snippet}
|
|
555
|
+
</SettingsRow>
|
|
556
|
+
<SettingsRow label="HTTPS and mobile access" description="Connect another device.">
|
|
557
|
+
{#snippet actions()}<Button onclick={configureHttps}>Configure HTTPS</Button>{/snippet}
|
|
558
|
+
</SettingsRow>
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
```tsx
|
|
562
|
+
<SettingsRow label="Signing secret" description="Use at least 16 characters.">
|
|
563
|
+
{control => <Input {...control} type="password" />}
|
|
564
|
+
</SettingsRow>
|
|
565
|
+
<SettingsRow label="HTTPS and mobile access" description="Connect another device."
|
|
566
|
+
actions={<Button onClick={configureHttps}>Configure HTTPS</Button>} />
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
`/examples/settings-composition` exercises full native React and Svelte panels,
|
|
570
|
+
including saved API values, async save rejection/retry, named scroll regions and
|
|
571
|
+
Escape/focus restoration across nested menus and dialogs. Layout constraints
|
|
572
|
+
remain owned by the Product Surface. Do not loosen accessible-name assertions
|
|
573
|
+
to hide a naming regression.
|
|
574
|
+
|
|
575
|
+
## Linked entity inspection
|
|
576
|
+
|
|
577
|
+
`EntityInspector` composes a named detail region with previous/next navigation,
|
|
578
|
+
a position readout, optional context, heading and dismissal. Supply `items` in
|
|
579
|
+
navigation order, the caller-controlled `selected` id, and `onselectedchange`.
|
|
580
|
+
Unknown or removed selections show `emptyLabel` and suppress stale details.
|
|
581
|
+
Navigation stops at collection boundaries. Omitting `ondismiss` removes Close;
|
|
582
|
+
the component installs no global keyboard handlers and never steals focus.
|
|
583
|
+
Applications own selection restoration and return focus when embedding it in
|
|
584
|
+
an overlay. Localize `previousLabel`, `nextLabel`, `closeLabel` and `emptyLabel`.
|
|
585
|
+
|
|
586
|
+
Project caller-owned details through `children` and optional `actions` (Svelte
|
|
587
|
+
snippets or React content). Compose `TaskList` or `PropertyPanel` for details;
|
|
588
|
+
keep scheduling and domain logic in the application. Shared ids coordinate this
|
|
589
|
+
panel with Data views, as shown in `/examples/operational-planning`.
|
|
590
|
+
|
|
591
|
+
### Entity journey
|
|
592
|
+
|
|
593
|
+
`EntityJourney` shows an ordered operational trail with caller-observed `state`
|
|
594
|
+
(`complete`, `current`, `upcoming`, `blocked`, `failed`, `skipped`), optional
|
|
595
|
+
`description` and caller-formatted `elapsed`. Set `stateLabel` for localized copy.
|
|
596
|
+
`selected` and `onselectedchange` inspect a stage without changing its execution
|
|
597
|
+
state. Without a callback the trail is read-only. It wraps by its own container;
|
|
598
|
+
long labels stay readable and interactive stages keep native button semantics.
|
|
599
|
+
|
|
600
|
+
Use the same ids with `EntityInspector` and `SceneViewport` annotations. See
|
|
601
|
+
`/examples/entity-follow` for the linked APM composition in both native flavors.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "kit-lint rule 8 (wave 6A): interactive elements that draw their own states instead of the quietControl() contract, each with the reason it is not a quiet control. An entry that matches nothing fails as stale.",
|
|
3
|
+
"allow": [
|
|
4
|
+
{
|
|
5
|
+
"file": "src/composites/ContextMenu.svelte",
|
|
6
|
+
"element": "a",
|
|
7
|
+
"reason": "A menu option: Bits moves data-highlighted with the pointer and the keyboard, so the listbox highlight (bg-foreground/10) is its hover and its focus at once (DESIGN.md, options in a listbox). A separate :hover fill would show two highlighted rows."
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"file": "src/composites/Menubar.svelte",
|
|
11
|
+
"element": "a",
|
|
12
|
+
"reason": "A menu option: Bits moves data-highlighted with the pointer and the keyboard, so the listbox highlight is its hover and its focus at once (DESIGN.md, options in a listbox)."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"file": "src/composites/SidebarLayout.svelte",
|
|
16
|
+
"element": "button",
|
|
17
|
+
"reason": "The drawer backdrop is the scrim over the whole page below the md step: pressing anywhere outside the drawer closes it. It is not a control a pointer aims at, and a quiet fill across the viewport on hover would read as a flash, not a state."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"file": "react/src/MenuRows.tsx",
|
|
21
|
+
"element": "Bits.Item",
|
|
22
|
+
"reason": "A managed menu option: Base UI supplies data-highlighted for keyboard and pointer feedback through the same canonical menu recipe as the Svelte adapter."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"file": "react/src/MenuRows.tsx",
|
|
26
|
+
"element": "a",
|
|
27
|
+
"reason": "A native link inside a managed menu option; the menu highlight owns pointer and keyboard feedback rather than a second hover row."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"file": "react/src/SidebarLayout.tsx",
|
|
31
|
+
"element": "button",
|
|
32
|
+
"reason": "The mobile drawer backdrop is the viewport scrim, matching the Svelte adapter. Hovering the whole page must not paint a quiet-control fill."
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|