@shortfuse/materialdesignweb 0.7.0 → 0.7.1-1

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 (141) hide show
  1. package/bin/generate-css.js +1 -2
  2. package/components/Badge.js +40 -3
  3. package/components/Body.js +16 -2
  4. package/components/BottomAppBar.js +25 -2
  5. package/components/Box.js +33 -3
  6. package/components/Button.js +146 -9
  7. package/components/Card.js +111 -3
  8. package/components/Checkbox.js +91 -3
  9. package/components/CheckboxIcon.js +92 -4
  10. package/components/Chip.js +38 -2
  11. package/components/Dialog.js +237 -3
  12. package/components/DialogActions.js +3 -2
  13. package/components/Divider.js +44 -3
  14. package/components/ExtendedFab.js +27 -2
  15. package/components/Fab.js +26 -2
  16. package/components/FilterChip.js +83 -2
  17. package/components/Headline.js +16 -2
  18. package/components/Icon.js +80 -4
  19. package/components/IconButton.js +153 -2
  20. package/components/Label.js +16 -2
  21. package/components/Layout.js +21 -3
  22. package/components/List.js +15 -2
  23. package/components/ListItem.js +229 -3
  24. package/components/ListOption.js +37 -3
  25. package/components/ListSelect.js +12 -2
  26. package/components/Menu.js +173 -3
  27. package/components/MenuItem.js +55 -2
  28. package/components/Nav.js +19 -2
  29. package/components/NavBar.js +37 -2
  30. package/components/NavBarItem.js +44 -2
  31. package/components/NavDrawer.js +34 -2
  32. package/components/NavDrawerItem.js +44 -2
  33. package/components/NavItem.js +183 -3
  34. package/components/NavRail.js +50 -2
  35. package/components/NavRailItem.js +25 -2
  36. package/components/Pane.js +263 -3
  37. package/components/Progress.js +469 -10
  38. package/components/Radio.js +97 -3
  39. package/components/RadioIcon.js +77 -5
  40. package/components/Ripple.js +76 -3
  41. package/components/SegmentedButton.js +97 -2
  42. package/components/SegmentedButtonGroup.js +15 -2
  43. package/components/Select.js +54 -2
  44. package/components/Shape.js +55 -18
  45. package/components/Slider.js +309 -3
  46. package/components/Snackbar.js +82 -2
  47. package/components/Surface.js +13 -4
  48. package/components/Switch.js +67 -4
  49. package/components/SwitchIcon.js +272 -5
  50. package/components/Tab.js +87 -3
  51. package/components/TabContent.js +21 -21
  52. package/components/TabList.js +131 -2
  53. package/components/TextArea.js +97 -3
  54. package/components/Title.js +16 -2
  55. package/components/Tooltip.js +42 -2
  56. package/components/TopAppBar.js +212 -3
  57. package/core/template.js +36 -9
  58. package/index.js +77 -0
  59. package/mixins/ControlMixin.js +65 -2
  60. package/mixins/DensityMixin.js +17 -3
  61. package/mixins/FlexableMixin.js +81 -3
  62. package/mixins/RippleMixin.js +15 -4
  63. package/mixins/ShapeMixin.js +279 -8
  64. package/mixins/StateMixin.js +87 -5
  65. package/mixins/SurfaceMixin.js +152 -3
  66. package/mixins/TextFieldMixin.js +661 -2
  67. package/mixins/ThemableMixin.js +206 -3
  68. package/mixins/TooltipTriggerMixin.js +30 -4
  69. package/mixins/TouchTargetMixin.js +29 -4
  70. package/package.json +3 -1
  71. package/theming/index.js +0 -121
  72. package/theming/loader.js +0 -2
  73. package/utils/svg.js +0 -117
  74. package/components/Badge.css +0 -30
  75. package/components/Body.css +0 -14
  76. package/components/BottomAppBar.css +0 -23
  77. package/components/Box.css +0 -31
  78. package/components/Button.css +0 -146
  79. package/components/Card.css +0 -109
  80. package/components/Checkbox.css +0 -77
  81. package/components/CheckboxIcon.css +0 -89
  82. package/components/Chip.css +0 -35
  83. package/components/Dialog.css +0 -235
  84. package/components/Divider.css +0 -41
  85. package/components/ExtendedFab.css +0 -24
  86. package/components/Fab.css +0 -23
  87. package/components/FilterChip.css +0 -80
  88. package/components/Headline.css +0 -14
  89. package/components/Icon.css +0 -76
  90. package/components/IconButton.css +0 -151
  91. package/components/Label.css +0 -14
  92. package/components/Layout.css +0 -19
  93. package/components/List.css +0 -12
  94. package/components/ListItem.css +0 -224
  95. package/components/ListOption.css +0 -34
  96. package/components/ListSelect.css +0 -9
  97. package/components/Menu.css +0 -171
  98. package/components/MenuItem.css +0 -53
  99. package/components/Nav.css +0 -17
  100. package/components/NavBar.css +0 -34
  101. package/components/NavBarItem.css +0 -41
  102. package/components/NavDrawer.css +0 -31
  103. package/components/NavDrawerItem.css +0 -42
  104. package/components/NavItem.css +0 -181
  105. package/components/NavRail.css +0 -47
  106. package/components/NavRailItem.css +0 -25
  107. package/components/Outline.css +0 -138
  108. package/components/Pane.css +0 -261
  109. package/components/Progress.css +0 -74
  110. package/components/ProgressCircle.css +0 -226
  111. package/components/ProgressLine.css +0 -155
  112. package/components/Radio.css +0 -83
  113. package/components/RadioIcon.css +0 -73
  114. package/components/Ripple.css +0 -74
  115. package/components/SegmentedButton.css +0 -94
  116. package/components/SegmentedButtonGroup.css +0 -12
  117. package/components/Select.css +0 -52
  118. package/components/Shape.css +0 -132
  119. package/components/Slider.css +0 -306
  120. package/components/Snackbar.css +0 -80
  121. package/components/Surface.css +0 -10
  122. package/components/Switch.css +0 -63
  123. package/components/SwitchIcon.css +0 -177
  124. package/components/SwitchIconAnimations.css +0 -89
  125. package/components/Tab.css +0 -85
  126. package/components/TabList.css +0 -129
  127. package/components/TextArea.css +0 -93
  128. package/components/Title.css +0 -14
  129. package/components/Tooltip.css +0 -40
  130. package/components/TopAppBar.css +0 -209
  131. package/mixins/ControlMixin.css +0 -57
  132. package/mixins/DensityMixin.css +0 -40
  133. package/mixins/FlexableMixin.css +0 -79
  134. package/mixins/RippleMixin.css +0 -12
  135. package/mixins/ShapeMixin.css +0 -135
  136. package/mixins/StateMixin.css +0 -82
  137. package/mixins/SurfaceMixin.css +0 -150
  138. package/mixins/TextFieldMixin.css +0 -657
  139. package/mixins/ThemableMixin.css +0 -204
  140. package/mixins/TooltipTriggerMixin.css +0 -27
  141. package/mixins/TouchTargetMixin.css +0 -26
