@threadlabs/looma 0.6.4 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ui-button/ui-button.html +103 -81
- package/components/ui-checkbox/ui-checkbox.html +4 -1
- package/components/ui-combobox/ui-combobox.html +40 -3
- package/components/ui-combobox/ui-combobox.js +27 -5
- package/components/ui-select/ui-select.html +3 -5
- package/dist/index.js +1 -1
- package/package.json +2 -2
- 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-button.css +112 -80
- package/styles/ui-callout.css +1 -1
- package/styles/ui-checkbox.css +5 -2
- package/styles/ui-cluster.css +1 -1
- package/styles/ui-combobox.css +38 -1
- package/styles/ui-container.css +1 -1
- package/styles/ui-context-menu.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-insert-table-grid.css +1 -1
- package/styles/ui-editor-mention-menu.css +1 -1
- package/styles/ui-editor-slash-menu.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-input.css +1 -1
- package/styles/ui-menu-item.css +1 -1
- package/styles/ui-menu.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-search-result-row.css +1 -1
- package/styles/ui-search-shell.css +1 -1
- package/styles/ui-select.css +4 -5
- package/styles/ui-separator.css +1 -1
- package/styles/ui-sidebar.css +1 -1
- package/styles/ui-stack.css +1 -1
- package/styles/ui-switch.css +1 -1
- package/styles/ui-switcher.css +1 -1
- package/styles/ui-tabs.css +1 -1
- package/styles/ui-textarea.css +1 -1
- package/styles/ui-toast-region.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/theme-dark.css +6 -30
- package/theme-high-contrast.css +30 -20
- package/theme-light.css +2 -16
- package/tokens.css +33 -24
- 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/UiButton.d.ts +2 -2
- package/vanilla/UiButton.js +2 -2
- package/vanilla/UiCallout.d.ts +1 -1
- package/vanilla/UiCallout.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 +2 -2
- 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/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/UiEditorInsertTableGrid.d.ts +1 -1
- package/vanilla/UiEditorInsertTableGrid.js +1 -1
- package/vanilla/UiEditorMentionMenu.d.ts +1 -1
- package/vanilla/UiEditorMentionMenu.js +1 -1
- package/vanilla/UiEditorSlashMenu.d.ts +1 -1
- package/vanilla/UiEditorSlashMenu.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/UiInput.d.ts +1 -1
- package/vanilla/UiInput.js +1 -1
- package/vanilla/UiMenu.d.ts +1 -1
- package/vanilla/UiMenu.js +1 -1
- package/vanilla/UiMenuItem.d.ts +1 -1
- package/vanilla/UiMenuItem.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/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/UiSelect.d.ts +1 -2
- package/vanilla/UiSelect.js +4 -7
- 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/UiStack.d.ts +1 -1
- package/vanilla/UiStack.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/UiTabs.d.ts +1 -1
- package/vanilla/UiTabs.js +1 -1
- package/vanilla/UiTextarea.d.ts +1 -1
- package/vanilla/UiTextarea.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/UiAffordanceScope.vue +8 -84
- package/vue/UiAvatar.d.ts +1 -1
- package/vue/UiAvatar.vue +9 -106
- package/vue/UiAvatarGroup.vue +9 -96
- package/vue/UiBadge.vue +1 -1
- package/vue/UiButton.d.ts +2 -2
- package/vue/UiButton.vue +104 -97
- package/vue/UiCallout.vue +1 -1
- package/vue/UiCheckbox.vue +26 -124
- package/vue/UiCluster.vue +1 -1
- package/vue/UiCombobox.d.ts +1 -1
- package/vue/UiCombobox.vue +270 -479
- package/vue/UiContainer.vue +1 -1
- package/vue/UiContextMenu.vue +34 -141
- package/vue/UiDialog.vue +25 -126
- package/vue/UiDisclosure.vue +26 -138
- package/vue/UiEditable.vue +46 -158
- package/vue/UiEditorInsertTableGrid.vue +19 -138
- package/vue/UiEditorMentionMenu.vue +17 -124
- package/vue/UiEditorSlashMenu.vue +17 -109
- package/vue/UiEditorTableContextMenu.vue +34 -122
- package/vue/UiEditorTableOverlay.vue +61 -167
- package/vue/UiEditorTableToolbar.vue +34 -142
- package/vue/UiEditorToolbar.vue +1 -1
- package/vue/UiFloatingActionButton.vue +1 -1
- package/vue/UiFormField.vue +7 -79
- package/vue/UiGrid.vue +1 -1
- package/vue/UiIcon.vue +8 -84
- package/vue/UiIconButton.vue +7 -79
- package/vue/UiInput.vue +7 -79
- package/vue/UiMenu.vue +42 -127
- package/vue/UiMenuItem.vue +1 -1
- package/vue/UiPopover.vue +25 -121
- package/vue/UiRadio.vue +22 -123
- package/vue/UiRadioGroup.d.ts +1 -1
- package/vue/UiRadioGroup.vue +32 -119
- package/vue/UiReel.vue +1 -1
- package/vue/UiSearchResultRow.vue +1 -1
- package/vue/UiSearchShell.vue +25 -121
- package/vue/UiSelect.d.ts +0 -2
- package/vue/UiSelect.vue +9 -85
- package/vue/UiSeparator.vue +1 -1
- package/vue/UiSidebar.vue +32 -133
- package/vue/UiStack.vue +1 -1
- package/vue/UiSwitch.vue +22 -123
- package/vue/UiSwitcher.vue +1 -1
- package/vue/UiTabs.vue +24 -128
- package/vue/UiTextarea.vue +7 -79
- package/vue/UiToastRegion.vue +37 -126
- package/vue/UiTooltip.vue +25 -124
- package/vue/UiTopBar.vue +1 -1
- package/vue/UiTree.vue +56 -137
- package/vue/UiTreeItem.vue +28 -144
- package/vue/chunks/UiAffordanceScope.js +9 -78
- package/vue/chunks/UiAvatar.js +13 -89
- package/vue/chunks/UiAvatarGroup.js +10 -80
- package/vue/chunks/UiBadge.js +1 -1
- package/vue/chunks/UiButton.js +3 -3
- package/vue/chunks/UiCallout.js +1 -1
- package/vue/chunks/UiCheckbox.js +17 -95
- package/vue/chunks/UiCluster.js +1 -1
- package/vue/chunks/UiCombobox.js +115 -326
- package/vue/chunks/UiContainer.js +1 -1
- package/vue/chunks/UiContextMenu.js +21 -113
- package/vue/chunks/UiDialog.js +20 -99
- package/vue/chunks/UiDisclosure.js +22 -112
- package/vue/chunks/UiEditable.js +32 -128
- package/vue/chunks/UiEditorInsertTableGrid.js +22 -116
- package/vue/chunks/UiEditorMentionMenu.js +18 -116
- package/vue/chunks/UiEditorSlashMenu.js +15 -101
- package/vue/chunks/UiEditorTableContextMenu.js +12 -91
- package/vue/chunks/UiEditorTableOverlay.js +29 -120
- package/vue/chunks/UiEditorTableToolbar.js +16 -111
- package/vue/chunks/UiEditorToolbar.js +1 -1
- package/vue/chunks/UiFloatingActionButton.js +1 -1
- package/vue/chunks/UiFormField.js +8 -73
- package/vue/chunks/UiGrid.js +1 -1
- package/vue/chunks/UiIcon.js +9 -78
- package/vue/chunks/UiIconButton.js +8 -73
- package/vue/chunks/UiInput.js +8 -73
- package/vue/chunks/UiMenu.js +25 -111
- package/vue/chunks/UiMenuItem.js +1 -1
- package/vue/chunks/UiPopover.js +18 -105
- package/vue/chunks/UiRadio.js +17 -95
- package/vue/chunks/UiRadioGroup.js +23 -105
- package/vue/chunks/UiReel.js +1 -1
- package/vue/chunks/UiSearchResultRow.js +1 -1
- package/vue/chunks/UiSearchShell.js +17 -94
- package/vue/chunks/UiSelect.js +8 -79
- package/vue/chunks/UiSeparator.js +1 -1
- package/vue/chunks/UiSidebar.js +23 -108
- package/vue/chunks/UiStack.js +1 -1
- package/vue/chunks/UiSwitch.js +17 -95
- package/vue/chunks/UiSwitcher.js +1 -1
- package/vue/chunks/UiTabs.js +22 -103
- package/vue/chunks/UiTextarea.js +8 -73
- package/vue/chunks/UiToastRegion.js +27 -112
- package/vue/chunks/UiTooltip.js +18 -106
- package/vue/chunks/UiTopBar.js +1 -1
- package/vue/chunks/UiTree.js +31 -109
- package/vue/chunks/UiTreeItem.js +29 -119
- package/vue/chunks/host.js +101 -0
- package/vue/components.css +844 -797
- package/vue/host.ts +154 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@threadlabs/looma",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Looma components as HTML, Vue, and plain DOM, with design tokens.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"./*.css"
|
|
78
78
|
],
|
|
79
79
|
"dependencies": {
|
|
80
|
-
"@nextwebwg/html-next": "^1.0.0-alpha.
|
|
80
|
+
"@nextwebwg/html-next": "^1.0.0-alpha.3",
|
|
81
81
|
"lowlight": "^3.3.0",
|
|
82
82
|
"markdown-it": "14.3.1",
|
|
83
83
|
"lucide": "~0.554.0"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
/* Generated by HTML Next 1.0.0-alpha.3. Do not edit. */
|
|
2
2
|
@scope ([data-component~="ui-avatar-group"]) to ([data-component], [data-slotted]) {
|
|
3
3
|
:scope {
|
|
4
4
|
/* Avatars separate with a tight, crisp edge, matching Looma's 1px borders rather than the
|
package/styles/ui-avatar.css
CHANGED
package/styles/ui-badge.css
CHANGED
package/styles/ui-button.css
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
/* Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
/* Generated by HTML Next 1.0.0-alpha.3. Do not edit. */
|
|
2
2
|
@scope ([data-component~="ui-button"]) to ([data-component], [data-slotted]) {
|
|
3
3
|
:scope {
|
|
4
|
+
--_hue: var(--ui-accent);
|
|
5
|
+
--_hue-hover: var(--ui-accent-hover);
|
|
6
|
+
--_hue-active: var(--ui-accent-active);
|
|
7
|
+
--_hue-text: var(--ui-accent-active);
|
|
8
|
+
--_on-hue: var(--ui-on-accent);
|
|
9
|
+
|
|
10
|
+
--_tone: var(--_hue);
|
|
11
|
+
--_tone-hover: var(--_hue-hover);
|
|
12
|
+
--_tone-active: var(--_hue-active);
|
|
13
|
+
--_tone-text: var(--_hue-text);
|
|
14
|
+
--_on-tone: var(--_on-hue);
|
|
15
|
+
|
|
4
16
|
display: inline-flex;
|
|
5
17
|
align-items: center;
|
|
6
18
|
justify-content: center;
|
|
7
19
|
vertical-align: middle;
|
|
8
|
-
color: var(--
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
:scope[data-ui-button-state~="variant=solid"] {
|
|
12
|
-
color: var(--ui-action-primary-text, var(--ui-text-on-accent));
|
|
20
|
+
color: var(--_tone-text);
|
|
13
21
|
}
|
|
14
22
|
|
|
15
23
|
:scope[data-ui-button-state~="align=start"] {
|
|
@@ -25,23 +33,24 @@
|
|
|
25
33
|
:scope {
|
|
26
34
|
appearance: none;
|
|
27
35
|
min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
|
|
28
|
-
border:
|
|
36
|
+
border-style: solid;
|
|
37
|
+
border-width: 1px;
|
|
38
|
+
border-color: var(--ui-button-border, var(--_tone));
|
|
29
39
|
border-radius: var(--ui-button-radius, var(--ui-radius-md));
|
|
30
|
-
background: var(--ui-button-surface, var(--
|
|
31
|
-
color: var(--ui-button-text, var(--
|
|
40
|
+
background-color: var(--ui-button-surface, oklch(from var(--_tone) l c h / 5%));
|
|
41
|
+
color: var(--ui-button-text, var(--_tone-text));
|
|
32
42
|
font: inherit;
|
|
33
43
|
font-weight: var(--ui-font-medium);
|
|
34
44
|
line-height: var(--ui-line-height-tight);
|
|
35
45
|
padding: var(--ui-space-2) var(--ui-space-3);
|
|
36
46
|
background-image: var(--ui-raised-highlight);
|
|
37
|
-
box-shadow: var(--ui-button-shadow, var(--ui-raised
|
|
47
|
+
box-shadow: var(--ui-button-shadow, var(--ui-raised));
|
|
38
48
|
cursor: pointer;
|
|
39
49
|
transition:
|
|
40
50
|
background-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
41
51
|
border-color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
42
52
|
color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
43
|
-
box-shadow var(--ui-motion-fast) var(--ui-motion-ease)
|
|
44
|
-
transform var(--ui-motion-fast) var(--ui-motion-ease);
|
|
53
|
+
box-shadow var(--ui-motion-fast) var(--ui-motion-ease);
|
|
45
54
|
margin: 0;
|
|
46
55
|
}
|
|
47
56
|
|
|
@@ -65,128 +74,141 @@
|
|
|
65
74
|
}
|
|
66
75
|
|
|
67
76
|
:scope:hover:enabled {
|
|
68
|
-
|
|
69
|
-
|
|
77
|
+
border-color: var(--ui-button-hover-border, var(--_tone-hover));
|
|
78
|
+
background-color: var(--ui-button-hover-surface, oklch(from var(--_tone) l c h / 12%));
|
|
70
79
|
}
|
|
71
80
|
|
|
81
|
+
/* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
|
|
72
82
|
:scope:active:enabled {
|
|
73
|
-
background: var(--ui-surface
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
:scope[data-ui-button-state~="variant=solid"] {
|
|
77
|
-
border-color: var(--ui-action-primary-surface, var(--ui-accent-solid));
|
|
78
|
-
background: var(--ui-action-primary-surface, var(--ui-accent-solid));
|
|
79
|
-
color: var(--ui-action-primary-text, var(--ui-text-on-accent));
|
|
80
|
-
box-shadow: var(--ui-button-solid-shadow, inset 0 1px rgb(255 255 255 / 0.16), var(--ui-shadow-xs));
|
|
83
|
+
background-color: var(--ui-button-active-surface, oklch(from var(--_tone) l c h / 18%));
|
|
84
|
+
background-image: none;
|
|
85
|
+
box-shadow: var(--ui-pressed);
|
|
81
86
|
}
|
|
82
87
|
|
|
83
|
-
:scope[data-ui-button-state~="variant=solid"]:
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
+
:scope[data-ui-button-state~="variant=solid"], :scope[data-ui-button-state~="variant=danger"] {
|
|
89
|
+
border-color: var(--_tone);
|
|
90
|
+
background-color: var(--_tone);
|
|
91
|
+
color: var(--_on-tone);
|
|
92
|
+
box-shadow: var(--ui-button-solid-shadow, var(--ui-raised));
|
|
88
93
|
}
|
|
89
94
|
|
|
90
|
-
:scope[data-ui-button-state~="variant=solid"]:
|
|
91
|
-
background: var(--
|
|
92
|
-
border-color: var(--
|
|
93
|
-
box-shadow: none;
|
|
94
|
-
transform: translateY(0);
|
|
95
|
+
:is(:scope[data-ui-button-state~="variant=solid"], :scope[data-ui-button-state~="variant=danger"]):hover:enabled {
|
|
96
|
+
background-color: var(--_tone-hover);
|
|
97
|
+
border-color: var(--_tone-hover);
|
|
95
98
|
}
|
|
96
99
|
|
|
97
|
-
:scope[data-ui-button-state~="variant=danger"] {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
box-shadow: var(--ui-
|
|
100
|
+
:is(:scope[data-ui-button-state~="variant=solid"], :scope[data-ui-button-state~="variant=danger"]):active:enabled {
|
|
101
|
+
background-color: var(--_tone-active);
|
|
102
|
+
border-color: var(--_tone-active);
|
|
103
|
+
background-image: none;
|
|
104
|
+
box-shadow: var(--ui-pressed);
|
|
102
105
|
}
|
|
103
106
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
/* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
|
|
108
|
+
destructive secondary action, not a special case. */
|
|
109
|
+
:scope[data-ui-button-state~="tone=neutral"] {
|
|
110
|
+
--_hue: var(--ui-text);
|
|
111
|
+
--_hue-hover: var(--ui-text);
|
|
112
|
+
--_hue-active: var(--ui-text);
|
|
113
|
+
--_hue-text: var(--ui-text);
|
|
114
|
+
--_on-hue: var(--ui-surface);
|
|
109
115
|
}
|
|
110
116
|
|
|
111
|
-
:scope[data-ui-button-state~="variant=danger"]
|
|
112
|
-
|
|
113
|
-
|
|
117
|
+
:scope[data-ui-button-state~="tone=danger"], :scope[data-ui-button-state~="variant=danger"] {
|
|
118
|
+
--_hue: var(--ui-danger);
|
|
119
|
+
--_hue-hover: var(--ui-danger-hover);
|
|
120
|
+
--_hue-active: var(--ui-danger-hover);
|
|
121
|
+
--_hue-text: var(--ui-danger-hover);
|
|
122
|
+
--_on-hue: var(--ui-on-danger);
|
|
114
123
|
}
|
|
115
124
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
125
|
+
:scope[data-ui-button-state~="tone=success"] {
|
|
126
|
+
--_hue: var(--ui-success);
|
|
127
|
+
--_hue-hover: color-mix(in srgb, var(--ui-success) 85%, #000);
|
|
128
|
+
--_hue-active: color-mix(in srgb, var(--ui-success) 75%, #000);
|
|
129
|
+
--_hue-text: color-mix(in srgb, var(--ui-success) 85%, #000);
|
|
130
|
+
--_on-hue: var(--ui-surface);
|
|
122
131
|
}
|
|
123
132
|
|
|
124
|
-
:scope[data-ui-button-state~="tone=
|
|
125
|
-
|
|
126
|
-
|
|
133
|
+
:scope[data-ui-button-state~="tone=warning"] {
|
|
134
|
+
--_hue: var(--ui-warning);
|
|
135
|
+
--_hue-hover: color-mix(in srgb, var(--ui-warning) 85%, #000);
|
|
136
|
+
--_hue-active: color-mix(in srgb, var(--ui-warning) 75%, #000);
|
|
137
|
+
--_hue-text: color-mix(in srgb, var(--ui-warning) 85%, #000);
|
|
138
|
+
--_on-hue: var(--ui-surface);
|
|
127
139
|
}
|
|
128
140
|
|
|
129
|
-
:scope[data-ui-button-state~="tone=
|
|
130
|
-
|
|
141
|
+
:scope[data-ui-button-state~="tone=info"] {
|
|
142
|
+
--_hue: var(--ui-info);
|
|
143
|
+
--_hue-hover: color-mix(in srgb, var(--ui-info) 85%, #000);
|
|
144
|
+
--_hue-active: color-mix(in srgb, var(--ui-info) 75%, #000);
|
|
145
|
+
--_hue-text: color-mix(in srgb, var(--ui-info) 85%, #000);
|
|
146
|
+
--_on-hue: var(--ui-surface);
|
|
131
147
|
}
|
|
132
148
|
|
|
133
149
|
:scope[data-ui-button-state~="variant=ghost"] {
|
|
134
150
|
border-color: transparent;
|
|
135
151
|
background: transparent;
|
|
136
152
|
box-shadow: none;
|
|
137
|
-
color: var(--ui-button-ghost-text, var(--
|
|
153
|
+
color: var(--ui-button-ghost-text, var(--_tone-text));
|
|
138
154
|
}
|
|
139
155
|
|
|
140
156
|
/* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
|
|
141
157
|
:scope[data-ui-button-state~="variant=ghost"]:hover:enabled {
|
|
142
|
-
background: var(--ui-button-ghost-hover-surface,
|
|
158
|
+
background-color: var(--ui-button-ghost-hover-surface, oklch(from var(--_tone) l c h / 10%));
|
|
143
159
|
border-color: transparent;
|
|
144
160
|
}
|
|
145
161
|
|
|
146
162
|
:scope[data-ui-button-state~="variant=ghost"]:active:enabled {
|
|
147
|
-
background: var(--ui-button-ghost-active-surface,
|
|
163
|
+
background-color: var(--ui-button-ghost-active-surface, oklch(from var(--_tone) l c h / 16%));
|
|
148
164
|
border-color: transparent;
|
|
165
|
+
box-shadow: var(--ui-pressed);
|
|
149
166
|
}
|
|
150
167
|
|
|
151
168
|
/* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
|
|
152
169
|
:scope:focus-visible {
|
|
153
170
|
outline: none;
|
|
154
171
|
box-shadow:
|
|
155
|
-
var(--ui-button-shadow, var(--ui-raised
|
|
172
|
+
var(--ui-button-shadow, var(--ui-raised)),
|
|
156
173
|
var(--ui-focus-halo);
|
|
157
174
|
}
|
|
158
175
|
|
|
159
176
|
:scope[data-ui-button-state~="variant=solid"]:focus-visible {
|
|
160
177
|
box-shadow:
|
|
161
|
-
var(--ui-button-solid-shadow,
|
|
178
|
+
var(--ui-button-solid-shadow, var(--ui-raised)),
|
|
162
179
|
var(--ui-focus-halo);
|
|
163
180
|
}
|
|
164
181
|
|
|
165
|
-
/* Disabled
|
|
182
|
+
/* Disabled drops the tone rather than the shape: every variant keeps its own structure, so a
|
|
183
|
+
disabled outline is still an outline and a disabled ghost is still text. Intent goes — an
|
|
184
|
+
unavailable action says "unavailable", not "unavailable, and destructive" — and so do the
|
|
185
|
+
highlight and shadow, because nothing that cannot be pressed should look raised. */
|
|
166
186
|
:scope:disabled {
|
|
187
|
+
/* Derived from the tone itself, not from a separate disabled palette: faded toward the
|
|
188
|
+
page, which desaturates it at the same time. Toward the page rather than toward white,
|
|
189
|
+
so a dark theme dims where a light one lightens — the same rule, both schemes. */
|
|
190
|
+
--_tone: color-mix(in oklab, var(--_hue) 58%, var(--ui-surface));
|
|
191
|
+
--_tone-hover: var(--_tone);
|
|
192
|
+
--_tone-active: var(--_tone);
|
|
193
|
+
--_tone-text: color-mix(in oklab, var(--_hue-text) 72%, var(--ui-surface));
|
|
194
|
+
--_on-tone: var(--_tone-text);
|
|
195
|
+
|
|
167
196
|
opacity: var(--ui-button-disabled-opacity, 1);
|
|
168
197
|
cursor: not-allowed;
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
color: var(--ui-button-disabled-text, var(--ui-disabled-text));
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
:scope[data-ui-button-state~="variant=solid"]:disabled {
|
|
175
|
-
border-color: var(--ui-button-disabled-border, var(--ui-border));
|
|
176
|
-
background-color: var(--ui-button-disabled-surface, var(--ui-disabled-surface));
|
|
177
|
-
color: var(--ui-button-disabled-text, var(--ui-disabled-text));
|
|
198
|
+
background-image: none;
|
|
199
|
+
box-shadow: none;
|
|
178
200
|
}
|
|
179
201
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
color: var(--ui-button-disabled-text, var(--ui-disabled-text));
|
|
202
|
+
/* A filled button keeps its fill, faded further so its text stays legible on it. */
|
|
203
|
+
:is(:scope[data-ui-button-state~="variant=solid"], :scope[data-ui-button-state~="variant=danger"]):disabled {
|
|
204
|
+
--_tone: color-mix(in oklab, var(--_hue) 34%, var(--ui-surface));
|
|
184
205
|
}
|
|
185
206
|
|
|
207
|
+
/* Ghost has no hover to fall back on, so disabled is the one state it has to state outright:
|
|
208
|
+
it takes a surface, light and tinted, rather than reading as plain text. */
|
|
186
209
|
:scope[data-ui-button-state~="variant=ghost"]:disabled {
|
|
187
|
-
background:
|
|
210
|
+
background-color: color-mix(in oklab, var(--_hue) 28%, var(--ui-surface));
|
|
188
211
|
border-color: transparent;
|
|
189
|
-
color: var(--ui-button-disabled-text, var(--ui-disabled-text));
|
|
190
212
|
}
|
|
191
213
|
|
|
192
214
|
@media (pointer: coarse) {
|
|
@@ -248,14 +270,24 @@
|
|
|
248
270
|
@supports (text-box-trim: trim-both) {
|
|
249
271
|
}
|
|
250
272
|
|
|
251
|
-
/*
|
|
252
|
-
|
|
273
|
+
/* Pressed reads as pressed in: the highlight goes, and the shadow moves inside. */
|
|
274
|
+
|
|
275
|
+
/* Tone is the colour, variant is the volume. Every pairing works: a danger outline is a
|
|
276
|
+
destructive secondary action, not a special case. */
|
|
253
277
|
|
|
254
278
|
/* Tints derive from the text colour, not a surface token, so hover and press show on any background. */
|
|
255
279
|
|
|
256
280
|
/* A soft halo that transitions in with the other box-shadow changes, layered on the raised shadow. */
|
|
257
281
|
|
|
258
|
-
/* Disabled
|
|
282
|
+
/* Disabled drops the tone rather than the shape: every variant keeps its own structure, so a
|
|
283
|
+
disabled outline is still an outline and a disabled ghost is still text. Intent goes — an
|
|
284
|
+
unavailable action says "unavailable", not "unavailable, and destructive" — and so do the
|
|
285
|
+
highlight and shadow, because nothing that cannot be pressed should look raised. */
|
|
286
|
+
|
|
287
|
+
/* A filled button keeps its fill, faded further so its text stays legible on it. */
|
|
288
|
+
|
|
289
|
+
/* Ghost has no hover to fall back on, so disabled is the one state it has to state outright:
|
|
290
|
+
it takes a surface, light and tinted, rather than reading as plain text. */
|
|
259
291
|
|
|
260
292
|
@media (pointer: coarse) {
|
|
261
293
|
}
|
package/styles/ui-callout.css
CHANGED
package/styles/ui-checkbox.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
/* Generated by HTML Next 1.0.0-alpha.3. Do not edit. */
|
|
2
2
|
@scope ([data-component~="ui-checkbox"]) to ([data-component], [data-slotted]) {
|
|
3
3
|
:scope {
|
|
4
4
|
display: inline-flex;
|
|
@@ -52,7 +52,10 @@
|
|
|
52
52
|
margin: auto;
|
|
53
53
|
inline-size: 0.32rem;
|
|
54
54
|
block-size: 0.58rem;
|
|
55
|
-
border: solid var(
|
|
55
|
+
/* Longhands, not `border: solid var(...)`: lowering drops a shorthand that omits a
|
|
56
|
+
component, which left the tick with no style and no colour. */
|
|
57
|
+
border-style: solid;
|
|
58
|
+
border-color: var(--ui-text-on-accent);
|
|
56
59
|
border-width: 0 0.125rem 0.125rem 0;
|
|
57
60
|
opacity: 1;
|
|
58
61
|
transform: translateY(-0.11rem) rotate(45deg);
|
package/styles/ui-cluster.css
CHANGED
package/styles/ui-combobox.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
/* Generated by HTML Next 1.0.0-alpha.3. Do not edit. */
|
|
2
2
|
@scope ([data-component~="ui-combobox"]) to ([data-component], [data-slotted]) {
|
|
3
3
|
:scope {
|
|
4
4
|
display: grid;
|
|
@@ -208,6 +208,39 @@
|
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
+
/* Multiple mode: every option carries a checkbox, so a list that takes several answers says so
|
|
212
|
+
before anything is picked. aria-selected is the state; this draws it.
|
|
213
|
+
Longhands, not shorthands: lowering drops a shorthand that omits a component. */
|
|
214
|
+
:scope[data-ui-combobox-state~="multiple"] .option {
|
|
215
|
+
display: flex;
|
|
216
|
+
gap: var(--ui-space-2);
|
|
217
|
+
align-items: center;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
:scope[data-ui-combobox-state~="multiple"] .option::before {
|
|
221
|
+
content: "";
|
|
222
|
+
flex: none;
|
|
223
|
+
inline-size: 1.125rem;
|
|
224
|
+
block-size: 1.125rem;
|
|
225
|
+
border-style: solid;
|
|
226
|
+
border-width: 1px;
|
|
227
|
+
border-color: var(--ui-control-border-hover, var(--ui-border-strong));
|
|
228
|
+
border-radius: var(--ui-radius-sm);
|
|
229
|
+
background-color: var(--ui-control-surface, var(--ui-surface-default));
|
|
230
|
+
background-repeat: no-repeat;
|
|
231
|
+
background-position: center;
|
|
232
|
+
background-size: 0.7rem;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
:scope[data-ui-combobox-state~="multiple"] .option[aria-selected="true"]::before {
|
|
236
|
+
border-color: var(--ui-accent-solid);
|
|
237
|
+
background-color: var(--ui-accent-solid);
|
|
238
|
+
background-image: var(
|
|
239
|
+
--ui-combobox-option-check,
|
|
240
|
+
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 5 5 9-9'/%3E%3C/svg%3E")
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
211
244
|
/* Multiple mode: chips wrap before the cursor on one flexible field line. */
|
|
212
245
|
:scope[data-ui-combobox-state~="multiple"] .field {
|
|
213
246
|
flex-wrap: wrap;
|
|
@@ -258,6 +291,10 @@
|
|
|
258
291
|
@media (forced-colors: active) {
|
|
259
292
|
}
|
|
260
293
|
|
|
294
|
+
/* Multiple mode: every option carries a checkbox, so a list that takes several answers says so
|
|
295
|
+
before anything is picked. aria-selected is the state; this draws it.
|
|
296
|
+
Longhands, not shorthands: lowering drops a shorthand that omits a component. */
|
|
297
|
+
|
|
261
298
|
/* Multiple mode: chips wrap before the cursor on one flexible field line. */
|
|
262
299
|
|
|
263
300
|
/* A component that sets its display still honours the hidden attribute on its root. */
|
package/styles/ui-container.css
CHANGED
package/styles/ui-dialog.css
CHANGED
package/styles/ui-disclosure.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
/* Generated by HTML Next 1.0.0-alpha.3. Do not edit. */
|
|
2
2
|
@scope ([data-component~="ui-disclosure"]) to ([data-component], [data-slotted]) {
|
|
3
3
|
/* Density resolves into the summary row's own values; the public tokens still override them. */
|
|
4
4
|
:scope {
|
package/styles/ui-editable.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
/* Generated by HTML Next 1.0.0-alpha.3. Do not edit. */
|
|
2
2
|
@scope ([data-component~="ui-editor-table-toolbar"]) to ([data-component], [data-slotted]) {
|
|
3
3
|
.looma-editor__mobile-toolbar-shell :scope {
|
|
4
4
|
min-width: max-content;
|
package/styles/ui-form-field.css
CHANGED
package/styles/ui-grid.css
CHANGED
package/styles/ui-icon.css
CHANGED
package/styles/ui-input.css
CHANGED
package/styles/ui-menu-item.css
CHANGED
package/styles/ui-menu.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* Generated by HTML Next 1.0.0-alpha.
|
|
1
|
+
/* Generated by HTML Next 1.0.0-alpha.3. Do not edit. */
|
|
2
2
|
@scope ([data-component~="ui-menu"]) to ([data-component], [data-slotted]) {
|
|
3
3
|
/* Compact sets the part tokens its items read, so nothing has to rescale a global. */
|
|
4
4
|
:scope[data-ui-menu-state~="density=compact"] {
|
package/styles/ui-popover.css
CHANGED
package/styles/ui-radio.css
CHANGED
package/styles/ui-reel.css
CHANGED