@vaadin/aura 25.0.0-alpha19 → 25.0.0-alpha20

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/aura.css CHANGED
@@ -7,8 +7,24 @@
7
7
  @import './src/typography.css';
8
8
 
9
9
  @import './src/components/app-layout.css';
10
+ @import './src/components/avatar.css';
11
+ @import './src/components/button.css';
12
+ @import './src/components/card.css';
13
+ @import './src/components/checkbox-radio.css';
14
+ @import './src/components/date-picker.css';
15
+ @import './src/components/dialog.css';
16
+ @import './src/components/grid.css';
17
+ @import './src/components/input-container.css';
18
+ @import './src/components/master-detail-layout.css';
19
+ @import './src/components/message-input.css';
20
+ @import './src/components/multi-select-combo-box.css';
21
+ @import './src/components/notification.css';
10
22
  @import './src/components/overlay.css';
23
+ @import './src/components/select.css';
24
+ @import './src/components/side-nav.css';
11
25
 
12
- :where(html) {
26
+ :where(:root, :host) {
13
27
  cursor: default;
28
+ /* TODO: slightly smaller chevron than the one in base styles - consider if we should do this in base styles */
29
+ --_vaadin-icon-chevron-down: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>');
14
30
  }
package/dist/aura.css ADDED
@@ -0,0 +1 @@
1
+ :where(:root,:host){--aura-contrast:1;--aura-accent-light:#1858d8;--aura-accent-dark:#3670e2;--_color-base:light-dark(oklch(from var(--aura-background-light) 0.1 calc(c / 2 + c * (1 - c)) h),oklch(from var(--aura-background-dark) 1 c h));--vaadin-text-color:light-dark(color-mix(in srgb,var(--_color-base) calc(90% + 5%*var(--aura-contrast)),transparent),color-mix(in srgb,#fff calc(90% + 5%*var(--aura-contrast)),transparent));--vaadin-text-color-secondary:light-dark(color-mix(in srgb,var(--_color-base) calc(55% + 10%*var(--aura-contrast)),transparent),color-mix(in srgb,var(--_color-base) calc(57% + 10%*var(--aura-contrast)),transparent));--vaadin-text-color-disabled:color-mix(in srgb,var(--_color-base) calc(30% + 10%*var(--aura-contrast)),transparent);--_border-color-base:light-dark(oklch(from var(--aura-background-light) 0.1 c h),oklch(from var(--aura-background-dark) 0.85 c h));--vaadin-border-color:color-mix(in srgb,var(--_border-color-base) calc(14% + 6%*var(--aura-contrast)),transparent);--vaadin-border-color-secondary:light-dark(color-mix(in srgb,var(--_border-color-base) max(5%,5% + 3% * var(--aura-contrast)),transparent),color-mix(in srgb,var(--_border-color-base) max(6%,5% + 5% * var(--aura-contrast)),transparent));--aura-background-light:oklch(from var(--aura-accent-light) min(1,l + (1 - l) * 0.9) calc(c * 0.05) h);--aura-background-dark:oklch(from var(--aura-accent-dark) max(0,l/2 - (1 - l) * 0.2) calc(c * 0.05) h);--aura-background:light-dark(var(--aura-background-light),var(--aura-background-dark));--_bg-alt:oklch(from var(--aura-background) calc(l + c) min(c,c * 2 - l/20) calc(h + 180 * var(--_safari-17-deg, 1deg) * l * c * 4));--_bg-accent:radial-gradient(circle at 0% 0%,light-dark(oklch(from var(--aura-background-light) min(1,l + c * 3) min(c,c * 3 - l/20) h),oklch(from var(--aura-background-dark) min(1,l + c) clamp(0,c * 1.5,0.4) h)),transparent 30%);--aura-app-background:var(--_bg-accent),radial-gradient(circle at 25% 0% in xyz,var(--aura-background) 33%,var(--_bg-alt));--aura-accent-color:light-dark(var(--aura-accent-light),var(--aura-accent-dark));--vaadin-focus-ring-color:var(--aura-accent-color);accent-color:var(--aura-accent-color);--aura-accent-contrast:light-dark(oklch(from var(--aura-accent-light) clamp(0,(0.62 - l) * 1000,1) 0 0),oklch(from var(--aura-accent-dark) clamp(0,(0.62 - l) * 1000,1) 0 0));--aura-accent-text-light:color-mix(in srgb,var(--aura-accent-light) calc(70% - 15%*var(--aura-contrast)),var(--vaadin-text-color));--aura-accent-text-dark:color-mix(in srgb,var(--aura-accent-dark) calc(70% - 15%*var(--aura-contrast)),var(--vaadin-text-color));--aura-accent-text:light-dark(var(--aura-accent-text-light),var(--aura-accent-text-dark));--vaadin-user-color:var(--aura-accent-color);--vaadin-background-container:color-mix(in srgb,var(--_color-base) calc(3% + min(3%, 1% * var(--aura-contrast))),transparent);--vaadin-background-container-strong:color-mix(in srgb,var(--_color-base) calc(7% + min(8%, 1.5% * var(--aura-contrast))),transparent);background:var(--aura-app-background);background-attachment:fixed;background-size:100vw 100vh;color:var(--vaadin-text-color)}@supports (color:hsl(0 0 0)){:where(:root,:host){--_safari-17-deg:1}}:where(h1,h2,h3,h4,h5,h6){color:var(--vaadin-text-color)}:where(:root,:host){--aura-color-scheme:light;--aura-content-color-scheme:var(--aura-color-scheme);--aura-notification-color-scheme:var(--aura-color-scheme)}html{color-scheme:var(--aura-color-scheme)}:where(:root,:host){--aura-red:oklch(0.6 0.22 25);--aura-orange:oklch(0.61 0.4 93);--aura-yellow:oklch(0.9 0.36 105);--aura-green:oklch(0.6 0.28 160);--aura-blue:oklch(0.6 0.3 240);--aura-purple:oklch(0.6 0.3 280);--aura-red-text:color-mix(in srgb,var(--aura-red) calc(70% - 15%*var(--aura-contrast)),var(--vaadin-text-color));--aura-orange-text:color-mix(in srgb,var(--aura-orange) calc(70% - 15%*var(--aura-contrast)),var(--vaadin-text-color));--aura-yellow-text:color-mix(in srgb,var(--aura-yellow) calc(65% - 15%*var(--aura-contrast)),var(--vaadin-text-color));--aura-green-text:color-mix(in srgb,var(--aura-green) calc(70% - 15%*var(--aura-contrast)),var(--vaadin-text-color));--aura-blue-text:color-mix(in srgb,var(--aura-blue) calc(70% - 15%*var(--aura-contrast)),var(--vaadin-text-color));--aura-purple-text:color-mix(in srgb,var(--aura-purple) calc(70% - 15%*var(--aura-contrast)),var(--vaadin-text-color))}:where(:root,:host){--aura-shadow-color:light-dark(oklch(from var(--aura-background-light) calc(l - l * 0.8) calc(c / 10) h/0.2),oklch(from var(--aura-background-dark) calc(l - l * 0.8) calc(c / 10) h/0.2));--aura-shadow-m:0 8px 16px -3px var(--aura-shadow-color)}:where(:root,:host){--aura-base-size:16;--_size-ref:16;--aura-base-radius:3;--vaadin-radius-s:min(0.25lh,round(var(--aura-base-radius) * 1px + 2px,1px));--vaadin-radius-m:round(var(--aura-base-radius) * 2px + 3px,1px);--vaadin-radius-l:round(var(--aura-base-radius) * 1.5px + 10px,1px)}:where(:root,:host,[theme]){--vaadin-padding-xs:round(var(--aura-base-size) * 0.25 * pow(var(--aura-base-size)/var(--_size-ref),0.5) * 1px,1px);--vaadin-padding-s:round(var(--aura-base-size) * 0.5 * pow(var(--aura-base-size)/var(--_size-ref),0.75) * 1px,1px);--vaadin-padding-m:round(var(--aura-base-size) * 0.75 * pow(var(--aura-base-size)/var(--_size-ref),0.3) * 1px,1px);--vaadin-padding-l:calc(var(--aura-base-size)*1px);--vaadin-padding-xl:round(var(--aura-base-size) * 1.5 * pow(var(--aura-base-size)/var(--_size-ref),0.1) * 1px,1px);--vaadin-padding-container:round(var(--vaadin-padding-s)/1.4,1px) max(var(--vaadin-padding-s),round(var(--vaadin-radius-m)/2,1px));--vaadin-gap-xs:var(--vaadin-padding-xs);--vaadin-gap-s:var(--vaadin-padding-s);--vaadin-gap-m:var(--vaadin-padding-m);--vaadin-gap-l:var(--vaadin-padding-l);--vaadin-gap-xl:var(--vaadin-padding-xl)}@media (pointer:coarse){:where(:root,:host){--aura-base-size:19}}:where(:root,:host){--aura-surface-level:1}.aura-surface,.aura-surface-solid,::part(input-field),::part(overlay),:is(:root,:host),vaadin-app-layout::part(drawer),vaadin-app-layout::part(navbar),vaadin-button,vaadin-card,vaadin-checkbox::part(checkbox),vaadin-master-detail-layout::part(detail),vaadin-menu-bar-button,vaadin-message-input,vaadin-radio-button::part(radio),vaadin-side-nav-item::part(content){--aura-surface-opacity:0.5;--aura-surface-solid:light-dark(oklch(from var(--aura-background-light) min(1,l + (0.98 - l) * 4 + var(--aura-surface-level) * (0.07 - 0.01 * var(--aura-contrast)) - var(--aura-surface-opacity)/20) clamp(0,c - l/10 * var(--aura-surface-level) + var(--aura-surface-opacity)/40,c) h),oklch(from var(--aura-background-dark) calc(max(l + 0.03, 0.25) + var(--aura-surface-level)*(0.03 - var(--aura-contrast)*0.008) - var(--aura-surface-opacity)/40) clamp(0,c * (1 + l),0.2) h));--aura-surface:color-mix(in oklab,var(--aura-surface-solid) calc(100%*var(--aura-surface-opacity)),transparent);--vaadin-background-color:var(--aura-surface-solid)}.aura-surface{background:var(--aura-surface) padding-box}.aura-surface-solid{--aura-surface-opacity:1;background:var(--aura-surface-solid) padding-box}@font-face{font-display:swap;font-family:Instrument Sans;font-style:normal;font-weight:400 700;src:url(fonts/InstrumentSans/InstrumentSans.woff2) format("woff2")}:where(:root,:host){--aura-font-family-system:system-ui,ui-sans-serif,sans-serif;--aura-font-family-instrument-sans:"Instrument Sans",var(--aura-font-family-system);--aura-font-family:var(--aura-font-family-instrument-sans);--aura-base-font-size:16;--aura-font-size-scale:1.125;--aura-base-line-height:1.4;--aura-font-weight:400;--aura-font-weight-medium:500;--aura-font-weight-semibold:600}@media (pointer:fine){:where(:root,:host){--aura-base-font-size:14}}@supports (-webkit-touch-callout:none){@media (pointer:coarse){:where(:root,:host){font:-apple-system-body;--aura-base-font-size:14}}}:where(:root,:host,[theme]){--aura-font-size-xs:round(var(--aura-font-size-s)/var(--aura-font-size-scale),0.0625rem);--aura-font-size-s:round(var(--aura-font-size-m)/var(--aura-font-size-scale),0.0625rem);--aura-font-size-m:round(var(--aura-base-font-size)/16 * 1rem,0.0625rem);--aura-font-size-l:round(var(--aura-font-size-m) * var(--aura-font-size-scale),0.0625rem);--aura-font-size-xl:round(var(--aura-font-size-l) * var(--aura-font-size-scale),0.0625rem);--aura-line-height-xs:round(var(--aura-font-size-xs) * var(--aura-base-line-height),0.125rem);--aura-line-height-s:round(var(--aura-font-size-s) * var(--aura-base-line-height),0.125rem);--aura-line-height-m:round(var(--aura-font-size-m) * var(--aura-base-line-height),0.125rem);--aura-line-height-l:round(var(--aura-font-size-l) * var(--aura-base-line-height),0.125rem);--aura-line-height-xl:round(var(--aura-font-size-xl) * var(--aura-base-line-height),0.125rem)}:where(body,:host){font-family:var(--aura-font-family);font-optical-sizing:auto;font-style:normal;font-weight:var(--aura-font-weight);-webkit-font-smoothing:var(--aura-font-smoothing,antialiased);-moz-osx-font-smoothing:var(--aura-font-smoothing,grayscale);-webkit-text-size-adjust:none;text-size-adjust:none}:where(body,:host,[theme]:not(html)){font-size:var(--aura-font-size-m);line-height:var(--aura-line-height-m)}:where(h1,h2,h3,h4,h5,h6){font-weight:var(--aura-font-weight-semibold);margin:0;text-wrap:balance}:where(h1){font-size:var(--aura-font-size-xl);line-height:var(--aura-line-height-xl)}:where(h2,h3){font-size:var(--aura-font-size-l);line-height:var(--aura-line-height-l)}:where(h4,h5){font-size:var(--aura-font-size-m);line-height:var(--aura-line-height-m)}:where(h6){font-size:var(--aura-font-size-s);line-height:var(--aura-line-height-s)}:where(:root,:host){--aura-app-layout-inset:1.5vmin;--aura-app-layout-radius:var(--vaadin-radius-l);--_aura-mdl-border:1px;--vaadin-app-layout-navbar-padding-top:0;--vaadin-app-layout-navbar-padding-bottom:0;--vaadin-app-layout-navbar-padding-inline-start:0;--vaadin-app-layout-navbar-padding-inline-end:0}@media (height <= 600px),(width <= 800px){html{--aura-app-layout-inset:0px!important;--_aura-mdl-border:0px}}html:has(vaadin-app-layout){&,body{box-sizing:border-box;height:100%;margin:0;width:100%}}vaadin-app-layout{--_app-layout-radius:clamp(0px,var(--aura-app-layout-radius),var(--aura-app-layout-inset) * 100);padding-block:var(--aura-app-layout-inset);padding-inline-end:var(--aura-app-layout-inset);padding-top:calc(var(--aura-app-layout-inset) + var(--_vaadin-app-layout-navbar-offset-size))}vaadin-app-layout[overlay]{&::part(drawer),&::part(navbar){--vaadin-app-layout-navbar-background:var(--aura-surface);--vaadin-app-layout-drawer-background:var(--aura-surface);--aura-surface-opacity:var(--aura-overlay-surface-opacity);-webkit-backdrop-filter:var(--aura-overlay-backdrop-filter);backdrop-filter:var(--aura-overlay-backdrop-filter)}}vaadin-app-layout:is([overlay],:not([drawer-opened])){padding-inline-start:var(--aura-app-layout-inset)}vaadin-app-layout::part(navbar){justify-content:space-between}vaadin-app-layout:not([overlay])::part(navbar){--vaadin-app-layout-navbar-background:transparent}vaadin-app-layout:not([overlay])::part(drawer){padding-block:var(--aura-app-layout-inset);padding-inline:max(0px,var(--aura-app-layout-inset) - var(--vaadin-padding-s))}vaadin-app-layout>vaadin-scroller[slot=drawer]{padding-inline:var(--vaadin-padding-m);scrollbar-width:thin}vaadin-app-layout>vaadin-scroller:nth-child(1 of [slot=drawer]){padding-top:var(--vaadin-padding-s)}vaadin-app-layout>vaadin-scroller:nth-last-child(1 of [slot=drawer]){padding-bottom:var(--vaadin-padding-s)}vaadin-app-layout>:nth-child(1 of :not([slot])):nth-last-child(1 of :not([slot])){background:linear-gradient(var(--aura-surface),var(--aura-surface)),var(--aura-app-background);background-clip:padding-box;background-origin:border-box;border:var(--_aura-mdl-border) solid var(--vaadin-border-color-secondary);border-block-width:min(var(--aura-app-layout-inset),var(--_aura-mdl-border));border-inline-end-width:min(var(--aura-app-layout-inset),var(--_aura-mdl-border));border-radius:var(--_app-layout-radius);box-sizing:border-box;color:var(--vaadin-text-color);color-scheme:var(--aura-content-color-scheme);min-height:100%}vaadin-app-layout>vaadin-master-detail-layout:nth-child(1 of :not([slot])):nth-last-child(1 of :not([slot])){&:not([drawer])::part(detail),&>vaadin-master-detail-layout{border-end-end-radius:var(--_app-layout-radius);border-start-end-radius:var(--_app-layout-radius)}&::part(backdrop){border-radius:calc(var(--_app-layout-radius) - var(--_aura-mdl-border))}&:is([drawer][has-detail]){border-color:light-dark(var(--vaadin-border-color),var(--vaadin-border-color-secondary))}}vaadin-app-layout:has([slot=navbar]):has([slot=drawer]){padding-top:var(--_vaadin-app-layout-navbar-offset-size);&::part(drawer){padding-top:0}}vaadin-app-layout:has([slot=drawer]):not([overlay]):not([drawer-opened])>:nth-child(1 of :not([slot])):nth-last-child(1 of :not([slot])){border-inline-start-width:min(var(--aura-app-layout-inset),var(--_aura-mdl-border))}vaadin-app-layout:has([slot=navbar]):has([slot=drawer])[drawer-opened]:not([overlay])>:nth-child(1 of :not([slot])):nth-last-child(1 of :not([slot])){border-start-start-radius:var(--aura-app-layout-radius)}vaadin-app-layout:has([slot=navbar]):has([slot=drawer])>:nth-child(1 of :not([slot])):nth-last-child(1 of :not([slot])){border-top-width:var(--_aura-mdl-border)}vaadin-app-layout:has([slot=navbar])>:is(:not([slot]),[slot=drawer]) vaadin-drawer-toggle:not([theme~=permanent]),vaadin-app-layout:not(:has([slot=navbar]))>[slot=drawer] vaadin-drawer-toggle:not([theme~=permanent]){display:none}:where(:root,:host){--vaadin-avatar-border-color:var(--vaadin-border-color-secondary);--vaadin-avatar-background:var(--vaadin-background-container);--vaadin-avatar-font-weight:var(--aura-font-weight-medium);--vaadin-avatar-font-size:var(--aura-font-size-m)}vaadin-avatar:not([img]){--_shade:color-mix(in srgb,var(--vaadin-border-color) 20%,transparent);background-image:linear-gradient(light-dark(transparent,var(--_shade)),transparent 50%,light-dark(var(--_shade),transparent))}:where(:root,:host){--vaadin-button-border-color:var(--vaadin-border-color);--vaadin-button-shadow:0 1px 4px -1px rgba(0,0,0,.07)}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle){position:relative;transition:scale .18s}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle):where(:not([theme~=tertiary])){--aura-surface-level:6;--aura-surface-opacity:0.3;box-shadow:var(--vaadin-button-shadow)}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle):not([theme~=primary],[theme~=tertiary]){background:var(--vaadin-button-background,var(--aura-surface) padding-box)}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle):where(:not([theme~=primary])){outline-offset:calc(var(--vaadin-button-border-width, 1px)*-1)}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle):where([theme~=primary]){outline-offset:2px}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle):not(:has(:is(vaadin-icon,svg,i[class*=fa-],vaadin-avatar):not([slot]))){--vaadin-button-padding:round(var(--vaadin-padding-s)/1.4,1px) max(var(--vaadin-padding-m),round(var(--vaadin-radius-m)/1.5,1px))}:is(vaadin-button,vaadin-menu-bar-button):has([slot=prefix]:is(vaadin-icon,svg,i[class*=fa-],vaadin-avatar)),vaadin-drawer-toggle:empty{padding-inline-start:max(var(--vaadin-padding-s),round(var(--vaadin-radius-m)/1.75,1px))}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle):has([slot=suffix]:is(vaadin-icon,svg,i[class*=fa-],vaadin-avatar)),vaadin-drawer-toggle:empty,vaadin-menu-bar-button[aria-haspopup=true]{padding-inline-end:max(var(--vaadin-padding-s),round(var(--vaadin-radius-m)/1.75,1px))}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle)[theme~=primary]{--vaadin-button-font-weight:var(--aura-font-weight-semibold);--vaadin-button-text-color:light-dark(var(--vaadin-background-color),var(--aura-background-dark))}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle)[disabled][theme~=primary]{--vaadin-button-text-color:var(--vaadin-text-color-secondary)}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle):not([disabled]):before{background-color:currentColor;border-radius:inherit;content:"";inset:calc(var(--vaadin-button-border-width, 1px)*-1);opacity:0;pointer-events:none;position:absolute;transition:opacity .1s,background-color .1s}@supports (color:hsl(0 0 0)){:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle):not([disabled]):before{background-color:oklch(from currentColor calc(l + .4 - c) c h)}}@media (any-hover:hover){:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle):hover:not([disabled],[active]):before{opacity:.05}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle)[theme~=primary]:hover:not([disabled],[active]):before{opacity:.12}}@media (min-resolution:2x){:is(vaadin-button,vaadin-menu-bar-button[first-visible][last-visible],vaadin-drawer-toggle)[active]:not([disabled],[aria-disabled=true]){scale:.98;transition-duration:50ms}}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle)[active]:not([disabled]):before{background:oklch(from currentColor min(c,1 - l + c) calc(c * .9) h);opacity:.08;transition-duration:0s}:is(vaadin-button,vaadin-menu-bar-button,vaadin-drawer-toggle)[theme~=primary][active]:not([disabled]):before{opacity:.16}@container style(--_gap: 0){vaadin-menu-bar-button:not(:first-of-type){border-inline-start-color:transparent}}:where(:root,:host){--vaadin-card-title-font-weight:var(--aura-font-weight-medium);--vaadin-card-padding:var(--vaadin-padding-l);--vaadin-card-gap:var(--vaadin-gap-m) var(--vaadin-gap-l);--vaadin-card-border-color:var(--vaadin-border-color-secondary);--vaadin-card-background:var(--aura-surface) padding-box}vaadin-card{--vaadin-card-background:var(--aura-surface) padding-box;--aura-surface-level:2}vaadin-card[theme~=outlined]{border:var(--vaadin-card-border-width,1px) solid transparent;--vaadin-card-padding:calc(var(--vaadin-padding-l) - var(--vaadin-card-border-width, 1px))}vaadin-card[theme~=outlined]:before{inset:calc(var(--vaadin-card-border-width, 1px)*-1)}vaadin-card[theme~=outlined][theme~=cover-media] [slot=media]:is(img,video,svg,vaadin-icon){margin-inline:calc((var(--_padding) + var(--vaadin-card-border-width, 1px))*-1);margin-top:calc((var(--_padding) + var(--vaadin-card-border-width, 1px))*-1);width:calc(100% + (var(--_padding) + var(--vaadin-card-border-width, 1px))*2)}vaadin-card[theme~=elevated]{--aura-surface-opacity:0.7;--aura-surface-level:3;--_shadow-color:light-dark(oklch(from var(--aura-background-light) calc(l - l * 0.8) calc(c / 10) h/0.1),oklch(from var(--aura-background-dark) calc(l - l * 0.8) calc(c / 10) h/0.2));--vaadin-card-shadow:0 1px 6px -1px var(--_shadow-color);background-clip:padding-box}vaadin-card[theme~=stretch-media]:not([theme~=cover-media]) [slot=media]:is(img,video,svg,vaadin-icon){border-radius:var(--vaadin-radius-s)}:where(:root,:host){--vaadin-radio-button-dot-size:6px;--vaadin-checkbox-size:round(1lh - 2px,2px);--vaadin-radio-button-size:round(1lh - 2px,2px)}vaadin-checkbox::part(checkbox),vaadin-radio-button::part(radio){--vaadin-checkbox-background:var(--aura-surface);--vaadin-radio-button-background:var(--aura-surface);transition:background-color .1s}vaadin-checkbox:not([readonly],[disabled])::part(checkbox),vaadin-radio-button:not([disabled])::part(radio){--aura-surface-level:4;box-shadow:0 2px 1px -1px rgba(0,0,0,.07);--_shade:color-mix(in srgb,var(--vaadin-border-color-secondary) 50%,transparent);background-image:linear-gradient(light-dark(transparent,var(--_shade)),transparent 33%,transparent 66%,light-dark(var(--_shade),transparent))}vaadin-checkbox:not([checked],[indeterminate])::part(checkbox),vaadin-radio-button:not([checked])::part(radio){background-clip:padding-box}vaadin-checkbox:is([checked],[indeterminate]):not([readonly],[disabled])::part(checkbox){--vaadin-checkbox-background:var(--aura-accent-color);--vaadin-checkbox-color:var(--aura-accent-contrast)}vaadin-radio-button[checked]:not([readonly],[disabled])::part(radio){--vaadin-radio-button-background:var(--aura-accent-color);--vaadin-radio-button-color:var(--aura-accent-contrast)}vaadin-checkbox:not([readonly],[disabled])::part(checkbox):before,vaadin-radio-button:not([disabled])::part(radio):before{background-color:currentColor;border-radius:inherit;content:"";inset:calc(var(--vaadin-input-field-border-width, 1px)*-1);opacity:0;position:absolute;transition:opacity .1s,background-color .1s}@media (any-hover:hover){vaadin-checkbox:hover:not([readonly],[disabled],[active])::part(checkbox):before,vaadin-radio-button:hover:not([disabled],[active])::part(radio):before{opacity:.04}}vaadin-checkbox[active]:not([readonly],[disabled])::part(checkbox):before,vaadin-radio-button[active]:not([disabled])::part(radio):before{background:#000;opacity:.1}:where(:root,:host){--vaadin-date-picker-year-scroller-background:light-dark(var(--vaadin-background-container),transparent);--vaadin-date-picker-month-header-font-weight:var(--aura-font-weight-semibold);--vaadin-date-picker-date-selected-background:var(--aura-accent-color);--vaadin-date-picker-date-selected-color:var(--aura-accent-contrast)}:where(:root,:host,[theme]){--vaadin-date-picker-date-width:calc(var(--aura-font-size-m)*2.5);--vaadin-date-picker-year-scroller-width:calc(var(--aura-font-size-m)*3.5)}vaadin-date-picker-month-scroller,vaadin-date-picker-overlay-content::part(toolbar){background:var(--aura-surface)}vaadin-date-picker-year-scroller:before{background:var(--aura-surface-solid) padding-box;height:12px;width:12px}vaadin-date-picker-year::part(year-number){font-size:var(--aura-font-size-s);font-weight:var(--aura-font-weight-medium)}vaadin-date-picker-year[current]::part(year-number){font-weight:var(--aura-font-weight-semibold)}vaadin-date-picker-year[selected]{position:relative}vaadin-date-picker-year[selected]::part(year-number){color:var(--aura-accent-text)}vaadin-date-picker-year[selected]:after{background:var(--aura-accent-color);border-radius:var(--vaadin-radius-s);content:"";height:100%;position:absolute;top:-.5lh;inset-inline:3px;opacity:.1;z-index:-1}vaadin-date-picker-year::part(year-separator){height:8px;line-height:0;text-align:center;translate:0 -50%}vaadin-date-picker-year::part(year-separator):before{background:var(--vaadin-text-color-disabled);border-radius:50%;content:"";display:inline-block;height:3px;width:3px}:where(:root,:host){--vaadin-dialog-title-font-size:var(--aura-font-size-l);--vaadin-dialog-border-width:0px}vaadin-confirm-dialog,vaadin-dialog{color-scheme:var(--aura-content-color-scheme)}vaadin-confirm-dialog::part(overlay),vaadin-dialog::part(overlay){--vaadin-dialog-background:var(--aura-surface);--aura-surface-level:4;view-transition-name:vaadin-dialog}vaadin-confirm-dialog::part(message){color:var(--vaadin-text-color-secondary)}::view-transition-group(vaadin-dialog){border-radius:var(--vaadin-dialog-border-radius,var(--vaadin-radius-l));z-index:1}:where(:root,:host){--vaadin-grid-row-selected-background:linear-gradient(var(--vaadin-background-container),var(--vaadin-background-container))}vaadin-grid[theme~=no-border]::part(first-column-cell){--_cell-padding:var(--vaadin-padding-xs) var(--vaadin-padding-s) var(--vaadin-padding-xs) var(--vaadin-padding-l)}vaadin-grid[theme~=no-border]::part(last-column-cell){--_cell-padding:var(--vaadin-padding-xs) var(--vaadin-padding-l) var(--vaadin-padding-xs) var(--vaadin-padding-s)}vaadin-grid::part(active-nav-item){--vaadin-grid-cell-background:linear-gradient(var(--vaadin-background-container),var(--vaadin-background-container)) var(--vaadin-background-color)}:where(:root,:host,[theme]){--vaadin-input-field-background:var(--aura-surface);--vaadin-input-field-error-color:var(--aura-red)}::part(input-field),vaadin-input-container,vaadin-message-input{--vaadin-input-field-background:var(--aura-surface);--aura-surface-level:4;--aura-surface-opacity:0.7;background-clip:padding-box}:not([readonly],[disabled])::part(input-field),vaadin-message-input:not([readonly],[disabled]){box-shadow:0 2px 1px -1px rgba(0,0,0,.04)}[disabled]::part(input-field){--aura-surface-opacity:0.5;--aura-surface-level:1}::part(field-button){transition:color .1s}:not([readonly],[disabled])::part(field-button):active{color:var(--vaadin-text-color)}@media (any-hover:hover){:not([readonly],[disabled])::part(field-button):hover{color:var(--vaadin-text-color)}}vaadin-master-detail-layout::part(detail){--aura-surface-level:2;background:var(--aura-surface) padding-box}vaadin-master-detail-layout[drawer]::part(detail){--aura-surface-opacity:var(--aura-overlay-surface-opacity);-webkit-backdrop-filter:var(--aura-overlay-backdrop-filter);backdrop-filter:var(--aura-overlay-backdrop-filter);background:var(--aura-surface) padding-box;box-shadow:inset 1px 0 0 0 var(--aura-overlay-inner-outline-color),-1px 0 0 0 var(--aura-overlay-outline-color),var(--aura-shadow-m)}vaadin-master-detail-layout[containment=viewport][drawer]::part(detail){box-shadow:var(--aura-overlay-shadow)}vaadin-master-detail-layout[containment=viewport][drawer]::part(detail),vaadin-master-detail-layout[theme~=inset-drawer][drawer]::part(detail){border-radius:var(--_app-layout-radius);margin:calc(var(--aura-app-layout-inset)/2)}vaadin-master-detail-layout:not([drawer])::part(detail),vaadin-master-detail-layout>vaadin-master-detail-layout{border-end-end-radius:var(--_app-layout-radius);border-start-end-radius:var(--_app-layout-radius)}::view-transition-group(vaadin-mdl-backdrop),::view-transition-group(vaadin-mdl-detail),::view-transition-group(vaadin-mdl-master){border-radius:var(--_app-layout-radius);overflow:hidden}vaadin-message-input vaadin-text-area::part(input-field){--vaadin-input-field-background:transparent}vaadin-message-input[theme~=icon-button] vaadin-message-input-button{color:transparent;contain:strict;height:var(--vaadin-icon-size,1lh);position:relative;width:var(--vaadin-icon-size,1lh)}vaadin-message-input[theme~=icon-button] vaadin-message-input-button:before{background:var(--vaadin-button-text-color);content:"";inset:0;mask-image:var(--_vaadin-icon-paper-airplane);position:absolute}vaadin-message-input[theme~=icon-button][dir=rtl] vaadin-message-input-button:before{scale:-1}@media (forced-colors:active){vaadin-message-input[theme~=icon-button] vaadin-message-input-button{forced-color-adjust:none;--vaadin-button-text-color:CanvasText}}:where(:root,:host){--vaadin-chip-padding:0.4em;--vaadin-chip-background:var(--vaadin-background-container-strong)}vaadin-multi-select-combo-box-chip{--vaadin-chip-height:1lh;--vaadin-icon-size:1.25em;--vaadin-chip-padding:0.4em;--vaadin-chip-border-radius:var(--vaadin-radius-s);--vaadin-chip-border-width:0px}:where(:root,:host){--vaadin-notification-border-width:0px;--vaadin-ease-fluid:cubic-bezier(0.78,0,0.22,1)}vaadin-notification-container{color-scheme:var(--aura-notification-color-scheme)}vaadin-notification-card::part(overlay){--aura-surface-level:4;--vaadin-notification-background:var(--aura-surface);view-transition-name:vaadin-notification}::view-transition-group(vaadin-notification){border-radius:var(--vaadin-notification-border-radius,var(--vaadin-radius-l));z-index:1}@supports (background:-webkit-named-image(i)){::view-transition-group(vaadin-notification){backdrop-filter:none}}vaadin-notification-card vaadin-card{--vaadin-card-gap:var(--vaadin-gap-xs) var(--vaadin-gap-s);color:var(--vaadin-text-color-secondary)}vaadin-notification-card vaadin-button{--aura-surface-level:8;--aura-surface-opacity:0.3}:where(:root,:host){--vaadin-overlay-border-width:0px;--vaadin-overlay-backdrop-background:light-dark(oklch(from var(--aura-background-light) calc(l * 0.1) c h/0.15),rgba(0,0,0,.3));--aura-overlay-outline-color:light-dark(oklch(from var(--aura-background-light) 0.1 c h/max(0.04,0.03 + 0.04 * var(--aura-contrast))),oklch(from var(--aura-background-dark) 0.1 c h/max(0.04,0.03 + 0.04 * var(--aura-contrast))));--aura-overlay-inner-outline-color:hsla(0deg,0%,100%,max(3%,2% + 4% * var(--aura-contrast)));--aura-overlay-shadow:inset 0 0 0 1px var(--aura-overlay-inner-outline-color),0 0 0 1px var(--aura-overlay-outline-color),var(--aura-shadow-m);--aura-overlay-backdrop-filter:blur(12px) brightness(1.2) saturate(1.2);--aura-overlay-surface-opacity:0.85;@media (prefers-reduced-transparency:reduce){--aura-overlay-surface-opacity:1!important}}::part(overlay){--vaadin-overlay-background:var(--aura-surface);--aura-surface-level:4;--aura-surface-opacity:var(--aura-overlay-surface-opacity);-webkit-backdrop-filter:var(--aura-overlay-backdrop-filter);backdrop-filter:var(--aura-overlay-backdrop-filter);box-shadow:var(--aura-overlay-shadow);color:var(--vaadin-text-color);font-family:var(--aura-font-family);font-size:var(--aura-font-size-m);font-weight:var(--aura-font-weight);line-height:var(--aura-line-height-m)}vaadin-select-item::part(content){align-items:center;display:flex;gap:inherit}vaadin-select[theme~=subtle]::part(input-field){--vaadin-input-field-border-color:transparent;--vaadin-input-field-background:transparent}vaadin-select[theme~=subtle]::part(toggle-button){opacity:0;transition:opacity .2s;--vaadin-icon-size:0.75lh}vaadin-select[theme~=subtle][focus-ring]::part(toggle-button){opacity:1}@media (any-hover:hover){vaadin-select[theme~=subtle]:hover::part(toggle-button){opacity:1}}vaadin-select[theme~=auto-size]{--vaadin-field-default-width:auto}:where(:root,:host){--vaadin-side-nav-label-line-height:var(--aura-line-height-xs);--vaadin-side-nav-label-font-weight:var(--aura-font-weight-medium);--vaadin-side-nav-item-font-weight:var(--aura-font-weight-medium);--vaadin-side-nav-item-border-width:1px;--vaadin-side-nav-items-gap:var(--vaadin-gap-xs)}vaadin-side-nav+vaadin-side-nav{margin-top:var(--vaadin-gap-l)}vaadin-side-nav-item::part(content){background-clip:padding-box;transition:color .12s,border-color .12s,background-color .12s;--aura-surface-level:3}vaadin-side-nav-item:not([disabled])::part(content):hover{--vaadin-side-nav-item-color:var(--vaadin-text-color)}vaadin-side-nav-item[current]::part(content){--vaadin-side-nav-item-background:var(--aura-surface);--vaadin-side-nav-item-border-color:var(--vaadin-border-color-secondary)}vaadin-side-nav[theme~=contrast] vaadin-side-nav-item[current]::part(content){background:var(--aura-surface-solid);border-color:transparent;color-scheme:var(--_side-nav-current-item-color-scheme,dark);outline-offset:2px}vaadin-side-nav[theme~=contrast] vaadin-side-nav-item[current]>:not([slot=children]){--aura-red:var(--vaadin-text-color);--aura-red-text:var(--vaadin-text-color);--aura-orange:var(--vaadin-text-color);--aura-orange-text:var(--vaadin-text-color);--aura-yellow:var(--vaadin-text-color);--aura-yellow-text:var(--vaadin-text-color);--aura-green:var(--vaadin-text-color);--aura-green-text:var(--vaadin-text-color);--aura-blue:var(--vaadin-text-color);--aura-blue-text:var(--vaadin-text-color);--aura-purple:var(--vaadin-text-color);--aura-purple-text:var(--vaadin-text-color)}@container style(--aura-color-scheme: dark){[slot=drawer]{--_side-nav-current-item-color-scheme:light}}@container style(--aura-content-color-scheme: dark){vaadin-app-layout>:not([slot]){--_side-nav-current-item-color-scheme:light}}@container style(--aura-content-color-scheme: light){vaadin-app-layout>:not([slot]){--_side-nav-current-item-color-scheme:dark}}@media (prefers-color-scheme:dark){@container style(--aura-content-color-scheme: light dark){vaadin-app-layout>:not([slot]){--_side-nav-current-item-color-scheme:light}}@container style(--aura-color-scheme: light dark){[slot=drawer]{--_side-nav-current-item-color-scheme:light}}}vaadin-side-nav:not(:has([slot=label]))::part(label){display:none}:where(:root,:host){cursor:default;--_vaadin-icon-chevron-down:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="m6 9 6 6 6-6"/></svg>')}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaadin/aura",
3
- "version": "25.0.0-alpha19",
3
+ "version": "25.0.0-alpha20",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -18,7 +18,11 @@
18
18
  },
19
19
  "main": "aura.css",
20
20
  "type": "module",
21
+ "scripts": {
22
+ "build": "postcss ./aura.css --dir dist"
23
+ },
21
24
  "files": [
25
+ "dist",
22
26
  "src",
23
27
  "*.css"
24
28
  ],
@@ -29,5 +33,12 @@
29
33
  "web-components",
30
34
  "web-component"
31
35
  ],