@@ -1,5 +1,3 @@
1
- import styles from './ThemableMixin.css' assert { type: 'css' };
2
-
3
1
  /**
4
2
  * @param {typeof import('../core/CustomElement.js').default} Base
5
3
  */
@@ -12,5 +10,210 @@ export default function ThemableMixin(Base) {
12
10
  block: 'boolean',
13
11
  typeStyle: 'string',
14
12
  })
15
- .css(styles);
13
+ .css`
14
+ :host([color="primary"]) {
15
+ --mdw-bg: var(--mdw-color__primary);
16
+ --mdw-ink: var(--mdw-color__on-primary);
17
+ }
18
+
19
+ :host([color="primary-container"]) {
20
+ --mdw-bg: var(--mdw-color__primary-container);
21
+ --mdw-ink: var(--mdw-color__on-primary-container);
22
+ }
23
+
24
+ :host([color="secondary"]) {
25
+ --mdw-bg: var(--mdw-color__secondary);
26
+ --mdw-ink: var(--mdw-color__on-secondary);
27
+ }
28
+
29
+ :host([color="secondary-container"]) {
30
+ --mdw-bg: var(--mdw-color__secondary-container);
31
+ --mdw-ink: var(--mdw-color__on-secondary-container);
32
+ }
33
+
34
+ :host([color="tertiary"]) {
35
+ --mdw-bg: var(--mdw-color__tertiary);
36
+ --mdw-ink: var(--mdw-color__on-tertiary);
37
+ }
38
+
39
+ :host([color="tertiary-container"]) {
40
+ --mdw-bg: var(--mdw-color__tertiary-container);
41
+ --mdw-ink: var(--mdw-color__on-tertiary-container);
42
+ }
43
+
44
+ :host([color="error"]) {
45
+ --mdw-bg: var(--mdw-color__error);
46
+ --mdw-ink: var(--mdw-color__on-error);
47
+ }
48
+
49
+ :host([color="error-container"]) {
50
+ --mdw-bg: var(--mdw-color__error-container);
51
+ --mdw-ink: var(--mdw-color__on-error-container);
52
+ }
53
+
54
+ :host([color="background"]) {
55
+ --mdw-bg: var(--mdw-color__background);
56
+ --mdw-ink: var(--mdw-color__on-background);
57
+ }
58
+
59
+ :host([color^="surface"]) {
60
+ --mdw-bg: var(--mdw-color__surface);
61
+ --mdw-ink: var(--mdw-color__on-surface);
62
+ }
63
+
64
+ /* Quality-of-life */
65
+ :host([color="surface-primary"]) {
66
+ --mdw-ink: var(--mdw-color__primary);
67
+ }
68
+
69
+ :host([color$="variant"]) {
70
+ --mdw-bg: var(--mdw-color__surface-variant);
71
+ --mdw-ink: var(--mdw-color__on-surface-variant);
72
+ }
73
+
74
+ :host([color^="inverse"]) {
75
+ --mdw-bg: var(--mdw-color__inverse-surface);
76
+ --mdw-ink: var(--mdw-color__inverse-on-surface);
77
+ }
78
+
79
+ :host([color="inverse-primary"]) {
80
+ --mdw-ink: var(--mdw-color__inverse-primary);
81
+ }
82
+
83
+ :host([color][disabled]) {
84
+ /* background-color: rgba(var(--mdw-color__on-surface), 0.12); */
85
+ /* color: rgba(var(--mdw-color__on-surface), 0.38); */
86
+ }
87
+
88
+ :host([ink="inverse-primary"]) {
89
+ --mdw-ink: var(--mdw-color__inverse-primary);
90
+ }
91
+
92
+ :host([ink="primary"]) {
93
+ --mdw-ink: var(--mdw-color__primary);
94
+ }
95
+
96
+ :host([ink="on-primary-container"]) {
97
+ --mdw-ink: var(--mdw-color__on-primary-container);
98
+ }
99
+
100
+ :host([ink="secondary"]) {
101
+ --mdw-ink: var(--mdw-color__secondary);
102
+ }
103
+
104
+ :host([ink="on-secondary-container"]) {
105
+ --mdw-ink: var(--mdw-color__on-secondary-container);
106
+ }
107
+
108
+ :host([ink="tertiary"]) {
109
+ --mdw-ink: var(--mdw-color__tertiary);
110
+ }
111
+
112
+ :host([ink="on-tertiary-container"]) {
113
+ --mdw-ink: var(--mdw-color__on-tertiary-container);
114
+ }
115
+
116
+ :host([ink="error"]) {
117
+ --mdw-ink: var(--mdw-color__error);
118
+ }
119
+
120
+ :host([ink="outline"]) {
121
+ --mdw-ink: var(--mdw-color__outline);
122
+ }
123
+
124
+ :host([ink="on-surface"]) {
125
+ --mdw-ink: var(--mdw-color__on-surface);
126
+ }
127
+
128
+ :host([ink="surface-variant"]) {
129
+ --mdw-ink: var(--mdw-color__surface-variant);
130
+ }
131
+
132
+ :host([ink="on-surface-variant"]) {
133
+ --mdw-ink: var(--mdw-color__on-surface-variant);
134
+ }
135
+
136
+ :host([ink="inverse-on-surface"]) {
137
+ --mdw-ink: var(--mdw-color__inverse-on-surface);
138
+ }
139
+
140
+ :host([ink="inherit"]) {
141
+ --mdw-ink: inherit;
142
+ }
143
+
144
+ :host([type-style|="display"]) {
145
+ --mdw-type__font: var(--mdw-typescale__display-large__font);
146
+ --mdw-type__letter-spacing: var(--mdw-typescale__display-large__letter-spacing);
147
+ }
148
+
149
+ :host([type-style="display-medium"]) {
150
+ --mdw-type__font: var(--mdw-typescale__display-medium__font);
151
+ --mdw-type__letter-spacing: var(--mdw-typescale__display-medium__letter-spacing);
152
+ }
153
+
154
+ :host([type-style="display-small"]) {
155
+ --mdw-type__font: var(--mdw-typescale__display-small__font);
156
+ --mdw-type__letter-spacing: var(--mdw-typescale__display-small__letter-spacing);
157
+ }
158
+
159
+ :host([type-style|="headline"]) {
160
+ --mdw-type__font: var(--mdw-typescale__headline-large__font);
161
+ --mdw-type__letter-spacing: var(--mdw-typescale__headline-large__letter-spacing);
162
+ }
163
+
164
+ :host([type-style="headline-medium"]) {
165
+ --mdw-type__font: var(--mdw-typescale__headline-medium__font);
166
+ --mdw-type__letter-spacing: var(--mdw-typescale__headline-medium__letter-spacing);
167
+ }
168
+
169
+ :host([type-style="headline-small"]) {
170
+ --mdw-type__font: var(--mdw-typescale__headline-small__font);
171
+ --mdw-type__letter-spacing: var(--mdw-typescale__headline-small__letter-spacing);
172
+ }
173
+
174
+ :host([type-style|="title"]) {
175
+ --mdw-type__font: var(--mdw-typescale__title-large__font);
176
+ --mdw-type__letter-spacing: var(--mdw-typescale__title-large__letter-spacing);
177
+ }
178
+
179
+ :host([type-style="title-medium"]) {
180
+ --mdw-type__font: var(--mdw-typescale__title-medium__font);
181
+ --mdw-type__letter-spacing: var(--mdw-typescale__title-medium__letter-spacing);
182
+ }
183
+
184
+ :host([type-style="title-small"]) {
185
+ --mdw-type__font: var(--mdw-typescale__title-small__font);
186
+ --mdw-type__letter-spacing: var(--mdw-typescale__title-small__letter-spacing);
187
+ }
188
+
189
+ :host([type-style|="label"]) {
190
+ --mdw-type__font: var(--mdw-typescale__label-large__font);
191
+ --mdw-type__letter-spacing: var(--mdw-typescale__label-large__letter-spacing);
192
+ }
193
+
194
+ :host([type-style="label-medium"]) {
195
+ --mdw-type__font: var(--mdw-typescale__label-medium__font);
196
+ --mdw-type__letter-spacing: var(--mdw-typescale__label-medium__letter-spacing);
197
+ }
198
+
199
+ :host([type-style="label-small"]) {
200
+ --mdw-type__font: var(--mdw-typescale__label-small__font);
201
+ --mdw-type__letter-spacing: var(--mdw-typescale__label-small__letter-spacing);
202
+ }
203
+
204
+ :host([type-style|="body"]) {
205
+ --mdw-type__font: var(--mdw-typescale__body-large__font);
206
+ --mdw-type__letter-spacing: var(--mdw-typescale__body-large__letter-spacing);
207
+ }
208
+
209
+ :host([type-style="body-medium"]) {
210
+ --mdw-type__font: var(--mdw-typescale__body-medium__font);
211
+ --mdw-type__letter-spacing: var(--mdw-typescale__body-medium__letter-spacing);
212
+ }
213
+
214
+ :host([type-style="body-small"]) {
215
+ --mdw-type__font: var(--mdw-typescale__body-small__font);
216
+ --mdw-type__letter-spacing: var(--mdw-typescale__body-small__letter-spacing);
217
+ }
218
+ `;
16
219
  }
