@vollowx/seele 0.11.1 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +1 -1
  2. package/custom-elements.json +20 -0
  3. package/package.json +1 -1
  4. package/src/all.js +17 -14
  5. package/src/base/select.js +1 -0
  6. package/src/base/toggle-button.js +0 -1
  7. package/src/m3/button/common-button-styles.css.js +1 -1
  8. package/src/m3/button/common-button-toggle.js +4 -3
  9. package/src/m3/button/common-button.js +4 -3
  10. package/src/m3/button/icon-button-toggle.js +2 -2
  11. package/src/m3/button/icon-button.js +2 -2
  12. package/src/m3/{checkbox.js → checkbox/checkbox.js} +4 -3
  13. package/src/m3/divider/divider-styles.css.js +2 -0
  14. package/src/m3/divider/divider.js +43 -0
  15. package/src/m3/fab/fab-styles.css.js +2 -0
  16. package/src/m3/{fab.js → fab/fab.js} +9 -9
  17. package/src/m3/field/filled-field.js +1 -1
  18. package/src/m3/{focus-ring.js → focus-ring/focus-ring.js} +4 -4
  19. package/src/m3/{item-styles.css.js → item/item-styles.css.js} +1 -1
  20. package/src/m3/{item.js → item/item.js} +1 -1
  21. package/src/m3/list/list-item-styles.css.js +2 -0
  22. package/src/m3/{list-item.js → list/list-item.js} +11 -1
  23. package/src/m3/{menu-item.js → menu/menu-item.js} +2 -2
  24. package/src/m3/menu/menu-styles.css.js +2 -0
  25. package/src/m3/{menu.js → menu/menu.js} +9 -3
  26. package/src/m3/{ripple.js → ripple/ripple.js} +3 -3
  27. package/src/m3/{option.js → select/option.js} +2 -2
  28. package/src/m3/{slider.js → slider/slider.js} +2 -2
  29. package/src/m3/{switch.js → switch/switch.js} +3 -3
  30. package/src/m3/toolbar/toolbar-styles.css.js +2 -0
  31. package/src/m3/{toolbar.js → toolbar/toolbar.js} +1 -1
  32. package/src/m3/{tooltip.js → tooltip/tooltip.js} +1 -1
  33. package/src/m3/fab-styles.css.js +0 -2
  34. package/src/m3/list-item-styles.css.js +0 -2
  35. package/src/m3/menu-styles.css.js +0 -2
  36. package/src/m3/toolbar-styles.css.js +0 -2
  37. /package/src/m3/{checkbox-styles.css.js → checkbox/checkbox-styles.css.js} +0 -0
  38. /package/src/m3/{focus-ring-styles.css.js → focus-ring/focus-ring-styles.css.js} +0 -0
  39. /package/src/m3/{list-styles.css.js → list/list-styles.css.js} +0 -0
  40. /package/src/m3/{list.js → list/list.js} +0 -0
  41. /package/src/m3/{ripple-styles.css.js → ripple/ripple-styles.css.js} +0 -0
  42. /package/src/m3/{slider-styles.css.js → slider/slider-styles.css.js} +0 -0
  43. /package/src/m3/{switch-styles.css.js → switch/switch-styles.css.js} +0 -0
  44. /package/src/m3/{tooltip-styles.css.js → tooltip/tooltip-styles.css.js} +0 -0
package/README.md CHANGED
@@ -42,7 +42,7 @@ import '@vollowx/seele';
42
42
 
43
43
  // OR Import specific components (Recommended)
44
44
  import '@vollowx/seele/m3/button/common-button.js';
