@threadlabs/looma 0.39.0 → 0.39.2
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 +24 -3
- package/components/ui-checkbox/ui-checkbox.html +34 -18
- package/components/ui-light-editor/ui-light-editor.html +26 -25
- package/components/ui-skeleton/ui-skeleton.html +36 -7
- package/components/ui-skeleton/ui-skeleton.js +46 -0
- package/dist/index.js +13 -12
- package/docs/README.md +17 -6
- package/docs/catalog.json +10 -10
- package/docs/customizer-render.mjs +37 -33
- package/docs/customizer.js +82 -47
- package/docs/site.mjs +1 -1
- package/docs/theme-session.mjs +7 -8
- package/docs/theme.mjs +2 -20
- package/package.json +1 -1
- package/styles/ui-button.css +24 -1
- package/styles/ui-checkbox.css +39 -19
- package/styles/ui-light-editor.css +111 -0
- package/styles/ui-skeleton.css +30 -5
- package/tokens.css +9 -2
- package/vanilla/UiButton.js +14 -12
- package/vanilla/UiLightEditor.js +2 -2
- package/vanilla/UiSkeleton.js +5 -3
- package/vue/UiButton.vue +28 -7
- package/vue/UiCheckbox.vue +34 -19
- package/vue/UiLightEditor.vue +156 -40
- package/vue/UiSkeleton.vue +71 -10
- package/vue/chunks/UiButton.js +18 -10
- package/vue/chunks/UiCheckbox.js +1 -1
- package/vue/chunks/UiLightEditor.js +66 -58
- package/vue/chunks/UiSkeleton.js +41 -9
- package/vue/components.css +262 -46
- package/vue/editor/index.js +46 -36
package/vue/components.css
CHANGED
|
@@ -1115,6 +1115,8 @@ svg,.arc {
|
|
|
1115
1115
|
/* A count is an adornment, not another line of label text. Keep the standard control height
|
|
1116
1116
|
with enough inset for a 24px mark; large content can still grow the button naturally. */
|
|
1117
1117
|
|
|
1118
|
+
/* Trim the text line itself: an anonymous flex item retains font-metric space in some fonts. */
|
|
1119
|
+
|
|
1118
1120
|
/* Short numeric and icon actions share a minimum box; large values remain readable. */
|
|
1119
1121
|
|
|
1120
1122
|
/* Card actions inherit Button's palette and behavior; only their shared layout changes.
|
|
@@ -1204,6 +1206,7 @@ svg,.arc {
|
|
|
1204
1206
|
}
|
|
1205
1207
|
:scope:where([data-hn-ui-button]) {
|
|
1206
1208
|
--_button-square-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
|
|
1209
|
+
box-sizing: border-box !important;
|
|
1207
1210
|
appearance: none;
|
|
1208
1211
|
min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
|
|
1209
1212
|
border-style: solid;
|
|
@@ -1244,6 +1247,18 @@ svg,.arc {
|
|
|
1244
1247
|
:scope:not([data-appearance="link"]):has(.badge:not(:empty)):where([data-hn-ui-button]) {
|
|
1245
1248
|
padding-block: var(--ui-space-0-5) !important;
|
|
1246
1249
|
}
|
|
1250
|
+
.label:where([data-hn-ui-button]) {
|
|
1251
|
+
display: block !important;
|
|
1252
|
+
align-content: center !important;
|
|
1253
|
+
min-inline-size: 0 !important;
|
|
1254
|
+
min-block-size: 1lh !important;
|
|
1255
|
+
}
|
|
1256
|
+
.label:has(svg):where([data-hn-ui-button]) {
|
|
1257
|
+
display: inline-flex !important;
|
|
1258
|
+
align-items: center !important;
|
|
1259
|
+
gap: var(--ui-space-2) !important;
|
|
1260
|
+
text-box-trim: none;
|
|
1261
|
+
}
|
|
1247
1262
|
.badge:where([data-hn-ui-button]) {
|
|
1248
1263
|
display: inline-flex !important;
|
|
1249
1264
|
align-items: center !important;
|
|
@@ -1253,7 +1268,7 @@ svg,.arc {
|
|
|
1253
1268
|
display: none !important;
|
|
1254
1269
|
}
|
|
1255
1270
|
@supports (text-box-trim: trim-both) {
|
|
1256
|
-
:
|
|
1271
|
+
.label:not(:has(svg)):where([data-hn-ui-button]) {
|
|
1257
1272
|
text-box-trim: trim-both;
|
|
1258
1273
|
text-box-edge: cap alphabetic;
|
|
1259
1274
|
}
|
|
@@ -1545,6 +1560,10 @@ html[data-ui-input-modality="touch"]
|
|
|
1545
1560
|
color var(--ui-motion-fast) var(--ui-motion-ease),
|
|
1546
1561
|
text-decoration-color var(--ui-motion-fast) var(--ui-motion-ease);
|
|
1547
1562
|
}
|
|
1563
|
+
:scope[data-appearance="link"] .label:where([data-hn-ui-button]) {
|
|
1564
|
+
display: inline !important;
|
|
1565
|
+
text-box-trim: none;
|
|
1566
|
+
}
|
|
1548
1567
|
:scope[data-appearance="link"]:hover:not(:disabled, [aria-disabled="true"]):where([data-hn-ui-button]) {
|
|
1549
1568
|
color: var(--ui-button-link-hover-text, var(--ui-text-primary));
|
|
1550
1569
|
text-decoration-color: currentColor;
|
|
@@ -1908,19 +1927,20 @@ html[data-ui-input-modality="touch"]
|
|
|
1908
1927
|
|
|
1909
1928
|
/* The label, and under it an optional line saying what the choice means. */
|
|
1910
1929
|
|
|
1911
|
-
/*
|
|
1912
|
-
|
|
1930
|
+
/* The SVG's painted bounds are centred in its viewBox, including its round stroke.
|
|
1931
|
+
Centre that box directly; rotated border boxes do not centre the visible check. */
|
|
1932
|
+
@keyframes ui-checkbox-check-570a9f0b {
|
|
1913
1933
|
from {
|
|
1914
1934
|
opacity: 0;
|
|
1915
|
-
|
|
1935
|
+
scale: 0.55;
|
|
1916
1936
|
}
|
|
1917
1937
|
65% {
|
|
1918
1938
|
opacity: 1;
|
|
1919
|
-
|
|
1939
|
+
scale: 1.12;
|
|
1920
1940
|
}
|
|
1921
1941
|
to {
|
|
1922
1942
|
opacity: 1;
|
|
1923
|
-
|
|
1943
|
+
scale: 1;
|
|
1924
1944
|
}
|
|
1925
1945
|
}
|
|
1926
1946
|
|
|
@@ -2008,7 +2028,8 @@ input:where([data-hn-ui-checkbox]) {
|
|
|
2008
2028
|
}
|
|
2009
2029
|
input:where([data-hn-ui-checkbox])::after {
|
|
2010
2030
|
content: "";
|
|
2011
|
-
position: absolute;
|
|
2031
|
+
position: absolute !important;
|
|
2032
|
+
transform: none !important;
|
|
2012
2033
|
opacity: 0;
|
|
2013
2034
|
transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
|
|
2014
2035
|
}
|
|
@@ -2019,27 +2040,26 @@ input:checked:where([data-hn-ui-checkbox]),input:indeterminate:where([data-hn-ui
|
|
|
2019
2040
|
box-shadow: var(--ui-control-inset);
|
|
2020
2041
|
}
|
|
2021
2042
|
input:checked:where([data-hn-ui-checkbox])::after {
|
|
2022
|
-
inset:
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
border-style: solid;
|
|
2029
|
-
border-color: var(--ui-text-on-accent);
|
|
2030
|
-
border-width: 0 calc(var(--_ui-checkbox-size) * 0.125 / 1.125)
|
|
2031
|
-
calc(var(--_ui-checkbox-size) * 0.125 / 1.125) 0;
|
|
2043
|
+
inset: 50% auto auto 50% !important;
|
|
2044
|
+
inline-size: calc(var(--_ui-checkbox-size) * 0.7) !important;
|
|
2045
|
+
block-size: calc(var(--_ui-checkbox-size) * 0.7) !important;
|
|
2046
|
+
background: var(--ui-text-on-accent);
|
|
2047
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 11.5 5 5 9-9'/%3E%3C/svg%3E")
|
|
2048
|
+
center / contain no-repeat;
|
|
2032
2049
|
opacity: 1;
|
|
2033
|
-
|
|
2034
|
-
animation: ui-checkbox-check-
|
|
2050
|
+
translate: -50% -50% !important;
|
|
2051
|
+
animation: ui-checkbox-check-570a9f0b var(--ui-motion-base) var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
|
|
2035
2052
|
}
|
|
2036
2053
|
input:indeterminate:where([data-hn-ui-checkbox])::after {
|
|
2037
|
-
|
|
2038
|
-
|
|
2054
|
+
mask: none;
|
|
2055
|
+
animation: none;
|
|
2056
|
+
inset: 50% calc(var(--_ui-checkbox-size) * 0.23 / 1.125) auto !important;
|
|
2057
|
+
inline-size: auto !important;
|
|
2058
|
+
block-size: calc(var(--_ui-checkbox-size) * 0.125 / 1.125) !important;
|
|
2039
2059
|
border-radius: var(--ui-radius-round);
|
|
2040
2060
|
background: var(--ui-text-on-accent);
|
|
2041
2061
|
opacity: 1;
|
|
2042
|
-
|
|
2062
|
+
translate: 0 -50% !important;
|
|
2043
2063
|
}
|
|
2044
2064
|
@media (prefers-reduced-motion: reduce) {
|
|
2045
2065
|
input:where([data-hn-ui-checkbox])::after {
|
|
@@ -2047,6 +2067,17 @@ input:where([data-hn-ui-checkbox])::after {
|
|
|
2047
2067
|
animation: none;
|
|
2048
2068
|
}
|
|
2049
2069
|
}
|
|
2070
|
+
@media (forced-colors: active) {
|
|
2071
|
+
input:checked:where([data-hn-ui-checkbox]),input:indeterminate:where([data-hn-ui-checkbox]) {
|
|
2072
|
+
forced-color-adjust: none;
|
|
2073
|
+
background: Highlight;
|
|
2074
|
+
border-color: Highlight;
|
|
2075
|
+
}
|
|
2076
|
+
input:checked:where([data-hn-ui-checkbox])::after,input:indeterminate:where([data-hn-ui-checkbox])::after {
|
|
2077
|
+
forced-color-adjust: none;
|
|
2078
|
+
background: HighlightText;
|
|
2079
|
+
}
|
|
2080
|
+
}
|
|
2050
2081
|
input:hover:enabled:where([data-hn-ui-checkbox]) {
|
|
2051
2082
|
border-color: var(--ui-accent-solid);
|
|
2052
2083
|
}
|
|
@@ -8746,6 +8777,122 @@ path:where([data-hn-ui-light-editor]) {
|
|
|
8746
8777
|
}
|
|
8747
8778
|
}
|
|
8748
8779
|
}
|
|
8780
|
+
@scope ([data-slotted~="ui-light-editor"]:not([data-hn])) to ([data-hn], [data-slotted]) {
|
|
8781
|
+
:where(.ui-light-editor):where(:scope, :not([data-hn], [data-slotted]:not([data-slotted~="ui-light-editor"]))):where([data-hn-ui-light-editor]) {
|
|
8782
|
+
display: grid !important;
|
|
8783
|
+
gap: var(--ui-space-3) !important;
|
|
8784
|
+
min-inline-size: 0;
|
|
8785
|
+
padding: 0 !important;
|
|
8786
|
+
margin: 0 !important;
|
|
8787
|
+
}
|
|
8788
|
+
.stage:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8789
|
+
box-sizing: border-box !important;
|
|
8790
|
+
display: block !important;
|
|
8791
|
+
block-size: 13rem;
|
|
8792
|
+
padding: calc(var(--ui-control-min-block-size) / 2) !important;
|
|
8793
|
+
border: var(--ui-border-width) solid var(--ui-control-border);
|
|
8794
|
+
border-radius: var(--ui-field-radius, var(--ui-radius-md));
|
|
8795
|
+
background: var(--ui-neutral-surface, var(--ui-surface));
|
|
8796
|
+
}
|
|
8797
|
+
.plane:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8798
|
+
position: relative;
|
|
8799
|
+
display: block !important;
|
|
8800
|
+
inline-size: 100%;
|
|
8801
|
+
block-size: 100%;
|
|
8802
|
+
}
|
|
8803
|
+
svg:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8804
|
+
inline-size: 100%;
|
|
8805
|
+
block-size: 100%;
|
|
8806
|
+
overflow: visible;
|
|
8807
|
+
}
|
|
8808
|
+
path:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8809
|
+
fill: none;
|
|
8810
|
+
stroke: var(--ui-border);
|
|
8811
|
+
stroke-width: 1;
|
|
8812
|
+
vector-effect: non-scaling-stroke;
|
|
8813
|
+
}
|
|
8814
|
+
.specimen:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8815
|
+
position: absolute;
|
|
8816
|
+
inset: 0;
|
|
8817
|
+
display: grid !important;
|
|
8818
|
+
place-items: center !important;
|
|
8819
|
+
}
|
|
8820
|
+
.source:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8821
|
+
position: absolute;
|
|
8822
|
+
left: 50%;
|
|
8823
|
+
top: 0;
|
|
8824
|
+
translate: -50% -50%;
|
|
8825
|
+
display: grid !important;
|
|
8826
|
+
place-items: center !important;
|
|
8827
|
+
inline-size: max(2rem, var(--ui-control-min-block-size));
|
|
8828
|
+
block-size: max(2rem, var(--ui-control-min-block-size));
|
|
8829
|
+
padding: 0 !important;
|
|
8830
|
+
margin: 0 !important;
|
|
8831
|
+
border: 0;
|
|
8832
|
+
border-radius: 50%;
|
|
8833
|
+
background: transparent;
|
|
8834
|
+
cursor: grab;
|
|
8835
|
+
touch-action: none;
|
|
8836
|
+
}
|
|
8837
|
+
.source-glyph:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8838
|
+
position: relative;
|
|
8839
|
+
z-index: 1;
|
|
8840
|
+
display: inline-flex !important;
|
|
8841
|
+
color: var(--ui-accent);
|
|
8842
|
+
font-size: var(--ui-font-size-lg);
|
|
8843
|
+
}
|
|
8844
|
+
.source:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-light-editor"]))):where(:scope, :scope
|
|
8845
|
+
*):where([data-hn-ui-light-editor])::after {
|
|
8846
|
+
content: "";
|
|
8847
|
+
position: absolute;
|
|
8848
|
+
inline-size: 2rem;
|
|
8849
|
+
block-size: 2rem;
|
|
8850
|
+
border: var(--ui-border-width) solid var(--ui-accent);
|
|
8851
|
+
border-radius: 50%;
|
|
8852
|
+
background: var(--ui-surface-raised);
|
|
8853
|
+
box-shadow:
|
|
8854
|
+
0 0 0 var(--ui-space-2) color-mix(in srgb, var(--ui-accent) 12%, transparent),
|
|
8855
|
+
var(--ui-shadow-sm);
|
|
8856
|
+
}
|
|
8857
|
+
.source:active:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8858
|
+
cursor: grabbing;
|
|
8859
|
+
}
|
|
8860
|
+
.source:focus-visible:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8861
|
+
outline: var(--ui-focus-width) solid var(--ui-focus-ring);
|
|
8862
|
+
outline-offset: var(--ui-space-1);
|
|
8863
|
+
}
|
|
8864
|
+
.source:disabled:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8865
|
+
cursor: not-allowed;
|
|
8866
|
+
}
|
|
8867
|
+
.source:disabled:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-light-editor"]))):where(:scope, :scope
|
|
8868
|
+
*):where([data-hn-ui-light-editor])::after {
|
|
8869
|
+
background: var(--ui-disabled-surface);
|
|
8870
|
+
border-color: var(--ui-disabled-border);
|
|
8871
|
+
box-shadow: none;
|
|
8872
|
+
}
|
|
8873
|
+
.coordinates:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8874
|
+
display: grid !important;
|
|
8875
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
|
8876
|
+
gap: var(--ui-space-2) !important;
|
|
8877
|
+
}
|
|
8878
|
+
.hint:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8879
|
+
font-size: var(--ui-font-size-sm);
|
|
8880
|
+
color: var(--ui-text-secondary);
|
|
8881
|
+
}
|
|
8882
|
+
@media (forced-colors: active) {
|
|
8883
|
+
.source-glyph:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8884
|
+
color: CanvasText;
|
|
8885
|
+
}
|
|
8886
|
+
.source:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-light-editor"]))):where(:scope, :scope
|
|
8887
|
+
*):where([data-hn-ui-light-editor])::after {
|
|
8888
|
+
background: Canvas;
|
|
8889
|
+
border-color: CanvasText;
|
|
8890
|
+
}
|
|
8891
|
+
.source:focus-visible:where(:scope, :scope *):where([data-hn-ui-light-editor]) {
|
|
8892
|
+
outline-color: Highlight;
|
|
8893
|
+
}
|
|
8894
|
+
}
|
|
8895
|
+
}
|
|
8749
8896
|
|
|
8750
8897
|
/* This component's hooks style the element they are set on, and never a nested one. */
|
|
8751
8898
|
@property --ui-list-gap {
|
|
@@ -10486,13 +10633,26 @@ dialog:where([data-hn-ui-search-shell]) {
|
|
|
10486
10633
|
syntax: "*";
|
|
10487
10634
|
inherits: false;
|
|
10488
10635
|
}
|
|
10489
|
-
@
|
|
10490
|
-
|
|
10491
|
-
|
|
10636
|
+
@property --_ui-skeleton-viewport-x {
|
|
10637
|
+
syntax: "<length>";
|
|
10638
|
+
inherits: false;
|
|
10639
|
+
initial-value: 0px;
|
|
10640
|
+
}
|
|
10641
|
+
@property --_ui-skeleton-viewport-scale {
|
|
10642
|
+
syntax: "<number>";
|
|
10643
|
+
inherits: false;
|
|
10644
|
+
initial-value: 1;
|
|
10645
|
+
}
|
|
10646
|
+
@keyframes ui-skeleton-shimmer-908ae327 {
|
|
10647
|
+
to {
|
|
10648
|
+
background-position: calc(100vw / var(--_ui-skeleton-paint-scale) - var(--_ui-skeleton-paint-x))
|
|
10649
|
+
0;
|
|
10492
10650
|
}
|
|
10493
10651
|
}
|
|
10494
10652
|
@scope (.ui-skeleton) to ([data-hn]) {
|
|
10495
10653
|
:scope {
|
|
10654
|
+
--_ui-skeleton-paint-x: var(--_ui-skeleton-viewport-x);
|
|
10655
|
+
--_ui-skeleton-paint-scale: var(--_ui-skeleton-viewport-scale);
|
|
10496
10656
|
display: block !important;
|
|
10497
10657
|
position: relative;
|
|
10498
10658
|
box-sizing: border-box !important;
|
|
@@ -10529,18 +10689,31 @@ dialog:where([data-hn-ui-search-shell]) {
|
|
|
10529
10689
|
border-radius: var(--ui-radius-md);
|
|
10530
10690
|
}
|
|
10531
10691
|
:scope[data-ui-skeleton-state~="animated"]::before {
|
|
10532
|
-
|
|
10692
|
+
background-image: linear-gradient(
|
|
10693
|
+
90deg,
|
|
10694
|
+
transparent,
|
|
10695
|
+
light-dark(rgb(255 255 255 / 0.6), rgb(255 255 255 / 0.14)) 50%,
|
|
10696
|
+
transparent
|
|
10697
|
+
);
|
|
10698
|
+
background-size: calc(100vw / var(--_ui-skeleton-paint-scale)) 100%;
|
|
10699
|
+
background-position: calc(0vw - var(--_ui-skeleton-paint-x)) 0;
|
|
10700
|
+
background-repeat: repeat-x;
|
|
10701
|
+
animation: ui-skeleton-shimmer-908ae327 3s linear infinite;
|
|
10533
10702
|
}
|
|
10534
10703
|
@media (prefers-reduced-motion: reduce) {
|
|
10535
10704
|
:scope[data-ui-skeleton-state~="animated"]::before {
|
|
10536
10705
|
animation: none;
|
|
10706
|
+
background-image: none;
|
|
10537
10707
|
}
|
|
10538
10708
|
}
|
|
10539
10709
|
@media (forced-colors: active) {
|
|
10540
10710
|
:scope::before {
|
|
10541
10711
|
background: CanvasText;
|
|
10542
10712
|
opacity: 0.2;
|
|
10713
|
+
}
|
|
10714
|
+
:scope[data-ui-skeleton-state~="animated"]::before {
|
|
10543
10715
|
animation: none;
|
|
10716
|
+
background-image: none;
|
|
10544
10717
|
}
|
|
10545
10718
|
}
|
|
10546
10719
|
:scope[hidden] {
|
|
@@ -13688,6 +13861,7 @@ html[data-ui-input-modality="touch"]
|
|
|
13688
13861
|
|
|
13689
13862
|
:scope:where([data-component~="ui-button"]) {
|
|
13690
13863
|
--_button-square-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
|
|
13864
|
+
box-sizing: border-box !important;
|
|
13691
13865
|
appearance: none;
|
|
13692
13866
|
min-block-size: var(--ui-button-min-block-size, var(--ui-control-size-md));
|
|
13693
13867
|
border-style: solid;
|
|
@@ -13734,6 +13908,21 @@ html[data-ui-input-modality="touch"]
|
|
|
13734
13908
|
padding-block: var(--ui-space-0-5) !important;
|
|
13735
13909
|
}
|
|
13736
13910
|
|
|
13911
|
+
/* Trim the text line itself: an anonymous flex item retains font-metric space in some fonts. */
|
|
13912
|
+
.label {
|
|
13913
|
+
display: block !important;
|
|
13914
|
+
align-content: center !important;
|
|
13915
|
+
min-inline-size: 0 !important;
|
|
13916
|
+
min-block-size: 1lh !important;
|
|
13917
|
+
}
|
|
13918
|
+
|
|
13919
|
+
.label:has(svg) {
|
|
13920
|
+
display: inline-flex !important;
|
|
13921
|
+
align-items: center !important;
|
|
13922
|
+
gap: var(--ui-space-2) !important;
|
|
13923
|
+
text-box-trim: none;
|
|
13924
|
+
}
|
|
13925
|
+
|
|
13737
13926
|
.badge {
|
|
13738
13927
|
display: inline-flex !important;
|
|
13739
13928
|
align-items: center !important;
|
|
@@ -13745,7 +13934,7 @@ html[data-ui-input-modality="touch"]
|
|
|
13745
13934
|
}
|
|
13746
13935
|
|
|
13747
13936
|
@supports (text-box-trim: trim-both) {
|
|
13748
|
-
:
|
|
13937
|
+
.label:not(:has(svg)) {
|
|
13749
13938
|
text-box-trim: trim-both;
|
|
13750
13939
|
text-box-edge: cap alphabetic;
|
|
13751
13940
|
}
|
|
@@ -14073,6 +14262,11 @@ html[data-ui-input-modality="touch"]
|
|
|
14073
14262
|
transition: color var(--ui-motion-fast) var(--ui-motion-ease), text-decoration-color var(--ui-motion-fast) var(--ui-motion-ease);
|
|
14074
14263
|
}
|
|
14075
14264
|
|
|
14265
|
+
:scope:where([data-component~="ui-button"])[data-appearance="link"] .label {
|
|
14266
|
+
display: inline !important;
|
|
14267
|
+
text-box-trim: none;
|
|
14268
|
+
}
|
|
14269
|
+
|
|
14076
14270
|
:scope:where([data-component~="ui-button"])[data-appearance="link"]:hover:not(:disabled, [aria-disabled="true"]) {
|
|
14077
14271
|
color: var(--ui-button-link-hover-text, var(--ui-text-primary));
|
|
14078
14272
|
text-decoration-color: currentColor;
|
|
@@ -14110,6 +14304,8 @@ html[data-ui-input-modality="touch"]
|
|
|
14110
14304
|
/* A count is an adornment, not another line of label text. Keep the standard control height
|
|
14111
14305
|
with enough inset for a 24px mark; large content can still grow the button naturally. */
|
|
14112
14306
|
|
|
14307
|
+
/* Trim the text line itself: an anonymous flex item retains font-metric space in some fonts. */
|
|
14308
|
+
|
|
14113
14309
|
@supports (text-box-trim: trim-both) {
|
|
14114
14310
|
}
|
|
14115
14311
|
|
|
@@ -16448,7 +16644,8 @@ html[data-ui-input-modality="touch"]
|
|
|
16448
16644
|
|
|
16449
16645
|
input:where(:not([data-component], [data-slotted]))::after {
|
|
16450
16646
|
content: "";
|
|
16451
|
-
position: absolute;
|
|
16647
|
+
position: absolute !important;
|
|
16648
|
+
transform: none !important;
|
|
16452
16649
|
opacity: 0;
|
|
16453
16650
|
transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
|
|
16454
16651
|
}
|
|
@@ -16461,43 +16658,44 @@ html[data-ui-input-modality="touch"]
|
|
|
16461
16658
|
box-shadow: var(--ui-control-inset);
|
|
16462
16659
|
}
|
|
16463
16660
|
|
|
16464
|
-
/*
|
|
16661
|
+
/* The SVG's painted bounds are centred in its viewBox, including its round stroke.
|
|
16662
|
+
Centre that box directly; rotated border boxes do not centre the visible check. */
|
|
16465
16663
|
input:checked:where(:not([data-component], [data-slotted]))::after {
|
|
16466
|
-
inset:
|
|
16467
|
-
|
|
16468
|
-
|
|
16469
|
-
|
|
16470
|
-
|
|
16471
|
-
|
|
16472
|
-
border-style: solid;
|
|
16473
|
-
border-color: var(--ui-text-on-accent);
|
|
16474
|
-
border-width: 0 calc(var(--_ui-checkbox-size) * 0.125 / 1.125) calc(var(--_ui-checkbox-size) * 0.125 / 1.125) 0;
|
|
16664
|
+
inset: 50% auto auto 50% !important;
|
|
16665
|
+
inline-size: calc(var(--_ui-checkbox-size) * 0.7) !important;
|
|
16666
|
+
block-size: calc(var(--_ui-checkbox-size) * 0.7) !important;
|
|
16667
|
+
background: var(--ui-text-on-accent);
|
|
16668
|
+
mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 11.5 5 5 9-9'/%3E%3C/svg%3E")
|
|
16669
|
+
center / contain no-repeat;
|
|
16475
16670
|
opacity: 1;
|
|
16476
|
-
|
|
16671
|
+
translate: -50% -50% !important;
|
|
16477
16672
|
animation: ui-checkbox-check var(--ui-motion-base) var(--ui-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1)) both;
|
|
16478
16673
|
}
|
|
16479
16674
|
|
|
16480
16675
|
input:indeterminate:where(:not([data-component], [data-slotted]))::after {
|
|
16481
|
-
|
|
16482
|
-
|
|
16676
|
+
mask: none;
|
|
16677
|
+
animation: none;
|
|
16678
|
+
inset: 50% calc(var(--_ui-checkbox-size) * 0.23 / 1.125) auto !important;
|
|
16679
|
+
inline-size: auto !important;
|
|
16680
|
+
block-size: calc(var(--_ui-checkbox-size) * 0.125 / 1.125) !important;
|
|
16483
16681
|
border-radius: var(--ui-radius-round);
|
|
16484
16682
|
background: var(--ui-text-on-accent);
|
|
16485
16683
|
opacity: 1;
|
|
16486
|
-
|
|
16684
|
+
translate: 0 -50% !important;
|
|
16487
16685
|
}
|
|
16488
16686
|
|
|
16489
16687
|
@keyframes ui-checkbox-check {
|
|
16490
16688
|
from {
|
|
16491
16689
|
opacity: 0;
|
|
16492
|
-
|
|
16690
|
+
scale: 0.55;
|
|
16493
16691
|
}
|
|
16494
16692
|
65% {
|
|
16495
16693
|
opacity: 1;
|
|
16496
|
-
|
|
16694
|
+
scale: 1.12;
|
|
16497
16695
|
}
|
|
16498
16696
|
to {
|
|
16499
16697
|
opacity: 1;
|
|
16500
|
-
|
|
16698
|
+
scale: 1;
|
|
16501
16699
|
}
|
|
16502
16700
|
}
|
|
16503
16701
|
|
|
@@ -16508,6 +16706,20 @@ html[data-ui-input-modality="touch"]
|
|
|
16508
16706
|
}
|
|
16509
16707
|
}
|
|
16510
16708
|
|
|
16709
|
+
@media (forced-colors: active) {
|
|
16710
|
+
input:checked,
|
|
16711
|
+
input:indeterminate {
|
|
16712
|
+
forced-color-adjust: none;
|
|
16713
|
+
background: Highlight;
|
|
16714
|
+
border-color: Highlight;
|
|
16715
|
+
}
|
|
16716
|
+
input:checked:where(:not([data-component], [data-slotted]))::after,
|
|
16717
|
+
input:indeterminate:where(:not([data-component], [data-slotted]))::after {
|
|
16718
|
+
forced-color-adjust: none;
|
|
16719
|
+
background: HighlightText;
|
|
16720
|
+
}
|
|
16721
|
+
}
|
|
16722
|
+
|
|
16511
16723
|
input:hover:enabled {
|
|
16512
16724
|
border-color: var(--ui-accent-solid);
|
|
16513
16725
|
}
|
|
@@ -16565,11 +16777,15 @@ html[data-ui-input-modality="touch"]
|
|
|
16565
16777
|
|
|
16566
16778
|
/* The label, and under it an optional line saying what the choice means. */
|
|
16567
16779
|
|
|
16568
|
-
/*
|
|
16780
|
+
/* The SVG's painted bounds are centred in its viewBox, including its round stroke.
|
|
16781
|
+
Centre that box directly; rotated border boxes do not centre the visible check. */
|
|
16569
16782
|
|
|
16570
16783
|
@media (prefers-reduced-motion: reduce) {
|
|
16571
16784
|
}
|
|
16572
16785
|
|
|
16786
|
+
@media (forced-colors: active) {
|
|
16787
|
+
}
|
|
16788
|
+
|
|
16573
16789
|
/* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
|
|
16574
16790
|
and the first line centres in that control height, so the label shares a row's baseline.
|
|
16575
16791
|
Multi-line labels and descriptions still grow downward from that first line. */
|
package/vue/editor/index.js
CHANGED
|
@@ -3418,7 +3418,11 @@ var T12$1 = [
|
|
|
3418
3418
|
"\n ",
|
|
3419
3419
|
1,
|
|
3420
3420
|
"\n ",
|
|
3421
|
-
|
|
3421
|
+
[
|
|
3422
|
+
"span",
|
|
3423
|
+
["class", "label"],
|
|
3424
|
+
4
|
|
3425
|
+
],
|
|
3422
3426
|
"\n ",
|
|
3423
3427
|
[
|
|
3424
3428
|
"span",
|
|
@@ -3440,7 +3444,11 @@ var T16$1 = [
|
|
|
3440
3444
|
"\n ",
|
|
3441
3445
|
1,
|
|
3442
3446
|
"\n ",
|
|
3443
|
-
|
|
3447
|
+
[
|
|
3448
|
+
"span",
|
|
3449
|
+
["class", "label"],
|
|
3450
|
+
4
|
|
3451
|
+
],
|
|
3444
3452
|
"\n ",
|
|
3445
3453
|
[
|
|
3446
3454
|
"span",
|
|
@@ -4325,7 +4333,8 @@ function createUiButton(options = {}, html) {
|
|
|
4325
4333
|
n.append((P12$1 ??= buildTemplate(T12$1)).cloneNode(true));
|
|
4326
4334
|
const t0 = n.firstChild.nextSibling;
|
|
4327
4335
|
const t1 = t0.nextSibling.nextSibling.nextSibling;
|
|
4328
|
-
const t2 = t1.
|
|
4336
|
+
const t2 = t1.firstChild;
|
|
4337
|
+
const t3 = t1.nextSibling.nextSibling.firstChild;
|
|
4329
4338
|
const r = {
|
|
4330
4339
|
n,
|
|
4331
4340
|
v0: void 0,
|
|
@@ -4340,12 +4349,12 @@ function createUiButton(options = {}, html) {
|
|
|
4340
4349
|
a1: t0,
|
|
4341
4350
|
e0: t0.nextSibling,
|
|
4342
4351
|
b0: void 0,
|
|
4343
|
-
a2:
|
|
4344
|
-
e1:
|
|
4352
|
+
a2: t2,
|
|
4353
|
+
e1: t2.nextSibling,
|
|
4345
4354
|
b1: void 0,
|
|
4346
4355
|
f1: void 0,
|
|
4347
|
-
a3:
|
|
4348
|
-
e2:
|
|
4356
|
+
a3: t3,
|
|
4357
|
+
e2: t3.nextSibling,
|
|
4349
4358
|
b2: void 0,
|
|
4350
4359
|
f2: void 0
|
|
4351
4360
|
};
|
|
@@ -4439,18 +4448,6 @@ function createUiButton(options = {}, html) {
|
|
|
4439
4448
|
r.e0.before(r.b0.n);
|
|
4440
4449
|
}
|
|
4441
4450
|
} else if (r.b0 !== void 0) r.b0;
|
|
4442
|
-
if (r.f2 === void 0) {
|
|
4443
|
-
r.f2 = 1;
|
|
4444
|
-
const at = fillSlot(r.a3, r.e2, "badge", J, false, void 0, d);
|
|
4445
|
-
if (Array.isArray(at)) (r.z ??= []).push(() => {
|
|
4446
|
-
at[0].l.delete(at[1]);
|
|
4447
|
-
dispose(at[1]);
|
|
4448
|
-
});
|
|
4449
|
-
else if (at !== void 0) {
|
|
4450
|
-
r.b2 = m15(d);
|
|
4451
|
-
at.before(r.b2.n);
|
|
4452
|
-
}
|
|
4453
|
-
} else if (r.b2 !== void 0) r.b2;
|
|
4454
4451
|
if (r.f1 === void 0) {
|
|
4455
4452
|
r.f1 = 1;
|
|
4456
4453
|
const at = fillSlot(r.a2, r.e1, "", J, false, void 0, d);
|
|
@@ -4463,12 +4460,25 @@ function createUiButton(options = {}, html) {
|
|
|
4463
4460
|
at.before(r.b1.n);
|
|
4464
4461
|
}
|
|
4465
4462
|
} else if (r.b1 !== void 0) r.b1;
|
|
4463
|
+
if (r.f2 === void 0) {
|
|
4464
|
+
r.f2 = 1;
|
|
4465
|
+
const at = fillSlot(r.a3, r.e2, "badge", J, false, void 0, d);
|
|
4466
|
+
if (Array.isArray(at)) (r.z ??= []).push(() => {
|
|
4467
|
+
at[0].l.delete(at[1]);
|
|
4468
|
+
dispose(at[1]);
|
|
4469
|
+
});
|
|
4470
|
+
else if (at !== void 0) {
|
|
4471
|
+
r.b2 = m15(d);
|
|
4472
|
+
at.before(r.b2.n);
|
|
4473
|
+
}
|
|
4474
|
+
} else if (r.b2 !== void 0) r.b2;
|
|
4466
4475
|
};
|
|
4467
4476
|
const m16 = (n, d) => {
|
|
4468
4477
|
n.append((P16$1 ??= buildTemplate(T16$1)).cloneNode(true));
|
|
4469
4478
|
const t0 = n.firstChild.nextSibling;
|
|
4470
4479
|
const t1 = t0.nextSibling.nextSibling.nextSibling;
|
|
4471
|
-
const t2 = t1.
|
|
4480
|
+
const t2 = t1.firstChild;
|
|
4481
|
+
const t3 = t1.nextSibling.nextSibling.firstChild;
|
|
4472
4482
|
const r = {
|
|
4473
4483
|
n,
|
|
4474
4484
|
v0: void 0,
|
|
@@ -4481,12 +4491,12 @@ function createUiButton(options = {}, html) {
|
|
|
4481
4491
|
a1: t0,
|
|
4482
4492
|
e0: t0.nextSibling,
|
|
4483
4493
|
b0: void 0,
|
|
4484
|
-
a2:
|
|
4485
|
-
e1:
|
|
4494
|
+
a2: t2,
|
|
4495
|
+
e1: t2.nextSibling,
|
|
4486
4496
|
b1: void 0,
|
|
4487
4497
|
f1: void 0,
|
|
4488
|
-
a3:
|
|
4489
|
-
e2:
|
|
4498
|
+
a3: t3,
|
|
4499
|
+
e2: t3.nextSibling,
|
|
4490
4500
|
b2: void 0,
|
|
4491
4501
|
f2: void 0
|
|
4492
4502
|
};
|
|
@@ -4560,18 +4570,6 @@ function createUiButton(options = {}, html) {
|
|
|
4560
4570
|
r.e0.before(r.b0.n);
|
|
4561
4571
|
}
|
|
4562
4572
|
} else if (r.b0 !== void 0) r.b0;
|
|
4563
|
-
if (r.f2 === void 0) {
|
|
4564
|
-
r.f2 = 1;
|
|
4565
|
-
const at = fillSlot(r.a3, r.e2, "badge", J, false, void 0, d);
|
|
4566
|
-
if (Array.isArray(at)) (r.z ??= []).push(() => {
|
|
4567
|
-
at[0].l.delete(at[1]);
|
|
4568
|
-
dispose(at[1]);
|
|
4569
|
-
});
|
|
4570
|
-
else if (at !== void 0) {
|
|
4571
|
-
r.b2 = m19(d);
|
|
4572
|
-
at.before(r.b2.n);
|
|
4573
|
-
}
|
|
4574
|
-
} else if (r.b2 !== void 0) r.b2;
|
|
4575
4573
|
if (r.f1 === void 0) {
|
|
4576
4574
|
r.f1 = 1;
|
|
4577
4575
|
const at = fillSlot(r.a2, r.e1, "", J, false, void 0, d);
|
|
@@ -4584,6 +4582,18 @@ function createUiButton(options = {}, html) {
|
|
|
4584
4582
|
at.before(r.b1.n);
|
|
4585
4583
|
}
|
|
4586
4584
|
} else if (r.b1 !== void 0) r.b1;
|
|
4585
|
+
if (r.f2 === void 0) {
|
|
4586
|
+
r.f2 = 1;
|
|
4587
|
+
const at = fillSlot(r.a3, r.e2, "badge", J, false, void 0, d);
|
|
4588
|
+
if (Array.isArray(at)) (r.z ??= []).push(() => {
|
|
4589
|
+
at[0].l.delete(at[1]);
|
|
4590
|
+
dispose(at[1]);
|
|
4591
|
+
});
|
|
4592
|
+
else if (at !== void 0) {
|
|
4593
|
+
r.b2 = m19(d);
|
|
4594
|
+
at.before(r.b2.n);
|
|
4595
|
+
}
|
|
4596
|
+
} else if (r.b2 !== void 0) r.b2;
|
|
4587
4597
|
};
|
|
4588
4598
|
const M = [
|
|
4589
4599
|
m0,
|