@francofantomius/material-components 0.1.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +277 -83
  3. package/custom-elements.json +21010 -2354
  4. package/dist/chunks/badge-G4EjcMoy.js +89 -0
  5. package/dist/chunks/badge-G4EjcMoy.js.map +1 -0
  6. package/dist/chunks/button-B4TSZ7Sl.js +250 -0
  7. package/dist/chunks/button-B4TSZ7Sl.js.map +1 -0
  8. package/dist/chunks/card-DVffdPpv.js +163 -0
  9. package/dist/chunks/card-DVffdPpv.js.map +1 -0
  10. package/dist/chunks/checkbox-BqlboAHd.js +194 -0
  11. package/dist/chunks/checkbox-BqlboAHd.js.map +1 -0
  12. package/dist/chunks/chip-CI1ZINnr.js +169 -0
  13. package/dist/chunks/chip-CI1ZINnr.js.map +1 -0
  14. package/dist/chunks/code-C5UFBkCh.js +1830 -0
  15. package/dist/chunks/code-C5UFBkCh.js.map +1 -0
  16. package/dist/chunks/decorate-DXuynaiA.js +39 -0
  17. package/dist/chunks/decorate-DXuynaiA.js.map +1 -0
  18. package/dist/chunks/dialog-DGVEE5m_.js +158 -0
  19. package/dist/chunks/dialog-DGVEE5m_.js.map +1 -0
  20. package/dist/chunks/divider-DNepwoZv.js +82 -0
  21. package/dist/chunks/divider-DNepwoZv.js.map +1 -0
  22. package/dist/chunks/fab-C9j3WBHE.js +150 -0
  23. package/dist/chunks/fab-C9j3WBHE.js.map +1 -0
  24. package/dist/chunks/focus-ring-CuiJuM-y.js +71 -0
  25. package/dist/chunks/focus-ring-CuiJuM-y.js.map +1 -0
  26. package/dist/chunks/{form-associated-fKbeX_2P.js → form-associated-Cty_ZaS9.js} +26 -27
  27. package/dist/chunks/form-associated-Cty_ZaS9.js.map +1 -0
  28. package/dist/chunks/icon-DrNqcNEL.js +62 -0
  29. package/dist/chunks/icon-DrNqcNEL.js.map +1 -0
  30. package/dist/chunks/icon-button-BdSc7eot.js +188 -0
  31. package/dist/chunks/icon-button-BdSc7eot.js.map +1 -0
  32. package/dist/chunks/list-D8olR7oZ.js +204 -0
  33. package/dist/chunks/list-D8olR7oZ.js.map +1 -0
  34. package/dist/chunks/navigation-drawer-CKl44Ef5.js +531 -0
  35. package/dist/chunks/navigation-drawer-CKl44Ef5.js.map +1 -0
  36. package/dist/chunks/player-C4ydiIpr.js +1582 -0
  37. package/dist/chunks/player-C4ydiIpr.js.map +1 -0
  38. package/dist/chunks/progress-LQmLMDjX.js +266 -0
  39. package/dist/chunks/progress-LQmLMDjX.js.map +1 -0
  40. package/dist/chunks/radio-Bily78NT.js +205 -0
  41. package/dist/chunks/radio-Bily78NT.js.map +1 -0
  42. package/dist/chunks/ripple-squbKHhj.js +135 -0
  43. package/dist/chunks/ripple-squbKHhj.js.map +1 -0
  44. package/dist/chunks/search-bar-TXnqJ-gd.js +698 -0
  45. package/dist/chunks/search-bar-TXnqJ-gd.js.map +1 -0
  46. package/dist/chunks/snackbar-Wsz3BzEY.js +161 -0
  47. package/dist/chunks/snackbar-Wsz3BzEY.js.map +1 -0
  48. package/dist/chunks/switch-DdukrvXb.js +190 -0
  49. package/dist/chunks/switch-DdukrvXb.js.map +1 -0
  50. package/dist/chunks/table-aRTYzDyE.js +773 -0
  51. package/dist/chunks/table-aRTYzDyE.js.map +1 -0
  52. package/dist/chunks/tabs-BfOtoeir.js +191 -0
  53. package/dist/chunks/tabs-BfOtoeir.js.map +1 -0
  54. package/dist/chunks/text-field-hN6-2HQy.js +338 -0
  55. package/dist/chunks/text-field-hN6-2HQy.js.map +1 -0
  56. package/dist/chunks/top-app-bar-Dgbp6CFv.js +228 -0
  57. package/dist/chunks/top-app-bar-Dgbp6CFv.js.map +1 -0
  58. package/dist/components/account-menu/account-menu.css.d.ts +3 -0
  59. package/dist/components/account-menu/account-menu.css.d.ts.map +1 -0
  60. package/dist/components/account-menu/account-menu.d.ts +111 -0
  61. package/dist/components/account-menu/account-menu.d.ts.map +1 -0
  62. package/dist/components/app-drawer/app-drawer.css.d.ts +3 -0
  63. package/dist/components/app-drawer/app-drawer.css.d.ts.map +1 -0
  64. package/dist/components/app-drawer/app-drawer.d.ts +173 -0
  65. package/dist/components/app-drawer/app-drawer.d.ts.map +1 -0
  66. package/dist/components/badge/badge.js +2 -91
  67. package/dist/components/button/button.js +2 -261
  68. package/dist/components/card/card.js +2 -167
  69. package/dist/components/checkbox/checkbox.css.d.ts.map +1 -1
  70. package/dist/components/checkbox/checkbox.js +2 -186
  71. package/dist/components/chip/chip.js +3 -172
  72. package/dist/components/code/code.css.d.ts +2 -0
  73. package/dist/components/code/code.css.d.ts.map +1 -0
  74. package/dist/components/code/code.d.ts +106 -0
  75. package/dist/components/code/code.d.ts.map +1 -0
  76. package/dist/components/code/code.js +5 -0
  77. package/dist/components/code/highlighter.d.ts +8 -0
  78. package/dist/components/code/highlighter.d.ts.map +1 -0
  79. package/dist/components/code/linter.d.ts +44 -0
  80. package/dist/components/code/linter.d.ts.map +1 -0
  81. package/dist/components/dialog/dialog.js +2 -165
  82. package/dist/components/divider/divider.js +2 -79
  83. package/dist/components/fab/fab.js +2 -153
  84. package/dist/components/icon/icon.js +2 -68
  85. package/dist/components/icon-button/icon-button.css.d.ts.map +1 -1
  86. package/dist/components/icon-button/icon-button.js +1 -189
  87. package/dist/components/list/list.css.d.ts.map +1 -1
  88. package/dist/components/list/list.d.ts.map +1 -1
  89. package/dist/components/list/list.js +3 -188
  90. package/dist/components/navigation-drawer/navigation-drawer.css.d.ts +3 -0
  91. package/dist/components/navigation-drawer/navigation-drawer.css.d.ts.map +1 -0
  92. package/dist/components/navigation-drawer/navigation-drawer.d.ts +76 -0
  93. package/dist/components/navigation-drawer/navigation-drawer.d.ts.map +1 -0
  94. package/dist/components/navigation-drawer/navigation-drawer.js +8 -0
  95. package/dist/components/player/player.css.d.ts +2 -0
  96. package/dist/components/player/player.css.d.ts.map +1 -0
  97. package/dist/components/player/player.d.ts +99 -0
  98. package/dist/components/player/player.d.ts.map +1 -0
  99. package/dist/components/player/player.js +7 -0
  100. package/dist/components/progress/progress.css.d.ts.map +1 -1
  101. package/dist/components/progress/progress.d.ts +2 -0
  102. package/dist/components/progress/progress.d.ts.map +1 -1
  103. package/dist/components/progress/progress.js +3 -181
  104. package/dist/components/radio/radio.css.d.ts.map +1 -1
  105. package/dist/components/radio/radio.js +3 -203
  106. package/dist/components/search-bar/search-bar.css.d.ts +2 -0
  107. package/dist/components/search-bar/search-bar.css.d.ts.map +1 -0
  108. package/dist/components/search-bar/search-bar.d.ts +81 -0
  109. package/dist/components/search-bar/search-bar.d.ts.map +1 -0
  110. package/dist/components/search-bar/search-bar.js +5 -0
  111. package/dist/components/snackbar/snackbar.js +2 -162
  112. package/dist/components/switch/switch.css.d.ts.map +1 -1
  113. package/dist/components/switch/switch.js +2 -169
  114. package/dist/components/table/table.css.d.ts +8 -0
  115. package/dist/components/table/table.css.d.ts.map +1 -0
  116. package/dist/components/table/table.d.ts +158 -0
  117. package/dist/components/table/table.d.ts.map +1 -0
  118. package/dist/components/table/table.js +13 -0
  119. package/dist/components/tabs/tabs.js +3 -198
  120. package/dist/components/text-field/text-field.css.d.ts.map +1 -1
  121. package/dist/components/text-field/text-field.d.ts +1 -1
  122. package/dist/components/text-field/text-field.d.ts.map +1 -1
  123. package/dist/components/text-field/text-field.js +2 -325
  124. package/dist/components/top-app-bar/top-app-bar.css.d.ts +2 -0
  125. package/dist/components/top-app-bar/top-app-bar.css.d.ts.map +1 -0
  126. package/dist/components/top-app-bar/top-app-bar.d.ts +29 -0
  127. package/dist/components/top-app-bar/top-app-bar.d.ts.map +1 -0
  128. package/dist/components/top-app-bar/top-app-bar.js +5 -0
  129. package/dist/index.d.ts +8 -0
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +2264 -58
  132. package/dist/index.js.map +1 -1
  133. package/dist/internal/focus-ring/focus-ring.d.ts.map +1 -1
  134. package/dist/internal/focus-ring/focus-ring.js +4 -0
  135. package/dist/internal/ripple/ripple.css.d.ts.map +1 -1
  136. package/dist/internal/ripple/ripple.d.ts +0 -3
  137. package/dist/internal/ripple/ripple.d.ts.map +1 -1
  138. package/dist/internal/ripple/ripple.js +2 -142
  139. package/dist/tokens/index.js +336 -11
  140. package/dist/tokens/index.js.map +1 -1
  141. package/package.json +118 -12
  142. package/dist/chunks/base-component-DQTjlEVL.js +0 -34
  143. package/dist/chunks/base-component-DQTjlEVL.js.map +0 -1
  144. package/dist/chunks/focus-ring-Dl-XoEKK.js +0 -71
  145. package/dist/chunks/focus-ring-Dl-XoEKK.js.map +0 -1
  146. package/dist/chunks/form-associated-fKbeX_2P.js.map +0 -1
  147. package/dist/chunks/theme.css-DV3DRha-.js +0 -263
  148. package/dist/chunks/theme.css-DV3DRha-.js.map +0 -1
  149. package/dist/components/badge/badge.js.map +0 -1
  150. package/dist/components/button/button.js.map +0 -1
  151. package/dist/components/card/card.js.map +0 -1
  152. package/dist/components/checkbox/checkbox.js.map +0 -1
  153. package/dist/components/chip/chip.js.map +0 -1
  154. package/dist/components/dialog/dialog.js.map +0 -1
  155. package/dist/components/divider/divider.js.map +0 -1
  156. package/dist/components/fab/fab.js.map +0 -1
  157. package/dist/components/icon/icon.js.map +0 -1
  158. package/dist/components/icon-button/icon-button.js.map +0 -1
  159. package/dist/components/list/list.js.map +0 -1
  160. package/dist/components/progress/progress.js.map +0 -1
  161. package/dist/components/radio/radio.js.map +0 -1
  162. package/dist/components/snackbar/snackbar.js.map +0 -1
  163. package/dist/components/switch/switch.js.map +0 -1
  164. package/dist/components/tabs/tabs.js.map +0 -1
  165. package/dist/components/text-field/text-field.js.map +0 -1
  166. package/dist/internal/ripple/ripple.js.map +0 -1