45
- import '@vollowx/seele/m3/checkbox.js';
45
+ import '@vollowx/seele/m3/checkbox/checkbox.js';
46
46
  ```
47
47
 
48
48
  ### Using Components
@@ -666,6 +666,26 @@
666
666
  },
667
667
  "readonly": true,
668
668
  "default": "{ show: 300, hide: 200 }"
669
+ },
670
+ {
671
+ "kind": "field",
672
+ "name": "color",
673
+ "type": {
674
+ "text": "'standard' | 'vibrant'"
675
+ },
676
+ "default": "'standard'",
677
+ "attribute": "color",
678
+ "reflects": true
679
+ }
680
+ ],
681
+ "attributes": [
682
+ {
683
+ "name": "color",
684
+ "type": {
685
+ "text": "'standard' | 'vibrant'"
686
+ },
687
+ "default": "'standard'",
688
+ "fieldName": "color"
669
689
  }
670
690
  ],
671
691
  "superclass": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vollowx/seele",
3
- "version": "0.11.1",
3
+ "version": "0.11.2",
4
4
  "description": "Standard Extensible Elements. A web components library that can be styled and extended freely, pre-providing components in Material Design 3.",
5
5
  "author": "vollowx",
6
6
  "license": "Apache-2.0",
package/src/all.js CHANGED
@@ -2,19 +2,22 @@ export { M3Button } from './m3/button/common-button.js';
2
2
  export { M3ButtonToggle } from './m3/button/common-button-toggle.js';
3
3
  export { M3IconButton } from './m3/button/icon-button.js';
4
4
  export { M3IconButtonToggle } from './m3/button/icon-button-toggle.js';
5
- export { M3FilledTextField } from './m3/text-field/filled-text-field.js';
6
- export { M3OutlinedTextField } from './m3/text-field/outlined-text-field.js';
5
+ export { M3Checkbox } from './m3/checkbox/checkbox.js';
6
+ export { M3Divider } from './m3/divider/divider.js';
7
+ export { M3Fab } from './m3/fab/fab.js';
8
+ export { M3FocusRing } from './m3/focus-ring/focus-ring.js';
9
+ export { M3Item } from './m3/item/item.js';
10
+ export { M3List } from './m3/list/list.js';
11
+ export { M3ListItem } from './m3/list/list-item.js';
12
+ export { M3Menu } from './m3/menu/menu.js';
13
+ export { M3MenuItem } from './m3/menu/menu-item.js';
14
+ export { M3Ripple } from './m3/ripple/ripple.js';
7
15
  export { MdFilledSelect } from './m3/select/filled-select.js';
8
16
  export { MdOutlinedSelect } from './m3/select/outlined-select.js';
9
- export { M3Checkbox } from './m3/checkbox.js';
10
- export { M3FAB } from './m3/fab.js';
11
- export { M3Item } from './m3/item.js';
12
- export { M3List } from './m3/list.js';
13
- export { M3Menu } from './m3/menu.js';
14
- export { M3MenuItem } from './m3/menu-item.js';
15
- export { M3Option } from './m3/option.js';
16
- export { M3Ripple } from './m3/ripple.js';
17
- export { M3Slider } from './m3/slider.js';
18
- export { M3Switch } from './m3/switch.js';
19
- export { M3Tooltip } from './m3/tooltip.js';
20
- export { M3Toolbar } from './m3/toolbar.js';
17
+ export { M3Option } from './m3/select/option.js';
18
+ export { M3Slider } from './m3/slider/slider.js';
19
+ export { M3Switch } from './m3/switch/switch.js';
20
+ export { M3FilledTextField } from './m3/text-field/filled-text-field.js';
21
+ export { M3OutlinedTextField } from './m3/text-field/outlined-text-field.js';
22
+ export { M3Toolbar } from './m3/toolbar/toolbar.js';
23
+ export { M3Tooltip } from './m3/tooltip/tooltip.js';
@@ -15,6 +15,7 @@ const Base = FormAssociated(FocusDelegated(InternalsAttached(LitElement)));
15
15
  * @fires {Event} input - Fires when the value is changed.
16
16
  *
17
17
  * TODO: Render multiple values
18
+ * FIXME: `aria-expanded` set twice by both Lit and Menu
18
19
  */ export class Select extends Base {
19
20
  get value() {
20
21
  return this[VALUE];
@@ -51,7 +51,6 @@ export class ToggleButton extends Base {
51
51
  e.stopPropagation();
52
52
  e.preventDefault();
53
53
  if (this._ignoreClick) {
54
- console.log('ignoring click from', e.target);
55
54
  this._ignoreClick = false;
56
55
  return;
57
56
  }
@@ -1,2 +1,2 @@
1
1
  import { css } from 'lit';
2
- export const commonButtonStyles = css`@layer common-button{:host{--_padding:16px;--md-focus-ring-shape:calc(var(--_h) / 2);background-color:color-mix(in srgb, var(--_background-color) var(--_background-opacity,100%), transparent);border-radius:calc(var(--_h) / 2);color:color-mix(in srgb, var(--_text-color) var(--_text-opacity,100%), transparent);font:var(--md-sys-typography-label-large);min-width:64px;padding-inline:calc(var(--_padding) - 1px);transition:box-shadow var(--md-sys-motion-std-effects-slow-duration) var(--md-sys-motion-std-effects-slow), border-radius var(--md-sys-motion-std-effects-slow-duration) var(--md-sys-motion-std-effects-slow);gap:8px}:host([size=xsmall]){--_padding:12px;gap:4px}:host([size=medium]){--_padding:24px;font:var(--md-sys-typography-title-medium);gap:8px}:host([size=large]){--_padding:48px;font:var(--md-sys-typography-headline-small);gap:12px}:host([size=xlarge]){--_padding:64px;font:var(--md-sys-typography-headline-medium);gap:16px}:host([trailingicon]){flex-direction:row-reverse}:host([variant=elevated]){--_background-color:var(--md-sys-color-surface-container-low);--_text-color:var(--_color);box-shadow:var(--md-sys-elevation-shadow-1)}:host([variant=outlined]){padding-inline:calc(var(--_padding) - 1px)}:host([variant=text]){padding-inline:calc(var(--_padding) / 4 * 3)}@media (hover:hover) and (pointer:fine){:host([variant=filled]:hover:not(:active)),:host([variant=tonal]:hover:not(:active)){box-shadow:var(--md-sys-elevation-shadow-1)}:host([variant=elevated]:hover:not(:active)){box-shadow:var(--md-sys-elevation-shadow-2)}}[part~=icon]{fill:currentColor;block-size:1em;font-size:var(--_icon-size);inline-size:1em}}`;
2
+ export const commonButtonStyles = css`@layer common-button{:host{--_padding:16px;--md-focus-ring-shape:calc(var(--_h) / 2);background-color:color-mix(in srgb, var(--_background-color) var(--_background-opacity,100%), transparent);border-radius:calc(var(--_h) / 2);color:color-mix(in srgb, var(--_text-color) var(--_text-opacity,100%), transparent);font:var(--md-sys-typography-label-large);min-width:64px;padding-inline:var(--_padding);transition:box-shadow var(--md-sys-motion-std-effects-slow-duration) var(--md-sys-motion-std-effects-slow), border-radius var(--md-sys-motion-std-effects-slow-duration) var(--md-sys-motion-std-effects-slow);gap:8px}:host([size=xsmall]){--_padding:12px;gap:4px}:host([size=medium]){--_padding:24px;font:var(--md-sys-typography-title-medium);gap:8px}:host([size=large]){--_padding:48px;font:var(--md-sys-typography-headline-small);gap:12px}:host([size=xlarge]){--_padding:64px;font:var(--md-sys-typography-headline-medium);gap:16px}:host([trailing-icon]){flex-direction:row-reverse}:host([variant=outlined]){padding-inline:calc(var(--_padding) - 1px)}:host([variant=text]){padding-inline:calc(var(--_padding) / 4 * 3)}[part~=icon]{fill:currentColor;block-size:1em;font-size:var(--_icon-size);inline-size:1em}}@layer override{:host([variant=elevated]){--_background-color:var(--md-sys-color-surface-container-low);--_text-color:var(--_color);box-shadow:var(--md-sys-elevation-shadow-1)}@media (hover:hover) and (pointer:fine){:host([variant=filled]:hover:not(:active)),:host([variant=tonal]:hover:not(:active)){box-shadow:var(--md-sys-elevation-shadow-1)}:host([variant=elevated]:hover:not(:active)){box-shadow:var(--md-sys-elevation-shadow-2)}}}`;
@@ -2,8 +2,8 @@ import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { html } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
4
  import { ToggleButton } from '../../base/toggle-button.js';
5
- import '../focus-ring.js';
6
- import '../ripple.js';
5
+ import '../focus-ring/focus-ring.js';
6
+ import '../ripple/ripple.js';
7
7
  import { targetStyles } from '../target-styles.css.js';
8
8
  import { sharedButtonStyles } from './shared-button-styles.css.js';
9
9
  import { sharedButtonToggleStyles } from './shared-button-toggle-styles.css.js';
@@ -58,7 +58,8 @@ _ts_decorate([
58
58
  _ts_decorate([
59
59
  property({
60
60
  type: Boolean,
61
- reflect: true
61
+ reflect: true,
62
+ attribute: 'trailing-icon'
62
63
  })
63
64
  ], M3ButtonToggle.prototype, "trailingIcon", void 0);
64
65
  M3ButtonToggle = _ts_decorate([
@@ -2,8 +2,8 @@ import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { html } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
4
  import { Button } from '../../base/button.js';
5
- import '../focus-ring.js';
6
- import '../ripple.js';
5
+ import '../focus-ring/focus-ring.js';
6
+ import '../ripple/ripple.js';
7
7
  import { targetStyles } from '../target-styles.css.js';
8
8
  import { sharedButtonStyles } from './shared-button-styles.css.js';
9
9
  import { commonButtonStyles } from './common-button-styles.css.js';
@@ -54,7 +54,8 @@ _ts_decorate([
54
54
  _ts_decorate([
55
55
  property({
56
56
  type: Boolean,
57
- reflect: true
57
+ reflect: true,
58
+ attribute: 'trailing-icon'
58
59
  })
59
60
  ], M3Button.prototype, "trailingIcon", void 0);
60
61
  M3Button = _ts_decorate([
@@ -2,8 +2,8 @@ import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { html } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
4
  import { ToggleButton } from '../../base/toggle-button.js';
5
- import '../focus-ring.js';
6
- import '../ripple.js';
5
+ import '../focus-ring/focus-ring.js';
6
+ import '../ripple/ripple.js';
7
7
  import { targetStyles } from '../target-styles.css.js';
8
8
  import { sharedButtonStyles } from './shared-button-styles.css.js';
9
9
  import { sharedButtonToggleStyles } from './shared-button-toggle-styles.css.js';
@@ -2,8 +2,8 @@ import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { html } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
4
  import { Button } from '../../base/button.js';
5
- import '../focus-ring.js';
6
- import '../ripple.js';
5
+ import '../focus-ring/focus-ring.js';
6
+ import '../ripple/ripple.js';
7
7
  import { targetStyles } from '../target-styles.css.js';
8
8
  import { sharedButtonStyles } from './shared-button-styles.css.js';
9
9
  import { iconButtonStyles } from './icon-button-styles.css.js';
@@ -1,10 +1,10 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { html } from 'lit';
3
3
  import { customElement, property, query } from 'lit/decorators.js';
4
- import { Checkbox } from '../base/checkbox.js';
5
- import './focus-ring.js';
4
+ import { Checkbox } from '../../base/checkbox.js';
5
+ import '../focus-ring/focus-ring.js';
6
6
  import { checkboxStyles } from './checkbox-styles.css.js';
7
- import { targetStyles } from './target-styles.css.js';
7
+ import { targetStyles } from '../target-styles.css.js';
8
8
  export class M3Checkbox extends Checkbox {
9
9
  static{
10
10
  this.styles = [
@@ -31,6 +31,7 @@ export class M3Checkbox extends Checkbox {
31
31
  }
32
32
  connectedCallback() {
33
33
  super.connectedCallback();
34
+ // TODO: Since Ripple is no longer rendered server-side, this might be unnecessary
34
35
  // SSR'd <md-checkbox> components don't have their labels set up on time
35
36
  this.updateComplete.then(()=>{
36
37
  this.$ripple.attach(this, true);
@@ -0,0 +1,2 @@
1
+ import { css } from 'lit';
2
+ export const dividerStyles = css`:host{box-sizing:border-box;height:var(--md-divider-height,1px);width:100%;display:flex;&:before{background-color:var(--md-divider-color,var(--md-sys-color-outline-variant));content:"";width:100%;height:100%}}@media (forced-colors:active){:host:before{background:canvastext}}:host([inset]),:host([inset-start]){padding-inline-start:8px}:host([inset]),:host([inset-end]){padding-inline-end:8px}`;
@@ -0,0 +1,43 @@
1
+ import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
+ import { LitElement } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import { dividerStyles } from './divider-styles.css.js';
5
+ export class M3Divider extends LitElement {
6
+ static{
7
+ this.styles = [
8
+ dividerStyles
9
+ ];
10
+ }
11
+ constructor(...args){
12
+ super(...args), this.vertical = false, this.inset = false, this.insetStart = false, this.insetEnd = false;
13
+ }
14
+ }
15
+ _ts_decorate([
16
+ property({
17
+ type: Boolean,
18
+ reflect: false
19
+ })
20
+ ], M3Divider.prototype, "vertical", void 0);
21
+ _ts_decorate([
22
+ property({
23
+ type: Boolean,
24
+ reflect: false
25
+ })
26
+ ], M3Divider.prototype, "inset", void 0);
27
+ _ts_decorate([
28
+ property({
29
+ type: Boolean,
30
+ reflect: false,
31
+ attribute: 'inset-start'
32
+ })
33
+ ], M3Divider.prototype, "insetStart", void 0);
34
+ _ts_decorate([
35
+ property({
36
+ type: Boolean,
37
+ reflect: false,
38
+ attribute: 'inset-end'
39
+ })
40
+ ], M3Divider.prototype, "insetEnd", void 0);
41
+ M3Divider = _ts_decorate([
42
+ customElement('md-divider')
43
+ ], M3Divider);
@@ -0,0 +1,2 @@
1
+ import { css } from 'lit';
2
+ export const fabStyles = css`:host{--md-focus-ring-shape:var(--_border-radius);--_text-color:var(--md-sys-color-on-primary);--_background-color:var(--md-sys-color-primary);--_size:56px;--_border-radius:16px;--_icon-size:24px;background-color:color-mix(in srgb, var(--_background-color) var(--_background-opacity,100%), transparent);border-radius:var(--_border-radius);box-shadow:var(--md-sys-elevation-shadow-3);box-sizing:border-box;color:color-mix(in srgb, var(--_text-color) var(--_text-opacity,100%), transparent);cursor:pointer;font:var(--md-sys-typography-label-large);height:var(--_size);min-width:var(--_size);padding-inline:calc((var(--_size) - var(--_icon-size)) / 2);-webkit-tap-highlight-color:transparent;transition:box-shadow var(--md-sys-motion-std-effects-slow-duration) var(--md-sys-motion-std-effects-slow);-webkit-user-select:none;user-select:none;vertical-align:middle;outline:0;justify-content:center;align-items:center;gap:8px;display:inline-flex;position:relative}:host([size=medium]){--_size:80px;--_border-radius:20px;--_icon-size:28px}:host([size=large]){--_size:96px;--_border-radius:28px;--_icon-size:36px}:host([color=primary-container]){--_text-color:var(--md-sys-color-on-primary-container);--_background-color:var(--md-sys-color-primary-container)}:host([color=secondary-container]){--_text-color:var(--md-sys-color-on-secondary-container);--_background-color:var(--md-sys-color-secondary-container)}:host([color=tertiary-container]){--_text-color:var(--md-sys-color-on-tertiary-container);--_background-color:var(--md-sys-color-tertiary-container)}:host([color=secondary]){--_text-color:var(--md-sys-color-on-secondary);--_background-color:var(--md-sys-color-secondary)}:host([color=tertiary]){--_text-color:var(--md-sys-color-on-tertiary);--_background-color:var(--md-sys-color-tertiary)}:host([color=surface]){--_text-color:var(--md-sys-color-primary);--_background-color:var(--md-sys-color-surface-container-high)}:host(:disabled){--_background-color:var(--md-sys-color-on-surface);--_background-opacity:12%;--_text-color:var(--md-sys-color-on-surface);--_text-opacity:38%;box-shadow:none;cursor:default;pointer-events:none}@media (hover:hover) and (pointer:fine){:host(:hover:not(:active)){box-shadow:var(--md-sys-elevation-shadow-4)}}::slotted(:not([slot=label])){fill:currentColor;block-size:1em;font-size:var(--_icon-size);inline-size:1em;display:inline-flex}::slotted([slot=label]){margin-inline:4px}`;
@@ -1,12 +1,12 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { html } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
- import { Button } from '../base/button.js';
5
- import './focus-ring.js';
6
- import './ripple.js';
4
+ import { Button } from '../../base/button.js';
5
+ import '../focus-ring/focus-ring.js';
6
+ import '../ripple/ripple.js';
7
7
  import { fabStyles } from './fab-styles.css.js';
8
- import { targetStyles } from './target-styles.css.js';
9
- export class M3FAB extends Button {
8
+ import { targetStyles } from '../target-styles.css.js';
9
+ export class M3Fab extends Button {
10
10
  static{
11
11
  this.styles = [
12
12
  ...super.styles,
@@ -31,12 +31,12 @@ _ts_decorate([
31
31
  property({
32
32
  reflect: true
33
33
  })
34
- ], M3FAB.prototype, "size", void 0);
34
+ ], M3Fab.prototype, "size", void 0);
35
35
  _ts_decorate([
36
36
  property({
37
37
  reflect: true
38
38
  })
39
- ], M3FAB.prototype, "color", void 0);
40
- M3FAB = _ts_decorate([
39
+ ], M3Fab.prototype, "color", void 0);
40
+ M3Fab = _ts_decorate([
41
41
  customElement('md-fab')
42
- ], M3FAB);
42
+ ], M3Fab);
@@ -2,7 +2,7 @@ import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { html } from 'lit';
3
3
  import { customElement } from 'lit/decorators.js';
4
4
  import { M3Field } from './field.js';
5
- import '../ripple.js';
5
+ import '../ripple/ripple.js';
6
6
  import { filledFieldStyles } from './filled-field-styles.css.js';
7
7
  export class M3FilledField extends M3Field {
8
8
  static{
@@ -1,10 +1,10 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { LitElement } from 'lit';
3
3
  import { property } from 'lit/decorators.js';
4
- import { customElement } from '../core/decorators.js';
5
- import { focusVisible } from '../core/focus-visible.js';
6
- import { Attachable } from '../base/mixins/attachable.js';
7
- import { InternalsAttached, internals } from '../base/mixins/internals-attached.js';
4
+ import { customElement } from '../../core/decorators.js';
5
+ import { focusVisible } from '../../core/focus-visible.js';
6
+ import { Attachable } from '../../base/mixins/attachable.js';
7
+ import { InternalsAttached, internals } from '../../base/mixins/internals-attached.js';
8
8
  import { focusRingStyles } from './focus-ring-styles.css.js';
9
9
  export class M3FocusRing extends Attachable(InternalsAttached(LitElement)) {
10
10
  constructor(){
@@ -1,2 +1,2 @@
1
1
  import { css } from 'lit';
2
- export const itemStyles = css`:host{border-radius:inherit;box-sizing:border-box;font:var(--md-sys-typography-body-large);text-overflow:ellipsis;-webkit-user-select:none;user-select:none;flex:1;align-items:center;gap:16px;min-height:48px;padding:12px;display:flex;position:relative}:host([multiline]){min-height:72px}[name=container]{border-radius:inherit}[name=container]::slotted(*){position:absolute;inset:0}.default-slot{display:inline}.default-slot,.text ::slotted(*){text-overflow:ellipsis;overflow:hidden}.text{flex-direction:column;flex:1;display:flex;overflow:hidden}`;
2
+ export const itemStyles = css`:host{border-radius:inherit;box-sizing:border-box;font:var(--md-sys-typography-body-large);text-overflow:ellipsis;-webkit-user-select:none;user-select:none;flex:1;align-items:center;gap:16px;min-height:48px;padding:12px;display:flex;position:relative}:host([multiline]){min-height:72px}[name=container]{border-radius:inherit}[name=container]::slotted(*){position:absolute;inset:0}.default-slot{display:inline}.default-slot,.text ::slotted(*){text-overflow:ellipsis;overflow:hidden}.text{flex-direction:column;flex:1;display:flex;overflow:hidden}[name=overline]{font:var(--md-sys-typography-label-small)}[name=supporting-text]{color:var(--md-item-supporting-text-color,var(--md-sys-color-on-surface-variant));font:var(--md-sys-typography-body-medium)}`;
@@ -1,7 +1,7 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { html } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
- import { Item } from '../base/item.js';
4
+ import { Item } from '../../base/item.js';
5
5
  import { itemStyles } from './item-styles.css.js';
6
6
  export class M3Item extends Item {
7
7
  static{
@@ -0,0 +1,2 @@
1
+ import { css } from 'lit';
2
+ export const listItemStyles = css`:host{--md-focus-ring-shape:12px;--md-focus-ring-inward-offset:-3px;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border-radius:4px;outline:0;display:flex}:host(:first-of-type){border-radius:12px 12px 4px 4px}:host(:last-of-type){border-radius:4px 4px 12px 12px}:host(:state(selected)){--md-item-supporting-text-color:var(--md-sys-color-on-tertiary-container);background-color:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container);border-radius:12px}:host(:disabled){cursor:default;opacity:.3;pointer-events:none}md-item,md-item div[slot=container]{border-radius:inherit}`;
@@ -1,7 +1,8 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { html } from 'lit';
3
3
  import { customElement, query } from 'lit/decorators.js';
4
- import { ListItem } from '../base/list-item.js';
4
+ import { ListItem } from '../../base/list-item.js';
5
+ import '../item/item.js';
5
6
  import { listItemStyles } from './list-item-styles.css.js';
6
7
  export class M3ListItem extends ListItem {
7
8
  constructor(){
@@ -34,7 +35,16 @@ export class M3ListItem extends ListItem {
34
35
  <md-focus-ring inward></md-focus-ring>
35
36
  <md-ripple></md-ripple>
36
37
  </div>
38
+ <slot slot="start" name="start"></slot>
39
+ <slot slot="overline" name="overline"></slot>
37
40
  <slot></slot>
41
+ <slot slot="headline" name="headline"></slot>
42
+ <slot slot="supporting-text" name="supporting-text"></slot>
43
+ <slot
44
+ slot="trailing-supporting-text"
45
+ name="trailing-supporting-text"
46
+ ></slot>
47
+ <slot slot="end" name="end"></slot>
38
48
  </md-item>
39
49
  `;
