@threadlabs/looma 0.41.2 → 0.42.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 +33 -12
- package/components/ui-button/ui-button.js +2 -2
- package/components/ui-callout/ui-callout.html +1 -1
- package/components/ui-card/ui-card.html +7 -7
- package/components/ui-checkbox/ui-checkbox.html +1 -1
- package/components/ui-dialog/ui-dialog.html +8 -10
- package/components/ui-editor-mention-menu/ui-editor-mention-menu.html +1 -1
- package/components/ui-editor-mention-menu-item/ui-editor-mention-menu-item.html +1 -1
- package/components/ui-editor-table-context-menu/ui-editor-table-context-menu.html +1 -1
- package/components/ui-editor-table-toolbar/ui-editor-table-toolbar.html +2 -2
- package/components/ui-icon-button/ui-icon-button.html +45 -10
- package/components/ui-light-editor/ui-light-editor.html +1 -1
- package/components/ui-menu/ui-menu.html +8 -10
- package/components/ui-menu-item/ui-menu-item.html +1 -1
- package/components/ui-popover/ui-popover.html +9 -11
- package/components/ui-radio/ui-radio.html +53 -1
- package/components/ui-section/ui-section.html +1 -1
- package/components/ui-status-message/ui-status-message.html +1 -1
- package/components/ui-switch/ui-switch.html +5 -2
- package/components/ui-tabs/ui-tabs.html +3 -3
- package/components/ui-text/ui-text.html +2 -2
- package/components/ui-tooltip/ui-tooltip.html +8 -10
- package/dist/index.js +1 -1
- package/docs/README.md +5 -1
- package/docs/catalog.json +405 -33
- package/docs/customizer-render.mjs +9 -5
- package/docs/customizer.js +2 -0
- package/docs/fonts.mjs +1 -1
- package/docs/theme.mjs +136 -35
- package/package.json +1 -1
- package/styles/ui-button.css +33 -12
- package/styles/ui-callout.css +1 -1
- package/styles/ui-card.css +6 -6
- package/styles/ui-checkbox.css +1 -1
- package/styles/ui-dialog.css +17 -21
- package/styles/ui-editor-mention-menu-item.css +1 -1
- package/styles/ui-editor-mention-menu.css +1 -1
- package/styles/ui-editor-table-context-menu.css +1 -1
- package/styles/ui-editor-table-toolbar.css +2 -2
- package/styles/ui-icon-button.css +45 -10
- package/styles/ui-light-editor.css +2 -2
- package/styles/ui-menu-item.css +1 -1
- package/styles/ui-menu.css +9 -11
- package/styles/ui-popover.css +10 -12
- package/styles/ui-radio.css +62 -1
- package/styles/ui-section.css +1 -1
- package/styles/ui-status-message.css +1 -1
- package/styles/ui-switch.css +5 -2
- package/styles/ui-tabs.css +3 -3
- package/styles/ui-text.css +2 -2
- package/styles/ui-tooltip.css +9 -11
- package/theme-system.css +10 -8
- package/tokens.css +23 -0
- package/vue/UiButton.vue +45 -12
- package/vue/UiCallout.vue +1 -1
- package/vue/UiCard.vue +7 -13
- package/vue/UiCheckbox.vue +1 -1
- package/vue/UiDialog.vue +21 -45
- package/vue/UiEditorMentionMenu.vue +1 -1
- package/vue/UiEditorMentionMenuItem.vue +1 -1
- package/vue/UiEditorTableContextMenu.vue +1 -1
- package/vue/UiEditorTableToolbar.vue +2 -2
- package/vue/UiIconButton.vue +45 -10
- package/vue/UiLightEditor.vue +2 -2
- package/vue/UiMenu.vue +11 -21
- package/vue/UiMenuItem.vue +1 -1
- package/vue/UiPopover.vue +12 -22
- package/vue/UiRadio.vue +57 -1
- package/vue/UiSection.vue +1 -1
- package/vue/UiStatusMessage.vue +1 -1
- package/vue/UiSwitch.vue +5 -2
- package/vue/UiTabs.vue +3 -3
- package/vue/UiText.vue +2 -2
- package/vue/UiTooltip.vue +11 -21
- package/vue/chunks/UiButton.js +1 -1
- package/vue/chunks/UiCallout.js +1 -1
- package/vue/chunks/UiCard.js +2 -2
- package/vue/chunks/UiCheckbox.js +1 -1
- package/vue/chunks/UiDialog.js +1 -1
- package/vue/chunks/UiEditorMentionMenu.js +1 -1
- package/vue/chunks/UiEditorMentionMenuItem.js +1 -1
- package/vue/chunks/UiEditorTableContextMenu.js +1 -1
- package/vue/chunks/UiEditorTableToolbar.js +1 -1
- package/vue/chunks/UiIconButton.js +1 -1
- package/vue/chunks/UiLightEditor.js +1 -1
- package/vue/chunks/UiMenu.js +1 -1
- package/vue/chunks/UiMenuItem.js +1 -1
- package/vue/chunks/UiPopover.js +1 -1
- package/vue/chunks/UiRadio.js +1 -1
- package/vue/chunks/UiSection.js +1 -1
- package/vue/chunks/UiStatusMessage.js +1 -1
- package/vue/chunks/UiSwitch.js +1 -1
- package/vue/chunks/UiTabs.js +1 -1
- package/vue/chunks/UiText.js +1 -1
- package/vue/chunks/UiTooltip.js +1 -1
- package/vue/components.css +342 -233
- package/vue/editor/index.js +1 -1
package/vue/UiIconButton.vue
CHANGED
|
@@ -573,6 +573,10 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
|
|
|
573
573
|
/* Optional inherited action-group values keep text and icon actions under the same light.
|
|
574
574
|
One fine top/start highlight follows the bottom/end lowlight at a joined action seam.
|
|
575
575
|
The shared theme supplies reflections and glow independently of the resting lift. */
|
|
576
|
+
--_solid-border: var(--ui-accent-border, var(--ui-accent-solid));
|
|
577
|
+
--_solid-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
|
|
578
|
+
--_solid-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
|
|
579
|
+
--_solid-active-surface: var(--ui-accent-active, var(--ui-accent-hover));
|
|
576
580
|
--_tone-highlight: var(--ui-accent-highlight, none);
|
|
577
581
|
--_tone-glow: var(--ui-accent-glow, 0 0 transparent);
|
|
578
582
|
--_ui-action-start: 1px;
|
|
@@ -603,10 +607,14 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
|
|
|
603
607
|
}
|
|
604
608
|
|
|
605
609
|
:global(:scope[data-tone="accent"]:where([data-hn-ui-icon-button])) {
|
|
610
|
+
--_solid-border: var(--ui-accent-border, var(--ui-accent));
|
|
611
|
+
--_solid-hover-border: var(--ui-accent-hover-border, var(--ui-accent-hover));
|
|
612
|
+
--_solid-active-border: var(--ui-accent-active-border, var(--ui-accent-active));
|
|
613
|
+
--_solid-active-surface: var(--ui-accent-active, var(--ui-accent-hover));
|
|
606
614
|
--_tone-highlight: var(--ui-accent-highlight, none);
|
|
607
615
|
--_tone-glow: var(--ui-accent-glow, 0 0 transparent);
|
|
608
|
-
--_icon-button-border: var(--ui-accent-
|
|
609
|
-
--_icon-button-hover-border: var(--ui-accent-
|
|
616
|
+
--_icon-button-border: var(--ui-accent-subtle-text);
|
|
617
|
+
--_icon-button-hover-border: var(--ui-accent-subtle-text);
|
|
610
618
|
--_icon-button-text: var(--ui-accent-subtle-text, var(--ui-accent-solid));
|
|
611
619
|
--_icon-button-outline-surface: color-mix(
|
|
612
620
|
in srgb,
|
|
@@ -617,10 +625,14 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
|
|
|
617
625
|
}
|
|
618
626
|
|
|
619
627
|
:global(:scope[data-tone="danger"]:where([data-hn-ui-icon-button])) {
|
|
628
|
+
--_solid-border: var(--ui-danger-border, var(--ui-danger));
|
|
629
|
+
--_solid-hover-border: var(--ui-danger-hover-border, var(--ui-danger-hover));
|
|
630
|
+
--_solid-active-border: var(--ui-danger-active-border, var(--ui-danger-active));
|
|
631
|
+
--_solid-active-surface: var(--ui-danger-active, var(--ui-danger-hover));
|
|
620
632
|
--_tone-highlight: var(--ui-danger-highlight, none);
|
|
621
633
|
--_tone-glow: var(--ui-danger-glow, 0 0 transparent);
|
|
622
|
-
--_icon-button-border: var(--ui-danger);
|
|
623
|
-
--_icon-button-hover-border: var(--ui-danger-
|
|
634
|
+
--_icon-button-border: var(--ui-danger-subtle-text);
|
|
635
|
+
--_icon-button-hover-border: var(--ui-danger-subtle-text);
|
|
624
636
|
--_icon-button-text: var(--ui-danger-subtle-text);
|
|
625
637
|
--_icon-button-outline-surface: color-mix(
|
|
626
638
|
in srgb,
|
|
@@ -634,10 +646,14 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
|
|
|
634
646
|
}
|
|
635
647
|
|
|
636
648
|
:global(:scope[data-tone="success"]:where([data-hn-ui-icon-button])) {
|
|
649
|
+
--_solid-border: var(--ui-success-border, var(--ui-success));
|
|
650
|
+
--_solid-hover-border: var(--ui-success-hover-border, var(--ui-success-hover));
|
|
651
|
+
--_solid-active-border: var(--ui-success-active-border, var(--ui-success-active));
|
|
652
|
+
--_solid-active-surface: var(--ui-success-active, var(--ui-success-hover));
|
|
637
653
|
--_tone-highlight: var(--ui-success-highlight, none);
|
|
638
654
|
--_tone-glow: var(--ui-success-glow, 0 0 transparent);
|
|
639
|
-
--_icon-button-border: var(--ui-success);
|
|
640
|
-
--_icon-button-hover-border: var(--ui-success-
|
|
655
|
+
--_icon-button-border: var(--ui-success-subtle-text);
|
|
656
|
+
--_icon-button-hover-border: var(--ui-success-subtle-text);
|
|
641
657
|
--_icon-button-text: var(--ui-success-subtle-text);
|
|
642
658
|
--_icon-button-outline-surface: color-mix(
|
|
643
659
|
in srgb,
|
|
@@ -651,10 +667,14 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
|
|
|
651
667
|
}
|
|
652
668
|
|
|
653
669
|
:global(:scope[data-tone="warning"]:where([data-hn-ui-icon-button])) {
|
|
670
|
+
--_solid-border: var(--ui-warning-border, var(--ui-warning));
|
|
671
|
+
--_solid-hover-border: var(--ui-warning-hover-border, var(--ui-warning-hover));
|
|
672
|
+
--_solid-active-border: var(--ui-warning-active-border, var(--ui-warning-active));
|
|
673
|
+
--_solid-active-surface: var(--ui-warning-active, var(--ui-warning-hover));
|
|
654
674
|
--_tone-highlight: var(--ui-warning-highlight, none);
|
|
655
675
|
--_tone-glow: var(--ui-warning-glow, 0 0 transparent);
|
|
656
|
-
--_icon-button-border: var(--ui-warning);
|
|
657
|
-
--_icon-button-hover-border: var(--ui-warning-
|
|
676
|
+
--_icon-button-border: var(--ui-warning-subtle-text);
|
|
677
|
+
--_icon-button-hover-border: var(--ui-warning-subtle-text);
|
|
658
678
|
--_icon-button-text: var(--ui-warning-subtle-text);
|
|
659
679
|
--_icon-button-outline-surface: color-mix(
|
|
660
680
|
in srgb,
|
|
@@ -668,10 +688,14 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
|
|
|
668
688
|
}
|
|
669
689
|
|
|
670
690
|
:global(:scope[data-tone="info"]:where([data-hn-ui-icon-button])) {
|
|
691
|
+
--_solid-border: var(--ui-info-border, var(--ui-info));
|
|
692
|
+
--_solid-hover-border: var(--ui-info-hover-border, var(--ui-info-hover));
|
|
693
|
+
--_solid-active-border: var(--ui-info-active-border, var(--ui-info-active));
|
|
694
|
+
--_solid-active-surface: var(--ui-info-active, var(--ui-info-hover));
|
|
671
695
|
--_tone-highlight: var(--ui-info-highlight, none);
|
|
672
696
|
--_tone-glow: var(--ui-info-glow, 0 0 transparent);
|
|
673
|
-
--_icon-button-border: var(--ui-info);
|
|
674
|
-
--_icon-button-hover-border: var(--ui-info-
|
|
697
|
+
--_icon-button-border: var(--ui-info-subtle-text);
|
|
698
|
+
--_icon-button-hover-border: var(--ui-info-subtle-text);
|
|
675
699
|
--_icon-button-text: var(--ui-info-subtle-text);
|
|
676
700
|
--_icon-button-outline-surface: color-mix(
|
|
677
701
|
in srgb,
|
|
@@ -684,6 +708,10 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
|
|
|
684
708
|
color: var(--_icon-button-text);
|
|
685
709
|
}
|
|
686
710
|
:global(:scope[data-tone="neutral"]:where([data-hn-ui-icon-button])) {
|
|
711
|
+
--_solid-border: var(--ui-neutral-border, var(--ui-neutral-surface));
|
|
712
|
+
--_solid-hover-border: var(--ui-neutral-hover-border, var(--ui-neutral-hover));
|
|
713
|
+
--_solid-active-border: var(--ui-neutral-active-border, var(--ui-neutral-active));
|
|
714
|
+
--_solid-active-surface: var(--ui-neutral-active, var(--ui-neutral-hover));
|
|
687
715
|
--_tone-highlight: var(--ui-neutral-highlight, none);
|
|
688
716
|
--_tone-glow: var(--ui-neutral-glow, 0 0 transparent);
|
|
689
717
|
--_icon-button-outline-surface: transparent;
|
|
@@ -861,6 +889,7 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
|
|
|
861
889
|
}
|
|
862
890
|
|
|
863
891
|
:global(:scope[data-appearance="solid"]:where([data-hn-ui-icon-button])) {
|
|
892
|
+
border-color: var(--ui-icon-button-border, var(--_solid-border));
|
|
864
893
|
background-color: var(
|
|
865
894
|
--ui-icon-button-solid-surface,
|
|
866
895
|
var(--_icon-button-solid-surface, var(--ui-accent-solid))
|
|
@@ -898,6 +927,7 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
|
|
|
898
927
|
}
|
|
899
928
|
|
|
900
929
|
:global(:scope[data-appearance="solid"]:hover:enabled:not([aria-disabled="true"]):where([data-hn-ui-icon-button])) {
|
|
930
|
+
border-color: var(--ui-icon-button-hover-border, var(--_solid-hover-border));
|
|
901
931
|
background-color: var(
|
|
902
932
|
--ui-icon-button-solid-hover-surface,
|
|
903
933
|
var(--_icon-button-solid-hover-surface, var(--ui-accent-hover))
|
|
@@ -971,6 +1001,11 @@ useComponentHost(() => import('../components/ui-icon-button/ui-icon-button.js'),
|
|
|
971
1001
|
var(--ui-focus-halo);
|
|
972
1002
|
}
|
|
973
1003
|
|
|
1004
|
+
:global(:scope[data-appearance="solid"]:active:enabled:not([aria-disabled="true"]):where([data-hn-ui-icon-button])) {
|
|
1005
|
+
background-color: var(--ui-icon-button-active-surface, var(--_solid-active-surface));
|
|
1006
|
+
border-color: var(--_solid-active-border);
|
|
1007
|
+
}
|
|
1008
|
+
|
|
974
1009
|
:global(:scope:is(:scope[data-appearance="outline"], :scope[data-appearance="solid"]):active:enabled:not([aria-disabled="true"]):where([data-hn-ui-icon-button])) {
|
|
975
1010
|
background-image: none;
|
|
976
1011
|
box-shadow: var(--ui-pressed);
|
package/vue/UiLightEditor.vue
CHANGED
|
@@ -366,7 +366,7 @@ useComponentHost(() => import('../components/ui-light-editor/ui-light-editor.js'
|
|
|
366
366
|
position: relative;
|
|
367
367
|
z-index: 1;
|
|
368
368
|
display: inline-flex !important;
|
|
369
|
-
color: var(--ui-accent);
|
|
369
|
+
color: var(--ui-accent-subtle-text);
|
|
370
370
|
font-size: var(--ui-font-size-lg);
|
|
371
371
|
}
|
|
372
372
|
:global(.source:where([data-hn-ui-light-editor])::after) {
|
|
@@ -479,7 +479,7 @@ useComponentHost(() => import('../components/ui-light-editor/ui-light-editor.js'
|
|
|
479
479
|
position: relative;
|
|
480
480
|
z-index: 1;
|
|
481
481
|
display: inline-flex !important;
|
|
482
|
-
color: var(--ui-accent);
|
|
482
|
+
color: var(--ui-accent-subtle-text);
|
|
483
483
|
font-size: var(--ui-font-size-lg);
|
|
484
484
|
}
|
|
485
485
|
:global(.source:where(:not([data-hn], [data-slotted]:not([data-slotted~="ui-light-editor"]))):where(:scope, :scope
|
package/vue/UiMenu.vue
CHANGED
|
@@ -353,7 +353,7 @@ useComponentHost(() => import('../components/ui-menu/ui-menu.js'), {
|
|
|
353
353
|
/* Small follows its trigger down: an item's own hooks still win. */
|
|
354
354
|
|
|
355
355
|
/* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
|
|
356
|
-
transparency,
|
|
356
|
+
transparency, frosting and edge light belong to the surrounding decorative material. */
|
|
357
357
|
|
|
358
358
|
@scope (.ui-menu) to ([data-hn]) {
|
|
359
359
|
:global(:scope[data-ui-menu-state~="density=compact"]:where([data-hn-ui-menu])) {
|
|
@@ -427,21 +427,11 @@ useComponentHost(() => import('../components/ui-menu/ui-menu.js'), {
|
|
|
427
427
|
overflow: auto;
|
|
428
428
|
}
|
|
429
429
|
:global(:scope:not([inline]) .surface:where([data-hn-ui-menu])) {
|
|
430
|
-
--_ui-material-glassiness:
|
|
431
|
-
clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4)
|
|
432
|
-
);
|
|
430
|
+
--_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
|
|
433
431
|
--_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
|
|
434
|
-
--_ui-material-active: clamp(
|
|
435
|
-
0,
|
|
436
|
-
calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000),
|
|
437
|
-
1
|
|
438
|
-
);
|
|
432
|
+
--_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
|
|
439
433
|
--_ui-material-rim: calc(
|
|
440
|
-
(
|
|
441
|
-
var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25
|
|
442
|
-
) *
|
|
443
|
-
var(--_ui-material-scale, 0.28) *
|
|
444
|
-
8px
|
|
434
|
+
var(--_ui-material-separation) * var(--_ui-material-scale, 0.28) * 8px
|
|
445
435
|
);
|
|
446
436
|
--_ui-material-content-color: var(
|
|
447
437
|
--_ui-menu-surface,
|
|
@@ -484,12 +474,12 @@ useComponentHost(() => import('../components/ui-menu/ui-menu.js'), {
|
|
|
484
474
|
var(--ui-elevation-overlay, var(--ui-shadow-lg))
|
|
485
475
|
)
|
|
486
476
|
);
|
|
487
|
-
backdrop-filter: blur(
|
|
488
|
-
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 18px)
|
|
489
|
-
) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 0.18));
|
|
490
477
|
-webkit-backdrop-filter: blur(
|
|
491
|
-
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) *
|
|
492
|
-
)
|
|
478
|
+
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 32px)
|
|
479
|
+
);
|
|
480
|
+
backdrop-filter: blur(
|
|
481
|
+
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.28) * 32px)
|
|
482
|
+
);
|
|
493
483
|
}
|
|
494
484
|
|
|
495
485
|
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
@@ -501,8 +491,8 @@ useComponentHost(() => import('../components/ui-menu/ui-menu.js'), {
|
|
|
501
491
|
@media (prefers-reduced-transparency: reduce) {
|
|
502
492
|
:global(:scope:not([inline]) .surface:where([data-hn-ui-menu])) {
|
|
503
493
|
background: var(--_ui-material-content-color);
|
|
504
|
-
backdrop-filter: none;
|
|
505
494
|
-webkit-backdrop-filter: none;
|
|
495
|
+
backdrop-filter: none;
|
|
506
496
|
}
|
|
507
497
|
}
|
|
508
498
|
|
|
@@ -511,8 +501,8 @@ useComponentHost(() => import('../components/ui-menu/ui-menu.js'), {
|
|
|
511
501
|
background: Canvas;
|
|
512
502
|
border-color: CanvasText;
|
|
513
503
|
box-shadow: none;
|
|
514
|
-
backdrop-filter: none;
|
|
515
504
|
-webkit-backdrop-filter: none;
|
|
505
|
+
backdrop-filter: none;
|
|
516
506
|
}
|
|
517
507
|
}
|
|
518
508
|
|
package/vue/UiMenuItem.vue
CHANGED
|
@@ -453,7 +453,7 @@ useComponentHost(() => import('../components/ui-menu-item/ui-menu-item.js'), {
|
|
|
453
453
|
}
|
|
454
454
|
|
|
455
455
|
:global(:scope[data-ui-menu-item-state~="tone=danger"]:where([data-hn-ui-menu-item])) {
|
|
456
|
-
color: var(--ui-danger);
|
|
456
|
+
color: var(--ui-danger-subtle-text);
|
|
457
457
|
}
|
|
458
458
|
|
|
459
459
|
:global(.label:where([data-hn-ui-menu-item])) {
|
package/vue/UiPopover.vue
CHANGED
|
@@ -335,7 +335,7 @@ useComponentHost(() => import('../components/ui-popover/ui-popover.js'), {
|
|
|
335
335
|
}
|
|
336
336
|
|
|
337
337
|
/* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
|
|
338
|
-
transparency,
|
|
338
|
+
transparency, frosting and edge light belong to the surrounding decorative material. */
|
|
339
339
|
|
|
340
340
|
/* A toolbar or card can supply its own surface, including an unclipped shadow. */
|
|
341
341
|
|
|
@@ -378,21 +378,11 @@ useComponentHost(() => import('../components/ui-popover/ui-popover.js'), {
|
|
|
378
378
|
);
|
|
379
379
|
}
|
|
380
380
|
:global(.surface:where([data-hn-ui-popover])) {
|
|
381
|
-
--_ui-material-glassiness:
|
|
382
|
-
clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4)
|
|
383
|
-
);
|
|
381
|
+
--_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
|
|
384
382
|
--_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
|
|
385
|
-
--_ui-material-active: clamp(
|
|
386
|
-
0,
|
|
387
|
-
calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000),
|
|
388
|
-
1
|
|
389
|
-
);
|
|
383
|
+
--_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
|
|
390
384
|
--_ui-material-rim: calc(
|
|
391
|
-
(
|
|
392
|
-
var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25
|
|
393
|
-
) *
|
|
394
|
-
var(--_ui-material-scale, 0.55) *
|
|
395
|
-
8px
|
|
385
|
+
var(--_ui-material-separation) * var(--_ui-material-scale, 0.55) * 8px
|
|
396
386
|
);
|
|
397
387
|
--_ui-material-content-color: var(
|
|
398
388
|
--_ui-popover-surface,
|
|
@@ -435,12 +425,12 @@ useComponentHost(() => import('../components/ui-popover/ui-popover.js'), {
|
|
|
435
425
|
var(--ui-elevation-overlay, var(--ui-shadow-lg))
|
|
436
426
|
)
|
|
437
427
|
);
|
|
438
|
-
backdrop-filter: blur(
|
|
439
|
-
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 18px)
|
|
440
|
-
) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 0.18));
|
|
441
428
|
-webkit-backdrop-filter: blur(
|
|
442
|
-
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) *
|
|
443
|
-
)
|
|
429
|
+
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 32px)
|
|
430
|
+
);
|
|
431
|
+
backdrop-filter: blur(
|
|
432
|
+
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.55) * 32px)
|
|
433
|
+
);
|
|
444
434
|
}
|
|
445
435
|
|
|
446
436
|
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
@@ -452,8 +442,8 @@ useComponentHost(() => import('../components/ui-popover/ui-popover.js'), {
|
|
|
452
442
|
@media (prefers-reduced-transparency: reduce) {
|
|
453
443
|
:global(.surface:where([data-hn-ui-popover])) {
|
|
454
444
|
background: var(--_ui-material-content-color);
|
|
455
|
-
backdrop-filter: none;
|
|
456
445
|
-webkit-backdrop-filter: none;
|
|
446
|
+
backdrop-filter: none;
|
|
457
447
|
}
|
|
458
448
|
}
|
|
459
449
|
|
|
@@ -462,8 +452,8 @@ useComponentHost(() => import('../components/ui-popover/ui-popover.js'), {
|
|
|
462
452
|
background: Canvas;
|
|
463
453
|
border-color: CanvasText;
|
|
464
454
|
box-shadow: none;
|
|
465
|
-
backdrop-filter: none;
|
|
466
455
|
-webkit-backdrop-filter: none;
|
|
456
|
+
backdrop-filter: none;
|
|
467
457
|
}
|
|
468
458
|
}
|
|
469
459
|
:global(:scope[data-ui-popover-state~="bare"] .surface:where([data-hn-ui-popover])) {
|
|
@@ -472,8 +462,8 @@ useComponentHost(() => import('../components/ui-popover/ui-popover.js'), {
|
|
|
472
462
|
border: 0;
|
|
473
463
|
background: transparent;
|
|
474
464
|
box-shadow: none;
|
|
475
|
-
backdrop-filter: none;
|
|
476
465
|
-webkit-backdrop-filter: none;
|
|
466
|
+
backdrop-filter: none;
|
|
477
467
|
}
|
|
478
468
|
|
|
479
469
|
:global(:scope:not([data-ui-popover-state~="internalOpen"]):where([data-hn-ui-popover])) {
|
package/vue/UiRadio.vue
CHANGED
|
@@ -303,6 +303,9 @@ useComponentHost(() => import('../components/ui-radio/ui-radio.js'), {
|
|
|
303
303
|
|
|
304
304
|
/* The label, and under it an optional line saying what the choice means. */
|
|
305
305
|
|
|
306
|
+
/* The native radio retains grouping, validation and keyboard behavior.
|
|
307
|
+
Its empty well recedes; the filled selection and its dot stay crisp. */
|
|
308
|
+
|
|
306
309
|
/* A sized choice keeps its box and aligns instead: the label takes that size's field type size,
|
|
307
310
|
and the first line centres in that control height, so the label shares a row's baseline.
|
|
308
311
|
Multi-line labels and descriptions still grow downward from that first line. */
|
|
@@ -361,9 +364,36 @@ useComponentHost(() => import('../components/ui-radio/ui-radio.js'), {
|
|
|
361
364
|
inline-size: var(--_ui-radio-size, 1.125rem);
|
|
362
365
|
block-size: var(--_ui-radio-size, 1.125rem);
|
|
363
366
|
margin: max(0px, calc((1lh - var(--_ui-radio-size, 1.125rem)) / 2)) 0 0 !important;
|
|
364
|
-
|
|
367
|
+
-webkit-appearance: none;
|
|
368
|
+
appearance: none;
|
|
369
|
+
position: relative;
|
|
370
|
+
border: var(--ui-border-width) solid var(--ui-control-border, var(--ui-border-strong));
|
|
371
|
+
border-radius: var(--ui-radius-round);
|
|
372
|
+
background-color: var(--ui-control-surface, var(--ui-surface-default));
|
|
373
|
+
background-image: var(--ui-surface-highlight, none);
|
|
374
|
+
box-shadow: var(--ui-control-inset);
|
|
365
375
|
cursor: pointer;
|
|
366
376
|
}
|
|
377
|
+
:global(input:where([data-hn-ui-radio])::after) {
|
|
378
|
+
content: "";
|
|
379
|
+
position: absolute;
|
|
380
|
+
inset: 28%;
|
|
381
|
+
border-radius: var(--ui-radius-round);
|
|
382
|
+
background-color: var(--ui-text-on-accent);
|
|
383
|
+
opacity: 0;
|
|
384
|
+
transition: opacity var(--ui-motion-fast) var(--ui-motion-ease);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
:global(input:checked:where([data-hn-ui-radio])) {
|
|
388
|
+
background-color: var(--ui-accent-solid);
|
|
389
|
+
background-image: var(--ui-accent-highlight, none);
|
|
390
|
+
border-color: var(--ui-accent-solid);
|
|
391
|
+
box-shadow: none;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
:global(input:checked:where([data-hn-ui-radio])::after) {
|
|
395
|
+
opacity: 1;
|
|
396
|
+
}
|
|
367
397
|
|
|
368
398
|
:global(input:focus-visible:where([data-hn-ui-radio])) {
|
|
369
399
|
outline: var(--ui-focus-width) solid var(--ui-focus-ring, var(--ui-accent-solid));
|
|
@@ -378,8 +408,34 @@ useComponentHost(() => import('../components/ui-radio/ui-radio.js'), {
|
|
|
378
408
|
color: var(--ui-disabled-text);
|
|
379
409
|
}
|
|
380
410
|
:global(:scope[data-ui-radio-state~="disabled"] input:where([data-hn-ui-radio])) {
|
|
411
|
+
border-color: var(--ui-disabled-border);
|
|
412
|
+
background-color: var(--ui-disabled-surface);
|
|
413
|
+
background-image: none;
|
|
414
|
+
box-shadow: none;
|
|
381
415
|
cursor: not-allowed;
|
|
382
416
|
}
|
|
417
|
+
|
|
418
|
+
:global(:scope[data-ui-radio-state~="disabled"] input:where([data-hn-ui-radio])::after) {
|
|
419
|
+
background-color: var(--ui-disabled-text);
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
@media (prefers-reduced-motion: reduce) {
|
|
423
|
+
:global(input:where([data-hn-ui-radio])::after) {
|
|
424
|
+
transition: none;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
@media (forced-colors: active) {
|
|
429
|
+
:global(input:where([data-hn-ui-radio])) {
|
|
430
|
+
-webkit-appearance: auto;
|
|
431
|
+
appearance: auto;
|
|
432
|
+
background: none;
|
|
433
|
+
box-shadow: none;
|
|
434
|
+
}
|
|
435
|
+
:global(input:where([data-hn-ui-radio])::after) {
|
|
436
|
+
display: none !important;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
383
439
|
:global(:scope[data-ui-radio-state~="size=sm"]:where([data-hn-ui-radio])) {
|
|
384
440
|
--_font: var(--ui-font-size-sm);
|
|
385
441
|
--_row: var(--ui-control-size-sm);
|
package/vue/UiSection.vue
CHANGED
|
@@ -219,7 +219,7 @@ const hostState = computed(() =>
|
|
|
219
219
|
}
|
|
220
220
|
|
|
221
221
|
:global(:scope[data-ui-section-state~="tone=danger"] .heading:where([data-hn-ui-section])) {
|
|
222
|
-
color: var(--ui-danger);
|
|
222
|
+
color: var(--ui-danger-subtle-text);
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
:global(.description:where([data-hn-ui-section])) {
|
package/vue/UiStatusMessage.vue
CHANGED
|
@@ -187,7 +187,7 @@ const hostState = computed(() =>
|
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
:global(:scope[data-ui-status-message-state~="kind=error"]:where([data-hn-ui-status-message])) {
|
|
190
|
-
color: var(--ui-danger);
|
|
190
|
+
color: var(--ui-danger-subtle-text);
|
|
191
191
|
}
|
|
192
192
|
|
|
193
193
|
:global(:scope[data-ui-status-message-state~="layout=panel"]:where([data-hn-ui-status-message])) {
|
package/vue/UiSwitch.vue
CHANGED
|
@@ -392,7 +392,8 @@ useComponentHost(() => import('../components/ui-switch/ui-switch.js'), {
|
|
|
392
392
|
width: var(--_thumb);
|
|
393
393
|
height: var(--_thumb);
|
|
394
394
|
border-radius: var(--ui-radius-round);
|
|
395
|
-
background: var(--ui-text-secondary);
|
|
395
|
+
background-color: var(--ui-text-secondary);
|
|
396
|
+
background-image: var(--ui-knob-highlight, none);
|
|
396
397
|
box-shadow: var(--ui-shadow-xs);
|
|
397
398
|
transition:
|
|
398
399
|
transform var(--ui-motion-base) var(--ui-motion-ease),
|
|
@@ -407,7 +408,8 @@ useComponentHost(() => import('../components/ui-switch/ui-switch.js'), {
|
|
|
407
408
|
|
|
408
409
|
:global(input:checked:where([data-hn-ui-switch])::after) {
|
|
409
410
|
transform: translateX(calc(var(--_ui-switch-track-width) - var(--_ui-switch-track-height)));
|
|
410
|
-
background: var(--ui-text-on-accent);
|
|
411
|
+
background-color: var(--ui-text-on-accent);
|
|
412
|
+
background-image: var(--ui-knob-on-accent-highlight, none);
|
|
411
413
|
}
|
|
412
414
|
|
|
413
415
|
:global(input:focus-visible:where([data-hn-ui-switch])) {
|
|
@@ -432,6 +434,7 @@ useComponentHost(() => import('../components/ui-switch/ui-switch.js'), {
|
|
|
432
434
|
|
|
433
435
|
:global(:scope[data-ui-switch-state~="disabled"] input:where([data-hn-ui-switch])::after) {
|
|
434
436
|
background-color: var(--ui-disabled-text);
|
|
437
|
+
background-image: none;
|
|
435
438
|
box-shadow: none;
|
|
436
439
|
}
|
|
437
440
|
|
package/vue/UiTabs.vue
CHANGED
|
@@ -448,8 +448,8 @@ useComponentHost(() => import('../components/ui-tabs/ui-tabs.js'), {
|
|
|
448
448
|
}
|
|
449
449
|
:global(.list button[aria-selected="true"]:where([data-hn-ui-tabs])),
|
|
450
450
|
:global(.list > :where(:not([data-hn-ui-tabs])):is(button[slot="tab"][aria-selected="true"])) {
|
|
451
|
-
color: var(--ui-accent-
|
|
452
|
-
border-block-end-color: var(--ui-accent-
|
|
451
|
+
color: var(--ui-accent-subtle-text);
|
|
452
|
+
border-block-end-color: var(--ui-accent-subtle-text);
|
|
453
453
|
}
|
|
454
454
|
:global(.list button:focus-visible:where([data-hn-ui-tabs])),
|
|
455
455
|
:global(.list > :where(:not([data-hn-ui-tabs])):is(button[slot="tab"]:focus-visible)) {
|
|
@@ -495,7 +495,7 @@ useComponentHost(() => import('../components/ui-tabs/ui-tabs.js'), {
|
|
|
495
495
|
:global(:scope[data-ui-tabs-state~="orientation=vertical"]
|
|
496
496
|
.list
|
|
497
497
|
> :where(:not([data-hn-ui-tabs])):is(button[slot="tab"][aria-selected="true"])) {
|
|
498
|
-
border-inline-end-color: var(--ui-accent-
|
|
498
|
+
border-inline-end-color: var(--ui-accent-subtle-text);
|
|
499
499
|
}
|
|
500
500
|
|
|
501
501
|
@media (prefers-reduced-motion: reduce) {
|
package/vue/UiText.vue
CHANGED
|
@@ -719,7 +719,7 @@ const hostState = computed(() =>
|
|
|
719
719
|
color: var(--ui-text-muted);
|
|
720
720
|
}
|
|
721
721
|
:global(:scope[data-ui-text-state~="tone=accent"]:where([data-hn-ui-text])) {
|
|
722
|
-
color: var(--ui-accent-
|
|
722
|
+
color: var(--ui-accent-subtle-text);
|
|
723
723
|
}
|
|
724
724
|
:global(:scope[data-ui-text-state~="tone=danger"]:where([data-hn-ui-text])) {
|
|
725
725
|
color: var(--ui-danger-subtle-text);
|
|
@@ -777,7 +777,7 @@ const hostState = computed(() =>
|
|
|
777
777
|
font-family: var(--ui-font-family-mono);
|
|
778
778
|
}
|
|
779
779
|
:global(:scope :where(:not([data-hn-ui-text])):is(a)) {
|
|
780
|
-
color: var(--ui-accent-
|
|
780
|
+
color: var(--ui-accent-subtle-text);
|
|
781
781
|
text-decoration: underline;
|
|
782
782
|
text-decoration-thickness: 0.06em;
|
|
783
783
|
text-underline-offset: 0.18em;
|
package/vue/UiTooltip.vue
CHANGED
|
@@ -390,7 +390,7 @@ useComponentHost(() => import('../components/ui-tooltip/ui-tooltip.js'), {
|
|
|
390
390
|
/* The label and the shortcut sit side by side, a gap apart, with the label wrapping on its own. */
|
|
391
391
|
|
|
392
392
|
/* Purpose and measured size shape one shared separation lever. The content plane stays opaque;
|
|
393
|
-
transparency,
|
|
393
|
+
transparency, frosting and edge light belong to the surrounding decorative material. */
|
|
394
394
|
|
|
395
395
|
/* A keyboard shortcut follows the label after a thin divider, smaller and quieter, as menus show
|
|
396
396
|
it. The label stays first in the description, so a screen reader hears the name, then the keys. */
|
|
@@ -456,21 +456,11 @@ useComponentHost(() => import('../components/ui-tooltip/ui-tooltip.js'), {
|
|
|
456
456
|
);
|
|
457
457
|
}
|
|
458
458
|
:global(.surface:where([data-hn-ui-tooltip])) {
|
|
459
|
-
--_ui-material-glassiness:
|
|
460
|
-
clamp(0, var(--ui-glassiness, 0), 1) + 2 * pow(clamp(0, var(--ui-glassiness, 0), 1), 4)
|
|
461
|
-
);
|
|
459
|
+
--_ui-material-glassiness: clamp(0, var(--ui-glassiness, 0), 1);
|
|
462
460
|
--_ui-material-separation: clamp(0, var(--ui-surface-separation, 0), 1);
|
|
463
|
-
--_ui-material-active: clamp(
|
|
464
|
-
0,
|
|
465
|
-
calc((var(--_ui-material-glassiness) + var(--_ui-material-separation)) * 100000),
|
|
466
|
-
1
|
|
467
|
-
);
|
|
461
|
+
--_ui-material-active: clamp(0, calc(var(--_ui-material-separation) * 100000), 1);
|
|
468
462
|
--_ui-material-rim: calc(
|
|
469
|
-
(
|
|
470
|
-
var(--_ui-material-separation) + var(--_ui-material-glassiness) * 0.25
|
|
471
|
-
) *
|
|
472
|
-
var(--_ui-material-scale, 0.08) *
|
|
473
|
-
8px
|
|
463
|
+
var(--_ui-material-separation) * var(--_ui-material-scale, 0.08) * 8px
|
|
474
464
|
);
|
|
475
465
|
--_ui-material-content-color: var(
|
|
476
466
|
--_ui-tooltip-surface,
|
|
@@ -511,12 +501,12 @@ useComponentHost(() => import('../components/ui-tooltip/ui-tooltip.js'), {
|
|
|
511
501
|
var(--ui-elevation-tooltip, var(--ui-shadow-md))
|
|
512
502
|
)
|
|
513
503
|
);
|
|
514
|
-
backdrop-filter: blur(
|
|
515
|
-
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 18px)
|
|
516
|
-
) saturate(calc(1 + var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 0.18));
|
|
517
504
|
-webkit-backdrop-filter: blur(
|
|
518
|
-
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) *
|
|
519
|
-
)
|
|
505
|
+
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 32px)
|
|
506
|
+
);
|
|
507
|
+
backdrop-filter: blur(
|
|
508
|
+
calc(var(--_ui-material-glassiness) * var(--_ui-material-scale, 0.08) * 32px)
|
|
509
|
+
);
|
|
520
510
|
}
|
|
521
511
|
|
|
522
512
|
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
@@ -528,8 +518,8 @@ useComponentHost(() => import('../components/ui-tooltip/ui-tooltip.js'), {
|
|
|
528
518
|
@media (prefers-reduced-transparency: reduce) {
|
|
529
519
|
:global(.surface:where([data-hn-ui-tooltip])) {
|
|
530
520
|
background: var(--_ui-material-content-color);
|
|
531
|
-
backdrop-filter: none;
|
|
532
521
|
-webkit-backdrop-filter: none;
|
|
522
|
+
backdrop-filter: none;
|
|
533
523
|
}
|
|
534
524
|
}
|
|
535
525
|
|
|
@@ -538,8 +528,8 @@ useComponentHost(() => import('../components/ui-tooltip/ui-tooltip.js'), {
|
|
|
538
528
|
background: Canvas;
|
|
539
529
|
border-color: CanvasText;
|
|
540
530
|
box-shadow: none;
|
|
541
|
-
backdrop-filter: none;
|
|
542
531
|
-webkit-backdrop-filter: none;
|
|
532
|
+
backdrop-filter: none;
|
|
543
533
|
}
|
|
544
534
|
}
|
|
545
535
|
:global(.shortcut:where([data-hn-ui-tooltip])) {
|
package/vue/chunks/UiButton.js
CHANGED
package/vue/chunks/UiCallout.js
CHANGED
package/vue/chunks/UiCard.js
CHANGED
|
@@ -127,7 +127,7 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
|
|
|
127
127
|
},
|
|
128
128
|
required: false,
|
|
129
129
|
target: { attribute: "treatment" },
|
|
130
|
-
description: "How much of the theme's decorative material the surface expresses. standard preserves its restrained treatment; expressive uses the full material\n treatment. This does not add elevation or require glass.",
|
|
130
|
+
description: "How much of the theme's decorative material the surface expresses. standard preserves its restrained treatment; expressive uses the full material\n treatment. Its glass rim can transmit and frost the surrounding scene while content remains opaque. Surface separation controls the rim, independently of frosting. This does not add elevation or require glass.",
|
|
131
131
|
values: ["standard", "expressive"],
|
|
132
132
|
default: "standard"
|
|
133
133
|
},
|
|
@@ -298,6 +298,6 @@ var UiCard_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
|
|
|
298
298
|
}]]);
|
|
299
299
|
};
|
|
300
300
|
}
|
|
301
|
-
}), [["__scopeId", "data-v-
|
|
301
|
+
}), [["__scopeId", "data-v-b628f494"]]);
|
|
302
302
|
//#endregion
|
|
303
303
|
export { UiCard_default as t };
|
package/vue/chunks/UiCheckbox.js
CHANGED
package/vue/chunks/UiDialog.js
CHANGED
|
@@ -613,6 +613,6 @@ var UiEditorMentionMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
|
|
|
613
613
|
}]]);
|
|
614
614
|
};
|
|
615
615
|
}
|
|
616
|
-
}), [["__scopeId", "data-v-
|
|
616
|
+
}), [["__scopeId", "data-v-54879c45"]]);
|
|
617
617
|
//#endregion
|
|
618
618
|
export { UiEditorMentionMenu_default as t };
|
|
@@ -135,6 +135,6 @@ var UiEditorMentionMenuItem_default = /*#__PURE__*/ _plugin_vue_export_helper_de
|
|
|
135
135
|
}]]);
|
|
136
136
|
};
|
|
137
137
|
}
|
|
138
|
-
}), [["__scopeId", "data-v-
|
|
138
|
+
}), [["__scopeId", "data-v-9537bb4e"]]);
|
|
139
139
|
//#endregion
|
|
140
140
|
export { UiEditorMentionMenuItem_default as t };
|
|
@@ -495,6 +495,6 @@ var UiEditorTableContextMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_d
|
|
|
495
495
|
}]]);
|
|
496
496
|
};
|
|
497
497
|
}
|
|
498
|
-
}), [["__scopeId", "data-v-
|
|
498
|
+
}), [["__scopeId", "data-v-08c865b7"]]);
|
|
499
499
|
//#endregion
|
|
500
500
|
export { UiEditorTableContextMenu_default as t };
|
|
@@ -702,6 +702,6 @@ var UiEditorTableToolbar_default = /*#__PURE__*/ _plugin_vue_export_helper_defau
|
|
|
702
702
|
}]]);
|
|
703
703
|
};
|
|
704
704
|
}
|
|
705
|
-
}), [["__scopeId", "data-v-
|
|
705
|
+
}), [["__scopeId", "data-v-1103cb89"]]);
|
|
706
706
|
//#endregion
|
|
707
707
|
export { UiEditorTableToolbar_default as t };
|