@@ -1,16 +1,12 @@
1
1
  import Tooltip from '../components/Tooltip.js';
2
2
  import { canAnchorPopup } from '../utils/popup.js';
3
3
 
4
- import styles from './TooltipTriggerMixin.css' assert { type: 'css' };
5
-
6
4
  /**
7
5
  * @param {ReturnType<import('./StateMixin.js').default>} Base
8
6
  */
9
7
  export default function TooltipTriggerMixin(Base) {
10
8
  class TooltipTrigger extends Base {
11
9
  static {
12
- this.css(styles);
13
-
14
10
  this.on({
15
11
  composed({ template, html }) {
16
12
  template.append(html`
@@ -21,6 +17,36 @@ export default function TooltipTriggerMixin(Base) {
21
17
  `);
22
18
  },
23
19
  });
20
+ // eslint-disable-next-line no-unused-expressions
21
+ this.css`
22
+ #tooltip {
23
+ position:absolute;
24
+
25
+ overflow: hidden;
26
+
27
+ box-sizing: content-box;
28
+
29
+ block-size: 0;
30
+ inline-size: 0;
31
+ margin: 0;
32
+ padding: 0;
33
+
34
+ transform: none;
35
+ }
36
+
37
+ #tooltip[open] {
38
+ display: block;
39
+
40
+ block-size: auto;
41
+ inline-size: auto;
42
+
43
+ cursor: default;
44
+ pointer-events:auto;
45
+
46
+ opacity: 0;
47
+ transform: none;
48
+ }
49
+ `;
24
50
  }
25
51
 
26
52
  static TOOLTIP_MOUSE_IDLE_MS = 500;
@@ -1,9 +1,34 @@
1
- import styles from './TouchTargetMixin.css' assert { type: 'css' };
2
-
3
1
  /** @param {typeof import('../core/CustomElement.js').default} Base */
4
2
  export default function TouchTargetMixin(Base) {
5
3
  return Base
6
4
  .extend()
7
- .css(styles)
8
- .html/* html */`<div id=touch-target class=touch-target></div>`;
5
+ .html/* html */`<div id=touch-target class=touch-target></div>`
6
+ .css`
7
+ .touch-target {
8
+ position: absolute;
9
+ inset: 50%;
10
+ /* --mdw-device-pixel-ratio: 1; */
11
+
12
+ block-size: 100%;
13
+ min-block-size: 48px;
14
+ /* min-block-size: 10mm; */
15
+ /* min-block-size: calc(0.393701in / var(--mdw-device-pixel-ratio, 1)); */
16
+ inline-size:100%;
17
+ min-inline-size: 48px;
18
+ /* min-inline-size: 10mm; */
19
+ /* min-inline-size: calc(0.393701in / var(--mdw-device-pixel-ratio, 1)); */
20
+
21
+ cursor: inherit;
22
+
23
+ /* box-sizing: border-box; */
24
+ /* border: solid 1px magenta; */
25
+ pointer-events: auto;
26
+
27
+ transform: translateX(-50%) translateY(-50%);
28
+ visibility: visible;
29
+ z-index: 1;
30
+
31
+ border-radius: inherit;
32
+ }
33
+ `;
9
34
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shortfuse/materialdesignweb",
3
- "version": "0.7.0",
3
+ "version": "0.7.1-1",
4
4
  "description": "Material Design for Web",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -12,6 +12,7 @@
12
12
  "pretest": "eslint --ignore-path .gitignore",
13
13
  "test": "c8 tap --no-coverage"
14
14
  },
15
+ "main": "index.js",
15
16
  "repository": {
16
17
  "type": "git",
17
18
  "url": "git+https://github.com/clshortfuse/materialdesignweb.git"
@@ -60,6 +61,7 @@
60
61
  "c8": "^7.12.0",
61
62
  "element-internals-polyfill": "^1.1.11",
62
63
  "esbuild": "^0.17.12",
64
+ "esbuild-minify-templates": "^0.10.0",
63
65
  "eslint": "^8.24.0",
64
66
  "eslint-config-airbnb-base": "^15.0.0",
65
67
  "eslint-plugin-compat": "^4.0.2",
package/theming/index.js CHANGED
@@ -10,53 +10,6 @@ import { svgToCSSURL } from '../utils/svg.js';
10
10
  * @return {string}
11
11
  */
12
12
 
13
- /** @return {string} */
14
- function cornerCutClipPath() {
15
- const TOP = 0;
16
- const END = '100%';
17
- const BOTTOM = '100%';
18
- const START = 0;
19
-
20
- const TOP_START_SIZE = 'var(--mdw-shape__size__top-start-size)';
21
- const TOP_END_SIZE = 'var(--mdw-shape__size__top-end-size)';
22
- const BOTTOM_START_SIZE = 'var(--mdw-shape__size__bottom-start-size)';
23
- const BOTTOM_END_SIZE = 'var(--mdw-shape__size__bottom-end-size)';
24
-
25
- const TOP_INSET = (size) => `min(${size},50%)`;
26
- const START_INSET = (size) => `min(${size},50%)`;
27
- const END_INSET = (size) => `calc(100% - min(${size},50%))`;
28
- const BOTTOM_INSET = (size) => `calc(100% - min(${size},50%))`;
29
-
30
- /**
31
- * 2 3
32
- * ┌──────────────┐
33
- * 1 │ │ 4
34
- * │ │
35
- * │ │
36
- * │ │
37
- * 8 │ │ 5
38
- * └──────────────┘
39
- * 7 6
40
- */
41
-
42
- return `polygon(${
43
- [
44
- [START, TOP_INSET(TOP_START_SIZE)],
45
- [START_INSET(TOP_START_SIZE), TOP],
46
-
47
- [END_INSET(TOP_END_SIZE), TOP],
48
- [END, TOP_INSET(TOP_END_SIZE)],
49
-
50
- [END, BOTTOM_INSET(BOTTOM_END_SIZE)],
51
- [END_INSET(BOTTOM_END_SIZE), BOTTOM],
52
-
53
- [START_INSET(BOTTOM_START_SIZE), BOTTOM],
54
- [START, BOTTOM_INSET(BOTTOM_START_SIZE)],
55
-
56
- ].map((coordinates) => coordinates.join(' ')).join(', ')
57
- })`;
58
- }
59
-
60
13
  /**
61
14
  * @param {string} shape
62
15
  * @return {string}
@@ -156,31 +109,6 @@ const SHAPE_SQUIRCLE_DEFAULT = {
156
109
  mask: SQUIRCLE_PATH,
157
110
  };
158
111
 
159
- const LAYOUT_DEFAULT = {
160
- density: 0,
161
- body: {
162
- 0: 'calc(100% - 32px)',
163
- '600px': 'calc(100% - 64px)',
164
- '904px': '840px',
165
- '1240px': 'calc(100% - 200px)',
166
- '1440px': '1040px',
167
- },
168
- columns: {
169
- '0px': 4,
170
- '600px': 8,
171
- '904px': 12,
172
- },
173
- alias: {
174
- 'extra-small': '0px',
175
- phone: '0px',
176
- small: '600px',
177
- medium: '904px',
178
- tablet: '600px',
179
- laptop: '1240px',
180
- large: '1440px',
181
- },
182
- };
183
-
184
112
  const SP = 1 / 16;
185
113
 
186
114
  const TYPOGRAPHY_DEFAULT = {
@@ -430,55 +358,6 @@ export function generateTypographyGlobalCSS() {
430
358
  .join('\n')}}`;
431
359
  }
432
360
 
433
- /**
434
- * @param {LAYOUT_DEFAULT} [config]
435
- * @return {string}
436
- */
437
- export function generateLayoutGlobalCSS(config = LAYOUT_DEFAULT) {
438
- /** @type {Map<string, Set<string>>} */
439
- const breakpoints = new Map();
440
- /**
441
- *
442
- * @param {string} breakpoint
443
- * @return {Set<string>}
444
- */
445
- function getSet(breakpoint) {
446
- let set = breakpoints.get(breakpoint);
447
- if (!set) {
448
- set = new Set();
449
- breakpoints.set(breakpoint, set);
450
- }
451
- return set;
452
- }
453
-
454
- for (const [breakpoint, value] of Object.entries(config.body)) {
455
- getSet((breakpoint === '0' || breakpoint === '0px') ? '' : `min-width ${breakpoint}`)
456
- .add(`--mdw-breakpoint__body: ${value};`);
457
- }
458
-
459
- for (const [breakpoint, value] of Object.entries(config.columns)) {
460
- getSet((breakpoint === '0' || breakpoint === '0px') ? '' : `min-width ${breakpoint}`)
461
- .add(`--mdw-breakpoint__columns: ${value};`);
462
- }
463
-
464
- for (const [alias, value] of Object.entries(config.alias)) {
465
- getSet('').add(`--mdw-breakpoint__${alias}: ${value};`);
466
- }
467
-
468
- getSet('').add(`--mdw-density__default: ${config.density};`);
469
-
470
- let css = '';
471
- for (const [breakpoint, set] of breakpoints) {
472
- let rules = `:root { ${[...set].join('')}}`;
473
- if (breakpoint) {
474
- rules = `@media (min-width: ${breakpoint}) { ${rules} }`;
475
- }
476
- css += rules;
477
- }
478
-
479
- return css;
480
- }
481
-
482
361
  /**
483
362
  * @param {typeof SHAPE_ROUNDED_DEFAULT} config
484
363
  * @return {string}
package/theming/loader.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import { css } from '../core/template.js';
2
2
 
3
3
  import {
4
- generateLayoutGlobalCSS,
5
4
  generateThemeCSS,
6
5
  generateTypographyGlobalCSS,
7
6
  themeOptionsFromSearchParams,
@@ -10,7 +9,6 @@ import {
10
9
  const rules = [
11
10
  generateThemeCSS(themeOptionsFromSearchParams(new URL(import.meta.url).searchParams)),
12
11
  generateTypographyGlobalCSS(),
13
- generateLayoutGlobalCSS(),
14
12
  ].join('\n');
15
13
 
16
14
  const parsed = css`${rules}`;
package/utils/svg.js CHANGED
@@ -1,120 +1,3 @@
1
- /**
2
- * @param {string} path
3
- * @param {Object} [options]
4
- * @param {number} [options.size=24]
5
- * @param {boolean} [options.outline] Outline path
6
- * @return {string}
7
- */
8
- export function pathToSVG(path, options = {}) {
9
- const svgSize = 24;
10
- const outline = options.outline;
11
- /* eslint-disable indent */
12
- return [
13
- `<svg xmlns="http://www.w3.org/2000/svg" width="${svgSize}" height="${svgSize}" preserveAspectRatio="none">`,
14
- outline
15
- ? `
16
- <mask id="m">
17
- <rect width="24" height="24" fill="white"/>
18
- <path fill="black" d="${path}"/>
19
- </mask>
20
- <rect width="24" height="24" fill="black" mask="url(#m)"/>
21
- `
22
- : `<path fill="black" d="${path}"/>`,
23
- '</svg>',
24
- ].join('');
25
- /* eslint-enable indent */
26
- }
27
-
28
- /**
29
- * @param {string} path
30
- * @param {Object} [options]
31
- * @param {number} [options.size=24]
32
- * @param {boolean} [options.outline] Outline path
33
- * @return {string}
34
- */
35
- export function maskedPathToSVG(path, options = {}) {
36
- const svgSize = 24;
37
- const outline = options.outline;
38
- /* eslint-disable indent */
39
- return [
40
- `<svg xmlns="http://www.w3.org/2000/svg" width="${svgSize}" height="${svgSize}" preserveAspectRatio="none">`,
41
- outline
42
- ? `
43
- <defs>
44
- <path id="p" d="${path}"/>
45
- </defs>
46
- <mask id="m">
47
- <use href="#p" fill="white"/>
48
- <use href="#p" fill="black" transform="scale(0.9166666666666667) translate(1 1)"/>
49
- </mask>
50
- <use href="#p" fill="black" mask="url(#m)"/>
51
- `
52
- : `<path fill="black" d="${path}"/>`,
53
- '</svg>',
54
- ].join('');
55
- /* eslint-enable indent */
56
- }
57
-
58
- /**
59
- * @param {string} path
60
- * @param {Object} [options]
61
- * @param {number} [options.size=24]
62
- * @param {string} [options.outline] Outline path
63
- * @return {string}
64
- */
65
- export function auto9SliceSVG(path, options = {}) {
66
- const pathSize = options.size ?? 24;
67
- const svgSize = 24;
68
- const outline = options.outline;
69
- /* eslint-disable indent */
70
- return [
71
- `<svg xmlns="http://www.w3.org/2000/svg" width="${svgSize}" height="${svgSize}">`,
72
- '<defs>',
73
- `<path id="p" d="${path}"/>`,
74
- '<g id="g">',
75
- '<use href="#p" transform="translate(0 0)"/>',
76
- `<use href="#p" transform="translate(${svgSize - pathSize} 0)"/>`,
77
- `<use href="#p" transform="translate(${svgSize - pathSize} ${svgSize - pathSize})"/>`,
78
- `<use href="#p" transform="translate(0 ${svgSize - pathSize})"/>`,
79
- '<path d="',
80
- `M${pathSize / 2} 0`,
81
- `H${svgSize - (pathSize / 2)}`,
82
- `V${pathSize / 2}`,
83
- `H${svgSize}`,
84
- `V${svgSize - (pathSize / 2)}`,
85
- `H${svgSize - (pathSize / 2)}`,
86
- `V${svgSize}`,
87
- `H${pathSize / 2}`,
88
- `V${svgSize - (pathSize / 2)}`,
89
- 'H0',
90
- `V${pathSize / 2}`,
91
- `H${pathSize / 2}`,
92
- 'Z',
93
- '"/>',
94
- '</g>',
95
- '</defs>',
96
- outline
97
- ? [
98
- '<mask id="m">',
99
- '<use href="#g" fill="white"/>',
100
- `<use href="#g" fill="black" transform="scale(0.5) translate(${pathSize / 2} ${pathSize / 2})" />`,
101
- `<use href="#g" fill="black" transform="scale(0.5) translate(${svgSize - (pathSize / 2)} ${pathSize / 2})" />`,
102
- `<use href="#g" fill="black" transform="scale(0.5) translate(${svgSize - (pathSize / 2)} ${svgSize - (pathSize / 2)})" />`,
103
- `<use href="#g" fill="black" transform="scale(0.5) translate(${pathSize / 2} ${svgSize - (pathSize / 2)})" />`,
104
- '</mask>',
105
- '<path d="',
106
- 'M0 0',
107
- `H${svgSize}`,
108
- `V${svgSize}`,
109
- 'H0',
110
- 'Z',
111
- '" fill="black" mask="url(#m)"/>',
112
- ].join('') : '<use href="#g" fill="black"/>',
113
- '</svg>',
114
- ].join('');
115
- /* eslint-enable indent */
116
- }
117
-
118
1
  /**
119
2
  * Uses UTF-8 charset instead of base64 for better compression
120
3
  * @param {string} svg
@@ -1,30 +0,0 @@
1
- :host {
2
- --mdw-shape__size: 8px;
3
- --mdw-ink: var(--mdw-color__on-error);
4
- --mdw-shape__bg: rgb(var(--mdw-color__error));
5
- --mdw-type__font: var(--mdw-typescale__label-small__font);
6
- --mdw-type__letter-spacing: var(--mdw-typescale__label-small__letter-spacing);
7
- position: relative;
8
-
9
- box-sizing: border-box;
10
- min-block-size: var(--mdw-typescale__label-small__line-height);
11
- min-inline-size: var(--mdw-typescale__label-small__line-height);
12
- padding-inline: max(4px, calc(4px + (var(--mdw-density) * 2px)));
13
-
14
- color: rgb(var(--mdw-ink));
15
-
16
- font: var(--mdw-type__font);
17
- letter-spacing: var(--mdw-type__letter-spacing);
18
- text-align: center;
19
- }
20
-
21
- @supports (width: 1lh) {
22
- :host {
23
- min-inline-size: 1lh; /* Clamps to 1:1 */
24
- padding-inline: max(0.25lh, calc(0.25lh + (var(--mdw-density) * 2px)));
25
- }
26
- }
27
-
28
- :host(:empty) #shape {
29
- inset: 5px;
30
- }
@@ -1,14 +0,0 @@
1
- :host {
2
- font: var(--mdw-typescale__body-large__font);
3
- letter-spacing: var(--mdw-typescale__body-large__letter-spacing);
4
- }
5
-
6
- :host([size="medium"]) {
7
- font: var(--mdw-typescale__body-medium__font);
8
- letter-spacing: var(--mdw-typescale__body-medium__letter-spacing);
9
- }
10
-
11
- :host([size="small"]) {
12
- font: var(--mdw-typescale__body-small__font);
13
- letter-spacing: var(--mdw-typescale__body-small__letter-spacing);
14
- }
@@ -1,23 +0,0 @@
1
- /* https://m3.material.io/components/bottom-app-bar/specs */
2
-
3
- :host {
4
- --mdw-surface__tint: var(--mdw-surface__tint__2);
5
- --mdw-surface__tint__raised: var(--mdw-surface__tint__2);
6
- --mdw-bg: var(--mdw-color__surface);
7
- --mdw-ink: var(--mdw-color__on-surface);
8
-
9
- display: flex;
10
- align-items: center;
11
- gap: 8px;
12
- justify-content: flex-start;
13
-
14
- box-sizing: content-box;
15
- /* Don't apply density */
16
- block-size: 56px;
17
- padding-block: 12px;
18
- padding-inline: 8px 16px;
19
-
20
- box-shadow: none;
21
-
22
- direction: ltr;
23
- }