From 0766cfe49f7f9093ca8998267d4d5dcad05b981c Mon Sep 17 00:00:00 2001 From: dev Date: Thu, 2 Apr 2026 13:04:46 +0200 Subject: [PATCH] Add comprehensive CSS documentation to all Terra UI components MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add "Selectores CSS" section documenting all data-* attributes - Remove -root suffix from data attributes (data-component-root → data-component) - Update attrs.ts to generate cleaner attribute names - Update contracts.ts with new naming convention - Update README.md documentation Co-Authored-By: Claude Opus 4.6 (1M context) --- src/routes/test/accordion/+page.svelte | 2 +- src/uix/terra/README.md | 4 +- src/uix/terra/accordion/accordion.svelte.ts | 4 +- .../components/accordion-content.svelte | 34 +++++++ .../components/accordion-header.svelte | 30 +++++++ .../components/accordion-item.svelte | 31 +++++++ .../components/accordion-trigger.svelte | 33 +++++++ .../accordion/components/accordion.svelte | 38 ++++++++ .../components/alert-dialog-action.svelte | 24 +++++ .../components/alert-dialog-cancel.svelte | 25 ++++++ .../components/alert-dialog-content.svelte | 30 +++++++ .../components/alert-dialog.svelte | 36 ++++++++ .../components/aspect-ratio.svelte | 33 +++++++ .../avatar/components/avatar-fallback.svelte | 36 ++++++++ .../avatar/components/avatar-image.svelte | 33 +++++++ src/uix/terra/avatar/components/avatar.svelte | 32 +++++++ src/uix/terra/button/components/button.svelte | 41 ++++++++- .../calendar/components/calendar-cell.svelte | 45 ++++++++++ .../calendar/components/calendar-day.svelte | 44 ++++++++- .../components/calendar-grid-body.svelte | 34 +++++++ .../components/calendar-grid-head.svelte | 33 ++++++- .../components/calendar-grid-row.svelte | 30 ++++++- .../calendar/components/calendar-grid.svelte | 37 +++++++- .../components/calendar-head-cell.svelte | 30 ++++++- .../components/calendar-header.svelte | 32 ++++++- .../components/calendar-heading.svelte | 33 ++++++- .../components/calendar-month-select.svelte | 32 ++++++- .../components/calendar-next-button.svelte | 31 ++++++- .../components/calendar-prev-button.svelte | 31 ++++++- .../components/calendar-year-select.svelte | 32 ++++++- .../terra/calendar/components/calendar.svelte | 73 +++++++++++++++ .../components/checkbox-group-label.svelte | 22 +++++ .../checkbox/components/checkbox-group.svelte | 29 ++++++ .../terra/checkbox/components/checkbox.svelte | 45 ++++++++++ .../components/collapsible-content.svelte | 34 +++++++ .../components/collapsible-trigger.svelte | 31 +++++++ .../collapsible/components/collapsible.svelte | 31 +++++++ .../color-picker-alpha-slider.svelte | 27 ++++++ .../components/color-picker-area-thumb.svelte | 29 ++++++ .../components/color-picker-area.svelte | 34 +++++++ .../components/color-picker-content.svelte | 29 ++++++ .../components/color-picker-eyedropper.svelte | 28 ++++++ .../components/color-picker-hue-slider.svelte | 26 ++++++ .../components/color-picker-input.svelte | 30 +++++++ .../components/color-picker-root.svelte | 37 ++++++++ .../components/color-picker-swatch.svelte | 29 ++++++ .../components/color-picker-swatches.svelte | 27 ++++++ .../components/color-picker-trigger.svelte | 31 +++++++ .../combobox/components/combobox-input.svelte | 32 +++++++ .../components/combobox-trigger.svelte | 28 ++++++ .../terra/combobox/components/combobox.svelte | 46 ++++++++++ .../command/components/_command-label.svelte | 39 +++++--- .../command/components/command-empty.svelte | 30 +++++++ .../components/command-group-heading.svelte | 25 ++++++ .../components/command-group-items.svelte | 52 ++++++++--- .../command/components/command-group.svelte | 32 +++++++ .../command/components/command-input.svelte | 36 ++++++++ .../command/components/command-item.svelte | 43 +++++++++ .../components/command-link-item.svelte | 36 ++++++++ .../command/components/command-list.svelte | 32 +++++++ .../command/components/command-loading.svelte | 28 ++++++ .../components/command-separator.svelte | 27 ++++++ .../components/command-viewport.svelte | 27 ++++++ .../terra/command/components/command.svelte | 52 +++++++++++ .../config/components/terra-config.svelte | 12 +++ .../components/context-menu-content.svelte | 47 +++++++++- .../components/context-menu-trigger.svelte | 31 +++++++ .../components/context-menu.svelte | 36 ++++++++ .../components/date-field-hidden-input.svelte | 13 +++ .../components/date-field-input.svelte | 11 +++ .../components/date-field-label.svelte | 18 ++++ .../components/date-field-segment.svelte | 12 +++ .../date-field/components/date-field.svelte | 16 ++++ .../components/date-picker-calendar.svelte | 20 +++++ .../components/date-picker-trigger.svelte | 22 ++++- .../date-picker/components/date-picker.svelte | 16 +++- .../components/date-range-field-input.svelte | 17 ++++ .../components/date-range-field-label.svelte | 18 ++++ .../components/date-range-field.svelte | 14 +++ .../date-range-picker-calendar.svelte | 20 +++++ .../date-range-picker-trigger.svelte | 20 +++++ .../components/date-range-picker.svelte | 14 +++ .../dialog/components/dialog-close.svelte | 30 +++++++ .../dialog/components/dialog-content.svelte | 41 +++++++++ .../components/dialog-description.svelte | 27 ++++++ .../dialog/components/dialog-overlay.svelte | 26 ++++++ .../dialog/components/dialog-title.svelte | 29 ++++++ .../dialog/components/dialog-trigger.svelte | 27 ++++++ src/uix/terra/dialog/components/dialog.svelte | 26 ++++++ src/uix/terra/dialog/dialog.svelte.ts | 18 ++-- .../drawer/components/drawer-close.svelte | 10 +++ .../drawer/components/drawer-content.svelte | 41 +++++++++ .../components/drawer-description.svelte | 10 +++ .../drawer/components/drawer-overlay.svelte | 12 +++ .../drawer/components/drawer-title.svelte | 10 +++ .../drawer/components/drawer-trigger.svelte | 10 +++ src/uix/terra/drawer/components/drawer.svelte | 37 ++++++++ .../components/dropdown-menu-content.svelte | 50 ++++++++++- .../components/dropdown-menu.svelte | 39 ++++++++ .../editable/components/editable-area.svelte | 24 +++++ .../components/editable-cancel-trigger.svelte | 25 ++++++ .../components/editable-edit-trigger.svelte | 25 ++++++ .../editable/components/editable-input.svelte | 22 +++++ .../components/editable-preview.svelte | 29 ++++++ .../editable/components/editable-root.svelte | 19 ++++ .../components/editable-submit-trigger.svelte | 20 +++++ .../field/components/Field.Control.svelte | 30 +++++++ .../terra/field/components/Field.Error.svelte | 29 ++++++ .../field/components/Field.HelperText.svelte | 27 ++++++ .../terra/field/components/Field.Input.svelte | 34 +++++++ .../terra/field/components/Field.Label.svelte | 28 ++++++ .../field/components/Field.Prefix.svelte | 10 +++ .../terra/field/components/Field.Root.svelte | 41 +++++++++ .../field/components/Field.Suffix.svelte | 10 +++ .../components/file-upload-dropzone.svelte | 25 ++++++ .../components/file-upload-file-list.svelte | 46 ++++++++-- .../components/file-upload-item-name.svelte | 25 ++++++ .../file-upload-item-progress.svelte | 48 +++++++--- .../components/file-upload-item-remove.svelte | 44 +++++++-- .../components/file-upload-item-size.svelte | 17 ++++ .../components/file-upload-item.svelte | 60 ++++++++++--- .../components/file-upload-root.svelte | 89 +++++++++++++------ .../terra/form/components/Form.Control.svelte | 34 +++++++ .../form/components/Form.Description.svelte | 10 +++ .../terra/form/components/Form.Error.svelte | 24 +++++ .../terra/form/components/Form.Field.svelte | 44 +++++++++ .../terra/form/components/Form.Label.svelte | 27 ++++++ .../terra/form/components/Form.Root.svelte | 41 +++++++++ .../terra/form/components/Form.Submit.svelte | 37 ++++++++ src/uix/terra/label/components/label.svelte | 26 ++++++ .../floating/use-floating-layer.svelte.ts | 10 +-- .../link-preview-content-static.svelte | 23 +++++ .../components/link-preview-content.svelte | 30 +++++++ .../components/link-preview-trigger.svelte | 25 ++++++ .../components/link-preview.svelte | 31 +++++++ .../terra/menu/components/menu-arrow.svelte | 12 +++ .../components/menu-checkbox-group.svelte | 10 +++ .../menu/components/menu-checkbox-item.svelte | 12 +++ .../terra/menu/components/menu-content.svelte | 39 +++++++- .../menu/components/menu-group-heading.svelte | 10 +++ .../terra/menu/components/menu-group.svelte | 10 +++ .../terra/menu/components/menu-item.svelte | 33 +++++++ .../menu/components/menu-radio-group.svelte | 6 ++ .../menu/components/menu-radio-item.svelte | 8 ++ .../menu/components/menu-separator.svelte | 12 +++ .../menu/components/menu-sub-content.svelte | 10 ++- .../menu/components/menu-sub-trigger.svelte | 6 ++ src/uix/terra/menu/components/menu-sub.svelte | 6 ++ .../terra/menu/components/menu-trigger.svelte | 6 ++ src/uix/terra/menu/components/menu.svelte | 50 +++++++++++ src/uix/terra/menu/menu.svelte.ts | 36 ++++---- .../menubar/components/menubar-content.svelte | 6 ++ .../menubar/components/menubar-menu.svelte | 33 +++++++ .../menubar/components/menubar-trigger.svelte | 11 +++ .../terra/menubar/components/menubar.svelte | 6 ++ src/uix/terra/meter/components/meter.svelte | 28 ++++++ .../components/number-field-decrement.svelte | 10 +++ .../components/number-field-increment.svelte | 10 +++ .../components/number-field-input.svelte | 10 +++ .../components/number-field-label.svelte | 10 +++ .../components/number-field-root.svelte | 12 +++ .../components/pagination-next-button.svelte | 11 +++ .../components/pagination-page.svelte | 12 +++ .../components/pagination-prev-button.svelte | 11 +++ .../pagination/components/pagination.svelte | 44 +++++++++ .../components/pin-input-cell.svelte | 24 +++++ .../pin-input/components/pin-input.svelte | 34 +++++++ .../popover/components/popover-arrow.svelte | 6 ++ .../popover/components/popover-close.svelte | 6 ++ .../popover/components/popover-content.svelte | 52 +++++++++++ .../popover/components/popover-overlay.svelte | 8 ++ .../popover/components/popover-trigger.svelte | 32 +++++++ .../terra/popover/components/popover.svelte | 34 +++++++ .../terra/progress/components/progress.svelte | 39 ++++++++ .../components/radio-group-item.svelte | 38 ++++++++ .../radio-group/components/radio-group.svelte | 46 ++++++++++ .../components/range-calendar-cell.svelte | 23 +++++ .../components/range-calendar-day.svelte | 24 +++++ .../components/range-calendar.svelte | 19 ++++ .../range-calendar/range-calendar.svelte.ts | 8 +- .../components/rating-group-item.svelte | 17 ++++ .../components/rating-group.svelte | 43 +++++++++ .../components/presence-layer.svelte | 10 +++ .../components/scroll-area-corner-impl.svelte | 10 +++ .../components/scroll-area-corner.svelte | 10 +++ .../scroll-area-scrollbar-auto.svelte | 12 +++ .../scroll-area-scrollbar-hover.svelte | 10 +++ .../scroll-area-scrollbar-scroll.svelte | 10 +++ .../scroll-area-scrollbar-shared.svelte | 10 +++ .../scroll-area-scrollbar-visible.svelte | 10 +++ .../components/scroll-area-scrollbar-x.svelte | 11 +++ .../components/scroll-area-scrollbar-y.svelte | 11 +++ .../components/scroll-area-scrollbar.svelte | 12 +++ .../components/scroll-area-thumb-impl.svelte | 12 +++ .../components/scroll-area-thumb.svelte | 10 +++ .../components/scroll-area-viewport.svelte | 10 +++ .../scroll-area/components/scroll-area.svelte | 32 +++++++ .../components/select-content-static.svelte | 10 +++ .../select/components/select-content.svelte | 38 ++++++++ .../components/select-group-heading.svelte | 10 +++ .../select/components/select-group.svelte | 10 +++ .../components/select-hidden-input.svelte | 10 +++ .../select/components/select-item.svelte | 31 +++++++ .../select-scroll-down-button.svelte | 10 +++ .../components/select-scroll-up-button.svelte | 10 +++ .../select/components/select-trigger.svelte | 33 +++++++ .../select/components/select-viewport.svelte | 10 +++ src/uix/terra/select/components/select.svelte | 53 +++++++++++ .../separator/components/separator.svelte | 32 +++++++ .../slider/components/slider-range.svelte | 22 +++++ .../components/slider-thumb-label.svelte | 10 +++ .../slider/components/slider-thumb.svelte | 33 +++++++ .../components/slider-tick-label.svelte | 10 +++ .../slider/components/slider-tick.svelte | 11 +++ src/uix/terra/slider/components/slider.svelte | 55 ++++++++++++ src/uix/terra/spinner/components/bars.svelte | 17 ++++ .../terra/spinner/components/circular.svelte | 13 +++ src/uix/terra/spinner/components/dots.svelte | 17 ++++ src/uix/terra/spinner/components/pulse.svelte | 17 ++++ .../terra/spinner/components/spinner.svelte | 29 ++++++ .../splitter/components/splitter-panel.svelte | 12 +++ .../components/splitter-resize-trigger.svelte | 13 +++ .../splitter/components/splitter-root.svelte | 33 +++++++ .../stepper/components/stepper-content.svelte | 10 +++ .../components/stepper-description.svelte | 10 +++ .../components/stepper-indicator.svelte | 10 +++ .../stepper/components/stepper-item.svelte | 13 +++ .../stepper/components/stepper-list.svelte | 10 +++ .../components/stepper-next-trigger.svelte | 10 +++ .../components/stepper-prev-trigger.svelte | 10 +++ .../stepper/components/stepper-root.svelte | 33 +++++++ .../components/stepper-separator.svelte | 10 +++ .../stepper/components/stepper-title.svelte | 10 +++ .../stepper/components/stepper-trigger.svelte | 10 +++ .../switch/components/switch-thumb.svelte | 30 +++++++ src/uix/terra/switch/components/switch.svelte | 40 +++++++++ .../terra/tabs/components/tabs-content.svelte | 31 +++++++ .../terra/tabs/components/tabs-list.svelte | 29 ++++++ .../terra/tabs/components/tabs-trigger.svelte | 37 ++++++++ src/uix/terra/tabs/components/tabs.svelte | 38 ++++++++ .../components/tags-input-clear.svelte | 10 +++ .../components/tags-input-input.svelte | 10 +++ .../components/tags-input-root.svelte | 48 ++++++++++ .../components/tags-input-tag-remove.svelte | 10 +++ .../components/tags-input-tag-text.svelte | 10 +++ .../components/tags-input-tag.svelte | 35 ++++++++ .../components/time-field-hidden-input.svelte | 11 +++ .../components/time-field-input.svelte | 12 +++ .../components/time-field-label.svelte | 10 +++ .../components/time-field-segment.svelte | 14 +++ .../time-field/components/time-field.svelte | 16 ++++ .../components/time-range-field-input.svelte | 12 +++ .../components/time-range-field-label.svelte | 12 +++ .../components/time-range-field.svelte | 14 +++ .../terra/toast/components/toast-close.svelte | 10 +++ .../toast/components/toast-description.svelte | 10 +++ .../terra/toast/components/toast-root.svelte | 47 ++++++++++ .../terra/toast/components/toast-title.svelte | 10 +++ .../toast/components/toast-toaster.svelte | 23 +++++ .../components/toggle-group-item.svelte | 29 ++++++ .../components/toggle-group.svelte | 44 +++++++++ src/uix/terra/toggle/components/toggle.svelte | 38 ++++++++ .../toolbar/components/toolbar-button.svelte | 11 +++ .../components/toolbar-group-item.svelte | 15 ++++ .../toolbar/components/toolbar-group.svelte | 13 +++ .../toolbar/components/toolbar-link.svelte | 10 +++ .../terra/toolbar/components/toolbar.svelte | 29 ++++++ .../tooltip/components/tooltip-content.svelte | 45 ++++++++++ .../components/tooltip-provider.svelte | 10 +++ .../tooltip/components/tooltip-trigger.svelte | 34 ++++++- .../terra/tooltip/components/tooltip.svelte | 47 ++++++++++ src/uix/terra/utils/attrs.ts | 4 + .../test/execute-callbacks.test.ts | 45 ---------- src/uix/terra/utils/contracts.ts | 48 +++++----- .../components/virtual-list-item.svelte | 11 +++ .../components/virtual-list.svelte | 14 +++ 276 files changed, 6510 insertions(+), 220 deletions(-) delete mode 100644 src/uix/terra/utils/collections/test/execute-callbacks.test.ts diff --git a/src/routes/test/accordion/+page.svelte b/src/routes/test/accordion/+page.svelte index b869e9714..e761289aa 100644 --- a/src/routes/test/accordion/+page.svelte +++ b/src/routes/test/accordion/+page.svelte @@ -70,7 +70,7 @@ El content expone data-state="open|closed" y - --bits-accordion-content-height para animar + --terra-accordion-content-height para animar con CSS sin JavaScript adicional. diff --git a/src/uix/terra/README.md b/src/uix/terra/README.md index c25c42997..fc9ec1da7 100644 --- a/src/uix/terra/README.md +++ b/src/uix/terra/README.md @@ -527,7 +527,7 @@ export const CONTRACTS: Record = { version: 1, parts: { root: [ - { attr: 'data-switch-root', description: 'Siempre presente en el root' }, + { attr: 'data-switch', description: 'Siempre presente en el root' }, { attr: 'data-state', values: ['checked', 'unchecked'], description: 'Estado' }, { attr: 'data-disabled', description: 'Presente cuando disabled=true' }, ], @@ -549,7 +549,7 @@ import { assertDataContract } from '$terra/utils/contracts'; readonly props = $derived.by(() => { const props = { - "data-switch-root": "", + "data-switch": "", "data-state": getDataChecked(this.opts.checked.current), // ... } as const; diff --git a/src/uix/terra/accordion/accordion.svelte.ts b/src/uix/terra/accordion/accordion.svelte.ts index c2de7b7a8..25ee8be24 100644 --- a/src/uix/terra/accordion/accordion.svelte.ts +++ b/src/uix/terra/accordion/accordion.svelte.ts @@ -375,8 +375,8 @@ export class AccordionContentState { "data-orientation": this.item.root.opts.orientation.current, [accordionAttrs.content]: "", style: { - "--bits-accordion-content-height": `${this.dimensions.height}px`, - "--bits-accordion-content-width": `${this.dimensions.width}px`, + "--terra-accordion-content-height": `${this.dimensions.height}px`, + "--terra-accordion-content-width": `${this.dimensions.width}px`, }, hidden: this.opts.hiddenUntilFound.current && !this.item.isActive diff --git a/src/uix/terra/accordion/components/accordion-content.svelte b/src/uix/terra/accordion/components/accordion-content.svelte index 096700eb7..437506f0a 100644 --- a/src/uix/terra/accordion/components/accordion-content.svelte +++ b/src/uix/terra/accordion/components/accordion-content.svelte @@ -1,4 +1,38 @@ diff --git a/src/uix/terra/command/components/command-empty.svelte b/src/uix/terra/command/components/command-empty.svelte index 3d5518c9e..388719521 100644 --- a/src/uix/terra/command/components/command-empty.svelte +++ b/src/uix/terra/command/components/command-empty.svelte @@ -1,4 +1,34 @@ diff --git a/src/uix/terra/command/components/command-group.svelte b/src/uix/terra/command/components/command-group.svelte index 955954b09..afe53c8f4 100644 --- a/src/uix/terra/command/components/command-group.svelte +++ b/src/uix/terra/command/components/command-group.svelte @@ -1,4 +1,36 @@ diff --git a/src/uix/terra/date-range-field/components/date-range-field-input.svelte b/src/uix/terra/date-range-field/components/date-range-field-input.svelte index c7902751f..227fb7302 100644 --- a/src/uix/terra/date-range-field/components/date-range-field-input.svelte +++ b/src/uix/terra/date-range-field/components/date-range-field-input.svelte @@ -1,4 +1,21 @@ @@ -28,3 +55,4 @@ {@render children?.()} {/if} + diff --git a/src/uix/terra/file-upload/components/file-upload-item-name.svelte b/src/uix/terra/file-upload/components/file-upload-item-name.svelte index 603b62597..1f071d473 100644 --- a/src/uix/terra/file-upload/components/file-upload-item-name.svelte +++ b/src/uix/terra/file-upload/components/file-upload-item-name.svelte @@ -1,4 +1,29 @@ @@ -28,3 +53,4 @@ {@render children?.()} {/if} + diff --git a/src/uix/terra/file-upload/components/file-upload-item-size.svelte b/src/uix/terra/file-upload/components/file-upload-item-size.svelte index 36a17963f..2acb64433 100644 --- a/src/uix/terra/file-upload/components/file-upload-item-size.svelte +++ b/src/uix/terra/file-upload/components/file-upload-item-size.svelte @@ -1,4 +1,21 @@ @@ -32,3 +65,4 @@ {@render children?.()} {/if} + diff --git a/src/uix/terra/file-upload/components/file-upload-root.svelte b/src/uix/terra/file-upload/components/file-upload-root.svelte index e3ddb303e..0d8f88438 100644 --- a/src/uix/terra/file-upload/components/file-upload-root.svelte +++ b/src/uix/terra/file-upload/components/file-upload-root.svelte @@ -1,4 +1,42 @@ @@ -46,3 +84,4 @@ {@render children?.()} {/if} + diff --git a/src/uix/terra/form/components/Form.Control.svelte b/src/uix/terra/form/components/Form.Control.svelte index d440b081a..774f12d68 100644 --- a/src/uix/terra/form/components/Form.Control.svelte +++ b/src/uix/terra/form/components/Form.Control.svelte @@ -1,4 +1,38 @@