@skdx/docs-kit 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +22 -0
- package/dist/component-aliases.json +12 -0
- package/dist/data/THIRD-PARTY-NOTICES.md +21 -0
- package/dist/data/angular-inputs.json +1 -0
- package/dist/data/api-manifest.json +1 -0
- package/dist/data/exports-by-framework.json +1 -0
- package/dist/data/honoured-slots.json +1 -0
- package/dist/data/styling-hooks-manifest.json +10331 -0
- package/dist/frameworks.mjs +64 -0
- package/dist/shared/contracts/accordion.d.ts +3 -0
- package/dist/shared/contracts/accordion.js +1 -0
- package/dist/shared/contracts/alert.d.ts +3 -0
- package/dist/shared/contracts/alert.js +1 -0
- package/dist/shared/contracts/angle-slider.d.ts +3 -0
- package/dist/shared/contracts/angle-slider.js +1 -0
- package/dist/shared/contracts/aspect-ratio.d.ts +3 -0
- package/dist/shared/contracts/aspect-ratio.js +1 -0
- package/dist/shared/contracts/autocomplete.d.ts +3 -0
- package/dist/shared/contracts/autocomplete.js +1 -0
- package/dist/shared/contracts/avatar.d.ts +3 -0
- package/dist/shared/contracts/avatar.js +1 -0
- package/dist/shared/contracts/badge.d.ts +3 -0
- package/dist/shared/contracts/badge.js +1 -0
- package/dist/shared/contracts/box.d.ts +3 -0
- package/dist/shared/contracts/box.js +1 -0
- package/dist/shared/contracts/breadcrumb.d.ts +3 -0
- package/dist/shared/contracts/breadcrumb.js +1 -0
- package/dist/shared/contracts/button.d.ts +3 -0
- package/dist/shared/contracts/button.js +1 -0
- package/dist/shared/contracts/calendar.d.ts +5 -0
- package/dist/shared/contracts/calendar.js +1 -0
- package/dist/shared/contracts/card.d.ts +3 -0
- package/dist/shared/contracts/card.js +1 -0
- package/dist/shared/contracts/carousel.d.ts +3 -0
- package/dist/shared/contracts/carousel.js +1 -0
- package/dist/shared/contracts/change-reason.d.ts +29 -0
- package/dist/shared/contracts/change-reason.js +1 -0
- package/dist/shared/contracts/chat-composer.d.ts +3 -0
- package/dist/shared/contracts/chat-composer.js +1 -0
- package/dist/shared/contracts/chat-message.d.ts +3 -0
- package/dist/shared/contracts/chat-message.js +1 -0
- package/dist/shared/contracts/checkbox-card.d.ts +3 -0
- package/dist/shared/contracts/checkbox-card.js +1 -0
- package/dist/shared/contracts/checkbox-group.d.ts +3 -0
- package/dist/shared/contracts/checkbox-group.js +1 -0
- package/dist/shared/contracts/checkbox.d.ts +3 -0
- package/dist/shared/contracts/checkbox.js +1 -0
- package/dist/shared/contracts/clipboard.d.ts +3 -0
- package/dist/shared/contracts/clipboard.js +1 -0
- package/dist/shared/contracts/collapsible.d.ts +3 -0
- package/dist/shared/contracts/collapsible.js +1 -0
- package/dist/shared/contracts/color-picker.d.ts +3 -0
- package/dist/shared/contracts/color-picker.js +1 -0
- package/dist/shared/contracts/combobox.d.ts +3 -0
- package/dist/shared/contracts/combobox.js +1 -0
- package/dist/shared/contracts/command.d.ts +3 -0
- package/dist/shared/contracts/command.js +1 -0
- package/dist/shared/contracts/comment-thread.d.ts +3 -0
- package/dist/shared/contracts/comment-thread.js +1 -0
- package/dist/shared/contracts/comment.d.ts +3 -0
- package/dist/shared/contracts/comment.js +1 -0
- package/dist/shared/contracts/confirm-dialog.d.ts +3 -0
- package/dist/shared/contracts/confirm-dialog.js +1 -0
- package/dist/shared/contracts/conversation-list.d.ts +3 -0
- package/dist/shared/contracts/conversation-list.js +1 -0
- package/dist/shared/contracts/dashboard-layout.d.ts +3 -0
- package/dist/shared/contracts/dashboard-layout.js +1 -0
- package/dist/shared/contracts/date-field.d.ts +3 -0
- package/dist/shared/contracts/date-field.js +1 -0
- package/dist/shared/contracts/date-picker.d.ts +3 -0
- package/dist/shared/contracts/date-picker.js +1 -0
- package/dist/shared/contracts/date-value.d.ts +11 -0
- package/dist/shared/contracts/date-value.js +1 -0
- package/dist/shared/contracts/dialog.d.ts +3 -0
- package/dist/shared/contracts/dialog.js +1 -0
- package/dist/shared/contracts/divider.d.ts +5 -0
- package/dist/shared/contracts/divider.js +1 -0
- package/dist/shared/contracts/drawer.d.ts +3 -0
- package/dist/shared/contracts/drawer.js +1 -0
- package/dist/shared/contracts/editable.d.ts +3 -0
- package/dist/shared/contracts/editable.js +1 -0
- package/dist/shared/contracts/empty-state.d.ts +3 -0
- package/dist/shared/contracts/empty-state.js +1 -0
- package/dist/shared/contracts/field.d.ts +3 -0
- package/dist/shared/contracts/field.js +1 -0
- package/dist/shared/contracts/file-upload.d.ts +3 -0
- package/dist/shared/contracts/file-upload.js +1 -0
- package/dist/shared/contracts/filter-bar.d.ts +3 -0
- package/dist/shared/contracts/filter-bar.js +1 -0
- package/dist/shared/contracts/floating-panel.d.ts +3 -0
- package/dist/shared/contracts/floating-panel.js +1 -0
- package/dist/shared/contracts/forgot-password-page.d.ts +3 -0
- package/dist/shared/contracts/forgot-password-page.js +1 -0
- package/dist/shared/contracts/form-property.d.ts +3 -0
- package/dist/shared/contracts/form-property.js +1 -0
- package/dist/shared/contracts/form-section.d.ts +3 -0
- package/dist/shared/contracts/form-section.js +1 -0
- package/dist/shared/contracts/form-validity.d.ts +7 -0
- package/dist/shared/contracts/form-validity.js +1 -0
- package/dist/shared/contracts/form.d.ts +3 -0
- package/dist/shared/contracts/form.js +1 -0
- package/dist/shared/contracts/heading.d.ts +3 -0
- package/dist/shared/contracts/heading.js +1 -0
- package/dist/shared/contracts/image.d.ts +3 -0
- package/dist/shared/contracts/image.js +1 -0
- package/dist/shared/contracts/index.d.ts +8 -0
- package/dist/shared/contracts/index.js +1 -0
- package/dist/shared/contracts/kbd.d.ts +3 -0
- package/dist/shared/contracts/kbd.js +1 -0
- package/dist/shared/contracts/label.d.ts +3 -0
- package/dist/shared/contracts/label.js +1 -0
- package/dist/shared/contracts/link.d.ts +3 -0
- package/dist/shared/contracts/link.js +1 -0
- package/dist/shared/contracts/list.d.ts +3 -0
- package/dist/shared/contracts/list.js +1 -0
- package/dist/shared/contracts/listbox.d.ts +3 -0
- package/dist/shared/contracts/listbox.js +1 -0
- package/dist/shared/contracts/loading-overlay.d.ts +3 -0
- package/dist/shared/contracts/loading-overlay.js +1 -0
- package/dist/shared/contracts/member-id.d.ts +18 -0
- package/dist/shared/contracts/member-id.js +1 -0
- package/dist/shared/contracts/mentions.d.ts +3 -0
- package/dist/shared/contracts/mentions.js +1 -0
- package/dist/shared/contracts/menu.d.ts +3 -0
- package/dist/shared/contracts/menu.js +1 -0
- package/dist/shared/contracts/menubar.d.ts +3 -0
- package/dist/shared/contracts/menubar.js +1 -0
- package/dist/shared/contracts/navigation-menu.d.ts +6 -0
- package/dist/shared/contracts/navigation-menu.js +1 -0
- package/dist/shared/contracts/notification-center.d.ts +3 -0
- package/dist/shared/contracts/notification-center.js +1 -0
- package/dist/shared/contracts/number-field.d.ts +5 -0
- package/dist/shared/contracts/number-field.js +1 -0
- package/dist/shared/contracts/onboarding-checklist.d.ts +3 -0
- package/dist/shared/contracts/onboarding-checklist.js +1 -0
- package/dist/shared/contracts/overlay-parts.d.ts +73 -0
- package/dist/shared/contracts/overlay-parts.js +1 -0
- package/dist/shared/contracts/page-container.d.ts +3 -0
- package/dist/shared/contracts/page-container.js +1 -0
- package/dist/shared/contracts/pagination.d.ts +5 -0
- package/dist/shared/contracts/pagination.js +1 -0
- package/dist/shared/contracts/password-input.d.ts +6 -0
- package/dist/shared/contracts/password-input.js +1 -0
- package/dist/shared/contracts/pin-input.d.ts +6 -0
- package/dist/shared/contracts/pin-input.js +1 -0
- package/dist/shared/contracts/polymorphic.d.ts +6 -0
- package/dist/shared/contracts/polymorphic.js +1 -0
- package/dist/shared/contracts/popover.d.ts +7 -0
- package/dist/shared/contracts/popover.js +1 -0
- package/dist/shared/contracts/progress.d.ts +6 -0
- package/dist/shared/contracts/progress.js +1 -0
- package/dist/shared/contracts/qr-code.d.ts +5 -0
- package/dist/shared/contracts/qr-code.js +1 -0
- package/dist/shared/contracts/radio-card.d.ts +6 -0
- package/dist/shared/contracts/radio-card.js +1 -0
- package/dist/shared/contracts/radio-group.d.ts +6 -0
- package/dist/shared/contracts/radio-group.js +1 -0
- package/dist/shared/contracts/rating.d.ts +6 -0
- package/dist/shared/contracts/rating.js +1 -0
- package/dist/shared/contracts/reset-password-page.d.ts +3 -0
- package/dist/shared/contracts/reset-password-page.js +1 -0
- package/dist/shared/contracts/resizable.d.ts +7 -0
- package/dist/shared/contracts/resizable.js +1 -0
- package/dist/shared/contracts/rules.d.ts +11 -0
- package/dist/shared/contracts/rules.js +1 -0
- package/dist/shared/contracts/scroll-area.d.ts +6 -0
- package/dist/shared/contracts/scroll-area.js +1 -0
- package/dist/shared/contracts/select.d.ts +5 -0
- package/dist/shared/contracts/select.js +1 -0
- package/dist/shared/contracts/selection-value.d.ts +20 -0
- package/dist/shared/contracts/selection-value.js +1 -0
- package/dist/shared/contracts/sign-in-page.d.ts +3 -0
- package/dist/shared/contracts/sign-in-page.js +1 -0
- package/dist/shared/contracts/sign-up-page.d.ts +3 -0
- package/dist/shared/contracts/sign-up-page.js +1 -0
- package/dist/shared/contracts/skeleton.d.ts +5 -0
- package/dist/shared/contracts/skeleton.js +1 -0
- package/dist/shared/contracts/slider.d.ts +7 -0
- package/dist/shared/contracts/slider.js +1 -0
- package/dist/shared/contracts/speed-dial.d.ts +6 -0
- package/dist/shared/contracts/speed-dial.js +1 -0
- package/dist/shared/contracts/spinner.d.ts +6 -0
- package/dist/shared/contracts/spinner.js +1 -0
- package/dist/shared/contracts/split-button.d.ts +6 -0
- package/dist/shared/contracts/split-button.js +1 -0
- package/dist/shared/contracts/stat-card.d.ts +3 -0
- package/dist/shared/contracts/stat-card.js +1 -0
- package/dist/shared/contracts/stepper.d.ts +6 -0
- package/dist/shared/contracts/stepper.js +1 -0
- package/dist/shared/contracts/styling-hooks.d.ts +8 -0
- package/dist/shared/contracts/styling-hooks.js +1 -0
- package/dist/shared/contracts/switch.d.ts +6 -0
- package/dist/shared/contracts/switch.js +1 -0
- package/dist/shared/contracts/table.d.ts +7 -0
- package/dist/shared/contracts/table.js +1 -0
- package/dist/shared/contracts/tabs.d.ts +5 -0
- package/dist/shared/contracts/tabs.js +1 -0
- package/dist/shared/contracts/tag-group.d.ts +7 -0
- package/dist/shared/contracts/tag-group.js +1 -0
- package/dist/shared/contracts/tags-input.d.ts +8 -0
- package/dist/shared/contracts/tags-input.js +1 -0
- package/dist/shared/contracts/text-field.d.ts +6 -0
- package/dist/shared/contracts/text-field.js +1 -0
- package/dist/shared/contracts/text.d.ts +6 -0
- package/dist/shared/contracts/text.js +1 -0
- package/dist/shared/contracts/textarea.d.ts +5 -0
- package/dist/shared/contracts/textarea.js +1 -0
- package/dist/shared/contracts/time-field.d.ts +5 -0
- package/dist/shared/contracts/time-field.js +1 -0
- package/dist/shared/contracts/time.d.ts +6 -0
- package/dist/shared/contracts/time.js +1 -0
- package/dist/shared/contracts/timeline.d.ts +5 -0
- package/dist/shared/contracts/timeline.js +1 -0
- package/dist/shared/contracts/toast.d.ts +6 -0
- package/dist/shared/contracts/toast.js +1 -0
- package/dist/shared/contracts/toggle-group.d.ts +6 -0
- package/dist/shared/contracts/toggle-group.js +1 -0
- package/dist/shared/contracts/toggle.d.ts +5 -0
- package/dist/shared/contracts/toggle.js +1 -0
- package/dist/shared/contracts/toolbar.d.ts +3 -0
- package/dist/shared/contracts/toolbar.js +1 -0
- package/dist/shared/contracts/tour.d.ts +5 -0
- package/dist/shared/contracts/tour.js +1 -0
- package/dist/shared/contracts/transfer.d.ts +6 -0
- package/dist/shared/contracts/transfer.js +1 -0
- package/dist/shared/contracts/tree-select.d.ts +6 -0
- package/dist/shared/contracts/tree-select.js +1 -0
- package/dist/shared/contracts/tree.d.ts +6 -0
- package/dist/shared/contracts/tree.js +1 -0
- package/dist/shared/contracts/types.d.ts +230 -0
- package/dist/shared/contracts/types.js +1 -0
- package/dist/shared/contracts/usage-card.d.ts +3 -0
- package/dist/shared/contracts/usage-card.js +1 -0
- package/dist/shared/contracts/user-menu.d.ts +3 -0
- package/dist/shared/contracts/user-menu.js +1 -0
- package/dist/shared/contracts/verification-page.d.ts +3 -0
- package/dist/shared/contracts/verification-page.js +1 -0
- package/dist/shared/contracts/workspace-switcher.d.ts +3 -0
- package/dist/shared/contracts/workspace-switcher.js +1 -0
- package/dist/shared/core/announcer.d.ts +17 -0
- package/dist/shared/core/announcer.js +1 -0
- package/dist/shared/core/appearance.d.ts +14 -0
- package/dist/shared/core/appearance.js +1 -0
- package/dist/shared/core/arrow-keys.d.ts +7 -0
- package/dist/shared/core/arrow-keys.js +1 -0
- package/dist/shared/core/calendar-locale.d.ts +35 -0
- package/dist/shared/core/calendar-locale.js +1 -0
- package/dist/shared/core/color.d.ts +80 -0
- package/dist/shared/core/color.js +1 -0
- package/dist/shared/core/controllable.d.ts +42 -0
- package/dist/shared/core/controllable.js +1 -0
- package/dist/shared/core/csv.d.ts +43 -0
- package/dist/shared/core/csv.js +2 -0
- package/dist/shared/core/date-segments.d.ts +223 -0
- package/dist/shared/core/date-segments.js +1 -0
- package/dist/shared/core/date-value.d.ts +57 -0
- package/dist/shared/core/date-value.js +1 -0
- package/dist/shared/core/dev-mode.d.ts +12 -0
- package/dist/shared/core/dev-mode.js +1 -0
- package/dist/shared/core/dialogs.d.ts +96 -0
- package/dist/shared/core/dialogs.js +1 -0
- package/dist/shared/core/dismissal.d.ts +56 -0
- package/dist/shared/core/dismissal.js +1 -0
- package/dist/shared/core/field-core.d.ts +250 -0
- package/dist/shared/core/field-core.js +1 -0
- package/dist/shared/core/focus-targets.d.ts +77 -0
- package/dist/shared/core/focus-targets.js +1 -0
- package/dist/shared/core/format-file-size.d.ts +9 -0
- package/dist/shared/core/format-file-size.js +1 -0
- package/dist/shared/core/glyph-data.d.ts +13 -0
- package/dist/shared/core/glyph-data.js +1 -0
- package/dist/shared/core/measure-auto-resize.d.ts +5 -0
- package/dist/shared/core/measure-auto-resize.js +1 -0
- package/dist/shared/core/media-query.d.ts +7 -0
- package/dist/shared/core/media-query.js +1 -0
- package/dist/shared/core/mentions.d.ts +116 -0
- package/dist/shared/core/mentions.js +2 -0
- package/dist/shared/core/pin-chars.d.ts +13 -0
- package/dist/shared/core/pin-chars.js +1 -0
- package/dist/shared/core/placement.d.ts +102 -0
- package/dist/shared/core/placement.js +1 -0
- package/dist/shared/core/qr-encoder.d.ts +33 -0
- package/dist/shared/core/qr-encoder.js +1 -0
- package/dist/shared/core/roving-tab-stop.d.ts +37 -0
- package/dist/shared/core/roving-tab-stop.js +1 -0
- package/dist/shared/core/select-keyboard.d.ts +80 -0
- package/dist/shared/core/select-keyboard.js +1 -0
- package/dist/shared/core/selection.d.ts +58 -0
- package/dist/shared/core/selection.js +1 -0
- package/dist/shared/core/tabbable.d.ts +8 -0
- package/dist/shared/core/tabbable.js +1 -0
- package/dist/shared/core/timer.d.ts +82 -0
- package/dist/shared/core/timer.js +1 -0
- package/dist/shared/core/tree-columns.d.ts +48 -0
- package/dist/shared/core/tree-columns.js +1 -0
- package/dist/shared/core/typeahead.d.ts +27 -0
- package/dist/shared/core/typeahead.js +1 -0
- package/dist/shared/index.d.ts +113 -0
- package/dist/shared/index.js +1 -0
- package/dist/skins-src/_foundation-fallback.css +124 -0
- package/dist/skins-src/base.css +328 -0
- package/dist/skins-src/components/_actuator.css +203 -0
- package/dist/skins-src/components/_arrow.css +20 -0
- package/dist/skins-src/components/_card-control.css +27 -0
- package/dist/skins-src/components/_collection.css +281 -0
- package/dist/skins-src/components/_hit-target.css +28 -0
- package/dist/skins-src/components/_overlay.css +214 -0
- package/dist/skins-src/components/_status.css +38 -0
- package/dist/skins-src/components/_trigger.css +85 -0
- package/dist/skins-src/components/accordion.css +85 -0
- package/dist/skins-src/components/alert.css +118 -0
- package/dist/skins-src/components/angle-slider.css +110 -0
- package/dist/skins-src/components/aspect-ratio.css +26 -0
- package/dist/skins-src/components/autocomplete.css +112 -0
- package/dist/skins-src/components/avatar.css +87 -0
- package/dist/skins-src/components/badge.css +164 -0
- package/dist/skins-src/components/box.css +9 -0
- package/dist/skins-src/components/breadcrumb.css +78 -0
- package/dist/skins-src/components/button.css +304 -0
- package/dist/skins-src/components/calendar.css +269 -0
- package/dist/skins-src/components/card.css +116 -0
- package/dist/skins-src/components/carousel.css +192 -0
- package/dist/skins-src/components/chat-composer.css +89 -0
- package/dist/skins-src/components/chat-message.css +98 -0
- package/dist/skins-src/components/checkbox-card.css +153 -0
- package/dist/skins-src/components/checkbox-group.css +72 -0
- package/dist/skins-src/components/checkbox.css +141 -0
- package/dist/skins-src/components/clipboard.css +126 -0
- package/dist/skins-src/components/collapsible.css +64 -0
- package/dist/skins-src/components/color-picker.css +304 -0
- package/dist/skins-src/components/combobox.css +111 -0
- package/dist/skins-src/components/command.css +73 -0
- package/dist/skins-src/components/comment-thread.css +56 -0
- package/dist/skins-src/components/comment.css +59 -0
- package/dist/skins-src/components/confirm-dialog.css +43 -0
- package/dist/skins-src/components/conversation-list.css +142 -0
- package/dist/skins-src/components/dashboard-layout.css +106 -0
- package/dist/skins-src/components/date-field.css +95 -0
- package/dist/skins-src/components/date-picker.css +79 -0
- package/dist/skins-src/components/dialog.css +161 -0
- package/dist/skins-src/components/divider.css +64 -0
- package/dist/skins-src/components/drawer.css +166 -0
- package/dist/skins-src/components/editable.css +121 -0
- package/dist/skins-src/components/empty-state.css +85 -0
- package/dist/skins-src/components/field.css +104 -0
- package/dist/skins-src/components/file-upload.css +164 -0
- package/dist/skins-src/components/filter-bar.css +48 -0
- package/dist/skins-src/components/floating-panel.css +168 -0
- package/dist/skins-src/components/forgot-password-page.css +45 -0
- package/dist/skins-src/components/form-section.css +75 -0
- package/dist/skins-src/components/form.css +115 -0
- package/dist/skins-src/components/heading.css +38 -0
- package/dist/skins-src/components/image.css +43 -0
- package/dist/skins-src/components/kbd.css +76 -0
- package/dist/skins-src/components/label.css +45 -0
- package/dist/skins-src/components/link.css +72 -0
- package/dist/skins-src/components/list.css +104 -0
- package/dist/skins-src/components/listbox.css +90 -0
- package/dist/skins-src/components/loading-overlay.css +89 -0
- package/dist/skins-src/components/mentions.css +79 -0
- package/dist/skins-src/components/menu.css +102 -0
- package/dist/skins-src/components/menubar.css +130 -0
- package/dist/skins-src/components/navigation-menu.css +145 -0
- package/dist/skins-src/components/notification-center.css +139 -0
- package/dist/skins-src/components/number-field.css +95 -0
- package/dist/skins-src/components/onboarding-checklist.css +156 -0
- package/dist/skins-src/components/page-container.css +29 -0
- package/dist/skins-src/components/pagination.css +147 -0
- package/dist/skins-src/components/password-input.css +116 -0
- package/dist/skins-src/components/pin-input.css +115 -0
- package/dist/skins-src/components/popover.css +108 -0
- package/dist/skins-src/components/progress.css +207 -0
- package/dist/skins-src/components/qr-code.css +62 -0
- package/dist/skins-src/components/radio-card.css +158 -0
- package/dist/skins-src/components/radio-group.css +148 -0
- package/dist/skins-src/components/rating.css +150 -0
- package/dist/skins-src/components/reset-password-page.css +51 -0
- package/dist/skins-src/components/resizable.css +131 -0
- package/dist/skins-src/components/scroll-area.css +101 -0
- package/dist/skins-src/components/select.css +239 -0
- package/dist/skins-src/components/sign-in-page.css +47 -0
- package/dist/skins-src/components/sign-up-page.css +55 -0
- package/dist/skins-src/components/skeleton.css +55 -0
- package/dist/skins-src/components/skip-link.css +51 -0
- package/dist/skins-src/components/slider.css +164 -0
- package/dist/skins-src/components/speed-dial.css +162 -0
- package/dist/skins-src/components/spinner.css +59 -0
- package/dist/skins-src/components/split-button.css +167 -0
- package/dist/skins-src/components/stat-card.css +117 -0
- package/dist/skins-src/components/stepper.css +153 -0
- package/dist/skins-src/components/switch.css +155 -0
- package/dist/skins-src/components/table.css +336 -0
- package/dist/skins-src/components/tabs.css +116 -0
- package/dist/skins-src/components/tag-group.css +72 -0
- package/dist/skins-src/components/tags-input.css +176 -0
- package/dist/skins-src/components/text-field.css +182 -0
- package/dist/skins-src/components/text.css +83 -0
- package/dist/skins-src/components/textarea.css +118 -0
- package/dist/skins-src/components/time-field.css +43 -0
- package/dist/skins-src/components/time.css +13 -0
- package/dist/skins-src/components/timeline.css +206 -0
- package/dist/skins-src/components/toast.css +133 -0
- package/dist/skins-src/components/toggle-group.css +185 -0
- package/dist/skins-src/components/toggle.css +89 -0
- package/dist/skins-src/components/toolbar.css +84 -0
- package/dist/skins-src/components/tour.css +67 -0
- package/dist/skins-src/components/transfer.css +112 -0
- package/dist/skins-src/components/tree-select.css +124 -0
- package/dist/skins-src/components/tree.css +110 -0
- package/dist/skins-src/components/usage-card.css +129 -0
- package/dist/skins-src/components/user-menu.css +83 -0
- package/dist/skins-src/components/verification-page.css +64 -0
- package/dist/skins-src/components/workspace-switcher.css +133 -0
- package/dist/skins-src/utilities.css +130 -0
- package/dist/skins-src/web-components.css +64 -0
- package/dist/strip-paint.d.mts +7 -0
- package/dist/strip-paint.mjs +131 -0
- package/dist/themes/AntDark.md +14 -0
- package/dist/themes/AntDark.ts +47 -0
- package/dist/themes/AntLight.md +21 -0
- package/dist/themes/AntLight.ts +95 -0
- package/dist/themes/CatppuccinLatte.md +20 -0
- package/dist/themes/CatppuccinLatte.ts +93 -0
- package/dist/themes/CatppuccinMocha.md +15 -0
- package/dist/themes/CatppuccinMocha.ts +93 -0
- package/dist/themes/ChakraDark.md +8 -0
- package/dist/themes/ChakraDark.ts +47 -0
- package/dist/themes/ChakraLight.md +14 -0
- package/dist/themes/ChakraLight.ts +93 -0
- package/dist/themes/Contrast.test.ts +80 -0
- package/dist/themes/CupcakeDark.md +8 -0
- package/dist/themes/CupcakeDark.ts +39 -0
- package/dist/themes/CupcakeLight.md +31 -0
- package/dist/themes/CupcakeLight.ts +93 -0
- package/dist/themes/DefaultTheme.md +8 -0
- package/dist/themes/DefaultTheme.test.ts +96 -0
- package/dist/themes/DefaultTheme.ts +137 -0
- package/dist/themes/DraculaDark.md +14 -0
- package/dist/themes/DraculaDark.ts +93 -0
- package/dist/themes/DraculaLight.md +8 -0
- package/dist/themes/DraculaLight.ts +55 -0
- package/dist/themes/EmeraldDark.md +8 -0
- package/dist/themes/EmeraldDark.ts +35 -0
- package/dist/themes/EmeraldLight.md +8 -0
- package/dist/themes/EmeraldLight.ts +93 -0
- package/dist/themes/EverforestDark.md +26 -0
- package/dist/themes/EverforestDark.ts +99 -0
- package/dist/themes/EverforestLight.md +31 -0
- package/dist/themes/EverforestLight.ts +51 -0
- package/dist/themes/FluentDark.md +8 -0
- package/dist/themes/FluentDark.ts +47 -0
- package/dist/themes/FluentLight.md +8 -0
- package/dist/themes/FluentLight.ts +100 -0
- package/dist/themes/GraphiteDark.md +8 -0
- package/dist/themes/GraphiteDark.ts +35 -0
- package/dist/themes/GraphiteLight.md +14 -0
- package/dist/themes/GraphiteLight.ts +93 -0
- package/dist/themes/GruvboxDark.md +14 -0
- package/dist/themes/GruvboxDark.ts +93 -0
- package/dist/themes/GruvboxLight.md +27 -0
- package/dist/themes/GruvboxLight.ts +49 -0
- package/dist/themes/MaterialDark.md +8 -0
- package/dist/themes/MaterialDark.ts +47 -0
- package/dist/themes/MaterialLight.md +8 -0
- package/dist/themes/MaterialLight.ts +104 -0
- package/dist/themes/MidnightDark.md +8 -0
- package/dist/themes/MidnightDark.ts +19 -0
- package/dist/themes/MidnightLight.md +8 -0
- package/dist/themes/MidnightLight.ts +23 -0
- package/dist/themes/NordDark.md +28 -0
- package/dist/themes/NordDark.ts +93 -0
- package/dist/themes/NordLight.md +20 -0
- package/dist/themes/NordLight.ts +50 -0
- package/dist/themes/OneDark.md +26 -0
- package/dist/themes/OneDark.ts +93 -0
- package/dist/themes/OneLight.md +20 -0
- package/dist/themes/OneLight.ts +51 -0
- package/dist/themes/PrimerDark.md +26 -0
- package/dist/themes/PrimerDark.ts +99 -0
- package/dist/themes/PrimerLight.md +14 -0
- package/dist/themes/PrimerLight.ts +93 -0
- package/dist/themes/RosePine.md +23 -0
- package/dist/themes/RosePine.ts +93 -0
- package/dist/themes/RosePineDawn.md +20 -0
- package/dist/themes/RosePineDawn.ts +51 -0
- package/dist/themes/SkandaDark.md +8 -0
- package/dist/themes/SkandaDark.ts +57 -0
- package/dist/themes/SkandaLight.md +8 -0
- package/dist/themes/SkandaLight.ts +96 -0
- package/dist/themes/SolarizedDark.md +8 -0
- package/dist/themes/SolarizedDark.ts +93 -0
- package/dist/themes/SolarizedLight.md +32 -0
- package/dist/themes/SolarizedLight.ts +93 -0
- package/dist/themes/SynthwaveDark.md +8 -0
- package/dist/themes/SynthwaveDark.ts +93 -0
- package/dist/themes/SynthwaveLight.md +20 -0
- package/dist/themes/SynthwaveLight.ts +48 -0
- package/dist/themes/Themes.test.ts +110 -0
- package/dist/themes/brands.test.ts +63 -0
- package/dist/themes/brands.ts +121 -0
- package/dist/themes/createBrandTheme.test.ts +223 -0
- package/dist/themes/createBrandTheme.ts +298 -0
- package/dist/themes/index.ts +54 -0
- package/package.json +73 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026 SkandaDX
|
|
3
|
+
* This file is part of the SkandaDX organization.
|
|
4
|
+
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
@import '_actuator.css';
|
|
8
|
+
@import '_trigger.css';
|
|
9
|
+
@import '_overlay.css';
|
|
10
|
+
@import 'calendar.css';
|
|
11
|
+
|
|
12
|
+
/** DatePicker — a DateField that opens a Calendar. */
|
|
13
|
+
@layer skdx-components {
|
|
14
|
+
:where(.skdx-date-picker__content) {
|
|
15
|
+
padding: var(--skdx-space-2);
|
|
16
|
+
min-inline-size: 0;
|
|
17
|
+
display: flex;
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
gap: var(--skdx-space-2);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:where(.skdx-date-picker__content[hidden]) {
|
|
23
|
+
display: none;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
:where(.skdx-date-picker__calendar) {
|
|
27
|
+
padding: var(--skdx-space-2);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
:where(.skdx-date-picker__time-field) {
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
gap: var(--skdx-space-2);
|
|
34
|
+
padding-inline: var(--skdx-space-2);
|
|
35
|
+
padding-block-end: var(--skdx-space-2);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
:where(.skdx-date-picker__input) {
|
|
39
|
+
flex: 1;
|
|
40
|
+
min-inline-size: 0;
|
|
41
|
+
color: var(--skdx-color-field-text);
|
|
42
|
+
background: transparent;
|
|
43
|
+
border: 0;
|
|
44
|
+
font-size: var(--skdx-font-size-sm);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
:where(.skdx-date-picker__trigger):hover:not([data-disabled]) {
|
|
48
|
+
border-color: var(--skdx-color-field-border-hover);
|
|
49
|
+
background-color: var(--skdx-color-field-bg-hover);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Invalid paints the trigger, not the panel: the trigger is what a filled-in
|
|
53
|
+
form still shows after the panel closes. */
|
|
54
|
+
:where(.skdx-date-picker__trigger)[data-invalid] {
|
|
55
|
+
border-color: var(--skdx-color-field-border-invalid);
|
|
56
|
+
border-width: var(--skdx-border-width-thick);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@media (forced-colors: active) {
|
|
60
|
+
/* Forced colors flattens every author colour, so the invalid border is
|
|
61
|
+
gone unless it is redrawn thicker — thickness is one of the few author
|
|
62
|
+
decisions the mode preserves. */
|
|
63
|
+
:where(.skdx-date-picker__trigger)[data-invalid] {
|
|
64
|
+
border-style: double;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* _actuator.css groups this with Popover's and Tour's close buttons as
|
|
69
|
+
"icon-only, known to carry no label" and squares it off with
|
|
70
|
+
padding-inline: 0. This one does carry a label — the component's own doc
|
|
71
|
+
example is `<DatePickerClose>Close</DatePickerClose>` — so the square
|
|
72
|
+
clipped the word by 2px. Declared in skdx-components, so it wins over the
|
|
73
|
+
skdx-base default on layer order alone, the mechanism that file documents
|
|
74
|
+
for exactly this case. */
|
|
75
|
+
:where(.skdx-date-picker__close) {
|
|
76
|
+
inline-size: auto;
|
|
77
|
+
padding-inline: var(--skdx-control-padding-md);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026 SkandaDX
|
|
3
|
+
* This file is part of the SkandaDX organization.
|
|
4
|
+
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
@import '_actuator.css';
|
|
8
|
+
@import '_overlay.css';
|
|
9
|
+
|
|
10
|
+
@layer skdx-components {
|
|
11
|
+
:where(.skdx-dialog__content) {
|
|
12
|
+
position: fixed;
|
|
13
|
+
inset-block-start: 50%;
|
|
14
|
+
/* Physical, to pair with translate below (also physical): inset-inline-start would flip under RTL while translate kept shifting the same physical direction. */
|
|
15
|
+
left: 50%;
|
|
16
|
+
translate: -50% -50%;
|
|
17
|
+
|
|
18
|
+
inline-size: min(var(--skdx-overlay-width-md, 32rem), calc(100vw - var(--skdx-space-8)));
|
|
19
|
+
/* Caps at the viewport so a long dialog scrolls internally rather than pushing its own actions off-screen. */
|
|
20
|
+
max-block-size: calc(100dvh - var(--skdx-space-8));
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: column;
|
|
23
|
+
|
|
24
|
+
padding: var(--skdx-space-6);
|
|
25
|
+
gap: var(--skdx-space-4);
|
|
26
|
+
border-radius: var(--skdx-overlay-radius);
|
|
27
|
+
z-index: var(--skdx-z-index-modal);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* data-size sits inside :where(), unlike Button's sibling form, so this stays zero-specificity like the narrow-viewport rule below — source order is what lets that rule override a sized dialog on a phone. */
|
|
31
|
+
:where(.skdx-dialog__content[data-size='sm']) {
|
|
32
|
+
inline-size: min(var(--skdx-overlay-width-sm, 24rem), calc(100vw - var(--skdx-space-8)));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:where(.skdx-dialog__content[data-size='md']) {
|
|
36
|
+
inline-size: min(var(--skdx-overlay-width-md, 32rem), calc(100vw - var(--skdx-space-8)));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where(.skdx-dialog__content[data-size='lg']) {
|
|
40
|
+
inline-size: min(var(--skdx-overlay-width-lg, 48rem), calc(100vw - var(--skdx-space-8)));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/* A confirmation carries a title, a sentence and two buttons: the widest rung
|
|
44
|
+
leaves the sentence stranded across the panel. */
|
|
45
|
+
:where(.skdx-dialog__content[role='alertdialog']) {
|
|
46
|
+
inline-size: min(var(--skdx-overlay-width-sm, 24rem), calc(100vw - var(--skdx-space-8)));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* Severity accent on the panel; the derived Action button paints itself
|
|
50
|
+
through Button's own status axis, so no button rule belongs here. */
|
|
51
|
+
:where(.skdx-dialog__content[data-status]) {
|
|
52
|
+
border-block-start: var(--skdx-border-width-thicker) solid transparent;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:where(.skdx-dialog__content[data-status='info']) {
|
|
56
|
+
border-block-start-color: var(--skdx-color-status-info-border);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where(.skdx-dialog__content[data-status='success']) {
|
|
60
|
+
border-block-start-color: var(--skdx-color-status-success-border);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
:where(.skdx-dialog__content[data-status='warning']) {
|
|
64
|
+
border-block-start-color: var(--skdx-color-status-warning-border);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
:where(.skdx-dialog__content[data-status='danger']) {
|
|
68
|
+
border-block-start-color: var(--skdx-color-status-danger-border);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Ports rendering a native <dialog> keep it mounted while closed; author display: flex above beats the UA's dialog:not([open]) rule on origin, so it must be restated here. */
|
|
72
|
+
:where(dialog.skdx-dialog__content:not([open])) {
|
|
73
|
+
display: none;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
:where(.skdx-dialog__title) {
|
|
77
|
+
/* Renders an `<h2>`; the UA heading margin would double the content's own `gap`. */
|
|
78
|
+
margin: 0;
|
|
79
|
+
font-size: var(--skdx-font-size-lg);
|
|
80
|
+
font-weight: var(--skdx-font-weight-semibold);
|
|
81
|
+
line-height: var(--skdx-font-line-height-tight);
|
|
82
|
+
color: var(--skdx-color-text-default);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
:where(.skdx-dialog__description) {
|
|
86
|
+
/* Renders a `<p>`; same UA-margin issue as the title above. */
|
|
87
|
+
margin: 0;
|
|
88
|
+
font-size: var(--skdx-font-size-sm);
|
|
89
|
+
line-height: var(--skdx-font-line-height-relaxed);
|
|
90
|
+
color: var(--skdx-color-text-muted);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* body and footer are class hooks, not parts: the Vue, Svelte and Angular
|
|
94
|
+
recipes wrap their footer slot in one and Svelte also wraps the body;
|
|
95
|
+
React and Web Components leave both to the consumer. */
|
|
96
|
+
|
|
97
|
+
/* Scoped to a direct child of content, so a DialogClose reused inside .skdx-dialog__footer stays in flow instead of being pulled out by position: absolute. */
|
|
98
|
+
:where(.skdx-dialog__content) > :where(.skdx-dialog__close),
|
|
99
|
+
:where(.skdx-dialog__content)
|
|
100
|
+
> :where(:not([class*='skdx-']):has(> .skdx-dialog__close))
|
|
101
|
+
> :where(.skdx-dialog__close) {
|
|
102
|
+
position: absolute;
|
|
103
|
+
inset-block-start: var(--skdx-space-3);
|
|
104
|
+
/* Logical, so the close button moves to the left edge under RTL. */
|
|
105
|
+
inset-inline-end: var(--skdx-space-3);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
:where(.skdx-dialog__close) {
|
|
109
|
+
display: inline-flex;
|
|
110
|
+
align-items: center;
|
|
111
|
+
justify-content: center;
|
|
112
|
+
min-inline-size: var(--skdx-target-min);
|
|
113
|
+
min-block-size: var(--skdx-target-min);
|
|
114
|
+
|
|
115
|
+
color: var(--skdx-color-text-muted);
|
|
116
|
+
background: transparent;
|
|
117
|
+
border: 0;
|
|
118
|
+
border-radius: var(--skdx-radius-sm);
|
|
119
|
+
cursor: pointer;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
:where(.skdx-dialog__close):hover {
|
|
123
|
+
color: var(--skdx-color-text-default);
|
|
124
|
+
background-color: var(--skdx-color-action-ghost-bg-hover);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/* Narrow viewports: a centred card with margins wastes the screen, so the
|
|
128
|
+
dialog becomes a full-width sheet anchored to the bottom. */
|
|
129
|
+
@media (max-width: 40rem) {
|
|
130
|
+
:where(.skdx-dialog__content) {
|
|
131
|
+
inline-size: 100vw;
|
|
132
|
+
max-inline-size: 100vw;
|
|
133
|
+
inset-block-start: auto;
|
|
134
|
+
inset-block-end: 0;
|
|
135
|
+
inset-inline-start: 0;
|
|
136
|
+
translate: none;
|
|
137
|
+
border-start-start-radius: var(--skdx-overlay-radius);
|
|
138
|
+
border-start-end-radius: var(--skdx-overlay-radius);
|
|
139
|
+
border-end-start-radius: 0;
|
|
140
|
+
border-end-end-radius: 0;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
:where(.skdx-dialog__body) {
|
|
145
|
+
flex: 1;
|
|
146
|
+
min-block-size: 0;
|
|
147
|
+
overflow: auto;
|
|
148
|
+
--skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
|
|
149
|
+
|
|
150
|
+
font-size: var(--skdx-font-size-sm);
|
|
151
|
+
line-height: var(--skdx-font-line-height-relaxed);
|
|
152
|
+
color: var(--skdx-color-text-default);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
:where(.skdx-dialog__footer) {
|
|
156
|
+
display: flex;
|
|
157
|
+
justify-content: flex-end;
|
|
158
|
+
gap: var(--skdx-space-2);
|
|
159
|
+
flex-wrap: wrap;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026 SkandaDX
|
|
3
|
+
* This file is part of the SkandaDX organization.
|
|
4
|
+
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
@import '../base.css';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Divider — a one-pixel rule: a painted background, not a border, so one rule
|
|
11
|
+
* serves both orientations. Every package renders an `<hr>`, so `margin: 0` and
|
|
12
|
+
* `border: 0` are UA resets, not decoration.
|
|
13
|
+
*/
|
|
14
|
+
@layer skdx-components {
|
|
15
|
+
:where(.skdx-divider) {
|
|
16
|
+
--skdx-divider-color: var(--skdx-color-separator);
|
|
17
|
+
--skdx-divider-thickness: var(--skdx-border-width-thin);
|
|
18
|
+
--skdx-divider-inset: var(--skdx-space-4);
|
|
19
|
+
/* A vertical separator with nothing beside it wraps onto a flex line of
|
|
20
|
+
its own — a lone `stretch`ed item on an empty line has nothing to
|
|
21
|
+
stretch to and collapses to 0 height. This floor keeps it visible on
|
|
22
|
+
its own; stretch still wins whenever a taller row sibling is there to
|
|
23
|
+
set the line height. It is a separator-owned property rather than
|
|
24
|
+
`--skdx-control-height-md` because the height of a medium control has no
|
|
25
|
+
relationship to the content this divides. */
|
|
26
|
+
--skdx-divider-min-length: var(--skdx-control-height-md);
|
|
27
|
+
|
|
28
|
+
flex: none;
|
|
29
|
+
margin: 0;
|
|
30
|
+
border: 0;
|
|
31
|
+
background-color: var(--skdx-divider-color);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
:where(.skdx-divider)[data-orientation='horizontal'] {
|
|
35
|
+
inline-size: 100%;
|
|
36
|
+
block-size: var(--skdx-divider-thickness);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
:where(.skdx-divider)[data-orientation='vertical'] {
|
|
40
|
+
inline-size: var(--skdx-divider-thickness);
|
|
41
|
+
/* Fills the flex line it sits in rather than assuming a height. */
|
|
42
|
+
align-self: stretch;
|
|
43
|
+
block-size: auto;
|
|
44
|
+
min-block-size: var(--skdx-divider-min-length);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* A rule that starts and ends inside the padding of the list it
|
|
48
|
+
divides, rather than running the full bleed. Logical, so it flips with the
|
|
49
|
+
writing direction. */
|
|
50
|
+
:where(.skdx-divider)[data-inset='inset'][data-orientation='horizontal'] {
|
|
51
|
+
inline-size: auto;
|
|
52
|
+
margin-inline: var(--skdx-divider-inset);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:where(.skdx-divider)[data-inset='inset'][data-orientation='vertical'] {
|
|
56
|
+
margin-block: var(--skdx-divider-inset);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@media (forced-colors: active) {
|
|
60
|
+
:where(.skdx-divider) {
|
|
61
|
+
background-color: CanvasText;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026 SkandaDX
|
|
3
|
+
* This file is part of the SkandaDX organization.
|
|
4
|
+
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
@import '_actuator.css';
|
|
8
|
+
@import '_overlay.css';
|
|
9
|
+
|
|
10
|
+
/* data-side is physical and already resolved (DrawerContent runs a logical placement through resolvePhysicalSide), so inset-inline-start here would pin the wrong edge under RTL. */
|
|
11
|
+
@layer skdx-components {
|
|
12
|
+
:where(.skdx-drawer__content) {
|
|
13
|
+
position: fixed;
|
|
14
|
+
z-index: var(--skdx-z-index-modal);
|
|
15
|
+
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: column;
|
|
18
|
+
gap: var(--skdx-space-4);
|
|
19
|
+
|
|
20
|
+
padding: var(--skdx-space-6);
|
|
21
|
+
background-color: var(--skdx-color-surface-raised);
|
|
22
|
+
box-shadow: var(--skdx-shadow-overlay);
|
|
23
|
+
/* Square against the attached edge; radius is added per side below for the two free corners only. */
|
|
24
|
+
border-radius: 0;
|
|
25
|
+
max-block-size: 100dvh;
|
|
26
|
+
overflow: auto;
|
|
27
|
+
--skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Angular/Web Components keep a closed drawer mounted and [hidden]; author display: flex above beats it on origin, so it must be restated here. */
|
|
31
|
+
:where(.skdx-drawer__content)[hidden] {
|
|
32
|
+
display: none;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
:where(.skdx-drawer__content)[data-side='left'] {
|
|
36
|
+
inset-block: 0;
|
|
37
|
+
left: 0;
|
|
38
|
+
inline-size: min(20rem, 90vw);
|
|
39
|
+
border-top-right-radius: var(--skdx-overlay-radius);
|
|
40
|
+
border-bottom-right-radius: var(--skdx-overlay-radius);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
:where(.skdx-drawer__content)[data-side='right'] {
|
|
44
|
+
inset-block: 0;
|
|
45
|
+
right: 0;
|
|
46
|
+
inline-size: min(20rem, 90vw);
|
|
47
|
+
border-top-left-radius: var(--skdx-overlay-radius);
|
|
48
|
+
border-bottom-left-radius: var(--skdx-overlay-radius);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where(.skdx-drawer__content)[data-side='top'] {
|
|
52
|
+
inset-inline: 0;
|
|
53
|
+
inset-block-start: 0;
|
|
54
|
+
block-size: auto;
|
|
55
|
+
border-end-start-radius: var(--skdx-overlay-radius);
|
|
56
|
+
border-end-end-radius: var(--skdx-overlay-radius);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
:where(.skdx-drawer__content)[data-side='bottom'] {
|
|
60
|
+
inset-inline: 0;
|
|
61
|
+
inset-block-end: 0;
|
|
62
|
+
block-size: auto;
|
|
63
|
+
border-start-start-radius: var(--skdx-overlay-radius);
|
|
64
|
+
border-start-end-radius: var(--skdx-overlay-radius);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Sized on the axis the panel isn't pinned along: left/right drawers size on inline-size, top/bottom on block-size, each split per side/size pair. */
|
|
68
|
+
:where(.skdx-drawer__content)[data-side='left'][data-size='sm'],
|
|
69
|
+
:where(.skdx-drawer__content)[data-side='right'][data-size='sm'] {
|
|
70
|
+
inline-size: min(16rem, 90vw);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
:where(.skdx-drawer__content)[data-side='left'][data-size='md'],
|
|
74
|
+
:where(.skdx-drawer__content)[data-side='right'][data-size='md'] {
|
|
75
|
+
inline-size: min(20rem, 90vw);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
:where(.skdx-drawer__content)[data-side='left'][data-size='lg'],
|
|
79
|
+
:where(.skdx-drawer__content)[data-side='right'][data-size='lg'] {
|
|
80
|
+
inline-size: min(30rem, 90vw);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:where(.skdx-drawer__content)[data-side='top'][data-size='sm'],
|
|
84
|
+
:where(.skdx-drawer__content)[data-side='bottom'][data-size='sm'] {
|
|
85
|
+
block-size: min(12rem, 90dvh);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
:where(.skdx-drawer__content)[data-side='top'][data-size='md'],
|
|
89
|
+
:where(.skdx-drawer__content)[data-side='bottom'][data-size='md'] {
|
|
90
|
+
block-size: min(20rem, 90dvh);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
:where(.skdx-drawer__content)[data-side='top'][data-size='lg'],
|
|
94
|
+
:where(.skdx-drawer__content)[data-side='bottom'][data-size='lg'] {
|
|
95
|
+
block-size: min(30rem, 90dvh);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* -start/-end keyframes translate along a fixed physical axis (translateX has no logical form), pairing with the physical sides above without a direction rule. */
|
|
99
|
+
:where(.skdx-drawer__content)[data-side='left'][data-state='open'] {
|
|
100
|
+
animation: skdx-slide-in-from-start var(--skdx-motion-duration-normal) var(--skdx-motion-easing);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
:where(.skdx-drawer__content)[data-side='right'][data-state='open'] {
|
|
104
|
+
animation: skdx-slide-in-from-end var(--skdx-motion-duration-normal) var(--skdx-motion-easing);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
:where(.skdx-drawer__content)[data-side='top'][data-state='open'] {
|
|
108
|
+
animation: skdx-slide-in-from-top var(--skdx-motion-duration-normal) var(--skdx-motion-easing);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
:where(.skdx-drawer__content)[data-side='bottom'][data-state='open'] {
|
|
112
|
+
animation: skdx-slide-in-from-bottom var(--skdx-motion-duration-normal)
|
|
113
|
+
var(--skdx-motion-easing);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
:where(.skdx-drawer__title) {
|
|
117
|
+
font-size: var(--skdx-font-size-lg);
|
|
118
|
+
font-weight: var(--skdx-font-weight-semibold);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
:where(.skdx-drawer__description) {
|
|
122
|
+
font-size: var(--skdx-font-size-sm);
|
|
123
|
+
color: var(--skdx-color-text-muted);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* Scoped to a direct child of content, so a DrawerClose reused lower in the panel stays in flow (see dialog.css for the same pattern). */
|
|
127
|
+
:where(.skdx-drawer__content) > :where(.skdx-drawer__close),
|
|
128
|
+
:where(.skdx-drawer__content)
|
|
129
|
+
> :where(:not([class*='skdx-']):has(> .skdx-drawer__close))
|
|
130
|
+
> :where(.skdx-drawer__close) {
|
|
131
|
+
position: absolute;
|
|
132
|
+
inset-block-start: var(--skdx-space-3);
|
|
133
|
+
inset-inline-end: var(--skdx-space-3);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* Class hooks, not parts: the Vue, Svelte and Angular recipes wrap their
|
|
137
|
+
footer slot in one and Svelte also wraps the body; React and Web
|
|
138
|
+
Components leave both to the consumer. Same pair dialog.css ships. */
|
|
139
|
+
:where(.skdx-drawer__body) {
|
|
140
|
+
flex: 1;
|
|
141
|
+
min-block-size: 0;
|
|
142
|
+
overflow: auto;
|
|
143
|
+
--skdx-focus-ring-offset: var(--skdx-focus-ring-offset-inset);
|
|
144
|
+
|
|
145
|
+
font-size: var(--skdx-font-size-sm);
|
|
146
|
+
line-height: var(--skdx-font-line-height-relaxed);
|
|
147
|
+
color: var(--skdx-color-text-default);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
:where(.skdx-drawer__footer) {
|
|
151
|
+
display: flex;
|
|
152
|
+
justify-content: flex-end;
|
|
153
|
+
gap: var(--skdx-space-2);
|
|
154
|
+
flex-wrap: wrap;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
:where(.skdx-drawer__close) {
|
|
158
|
+
min-inline-size: var(--skdx-target-min);
|
|
159
|
+
min-block-size: var(--skdx-target-min);
|
|
160
|
+
color: var(--skdx-color-text-muted);
|
|
161
|
+
background: transparent;
|
|
162
|
+
border: 0;
|
|
163
|
+
border-radius: var(--skdx-radius-sm);
|
|
164
|
+
cursor: pointer;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026 SkandaDX
|
|
3
|
+
* This file is part of the SkandaDX organization.
|
|
4
|
+
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
@import '_actuator.css';
|
|
8
|
+
@import '../base.css';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Editable — text that becomes an input in place. Preview and input share padding
|
|
12
|
+
* and border width (transparent, not absent) so committing an edit never jumps.
|
|
13
|
+
*/
|
|
14
|
+
@layer skdx-components {
|
|
15
|
+
:where(.skdx-editable) {
|
|
16
|
+
display: inline-flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
gap: var(--skdx-space-2);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* cursor: default because clicking the label focuses the editor rather than selecting its text. */
|
|
22
|
+
:where(.skdx-editable__label) {
|
|
23
|
+
color: var(--skdx-color-text-muted);
|
|
24
|
+
font-size: var(--skdx-font-size-sm);
|
|
25
|
+
cursor: default;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
:where(.skdx-editable__preview) {
|
|
29
|
+
padding-inline: var(--skdx-space-2);
|
|
30
|
+
padding-block: var(--skdx-space-1);
|
|
31
|
+
border: var(--skdx-border-width-thin) solid transparent;
|
|
32
|
+
border-radius: var(--skdx-radius-sm);
|
|
33
|
+
font-size: var(--skdx-font-size-sm);
|
|
34
|
+
cursor: text;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:where(.skdx-editable__preview):hover:not([data-disabled], [data-readonly]) {
|
|
38
|
+
background-color: var(--skdx-color-surface-hover);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* `data-empty` is what `EditablePreview` publishes when it is showing the
|
|
42
|
+
placeholder instead of a value; there is no `data-placeholder`. */
|
|
43
|
+
:where(.skdx-editable__preview)[data-empty] {
|
|
44
|
+
color: var(--skdx-color-text-placeholder);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* No :focus-visible rule here on purpose: base.css's single outline already covers .skdx-* elements. */
|
|
48
|
+
:where(.skdx-editable__preview)[data-disabled] {
|
|
49
|
+
color: var(--skdx-color-text-disabled);
|
|
50
|
+
cursor: not-allowed;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Keeps its tab stop and normal text colour; only the text caret (an edit affordance) is withdrawn. */
|
|
54
|
+
:where(.skdx-editable__preview)[data-readonly] {
|
|
55
|
+
cursor: default;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* Border is transparent rather than absent, so invalid can colour it in without moving the box. */
|
|
59
|
+
:where(.skdx-editable__preview)[data-invalid] {
|
|
60
|
+
border-color: var(--skdx-color-field-border-invalid);
|
|
61
|
+
color: var(--skdx-color-text-danger);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
:where(.skdx-editable__input) {
|
|
65
|
+
padding-inline: var(--skdx-space-2);
|
|
66
|
+
padding-block: var(--skdx-space-1);
|
|
67
|
+
color: var(--skdx-color-field-text);
|
|
68
|
+
background-color: var(--skdx-color-field-bg);
|
|
69
|
+
border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border-focus);
|
|
70
|
+
border-radius: var(--skdx-radius-sm);
|
|
71
|
+
font-size: var(--skdx-font-size-sm);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:where(.skdx-editable__textarea) {
|
|
75
|
+
inline-size: 100%;
|
|
76
|
+
padding: var(--skdx-space-2);
|
|
77
|
+
color: var(--skdx-color-field-text);
|
|
78
|
+
background-color: var(--skdx-color-field-bg);
|
|
79
|
+
border: var(--skdx-border-width-thin) solid var(--skdx-color-field-border);
|
|
80
|
+
border-radius: var(--skdx-radius-sm);
|
|
81
|
+
font: inherit;
|
|
82
|
+
resize: vertical;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* :user-invalid isn't paired in here the way TextField pairs it, because this input has no form owner. */
|
|
86
|
+
:where(.skdx-editable__input, .skdx-editable__textarea)[data-invalid] {
|
|
87
|
+
border-color: var(--skdx-color-field-border-invalid);
|
|
88
|
+
border-width: var(--skdx-border-width-thick);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
:where(.skdx-editable__input):disabled,
|
|
92
|
+
:where(.skdx-editable__textarea):disabled {
|
|
93
|
+
color: var(--skdx-color-text-disabled);
|
|
94
|
+
background-color: var(--skdx-color-field-bg-disabled);
|
|
95
|
+
border-color: var(--skdx-color-border-disabled);
|
|
96
|
+
cursor: not-allowed;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* :read-only, not [data-readonly]: the editors render the native attribute, and the pseudo-class is the truthful test of what the platform applied. */
|
|
100
|
+
:where(.skdx-editable__input):read-only,
|
|
101
|
+
:where(.skdx-editable__textarea):read-only {
|
|
102
|
+
background-color: var(--skdx-color-field-bg-readonly);
|
|
103
|
+
cursor: default;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@media (forced-colors: active) {
|
|
107
|
+
/* Forced colours strips the invalid border colour, so this needs a system colour plus a dashed style to stay distinguishable. */
|
|
108
|
+
:where(.skdx-editable__preview)[data-invalid],
|
|
109
|
+
:where(.skdx-editable__input)[data-invalid],
|
|
110
|
+
:where(.skdx-editable__textarea)[data-invalid] {
|
|
111
|
+
border-color: LinkText;
|
|
112
|
+
border-style: dashed;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
:where(.skdx-editable__preview)[data-disabled],
|
|
116
|
+
:where(.skdx-editable__input):disabled,
|
|
117
|
+
:where(.skdx-editable__textarea):disabled {
|
|
118
|
+
color: GrayText;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2026 SkandaDX
|
|
3
|
+
* This file is part of the SkandaDX organization.
|
|
4
|
+
* Licensed under the MIT License. See LICENSE in the repository root.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
@import '../base.css';
|
|
8
|
+
|
|
9
|
+
/** EmptyState — a placeholder for a region with nothing to show, centred by default. */
|
|
10
|
+
@layer skdx-components {
|
|
11
|
+
:where(.skdx-empty-state) {
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
align-items: center;
|
|
15
|
+
gap: var(--skdx-space-4);
|
|
16
|
+
padding: var(--skdx-space-8);
|
|
17
|
+
text-align: center;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
:where(.skdx-empty-state)[data-align='start'] {
|
|
21
|
+
align-items: start;
|
|
22
|
+
text-align: start;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:where(.skdx-empty-state)[data-size='sm'] {
|
|
26
|
+
padding: var(--skdx-space-4);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:where(.skdx-empty-state)[data-size='md'] {
|
|
30
|
+
padding: var(--skdx-space-8);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:where(.skdx-empty-state)[data-size='lg'] {
|
|
34
|
+
padding: var(--skdx-space-12);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:where(.skdx-empty-state__icon) {
|
|
38
|
+
display: flex;
|
|
39
|
+
align-items: center;
|
|
40
|
+
justify-content: center;
|
|
41
|
+
inline-size: var(--skdx-icon-size-lg);
|
|
42
|
+
block-size: var(--skdx-icon-size-lg);
|
|
43
|
+
color: var(--skdx-color-text-muted);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:where(.skdx-empty-state)[data-size='sm'] :where(.skdx-empty-state__icon) {
|
|
47
|
+
inline-size: var(--skdx-icon-size-md);
|
|
48
|
+
block-size: var(--skdx-icon-size-md);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:where(.skdx-empty-state)[data-size='lg'] :where(.skdx-empty-state__icon) {
|
|
52
|
+
inline-size: calc(var(--skdx-icon-size-lg) * 1.5);
|
|
53
|
+
block-size: calc(var(--skdx-icon-size-lg) * 1.5);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
:where(.skdx-empty-state__title) {
|
|
57
|
+
max-inline-size: 32rem;
|
|
58
|
+
overflow-wrap: anywhere;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
:where(.skdx-empty-state__description) {
|
|
62
|
+
max-inline-size: 32rem;
|
|
63
|
+
overflow-wrap: anywhere;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
:where(.skdx-empty-state__content) {
|
|
67
|
+
inline-size: 100%;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
:where(.skdx-empty-state__actions) {
|
|
71
|
+
display: flex;
|
|
72
|
+
flex-wrap: wrap;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
gap: var(--skdx-space-2);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
:where(.skdx-empty-state)[data-align='start'] :where(.skdx-empty-state__actions) {
|
|
78
|
+
justify-content: start;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* Angular cannot omit the wrapper around unprojected content, so an empty one collapses. */
|
|
82
|
+
:where(.skdx-empty-state__content:empty) {
|
|
83
|
+
display: none;
|
|
84
|
+
}
|
|
85
|
+
}
|