@reddb-io/ui-kit 0.3.4 → 0.3.6
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,381 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one test file in this Kit that runs outside a document.
|
|
3
|
+
*
|
|
4
|
+
* Every other file here mounts a component, so the suite's environment is
|
|
5
|
+
* jsdom; this one runs a production build, and esbuild refuses to start under
|
|
6
|
+
* jsdom's `TextEncoder` — correctly, since a bundler has no business inside a
|
|
7
|
+
* fake browser. What is under test is the output of a build, not the behavior
|
|
8
|
+
* of a component, so node is the honest environment for it.
|
|
9
|
+
*
|
|
10
|
+
* @vitest-environment node
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
// What a bundler keeps, read off a real build.
|
|
14
|
+
//
|
|
15
|
+
// Issue #48's second acceptance criterion, and a promise ADR 0005 made when it
|
|
16
|
+
// took Bits UI as the Composites' behavior base: "per-primitive importable so
|
|
17
|
+
// tree-shaking keeps only what a page uses". A promise like that is untestable
|
|
18
|
+
// by inspection — every module here looks importable — so this file makes it a
|
|
19
|
+
// measurement instead: two entry files, each importing one component through
|
|
20
|
+
// a real package subpath, are put through Vite's real production build, and
|
|
21
|
+
// what is asserted is the text of the output.
|
|
22
|
+
//
|
|
23
|
+
// Two directions, because either alone would be easy to satisfy by accident:
|
|
24
|
+
//
|
|
25
|
+
// the menu's bundle must carry the inherited Base Composite, the Button it
|
|
26
|
+
// composes, and the one Bits primitive it uses — and
|
|
27
|
+
// nothing else from either Kit or Bits;
|
|
28
|
+
// the Button's bundle must carry no behavior base at all, which is what
|
|
29
|
+
// keeps a marketing page that imports one control from
|
|
30
|
+
// paying for a menu system it never renders.
|
|
31
|
+
//
|
|
32
|
+
// The markers are class strings the components write, one per component, and
|
|
33
|
+
// each is checked — against both Kits' whole shipped source, not just the
|
|
34
|
+
// modules catalogued below — to be written by exactly the component it names
|
|
35
|
+
// before it is used, so a marker that stopped being distinctive fails here
|
|
36
|
+
// rather than quietly making an assertion vacuous. That check reads source
|
|
37
|
+
// text because these builds are unminified: a class literal reaches the output
|
|
38
|
+
// verbatim, which is what makes `bundle.includes(marker)` readable at all.
|
|
39
|
+
//
|
|
40
|
+
// This is also what `"sideEffects": false` in the Kit's package.json is for.
|
|
41
|
+
// A Svelte component compiles to module-level code a bundler must assume is
|
|
42
|
+
// side-effecting unless the package says otherwise; without that field every
|
|
43
|
+
// Primitive in the barrel survives into every bundle, which is the state this
|
|
44
|
+
// file was written against and the reason the field exists.
|
|
45
|
+
|
|
46
|
+
import { readFileSync } from "node:fs";
|
|
47
|
+
import { createRequire } from "node:module";
|
|
48
|
+
import { dirname, join } from "node:path";
|
|
49
|
+
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
|
50
|
+
import { beforeAll, describe, expect, it } from "vitest";
|
|
51
|
+
import { build, type Rolldown } from "vite";
|
|
52
|
+
import { KIT_ROOT, filesUnder, kitSourceFiles } from "../tools/paths";
|
|
53
|
+
import { componentOf, componentsWriting, coverage, emitters, kebab } from "./markers";
|
|
54
|
+
|
|
55
|
+
/** Long enough for two production builds on a cold cache. */
|
|
56
|
+
const BUILD_TIMEOUT = 180_000;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Bundle one entry the way an application would, and hand back the code.
|
|
60
|
+
*
|
|
61
|
+
* `svelte` stays external because a consumer's own copy provides it — bundling
|
|
62
|
+
* the framework would drown the measurement in it. Everything else is bundled,
|
|
63
|
+
* which is the point: `bits-ui` and the Kit have to be inside the output for
|
|
64
|
+
* the question "what survived?" to have an answer.
|
|
65
|
+
*/
|
|
66
|
+
async function bundle(entry: string): Promise<string> {
|
|
67
|
+
const result = await build({
|
|
68
|
+
root: KIT_ROOT,
|
|
69
|
+
configFile: false,
|
|
70
|
+
logLevel: "silent",
|
|
71
|
+
plugins: [svelte()],
|
|
72
|
+
resolve: {
|
|
73
|
+
conditions: ["browser"],
|
|
74
|
+
// This build deliberately bypasses vite.config.ts. Resolve the public
|
|
75
|
+
// Base subpath to the same export target so the bundle measures the
|
|
76
|
+
// canonical consumer import rather than a workspace-only relative path.
|
|
77
|
+
alias: [
|
|
78
|
+
{ find: /^@reddb-io\/design-system\/base\/recipes$/, replacement: join(KIT_ROOT, "..", "base", "src", "recipes.ts") },
|
|
79
|
+
{ find: /^@reddb-io\/design-system\/base$/, replacement: join(KIT_ROOT, "..", "base", "src", "index.ts") },
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
build: {
|
|
83
|
+
write: false,
|
|
84
|
+
minify: false,
|
|
85
|
+
lib: { entry, formats: ["es"], fileName: "bundle" },
|
|
86
|
+
rolldownOptions: { external: [/^svelte(\/|$)/] },
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
const outputs = (Array.isArray(result) ? result[0]! : result) as Rolldown.RolldownOutput;
|
|
91
|
+
return outputs.output
|
|
92
|
+
.filter((chunk): chunk is Rolldown.OutputChunk => chunk.type === "chunk")
|
|
93
|
+
.map((chunk) => chunk.code)
|
|
94
|
+
.join("\n");
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* A class string only one component writes — the evidence that the component
|
|
99
|
+
* itself is in a bundle, rather than something that merely looks like it.
|
|
100
|
+
*
|
|
101
|
+
* Hand-picked rather than derived, because "distinctive" is a judgement about
|
|
102
|
+
* the vocabulary; kept honest by the first test below, which reads every
|
|
103
|
+
* variants module and fails if a marker is written by more or fewer than one.
|
|
104
|
+
*/
|
|
105
|
+
const MARKERS: Readonly<Record<string, string>> = {
|
|
106
|
+
EntityJourney: "@container/entity-journey",
|
|
107
|
+
EntityInspector: "flex min-w-0 flex-col overflow-hidden rounded-[var(--reddb-radius-lg)] border border-muted bg-elevation-raised-surface text-foreground",
|
|
108
|
+
BottomNavigation: "m-0 flex list-none items-stretch gap-[var(--reddb-spatial-gap-sm)] p-0",
|
|
109
|
+
ActionPanel: "flex w-full flex-wrap items-center justify-end",
|
|
110
|
+
ActivityFeed: "m-0 w-full min-w-0 gap-[var(--reddb-spatial-gap-md)]",
|
|
111
|
+
ApplicationShell: "flex min-h-dvh w-full flex-col bg-elevation-base-surface text-foreground",
|
|
112
|
+
// Not the disabled pair: quietControl() (wave 6A) writes that one too.
|
|
113
|
+
Button: "hover:bg-primary-active active:bg-primary-active aria-expanded:bg-primary-active",
|
|
114
|
+
CategoryFilter: "data-category-filter",
|
|
115
|
+
CategoryPreview: "group h-full min-w-0 overflow-hidden",
|
|
116
|
+
ChatMessage: "flex flex-wrap items-baseline gap-[var(--reddb-spatial-gap-sm)]",
|
|
117
|
+
CheckoutForm: "m-0 font-medium text-feedback-danger-foreground",
|
|
118
|
+
CommandPalette: "isolate min-w-0 text-foreground",
|
|
119
|
+
CardHeading: "min-w-0 items-start pb-0",
|
|
120
|
+
ContextMenu: "data-[state=open]:outline-hidden",
|
|
121
|
+
Diff: "m-0 overflow-x-auto py-[var(--reddb-spatial-inset-sm)] font-mono text-sm leading-relaxed",
|
|
122
|
+
DropdownMenu: "min-w-48 overflow-hidden p-[var(--reddb-spatial-inset-sm)]",
|
|
123
|
+
Filter: "data-filter",
|
|
124
|
+
Incentive: "isolate w-full min-w-0",
|
|
125
|
+
Kbd: "rounded-sm border border-muted bg-transparent font-mono",
|
|
126
|
+
ListRow: "flex w-full items-center border-b border-muted text-start",
|
|
127
|
+
MultiColumnLayout: "@container/multi-column-layout",
|
|
128
|
+
Menubar: "data-[command-menubar]:items-center",
|
|
129
|
+
NavItem: "border-transparent bg-transparent text-ink-muted",
|
|
130
|
+
NodeBadge: "rounded-full border border-muted px-2.5 py-1 text-xs leading-tight",
|
|
131
|
+
OrderHistory: "flex w-full flex-col min-w-0 gap-[var(--reddb-spatial-layout-gap-sm)]",
|
|
132
|
+
OrderSummary: "flex flex-col gap-[var(--reddb-spatial-layout-gap-sm)]",
|
|
133
|
+
Pill: "-me-1 inline-flex items-center justify-center rounded-full",
|
|
134
|
+
Review: "grid w-full min-w-0 gap-[var(--reddb-spatial-gap-md)]",
|
|
135
|
+
SidebarNavigation: "m-0 flex list-none flex-col gap-[var(--reddb-spatial-gap-sm)] p-0",
|
|
136
|
+
SidebarPanel: "flex min-h-0 min-w-0 flex-col bg-elevation-sunken-surface text-foreground",
|
|
137
|
+
SidebarRail: "flex h-full min-h-0 w-[calc(var(--reddb-spatial-control-height-md)+2*var(--reddb-spatial-inset-sm))] shrink-0 flex-col items-center",
|
|
138
|
+
SettingsRow: "data-settings-row",
|
|
139
|
+
ShoppingCart: "flex min-w-0 flex-wrap items-end gap-[var(--reddb-spatial-gap-md)]",
|
|
140
|
+
PageHeading: "min-w-0 flex-[1_1_20rem]",
|
|
141
|
+
ProductFeature: "@container/product-feature",
|
|
142
|
+
ProductList: "flex min-w-0 items-baseline justify-between",
|
|
143
|
+
ProductOverview: "grid min-w-0 items-start gap-[var(--reddb-spatial-layout-gap-md)]",
|
|
144
|
+
ProductQuickview: "isolate grid min-w-0 gap-[var(--reddb-spatial-layout-gap-md)]",
|
|
145
|
+
SidebarLayout: "@container/sidebar-layout",
|
|
146
|
+
SpeedDial: "flex min-w-40 flex-col gap-[var(--reddb-spatial-gap-sm)]",
|
|
147
|
+
SplitView: "w-1 cursor-col-resize",
|
|
148
|
+
StoreNavigation: "isolate flex w-full flex-col bg-background text-foreground",
|
|
149
|
+
TaskList: "@container/task-list",
|
|
150
|
+
TaskCard: "data-task-card",
|
|
151
|
+
TelemetryRow: "data-telemetry-row",
|
|
152
|
+
PropertyPanel: "data-property-panel",
|
|
153
|
+
PhaseSummary: "data-phase-summary",
|
|
154
|
+
PlaybackControls: "data-playback-controls",
|
|
155
|
+
Toolbar: "data-[command-toolbar]:items-center",
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* What the canonical DropdownMenu composes, and so what its bundle must
|
|
160
|
+
* contain.
|
|
161
|
+
*
|
|
162
|
+
* Both are static imports in `DropdownMenu.svelte`: Button is the trigger, and
|
|
163
|
+
* Kbd draws the key caps for an item's `shortcut` in the `row` snippet. Kbd
|
|
164
|
+
* being here is a positive claim, not a tolerated exception — the assertion
|
|
165
|
+
* below requires every name in this list to be present, so a Kbd that stopped
|
|
166
|
+
* being composed fails just as loudly as one that started leaking.
|
|
167
|
+
*/
|
|
168
|
+
const COMPOSED = ["Button", "Kbd"] as const;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* How a Bits primitive is recognized in a bundle.
|
|
172
|
+
*
|
|
173
|
+
* Bits builds its `data-*` attributes at runtime — `data-${component}-${part}`
|
|
174
|
+
* — so the only literal each primitive leaves behind is the declaration that
|
|
175
|
+
* names it. That declaration is therefore the marker, and it is the strongest
|
|
176
|
+
* one available: it is present exactly when the primitive's own module is.
|
|
177
|
+
*/
|
|
178
|
+
function bitsMarker(component: string): string {
|
|
179
|
+
return `component: "${component}"`;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/** The primitive a DropdownMenu is built from: Bits' shared menu machinery. */
|
|
183
|
+
const MENU = "menu";
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Bits primitives a menu has no business dragging in. Not the whole library —
|
|
187
|
+
* the ones whose names are unambiguous enough to be evidence, which is what a
|
|
188
|
+
* marker has to be.
|
|
189
|
+
*/
|
|
190
|
+
const OTHER_BITS_PRIMITIVES = [
|
|
191
|
+
"accordion",
|
|
192
|
+
"avatar",
|
|
193
|
+
"calendar",
|
|
194
|
+
"checkbox",
|
|
195
|
+
"collapsible",
|
|
196
|
+
"command",
|
|
197
|
+
"date-field",
|
|
198
|
+
"dialog",
|
|
199
|
+
"link-preview",
|
|
200
|
+
"menubar",
|
|
201
|
+
"navigation-menu",
|
|
202
|
+
"pagination",
|
|
203
|
+
"pin-input",
|
|
204
|
+
"popover",
|
|
205
|
+
"radio-group",
|
|
206
|
+
"scroll-area",
|
|
207
|
+
"select",
|
|
208
|
+
"slider",
|
|
209
|
+
"tabs",
|
|
210
|
+
"toggle-group",
|
|
211
|
+
"toolbar",
|
|
212
|
+
"tooltip",
|
|
213
|
+
] as const;
|
|
214
|
+
|
|
215
|
+
/** Bits UI's own shipped modules, for checking the markers above are real. */
|
|
216
|
+
function bitsSource(): string {
|
|
217
|
+
const entry = createRequire(import.meta.url).resolve("bits-ui");
|
|
218
|
+
return filesUnder(dirname(entry))
|
|
219
|
+
.filter((file) => file.endsWith(".js") || file.endsWith(".svelte"))
|
|
220
|
+
.map((file) => readFileSync(file, "utf8"))
|
|
221
|
+
.join("\n");
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
const BASE_SRC = join(KIT_ROOT, "..", "base", "src");
|
|
225
|
+
|
|
226
|
+
/** The components this file measures: the Kit's own, plus the ones it inherits. */
|
|
227
|
+
const variantsModules = [
|
|
228
|
+
// Operational components share one visual recipe; their native root
|
|
229
|
+
// attributes identify the individual contract instead of a shared class.
|
|
230
|
+
...kitSourceFiles().filter((file) =>
|
|
231
|
+
file.endsWith(".variants.ts") && !file.endsWith("operational.variants.ts")),
|
|
232
|
+
...["TaskCard", "TelemetryRow", "PropertyPanel", "PhaseSummary", "PlaybackControls", "EntityJourney"]
|
|
233
|
+
.map(name => join(KIT_ROOT, "src", "composites", `${name}.svelte`)),
|
|
234
|
+
join(KIT_ROOT, "src", "entity-journey.variants.ts"),
|
|
235
|
+
join(BASE_SRC, "button.variants.ts"),
|
|
236
|
+
join(BASE_SRC, "dropdown-menu.variants.ts"),
|
|
237
|
+
join(BASE_SRC, "kbd.variants.ts"),
|
|
238
|
+
];
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Every source file a measured bundle can draw from.
|
|
242
|
+
*
|
|
243
|
+
* Deliberately wider than the catalogue. The catalogue is what this file
|
|
244
|
+
* measures; the surface is everything the bundler could put in front of a
|
|
245
|
+
* marker, which is both Kits' whole shipped source — markup included, since a
|
|
246
|
+
* `class` attribute writes a string into a bundle the same way a variants
|
|
247
|
+
* module does. A marker distinctive among the catalogued modules alone can
|
|
248
|
+
* still be written by an uncatalogued Base component, and then a hit on it
|
|
249
|
+
* attributes the bundle to a component that was never measured.
|
|
250
|
+
*/
|
|
251
|
+
const emittingSurface = [...kitSourceFiles(), ...kitSourceFiles(BASE_SRC)];
|
|
252
|
+
|
|
253
|
+
let menuBundle = "";
|
|
254
|
+
let buttonBundle = "";
|
|
255
|
+
let numberFieldBundle = "";
|
|
256
|
+
let taskListBundle = "";
|
|
257
|
+
|
|
258
|
+
beforeAll(async () => {
|
|
259
|
+
menuBundle = await bundle(join("test", "fixtures", "tree-shaking", "menu-only.ts"));
|
|
260
|
+
buttonBundle = await bundle(join("test", "fixtures", "tree-shaking", "button-only.ts"));
|
|
261
|
+
numberFieldBundle = await bundle(join("test", "fixtures", "tree-shaking", "number-field-only.ts"));
|
|
262
|
+
taskListBundle = await bundle(join("test", "fixtures", "tree-shaking", "task-list-only.ts"));
|
|
263
|
+
}, BUILD_TIMEOUT);
|
|
264
|
+
|
|
265
|
+
describe("independent lab workflow imports", () => {
|
|
266
|
+
it("includes the selected contract and excludes unrelated workflows and heavy engines", () => {
|
|
267
|
+
expect(numberFieldBundle).toContain("data-number-field");
|
|
268
|
+
expect(numberFieldBundle).not.toContain("data-task-list");
|
|
269
|
+
expect(taskListBundle).toContain("data-task-list");
|
|
270
|
+
expect(taskListBundle).not.toContain("data-number-field");
|
|
271
|
+
for (const code of [numberFieldBundle, taskListBundle]) {
|
|
272
|
+
expect(code.length).toBeGreaterThan(1000);
|
|
273
|
+
for (const name of [MENU, ...OTHER_BITS_PRIMITIVES]) expect(code).not.toContain(bitsMarker(name));
|
|
274
|
+
for (const marker of ["data-terminal-session", "data-pan-zoom", "data-geo-map", "layerchart", "xterm", "graphology", "sigma"]) expect(code).not.toContain(marker);
|
|
275
|
+
}
|
|
276
|
+
expect(buttonBundle).not.toContain("data-number-field");
|
|
277
|
+
expect(buttonBundle).not.toContain("data-task-list");
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
describe("the markers this file measures with", () => {
|
|
282
|
+
it("each name exactly one component's emitted output", () => {
|
|
283
|
+
// A single name, not merely a single hit: a marker that turned out to be
|
|
284
|
+
// some other component's idiom would still be "distinctive" by a count,
|
|
285
|
+
// while attributing every bundle it appears in to the wrong component.
|
|
286
|
+
const sources = emitters(emittingSurface);
|
|
287
|
+
expect(sources.length).toBeGreaterThan(0);
|
|
288
|
+
for (const [component, marker] of Object.entries(MARKERS)) {
|
|
289
|
+
expect(
|
|
290
|
+
componentsWriting(marker, sources),
|
|
291
|
+
`${component}'s marker does not name ${component} alone`,
|
|
292
|
+
).toEqual([kebab(component)]);
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
it("cover every component measured from the Application and inherited Base Kits", () => {
|
|
297
|
+
// Otherwise an Application component added later would be absent from the
|
|
298
|
+
// bundle assertions below, while the inherited Button must be measured at
|
|
299
|
+
// the Base source that actually ships it. `markers.test.ts` holds the
|
|
300
|
+
// comparison itself against a catalogue with a component missing from the
|
|
301
|
+
// map, which is the state this assertion was in from #158 until #233.
|
|
302
|
+
const gaps = coverage(variantsModules.map(componentOf), MARKERS);
|
|
303
|
+
expect(gaps.unmarked, "catalogued components no marker measures").toEqual([]);
|
|
304
|
+
expect(gaps.uncatalogued, "markers naming no catalogued component").toEqual([]);
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
it("name primitives Bits UI actually ships", () => {
|
|
308
|
+
// An absence is only evidence if the thing could have been present: a Bits
|
|
309
|
+
// primitive renamed upstream would make every `not.toContain` below pass
|
|
310
|
+
// for the wrong reason, so the markers are checked against Bits' own source
|
|
311
|
+
// rather than trusted.
|
|
312
|
+
const source = bitsSource();
|
|
313
|
+
for (const component of [MENU, ...OTHER_BITS_PRIMITIVES]) {
|
|
314
|
+
expect(source, `bits-ui declares no "${component}"`).toContain(bitsMarker(component));
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
describe("an application that imports the inherited Base Composite", () => {
|
|
320
|
+
it("gets a real bundle, with the Kit and its behavior base inside it", () => {
|
|
321
|
+
// The bar every assertion below stands on: an empty or externalized
|
|
322
|
+
// bundle would make every `not.toContain` pass for the wrong reason.
|
|
323
|
+
expect(menuBundle.length).toBeGreaterThan(10_000);
|
|
324
|
+
expect(menuBundle).toContain(MARKERS.DropdownMenu);
|
|
325
|
+
expect(menuBundle).toContain(bitsMarker(MENU));
|
|
326
|
+
// …and it is a dropdown menu, not some other menu: the variant is what
|
|
327
|
+
// renames every `data-menu-*` attribute to `data-dropdown-menu-*`.
|
|
328
|
+
expect(menuBundle).toContain('"dropdown-menu"');
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
it("gets the Primitives the Composite actually composes", () => {
|
|
332
|
+
for (const component of COMPOSED) {
|
|
333
|
+
expect(menuBundle, `${component} is composed but missing`).toContain(MARKERS[component]);
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
it("gets none of the Primitives it does not", () => {
|
|
338
|
+
const uninvited = Object.entries(MARKERS)
|
|
339
|
+
.filter(([name]) => name !== "DropdownMenu" && !COMPOSED.includes(name as never))
|
|
340
|
+
.filter(([, marker]) => menuBundle.includes(marker))
|
|
341
|
+
.map(([name]) => name);
|
|
342
|
+
expect(uninvited).toEqual([]);
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
it("gets none of Bits UI's other primitives", () => {
|
|
346
|
+
// The per-import half of ADR 0005's claim: a page with a menu on it does
|
|
347
|
+
// not ship a calendar, a dialog and a slider to get one.
|
|
348
|
+
const uninvited = OTHER_BITS_PRIMITIVES.filter((component) =>
|
|
349
|
+
menuBundle.includes(bitsMarker(component)),
|
|
350
|
+
);
|
|
351
|
+
expect(uninvited).toEqual([]);
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
describe("an application that imports one Primitive", () => {
|
|
356
|
+
it("gets that Primitive", () => {
|
|
357
|
+
expect(buttonBundle.length).toBeGreaterThan(1_000);
|
|
358
|
+
expect(buttonBundle).toContain(MARKERS.Button);
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
it("pays for no behavior base at all", () => {
|
|
362
|
+
// A marketing surface importing one control should stay zero-JS beyond the
|
|
363
|
+
// control (ADR 0005's first consequence). Bits hydrates only where it is
|
|
364
|
+
// imported, and this is where that stops being a hope.
|
|
365
|
+
for (const component of [MENU, ...OTHER_BITS_PRIMITIVES]) {
|
|
366
|
+
expect(
|
|
367
|
+
buttonBundle,
|
|
368
|
+
`Bits' ${component} reached a bundle that imported no Composite`,
|
|
369
|
+
).not.toContain(bitsMarker(component));
|
|
370
|
+
}
|
|
371
|
+
expect(buttonBundle).not.toContain(MARKERS.DropdownMenu);
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
it("is smaller than the one that took the Composite", () => {
|
|
375
|
+
// Not a threshold — a byte count would be a number to chase rather than a
|
|
376
|
+
// property to keep. What is asserted is the direction: importing a
|
|
377
|
+
// behavioral Composite costs something, and importing a Primitive does not
|
|
378
|
+
// pay it.
|
|
379
|
+
expect(buttonBundle.length).toBeLessThan(menuBundle.length);
|
|
380
|
+
});
|
|
381
|
+
});
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
// One semantic vocabulary (ADR 0026), as the application Kit speaks it.
|
|
2
|
+
//
|
|
3
|
+
// - Meaning is `tone`, imported from Base: a Pill's tone is the same
|
|
4
|
+
// Feedback Role as a Badge's, pair for pair, and the accent is never a tone.
|
|
5
|
+
// - A domain reading that is not a tone (NodeBadge's reachability) reaches the
|
|
6
|
+
// vocabulary through a documented mapping, never through the Brand red.
|
|
7
|
+
// - Size is `size`, and the current destination is `current` on an item and
|
|
8
|
+
// `currentId` on a container. Density words never name a component prop.
|
|
9
|
+
// - Every renamed public name stays one release as an alias that still works
|
|
10
|
+
// and warns once per session in development.
|
|
11
|
+
|
|
12
|
+
import { badge, TONES } from "@reddb-io/design-system/base";
|
|
13
|
+
import { afterEach, beforeEach, describe, expect, it, vi, type MockInstance } from "vitest";
|
|
14
|
+
import { quietControl } from "@reddb-io/design-system/base";
|
|
15
|
+
import {
|
|
16
|
+
DEPRECATED_LIST_ROW_DENSITIES,
|
|
17
|
+
DEPRECATED_PILL_VARIANTS,
|
|
18
|
+
ListRow,
|
|
19
|
+
listRow,
|
|
20
|
+
NavItem,
|
|
21
|
+
navItem,
|
|
22
|
+
NODE_STATUS_TONES,
|
|
23
|
+
NODE_STATUSES,
|
|
24
|
+
NodeBadge,
|
|
25
|
+
nodeBadge,
|
|
26
|
+
Pill,
|
|
27
|
+
pill,
|
|
28
|
+
PILL_TONES,
|
|
29
|
+
PILL_VARIANTS,
|
|
30
|
+
SidebarRail,
|
|
31
|
+
} from "../src/index";
|
|
32
|
+
import { classes, classesOf, render, rendered, text } from "./mount";
|
|
33
|
+
|
|
34
|
+
let warn: MockInstance<typeof console.warn>;
|
|
35
|
+
beforeEach(() => {
|
|
36
|
+
warn = vi.spyOn(console, "warn").mockImplementation(() => {});
|
|
37
|
+
});
|
|
38
|
+
afterEach(() => {
|
|
39
|
+
warn.mockRestore();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const warnings = () =>
|
|
43
|
+
warn.mock.calls.map(([message]) => String(message)).filter((message) => message.startsWith("[reddb "));
|
|
44
|
+
|
|
45
|
+
/** The colour classes of a recipe's output: borders, grounds and text colours. */
|
|
46
|
+
function colours(className: string): Set<string> {
|
|
47
|
+
return new Set([...classesOf(className)].filter((name) => /^(?:border|bg|text)-(?!xs$|sm$|base$)/.test(name)));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
describe("Pill's tone", () => {
|
|
51
|
+
it("is the shared vocabulary, imported rather than restated", () => {
|
|
52
|
+
expect(PILL_TONES).toBe(TONES);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("names the same Feedback Role as Badge, for every tone and emphasis", () => {
|
|
56
|
+
for (const variant of PILL_VARIANTS) {
|
|
57
|
+
for (const tone of PILL_TONES) {
|
|
58
|
+
expect(colours(pill({ tone, variant })), `${tone} ${variant}`).toEqual(colours(badge({ tone, variant })));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it("never fills a tone with the Brand red", () => {
|
|
64
|
+
for (const variant of PILL_VARIANTS) {
|
|
65
|
+
for (const tone of PILL_TONES) {
|
|
66
|
+
expect(classesOf(pill({ tone, variant })).has("bg-primary"), `${tone} ${variant}`).toBe(false);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("announces its tone and emphasis on the element", () => {
|
|
72
|
+
const element = rendered(render(Pill, { tone: "warning", variant: "outline", children: text("lagging") }));
|
|
73
|
+
expect(element.dataset.tone).toBe("warning");
|
|
74
|
+
expect(element.dataset.variant).toBe("outline");
|
|
75
|
+
expect(classes(element)).toEqual(classesOf(pill({ tone: "warning", variant: "outline" })));
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
describe("NodeBadge's reachability", () => {
|
|
80
|
+
it("maps every reading onto a tone, documented and exported", () => {
|
|
81
|
+
expect(Object.keys(NODE_STATUS_TONES).sort()).toEqual([...NODE_STATUSES].sort());
|
|
82
|
+
expect(NODE_STATUS_TONES).toEqual({
|
|
83
|
+
online: "success",
|
|
84
|
+
degraded: "warning",
|
|
85
|
+
offline: "danger",
|
|
86
|
+
unknown: "neutral",
|
|
87
|
+
});
|
|
88
|
+
for (const tone of Object.values(NODE_STATUS_TONES)) expect(TONES).toContain(tone);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it("draws each reading in its tone's Feedback Role, and never in the Brand red", () => {
|
|
92
|
+
for (const status of NODE_STATUSES) {
|
|
93
|
+
const tone = NODE_STATUS_TONES[status];
|
|
94
|
+
const dot = classesOf(nodeBadge({ status }).dot());
|
|
95
|
+
expect([...dot].some((name) => /(?:^|-)primary\b/.test(name)), status).toBe(false);
|
|
96
|
+
if (tone !== "neutral") {
|
|
97
|
+
expect(dot.has(`bg-[var(--reddb-color-feedback-${tone}-foreground)]`), status).toBe(true);
|
|
98
|
+
}
|
|
99
|
+
const element = rendered(render(NodeBadge, { name: "reddb-01", status }));
|
|
100
|
+
expect(element.dataset.tone).toBe(tone);
|
|
101
|
+
expect(element.dataset.nodeStatus).toBe(status);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
describe("the size scale and the current destination", () => {
|
|
107
|
+
it("sizes ListRow with size, never a Density word", () => {
|
|
108
|
+
const element = rendered(render(ListRow, { title: "reddb-01", size: "sm" }));
|
|
109
|
+
expect(element.dataset.size).toBe("sm");
|
|
110
|
+
expect(classes(element)).toEqual(classesOf(listRow({ size: "sm" }).root()));
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
it("marks NavItem's current destination with current", () => {
|
|
114
|
+
const element = rendered(render(NavItem, { label: "Tokens", href: "/tokens", current: true }));
|
|
115
|
+
expect(element.getAttribute("aria-current")).toBe("page");
|
|
116
|
+
expect(classes(element)).toEqual(classesOf(quietControl({ selected: true, class: navItem({ current: true }).root() })));
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
it("marks SidebarRail's current item with currentId", () => {
|
|
120
|
+
const root = render(SidebarRail, {
|
|
121
|
+
label: "Organizations",
|
|
122
|
+
items: [
|
|
123
|
+
{ id: "reddb", label: "RedDB" },
|
|
124
|
+
{ id: "orbit", label: "Orbit" },
|
|
125
|
+
],
|
|
126
|
+
currentId: "orbit",
|
|
127
|
+
});
|
|
128
|
+
expect(root.querySelector('[data-sidebar-rail-item="orbit"]')!.getAttribute("aria-pressed")).toBe("true");
|
|
129
|
+
expect(root.querySelector('[data-sidebar-rail-item="reddb"]')!.getAttribute("aria-pressed")).toBe("false");
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
describe("the deprecated aliases (one release)", () => {
|
|
134
|
+
it("keep Pill's neutral and primary variants drawing as before, warning once each", () => {
|
|
135
|
+
for (const _ of [1, 2]) {
|
|
136
|
+
const neutral = rendered(render(Pill, { variant: "neutral" }));
|
|
137
|
+
expect(colours(neutral.getAttribute("class")!)).toEqual(colours(pill({ variant: "tinted" })));
|
|
138
|
+
}
|
|
139
|
+
const primary = rendered(render(Pill, { variant: "primary" }));
|
|
140
|
+
expect(classes(primary).has("bg-primary")).toBe(true);
|
|
141
|
+
expect(DEPRECATED_PILL_VARIANTS).toEqual({ neutral: "tinted", primary: "filled" });
|
|
142
|
+
expect(warnings()).toEqual([
|
|
143
|
+
expect.stringMatching(/\[reddb Pill\] variant="neutral" is deprecated.*variant="tinted"/),
|
|
144
|
+
expect.stringMatching(/\[reddb Pill\] variant="primary" is deprecated.*tone with variant="filled"/),
|
|
145
|
+
]);
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it("keep ListRow's density working as the size it became, warning once", () => {
|
|
149
|
+
for (const [density, size] of Object.entries(DEPRECATED_LIST_ROW_DENSITIES)) {
|
|
150
|
+
for (const _ of [1, 2]) {
|
|
151
|
+
const element = rendered(render(ListRow, { title: "reddb-01", density: density as "compact" }));
|
|
152
|
+
expect(element.dataset.size).toBe(size);
|
|
153
|
+
expect(classes(element)).toEqual(classesOf(listRow({ size }).root()));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
expect(warnings()).toEqual([
|
|
157
|
+
expect.stringMatching(/\[reddb ListRow\] density="comfortable" is deprecated.*size="md"/),
|
|
158
|
+
expect.stringMatching(/\[reddb ListRow\] density="compact" is deprecated.*size="sm"/),
|
|
159
|
+
]);
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
it("keep NavItem's active, with its old meaning for the token, warning once", () => {
|
|
163
|
+
const active = rendered(render(NavItem, { label: "Details", href: "/2", active: true, current: "step" }));
|
|
164
|
+
expect(active.getAttribute("aria-current")).toBe("step");
|
|
165
|
+
// Under the alias a token alone does not make an item current, as before.
|
|
166
|
+
const inactive = rendered(render(NavItem, { label: "Review", href: "/3", active: false, current: "step" }));
|
|
167
|
+
expect(inactive.getAttribute("aria-current")).toBeNull();
|
|
168
|
+
expect(warnings()).toEqual([expect.stringMatching(/\[reddb NavItem\] active is deprecated.*current/)]);
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
it("keep SidebarRail's selectedId, warning once", () => {
|
|
172
|
+
const items = [
|
|
173
|
+
{ id: "reddb", label: "RedDB" },
|
|
174
|
+
{ id: "orbit", label: "Orbit" },
|
|
175
|
+
];
|
|
176
|
+
for (const _ of [1, 2]) {
|
|
177
|
+
const root = render(SidebarRail, { label: "Organizations", items, selectedId: "orbit" });
|
|
178
|
+
expect(root.querySelector('[data-sidebar-rail-item="orbit"]')!.getAttribute("aria-pressed")).toBe("true");
|
|
179
|
+
}
|
|
180
|
+
expect(warnings()).toEqual([expect.stringMatching(/\[reddb SidebarRail\] selectedId is deprecated.*currentId/)]);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Build command for the application Kit.
|
|
2
|
+
//
|
|
3
|
+
// pnpm --filter kit-app build
|
|
4
|
+
//
|
|
5
|
+
// A Kit's artifact is its source: components are distributed as vendorable
|
|
6
|
+
// Svelte 5 source (ADR 0002), not as a compiled bundle, so "building" is
|
|
7
|
+
// staging exactly what a consumer receives into dist/ — the directory the
|
|
8
|
+
// release bundler collects from every package and Kit
|
|
9
|
+
// (scripts/producer/src/collect.ts).
|
|
10
|
+
//
|
|
11
|
+
// Unlike the Layers' artifacts, this dist is a verbatim copy of committed
|
|
12
|
+
// source and carries no information of its own, so it is generated on demand
|
|
13
|
+
// and git-ignored rather than committed. Copying in sorted order with the
|
|
14
|
+
// file list printed keeps the same commit producing the same bundle, which is
|
|
15
|
+
// what the release reproducibility check depends on.
|
|
16
|
+
|
|
17
|
+
import { cpSync, existsSync, mkdirSync, rmSync } from "node:fs";
|
|
18
|
+
import { basename, join, relative } from "node:path";
|
|
19
|
+
import { DIST_DIR, KIT_MANIFEST, KIT_ROOT, SRC_DIR, filesUnder } from "./paths";
|
|
20
|
+
|
|
21
|
+
rmSync(DIST_DIR, { recursive: true, force: true });
|
|
22
|
+
mkdirSync(DIST_DIR, { recursive: true });
|
|
23
|
+
|
|
24
|
+
cpSync(SRC_DIR, join(DIST_DIR, "src"), { recursive: true });
|
|
25
|
+
if (existsSync(join(KIT_ROOT, "react"))) cpSync(join(KIT_ROOT, "react"), join(DIST_DIR, "react"), { recursive: true });
|
|
26
|
+
for (const file of [KIT_MANIFEST, join(KIT_ROOT, "README.md")]) {
|
|
27
|
+
cpSync(file, join(DIST_DIR, basename(file)));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const staged = filesUnder(DIST_DIR);
|
|
31
|
+
for (const file of staged) {
|
|
32
|
+
process.stdout.write(`Staged ${relative(KIT_ROOT, file)}\n`);
|
|
33
|
+
}
|
|
34
|
+
process.stdout.write(`Wrote ${staged.length} file(s) to ${DIST_DIR}\n`);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Consumer type-check command for the Kit.
|
|
2
|
+
//
|
|
3
|
+
// pnpm --filter kit-app check
|
|
4
|
+
//
|
|
5
|
+
// Compiles the vendorable source the way a consumer application does — the
|
|
6
|
+
// consumer's svelte-check, a strict tsconfig with no DS base behind it — and
|
|
7
|
+
// exits non-zero on anything it finds. Mirrors the anti-hardcode lint command
|
|
8
|
+
// (tools/lint-cli.ts) down to its output shape, because it is the same kind of
|
|
9
|
+
// promise: what this repo ships still works where it lands.
|
|
10
|
+
|
|
11
|
+
import { relative } from "node:path";
|
|
12
|
+
import { consumerCheck, formatDiagnostic } from "./consumer-check";
|
|
13
|
+
import { CONSUMER_TSCONFIG, KIT_ROOT } from "./paths";
|
|
14
|
+
|
|
15
|
+
const tsconfig = process.argv[2] ?? CONSUMER_TSCONFIG;
|
|
16
|
+
const { errors, warnings } = consumerCheck(tsconfig);
|
|
17
|
+
const problems = [...errors, ...warnings];
|
|
18
|
+
|
|
19
|
+
if (problems.length > 0) {
|
|
20
|
+
for (const problem of problems) {
|
|
21
|
+
process.stderr.write(`${formatDiagnostic(problem)}\n`);
|
|
22
|
+
}
|
|
23
|
+
process.stderr.write(
|
|
24
|
+
`\nconsumer type check failed: ${errors.length} error(s) and ${warnings.length} warning(s) ` +
|
|
25
|
+
"against a strict consumer tsconfig; a Kit ships as source, so this is the compiler that judges it.\n",
|
|
26
|
+
);
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
process.stdout.write(
|
|
31
|
+
"consumer type check passed: the Kit's source compiles clean under a strict consumer " +
|
|
32
|
+
`svelte-check (${relative(KIT_ROOT, tsconfig)}).\n`,
|
|
33
|
+
);
|