@reddb-io/ui-kit 0.3.4 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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,35 @@
|
|
|
1
|
+
import { tv, type VariantProps } from "tailwind-variants";
|
|
2
|
+
|
|
3
|
+
export const INDICATOR_POSITIONS = [
|
|
4
|
+
"top-start",
|
|
5
|
+
"top-center",
|
|
6
|
+
"top-end",
|
|
7
|
+
"middle-start",
|
|
8
|
+
"middle-end",
|
|
9
|
+
"bottom-start",
|
|
10
|
+
"bottom-center",
|
|
11
|
+
"bottom-end",
|
|
12
|
+
] as const;
|
|
13
|
+
export type IndicatorPosition = (typeof INDICATOR_POSITIONS)[number];
|
|
14
|
+
|
|
15
|
+
const POSITION: Record<IndicatorPosition, { marker: string }> = {
|
|
16
|
+
"top-start": { marker: "start-0 top-0 -translate-x-1/2 -translate-y-1/2" },
|
|
17
|
+
"top-center": { marker: "start-1/2 top-0 -translate-x-1/2 -translate-y-1/2" },
|
|
18
|
+
"top-end": { marker: "end-0 top-0 translate-x-1/2 -translate-y-1/2" },
|
|
19
|
+
"middle-start": { marker: "start-0 top-1/2 -translate-x-1/2 -translate-y-1/2" },
|
|
20
|
+
"middle-end": { marker: "end-0 top-1/2 translate-x-1/2 -translate-y-1/2" },
|
|
21
|
+
"bottom-start": { marker: "bottom-0 start-0 -translate-x-1/2 translate-y-1/2" },
|
|
22
|
+
"bottom-center": { marker: "bottom-0 start-1/2 -translate-x-1/2 translate-y-1/2" },
|
|
23
|
+
"bottom-end": { marker: "bottom-0 end-0 translate-x-1/2 translate-y-1/2" },
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const indicator = tv({
|
|
27
|
+
slots: {
|
|
28
|
+
root: "relative inline-flex",
|
|
29
|
+
marker: "absolute z-10 inline-flex",
|
|
30
|
+
},
|
|
31
|
+
variants: { position: POSITION },
|
|
32
|
+
defaultVariants: { position: "top-end" },
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export type IndicatorVariants = VariantProps<typeof indicator>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { tv } from "tailwind-variants";
|
|
2
|
+
import { typeRoleMerge } from "./type-roles";
|
|
3
|
+
|
|
4
|
+
export const inlineEdit = tv({
|
|
5
|
+
slots: {
|
|
6
|
+
root: "group/inline-edit flex min-w-0 flex-col gap-[var(--reddb-spatial-gap-sm)] text-foreground",
|
|
7
|
+
label: "text-caption text-ink-muted",
|
|
8
|
+
row: "flex min-w-0 flex-wrap items-center gap-[var(--reddb-spatial-gap-sm)]",
|
|
9
|
+
value: "min-w-0 break-words",
|
|
10
|
+
field: "relative min-w-0 flex-1 basis-[12ch]",
|
|
11
|
+
input: "min-w-0 w-full",
|
|
12
|
+
icon: "pointer-events-none inline-flex shrink-0 items-center text-ink-muted",
|
|
13
|
+
inputIcon: "pointer-events-none absolute inset-y-0 start-0 inline-flex w-[var(--reddb-spatial-control-height-md)] items-center justify-center text-ink-muted",
|
|
14
|
+
readText: "min-w-0 select-text break-words [overflow-wrap:anywhere]",
|
|
15
|
+
status: "m-0 break-words text-caption text-ink-muted",
|
|
16
|
+
edit: "shrink-0",
|
|
17
|
+
error: "m-0 text-caption text-feedback-danger-foreground",
|
|
18
|
+
},
|
|
19
|
+
variants: {
|
|
20
|
+
presentation: {
|
|
21
|
+
text: { value: "inline-flex items-center gap-[var(--reddb-spatial-gap-sm)] text-body font-medium" },
|
|
22
|
+
input: { value: "flex min-h-[var(--reddb-spatial-control-height-md)] flex-1 basis-[12ch] items-center gap-[var(--reddb-spatial-gap-sm)] text-editable-md" },
|
|
23
|
+
},
|
|
24
|
+
withIcon: {
|
|
25
|
+
true: { input: "ps-[var(--reddb-spatial-control-height-md)]" },
|
|
26
|
+
},
|
|
27
|
+
editVisibility: {
|
|
28
|
+
always: { edit: "" },
|
|
29
|
+
hover: { edit: "[@media(hover:hover)_and_(pointer:fine)]:opacity-0 group-hover/inline-edit:opacity-100 group-focus-within/inline-edit:opacity-100" },
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
defaultVariants: { editVisibility: "always", presentation: "text" },
|
|
33
|
+
}, typeRoleMerge);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Input's public appearance seam. Input itself owns only the native element
|
|
2
|
+
// and forwarding behavior; this function is where a consumer composes or
|
|
3
|
+
// extends the canonical appearance without copying that behavior.
|
|
4
|
+
|
|
5
|
+
import { tv, type VariantProps } from "tailwind-variants";
|
|
6
|
+
import { typeRoleMerge } from "./type-roles";
|
|
7
|
+
|
|
8
|
+
export const input = tv({
|
|
9
|
+
base: [
|
|
10
|
+
"flex w-full",
|
|
11
|
+
"rounded-md border border-control-edge bg-background",
|
|
12
|
+
"text-foreground",
|
|
13
|
+
"placeholder:text-ink-muted",
|
|
14
|
+
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus",
|
|
15
|
+
"aria-invalid:border-feedback-danger-border",
|
|
16
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
17
|
+
].join(" "),
|
|
18
|
+
variants: {
|
|
19
|
+
// The same three steps as Button, so a field and the action beside it
|
|
20
|
+
// share one control height at every Density stop. Named `controlSize` on
|
|
21
|
+
// the component: the native `size` attribute is still spread through.
|
|
22
|
+
size: {
|
|
23
|
+
sm: "h-[var(--reddb-spatial-control-height-sm)] px-[var(--reddb-spatial-inset-sm)] text-editable-sm",
|
|
24
|
+
md: "h-[var(--reddb-spatial-control-height-md)] px-[var(--reddb-spatial-inset-md)] text-editable-md",
|
|
25
|
+
lg: "h-[var(--reddb-spatial-control-height-lg)] px-[var(--reddb-spatial-inset-lg)] text-editable-lg",
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
defaultVariants: { size: "md" },
|
|
29
|
+
}, typeRoleMerge);
|
|
30
|
+
|
|
31
|
+
export type InputVariants = VariantProps<typeof input>;
|
|
32
|
+
export type InputSize = NonNullable<InputVariants["size"]>;
|
|
33
|
+
export const INPUT_SIZES = ["sm", "md", "lg"] as const satisfies readonly InputSize[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { tv, type VariantProps } from "tailwind-variants";
|
|
2
|
+
|
|
3
|
+
const SIZE = {
|
|
4
|
+
sm: "h-4 min-w-4 px-1 text-xs",
|
|
5
|
+
md: "h-5 min-w-5 px-1.5 text-xs",
|
|
6
|
+
} as const;
|
|
7
|
+
|
|
8
|
+
/** Key-cap size follows its surrounding typography, not page Density. */
|
|
9
|
+
export const kbd = tv({
|
|
10
|
+
base: "inline-flex items-center justify-center rounded-sm border border-muted bg-transparent font-mono leading-tight text-foreground whitespace-nowrap",
|
|
11
|
+
variants: { size: SIZE },
|
|
12
|
+
defaultVariants: { size: "md" },
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
/** A multi-key chord; only the inter-cap gap routes through Density. */
|
|
16
|
+
export const kbdChord = tv({
|
|
17
|
+
slots: {
|
|
18
|
+
root: "inline-flex items-center gap-[var(--reddb-spatial-gap-sm)] whitespace-nowrap",
|
|
19
|
+
separator: "text-ink-muted text-xs",
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
export type KbdVariants = VariantProps<typeof kbd>;
|
|
24
|
+
export type KbdSize = NonNullable<KbdVariants["size"]>;
|
|
25
|
+
export const KBD_SIZES = Object.keys(SIZE) as readonly KbdSize[];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Label's token-only appearance seam. Association stays native through `for`.
|
|
2
|
+
import { tv, type VariantProps } from "tailwind-variants";
|
|
3
|
+
|
|
4
|
+
export const label = tv({
|
|
5
|
+
base: "text-sm font-medium text-foreground",
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export type LabelVariants = VariantProps<typeof label>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { tv, type VariantProps } from "tailwind-variants";
|
|
2
|
+
import { popover } from "./popover.variants";
|
|
3
|
+
|
|
4
|
+
/** Link previews reuse the canonical anchored surface instead of restating it. */
|
|
5
|
+
export const linkPreview = tv({
|
|
6
|
+
extend: popover,
|
|
7
|
+
base: "select-text",
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export type LinkPreviewVariants = VariantProps<typeof linkPreview>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { tv, type VariantProps } from "tailwind-variants";
|
|
2
|
+
import { typeRoleMerge } from "./type-roles";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Native-link appearance with a persistent non-colour affordance.
|
|
6
|
+
*
|
|
7
|
+
* A link is ink, not accent: foreground text carrying the underline, which
|
|
8
|
+
* thickens on hover. The Brand red is reserved for the primary action — and in
|
|
9
|
+
* the light scheme it is the same red as danger, so a red link would read as an
|
|
10
|
+
* error (DESIGN.md, "Interactive states").
|
|
11
|
+
*/
|
|
12
|
+
export const link = tv({
|
|
13
|
+
base: [
|
|
14
|
+
"text-foreground underline decoration-current underline-offset-[var(--reddb-spatial-gap-sm)]",
|
|
15
|
+
"hover:decoration-2",
|
|
16
|
+
"focus-visible:rounded-sm focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus",
|
|
17
|
+
].join(" "),
|
|
18
|
+
}, typeRoleMerge);
|
|
19
|
+
|
|
20
|
+
export type LinkVariants = VariantProps<typeof link>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { tv, type VariantProps } from "tailwind-variants";
|
|
2
|
+
|
|
3
|
+
const GAP = {
|
|
4
|
+
sm: "gap-[var(--reddb-spatial-gap-sm)]",
|
|
5
|
+
md: "gap-[var(--reddb-spatial-gap-md)]",
|
|
6
|
+
lg: "gap-[var(--reddb-spatial-gap-lg)]",
|
|
7
|
+
} as const;
|
|
8
|
+
|
|
9
|
+
export const list = tv({
|
|
10
|
+
base: "flex flex-col",
|
|
11
|
+
variants: { gap: GAP },
|
|
12
|
+
defaultVariants: { gap: "md" },
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
export type ListVariants = VariantProps<typeof list>;
|
|
16
|
+
export type ListGap = NonNullable<ListVariants["gap"]>;
|
|
17
|
+
export const LIST_GAPS = Object.keys(GAP) as readonly ListGap[];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { tv, type VariantProps } from "tailwind-variants";
|
|
2
|
+
|
|
3
|
+
// The spinner is a glyph, so it takes the Icon's Density-responsive size role
|
|
4
|
+
// of the same name: it tightens with the stop instead of holding a fixed step.
|
|
5
|
+
const SIZE = {
|
|
6
|
+
sm: { spinner: "size-[var(--reddb-spatial-icon-size-sm)]", label: "text-xs" },
|
|
7
|
+
md: { spinner: "size-[var(--reddb-spatial-icon-size-md)]", label: "text-sm" },
|
|
8
|
+
lg: { spinner: "size-[var(--reddb-spatial-icon-size-lg)]", label: "text-base" },
|
|
9
|
+
} as const;
|
|
10
|
+
|
|
11
|
+
export const loadingIndicator = tv({
|
|
12
|
+
slots: {
|
|
13
|
+
root: "inline-flex items-center justify-center gap-[var(--reddb-spatial-gap-md)] text-ink-muted",
|
|
14
|
+
spinner: "motion-safe:animate-spin motion-reduce:animate-pulse text-primary-text",
|
|
15
|
+
track: "fill-none stroke-current opacity-25 motion-reduce:opacity-50",
|
|
16
|
+
head: "fill-none stroke-current",
|
|
17
|
+
label: "leading-tight",
|
|
18
|
+
},
|
|
19
|
+
variants: {
|
|
20
|
+
size: SIZE,
|
|
21
|
+
labelHidden: {
|
|
22
|
+
true: { label: "sr-only" },
|
|
23
|
+
false: { label: "" },
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
defaultVariants: { size: "md", labelHidden: false },
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
export type LoadingIndicatorVariants = VariantProps<typeof loadingIndicator>;
|
|
30
|
+
export type LoadingIndicatorSize = NonNullable<LoadingIndicatorVariants["size"]>;
|
|
31
|
+
export const LOADING_INDICATOR_SIZES = Object.keys(SIZE) as readonly LoadingIndicatorSize[];
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// The Logo's physics: clearspace and minimum size, as arithmetic.
|
|
2
|
+
//
|
|
3
|
+
// ADR 0004 settled that these are the component's physics and not its
|
|
4
|
+
// documentation — "the Logo's box includes the clearspace intrinsically and
|
|
5
|
+
// below-minimum is a dev error. No opt-out prop; a legitimate exception must
|
|
6
|
+
// be written by the Brand first." That has one mechanical consequence, and it
|
|
7
|
+
// is the whole of this module: the box a caller lays out is mark + clearspace,
|
|
8
|
+
// so a caller cannot place something inside the clearspace by accident, and
|
|
9
|
+
// cannot ask for the mark without it at all.
|
|
10
|
+
//
|
|
11
|
+
// Everything is measured against the SYMBOL — the red glyph — because the
|
|
12
|
+
// symbol is the same drawing in every layout. Clearspace is 25% of its height;
|
|
13
|
+
// the minimum is a floor under its height. One rule, three layouts, and no
|
|
14
|
+
// per-layout numbers to keep in step: the stacked Mark's minimum is taller
|
|
15
|
+
// than the horizontal one's only because its symbol is a smaller share of it.
|
|
16
|
+
//
|
|
17
|
+
// These are lengths in CSS pixels rather than tokens, and deliberately so. A
|
|
18
|
+
// Theme reassigns colour; a density stop reassigns the space a component holds
|
|
19
|
+
// inside itself (ADR 0003). Clearspace is neither — it is a proportion of the
|
|
20
|
+
// Brand's drawing, fixed by the licence, and a stop that shrank it would be
|
|
21
|
+
// shrinking the Brand's own margin.
|
|
22
|
+
|
|
23
|
+
import type { Mark } from "./logo.marks";
|
|
24
|
+
|
|
25
|
+
/** Clearspace is 25% of the symbol's height (ADR 0004). */
|
|
26
|
+
export const CLEARSPACE_RATIO = 0.25;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The floor under the symbol, in CSS pixels. Below it the wordmark's counters
|
|
30
|
+
* close up and the notch in the symbol stops reading, so it is an error rather
|
|
31
|
+
* than a smaller Logo.
|
|
32
|
+
*/
|
|
33
|
+
export const MINIMUM_SYMBOL_PX = 16;
|
|
34
|
+
|
|
35
|
+
/** What `size` means when a caller does not say: comfortable, not minimal. */
|
|
36
|
+
export const DEFAULT_SYMBOL_PX = 32;
|
|
37
|
+
|
|
38
|
+
/** The Logo's laid-out geometry, in CSS pixels. */
|
|
39
|
+
export interface LogoBox {
|
|
40
|
+
/** The symbol's height — the size the caller asked for. */
|
|
41
|
+
symbol: number;
|
|
42
|
+
/** Clearspace on every side. */
|
|
43
|
+
clearspace: number;
|
|
44
|
+
/** The Mark itself, inside the clearspace. */
|
|
45
|
+
markWidth: number;
|
|
46
|
+
markHeight: number;
|
|
47
|
+
/** The component's own box: the Mark plus clearspace on all four sides. */
|
|
48
|
+
width: number;
|
|
49
|
+
height: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The refusal for a Logo asked to render below the minimum.
|
|
54
|
+
*
|
|
55
|
+
* ADR 0004 calls it a dev error, and an error is what it is: a Logo that
|
|
56
|
+
* renders illegibly is worse than a page with a hole in it, because nobody
|
|
57
|
+
* files the second one as a bug against the DS.
|
|
58
|
+
*/
|
|
59
|
+
export class LogoTooSmallError extends Error {
|
|
60
|
+
/** The symbol height that was asked for, in CSS pixels. */
|
|
61
|
+
readonly size: number;
|
|
62
|
+
/** The floor it fell under. */
|
|
63
|
+
readonly minimum: number;
|
|
64
|
+
|
|
65
|
+
constructor(size: number, minimum: number = MINIMUM_SYMBOL_PX) {
|
|
66
|
+
super(
|
|
67
|
+
`Logo: size=${size} would render the symbol at ${size}px, below the ${minimum}px minimum.\n` +
|
|
68
|
+
"Minimum size is the component's physics, not its documentation (ADR 0004): there is no " +
|
|
69
|
+
"opt-out prop, because a legitimate exception has to be written by the Brand first.\n" +
|
|
70
|
+
`Ask for size=${minimum} or larger, or use a layout whose symbol carries at this size.`,
|
|
71
|
+
);
|
|
72
|
+
this.name = "LogoTooSmallError";
|
|
73
|
+
this.size = size;
|
|
74
|
+
this.minimum = minimum;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The box `mark` occupies when its symbol is `size` pixels tall.
|
|
80
|
+
*
|
|
81
|
+
* Throws rather than clamping when `size` is below the minimum or is not a
|
|
82
|
+
* usable length: clamping would render a Logo nobody asked for, and silence is
|
|
83
|
+
* how a below-minimum Logo ships.
|
|
84
|
+
*/
|
|
85
|
+
export function logoBox(mark: Mark, size: number = DEFAULT_SYMBOL_PX): LogoBox {
|
|
86
|
+
if (!Number.isFinite(size) || size <= 0) {
|
|
87
|
+
throw new LogoTooSmallError(size);
|
|
88
|
+
}
|
|
89
|
+
if (size < MINIMUM_SYMBOL_PX) {
|
|
90
|
+
throw new LogoTooSmallError(size);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// The symbol is a share of the drawing's height, so the drawing scales by
|
|
94
|
+
// the ratio between them — which is what keeps one `size` meaning the same
|
|
95
|
+
// thing across layouts whose proportions differ.
|
|
96
|
+
const scale = size / mark.symbolHeight;
|
|
97
|
+
const markWidth = mark.width * scale;
|
|
98
|
+
const markHeight = mark.height * scale;
|
|
99
|
+
const clearspace = size * CLEARSPACE_RATIO;
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
symbol: size,
|
|
103
|
+
clearspace,
|
|
104
|
+
markWidth,
|
|
105
|
+
markHeight,
|
|
106
|
+
width: markWidth + clearspace * 2,
|
|
107
|
+
height: markHeight + clearspace * 2,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* The smallest `size` a Mark may be placed at. One number for every Mark,
|
|
113
|
+
* because the floor is under the symbol and the symbol is shared.
|
|
114
|
+
*/
|
|
115
|
+
export function minimumSize(): number {
|
|
116
|
+
return MINIMUM_SYMBOL_PX;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* A length as CSS, rounded to a resolution finer than a device pixel.
|
|
121
|
+
*
|
|
122
|
+
* The Marks' viewBoxes carry three decimals, so the arithmetic above produces
|
|
123
|
+
* numbers like 120.62144 — real, and not worth the bytes. Rounding here rather
|
|
124
|
+
* than in `logoBox` keeps the box exact for anyone computing with it.
|
|
125
|
+
*/
|
|
126
|
+
export function px(length: number): string {
|
|
127
|
+
return `${Math.round(length * 1000) / 1000}px`;
|
|
128
|
+
}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
// The Marks the Logo may place, and the refusal when it may not.
|
|
2
|
+
//
|
|
3
|
+
// The Brand owns the drawing; the DS owns only the placement (ADR 0004). So
|
|
4
|
+
// this module enumerates what the pinned Assets release ships and nothing
|
|
5
|
+
// else: five layouts, two surfaces, and one hole where the release ships no
|
|
6
|
+
// Mark. It never composes, recolors or substitutes a Mark — the asset licence
|
|
7
|
+
// binds that literally, and a variant that does not exist upstream is a Brand
|
|
8
|
+
// proposal, not a local file.
|
|
9
|
+
//
|
|
10
|
+
// A Mark is reached by importing the file, so it stays opaque bytes the whole
|
|
11
|
+
// way through: the bundler emits the SVG as an asset and hands back its URL,
|
|
12
|
+
// which is what the Logo renders as an <img>. Nothing here parses the drawing,
|
|
13
|
+
// and no code path can alter it — "reproduced unaltered" is therefore a
|
|
14
|
+
// property of how the Logo works rather than a rule someone has to follow.
|
|
15
|
+
//
|
|
16
|
+
// `on` names the SURFACE behind the Mark, never the Theme: a dark hero on a
|
|
17
|
+
// light marketing page takes `on="dark"` under the light Color Scheme, which is
|
|
18
|
+
// exactly the case ADR 0004 fixed the prop for.
|
|
19
|
+
|
|
20
|
+
import horizontalColor from "./marks/reddb-horizontal-color.svg";
|
|
21
|
+
import horizontalInverse from "./marks/reddb-horizontal-inverse.svg";
|
|
22
|
+
import iconColor from "./marks/reddb-icon-color.svg";
|
|
23
|
+
import stackedColor from "./marks/reddb-stacked-color.svg";
|
|
24
|
+
import stackedInverse from "./marks/reddb-stacked-inverse.svg";
|
|
25
|
+
import symbolBlack from "./marks/reddb-symbol-black.svg";
|
|
26
|
+
import symbolColor from "./marks/reddb-symbol-color.svg";
|
|
27
|
+
import symbolKnockout from "./marks/reddb-symbol-knockout.svg";
|
|
28
|
+
import symbolWhite from "./marks/reddb-symbol-white.svg";
|
|
29
|
+
import wordmarkBlack from "./marks/reddb-wordmark-black.svg";
|
|
30
|
+
import wordmarkWhite from "./marks/reddb-wordmark-white.svg";
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The pinned Brand Assets release these Marks came from
|
|
34
|
+
* (`vendor/brand/brand.lock.json`).
|
|
35
|
+
*
|
|
36
|
+
* Written here as a literal because a Kit is vendorable source with no build
|
|
37
|
+
* step and no lock to read at runtime — and kept honest rather than
|
|
38
|
+
* remembered: `test/marks.test.ts` fails when it drifts from the lock, which
|
|
39
|
+
* is the same edit re-vendoring makes anyway.
|
|
40
|
+
*/
|
|
41
|
+
export const BRAND_RELEASE = "2026.10";
|
|
42
|
+
|
|
43
|
+
/** How the Mark is laid out. */
|
|
44
|
+
export const LOGO_LAYOUTS = ["horizontal", "stacked", "icon", "symbol", "wordmark"] as const;
|
|
45
|
+
export type LogoLayout = (typeof LOGO_LAYOUTS)[number];
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* The surface the Mark sits on — the local background, not the global Theme.
|
|
49
|
+
* `light` takes the color Mark, `dark` takes the inverse one.
|
|
50
|
+
*/
|
|
51
|
+
export const LOGO_SURFACES = ["light", "dark"] as const;
|
|
52
|
+
export type LogoSurface = (typeof LOGO_SURFACES)[number];
|
|
53
|
+
|
|
54
|
+
/** One Mark as the release published it. */
|
|
55
|
+
export interface Mark {
|
|
56
|
+
/** File name, exactly as the release names it. */
|
|
57
|
+
file: string;
|
|
58
|
+
/** The URL the bundler emitted for the file. */
|
|
59
|
+
src: string;
|
|
60
|
+
/** The drawing's own width, from its viewBox. */
|
|
61
|
+
width: number;
|
|
62
|
+
/** The drawing's own height, from its viewBox. */
|
|
63
|
+
height: number;
|
|
64
|
+
/**
|
|
65
|
+
* How much of that height the SYMBOL — the red glyph — occupies.
|
|
66
|
+
*
|
|
67
|
+
* The symbol is the same drawing in every layout, which is what makes it the
|
|
68
|
+
* thing to measure: clearspace is 25% of symbol height (ADR 0004), and one
|
|
69
|
+
* minimum on the symbol gives every lockup a minimum without several numbers
|
|
70
|
+
* anyone has to keep in step. In the horizontal, icon and symbol Marks the
|
|
71
|
+
* symbol spans the full height; in the stacked one it sits above the
|
|
72
|
+
* wordmark and occupies 100 of the drawing's 154.423 units. The standalone
|
|
73
|
+
* wordmark has no symbol, so its own 71.4-unit ink box is the sizing
|
|
74
|
+
* reference.
|
|
75
|
+
*/
|
|
76
|
+
symbolHeight: number;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Every Mark the pinned release ships, by layout and surface.
|
|
81
|
+
*
|
|
82
|
+
* The hole is the point: `icon` has no `dark` entry because the release
|
|
83
|
+
* publishes no `reddb-icon-inverse.svg`. It is left absent rather than filled
|
|
84
|
+
* with the color Mark, so the gap is a fact the type system and the refusal
|
|
85
|
+
* both read off one place.
|
|
86
|
+
*/
|
|
87
|
+
export const MARKS: Readonly<Record<LogoLayout, Partial<Record<LogoSurface, Mark>>>> = {
|
|
88
|
+
horizontal: {
|
|
89
|
+
light: {
|
|
90
|
+
file: "reddb-horizontal-color.svg",
|
|
91
|
+
src: horizontalColor,
|
|
92
|
+
width: 397.712,
|
|
93
|
+
height: 100,
|
|
94
|
+
symbolHeight: 100,
|
|
95
|
+
},
|
|
96
|
+
dark: {
|
|
97
|
+
file: "reddb-horizontal-inverse.svg",
|
|
98
|
+
src: horizontalInverse,
|
|
99
|
+
width: 397.712,
|
|
100
|
+
height: 100,
|
|
101
|
+
symbolHeight: 100,
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
stacked: {
|
|
105
|
+
light: {
|
|
106
|
+
file: "reddb-stacked-color.svg",
|
|
107
|
+
src: stackedColor,
|
|
108
|
+
width: 140,
|
|
109
|
+
height: 154.423,
|
|
110
|
+
symbolHeight: 100,
|
|
111
|
+
},
|
|
112
|
+
dark: {
|
|
113
|
+
file: "reddb-stacked-inverse.svg",
|
|
114
|
+
src: stackedInverse,
|
|
115
|
+
width: 140,
|
|
116
|
+
height: 154.423,
|
|
117
|
+
symbolHeight: 100,
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
icon: {
|
|
121
|
+
light: {
|
|
122
|
+
file: "reddb-icon-color.svg",
|
|
123
|
+
src: iconColor,
|
|
124
|
+
width: 100,
|
|
125
|
+
height: 100,
|
|
126
|
+
symbolHeight: 100,
|
|
127
|
+
},
|
|
128
|
+
// No `dark`: the pinned release ships no icon inverse. The chatbot avatar
|
|
129
|
+
// on a dark surface is blocked here until the Brand ships one (ADR 0004).
|
|
130
|
+
},
|
|
131
|
+
symbol: {
|
|
132
|
+
// The Brand names these two single-colour variants by their intended
|
|
133
|
+
// grounds: black for light, white for dark. `color` is the primary
|
|
134
|
+
// treatment and `knockout` describes transparency, not a third kind of
|
|
135
|
+
// surface, so neither distorts the `on` vocabulary.
|
|
136
|
+
light: {
|
|
137
|
+
file: "reddb-symbol-black.svg",
|
|
138
|
+
src: symbolBlack,
|
|
139
|
+
width: 100,
|
|
140
|
+
height: 100,
|
|
141
|
+
symbolHeight: 100,
|
|
142
|
+
},
|
|
143
|
+
dark: {
|
|
144
|
+
file: "reddb-symbol-white.svg",
|
|
145
|
+
src: symbolWhite,
|
|
146
|
+
width: 100,
|
|
147
|
+
height: 100,
|
|
148
|
+
symbolHeight: 100,
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
wordmark: {
|
|
152
|
+
light: {
|
|
153
|
+
file: "reddb-wordmark-black.svg",
|
|
154
|
+
src: wordmarkBlack,
|
|
155
|
+
width: 308.3,
|
|
156
|
+
height: 71.4,
|
|
157
|
+
symbolHeight: 71.4,
|
|
158
|
+
},
|
|
159
|
+
dark: {
|
|
160
|
+
file: "reddb-wordmark-white.svg",
|
|
161
|
+
src: wordmarkWhite,
|
|
162
|
+
width: 308.3,
|
|
163
|
+
height: 71.4,
|
|
164
|
+
symbolHeight: 71.4,
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Every SVG drawing the pinned release publishes.
|
|
171
|
+
*
|
|
172
|
+
* Most are selected by layout and surface through `MARKS`. The color symbol
|
|
173
|
+
* and knockout symbol are treatments rather than surfaces: they belong in the
|
|
174
|
+
* catalogue and ship byte-identically with the Kit, but do not invent a third
|
|
175
|
+
* `on` value or silently displace the Brand's explicit black/light and
|
|
176
|
+
* white/dark mapping.
|
|
177
|
+
*/
|
|
178
|
+
export const MARK_CATALOGUE: readonly Mark[] = [
|
|
179
|
+
...LOGO_LAYOUTS.flatMap((layout) =>
|
|
180
|
+
LOGO_SURFACES.map((on) => MARKS[layout][on]).filter(
|
|
181
|
+
(mark): mark is Mark => mark !== undefined,
|
|
182
|
+
),
|
|
183
|
+
),
|
|
184
|
+
{
|
|
185
|
+
file: "reddb-symbol-color.svg",
|
|
186
|
+
src: symbolColor,
|
|
187
|
+
width: 100,
|
|
188
|
+
height: 100,
|
|
189
|
+
symbolHeight: 100,
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
file: "reddb-symbol-knockout.svg",
|
|
193
|
+
src: symbolKnockout,
|
|
194
|
+
width: 100,
|
|
195
|
+
height: 100,
|
|
196
|
+
symbolHeight: 100,
|
|
197
|
+
},
|
|
198
|
+
];
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* The refusal: the Logo was asked for a Mark the pinned release does not ship.
|
|
202
|
+
*
|
|
203
|
+
* It names the gap and the release, because those are the two things whoever
|
|
204
|
+
* hits it needs — what is missing, and which release it is missing from — and
|
|
205
|
+
* because the fix is upstream: the message is the first draft of the Brand
|
|
206
|
+
* proposal.
|
|
207
|
+
*/
|
|
208
|
+
export class MarkNotShippedError extends Error {
|
|
209
|
+
/** The layout that was asked for. */
|
|
210
|
+
readonly layout: LogoLayout;
|
|
211
|
+
/** The surface it was asked for. */
|
|
212
|
+
readonly on: LogoSurface;
|
|
213
|
+
/** The Assets release that ships no such Mark. */
|
|
214
|
+
readonly release: string;
|
|
215
|
+
|
|
216
|
+
constructor(layout: LogoLayout, on: LogoSurface, release: string = BRAND_RELEASE) {
|
|
217
|
+
const alternatives = LOGO_LAYOUTS.filter((other) => MARKS[other][on] !== undefined);
|
|
218
|
+
super(
|
|
219
|
+
`Logo: the pinned Brand Assets release ${release} ships no ${layout} Mark for a ${on} surface.\n` +
|
|
220
|
+
"The Logo refuses rather than falling back to the other surface's Mark or recoloring one: " +
|
|
221
|
+
"the Brand owns the drawing and the DS owns only its placement (ADR 0004), so a variant " +
|
|
222
|
+
"that does not exist upstream is a Brand proposal, not a local file.\n" +
|
|
223
|
+
`Until the Brand ships it, place the ${layout} Mark on the surface it has ` +
|
|
224
|
+
`(on="${on === "dark" ? "light" : "dark"}"), or use ` +
|
|
225
|
+
`${alternatives.map((other) => `layout="${other}"`).join(" or ")} on a ${on} surface.`,
|
|
226
|
+
);
|
|
227
|
+
this.name = "MarkNotShippedError";
|
|
228
|
+
this.layout = layout;
|
|
229
|
+
this.on = on;
|
|
230
|
+
this.release = release;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* The Mark for one layout on one surface, or a loud refusal when the release
|
|
236
|
+
* ships none. Never falls back, never invents: those are the two failures the
|
|
237
|
+
* licence forbids, so neither has a code path here.
|
|
238
|
+
*/
|
|
239
|
+
export function selectMark(layout: LogoLayout, on: LogoSurface): Mark {
|
|
240
|
+
const mark = MARKS[layout][on];
|
|
241
|
+
if (mark === undefined) throw new MarkNotShippedError(layout, on);
|
|
242
|
+
return mark;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/** Does the pinned release ship a Mark for this layout on this surface? */
|
|
246
|
+
export function shipsMark(layout: LogoLayout, on: LogoSurface): boolean {
|
|
247
|
+
return MARKS[layout][on] !== undefined;
|
|
248
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Which surface the Logo sits on when the caller does not say.
|
|
2
|
+
//
|
|
3
|
+
// ADR 0004's `on="light" | "dark"` names the surface behind the Mark. The
|
|
4
|
+
// Color Scheme, not the directional Theme, is the document-level signal that
|
|
5
|
+
// answers that contrast question. A local surface still uses `on` explicitly.
|
|
6
|
+
|
|
7
|
+
import { LOGO_SURFACES, type LogoSurface } from "./logo.marks";
|
|
8
|
+
|
|
9
|
+
/** The attribute the Color Scheme selectors key on. */
|
|
10
|
+
export const COLOR_SCHEME_ATTRIBUTE = "data-color-scheme";
|
|
11
|
+
|
|
12
|
+
/** The surface a Color Scheme implies. Anything unrecognised is light. */
|
|
13
|
+
export function surfaceOfColorScheme(scheme: string | null | undefined): LogoSurface {
|
|
14
|
+
return scheme === "dark" ? "dark" : "light";
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** The surface implied by the active Color Scheme on `doc`. */
|
|
18
|
+
export function activeSurface(doc: Document | null | undefined = globalThis.document): LogoSurface {
|
|
19
|
+
if (!doc) return "light";
|
|
20
|
+
return surfaceOfColorScheme(doc.documentElement.getAttribute(COLOR_SCHEME_ATTRIBUTE));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Observe root Color Scheme changes and report their implied Logo surface.
|
|
25
|
+
* Returns a cleanup function; without a browser it reports once and is inert.
|
|
26
|
+
*/
|
|
27
|
+
export function observeActiveSurface(
|
|
28
|
+
report: (surface: LogoSurface) => void,
|
|
29
|
+
doc: Document | null | undefined = globalThis.document,
|
|
30
|
+
): () => void {
|
|
31
|
+
report(activeSurface(doc));
|
|
32
|
+
const Observer = doc?.defaultView?.MutationObserver;
|
|
33
|
+
if (!doc || !Observer) return () => {};
|
|
34
|
+
const observer = new Observer(() => report(activeSurface(doc)));
|
|
35
|
+
observer.observe(doc.documentElement, {
|
|
36
|
+
attributes: true,
|
|
37
|
+
attributeFilter: [COLOR_SCHEME_ATTRIBUTE],
|
|
38
|
+
});
|
|
39
|
+
return () => observer.disconnect();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Is `value` a surface the Logo knows? */
|
|
43
|
+
export function isLogoSurface(value: unknown): value is LogoSurface {
|
|
44
|
+
return typeof value === "string" && (LOGO_SURFACES as readonly string[]).includes(value);
|
|
45
|
+
}
|