32
- "gitHead": "1f9af1ce5f0bae8daff044176c8a8df697763881"
36
+ "devDependencies": {
37
+ "cssnano": "^7.1.1",
38
+ "postcss": "^8.1.0",
39
+ "postcss-cli": "^11.0.1",
40
+ "postcss-import": "^16.1.1",
41
+ "postcss-url": "^10.1.3"
42
+ },
43
+ "gitHead": "c948aae591a30b432f3784000d4677674cae56e0"
33
44
  }
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :where(:root, :host) {
2
2
  --aura-color-scheme: light;
3
3
  --aura-content-color-scheme: var(--aura-color-scheme);
4
4
  --aura-notification-color-scheme: var(--aura-color-scheme);
package/src/color.css CHANGED
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :where(:root, :host) {
2
2
  --aura-contrast: 1;
3
3
 
4
4
  --aura-accent-light: hsl(220, 80%, 47%);
@@ -8,15 +8,19 @@
8
8
  oklch(from var(--aura-background-light) 0.1 calc(c / 2 + c * (1 - c)) h),
9
9
  oklch(from var(--aura-background-dark) 1 c h)
10
10
  );
11
- --vaadin-color: light-dark(
11
+ --vaadin-text-color: light-dark(
12
12
  color-mix(in srgb, var(--_color-base) calc(90% + 5% * var(--aura-contrast)), transparent),
13
13
  color-mix(in srgb, #fff calc(90% + 5% * var(--aura-contrast)), transparent)
14
14
  );
15
- --vaadin-color-subtle: light-dark(
15
+ --vaadin-text-color-secondary: light-dark(
16
16
  color-mix(in srgb, var(--_color-base) calc(55% + 10% * var(--aura-contrast)), transparent),
17
17
  color-mix(in srgb, var(--_color-base) calc(57% + 10% * var(--aura-contrast)), transparent)
18
18
  );
19
- --vaadin-color-disabled: color-mix(in srgb, var(--_color-base) calc(30% + 10% * var(--aura-contrast)), transparent);
19
+ --vaadin-text-color-disabled: color-mix(
20
+ in srgb,
21
+ var(--_color-base) calc(30% + 10% * var(--aura-contrast)),
22
+ transparent
23
+ );
20
24
 
21
25
  --_border-color-base: light-dark(
22
26
  oklch(from var(--aura-background-light) 0.1 c h),
@@ -27,7 +31,7 @@
27
31
  var(--_border-color-base) calc(14% + 6% * var(--aura-contrast)),
28
32
  transparent
29
33
  );
30
- --vaadin-border-color-subtle: light-dark(
34
+ --vaadin-border-color-secondary: light-dark(
31
35
  color-mix(in srgb, var(--_border-color-base) max(5%, 5% + 3% * var(--aura-contrast)), transparent),
32
36
  color-mix(in srgb, var(--_border-color-base) max(6%, 5% + 5% * var(--aura-contrast)), transparent)
33
37
  );
@@ -62,12 +66,12 @@
62
66
  --aura-accent-text-light: color-mix(
63
67
  in srgb,
64
68
  var(--aura-accent-light) calc(70% - 15% * var(--aura-contrast)),
65
- var(--vaadin-color)
69
+ var(--vaadin-text-color)
66
70
  );
67
71
  --aura-accent-text-dark: color-mix(
68
72
  in srgb,
69
73
  var(--aura-accent-dark) calc(70% - 15% * var(--aura-contrast)),
70
- var(--vaadin-color)
74
+ var(--vaadin-text-color)
71
75
  );
72
76
  --aura-accent-text: light-dark(var(--aura-accent-text-light), var(--aura-accent-text-dark));
73
77
 
@@ -86,18 +90,18 @@
86
90
  transparent
87
91
  );
88
92
 
89
- color: var(--vaadin-color);
93
+ color: var(--vaadin-text-color);
90
94
  background: var(--aura-app-background);
91
95
  background-size: 100vw 100vh;
92
96
  background-attachment: fixed;
93
97
  }
94
98
 
95
99
  @supports (color: hsl(0 0 0)) {
96
- :where(html) {
100
+ :where(:root, :host) {
97
101
  --_safari-17-deg: 1;
98
102
  }
99
103
  }
100
104
 
101
105
  :where(h1, h2, h3, h4, h5, h6) {
102
- color: var(--vaadin-color);
106
+ color: var(--vaadin-text-color);
103
107
  }
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :where(:root, :host) {
2
2
  --aura-app-layout-inset: 1.5vmin;
3
3
  --aura-app-layout-radius: var(--vaadin-radius-l);
4
4
  --_aura-mdl-border: 1px;
@@ -76,19 +76,19 @@ vaadin-app-layout > vaadin-scroller:nth-last-child(1 of [slot='drawer']) {
76
76
 
77
77
  vaadin-app-layout > :nth-child(1 of :not([slot])):nth-last-child(1 of :not([slot])) {
78
78
  color-scheme: var(--aura-content-color-scheme);
79
- color: var(--vaadin-color);
79
+ color: var(--vaadin-text-color);
80
80
  background: linear-gradient(var(--aura-surface), var(--aura-surface)), var(--aura-app-background);
81
81
  background-clip: padding-box;
82
82
  background-origin: border-box;
83
83
  min-height: 100%;
84
84
  box-sizing: border-box;
85
85
  border-radius: var(--_app-layout-radius);
86
- border: var(--_aura-mdl-border) solid var(--vaadin-border-color-subtle);
86
+ border: var(--_aura-mdl-border) solid var(--vaadin-border-color-secondary);
87
87
  border-block-width: min(var(--aura-app-layout-inset), var(--_aura-mdl-border));
88
88
  border-inline-end-width: min(var(--aura-app-layout-inset), var(--_aura-mdl-border));
89
89
  }
90
90
 
91
- vaadin-app-layout > vaadin-master-detail-layout {
91
+ vaadin-app-layout > vaadin-master-detail-layout:nth-child(1 of :not([slot])):nth-last-child(1 of :not([slot])) {
92
92
  & > vaadin-master-detail-layout,
93
93
  &:not([drawer])::part(detail) {
94
94
  border-start-end-radius: var(--_app-layout-radius);
@@ -100,7 +100,7 @@ vaadin-app-layout > vaadin-master-detail-layout {
100
100
  }
101
101
 
102
102
  &:is([drawer][has-detail]) {
103
- border-color: var(--vaadin-border-color);
103
+ border-color: light-dark(var(--vaadin-border-color), var(--vaadin-border-color-secondary));
104
104
  }
105
105
  }
106
106
 
@@ -112,9 +112,9 @@ vaadin-app-layout:has([slot='navbar']):has([slot='drawer']) {
112
112
  }
113
113
  }
114
114
 
115
- vaadin-app-layout:has([slot='navbar']):has([slot='drawer']):not([overlay]):not([drawer-opened])
115
+ vaadin-app-layout:has([slot='drawer']):not([overlay]):not([drawer-opened])
116
116
  > :nth-child(1 of :not([slot])):nth-last-child(1 of :not([slot])) {
117
- border-inline-start-width: min(var(--aura-app-layout-inset), 1px);
117
+ border-inline-start-width: min(var(--aura-app-layout-inset), var(--_aura-mdl-border));
118
118
  }
119
119
 
120
120
  vaadin-app-layout:has([slot='navbar']):has([slot='drawer'])[drawer-opened]:not([overlay])
@@ -124,10 +124,12 @@ vaadin-app-layout:has([slot='navbar']):has([slot='drawer'])[drawer-opened]:not([
124
124
 
125
125
  vaadin-app-layout:has([slot='navbar']):has([slot='drawer'])
126
126
  > :nth-child(1 of :not([slot])):nth-last-child(1 of :not([slot])) {
127
- border-top-width: 1px;
127
+ border-top-width: var(--_aura-mdl-border);
128
128
  }
129
129
 
130
- vaadin-app-layout:has([slot='navbar']) > :is(:not([slot]), [slot='drawer']) vaadin-drawer-toggle,
131
- vaadin-app-layout:not([slot='navbar']) > [slot='drawer'] vaadin-drawer-toggle {
130
+ vaadin-app-layout:has([slot='navbar'])
131
+ > :is(:not([slot]), [slot='drawer'])
132
+ vaadin-drawer-toggle:not([theme~='permanent']),
133
+ vaadin-app-layout:not(:has([slot='navbar'])) > [slot='drawer'] vaadin-drawer-toggle:not([theme~='permanent']) {
132
134
  display: none;
133
135
  }
@@ -0,0 +1,15 @@
1
+ :where(:root, :host) {
2
+ --vaadin-avatar-border-color: var(--vaadin-border-color-secondary);
3
+ --vaadin-avatar-background: var(--vaadin-background-container);
4
+ --vaadin-avatar-font-weight: var(--aura-font-weight-medium);
5
+ --vaadin-avatar-font-size: var(--aura-font-size-m);
6
+ }
7
+
8
+ vaadin-avatar:not([img]) {
9
+ --_shade: color-mix(in srgb, var(--vaadin-border-color) 20%, transparent);
10
+ background-image: linear-gradient(
11
+ light-dark(transparent, var(--_shade)),
12
+ transparent 50%,
13
+ light-dark(var(--_shade), transparent)
14
+ );
15
+ }
@@ -0,0 +1,113 @@
1
+ :where(:root, :host) {
2
+ --vaadin-button-border-color: var(--vaadin-border-color);
3
+ --vaadin-button-shadow: 0 1px 4px -1px hsla(0, 0%, 0%, 0.07);
4
+ }
5
+
6
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle) {
7
+ transition: scale 180ms;
8
+ position: relative;
9
+ }
10
+
11
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle):where(:not([theme~='tertiary'])) {
12
+ --aura-surface-level: 6;
13
+ --aura-surface-opacity: 0.3;
14
+ box-shadow: var(--vaadin-button-shadow);
15
+ }
16
+
17
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle):not([theme~='primary'], [theme~='tertiary']) {
18
+ background: var(--vaadin-button-background, var(--aura-surface) padding-box);
19
+ }
20
+
21
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle):where(:not([theme~='primary'])) {
22
+ outline-offset: calc(var(--vaadin-button-border-width, 1px) * -1);
23
+ }
24
+
25
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle):where([theme~='primary']) {
26
+ outline-offset: 2px;
27
+ }
28
+
29
+ /*
30
+ Increase padding, but only for buttons that don't have an icon in the default slot.
31
+ Buttons that place an icon in the default slot are assumed to be icon-only buttons.
32
+ */
33
+ /* prettier-ignore */
34
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle):not(:has(:is(vaadin-icon, svg, i[class*='fa-'], vaadin-avatar):not([slot]))) {
35
+ --vaadin-button-padding: round(var(--vaadin-padding-s) / 1.4, 1px)
36
+ max(var(--vaadin-padding-m), round(var(--vaadin-radius-m) / 1.5, 1px));
37
+ }
38
+
39
+ /* Decrease padding when an icon is placed in the prefix or suffix slot */
40
+ :is(vaadin-button, vaadin-menu-bar-button):has([slot='prefix']:is(vaadin-icon, svg, i[class*='fa-'], vaadin-avatar)),
41
+ vaadin-drawer-toggle:empty {
42
+ padding-inline-start: max(var(--vaadin-padding-s), round(var(--vaadin-radius-m) / 1.75, 1px));
43
+ }
44
+
45
+ /* prettier-ignore */
46
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle):has([slot='suffix']:is(vaadin-icon, svg, i[class*='fa-'], vaadin-avatar)),
47
+ vaadin-drawer-toggle:empty,
48
+ vaadin-menu-bar-button[aria-haspopup='true'] {
49
+ padding-inline-end: max(var(--vaadin-padding-s), round(var(--vaadin-radius-m) / 1.75, 1px));
50
+ }
51
+
52
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle)[theme~='primary'] {
53
+ --vaadin-button-font-weight: var(--aura-font-weight-semibold);
54
+ --vaadin-button-text-color: light-dark(var(--vaadin-background-color), var(--aura-background-dark));
55
+ }
56
+
57
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle)[disabled][theme~='primary'] {
58
+ --vaadin-button-text-color: var(--vaadin-text-color-secondary);
59
+ }
60
+
61
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle):not([disabled])::before {
62
+ content: '';
63
+ position: absolute;
64
+ inset: calc(var(--vaadin-button-border-width, 1px) * -1);
65
+ pointer-events: none;
66
+ border-radius: inherit;
67
+ background-color: currentColor;
68
+ opacity: 0;
69
+ transition:
70
+ opacity 100ms,
71
+ background-color 100ms;
72
+ }
73
+
74
+ @supports (color: hsl(0 0 0)) {
75
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle):not([disabled])::before {
76
+ background-color: oklch(from currentColor calc(l + 0.4 - c) c h);
77
+ }
78
+ }
79
+
80
+ @media (any-hover: hover) {
81
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle):hover:not([disabled], [active])::before {
82
+ opacity: 0.05;
83
+ }
84
+
85
+ /* prettier-ignore */
86
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle)[theme~='primary']:hover:not([disabled], [active])::before {
87
+ opacity: 0.12;
88
+ }
89
+ }
90
+
91
+ @media (min-resolution: 2x) {
92
+ /* prettier-ignore */
93
+ :is(vaadin-button, vaadin-menu-bar-button[first-visible][last-visible], vaadin-drawer-toggle)[active]:not([disabled], [aria-disabled='true']) {
94
+ scale: 0.98;
95
+ transition-duration: 50ms;
96
+ }
97
+ }
98
+
99
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle)[active]:not([disabled])::before {
100
+ transition-duration: 0s;
101
+ opacity: 0.08;
102
+ background: oklch(from currentColor min(c, 1 - l + c) calc(c * 0.9) h);
103
+ }
104
+
105
+ :is(vaadin-button, vaadin-menu-bar-button, vaadin-drawer-toggle)[theme~='primary'][active]:not([disabled])::before {
106
+ opacity: 0.16;
107
+ }
108
+
109
+ @container style(--_gap: 0) {
110
+ vaadin-menu-bar-button:not(:first-of-type) {
111
+ border-inline-start-color: transparent;
112
+ }
113
+ }
@@ -0,0 +1,43 @@
1
+ :where(:root, :host) {
2
+ --vaadin-card-title-font-weight: var(--aura-font-weight-medium);
3
+ --vaadin-card-padding: var(--vaadin-padding-l);
4
+ --vaadin-card-gap: var(--vaadin-gap-m) var(--vaadin-gap-l);
5
+ --vaadin-card-border-color: var(--vaadin-border-color-secondary);
6
+ --vaadin-card-background: var(--aura-surface) padding-box;
7
+ }
8
+
9
+ vaadin-card {
10
+ --vaadin-card-background: var(--aura-surface) padding-box;
11
+ --aura-surface-level: 2;
12
+ }
13
+
14
+ vaadin-card[theme~='outlined'] {
15
+ border: var(--vaadin-card-border-width, 1px) solid transparent;
16
+ --vaadin-card-padding: calc(var(--vaadin-padding-l) - var(--vaadin-card-border-width, 1px));
17
+ }
18
+
19
+ vaadin-card[theme~='outlined']::before {
20
+ inset: calc(var(--vaadin-card-border-width, 1px) * -1);
21
+ }
22
+
23
+ vaadin-card[theme~='outlined'][theme~='cover-media'] [slot='media']:is(img, video, svg, vaadin-icon) {
24
+ /* TODO relies on internal API - should refactor base styles to support this (background-clip: padding-box) */
25
+ margin-inline: calc((var(--_padding) + var(--vaadin-card-border-width, 1px)) * -1);
26
+ margin-top: calc((var(--_padding) + var(--vaadin-card-border-width, 1px)) * -1);
27
+ width: calc(100% + (var(--_padding) + var(--vaadin-card-border-width, 1px)) * 2);
28
+ }
29
+
30
+ vaadin-card[theme~='elevated'] {
31
+ --aura-surface-opacity: 0.7;
32
+ --aura-surface-level: 3;
33
+ --_shadow-color: light-dark(
34
+ oklch(from var(--aura-background-light) calc(l - l * 0.8) calc(c / 10) h / 0.1),
35
+ oklch(from var(--aura-background-dark) calc(l - l * 0.8) calc(c / 10) h / 0.2)
36
+ );
37
+ --vaadin-card-shadow: 0 1px 6px -1px var(--_shadow-color);
38
+ background-clip: padding-box;
39
+ }
40
+
41
+ vaadin-card[theme~='stretch-media']:not([theme~='cover-media']) [slot='media']:is(img, video, svg, vaadin-icon) {
42
+ border-radius: var(--vaadin-radius-s);
43
+ }
@@ -0,0 +1,68 @@
1
+ :where(:root, :host) {
2
+ --vaadin-radio-button-dot-size: 6px;
3
+ --vaadin-checkbox-size: round(1lh - 2px, 2px);
4
+ --vaadin-radio-button-size: round(1lh - 2px, 2px);
5
+ }
6
+
7
+ vaadin-checkbox::part(checkbox),
8
+ vaadin-radio-button::part(radio) {
9
+ --vaadin-checkbox-background: var(--aura-surface);
10
+ --vaadin-radio-button-background: var(--aura-surface);
11
+ transition: background-color 100ms;
12
+ }
13
+
14
+ vaadin-checkbox:not([readonly], [disabled])::part(checkbox),
15
+ vaadin-radio-button:not([disabled])::part(radio) {
16
+ --aura-surface-level: 4;
17
+ box-shadow: 0 2px 1px -1px hsla(0, 0%, 0%, 0.07);
18
+ --_shade: color-mix(in srgb, var(--vaadin-border-color-secondary) 50%, transparent);
19
+ background-image: linear-gradient(
20
+ light-dark(transparent, var(--_shade)),
21
+ transparent 33%,
22
+ transparent 66%,
23
+ light-dark(var(--_shade), transparent)
24
+ );
25
+ }
26
+
27
+ vaadin-checkbox:not([checked], [indeterminate])::part(checkbox),
28
+ vaadin-radio-button:not([checked])::part(radio) {
29
+ background-clip: padding-box;
30
+ }
31
+
32
+ vaadin-checkbox:is([checked], [indeterminate]):not([readonly], [disabled])::part(checkbox) {
33
+ /* TODO add/use selection color */
34
+ --vaadin-checkbox-background: var(--aura-accent-color);
35
+ --vaadin-checkbox-color: var(--aura-accent-contrast);
36
+ }
37
+
38
+ vaadin-radio-button[checked]:not([readonly], [disabled])::part(radio) {
39
+ /* TODO add/use selection color */
40
+ --vaadin-radio-button-background: var(--aura-accent-color);
41
+ --vaadin-radio-button-color: var(--aura-accent-contrast);
42
+ }
43
+
44
+ vaadin-checkbox:not([readonly], [disabled])::part(checkbox)::before,
45
+ vaadin-radio-button:not([disabled])::part(radio)::before {
46
+ content: '';
47
+ position: absolute;
48
+ inset: calc(var(--vaadin-input-field-border-width, 1px) * -1);
49
+ border-radius: inherit;
50
+ background-color: currentColor;
51
+ opacity: 0;
52
+ transition:
53
+ opacity 100ms,
54
+ background-color 100ms;
55
+ }
56
+
57
+ @media (any-hover: hover) {
58
+ vaadin-checkbox:hover:not([readonly], [disabled], [active])::part(checkbox)::before,
59
+ vaadin-radio-button:hover:not([disabled], [active])::part(radio)::before {
60
+ opacity: 0.04;
61
+ }
62
+ }
63
+
64
+ vaadin-checkbox[active]:not([readonly], [disabled])::part(checkbox)::before,
65
+ vaadin-radio-button[active]:not([disabled])::part(radio)::before {
66
+ opacity: 0.1;
67
+ background: #000;
68
+ }
@@ -0,0 +1,68 @@
1
+ :where(:root, :host) {
2
+ --vaadin-date-picker-year-scroller-background: light-dark(var(--vaadin-background-container), transparent);
3
+ --vaadin-date-picker-month-header-font-weight: var(--aura-font-weight-semibold);
4
+ /* TODO add/use selection color */
5
+ --vaadin-date-picker-date-selected-background: var(--aura-accent-color);
6
+ --vaadin-date-picker-date-selected-color: var(--aura-accent-contrast);
7
+ }
8
+
9
+ :where(:root, :host, [theme]) {
10
+ --vaadin-date-picker-date-width: calc(var(--aura-font-size-m) * 2.5);
11
+ --vaadin-date-picker-year-scroller-width: calc(var(--aura-font-size-m) * 3.5);
12
+ }
13
+
14
+ vaadin-date-picker-month-scroller,
15
+ vaadin-date-picker-overlay-content::part(toolbar) {
16
+ background: var(--aura-surface);
17
+ }
18
+
19
+ vaadin-date-picker-year-scroller::before {
20
+ width: 12px;
21
+ height: 12px;
22
+ background: var(--aura-surface-solid) padding-box;
23
+ }
24
+
25
+ vaadin-date-picker-year::part(year-number) {
26
+ font-size: var(--aura-font-size-s);
27
+ font-weight: var(--aura-font-weight-medium);
28
+ }
29
+
30
+ vaadin-date-picker-year[current]::part(year-number) {
31
+ font-weight: var(--aura-font-weight-semibold);
32
+ }
33
+
34
+ vaadin-date-picker-year[selected] {
35
+ position: relative;
36
+ }
37
+
38
+ vaadin-date-picker-year[selected]::part(year-number) {
39
+ color: var(--aura-accent-text);
40
+ }
41
+
42
+ vaadin-date-picker-year[selected]::after {
43
+ content: '';
44
+ position: absolute;
45
+ z-index: -1;
46
+ height: 100%;
47
+ background: var(--aura-accent-color);
48
+ border-radius: var(--vaadin-radius-s);
49
+ top: -0.5lh;
50
+ inset-inline: 3px;
51
+ opacity: 0.1;
52
+ }
53
+
54
+ vaadin-date-picker-year::part(year-separator) {
55
+ text-align: center;
56
+ translate: 0 -50%;
57
+ height: 8px;
58
+ line-height: 0;
59
+ }
60
+
61
+ vaadin-date-picker-year::part(year-separator)::before {
62
+ content: '';
63
+ display: inline-block;
64
+ width: 3px;
65
+ height: 3px;
66
+ border-radius: 50%;
67
+ background: var(--vaadin-text-color-disabled);
68
+ }
@@ -0,0 +1,29 @@
1
+ :where(:root, :host) {
2
+ --vaadin-dialog-title-font-size: var(--aura-font-size-l);
3
+ --vaadin-dialog-border-width: 0px;
4
+ }
5
+
6
+ vaadin-dialog,
7
+ vaadin-confirm-dialog {
8
+ color-scheme: var(--aura-content-color-scheme);
9
+ }
10
+
11
+ vaadin-dialog::part(overlay),
12
+ vaadin-confirm-dialog::part(overlay) {
13
+ --vaadin-dialog-background: var(--aura-surface);
14
+ --aura-surface-level: 4;
15
+
16
+ /* TODO probably should be in base styles */
17
+ /* Keeps dialogs on top of MDL view transitions */
18
+ view-transition-name: vaadin-dialog;
19
+ }
20
+
21
+ vaadin-confirm-dialog::part(message) {
22
+ color: var(--vaadin-text-color-secondary);
23
+ }
24
+
25
+ /* TODO probably should be in base styles */
26
+ ::view-transition-group(vaadin-dialog) {
27
+ border-radius: var(--vaadin-dialog-border-radius, var(--vaadin-radius-l));
28
+ z-index: 1;
29
+ }
@@ -0,0 +1,25 @@
1
+ :where(:root, :host) {
2
+ /* TODO should likely be just a color prop, not a background-image */
3
+ --vaadin-grid-row-selected-background: linear-gradient(
4
+ var(--vaadin-background-container),
5
+ var(--vaadin-background-container)
6
+ );
7
+ }
8
+
9
+ vaadin-grid[theme~='no-border']::part(first-column-cell) {
10
+ /* TODO can't use --vaadin-grid-cell-padding, it only works on the host */
11
+ /* quite difficult to override the cell padding when it’s on the slotted vaadin-grid-cell-content element */
12
+ --_cell-padding: var(--vaadin-padding-xs) var(--vaadin-padding-s) var(--vaadin-padding-xs) var(--vaadin-padding-l);
13
+ }
14
+
15
+ vaadin-grid[theme~='no-border']::part(last-column-cell) {
16
+ --_cell-padding: var(--vaadin-padding-xs) var(--vaadin-padding-l) var(--vaadin-padding-xs) var(--vaadin-padding-s);
17
+ }
18
+
19
+ /* TODO custom part name: how should we indicate an active row? Should we have a built-in part name? */
20
+ vaadin-grid::part(active-nav-item) {
21
+ /* TODO should likely be just a color prop, not a background-image */
22
+ /* TODO need a custom prop in grid base styles that can be used to just highlight a row, which works together with row stripes, selection color, etc. */
23
+ --vaadin-grid-cell-background: linear-gradient(var(--vaadin-background-container), var(--vaadin-background-container))
24
+ var(--vaadin-background-color);
25
+ }
@@ -0,0 +1,37 @@
1
+ :where(:root, :host, [theme]) {
2
+ --vaadin-input-field-background: var(--aura-surface);
3
+ --vaadin-input-field-error-color: var(--aura-red);
4
+ }
5
+
6
+ ::part(input-field),
7
+ vaadin-message-input,
8
+ vaadin-input-container {
9
+ --vaadin-input-field-background: var(--aura-surface);
10
+ --aura-surface-level: 4;
11
+ --aura-surface-opacity: 0.7;
12
+ background-clip: padding-box;
13
+ }
14
+
15
+ :not([readonly], [disabled])::part(input-field),
16
+ vaadin-message-input:not([readonly], [disabled]) {
17
+ box-shadow: 0 2px 1px -1px hsla(0, 0%, 0%, 0.04);
18
+ }
19
+
20
+ [disabled]::part(input-field) {
21
+ --aura-surface-opacity: 0.5;
22
+ --aura-surface-level: 1;
23
+ }
24
+
25
+ ::part(field-button) {
26
+ transition: color 100ms;
27
+ }
28
+
29
+ :not([readonly], [disabled])::part(field-button):active {
30
+ color: var(--vaadin-text-color);
31
+ }
32
+
33
+ @media (any-hover: hover) {
34
+ :not([readonly], [disabled])::part(field-button):hover {
35
+ color: var(--vaadin-text-color);
36
+ }
37
+ }
@@ -0,0 +1,40 @@
1
+ vaadin-master-detail-layout::part(detail) {
2
+ --aura-surface-level: 2;
3
+ background: var(--aura-surface) padding-box;
4
+ }
5
+
6
+ vaadin-master-detail-layout[drawer]::part(detail) {
7
+ --aura-surface-opacity: var(--aura-overlay-surface-opacity);
8
+ background: var(--aura-surface) padding-box;
9
+ -webkit-backdrop-filter: var(--aura-overlay-backdrop-filter);
10
+ backdrop-filter: var(--aura-overlay-backdrop-filter);
11
+ box-shadow:
12
+ inset 1px 0 0 0 var(--aura-overlay-inner-outline-color),
13
+ -1px 0 0 0 var(--aura-overlay-outline-color),
14
+ var(--aura-shadow-m);
15
+ }
16
+
17
+ vaadin-master-detail-layout[containment='viewport'][drawer]::part(detail) {
18
+ box-shadow: var(--aura-overlay-shadow);
19
+ }
20
+
21
+ /* TODO could be a built-in variant */
22
+ vaadin-master-detail-layout[theme~='inset-drawer'][drawer]::part(detail),
23
+ vaadin-master-detail-layout[containment='viewport'][drawer]::part(detail) {
24
+ margin: calc(var(--aura-app-layout-inset) / 2);
25
+ border-radius: var(--_app-layout-radius);
26
+ }
27
+
28
+ vaadin-master-detail-layout > vaadin-master-detail-layout,
29
+ vaadin-master-detail-layout:not([drawer])::part(detail) {
30
+ border-start-end-radius: var(--_app-layout-radius);
31
+ border-end-end-radius: var(--_app-layout-radius);
32
+ }
33
+
34
+ /* TODO these end up affecting all MDLs, not just the one directly inside the App Layout */
35
+ ::view-transition-group(vaadin-mdl-backdrop),
36
+ ::view-transition-group(vaadin-mdl-master),
37
+ ::view-transition-group(vaadin-mdl-detail) {
38
+ border-radius: var(--_app-layout-radius);
39
+ overflow: hidden;
40
+ }
@@ -0,0 +1,30 @@
1
+ vaadin-message-input vaadin-text-area::part(input-field) {
2
+ --vaadin-input-field-background: transparent;
3
+ }
4
+
5
+ vaadin-message-input[theme~='icon-button'] vaadin-message-input-button {
6
+ width: var(--vaadin-icon-size, 1lh);
7
+ height: var(--vaadin-icon-size, 1lh);
8
+ color: transparent;
9
+ position: relative;
10
+ contain: strict;
11
+ }
12
+
13
+ vaadin-message-input[theme~='icon-button'] vaadin-message-input-button::before {
14
+ content: '';
15
+ position: absolute;
16
+ inset: 0;
17
+ mask-image: var(--_vaadin-icon-paper-airplane);
18
+ background: var(--vaadin-button-text-color);
19
+ }
20
+
21
+ vaadin-message-input[theme~='icon-button'][dir='rtl'] vaadin-message-input-button::before {
22
+ scale: -1;
23
+ }
24
+
25
+ @media (forced-colors: active) {
26
+ vaadin-message-input[theme~='icon-button'] vaadin-message-input-button {
27
+ forced-color-adjust: none;
28
+ --vaadin-button-text-color: CanvasText;
29
+ }
30
+ }
@@ -0,0 +1,12 @@
1
+ :where(:root, :host) {
2
+ --vaadin-chip-padding: 0.4em;
3
+ --vaadin-chip-background: var(--vaadin-background-container-strong);
4
+ }
5
+
6
+ vaadin-multi-select-combo-box-chip {
7
+ --vaadin-chip-height: 1lh;
8
+ --vaadin-icon-size: 1.25em;
9
+ --vaadin-chip-padding: 0.4em;
10
+ --vaadin-chip-border-radius: var(--vaadin-radius-s);
11
+ --vaadin-chip-border-width: 0px;
12
+ }
@@ -0,0 +1,42 @@
1
+ :where(:root, :host) {
2
+ --vaadin-notification-border-width: 0px;
3
+ --vaadin-ease-fluid: cubic-bezier(0.78, 0, 0.22, 1);
4
+ }
5
+
6
+ vaadin-notification-container {
7
+ color-scheme: var(--aura-notification-color-scheme);
8
+ }
9
+
10
+ vaadin-notification-card::part(overlay) {
11
+ --aura-surface-level: 4;
12
+ --vaadin-notification-background: var(--aura-surface);
13
+
14
+ /* TODO probably should be in base styles */
15
+ /* Keeps notifications on top of MDL view transitions */
16
+ view-transition-name: vaadin-notification;
17
+ }
18
+
19
+ ::view-transition-group(vaadin-notification) {
20
+ /* Keep on top of MDL view-transition elements */
21
+ z-index: 1;
22
+ /* The backdrop-filter from vaadin-notification-card::part(overlay) is copied here, so we need to clip it with the same border radius */
23
+ border-radius: var(--vaadin-notification-border-radius, var(--vaadin-radius-l));
24
+ }
25
+
26
+ /* In Safari, the backdrop-filter is copied to transition-group pseudo element but also retained in the new/old pseudo elements */
27
+ /* Removing it from the transition-group makes it look better */
28
+ @supports (background: -webkit-named-image(i)) {
29
+ ::view-transition-group(vaadin-notification) {
30
+ backdrop-filter: none;
31
+ }
32
+ }
33
+
34
+ vaadin-notification-card vaadin-card {
35
+ --vaadin-card-gap: var(--vaadin-gap-xs) var(--vaadin-gap-s);
36
+ color: var(--vaadin-text-color-secondary);
37
+ }
38
+
39
+ vaadin-notification-card vaadin-button {
40
+ --aura-surface-level: 8;
41
+ --aura-surface-opacity: 0.3;
42
+ }
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :where(:root, :host) {
2
2
  --vaadin-overlay-border-width: 0px;
3
3
  --vaadin-overlay-backdrop-background: light-dark(
4
4
  oklch(from var(--aura-background-light) calc(l * 0.1) c h / 0.15),
@@ -31,5 +31,5 @@
31
31
  font-size: var(--aura-font-size-m);
32
32
  font-weight: var(--aura-font-weight);
33
33
  line-height: var(--aura-line-height-m);
34
- color: var(--vaadin-color);
34
+ color: var(--vaadin-text-color);
35
35
  }
@@ -0,0 +1,30 @@
1
+ vaadin-select-item::part(content) {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: inherit;
5
+ }
6
+
7
+ vaadin-select[theme~='subtle']::part(input-field) {
8
+ --vaadin-input-field-border-color: transparent;
9
+ --vaadin-input-field-background: transparent;
10
+ }
11
+
12
+ vaadin-select[theme~='subtle']::part(toggle-button) {
13
+ transition: opacity 200ms;
14
+ opacity: 0;
15
+ --vaadin-icon-size: 0.75lh;
16
+ }
17
+
18
+ vaadin-select[theme~='subtle'][focus-ring]::part(toggle-button) {
19
+ opacity: 1;
20
+ }
21
+
22
+ @media (any-hover: hover) {
23
+ vaadin-select[theme~='subtle']:hover::part(toggle-button) {
24
+ opacity: 1;
25
+ }
26
+ }
27
+
28
+ vaadin-select[theme~='auto-size'] {
29
+ --vaadin-field-default-width: auto;
30
+ }
@@ -0,0 +1,90 @@
1
+ :where(:root, :host) {
2
+ --vaadin-side-nav-label-line-height: var(--aura-line-height-xs);
3
+ --vaadin-side-nav-label-font-weight: var(--aura-font-weight-medium);
4
+ --vaadin-side-nav-item-font-weight: var(--aura-font-weight-medium);
5
+ --vaadin-side-nav-item-border-width: 1px;
6
+ --vaadin-side-nav-items-gap: var(--vaadin-gap-xs);
7
+ }
8
+
9
+ vaadin-side-nav + vaadin-side-nav {
10
+ margin-top: var(--vaadin-gap-l);
11
+ }
12
+
13
+ vaadin-side-nav-item::part(content) {
14
+ transition:
15
+ color 120ms,
16
+ border-color 120ms,
17
+ background-color 120ms;
18
+ background-clip: padding-box;
19
+ --aura-surface-level: 3;
20
+ }
21
+
22
+ vaadin-side-nav-item:not([disabled])::part(content):hover {
23
+ --vaadin-side-nav-item-color: var(--vaadin-text-color);
24
+ }
25
+
26
+ vaadin-side-nav-item[current]::part(content) {
27
+ --vaadin-side-nav-item-background: var(--aura-surface);
28
+ --vaadin-side-nav-item-border-color: var(--vaadin-border-color-secondary);
29
+ }
30
+
31
+ /* Contrast variant */
32
+
33
+ vaadin-side-nav[theme~='contrast'] vaadin-side-nav-item[current]::part(content) {
34
+ color-scheme: var(--_side-nav-current-item-color-scheme, dark);
35
+ background: var(--aura-surface-solid);
36
+ border-color: transparent;
37
+ outline-offset: 2px;
38
+ }
39
+
40
+ vaadin-side-nav[theme~='contrast'] vaadin-side-nav-item[current] > :not([slot='children']) {
41
+ --aura-red: var(--vaadin-text-color);
42
+ --aura-red-text: var(--vaadin-text-color);
43
+ --aura-orange: var(--vaadin-text-color);
44
+ --aura-orange-text: var(--vaadin-text-color);
45
+ --aura-yellow: var(--vaadin-text-color);
46
+ --aura-yellow-text: var(--vaadin-text-color);
47
+ --aura-green: var(--vaadin-text-color);
48
+ --aura-green-text: var(--vaadin-text-color);
49
+ --aura-blue: var(--vaadin-text-color);
50
+ --aura-blue-text: var(--vaadin-text-color);
51
+ --aura-purple: var(--vaadin-text-color);
52
+ --aura-purple-text: var(--vaadin-text-color);
53
+ }
54
+
55
+ @container style(--aura-color-scheme: dark) {
56
+ [slot='drawer'] {
57
+ --_side-nav-current-item-color-scheme: light;
58
+ }
59
+ }
60
+
61
+ @container style(--aura-content-color-scheme: dark) {
62
+ vaadin-app-layout > :not([slot]) {
63
+ --_side-nav-current-item-color-scheme: light;
64
+ }
65
+ }
66
+
67
+ @container style(--aura-content-color-scheme: light) {
68
+ vaadin-app-layout > :not([slot]) {
69
+ --_side-nav-current-item-color-scheme: dark;
70
+ }
71
+ }
72
+
73
+ @media (prefers-color-scheme: dark) {
74
+ @container style(--aura-content-color-scheme: light dark) {
75
+ vaadin-app-layout > :not([slot]) {
76
+ --_side-nav-current-item-color-scheme: light;
77
+ }
78
+ }
79
+
80
+ @container style(--aura-color-scheme: light dark) {
81
+ [slot='drawer'] {
82
+ --_side-nav-current-item-color-scheme: light;
83
+ }
84
+ }
85
+ }
86
+
87
+ /* TODO bug in component/base styles: hide label part if no label is provided */
88
+ vaadin-side-nav:not(:has([slot='label']))::part(label) {
89
+ display: none;
90
+ }
package/src/palette.css CHANGED
@@ -1,45 +1,35 @@
1
- :where(html) {
2
- --aura-red: light-dark(
3
- oklch(from var(--aura-accent-light) 0.55 c calc(clamp(380 - rem(h, 6), h + 20, 420 - rem(h, 6)) + 20)),
4
- oklch(from var(--aura-accent-dark) 0.7 c calc(clamp(380 - rem(h, 6), h + 20, 420 - rem(h, 6)) + 20))
5
- );
6
- --aura-orange: light-dark(
7
- oklch(from var(--aura-accent-light) 0.8 min(c + 0.1, 0.4) clamp(80 - rem(h, 6), h, 90 + rem(h, 6))),
8
- oklch(from var(--aura-accent-dark) 0.75 min(c + 0.1, 0.4) clamp(80 - rem(h, 6), h, 90 + rem(h, 6)))
9
- );
10
- --aura-yellow: light-dark(
11
- oklch(from var(--aura-accent-light) 0.9 min(c + 0.1, 0.4) clamp(100 - rem(h, 6), h, 105 - rem(h, 6))),
12
- oklch(from var(--aura-accent-dark) 0.85 min(c + 0.1, 0.4) clamp(100 - rem(h, 6), h, 105 - rem(h, 6)))
13
- );
14
- --aura-green: light-dark(
15
- oklch(from var(--aura-accent-light) 0.5 min(c + 0.05, 0.4) clamp(130 - rem(h, 6), h, 160 - rem(h, 6))),
16
- oklch(from var(--aura-accent-dark) 0.7 min(c + 0.05, 0.4) clamp(130 - rem(h, 6), h, 160 - rem(h, 6)))
17
- );
18
- --aura-blue: light-dark(
19
- oklch(from var(--aura-accent-light) 0.55 min(c + 0.05, 0.4) clamp(220 - rem(h, 6), h, 260 - rem(h, 6))),
20
- oklch(from var(--aura-accent-dark) 0.7 min(c + 0.05, 0.4) clamp(220 - rem(h, 6), h, 260 - rem(h, 6)))
21
- );
22
- --aura-purple: light-dark(
23
- oklch(from var(--aura-accent-light) 0.55 min(c + 0.05, 0.4) clamp(280 - rem(h, 6), h, 350 - rem(h, 6))),
24
- oklch(from var(--aura-accent-dark) 0.7 min(c + 0.05, 0.4) clamp(280 - rem(h, 6), h, 350 - rem(h, 6)))
25
- );
1
+ :where(:root, :host) {
2
+ --aura-red: oklch(0.6 0.22 25);
3
+ --aura-orange: oklch(0.61 0.4 93);
4
+ --aura-yellow: oklch(0.9 0.36 105);
5
+ --aura-green: oklch(0.6 0.28 160);
6
+ --aura-blue: oklch(0.6 0.3 240);
7
+ --aura-purple: oklch(0.6 0.3 280);
26
8
 
27
- --aura-red-text: color-mix(in srgb, var(--aura-red) calc(70% - 15% * var(--aura-contrast)), var(--vaadin-color));
9
+ --aura-red-text: color-mix(in srgb, var(--aura-red) calc(70% - 15% * var(--aura-contrast)), var(--vaadin-text-color));
28
10
  --aura-orange-text: color-mix(
29
11
  in srgb,
30
- var(--aura-orange) calc(60% - 15% * var(--aura-contrast)),
31
- var(--vaadin-color)
12
+ var(--aura-orange) calc(70% - 15% * var(--aura-contrast)),
13
+ var(--vaadin-text-color)
32
14
  );
33
15
  --aura-yellow-text: color-mix(
34
16
  in srgb,
35
- var(--aura-yellow) calc(55% - 15% * var(--aura-contrast)),
36
- var(--vaadin-color)
17
+ var(--aura-yellow) calc(65% - 15% * var(--aura-contrast)),
18
+ var(--vaadin-text-color)
19
+ );
20
+ --aura-green-text: color-mix(
21
+ in srgb,
22
+ var(--aura-green) calc(70% - 15% * var(--aura-contrast)),
23
+ var(--vaadin-text-color)
24
+ );
25
+ --aura-blue-text: color-mix(
26
+ in srgb,
27
+ var(--aura-blue) calc(70% - 15% * var(--aura-contrast)),
28
+ var(--vaadin-text-color)
37
29
  );
38
- --aura-green-text: color-mix(in srgb, var(--aura-green) calc(70% - 15% * var(--aura-contrast)), var(--vaadin-color));
39
- --aura-blue-text: color-mix(in srgb, var(--aura-blue) calc(70% - 15% * var(--aura-contrast)), var(--vaadin-color));
40
30
  --aura-purple-text: color-mix(
41
31
  in srgb,
42
32
  var(--aura-purple) calc(70% - 15% * var(--aura-contrast)),
43
- var(--vaadin-color)
33
+ var(--vaadin-text-color)
44
34
  );
45
35
  }
package/src/shadow.css CHANGED
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :where(:root, :host) {
2
2
  --aura-shadow-color: light-dark(
3
3
  oklch(from var(--aura-background-light) calc(l - l * 0.8) calc(c / 10) h / 0.2),
4
4
  oklch(from var(--aura-background-dark) calc(l - l * 0.8) calc(c / 10) h / 0.2)
package/src/size.css CHANGED
@@ -1,4 +1,4 @@
1
- :where(html) {
1
+ :where(:root, :host) {
2
2
  --aura-base-size: 16;
3
3
  --_size-ref: 16;
4
4
  --aura-base-radius: 3;
@@ -7,7 +7,7 @@
7
7
  --vaadin-radius-l: round(var(--aura-base-radius) * 1.5px + 10px, 1px);
8
8
  }
9
9
 
10
- :where(html, [theme]) {
10
+ :where(:root, :host, [theme]) {
11
11
  --vaadin-padding-xs: round(
12
12
  var(--aura-base-size) * 0.25 * pow(var(--aura-base-size) / var(--_size-ref), 0.5) * 1px,
13
13
  1px
@@ -38,7 +38,7 @@
38
38
  }
39
39
 
40
40
  @media (pointer: coarse) {
41
- :where(html) {
41
+ :where(:root, :host) {
42
42
  --aura-base-size: 19;
43
43
  }
44
44
  }
package/src/surface.css CHANGED
@@ -1,13 +1,22 @@
1
- :where(html) {
1
+ :where(:root, :host) {
2
2
  --aura-surface-level: 1;
3
3
  }
4
4
 
5
5
  /* List all elements that are surfaces */
6
- html,
7
- [theme~='surface'],
8
- [theme~='surface-solid'],
6
+ :is(:root, :host),
7
+ .aura-surface,
8
+ .aura-surface-solid,
9
9
  vaadin-app-layout::part(navbar),
10
10
  vaadin-app-layout::part(drawer),
11
+ vaadin-button,
12
+ vaadin-card,
13
+ vaadin-checkbox::part(checkbox),
14
+ vaadin-master-detail-layout::part(detail),
15
+ vaadin-menu-bar-button,
16
+ vaadin-message-input,
17
+ vaadin-radio-button::part(radio),
18
+ vaadin-side-nav-item::part(content),
19
+ ::part(input-field),
11
20
  ::part(overlay) {
12
21
  --aura-surface-opacity: 0.5;
13
22
 
@@ -17,7 +26,7 @@ vaadin-app-layout::part(drawer),
17
26
  min(
18
27
  1,
19
28
  l + (0.98 - l) * 4 + var(--aura-surface-level) * (0.07 - 0.01 * var(--aura-contrast)) -
20
- var(--aura-surface-opacity) / 15
29
+ var(--aura-surface-opacity) / 20
21
30
  )
22
31
  clamp(0, c - l / 10 * var(--aura-surface-level) + var(--aura-surface-opacity) / 40, c) h
23
32
  ),
@@ -35,11 +44,11 @@ vaadin-app-layout::part(drawer),
35
44
  --vaadin-background-color: var(--aura-surface-solid);
36
45
  }
37
46
 
38
- [theme~='surface'] {
47
+ .aura-surface {
39
48
  background: var(--aura-surface) padding-box;
40
49
  }
41
50
 
42
- [theme~='surface-solid'] {
51
+ .aura-surface-solid {
43
52
  --aura-surface-opacity: 1;
44
53
  background: var(--aura-surface-solid) padding-box;
45
54
  }
@@ -1,6 +1,6 @@
1
1
  @import './fonts/InstrumentSans/InstrumentSans.css';
2
2
 
3
- :where(html) {
3
+ :where(:root, :host) {
4
4
  --aura-font-family-system: system-ui, ui-sans-serif, sans-serif;
5
5
  --aura-font-family-instrument-sans: 'Instrument Sans', var(--aura-font-family-system);
6
6
 
@@ -16,7 +16,7 @@
16
16
  }
17
17
 
18
18
  @media (pointer: fine) {
19
- :where(html) {
19
+ :where(:root, :host) {
20
20
  --aura-base-font-size: 14;
21
21
  }
22
22
  }
@@ -29,7 +29,7 @@
29
29
 
30
30
  @supports (-webkit-touch-callout: none) {
31
31
  @media (pointer: coarse) {
32
- :where(html) {
32
+ :where(:root, :host) {
33
33
  /* iOS/iPadOS optimizations */
34
34
 
35
35
  /* Support iOS dynamic text size */
@@ -39,7 +39,7 @@
39
39
  }
40
40
  }
41
41
 
42
- :where(html, [theme]) {
42
+ :where(:root, :host, [theme]) {
43
43
  --aura-font-size-xs: round(var(--aura-font-size-s) / var(--aura-font-size-scale), 0.0625rem);
44
44
  --aura-font-size-s: round(var(--aura-font-size-m) / var(--aura-font-size-scale), 0.0625rem);
45
45
  --aura-font-size-m: round(var(--aura-base-font-size) / 16 * 1rem, 0.0625rem);
@@ -69,7 +69,7 @@
69
69
  text-size-adjust: none;
70
70
  }
71
71
 
72
- :where(body, :host, [theme]) {
72
+ :where(body, :host, [theme]:not(html)) {
73
73
  font-size: var(--aura-font-size-m);
74
74
  line-height: var(--aura-line-height-m);
75
75
  }