@@ -0,0 +1,150 @@
1
+ import { n as r, t } from "./decorate-DXuynaiA.js";
2
+ import "./ripple-squbKHhj.js";
3
+ import "./focus-ring-CuiJuM-y.js";
4
+ import "./icon-DrNqcNEL.js";
5
+ import { css as a, html as s, nothing as n } from "lit";
6
+ import { customElement as l, property as o } from "lit/decorators.js";
7
+ var d = a`
8
+ :host {
9
+ display: inline-flex;
10
+ outline: none;
11
+ vertical-align: middle;
12
+ -webkit-tap-highlight-color: transparent;
13
+ }
14
+
15
+ :host([disabled]) {
16
+ pointer-events: none;
17
+ }
18
+
19
+ button {
20
+ position: relative;
21
+ display: inline-flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ box-sizing: border-box;
25
+ border: none;
26
+ cursor: pointer;
27
+ user-select: none;
28
+ outline: none;
29
+ background-color: var(--md-sys-color-primary-container, #EADDFF);
30
+ color: var(--md-sys-color-on-primary-container, #21005D);
31
+ box-shadow: var(--md-sys-elevation-level3, 0px 1px 3px 0px rgba(0,0,0,0.30));
32
+ transition: box-shadow 200ms cubic-bezier(0.2, 0, 0, 1),
33
+ background-color 200ms cubic-bezier(0.2, 0, 0, 1);
34
+ overflow: hidden;
35
+ }
36
+
37
+ button:hover {
38
+ box-shadow: var(--md-sys-elevation-level4, 0px 2px 3px 0px rgba(0,0,0,0.30));
39
+ }
40
+
41
+ :host([lowered]) button {
42
+ box-shadow: var(--md-sys-elevation-level1, 0px 1px 3px 1px rgba(0,0,0,0.15));
43
+ }
44
+
45
+ :host([lowered]) button:hover {
46
+ box-shadow: var(--md-sys-elevation-level2, 0px 2px 6px 2px rgba(0,0,0,0.15));
47
+ }
48
+
49
+ /* --- Sizes --- */
50
+ :host(:not([size])) button,
51
+ :host([size="medium"]) button {
52
+ width: 56px;
53
+ height: 56px;
54
+ border-radius: var(--md-sys-shape-corner-large, 16px);
55
+ }
56
+
57
+ :host([size="small"]) button {
58
+ width: 40px;
59
+ height: 40px;
60
+ border-radius: var(--md-sys-shape-corner-medium, 12px);
61
+ }
62
+
63
+ :host([size="large"]) button {
64
+ width: 96px;
65
+ height: 96px;
66
+ border-radius: var(--md-sys-shape-corner-extra-large, 28px);
67
+ }
68
+
69
+ :host([size="large"]) md-icon {
70
+ --md-icon-size: 36px;
71
+ }
72
+
73
+ /* --- Extended FAB --- */
74
+ :host([extended]) button {
75
+ width: auto;
76
+ min-width: 80px;
77
+ height: 56px;
78
+ padding: 0 20px;
79
+ border-radius: var(--md-sys-shape-corner-large, 16px);
80
+ gap: 12px;
81
+ }
82
+
83
+ .label {
84
+ font-family: var(--md-sys-typescale-font-family, inherit);
85
+ font-size: var(--md-sys-typescale-label-large-size, 14px);
86
+ font-weight: 500;
87
+ line-height: 20px;
88
+ letter-spacing: 0.1px;
89
+ white-space: nowrap;
90
+ }
91
+
92
+ .content {
93
+ display: inline-flex;
94
+ align-items: center;
95
+ justify-content: center;
96
+ gap: 12px;
97
+ position: relative;
98
+ z-index: 1;
99
+ }
100
+ `, e = class extends r {
101
+ constructor(...i) {
102
+ super(...i), this.size = "medium", this.label = "", this.icon = "", this.lowered = !1, this.disabled = !1, this.extended = !1;
103
+ }
104
+ static {
105
+ this.styles = [r.styles, d];
106
+ }
107
+ updated(i) {
108
+ super.updated(i), i.has("label") && (this.extended = !!this.label);
109
+ }
110
+ render() {
111
+ return s`
112
+ <button ?disabled=${this.disabled}>
113
+ <md-ripple ?disabled=${this.disabled}></md-ripple>
114
+ <md-focus-ring></md-focus-ring>
115
+ <span class="content">
116
+ <slot name="icon">
117
+ ${this.icon ? s`<md-icon name=${this.icon}></md-icon>` : n}
118
+ </slot>
119
+ <slot>
120
+ ${this.label ? s`<span class="label">${this.label}</span>` : n}
121
+ </slot>
122
+ </span>
123
+ </button>
124
+ `;
125
+ }
126
+ };
127
+ t([o({
128
+ type: String,
129
+ reflect: !0
130
+ })], e.prototype, "size", void 0);
131
+ t([o({ type: String })], e.prototype, "label", void 0);
132
+ t([o({ type: String })], e.prototype, "icon", void 0);
133
+ t([o({
134
+ type: Boolean,
135
+ reflect: !0
136
+ })], e.prototype, "lowered", void 0);
137
+ t([o({
138
+ type: Boolean,
139
+ reflect: !0
140
+ })], e.prototype, "disabled", void 0);
141
+ t([o({
142
+ type: Boolean,
143
+ reflect: !0
144
+ })], e.prototype, "extended", void 0);
145
+ e = t([l("md-fab")], e);
146
+ export {
147
+ e as t
148
+ };
149
+
150
+ //# sourceMappingURL=fab-C9j3WBHE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fab-C9j3WBHE.js","names":[],"sources":["../../src/components/fab/fab.css.ts","../../src/components/fab/fab.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const fabStyles = css`\n :host {\n display: inline-flex;\n outline: none;\n vertical-align: middle;\n -webkit-tap-highlight-color: transparent;\n }\n\n :host([disabled]) {\n pointer-events: none;\n }\n\n button {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n border: none;\n cursor: pointer;\n user-select: none;\n outline: none;\n background-color: var(--md-sys-color-primary-container, #EADDFF);\n color: var(--md-sys-color-on-primary-container, #21005D);\n box-shadow: var(--md-sys-elevation-level3, 0px 1px 3px 0px rgba(0,0,0,0.30));\n transition: box-shadow 200ms cubic-bezier(0.2, 0, 0, 1),\n background-color 200ms cubic-bezier(0.2, 0, 0, 1);\n overflow: hidden;\n }\n\n button:hover {\n box-shadow: var(--md-sys-elevation-level4, 0px 2px 3px 0px rgba(0,0,0,0.30));\n }\n\n :host([lowered]) button {\n box-shadow: var(--md-sys-elevation-level1, 0px 1px 3px 1px rgba(0,0,0,0.15));\n }\n\n :host([lowered]) button:hover {\n box-shadow: var(--md-sys-elevation-level2, 0px 2px 6px 2px rgba(0,0,0,0.15));\n }\n\n /* --- Sizes --- */\n :host(:not([size])) button,\n :host([size=\"medium\"]) button {\n width: 56px;\n height: 56px;\n border-radius: var(--md-sys-shape-corner-large, 16px);\n }\n\n :host([size=\"small\"]) button {\n width: 40px;\n height: 40px;\n border-radius: var(--md-sys-shape-corner-medium, 12px);\n }\n\n :host([size=\"large\"]) button {\n width: 96px;\n height: 96px;\n border-radius: var(--md-sys-shape-corner-extra-large, 28px);\n }\n\n :host([size=\"large\"]) md-icon {\n --md-icon-size: 36px;\n }\n\n /* --- Extended FAB --- */\n :host([extended]) button {\n width: auto;\n min-width: 80px;\n height: 56px;\n padding: 0 20px;\n border-radius: var(--md-sys-shape-corner-large, 16px);\n gap: 12px;\n }\n\n .label {\n font-family: var(--md-sys-typescale-font-family, inherit);\n font-size: var(--md-sys-typescale-label-large-size, 14px);\n font-weight: 500;\n line-height: 20px;\n letter-spacing: 0.1px;\n white-space: nowrap;\n }\n\n .content {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n position: relative;\n z-index: 1;\n }\n`;\n\n","import { html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { MdBaseElement } from '../../internal/base-component.js';\nimport '../../internal/ripple/ripple.js';\nimport '../../internal/focus-ring/focus-ring.js';\nimport '../icon/icon.js';\nimport { fabStyles } from './fab.css.js';\n\nexport type FabSize = 'small' | 'medium' | 'large';\n\n@customElement('md-fab')\nexport class MdFab extends MdBaseElement {\n static override styles = [MdBaseElement.styles, fabStyles];\n\n @property({ type: String, reflect: true })\n size: FabSize = 'medium';\n\n @property({ type: String })\n label = '';\n\n @property({ type: String })\n icon = '';\n\n @property({ type: Boolean, reflect: true })\n lowered = false;\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n extended = false;\n\n override updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties);\n if (changedProperties.has('label')) {\n this.extended = Boolean(this.label);\n }\n }\n\n override render() {\n return html`\n <button ?disabled=${this.disabled}>\n <md-ripple ?disabled=${this.disabled}></md-ripple>\n <md-focus-ring></md-focus-ring>\n <span class=\"content\">\n <slot name=\"icon\">\n ${this.icon ? html`<md-icon name=${this.icon}></md-icon>` : nothing}\n </slot>\n <slot>\n ${this.label ? html`<span class=\"label\">${this.label}</span>` : nothing}\n </slot>\n </span>\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-fab': MdFab;\n }\n}\n\n"],"mappings":";;;;;;AAEA,IAAa,IAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCSZ,IAAN,cAAoB,EAAc;AAAA;iBAIvB,KAAA,OAAA,UAGR,KAAA,QAAA,IAGD,KAAA,OAAA,IAGG,KAAA,UAAA,IAGC,KAAA,WAAA,IAGA,KAAA,WAAA;AAAA;;AAlBc,SAAA,SAAA,CAAC,EAAc,QAAQ,CAAS;AAAA;EAoBzD,QAAiB,GAAyC;AACxD,UAAM,QAAQ,CAAiB,GAC3B,EAAkB,IAAI,OAAO,MAC/B,KAAK,WAAW,EAAQ,KAAK;AAAA,EAEjC;AAAA,EAEA,SAAkB;AAChB,WAAO;AAAA,0BACe,KAAK,QAAA;AAAA,+BACA,KAAK,QAAA;AAAA;AAAA;AAAA;AAAA,cAItB,KAAK,OAAO,kBAAqB,KAAK,IAAA,gBAAoB,CAAA;AAAA;AAAA;AAAA,cAG1D,KAAK,QAAQ,wBAA2B,KAAK,KAAA,YAAiB,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAK1E;AACF;AAzCG,EAAA,CAAA,EAAS;AAAA,EAAE,MAAM;AAAA,EAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,MAAA;AAGxC,EAAA,CAAA,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,SAAA,MAAA;AAGzB,EAAA,CAAA,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,MAAA;AAGzB,EAAA,CAAA,EAAS;AAAA,EAAE,MAAM;AAAA,EAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,WAAA,MAAA;AAGzC,EAAA,CAAA,EAAS;AAAA,EAAE,MAAM;AAAA,EAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,YAAA,MAAA;AAGzC,EAAA,CAAA,EAAS;AAAA,EAAE,MAAM;AAAA,EAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,YAAA,MAAA;AAnB3C,IAAA,EAAA,CAAA,EAAc,QAAQ,CAAA,GAAA,CAAA"}
@@ -0,0 +1,71 @@
1
+ import { n as i, t as e } from "./decorate-DXuynaiA.js";
2
+ import { css as r, html as c } from "lit";
3
+ import { customElement as l, property as n } from "lit/decorators.js";
4
+ var a = r`
5
+ :host {
6
+ display: none;
7
+ position: absolute;
8
+ inset: -4px;
9
+ border: 3px solid var(--md-sys-color-secondary, #625B71);
10
+ border-radius: inherit;
11
+ pointer-events: none;
12
+ box-sizing: border-box;
13
+ }
14
+
15
+ :host([visible]) {
16
+ display: block;
17
+ animation: md-focus-ring-in 150ms cubic-bezier(0.2, 0, 0, 1);
18
+ }
19
+
20
+ :host([inward]) {
21
+ inset: 0px;
22
+ }
23
+
24
+ @keyframes md-focus-ring-in {
25
+ from {
26
+ opacity: 0;
27
+ transform: scale(0.96);
28
+ }
29
+ to {
30
+ opacity: 1;
31
+ transform: scale(1);
32
+ }
33
+ }
34
+ `, t = class extends i {
35
+ constructor(...s) {
36
+ super(...s), this.visible = !1, this.inward = !1, this.control = null, this.handleFocusIn = () => {
37
+ const o = this.getRootNode()?.host;
38
+ (this.control?.matches(":focus-visible") || this.control?.querySelector(":focus-visible") || o?.matches(":focus-visible")) && (this.visible = !0);
39
+ }, this.handleFocusOut = () => {
40
+ this.visible = !1;
41
+ };
42
+ }
43
+ static {
44
+ this.styles = [i.styles, a];
45
+ }
46
+ connectedCallback() {
47
+ super.connectedCallback();
48
+ const s = this.parentElement, o = this.getRootNode()?.host;
49
+ this.control = s || o, this.control && (this.control.addEventListener("focusin", this.handleFocusIn), this.control.addEventListener("focusout", this.handleFocusOut));
50
+ }
51
+ disconnectedCallback() {
52
+ super.disconnectedCallback(), this.control && (this.control.removeEventListener("focusin", this.handleFocusIn), this.control.removeEventListener("focusout", this.handleFocusOut));
53
+ }
54
+ render() {
55
+ return c``;
56
+ }
57
+ };
58
+ e([n({
59
+ type: Boolean,
60
+ reflect: !0
61
+ })], t.prototype, "visible", void 0);
62
+ e([n({
63
+ type: Boolean,
64
+ reflect: !0
65
+ })], t.prototype, "inward", void 0);
66
+ t = e([l("md-focus-ring")], t);
67
+ export {
68
+ t
69
+ };
70
+
71
+ //# sourceMappingURL=focus-ring-CuiJuM-y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"focus-ring-CuiJuM-y.js","names":[],"sources":["../../src/internal/focus-ring/focus-ring.css.ts","../../src/internal/focus-ring/focus-ring.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const focusRingStyles = css`\n :host {\n display: none;\n position: absolute;\n inset: -4px;\n border: 3px solid var(--md-sys-color-secondary, #625B71);\n border-radius: inherit;\n pointer-events: none;\n box-sizing: border-box;\n }\n\n :host([visible]) {\n display: block;\n animation: md-focus-ring-in 150ms cubic-bezier(0.2, 0, 0, 1);\n }\n\n :host([inward]) {\n inset: 0px;\n }\n\n @keyframes md-focus-ring-in {\n from {\n opacity: 0;\n transform: scale(0.96);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n`;\n\n","import { html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { MdBaseElement } from '../base-component.js';\nimport { focusRingStyles } from './focus-ring.css.js';\n\n@customElement('md-focus-ring')\nexport class MdFocusRing extends MdBaseElement {\n static override styles = [MdBaseElement.styles, focusRingStyles];\n\n @property({ type: Boolean, reflect: true })\n visible = false;\n\n @property({ type: Boolean, reflect: true })\n inward = false;\n\n private control: HTMLElement | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n const parent = this.parentElement;\n const host = (this.getRootNode() as ShadowRoot)?.host as HTMLElement | null;\n this.control = parent || host;\n if (this.control) {\n this.control.addEventListener('focusin', this.handleFocusIn);\n this.control.addEventListener('focusout', this.handleFocusOut);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.control) {\n this.control.removeEventListener('focusin', this.handleFocusIn);\n this.control.removeEventListener('focusout', this.handleFocusOut);\n }\n }\n\n private handleFocusIn = (): void => {\n const host = (this.getRootNode() as ShadowRoot)?.host as HTMLElement | null;\n if (\n this.control?.matches(':focus-visible') ||\n this.control?.querySelector(':focus-visible') ||\n host?.matches(':focus-visible')\n ) {\n this.visible = true;\n }\n };\n\n private handleFocusOut = (): void => {\n this.visible = false;\n };\n\n override render() {\n return html``;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-focus-ring': MdFocusRing;\n }\n}\n\n"],"mappings":";;;AAEA,IAAa,IAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCIlB,IAAN,cAA0B,EAAc;AAAA;iBAInC,KAAA,UAAA,IAGD,KAAA,SAAA,IAE6B,KAAA,UAAA,MAqBF,KAAA,gBAAA,MAAA;AAClC,YAAM,IAAQ,KAAK,YAAY,GAAkB;AACjD,OACE,KAAK,SAAS,QAAQ,gBAAgB,KACtC,KAAK,SAAS,cAAc,gBAAgB,KAC5C,GAAM,QAAQ,gBAAgB,OAE9B,KAAK,UAAU;AAAA,IAEnB,GAEqC,KAAA,iBAAA,MAAA;AACnC,WAAK,UAAU;AAAA,IACjB;AAAA;;AA1CyB,SAAA,SAAA,CAAC,EAAc,QAAQ,CAAe;AAAA;EAU/D,oBAAmC;AACjC,UAAM,kBAAkB;AACxB,UAAM,IAAS,KAAK,eACd,IAAQ,KAAK,YAAY,GAAkB;AACjD,SAAK,UAAU,KAAU,GACrB,KAAK,YACP,KAAK,QAAQ,iBAAiB,WAAW,KAAK,aAAa,GAC3D,KAAK,QAAQ,iBAAiB,YAAY,KAAK,cAAc;AAAA,EAEjE;AAAA,EAEA,uBAAsC;AACpC,UAAM,qBAAqB,GACvB,KAAK,YACP,KAAK,QAAQ,oBAAoB,WAAW,KAAK,aAAa,GAC9D,KAAK,QAAQ,oBAAoB,YAAY,KAAK,cAAc;AAAA,EAEpE;AAAA,EAiBA,SAAkB;AAChB,WAAO;AAAA,EACT;AACF;AA7CG,EAAA,CAAA,EAAS;AAAA,EAAE,MAAM;AAAA,EAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,WAAA,MAAA;AAGzC,EAAA,CAAA,EAAS;AAAA,EAAE,MAAM;AAAA,EAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,UAAA,MAAA;AAP3C,IAAA,EAAA,CAAA,EAAc,eAAe,CAAA,GAAA,CAAA"}
@@ -1,17 +1,12 @@
1
- import { property as r } from "lit/decorators.js";
2
- import { M as h } from "./base-component-DQTjlEVL.js";
3
- var f = Object.defineProperty, l = (s, t, i, o) => {
4
- for (var e = void 0, a = s.length - 1, d; a >= 0; a--)
5
- (d = s[a]) && (e = d(t, i, e) || e);
6
- return e && f(t, i, e), e;
7
- };
8
- class n extends h {
9
- constructor() {
10
- super(), this.name = "", this.disabled = !1, this.required = !1, this._customValidityMessage = "", this._valid = !0, typeof this.attachInternals == "function" && (this.internals = this.attachInternals());
11
- }
1
+ import { n as o, t as e } from "./decorate-DXuynaiA.js";
2
+ import { property as i } from "lit/decorators.js";
3
+ var s = class extends o {
12
4
  static {
13
5
  this.formAssociated = !0;
14
6
  }
7
+ constructor() {
8
+ super(), this.name = "", this.disabled = !1, this.required = !1, this._customValidityMessage = "", this._valid = !0, typeof this.attachInternals == "function" && (this.internals = this.attachInternals());
9
+ }
15
10
  get form() {
16
11
  return this.internals?.form ?? this.closest("form");
17
12
  }
@@ -45,30 +40,34 @@ class n extends h {
45
40
  setFormValue(t) {
46
41
  this.internals?.setFormValue(t);
47
42
  }
48
- setValidity(t, i, o) {
43
+ setValidity(t, a, r) {
49
44
  if (t) {
50
- const e = Object.values(t).some(Boolean);
51
- this._valid = !e, this._customValidityMessage = i || "";
45
+ const l = Object.values(t).some(Boolean);
46
+ this._valid = !l, this._customValidityMessage = a || "";
52
47
  } else
53
48
  this._valid = !0, this._customValidityMessage = "";
54
- this.internals?.setValidity && this.internals.setValidity(t, i, o);
49
+ this.internals?.setValidity && this.internals.setValidity(t, a, r);
55
50
  }
56
51
  formResetCallback() {
57
52
  }
58
53
  formDisabledCallback(t) {
59
54
  this.disabled = t;
60
55
  }
61
- }
62
- l([
63
- r({ type: String, reflect: !0 })
64
- ], n.prototype, "name");
65
- l([
66
- r({ type: Boolean, reflect: !0 })
67
- ], n.prototype, "disabled");
68
- l([
69
- r({ type: Boolean, reflect: !0 })
70
- ], n.prototype, "required");
56
+ };
57
+ e([i({
58
+ type: String,
59
+ reflect: !0
60
+ })], s.prototype, "name", void 0);
61
+ e([i({
62
+ type: Boolean,
63
+ reflect: !0
64
+ })], s.prototype, "disabled", void 0);
65
+ e([i({
66
+ type: Boolean,
67
+ reflect: !0
68
+ })], s.prototype, "required", void 0);
71
69
  export {
72
- n as M
70
+ s as t
73
71
  };
74
- //# sourceMappingURL=form-associated-fKbeX_2P.js.map
72
+
73
+ //# sourceMappingURL=form-associated-Cty_ZaS9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-associated-Cty_ZaS9.js","names":[],"sources":["../../src/internal/form-associated.ts"],"sourcesContent":["import { property } from 'lit/decorators.js';\nimport { MdBaseElement } from './base-component.js';\n\n/**\n * Base element class for Form-Associated Custom Elements (FACE).\n * Provides seamless integration with native HTML <form> elements.\n */\nexport class MdFormAssociatedElement extends MdBaseElement {\n static formAssociated = true;\n\n protected internals?: ElementInternals;\n\n @property({ type: String, reflect: true })\n name = '';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n required = false;\n\n private _customValidityMessage = '';\n private _valid = true;\n\n constructor() {\n super();\n if (typeof this.attachInternals === 'function') {\n this.internals = this.attachInternals();\n }\n }\n\n get form(): HTMLFormElement | null {\n return this.internals?.form ?? (this.closest('form') as HTMLFormElement | null);\n }\n\n get validity(): ValidityState {\n return this.internals?.validity ?? ({\n valid: this._valid,\n valueMissing: !this._valid,\n customError: Boolean(this._customValidityMessage),\n badInput: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n } as ValidityState);\n }\n\n get validationMessage(): string {\n return this.internals?.validationMessage ?? this._customValidityMessage;\n }\n\n get willValidate(): boolean {\n return this.internals?.willValidate ?? !this.disabled;\n }\n\n checkValidity(): boolean {\n if (this.internals?.checkValidity) {\n return this.internals.checkValidity();\n }\n return this._valid;\n }\n\n reportValidity(): boolean {\n if (this.internals?.reportValidity) {\n return this.internals.reportValidity();\n }\n return this._valid;\n }\n\n protected setFormValue(value: string | File | FormData | null): void {\n this.internals?.setFormValue(value);\n }\n\n protected setValidity(\n flags?: ValidityStateFlags,\n message?: string,\n anchor?: HTMLElement\n ): void {\n if (flags) {\n const hasErrors = Object.values(flags).some(Boolean);\n this._valid = !hasErrors;\n this._customValidityMessage = message || '';\n } else {\n this._valid = true;\n this._customValidityMessage = '';\n }\n\n if (this.internals?.setValidity) {\n this.internals.setValidity(flags, message, anchor);\n }\n }\n\n formResetCallback(): void {\n // Override in child class to reset internal values\n }\n\n formDisabledCallback(disabled: boolean): void {\n this.disabled = disabled;\n }\n}\n\n"],"mappings":";;AAOA,IAAa,IAAb,cAA6C,EAAc;AAAA;AACjC,SAAA,iBAAA;AAAA;EAgBxB,cAAc;AACZ,UAAM,GAZD,KAAA,OAAA,IAGI,KAAA,WAAA,IAGA,KAAA,WAAA,IAEsB,KAAA,yBAAA,IAChB,KAAA,SAAA,IAIX,OAAO,KAAK,mBAAoB,eAClC,KAAK,YAAY,KAAK,gBAAgB;AAAA,EAE1C;AAAA,EAEA,IAAI,OAA+B;AACjC,WAAO,KAAK,WAAW,QAAS,KAAK,QAAQ,MAAM;AAAA,EACrD;AAAA,EAEA,IAAI,WAA0B;AAC5B,WAAO,KAAK,WAAW,YAAa;AAAA,MAClC,OAAO,KAAK;AAAA,MACZ,cAAc,CAAC,KAAK;AAAA,MACpB,aAAa,EAAQ,KAAK;AAAA,MAC1B,UAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,SAAS;AAAA,MACT,UAAU;AAAA,MACV,cAAc;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,IAAI,oBAA4B;AAC9B,WAAO,KAAK,WAAW,qBAAqB,KAAK;AAAA,EACnD;AAAA,EAEA,IAAI,eAAwB;AAC1B,WAAO,KAAK,WAAW,gBAAgB,CAAC,KAAK;AAAA,EAC/C;AAAA,EAEA,gBAAyB;AACvB,WAAI,KAAK,WAAW,gBACX,KAAK,UAAU,cAAc,IAE/B,KAAK;AAAA,EACd;AAAA,EAEA,iBAA0B;AACxB,WAAI,KAAK,WAAW,iBACX,KAAK,UAAU,eAAe,IAEhC,KAAK;AAAA,EACd;AAAA,EAEA,aAAuB,GAA8C;AACnE,SAAK,WAAW,aAAa,CAAK;AAAA,EACpC;AAAA,EAEA,YACE,GACA,GACA,GACM;AACN,QAAI,GAAO;AACT,YAAM,IAAY,OAAO,OAAO,CAAK,EAAE,KAAK,OAAO;AACnD,WAAK,SAAS,CAAC,GACf,KAAK,yBAAyB,KAAW;AAAA,IAC3C;AACE,WAAK,SAAS,IACd,KAAK,yBAAyB;AAGhC,IAAI,KAAK,WAAW,eAClB,KAAK,UAAU,YAAY,GAAO,GAAS,CAAM;AAAA,EAErD;AAAA,EAEA,oBAA0B;AAAA,EAE1B;AAAA,EAEA,qBAAqB,GAAyB;AAC5C,SAAK,WAAW;AAAA,EAClB;AACF;AA3FG,EAAA,CAAA,EAAS;AAAA,EAAE,MAAM;AAAA,EAAQ,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,MAAA;AAGxC,EAAA,CAAA,EAAS;AAAA,EAAE,MAAM;AAAA,EAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,YAAA,MAAA;AAGzC,EAAA,CAAA,EAAS;AAAA,EAAE,MAAM;AAAA,EAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,YAAA,MAAA"}
@@ -0,0 +1,62 @@
1
+ import { n as o, t as i } from "./decorate-DXuynaiA.js";
2
+ import { css as r, html as n } from "lit";
3
+ import { customElement as l, property as s } from "lit/decorators.js";
4
+ var a = r`
5
+ :host {
6
+ display: inline-flex;
7
+ align-items: center;
8
+ justify-content: center;
9
+ vertical-align: middle;
10
+ width: var(--md-icon-size, 24px);
11
+ height: var(--md-icon-size, 24px);
12
+ font-size: var(--md-icon-size, 24px);
13
+ line-height: 1;
14
+ letter-spacing: normal;
15
+ text-transform: none;
16
+ white-space: nowrap;
17
+ word-wrap: normal;
18
+ direction: ltr;
19
+ font-family: 'Material Symbols Outlined', 'Material Icons', sans-serif;
20
+ font-weight: normal;
21
+ font-style: normal;
22
+ font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
23
+ user-select: none;
24
+ flex-shrink: 0;
25
+ color: inherit;
26
+ }
27
+
28
+ :host([filled]) {
29
+ font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24;
30
+ }
31
+
32
+ ::slotted(svg) {
33
+ width: 100%;
34
+ height: 100%;
35
+ fill: currentColor;
36
+ }
37
+ `, t = class extends o {
38
+ constructor(...e) {
39
+ super(...e), this.name = "", this.filled = !1, this.size = "";
40
+ }
41
+ static {
42
+ this.styles = [o.styles, a];
43
+ }
44
+ updated(e) {
45
+ super.updated(e), e.has("size") && (this.size ? this.style.setProperty("--md-icon-size", isNaN(Number(this.size)) ? this.size : `${this.size}px`) : this.style.removeProperty("--md-icon-size"));
46
+ }
47
+ render() {
48
+ return n`<slot>${this.name}</slot>`;
49
+ }
50
+ };
51
+ i([s({ type: String })], t.prototype, "name", void 0);
52
+ i([s({
53
+ type: Boolean,
54
+ reflect: !0
55
+ })], t.prototype, "filled", void 0);
56
+ i([s({ type: String })], t.prototype, "size", void 0);
57
+ t = i([l("md-icon")], t);
58
+ export {
59
+ t
60
+ };
61
+
62
+ //# sourceMappingURL=icon-DrNqcNEL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-DrNqcNEL.js","names":[],"sources":["../../src/components/icon/icon.css.ts","../../src/components/icon/icon.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const iconStyles = css`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n vertical-align: middle;\n width: var(--md-icon-size, 24px);\n height: var(--md-icon-size, 24px);\n font-size: var(--md-icon-size, 24px);\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n font-family: 'Material Symbols Outlined', 'Material Icons', sans-serif;\n font-weight: normal;\n font-style: normal;\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;\n user-select: none;\n flex-shrink: 0;\n color: inherit;\n }\n\n :host([filled]) {\n font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24;\n }\n\n ::slotted(svg) {\n width: 100%;\n height: 100%;\n fill: currentColor;\n }\n`;\n\n","import { html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { MdBaseElement } from '../../internal/base-component.js';\nimport { iconStyles } from './icon.css.js';\n\n@customElement('md-icon')\nexport class MdIcon extends MdBaseElement {\n static override styles = [MdBaseElement.styles, iconStyles];\n\n @property({ type: String })\n name = '';\n\n @property({ type: Boolean, reflect: true })\n filled = false;\n\n @property({ type: String })\n size = '';\n\n override updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties);\n if (changedProperties.has('size')) {\n if (this.size) {\n this.style.setProperty('--md-icon-size', isNaN(Number(this.size)) ? this.size : `${this.size}px`);\n } else {\n this.style.removeProperty('--md-icon-size');\n }\n }\n }\n\n override render() {\n return html`<slot>${this.name}</slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-icon': MdIcon;\n }\n}\n\n"],"mappings":";;;AAEA,IAAa,IAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCIb,IAAN,cAAqB,EAAc;AAAA;iBAIjC,KAAA,OAAA,IAGE,KAAA,SAAA,IAGF,KAAA,OAAA;AAAA;;AATkB,SAAA,SAAA,CAAC,EAAc,QAAQ,CAAU;AAAA;EAW1D,QAAiB,GAAyC;AACxD,UAAM,QAAQ,CAAiB,GAC3B,EAAkB,IAAI,MAAM,MAC1B,KAAK,OACP,KAAK,MAAM,YAAY,kBAAkB,MAAM,OAAO,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,KAAK,IAAA,IAAQ,IAEhG,KAAK,MAAM,eAAe,gBAAgB;AAAA,EAGhD;AAAA,EAEA,SAAkB;AAChB,WAAO,UAAa,KAAK,IAAA;AAAA,EAC3B;AACF;AAvBG,EAAA,CAAA,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,MAAA;AAGzB,EAAA,CAAA,EAAS;AAAA,EAAE,MAAM;AAAA,EAAS,SAAS;AAAK,CAAC,CAAA,GAAA,EAAA,WAAA,UAAA,MAAA;AAGzC,EAAA,CAAA,EAAS,EAAE,MAAM,OAAO,CAAC,CAAA,GAAA,EAAA,WAAA,QAAA,MAAA;AAV3B,IAAA,EAAA,CAAA,EAAc,SAAS,CAAA,GAAA,CAAA"}
@@ -0,0 +1,188 @@
1
+ import { n, t as e } from "./decorate-DXuynaiA.js";
2
+ import "./ripple-squbKHhj.js";
3
+ import "./focus-ring-CuiJuM-y.js";
4
+ import "./icon-DrNqcNEL.js";
5
+ import { css as l, html as s, nothing as r } from "lit";
6
+ import { customElement as d, property as o } from "lit/decorators.js";
7
+ var c = l`
8
+ :host {
9
+ display: inline-flex;
10
+ outline: none;
11
+ vertical-align: middle;
12
+ -webkit-tap-highlight-color: transparent;
13
+ }
14
+
15
+ :host([disabled]) {
16
+ pointer-events: none;
17
+ }
18
+
19
+ button, a {
20
+ position: relative;
21
+ display: inline-flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ box-sizing: border-box;
25
+ width: 40px;
26
+ height: 40px;
27
+ padding: 0;
28
+ border: none;
29
+ border-radius: var(--md-sys-shape-corner-full, 50%);
30
+ overflow: hidden;
31
+ background-color: transparent;
32
+ color: var(--md-sys-color-on-surface-variant, #49454F);
33
+ cursor: pointer;
34
+ user-select: none;
35
+ outline: none;
36
+ text-decoration: none;
37
+ transition: background-color 150ms cubic-bezier(0.2, 0, 0, 1),
38
+ color 150ms cubic-bezier(0.2, 0, 0, 1);
39
+ }
40
+
41
+ /* --- Filled --- */
42
+ :host([variant="filled"]) button,
43
+ :host([variant="filled"]) a {
44
+ background-color: var(--md-sys-color-primary, #6750A4);
45
+ color: var(--md-sys-color-on-primary, #FFFFFF);
46
+ }
47
+
48
+ :host([variant="filled"][selected]) button,
49
+ :host([variant="filled"][selected]) a {
50
+ background-color: var(--md-sys-color-primary, #6750A4);
51
+ color: var(--md-sys-color-on-primary, #FFFFFF);
52
+ }
53
+
54
+ /* --- Tonal --- */
55
+ :host([variant="tonal"]) button,
56
+ :host([variant="tonal"]) a {
57
+ background-color: var(--md-sys-color-secondary-container, #E8DEF8);
58
+ color: var(--md-sys-color-on-secondary-container, #1D192B);
59
+ }
60
+
61
+ /* --- Outlined --- */
62
+ :host([variant="outlined"]) button,
63
+ :host([variant="outlined"]) a {
64
+ border: 1px solid var(--md-sys-color-outline, #79747E);
65
+ color: var(--md-sys-color-on-surface-variant, #49454F);
66
+ }
67
+
68
+ :host([variant="outlined"][selected]) button,
69
+ :host([variant="outlined"][selected]) a {
70
+ background-color: var(--md-sys-color-inverse-surface, #313033);
71
+ color: var(--md-sys-color-inverse-on-surface, #F4EFF4);
72
+ border: none;
73
+ }
74
+
75
+ /* --- Toggle / Selected for Standard --- */
76
+ :host(:not([variant])[selected]) button,
77
+ :host(:not([variant])[selected]) a,
78
+ :host([variant="standard"][selected]) button,
79
+ :host([variant="standard"][selected]) a {
80
+ color: var(--md-sys-color-primary, #6750A4);
81
+ }
82
+
83
+ /* --- Disabled --- */
84
+ :host([disabled]) button,
85
+ :host([disabled]) a {
86
+ cursor: not-allowed;
87
+ color: rgba(29, 27, 32, 0.38);
88
+ }
89
+
90
+ :host([disabled][variant="filled"]) button,
91
+ :host([disabled][variant="filled"]) a,
92
+ :host([disabled][variant="tonal"]) button,
93
+ :host([disabled][variant="tonal"]) a {
94
+ background-color: rgba(29, 27, 32, 0.12);
95
+ }
96
+
97
+ :host([disabled][variant="outlined"]) button,
98
+ :host([disabled][variant="outlined"]) a {
99
+ border-color: rgba(29, 27, 32, 0.12);
100
+ }
101
+
102
+ .content {
103
+ display: inline-flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ position: relative;
107
+ z-index: 1;
108
+ }
109
+ `, t = class extends n {
110
+ constructor(...i) {
111
+ super(...i), this.variant = "standard", this.disabled = !1, this.toggle = !1, this.selected = !1, this.icon = "", this.selectedIcon = "", this.ariaLabelText = "", this.href = "", this.target = "", this.handleClick = (a) => {
112
+ if (this.disabled) {
113
+ a.preventDefault(), a.stopImmediatePropagation();
114
+ return;
115
+ }
116
+ this.toggle && (this.selected = !this.selected, this.emitEvent("change", { selected: this.selected }));
117
+ };
118
+ }
119
+ static {
120
+ this.styles = [n.styles, c];
121
+ }
122
+ render() {
123
+ const i = this.selected && this.selectedIcon ? this.selectedIcon : this.icon, a = s`
124
+ <md-ripple ?disabled=${this.disabled}></md-ripple>
125
+ <md-focus-ring></md-focus-ring>
126
+ <span class="content">
127
+ <slot>
128
+ ${i ? s`<md-icon name=${i} ?filled=${this.selected}></md-icon>` : r}
129
+ </slot>
130
+ </span>
131
+ `;
132
+ return this.href ? s`
133
+ <a
134
+ href=${this.disabled ? r : this.href}
135
+ target=${this.target || r}
136
+ aria-label=${this.ariaLabelText || r}
137
+ aria-pressed=${this.toggle ? this.selected ? "true" : "false" : r}
138
+ aria-disabled=${this.disabled ? "true" : r}
139
+ tabindex=${this.disabled ? "-1" : "0"}
140
+ @click=${this.handleClick}
141
+ >
142
+ ${a}
143
+ </a>
144
+ ` : s`
145
+ <button
146
+ aria-label=${this.ariaLabelText || r}
147
+ aria-pressed=${this.toggle ? this.selected ? "true" : "false" : r}
148
+ ?disabled=${this.disabled}
149
+ @click=${this.handleClick}
150
+ >
151
+ ${a}
152
+ </button>
153
+ `;
154
+ }
155
+ };
156
+ e([o({
157
+ type: String,
158
+ reflect: !0
159
+ })], t.prototype, "variant", void 0);
160
+ e([o({
161
+ type: Boolean,
162
+ reflect: !0
163
+ })], t.prototype, "disabled", void 0);
164
+ e([o({
165
+ type: Boolean,
166
+ reflect: !0
167
+ })], t.prototype, "toggle", void 0);
168
+ e([o({
169
+ type: Boolean,
170
+ reflect: !0
171
+ })], t.prototype, "selected", void 0);
172
+ e([o({ type: String })], t.prototype, "icon", void 0);
173
+ e([o({
174
+ type: String,
175
+ attribute: "selected-icon"
176
+ })], t.prototype, "selectedIcon", void 0);
177
+ e([o({
178
+ type: String,
179
+ attribute: "aria-label"
180
+ })], t.prototype, "ariaLabelText", void 0);
181
+ e([o({ type: String })], t.prototype, "href", void 0);
182
+ e([o({ type: String })], t.prototype, "target", void 0);
183
+ t = e([d("md-icon-button")], t);
184
+ export {
185
+ t
186
+ };
187
+
188
+ //# sourceMappingURL=icon-button-BdSc7eot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-button-BdSc7eot.js","names":[],"sources":["../../src/components/icon-button/icon-button.css.ts","../../src/components/icon-button/icon-button.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const iconButtonStyles = css`\n :host {\n display: inline-flex;\n outline: none;\n vertical-align: middle;\n -webkit-tap-highlight-color: transparent;\n }\n\n :host([disabled]) {\n pointer-events: none;\n }\n\n button, a {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 40px;\n height: 40px;\n padding: 0;\n border: none;\n border-radius: var(--md-sys-shape-corner-full, 50%);\n overflow: hidden;\n background-color: transparent;\n color: var(--md-sys-color-on-surface-variant, #49454F);\n cursor: pointer;\n user-select: none;\n outline: none;\n text-decoration: none;\n transition: background-color 150ms cubic-bezier(0.2, 0, 0, 1),\n color 150ms cubic-bezier(0.2, 0, 0, 1);\n }\n\n /* --- Filled --- */\n :host([variant=\"filled\"]) button,\n :host([variant=\"filled\"]) a {\n background-color: var(--md-sys-color-primary, #6750A4);\n color: var(--md-sys-color-on-primary, #FFFFFF);\n }\n\n :host([variant=\"filled\"][selected]) button,\n :host([variant=\"filled\"][selected]) a {\n background-color: var(--md-sys-color-primary, #6750A4);\n color: var(--md-sys-color-on-primary, #FFFFFF);\n }\n\n /* --- Tonal --- */\n :host([variant=\"tonal\"]) button,\n :host([variant=\"tonal\"]) a {\n background-color: var(--md-sys-color-secondary-container, #E8DEF8);\n color: var(--md-sys-color-on-secondary-container, #1D192B);\n }\n\n /* --- Outlined --- */\n :host([variant=\"outlined\"]) button,\n :host([variant=\"outlined\"]) a {\n border: 1px solid var(--md-sys-color-outline, #79747E);\n color: var(--md-sys-color-on-surface-variant, #49454F);\n }\n\n :host([variant=\"outlined\"][selected]) button,\n :host([variant=\"outlined\"][selected]) a {\n background-color: var(--md-sys-color-inverse-surface, #313033);\n color: var(--md-sys-color-inverse-on-surface, #F4EFF4);\n border: none;\n }\n\n /* --- Toggle / Selected for Standard --- */\n :host(:not([variant])[selected]) button,\n :host(:not([variant])[selected]) a,\n :host([variant=\"standard\"][selected]) button,\n :host([variant=\"standard\"][selected]) a {\n color: var(--md-sys-color-primary, #6750A4);\n }\n\n /* --- Disabled --- */\n :host([disabled]) button,\n :host([disabled]) a {\n cursor: not-allowed;\n color: rgba(29, 27, 32, 0.38);\n }\n\n :host([disabled][variant=\"filled\"]) button,\n :host([disabled][variant=\"filled\"]) a,\n :host([disabled][variant=\"tonal\"]) button,\n :host([disabled][variant=\"tonal\"]) a {\n background-color: rgba(29, 27, 32, 0.12);\n }\n\n :host([disabled][variant=\"outlined\"]) button,\n :host([disabled][variant=\"outlined\"]) a {\n border-color: rgba(29, 27, 32, 0.12);\n }\n\n .content {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n z-index: 1;\n }\n`;\n\n","import { html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { MdBaseElement } from '../../internal/base-component.js';\nimport '../../internal/ripple/ripple.js';\nimport '../../internal/focus-ring/focus-ring.js';\nimport '../icon/icon.js';\nimport { iconButtonStyles } from './icon-button.css.js';\n\nexport type IconButtonVariant = 'standard' | 'filled' | 'tonal' | 'outlined';\n\n@customElement('md-icon-button')\nexport class MdIconButton extends MdBaseElement {\n static override styles = [MdBaseElement.styles, iconButtonStyles];\n\n @property({ type: String, reflect: true })\n variant: IconButtonVariant = 'standard';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n toggle = false;\n\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n @property({ type: String })\n icon = '';\n\n @property({ type: String, attribute: 'selected-icon' })\n selectedIcon = '';\n\n @property({ type: String, attribute: 'aria-label' })\n ariaLabelText = '';\n\n @property({ type: String })\n href = '';\n\n @property({ type: String })\n target = '';\n\n private handleClick = (event: MouseEvent): void => {\n if (this.disabled) {\n event.preventDefault();\n event.stopImmediatePropagation();\n return;\n }\n\n if (this.toggle) {\n this.selected = !this.selected;\n this.emitEvent('change', { selected: this.selected });\n }\n };\n\n override render() {\n const iconName = (this.selected && this.selectedIcon) ? this.selectedIcon : this.icon;\n\n const content = html`\n <md-ripple ?disabled=${this.disabled}></md-ripple>\n <md-focus-ring></md-focus-ring>\n <span class=\"content\">\n <slot>\n ${iconName ? html`<md-icon name=${iconName} ?filled=${this.selected}></md-icon>` : nothing}\n </slot>\n </span>\n `;\n\n if (this.href) {\n return html`\n <a\n href=${this.disabled ? nothing : this.href}\n target=${this.target || nothing}\n aria-label=${this.ariaLabelText || nothing}\n aria-pressed=${this.toggle ? (this.selected ? 'true' : 'false') : nothing}\n aria-disabled=${this.disabled ? 'true' : nothing}\n tabindex=${this.disabled ? '-1' : '0'}\n @click=${this.handleClick}\n >\n ${content}\n </a>\n `;\n }\n\n return html`\n <button\n aria-label=${this.ariaLabelText || nothing}\n aria-pressed=${this.toggle ? (this.selected ? 'true' : 'false') : nothing}\n ?disabled=${this.disabled}\n @click=${this.handleClick}\n >\n ${content}\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-icon-button': MdIconButton;\n }\n}\n\n"],"mappings":"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"}