* [PATCH yew-widget-toolkit-assets 2/3] tree-wide: replace the disabled opacity with a variable and decrease it
2026-03-05 11:21 [PATCH yew-widget-toolkit/yew-widget-toolkit-assets 0/4] yew ui tweaks Shannon Sterz
2026-03-05 11:21 ` [PATCH yew-widget-toolkit-assets 1/3] dialog: allow resize handle to fill the padding space in dialogs Shannon Sterz
@ 2026-03-05 11:21 ` Shannon Sterz
2026-03-05 11:21 ` [PATCH yew-widget-toolkit-assets 3/3] docs: run `make refresh` Shannon Sterz
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Shannon Sterz @ 2026-03-05 11:21 UTC (permalink / raw)
To: yew-devel
material design 3 uses an opacity of only 38% for disabled buttons and
input fields [1,2]. adopt this opacity for disabled input fields to
increase the contrast between disabled and enabled elements. in order
to make changing this in the feature easier, the opacity is also moved
into a css variable.
[1]: https://m3.material.io/components/text-fields/specs
[2]: https://m3.material.io/components/buttons/specs
Signed-off-by: Shannon Sterz <s.sterz@proxmox.com>
---
scss/_button.scss | 4 ++--
scss/_date_selector.scss | 4 ++--
scss/_input.scss | 12 ++++++------
| 4 ++--
scss/_miniscroll.scss | 4 ++--
scss/_nav.scss | 4 ++--
scss/_theme_common.scss | 4 ++++
scss/_theme_post.scss | 9 ++++++++-
8 files changed, 28 insertions(+), 17 deletions(-)
diff --git a/scss/_button.scss b/scss/_button.scss
index 417f74c..ef21fa5 100644
--- a/scss/_button.scss
+++ b/scss/_button.scss
@@ -33,7 +33,7 @@
&[aria-disabled="true"] {
@include color-scheme-vars("inverse-surface");
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
}
@@ -83,7 +83,7 @@ button,
&:disabled,
&[aria-disabled="true"] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
@include elevation-box-shadow(0);
&:not(.pwt-button-text) {
diff --git a/scss/_date_selector.scss b/scss/_date_selector.scss
index 126d5f2..9500194 100644
--- a/scss/_date_selector.scss
+++ b/scss/_date_selector.scss
@@ -33,7 +33,7 @@
}
&.disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
cursor: default !important;
}
@@ -57,4 +57,4 @@
opacity: 0.5;
padding: var(--pwt-spacer-1);
}
-}
\ No newline at end of file
+}
diff --git a/scss/_input.scss b/scss/_input.scss
index b01edca..293717c 100644
--- a/scss/_input.scss
+++ b/scss/_input.scss
@@ -87,7 +87,7 @@ input {
&:disabled,
&[aria-disabled=true]{
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
}
@@ -119,7 +119,7 @@ input {
}
.pwt-label-disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-switch {
@@ -178,7 +178,7 @@ input {
&.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
}
@@ -231,7 +231,7 @@ input {
&.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
&.disabled.checked {
@@ -279,7 +279,7 @@ input {
&.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
}
@@ -312,7 +312,7 @@ input {
&.disabled,
&:disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
}
--git a/scss/_menu.scss b/scss/_menu.scss
index 2dcd3c3..fdfd4db 100644
--- a/scss/_menu.scss
+++ b/scss/_menu.scss
@@ -56,7 +56,7 @@ ul.pwt-menubar {
.pwt-menubar-item{
&[disabled], &[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
}
@@ -101,7 +101,7 @@ ul.pwt-menu {
.pwt-menu-item {
&[disabled], &[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
}
diff --git a/scss/_miniscroll.scss b/scss/_miniscroll.scss
index 7747297..b4cab0e 100644
--- a/scss/_miniscroll.scss
+++ b/scss/_miniscroll.scss
@@ -59,7 +59,7 @@
&.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
}
@@ -81,7 +81,7 @@
&.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
}
}
diff --git a/scss/_nav.scss b/scss/_nav.scss
index c402ec5..08102d4 100644
--- a/scss/_nav.scss
+++ b/scss/_nav.scss
@@ -47,7 +47,7 @@
}
&.disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
cursor: auto;
}
}
@@ -107,7 +107,7 @@
}
&.disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
cursor: auto;
}
}
diff --git a/scss/_theme_common.scss b/scss/_theme_common.scss
index a0db087..409be88 100644
--- a/scss/_theme_common.scss
+++ b/scss/_theme_common.scss
@@ -62,5 +62,9 @@ $elevation-levels-tint-opacity: (
5: 14%,
);
+$element-state-opacity: (
+ disabled: 0.38,
+);
+
// default accent color (primary, secentary or tertiary)
$default-accent-color: secondary;
diff --git a/scss/_theme_post.scss b/scss/_theme_post.scss
index 459ec4f..c3b8642 100644
--- a/scss/_theme_post.scss
+++ b/scss/_theme_post.scss
@@ -58,6 +58,13 @@
}
}
+/* Opacity of elements in certain states. */
+:root {
+ @each $level, $value in $element-state-opacity {
+ --pwt-#{$level}-opacity: #{$value};
+ }
+}
+
/* Font setup */
@font-face {
font-family: "Roboto Flex";
@@ -121,4 +128,4 @@ $pwt-font-monospace: monospace;
@import "tooltip";
@import "embedded_html";
-@import "rrd"; // only useed by proxmox RRD component
\ No newline at end of file
+@import "rrd"; // only useed by proxmox RRD component
--
2.47.3
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH yew-widget-toolkit-assets 3/3] docs: run `make refresh`
2026-03-05 11:21 [PATCH yew-widget-toolkit/yew-widget-toolkit-assets 0/4] yew ui tweaks Shannon Sterz
2026-03-05 11:21 ` [PATCH yew-widget-toolkit-assets 1/3] dialog: allow resize handle to fill the padding space in dialogs Shannon Sterz
2026-03-05 11:21 ` [PATCH yew-widget-toolkit-assets 2/3] tree-wide: replace the disabled opacity with a variable and decrease it Shannon Sterz
@ 2026-03-05 11:21 ` Shannon Sterz
2026-03-05 11:21 ` [PATCH yew-widget-toolkit 1/1] gridpicker/combobox: allow autoselecting the filter field Shannon Sterz
2026-03-05 12:54 ` applied: [PATCH yew-widget-toolkit/yew-widget-toolkit-assets 0/4] yew ui tweaks Dominik Csapak
4 siblings, 0 replies; 6+ messages in thread
From: Shannon Sterz @ 2026-03-05 11:21 UTC (permalink / raw)
To: yew-devel
Signed-off-by: Shannon Sterz <s.sterz@proxmox.com>
---
Documentation.md | 26 ++++++-
docs/css/crisp-yew-style.css | 115 +++++++++++++++++++++++------
docs/css/desktop-yew-style.css | 115 +++++++++++++++++++++++------
docs/css/material-yew-style.css | 126 +++++++++++++++++++++++++-------
4 files changed, 306 insertions(+), 76 deletions(-)
diff --git a/Documentation.md b/Documentation.md
index c37d823..8d139d5 100644
--- a/Documentation.md
+++ b/Documentation.md
@@ -108,6 +108,10 @@ changes the colors of the widget. The `pwt-scheme-<name>` and
`pwt-scheme-<name>-container` helper classes can be used to set
those variables.
+There is also the `pwt-default-colors` class to set the `color` and
+`background-color` properties directly to the `--pwt-color` and
+`--pwt-color-background` respectively.
+
A similar scheme is used for widgets with an associated accent color, using
the following CSS variables:
@@ -234,6 +238,8 @@ This theme uses the [material design baseline colors](https://m3.material.io/sty
- use elevated box with box-shadow
+`pwt-side-dialog-bottom`
+: overwrite corner radius
### The "Crisp" Theme
@@ -397,6 +403,7 @@ For the following elevation levels: 0, 1, 2, 3, 4, 5
- `pwt-opacity-<value>`: set `opacity` property to percentage for values in
- 0, 25, 50, 75, 100
+- `pwt-delay-visibility`: delay visibility by animating opacity from 0 to 1
## Content Spacer Class
@@ -456,9 +463,26 @@ The following classes can be used to adopt the button style for mobile/touch dev
##### FAB Menus
+Class `pwt-fab-menu-outer`
+
+This class is used to arrange the FAB and the menu.
+
+Class `pwt-fab-menu-main`
+
+This class is the container for the main button, and uses for aligning
+the close button correctly for different directions and sizes.
+
Class `pwt-fab-menu-container`
-This class is used to arrange FABs as a menu.
+This class is the container for the fab menu items.
+
+Classes `pwt-fab-direction-{up,down}`
+
+These are used to control the layout of the FAB to the menu and the direction of the animations
+
+Classes `pwt-fab-align-{start,end}`
+
+These are used to align the button according to the alignment
## Panel Widget
diff --git a/docs/css/crisp-yew-style.css b/docs/css/crisp-yew-style.css
index 3f2f310..7485308 100644
--- a/docs/css/crisp-yew-style.css
+++ b/docs/css/crisp-yew-style.css
@@ -359,6 +359,11 @@ table {
--pwt-state-layer-opacity-5: 14%;
}
+/* Opacity of elements in certain states. */
+:root {
+ --pwt-disabled-opacity: 0.38;
+}
+
/* Font setup */
@font-face {
font-family: "Roboto Flex";
@@ -4013,7 +4018,7 @@ h6,
--pwt-color-background: var(--pwt-color-inverse-surface) ;
--pwt-color: var(--pwt-color-on-inverse-surface) ;
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
button,
@@ -4049,7 +4054,7 @@ button,
}
.pwt-button.disabled, .pwt-button:disabled, .pwt-button[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
box-shadow: var(--pwt-color-shadow) 0px calc(var(--pwt-elevation-level-0) / 2) var(--pwt-elevation-level-0);
}
.pwt-button.disabled:not(.pwt-button-text), .pwt-button:disabled:not(.pwt-button-text), .pwt-button[aria-disabled=true]:not(.pwt-button-text) {
@@ -4815,6 +4820,68 @@ tr.row-cursor {
cursor: pointer;
}
+.pwt-date-panel {
+ display: grid;
+ text-align: center;
+ align-items: center;
+}
+.pwt-date-panel .pwt-date-panel-item {
+ font-family: "Roboto Flex";
+ font-size: 14px;
+ font-weight: 500;
+ font-variation-settings: "opsz" 14, "wdth" 110, "wght" 500;
+ line-height: 17px;
+ --pwt-color-background: var(--pwt-color-neutral) ;
+ --pwt-color: var(--pwt-color-on-neutral) ;
+ color: var(--pwt-color);
+ background-color: var(--pwt-color-background);
+ cursor: pointer;
+ padding: var(--pwt-spacer-1);
+ border-radius: var(--pwt-shape-corner-small) !important;
+ min-width: 2em;
+}
+.pwt-date-panel .pwt-date-panel-item:hover {
+ --pwt-elevated-background-color: color-mix( in srgb, var(--pwt-color) var(--pwt-state-layer-opacity-hover), var(--pwt-color-background) );
+ background-color: var(--pwt-elevated-background-color);
+}
+.pwt-date-panel .pwt-date-panel-item:focus, .pwt-date-panel .pwt-date-panel-item.focused {
+ outline: 2px solid var(--pwt-color-on-surface);
+ outline-offset: -2px;
+}
+.pwt-date-panel .pwt-date-panel-item.selected {
+ --pwt-color-background: var(--pwt-color-primary) ;
+ --pwt-color: var(--pwt-color-on-primary) ;
+}
+.pwt-date-panel .pwt-date-panel-item.disabled {
+ opacity: var(--pwt-disabled-opacity);
+ cursor: default !important;
+}
+.pwt-date-panel .pwt-date-panel-item.other-month {
+ opacity: 0.5;
+}
+.pwt-date-panel .pwt-date-panel-item.pwt-today {
+ --pwt-color-background: var(--pwt-color-secondary-container) ;
+ --pwt-color: var(--pwt-color-on-secondary-container) ;
+}
+.pwt-date-panel .pwt-date-panel-header {
+ font-family: "Roboto Flex";
+ font-size: 11px;
+ font-weight: 400;
+ font-variation-settings: "opsz" 11, "wdth" 100, "wght" 400;
+ line-height: 14px;
+ opacity: 0.5;
+ padding: var(--pwt-spacer-1);
+}
+.pwt-date-panel .pwt-date-panel-week-number {
+ font-family: "Roboto Flex";
+ font-size: 11px;
+ font-weight: 400;
+ font-variation-settings: "opsz" 11, "wdth" 100, "wght" 400;
+ line-height: 14px;
+ opacity: 0.5;
+ padding: var(--pwt-spacer-1);
+}
+
dialog.pwt-outer-dialog {
overflow: visible;
background-color: transparent;
@@ -4862,33 +4929,33 @@ dialog.pwt-outer-dialog > .pwt-dialog {
touch-action: none;
}
.pwt-dialog .dialog-resize-handle.west, .pwt-dialog .dialog-resize-handle.east, .pwt-dialog .dialog-resize-handle.north-east, .pwt-dialog .dialog-resize-handle.north-west, .pwt-dialog .dialog-resize-handle.south-east, .pwt-dialog .dialog-resize-handle.south-west {
- width: 5px;
+ width: var(--pwt-spacer-2);
}
.pwt-dialog .dialog-resize-handle.north, .pwt-dialog .dialog-resize-handle.south, .pwt-dialog .dialog-resize-handle.north-east, .pwt-dialog .dialog-resize-handle.north-west, .pwt-dialog .dialog-resize-handle.south-east, .pwt-dialog .dialog-resize-handle.south-west {
- height: 5px;
+ height: var(--pwt-spacer-2);
}
.pwt-dialog .dialog-resize-handle.west {
- top: 5px;
- bottom: 5px;
+ top: var(--pwt-spacer-2);
+ bottom: var(--pwt-spacer-2);
left: 0px;
cursor: w-resize;
}
.pwt-dialog .dialog-resize-handle.east {
- top: 5px;
- bottom: 5px;
+ top: var(--pwt-spacer-2);
+ bottom: var(--pwt-spacer-2);
right: 0px;
cursor: e-resize;
}
.pwt-dialog .dialog-resize-handle.north {
top: 0px;
- left: 5px;
- right: 5px;
+ left: var(--pwt-spacer-2);
+ right: var(--pwt-spacer-2);
cursor: n-resize;
}
.pwt-dialog .dialog-resize-handle.south {
bottom: 0px;
- left: 5px;
- right: 5px;
+ left: var(--pwt-spacer-2);
+ right: var(--pwt-spacer-2);
cursor: s-resize;
}
.pwt-dialog .dialog-resize-handle.north-west {
@@ -5153,7 +5220,7 @@ input[aria-disabled=true] {
}
.pwt-input.disabled, .pwt-input:disabled, .pwt-input[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-input.pwt-input-type-number .spinner i {
@@ -5180,7 +5247,7 @@ input[aria-disabled=true] {
}
.pwt-label-disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-switch {
@@ -5234,7 +5301,7 @@ input[aria-disabled=true] {
}
.pwt-switch.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-checkbox-state {
@@ -5288,7 +5355,7 @@ input[aria-disabled=true] {
}
.pwt-checkbox.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-checkbox.disabled.checked {
color: var(--pwt-color);
@@ -5329,7 +5396,7 @@ input[aria-disabled=true] {
}
.pwt-radio-button.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-textarea {
@@ -5357,7 +5424,7 @@ input[aria-disabled=true] {
}
.pwt-textarea.disabled, .pwt-textarea:disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-input-display {
@@ -5475,7 +5542,7 @@ ul.pwt-menubar .pwt-menubar-item:focus-visible {
}
ul.pwt-menubar .pwt-menubar-item[disabled], ul.pwt-menubar .pwt-menubar-item[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
ul.pwt-menubar .pwt-menubar-item-icon {
font-size: 16px;
@@ -5513,7 +5580,7 @@ ul.pwt-menu .pwt-menu-item {
}
ul.pwt-menu .pwt-menu-item[disabled], ul.pwt-menu .pwt-menu-item[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
ul.pwt-menu .pwt-menu-item:focus-visible {
outline: 2px solid var(--pwt-color-focus);
@@ -5653,7 +5720,7 @@ ul.pwt-menu .pwt-menu-item-arrow:dir(rtl) {
}
.pwt-mini-scroll .pwt-mini-scroll-left-arrow.visible.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-mini-scroll .pwt-mini-scroll-right-arrow {
overflow: hidden;
@@ -5678,7 +5745,7 @@ ul.pwt-menu .pwt-menu-item-arrow:dir(rtl) {
}
.pwt-mini-scroll .pwt-mini-scroll-right-arrow.visible.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
/* Miscellaneous helper classes */
@@ -5888,7 +5955,7 @@ a:focus-within, a:hover {
background-color: var(--pwt-elevated-background-color);
}
.pwt-nav-pills .pwt-nav-link.disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
cursor: auto;
}
.pwt-nav-pills a {
@@ -5945,7 +6012,7 @@ a:focus-within, a:hover {
color: var(--pwt-color-primary);
}
.pwt-tab-material .pwt-nav-link.disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
cursor: auto;
}
.pwt-tab-material a {
diff --git a/docs/css/desktop-yew-style.css b/docs/css/desktop-yew-style.css
index 9304118..a388821 100644
--- a/docs/css/desktop-yew-style.css
+++ b/docs/css/desktop-yew-style.css
@@ -366,6 +366,11 @@ table {
--pwt-state-layer-opacity-5: 14%;
}
+/* Opacity of elements in certain states. */
+:root {
+ --pwt-disabled-opacity: 0.38;
+}
+
/* Font setup */
@font-face {
font-family: "Roboto Flex";
@@ -4020,7 +4025,7 @@ h6,
--pwt-color-background: var(--pwt-color-inverse-surface) ;
--pwt-color: var(--pwt-color-on-inverse-surface) ;
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
button,
@@ -4056,7 +4061,7 @@ button,
}
.pwt-button.disabled, .pwt-button:disabled, .pwt-button[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
box-shadow: var(--pwt-color-shadow) 0px calc(var(--pwt-elevation-level-0) / 2) var(--pwt-elevation-level-0);
}
.pwt-button.disabled:not(.pwt-button-text), .pwt-button:disabled:not(.pwt-button-text), .pwt-button[aria-disabled=true]:not(.pwt-button-text) {
@@ -4822,6 +4827,68 @@ tr.row-cursor {
cursor: pointer;
}
+.pwt-date-panel {
+ display: grid;
+ text-align: center;
+ align-items: center;
+}
+.pwt-date-panel .pwt-date-panel-item {
+ font-family: "Roboto Flex";
+ font-size: 14px;
+ font-weight: 500;
+ font-variation-settings: "opsz" 14, "wdth" 110, "wght" 500;
+ line-height: 20px;
+ --pwt-color-background: var(--pwt-color-neutral) ;
+ --pwt-color: var(--pwt-color-on-neutral) ;
+ color: var(--pwt-color);
+ background-color: var(--pwt-color-background);
+ cursor: pointer;
+ padding: var(--pwt-spacer-1);
+ border-radius: var(--pwt-shape-corner-small) !important;
+ min-width: 2em;
+}
+.pwt-date-panel .pwt-date-panel-item:hover {
+ --pwt-elevated-background-color: color-mix( in srgb, var(--pwt-color) var(--pwt-state-layer-opacity-hover), var(--pwt-color-background) );
+ background-color: var(--pwt-elevated-background-color);
+}
+.pwt-date-panel .pwt-date-panel-item:focus, .pwt-date-panel .pwt-date-panel-item.focused {
+ outline: 2px solid var(--pwt-color-on-surface);
+ outline-offset: -2px;
+}
+.pwt-date-panel .pwt-date-panel-item.selected {
+ --pwt-color-background: var(--pwt-color-primary) ;
+ --pwt-color: var(--pwt-color-on-primary) ;
+}
+.pwt-date-panel .pwt-date-panel-item.disabled {
+ opacity: var(--pwt-disabled-opacity);
+ cursor: default !important;
+}
+.pwt-date-panel .pwt-date-panel-item.other-month {
+ opacity: 0.5;
+}
+.pwt-date-panel .pwt-date-panel-item.pwt-today {
+ --pwt-color-background: var(--pwt-color-secondary-container) ;
+ --pwt-color: var(--pwt-color-on-secondary-container) ;
+}
+.pwt-date-panel .pwt-date-panel-header {
+ font-family: "Roboto Flex";
+ font-size: 11px;
+ font-weight: 500;
+ font-variation-settings: "opsz" 11, "wdth" 130, "wght" 500;
+ line-height: 16px;
+ opacity: 0.5;
+ padding: var(--pwt-spacer-1);
+}
+.pwt-date-panel .pwt-date-panel-week-number {
+ font-family: "Roboto Flex";
+ font-size: 11px;
+ font-weight: 500;
+ font-variation-settings: "opsz" 11, "wdth" 130, "wght" 500;
+ line-height: 16px;
+ opacity: 0.5;
+ padding: var(--pwt-spacer-1);
+}
+
dialog.pwt-outer-dialog {
overflow: visible;
background-color: transparent;
@@ -4869,33 +4936,33 @@ dialog.pwt-outer-dialog > .pwt-dialog {
touch-action: none;
}
.pwt-dialog .dialog-resize-handle.west, .pwt-dialog .dialog-resize-handle.east, .pwt-dialog .dialog-resize-handle.north-east, .pwt-dialog .dialog-resize-handle.north-west, .pwt-dialog .dialog-resize-handle.south-east, .pwt-dialog .dialog-resize-handle.south-west {
- width: 5px;
+ width: var(--pwt-spacer-2);
}
.pwt-dialog .dialog-resize-handle.north, .pwt-dialog .dialog-resize-handle.south, .pwt-dialog .dialog-resize-handle.north-east, .pwt-dialog .dialog-resize-handle.north-west, .pwt-dialog .dialog-resize-handle.south-east, .pwt-dialog .dialog-resize-handle.south-west {
- height: 5px;
+ height: var(--pwt-spacer-2);
}
.pwt-dialog .dialog-resize-handle.west {
- top: 5px;
- bottom: 5px;
+ top: var(--pwt-spacer-2);
+ bottom: var(--pwt-spacer-2);
left: 0px;
cursor: w-resize;
}
.pwt-dialog .dialog-resize-handle.east {
- top: 5px;
- bottom: 5px;
+ top: var(--pwt-spacer-2);
+ bottom: var(--pwt-spacer-2);
right: 0px;
cursor: e-resize;
}
.pwt-dialog .dialog-resize-handle.north {
top: 0px;
- left: 5px;
- right: 5px;
+ left: var(--pwt-spacer-2);
+ right: var(--pwt-spacer-2);
cursor: n-resize;
}
.pwt-dialog .dialog-resize-handle.south {
bottom: 0px;
- left: 5px;
- right: 5px;
+ left: var(--pwt-spacer-2);
+ right: var(--pwt-spacer-2);
cursor: s-resize;
}
.pwt-dialog .dialog-resize-handle.north-west {
@@ -5160,7 +5227,7 @@ input[aria-disabled=true] {
}
.pwt-input.disabled, .pwt-input:disabled, .pwt-input[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-input.pwt-input-type-number .spinner i {
@@ -5187,7 +5254,7 @@ input[aria-disabled=true] {
}
.pwt-label-disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-switch {
@@ -5241,7 +5308,7 @@ input[aria-disabled=true] {
}
.pwt-switch.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-checkbox-state {
@@ -5295,7 +5362,7 @@ input[aria-disabled=true] {
}
.pwt-checkbox.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-checkbox.disabled.checked {
color: var(--pwt-color);
@@ -5336,7 +5403,7 @@ input[aria-disabled=true] {
}
.pwt-radio-button.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-textarea {
@@ -5364,7 +5431,7 @@ input[aria-disabled=true] {
}
.pwt-textarea.disabled, .pwt-textarea:disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-input-display {
@@ -5482,7 +5549,7 @@ ul.pwt-menubar .pwt-menubar-item:focus-visible {
}
ul.pwt-menubar .pwt-menubar-item[disabled], ul.pwt-menubar .pwt-menubar-item[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
ul.pwt-menubar .pwt-menubar-item-icon {
font-size: 16px;
@@ -5520,7 +5587,7 @@ ul.pwt-menu .pwt-menu-item {
}
ul.pwt-menu .pwt-menu-item[disabled], ul.pwt-menu .pwt-menu-item[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
ul.pwt-menu .pwt-menu-item:focus-visible {
outline: 2px solid var(--pwt-color-focus);
@@ -5660,7 +5727,7 @@ ul.pwt-menu .pwt-menu-item-arrow:dir(rtl) {
}
.pwt-mini-scroll .pwt-mini-scroll-left-arrow.visible.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-mini-scroll .pwt-mini-scroll-right-arrow {
overflow: hidden;
@@ -5685,7 +5752,7 @@ ul.pwt-menu .pwt-menu-item-arrow:dir(rtl) {
}
.pwt-mini-scroll .pwt-mini-scroll-right-arrow.visible.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
/* Miscellaneous helper classes */
@@ -5895,7 +5962,7 @@ a:focus-within, a:hover {
background-color: var(--pwt-elevated-background-color);
}
.pwt-nav-pills .pwt-nav-link.disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
cursor: auto;
}
.pwt-nav-pills a {
@@ -5952,7 +6019,7 @@ a:focus-within, a:hover {
color: var(--pwt-color-primary);
}
.pwt-tab-material .pwt-nav-link.disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
cursor: auto;
}
.pwt-tab-material a {
diff --git a/docs/css/material-yew-style.css b/docs/css/material-yew-style.css
index 112e241..b43c220 100644
--- a/docs/css/material-yew-style.css
+++ b/docs/css/material-yew-style.css
@@ -366,6 +366,11 @@ table {
--pwt-state-layer-opacity-5: 14%;
}
+/* Opacity of elements in certain states. */
+:root {
+ --pwt-disabled-opacity: 0.38;
+}
+
/* Font setup */
@font-face {
font-family: "Roboto Flex";
@@ -4020,7 +4025,7 @@ h6,
--pwt-color-background: var(--pwt-color-inverse-surface) ;
--pwt-color: var(--pwt-color-on-inverse-surface) ;
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
button,
@@ -4056,7 +4061,7 @@ button,
}
.pwt-button.disabled, .pwt-button:disabled, .pwt-button[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
box-shadow: var(--pwt-color-shadow) 0px calc(var(--pwt-elevation-level-0) / 2) var(--pwt-elevation-level-0);
}
.pwt-button.disabled:not(.pwt-button-text), .pwt-button:disabled:not(.pwt-button-text), .pwt-button[aria-disabled=true]:not(.pwt-button-text) {
@@ -4822,6 +4827,68 @@ tr.row-cursor {
cursor: pointer;
}
+.pwt-date-panel {
+ display: grid;
+ text-align: center;
+ align-items: center;
+}
+.pwt-date-panel .pwt-date-panel-item {
+ font-family: "Roboto Flex";
+ font-size: 14px;
+ font-weight: 500;
+ font-variation-settings: "opsz" 14, "wdth" 110, "wght" 500;
+ line-height: 20px;
+ --pwt-color-background: var(--pwt-color-neutral) ;
+ --pwt-color: var(--pwt-color-on-neutral) ;
+ color: var(--pwt-color);
+ background-color: var(--pwt-color-background);
+ cursor: pointer;
+ padding: var(--pwt-spacer-1);
+ border-radius: var(--pwt-shape-corner-small) !important;
+ min-width: 2em;
+}
+.pwt-date-panel .pwt-date-panel-item:hover {
+ --pwt-elevated-background-color: color-mix( in srgb, var(--pwt-color) var(--pwt-state-layer-opacity-hover), var(--pwt-color-background) );
+ background-color: var(--pwt-elevated-background-color);
+}
+.pwt-date-panel .pwt-date-panel-item:focus, .pwt-date-panel .pwt-date-panel-item.focused {
+ outline: 2px solid var(--pwt-color-on-surface);
+ outline-offset: -2px;
+}
+.pwt-date-panel .pwt-date-panel-item.selected {
+ --pwt-color-background: var(--pwt-color-primary) ;
+ --pwt-color: var(--pwt-color-on-primary) ;
+}
+.pwt-date-panel .pwt-date-panel-item.disabled {
+ opacity: var(--pwt-disabled-opacity);
+ cursor: default !important;
+}
+.pwt-date-panel .pwt-date-panel-item.other-month {
+ opacity: 0.5;
+}
+.pwt-date-panel .pwt-date-panel-item.pwt-today {
+ --pwt-color-background: var(--pwt-color-secondary-container) ;
+ --pwt-color: var(--pwt-color-on-secondary-container) ;
+}
+.pwt-date-panel .pwt-date-panel-header {
+ font-family: "Roboto Flex";
+ font-size: 11px;
+ font-weight: 500;
+ font-variation-settings: "opsz" 11, "wdth" 130, "wght" 500;
+ line-height: 16px;
+ opacity: 0.5;
+ padding: var(--pwt-spacer-1);
+}
+.pwt-date-panel .pwt-date-panel-week-number {
+ font-family: "Roboto Flex";
+ font-size: 11px;
+ font-weight: 500;
+ font-variation-settings: "opsz" 11, "wdth" 130, "wght" 500;
+ line-height: 16px;
+ opacity: 0.5;
+ padding: var(--pwt-spacer-1);
+}
+
dialog.pwt-outer-dialog {
overflow: visible;
background-color: transparent;
@@ -4869,33 +4936,33 @@ dialog.pwt-outer-dialog > .pwt-dialog {
touch-action: none;
}
.pwt-dialog .dialog-resize-handle.west, .pwt-dialog .dialog-resize-handle.east, .pwt-dialog .dialog-resize-handle.north-east, .pwt-dialog .dialog-resize-handle.north-west, .pwt-dialog .dialog-resize-handle.south-east, .pwt-dialog .dialog-resize-handle.south-west {
- width: 5px;
+ width: var(--pwt-spacer-2);
}
.pwt-dialog .dialog-resize-handle.north, .pwt-dialog .dialog-resize-handle.south, .pwt-dialog .dialog-resize-handle.north-east, .pwt-dialog .dialog-resize-handle.north-west, .pwt-dialog .dialog-resize-handle.south-east, .pwt-dialog .dialog-resize-handle.south-west {
- height: 5px;
+ height: var(--pwt-spacer-2);
}
.pwt-dialog .dialog-resize-handle.west {
- top: 5px;
- bottom: 5px;
+ top: var(--pwt-spacer-2);
+ bottom: var(--pwt-spacer-2);
left: 0px;
cursor: w-resize;
}
.pwt-dialog .dialog-resize-handle.east {
- top: 5px;
- bottom: 5px;
+ top: var(--pwt-spacer-2);
+ bottom: var(--pwt-spacer-2);
right: 0px;
cursor: e-resize;
}
.pwt-dialog .dialog-resize-handle.north {
top: 0px;
- left: 5px;
- right: 5px;
+ left: var(--pwt-spacer-2);
+ right: var(--pwt-spacer-2);
cursor: n-resize;
}
.pwt-dialog .dialog-resize-handle.south {
bottom: 0px;
- left: 5px;
- right: 5px;
+ left: var(--pwt-spacer-2);
+ right: var(--pwt-spacer-2);
cursor: s-resize;
}
.pwt-dialog .dialog-resize-handle.north-west {
@@ -5160,7 +5227,7 @@ input[aria-disabled=true] {
}
.pwt-input.disabled, .pwt-input:disabled, .pwt-input[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-input.pwt-input-type-number .spinner i {
@@ -5187,7 +5254,7 @@ input[aria-disabled=true] {
}
.pwt-label-disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-switch {
@@ -5241,7 +5308,7 @@ input[aria-disabled=true] {
}
.pwt-switch.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-checkbox-state {
@@ -5295,7 +5362,7 @@ input[aria-disabled=true] {
}
.pwt-checkbox.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-checkbox.disabled.checked {
color: var(--pwt-color);
@@ -5336,7 +5403,7 @@ input[aria-disabled=true] {
}
.pwt-radio-button.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-textarea {
@@ -5364,7 +5431,7 @@ input[aria-disabled=true] {
}
.pwt-textarea.disabled, .pwt-textarea:disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-input-display {
@@ -5482,7 +5549,7 @@ ul.pwt-menubar .pwt-menubar-item:focus-visible {
}
ul.pwt-menubar .pwt-menubar-item[disabled], ul.pwt-menubar .pwt-menubar-item[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
ul.pwt-menubar .pwt-menubar-item-icon {
font-size: 16px;
@@ -5520,7 +5587,7 @@ ul.pwt-menu .pwt-menu-item {
}
ul.pwt-menu .pwt-menu-item[disabled], ul.pwt-menu .pwt-menu-item[aria-disabled=true] {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
ul.pwt-menu .pwt-menu-item:focus-visible {
outline: 2px solid var(--pwt-color-focus);
@@ -5660,7 +5727,7 @@ ul.pwt-menu .pwt-menu-item-arrow:dir(rtl) {
}
.pwt-mini-scroll .pwt-mini-scroll-left-arrow.visible.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
.pwt-mini-scroll .pwt-mini-scroll-right-arrow {
overflow: hidden;
@@ -5685,7 +5752,7 @@ ul.pwt-menu .pwt-menu-item-arrow:dir(rtl) {
}
.pwt-mini-scroll .pwt-mini-scroll-right-arrow.visible.disabled {
cursor: auto;
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
}
/* Miscellaneous helper classes */
@@ -5895,7 +5962,7 @@ a:focus-within, a:hover {
background-color: var(--pwt-elevated-background-color);
}
.pwt-nav-pills .pwt-nav-link.disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
cursor: auto;
}
.pwt-nav-pills a {
@@ -5952,7 +6019,7 @@ a:focus-within, a:hover {
color: var(--pwt-color-primary);
}
.pwt-tab-material .pwt-nav-link.disabled {
- opacity: 0.5;
+ opacity: var(--pwt-disabled-opacity);
cursor: auto;
}
.pwt-tab-material a {
@@ -6754,13 +6821,18 @@ ul.pwt-menubar {
}
.pwt-tab-material .pwt-nav-link span {
display: flex;
- flex-direction: column;
align-items: center;
- gap: 0;
}
-.pwt-tab-material .pwt-nav-link span:before {
+.pwt-tab-material.primary .pwt-nav-link span {
+ gap: 0;
+ flex-direction: column;
+}
+.pwt-tab-material.primary .pwt-nav-link span:before {
font-size: 20px;
}
+.pwt-tab-material.secondary span {
+ flex-direction: row;
+}
.pwt-datatable-content:not(.table-borderless) tr {
border-color: var(--pwt-elevated-background-color);
--
2.47.3
^ permalink raw reply [flat|nested] 6+ messages in thread