@threadlabs/looma 0.29.9 → 0.29.11
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/editor/node-views/element.d.ts +7 -0
- package/editor/node-views/expand.d.ts +8 -0
- package/editor/node-views/table-of-contents.d.ts +8 -0
- package/package.json +3 -3
- package/styles/ui-action-bar.css +1 -1
- package/styles/ui-affordance-scope.css +1 -1
- package/styles/ui-avatar-group.css +1 -1
- package/styles/ui-avatar.css +1 -1
- package/styles/ui-badge.css +1 -1
- package/styles/ui-breadcrumb-item.css +1 -1
- package/styles/ui-breadcrumbs.css +1 -1
- package/styles/ui-button.css +1 -1
- package/styles/ui-callout.css +1 -1
- package/styles/ui-card.css +1 -1
- package/styles/ui-checkbox.css +1 -1
- package/styles/ui-cluster.css +1 -1
- package/styles/ui-combobox.css +1 -1
- package/styles/ui-container.css +1 -1
- package/styles/ui-context-menu.css +1 -1
- package/styles/ui-cover.css +1 -1
- package/styles/ui-description-item.css +1 -1
- package/styles/ui-description-list.css +1 -1
- package/styles/ui-dialog.css +1 -1
- package/styles/ui-disclosure.css +1 -1
- package/styles/ui-editable.css +1 -1
- package/styles/ui-editor-block-actions.css +1 -1
- package/styles/ui-editor-chip-editor.css +1 -1
- package/styles/ui-editor-code-language.css +1 -1
- package/styles/ui-editor-image-toolbar.css +1 -1
- package/styles/ui-editor-insert-table-grid.css +1 -1
- package/styles/ui-editor-link-card.css +1 -1
- package/styles/ui-editor-link-form.css +1 -1
- package/styles/ui-editor-mention-menu-item.css +1 -1
- package/styles/ui-editor-mention-menu.css +1 -1
- package/styles/ui-editor-slash-menu-group.css +1 -1
- package/styles/ui-editor-slash-menu-item.css +1 -1
- package/styles/ui-editor-slash-menu.css +1 -1
- package/styles/ui-editor-surface.css +1 -1
- package/styles/ui-editor-table-context-menu.css +1 -1
- package/styles/ui-editor-table-overlay.css +1 -1
- package/styles/ui-editor-table-toolbar.css +1 -1
- package/styles/ui-editor-toolbar.css +1 -1
- package/styles/ui-floating-action-button.css +1 -1
- package/styles/ui-form-field.css +1 -1
- package/styles/ui-grid.css +1 -1
- package/styles/ui-icon-button.css +1 -1
- package/styles/ui-icon.css +1 -1
- package/styles/ui-image.css +1 -1
- package/styles/ui-input-group.css +1 -1
- package/styles/ui-input.css +1 -1
- package/styles/ui-list-item.css +1 -1
- package/styles/ui-list.css +1 -1
- package/styles/ui-listbox.css +1 -1
- package/styles/ui-menu-group.css +1 -1
- package/styles/ui-menu-item.css +1 -1
- package/styles/ui-menu.css +1 -1
- package/styles/ui-meter.css +1 -1
- package/styles/ui-nav-item.css +1 -1
- package/styles/ui-page-header.css +1 -1
- package/styles/ui-popover.css +1 -1
- package/styles/ui-radio-group.css +1 -1
- package/styles/ui-radio.css +1 -1
- package/styles/ui-reel.css +1 -1
- package/styles/ui-scroll-area.css +1 -1
- package/styles/ui-search-result-row.css +1 -1
- package/styles/ui-search-shell.css +1 -1
- package/styles/ui-section.css +1 -1
- package/styles/ui-select.css +1 -1
- package/styles/ui-separator.css +1 -1
- package/styles/ui-sidebar.css +1 -1
- package/styles/ui-spinner.css +1 -1
- package/styles/ui-stack.css +1 -1
- package/styles/ui-status-message.css +1 -1
- package/styles/ui-swatch.css +1 -1
- package/styles/ui-switch.css +1 -1
- package/styles/ui-switcher.css +1 -1
- package/styles/ui-table.css +1 -1
- package/styles/ui-tabs.css +1 -1
- package/styles/ui-text.css +1 -1
- package/styles/ui-textarea.css +1 -1
- package/styles/ui-toast-region.css +1 -1
- package/styles/ui-toast.css +1 -1
- package/styles/ui-tooltip.css +1 -1
- package/styles/ui-top-bar.css +1 -1
- package/styles/ui-tree-item.css +1 -1
- package/styles/ui-tree.css +1 -1
- package/vanilla/UiActionBar.d.ts +1 -1
- package/vanilla/UiActionBar.js +1 -1
- package/vanilla/UiAffordanceScope.d.ts +1 -1
- package/vanilla/UiAffordanceScope.js +1 -1
- package/vanilla/UiAvatar.d.ts +1 -1
- package/vanilla/UiAvatar.js +1 -1
- package/vanilla/UiAvatarGroup.d.ts +1 -1
- package/vanilla/UiAvatarGroup.js +1 -1
- package/vanilla/UiBadge.d.ts +1 -1
- package/vanilla/UiBadge.js +1 -1
- package/vanilla/UiBreadcrumbItem.d.ts +1 -1
- package/vanilla/UiBreadcrumbItem.js +1 -1
- package/vanilla/UiBreadcrumbs.d.ts +1 -1
- package/vanilla/UiBreadcrumbs.js +1 -1
- package/vanilla/UiButton.d.ts +1 -1
- package/vanilla/UiButton.js +1 -1
- package/vanilla/UiCallout.d.ts +1 -1
- package/vanilla/UiCallout.js +1 -1
- package/vanilla/UiCard.d.ts +1 -1
- package/vanilla/UiCard.js +1 -1
- package/vanilla/UiCheckbox.d.ts +1 -1
- package/vanilla/UiCheckbox.js +1 -1
- package/vanilla/UiCluster.d.ts +1 -1
- package/vanilla/UiCluster.js +1 -1
- package/vanilla/UiCombobox.d.ts +1 -1
- package/vanilla/UiCombobox.js +1 -1
- package/vanilla/UiContainer.d.ts +1 -1
- package/vanilla/UiContainer.js +1 -1
- package/vanilla/UiContextMenu.d.ts +1 -1
- package/vanilla/UiContextMenu.js +1 -1
- package/vanilla/UiCover.d.ts +1 -1
- package/vanilla/UiCover.js +1 -1
- package/vanilla/UiDescriptionItem.d.ts +1 -1
- package/vanilla/UiDescriptionItem.js +1 -1
- package/vanilla/UiDescriptionList.d.ts +1 -1
- package/vanilla/UiDescriptionList.js +1 -1
- package/vanilla/UiDialog.d.ts +1 -1
- package/vanilla/UiDialog.js +1 -1
- package/vanilla/UiDisclosure.d.ts +1 -1
- package/vanilla/UiDisclosure.js +1 -1
- package/vanilla/UiEditable.d.ts +1 -1
- package/vanilla/UiEditable.js +1 -1
- package/vanilla/UiEditorBlockActions.d.ts +1 -1
- package/vanilla/UiEditorBlockActions.js +1 -1
- package/vanilla/UiEditorChipEditor.d.ts +1 -1
- package/vanilla/UiEditorChipEditor.js +1 -1
- package/vanilla/UiEditorCodeLanguage.d.ts +1 -1
- package/vanilla/UiEditorCodeLanguage.js +1 -1
- package/vanilla/UiEditorImageToolbar.d.ts +1 -1
- package/vanilla/UiEditorImageToolbar.js +1 -1
- package/vanilla/UiEditorInsertTableGrid.d.ts +1 -1
- package/vanilla/UiEditorInsertTableGrid.js +1 -1
- package/vanilla/UiEditorLinkCard.d.ts +1 -1
- package/vanilla/UiEditorLinkCard.js +1 -1
- package/vanilla/UiEditorLinkForm.d.ts +1 -1
- package/vanilla/UiEditorLinkForm.js +1 -1
- package/vanilla/UiEditorMentionMenu.d.ts +1 -1
- package/vanilla/UiEditorMentionMenu.js +1 -1
- package/vanilla/UiEditorMentionMenuItem.d.ts +1 -1
- package/vanilla/UiEditorMentionMenuItem.js +1 -1
- package/vanilla/UiEditorSlashMenu.d.ts +1 -1
- package/vanilla/UiEditorSlashMenu.js +1 -1
- package/vanilla/UiEditorSlashMenuGroup.d.ts +1 -1
- package/vanilla/UiEditorSlashMenuGroup.js +1 -1
- package/vanilla/UiEditorSlashMenuItem.d.ts +1 -1
- package/vanilla/UiEditorSlashMenuItem.js +1 -1
- package/vanilla/UiEditorSurface.d.ts +1 -1
- package/vanilla/UiEditorSurface.js +1 -1
- package/vanilla/UiEditorTableContextMenu.d.ts +1 -1
- package/vanilla/UiEditorTableContextMenu.js +1 -1
- package/vanilla/UiEditorTableOverlay.d.ts +1 -1
- package/vanilla/UiEditorTableOverlay.js +1 -1
- package/vanilla/UiEditorTableToolbar.d.ts +1 -1
- package/vanilla/UiEditorTableToolbar.js +1 -1
- package/vanilla/UiEditorToolbar.d.ts +1 -1
- package/vanilla/UiEditorToolbar.js +1 -1
- package/vanilla/UiFloatingActionButton.d.ts +1 -1
- package/vanilla/UiFloatingActionButton.js +1 -1
- package/vanilla/UiFormField.d.ts +1 -1
- package/vanilla/UiFormField.js +1 -1
- package/vanilla/UiGrid.d.ts +1 -1
- package/vanilla/UiGrid.js +1 -1
- package/vanilla/UiIcon.d.ts +1 -1
- package/vanilla/UiIcon.js +1 -1
- package/vanilla/UiIconButton.d.ts +1 -1
- package/vanilla/UiIconButton.js +1 -1
- package/vanilla/UiImage.d.ts +1 -1
- package/vanilla/UiImage.js +1 -1
- package/vanilla/UiInput.d.ts +1 -1
- package/vanilla/UiInput.js +1 -1
- package/vanilla/UiInputGroup.d.ts +1 -1
- package/vanilla/UiInputGroup.js +1 -1
- package/vanilla/UiList.d.ts +1 -1
- package/vanilla/UiList.js +1 -1
- package/vanilla/UiListItem.d.ts +1 -1
- package/vanilla/UiListItem.js +1 -1
- package/vanilla/UiListbox.d.ts +1 -1
- package/vanilla/UiListbox.js +1 -1
- package/vanilla/UiMenu.d.ts +1 -1
- package/vanilla/UiMenu.js +1 -1
- package/vanilla/UiMenuGroup.d.ts +1 -1
- package/vanilla/UiMenuGroup.js +1 -1
- package/vanilla/UiMenuItem.d.ts +1 -1
- package/vanilla/UiMenuItem.js +1 -1
- package/vanilla/UiMeter.d.ts +1 -1
- package/vanilla/UiMeter.js +1 -1
- package/vanilla/UiNavItem.d.ts +1 -1
- package/vanilla/UiNavItem.js +1 -1
- package/vanilla/UiPageHeader.d.ts +1 -1
- package/vanilla/UiPageHeader.js +1 -1
- package/vanilla/UiPopover.d.ts +1 -1
- package/vanilla/UiPopover.js +1 -1
- package/vanilla/UiRadio.d.ts +1 -1
- package/vanilla/UiRadio.js +1 -1
- package/vanilla/UiRadioGroup.d.ts +1 -1
- package/vanilla/UiRadioGroup.js +1 -1
- package/vanilla/UiReel.d.ts +1 -1
- package/vanilla/UiReel.js +1 -1
- package/vanilla/UiScrollArea.d.ts +1 -1
- package/vanilla/UiScrollArea.js +1 -1
- package/vanilla/UiSearchResultRow.d.ts +1 -1
- package/vanilla/UiSearchResultRow.js +1 -1
- package/vanilla/UiSearchShell.d.ts +1 -1
- package/vanilla/UiSearchShell.js +1 -1
- package/vanilla/UiSection.d.ts +1 -1
- package/vanilla/UiSection.js +1 -1
- package/vanilla/UiSelect.d.ts +1 -1
- package/vanilla/UiSelect.js +1 -1
- package/vanilla/UiSeparator.d.ts +1 -1
- package/vanilla/UiSeparator.js +1 -1
- package/vanilla/UiSidebar.d.ts +1 -1
- package/vanilla/UiSidebar.js +1 -1
- package/vanilla/UiSpinner.d.ts +1 -1
- package/vanilla/UiSpinner.js +1 -1
- package/vanilla/UiStack.d.ts +1 -1
- package/vanilla/UiStack.js +1 -1
- package/vanilla/UiStatusMessage.d.ts +1 -1
- package/vanilla/UiStatusMessage.js +1 -1
- package/vanilla/UiSwatch.d.ts +1 -1
- package/vanilla/UiSwatch.js +1 -1
- package/vanilla/UiSwitch.d.ts +1 -1
- package/vanilla/UiSwitch.js +1 -1
- package/vanilla/UiSwitcher.d.ts +1 -1
- package/vanilla/UiSwitcher.js +1 -1
- package/vanilla/UiTable.d.ts +1 -1
- package/vanilla/UiTable.js +1 -1
- package/vanilla/UiTabs.d.ts +1 -1
- package/vanilla/UiTabs.js +1 -1
- package/vanilla/UiText.d.ts +1 -1
- package/vanilla/UiText.js +1 -1
- package/vanilla/UiTextarea.d.ts +1 -1
- package/vanilla/UiTextarea.js +1 -1
- package/vanilla/UiToast.d.ts +1 -1
- package/vanilla/UiToast.js +1 -1
- package/vanilla/UiToastRegion.d.ts +1 -1
- package/vanilla/UiToastRegion.js +1 -1
- package/vanilla/UiTooltip.d.ts +1 -1
- package/vanilla/UiTooltip.js +1 -1
- package/vanilla/UiTopBar.d.ts +1 -1
- package/vanilla/UiTopBar.js +1 -1
- package/vanilla/UiTree.d.ts +1 -1
- package/vanilla/UiTree.js +1 -1
- package/vanilla/UiTreeItem.d.ts +1 -1
- package/vanilla/UiTreeItem.js +1 -1
- package/vue/UiActionBar.vue +1 -1
- package/vue/UiAffordanceScope.vue +1 -1
- package/vue/UiAvatar.vue +1 -1
- package/vue/UiAvatarGroup.vue +1 -1
- package/vue/UiBadge.vue +1 -1
- package/vue/UiBreadcrumbItem.vue +1 -1
- package/vue/UiBreadcrumbs.vue +1 -1
- package/vue/UiButton.vue +1 -1
- package/vue/UiCallout.vue +1 -1
- package/vue/UiCard.vue +1 -1
- package/vue/UiCheckbox.vue +1 -1
- package/vue/UiCluster.vue +1 -1
- package/vue/UiCombobox.vue +1 -1
- package/vue/UiContainer.vue +1 -1
- package/vue/UiContextMenu.vue +1 -1
- package/vue/UiCover.vue +1 -1
- package/vue/UiDescriptionItem.vue +1 -1
- package/vue/UiDescriptionList.vue +1 -1
- package/vue/UiDialog.vue +1 -1
- package/vue/UiDisclosure.vue +1 -1
- package/vue/UiEditable.vue +1 -1
- package/vue/UiEditorBlockActions.vue +1 -1
- package/vue/UiEditorChipEditor.vue +1 -1
- package/vue/UiEditorCodeLanguage.vue +1 -1
- package/vue/UiEditorImageToolbar.vue +1 -1
- package/vue/UiEditorInsertTableGrid.vue +1 -1
- package/vue/UiEditorLinkCard.vue +1 -1
- package/vue/UiEditorLinkForm.vue +1 -1
- package/vue/UiEditorMentionMenu.vue +1 -1
- package/vue/UiEditorMentionMenuItem.vue +1 -1
- package/vue/UiEditorSlashMenu.vue +1 -1
- package/vue/UiEditorSlashMenuGroup.vue +1 -1
- package/vue/UiEditorSlashMenuItem.vue +1 -1
- package/vue/UiEditorSurface.vue +1 -1
- package/vue/UiEditorTableContextMenu.vue +1 -1
- package/vue/UiEditorTableOverlay.vue +1 -1
- package/vue/UiEditorTableToolbar.vue +1 -1
- package/vue/UiEditorToolbar.vue +1 -1
- package/vue/UiFloatingActionButton.vue +1 -1
- package/vue/UiFormField.vue +1 -1
- package/vue/UiGrid.vue +1 -1
- package/vue/UiIcon.vue +1 -1
- package/vue/UiIconButton.vue +1 -1
- package/vue/UiImage.vue +1 -1
- package/vue/UiInput.vue +1 -1
- package/vue/UiInputGroup.vue +1 -1
- package/vue/UiList.vue +1 -1
- package/vue/UiListItem.vue +1 -1
- package/vue/UiListbox.vue +1 -1
- package/vue/UiMenu.vue +1 -1
- package/vue/UiMenuGroup.vue +1 -1
- package/vue/UiMenuItem.vue +1 -1
- package/vue/UiMeter.vue +1 -1
- package/vue/UiNavItem.vue +1 -1
- package/vue/UiPageHeader.vue +1 -1
- package/vue/UiPopover.vue +1 -1
- package/vue/UiRadio.vue +1 -1
- package/vue/UiRadioGroup.vue +1 -1
- package/vue/UiReel.vue +1 -1
- package/vue/UiScrollArea.vue +1 -1
- package/vue/UiSearchResultRow.vue +1 -1
- package/vue/UiSearchShell.vue +1 -1
- package/vue/UiSection.vue +1 -1
- package/vue/UiSelect.vue +1 -1
- package/vue/UiSeparator.vue +1 -1
- package/vue/UiSidebar.vue +1 -1
- package/vue/UiSpinner.vue +1 -1
- package/vue/UiStack.vue +1 -1
- package/vue/UiStatusMessage.vue +1 -1
- package/vue/UiSwatch.vue +1 -1
- package/vue/UiSwitch.vue +1 -1
- package/vue/UiSwitcher.vue +1 -1
- package/vue/UiTable.vue +1 -1
- package/vue/UiTabs.vue +1 -1
- package/vue/UiText.vue +1 -1
- package/vue/UiTextarea.vue +1 -1
- package/vue/UiToast.vue +1 -1
- package/vue/UiToastRegion.vue +1 -1
- package/vue/UiTooltip.vue +1 -1
- package/vue/UiTopBar.vue +1 -1
- package/vue/UiTree.vue +1 -1
- package/vue/UiTreeItem.vue +1 -1
- package/vue/chunks/UiActionBar.js +1 -1
- package/vue/chunks/UiAffordanceScope.js +1 -1
- package/vue/chunks/UiAvatar.js +1 -1
- package/vue/chunks/UiAvatarGroup.js +1 -1
- package/vue/chunks/UiBadge.js +1 -1
- package/vue/chunks/UiBreadcrumbItem.js +1 -1
- package/vue/chunks/UiBreadcrumbs.js +1 -1
- package/vue/chunks/UiButton.js +1 -1
- package/vue/chunks/UiCallout.js +1 -1
- package/vue/chunks/UiCard.js +1 -1
- package/vue/chunks/UiCheckbox.js +1 -1
- package/vue/chunks/UiCluster.js +1 -1
- package/vue/chunks/UiCombobox.js +1 -1
- package/vue/chunks/UiContainer.js +1 -1
- package/vue/chunks/UiContextMenu.js +1 -1
- package/vue/chunks/UiCover.js +1 -1
- package/vue/chunks/UiDescriptionItem.js +1 -1
- package/vue/chunks/UiDescriptionList.js +1 -1
- package/vue/chunks/UiDialog.js +1 -1
- package/vue/chunks/UiDisclosure.js +1 -1
- package/vue/chunks/UiEditable.js +1 -1
- package/vue/chunks/UiEditorInsertTableGrid.js +1 -1
- package/vue/chunks/UiEditorMentionMenu.js +1 -1
- package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
- package/vue/chunks/UiEditorSlashMenu.js +1 -1
- package/vue/chunks/UiEditorSlashMenuGroup.js +1 -1
- package/vue/chunks/UiEditorSlashMenuItem.js +1 -1
- package/vue/chunks/UiEditorSurface.js +1 -1
- package/vue/chunks/UiEditorTableContextMenu.js +1 -1
- package/vue/chunks/UiEditorTableOverlay.js +1 -1
- package/vue/chunks/UiEditorTableToolbar.js +1 -1
- package/vue/chunks/UiEditorToolbar.js +1 -1
- package/vue/chunks/UiFloatingActionButton.js +1 -1
- package/vue/chunks/UiFormField.js +1 -1
- package/vue/chunks/UiGrid.js +1 -1
- package/vue/chunks/UiIcon.js +1 -1
- package/vue/chunks/UiIconButton.js +1 -1
- package/vue/chunks/UiImage.js +1 -1
- package/vue/chunks/UiInput.js +1 -1
- package/vue/chunks/UiInputGroup.js +1 -1
- package/vue/chunks/UiList.js +1 -1
- package/vue/chunks/UiListItem.js +1 -1
- package/vue/chunks/UiListbox.js +1 -1
- package/vue/chunks/UiMenu.js +1 -1
- package/vue/chunks/UiMenuGroup.js +1 -1
- package/vue/chunks/UiMenuItem.js +1 -1
- package/vue/chunks/UiMeter.js +1 -1
- package/vue/chunks/UiNavItem.js +1 -1
- package/vue/chunks/UiPageHeader.js +1 -1
- package/vue/chunks/UiPopover.js +1 -1
- package/vue/chunks/UiRadio.js +1 -1
- package/vue/chunks/UiRadioGroup.js +1 -1
- package/vue/chunks/UiReel.js +1 -1
- package/vue/chunks/UiScrollArea.js +1 -1
- package/vue/chunks/UiSearchResultRow.js +1 -1
- package/vue/chunks/UiSearchShell.js +1 -1
- package/vue/chunks/UiSection.js +1 -1
- package/vue/chunks/UiSelect.js +1 -1
- package/vue/chunks/UiSeparator.js +1 -1
- package/vue/chunks/UiSidebar.js +1 -1
- package/vue/chunks/UiSpinner.js +1 -1
- package/vue/chunks/UiStack.js +1 -1
- package/vue/chunks/UiStatusMessage.js +1 -1
- package/vue/chunks/UiSwatch.js +1 -1
- package/vue/chunks/UiSwitch.js +1 -1
- package/vue/chunks/UiSwitcher.js +1 -1
- package/vue/chunks/UiTable.js +1 -1
- package/vue/chunks/UiTabs.js +1 -1
- package/vue/chunks/UiText.js +1 -1
- package/vue/chunks/UiTextarea.js +1 -1
- package/vue/chunks/UiToast.js +1 -1
- package/vue/chunks/UiToastRegion.js +1 -1
- package/vue/chunks/UiTooltip.js +1 -1
- package/vue/chunks/UiTopBar.js +1 -1
- package/vue/chunks/UiTree.js +1 -1
- package/vue/chunks/UiTreeItem.js +1 -1
- package/vue/components.css +3057 -22
- package/vue/editor/LoomaEditor.d.ts +2 -2
- package/vue/editor/index.js +9835 -731
- package/vue/host.ts +1 -1
- package/vue/editor/expand.d.ts +0 -7
- package/vue/editor/table-of-contents.d.ts +0 -7
package/vue/components.css
CHANGED
|
@@ -939,12 +939,12 @@ ol:where([data-hn-ui-breadcrumbs]) {
|
|
|
939
939
|
}
|
|
940
940
|
|
|
941
941
|
/* A rounded SVG arc grows and recedes over a quiet full-circle track. */
|
|
942
|
-
@keyframes ui-spinner-rotate-
|
|
942
|
+
@keyframes ui-spinner-rotate-e50f176a {
|
|
943
943
|
100% {
|
|
944
944
|
transform: rotate(1turn);
|
|
945
945
|
}
|
|
946
946
|
}
|
|
947
|
-
@keyframes ui-spinner-dash-
|
|
947
|
+
@keyframes ui-spinner-dash-e50f176a {
|
|
948
948
|
0% {
|
|
949
949
|
stroke-dasharray: 1, 150;
|
|
950
950
|
stroke-dashoffset: 0;
|
|
@@ -980,7 +980,7 @@ svg {
|
|
|
980
980
|
display: block;
|
|
981
981
|
inline-size: 100%;
|
|
982
982
|
block-size: 100%;
|
|
983
|
-
animation: ui-spinner-rotate-
|
|
983
|
+
animation: ui-spinner-rotate-e50f176a 2s linear infinite;
|
|
984
984
|
}
|
|
985
985
|
circle {
|
|
986
986
|
stroke-width: 3;
|
|
@@ -993,7 +993,7 @@ circle {
|
|
|
993
993
|
stroke: currentColor;
|
|
994
994
|
stroke-dasharray: 90, 150;
|
|
995
995
|
stroke-dashoffset: 0;
|
|
996
|
-
animation: ui-spinner-dash-
|
|
996
|
+
animation: ui-spinner-dash-e50f176a 1.5s ease-in-out infinite;
|
|
997
997
|
}
|
|
998
998
|
@media (prefers-reduced-motion: reduce) {
|
|
999
999
|
svg,.arc {
|
|
@@ -1777,7 +1777,7 @@ html[data-ui-input-modality="touch"]
|
|
|
1777
1777
|
/* The label, and under it an optional line saying what the choice means. */
|
|
1778
1778
|
|
|
1779
1779
|
/* Centre the tick's box and lift it slightly for the rotated check shape. */
|
|
1780
|
-
@keyframes ui-checkbox-check-
|
|
1780
|
+
@keyframes ui-checkbox-check-ec105bae {
|
|
1781
1781
|
from {
|
|
1782
1782
|
opacity: 0;
|
|
1783
1783
|
transform: translateY(-0.09rem) rotate(45deg) scale(0.55);
|
|
@@ -1872,7 +1872,7 @@ input:checked:where([data-hn-ui-checkbox])::after {
|
|
|
1872
1872
|
border-width: 0 0.125rem 0.125rem 0;
|
|
1873
1873
|
opacity: 1;
|
|
1874
1874
|
transform: translateY(-0.09rem) rotate(45deg);
|
|
1875
|
-
animation: ui-checkbox-check-
|
|
1875
|
+
animation: ui-checkbox-check-ec105bae 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1))
|
|
1876
1876
|
both;
|
|
1877
1877
|
}
|
|
1878
1878
|
input:indeterminate:where([data-hn-ui-checkbox])::after {
|
|
@@ -3036,13 +3036,13 @@ dd:where([data-hn-ui-description-item]) {
|
|
|
3036
3036
|
/* A CSS-drawn X. */
|
|
3037
3037
|
|
|
3038
3038
|
/* A touch target, like Button on coarse pointers. */
|
|
3039
|
-
@keyframes ui-dialog-enter-
|
|
3039
|
+
@keyframes ui-dialog-enter-c6c839fc {
|
|
3040
3040
|
from {
|
|
3041
3041
|
opacity: 0;
|
|
3042
3042
|
transform: scale(0.96);
|
|
3043
3043
|
}
|
|
3044
3044
|
}
|
|
3045
|
-
@keyframes ui-dialog-backdrop-enter-
|
|
3045
|
+
@keyframes ui-dialog-backdrop-enter-c6c839fc {
|
|
3046
3046
|
from {
|
|
3047
3047
|
background-color: transparent;
|
|
3048
3048
|
}
|
|
@@ -3090,7 +3090,7 @@ from {
|
|
|
3090
3090
|
pointer-events: auto;
|
|
3091
3091
|
opacity: 1;
|
|
3092
3092
|
transform: scale(1);
|
|
3093
|
-
animation: ui-dialog-enter-
|
|
3093
|
+
animation: ui-dialog-enter-c6c839fc var(--ui-dialog-duration, var(--ui-motion-base))
|
|
3094
3094
|
var(--ui-motion-ease);
|
|
3095
3095
|
}
|
|
3096
3096
|
:scope[data-ui-dialog-state~="size=sm"]:where([data-hn-ui-dialog]) {
|
|
@@ -3208,7 +3208,7 @@ footer:empty:where([data-hn-ui-dialog]) {
|
|
|
3208
3208
|
}
|
|
3209
3209
|
:scope[open]:modal:where([data-hn-ui-dialog])::backdrop {
|
|
3210
3210
|
background-color: var(--ui-overlay-backdrop);
|
|
3211
|
-
animation: ui-dialog-backdrop-enter-
|
|
3211
|
+
animation: ui-dialog-backdrop-enter-c6c839fc var(--_ui-dialog-duration, var(--ui-motion-base))
|
|
3212
3212
|
var(--ui-motion-ease);
|
|
3213
3213
|
}
|
|
3214
3214
|
:scope[open][data-ui-backdrop-hidden]:where([data-hn-ui-dialog])::backdrop {
|
|
@@ -9432,7 +9432,7 @@ input:where([data-hn-ui-switch]),input:where([data-hn-ui-switch])::after {
|
|
|
9432
9432
|
}
|
|
9433
9433
|
|
|
9434
9434
|
/* Leaving slides on down and fades; the controller removes the toast when this ends. */
|
|
9435
|
-
@keyframes ui-toast-enter-
|
|
9435
|
+
@keyframes ui-toast-enter-ae90d81c {
|
|
9436
9436
|
from {
|
|
9437
9437
|
opacity: 0;
|
|
9438
9438
|
transform: translateY(-1rem);
|
|
@@ -9442,7 +9442,7 @@ to {
|
|
|
9442
9442
|
transform: translateY(0);
|
|
9443
9443
|
}
|
|
9444
9444
|
}
|
|
9445
|
-
@keyframes ui-toast-exit-
|
|
9445
|
+
@keyframes ui-toast-exit-ae90d81c {
|
|
9446
9446
|
from {
|
|
9447
9447
|
opacity: 1;
|
|
9448
9448
|
transform: translateY(0);
|
|
@@ -9452,7 +9452,7 @@ to {
|
|
|
9452
9452
|
transform: translateY(0.75rem);
|
|
9453
9453
|
}
|
|
9454
9454
|
}
|
|
9455
|
-
@keyframes ui-toast-enter-bottom-
|
|
9455
|
+
@keyframes ui-toast-enter-bottom-ae90d81c {
|
|
9456
9456
|
from {
|
|
9457
9457
|
opacity: 0;
|
|
9458
9458
|
transform: translateY(1rem);
|
|
@@ -9462,7 +9462,7 @@ to {
|
|
|
9462
9462
|
transform: translateY(0);
|
|
9463
9463
|
}
|
|
9464
9464
|
}
|
|
9465
|
-
@keyframes ui-toast-exit-bottom-
|
|
9465
|
+
@keyframes ui-toast-exit-bottom-ae90d81c {
|
|
9466
9466
|
from {
|
|
9467
9467
|
opacity: 1;
|
|
9468
9468
|
transform: translateY(0);
|
|
@@ -9553,7 +9553,7 @@ to {
|
|
|
9553
9553
|
--_ui-toast-region-shadow,
|
|
9554
9554
|
var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg)))
|
|
9555
9555
|
);
|
|
9556
|
-
animation: ui-toast-enter-
|
|
9556
|
+
animation: ui-toast-enter-ae90d81c var(--_ui-toast-region-enter-duration, 0.32s)
|
|
9557
9557
|
var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
|
|
9558
9558
|
}
|
|
9559
9559
|
.toast[data-tone="info"]:where([data-hn-ui-toast-region]) {
|
|
@@ -9573,17 +9573,17 @@ to {
|
|
|
9573
9573
|
--_ui-toast-region-tone-surface: var(--ui-danger-soft);
|
|
9574
9574
|
}
|
|
9575
9575
|
.toast.closing:where([data-hn-ui-toast-region]) {
|
|
9576
|
-
animation: ui-toast-exit-
|
|
9576
|
+
animation: ui-toast-exit-ae90d81c var(--_ui-toast-region-exit-duration, 0.22s) var(--ui-motion-ease)
|
|
9577
9577
|
both;
|
|
9578
9578
|
pointer-events: none;
|
|
9579
9579
|
}
|
|
9580
9580
|
:is(:scope[data-ui-toast-region-state~="placement=bottom"], :scope[data-ui-toast-region-state~="placement=bottom-start"], :scope[data-ui-toast-region-state~="placement=bottom-end"])
|
|
9581
9581
|
.toast:where([data-hn-ui-toast-region]) {
|
|
9582
|
-
animation-name: ui-toast-enter-bottom-
|
|
9582
|
+
animation-name: ui-toast-enter-bottom-ae90d81c;
|
|
9583
9583
|
}
|
|
9584
9584
|
:is(:scope[data-ui-toast-region-state~="placement=bottom"], :scope[data-ui-toast-region-state~="placement=bottom-start"], :scope[data-ui-toast-region-state~="placement=bottom-end"])
|
|
9585
9585
|
.toast.closing:where([data-hn-ui-toast-region]) {
|
|
9586
|
-
animation-name: ui-toast-exit-bottom-
|
|
9586
|
+
animation-name: ui-toast-exit-bottom-ae90d81c;
|
|
9587
9587
|
}
|
|
9588
9588
|
@media (prefers-reduced-motion: reduce) {
|
|
9589
9589
|
.toast:where([data-hn-ui-toast-region]),.toast.closing:where([data-hn-ui-toast-region]) {
|
|
@@ -9784,7 +9784,7 @@ to {
|
|
|
9784
9784
|
slides, the label reaches back under the icon (the controller measures how far) with its text
|
|
9785
9785
|
where it was, and fades out across the gap before the icon, fully gone where the icon begins
|
|
9786
9786
|
to cover it: the name slips under the icon rather than stopping at a hard edge beside it. */
|
|
9787
|
-
@keyframes ui-tree-item-marquee-
|
|
9787
|
+
@keyframes ui-tree-item-marquee-9af20e85 {
|
|
9788
9788
|
from {
|
|
9789
9789
|
transform: translateX(0);
|
|
9790
9790
|
}
|
|
@@ -10040,7 +10040,7 @@ to {
|
|
|
10040
10040
|
.row[data-ui-marquee] > .label > .label-text:where([data-hn-ui-tree-item]) {
|
|
10041
10041
|
/* Once per pass: the controller restarts it after a rest at the end, so the name holds still
|
|
10042
10042
|
long enough to read rather than sliding back and forth. */
|
|
10043
|
-
animation: ui-tree-item-marquee-
|
|
10043
|
+
animation: ui-tree-item-marquee-9af20e85 var(--_marquee-duration) linear 0.5s 1 normal forwards;
|
|
10044
10044
|
will-change: transform;
|
|
10045
10045
|
}
|
|
10046
10046
|
.row[data-ui-marquee] > .label:where([data-hn-ui-tree-item]) {
|
|
@@ -10965,7 +10965,3042 @@ html[data-ui-input-modality="touch"]
|
|
|
10965
10965
|
width: 3px;
|
|
10966
10966
|
background: var(--ui-affordance-direct-color, var(--ui-accent-solid, #5b55d6));
|
|
10967
10967
|
}
|
|
10968
|
-
/* Generated by HTML Next 1.0.0-alpha.
|
|
10968
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
10969
|
+
@supports (-moz-appearance: none) {
|
|
10970
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
10971
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
10972
|
+
}
|
|
10973
|
+
@supports (-moz-appearance: none) {
|
|
10974
|
+
[data-component~="ui-button"] { --html-next-scope-owner: "ui-button" !important; }
|
|
10975
|
+
}
|
|
10976
|
+
@scope ([data-component~="ui-button"]) to ([data-component], [data-slotted]) {
|
|
10977
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
10978
|
+
@property --ui-button-active-surface {
|
|
10979
|
+
syntax: "*";
|
|
10980
|
+
inherits: false;
|
|
10981
|
+
}
|
|
10982
|
+
@property --ui-button-border {
|
|
10983
|
+
syntax: "*";
|
|
10984
|
+
inherits: false;
|
|
10985
|
+
}
|
|
10986
|
+
@property --ui-button-disabled-filter {
|
|
10987
|
+
syntax: "*";
|
|
10988
|
+
inherits: false;
|
|
10989
|
+
}
|
|
10990
|
+
@property --ui-button-disabled-opacity {
|
|
10991
|
+
syntax: "*";
|
|
10992
|
+
inherits: false;
|
|
10993
|
+
}
|
|
10994
|
+
@property --ui-button-ghost-active-surface {
|
|
10995
|
+
syntax: "*";
|
|
10996
|
+
inherits: false;
|
|
10997
|
+
}
|
|
10998
|
+
@property --ui-button-ghost-hover-surface {
|
|
10999
|
+
syntax: "*";
|
|
11000
|
+
inherits: false;
|
|
11001
|
+
}
|
|
11002
|
+
@property --ui-button-ghost-text {
|
|
11003
|
+
syntax: "*";
|
|
11004
|
+
inherits: false;
|
|
11005
|
+
}
|
|
11006
|
+
@property --ui-button-hover-border {
|
|
11007
|
+
syntax: "*";
|
|
11008
|
+
inherits: false;
|
|
11009
|
+
}
|
|
11010
|
+
@property --ui-button-hover-surface {
|
|
11011
|
+
syntax: "*";
|
|
11012
|
+
inherits: false;
|
|
11013
|
+
}
|
|
11014
|
+
@property --ui-button-link-hover-text {
|
|
11015
|
+
syntax: "*";
|
|
11016
|
+
inherits: false;
|
|
11017
|
+
}
|
|
11018
|
+
@property --ui-button-link-text {
|
|
11019
|
+
syntax: "*";
|
|
11020
|
+
inherits: false;
|
|
11021
|
+
}
|
|
11022
|
+
@property --ui-button-min-block-size {
|
|
11023
|
+
syntax: "*";
|
|
11024
|
+
inherits: false;
|
|
11025
|
+
}
|
|
11026
|
+
@property --ui-button-radius {
|
|
11027
|
+
syntax: "*";
|
|
11028
|
+
inherits: false;
|
|
11029
|
+
}
|
|
11030
|
+
@property --ui-button-shadow {
|
|
11031
|
+
syntax: "*";
|
|
11032
|
+
inherits: false;
|
|
11033
|
+
}
|
|
11034
|
+
@property --ui-button-solid-shadow {
|
|
11035
|
+
syntax: "*";
|
|
11036
|
+
inherits: false;
|
|
11037
|
+
}
|
|
11038
|
+
@property --ui-button-surface {
|
|
11039
|
+
syntax: "*";
|
|
11040
|
+
inherits: false;
|
|
11041
|
+
}
|
|
11042
|
+
@property --ui-button-text {
|
|
11043
|
+
syntax: "*";
|
|
11044
|
+
inherits: false;
|
|
11045
|
+
}
|
|
11046
|
+
@property --ui-button-white-space {
|
|
11047
|
+
syntax: "*";
|
|
11048
|
+
inherits: false;
|
|
11049
|
+
}
|
|
11050
|
+
|
|
11051
|
+
:scope:where([data-component~="ui-button"]) {
|
|
11052
|
+
/* Optional inherited action-group values keep text and icon actions under the same light.
|
|
11053
|
+
One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
|
|
11054
|
+
A single ambient lift avoids stacking a face gradient or another inset bevel. */
|
|
11055
|
+
--_ui-action-start: 1px;
|
|
11056
|
+
--_ui-action-edge: var(
|
|
11057
|
+
--ui-action-edge,
|
|
11058
|
+
inset var(--_ui-action-start) 1px 0 light-dark(rgb(255 255 255 / 0.08), rgb(255 255 255 / 0.06)),
|
|
11059
|
+
inset calc(-1 * var(--_ui-action-start)) -1px 0 light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.08))
|
|
11060
|
+
);
|
|
11061
|
+
--_ui-action-shadow: var(--_ui-action-edge), 0 1px 2px light-dark(rgb(0 0 0 / 0.10), rgb(0 0 0 / 0.20));
|
|
11062
|
+
--_hue: var(--ui-accent);
|
|
11063
|
+
--_hue-hover: var(--ui-accent-hover);
|
|
11064
|
+
--_hue-active: var(--ui-accent-active);
|
|
11065
|
+
--_hue-text: var(--ui-accent-active);
|
|
11066
|
+
--_on-hue: var(--ui-on-accent);
|
|
11067
|
+
|
|
11068
|
+
--_tone: var(--_hue);
|
|
11069
|
+
--_tone-hover: var(--_hue-hover);
|
|
11070
|
+
--_tone-active: var(--_hue-active);
|
|
11071
|
+
--_tone-text: var(--_hue-text);
|
|
11072
|
+
--_on-tone: var(--_on-hue);
|
|
11073
|
+
|
|
11074
|
+
display: inline-flex;
|
|
11075
|
+
align-items: center;
|
|
11076
|
+
justify-content: center;
|
|
11077
|
+
column-gap: var(--ui-space-2);
|
|
11078
|
+
vertical-align: middle;
|
|
11079
|
+
color: var(--_tone-text);
|
|
11080
|
+
}
|
|
11081
|
+
|
|
11082
|
+
:scope:where([data-component~="ui-button"]):dir(rtl) {
|
|
11083
|
+
--_ui-action-start: -1px;
|
|
11084
|
+
}
|
|
11085
|
+
|
|
11086
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="align=start"] {
|
|
11087
|
+
justify-content: flex-start;
|
|
11088
|
+
text-align: start;
|
|
11089
|
+
}
|
|
11090
|
+
|
|
11091
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="stretch"] {
|
|
11092
|
+
display: flex;
|
|
11093
|
+
inline-size: 100%;
|
|
11094
|
+
}
|
|
11095
|
+
|
|
11096
|
+
:scope:where([data-component~="ui-button"]) {
|
|
11097
|
+
appearance: none;
|
|
11098
|
+
min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
|
|
11099
|
+
border-style: solid;
|
|
11100
|
+
border-width: var(--ui-border-width);
|
|
11101
|
+
border-color: var(--ui-button-border, var(--_tone));
|
|
11102
|
+
border-radius: var(--ui-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
|
|
11103
|
+
background-color: var(--ui-button-surface, oklch(from var(--_tone) l c h / 5%));
|
|
11104
|
+
color: var(--ui-button-text, var(--_tone-text));
|
|
11105
|
+
font: inherit;
|
|
11106
|
+
font-weight: var(--ui-font-medium);
|
|
11107
|
+
text-decoration: none;
|
|
11108
|
+
/* Unset, a button wraps as its container does. */
|
|
11109
|
+
white-space: var(--ui-button-white-space, inherit);
|
|
11110
|
+
line-height: var(--ui-line-height-tight);
|
|
11111
|
+
padding: var(--ui-space-2) var(--ui-space-3);
|
|
11112
|
+
background-image: none;
|
|
11113
|
+
box-shadow: var(--ui-button-shadow, var(--ui-action-shadow, var(--_ui-action-shadow)));
|
|
11114
|
+
cursor: pointer;
|
|
11115
|
+
transition:
|
|
11116
|
+
background-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
11117
|
+
border-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
11118
|
+
color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
11119
|
+
box-shadow var(--ui-motion-base) var(--ui-motion-ease);
|
|
11120
|
+
margin: 0;
|
|
11121
|
+
}
|
|
11122
|
+
|
|
11123
|
+
/* An anchor keeps the boxed button look even when an app styles ordinary links. */
|
|
11124
|
+
:scope:where([data-component~="ui-button"]):is(a) {
|
|
11125
|
+
text-decoration: none;
|
|
11126
|
+
}
|
|
11127
|
+
|
|
11128
|
+
.spinner-wrap {
|
|
11129
|
+
display: inline-flex;
|
|
11130
|
+
flex: none;
|
|
11131
|
+
vertical-align: middle;
|
|
11132
|
+
}
|
|
11133
|
+
|
|
11134
|
+
/* A count is an adornment, not another line of label text. Keep the standard control height
|
|
11135
|
+
with enough inset for a 24px mark; large content can still grow the button naturally. */
|
|
11136
|
+
:scope:where([data-component~="ui-button"]):not([variant="link"]):has(.badge:not(:empty)) {
|
|
11137
|
+
padding-block: var(--ui-space-0-5);
|
|
11138
|
+
}
|
|
11139
|
+
|
|
11140
|
+
.badge {
|
|
11141
|
+
display: inline-flex;
|
|
11142
|
+
align-items: center;
|
|
11143
|
+
flex: none;
|
|
11144
|
+
}
|
|
11145
|
+
|
|
11146
|
+
.badge:empty {
|
|
11147
|
+
display: none;
|
|
11148
|
+
}
|
|
11149
|
+
|
|
11150
|
+
@supports (text-box-trim: trim-both) {
|
|
11151
|
+
:scope:where([data-component~="ui-button"]) {
|
|
11152
|
+
text-box-trim: trim-both;
|
|
11153
|
+
text-box-edge: cap alphabetic;
|
|
11154
|
+
}
|
|
11155
|
+
}
|
|
11156
|
+
|
|
11157
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="size=xs"] {
|
|
11158
|
+
min-block-size: 1.5rem;
|
|
11159
|
+
padding: calc(var(--ui-space-0-5) * 1.5) calc(var(--ui-space-1) * 1.25);
|
|
11160
|
+
font-size: var(--ui-font-size-xs);
|
|
11161
|
+
}
|
|
11162
|
+
|
|
11163
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="shape=pill"] {
|
|
11164
|
+
border-radius: var(--ui-button-radius, var(--ui-radius-round));
|
|
11165
|
+
}
|
|
11166
|
+
|
|
11167
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="size=sm"] {
|
|
11168
|
+
min-block-size: var(--ui-control-size-sm);
|
|
11169
|
+
padding: var(--ui-space-1) var(--ui-space-2);
|
|
11170
|
+
font-size: var(--ui-font-size-sm);
|
|
11171
|
+
}
|
|
11172
|
+
|
|
11173
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="size=lg"] {
|
|
11174
|
+
min-block-size: var(--ui-control-size-lg);
|
|
11175
|
+
padding: var(--ui-space-3) var(--ui-space-4);
|
|
11176
|
+
font-size: var(--ui-font-size-md);
|
|
11177
|
+
}
|
|
11178
|
+
|
|
11179
|
+
/* Card actions inherit Button's palette and behavior; only their shared layout changes.
|
|
11180
|
+
The icon may contain any decorative composition. Empty icons remove their column. */
|
|
11181
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"] {
|
|
11182
|
+
display: grid;
|
|
11183
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
11184
|
+
align-content: center;
|
|
11185
|
+
align-items: start;
|
|
11186
|
+
gap: var(--ui-space-3);
|
|
11187
|
+
inline-size: 100%;
|
|
11188
|
+
min-block-size: max(var(--ui-control-min-block-size), var(--ui-control-size-md));
|
|
11189
|
+
text-align: start;
|
|
11190
|
+
white-space: normal;
|
|
11191
|
+
box-shadow: none;
|
|
11192
|
+
background-image: none;
|
|
11193
|
+
}
|
|
11194
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"][data-ui-button-state~="size=lg"] {
|
|
11195
|
+
min-block-size: max(var(--ui-control-min-block-size), var(--ui-control-size-lg));
|
|
11196
|
+
}
|
|
11197
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"]:has(.card-icon:empty) {
|
|
11198
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
11199
|
+
}
|
|
11200
|
+
.card-icon {
|
|
11201
|
+
display: flex;
|
|
11202
|
+
align-items: flex-start;
|
|
11203
|
+
}
|
|
11204
|
+
.card-icon:empty {
|
|
11205
|
+
display: none;
|
|
11206
|
+
}
|
|
11207
|
+
.card-content {
|
|
11208
|
+
min-inline-size: 0;
|
|
11209
|
+
}
|
|
11210
|
+
.card-action {
|
|
11211
|
+
display: flex;
|
|
11212
|
+
align-items: center;
|
|
11213
|
+
align-self: center;
|
|
11214
|
+
}
|
|
11215
|
+
|
|
11216
|
+
/* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
|
|
11217
|
+
is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
|
|
11218
|
+
:scope:where([data-component~="ui-button"]):hover:not(:disabled, [aria-disabled="true"]) {
|
|
11219
|
+
border-color: var(--ui-button-hover-border, var(--_tone-hover));
|
|
11220
|
+
background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
|
|
11221
|
+
}
|
|
11222
|
+
|
|
11223
|
+
/* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
|
|
11224
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"][data-ui-button-state~="tone=neutral"] {
|
|
11225
|
+
border-color: var(--ui-button-border, var(--ui-border));
|
|
11226
|
+
}
|
|
11227
|
+
|
|
11228
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"][data-ui-button-state~="tone=neutral"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
11229
|
+
border-color: var(--ui-button-hover-border, var(--ui-border-strong));
|
|
11230
|
+
}
|
|
11231
|
+
|
|
11232
|
+
/* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
|
|
11233
|
+
:scope:where([data-component~="ui-button"]):active:not(:disabled, [aria-disabled="true"]) {
|
|
11234
|
+
background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
|
|
11235
|
+
background-image: none;
|
|
11236
|
+
box-shadow: var(--ui-pressed);
|
|
11237
|
+
}
|
|
11238
|
+
|
|
11239
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=solid"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=danger"] {
|
|
11240
|
+
border-color: var(--_tone);
|
|
11241
|
+
background-color: var(--_tone);
|
|
11242
|
+
color: var(--_on-tone);
|
|
11243
|
+
box-shadow: var(--ui-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow)));
|
|
11244
|
+
}
|
|
11245
|
+
|
|
11246
|
+
:is(:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=solid"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=danger"]):hover:not(:disabled, [aria-disabled="true"]) {
|
|
11247
|
+
background-color: var(--_tone-hover);
|
|
11248
|
+
border-color: var(--_tone-hover);
|
|
11249
|
+
}
|
|
11250
|
+
|
|
11251
|
+
:is(:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=solid"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=danger"]):active:not(:disabled, [aria-disabled="true"]) {
|
|
11252
|
+
background-color: var(--_tone-active);
|
|
11253
|
+
border-color: var(--_tone-active);
|
|
11254
|
+
background-image: none;
|
|
11255
|
+
box-shadow: var(--ui-pressed);
|
|
11256
|
+
}
|
|
11257
|
+
|
|
11258
|
+
/* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
|
|
11259
|
+
destructive secondary action, not a special case. */
|
|
11260
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="tone=neutral"] {
|
|
11261
|
+
--_hue: var(--ui-text);
|
|
11262
|
+
--_hue-hover: var(--ui-text);
|
|
11263
|
+
--_hue-active: var(--ui-text);
|
|
11264
|
+
--_hue-text: var(--ui-text);
|
|
11265
|
+
--_on-hue: var(--ui-surface);
|
|
11266
|
+
}
|
|
11267
|
+
|
|
11268
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="tone=danger"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=danger"] {
|
|
11269
|
+
--_hue: var(--ui-danger);
|
|
11270
|
+
--_hue-hover: var(--ui-danger-hover);
|
|
11271
|
+
--_hue-active: var(--ui-danger-hover);
|
|
11272
|
+
--_hue-text: var(--ui-danger-hover);
|
|
11273
|
+
--_on-hue: var(--ui-on-danger);
|
|
11274
|
+
}
|
|
11275
|
+
|
|
11276
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="tone=success"] {
|
|
11277
|
+
--_hue: var(--ui-success);
|
|
11278
|
+
--_hue-hover: color-mix(in srgb, var(--ui-success) 85%, #000);
|
|
11279
|
+
--_hue-active: color-mix(in srgb, var(--ui-success) 75%, #000);
|
|
11280
|
+
--_hue-text: color-mix(in srgb, var(--ui-success) 85%, #000);
|
|
11281
|
+
--_on-hue: var(--ui-surface);
|
|
11282
|
+
}
|
|
11283
|
+
|
|
11284
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="tone=warning"] {
|
|
11285
|
+
--_hue: var(--ui-warning);
|
|
11286
|
+
--_hue-hover: color-mix(in srgb, var(--ui-warning) 85%, #000);
|
|
11287
|
+
--_hue-active: color-mix(in srgb, var(--ui-warning) 75%, #000);
|
|
11288
|
+
--_hue-text: color-mix(in srgb, var(--ui-warning) 85%, #000);
|
|
11289
|
+
--_on-hue: var(--ui-surface);
|
|
11290
|
+
}
|
|
11291
|
+
|
|
11292
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="tone=info"] {
|
|
11293
|
+
--_hue: var(--ui-info);
|
|
11294
|
+
--_hue-hover: color-mix(in srgb, var(--ui-info) 85%, #000);
|
|
11295
|
+
--_hue-active: color-mix(in srgb, var(--ui-info) 75%, #000);
|
|
11296
|
+
--_hue-text: color-mix(in srgb, var(--ui-info) 85%, #000);
|
|
11297
|
+
--_on-hue: var(--ui-surface);
|
|
11298
|
+
}
|
|
11299
|
+
|
|
11300
|
+
/* A value picker is a field, with Select's quiet edge and resting lift. */
|
|
11301
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=field"] {
|
|
11302
|
+
--_ui-field-shadow: var(--ui-shadow-sm);
|
|
11303
|
+
border-color: var(--ui-button-border, var(--ui-control-border, var(--ui-border-strong)));
|
|
11304
|
+
border-radius: var(--ui-button-radius, var(--ui-field-radius, var(--ui-radius-md)));
|
|
11305
|
+
background-color: var(--ui-button-surface, var(--ui-control-surface, var(--ui-surface-elevated)));
|
|
11306
|
+
color: var(--ui-button-text, var(--ui-text-primary));
|
|
11307
|
+
font-weight: var(--ui-font-normal);
|
|
11308
|
+
box-shadow: var(--ui-button-shadow, var(--_ui-field-shadow));
|
|
11309
|
+
}
|
|
11310
|
+
|
|
11311
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=field"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
11312
|
+
border-color: var(--ui-button-hover-border, var(--ui-control-border-hover, var(--ui-text-secondary)));
|
|
11313
|
+
background-color: var(--ui-button-hover-surface, var(--ui-control-surface, var(--ui-surface-elevated)));
|
|
11314
|
+
}
|
|
11315
|
+
|
|
11316
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=field"]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]) {
|
|
11317
|
+
--_ui-field-shadow: var(--ui-pressed);
|
|
11318
|
+
}
|
|
11319
|
+
|
|
11320
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=field"]:focus-visible {
|
|
11321
|
+
border-color: var(--ui-control-focus, var(--ui-accent-solid));
|
|
11322
|
+
box-shadow:
|
|
11323
|
+
var(--ui-button-shadow, var(--_ui-field-shadow)),
|
|
11324
|
+
var(--ui-control-focus-halo-shadow);
|
|
11325
|
+
}
|
|
11326
|
+
|
|
11327
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=ghost"] {
|
|
11328
|
+
border-color: transparent;
|
|
11329
|
+
background: transparent;
|
|
11330
|
+
box-shadow: none;
|
|
11331
|
+
color: var(--ui-button-ghost-text, var(--_tone-text));
|
|
11332
|
+
}
|
|
11333
|
+
|
|
11334
|
+
/* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
|
|
11335
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=ghost"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
11336
|
+
background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
|
|
11337
|
+
border-color: transparent;
|
|
11338
|
+
}
|
|
11339
|
+
|
|
11340
|
+
/* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
|
|
11341
|
+
edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
|
|
11342
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=ghost"]:is(:active, [aria-expanded="true"]):not(:disabled, [aria-disabled="true"]) {
|
|
11343
|
+
background-color: var(--ui-button-ghost-active-surface, color-mix(in oklch, var(--ui-surface), var(--_tone) 3%));
|
|
11344
|
+
border-color: transparent;
|
|
11345
|
+
box-shadow: inset 0 0 0 1px oklch(from var(--_tone) l c h / 10%), inset 0 1px 2px oklch(from var(--_tone) l c h / 8%);
|
|
11346
|
+
}
|
|
11347
|
+
|
|
11348
|
+
/* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
|
|
11349
|
+
:scope:where([data-component~="ui-button"]):focus-visible {
|
|
11350
|
+
outline: none;
|
|
11351
|
+
box-shadow:
|
|
11352
|
+
var(--ui-button-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
|
|
11353
|
+
var(--ui-focus-halo);
|
|
11354
|
+
}
|
|
11355
|
+
|
|
11356
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=solid"]:focus-visible {
|
|
11357
|
+
box-shadow:
|
|
11358
|
+
var(--ui-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
|
|
11359
|
+
var(--ui-focus-halo);
|
|
11360
|
+
}
|
|
11361
|
+
|
|
11362
|
+
:is(:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=ghost"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=card"]):focus-visible {
|
|
11363
|
+
box-shadow: var(--ui-focus-halo);
|
|
11364
|
+
}
|
|
11365
|
+
|
|
11366
|
+
/* A loading action stays visually active; only an explicitly disabled action takes the
|
|
11367
|
+
neutral disabled palette. Its flat surface and muted ink make the state unambiguous. */
|
|
11368
|
+
:scope:where([data-component~="ui-button"]):is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
|
|
11369
|
+
border-color: var(--ui-disabled-border);
|
|
11370
|
+
background-color: var(--ui-disabled-surface);
|
|
11371
|
+
color: var(--ui-disabled-text);
|
|
11372
|
+
filter: var(--ui-button-disabled-filter, var(--ui-disabled-filter));
|
|
11373
|
+
opacity: var(--ui-button-disabled-opacity, 1);
|
|
11374
|
+
cursor: not-allowed;
|
|
11375
|
+
background-image: none;
|
|
11376
|
+
box-shadow: none;
|
|
11377
|
+
}
|
|
11378
|
+
|
|
11379
|
+
:is(:scope:where([data-component~="ui-button"])[data-ui-button-state~="loading"], :scope:where([data-component~="ui-button"])[data-ui-button-state~="pending"]):focus-visible {
|
|
11380
|
+
box-shadow: var(--ui-focus-halo);
|
|
11381
|
+
}
|
|
11382
|
+
|
|
11383
|
+
/* Ghost keeps no border, but gains the same neutral surface as other disabled buttons. */
|
|
11384
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=ghost"]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
|
|
11385
|
+
background-color: var(--ui-disabled-surface);
|
|
11386
|
+
border-color: transparent;
|
|
11387
|
+
}
|
|
11388
|
+
|
|
11389
|
+
/* The size states outrank :host, so sm is named too, or a small button would stay small. */
|
|
11390
|
+
@media (pointer: coarse) {
|
|
11391
|
+
:scope:where([data-component~="ui-button"]), :scope:where([data-component~="ui-button"])[data-ui-button-state~="size=sm"] {
|
|
11392
|
+
min-block-size: var(--ui-control-min-block-size);
|
|
11393
|
+
}
|
|
11394
|
+
}
|
|
11395
|
+
|
|
11396
|
+
/* Under touch, a link-style button's press lands within the control minimum: an invisible hit
|
|
11397
|
+
area, centred on it, like IconButton's. A boxed button grows to the minimum itself (below);
|
|
11398
|
+
a link-style one keeps its text size, so a standalone one ("See all" under a list) needs the
|
|
11399
|
+
area. xs sits inside a line of text the same way, so it keeps its size and gains the area too.
|
|
11400
|
+
Only these need it: a hit area on every button would reach over its neighbours. */
|
|
11401
|
+
html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"],
|
|
11402
|
+
html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-button"])[data-ui-button-state~="size=xs"] {
|
|
11403
|
+
position: relative;
|
|
11404
|
+
}
|
|
11405
|
+
|
|
11406
|
+
html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"]::after,
|
|
11407
|
+
html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-button"])[data-ui-button-state~="size=xs"]::after {
|
|
11408
|
+
position: absolute;
|
|
11409
|
+
inset: 50% auto auto 50%;
|
|
11410
|
+
inline-size: max(100%, var(--ui-control-min-block-size));
|
|
11411
|
+
block-size: max(100%, var(--ui-control-min-block-size));
|
|
11412
|
+
transform: translate(-50%, -50%);
|
|
11413
|
+
content: "";
|
|
11414
|
+
}
|
|
11415
|
+
|
|
11416
|
+
/* Link: an inline text action. No box, padding, or minimum height (inline targets are exempt under
|
|
11417
|
+
WCAG 2.5.8); the inherited font; an underline that strengthens on hover; a visible focus ring. */
|
|
11418
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"] {
|
|
11419
|
+
display: inline;
|
|
11420
|
+
min-block-size: 0;
|
|
11421
|
+
padding: 0;
|
|
11422
|
+
border: 0;
|
|
11423
|
+
border-radius: var(--ui-radius-sm);
|
|
11424
|
+
background: none;
|
|
11425
|
+
box-shadow: none;
|
|
11426
|
+
font: inherit;
|
|
11427
|
+
color: var(--ui-button-link-text, var(--ui-text-secondary));
|
|
11428
|
+
text-decoration-line: underline;
|
|
11429
|
+
text-decoration-thickness: 1px;
|
|
11430
|
+
text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
|
|
11431
|
+
text-underline-offset: 0.2em;
|
|
11432
|
+
transition: color var(--ui-motion-fast) var(--ui-motion-ease), text-decoration-color var(--ui-motion-fast) var(--ui-motion-ease);
|
|
11433
|
+
}
|
|
11434
|
+
|
|
11435
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
11436
|
+
color: var(--ui-button-link-hover-text, var(--ui-text-primary));
|
|
11437
|
+
text-decoration-color: currentColor;
|
|
11438
|
+
background: none;
|
|
11439
|
+
transform: none;
|
|
11440
|
+
}
|
|
11441
|
+
|
|
11442
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"]:active:not(:disabled, [aria-disabled="true"]) {
|
|
11443
|
+
background: none;
|
|
11444
|
+
transform: none;
|
|
11445
|
+
}
|
|
11446
|
+
|
|
11447
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"]:is(:disabled, [aria-disabled="true"]:not([aria-busy="true"])) {
|
|
11448
|
+
background: none;
|
|
11449
|
+
border-color: transparent;
|
|
11450
|
+
}
|
|
11451
|
+
|
|
11452
|
+
:scope:where([data-component~="ui-button"])[data-ui-button-state~="variant=link"]:focus-visible {
|
|
11453
|
+
box-shadow: none;
|
|
11454
|
+
/* Fallback keeps the ring if the token is missing: an unresolved var() would void the outline. */
|
|
11455
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring);
|
|
11456
|
+
outline-offset: var(--ui-focus-width);
|
|
11457
|
+
}
|
|
11458
|
+
|
|
11459
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
11460
|
+
:scope:where([data-component~="ui-button"])[hidden] {
|
|
11461
|
+
display: none;
|
|
11462
|
+
}
|
|
11463
|
+
}
|
|
11464
|
+
@scope ([data-component~="ui-button"]) to ([data-component]) {
|
|
11465
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
11466
|
+
|
|
11467
|
+
/* An anchor keeps the boxed button look even when an app styles ordinary links. */
|
|
11468
|
+
|
|
11469
|
+
/* A count is an adornment, not another line of label text. Keep the standard control height
|
|
11470
|
+
with enough inset for a 24px mark; large content can still grow the button naturally. */
|
|
11471
|
+
|
|
11472
|
+
@supports (text-box-trim: trim-both) {
|
|
11473
|
+
}
|
|
11474
|
+
|
|
11475
|
+
/* Card actions inherit Button's palette and behavior; only their shared layout changes.
|
|
11476
|
+
The icon may contain any decorative composition. Empty icons remove their column. */
|
|
11477
|
+
|
|
11478
|
+
/* A link is never :enabled, so interactive states test "not unavailable" instead: for a button that
|
|
11479
|
+
is exactly :enabled, at the same specificity, and it also matches a link that can be followed. */
|
|
11480
|
+
|
|
11481
|
+
/* A neutral card encloses content quietly; ordinary outlines keep their action-tone edge. */
|
|
11482
|
+
|
|
11483
|
+
/* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
|
|
11484
|
+
|
|
11485
|
+
/* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
|
|
11486
|
+
destructive secondary action, not a special case. */
|
|
11487
|
+
|
|
11488
|
+
/* A value picker is a field, with Select's quiet edge and resting lift. */
|
|
11489
|
+
|
|
11490
|
+
/* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
|
|
11491
|
+
|
|
11492
|
+
/* Pressed, or holding its menu open, a ghost button sinks slightly: a light surface with a faint
|
|
11493
|
+
edge and a soft inner shadow. Lighter than hover, so an open menu's trigger never reads as heavy. */
|
|
11494
|
+
|
|
11495
|
+
/* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
|
|
11496
|
+
|
|
11497
|
+
/* A loading action stays visually active; only an explicitly disabled action takes the
|
|
11498
|
+
neutral disabled palette. Its flat surface and muted ink make the state unambiguous. */
|
|
11499
|
+
|
|
11500
|
+
/* Ghost keeps no border, but gains the same neutral surface as other disabled buttons. */
|
|
11501
|
+
|
|
11502
|
+
/* The size states outrank :host, so sm is named too, or a small button would stay small. */
|
|
11503
|
+
@media (pointer: coarse) {
|
|
11504
|
+
}
|
|
11505
|
+
|
|
11506
|
+
/* Under touch, a link-style button's press lands within the control minimum: an invisible hit
|
|
11507
|
+
area, centred on it, like IconButton's. A boxed button grows to the minimum itself (below);
|
|
11508
|
+
a link-style one keeps its text size, so a standalone one ("See all" under a list) needs the
|
|
11509
|
+
area. xs sits inside a line of text the same way, so it keeps its size and gains the area too.
|
|
11510
|
+
Only these need it: a hit area on every button would reach over its neighbours. */
|
|
11511
|
+
|
|
11512
|
+
/* Link: an inline text action. No box, padding, or minimum height (inline targets are exempt under
|
|
11513
|
+
WCAG 2.5.8); the inherited font; an underline that strengthens on hover; a visible focus ring. */
|
|
11514
|
+
|
|
11515
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
11516
|
+
}
|
|
11517
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
11518
|
+
@supports (-moz-appearance: none) {
|
|
11519
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
11520
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
11521
|
+
}
|
|
11522
|
+
@supports (-moz-appearance: none) {
|
|
11523
|
+
[data-component~="ui-cluster"] { --html-next-scope-owner: "ui-cluster" !important; }
|
|
11524
|
+
}
|
|
11525
|
+
@scope ([data-component~="ui-cluster"]) to ([data-component], [data-slotted]) {
|
|
11526
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
11527
|
+
@property --ui-cluster-gap {
|
|
11528
|
+
syntax: "*";
|
|
11529
|
+
inherits: false;
|
|
11530
|
+
}
|
|
11531
|
+
|
|
11532
|
+
:scope:where([data-component~="ui-cluster"]) {
|
|
11533
|
+
--_layout-gap: var(--ui-space-3);
|
|
11534
|
+
display: flex;
|
|
11535
|
+
flex-wrap: wrap;
|
|
11536
|
+
align-items: center;
|
|
11537
|
+
gap: var(--ui-cluster-gap, var(--_layout-gap));
|
|
11538
|
+
min-inline-size: 0;
|
|
11539
|
+
max-inline-size: 100%;
|
|
11540
|
+
margin: 0;
|
|
11541
|
+
}
|
|
11542
|
+
|
|
11543
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="fixed"] {
|
|
11544
|
+
flex: none;
|
|
11545
|
+
}
|
|
11546
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="padding=s"] {
|
|
11547
|
+
padding: var(--ui-space-2);
|
|
11548
|
+
}
|
|
11549
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="padding=m"] {
|
|
11550
|
+
padding: var(--ui-space-3);
|
|
11551
|
+
}
|
|
11552
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="padding=l"] {
|
|
11553
|
+
padding: var(--ui-space-4);
|
|
11554
|
+
}
|
|
11555
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="paddingEnd=s"] {
|
|
11556
|
+
padding-inline-end: var(--ui-space-2);
|
|
11557
|
+
}
|
|
11558
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="paddingEnd=m"] {
|
|
11559
|
+
padding-inline-end: var(--ui-space-3);
|
|
11560
|
+
}
|
|
11561
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="paddingEnd=l"] {
|
|
11562
|
+
padding-inline-end: var(--ui-space-4);
|
|
11563
|
+
}
|
|
11564
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="paddingEnd=xl"] {
|
|
11565
|
+
padding-inline-end: calc(var(--ui-space-4) * 4);
|
|
11566
|
+
}
|
|
11567
|
+
|
|
11568
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="gap=xs"] {
|
|
11569
|
+
--_layout-gap: var(--ui-space-2);
|
|
11570
|
+
}
|
|
11571
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="gap=s"] {
|
|
11572
|
+
--_layout-gap: var(--ui-space-3);
|
|
11573
|
+
}
|
|
11574
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="gap=m"] {
|
|
11575
|
+
--_layout-gap: var(--ui-space-4);
|
|
11576
|
+
}
|
|
11577
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="gap=l"] {
|
|
11578
|
+
--_layout-gap: var(--ui-space-5);
|
|
11579
|
+
}
|
|
11580
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="gap=xl"] {
|
|
11581
|
+
--_layout-gap: var(--ui-space-6);
|
|
11582
|
+
}
|
|
11583
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="align=start"] {
|
|
11584
|
+
align-items: flex-start;
|
|
11585
|
+
}
|
|
11586
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="align=end"] {
|
|
11587
|
+
align-items: flex-end;
|
|
11588
|
+
}
|
|
11589
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="align=baseline"] {
|
|
11590
|
+
align-items: baseline;
|
|
11591
|
+
}
|
|
11592
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="align=stretch"] {
|
|
11593
|
+
align-items: stretch;
|
|
11594
|
+
}
|
|
11595
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="justify=center"] {
|
|
11596
|
+
justify-content: center;
|
|
11597
|
+
}
|
|
11598
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="justify=end"] {
|
|
11599
|
+
justify-content: flex-end;
|
|
11600
|
+
}
|
|
11601
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="justify=between"] {
|
|
11602
|
+
justify-content: space-between;
|
|
11603
|
+
}
|
|
11604
|
+
:scope:where([data-component~="ui-cluster"])[data-ui-cluster-state~="wrap=nowrap"] {
|
|
11605
|
+
flex-wrap: nowrap;
|
|
11606
|
+
}
|
|
11607
|
+
|
|
11608
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
11609
|
+
:scope:where([data-component~="ui-cluster"])[hidden] {
|
|
11610
|
+
display: none;
|
|
11611
|
+
}
|
|
11612
|
+
}
|
|
11613
|
+
@scope ([data-component~="ui-cluster"]) to ([data-component]) {
|
|
11614
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
11615
|
+
|
|
11616
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
11617
|
+
}
|
|
11618
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
11619
|
+
@supports (-moz-appearance: none) {
|
|
11620
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
11621
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
11622
|
+
}
|
|
11623
|
+
@supports (-moz-appearance: none) {
|
|
11624
|
+
[data-component~="ui-form-field"] { --html-next-scope-owner: "ui-form-field" !important; }
|
|
11625
|
+
}
|
|
11626
|
+
@scope ([data-component~="ui-form-field"]) to ([data-component], [data-slotted]) {
|
|
11627
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
11628
|
+
@property --ui-form-field-danger {
|
|
11629
|
+
syntax: "*";
|
|
11630
|
+
inherits: false;
|
|
11631
|
+
}
|
|
11632
|
+
@property --ui-form-field-help-font-size {
|
|
11633
|
+
syntax: "*";
|
|
11634
|
+
inherits: false;
|
|
11635
|
+
}
|
|
11636
|
+
@property --ui-form-field-help-min-block-size {
|
|
11637
|
+
syntax: "*";
|
|
11638
|
+
inherits: false;
|
|
11639
|
+
}
|
|
11640
|
+
@property --ui-form-field-help-text {
|
|
11641
|
+
syntax: "*";
|
|
11642
|
+
inherits: false;
|
|
11643
|
+
}
|
|
11644
|
+
@property --ui-form-field-label-font-size {
|
|
11645
|
+
syntax: "*";
|
|
11646
|
+
inherits: false;
|
|
11647
|
+
}
|
|
11648
|
+
@property --ui-form-field-label-text {
|
|
11649
|
+
syntax: "*";
|
|
11650
|
+
inherits: false;
|
|
11651
|
+
}
|
|
11652
|
+
@property --ui-form-field-min-inline-size {
|
|
11653
|
+
syntax: "*";
|
|
11654
|
+
inherits: false;
|
|
11655
|
+
}
|
|
11656
|
+
|
|
11657
|
+
:scope:where([data-component~="ui-form-field"]) {
|
|
11658
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
11659
|
+
--_ui-form-field-danger: var(--ui-form-field-danger);
|
|
11660
|
+
--_ui-form-field-help-min-block-size: var(--ui-form-field-help-min-block-size);
|
|
11661
|
+
--_ui-form-field-label-text: var(--ui-form-field-label-text);
|
|
11662
|
+
--_ui-form-field-label-font-size: var(--ui-form-field-label-font-size);
|
|
11663
|
+
--_ui-form-field-help-text: var(--ui-form-field-help-text);
|
|
11664
|
+
--_ui-form-field-help-font-size: var(--ui-form-field-help-font-size);
|
|
11665
|
+
|
|
11666
|
+
display: grid;
|
|
11667
|
+
gap: var(--ui-space-2);
|
|
11668
|
+
min-inline-size: var(--ui-form-field-min-inline-size, 0);
|
|
11669
|
+
align-content: start;
|
|
11670
|
+
color: var(--ui-text-primary);
|
|
11671
|
+
}
|
|
11672
|
+
|
|
11673
|
+
/* Each named region styles whatever fills it, however it was slotted (slot="…" in HTML, #label
|
|
11674
|
+
in Vue), and generates no box of its own, so an empty region adds no gap. */
|
|
11675
|
+
.label,
|
|
11676
|
+
.help,
|
|
11677
|
+
.error {
|
|
11678
|
+
display: contents;
|
|
11679
|
+
}
|
|
11680
|
+
|
|
11681
|
+
.label {
|
|
11682
|
+
color: var(--_ui-form-field-label-text, var(--ui-text-secondary));
|
|
11683
|
+
font-size: var(--_ui-form-field-label-font-size, var(--ui-font-size-sm));
|
|
11684
|
+
}
|
|
11685
|
+
|
|
11686
|
+
/* A label action, such as a small help button, sits after the label text in a box one line
|
|
11687
|
+
tall, centred on the first line and overflowing it. A button taller than a line of label
|
|
11688
|
+
text then never makes this field's label row taller than its neighbours' in a grid row. */
|
|
11689
|
+
.label:has(> .label-action > *) {
|
|
11690
|
+
display: flex;
|
|
11691
|
+
align-items: start;
|
|
11692
|
+
gap: var(--ui-space-1);
|
|
11693
|
+
}
|
|
11694
|
+
|
|
11695
|
+
.label-action {
|
|
11696
|
+
display: flex;
|
|
11697
|
+
align-items: unsafe center;
|
|
11698
|
+
block-size: 1lh;
|
|
11699
|
+
}
|
|
11700
|
+
|
|
11701
|
+
.label-action:not(:has(> *)) {
|
|
11702
|
+
display: none;
|
|
11703
|
+
}
|
|
11704
|
+
|
|
11705
|
+
.help {
|
|
11706
|
+
color: var(--_ui-form-field-help-text, var(--ui-text-muted));
|
|
11707
|
+
font-size: var(--_ui-form-field-help-font-size, var(--ui-font-size-sm));
|
|
11708
|
+
line-height: var(--ui-line-height-md);
|
|
11709
|
+
}
|
|
11710
|
+
|
|
11711
|
+
.error {
|
|
11712
|
+
display: none;
|
|
11713
|
+
}
|
|
11714
|
+
|
|
11715
|
+
:scope:where([data-component~="ui-form-field"])[data-ui-form-field-state~="invalid"] .error {
|
|
11716
|
+
display: contents;
|
|
11717
|
+
}
|
|
11718
|
+
|
|
11719
|
+
/* An error reads in the danger colour, the one the invalid control's border takes. */
|
|
11720
|
+
|
|
11721
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
11722
|
+
:scope:where([data-component~="ui-form-field"])[hidden] {
|
|
11723
|
+
display: none;
|
|
11724
|
+
}
|
|
11725
|
+
}
|
|
11726
|
+
@scope ([data-component~="ui-form-field"]) to ([data-component]) {
|
|
11727
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
11728
|
+
|
|
11729
|
+
/* Each named region styles whatever fills it, however it was slotted (slot="…" in HTML, #label
|
|
11730
|
+
in Vue), and generates no box of its own, so an empty region adds no gap. */
|
|
11731
|
+
|
|
11732
|
+
/* A label action, such as a small help button, sits after the label text in a box one line
|
|
11733
|
+
tall, centred on the first line and overflowing it. A button taller than a line of label
|
|
11734
|
+
text then never makes this field's label row taller than its neighbours' in a grid row. */
|
|
11735
|
+
|
|
11736
|
+
.help > :where([data-slotted], [data-slotted] *):is(*) {
|
|
11737
|
+
min-block-size: var(--_ui-form-field-help-min-block-size, 0);
|
|
11738
|
+
}
|
|
11739
|
+
|
|
11740
|
+
/* An error reads in the danger colour, the one the invalid control's border takes. */
|
|
11741
|
+
.error,
|
|
11742
|
+
:where([data-slotted], [data-slotted] *):is([role="alert"]) {
|
|
11743
|
+
color: var(--_ui-form-field-danger, var(--ui-field-danger, var(--ui-danger)));
|
|
11744
|
+
font-size: var(--ui-font-size-sm);
|
|
11745
|
+
}
|
|
11746
|
+
|
|
11747
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
11748
|
+
}
|
|
11749
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
11750
|
+
@supports (-moz-appearance: none) {
|
|
11751
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
11752
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
11753
|
+
}
|
|
11754
|
+
@supports (-moz-appearance: none) {
|
|
11755
|
+
[data-component~="ui-icon"] { --html-next-scope-owner: "ui-icon" !important; }
|
|
11756
|
+
}
|
|
11757
|
+
@scope ([data-component~="ui-icon"]) to ([data-component], [data-slotted]) {
|
|
11758
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
11759
|
+
@property --ui-icon-size {
|
|
11760
|
+
syntax: "*";
|
|
11761
|
+
inherits: false;
|
|
11762
|
+
}
|
|
11763
|
+
@property --ui-icon-stroke-width {
|
|
11764
|
+
syntax: "*";
|
|
11765
|
+
inherits: false;
|
|
11766
|
+
}
|
|
11767
|
+
|
|
11768
|
+
:scope:where([data-component~="ui-icon"]) {
|
|
11769
|
+
/* Hooks do not inherit, so the svg reads the stroke from the root. A Looma component that
|
|
11770
|
+
sizes the icons it renders sets --_ui-default-icon-*, which the icon's own hooks override. */
|
|
11771
|
+
--_ui-icon-stroke-width: var(--ui-icon-stroke-width, var(--_ui-default-icon-stroke-width));
|
|
11772
|
+
|
|
11773
|
+
display: inline-flex;
|
|
11774
|
+
flex: none;
|
|
11775
|
+
inline-size: var(--ui-icon-size, var(--_ui-default-icon-size, 1em));
|
|
11776
|
+
block-size: var(--ui-icon-size, var(--_ui-default-icon-size, 1em));
|
|
11777
|
+
}
|
|
11778
|
+
|
|
11779
|
+
svg {
|
|
11780
|
+
inline-size: 100%;
|
|
11781
|
+
block-size: 100%;
|
|
11782
|
+
stroke-width: var(--_ui-icon-stroke-width, 2);
|
|
11783
|
+
}
|
|
11784
|
+
|
|
11785
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
11786
|
+
:scope:where([data-component~="ui-icon"])[hidden] {
|
|
11787
|
+
display: none;
|
|
11788
|
+
}
|
|
11789
|
+
}
|
|
11790
|
+
@scope ([data-component~="ui-icon"]) to ([data-component]) {
|
|
11791
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
11792
|
+
|
|
11793
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
11794
|
+
}
|
|
11795
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
11796
|
+
@supports (-moz-appearance: none) {
|
|
11797
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
11798
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
11799
|
+
}
|
|
11800
|
+
@supports (-moz-appearance: none) {
|
|
11801
|
+
[data-component~="ui-icon-button"] { --html-next-scope-owner: "ui-icon-button" !important; }
|
|
11802
|
+
}
|
|
11803
|
+
@scope ([data-component~="ui-icon-button"]) to ([data-component], [data-slotted]) {
|
|
11804
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
11805
|
+
@property --ui-icon-button-active-scale {
|
|
11806
|
+
syntax: "*";
|
|
11807
|
+
inherits: false;
|
|
11808
|
+
}
|
|
11809
|
+
@property --ui-icon-button-active-surface {
|
|
11810
|
+
syntax: "*";
|
|
11811
|
+
inherits: false;
|
|
11812
|
+
}
|
|
11813
|
+
@property --ui-icon-button-border {
|
|
11814
|
+
syntax: "*";
|
|
11815
|
+
inherits: false;
|
|
11816
|
+
}
|
|
11817
|
+
@property --ui-icon-button-disabled-filter {
|
|
11818
|
+
syntax: "*";
|
|
11819
|
+
inherits: false;
|
|
11820
|
+
}
|
|
11821
|
+
@property --ui-icon-button-disabled-opacity {
|
|
11822
|
+
syntax: "*";
|
|
11823
|
+
inherits: false;
|
|
11824
|
+
}
|
|
11825
|
+
@property --ui-icon-button-hover-border {
|
|
11826
|
+
syntax: "*";
|
|
11827
|
+
inherits: false;
|
|
11828
|
+
}
|
|
11829
|
+
@property --ui-icon-button-hover-surface {
|
|
11830
|
+
syntax: "*";
|
|
11831
|
+
inherits: false;
|
|
11832
|
+
}
|
|
11833
|
+
@property --ui-icon-button-hover-text {
|
|
11834
|
+
syntax: "*";
|
|
11835
|
+
inherits: false;
|
|
11836
|
+
}
|
|
11837
|
+
@property --ui-icon-button-icon-size {
|
|
11838
|
+
syntax: "*";
|
|
11839
|
+
inherits: false;
|
|
11840
|
+
}
|
|
11841
|
+
@property --ui-icon-button-icon-stroke-width {
|
|
11842
|
+
syntax: "*";
|
|
11843
|
+
inherits: false;
|
|
11844
|
+
}
|
|
11845
|
+
@property --ui-icon-button-outline-surface {
|
|
11846
|
+
syntax: "*";
|
|
11847
|
+
inherits: false;
|
|
11848
|
+
}
|
|
11849
|
+
@property --ui-icon-button-outline-text {
|
|
11850
|
+
syntax: "*";
|
|
11851
|
+
inherits: false;
|
|
11852
|
+
}
|
|
11853
|
+
@property --ui-icon-button-radius {
|
|
11854
|
+
syntax: "*";
|
|
11855
|
+
inherits: false;
|
|
11856
|
+
}
|
|
11857
|
+
@property --ui-icon-button-size {
|
|
11858
|
+
syntax: "*";
|
|
11859
|
+
inherits: false;
|
|
11860
|
+
}
|
|
11861
|
+
@property --ui-icon-button-solid-hover-surface {
|
|
11862
|
+
syntax: "*";
|
|
11863
|
+
inherits: false;
|
|
11864
|
+
}
|
|
11865
|
+
@property --ui-icon-button-solid-shadow {
|
|
11866
|
+
syntax: "*";
|
|
11867
|
+
inherits: false;
|
|
11868
|
+
}
|
|
11869
|
+
@property --ui-icon-button-solid-surface {
|
|
11870
|
+
syntax: "*";
|
|
11871
|
+
inherits: false;
|
|
11872
|
+
}
|
|
11873
|
+
@property --ui-icon-button-solid-text {
|
|
11874
|
+
syntax: "*";
|
|
11875
|
+
inherits: false;
|
|
11876
|
+
}
|
|
11877
|
+
@property --ui-icon-button-surface {
|
|
11878
|
+
syntax: "*";
|
|
11879
|
+
inherits: false;
|
|
11880
|
+
}
|
|
11881
|
+
|
|
11882
|
+
:scope:where([data-component~="ui-icon-button"]) {
|
|
11883
|
+
/* Optional inherited action-group values keep text and icon actions under the same light.
|
|
11884
|
+
One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
|
|
11885
|
+
A single ambient lift avoids stacking a face gradient or another inset bevel. */
|
|
11886
|
+
--_ui-action-start: 1px;
|
|
11887
|
+
--_ui-action-edge: var(
|
|
11888
|
+
--ui-action-edge,
|
|
11889
|
+
inset var(--_ui-action-start) 1px 0 light-dark(rgb(255 255 255 / 0.08), rgb(255 255 255 / 0.06)),
|
|
11890
|
+
inset calc(-1 * var(--_ui-action-start)) -1px 0 light-dark(rgb(0 0 0 / 0.08), rgb(0 0 0 / 0.08))
|
|
11891
|
+
);
|
|
11892
|
+
--_ui-action-shadow: var(--_ui-action-edge), 0 1px 2px light-dark(rgb(0 0 0 / 0.10), rgb(0 0 0 / 0.20));
|
|
11893
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
11894
|
+
--_ui-icon-button-icon-size: var(--ui-icon-button-icon-size);
|
|
11895
|
+
--_ui-icon-button-icon-stroke-width: var(--ui-icon-button-icon-stroke-width);
|
|
11896
|
+
|
|
11897
|
+
display: inline-flex;
|
|
11898
|
+
color: var(--ui-text-secondary);
|
|
11899
|
+
}
|
|
11900
|
+
|
|
11901
|
+
:scope:where([data-component~="ui-icon-button"]):dir(rtl) {
|
|
11902
|
+
--_ui-action-start: -1px;
|
|
11903
|
+
}
|
|
11904
|
+
|
|
11905
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="tone=accent"] {
|
|
11906
|
+
--_icon-button-border: var(--ui-accent-solid);
|
|
11907
|
+
--_icon-button-hover-border: var(--ui-accent-hover);
|
|
11908
|
+
--_icon-button-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
|
|
11909
|
+
--_icon-button-outline-surface: color-mix(in srgb, var(--ui-accent-solid) 5%, var(--ui-surface-default));
|
|
11910
|
+
color: var(--_icon-button-text);
|
|
11911
|
+
}
|
|
11912
|
+
|
|
11913
|
+
/* Omitted tone retains the existing accent solid; explicit neutral is additive. */
|
|
11914
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="tone=neutral"] {
|
|
11915
|
+
--_icon-button-solid-surface: var(--ui-text-primary);
|
|
11916
|
+
--_icon-button-solid-hover-surface: var(--ui-text-primary);
|
|
11917
|
+
--_icon-button-solid-text: var(--ui-surface-default);
|
|
11918
|
+
}
|
|
11919
|
+
|
|
11920
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"] {
|
|
11921
|
+
position: relative;
|
|
11922
|
+
}
|
|
11923
|
+
|
|
11924
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]::before {
|
|
11925
|
+
content: "";
|
|
11926
|
+
position: absolute;
|
|
11927
|
+
inset: 50% auto auto 50%;
|
|
11928
|
+
z-index: 1;
|
|
11929
|
+
inline-size: var(--ui-affordance-guide-size);
|
|
11930
|
+
block-size: var(--ui-affordance-guide-size);
|
|
11931
|
+
border-radius: var(--ui-radius-round);
|
|
11932
|
+
background: var(--ui-affordance-guide-color, var(--ui-border-strong));
|
|
11933
|
+
opacity: calc(var(--ui-affordance-guide-opacity) * var(--ui-affordance-scope-guide, 1));
|
|
11934
|
+
transform: translate(-50%, -50%);
|
|
11935
|
+
transition: opacity var(--ui-affordance-motion, var(--ui-motion-fast)) var(--ui-motion-ease);
|
|
11936
|
+
pointer-events: none;
|
|
11937
|
+
}
|
|
11938
|
+
|
|
11939
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"][data-ui-icon-button-state~="guide=bar"]::before {
|
|
11940
|
+
inline-size: 2px;
|
|
11941
|
+
block-size: 20px;
|
|
11942
|
+
background: var(--ui-border-strong);
|
|
11943
|
+
opacity: 1;
|
|
11944
|
+
}
|
|
11945
|
+
|
|
11946
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:disabled::before {
|
|
11947
|
+
opacity: 0;
|
|
11948
|
+
}
|
|
11949
|
+
|
|
11950
|
+
/* At rest an anticipatory button shows only its guide dot. The icon grows into place when
|
|
11951
|
+
proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
|
|
11952
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"] .content {
|
|
11953
|
+
opacity: 1;
|
|
11954
|
+
transform: scale(1);
|
|
11955
|
+
transition: opacity var(--ui-motion-fast) var(--ui-motion-ease), transform calc(var(--ui-motion-fast) * 2) cubic-bezier(0.2, 1.4, 0.35, 1);
|
|
11956
|
+
}
|
|
11957
|
+
|
|
11958
|
+
@media (hover: hover) and (pointer: fine) {
|
|
11959
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:not(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible) {
|
|
11960
|
+
border-color: transparent;
|
|
11961
|
+
background-color: transparent;
|
|
11962
|
+
box-shadow: none;
|
|
11963
|
+
}
|
|
11964
|
+
|
|
11965
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:not(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"], :disabled, [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)
|
|
11966
|
+
.content {
|
|
11967
|
+
opacity: 0;
|
|
11968
|
+
transform: scale(0.65);
|
|
11969
|
+
transition-duration: var(--ui-motion-fast);
|
|
11970
|
+
}
|
|
11971
|
+
}
|
|
11972
|
+
|
|
11973
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]:is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"], [aria-pressed="true"], [data-ui-proximity="near"], :hover, :focus-visible)::before {
|
|
11974
|
+
opacity: 0;
|
|
11975
|
+
}
|
|
11976
|
+
|
|
11977
|
+
:scope:where([data-component~="ui-icon-button"]) {
|
|
11978
|
+
/* The size prop resolves here; --ui-icon-button-size overrides it on an element. */
|
|
11979
|
+
--_size: 2rem;
|
|
11980
|
+
appearance: none;
|
|
11981
|
+
inline-size: var(--ui-icon-button-size, var(--_size));
|
|
11982
|
+
block-size: var(--ui-icon-button-size, var(--_size));
|
|
11983
|
+
min-inline-size: var(--ui-icon-button-size, var(--_size));
|
|
11984
|
+
min-block-size: var(--ui-icon-button-size, var(--_size));
|
|
11985
|
+
padding: 0;
|
|
11986
|
+
margin: 0;
|
|
11987
|
+
border: var(--ui-border-width) solid transparent;
|
|
11988
|
+
border-radius: var(--ui-icon-button-radius, var(--ui-action-radius, var(--ui-radius-md)));
|
|
11989
|
+
background-color: var(--ui-icon-button-surface, transparent);
|
|
11990
|
+
color: inherit;
|
|
11991
|
+
display: inline-flex;
|
|
11992
|
+
align-items: center;
|
|
11993
|
+
justify-content: center;
|
|
11994
|
+
cursor: pointer;
|
|
11995
|
+
transition:
|
|
11996
|
+
background-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
11997
|
+
border-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
11998
|
+
color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
11999
|
+
box-shadow var(--ui-motion-base) var(--ui-motion-ease),
|
|
12000
|
+
scale var(--ui-motion-fast) var(--ui-motion-ease);
|
|
12001
|
+
}
|
|
12002
|
+
|
|
12003
|
+
@media (hover: none), (pointer: coarse) {
|
|
12004
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"]::before {
|
|
12005
|
+
opacity: 0;
|
|
12006
|
+
}
|
|
12007
|
+
}
|
|
12008
|
+
|
|
12009
|
+
/* A touch target without a bigger button: an invisible hit area, at least the control
|
|
12010
|
+
minimum, centred on the button (::before is the anticipatory guide). */
|
|
12011
|
+
@media (pointer: coarse) {
|
|
12012
|
+
:scope:where([data-component~="ui-icon-button"]) {
|
|
12013
|
+
position: relative;
|
|
12014
|
+
}
|
|
12015
|
+
|
|
12016
|
+
:scope:where([data-component~="ui-icon-button"])::after {
|
|
12017
|
+
content: "";
|
|
12018
|
+
position: absolute;
|
|
12019
|
+
inset: 50% auto auto 50%;
|
|
12020
|
+
inline-size: max(100%, var(--ui-control-min-block-size));
|
|
12021
|
+
block-size: max(100%, var(--ui-control-min-block-size));
|
|
12022
|
+
transform: translate(-50%, -50%);
|
|
12023
|
+
}
|
|
12024
|
+
}
|
|
12025
|
+
|
|
12026
|
+
html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-icon-button"]) {
|
|
12027
|
+
position: relative;
|
|
12028
|
+
}
|
|
12029
|
+
|
|
12030
|
+
html[data-ui-input-modality="touch"] :scope:where([data-component~="ui-icon-button"])::after {
|
|
12031
|
+
content: "";
|
|
12032
|
+
position: absolute;
|
|
12033
|
+
inset: 50% auto auto 50%;
|
|
12034
|
+
inline-size: max(100%, var(--ui-control-min-block-size));
|
|
12035
|
+
block-size: max(100%, var(--ui-control-min-block-size));
|
|
12036
|
+
transform: translate(-50%, -50%);
|
|
12037
|
+
}
|
|
12038
|
+
|
|
12039
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="size=sm"] {
|
|
12040
|
+
--_size: 1.75rem;
|
|
12041
|
+
inline-size: var(--ui-icon-button-size, var(--_size));
|
|
12042
|
+
block-size: var(--ui-icon-button-size, var(--_size));
|
|
12043
|
+
min-inline-size: var(--ui-icon-button-size, var(--_size));
|
|
12044
|
+
min-block-size: var(--ui-icon-button-size, var(--_size));
|
|
12045
|
+
}
|
|
12046
|
+
|
|
12047
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="size=lg"] {
|
|
12048
|
+
--_size: 2.5rem;
|
|
12049
|
+
inline-size: var(--ui-icon-button-size, var(--_size));
|
|
12050
|
+
block-size: var(--ui-icon-button-size, var(--_size));
|
|
12051
|
+
min-inline-size: var(--ui-icon-button-size, var(--_size));
|
|
12052
|
+
min-block-size: var(--ui-icon-button-size, var(--_size));
|
|
12053
|
+
}
|
|
12054
|
+
|
|
12055
|
+
/* A text button's companion uses control geometry; compact icon buttons keep their own density. */
|
|
12056
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="matchButton"] {
|
|
12057
|
+
--_size: var(--ui-control-size-md);
|
|
12058
|
+
block-size: auto;
|
|
12059
|
+
align-self: stretch;
|
|
12060
|
+
}
|
|
12061
|
+
|
|
12062
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=sm"] {
|
|
12063
|
+
--_size: var(--ui-control-size-sm);
|
|
12064
|
+
}
|
|
12065
|
+
|
|
12066
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="matchButton"][data-ui-icon-button-state~="size=lg"] {
|
|
12067
|
+
--_size: var(--ui-control-size-lg);
|
|
12068
|
+
}
|
|
12069
|
+
|
|
12070
|
+
@media (pointer: coarse) {
|
|
12071
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="matchButton"] {
|
|
12072
|
+
inline-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
|
|
12073
|
+
min-inline-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
|
|
12074
|
+
min-block-size: max(var(--ui-icon-button-size, var(--_size)), var(--ui-control-min-block-size));
|
|
12075
|
+
}
|
|
12076
|
+
}
|
|
12077
|
+
|
|
12078
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="round"] {
|
|
12079
|
+
border-radius: var(--ui-radius-round);
|
|
12080
|
+
}
|
|
12081
|
+
|
|
12082
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"] {
|
|
12083
|
+
border-color: var(--ui-icon-button-border, var(--_icon-button-border, var(--ui-control-border, var(--ui-border-strong))));
|
|
12084
|
+
background-color: var(--ui-icon-button-outline-surface, var(--_icon-button-outline-surface, var(--ui-surface-default)));
|
|
12085
|
+
background-image: none;
|
|
12086
|
+
color: var(--ui-icon-button-outline-text, var(--_icon-button-text, var(--ui-text-primary)));
|
|
12087
|
+
box-shadow: var(--ui-action-shadow, var(--_ui-action-shadow));
|
|
12088
|
+
}
|
|
12089
|
+
|
|
12090
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"] {
|
|
12091
|
+
background-color: var(--ui-icon-button-solid-surface, var(--_icon-button-solid-surface, var(--ui-accent-solid)));
|
|
12092
|
+
background-image: none;
|
|
12093
|
+
color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
|
|
12094
|
+
box-shadow: var(--ui-icon-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow)));
|
|
12095
|
+
}
|
|
12096
|
+
|
|
12097
|
+
:scope:where([data-component~="ui-icon-button"]):hover:enabled:not([aria-disabled="true"]) {
|
|
12098
|
+
/* Derived from the text colour so the ghost hover shows on any background. */
|
|
12099
|
+
background-color: var(--ui-icon-button-hover-surface, color-mix(in srgb, currentColor 8%, transparent));
|
|
12100
|
+
color: var(--ui-icon-button-hover-text, var(--_icon-button-text, var(--ui-text-primary)));
|
|
12101
|
+
}
|
|
12102
|
+
|
|
12103
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"]:hover:enabled:not([aria-disabled="true"]) {
|
|
12104
|
+
border-color: var(--ui-icon-button-hover-border, var(--_icon-button-hover-border, var(--ui-control-border-hover, var(--ui-control-border))));
|
|
12105
|
+
}
|
|
12106
|
+
|
|
12107
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"]:hover:enabled:not([aria-disabled="true"]) {
|
|
12108
|
+
background-color: var(--ui-icon-button-solid-hover-surface, var(--_icon-button-solid-hover-surface, var(--ui-accent-hover)));
|
|
12109
|
+
}
|
|
12110
|
+
|
|
12111
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"][data-ui-icon-button-state~="tone=accent"]:hover:enabled:not([aria-disabled="true"]),
|
|
12112
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"][data-ui-icon-button-state~="tone=neutral"]:hover:enabled:not([aria-disabled="true"]) {
|
|
12113
|
+
color: var(--ui-icon-button-solid-text, var(--_icon-button-solid-text, var(--ui-text-on-accent)));
|
|
12114
|
+
}
|
|
12115
|
+
|
|
12116
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=ghost"][aria-expanded="true"]:enabled:not([aria-disabled="true"]) {
|
|
12117
|
+
background-color: var(--ui-icon-button-active-surface, color-mix(in srgb, currentColor 16%, transparent));
|
|
12118
|
+
color: var(--ui-icon-button-hover-text, var(--_icon-button-text, var(--ui-text-primary)));
|
|
12119
|
+
box-shadow: var(--ui-pressed);
|
|
12120
|
+
}
|
|
12121
|
+
|
|
12122
|
+
/* Native toggle state persists after pointer release, including during loading. */
|
|
12123
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled {
|
|
12124
|
+
background-color: var(--ui-icon-button-active-surface, color-mix(in srgb, currentColor 12%, var(--ui-surface-default)));
|
|
12125
|
+
background-image: none;
|
|
12126
|
+
box-shadow: var(--ui-pressed);
|
|
12127
|
+
}
|
|
12128
|
+
|
|
12129
|
+
:scope:where([data-component~="ui-icon-button"]):active:enabled:not([aria-disabled="true"]) {
|
|
12130
|
+
scale: var(--ui-icon-button-active-scale, 0.96);
|
|
12131
|
+
}
|
|
12132
|
+
|
|
12133
|
+
:is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"]) {
|
|
12134
|
+
cursor: progress;
|
|
12135
|
+
}
|
|
12136
|
+
|
|
12137
|
+
.content {
|
|
12138
|
+
display: inline-flex;
|
|
12139
|
+
align-items: center;
|
|
12140
|
+
justify-content: center;
|
|
12141
|
+
}
|
|
12142
|
+
|
|
12143
|
+
:is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="loading"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="pending"]) .content {
|
|
12144
|
+
display: none;
|
|
12145
|
+
}
|
|
12146
|
+
|
|
12147
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12148
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="anticipatory"] .content {
|
|
12149
|
+
transition: none;
|
|
12150
|
+
}
|
|
12151
|
+
}
|
|
12152
|
+
|
|
12153
|
+
:scope:where([data-component~="ui-icon-button"]):focus-visible {
|
|
12154
|
+
outline: none;
|
|
12155
|
+
box-shadow: var(--ui-focus-halo);
|
|
12156
|
+
}
|
|
12157
|
+
|
|
12158
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"]:focus-visible {
|
|
12159
|
+
box-shadow:
|
|
12160
|
+
var(--ui-action-shadow, var(--_ui-action-shadow)),
|
|
12161
|
+
var(--ui-focus-halo);
|
|
12162
|
+
}
|
|
12163
|
+
|
|
12164
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"]:focus-visible {
|
|
12165
|
+
box-shadow:
|
|
12166
|
+
var(--ui-icon-button-solid-shadow, var(--ui-action-shadow, var(--_ui-action-shadow))),
|
|
12167
|
+
var(--ui-focus-halo);
|
|
12168
|
+
}
|
|
12169
|
+
|
|
12170
|
+
:scope:where([data-component~="ui-icon-button"]):is(:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"], :scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=solid"]):active:enabled:not([aria-disabled="true"]) {
|
|
12171
|
+
background-image: none;
|
|
12172
|
+
box-shadow: var(--ui-pressed);
|
|
12173
|
+
}
|
|
12174
|
+
|
|
12175
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled:focus-visible {
|
|
12176
|
+
box-shadow:
|
|
12177
|
+
var(--ui-pressed),
|
|
12178
|
+
var(--ui-focus-halo);
|
|
12179
|
+
}
|
|
12180
|
+
|
|
12181
|
+
@media (forced-colors: active) {
|
|
12182
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled {
|
|
12183
|
+
outline: var(--ui-focus-width) solid Highlight;
|
|
12184
|
+
outline-offset: calc(-2 * var(--ui-focus-width));
|
|
12185
|
+
}
|
|
12186
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=outline"][aria-pressed="true"]:enabled:focus-visible {
|
|
12187
|
+
outline-offset: var(--ui-focus-width);
|
|
12188
|
+
}
|
|
12189
|
+
}
|
|
12190
|
+
|
|
12191
|
+
/* Disabled is a flat neutral control, independent of the active variant's tone. */
|
|
12192
|
+
:scope:where([data-component~="ui-icon-button"]):disabled {
|
|
12193
|
+
border-color: var(--ui-disabled-border);
|
|
12194
|
+
background-color: var(--ui-disabled-surface);
|
|
12195
|
+
color: var(--ui-disabled-text);
|
|
12196
|
+
filter: var(--ui-icon-button-disabled-filter, var(--ui-disabled-filter));
|
|
12197
|
+
opacity: var(--ui-icon-button-disabled-opacity, 1);
|
|
12198
|
+
cursor: not-allowed;
|
|
12199
|
+
box-shadow: none;
|
|
12200
|
+
background-image: none;
|
|
12201
|
+
}
|
|
12202
|
+
|
|
12203
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="variant=ghost"]:disabled {
|
|
12204
|
+
border-color: transparent;
|
|
12205
|
+
}
|
|
12206
|
+
|
|
12207
|
+
:scope:where([data-component~="ui-icon-button"]) {
|
|
12208
|
+
--_icon-button-icon-default: var(--ui-icon-size-md);
|
|
12209
|
+
/* A slotted ui-icon is its own component, out of reach of the svg rule below; these are its
|
|
12210
|
+
defaults, which its own --ui-icon-* hooks still override. */
|
|
12211
|
+
--_ui-default-icon-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
|
|
12212
|
+
--_ui-default-icon-stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
|
|
12213
|
+
}
|
|
12214
|
+
|
|
12215
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="size=sm"] {
|
|
12216
|
+
--_icon-button-icon-default: var(--ui-icon-size-sm);
|
|
12217
|
+
}
|
|
12218
|
+
|
|
12219
|
+
:scope:where([data-component~="ui-icon-button"])[data-ui-icon-button-state~="size=lg"] {
|
|
12220
|
+
--_icon-button-icon-default: var(--ui-icon-size-lg);
|
|
12221
|
+
}
|
|
12222
|
+
|
|
12223
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
12224
|
+
:scope:where([data-component~="ui-icon-button"])[hidden] {
|
|
12225
|
+
display: none;
|
|
12226
|
+
}
|
|
12227
|
+
}
|
|
12228
|
+
@scope ([data-component~="ui-icon-button"]) to ([data-component]) {
|
|
12229
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12230
|
+
|
|
12231
|
+
/* Omitted tone retains the existing accent solid; explicit neutral is additive. */
|
|
12232
|
+
|
|
12233
|
+
/* At rest an anticipatory button shows only its guide dot. The icon grows into place when
|
|
12234
|
+
proximity, hover, or focus reveals it; the button's hit area and guide remain stable. */
|
|
12235
|
+
|
|
12236
|
+
@media (hover: hover) and (pointer: fine) {
|
|
12237
|
+
}
|
|
12238
|
+
|
|
12239
|
+
@media (hover: none), (pointer: coarse) {
|
|
12240
|
+
}
|
|
12241
|
+
|
|
12242
|
+
/* A touch target without a bigger button: an invisible hit area, at least the control
|
|
12243
|
+
minimum, centred on the button (::before is the anticipatory guide). */
|
|
12244
|
+
@media (pointer: coarse) {
|
|
12245
|
+
}
|
|
12246
|
+
|
|
12247
|
+
/* A text button's companion uses control geometry; compact icon buttons keep their own density. */
|
|
12248
|
+
|
|
12249
|
+
@media (pointer: coarse) {
|
|
12250
|
+
}
|
|
12251
|
+
|
|
12252
|
+
/* Native toggle state persists after pointer release, including during loading. */
|
|
12253
|
+
|
|
12254
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12255
|
+
}
|
|
12256
|
+
|
|
12257
|
+
@media (forced-colors: active) {
|
|
12258
|
+
}
|
|
12259
|
+
|
|
12260
|
+
/* Disabled is a flat neutral control, independent of the active variant's tone. */
|
|
12261
|
+
|
|
12262
|
+
:where([data-slotted], [data-slotted] *):is(svg) {
|
|
12263
|
+
inline-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
|
|
12264
|
+
block-size: var(--_ui-icon-button-icon-size, var(--_icon-button-icon-default));
|
|
12265
|
+
flex-shrink: 0;
|
|
12266
|
+
stroke-width: var(--_ui-icon-button-icon-stroke-width, 1.75);
|
|
12267
|
+
}
|
|
12268
|
+
|
|
12269
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
12270
|
+
}
|
|
12271
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
12272
|
+
@supports (-moz-appearance: none) {
|
|
12273
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
12274
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
12275
|
+
}
|
|
12276
|
+
@supports (-moz-appearance: none) {
|
|
12277
|
+
[data-component~="ui-list"] { --html-next-scope-owner: "ui-list" !important; }
|
|
12278
|
+
}
|
|
12279
|
+
@scope ([data-component~="ui-list"]) to ([data-component], [data-slotted]) {
|
|
12280
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12281
|
+
@property --ui-list-gap {
|
|
12282
|
+
syntax: "*";
|
|
12283
|
+
inherits: false;
|
|
12284
|
+
}
|
|
12285
|
+
@property --ui-list-min-item-width {
|
|
12286
|
+
syntax: "*";
|
|
12287
|
+
inherits: false;
|
|
12288
|
+
}
|
|
12289
|
+
|
|
12290
|
+
/* A list of native li elements or structured ui-list-item components. It owns the spacing between them, so a view never sets it. The
|
|
12291
|
+
explicit list role keeps the list announced as one: some browsers drop it from a list with no
|
|
12292
|
+
markers. */
|
|
12293
|
+
:scope:where([data-component~="ui-list"]) {
|
|
12294
|
+
--_list-gap: var(--ui-list-gap, var(--ui-space-1));
|
|
12295
|
+
--_list-min-item-width: var(--ui-list-min-item-width, 14rem);
|
|
12296
|
+
display: flex;
|
|
12297
|
+
flex-direction: column;
|
|
12298
|
+
inline-size: 100%;
|
|
12299
|
+
gap: var(--_list-gap);
|
|
12300
|
+
min-inline-size: 0;
|
|
12301
|
+
margin: 0;
|
|
12302
|
+
padding: 0;
|
|
12303
|
+
list-style: none;
|
|
12304
|
+
}
|
|
12305
|
+
|
|
12306
|
+
:scope:where([data-component~="ui-list"])[data-ui-list-state~="as=ol"],
|
|
12307
|
+
:scope:where([data-component~="ui-list"])[data-ui-list-state~="markers=disc"] {
|
|
12308
|
+
padding-inline-start: var(--ui-space-5);
|
|
12309
|
+
}
|
|
12310
|
+
|
|
12311
|
+
:scope:where([data-component~="ui-list"])[data-ui-list-state~="as=ol"] {
|
|
12312
|
+
list-style: decimal;
|
|
12313
|
+
}
|
|
12314
|
+
|
|
12315
|
+
:scope:where([data-component~="ui-list"])[data-ui-list-state~="markers=disc"] {
|
|
12316
|
+
list-style: disc;
|
|
12317
|
+
}
|
|
12318
|
+
|
|
12319
|
+
/* Compact passes its size to the items through private properties, which cross into each item. */
|
|
12320
|
+
:scope:where([data-component~="ui-list"])[data-ui-list-state~="density=compact"] {
|
|
12321
|
+
--_list-gap: var(--ui-list-gap, var(--ui-space-2));
|
|
12322
|
+
--_ui-list-item-min-size: 0;
|
|
12323
|
+
--_ui-list-item-padding-block: 0;
|
|
12324
|
+
--_ui-list-item-padding-inline: 0;
|
|
12325
|
+
--_ui-list-item-title-weight: var(--ui-font-normal);
|
|
12326
|
+
--_ui-list-native-padding-block: 0;
|
|
12327
|
+
--_ui-list-native-padding-inline: 0;
|
|
12328
|
+
}
|
|
12329
|
+
|
|
12330
|
+
:scope:where([data-component~="ui-list"])[data-ui-list-state~="layout=grid"] {
|
|
12331
|
+
--_list-gap: var(--ui-list-gap, var(--ui-space-3));
|
|
12332
|
+
display: grid;
|
|
12333
|
+
grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--_list-min-item-width)), 1fr));
|
|
12334
|
+
}
|
|
12335
|
+
|
|
12336
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
12337
|
+
:scope:where([data-component~="ui-list"])[hidden] {
|
|
12338
|
+
display: none;
|
|
12339
|
+
}
|
|
12340
|
+
}
|
|
12341
|
+
@scope ([data-component~="ui-list"]) to ([data-component]) {
|
|
12342
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12343
|
+
|
|
12344
|
+
/* A list of native li elements or structured ui-list-item components. It owns the spacing between them, so a view never sets it. The
|
|
12345
|
+
explicit list role keeps the list announced as one: some browsers drop it from a list with no
|
|
12346
|
+
markers. */
|
|
12347
|
+
|
|
12348
|
+
:scope:where([data-component~="ui-list"]) > :where([data-slotted], [data-slotted] *):is(li) {
|
|
12349
|
+
box-sizing: border-box;
|
|
12350
|
+
min-inline-size: 0;
|
|
12351
|
+
padding: var(--_ui-list-native-padding-block, var(--ui-space-2)) var(--_ui-list-native-padding-inline, var(--ui-space-3));
|
|
12352
|
+
border-radius: var(--ui-radius-md);
|
|
12353
|
+
color: var(--ui-text-primary);
|
|
12354
|
+
list-style: inherit;
|
|
12355
|
+
}
|
|
12356
|
+
|
|
12357
|
+
:scope:where([data-component~="ui-list"]) > :where([data-slotted], [data-slotted] *):is(li.card) {
|
|
12358
|
+
padding: var(--_ui-list-native-padding-block, var(--ui-space-3)) var(--_ui-list-native-padding-inline, var(--ui-space-4));
|
|
12359
|
+
border: var(--ui-border-width) solid var(--ui-border-strong);
|
|
12360
|
+
border-radius: var(--ui-radius-lg);
|
|
12361
|
+
background: var(--ui-surface-raised);
|
|
12362
|
+
list-style: none;
|
|
12363
|
+
}
|
|
12364
|
+
|
|
12365
|
+
/* Compact passes its size to the items through private properties, which cross into each item. */
|
|
12366
|
+
|
|
12367
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
12368
|
+
}
|
|
12369
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
12370
|
+
@supports (-moz-appearance: none) {
|
|
12371
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
12372
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
12373
|
+
}
|
|
12374
|
+
@supports (-moz-appearance: none) {
|
|
12375
|
+
[data-component~="ui-menu"] { --html-next-scope-owner: "ui-menu" !important; }
|
|
12376
|
+
}
|
|
12377
|
+
@scope ([data-component~="ui-menu"]) to ([data-component], [data-slotted]) {
|
|
12378
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12379
|
+
@property --ui-menu-surface {
|
|
12380
|
+
syntax: "*";
|
|
12381
|
+
inherits: false;
|
|
12382
|
+
}
|
|
12383
|
+
@property --ui-menu-border {
|
|
12384
|
+
syntax: "*";
|
|
12385
|
+
inherits: false;
|
|
12386
|
+
}
|
|
12387
|
+
@property --ui-menu-radius {
|
|
12388
|
+
syntax: "*";
|
|
12389
|
+
inherits: false;
|
|
12390
|
+
}
|
|
12391
|
+
@property --ui-menu-shadow {
|
|
12392
|
+
syntax: "*";
|
|
12393
|
+
inherits: false;
|
|
12394
|
+
}
|
|
12395
|
+
@property --ui-menu-viewport-gap {
|
|
12396
|
+
syntax: "*";
|
|
12397
|
+
inherits: false;
|
|
12398
|
+
}
|
|
12399
|
+
|
|
12400
|
+
/* Compact sets its items' defaults, so nothing has to rescale a global; an item's own hooks
|
|
12401
|
+
still win. */
|
|
12402
|
+
:scope:where([data-component~="ui-menu"])[data-ui-menu-state~="density=compact"] {
|
|
12403
|
+
--_ui-default-menu-item-padding-block: var(--ui-space-1);
|
|
12404
|
+
--_ui-default-menu-item-padding-inline: var(--ui-space-2);
|
|
12405
|
+
--_ui-default-menu-item-font-size: var(--ui-font-size-sm);
|
|
12406
|
+
--_ui-default-menu-item-radius: var(--ui-radius-sm);
|
|
12407
|
+
padding: var(--ui-space-1);
|
|
12408
|
+
gap: 0;
|
|
12409
|
+
}
|
|
12410
|
+
|
|
12411
|
+
/* Small follows its trigger down: an item's own hooks still win. */
|
|
12412
|
+
:scope:where([data-component~="ui-menu"])[data-ui-menu-state~="size=sm"] {
|
|
12413
|
+
--_ui-default-menu-item-padding-block: var(--ui-space-0-5);
|
|
12414
|
+
--_ui-default-menu-item-padding-inline: var(--ui-space-2);
|
|
12415
|
+
--_ui-default-menu-item-font-size: var(--ui-font-size-xs);
|
|
12416
|
+
--_ui-default-menu-item-radius: var(--ui-radius-sm);
|
|
12417
|
+
--_ui-default-menu-item-min-block-size: 1.5rem;
|
|
12418
|
+
--_ui-default-menu-indicator-size: 0.75rem;
|
|
12419
|
+
min-inline-size: min(8rem, calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2));
|
|
12420
|
+
padding: var(--ui-space-1);
|
|
12421
|
+
gap: 0;
|
|
12422
|
+
}
|
|
12423
|
+
|
|
12424
|
+
:scope:where([data-component~="ui-menu"])[data-ui-menu-state~="icons"] {
|
|
12425
|
+
--_ui-default-menu-icon-display: inline-flex;
|
|
12426
|
+
}
|
|
12427
|
+
|
|
12428
|
+
:scope:where([data-component~="ui-menu"]) {
|
|
12429
|
+
--_ui-menu-surface: var(--ui-menu-surface);
|
|
12430
|
+
--_ui-menu-border: var(--ui-menu-border);
|
|
12431
|
+
--_ui-menu-radius: var(--ui-menu-radius);
|
|
12432
|
+
--_ui-menu-shadow: var(--ui-menu-shadow);
|
|
12433
|
+
/* A menu nested in a compact one starts again from its own density. */
|
|
12434
|
+
--_ui-default-menu-item-padding-block: initial;
|
|
12435
|
+
--_ui-default-menu-item-padding-inline: initial;
|
|
12436
|
+
--_ui-default-menu-item-font-size: initial;
|
|
12437
|
+
--_ui-default-menu-item-radius: initial;
|
|
12438
|
+
--_ui-default-menu-item-min-block-size: initial;
|
|
12439
|
+
--_ui-default-menu-indicator-size: initial;
|
|
12440
|
+
--_ui-default-menu-icon-display: none;
|
|
12441
|
+
display: flex;
|
|
12442
|
+
flex-direction: column;
|
|
12443
|
+
box-sizing: border-box;
|
|
12444
|
+
inline-size: max-content;
|
|
12445
|
+
min-inline-size: min(12rem, calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2));
|
|
12446
|
+
max-inline-size: calc(100vw - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2);
|
|
12447
|
+
padding: 0;
|
|
12448
|
+
border: 0;
|
|
12449
|
+
outline: 0;
|
|
12450
|
+
border-radius: 0;
|
|
12451
|
+
background: transparent;
|
|
12452
|
+
box-shadow: none;
|
|
12453
|
+
overflow: visible;
|
|
12454
|
+
}
|
|
12455
|
+
|
|
12456
|
+
.surface {
|
|
12457
|
+
display: flex;
|
|
12458
|
+
flex-direction: column;
|
|
12459
|
+
box-sizing: border-box;
|
|
12460
|
+
max-inline-size: inherit;
|
|
12461
|
+
padding: var(--ui-space-1);
|
|
12462
|
+
background: var(--_ui-menu-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
|
|
12463
|
+
border: var(--ui-border-width) solid var(--_ui-menu-border, var(--ui-overlay-border, var(--ui-border-strong)));
|
|
12464
|
+
border-radius: var(--_ui-menu-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
|
|
12465
|
+
box-shadow: var(--_ui-menu-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
|
|
12466
|
+
max-block-size: inherit;
|
|
12467
|
+
overflow: auto;
|
|
12468
|
+
}
|
|
12469
|
+
|
|
12470
|
+
.surface hr {
|
|
12471
|
+
align-self: stretch;
|
|
12472
|
+
block-size: 0;
|
|
12473
|
+
margin: var(--ui-space-1) 0;
|
|
12474
|
+
border: 0;
|
|
12475
|
+
border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
|
|
12476
|
+
}
|
|
12477
|
+
|
|
12478
|
+
:scope:where([data-component~="ui-menu"]):not([data-ui-menu-state~="internalOpen"]):not(:scope:where([data-component~="ui-menu"])[data-ui-menu-state~="inline"]) {
|
|
12479
|
+
display: none;
|
|
12480
|
+
}
|
|
12481
|
+
|
|
12482
|
+
:scope:where([data-component~="ui-menu"])[popover] {
|
|
12483
|
+
position: fixed;
|
|
12484
|
+
inset: auto;
|
|
12485
|
+
margin: 0;
|
|
12486
|
+
overflow: visible;
|
|
12487
|
+
max-block-size: calc(100dvh - var(--ui-menu-viewport-gap, var(--ui-space-2)) * 2);
|
|
12488
|
+
opacity: 0;
|
|
12489
|
+
transform: translateY(-4px) scale(0.99);
|
|
12490
|
+
transition:
|
|
12491
|
+
opacity var(--ui-motion-fast) var(--ui-motion-ease),
|
|
12492
|
+
transform var(--ui-motion-fast) var(--ui-motion-ease),
|
|
12493
|
+
display var(--ui-motion-fast) allow-discrete,
|
|
12494
|
+
overlay var(--ui-motion-fast) allow-discrete;
|
|
12495
|
+
}
|
|
12496
|
+
|
|
12497
|
+
:scope:where([data-component~="ui-menu"])[popover]:popover-open {
|
|
12498
|
+
opacity: 1;
|
|
12499
|
+
transform: translateY(0) scale(1);
|
|
12500
|
+
}
|
|
12501
|
+
|
|
12502
|
+
@starting-style {
|
|
12503
|
+
:scope:where([data-component~="ui-menu"])[popover]:popover-open {
|
|
12504
|
+
opacity: 0;
|
|
12505
|
+
transform: translateY(-4px) scale(0.99);
|
|
12506
|
+
}
|
|
12507
|
+
}
|
|
12508
|
+
|
|
12509
|
+
:scope:where([data-component~="ui-menu"])[hidden] {
|
|
12510
|
+
display: none;
|
|
12511
|
+
}
|
|
12512
|
+
|
|
12513
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12514
|
+
:scope:where([data-component~="ui-menu"])[popover] {
|
|
12515
|
+
transition: none;
|
|
12516
|
+
}
|
|
12517
|
+
}
|
|
12518
|
+
}
|
|
12519
|
+
@scope ([data-component~="ui-menu"]) to ([data-component]) {
|
|
12520
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12521
|
+
|
|
12522
|
+
/* Compact sets its items' defaults, so nothing has to rescale a global; an item's own hooks
|
|
12523
|
+
still win. */
|
|
12524
|
+
|
|
12525
|
+
/* Small follows its trigger down: an item's own hooks still win. */
|
|
12526
|
+
|
|
12527
|
+
@starting-style {
|
|
12528
|
+
}
|
|
12529
|
+
|
|
12530
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12531
|
+
}
|
|
12532
|
+
}
|
|
12533
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
12534
|
+
@supports (-moz-appearance: none) {
|
|
12535
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
12536
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
12537
|
+
}
|
|
12538
|
+
@supports (-moz-appearance: none) {
|
|
12539
|
+
[data-component~="ui-menu-item"] { --html-next-scope-owner: "ui-menu-item" !important; }
|
|
12540
|
+
}
|
|
12541
|
+
@scope ([data-component~="ui-menu-item"]) to ([data-component], [data-slotted]) {
|
|
12542
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12543
|
+
@property --ui-menu-item-font-size {
|
|
12544
|
+
syntax: "*";
|
|
12545
|
+
inherits: false;
|
|
12546
|
+
}
|
|
12547
|
+
@property --ui-menu-item-hover-surface {
|
|
12548
|
+
syntax: "*";
|
|
12549
|
+
inherits: false;
|
|
12550
|
+
}
|
|
12551
|
+
@property --ui-menu-item-min-block-size {
|
|
12552
|
+
syntax: "*";
|
|
12553
|
+
inherits: false;
|
|
12554
|
+
}
|
|
12555
|
+
@property --ui-menu-item-padding-block {
|
|
12556
|
+
syntax: "*";
|
|
12557
|
+
inherits: false;
|
|
12558
|
+
}
|
|
12559
|
+
@property --ui-menu-item-padding-inline {
|
|
12560
|
+
syntax: "*";
|
|
12561
|
+
inherits: false;
|
|
12562
|
+
}
|
|
12563
|
+
@property --ui-menu-item-radius {
|
|
12564
|
+
syntax: "*";
|
|
12565
|
+
inherits: false;
|
|
12566
|
+
}
|
|
12567
|
+
|
|
12568
|
+
:scope:where([data-component~="ui-menu-item"]) {
|
|
12569
|
+
display: flex;
|
|
12570
|
+
align-items: center;
|
|
12571
|
+
gap: var(--ui-space-2);
|
|
12572
|
+
box-sizing: border-box;
|
|
12573
|
+
width: 100%;
|
|
12574
|
+
padding: var(--ui-menu-item-padding-block, var(--_ui-default-menu-item-padding-block, var(--ui-space-2)))
|
|
12575
|
+
var(--ui-menu-item-padding-inline, var(--_ui-default-menu-item-padding-inline, var(--ui-space-3)));
|
|
12576
|
+
text-align: left;
|
|
12577
|
+
border-radius: var(--ui-menu-item-radius, var(--_ui-default-menu-item-radius, var(--ui-selection-radius)));
|
|
12578
|
+
color: var(--ui-text-primary);
|
|
12579
|
+
font-size: var(--ui-menu-item-font-size, var(--_ui-default-menu-item-font-size, var(--ui-font-size-md)));
|
|
12580
|
+
font-weight: var(--ui-font-medium);
|
|
12581
|
+
text-decoration: none;
|
|
12582
|
+
cursor: pointer;
|
|
12583
|
+
outline: none;
|
|
12584
|
+
transition: background-color var(--ui-motion-fast) var(--ui-motion-ease), color var(--ui-motion-fast) var(--ui-motion-ease);
|
|
12585
|
+
}
|
|
12586
|
+
|
|
12587
|
+
/* A named icon has a fixed column; an icon-enabled menu reserves it on every row. */
|
|
12588
|
+
.icon {
|
|
12589
|
+
display: var(--_ui-default-menu-icon-display, none);
|
|
12590
|
+
align-items: center;
|
|
12591
|
+
justify-content: center;
|
|
12592
|
+
flex: none;
|
|
12593
|
+
inline-size: var(--ui-icon-size-sm);
|
|
12594
|
+
block-size: var(--ui-icon-size-sm);
|
|
12595
|
+
}
|
|
12596
|
+
|
|
12597
|
+
.icon:not(:empty) {
|
|
12598
|
+
display: inline-flex;
|
|
12599
|
+
}
|
|
12600
|
+
|
|
12601
|
+
:scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="tone=danger"] {
|
|
12602
|
+
color: var(--ui-danger);
|
|
12603
|
+
}
|
|
12604
|
+
|
|
12605
|
+
.label {
|
|
12606
|
+
display: flex;
|
|
12607
|
+
align-items: center;
|
|
12608
|
+
gap: var(--ui-space-2);
|
|
12609
|
+
flex: 1;
|
|
12610
|
+
min-inline-size: 0;
|
|
12611
|
+
}
|
|
12612
|
+
|
|
12613
|
+
.indicator {
|
|
12614
|
+
display: inline-flex;
|
|
12615
|
+
align-items: center;
|
|
12616
|
+
justify-content: center;
|
|
12617
|
+
flex: none;
|
|
12618
|
+
box-sizing: border-box;
|
|
12619
|
+
inline-size: var(--_ui-default-menu-indicator-size, var(--ui-icon-size-sm));
|
|
12620
|
+
block-size: var(--_ui-default-menu-indicator-size, var(--ui-icon-size-sm));
|
|
12621
|
+
border: var(--ui-border-width) solid var(--ui-control-border);
|
|
12622
|
+
border-radius: var(--ui-radius-sm);
|
|
12623
|
+
color: var(--ui-surface);
|
|
12624
|
+
--_ui-default-icon-size: 0.75rem;
|
|
12625
|
+
}
|
|
12626
|
+
|
|
12627
|
+
:scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="type=action"] .indicator {
|
|
12628
|
+
display: none;
|
|
12629
|
+
}
|
|
12630
|
+
|
|
12631
|
+
:scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="type=checkbox"][aria-checked="true"] .indicator {
|
|
12632
|
+
border-color: var(--ui-accent);
|
|
12633
|
+
background: var(--ui-accent);
|
|
12634
|
+
}
|
|
12635
|
+
|
|
12636
|
+
/* A menu marks its chosen item with a check, as menus conventionally do; a radio circle reads
|
|
12637
|
+
as a form control. The empty slot keeps unchosen labels aligned with the chosen one. */
|
|
12638
|
+
:scope:where([data-component~="ui-menu-item"])[data-ui-menu-item-state~="type=radio"] .indicator {
|
|
12639
|
+
border-color: transparent;
|
|
12640
|
+
color: var(--ui-text-secondary);
|
|
12641
|
+
}
|
|
12642
|
+
|
|
12643
|
+
.shortcut {
|
|
12644
|
+
margin-inline-start: auto;
|
|
12645
|
+
color: var(--ui-text-secondary);
|
|
12646
|
+
font-size: var(--ui-font-size-sm);
|
|
12647
|
+
font-weight: var(--ui-font-normal);
|
|
12648
|
+
}
|
|
12649
|
+
|
|
12650
|
+
.shortcut:empty {
|
|
12651
|
+
display: none;
|
|
12652
|
+
}
|
|
12653
|
+
|
|
12654
|
+
/* A <kbd> takes the browser's monospace; the hint reads in the item's own type. */
|
|
12655
|
+
|
|
12656
|
+
/* Keep the text row at the shared control height where cap trimming is available. */
|
|
12657
|
+
@supports (text-box-trim: trim-both) {
|
|
12658
|
+
:scope:where([data-component~="ui-menu-item"]) {
|
|
12659
|
+
min-block-size: var(--ui-menu-item-min-block-size, var(--_ui-default-menu-item-min-block-size, var(--ui-control-size-md, 2.5rem)));
|
|
12660
|
+
text-box-trim: trim-both;
|
|
12661
|
+
text-box-edge: cap alphabetic;
|
|
12662
|
+
}
|
|
12663
|
+
}
|
|
12664
|
+
|
|
12665
|
+
:scope:where([data-component~="ui-menu-item"]):is(:hover, :focus-visible):not([aria-disabled="true"]) {
|
|
12666
|
+
background: var(--ui-menu-item-hover-surface, var(--ui-surface-subtle));
|
|
12667
|
+
}
|
|
12668
|
+
|
|
12669
|
+
:scope:where([data-component~="ui-menu-item"]):focus-visible {
|
|
12670
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring);
|
|
12671
|
+
outline-offset: calc(-1 * var(--ui-focus-width));
|
|
12672
|
+
}
|
|
12673
|
+
|
|
12674
|
+
:scope:where([data-component~="ui-menu-item"])[aria-disabled="true"] {
|
|
12675
|
+
background: var(--ui-disabled-surface);
|
|
12676
|
+
color: var(--ui-disabled-text);
|
|
12677
|
+
cursor: not-allowed;
|
|
12678
|
+
}
|
|
12679
|
+
|
|
12680
|
+
:scope:where([data-component~="ui-menu-item"])[aria-disabled="true"] .indicator {
|
|
12681
|
+
border-color: var(--ui-disabled-border);
|
|
12682
|
+
background: transparent;
|
|
12683
|
+
color: var(--ui-disabled-text);
|
|
12684
|
+
}
|
|
12685
|
+
|
|
12686
|
+
:scope:where([data-component~="ui-menu-item"])[aria-disabled="true"] .indicator:where(:not([data-component], [data-slotted]))::after {
|
|
12687
|
+
background: var(--ui-disabled-text);
|
|
12688
|
+
}
|
|
12689
|
+
|
|
12690
|
+
@media (forced-colors: active) {
|
|
12691
|
+
:scope:where([data-component~="ui-menu-item"]):focus-visible {
|
|
12692
|
+
outline-color: Highlight;
|
|
12693
|
+
}
|
|
12694
|
+
}
|
|
12695
|
+
|
|
12696
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
12697
|
+
:scope:where([data-component~="ui-menu-item"])[hidden] {
|
|
12698
|
+
display: none;
|
|
12699
|
+
}
|
|
12700
|
+
}
|
|
12701
|
+
@scope ([data-component~="ui-menu-item"]) to ([data-component]) {
|
|
12702
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12703
|
+
|
|
12704
|
+
/* A named icon has a fixed column; an icon-enabled menu reserves it on every row. */
|
|
12705
|
+
|
|
12706
|
+
.icon :where([data-slotted], [data-slotted] *):is(svg) {
|
|
12707
|
+
inline-size: 100%;
|
|
12708
|
+
block-size: 100%;
|
|
12709
|
+
}
|
|
12710
|
+
|
|
12711
|
+
/* A menu marks its chosen item with a check, as menus conventionally do; a radio circle reads
|
|
12712
|
+
as a form control. The empty slot keeps unchosen labels aligned with the chosen one. */
|
|
12713
|
+
|
|
12714
|
+
/* A <kbd> takes the browser's monospace; the hint reads in the item's own type. */
|
|
12715
|
+
.shortcut :where([data-slotted], [data-slotted] *):is(kbd) {
|
|
12716
|
+
font: inherit;
|
|
12717
|
+
}
|
|
12718
|
+
|
|
12719
|
+
/* Keep the text row at the shared control height where cap trimming is available. */
|
|
12720
|
+
@supports (text-box-trim: trim-both) {
|
|
12721
|
+
}
|
|
12722
|
+
|
|
12723
|
+
@media (forced-colors: active) {
|
|
12724
|
+
}
|
|
12725
|
+
|
|
12726
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
12727
|
+
}
|
|
12728
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
12729
|
+
@supports (-moz-appearance: none) {
|
|
12730
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
12731
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
12732
|
+
}
|
|
12733
|
+
@supports (-moz-appearance: none) {
|
|
12734
|
+
[data-component~="ui-popover"] { --html-next-scope-owner: "ui-popover" !important; }
|
|
12735
|
+
}
|
|
12736
|
+
@scope ([data-component~="ui-popover"]) to ([data-component], [data-slotted]) {
|
|
12737
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12738
|
+
@property --ui-popover-surface {
|
|
12739
|
+
syntax: "*";
|
|
12740
|
+
inherits: false;
|
|
12741
|
+
}
|
|
12742
|
+
@property --ui-popover-border {
|
|
12743
|
+
syntax: "*";
|
|
12744
|
+
inherits: false;
|
|
12745
|
+
}
|
|
12746
|
+
@property --ui-popover-radius {
|
|
12747
|
+
syntax: "*";
|
|
12748
|
+
inherits: false;
|
|
12749
|
+
}
|
|
12750
|
+
@property --ui-popover-shadow {
|
|
12751
|
+
syntax: "*";
|
|
12752
|
+
inherits: false;
|
|
12753
|
+
}
|
|
12754
|
+
@property --ui-popover-viewport-gap {
|
|
12755
|
+
syntax: "*";
|
|
12756
|
+
inherits: false;
|
|
12757
|
+
}
|
|
12758
|
+
@property --ui-popover-offset {
|
|
12759
|
+
syntax: "*";
|
|
12760
|
+
inherits: false;
|
|
12761
|
+
}
|
|
12762
|
+
@property --ui-popover-padding {
|
|
12763
|
+
syntax: "*";
|
|
12764
|
+
inherits: false;
|
|
12765
|
+
}
|
|
12766
|
+
|
|
12767
|
+
:scope:where([data-component~="ui-popover"]) {
|
|
12768
|
+
--_ui-popover-surface: var(--ui-popover-surface);
|
|
12769
|
+
--_ui-popover-border: var(--ui-popover-border);
|
|
12770
|
+
--_ui-popover-radius: var(--ui-popover-radius);
|
|
12771
|
+
--_ui-popover-shadow: var(--ui-popover-shadow);
|
|
12772
|
+
--_ui-popover-padding: var(--ui-popover-padding);
|
|
12773
|
+
box-sizing: border-box;
|
|
12774
|
+
max-inline-size: min(
|
|
12775
|
+
20rem,
|
|
12776
|
+
calc(100vw - var(--ui-popover-viewport-gap, var(--ui-space-2)) * 2)
|
|
12777
|
+
);
|
|
12778
|
+
max-block-size: calc(100dvh - var(--ui-popover-viewport-gap, var(--ui-space-2)) * 2);
|
|
12779
|
+
overflow: visible;
|
|
12780
|
+
padding: 0;
|
|
12781
|
+
border: 0;
|
|
12782
|
+
outline: 0;
|
|
12783
|
+
border-radius: 0;
|
|
12784
|
+
background: transparent;
|
|
12785
|
+
box-shadow: none;
|
|
12786
|
+
}
|
|
12787
|
+
|
|
12788
|
+
.surface {
|
|
12789
|
+
box-sizing: border-box;
|
|
12790
|
+
max-inline-size: inherit;
|
|
12791
|
+
max-block-size: inherit;
|
|
12792
|
+
overflow: auto;
|
|
12793
|
+
padding: var(--_ui-popover-padding, var(--ui-space-3));
|
|
12794
|
+
background: var(--_ui-popover-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
|
|
12795
|
+
border: var(--ui-border-width) solid var(--_ui-popover-border, var(--ui-overlay-border, var(--ui-border-strong)));
|
|
12796
|
+
border-radius: var(--_ui-popover-radius, var(--ui-overlay-radius, var(--ui-radius-lg)));
|
|
12797
|
+
box-shadow: var(--_ui-popover-shadow, var(--ui-overlay-shadow, var(--ui-elevation-overlay, var(--ui-shadow-lg))));
|
|
12798
|
+
}
|
|
12799
|
+
|
|
12800
|
+
:scope:where([data-component~="ui-popover"]):not([data-ui-popover-state~="internalOpen"]) {
|
|
12801
|
+
display: none;
|
|
12802
|
+
}
|
|
12803
|
+
|
|
12804
|
+
:scope:where([data-component~="ui-popover"])[popover] {
|
|
12805
|
+
position: fixed;
|
|
12806
|
+
inset: auto;
|
|
12807
|
+
margin: 0;
|
|
12808
|
+
opacity: 0;
|
|
12809
|
+
transform: translateY(-4px) scale(0.99);
|
|
12810
|
+
transition:
|
|
12811
|
+
opacity var(--ui-motion-fast) var(--ui-motion-ease),
|
|
12812
|
+
transform var(--ui-motion-fast) var(--ui-motion-ease),
|
|
12813
|
+
display var(--ui-motion-fast) allow-discrete,
|
|
12814
|
+
overlay var(--ui-motion-fast) allow-discrete;
|
|
12815
|
+
}
|
|
12816
|
+
|
|
12817
|
+
:scope:where([data-component~="ui-popover"])[popover]:popover-open {
|
|
12818
|
+
opacity: 1;
|
|
12819
|
+
transform: translateY(0) scale(1);
|
|
12820
|
+
}
|
|
12821
|
+
|
|
12822
|
+
@starting-style {
|
|
12823
|
+
:scope:where([data-component~="ui-popover"])[popover]:popover-open {
|
|
12824
|
+
opacity: 0;
|
|
12825
|
+
transform: translateY(-4px) scale(0.99);
|
|
12826
|
+
}
|
|
12827
|
+
}
|
|
12828
|
+
|
|
12829
|
+
:scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=sm"] {
|
|
12830
|
+
inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
|
|
12831
|
+
max-inline-size: min(22rem, calc(100vw - var(--ui-space-2) * 2));
|
|
12832
|
+
}
|
|
12833
|
+
:scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=md"] {
|
|
12834
|
+
inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
|
|
12835
|
+
max-inline-size: min(28rem, calc(100vw - var(--ui-space-2) * 2));
|
|
12836
|
+
}
|
|
12837
|
+
:scope:where([data-component~="ui-popover"])[data-ui-popover-state~="size=lg"] {
|
|
12838
|
+
inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
|
|
12839
|
+
max-inline-size: min(36rem, calc(100vw - var(--ui-space-2) * 2));
|
|
12840
|
+
}
|
|
12841
|
+
|
|
12842
|
+
:scope:where([data-component~="ui-popover"])[hidden] {
|
|
12843
|
+
display: none;
|
|
12844
|
+
}
|
|
12845
|
+
|
|
12846
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12847
|
+
:scope:where([data-component~="ui-popover"])[popover] {
|
|
12848
|
+
transition: none;
|
|
12849
|
+
}
|
|
12850
|
+
}
|
|
12851
|
+
}
|
|
12852
|
+
@scope ([data-component~="ui-popover"]) to ([data-component]) {
|
|
12853
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12854
|
+
|
|
12855
|
+
@starting-style {
|
|
12856
|
+
}
|
|
12857
|
+
|
|
12858
|
+
@media (prefers-reduced-motion: reduce) {
|
|
12859
|
+
}
|
|
12860
|
+
}
|
|
12861
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
12862
|
+
@supports (-moz-appearance: none) {
|
|
12863
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
12864
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
12865
|
+
}
|
|
12866
|
+
@supports (-moz-appearance: none) {
|
|
12867
|
+
[data-component~="ui-stack"] { --html-next-scope-owner: "ui-stack" !important; }
|
|
12868
|
+
}
|
|
12869
|
+
@scope ([data-component~="ui-stack"]) to ([data-component], [data-slotted]) {
|
|
12870
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12871
|
+
@property --ui-stack-height {
|
|
12872
|
+
syntax: "*";
|
|
12873
|
+
inherits: false;
|
|
12874
|
+
}
|
|
12875
|
+
|
|
12876
|
+
@property --ui-stack-gap {
|
|
12877
|
+
syntax: "*";
|
|
12878
|
+
inherits: false;
|
|
12879
|
+
}
|
|
12880
|
+
|
|
12881
|
+
:scope:where([data-component~="ui-stack"]) {
|
|
12882
|
+
--_layout-gap: var(--ui-space-4);
|
|
12883
|
+
display: flex;
|
|
12884
|
+
flex-direction: column;
|
|
12885
|
+
align-items: stretch;
|
|
12886
|
+
gap: var(--ui-stack-gap, var(--_layout-gap));
|
|
12887
|
+
min-inline-size: 0;
|
|
12888
|
+
max-inline-size: 100%;
|
|
12889
|
+
margin: 0;
|
|
12890
|
+
}
|
|
12891
|
+
|
|
12892
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="fill"] {
|
|
12893
|
+
flex: 1;
|
|
12894
|
+
min-block-size: 0;
|
|
12895
|
+
}
|
|
12896
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="height"] {
|
|
12897
|
+
block-size: calc(var(--ui-stack-height, 0) * 1px);
|
|
12898
|
+
min-block-size: 0;
|
|
12899
|
+
}
|
|
12900
|
+
|
|
12901
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=none"] {
|
|
12902
|
+
--_layout-gap: 0px;
|
|
12903
|
+
}
|
|
12904
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=xs"] {
|
|
12905
|
+
--_layout-gap: var(--ui-space-2);
|
|
12906
|
+
}
|
|
12907
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=s"] {
|
|
12908
|
+
--_layout-gap: var(--ui-space-3);
|
|
12909
|
+
}
|
|
12910
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=m"] {
|
|
12911
|
+
--_layout-gap: var(--ui-space-4);
|
|
12912
|
+
}
|
|
12913
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=l"] {
|
|
12914
|
+
--_layout-gap: var(--ui-space-5);
|
|
12915
|
+
}
|
|
12916
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="gap=xl"] {
|
|
12917
|
+
--_layout-gap: var(--ui-space-6);
|
|
12918
|
+
}
|
|
12919
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=start"] {
|
|
12920
|
+
align-items: flex-start;
|
|
12921
|
+
}
|
|
12922
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=center"] {
|
|
12923
|
+
align-items: center;
|
|
12924
|
+
}
|
|
12925
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="align=end"] {
|
|
12926
|
+
align-items: flex-end;
|
|
12927
|
+
}
|
|
12928
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=center"] {
|
|
12929
|
+
justify-content: center;
|
|
12930
|
+
}
|
|
12931
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=end"] {
|
|
12932
|
+
justify-content: flex-end;
|
|
12933
|
+
}
|
|
12934
|
+
:scope:where([data-component~="ui-stack"])[data-ui-stack-state~="justify=between"] {
|
|
12935
|
+
justify-content: space-between;
|
|
12936
|
+
}
|
|
12937
|
+
|
|
12938
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
12939
|
+
:scope:where([data-component~="ui-stack"])[hidden] {
|
|
12940
|
+
display: none;
|
|
12941
|
+
}
|
|
12942
|
+
}
|
|
12943
|
+
@scope ([data-component~="ui-stack"]) to ([data-component]) {
|
|
12944
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
12945
|
+
|
|
12946
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
12947
|
+
}
|
|
12948
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
12949
|
+
@supports (-moz-appearance: none) {
|
|
12950
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
12951
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
12952
|
+
}
|
|
12953
|
+
@supports (-moz-appearance: none) {
|
|
12954
|
+
[data-component~="ui-text"] { --html-next-scope-owner: "ui-text" !important; }
|
|
12955
|
+
}
|
|
12956
|
+
@scope ([data-component~="ui-text"]) to ([data-component], [data-slotted]) {
|
|
12957
|
+
/* Running text, set on the type scale and in a tone that says what it is, so a view never styles
|
|
12958
|
+
text of its own. The root is a paragraph unless as= names a span, div, small, strong, label, or
|
|
12959
|
+
heading. */
|
|
12960
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="grow"] {
|
|
12961
|
+
flex: 1;
|
|
12962
|
+
}
|
|
12963
|
+
|
|
12964
|
+
:scope:where([data-component~="ui-text"]) {
|
|
12965
|
+
margin: 0;
|
|
12966
|
+
min-inline-size: 0;
|
|
12967
|
+
color: var(--ui-text-primary);
|
|
12968
|
+
text-align: start;
|
|
12969
|
+
}
|
|
12970
|
+
|
|
12971
|
+
/* A heading drops the browser's heading size and weight, so size and weight set it as they set
|
|
12972
|
+
any text, and inherit keeps the text around it. */
|
|
12973
|
+
:scope:where([data-component~="ui-text"]):is(h2, h3, h4, h5, h6) {
|
|
12974
|
+
font-size: inherit;
|
|
12975
|
+
font-weight: inherit;
|
|
12976
|
+
}
|
|
12977
|
+
|
|
12978
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="size=xs"] {
|
|
12979
|
+
font-size: var(--ui-font-size-xs);
|
|
12980
|
+
line-height: var(--ui-line-height);
|
|
12981
|
+
}
|
|
12982
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="size=sm"] {
|
|
12983
|
+
font-size: var(--ui-font-size-sm);
|
|
12984
|
+
line-height: var(--ui-line-height);
|
|
12985
|
+
}
|
|
12986
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="size=md"] {
|
|
12987
|
+
font-size: var(--ui-font-size-md);
|
|
12988
|
+
line-height: var(--ui-line-height);
|
|
12989
|
+
}
|
|
12990
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="size=lg"] {
|
|
12991
|
+
font-size: var(--ui-font-size-lg);
|
|
12992
|
+
line-height: var(--ui-line-height-relaxed);
|
|
12993
|
+
}
|
|
12994
|
+
|
|
12995
|
+
/* Opt in at the text owner; trimming does not inherit from a surrounding layout. */
|
|
12996
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="trim"] {
|
|
12997
|
+
text-box-trim: trim-both;
|
|
12998
|
+
text-box-edge: cap alphabetic;
|
|
12999
|
+
}
|
|
13000
|
+
|
|
13001
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=secondary"] {
|
|
13002
|
+
color: var(--ui-text-secondary);
|
|
13003
|
+
}
|
|
13004
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=muted"] {
|
|
13005
|
+
color: var(--ui-text-muted);
|
|
13006
|
+
}
|
|
13007
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=accent"] {
|
|
13008
|
+
color: var(--ui-accent-active);
|
|
13009
|
+
}
|
|
13010
|
+
/* Every status tone uses the text-safe token a subtle badge sets its words in, so text and badges
|
|
13011
|
+
in one tone match, and each holds 4.5:1 on sunken surfaces where some base colours fall short. */
|
|
13012
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=danger"] {
|
|
13013
|
+
color: var(--ui-danger-subtle-text);
|
|
13014
|
+
}
|
|
13015
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=success"] {
|
|
13016
|
+
color: var(--ui-success-subtle-text);
|
|
13017
|
+
}
|
|
13018
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=info"] {
|
|
13019
|
+
color: var(--ui-info-subtle-text);
|
|
13020
|
+
}
|
|
13021
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="tone=warning"] {
|
|
13022
|
+
color: var(--ui-warning-subtle-text);
|
|
13023
|
+
}
|
|
13024
|
+
|
|
13025
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=normal"] {
|
|
13026
|
+
font-weight: var(--ui-font-normal);
|
|
13027
|
+
}
|
|
13028
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=medium"] {
|
|
13029
|
+
font-weight: var(--ui-font-medium);
|
|
13030
|
+
}
|
|
13031
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="weight=semibold"] {
|
|
13032
|
+
font-weight: var(--ui-font-semibold);
|
|
13033
|
+
}
|
|
13034
|
+
|
|
13035
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="variant=eyebrow"] {
|
|
13036
|
+
font-size: var(--ui-font-size-xs);
|
|
13037
|
+
font-weight: var(--ui-font-semibold);
|
|
13038
|
+
letter-spacing: 0.06em;
|
|
13039
|
+
text-transform: uppercase;
|
|
13040
|
+
}
|
|
13041
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="variant=code"] {
|
|
13042
|
+
font-family: var(--ui-font-family-mono);
|
|
13043
|
+
}
|
|
13044
|
+
|
|
13045
|
+
/* A link in running text is underlined, so it stands apart from the words around it by more than
|
|
13046
|
+
colour. */
|
|
13047
|
+
|
|
13048
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="truncate"] {
|
|
13049
|
+
overflow: hidden;
|
|
13050
|
+
text-overflow: ellipsis;
|
|
13051
|
+
white-space: nowrap;
|
|
13052
|
+
}
|
|
13053
|
+
|
|
13054
|
+
/* Trim ends the layout box at the baseline; preserve descending ink while clipping long labels. */
|
|
13055
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="trim"][data-ui-text-state~="truncate"] {
|
|
13056
|
+
overflow-x: clip;
|
|
13057
|
+
overflow-y: visible;
|
|
13058
|
+
}
|
|
13059
|
+
|
|
13060
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="align=center"] {
|
|
13061
|
+
text-align: center;
|
|
13062
|
+
}
|
|
13063
|
+
|
|
13064
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="font=sans"] {
|
|
13065
|
+
font-family: var(--ui-font-family-sans, sans-serif);
|
|
13066
|
+
}
|
|
13067
|
+
|
|
13068
|
+
:scope:where([data-component~="ui-text"])[data-ui-text-state~="wrap=anywhere"] {
|
|
13069
|
+
overflow-wrap: anywhere;
|
|
13070
|
+
}
|
|
13071
|
+
|
|
13072
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
13073
|
+
:scope:where([data-component~="ui-text"])[hidden] {
|
|
13074
|
+
display: none;
|
|
13075
|
+
}
|
|
13076
|
+
}
|
|
13077
|
+
@scope ([data-component~="ui-text"]) to ([data-component]) {
|
|
13078
|
+
/* Running text, set on the type scale and in a tone that says what it is, so a view never styles
|
|
13079
|
+
text of its own. The root is a paragraph unless as= names a span, div, small, strong, label, or
|
|
13080
|
+
heading. */
|
|
13081
|
+
|
|
13082
|
+
/* A heading drops the browser's heading size and weight, so size and weight set it as they set
|
|
13083
|
+
any text, and inherit keeps the text around it. */
|
|
13084
|
+
|
|
13085
|
+
/* Opt in at the text owner; trimming does not inherit from a surrounding layout. */
|
|
13086
|
+
/* Every status tone uses the text-safe token a subtle badge sets its words in, so text and badges
|
|
13087
|
+
in one tone match, and each holds 4.5:1 on sunken surfaces where some base colours fall short. */
|
|
13088
|
+
|
|
13089
|
+
/* A link in running text is underlined, so it stands apart from the words around it by more than
|
|
13090
|
+
colour. */
|
|
13091
|
+
:scope:where([data-component~="ui-text"]) :where([data-slotted], [data-slotted] *):is(a) {
|
|
13092
|
+
color: var(--ui-accent-active);
|
|
13093
|
+
text-decoration: underline;
|
|
13094
|
+
text-decoration-thickness: 0.06em;
|
|
13095
|
+
text-underline-offset: 0.18em;
|
|
13096
|
+
}
|
|
13097
|
+
|
|
13098
|
+
/* Trim ends the layout box at the baseline; preserve descending ink while clipping long labels. */
|
|
13099
|
+
|
|
13100
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
13101
|
+
}
|
|
13102
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
13103
|
+
@supports (-moz-appearance: none) {
|
|
13104
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
13105
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
13106
|
+
}
|
|
13107
|
+
@supports (-moz-appearance: none) {
|
|
13108
|
+
[data-component~="ui-tooltip"] { --html-next-scope-owner: "ui-tooltip" !important; }
|
|
13109
|
+
}
|
|
13110
|
+
@scope ([data-component~="ui-tooltip"]) to ([data-component], [data-slotted]) {
|
|
13111
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
13112
|
+
@property --ui-tooltip-arrow-size {
|
|
13113
|
+
syntax: "*";
|
|
13114
|
+
inherits: false;
|
|
13115
|
+
}
|
|
13116
|
+
@property --ui-tooltip-border {
|
|
13117
|
+
syntax: "*";
|
|
13118
|
+
inherits: false;
|
|
13119
|
+
}
|
|
13120
|
+
@property --ui-tooltip-inverse-surface {
|
|
13121
|
+
syntax: "*";
|
|
13122
|
+
inherits: false;
|
|
13123
|
+
}
|
|
13124
|
+
@property --ui-tooltip-inverse-text {
|
|
13125
|
+
syntax: "*";
|
|
13126
|
+
inherits: false;
|
|
13127
|
+
}
|
|
13128
|
+
@property --ui-tooltip-max-inline-size {
|
|
13129
|
+
syntax: "*";
|
|
13130
|
+
inherits: false;
|
|
13131
|
+
}
|
|
13132
|
+
@property --ui-tooltip-offset {
|
|
13133
|
+
syntax: "*";
|
|
13134
|
+
inherits: false;
|
|
13135
|
+
}
|
|
13136
|
+
@property --ui-tooltip-radius {
|
|
13137
|
+
syntax: "*";
|
|
13138
|
+
inherits: false;
|
|
13139
|
+
}
|
|
13140
|
+
@property --ui-tooltip-shadow {
|
|
13141
|
+
syntax: "*";
|
|
13142
|
+
inherits: false;
|
|
13143
|
+
}
|
|
13144
|
+
@property --ui-tooltip-surface {
|
|
13145
|
+
syntax: "*";
|
|
13146
|
+
inherits: false;
|
|
13147
|
+
}
|
|
13148
|
+
@property --ui-tooltip-text {
|
|
13149
|
+
syntax: "*";
|
|
13150
|
+
inherits: false;
|
|
13151
|
+
}
|
|
13152
|
+
|
|
13153
|
+
:scope:where([data-component~="ui-tooltip"]) {
|
|
13154
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
13155
|
+
--_ui-tooltip-border: var(--ui-tooltip-border);
|
|
13156
|
+
--_ui-tooltip-max-inline-size: var(--ui-tooltip-max-inline-size);
|
|
13157
|
+
--_ui-tooltip-radius: var(--ui-tooltip-radius);
|
|
13158
|
+
--_ui-tooltip-surface: var(--ui-tooltip-surface);
|
|
13159
|
+
--_ui-tooltip-text: var(--ui-tooltip-text);
|
|
13160
|
+
--_ui-tooltip-shadow: var(--ui-tooltip-shadow);
|
|
13161
|
+
--_ui-tooltip-inverse-surface: var(--ui-tooltip-inverse-surface);
|
|
13162
|
+
--_ui-tooltip-inverse-text: var(--ui-tooltip-inverse-text);
|
|
13163
|
+
--_ui-tooltip-arrow-size: var(--ui-tooltip-arrow-size);
|
|
13164
|
+
|
|
13165
|
+
position: fixed;
|
|
13166
|
+
inset: auto;
|
|
13167
|
+
margin: 0;
|
|
13168
|
+
display: inline-block;
|
|
13169
|
+
box-sizing: border-box;
|
|
13170
|
+
padding: 0;
|
|
13171
|
+
border: 0;
|
|
13172
|
+
outline: 0;
|
|
13173
|
+
border-radius: 0;
|
|
13174
|
+
background: transparent;
|
|
13175
|
+
/* The UA popover default (overflow: auto) would clip the arrow. */
|
|
13176
|
+
overflow: visible;
|
|
13177
|
+
opacity: 0;
|
|
13178
|
+
transform: translateY(4px);
|
|
13179
|
+
transition:
|
|
13180
|
+
opacity var(--ui-motion-fast) var(--ui-motion-ease),
|
|
13181
|
+
transform var(--ui-motion-fast) var(--ui-motion-ease),
|
|
13182
|
+
display var(--ui-motion-fast) allow-discrete,
|
|
13183
|
+
overlay var(--ui-motion-fast) allow-discrete;
|
|
13184
|
+
}
|
|
13185
|
+
|
|
13186
|
+
/* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
|
|
13187
|
+
.surface {
|
|
13188
|
+
--_tooltip-line: var(--_ui-tooltip-border, var(--ui-overlay-border, var(--ui-border-strong)));
|
|
13189
|
+
position: relative;
|
|
13190
|
+
display: flex;
|
|
13191
|
+
align-items: baseline;
|
|
13192
|
+
gap: var(--ui-space-2);
|
|
13193
|
+
box-sizing: border-box;
|
|
13194
|
+
max-inline-size: var(--_ui-tooltip-max-inline-size, 18rem);
|
|
13195
|
+
border: var(--ui-border-width) solid var(--_tooltip-line);
|
|
13196
|
+
border-radius: var(--_ui-tooltip-radius, var(--ui-overlay-radius, var(--ui-radius-md)));
|
|
13197
|
+
background: var(--_ui-tooltip-surface, var(--ui-overlay-surface, var(--ui-surface-elevated)));
|
|
13198
|
+
color: var(--_ui-tooltip-text, var(--ui-text-primary));
|
|
13199
|
+
padding: var(--ui-space-2) var(--ui-space-3);
|
|
13200
|
+
font-family: var(--ui-font-family-sans);
|
|
13201
|
+
font-size: var(--ui-font-size-sm);
|
|
13202
|
+
line-height: var(--ui-line-height-tight);
|
|
13203
|
+
box-shadow: var(--_ui-tooltip-shadow, var(--ui-overlay-shadow, var(--ui-elevation-tooltip, var(--ui-shadow-md))));
|
|
13204
|
+
}
|
|
13205
|
+
|
|
13206
|
+
/* A keyboard shortcut follows the label after a thin divider, smaller and quieter, as menus show
|
|
13207
|
+
it. The label stays first in the description, so a screen reader hears the name, then the keys. */
|
|
13208
|
+
.shortcut {
|
|
13209
|
+
display: inline-flex;
|
|
13210
|
+
align-items: center;
|
|
13211
|
+
padding-inline-start: var(--ui-space-2);
|
|
13212
|
+
border-inline-start: 1px solid color-mix(in oklab, currentColor 28%, transparent);
|
|
13213
|
+
color: color-mix(in oklab, currentColor 72%, transparent);
|
|
13214
|
+
font-size: var(--ui-font-size-xs);
|
|
13215
|
+
font-weight: var(--ui-font-normal);
|
|
13216
|
+
white-space: nowrap;
|
|
13217
|
+
vertical-align: baseline;
|
|
13218
|
+
}
|
|
13219
|
+
|
|
13220
|
+
.shortcut:empty {
|
|
13221
|
+
display: none;
|
|
13222
|
+
}
|
|
13223
|
+
|
|
13224
|
+
/* A <kbd> takes the browser's monospace; the hint reads in the tooltip's own type. */
|
|
13225
|
+
|
|
13226
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-tooltip-state~="inverse"] .surface {
|
|
13227
|
+
--_tooltip-line: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
|
|
13228
|
+
background: var(--_ui-tooltip-inverse-surface, var(--ui-text-primary));
|
|
13229
|
+
color: var(--_ui-tooltip-inverse-text, var(--ui-surface-default));
|
|
13230
|
+
}
|
|
13231
|
+
|
|
13232
|
+
/* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
|
|
13233
|
+
* the surface border line, so the fill covers that stretch of border and the outline runs unbroken. */
|
|
13234
|
+
.surface:where(:not([data-component], [data-slotted]))::after {
|
|
13235
|
+
content: "";
|
|
13236
|
+
position: absolute;
|
|
13237
|
+
z-index: 1;
|
|
13238
|
+
inset-inline-start: var(--ui-space-3);
|
|
13239
|
+
inset-block-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
|
|
13240
|
+
inline-size: var(--_ui-tooltip-arrow-size, 0.625rem);
|
|
13241
|
+
block-size: var(--_ui-tooltip-arrow-size, 0.625rem);
|
|
13242
|
+
box-sizing: border-box;
|
|
13243
|
+
background: inherit;
|
|
13244
|
+
border: 0 solid var(--_tooltip-line);
|
|
13245
|
+
border-inline-end-width: var(--ui-border-width);
|
|
13246
|
+
border-block-end-width: var(--ui-border-width);
|
|
13247
|
+
border-end-end-radius: var(--ui-border-width);
|
|
13248
|
+
transform: rotate(45deg) scaleX(1.25) scaleY(0.85);
|
|
13249
|
+
}
|
|
13250
|
+
|
|
13251
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="bottom"] .surface:where(:not([data-component], [data-slotted]))::after {
|
|
13252
|
+
inset-block-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
|
|
13253
|
+
inset-block-end: auto;
|
|
13254
|
+
border-inline-end-width: 0;
|
|
13255
|
+
border-block-end-width: 0;
|
|
13256
|
+
border-inline-start-width: var(--ui-border-width);
|
|
13257
|
+
border-block-start-width: var(--ui-border-width);
|
|
13258
|
+
border-end-end-radius: 0;
|
|
13259
|
+
border-start-start-radius: var(--ui-border-width);
|
|
13260
|
+
}
|
|
13261
|
+
|
|
13262
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-align="center"] .surface:where(:not([data-component], [data-slotted]))::after {
|
|
13263
|
+
inset-inline-start: calc(50% - var(--_ui-tooltip-arrow-size, 0.625rem) / 2);
|
|
13264
|
+
}
|
|
13265
|
+
|
|
13266
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after {
|
|
13267
|
+
inset-inline-start: auto;
|
|
13268
|
+
inset-inline-end: var(--ui-space-3);
|
|
13269
|
+
}
|
|
13270
|
+
|
|
13271
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"] .surface:where(:not([data-component], [data-slotted]))::after,
|
|
13272
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"] .surface:where(:not([data-component], [data-slotted]))::after {
|
|
13273
|
+
inset-block-start: calc(50% - var(--_ui-tooltip-arrow-size, 0.625rem) / 2);
|
|
13274
|
+
inset-block-end: auto;
|
|
13275
|
+
border: 0 solid var(--_tooltip-line);
|
|
13276
|
+
}
|
|
13277
|
+
|
|
13278
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"] .surface:where(:not([data-component], [data-slotted]))::after {
|
|
13279
|
+
inset-inline-start: auto;
|
|
13280
|
+
inset-inline-end: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
|
|
13281
|
+
border-inline-end-width: var(--ui-border-width);
|
|
13282
|
+
border-block-start-width: var(--ui-border-width);
|
|
13283
|
+
}
|
|
13284
|
+
|
|
13285
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"] .surface:where(:not([data-component], [data-slotted]))::after {
|
|
13286
|
+
inset-inline-start: calc(var(--_ui-tooltip-arrow-size, 0.625rem) / -2 - var(--ui-border-width) / 2);
|
|
13287
|
+
inset-inline-end: auto;
|
|
13288
|
+
border-inline-start-width: var(--ui-border-width);
|
|
13289
|
+
border-block-end-width: var(--ui-border-width);
|
|
13290
|
+
}
|
|
13291
|
+
|
|
13292
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"][data-ui-actual-align="start"] .surface:where(:not([data-component], [data-slotted]))::after,
|
|
13293
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"][data-ui-actual-align="start"] .surface:where(:not([data-component], [data-slotted]))::after {
|
|
13294
|
+
inset-block-start: var(--ui-space-3);
|
|
13295
|
+
}
|
|
13296
|
+
|
|
13297
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="left"][data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after,
|
|
13298
|
+
:scope:where([data-component~="ui-tooltip"])[data-ui-actual-placement="right"][data-ui-actual-align="end"] .surface:where(:not([data-component], [data-slotted]))::after {
|
|
13299
|
+
inset-block-start: auto;
|
|
13300
|
+
inset-block-end: var(--ui-space-3);
|
|
13301
|
+
}
|
|
13302
|
+
|
|
13303
|
+
:scope:where([data-component~="ui-tooltip"]):popover-open {
|
|
13304
|
+
opacity: 1;
|
|
13305
|
+
transform: translateY(0);
|
|
13306
|
+
}
|
|
13307
|
+
|
|
13308
|
+
@starting-style {
|
|
13309
|
+
:scope:where([data-component~="ui-tooltip"]):popover-open {
|
|
13310
|
+
opacity: 0;
|
|
13311
|
+
transform: translateY(4px);
|
|
13312
|
+
}
|
|
13313
|
+
}
|
|
13314
|
+
|
|
13315
|
+
:scope:where([data-component~="ui-tooltip"])[hidden] {
|
|
13316
|
+
display: none;
|
|
13317
|
+
}
|
|
13318
|
+
|
|
13319
|
+
@media (prefers-reduced-motion: reduce) {
|
|
13320
|
+
:scope:where([data-component~="ui-tooltip"]) {
|
|
13321
|
+
transition: none;
|
|
13322
|
+
}
|
|
13323
|
+
}
|
|
13324
|
+
}
|
|
13325
|
+
@scope ([data-component~="ui-tooltip"]) to ([data-component]) {
|
|
13326
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
13327
|
+
|
|
13328
|
+
/* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
|
|
13329
|
+
|
|
13330
|
+
/* A keyboard shortcut follows the label after a thin divider, smaller and quieter, as menus show
|
|
13331
|
+
it. The label stays first in the description, so a screen reader hears the name, then the keys. */
|
|
13332
|
+
|
|
13333
|
+
/* A <kbd> takes the browser's monospace; the hint reads in the tooltip's own type. */
|
|
13334
|
+
.shortcut :where([data-slotted], [data-slotted] *):is(kbd) {
|
|
13335
|
+
font: inherit;
|
|
13336
|
+
}
|
|
13337
|
+
|
|
13338
|
+
/* A rotated square shares the surface fill and draws the two outward border edges. Its centre sits on
|
|
13339
|
+
* the surface border line, so the fill covers that stretch of border and the outline runs unbroken. */
|
|
13340
|
+
|
|
13341
|
+
@starting-style {
|
|
13342
|
+
}
|
|
13343
|
+
|
|
13344
|
+
@media (prefers-reduced-motion: reduce) {
|
|
13345
|
+
}
|
|
13346
|
+
}
|
|
13347
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
13348
|
+
@supports (-moz-appearance: none) {
|
|
13349
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
13350
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
13351
|
+
}
|
|
13352
|
+
@supports (-moz-appearance: none) {
|
|
13353
|
+
[data-component~="ui-checkbox"] { --html-next-scope-owner: "ui-checkbox" !important; }
|
|
13354
|
+
}
|
|
13355
|
+
@scope ([data-component~="ui-checkbox"]) to ([data-component], [data-slotted]) {
|
|
13356
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
13357
|
+
@property --ui-checkbox-gap {
|
|
13358
|
+
syntax: "*";
|
|
13359
|
+
inherits: false;
|
|
13360
|
+
}
|
|
13361
|
+
@property --ui-checkbox-invalid-border {
|
|
13362
|
+
syntax: "*";
|
|
13363
|
+
inherits: false;
|
|
13364
|
+
}
|
|
13365
|
+
@property --ui-checkbox-size {
|
|
13366
|
+
syntax: "*";
|
|
13367
|
+
inherits: false;
|
|
13368
|
+
}
|
|
13369
|
+
|
|
13370
|
+
:scope:where([data-component~="ui-checkbox"]) {
|
|
13371
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
13372
|
+
--_ui-checkbox-size: var(--ui-checkbox-size);
|
|
13373
|
+
--_ui-checkbox-invalid-border: var(--ui-checkbox-invalid-border, var(--ui-field-danger, var(--ui-danger-solid)));
|
|
13374
|
+
|
|
13375
|
+
display: inline-flex;
|
|
13376
|
+
align-items: flex-start;
|
|
13377
|
+
gap: var(--ui-checkbox-gap, var(--ui-space-2));
|
|
13378
|
+
max-inline-size: 100%;
|
|
13379
|
+
color: var(--ui-text-primary);
|
|
13380
|
+
cursor: pointer;
|
|
13381
|
+
}
|
|
13382
|
+
|
|
13383
|
+
/* The label, and under it an optional line saying what the choice means. */
|
|
13384
|
+
.text {
|
|
13385
|
+
display: flex;
|
|
13386
|
+
flex-direction: column;
|
|
13387
|
+
gap: var(--ui-space-1);
|
|
13388
|
+
min-inline-size: 0;
|
|
13389
|
+
}
|
|
13390
|
+
|
|
13391
|
+
.label {
|
|
13392
|
+
min-inline-size: 0;
|
|
13393
|
+
line-height: var(--ui-line-height-md);
|
|
13394
|
+
}
|
|
13395
|
+
|
|
13396
|
+
.description {
|
|
13397
|
+
color: var(--ui-text-secondary);
|
|
13398
|
+
font-size: var(--ui-font-size-sm);
|
|
13399
|
+
line-height: var(--ui-line-height);
|
|
13400
|
+
}
|
|
13401
|
+
|
|
13402
|
+
.description:empty {
|
|
13403
|
+
display: none;
|
|
13404
|
+
}
|
|
13405
|
+
|
|
13406
|
+
input {
|
|
13407
|
+
appearance: none;
|
|
13408
|
+
-webkit-appearance: none;
|
|
13409
|
+
position: relative;
|
|
13410
|
+
flex: 0 0 auto;
|
|
13411
|
+
inline-size: var(--_ui-checkbox-size, 1.125rem);
|
|
13412
|
+
block-size: var(--_ui-checkbox-size, 1.125rem);
|
|
13413
|
+
margin: 0.125em 0 0;
|
|
13414
|
+
border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
|
|
13415
|
+
border-radius: var(--ui-radius-sm);
|
|
13416
|
+
background: var(--ui-control-surface, var(--ui-surface-default));
|
|
13417
|
+
box-shadow: var(--ui-control-inset);
|
|
13418
|
+
cursor: pointer;
|
|
13419
|
+
transition:
|
|
13420
|
+
background-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
13421
|
+
border-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
13422
|
+
box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
|
|
13423
|
+
}
|
|
13424
|
+
|
|
13425
|
+
input:where(:not([data-component], [data-slotted]))::after {
|
|
13426
|
+
content: "";
|
|
13427
|
+
position: absolute;
|
|
13428
|
+
opacity: 0;
|
|
13429
|
+
transition: opacity 120ms var(--ui-motion-ease);
|
|
13430
|
+
}
|
|
13431
|
+
|
|
13432
|
+
input:checked,
|
|
13433
|
+
input:indeterminate {
|
|
13434
|
+
border-color: var(--ui-accent-solid);
|
|
13435
|
+
background: var(--ui-accent-solid);
|
|
13436
|
+
box-shadow: var(--ui-control-inset);
|
|
13437
|
+
}
|
|
13438
|
+
|
|
13439
|
+
/* Centre the tick's box and lift it slightly for the rotated check shape. */
|
|
13440
|
+
input:checked:where(:not([data-component], [data-slotted]))::after {
|
|
13441
|
+
inset: 0;
|
|
13442
|
+
margin: auto;
|
|
13443
|
+
inline-size: 0.28rem;
|
|
13444
|
+
block-size: 0.5rem;
|
|
13445
|
+
/* Longhands, not `border: solid var(...)`: lowering drops a shorthand that omits a
|
|
13446
|
+
component, which left the tick with no style and no colour. */
|
|
13447
|
+
border-style: solid;
|
|
13448
|
+
border-color: var(--ui-text-on-accent);
|
|
13449
|
+
border-width: 0 0.125rem 0.125rem 0;
|
|
13450
|
+
opacity: 1;
|
|
13451
|
+
transform: translateY(-0.09rem) rotate(45deg);
|
|
13452
|
+
animation: ui-checkbox-check 180ms var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
|
|
13453
|
+
}
|
|
13454
|
+
|
|
13455
|
+
input:indeterminate:where(:not([data-component], [data-slotted]))::after {
|
|
13456
|
+
inset: 50% 0.23rem auto;
|
|
13457
|
+
block-size: 0.125rem;
|
|
13458
|
+
border-radius: var(--ui-radius-round);
|
|
13459
|
+
background: var(--ui-text-on-accent);
|
|
13460
|
+
opacity: 1;
|
|
13461
|
+
transform: translateY(-50%);
|
|
13462
|
+
}
|
|
13463
|
+
|
|
13464
|
+
@keyframes ui-checkbox-check {
|
|
13465
|
+
from {
|
|
13466
|
+
opacity: 0;
|
|
13467
|
+
transform: translateY(-0.09rem) rotate(45deg) scale(0.55);
|
|
13468
|
+
}
|
|
13469
|
+
65% {
|
|
13470
|
+
opacity: 1;
|
|
13471
|
+
transform: translateY(-0.09rem) rotate(45deg) scale(1.12);
|
|
13472
|
+
}
|
|
13473
|
+
to {
|
|
13474
|
+
opacity: 1;
|
|
13475
|
+
transform: translateY(-0.09rem) rotate(45deg) scale(1);
|
|
13476
|
+
}
|
|
13477
|
+
}
|
|
13478
|
+
|
|
13479
|
+
@media (prefers-reduced-motion: reduce) {
|
|
13480
|
+
input:where(:not([data-component], [data-slotted]))::after {
|
|
13481
|
+
transition: none;
|
|
13482
|
+
animation: none;
|
|
13483
|
+
}
|
|
13484
|
+
}
|
|
13485
|
+
|
|
13486
|
+
input:hover:enabled {
|
|
13487
|
+
border-color: var(--ui-accent-solid);
|
|
13488
|
+
}
|
|
13489
|
+
|
|
13490
|
+
input:focus-visible {
|
|
13491
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
|
|
13492
|
+
outline-offset: var(--ui-focus-width);
|
|
13493
|
+
}
|
|
13494
|
+
|
|
13495
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="invalid"] input {
|
|
13496
|
+
border-color: var(--_ui-checkbox-invalid-border);
|
|
13497
|
+
}
|
|
13498
|
+
|
|
13499
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] {
|
|
13500
|
+
color: var(--ui-disabled-text);
|
|
13501
|
+
cursor: not-allowed;
|
|
13502
|
+
}
|
|
13503
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] .description {
|
|
13504
|
+
color: var(--ui-disabled-text);
|
|
13505
|
+
}
|
|
13506
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="disabled"] input {
|
|
13507
|
+
border-color: var(--ui-disabled-border);
|
|
13508
|
+
background: var(--ui-disabled-surface);
|
|
13509
|
+
box-shadow: none;
|
|
13510
|
+
cursor: not-allowed;
|
|
13511
|
+
}
|
|
13512
|
+
|
|
13513
|
+
/* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
|
|
13514
|
+
and the first line centres in that control height, so the label shares a row's baseline.
|
|
13515
|
+
Multi-line labels and descriptions still grow downward from that first line. */
|
|
13516
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] {
|
|
13517
|
+
--_font: var(--ui-font-size-sm);
|
|
13518
|
+
--_row: var(--ui-control-size-sm);
|
|
13519
|
+
}
|
|
13520
|
+
|
|
13521
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] {
|
|
13522
|
+
--_font: var(--ui-font-size-md);
|
|
13523
|
+
--_row: var(--ui-control-size-lg);
|
|
13524
|
+
}
|
|
13525
|
+
|
|
13526
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"],
|
|
13527
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] {
|
|
13528
|
+
--_line: calc(var(--_font) * var(--ui-line-height-md));
|
|
13529
|
+
font-size: var(--_font);
|
|
13530
|
+
padding-block: calc((var(--_row) - var(--_line)) / 2);
|
|
13531
|
+
}
|
|
13532
|
+
|
|
13533
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] input,
|
|
13534
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=lg"] input {
|
|
13535
|
+
margin-top: calc((var(--_line) - var(--_ui-checkbox-size, 1.125rem)) / 2);
|
|
13536
|
+
}
|
|
13537
|
+
|
|
13538
|
+
@media (pointer: coarse) {
|
|
13539
|
+
:scope:where([data-component~="ui-checkbox"])[data-ui-checkbox-state~="size=sm"] {
|
|
13540
|
+
--_row: var(--ui-control-min-block-size);
|
|
13541
|
+
}
|
|
13542
|
+
}
|
|
13543
|
+
|
|
13544
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
13545
|
+
:scope:where([data-component~="ui-checkbox"])[hidden] {
|
|
13546
|
+
display: none;
|
|
13547
|
+
}
|
|
13548
|
+
}
|
|
13549
|
+
@scope ([data-component~="ui-checkbox"]) to ([data-component]) {
|
|
13550
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
13551
|
+
|
|
13552
|
+
/* The label, and under it an optional line saying what the choice means. */
|
|
13553
|
+
|
|
13554
|
+
/* Centre the tick's box and lift it slightly for the rotated check shape. */
|
|
13555
|
+
|
|
13556
|
+
@media (prefers-reduced-motion: reduce) {
|
|
13557
|
+
}
|
|
13558
|
+
|
|
13559
|
+
/* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
|
|
13560
|
+
and the first line centres in that control height, so the label shares a row's baseline.
|
|
13561
|
+
Multi-line labels and descriptions still grow downward from that first line. */
|
|
13562
|
+
|
|
13563
|
+
@media (pointer: coarse) {
|
|
13564
|
+
}
|
|
13565
|
+
|
|
13566
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
13567
|
+
}
|
|
13568
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
13569
|
+
@supports (-moz-appearance: none) {
|
|
13570
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
13571
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
13572
|
+
}
|
|
13573
|
+
@supports (-moz-appearance: none) {
|
|
13574
|
+
[data-component~="ui-disclosure"] { --html-next-scope-owner: "ui-disclosure" !important; }
|
|
13575
|
+
}
|
|
13576
|
+
@scope ([data-component~="ui-disclosure"]) to ([data-component], [data-slotted]) {
|
|
13577
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
13578
|
+
@property --ui-disclosure-trigger-min-block-size {
|
|
13579
|
+
syntax: "*";
|
|
13580
|
+
inherits: false;
|
|
13581
|
+
}
|
|
13582
|
+
@property --ui-disclosure-trigger-padding-block {
|
|
13583
|
+
syntax: "*";
|
|
13584
|
+
inherits: false;
|
|
13585
|
+
}
|
|
13586
|
+
@property --ui-disclosure-trigger-padding-inline {
|
|
13587
|
+
syntax: "*";
|
|
13588
|
+
inherits: false;
|
|
13589
|
+
}
|
|
13590
|
+
|
|
13591
|
+
/* Density resolves into the summary row's own values; the public tokens still override them. */
|
|
13592
|
+
:scope:where([data-component~="ui-disclosure"]) {
|
|
13593
|
+
/* Hooks do not inherit, so the parts below read them from the root. */
|
|
13594
|
+
--_ui-disclosure-trigger-min-block-size: var(--ui-disclosure-trigger-min-block-size);
|
|
13595
|
+
--_ui-disclosure-trigger-padding-block: var(--ui-disclosure-trigger-padding-block);
|
|
13596
|
+
--_ui-disclosure-trigger-padding-inline: var(--ui-disclosure-trigger-padding-inline);
|
|
13597
|
+
|
|
13598
|
+
--_trigger-min-block-size: var(--ui-control-size);
|
|
13599
|
+
--_trigger-padding-block: var(--ui-space-2);
|
|
13600
|
+
--_trigger-padding-inline: var(--ui-space-3);
|
|
13601
|
+
}
|
|
13602
|
+
|
|
13603
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="density=compact"] {
|
|
13604
|
+
--_trigger-min-block-size: var(--ui-control-size-sm);
|
|
13605
|
+
--_trigger-padding-block: var(--ui-space-1);
|
|
13606
|
+
--_trigger-padding-inline: var(--ui-space-2);
|
|
13607
|
+
}
|
|
13608
|
+
|
|
13609
|
+
/* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
|
|
13610
|
+
* select or combobox. Stacked disclosures share their dividers. */
|
|
13611
|
+
:scope:where([data-component~="ui-disclosure"]) {
|
|
13612
|
+
display: block;
|
|
13613
|
+
inline-size: 100%;
|
|
13614
|
+
overflow: clip;
|
|
13615
|
+
border-block-end: var(--ui-border-width) solid var(--ui-border-divider);
|
|
13616
|
+
color: var(--ui-text-primary);
|
|
13617
|
+
}
|
|
13618
|
+
|
|
13619
|
+
.trigger {
|
|
13620
|
+
display: flex;
|
|
13621
|
+
gap: var(--ui-space-3);
|
|
13622
|
+
align-items: center;
|
|
13623
|
+
inline-size: 100%;
|
|
13624
|
+
min-block-size: var(--_ui-disclosure-trigger-min-block-size, var(--_trigger-min-block-size));
|
|
13625
|
+
padding: var(--_ui-disclosure-trigger-padding-block, var(--_trigger-padding-block))
|
|
13626
|
+
var(--_ui-disclosure-trigger-padding-inline, var(--_trigger-padding-inline));
|
|
13627
|
+
border: 0;
|
|
13628
|
+
background: transparent;
|
|
13629
|
+
color: inherit;
|
|
13630
|
+
font: inherit;
|
|
13631
|
+
font-weight: var(--ui-font-semibold);
|
|
13632
|
+
text-align: start;
|
|
13633
|
+
cursor: pointer;
|
|
13634
|
+
border-radius: var(--ui-radius-sm);
|
|
13635
|
+
transition: background-color var(--ui-motion-fast) var(--ui-motion-ease);
|
|
13636
|
+
}
|
|
13637
|
+
|
|
13638
|
+
.trigger:hover:not(:disabled) {
|
|
13639
|
+
background: color-mix(in srgb, currentColor 6%, transparent);
|
|
13640
|
+
}
|
|
13641
|
+
.trigger:focus-visible {
|
|
13642
|
+
outline: none;
|
|
13643
|
+
box-shadow: inset 0 0 0 var(--ui-focus-width) color-mix(in srgb, var(--ui-focus-ring) 45%, transparent);
|
|
13644
|
+
}
|
|
13645
|
+
.trigger:disabled {
|
|
13646
|
+
color: var(--ui-disabled-text);
|
|
13647
|
+
cursor: not-allowed;
|
|
13648
|
+
}
|
|
13649
|
+
|
|
13650
|
+
.summary {
|
|
13651
|
+
flex: 1;
|
|
13652
|
+
min-inline-size: 0;
|
|
13653
|
+
}
|
|
13654
|
+
|
|
13655
|
+
.leading,
|
|
13656
|
+
.indicator {
|
|
13657
|
+
display: inline-flex;
|
|
13658
|
+
align-items: center;
|
|
13659
|
+
justify-content: center;
|
|
13660
|
+
flex: none;
|
|
13661
|
+
}
|
|
13662
|
+
.leading:empty {
|
|
13663
|
+
display: none;
|
|
13664
|
+
}
|
|
13665
|
+
.indicator {
|
|
13666
|
+
transition: transform var(--ui-motion-feedback) var(--ui-motion-feedback-ease);
|
|
13667
|
+
}
|
|
13668
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .indicator {
|
|
13669
|
+
transform: rotate(180deg);
|
|
13670
|
+
}
|
|
13671
|
+
|
|
13672
|
+
.chevron {
|
|
13673
|
+
inline-size: 0.5rem;
|
|
13674
|
+
block-size: 0.5rem;
|
|
13675
|
+
border-inline-end: 2px solid currentColor;
|
|
13676
|
+
border-block-end: 2px solid currentColor;
|
|
13677
|
+
transform: rotate(45deg) translate(-1px, -1px);
|
|
13678
|
+
}
|
|
13679
|
+
|
|
13680
|
+
.panel {
|
|
13681
|
+
display: grid;
|
|
13682
|
+
grid-template-rows: 0fr;
|
|
13683
|
+
transition: grid-template-rows var(--ui-motion-reveal) var(--ui-motion-reveal-ease), content-visibility var(--ui-motion-reveal) allow-discrete;
|
|
13684
|
+
}
|
|
13685
|
+
|
|
13686
|
+
.panel-inner {
|
|
13687
|
+
min-block-size: 0;
|
|
13688
|
+
overflow: hidden;
|
|
13689
|
+
padding-inline: var(--ui-space-3);
|
|
13690
|
+
}
|
|
13691
|
+
|
|
13692
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .panel {
|
|
13693
|
+
grid-template-rows: 1fr;
|
|
13694
|
+
}
|
|
13695
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="internalOpen"] .panel-inner {
|
|
13696
|
+
padding-block: 0 var(--ui-space-3);
|
|
13697
|
+
}
|
|
13698
|
+
|
|
13699
|
+
/* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
|
|
13700
|
+
* normal content-sized layout and its animation remain unchanged when fill is omitted. */
|
|
13701
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] {
|
|
13702
|
+
display: flex;
|
|
13703
|
+
flex-direction: column;
|
|
13704
|
+
flex: 0 0 var(--_ui-disclosure-heading-size, var(--_trigger-min-block-size));
|
|
13705
|
+
min-block-size: calc(var(--_ui-disclosure-heading-size, var(--_trigger-min-block-size)) + var(--ui-border-width));
|
|
13706
|
+
transition: flex-grow var(--ui-motion-layout) var(--ui-motion-layout-ease);
|
|
13707
|
+
border-block-end: 0;
|
|
13708
|
+
border-block-start: var(--ui-border-width) solid var(--ui-border-divider);
|
|
13709
|
+
}
|
|
13710
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"][data-ui-disclosure-state~="internalOpen"] {
|
|
13711
|
+
flex-grow: 1;
|
|
13712
|
+
}
|
|
13713
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .heading {
|
|
13714
|
+
flex: none;
|
|
13715
|
+
}
|
|
13716
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .trigger {
|
|
13717
|
+
border-radius: 0;
|
|
13718
|
+
}
|
|
13719
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .panel {
|
|
13720
|
+
flex: 1;
|
|
13721
|
+
min-block-size: 0;
|
|
13722
|
+
}
|
|
13723
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"] .panel-inner {
|
|
13724
|
+
display: flex;
|
|
13725
|
+
flex-direction: column;
|
|
13726
|
+
flex: 1;
|
|
13727
|
+
min-block-size: 0;
|
|
13728
|
+
padding: 0;
|
|
13729
|
+
}
|
|
13730
|
+
|
|
13731
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] .trigger {
|
|
13732
|
+
gap: var(--ui-nav-gap);
|
|
13733
|
+
padding-inline: var(--ui-nav-padding-inline);
|
|
13734
|
+
min-block-size: var(--ui-nav-min-block-size);
|
|
13735
|
+
padding-block: var(--ui-nav-padding-block);
|
|
13736
|
+
border-radius: var(--ui-selection-radius);
|
|
13737
|
+
font-size: var(--ui-font-size-md);
|
|
13738
|
+
font-weight: var(--ui-font-normal);
|
|
13739
|
+
color: var(--ui-text-secondary);
|
|
13740
|
+
}
|
|
13741
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"][data-ui-disclosure-state~="density=compact"] .trigger {
|
|
13742
|
+
padding-inline: var(--ui-nav-compact-padding-inline);
|
|
13743
|
+
padding-block: var(--ui-nav-compact-padding-block);
|
|
13744
|
+
min-block-size: var(--ui-nav-compact-min-block-size);
|
|
13745
|
+
font-size: var(--ui-font-size-sm);
|
|
13746
|
+
}
|
|
13747
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] .trigger:hover:not(:disabled) {
|
|
13748
|
+
background: var(--ui-nav-hover-surface);
|
|
13749
|
+
color: var(--ui-text-primary);
|
|
13750
|
+
}
|
|
13751
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"] :is(.leading, .indicator) {
|
|
13752
|
+
inline-size: var(--ui-nav-icon-size);
|
|
13753
|
+
font-size: var(--ui-nav-icon-size);
|
|
13754
|
+
}
|
|
13755
|
+
@media (pointer: coarse) {
|
|
13756
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="variant=navigation"][data-ui-disclosure-state~="density=compact"] .trigger {
|
|
13757
|
+
min-block-size: var(--ui-control-min-block-size);
|
|
13758
|
+
}
|
|
13759
|
+
}
|
|
13760
|
+
|
|
13761
|
+
@media (prefers-reduced-motion: reduce) {
|
|
13762
|
+
:scope:where([data-component~="ui-disclosure"])[data-ui-disclosure-state~="fill"],
|
|
13763
|
+
.panel,
|
|
13764
|
+
.indicator {
|
|
13765
|
+
transition: none;
|
|
13766
|
+
}
|
|
13767
|
+
}
|
|
13768
|
+
|
|
13769
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
13770
|
+
:scope:where([data-component~="ui-disclosure"])[hidden] {
|
|
13771
|
+
display: none;
|
|
13772
|
+
}
|
|
13773
|
+
}
|
|
13774
|
+
@scope ([data-component~="ui-disclosure"]) to ([data-component]) {
|
|
13775
|
+
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
13776
|
+
|
|
13777
|
+
/* Density resolves into the summary row's own values; the public tokens still override them. */
|
|
13778
|
+
|
|
13779
|
+
/* An accordion row, not a field: no enclosing box, just a divider, so it never reads as a
|
|
13780
|
+
* select or combobox. Stacked disclosures share their dividers. */
|
|
13781
|
+
|
|
13782
|
+
/* A bounded accordion owns one flexible body, so its trigger never scrolls away. The
|
|
13783
|
+
* normal content-sized layout and its animation remain unchanged when fill is omitted. */
|
|
13784
|
+
@media (pointer: coarse) {
|
|
13785
|
+
}
|
|
13786
|
+
|
|
13787
|
+
@media (prefers-reduced-motion: reduce) {
|
|
13788
|
+
}
|
|
13789
|
+
|
|
13790
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
13791
|
+
}
|
|
13792
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
13793
|
+
@supports (-moz-appearance: none) {
|
|
13794
|
+
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
13795
|
+
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
13796
|
+
}
|
|
13797
|
+
@supports (-moz-appearance: none) {
|
|
13798
|
+
[data-component~="ui-input"] { --html-next-scope-owner: "ui-input" !important; }
|
|
13799
|
+
}
|
|
13800
|
+
@scope ([data-component~="ui-input"]) to ([data-component], [data-slotted]) {
|
|
13801
|
+
/* This component's hooks style the element they are set on, and never a nested one. An Input
|
|
13802
|
+
Group sets --_ui-default-input-* for the input inside it, below the input's own hooks. */
|
|
13803
|
+
@property --ui-input-border {
|
|
13804
|
+
syntax: "*";
|
|
13805
|
+
inherits: false;
|
|
13806
|
+
}
|
|
13807
|
+
@property --ui-input-border-hover {
|
|
13808
|
+
syntax: "*";
|
|
13809
|
+
inherits: false;
|
|
13810
|
+
}
|
|
13811
|
+
@property --ui-input-border-width {
|
|
13812
|
+
syntax: "*";
|
|
13813
|
+
inherits: false;
|
|
13814
|
+
}
|
|
13815
|
+
@property --ui-input-focus-border {
|
|
13816
|
+
syntax: "*";
|
|
13817
|
+
inherits: false;
|
|
13818
|
+
}
|
|
13819
|
+
@property --ui-input-focus-outline {
|
|
13820
|
+
syntax: "*";
|
|
13821
|
+
inherits: false;
|
|
13822
|
+
}
|
|
13823
|
+
@property --ui-input-focus-shadow {
|
|
13824
|
+
syntax: "*";
|
|
13825
|
+
inherits: false;
|
|
13826
|
+
}
|
|
13827
|
+
@property --ui-input-inline-size {
|
|
13828
|
+
syntax: "*";
|
|
13829
|
+
inherits: false;
|
|
13830
|
+
}
|
|
13831
|
+
@property --ui-input-invalid-border {
|
|
13832
|
+
syntax: "*";
|
|
13833
|
+
inherits: false;
|
|
13834
|
+
}
|
|
13835
|
+
@property --ui-input-invalid-focus-shadow {
|
|
13836
|
+
syntax: "*";
|
|
13837
|
+
inherits: false;
|
|
13838
|
+
}
|
|
13839
|
+
@property --ui-input-min-block-size {
|
|
13840
|
+
syntax: "*";
|
|
13841
|
+
inherits: false;
|
|
13842
|
+
}
|
|
13843
|
+
@property --ui-input-radius {
|
|
13844
|
+
syntax: "*";
|
|
13845
|
+
inherits: false;
|
|
13846
|
+
}
|
|
13847
|
+
@property --ui-input-shadow {
|
|
13848
|
+
syntax: "*";
|
|
13849
|
+
inherits: false;
|
|
13850
|
+
}
|
|
13851
|
+
@property --ui-input-surface {
|
|
13852
|
+
syntax: "*";
|
|
13853
|
+
inherits: false;
|
|
13854
|
+
}
|
|
13855
|
+
|
|
13856
|
+
:scope:where([data-component~="ui-input"]) {
|
|
13857
|
+
box-sizing: border-box;
|
|
13858
|
+
display: inline-block;
|
|
13859
|
+
inline-size: var(--ui-input-inline-size, 100%);
|
|
13860
|
+
min-inline-size: 0;
|
|
13861
|
+
min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-md)));
|
|
13862
|
+
margin: 0;
|
|
13863
|
+
padding: var(--ui-space-2) var(--ui-space-3);
|
|
13864
|
+
appearance: none;
|
|
13865
|
+
padding-inline-start: var(--_ui-default-input-padding-inline-start, var(--ui-space-3));
|
|
13866
|
+
border: var(--ui-input-border-width, var(--_ui-default-input-border-width, var(--ui-border-width))) solid
|
|
13867
|
+
var(--ui-input-border, var(--_ui-default-input-border, var(--ui-control-border, var(--ui-border-strong))));
|
|
13868
|
+
border-radius: var(--ui-input-radius, var(--_ui-default-input-radius, var(--ui-field-radius, var(--ui-radius-md))));
|
|
13869
|
+
background: var(--ui-input-surface, var(--_ui-default-input-surface, var(--ui-control-surface, var(--ui-surface-elevated))));
|
|
13870
|
+
color: var(--ui-text-primary);
|
|
13871
|
+
font: inherit;
|
|
13872
|
+
line-height: var(--ui-line-height-tight);
|
|
13873
|
+
box-shadow: var(--ui-input-shadow, var(--_ui-default-input-shadow, var(--ui-control-inset)));
|
|
13874
|
+
transition:
|
|
13875
|
+
border-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
13876
|
+
box-shadow var(--ui-motion-fast) var(--ui-motion-ease),
|
|
13877
|
+
background-color var(--ui-motion-fast) var(--ui-motion-ease);
|
|
13878
|
+
}
|
|
13879
|
+
|
|
13880
|
+
/* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
|
|
13881
|
+
:scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"] {
|
|
13882
|
+
min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-sm)));
|
|
13883
|
+
padding: var(--ui-space-1) var(--ui-space-2);
|
|
13884
|
+
font-size: var(--ui-font-size-sm);
|
|
13885
|
+
}
|
|
13886
|
+
|
|
13887
|
+
:scope:where([data-component~="ui-input"])[data-ui-input-state~="size=lg"] {
|
|
13888
|
+
min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-size-lg)));
|
|
13889
|
+
padding: var(--ui-space-3) var(--ui-space-4);
|
|
13890
|
+
font-size: var(--ui-font-size-md);
|
|
13891
|
+
}
|
|
13892
|
+
|
|
13893
|
+
/* Under touch a small field is still a touch-sized target, as a small button is, and keeps
|
|
13894
|
+
body-size text: below 16px, iOS zooms the page into the focused field. */
|
|
13895
|
+
@media (pointer: coarse) {
|
|
13896
|
+
:scope:where([data-component~="ui-input"]) {
|
|
13897
|
+
min-block-size: var(
|
|
13898
|
+
--ui-input-min-block-size,
|
|
13899
|
+
var(--_ui-default-input-min-block-size, max(var(--ui-control-size-md), var(--ui-control-min-block-size)))
|
|
13900
|
+
);
|
|
13901
|
+
}
|
|
13902
|
+
|
|
13903
|
+
:scope:where([data-component~="ui-input"]),
|
|
13904
|
+
:scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"],
|
|
13905
|
+
:scope:where([data-component~="ui-input"])[data-ui-input-state~="size=lg"] {
|
|
13906
|
+
font-size: var(--ui-font-size-md);
|
|
13907
|
+
}
|
|
13908
|
+
|
|
13909
|
+
:scope:where([data-component~="ui-input"])[data-ui-input-state~="size=sm"] {
|
|
13910
|
+
min-block-size: var(--ui-input-min-block-size, var(--_ui-default-input-min-block-size, var(--ui-control-min-block-size)));
|
|
13911
|
+
}
|
|
13912
|
+
}
|
|
13913
|
+
|
|
13914
|
+
/* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
|
|
13915
|
+
:scope:where([data-component~="ui-input"])::selection {
|
|
13916
|
+
background: color-mix(in srgb, var(--ui-accent-solid) 20%, transparent);
|
|
13917
|
+
color: inherit;
|
|
13918
|
+
}
|
|
13919
|
+
|
|
13920
|
+
:scope:where([data-component~="ui-input"])::placeholder {
|
|
13921
|
+
color: var(--ui-control-placeholder, var(--ui-text-secondary));
|
|
13922
|
+
opacity: 1;
|
|
13923
|
+
}
|
|
13924
|
+
|
|
13925
|
+
:scope:where([data-component~="ui-input"]):hover:not(:focus):not(:disabled):not(:read-only):not([aria-invalid="true"]):not(:is(:user-invalid, [data-user-invalid])) {
|
|
13926
|
+
border-color: var(--ui-input-border-hover, var(--_ui-default-input-border-hover, var(--ui-control-border-hover, var(--ui-text-secondary))));
|
|
13927
|
+
}
|
|
13928
|
+
|
|
13929
|
+
:scope:where([data-component~="ui-input"]):focus-visible {
|
|
13930
|
+
border-color: var(--ui-input-focus-border, var(--_ui-default-input-focus-border, var(--ui-control-focus, var(--ui-accent-solid))));
|
|
13931
|
+
outline: none;
|
|
13932
|
+
box-shadow: var(--ui-input-focus-shadow, var(--_ui-default-input-focus-shadow, var(--ui-control-inset), var(--ui-control-focus-halo-shadow)));
|
|
13933
|
+
}
|
|
13934
|
+
|
|
13935
|
+
/* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
|
|
13936
|
+
:scope:where([data-component~="ui-input"])[aria-invalid="true"],
|
|
13937
|
+
:scope:where([data-component~="ui-input"]):is(:user-invalid, [data-user-invalid]) {
|
|
13938
|
+
border-color: var(--ui-input-invalid-border, var(--_ui-default-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))));
|
|
13939
|
+
}
|
|
13940
|
+
|
|
13941
|
+
:scope:where([data-component~="ui-input"]):is([aria-invalid="true"], :is(:user-invalid, [data-user-invalid])):focus-visible {
|
|
13942
|
+
box-shadow: var(
|
|
13943
|
+
--ui-input-invalid-focus-shadow,
|
|
13944
|
+
var(
|
|
13945
|
+
--_ui-default-input-invalid-focus-shadow,
|
|
13946
|
+
var(--ui-control-inset),
|
|
13947
|
+
0 0 0 calc(var(--ui-focus-width) * 1.5) color-mix(
|
|
13948
|
+
in srgb,
|
|
13949
|
+
var(--ui-input-invalid-border, var(--ui-field-danger, var(--ui-danger-solid))) 22%,
|
|
13950
|
+
transparent
|
|
13951
|
+
)
|
|
13952
|
+
)
|
|
13953
|
+
);
|
|
13954
|
+
}
|
|
13955
|
+
|
|
13956
|
+
:scope:where([data-component~="ui-input"]):disabled {
|
|
13957
|
+
background: var(--ui-control-surface-disabled, var(--ui-surface-muted));
|
|
13958
|
+
color: var(--ui-disabled-text);
|
|
13959
|
+
box-shadow: none;
|
|
13960
|
+
cursor: not-allowed;
|
|
13961
|
+
}
|
|
13962
|
+
|
|
13963
|
+
/* Forced colors drop box shadows, so the focus ring becomes an outline. */
|
|
13964
|
+
@media (forced-colors: active) {
|
|
13965
|
+
:scope:where([data-component~="ui-input"]):focus-visible {
|
|
13966
|
+
outline: var(--ui-input-focus-outline, var(--_ui-default-input-focus-outline, var(--ui-focus-width) solid Highlight));
|
|
13967
|
+
outline-offset: var(--ui-border-width);
|
|
13968
|
+
}
|
|
13969
|
+
}
|
|
13970
|
+
|
|
13971
|
+
/* No text-box-trim here: trimming a native input's line box below its line height lets the text
|
|
13972
|
+
* scroll vertically inside the field. Native inputs already center their single line. */
|
|
13973
|
+
|
|
13974
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
13975
|
+
:scope:where([data-component~="ui-input"])[hidden] {
|
|
13976
|
+
display: none;
|
|
13977
|
+
}
|
|
13978
|
+
}
|
|
13979
|
+
@scope ([data-component~="ui-input"]) to ([data-component]) {
|
|
13980
|
+
/* This component's hooks style the element they are set on, and never a nested one. An Input
|
|
13981
|
+
Group sets --_ui-default-input-* for the input inside it, below the input's own hooks. */
|
|
13982
|
+
|
|
13983
|
+
/* Each size reads the hook and then an Input Group's default first, so a group, which draws the frame, can zero it. */
|
|
13984
|
+
|
|
13985
|
+
/* Under touch a small field is still a touch-sized target, as a small button is, and keeps
|
|
13986
|
+
body-size text: below 16px, iOS zooms the page into the focused field. */
|
|
13987
|
+
@media (pointer: coarse) {
|
|
13988
|
+
}
|
|
13989
|
+
|
|
13990
|
+
/* Tabbing into a field selects its text; tint that selection softly instead of the page highlight. */
|
|
13991
|
+
|
|
13992
|
+
/* The app's invalid flag, or the browser's own verdict once the user has left an invalid field. */
|
|
13993
|
+
|
|
13994
|
+
/* Forced colors drop box shadows, so the focus ring becomes an outline. */
|
|
13995
|
+
@media (forced-colors: active) {
|
|
13996
|
+
}
|
|
13997
|
+
|
|
13998
|
+
/* No text-box-trim here: trimming a native input's line box below its line height lets the text
|
|
13999
|
+
* scroll vertically inside the field. Native inputs already center their single line. */
|
|
14000
|
+
|
|
14001
|
+
/* A component that sets its display still honours the hidden attribute on its root. */
|
|
14002
|
+
}
|
|
14003
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
10969
14004
|
@supports (-moz-appearance: none) {
|
|
10970
14005
|
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
10971
14006
|
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|
|
@@ -11020,7 +14055,7 @@ html[data-ui-input-modality="touch"]
|
|
|
11020
14055
|
|
|
11021
14056
|
/* The root is the hr, so the rules name :host; a bare hr matches only a descendant. */
|
|
11022
14057
|
}
|
|
11023
|
-
/* Generated by HTML Next 1.0.0-alpha.
|
|
14058
|
+
/* Generated by HTML Next 1.0.0-alpha.56. Do not edit. */
|
|
11024
14059
|
@supports (-moz-appearance: none) {
|
|
11025
14060
|
:where([data-component], [data-slotted]) { --html-next-scope-owner: boundary; }
|
|
11026
14061
|
:where([data-slotted]:not([data-component])) { --html-next-scope-owner: projected !important; }
|