@dryui/ui 2.0.2 → 4.0.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/dist/accordion/accordion-button-trigger.svelte +1 -0
- package/dist/accordion/accordion-root.svelte +1 -1
- package/dist/adjust/adjust.svelte +12 -8
- package/dist/alpha-slider/alpha-slider-input.svelte +14 -13
- package/dist/app-frame/app-frame.svelte +4 -1
- package/dist/aspect-ratio/aspect-ratio.svelte +7 -6
- package/dist/aurora/aurora.svelte +144 -81
- package/dist/avatar/avatar.svelte +22 -15
- package/dist/badge/badge.svelte +8 -16
- package/dist/beam/beam.svelte +20 -21
- package/dist/button/button.svelte +47 -25
- package/dist/button/button.svelte.d.ts +14 -0
- package/dist/button-group/button-group.svelte +4 -5
- package/dist/calendar/calendar-button-grid.svelte +11 -4
- package/dist/calendar/calendar-button-grid.svelte.d.ts +2 -2
- package/dist/calendar/calendar-event-legend.svelte +63 -0
- package/dist/calendar/calendar-event-legend.svelte.d.ts +6 -0
- package/dist/calendar/calendar-header.svelte +3 -1
- package/dist/calendar/calendar-heading.svelte +21 -9
- package/dist/calendar/calendar-nav-button.svelte +15 -2
- package/dist/calendar/calendar-root.svelte +94 -11
- package/dist/calendar/calendar-root.svelte.d.ts +10 -1
- package/dist/calendar/calendar-week.svelte +515 -0
- package/dist/calendar/calendar-week.svelte.d.ts +12 -0
- package/dist/calendar/calendar.meta.js +2 -2
- package/dist/calendar/context.svelte.d.ts +19 -0
- package/dist/calendar/index.d.ts +11 -1
- package/dist/calendar/index.js +5 -1
- package/dist/calendar/types.d.ts +32 -0
- package/dist/calendar/types.js +1 -0
- package/dist/calendar/week-utils.d.ts +12 -0
- package/dist/calendar/week-utils.js +133 -0
- package/dist/carousel/carousel-button-dots.svelte +12 -6
- package/dist/carousel/carousel-root.svelte +201 -17
- package/dist/carousel/carousel-root.svelte.d.ts +1 -1
- package/dist/carousel/carousel-viewport.svelte +19 -1
- package/dist/chart/chart-bars.svelte +43 -19
- package/dist/chart/chart-donut.svelte +50 -23
- package/dist/chart/chart-root.svelte +19 -4
- package/dist/chart/chart-stacked-bar.svelte +3 -2
- package/dist/chart/series-color.d.ts +7 -0
- package/dist/chart/series-color.js +11 -0
- package/dist/chat-thread/chat-thread.svelte +15 -126
- package/dist/chat-thread/chat-thread.svelte.d.ts +4 -7
- package/dist/chat-thread/index.d.ts +4 -7
- package/dist/checkbox/checkbox-input.svelte +48 -41
- package/dist/chip/chip-button.svelte +14 -17
- package/dist/chip/chip-button.svelte.d.ts +2 -3
- package/dist/chip-group/chip-group-root.svelte +6 -4
- package/dist/chromatic-aberration/chromatic-aberration.svelte +9 -6
- package/dist/chromatic-shift/chromatic-shift.svelte +7 -8
- package/dist/code-block/code-block-button.svelte +72 -40
- package/dist/color-picker/color-picker-area.svelte +20 -25
- package/dist/color-picker/color-picker-channel-input.svelte +0 -1
- package/dist/color-picker/color-picker-input-hue-slider.svelte +12 -9
- package/dist/color-picker/color-picker-root.svelte +18 -17
- package/dist/color-picker/color-picker-swatch.svelte +17 -16
- package/dist/combobox/combobox-content.svelte +4 -15
- package/dist/combobox/combobox-input-root.svelte +6 -3
- package/dist/combobox/combobox-input-root.svelte.d.ts +2 -1
- package/dist/combobox/combobox-input.svelte +13 -10
- package/dist/combobox/combobox-item.svelte +9 -4
- package/dist/command-palette/command-palette-dialog-root.svelte +1 -0
- package/dist/command-palette/command-palette-item.svelte +7 -4
- package/dist/context-menu/context-menu-content.svelte +7 -15
- package/dist/data-grid/data-grid-button-input-column.svelte +2 -2
- package/dist/data-grid/data-grid-cell.svelte +1 -1
- package/dist/data-grid/data-grid-input-select-all.svelte +1 -1
- package/dist/data-grid/data-grid-input-select-cell.svelte +1 -1
- package/dist/date-field/date-field-segment.svelte +10 -12
- package/dist/date-picker/datepicker-button-calendar.svelte +2 -2
- package/dist/date-picker/datepicker-button-calendar.svelte.d.ts +2 -2
- package/dist/date-picker/index.d.ts +4 -1
- package/dist/date-range-picker/date-range-picker-button-calendar.svelte +2 -2
- package/dist/date-range-picker/date-range-picker-button-calendar.svelte.d.ts +2 -2
- package/dist/date-range-picker/date-range-picker-button-trigger.svelte +151 -40
- package/dist/date-range-picker/date-range-picker-button-trigger.svelte.d.ts +1 -0
- package/dist/date-range-picker/index.d.ts +4 -1
- package/dist/diagram/edge-routing.js +18 -7
- package/dist/diagram/layout.js +31 -16
- package/dist/displacement/displacement.svelte +29 -43
- package/dist/drag-and-drop/drag-and-drop-root.svelte +17 -5
- package/dist/drag-and-drop/index.d.ts +14 -1
- package/dist/drop-zone/drop-zone.svelte +7 -4
- package/dist/dropdown-menu/dropdown-menu-content.svelte +15 -16
- package/dist/field/field-description.svelte +6 -9
- package/dist/field/field-error.svelte +6 -10
- package/dist/file-select/file-select-root.svelte +77 -22
- package/dist/file-select/file-select-root.svelte.d.ts +4 -1
- package/dist/file-upload/file-upload-dropzone.svelte +21 -21
- package/dist/file-upload/file-upload-item.svelte +1 -2
- package/dist/file-upload/file-upload-list.svelte +1 -1
- package/dist/flip-card/flip-card-root.svelte +2 -2
- package/dist/float-button/context.svelte.d.ts +2 -0
- package/dist/float-button/float-button-action.svelte +41 -11
- package/dist/float-button/float-button-root.svelte +52 -13
- package/dist/float-button/float-button-trigger.svelte +25 -12
- package/dist/format-bytes/format-bytes.svelte +2 -5
- package/dist/format-date/format-date.svelte +2 -6
- package/dist/format-number/format-number.svelte +2 -6
- package/dist/gauge/gauge.svelte +9 -2
- package/dist/glass/glass.svelte +4 -3
- package/dist/glow/glow.svelte +0 -5
- package/dist/god-rays/god-rays.svelte +6 -6
- package/dist/gradient-mesh/gradient-mesh.svelte +52 -44
- package/dist/halftone/halftone.svelte +17 -28
- package/dist/heading/heading.svelte +0 -6
- package/dist/hover-card/hover-card-content.svelte +8 -5
- package/dist/hover-card/hover-card.meta.js +2 -2
- package/dist/icon/icon.svelte +24 -13
- package/dist/icon/icon.svelte.d.ts +2 -2
- package/dist/icon-swap/icon-swap.svelte +4 -3
- package/dist/icon-swap/icon-swap.svelte.d.ts +2 -1
- package/dist/image/image.svelte +5 -13
- package/dist/image-comparison/image-comparison.svelte +39 -45
- package/dist/index.d.ts +3 -5
- package/dist/index.js +1 -2
- package/dist/input/input.svelte +88 -9
- package/dist/input/input.svelte.d.ts +24 -1
- package/dist/internal/anchored-overlay-content.svelte.d.ts +12 -6
- package/dist/internal/anchored-overlay-content.svelte.js +13 -16
- package/dist/internal/calendar-event-layout.d.ts +53 -0
- package/dist/internal/calendar-event-layout.js +191 -0
- package/dist/internal/calendar-grid-button.svelte +618 -76
- package/dist/internal/calendar-grid-button.svelte.d.ts +2 -2
- package/dist/internal/calendar-grid-utils.d.ts +3 -0
- package/dist/internal/calendar-grid-utils.js +24 -0
- package/dist/internal/form-control-wrapper-attrs.d.ts +9 -0
- package/dist/internal/form-control-wrapper-attrs.js +1 -0
- package/dist/internal/menu-item.svelte +1 -0
- package/dist/internal/modal-content.svelte +2 -6
- package/dist/internal/motion.d.ts +1 -1
- package/dist/internal/motion.js +5 -2
- package/dist/internal/picker-popover-content.svelte +15 -17
- package/dist/kbd/kbd.svelte +1 -1
- package/dist/link/link.svelte +8 -5
- package/dist/link-preview/link-preview-content.svelte +12 -15
- package/dist/link-preview/link-preview-trigger.svelte +2 -5
- package/dist/listbox/listbox-item.svelte +13 -18
- package/dist/listbox/listbox-root.svelte +4 -9
- package/dist/logo-mark/logo-mark.svelte +31 -31
- package/dist/map/map-marker.svelte +2 -2
- package/dist/map/map-root.svelte +11 -2
- package/dist/markdown-renderer/markdown-renderer.svelte +141 -164
- package/dist/marquee/marquee.svelte +12 -13
- package/dist/mask-reveal/mask-reveal.svelte +14 -27
- package/dist/mega-menu/mega-menu-column.svelte +1 -1
- package/dist/mega-menu/mega-menu-link.svelte +7 -7
- package/dist/mega-menu/mega-menu-panel.svelte +18 -32
- package/dist/menubar/menubar-content.svelte +18 -20
- package/dist/menubar/menubar-item.svelte +1 -0
- package/dist/menubar/menubar-menu.svelte +1 -2
- package/dist/menubar/menubar-root.svelte +1 -12
- package/dist/motion/enter.svelte +15 -14
- package/dist/motion/enter.svelte.d.ts +2 -1
- package/dist/motion/exit.svelte +6 -5
- package/dist/motion/exit.svelte.d.ts +2 -1
- package/dist/motion/stagger.svelte +10 -9
- package/dist/motion/stagger.svelte.d.ts +2 -1
- package/dist/multi-select-combobox/multi-select-combobox-content.svelte +4 -15
- package/dist/multi-select-combobox/multi-select-combobox-input.svelte +6 -5
- package/dist/multi-select-combobox/multi-select-combobox-item.svelte +25 -31
- package/dist/multi-select-combobox/multi-select-combobox-root-input.svelte +19 -19
- package/dist/navigation-menu/navigation-menu-link.svelte +0 -1
- package/dist/noise/noise.svelte +20 -19
- package/dist/notification-center/notification-center-item.svelte +1 -1
- package/dist/notification-center/notification-center-panel.svelte +17 -19
- package/dist/number-input/number-input-button.svelte +78 -12
- package/dist/number-input/number-input-button.svelte.d.ts +15 -1
- package/dist/numeric/numeric.svelte +27 -12
- package/dist/numeric/numeric.svelte.d.ts +2 -1
- package/dist/option-picker/option-picker-item.svelte +8 -15
- package/dist/option-picker/option-picker-preview.svelte +34 -22
- package/dist/pagination/pagination-root.svelte +7 -0
- package/dist/pin-input/pin-input-root.svelte +2 -11
- package/dist/popover/popover-content.svelte +7 -4
- package/dist/progress/progress.svelte +2 -2
- package/dist/prompt-input/prompt-input-button-textarea.svelte +2 -10
- package/dist/qr-code/qr-code.svelte +78 -38
- package/dist/qr-code/qr-code.svelte.d.ts +1 -1
- package/dist/radio-group/radio-group-item-input.svelte +60 -14
- package/dist/radio-group/radio-group-item-input.svelte.d.ts +9 -2
- package/dist/range-calendar/index.d.ts +4 -1
- package/dist/range-calendar/range-calendar-grid-button.svelte +2 -2
- package/dist/range-calendar/range-calendar-grid-button.svelte.d.ts +2 -2
- package/dist/relative-time/relative-time.svelte +15 -15
- package/dist/reveal/reveal.svelte +12 -24
- package/dist/rich-text-editor/rich-text-editor-content.svelte +0 -3
- package/dist/rich-text-editor/rich-text-editor-toolbar-button-input.svelte +0 -1
- package/dist/scroll-to-top/scroll-to-top-button.svelte +5 -3
- package/dist/scroll-to-top/scroll-to-top-button.svelte.d.ts +2 -2
- package/dist/segmented-control/segmented-control-root.svelte +0 -3
- package/dist/select/select-content.svelte +15 -16
- package/dist/select/select-item.svelte +1 -0
- package/dist/select/select-root-input.svelte +5 -4
- package/dist/select/select-root-input.svelte.d.ts +2 -2
- package/dist/select/select-trigger-button.svelte +122 -16
- package/dist/select/select-trigger-button.svelte.d.ts +2 -2
- package/dist/shader-canvas/shader-canvas.svelte +11 -20
- package/dist/shimmer/shimmer.svelte +28 -25
- package/dist/skeleton/skeleton.svelte +18 -23
- package/dist/slider/slider-input.svelte +8 -7
- package/dist/sparkline/sparkline.svelte +1 -1
- package/dist/splitter/splitter-handle.svelte +3 -3
- package/dist/splitter/splitter-root.svelte +13 -12
- package/dist/spotlight/spotlight.svelte +30 -62
- package/dist/star-rating/star-rating-root.svelte +3 -4
- package/dist/stepper/stepper-step-button.svelte +2 -2
- package/dist/table-of-contents/table-of-contents-root.svelte +5 -16
- package/dist/tabs/tabs-content.svelte +7 -1
- package/dist/tag/tag-button.svelte +70 -64
- package/dist/tags-input/tags-input-root.svelte +2 -10
- package/dist/text/index.d.ts +2 -3
- package/dist/text/text.svelte +6 -12
- package/dist/text/text.svelte.d.ts +2 -3
- package/dist/textarea/textarea.svelte +91 -16
- package/dist/textarea/textarea.svelte.d.ts +20 -1
- package/dist/themes/aurora.css +106 -112
- package/dist/themes/component-defaults.css +47 -0
- package/dist/themes/dark.css +49 -223
- package/dist/themes/default.css +45 -175
- package/dist/themes/midnight.css +50 -65
- package/dist/themes/terminal.css +40 -74
- package/dist/time-input/time-input.svelte +5 -3
- package/dist/time-input/time-input.svelte.d.ts +2 -2
- package/dist/timeline/timeline-title.svelte +0 -6
- package/dist/toast/toast-root.svelte +10 -10
- package/dist/toggle/toggle-button.svelte +17 -6
- package/dist/toggle-group/toggle-group-root.svelte +3 -3
- package/dist/token-scope/index.d.ts +6 -0
- package/dist/token-scope/index.js +1 -0
- package/dist/token-scope/token-scope.meta.js +7 -0
- package/dist/toolbar/toolbar-root.svelte +4 -5
- package/dist/tooltip/tooltip-content.svelte +24 -13
- package/dist/tour/tour-root.css +6 -2
- package/dist/transfer/transfer-list-input.svelte +1 -2
- package/dist/transfer/transfer-root.svelte +0 -10
- package/dist/tree/tree-item-label.svelte +0 -2
- package/dist/tree/tree-root.svelte +7 -5
- package/dist/typography/blockquote.svelte +2 -2
- package/dist/typography/code.svelte +2 -2
- package/dist/typography/heading.svelte +2 -2
- package/dist/typography/index.d.ts +0 -1
- package/dist/typography/text.svelte +2 -13
- package/dist/video-embed/video-embed-button.svelte +9 -9
- package/package.json +13 -12
- package/src/accordion/accordion-button-trigger.svelte +60 -0
- package/src/accordion/accordion-content.svelte +37 -0
- package/src/accordion/accordion-item.svelte +62 -0
- package/src/accordion/accordion-root.svelte +61 -0
- package/src/accordion/accordion.meta.ts +7 -0
- package/src/accordion/context.svelte.ts +19 -0
- package/src/accordion/index.ts +41 -0
- package/src/adjust/adjust.meta.ts +7 -0
- package/src/adjust/adjust.svelte +71 -0
- package/src/adjust/index.ts +20 -0
- package/src/alert/alert.meta.ts +7 -0
- package/src/alert/alert.svelte +174 -0
- package/src/alert/index.ts +18 -0
- package/src/alert-dialog/alert-dialog-body.svelte +23 -0
- package/src/alert-dialog/alert-dialog-button-action.svelte +15 -0
- package/src/alert-dialog/alert-dialog-button-cancel.svelte +18 -0
- package/src/alert-dialog/alert-dialog-content.svelte +26 -0
- package/src/alert-dialog/alert-dialog-footer.svelte +29 -0
- package/src/alert-dialog/alert-dialog-header.svelte +26 -0
- package/src/alert-dialog/alert-dialog-overlay.svelte +34 -0
- package/src/alert-dialog/alert-dialog-root.svelte +31 -0
- package/src/alert-dialog/alert-dialog-trigger.svelte +56 -0
- package/src/alert-dialog/alert-dialog.meta.ts +7 -0
- package/src/alert-dialog/context.svelte.ts +11 -0
- package/src/alert-dialog/index.ts +43 -0
- package/src/alpha-slider/alpha-slider-input.svelte +165 -0
- package/src/alpha-slider/alpha-slider.meta.ts +7 -0
- package/src/alpha-slider/index.ts +10 -0
- package/src/app-frame/app-frame.meta.ts +8 -0
- package/src/app-frame/app-frame.svelte +141 -0
- package/src/app-frame/index.ts +10 -0
- package/src/aspect-ratio/aspect-ratio.meta.ts +7 -0
- package/src/aspect-ratio/aspect-ratio.svelte +29 -0
- package/src/aspect-ratio/index.ts +9 -0
- package/src/aurora/aurora.meta.ts +8 -0
- package/src/aurora/aurora.svelte +526 -0
- package/src/aurora/index.ts +24 -0
- package/src/avatar/avatar.meta.ts +7 -0
- package/src/avatar/avatar.svelte +213 -0
- package/src/avatar/index.ts +15 -0
- package/src/backdrop/backdrop.meta.ts +7 -0
- package/src/backdrop/backdrop.svelte +51 -0
- package/src/backdrop/index.ts +3 -0
- package/src/badge/badge.meta.ts +7 -0
- package/src/badge/badge.svelte +338 -0
- package/src/badge/index.ts +12 -0
- package/src/beam/beam.meta.ts +8 -0
- package/src/beam/beam.svelte +118 -0
- package/src/beam/index.ts +17 -0
- package/src/border-beam/border-beam.meta.ts +8 -0
- package/src/border-beam/border-beam.svelte +42 -0
- package/src/border-beam/index.ts +10 -0
- package/src/breadcrumb/breadcrumb-item.svelte +23 -0
- package/src/breadcrumb/breadcrumb-link.svelte +60 -0
- package/src/breadcrumb/breadcrumb-list.svelte +28 -0
- package/src/breadcrumb/breadcrumb-root.svelte +14 -0
- package/src/breadcrumb/breadcrumb-separator.svelte +25 -0
- package/src/breadcrumb/breadcrumb.meta.ts +7 -0
- package/src/breadcrumb/index.ts +44 -0
- package/src/button/button.meta.ts +7 -0
- package/src/button/button.svelte +675 -0
- package/src/button/index.ts +29 -0
- package/src/button-group/button-group.meta.ts +7 -0
- package/src/button-group/button-group.svelte +61 -0
- package/src/button-group/context.svelte.ts +15 -0
- package/src/button-group/index.ts +7 -0
- package/src/calendar/calendar-button-grid.svelte +58 -0
- package/src/calendar/calendar-button-next.svelte +13 -0
- package/src/calendar/calendar-button-prev.svelte +13 -0
- package/src/calendar/calendar-event-legend.svelte +63 -0
- package/src/calendar/calendar-header.svelte +28 -0
- package/src/calendar/calendar-heading.svelte +42 -0
- package/src/calendar/calendar-nav-button.svelte +39 -0
- package/src/calendar/calendar-root.svelte +211 -0
- package/src/calendar/calendar-week.svelte +515 -0
- package/src/calendar/calendar.meta.ts +7 -0
- package/src/calendar/context.svelte.ts +43 -0
- package/src/calendar/index.ts +57 -0
- package/src/calendar/types.ts +39 -0
- package/src/calendar/week-utils.ts +175 -0
- package/src/carousel/carousel-button-dots.svelte +74 -0
- package/src/carousel/carousel-button-next.svelte +13 -0
- package/src/carousel/carousel-button-prev.svelte +13 -0
- package/src/carousel/carousel-button-thumbnails.svelte +82 -0
- package/src/carousel/carousel-nav-button.svelte +31 -0
- package/src/carousel/carousel-root.svelte +432 -0
- package/src/carousel/carousel-slide.svelte +39 -0
- package/src/carousel/carousel-viewport.svelte +91 -0
- package/src/carousel/carousel.meta.ts +7 -0
- package/src/carousel/context.svelte.ts +22 -0
- package/src/carousel/index.ts +35 -0
- package/src/chart/chart-area.svelte +76 -0
- package/src/chart/chart-bars.svelte +102 -0
- package/src/chart/chart-donut.svelte +145 -0
- package/src/chart/chart-horizontal-bar.svelte +67 -0
- package/src/chart/chart-line.svelte +66 -0
- package/src/chart/chart-root.svelte +257 -0
- package/src/chart/chart-stacked-bar.svelte +77 -0
- package/src/chart/chart-x-axis.svelte +50 -0
- package/src/chart/chart-y-axis.svelte +71 -0
- package/src/chart/chart.meta.ts +7 -0
- package/src/chart/context.svelte.ts +29 -0
- package/src/chart/index.ts +86 -0
- package/src/chart/series-color.ts +12 -0
- package/src/chat-thread/chat-thread.meta.ts +7 -0
- package/src/chat-thread/chat-thread.svelte +97 -0
- package/src/chat-thread/index.ts +10 -0
- package/src/checkbox/checkbox-input.svelte +259 -0
- package/src/checkbox/checkbox.meta.ts +7 -0
- package/src/checkbox/index.ts +7 -0
- package/src/chip/chip-button.svelte +170 -0
- package/src/chip/chip.meta.ts +7 -0
- package/src/chip/index.ts +29 -0
- package/src/chip-group/chip-group-button-item.svelte +36 -0
- package/src/chip-group/chip-group-label.svelte +26 -0
- package/src/chip-group/chip-group-root.svelte +129 -0
- package/src/chip-group/chip-group.meta.ts +19 -0
- package/src/chip-group/context.svelte.ts +11 -0
- package/src/chip-group/index.ts +26 -0
- package/src/chromatic-aberration/chromatic-aberration.meta.ts +7 -0
- package/src/chromatic-aberration/chromatic-aberration.svelte +75 -0
- package/src/chromatic-aberration/index.ts +10 -0
- package/src/chromatic-shift/chromatic-shift.meta.ts +7 -0
- package/src/chromatic-shift/chromatic-shift.svelte +226 -0
- package/src/chromatic-shift/index.ts +5 -0
- package/src/clipboard/clipboard.meta.ts +7 -0
- package/src/clipboard/clipboard.svelte +38 -0
- package/src/clipboard/index.ts +3 -0
- package/src/code-block/code-block-button.svelte +371 -0
- package/src/code-block/code-block.meta.ts +7 -0
- package/src/code-block/highlighter/css.ts +387 -0
- package/src/code-block/highlighter/generic.ts +24 -0
- package/src/code-block/highlighter/index.ts +30 -0
- package/src/code-block/highlighter/svelte.ts +597 -0
- package/src/code-block/highlighter/types.ts +7 -0
- package/src/code-block/index.ts +11 -0
- package/src/collapsible/collapsible-button-trigger.svelte +50 -0
- package/src/collapsible/collapsible-content.svelte +57 -0
- package/src/collapsible/collapsible-root.svelte +48 -0
- package/src/collapsible/collapsible.meta.ts +7 -0
- package/src/collapsible/context.svelte.ts +10 -0
- package/src/collapsible/index.ts +30 -0
- package/src/color-picker/color-picker-area.svelte +181 -0
- package/src/color-picker/color-picker-button-eyedropper.svelte +61 -0
- package/src/color-picker/color-picker-channel-input.svelte +85 -0
- package/src/color-picker/color-picker-input-alpha-slider.svelte +144 -0
- package/src/color-picker/color-picker-input-hue-slider.svelte +146 -0
- package/src/color-picker/color-picker-input.svelte +129 -0
- package/src/color-picker/color-picker-root.svelte +185 -0
- package/src/color-picker/color-picker-swatch.svelte +116 -0
- package/src/color-picker/color-picker.meta.ts +7 -0
- package/src/color-picker/context.svelte.ts +19 -0
- package/src/color-picker/index.ts +45 -0
- package/src/combobox/combobox-content.svelte +124 -0
- package/src/combobox/combobox-empty.svelte +23 -0
- package/src/combobox/combobox-group.svelte +35 -0
- package/src/combobox/combobox-input-root.svelte +109 -0
- package/src/combobox/combobox-input.svelte +348 -0
- package/src/combobox/combobox-item.svelte +150 -0
- package/src/combobox/combobox.meta.ts +7 -0
- package/src/combobox/context.svelte.ts +22 -0
- package/src/combobox/index.ts +44 -0
- package/src/command-palette/command-palette-dialog-root.svelte +184 -0
- package/src/command-palette/command-palette-empty.svelte +30 -0
- package/src/command-palette/command-palette-group.svelte +37 -0
- package/src/command-palette/command-palette-input.svelte +91 -0
- package/src/command-palette/command-palette-item.svelte +100 -0
- package/src/command-palette/command-palette-list.svelte +52 -0
- package/src/command-palette/command-palette-separator.svelte +17 -0
- package/src/command-palette/command-palette.meta.ts +7 -0
- package/src/command-palette/context.svelte.ts +19 -0
- package/src/command-palette/index.ts +35 -0
- package/src/container/container.meta.ts +7 -0
- package/src/container/container.svelte +66 -0
- package/src/container/index.ts +10 -0
- package/src/context-menu/context-menu-content.svelte +114 -0
- package/src/context-menu/context-menu-group.svelte +15 -0
- package/src/context-menu/context-menu-item.svelte +27 -0
- package/src/context-menu/context-menu-label.svelte +15 -0
- package/src/context-menu/context-menu-root.svelte +26 -0
- package/src/context-menu/context-menu-separator.svelte +10 -0
- package/src/context-menu/context-menu-trigger.svelte +35 -0
- package/src/context-menu/context-menu.meta.ts +7 -0
- package/src/context-menu/context.svelte.ts +7 -0
- package/src/context-menu/index.ts +35 -0
- package/src/data-grid/context.svelte.ts +28 -0
- package/src/data-grid/data-grid-body.svelte +17 -0
- package/src/data-grid/data-grid-button-expand-trigger.svelte +45 -0
- package/src/data-grid/data-grid-button-input-column.svelte +263 -0
- package/src/data-grid/data-grid-button-pagination.svelte +130 -0
- package/src/data-grid/data-grid-cell.svelte +37 -0
- package/src/data-grid/data-grid-expandable-row.svelte +58 -0
- package/src/data-grid/data-grid-header.svelte +21 -0
- package/src/data-grid/data-grid-input-select-all.svelte +52 -0
- package/src/data-grid/data-grid-input-select-cell.svelte +40 -0
- package/src/data-grid/data-grid-root.svelte +229 -0
- package/src/data-grid/data-grid-row.svelte +38 -0
- package/src/data-grid/data-grid-table.svelte +21 -0
- package/src/data-grid/data-grid.meta.ts +7 -0
- package/src/data-grid/index.ts +75 -0
- package/src/date-field/context.svelte.ts +50 -0
- package/src/date-field/date-field-input-root.svelte +284 -0
- package/src/date-field/date-field-segment.svelte +180 -0
- package/src/date-field/date-field-separator.svelte +25 -0
- package/src/date-field/date-field.meta.ts +7 -0
- package/src/date-field/index.ts +23 -0
- package/src/date-picker/context.svelte.ts +27 -0
- package/src/date-picker/date-picker.meta.ts +7 -0
- package/src/date-picker/datepicker-button-calendar.svelte +58 -0
- package/src/date-picker/datepicker-button-trigger.svelte +72 -0
- package/src/date-picker/datepicker-content.svelte +35 -0
- package/src/date-picker/datepicker-input-root.svelte +137 -0
- package/src/date-picker/index.ts +27 -0
- package/src/date-range-picker/context.svelte.ts +30 -0
- package/src/date-range-picker/date-range-picker-button-calendar.svelte +96 -0
- package/src/date-range-picker/date-range-picker-button-preset.svelte +25 -0
- package/src/date-range-picker/date-range-picker-button-trigger.svelte +188 -0
- package/src/date-range-picker/date-range-picker-content.svelte +35 -0
- package/src/date-range-picker/date-range-picker-root.svelte +155 -0
- package/src/date-range-picker/date-range-picker.meta.ts +7 -0
- package/src/date-range-picker/index.ts +30 -0
- package/src/date-time-input/date-time-input.meta.ts +7 -0
- package/src/date-time-input/date-time-input.svelte +104 -0
- package/src/date-time-input/index.ts +7 -0
- package/src/description-list/description-list-description.svelte +23 -0
- package/src/description-list/description-list-item.svelte +34 -0
- package/src/description-list/description-list-root.svelte +22 -0
- package/src/description-list/description-list-term.svelte +23 -0
- package/src/description-list/description-list.meta.ts +7 -0
- package/src/description-list/index.ts +35 -0
- package/src/diagram/diagram.meta.ts +8 -0
- package/src/diagram/diagram.svelte +966 -0
- package/src/diagram/edge-routing.ts +782 -0
- package/src/diagram/index.ts +23 -0
- package/src/diagram/layout.ts +2024 -0
- package/src/diagram/types.ts +262 -0
- package/src/dialog/context.svelte.ts +10 -0
- package/src/dialog/dialog-body.svelte +23 -0
- package/src/dialog/dialog-close.svelte +18 -0
- package/src/dialog/dialog-content.svelte +18 -0
- package/src/dialog/dialog-footer.svelte +35 -0
- package/src/dialog/dialog-header.svelte +26 -0
- package/src/dialog/dialog-overlay.svelte +28 -0
- package/src/dialog/dialog-root.svelte +31 -0
- package/src/dialog/dialog-trigger.svelte +56 -0
- package/src/dialog/dialog.meta.ts +7 -0
- package/src/dialog/index.ts +39 -0
- package/src/displacement/displacement.meta.ts +7 -0
- package/src/displacement/displacement.svelte +139 -0
- package/src/displacement/index.ts +5 -0
- package/src/drag-and-drop/context.svelte.ts +21 -0
- package/src/drag-and-drop/drag-and-drop-group.svelte +37 -0
- package/src/drag-and-drop/drag-and-drop-handle.svelte +106 -0
- package/src/drag-and-drop/drag-and-drop-item.svelte +151 -0
- package/src/drag-and-drop/drag-and-drop-root.svelte +876 -0
- package/src/drag-and-drop/drag-and-drop.meta.ts +7 -0
- package/src/drag-and-drop/group-context.svelte.ts +20 -0
- package/src/drag-and-drop/index.ts +34 -0
- package/src/drawer/context.svelte.ts +11 -0
- package/src/drawer/drawer-body.svelte +33 -0
- package/src/drawer/drawer-close.svelte +18 -0
- package/src/drawer/drawer-dialog-content.svelte +18 -0
- package/src/drawer/drawer-footer.svelte +27 -0
- package/{dist/card/card-footer.svelte → src/drawer/drawer-header.svelte} +8 -10
- package/src/drawer/drawer-overlay.svelte +34 -0
- package/src/drawer/drawer-root.svelte +35 -0
- package/src/drawer/drawer-trigger.svelte +56 -0
- package/src/drawer/drawer.meta.ts +7 -0
- package/src/drawer/index.ts +43 -0
- package/src/drop-zone/drop-zone.meta.ts +7 -0
- package/src/drop-zone/drop-zone.svelte +95 -0
- package/src/drop-zone/index.ts +6 -0
- package/src/dropdown-menu/context.svelte.ts +7 -0
- package/src/dropdown-menu/dropdown-menu-content.svelte +137 -0
- package/src/dropdown-menu/dropdown-menu-group.svelte +15 -0
- package/src/dropdown-menu/dropdown-menu-item.svelte +27 -0
- package/src/dropdown-menu/dropdown-menu-label.svelte +15 -0
- package/src/dropdown-menu/dropdown-menu-root.svelte +26 -0
- package/src/dropdown-menu/dropdown-menu-separator.svelte +10 -0
- package/src/dropdown-menu/dropdown-menu-trigger.svelte +65 -0
- package/src/dropdown-menu/dropdown-menu.meta.ts +7 -0
- package/src/dropdown-menu/index.ts +35 -0
- package/src/enter/enter.meta.ts +8 -0
- package/src/enter/index.ts +1 -0
- package/src/exit/exit.meta.ts +8 -0
- package/src/exit/index.ts +1 -0
- package/src/field/field-description.svelte +38 -0
- package/src/field/field-error.svelte +40 -0
- package/src/field/field-root.svelte +98 -0
- package/src/field/field.meta.ts +7 -0
- package/src/field/index.ts +15 -0
- package/src/fieldset/fieldset-content.svelte +21 -0
- package/src/fieldset/fieldset-description.svelte +26 -0
- package/src/fieldset/fieldset-legend.svelte +26 -0
- package/src/fieldset/fieldset-root.svelte +27 -0
- package/src/fieldset/fieldset.meta.ts +7 -0
- package/src/fieldset/index.ts +35 -0
- package/src/file-select/context.svelte.ts +10 -0
- package/src/file-select/file-select-button-clear.svelte +37 -0
- package/src/file-select/file-select-button-trigger.svelte +26 -0
- package/src/file-select/file-select-root.svelte +168 -0
- package/src/file-select/file-select-value.svelte +43 -0
- package/src/file-select/file-select.meta.ts +7 -0
- package/src/file-select/index.ts +29 -0
- package/src/file-upload/context.svelte.ts +17 -0
- package/src/file-upload/file-upload-button-item-delete.svelte +36 -0
- package/src/file-upload/file-upload-button-trigger.svelte +31 -0
- package/src/file-upload/file-upload-dropzone.svelte +145 -0
- package/src/file-upload/file-upload-input-root.svelte +144 -0
- package/src/file-upload/file-upload-item.svelte +63 -0
- package/src/file-upload/file-upload-list.svelte +37 -0
- package/src/file-upload/file-upload.meta.ts +7 -0
- package/src/file-upload/index.ts +52 -0
- package/src/flip-card/context.svelte.ts +8 -0
- package/src/flip-card/flip-card-back.svelte +34 -0
- package/src/flip-card/flip-card-front.svelte +25 -0
- package/src/flip-card/flip-card-root.svelte +116 -0
- package/src/flip-card/flip-card.meta.ts +7 -0
- package/src/flip-card/index.ts +15 -0
- package/src/float-button/context.svelte.ts +10 -0
- package/src/float-button/float-button-action.svelte +56 -0
- package/src/float-button/float-button-root.svelte +102 -0
- package/src/float-button/float-button-trigger.svelte +43 -0
- package/src/float-button/float-button.meta.ts +7 -0
- package/src/float-button/index.ts +29 -0
- package/src/focus-trap/focus-trap.meta.ts +7 -0
- package/src/focus-trap/focus-trap.svelte +16 -0
- package/src/focus-trap/index.ts +3 -0
- package/src/format-bytes/format-bytes.meta.ts +7 -0
- package/src/format-bytes/format-bytes.svelte +60 -0
- package/src/format-bytes/index.ts +3 -0
- package/src/format-date/format-date.meta.ts +7 -0
- package/src/format-date/format-date.svelte +80 -0
- package/src/format-date/index.ts +3 -0
- package/src/format-number/format-number.meta.ts +7 -0
- package/src/format-number/format-number.svelte +59 -0
- package/src/format-number/index.ts +3 -0
- package/src/gauge/gauge.meta.ts +7 -0
- package/src/gauge/gauge.svelte +143 -0
- package/src/gauge/index.ts +2 -0
- package/src/glass/glass.meta.ts +7 -0
- package/src/glass/glass.svelte +49 -0
- package/src/glass/index.ts +11 -0
- package/src/glow/glow.meta.ts +7 -0
- package/src/glow/glow.svelte +60 -0
- package/src/glow/index.ts +15 -0
- package/src/god-rays/god-rays.meta.ts +8 -0
- package/src/god-rays/god-rays.svelte +132 -0
- package/src/god-rays/index.ts +17 -0
- package/src/gradient-mesh/gradient-mesh.meta.ts +7 -0
- package/src/gradient-mesh/gradient-mesh.svelte +302 -0
- package/src/gradient-mesh/index.ts +5 -0
- package/src/halftone/halftone.meta.ts +7 -0
- package/src/halftone/halftone.svelte +93 -0
- package/src/halftone/index.ts +14 -0
- package/src/heading/heading.meta.ts +7 -0
- package/src/heading/heading.svelte +120 -0
- package/src/heading/index.ts +17 -0
- package/src/hotkey/hotkey.meta.ts +7 -0
- package/src/hotkey/index.ts +2 -0
- package/src/hover-card/context.svelte.ts +1 -0
- package/src/hover-card/hover-card-content.svelte +121 -0
- package/src/hover-card/hover-card-root.svelte +11 -0
- package/src/hover-card/hover-card-trigger.svelte +109 -0
- package/src/hover-card/hover-card.meta.ts +7 -0
- package/src/hover-card/index.ts +19 -0
- package/src/icon/icon.meta.ts +7 -0
- package/src/icon/icon.svelte +92 -0
- package/src/icon/index.ts +11 -0
- package/src/icon-swap/icon-swap.meta.ts +7 -0
- package/src/icon-swap/icon-swap.svelte +48 -0
- package/src/icon-swap/index.ts +1 -0
- package/src/image/image.meta.ts +7 -0
- package/src/image/image.svelte +73 -0
- package/src/image/index.ts +3 -0
- package/src/image-comparison/image-comparison.meta.ts +7 -0
- package/src/image-comparison/image-comparison.svelte +272 -0
- package/src/image-comparison/index.ts +3 -0
- package/src/index.ts +863 -0
- package/src/infinite-scroll/index.ts +3 -0
- package/src/infinite-scroll/infinite-scroll.meta.ts +7 -0
- package/src/infinite-scroll/infinite-scroll.svelte +109 -0
- package/src/input/index.ts +8 -0
- package/src/input/input.meta.ts +7 -0
- package/src/input/input.svelte +261 -0
- package/src/input-group/context.svelte.ts +9 -0
- package/src/input-group/index.ts +45 -0
- package/src/input-group/input-group-action-button.svelte +29 -0
- package/src/input-group/input-group-input.svelte +57 -0
- package/src/input-group/input-group-prefix.svelte +43 -0
- package/src/input-group/input-group-root.svelte +108 -0
- package/src/input-group/input-group-select.svelte +70 -0
- package/src/input-group/input-group-separator.svelte +38 -0
- package/src/input-group/input-group-suffix.svelte +43 -0
- package/src/input-group/input-group.meta.ts +8 -0
- package/src/internal/anchored-overlay-content.svelte.ts +42 -0
- package/src/internal/calendar-event-layout.ts +294 -0
- package/src/internal/calendar-grid-button.svelte +805 -0
- package/src/internal/calendar-grid-utils.ts +123 -0
- package/src/internal/close-button-base.svelte +35 -0
- package/src/internal/color-aliases.ts +37 -0
- package/src/internal/date-family-controller.svelte.ts +165 -0
- package/src/internal/form-control-wrapper-attrs.ts +20 -0
- package/src/internal/menu-group.svelte +15 -0
- package/src/internal/menu-item.svelte +89 -0
- package/src/internal/menu-label.svelte +24 -0
- package/src/internal/menu-root-state.svelte.ts +73 -0
- package/src/internal/menu-separator.svelte +19 -0
- package/src/internal/modal-content.svelte +351 -0
- package/src/internal/motion.ts +85 -0
- package/src/internal/nav-arrow-button.svelte +42 -0
- package/src/internal/picker-popover-content.svelte +111 -0
- package/src/kbd/index.ts +9 -0
- package/src/kbd/kbd.meta.ts +7 -0
- package/src/kbd/kbd.svelte +56 -0
- package/src/label/index.ts +7 -0
- package/src/label/label.meta.ts +7 -0
- package/src/label/label.svelte +74 -0
- package/src/link/index.ts +7 -0
- package/src/link/link.meta.ts +7 -0
- package/src/link/link.svelte +104 -0
- package/src/link-preview/context.svelte.ts +15 -0
- package/src/link-preview/index.ts +19 -0
- package/src/link-preview/link-preview-content.svelte +87 -0
- package/src/link-preview/link-preview-root.svelte +72 -0
- package/src/link-preview/link-preview-trigger.svelte +61 -0
- package/src/link-preview/link-preview.meta.ts +7 -0
- package/src/list/context.svelte.ts +7 -0
- package/src/list/index.ts +27 -0
- package/src/list/list-item-icon.svelte +22 -0
- package/src/list/list-item-text.svelte +42 -0
- package/src/list/list-item.svelte +116 -0
- package/src/list/list-root.svelte +71 -0
- package/src/list/list-subheader.svelte +25 -0
- package/src/list/list.meta.ts +7 -0
- package/src/listbox/context.svelte.ts +10 -0
- package/src/listbox/index.ts +12 -0
- package/src/listbox/listbox-item.svelte +90 -0
- package/src/listbox/listbox-root.svelte +115 -0
- package/src/listbox/listbox.meta.ts +7 -0
- package/src/logo-mark/index.ts +12 -0
- package/src/logo-mark/logo-mark.meta.ts +7 -0
- package/src/logo-mark/logo-mark.svelte +154 -0
- package/src/map/context.svelte.ts +19 -0
- package/src/map/index.ts +77 -0
- package/src/map/map-controls.svelte +68 -0
- package/src/map/map-layer.svelte +101 -0
- package/src/map/map-marker.svelte +83 -0
- package/src/map/map-popup.svelte +71 -0
- package/src/map/map-root.svelte +244 -0
- package/src/map/map.meta.ts +7 -0
- package/src/markdown-renderer/index.ts +4 -0
- package/src/markdown-renderer/markdown-renderer.meta.ts +7 -0
- package/src/markdown-renderer/markdown-renderer.svelte +202 -0
- package/src/marquee/index.ts +3 -0
- package/src/marquee/marquee.meta.ts +7 -0
- package/src/marquee/marquee.svelte +218 -0
- package/src/mask-reveal/index.ts +5 -0
- package/src/mask-reveal/mask-reveal.meta.ts +7 -0
- package/src/mask-reveal/mask-reveal.svelte +214 -0
- package/src/mega-menu/context.svelte.ts +17 -0
- package/src/mega-menu/index.ts +31 -0
- package/src/mega-menu/mega-menu-button-trigger.svelte +37 -0
- package/src/mega-menu/mega-menu-column.svelte +34 -0
- package/src/mega-menu/mega-menu-item.svelte +51 -0
- package/src/mega-menu/mega-menu-link.svelte +137 -0
- package/src/mega-menu/mega-menu-panel.svelte +134 -0
- package/src/mega-menu/mega-menu-root.svelte +98 -0
- package/src/mega-menu/mega-menu.meta.ts +7 -0
- package/src/menubar/context.svelte.ts +24 -0
- package/src/menubar/index.ts +35 -0
- package/src/menubar/menubar-button-trigger.svelte +75 -0
- package/src/menubar/menubar-content.svelte +147 -0
- package/src/menubar/menubar-item.svelte +96 -0
- package/{dist/card/card-header.svelte → src/menubar/menubar-label.svelte} +6 -10
- package/src/menubar/menubar-menu.svelte +32 -0
- package/src/menubar/menubar-root.svelte +78 -0
- package/src/menubar/menubar-separator.svelte +17 -0
- package/src/menubar/menubar.meta.ts +7 -0
- package/src/motion/enter.svelte +29 -0
- package/src/motion/enter.ts +46 -0
- package/src/motion/exit.svelte +21 -0
- package/src/motion/index.ts +7 -0
- package/src/motion/leave.ts +41 -0
- package/src/motion/motion.meta.ts +8 -0
- package/src/motion/stagger.svelte +30 -0
- package/src/multi-select-combobox/context.svelte.ts +31 -0
- package/src/multi-select-combobox/index.ts +43 -0
- package/src/multi-select-combobox/multi-select-combobox-content.svelte +118 -0
- package/src/multi-select-combobox/multi-select-combobox-empty.svelte +28 -0
- package/src/multi-select-combobox/multi-select-combobox-group.svelte +33 -0
- package/src/multi-select-combobox/multi-select-combobox-input.svelte +161 -0
- package/src/multi-select-combobox/multi-select-combobox-item.svelte +140 -0
- package/src/multi-select-combobox/multi-select-combobox-root-input.svelte +286 -0
- package/src/multi-select-combobox/multi-select-combobox-selection-item.svelte +63 -0
- package/src/multi-select-combobox/multi-select-combobox-selection-list.svelte +29 -0
- package/src/multi-select-combobox/multi-select-combobox-selection-remove-button.svelte +36 -0
- package/src/multi-select-combobox/multi-select-combobox.meta.ts +7 -0
- package/src/navigation-menu/context.svelte.ts +18 -0
- package/src/navigation-menu/index.ts +50 -0
- package/src/navigation-menu/navigation-menu-content.svelte +55 -0
- package/src/navigation-menu/navigation-menu-item.svelte +35 -0
- package/src/navigation-menu/navigation-menu-link.svelte +49 -0
- package/src/navigation-menu/navigation-menu-list.svelte +47 -0
- package/src/navigation-menu/navigation-menu-root.svelte +46 -0
- package/src/navigation-menu/navigation-menu-trigger-button.svelte +62 -0
- package/src/navigation-menu/navigation-menu.meta.ts +7 -0
- package/src/noise/index.ts +15 -0
- package/src/noise/noise.meta.ts +7 -0
- package/src/noise/noise.svelte +179 -0
- package/src/notification-center/context.svelte.ts +24 -0
- package/src/notification-center/index.ts +28 -0
- package/src/notification-center/notification-center-group.svelte +30 -0
- package/src/notification-center/notification-center-item.svelte +70 -0
- package/src/notification-center/notification-center-panel.svelte +162 -0
- package/src/notification-center/notification-center-root.svelte +73 -0
- package/src/notification-center/notification-center-trigger-button.svelte +28 -0
- package/src/notification-center/notification-center.meta.ts +7 -0
- package/src/number-input/index.ts +7 -0
- package/src/number-input/number-input-button.svelte +222 -0
- package/src/number-input/number-input.meta.ts +7 -0
- package/src/numeric/index.ts +1 -0
- package/src/numeric/numeric.meta.ts +7 -0
- package/src/numeric/numeric.svelte +64 -0
- package/src/option-picker/context.svelte.ts +11 -0
- package/src/option-picker/index.ts +52 -0
- package/src/option-picker/option-picker-description.svelte +25 -0
- package/src/option-picker/option-picker-item.svelte +242 -0
- package/src/option-picker/option-picker-label.svelte +24 -0
- package/src/option-picker/option-picker-meta.svelte +24 -0
- package/src/option-picker/option-picker-preview.svelte +155 -0
- package/src/option-picker/option-picker-root.svelte +82 -0
- package/src/option-picker/option-picker.meta.ts +8 -0
- package/src/pagination/context.svelte.ts +12 -0
- package/src/pagination/index.ts +35 -0
- package/src/pagination/pagination-content.svelte +27 -0
- package/src/pagination/pagination-ellipsis.svelte +19 -0
- package/src/pagination/pagination-item.svelte +14 -0
- package/src/pagination/pagination-link-button.svelte +28 -0
- package/src/pagination/pagination-nav-button.svelte +28 -0
- package/src/pagination/pagination-next-button.svelte +13 -0
- package/src/pagination/pagination-previous-button.svelte +13 -0
- package/src/pagination/pagination-root.svelte +48 -0
- package/src/pagination/pagination.meta.ts +7 -0
- package/src/phone-input/index.ts +9 -0
- package/src/phone-input/phone-input-select.svelte +286 -0
- package/src/phone-input/phone-input.meta.ts +7 -0
- package/src/pin-input/context.svelte.ts +18 -0
- package/src/pin-input/index.ts +31 -0
- package/src/pin-input/pin-input-cell.svelte +117 -0
- package/src/pin-input/pin-input-group.svelte +24 -0
- package/src/pin-input/pin-input-root.svelte +315 -0
- package/src/pin-input/pin-input-separator.svelte +28 -0
- package/src/pin-input/pin-input.meta.ts +7 -0
- package/src/popover/context.svelte.ts +13 -0
- package/src/popover/index.ts +15 -0
- package/src/popover/popover-content.svelte +112 -0
- package/src/popover/popover-root.svelte +39 -0
- package/src/popover/popover-trigger.svelte +62 -0
- package/src/popover/popover.meta.ts +7 -0
- package/src/portal/index.ts +3 -0
- package/src/portal/portal.meta.ts +7 -0
- package/src/portal/portal.svelte +14 -0
- package/src/progress/index.ts +14 -0
- package/src/progress/progress.meta.ts +7 -0
- package/src/progress/progress.svelte +302 -0
- package/src/progress-ring/index.ts +8 -0
- package/src/progress-ring/progress-ring.meta.ts +7 -0
- package/src/progress-ring/progress-ring.svelte +169 -0
- package/src/prompt-input/index.ts +16 -0
- package/src/prompt-input/prompt-input-button-textarea.svelte +171 -0
- package/src/prompt-input/prompt-input.meta.ts +7 -0
- package/src/qr-code/index.ts +3 -0
- package/src/qr-code/qr-code.meta.ts +7 -0
- package/src/qr-code/qr-code.svelte +149 -0
- package/src/radio-group/context.svelte.ts +10 -0
- package/src/radio-group/index.ts +12 -0
- package/src/radio-group/radio-group-item-input.svelte +197 -0
- package/src/radio-group/radio-group.meta.ts +7 -0
- package/src/radio-group/radio-group.svelte +117 -0
- package/src/range-calendar/context.svelte.ts +22 -0
- package/src/range-calendar/index.ts +16 -0
- package/src/range-calendar/range-calendar-grid-button.svelte +77 -0
- package/src/range-calendar/range-calendar-root.svelte +146 -0
- package/src/range-calendar/range-calendar.meta.ts +7 -0
- package/src/rating/index.ts +7 -0
- package/src/rating/rating-button-input.svelte +265 -0
- package/src/rating/rating.meta.ts +7 -0
- package/src/relative-time/index.ts +3 -0
- package/src/relative-time/relative-time.meta.ts +7 -0
- package/src/relative-time/relative-time.svelte +71 -0
- package/src/reveal/index.ts +7 -0
- package/src/reveal/reveal.meta.ts +8 -0
- package/src/reveal/reveal.svelte +190 -0
- package/src/rich-text-editor/index.ts +19 -0
- package/src/rich-text-editor/rich-text-editor-content.svelte +184 -0
- package/src/rich-text-editor/rich-text-editor-root.svelte +213 -0
- package/src/rich-text-editor/rich-text-editor-toolbar-button-input.svelte +541 -0
- package/src/rich-text-editor/rich-text-editor.meta.ts +7 -0
- package/src/scroll-area/index.ts +3 -0
- package/src/scroll-area/scroll-area.meta.ts +7 -0
- package/src/scroll-area/scroll-area.svelte +85 -0
- package/src/scroll-to-top/index.ts +8 -0
- package/src/scroll-to-top/scroll-to-top-button.svelte +89 -0
- package/src/scroll-to-top/scroll-to-top.meta.ts +7 -0
- package/src/segmented-control/context.svelte.ts +10 -0
- package/src/segmented-control/index.ts +12 -0
- package/src/segmented-control/segmented-control-item-button.svelte +37 -0
- package/src/segmented-control/segmented-control-root.svelte +125 -0
- package/src/segmented-control/segmented-control.meta.ts +7 -0
- package/src/select/context.svelte.ts +17 -0
- package/src/select/index.ts +27 -0
- package/src/select/select-content.svelte +202 -0
- package/src/select/select-item.svelte +118 -0
- package/src/select/select-root-input.svelte +105 -0
- package/src/select/select-trigger-button.svelte +183 -0
- package/src/select/select-value.svelte +27 -0
- package/src/select/select.meta.ts +7 -0
- package/src/separator/index.ts +9 -0
- package/src/separator/separator.meta.ts +7 -0
- package/src/separator/separator.svelte +70 -0
- package/src/shader-canvas/index.ts +28 -0
- package/src/shader-canvas/presets.ts +212 -0
- package/src/shader-canvas/shader-canvas.meta.ts +7 -0
- package/src/shader-canvas/shader-canvas.svelte +115 -0
- package/src/shimmer/index.ts +10 -0
- package/src/shimmer/shimmer.meta.ts +7 -0
- package/src/shimmer/shimmer.svelte +125 -0
- package/src/sidebar/context.svelte.ts +10 -0
- package/src/sidebar/index.ts +66 -0
- package/src/sidebar/sidebar-content.svelte +43 -0
- package/src/sidebar/sidebar-footer.svelte +28 -0
- package/src/sidebar/sidebar-group-label.svelte +45 -0
- package/src/sidebar/sidebar-group.svelte +29 -0
- package/src/sidebar/sidebar-header.svelte +34 -0
- package/src/sidebar/sidebar-item.svelte +57 -0
- package/src/sidebar/sidebar-root.svelte +76 -0
- package/src/sidebar/sidebar-trigger-button.svelte +29 -0
- package/src/sidebar/sidebar.meta.ts +7 -0
- package/src/skeleton/index.ts +9 -0
- package/src/skeleton/skeleton.meta.ts +7 -0
- package/src/skeleton/skeleton.svelte +97 -0
- package/src/slider/index.ts +12 -0
- package/src/slider/slider-input.svelte +277 -0
- package/src/slider/slider.meta.ts +7 -0
- package/src/spacer/index.ts +8 -0
- package/src/spacer/spacer.meta.ts +7 -0
- package/src/spacer/spacer.svelte +84 -0
- package/src/sparkline/index.ts +3 -0
- package/src/sparkline/sparkline.meta.ts +7 -0
- package/src/sparkline/sparkline.svelte +113 -0
- package/src/spinner/index.ts +9 -0
- package/src/spinner/spinner.meta.ts +7 -0
- package/src/spinner/spinner.svelte +110 -0
- package/src/splitter/context.svelte.ts +11 -0
- package/src/splitter/index.ts +15 -0
- package/src/splitter/splitter-handle.svelte +171 -0
- package/src/splitter/splitter-panel.svelte +28 -0
- package/src/splitter/splitter-root.svelte +128 -0
- package/src/splitter/splitter.meta.ts +7 -0
- package/src/spotlight/index.ts +5 -0
- package/src/spotlight/spotlight.meta.ts +8 -0
- package/src/spotlight/spotlight.svelte +249 -0
- package/src/stagger/index.ts +1 -0
- package/src/stagger/stagger.meta.ts +8 -0
- package/src/star-rating/index.ts +16 -0
- package/src/star-rating/star-rating-root.svelte +109 -0
- package/src/star-rating/star-rating.meta.ts +7 -0
- package/src/stepper/context.svelte.ts +9 -0
- package/src/stepper/index.ts +23 -0
- package/src/stepper/stepper-list.svelte +37 -0
- package/src/stepper/stepper-root.svelte +51 -0
- package/src/stepper/stepper-separator.svelte +45 -0
- package/src/stepper/stepper-step-button.svelte +113 -0
- package/src/stepper/stepper.meta.ts +7 -0
- package/src/svg/index.ts +5 -0
- package/src/svg/svg.meta.ts +7 -0
- package/src/svg/svg.svelte +19 -0
- package/src/table/index.ts +39 -0
- package/src/table/table-body.svelte +14 -0
- package/src/table/table-caption.svelte +25 -0
- package/src/table/table-cell.svelte +24 -0
- package/src/table/table-footer.svelte +21 -0
- package/src/table/table-head.svelte +26 -0
- package/src/table/table-header.svelte +21 -0
- package/src/table/table-root.svelte +64 -0
- package/src/table/table-row.svelte +28 -0
- package/src/table/table.meta.ts +7 -0
- package/src/table-of-contents/context.svelte.ts +14 -0
- package/src/table-of-contents/index.ts +20 -0
- package/src/table-of-contents/table-of-contents-item.svelte +86 -0
- package/src/table-of-contents/table-of-contents-list.svelte +87 -0
- package/src/table-of-contents/table-of-contents-root.svelte +88 -0
- package/src/table-of-contents/table-of-contents.meta.ts +7 -0
- package/src/tabs/context.svelte.ts +16 -0
- package/src/tabs/index.ts +43 -0
- package/src/tabs/tabs-content.svelte +42 -0
- package/src/tabs/tabs-list.svelte +102 -0
- package/src/tabs/tabs-root.svelte +59 -0
- package/src/tabs/tabs-trigger-button.svelte +41 -0
- package/src/tabs/tabs.meta.ts +7 -0
- package/src/tag/index.ts +12 -0
- package/src/tag/tag-button.svelte +254 -0
- package/src/tag/tag.meta.ts +7 -0
- package/src/tags-input/context.svelte.ts +13 -0
- package/src/tags-input/index.ts +32 -0
- package/src/tags-input/tags-input-input.svelte +85 -0
- package/src/tags-input/tags-input-list.svelte +20 -0
- package/src/tags-input/tags-input-root.svelte +136 -0
- package/src/tags-input/tags-input-tag-delete-button.svelte +31 -0
- package/src/tags-input/tags-input-tag.svelte +61 -0
- package/src/tags-input/tags-input.meta.ts +7 -0
- package/src/text/index.ts +20 -0
- package/src/text/text.meta.ts +7 -0
- package/src/text/text.svelte +150 -0
- package/src/textarea/index.ts +7 -0
- package/src/textarea/textarea.meta.ts +7 -0
- package/src/textarea/textarea.svelte +210 -0
- package/src/theme-toggle/index.ts +30 -0
- package/src/theme-toggle/theme-controller.svelte.ts +171 -0
- package/src/theme-toggle/theme-flash.ts +39 -0
- package/src/theme-toggle/theme-toggle.meta.ts +7 -0
- package/src/theme-toggle/theme-toggle.svelte +199 -0
- package/src/themes/aurora.css +243 -0
- package/src/themes/component-defaults.css +47 -0
- package/src/themes/dark.css +317 -0
- package/src/themes/default.css +618 -0
- package/src/themes/midnight.css +147 -0
- package/src/themes/terminal.css +161 -0
- package/src/themes/token-scope.ts +1 -0
- package/src/time-input/index.ts +10 -0
- package/src/time-input/time-input.meta.ts +7 -0
- package/src/time-input/time-input.svelte +157 -0
- package/src/timeline/index.ts +40 -0
- package/src/timeline/timeline-content.svelte +22 -0
- package/src/timeline/timeline-description.svelte +22 -0
- package/src/timeline/timeline-icon.svelte +41 -0
- package/src/timeline/timeline-item.svelte +57 -0
- package/src/timeline/timeline-root.svelte +43 -0
- package/src/timeline/timeline-time.svelte +22 -0
- package/src/timeline/timeline-title.svelte +55 -0
- package/src/timeline/timeline.meta.ts +7 -0
- package/src/toast/context.svelte.ts +7 -0
- package/src/toast/index.ts +33 -0
- package/src/toast/toast-action-button.svelte +16 -0
- package/src/toast/toast-close-button.svelte +35 -0
- package/src/toast/toast-description.svelte +24 -0
- package/src/toast/toast-provider.svelte +120 -0
- package/src/toast/toast-root.svelte +169 -0
- package/src/toast/toast-title.svelte +25 -0
- package/src/toast/toast.meta.ts +7 -0
- package/src/toggle/index.ts +9 -0
- package/src/toggle/toggle-button.svelte +218 -0
- package/src/toggle/toggle.meta.ts +7 -0
- package/src/toggle-group/context.svelte.ts +12 -0
- package/src/toggle-group/index.ts +18 -0
- package/src/toggle-group/toggle-group-item-button.svelte +36 -0
- package/src/toggle-group/toggle-group-root.svelte +106 -0
- package/src/toggle-group/toggle-group.meta.ts +7 -0
- package/src/token-scope/index.ts +8 -0
- package/src/token-scope/token-scope.meta.ts +7 -0
- package/src/toolbar/context.svelte.ts +6 -0
- package/src/toolbar/index.ts +23 -0
- package/src/toolbar/toolbar-button.svelte +16 -0
- package/src/toolbar/toolbar-link.svelte +46 -0
- package/src/toolbar/toolbar-root.svelte +100 -0
- package/src/toolbar/toolbar-separator.svelte +33 -0
- package/src/toolbar/toolbar.meta.ts +7 -0
- package/src/tooltip/context.svelte.ts +14 -0
- package/src/tooltip/index.ts +15 -0
- package/src/tooltip/tooltip-content.svelte +106 -0
- package/src/tooltip/tooltip-root.svelte +73 -0
- package/src/tooltip/tooltip-trigger.svelte +74 -0
- package/src/tooltip/tooltip.meta.ts +7 -0
- package/src/tour/index.ts +12 -0
- package/src/tour/tour-root.css +215 -0
- package/src/tour/tour-root.css.d.ts +2 -0
- package/src/tour/tour-root.svelte +19 -0
- package/src/tour/tour-tooltip-button.svelte +48 -0
- package/src/tour/tour.meta.ts +7 -0
- package/src/transfer/context.svelte.ts +31 -0
- package/src/transfer/index.ts +29 -0
- package/src/transfer/transfer-actions-button.svelte +91 -0
- package/src/transfer/transfer-item.svelte +35 -0
- package/src/transfer/transfer-list-input.svelte +204 -0
- package/src/transfer/transfer-root.svelte +145 -0
- package/src/transfer/transfer.meta.ts +7 -0
- package/src/tree/context.svelte.ts +24 -0
- package/src/tree/index.ts +23 -0
- package/src/tree/tree-item-children.svelte +51 -0
- package/src/tree/tree-item-label.svelte +56 -0
- package/src/tree/tree-item.svelte +63 -0
- package/src/tree/tree-root.svelte +246 -0
- package/src/tree/tree.meta.ts +7 -0
- package/src/typing-indicator/index.ts +5 -0
- package/src/typing-indicator/typing-indicator.meta.ts +7 -0
- package/src/typing-indicator/typing-indicator.svelte +72 -0
- package/src/typography/blockquote.svelte +24 -0
- package/src/typography/code.svelte +25 -0
- package/src/typography/heading.svelte +17 -0
- package/src/typography/index.ts +30 -0
- package/src/typography/text.svelte +25 -0
- package/src/typography/typography.meta.ts +7 -0
- package/src/video-embed/index.ts +3 -0
- package/src/video-embed/video-embed-button.svelte +177 -0
- package/src/video-embed/video-embed.meta.ts +7 -0
- package/src/virtual-list/index.ts +3 -0
- package/src/virtual-list/virtual-list.meta.ts +7 -0
- package/src/virtual-list/virtual-list.svelte +239 -0
- package/src/visually-hidden/index.ts +8 -0
- package/src/visually-hidden/visually-hidden.meta.ts +7 -0
- package/src/visually-hidden/visually-hidden.svelte +28 -0
- package/dist/card/card-content.svelte +0 -32
- package/dist/card/card-content.svelte.d.ts +0 -9
- package/dist/card/card-footer.svelte.d.ts +0 -8
- package/dist/card/card-header.svelte.d.ts +0 -8
- package/dist/card/card-root.svelte +0 -184
- package/dist/card/card-root.svelte.d.ts +0 -15
- package/dist/card/card.meta.js +0 -7
- package/dist/card/index.d.ts +0 -31
- package/dist/card/index.js +0 -10
- package/skills/dryui/SKILL.md +0 -308
- package/skills/dryui/agents/openai.yaml +0 -10
- package/skills/dryui/rules/accessibility.md +0 -215
- package/skills/dryui/rules/composition.md +0 -500
- package/skills/dryui/rules/compound-components.md +0 -312
- package/skills/dryui/rules/design-brief.md +0 -59
- package/skills/dryui/rules/design.md +0 -71
- package/skills/dryui/rules/native-web-transitions.md +0 -99
- package/skills/dryui/rules/svelte.md +0 -234
- package/skills/dryui/rules/theming.md +0 -305
- /package/dist/{card/card.meta.d.ts → token-scope/token-scope.meta.d.ts} +0 -0
package/skills/dryui/SKILL.md
DELETED
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dryui
|
|
3
|
-
description: 'Use when building UIs with DryUI (@dryui/ui) Svelte 5 components. Teaches correct patterns for compound components, theming, forms, and accessibility. Use the CLI as the default entry point; MCP mirrors the same workflow when available.'
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# DryUI
|
|
7
|
-
|
|
8
|
-
Zero-dependency Svelte 5 components. All imports from `@dryui/ui`. Requires a theme CSS import. Svelte 5 runes only.
|
|
9
|
-
|
|
10
|
-
**Tradeoff:** These rules bias toward correctness over speed. For throwaway prototypes, use judgment.
|
|
11
|
-
|
|
12
|
-
## UI Creation Pipeline
|
|
13
|
-
|
|
14
|
-
DryUI work is explicit. Do the design thinking where the user can see it, then validate the result.
|
|
15
|
-
|
|
16
|
-
1. **User brief** — capture audience, job-to-be-done, product/domain, constraints, and any existing design direction.
|
|
17
|
-
2. **DESIGN.md identity** — read or create the local design identity before choosing components. Google-style `DESIGN.md` is a supported optional format, not a required dependency.
|
|
18
|
-
3. **DryUI lookup/plan** — use `dryui info`, `dryui compose`, or MCP `ask` to confirm component contracts, tokens, layout rules, and recipes.
|
|
19
|
-
4. **make-interfaces-feel-better polish intent pass** — state which polish details matter for this screen before implementation. This is an explicit planning step, not hidden taste.
|
|
20
|
-
5. **Implementation** — build with DryUI components, Svelte 5, grid layout, tokens, and accessible composition.
|
|
21
|
-
6. **Deterministic check** — run `dryui check [path]` or MCP `check` to catch contracts, accessibility, tokens, and CSS discipline.
|
|
22
|
-
7. **Visual review** — run `dryui check --visual <url>` or MCP `check` with `visualUrl`; include the make-interfaces-feel-better rubric in the review intent.
|
|
23
|
-
8. **Repair loop** — fix the highest-signal issues, then repeat deterministic check and visual review until the UI matches the brief.
|
|
24
|
-
|
|
25
|
-
Precedence when guidance conflicts:
|
|
26
|
-
|
|
27
|
-
1. User intent and task constraints.
|
|
28
|
-
2. Local `DESIGN.md` identity.
|
|
29
|
-
3. DryUI component contracts, accessibility rules, and token/theming discipline.
|
|
30
|
-
4. Official Svelte MCP guidance for Svelte and SvelteKit syntax/framework questions.
|
|
31
|
-
5. make-interfaces-feel-better polish rubric.
|
|
32
|
-
|
|
33
|
-
## 1. Look Up Before You Write
|
|
34
|
-
|
|
35
|
-
**Never guess a component API. Always verify first.**
|
|
36
|
-
|
|
37
|
-
- Call `dryui info <component>` or `dryui compose "<query>"` before using any component for the first time. If MCP is available, `ask --scope component` and `ask --scope recipe` are equivalent.
|
|
38
|
-
- Component APIs vary — `bind:value`, `bind:open`, `bind:checked` are NOT interchangeable
|
|
39
|
-
- Compound vs simple, required parts, available props — all differ per component
|
|
40
|
-
- If you skip the lookup, you'll write plausible-looking code that silently breaks
|
|
41
|
-
|
|
42
|
-
The test: can you point to a `dryui info`, `dryui compose`, or `ask` call for every component or pattern in your output?
|
|
43
|
-
|
|
44
|
-
## 2. Everything is Compound Until Proven Otherwise
|
|
45
|
-
|
|
46
|
-
**Use `.Root`. Always check.**
|
|
47
|
-
|
|
48
|
-
Most DryUI components are compound — they require `<Card.Root>`, not `<Card>`. The bare name silently fails or renders wrong. Assume compound; verify with `dryui info <Component>` or `ask --scope component`.
|
|
49
|
-
|
|
50
|
-
```svelte
|
|
51
|
-
<!-- Wrong -->
|
|
52
|
-
<Card>content</Card>
|
|
53
|
-
<!-- Right -->
|
|
54
|
-
<Card.Root>content</Card.Root>
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
Compound components are tracked in the manifest at `packages/mcp/src/component-catalog.ts`. Verify with `dryui info <Component>` or `ask --scope component` before you assume a bare name works, then use `.Root` and wrap the parts inside it.
|
|
58
|
-
|
|
59
|
-
The test: every compound component in your markup uses `.Root`, and its parts are wrapped inside it. See `rules/compound-components.md` for the parts reference.
|
|
60
|
-
|
|
61
|
-
## 3. Let the Theme Do Its Job
|
|
62
|
-
|
|
63
|
-
**Import it. Use its tokens. Don't fight it.**
|
|
64
|
-
|
|
65
|
-
- Import `@dryui/ui/themes/default.css` (and `dark.css`) before any component use
|
|
66
|
-
- Use `--dry-color-*` and `--dry-space-*` tokens — never hardcoded colors or spacing
|
|
67
|
-
- Don't add decorative CSS (gradients, shadows, colored borders) — the theme handles appearance
|
|
68
|
-
- Override semantic tokens (Tier 2) in `:root`, not component tokens (Tier 3)
|
|
69
|
-
- Prefer `<html class="theme-auto">` — use `data-theme="light|dark"` only for explicit overrides
|
|
70
|
-
|
|
71
|
-
```css
|
|
72
|
-
/* Wrong */
|
|
73
|
-
.card {
|
|
74
|
-
background: #6366f1;
|
|
75
|
-
color: white;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/* Right */
|
|
79
|
-
.card {
|
|
80
|
-
background: var(--dry-color-fill-brand);
|
|
81
|
-
color: var(--dry-color-text-strong);
|
|
82
|
-
}
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
The test: does your CSS contain zero hex colors, zero `rgb()` values, and zero inline styles?
|
|
86
|
-
|
|
87
|
-
## 4. Grid for Layout. Container for Width. @container for Responsive.
|
|
88
|
-
|
|
89
|
-
**Nothing else.**
|
|
90
|
-
|
|
91
|
-
- All layout is `display: grid` with `--dry-space-*` tokens in scoped `<style>`
|
|
92
|
-
- `Container` (simple component, no `.Root`) for constrained content width
|
|
93
|
-
- Use `@container` queries for responsive sizing — never `@media` for layout breakpoints
|
|
94
|
-
- No flexbox. No inline styles. No `width`/`min-width`/`max-width` properties
|
|
95
|
-
|
|
96
|
-
```svelte
|
|
97
|
-
<div class="layout">...</div>
|
|
98
|
-
|
|
99
|
-
<style>
|
|
100
|
-
.layout {
|
|
101
|
-
display: grid;
|
|
102
|
-
gap: var(--dry-space-4);
|
|
103
|
-
}
|
|
104
|
-
</style>
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
The test: grep your output for `display: flex`, `style=`, `@media` — all should return nothing.
|
|
108
|
-
|
|
109
|
-
## 4A. Escape Hatches Mean Stop.
|
|
110
|
-
|
|
111
|
-
**If lint or the compiler pushes you toward an escape hatch, the structure is usually wrong.**
|
|
112
|
-
|
|
113
|
-
- Never add `:global()`, `!important`, `all: unset`, `<svelte:element>`, or `<!-- svelte-ignore ... -->` just to make a selector or warning go away
|
|
114
|
-
- Never add `width`, `min-width`, `max-width`, `inline-size`, `min-inline-size`, or `max-inline-size` to solve layout pressure
|
|
115
|
-
- Never use raw native elements outside their canonical DryUI component directories just because composition feels inconvenient
|
|
116
|
-
- Never pass `class=` to DryUI components expecting it to style their internals; use wrapper elements, component props, `data-*` attributes, or `--dry-*` tokens instead
|
|
117
|
-
- When blocked, restructure the markup instead: add a local wrapper, split explicit `{#if}` branches, move sizing to parent grid tracks, or promote the pattern into the canonical component where the raw element belongs
|
|
118
|
-
- Treat `dryui/no-global`, `dryui/no-important`, `dryui/no-width`, `dryui/no-raw-native-element`, `dryui/no-css-ignore`, and `dryui/no-svelte-element` as design feedback, not obstacles to suppress
|
|
119
|
-
|
|
120
|
-
The test: grep your output for `:global(`, `!important`, `all: unset`, `svelte-ignore`, `svelte:element`, raw `<button`, raw `<input`, raw `<select`, raw `<dialog`, raw `<hr`, raw `<table`, and `width:` — all should return nothing unless you are editing the canonical component that owns that native element.
|
|
121
|
-
|
|
122
|
-
## 5. Every Input Gets a Field.Root
|
|
123
|
-
|
|
124
|
-
**Accessibility isn't optional.**
|
|
125
|
-
|
|
126
|
-
- Wrap every form input in `Field.Root` with a `Label`
|
|
127
|
-
- Use `AlertDialog` (not `Dialog`) for destructive confirmations
|
|
128
|
-
- Add `aria-label` to every icon-only button
|
|
129
|
-
- Use `type="submit"` on primary form action buttons
|
|
130
|
-
|
|
131
|
-
```svelte
|
|
132
|
-
<!-- Wrong -->
|
|
133
|
-
<label>Email</label>
|
|
134
|
-
<Input bind:value={email} />
|
|
135
|
-
|
|
136
|
-
<!-- Right -->
|
|
137
|
-
<Field.Root>
|
|
138
|
-
<Label>Email</Label>
|
|
139
|
-
<Input bind:value={email} />
|
|
140
|
-
</Field.Root>
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
The test: every `<Input>`, `<Select.Root>`, `<Textarea>` is inside a `Field.Root` with a `Label` sibling.
|
|
144
|
-
|
|
145
|
-
## 6. Prefer DryUI Over Native HTML
|
|
146
|
-
|
|
147
|
-
**If a DryUI component exists for it, use it.**
|
|
148
|
-
|
|
149
|
-
`DatePicker` not `<input type="date">`. `Select.Root` not `<select>`. `Dialog.Root` not `<dialog>`. `Separator` not `<hr>`. `Button` not `<button>`. DryUI components handle theming and accessibility automatically — native elements don't.
|
|
150
|
-
|
|
151
|
-
The test: search your markup for raw `<input`, `<select>`, `<dialog>`, `<button>`, `<hr>`, `<table>` — each should be a DryUI component instead.
|
|
152
|
-
|
|
153
|
-
## 7. Ask the Svelte MCP for Svelte Questions
|
|
154
|
-
|
|
155
|
-
**DryUI owns components. `@sveltejs/mcp` owns the framework.**
|
|
156
|
-
|
|
157
|
-
For Svelte 5 runes (`$state`, `$derived`, `$effect`, `$props`), snippets, SvelteKit load fns, `+page.server.ts` shape, form actions, and anything Svelte-syntax adjacent: call the official `svelte-autofixer` and `get-documentation` tools from `@sveltejs/mcp` before guessing from memory.
|
|
158
|
-
|
|
159
|
-
- `dryui setup --install` registers `@sveltejs/mcp` by default; pass `--no-svelte-mcp` to skip.
|
|
160
|
-
- If it's not registered, the fallback is the remote endpoint `https://mcp.svelte.dev/mcp` or a one-liner like `claude mcp add -t stdio -s user svelte -- npx -y @sveltejs/mcp`.
|
|
161
|
-
- Scope split: DryUI `ask`/`check` cover component APIs, theming, composition, and validation. Svelte MCP covers the runtime, compiler, and framework idioms.
|
|
162
|
-
|
|
163
|
-
The test: before writing non-trivial Svelte 5 or SvelteKit code, did you either (a) call `svelte-autofixer` / `get-documentation`, or (b) confirm the pattern is already covered by a DryUI recipe via `ask --scope recipe`?
|
|
164
|
-
|
|
165
|
-
## Quick Start
|
|
166
|
-
|
|
167
|
-
**1. Install the CLI** so every subsequent command is short and fast:
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
bun install -g @dryui/cli@latest # or: npm install -g @dryui/cli@latest
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
**2. Start with bare `dryui`** when you want editor integration and feedback:
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
dryui
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
**3. Bootstrap or inspect the project** with the CLI:
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
dryui init # existing project
|
|
183
|
-
dryui init my-app # new project — scaffolds SvelteKit + DryUI in one step
|
|
184
|
-
cd my-app && bun run dev
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
This works for greenfield (empty directory), brownfield (existing non-SvelteKit project), and existing SvelteKit projects. On existing projects, `dryui install` prints the ordered plan and `dryui detect` verifies that setup is complete.
|
|
188
|
-
|
|
189
|
-
> **No global install?** `bunx @dryui/cli <cmd>` and `npx -y @dryui/cli <cmd>` work anywhere without installing — same commands, just slower (re-fetches on each call).
|
|
190
|
-
|
|
191
|
-
**4. Add the editor integration layer** after the CLI is working:
|
|
192
|
-
|
|
193
|
-
- Claude Code: `claude plugin marketplace add rob-balfre/dryui && claude plugin install dryui@dryui` (plugin is the canonical Claude skill install path)
|
|
194
|
-
- Codex (0.121.0+): `codex marketplace add rob-balfre/dryui`, then start `codex`, run `/plugins`, and install `DryUI` (plugin is the canonical Codex skill install path)
|
|
195
|
-
- OpenCode: `npx degit rob-balfre/dryui/packages/ui/skills/dryui .opencode/skills/dryui` + add the `dryui` and `dryui-feedback` local MCP servers in `opencode.json` (OpenCode also loads `.agents/skills/dryui` and reads `AGENTS.md`)
|
|
196
|
-
- Copilot/Cursor/Windsurf: `npx degit rob-balfre/dryui/packages/ui/skills/dryui .agents/skills/dryui` + add MCP config (see https://dryui.dev/tools)
|
|
197
|
-
|
|
198
|
-
**5. Register the Svelte MCP companion.** `dryui setup --install` does this automatically for Copilot, Cursor, OpenCode, Windsurf, and Zed. For Claude Code run `claude mcp add -t stdio -s user svelte -- npx -y @sveltejs/mcp`; for Codex add `[mcp_servers.svelte] command = "npx", args = ["-y", "@sveltejs/mcp"]` to `~/.codex/config.toml`. See rule 7 above.
|
|
199
|
-
|
|
200
|
-
### Manual setup
|
|
201
|
-
|
|
202
|
-
1. `bun add @dryui/ui`
|
|
203
|
-
2. `bun add -d @dryui/lint` — enforces grid-only layout, bans flexbox/inline-style/width at build time. Without this step the CSS discipline rules are not enforced at build time, and only post-write `check` / CLI validation remain.
|
|
204
|
-
3. Wire the lint preprocessor in `svelte.config.js` (add `dryuiLint` as the **first** item in the `preprocess` array):
|
|
205
|
-
|
|
206
|
-
```js
|
|
207
|
-
import { dryuiLint } from '@dryui/lint';
|
|
208
|
-
|
|
209
|
-
/** @type {import('@sveltejs/kit').Config} */
|
|
210
|
-
const config = {
|
|
211
|
-
preprocess: [
|
|
212
|
-
dryuiLint({
|
|
213
|
-
strict: true,
|
|
214
|
-
exclude: ['.svelte-kit/', '/dist/']
|
|
215
|
-
})
|
|
216
|
-
// keep any existing preprocessors after this
|
|
217
|
-
]
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
export default config;
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
4. Add `class="theme-auto"` to `<html>` in `src/app.html`
|
|
224
|
-
5. In root layout (`src/routes/+layout.svelte`), import themes:
|
|
225
|
-
```svelte
|
|
226
|
-
<script>
|
|
227
|
-
import '@dryui/ui/themes/default.css';
|
|
228
|
-
import '@dryui/ui/themes/dark.css';
|
|
229
|
-
</script>
|
|
230
|
-
```
|
|
231
|
-
6. Import `app.css` AFTER theme CSS if you have custom styles
|
|
232
|
-
|
|
233
|
-
> `dryui init` applies all six steps automatically — prefer it over manual setup when you can.
|
|
234
|
-
|
|
235
|
-
## Bindable Props — Common Confusion
|
|
236
|
-
|
|
237
|
-
Always verify with `dryui info <Component>` or `ask --scope component`, but these are the most common mistakes:
|
|
238
|
-
|
|
239
|
-
- `bind:value` (Input, Select, Tabs...) vs `bind:checked` (Checkbox, Switch) vs `bind:pressed` (Toggle) vs `bind:open` (Dialog, Popover, Drawer...)
|
|
240
|
-
- Select and Combobox support both `bind:value` and `bind:open`
|
|
241
|
-
- ColorPicker also exposes `bind:alpha`; Transfer uses `bind:sourceItems` / `bind:targetItems`
|
|
242
|
-
- Tour uses `bind:active`, not `bind:open`
|
|
243
|
-
|
|
244
|
-
## Tools
|
|
245
|
-
|
|
246
|
-
Use these to look up APIs, discover components, plan setup, and validate code.
|
|
247
|
-
|
|
248
|
-
### Recommended workflow
|
|
249
|
-
|
|
250
|
-
1. Start from the user brief and local `DESIGN.md` identity, then resolve any component or recipe uncertainty with `dryui info <Component>` or `dryui compose "<query>"`. If MCP is available, `ask --scope component` and `ask --scope recipe` are the equivalent surface.
|
|
251
|
-
2. Before writing code, make an explicit make-interfaces-feel-better polish intent pass: text wrapping, radius, icon motion, numbers, transitions, entrances/exits, shadows, icon alignment, image edges, and token consistency.
|
|
252
|
-
3. Build the route or component with raw CSS grid, `Container` for constrained width, and `@container` for responsive layout.
|
|
253
|
-
4. Run `dryui check [path]` or MCP `check` after implementation to catch composition drift, layout violations, accessibility regressions, and token drift.
|
|
254
|
-
5. Run `dryui check --visual <url>` or MCP `check` with `visualUrl` for rendered review, then repair and repeat until the UI satisfies the brief.
|
|
255
|
-
6. Never guess component shape from memory. DryUI is intentionally strict, and the lookup cost is lower than rework.
|
|
256
|
-
|
|
257
|
-
### CLI (default entry point)
|
|
258
|
-
|
|
259
|
-
Install once with `bun install -g @dryui/cli@latest` (or `npm install -g @dryui/cli@latest`), then use the short form below. Every command outputs TOON (token-optimized, agent-friendly) by default. Pass `--text` for human-readable plain text, `--json` where supported, or `--full` to disable truncation.
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
dryui # default onboarding entry point
|
|
263
|
-
dryui setup # explicit onboarding subcommand
|
|
264
|
-
dryui init [path] [--pm bun] # Bootstrap SvelteKit + DryUI project
|
|
265
|
-
dryui info <component> # Look up component API
|
|
266
|
-
dryui compose "date input" # Composition guidance
|
|
267
|
-
dryui detect [path] # Check project setup
|
|
268
|
-
dryui install [path] # Print install plan
|
|
269
|
-
dryui check [path] # Validate file, theme, directory, or workspace
|
|
270
|
-
dryui check --visual <url> # Screenshot a URL and critique rendered polish
|
|
271
|
-
dryui list # List components
|
|
272
|
-
dryui tokens --category color # Browse design tokens
|
|
273
|
-
dryui ambient # SessionStart context
|
|
274
|
-
dryui install-hook --dry-run # Preview Claude hook wiring
|
|
275
|
-
dryui feedback init # Feedback tooling setup
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
Without a global install, prefix any command with `bunx @dryui/cli …` or `npx -y @dryui/cli …` — same behaviour, just slower (re-fetches on each call).
|
|
279
|
-
|
|
280
|
-
### MCP tools (same workflow in-editor)
|
|
281
|
-
|
|
282
|
-
| Workflow | Tools |
|
|
283
|
-
| -------------------- | ----------------------------------------------------------------- |
|
|
284
|
-
| Project setup | `ask --scope setup ""` |
|
|
285
|
-
| Lookup & composition | `ask --scope component`, `ask --scope recipe`, `ask --scope list` |
|
|
286
|
-
| Validation | `check <file.svelte>`, `check <theme.css>` |
|
|
287
|
-
| Audit | `check`, `check <directory>` |
|
|
288
|
-
| Rendered UI | `check` with `visualUrl`, or direct `check-vision` |
|
|
289
|
-
|
|
290
|
-
Categories: action, input, form, layout, navigation, overlay, display, feedback, interaction, utility
|
|
291
|
-
|
|
292
|
-
## Rule Files
|
|
293
|
-
|
|
294
|
-
Read these when you need deeper guidance:
|
|
295
|
-
|
|
296
|
-
- **`rules/compound-components.md`** — Parts lists, component selection table, common mistakes
|
|
297
|
-
- **`rules/theming.md`** — Three-tier token system, dark mode, palette customization
|
|
298
|
-
- **`rules/composition.md`** — Form patterns, page layouts, composition recipes
|
|
299
|
-
- **`rules/accessibility.md`** — Field.Root, ARIA, focus management, pre-ship checklist
|
|
300
|
-
- **`rules/svelte.md`** — Runes, snippets, native browser APIs, styling rules
|
|
301
|
-
- **`rules/design.md`** — Minimal code, no premature abstraction, naming conventions
|
|
302
|
-
- **`rules/design-brief.md`** — User brief, DESIGN.md identity, precedence, and polish review pipeline
|
|
303
|
-
- **`rules/visual-effects-performance.md`** — Tiered budgets and implementation rules for shader, blur, glass, and pointer-reactive effects
|
|
304
|
-
- **`rules/native-web-transitions.md`** — View Transition API, scroll animations, reduced-motion
|
|
305
|
-
|
|
306
|
-
---
|
|
307
|
-
|
|
308
|
-
**These rules are working if:** every component traces to a lookup, diffs contain zero hardcoded colors, and the reviewer finds nothing.
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: 'DryUI'
|
|
3
|
-
short_description: 'Zero-dependency Svelte 5 component library patterns'
|
|
4
|
-
default_prompt: 'Use $dryui to build with correct compound components, theming, accessibility, and composition patterns.'
|
|
5
|
-
|
|
6
|
-
dependencies:
|
|
7
|
-
tools:
|
|
8
|
-
- type: 'mcp'
|
|
9
|
-
value: 'dryui'
|
|
10
|
-
description: 'DryUI component lookup, validation, composition guidance, and project planning'
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
# Accessibility
|
|
2
|
-
|
|
3
|
-
## Field.Root for Form Inputs
|
|
4
|
-
|
|
5
|
-
Field.Root generates unique IDs and links Label to the input via `for`/`id` attributes. Always use it instead of raw `<label>` elements.
|
|
6
|
-
|
|
7
|
-
```svelte
|
|
8
|
-
<!-- Incorrect: label not linked to input -->
|
|
9
|
-
<label>Email</label>
|
|
10
|
-
<Input bind:value={email} />
|
|
11
|
-
|
|
12
|
-
<!-- Correct: Field.Root handles accessible linking -->
|
|
13
|
-
<Field.Root>
|
|
14
|
-
<Label>Email</Label>
|
|
15
|
-
<Input bind:value={email} />
|
|
16
|
-
</Field.Root>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
Field.Root also connects Description and Error parts via `aria-describedby`:
|
|
20
|
-
|
|
21
|
-
```svelte
|
|
22
|
-
<Field.Root>
|
|
23
|
-
<Label>Password</Label>
|
|
24
|
-
<Input type="password" bind:value={password} />
|
|
25
|
-
<Field.Description>Must be at least 8 characters.</Field.Description>
|
|
26
|
-
<Field.Error>Password is too short.</Field.Error>
|
|
27
|
-
</Field.Root>
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
This produces the correct ARIA relationships automatically:
|
|
31
|
-
|
|
32
|
-
- Label is linked to the input via `for`/`id`
|
|
33
|
-
- Description is linked via `aria-describedby`
|
|
34
|
-
- Error is linked via `aria-describedby` and sets `aria-invalid` on the input
|
|
35
|
-
|
|
36
|
-
## Dialog and AlertDialog
|
|
37
|
-
|
|
38
|
-
### Dialog
|
|
39
|
-
|
|
40
|
-
Dialog traps focus inside the overlay. Always provide a title and a way to close.
|
|
41
|
-
|
|
42
|
-
```svelte
|
|
43
|
-
<!-- Incorrect: dialog without header or close mechanism -->
|
|
44
|
-
<Dialog.Root bind:open={show}>
|
|
45
|
-
<Dialog.Content>
|
|
46
|
-
<p>Some content</p>
|
|
47
|
-
</Dialog.Content>
|
|
48
|
-
</Dialog.Root>
|
|
49
|
-
|
|
50
|
-
<!-- Correct: header provides accessible title, close button available -->
|
|
51
|
-
<Dialog.Root bind:open={show}>
|
|
52
|
-
<Dialog.Trigger>
|
|
53
|
-
<Button>Open</Button>
|
|
54
|
-
</Dialog.Trigger>
|
|
55
|
-
<Dialog.Content>
|
|
56
|
-
<Dialog.Header>Edit Profile</Dialog.Header>
|
|
57
|
-
<Dialog.Body>
|
|
58
|
-
<Field.Root>
|
|
59
|
-
<Label>Name</Label>
|
|
60
|
-
<Input bind:value={name} />
|
|
61
|
-
</Field.Root>
|
|
62
|
-
</Dialog.Body>
|
|
63
|
-
<Dialog.Footer>
|
|
64
|
-
<Button variant="outline" onclick={() => (show = false)}>Cancel</Button>
|
|
65
|
-
<Button variant="solid">Save</Button>
|
|
66
|
-
</Dialog.Footer>
|
|
67
|
-
</Dialog.Content>
|
|
68
|
-
</Dialog.Root>
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### AlertDialog
|
|
72
|
-
|
|
73
|
-
Use AlertDialog (not Dialog) for destructive confirmations. It requires explicit user action and cannot be dismissed by clicking the overlay.
|
|
74
|
-
|
|
75
|
-
```svelte
|
|
76
|
-
<!-- Incorrect: using Dialog for destructive confirmation -->
|
|
77
|
-
<Dialog.Root bind:open={showDelete}>
|
|
78
|
-
<Dialog.Content>
|
|
79
|
-
<p>Delete this item?</p>
|
|
80
|
-
<Button onclick={handleDelete}>Delete</Button>
|
|
81
|
-
</Dialog.Content>
|
|
82
|
-
</Dialog.Root>
|
|
83
|
-
|
|
84
|
-
<!-- Correct: AlertDialog with Action and Cancel parts -->
|
|
85
|
-
<AlertDialog.Root>
|
|
86
|
-
<AlertDialog.Trigger>
|
|
87
|
-
<Button variant="outline">Delete</Button>
|
|
88
|
-
</AlertDialog.Trigger>
|
|
89
|
-
<AlertDialog.Content>
|
|
90
|
-
<AlertDialog.Header>Delete Item</AlertDialog.Header>
|
|
91
|
-
<AlertDialog.Body>
|
|
92
|
-
<p>This action cannot be undone.</p>
|
|
93
|
-
</AlertDialog.Body>
|
|
94
|
-
<AlertDialog.Footer>
|
|
95
|
-
<AlertDialog.Cancel>Cancel</AlertDialog.Cancel>
|
|
96
|
-
<AlertDialog.Action>Delete</AlertDialog.Action>
|
|
97
|
-
</AlertDialog.Footer>
|
|
98
|
-
</AlertDialog.Content>
|
|
99
|
-
</AlertDialog.Root>
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## Button vs Anchor
|
|
103
|
-
|
|
104
|
-
Use Button for actions. Use `<a>` for navigation.
|
|
105
|
-
|
|
106
|
-
```svelte
|
|
107
|
-
<!-- Incorrect: anchor styled as action button -->
|
|
108
|
-
<a href="#" onclick={handleSave}>Save</a>
|
|
109
|
-
|
|
110
|
-
<!-- Correct: Button for actions -->
|
|
111
|
-
<Button onclick={handleSave}>Save</Button>
|
|
112
|
-
|
|
113
|
-
<!-- Correct: anchor for navigation -->
|
|
114
|
-
<a href="/settings">Go to Settings</a>
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## Icon-Only Buttons
|
|
118
|
-
|
|
119
|
-
Always add `aria-label` to buttons that contain only an icon and no visible text.
|
|
120
|
-
|
|
121
|
-
```svelte
|
|
122
|
-
<!-- Incorrect: icon button without accessible name -->
|
|
123
|
-
<Button variant="ghost" onclick={toggleMenu}>
|
|
124
|
-
<MenuIcon />
|
|
125
|
-
</Button>
|
|
126
|
-
|
|
127
|
-
<!-- Correct: aria-label provides accessible name -->
|
|
128
|
-
<Button variant="ghost" onclick={toggleMenu} aria-label="Open menu">
|
|
129
|
-
<MenuIcon />
|
|
130
|
-
</Button>
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Avatar
|
|
134
|
-
|
|
135
|
-
Always provide `alt` text for Avatar images.
|
|
136
|
-
|
|
137
|
-
```svelte
|
|
138
|
-
<!-- Incorrect: no alt text -->
|
|
139
|
-
<Avatar src="/photo.jpg" />
|
|
140
|
-
|
|
141
|
-
<!-- Correct: descriptive alt text -->
|
|
142
|
-
<Avatar src="/photo.jpg" alt="Jane Doe's profile photo" />
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
## Keyboard Navigation
|
|
146
|
-
|
|
147
|
-
DryUI components handle keyboard navigation automatically:
|
|
148
|
-
|
|
149
|
-
- **Tabs**: Arrow keys move between triggers, Enter/Space activates
|
|
150
|
-
- **Accordion**: Arrow keys navigate triggers, Enter/Space toggles
|
|
151
|
-
- **DropdownMenu**: Arrow keys navigate items, Enter selects, Escape closes
|
|
152
|
-
- **Select**: Arrow keys navigate items, Enter selects, Escape closes
|
|
153
|
-
- **Dialog/AlertDialog**: Tab cycles through focusable elements, Escape closes (Dialog only)
|
|
154
|
-
|
|
155
|
-
No extra code needed for standard keyboard behavior. Avoid overriding `onkeydown` on these components unless you have a specific accessibility need.
|
|
156
|
-
|
|
157
|
-
## Form Submission
|
|
158
|
-
|
|
159
|
-
Use `type="submit"` on the primary form action button so that pressing Enter in any input submits the form.
|
|
160
|
-
|
|
161
|
-
```svelte
|
|
162
|
-
<!-- Incorrect: button without type, won't submit on Enter -->
|
|
163
|
-
<form onsubmit={handleSubmit}>
|
|
164
|
-
<Field.Root>
|
|
165
|
-
<Label>Search</Label>
|
|
166
|
-
<Input bind:value={query} />
|
|
167
|
-
</Field.Root>
|
|
168
|
-
<Button variant="solid" onclick={handleSubmit}>Search</Button>
|
|
169
|
-
</form>
|
|
170
|
-
|
|
171
|
-
<!-- Correct: type="submit" enables Enter key submission -->
|
|
172
|
-
<form onsubmit={handleSubmit}>
|
|
173
|
-
<Field.Root>
|
|
174
|
-
<Label>Search</Label>
|
|
175
|
-
<Input bind:value={query} />
|
|
176
|
-
</Field.Root>
|
|
177
|
-
<Button type="submit" variant="solid">Search</Button>
|
|
178
|
-
</form>
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
## Loading States
|
|
182
|
-
|
|
183
|
-
Use `disabled` and descriptive text or `aria-label` during loading states.
|
|
184
|
-
|
|
185
|
-
```svelte
|
|
186
|
-
<!-- Incorrect: no indication of loading -->
|
|
187
|
-
<Button onclick={save}>
|
|
188
|
-
{#if saving}
|
|
189
|
-
<Spinner />
|
|
190
|
-
{:else}
|
|
191
|
-
Save
|
|
192
|
-
{/if}
|
|
193
|
-
</Button>
|
|
194
|
-
|
|
195
|
-
<!-- Correct: disabled and labeled during loading -->
|
|
196
|
-
<Button onclick={save} disabled={saving} aria-label={saving ? 'Saving...' : undefined}>
|
|
197
|
-
{#if saving}
|
|
198
|
-
<Spinner /> Saving...
|
|
199
|
-
{:else}
|
|
200
|
-
Save
|
|
201
|
-
{/if}
|
|
202
|
-
</Button>
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
## Checklist
|
|
206
|
-
|
|
207
|
-
Before shipping a page with DryUI components:
|
|
208
|
-
|
|
209
|
-
1. Every form input is wrapped in `Field.Root` with a `Label`
|
|
210
|
-
2. Every Dialog/AlertDialog has a header or `aria-label`
|
|
211
|
-
3. Every icon-only Button has `aria-label`
|
|
212
|
-
4. Destructive confirmations use `AlertDialog`, not `Dialog`
|
|
213
|
-
5. Primary form buttons use `type="submit"`
|
|
214
|
-
6. Avatar images have `alt` text
|
|
215
|
-
7. No `<a href="#">` used as action buttons
|