40
50
  }
@@ -1,7 +1,7 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { customElement } from 'lit/decorators.js';
3
- import { M3ListItem } from './list-item.js';
4
- import { MenuItemMixin } from '../base/menu-item.js';
3
+ import { M3ListItem } from '../list/list-item.js';
4
+ import { MenuItemMixin } from '../../base/menu-item.js';
5
5
  export class M3MenuItem extends MenuItemMixin(M3ListItem) {
6
6
  }
7
7
  M3MenuItem = _ts_decorate([
@@ -0,0 +1,2 @@
1
+ import { css } from 'lit';
2
+ export const menuStyles = css`:host{min-width:112px;display:contents}[part=menu]{background:var(--md-sys-color-surface-container);box-shadow:var(--md-sys-elevation-shadow-2);box-sizing:border-box;color:var(--md-sys-color-on-surface);height:inherit;max-height:var(--md-menu-max-height,inherit);max-width:inherit;min-width:inherit;opacity:0;-webkit-user-select:none;user-select:none;z-index:1000;border-radius:16px;outline:0;padding:4px;position:absolute;inset:auto;overflow-y:auto;transform:scaleY(.4)}:host([color=vibrant]){& [part=menu]{--md-divider-color:var(--md-sys-color-tertiary);--md-item-supporting-text-color:var(--md-sys-color-on-tertiary-container);background-color:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}& ::slotted([selected]){--md-item-supporting-text-color:var(--md-sys-color-on-tertiary);background-color:var(--md-sys-color-tertiary);color:var(--md-sys-color-on-tertiary)}}:host([alignstrategy=fixed]) [part=menu]{position:fixed}[part=items]{opacity:0;flex-direction:column;gap:2px;display:flex}:host(:state(closed)) [part=menu]{display:none}:host(:state(opening)){& [part=menu]{opacity:1;transition:opacity 67ms, transform var(--md-sys-motion-exp-spatial-default-duration) var(--md-sys-motion-exp-spatial-default);display:block;transform:scaleY(1)}& [part=items]{opacity:1;transition:opacity 67ms linear 67ms}}:host(:state(opened)){& [part=menu]{opacity:1;display:block;transform:scaleY(1)}& [part=items]{opacity:1}}:host(:state(closing)){& [part=menu]{opacity:0;transition:opacity var(--md-sys-motion-exp-effects-fast-duration), transform var(--md-sys-motion-exp-effects-slow-duration) var(--md-sys-motion-exp-effects-slow);transform:scaleY(.4)}& [part=items]{opacity:0;transition:opacity 67ms}}::slotted(md-divider){margin-block:6px}`;
@@ -1,6 +1,7 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { customElement } from 'lit/decorators.js';
3
- import { Menu } from '../base/menu.js';
3
+ import { property } from 'lit/decorators.js';
4
+ import { Menu } from '../../base/menu.js';
4
5
  import { menuStyles } from './menu-styles.css.js';
5
6
  export class M3Menu extends Menu {
6
7
  static{
@@ -18,10 +19,15 @@ export class M3Menu extends Menu {
18
19
  'md-option'
19
20
  ], this._durations = {
20
21
  show: 300,
21
- hide: 200
22
- };
22
+ hide: 150
23
+ }, this.color = 'standard';
23
24
  }
24
25
  }
26
+ _ts_decorate([
27
+ property({
28
+ reflect: true
29
+ })
30
+ ], M3Menu.prototype, "color", void 0);
25
31
  M3Menu = _ts_decorate([
26
32
  customElement('md-menu')
27
33
  ], M3Menu);
@@ -1,9 +1,9 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { LitElement } from 'lit';
3
3
  import { property } from 'lit/decorators.js';
4
- import { customElement } from '../core/decorators.js';
5
- import { Attachable } from '../base/mixins/attachable.js';
6
- import { InternalsAttached, internals } from '../base/mixins/internals-attached.js';
4
+ import { customElement } from '../../core/decorators.js';
5
+ import { Attachable } from '../../base/mixins/attachable.js';
6
+ import { InternalsAttached, internals } from '../../base/mixins/internals-attached.js';
7
7
  import { rippleStyles } from './ripple-styles.css.js';
8
8
  const PRESS_GROW_MS = 450;
9
9
  const MINIMUM_PRESS_MS = 225;
@@ -1,7 +1,7 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { customElement } from 'lit/decorators.js';
3
- import { OptionMixin } from '../base/option.js';
4
- import { M3ListItem } from './list-item.js';
3
+ import { OptionMixin } from '../../base/option.js';
4
+ import { M3ListItem } from '../list/list-item.js';
5
5
  export class M3Option extends OptionMixin(M3ListItem) {
6
6
  }
7
7
  M3Option = _ts_decorate([
@@ -4,8 +4,8 @@ import { customElement } from 'lit/decorators.js';
4
4
  import { classMap } from 'lit/directives/class-map.js';
5
5
  import { styleMap } from 'lit/directives/style-map.js';
6
6
  import { when } from 'lit/directives/when.js';
7
- import { Slider } from '../base/slider.js';
8
- import './focus-ring.js';
7
+ import { Slider } from '../../base/slider.js';
8
+ import '../focus-ring/focus-ring.js';
9
9
  import { sliderStyles } from './slider-styles.css.js';
10
10
  export class M3Slider extends Slider {
11
11
  static{
@@ -1,10 +1,10 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { html } from 'lit';
3
3
  import { customElement, property, query } from 'lit/decorators.js';
4
- import { ToggleButton } from '../base/toggle-button.js';
5
- import './focus-ring.js';
4
+ import { ToggleButton } from '../../base/toggle-button.js';
5
+ import '../focus-ring/focus-ring.js';
6
6
  import { switchStyles } from './switch-styles.css.js';
7
- import { targetStyles } from './target-styles.css.js';
7
+ import { targetStyles } from '../target-styles.css.js';
8
8
  function isRTL() {
9
9
  return document.documentElement.dir === 'rtl';
10
10
  }
@@ -0,0 +1,2 @@
1
+ import { css } from 'lit';
2
+ export const toolbarStyles = css`:host{--_padding:16px;--_gap:32px;--_container-color:var(--md-sys-color-surface-container);--_on-color:var(--md-sys-color-on-surface);background-color:color-mix(in srgb, var(--_container-color) var(--_container-opacity,100%), transparent);box-sizing:border-box;color:color-mix(in srgb, var(--_on-color) var(--_on-opacity,100%), transparent);align-items:center;width:100%;height:64px;display:flex}[part=container]{box-sizing:border-box;align-items:center;gap:var(--_gap);height:64px;padding:0 var(--_padding);flex:auto;justify-content:space-between;width:100%;display:flex}[part=fab-slot]{justify-content:flex-end;align-items:center;display:flex}:host(:not([orientation=vertical])) ::slotted([slot=fab]){margin-inline-start:8px}:host([orientation=vertical]) ::slotted([slot=fab]){margin-block-start:8px}:host([type=floating]){--_padding:12px;--_gap:4px;--_container-color:var(--md-sys-color-surface-container-high);box-shadow:none;background:0 0;width:fit-content;max-width:calc(100% - 32px);& [part=container]{background-color:color-mix(in srgb, var(--_container-color) var(--_container-opacity,100%), transparent);box-shadow:var(--md-toolbar-shadow,var(--md-sys-elevation-shadow-3));border-radius:32px;width:fit-content}& ::slotted(md-button),& ::slotted(md-button-toggle),& ::slotted(md-icon-button),& ::slotted(md-icon-button-toggle){--md-focus-ring-shape:calc(var(--_h) / 2);border-radius:calc(var(--_h) / 2)}}:host([type=floating][orientation=vertical]){flex-direction:column;align-items:stretch;width:64px;min-height:auto;& [part=container]{height:fit-content;padding:var(--_padding) 0;flex-direction:column;width:100%}}::slotted(md-button-toggle[variant=tonal]:not(:state(checked))),::slotted(md-icon-button-toggle[variant=tonal]:not(:state(checked))){--_background-color:transparent}:host([color=vibrant]){--_container-color:var(--md-sys-color-primary-container);--_on-color:var(--md-sys-color-on-primary-container);& ::slotted(md-icon-button[variant=text]),& ::slotted(md-icon-button-toggle[variant=tonal]){--_text-color:var(--md-sys-color-on-primary-container)}& ::slotted(md-icon-button-toggle[variant=tonal]:state(checked)){--_background-color:var(--md-sys-color-surface-container);--_text-color:var(--md-sys-color-on-surface)}}`;
@@ -1,7 +1,7 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { LitElement, html } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
- import { internals, InternalsAttached } from '../base/mixins/internals-attached.js';
4
+ import { internals, InternalsAttached } from '../../base/mixins/internals-attached.js';
5
5
  import { toolbarStyles } from './toolbar-styles.css.js';
6
6
  export class M3Toolbar extends InternalsAttached(LitElement) {
7
7
  static{
@@ -1,6 +1,6 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { customElement } from 'lit/decorators.js';
3
- import { Tooltip } from '../base/tooltip.js';
3
+ import { Tooltip } from '../../base/tooltip.js';
4
4
  import { tooltipStyles } from './tooltip-styles.css.js';
5
5
  export class M3Tooltip extends Tooltip {
6
6
  static{
@@ -1,2 +0,0 @@
1
- import { css } from 'lit';
2
- export const fabStyles = css`:host{--md-focus-ring-shape:var(--_border-radius);--_text-color:var(--md-sys-color-on-primary);--_background-color:var(--md-sys-color-primary);--_size:56px;--_border-radius:16px;--_icon-size:24px;background-color:color-mix(in srgb, var(--_background-color) var(--_background-opacity,100%), transparent);border-radius:var(--_border-radius);box-shadow:var(--md-sys-elevation-shadow-3);box-sizing:border-box;color:color-mix(in srgb, var(--_text-color) var(--_text-opacity,100%), transparent);cursor:pointer;font:var(--md-sys-typography-label-large);height:var(--_size);min-width:var(--_size);padding-inline:calc((var(--_size) - var(--_icon-size)) / 2);-webkit-tap-highlight-color:transparent;transition:box-shadow var(--md-sys-motion-std-effects-slow-duration) var(--md-sys-motion-std-effects-slow);-webkit-user-select:none;user-select:none;vertical-align:middle;outline:0;justify-content:center;align-items:center;gap:8px;display:inline-flex;position:relative}:host([lowered]){--_background-color:var(--md-sys-color-surface-container-low);box-shadow:var(--md-sys-elevation-shadow-1)}:host([size=medium]){--_size:80px;--_border-radius:20px;--_icon-size:28px}:host([size=large]){--_size:96px;--_border-radius:28px;--_icon-size:36px}:host([color=primary-container]){--_text-color:var(--md-sys-color-on-primary-container);--_background-color:var(--md-sys-color-primary-container)}:host([color=secondary-container]){--_text-color:var(--md-sys-color-on-secondary-container);--_background-color:var(--md-sys-color-secondary-container)}:host([color=tertiary-container]){--_text-color:var(--md-sys-color-on-tertiary-container);--_background-color:var(--md-sys-color-tertiary-container)}:host([color=secondary]){--_text-color:var(--md-sys-color-on-secondary);--_background-color:var(--md-sys-color-secondary)}:host([color=tertiary]){--_text-color:var(--md-sys-color-on-tertiary);--_background-color:var(--md-sys-color-tertiary)}:host([color=surface]){--_text-color:var(--md-sys-color-primary);--_background-color:var(--md-sys-color-surface-container-high)}:host(:disabled){--_background-color:var(--md-sys-color-on-surface);--_background-opacity:12%;--_text-color:var(--md-sys-color-on-surface);--_text-opacity:38%;box-shadow:none;cursor:default;pointer-events:none}@media (hover:hover) and (pointer:fine){:host(:hover:not(:active)){box-shadow:var(--md-sys-elevation-shadow-4)}}::slotted(:not([slot=label])){fill:currentColor;block-size:1em;font-size:var(--_icon-size);inline-size:1em;display:inline-flex}::slotted([slot=label]){margin-inline:4px}`;
@@ -1,2 +0,0 @@
1
- import { css } from 'lit';
2
- export const listItemStyles = css`:host{--md-focus-ring-shape:12px;--md-focus-ring-inward-offset:-4px;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;border-radius:12px;outline:0;display:flex}:host(:state(selected)){background-color:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}:host(:disabled){cursor:default;opacity:.3;pointer-events:none}md-item,md-item div[slot=container]{border-radius:inherit}`;
@@ -1,2 +0,0 @@
1
- import { css } from 'lit';
2
- export const menuStyles = css`:host{min-width:112px;display:contents}[part=menu]{background:var(--md-sys-color-surface-container);box-shadow:var(--md-sys-elevation-shadow-2);box-sizing:border-box;color:var(--md-sys-color-on-surface);height:inherit;max-height:var(--md-menu-max-height,inherit);max-width:inherit;min-width:inherit;opacity:0;-webkit-user-select:none;user-select:none;z-index:1000;border-radius:16px;outline:0;padding:4px;position:absolute;inset:auto;overflow-y:auto;transform:scaleY(.4)}:host([alignstrategy=fixed]) [part=menu]{position:fixed}:host(:state(closed)) [part=menu]{display:none}:host(:state(opening)) [part=menu]{opacity:1;transition:opacity 67ms, transform var(--md-sys-motion-exp-effects-slow-duration) var(--md-sys-motion-exp-effects-slow);display:block;transform:scaleY(1)}:host(:state(opened)) [part=menu]{opacity:1;display:block;transform:scaleY(1)}:host(:state(closing)) [part=menu]{opacity:0;transition:opacity var(--md-sys-motion-exp-effects-default-duration), transform var(--md-sys-motion-exp-effects-default-duration) var(--md-sys-motion-exp-effects-default);transform:scaleY(.4)}[part=items]{opacity:0;flex-direction:column;gap:2px;display:flex}:host(:state(opening)) [part=items]{opacity:1;transition:opacity 67ms linear 67ms}:host(:state(opened)) [part=items]{opacity:1}:host(:state(closing)) [part=items]{opacity:0;transition:opacity 67ms}`;
@@ -1,2 +0,0 @@
1
- import { css } from 'lit';
2
- export const toolbarStyles = css`:host{--_padding:16px;--_gap:32px;--_container-color:var(--md-sys-color-surface-container);--_on-color:var(--md-sys-color-on-surface);background-color:color-mix(in srgb, var(--_container-color) var(--_container-opacity,100%), transparent);box-sizing:border-box;color:color-mix(in srgb, var(--_on-color) var(--_on-opacity,100%), transparent);align-items:center;width:100%;height:64px;display:flex}:host([type=floating]){--_padding:12px;--_gap:4px;--_container-color:var(--md-sys-color-surface-container-high);box-shadow:none;background:0 0;width:fit-content;max-width:calc(100% - 32px)}:host([type=floating][orientation=vertical]){flex-direction:column;align-items:stretch;width:64px;min-height:auto}[part=container]{box-sizing:border-box;align-items:center;gap:var(--_gap);height:64px;padding:0 var(--_padding);flex:auto;justify-content:space-between;width:100%;display:flex}:host([type=floating]) [part=container]{background-color:color-mix(in srgb, var(--_container-color) var(--_container-opacity,100%), transparent);box-shadow:var(--md-toolbar-shadow,var(--md-sys-elevation-shadow-3));border-radius:32px;width:fit-content}[part=fab-slot]{justify-content:flex-end;align-items:center;display:flex}:host(:not([orientation=vertical])) ::slotted([slot=fab]){margin-inline-start:8px}:host([orientation=vertical]) ::slotted([slot=fab]){margin-block-start:8px}:host([type=floating][orientation=vertical]) [part=container]{height:fit-content;padding:var(--_padding) 0;flex-direction:column;width:100%}:host([type=floating]) ::slotted(md-button),:host([type=floating]) ::slotted(md-button-toggle),:host([type=floating]) ::slotted(md-icon-button),:host([type=floating]) ::slotted(md-icon-button-toggle){--md-focus-ring-shape:calc(var(--_h) / 2);border-radius:calc(var(--_h) / 2)}::slotted(md-button-toggle[variant=tonal]:not(:state(checked))),::slotted(md-icon-button-toggle[variant=tonal]:not(:state(checked))){--_background-color:transparent}:host([color=vibrant]){--_container-color:var(--md-sys-color-primary-container);--_on-color:var(--md-sys-color-on-primary-container)}:host([color=vibrant]) ::slotted(md-icon-button[variant=text]),:host([color=vibrant]) ::slotted(md-icon-button-toggle[variant=tonal]){--_text-color:var(--md-sys-color-on-primary-container)}:host([color=vibrant]) ::slotted(md-icon-button-toggle[variant=tonal]:state(checked)){--_background-color:var(--md-sys-color-surface-container);--_text-color:var(--md-sys-color-on-surface)}`;
File without changes