mtrl 0.9.5 → 0.9.8

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 (176) hide show
  1. package/README.md +20 -0
  2. package/dist/README.md +20 -0
  3. package/dist/components/bottom-app-bar/bottom-app-bar.js +2 -2
  4. package/dist/components/bottom-sheet/features/structure.js +4 -3
  5. package/dist/components/button/api.js +3 -2
  6. package/dist/components/button/features/progress.js +26 -21
  7. package/dist/components/button-group/config.d.ts +11 -3
  8. package/dist/components/button-group/config.js +1 -1
  9. package/dist/components/card/content.js +5 -4
  10. package/dist/components/carousel/features/slides.js +2 -1
  11. package/dist/components/checkbox/checkbox.js +22 -0
  12. package/dist/components/checkbox/config.d.ts +3 -3
  13. package/dist/components/checkbox/config.js +10 -9
  14. package/dist/components/checkbox/types.d.ts +19 -4
  15. package/dist/components/chips/api.js +3 -1
  16. package/dist/components/chips/chip/api.js +3 -2
  17. package/dist/components/chips/chip/chip.js +6 -4
  18. package/dist/components/chips/config.js +1 -1
  19. package/dist/components/datepicker/api.d.ts +8 -2
  20. package/dist/components/datepicker/api.js +1 -0
  21. package/dist/components/datepicker/config.d.ts +14 -4
  22. package/dist/components/datepicker/datepicker.js +5 -2
  23. package/dist/components/datepicker/types.d.ts +14 -0
  24. package/dist/components/datepicker/utils.js +4 -6
  25. package/dist/components/dialog/config.js +0 -1
  26. package/dist/components/dialog/features.js +10 -8
  27. package/dist/components/dialog/types.d.ts +3 -2
  28. package/dist/components/drawer/features/items.js +3 -2
  29. package/dist/components/list/features/renderer.js +4 -3
  30. package/dist/components/menu/api.d.ts +1 -1
  31. package/dist/components/menu/config.js +2 -2
  32. package/dist/components/menu/features/controller.js +41 -26
  33. package/dist/components/menu/features/keyboard.js +7 -5
  34. package/dist/components/menu/features/opener.js +19 -12
  35. package/dist/components/menu/features/position.js +1 -1
  36. package/dist/components/menu/features/submenu.js +7 -1
  37. package/dist/components/menu/types.d.ts +13 -2
  38. package/dist/components/navigation/nav-item.js +4 -3
  39. package/dist/components/navigation/system/mobile.js +3 -2
  40. package/dist/components/navigation-rail/navigation-rail.js +3 -2
  41. package/dist/components/progress/features/canvas.js +0 -2
  42. package/dist/components/search/features/states.js +3 -3
  43. package/dist/components/search/features/structure.js +3 -0
  44. package/dist/components/search/features/suggestions.js +2 -2
  45. package/dist/components/search/types.d.ts +6 -0
  46. package/dist/components/segmented-button/config.d.ts +4 -1
  47. package/dist/components/segmented-button/config.js +1 -1
  48. package/dist/components/segmented-button/segment.d.ts +2 -5
  49. package/dist/components/segmented-button/segment.js +7 -3
  50. package/dist/components/select/features.js +267 -44
  51. package/dist/components/side-sheet/features/structure.js +5 -4
  52. package/dist/components/slider/features/controller.js +7 -0
  53. package/dist/components/slider/features/dom.d.ts +1 -0
  54. package/dist/components/slider/features/dom.js +11 -0
  55. package/dist/components/slider/features/handlers.js +8 -3
  56. package/dist/components/slider/features/states.js +8 -0
  57. package/dist/components/slider/types.d.ts +7 -0
  58. package/dist/components/switch/config.d.ts +3 -3
  59. package/dist/components/switch/config.js +7 -7
  60. package/dist/components/switch/features.js +5 -5
  61. package/dist/components/switch/switch.js +1 -1
  62. package/dist/components/switch/types.d.ts +10 -0
  63. package/dist/components/tabs/features.d.ts +1 -0
  64. package/dist/components/tabs/scroll-indicators.js +3 -2
  65. package/dist/components/tabs/tab.d.ts +0 -5
  66. package/dist/components/tabs/tab.js +12 -3
  67. package/dist/components/tabs/tabs.js +10 -1
  68. package/dist/components/tabs/utils.d.ts +8 -0
  69. package/dist/components/tabs/utils.js +63 -18
  70. package/dist/components/textfield/api.js +12 -4
  71. package/dist/components/textfield/features/error.d.ts +1 -0
  72. package/dist/components/textfield/features/error.js +10 -0
  73. package/dist/components/textfield/features/leading-icon.js +32 -33
  74. package/dist/components/textfield/features/prefix-text.js +30 -18
  75. package/dist/components/textfield/features/suffix-text.js +30 -14
  76. package/dist/components/textfield/features/supporting-text.d.ts +1 -0
  77. package/dist/components/textfield/features/supporting-text.js +25 -0
  78. package/dist/components/textfield/features/trailing-icon.js +36 -19
  79. package/dist/components/timepicker/api.d.ts +1 -1
  80. package/dist/components/timepicker/api.js +16 -11
  81. package/dist/components/timepicker/render.js +27 -24
  82. package/dist/components/timepicker/timepicker.js +4 -2
  83. package/dist/components/timepicker/types.d.ts +7 -0
  84. package/dist/components/timepicker/utils.d.ts +14 -0
  85. package/dist/components/timepicker/utils.js +4 -0
  86. package/dist/components/tooltip/api.js +27 -2
  87. package/dist/components/top-app-bar/top-app-bar.js +3 -2
  88. package/dist/core/compose/component.d.ts +1 -1
  89. package/dist/core/compose/component.js +1 -1
  90. package/dist/core/compose/features/icon.js +3 -2
  91. package/dist/core/compose/features/input.js +1 -1
  92. package/dist/core/compose/features/lifecycle.js +10 -11
  93. package/dist/core/compose/features/textlabel.js +3 -0
  94. package/dist/core/compose/features/track.js +2 -1
  95. package/dist/core/config/component.d.ts +1 -1
  96. package/dist/core/config/component.js +1 -1
  97. package/dist/core/dom/create.js +5 -4
  98. package/dist/core/dom/form-value.d.ts +24 -0
  99. package/dist/core/dom/form-value.js +14 -0
  100. package/dist/core/dom/html.d.ts +34 -0
  101. package/dist/core/dom/html.js +13 -0
  102. package/dist/core/dom/index.d.ts +2 -0
  103. package/dist/core/dom/index.js +1 -0
  104. package/dist/core/dom/utils.js +1 -1
  105. package/dist/core/state/emitter.js +8 -1
  106. package/dist/core/state/index.d.ts +1 -1
  107. package/dist/core/state/store.d.ts +10 -2
  108. package/dist/core/state/store.js +2 -1
  109. package/dist/index.cjs +0 -0
  110. package/dist/package.json +5 -2
  111. package/dist/styles/badge.css +1 -1
  112. package/dist/styles/base.css +2 -2
  113. package/dist/styles/bottom-app-bar.css +1 -1
  114. package/dist/styles/bottom-sheet.css +2 -2
  115. package/dist/styles/button-group.css +1 -1
  116. package/dist/styles/button.css +2 -2
  117. package/dist/styles/card.css +2 -2
  118. package/dist/styles/carousel.css +1 -1
  119. package/dist/styles/checkbox.css +2 -2
  120. package/dist/styles/chips.css +2 -2
  121. package/dist/styles/dialog.css +2 -2
  122. package/dist/styles/divider.css +1 -1
  123. package/dist/styles/drawer.css +2 -2
  124. package/dist/styles/extended-fab.css +2 -2
  125. package/dist/styles/fab.css +2 -2
  126. package/dist/styles/icon-button.css +2 -2
  127. package/dist/styles/list.css +2 -2
  128. package/dist/styles/loading-indicator.css +1 -1
  129. package/dist/styles/menu.css +2 -2
  130. package/dist/styles/navigation-rail.css +1 -1
  131. package/dist/styles/navigation.css +2 -2
  132. package/dist/styles/progress.css +2 -2
  133. package/dist/styles/radios.css +1 -1
  134. package/dist/styles/search.css +1 -1
  135. package/dist/styles/segmented-button.css +2 -2
  136. package/dist/styles/select.css +2 -2
  137. package/dist/styles/side-sheet.css +2 -2
  138. package/dist/styles/slider.css +1 -1
  139. package/dist/styles/snackbar.css +1 -1
  140. package/dist/styles/split-button.css +2 -2
  141. package/dist/styles/switch.css +2 -2
  142. package/dist/styles/tabs.css +1 -1
  143. package/dist/styles/textfield.css +2 -2
  144. package/dist/styles/timepicker.css +1 -1
  145. package/dist/styles/tooltip.css +2 -2
  146. package/dist/styles/top-app-bar.css +1 -1
  147. package/dist/styles/utilities.css +1 -1
  148. package/dist/styles.css +2 -2
  149. package/dist/styles.d.ts +1 -0
  150. package/dist/themes/autumn.css +1 -1
  151. package/dist/themes/baseline.css +1 -1
  152. package/dist/themes/brownbeige.css +1 -1
  153. package/dist/themes/browngreen.css +1 -1
  154. package/dist/themes/desert.css +1 -1
  155. package/dist/themes/forest.css +1 -1
  156. package/dist/themes/highcontrast.css +1 -1
  157. package/dist/themes/legacy.css +1 -1
  158. package/dist/themes/material.css +1 -1
  159. package/dist/themes/ocean.css +1 -1
  160. package/dist/themes/sageivory.css +1 -1
  161. package/dist/themes/spring.css +1 -1
  162. package/dist/themes/summer.css +1 -1
  163. package/dist/themes/sunset.css +1 -1
  164. package/dist/themes/tealcaramel.css +1 -1
  165. package/dist/themes/winter.css +1 -1
  166. package/package.json +7 -3
  167. package/src/styles/abstract/_mixins.scss +26 -0
  168. package/src/styles/abstract/_variables.scss +25 -11
  169. package/src/styles/base/_reset.scss +9 -2
  170. package/src/styles/components/_bottom-sheet.scss +23 -7
  171. package/src/styles/components/_button.scss +1 -12
  172. package/src/styles/components/_dialog.scss +59 -26
  173. package/src/styles/components/_drawer.scss +60 -7
  174. package/src/styles/components/_menu.scss +12 -7
  175. package/src/styles/components/_side-sheet.scss +33 -4
  176. package/src/styles/components/_tooltip.scss +3 -0
@@ -1,3 +1,4 @@
1
+ import { setHTML } from "../../dom/html.js";
1
2
  const createIcon = (element, config = {}) => {
2
3
  let iconElement = null;
3
4
  const PREFIX = config.prefix || "mtrl";
@@ -12,7 +13,7 @@ const createIcon = (element, config = {}) => {
12
13
  if (config.iconSize) {
13
14
  iconEl.classList.add(`${PREFIX}-icon--${config.iconSize}`);
14
15
  }
15
- iconEl.innerHTML = html;
16
+ setHTML(iconEl, html);
16
17
  return iconEl;
17
18
  };
18
19
  return {
@@ -38,7 +39,7 @@ const createIcon = (element, config = {}) => {
38
39
  }
39
40
  }
40
41
  else if (iconElement && html) {
41
- iconElement.innerHTML = html;
42
+ setHTML(iconElement, html);
42
43
  }
43
44
  return this;
44
45
  },
@@ -17,7 +17,7 @@ export const withInput = (config = {}) => (component) => {
17
17
  required: config.required,
18
18
  disabled: config.disabled,
19
19
  value: config.value || "on",
20
- "aria-label": config.label || config.ariaLabel,
20
+ "aria-label": config.ariaLabel || config.label,
21
21
  };
22
22
  Object.entries(attributes).forEach(([key, value]) => {
23
23
  if (value !== null && value !== undefined) {
@@ -28,6 +28,13 @@ export const withLifecycle = () => (component) => {
28
28
  const destroyElement = component.destroy?.bind(component);
29
29
  const emitter = createEmitter();
30
30
  resources.add(() => emitter.clear());
31
+ const unmount = () => {
32
+ if (mounted) {
33
+ mounted = false;
34
+ emitter.emit('unmount');
35
+ emitter.clear();
36
+ }
37
+ };
31
38
  const lifecycle = {
32
39
  onMount: (handler) => emitter.on('mount', handler),
33
40
  onUnmount: (handler) => emitter.on('unmount', handler),
@@ -37,21 +44,13 @@ export const withLifecycle = () => (component) => {
37
44
  emitter.emit('mount');
38
45
  }
39
46
  },
40
- unmount: () => {
41
- if (mounted) {
42
- mounted = false;
43
- emitter.emit('unmount');
44
- emitter.clear();
45
- }
46
- },
47
+ unmount,
47
48
  isMounted: () => mounted,
48
- destroy() {
49
+ destroy: () => {
49
50
  if (destroyed)
50
51
  return;
51
52
  destroyed = true;
52
- if (mounted) {
53
- this.unmount();
54
- }
53
+ unmount();
55
54
  emitter.clear();
56
55
  resources.destroy();
57
56
  if (hasEvents(component)) {
@@ -10,6 +10,9 @@ export const withTextLabel = (config = {}) => (component) => {
10
10
  if (!input.id)
11
11
  input.id = `${config.prefix}-${config.componentName}-${Math.random().toString(36).slice(2, 9)}`;
12
12
  labelElement.htmlFor = input.id;
13
+ if (input.getAttribute("aria-label") === config.label) {
14
+ input.removeAttribute("aria-label");
15
+ }
13
16
  }
14
17
  if (position === "start") {
15
18
  if (component.element.firstChild) {
@@ -1,3 +1,4 @@
1
+ import { setHTML } from "../../dom/html.js";
1
2
  const DEFAULT_ICON = `
2
3
  <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
3
4
  <polyline points="20 6 9 17 4 12"></polyline>
@@ -11,7 +12,7 @@ export const withTrack = (config) => (component) => {
11
12
  if (config.icon !== 'none') {
12
13
  const icon = document.createElement('span');
13
14
  icon.className = `${config.prefix}-${config.componentName}-thumb-icon`;
14
- icon.innerHTML = config.icon || DEFAULT_ICON;
15
+ setHTML(icon, config.icon || DEFAULT_ICON);
15
16
  thumb.appendChild(icon);
16
17
  }
17
18
  component.element.appendChild(track);
@@ -86,7 +86,7 @@ export declare const processClassNames: (classNames: string | string[] | null) =
86
86
  export declare const createElementConfig: (config: BaseComponentConfig, options: {
87
87
  tag: string;
88
88
  attributes?: Record<string, unknown>;
89
- className?: string | string[] | null;
89
+ className?: string | (string | null | undefined)[] | null;
90
90
  html?: string;
91
91
  text?: string;
92
92
  forwardEvents?: Record<string, EventCondition>;
@@ -44,7 +44,7 @@ export const createElementConfig = (config, options) => {
44
44
  const combinedClassNames = [
45
45
  ...(Array.isArray(configClasses) ? configClasses : [configClasses]),
46
46
  ...(Array.isArray(optionsClasses) ? optionsClasses : [optionsClasses]),
47
- ].filter(Boolean);
47
+ ].filter((name) => Boolean(name));
48
48
  const elementAttributes = options.attributes || {};
49
49
  return {
50
50
  tag: options.tag,
@@ -1,6 +1,7 @@
1
1
  import { setAttributes } from "./attributes.js";
2
2
  import { addClass } from "./classes.js";
3
3
  import { safeUrl, URL_ATTRIBUTES } from "../utils/url.js";
4
+ import { setHTML } from "./html.js";
4
5
  const EVENT_HANDLER_ATTRIBUTE = /^on[a-z]/i;
5
6
  const NAMEABLE_TAGS = new Set([
6
7
  "button", "fieldset", "form", "iframe", "img", "input",
@@ -73,7 +74,7 @@ class ElementPool {
73
74
  if (pool?.length) {
74
75
  const element = pool.pop();
75
76
  element.className = "";
76
- element.innerHTML = "";
77
+ element.replaceChildren();
77
78
  element.removeAttribute("id");
78
79
  Object.keys(element.dataset).forEach((key) => delete element.dataset[key]);
79
80
  return element;
@@ -101,7 +102,7 @@ class ElementPool {
101
102
  delete element.__eventHandlers;
102
103
  }
103
104
  element.className = "";
104
- element.innerHTML = "";
105
+ element.replaceChildren();
105
106
  element.removeAttribute("id");
106
107
  Object.keys(element.dataset).forEach((key) => delete element.dataset[key]);
107
108
  element.parentNode?.removeChild(element);
@@ -118,7 +119,7 @@ export const createElement = (options = {}) => {
118
119
  }
119
120
  const element = document.createElement(options.tag || "div");
120
121
  if (options.html)
121
- element.innerHTML = options.html;
122
+ setHTML(element, options.html);
122
123
  else if (options.text)
123
124
  element.textContent = options.text;
124
125
  if (options.id)
@@ -184,7 +185,7 @@ export const createElement = (options = {}) => {
184
185
  export const createElementPooled = (options = {}) => {
185
186
  const element = getElementPool().acquire(options.tag || "div");
186
187
  if (options.html)
187
- element.innerHTML = options.html;
188
+ setHTML(element, options.html);
188
189
  else if (options.text)
189
190
  element.textContent = options.text;
190
191
  if (options.id)
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Sets the value a hidden field submits, and does nothing when there is no
3
+ * field — the common case, since one exists only for a named component.
4
+ *
5
+ * Only the attribute is written. `type="hidden"` has the "default" value mode,
6
+ * so the `value` property reflects the content attribute with no dirty flag:
7
+ * the attribute is what the form submits, and `form.reset()` cannot leave the
8
+ * field carrying something the component is no longer showing.
9
+ */
10
+ export declare const setFormValue: (input: HTMLInputElement | null, value: string) => void;
11
+ /**
12
+ * Creates a hidden input that carries a component's value into a surrounding
13
+ * form.
14
+ *
15
+ * Components that render no form control of their own — a slider, a time
16
+ * picker — submit nothing however they are named, because a `name` on their
17
+ * root element is not a form field. This puts a real one inside them, and
18
+ * creates nothing at all without a name, so a component used outside a form
19
+ * is exactly as it was.
20
+ *
21
+ * Callers set `disabled` on the returned input directly: a disabled field
22
+ * submits nothing, which is what a disabled component means.
23
+ */
24
+ export declare const createFormValue: (container: HTMLElement, name: string | undefined, value: string, disabled?: boolean) => HTMLInputElement | null;
@@ -0,0 +1,14 @@
1
+ export const setFormValue = (input, value) => {
2
+ input?.setAttribute("value", value);
3
+ };
4
+ export const createFormValue = (container, name, value, disabled = false) => {
5
+ if (!name)
6
+ return null;
7
+ const input = document.createElement("input");
8
+ input.type = "hidden";
9
+ input.name = name;
10
+ input.disabled = disabled;
11
+ setFormValue(input, value);
12
+ container.appendChild(input);
13
+ return input;
14
+ };
@@ -0,0 +1,34 @@
1
+ /** A value the browser's Trusted Types API accepts for innerHTML. */
2
+ export interface TrustedHTMLLike {
3
+ toString(): string;
4
+ }
5
+ /** Markup a component accepts: a string, or a TrustedHTML from a policy. */
6
+ export type HTMLInput = string | TrustedHTMLLike;
7
+ export interface HTMLPolicy {
8
+ /**
9
+ * Called with every markup string before it is written. Return the markup
10
+ * to write: a sanitized string, or a TrustedHTML from a Trusted Types
11
+ * policy. Values that are already TrustedHTML are not passed through it.
12
+ */
13
+ sanitize: (html: string) => HTMLInput;
14
+ }
15
+ /**
16
+ * Sets the policy every component's markup goes through, or clears it with
17
+ * null.
18
+ *
19
+ * @example
20
+ * // DOMPurify
21
+ * configureHTML({ sanitize: (html) => DOMPurify.sanitize(html) });
22
+ *
23
+ * // Trusted Types: a policy the page's CSP allows
24
+ * const trusted = window.trustedTypes.createPolicy('mtrl', { createHTML: (html) => DOMPurify.sanitize(html) });
25
+ * configureHTML({ sanitize: (html) => trusted.createHTML(html) });
26
+ */
27
+ export declare const configureHTML: (next: HTMLPolicy | null) => void;
28
+ /** The policy in force, if any. */
29
+ export declare const getHTMLPolicy: () => HTMLPolicy | null;
30
+ /**
31
+ * Writes markup into an element, through the policy when one is set.
32
+ * An empty string empties the element without touching innerHTML.
33
+ */
34
+ export declare const setHTML: (element: Element, html: HTMLInput | null | undefined) => void;
@@ -0,0 +1,13 @@
1
+ let policy = null;
2
+ export const configureHTML = (next) => {
3
+ policy = next;
4
+ };
5
+ export const getHTMLPolicy = () => policy;
6
+ export const setHTML = (element, html) => {
7
+ if (html === null || html === undefined || html === "") {
8
+ element.replaceChildren();
9
+ return;
10
+ }
11
+ const markup = typeof html === "string" && policy ? policy.sanitize(html) : html;
12
+ element.innerHTML = markup;
13
+ };
@@ -4,3 +4,5 @@ export { setAttributes, removeAttributes, batchAttributes, hasAttribute, getAttr
4
4
  export { addClass, removeClass, toggleClass, hasClass, normalizeClasses, } from "./classes.js";
5
5
  export { createEventManager } from "./events.js";
6
6
  export type { EventManager } from "./events.js";
7
+ export { setHTML, configureHTML, getHTMLPolicy } from "./html.js";
8
+ export type { HTMLPolicy, HTMLInput, TrustedHTMLLike } from "./html.js";
@@ -2,3 +2,4 @@ export { createElement, createSVGElement } from "./create.js";
2
2
  export { setAttributes, removeAttributes, batchAttributes, hasAttribute, getAttribute, } from "./attributes.js";
3
3
  export { addClass, removeClass, toggleClass, hasClass, normalizeClasses, } from "./classes.js";
4
4
  export { createEventManager } from "./events.js";
5
+ export { setHTML, configureHTML, getHTMLPolicy } from "./html.js";
@@ -9,7 +9,7 @@ export const createElement = (tag, attributes = {}) => {
9
9
  else if (key === "style" && typeof value === "object") {
10
10
  Object.assign(element.style, value);
11
11
  }
12
- else if (key === "data" && typeof value === "object") {
12
+ else if (key === "data" && value && typeof value === "object") {
13
13
  Object.entries(value).forEach(([dataKey, dataValue]) => {
14
14
  element.dataset[dataKey] = String(dataValue);
15
15
  });
@@ -15,7 +15,14 @@ export const createEmitter = () => {
15
15
  },
16
16
  emit: (event, ...args) => {
17
17
  const callbacks = events.get(event) || [];
18
- callbacks.forEach(cb => cb(...args));
18
+ callbacks.forEach(cb => {
19
+ try {
20
+ cb(...args);
21
+ }
22
+ catch (error) {
23
+ console.error(`A listener for "${event}" threw:`, error);
24
+ }
25
+ });
19
26
  },
20
27
  clear: () => {
21
28
  events.clear();
@@ -1,7 +1,7 @@
1
1
  export { createEmitter } from "./emitter.js";
2
2
  export type { Emitter, EventCallback } from "./emitter.js";
3
3
  export { createStore, loggingMiddleware, deriveFiltered } from "./store.js";
4
- export type { Store, StoreOptions, Selector, Computation, Updater } from "./store.js";
4
+ export type { Store, StoreOptions, Selector, Computation, Updater, DerivedState } from "./store.js";
5
5
  export { createLifecycle } from "./lifecycle.js";
6
6
  export type { LifecycleManager, LifecycleManagers } from "./lifecycle.js";
7
7
  export { createDisabled } from "./disabled.js";
@@ -19,6 +19,14 @@ export type Computation<T, R> = (state: T) => R;
19
19
  * State updater function type
20
20
  */
21
21
  export type Updater<T> = (state: T) => T;
22
+ /**
23
+ * What derive() returns: call it to remove the derived value, or read the
24
+ * value, typed, through get(). getState() carries derived values at runtime
25
+ * but its type is the base state, so this is the typed way to read one.
26
+ */
27
+ export type DerivedState<R> = (() => void) & {
28
+ get: () => R;
29
+ };
22
30
  /**
23
31
  * State store interface
24
32
  */
@@ -27,7 +35,7 @@ export interface Store<T> {
27
35
  * Gets current state including derived values
28
36
  * @returns Current state
29
37
  */
30
- getState: () => T;
38
+ getState: <D extends object = Record<never, never>>() => T & D;
31
39
  /**
32
40
  * Updates state
33
41
  * @param update - State update object or updater function
@@ -45,7 +53,7 @@ export interface Store<T> {
45
53
  * @param computation - Function to compute derived value
46
54
  * @returns Function to remove derived state
47
55
  */
48
- derive: <K extends string, R>(key: K, computation: Computation<T, R>) => () => void;
56
+ derive: <K extends string, R>(key: K, computation: Computation<T, R>) => DerivedState<R>;
49
57
  /**
50
58
  * Selects a specific slice of state
51
59
  * @param selector - State selector function
@@ -29,9 +29,10 @@ export const createStore = (initialState = {}, options = {}) => {
29
29
  subscribe: (listener) => emitter.on('change', listener),
30
30
  derive: (key, computation) => {
31
31
  derivedStates.set(key, computation);
32
- return () => {
32
+ const remove = () => {
33
33
  derivedStates.delete(key);
34
34
  };
35
+ return Object.assign(remove, { get: () => computation(state) });
35
36
  },
36
37
  select: (selector) => selector(state),
37
38
  reset: () => {
package/dist/index.cjs CHANGED
Binary file
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mtrl",
3
- "version": "0.9.5",
3
+ "version": "0.9.8",
4
4
  "description": "A functional TypeScript/JavaScript component library with composable architecture based on Material Design 3",
5
5
  "author": "floor",
6
6
  "license": "MIT",
@@ -34,7 +34,10 @@
34
34
  "import": "./index.js",
35
35
  "require": "./index.cjs"
36
36
  },
37
- "./styles": "./styles.css",
37
+ "./styles": {
38
+ "types": "./styles.d.ts",
39
+ "default": "./styles.css"
40
+ },
38
41
  "./components/*/constants": {
39
42
  "types": "./components/*/constants.d.ts",
40
43
  "import": "./components/*/constants.js"
@@ -1,2 +1,2 @@
1
- /*! mtrl v0.9.5 | MIT */
1
+ /*! mtrl v0.9.8 | MIT */
2
2
  @layer mtrl.base,mtrl.utilities,mtrl.textfield,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.extended-fab,mtrl.segmented-button,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-rail,mtrl.navigation,mtrl.list,mtrl.tooltip;@layer mtrl.badge{.mtrl-badge-wrapper{position:relative;display:inline-flex;flex-shrink:0}.mtrl-badge{position:absolute;display:flex;align-items:center;justify-content:center;font-weight:500;box-sizing:border-box;overflow:hidden;transition:all 200ms ease;text-overflow:ellipsis}.mtrl-badge--invisible{display:none}.mtrl-badge--small{width:6px;height:6px;min-width:6px;border-radius:3px;font-size:0;padding:0}.mtrl-badge--large{height:16px;min-width:16px;border-radius:8px;padding:0 4px;font-size:11px;line-height:16px;padding-top:.5px}.mtrl-badge--large.mtrl-badge--overflow{min-width:auto;max-width:34px;padding:0 4px}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--top-right{top:-3px;right:-3px}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--top-left{top:-3px;left:-3px}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--bottom-right{bottom:-3px;right:-3px}.mtrl-badge--positioned.mtrl-badge--small.mtrl-badge--bottom-left{bottom:-3px;left:-3px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--top-right{top:-8px;right:-8px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--top-left{top:-8px;left:-8px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--bottom-right{bottom:-8px;right:-8px}.mtrl-badge--positioned.mtrl-badge--large.mtrl-badge--bottom-left{bottom:-8px;left:-8px}.mtrl-badge--error{background-color:var(--mtrl-sys-color-error);color:var(--mtrl-sys-color-on-error)}.mtrl-badge--primary{background-color:var(--mtrl-sys-color-primary);color:var(--mtrl-sys-color-on-primary)}.mtrl-badge--secondary{background-color:var(--mtrl-sys-color-secondary);color:var(--mtrl-sys-color-on-secondary)}.mtrl-badge--tertiary{background-color:var(--mtrl-sys-color-tertiary);color:var(--mtrl-sys-color-on-tertiary)}.mtrl-badge--success{background-color:var(--mtrl-sys-color-success);color:var(--mtrl-sys-color-on-success)}.mtrl-badge--warning{background-color:var(--mtrl-sys-color-warning);color:var(--mtrl-sys-color-on-warning)}.mtrl-badge--info{background-color:var(--mtrl-sys-color-info);color:var(--mtrl-sys-color-on-info)}[dir=rtl] .mtrl-badge--positioned.mtrl-badge--top-right{right:auto;left:-8px}[dir=rtl] .mtrl-badge--positioned.mtrl-badge--top-left{left:auto;right:-8px}[dir=rtl] .mtrl-badge--positioned.mtrl-badge--bottom-right{right:auto;left:-8px}[dir=rtl] .mtrl-badge--positioned.mtrl-badge--bottom-left{left:auto;right:-8px}}
@@ -1,2 +1,2 @@
1
- /*! mtrl v0.9.5 | MIT */
2
- @layer mtrl.base,mtrl.utilities,mtrl.textfield,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.extended-fab,mtrl.segmented-button,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-rail,mtrl.navigation,mtrl.list,mtrl.tooltip;@layer mtrl.base{:root{--mtrl-sys-color-error: #B3261E;--mtrl-sys-color-error-rgb: 179, 38, 30;--mtrl-sys-color-on-error: #FFFFFF;--mtrl-sys-color-on-error-rgb: 255, 255, 255;--mtrl-sys-color-primary: #6750a4;--mtrl-sys-color-primary-rgb: 103, 80, 164;--mtrl-sys-color-on-primary: #ffffff;--mtrl-sys-color-on-primary-rgb: 255, 255, 255;--mtrl-sys-color-primary-container: #eaddff;--mtrl-sys-color-primary-container-rgb: 234, 221, 255;--mtrl-sys-color-on-primary-container: #21005d;--mtrl-sys-color-on-primary-container-rgb: 33, 0, 93;--mtrl-sys-color-secondary: #625b71;--mtrl-sys-color-secondary-rgb: 98, 91, 113;--mtrl-sys-color-on-secondary: #ffffff;--mtrl-sys-color-on-secondary-rgb: 255, 255, 255;--mtrl-sys-color-secondary-container: #e8def8;--mtrl-sys-color-secondary-container-rgb: 232, 222, 248;--mtrl-sys-color-on-secondary-container: #1d192b;--mtrl-sys-color-on-secondary-container-rgb: 29, 25, 43;--mtrl-sys-color-tertiary: #7d5260;--mtrl-sys-color-tertiary-rgb: 125, 82, 96;--mtrl-sys-color-on-tertiary: #ffffff;--mtrl-sys-color-on-tertiary-rgb: 255, 255, 255;--mtrl-sys-color-tertiary-container: #ffd8e4;--mtrl-sys-color-tertiary-container-rgb: 255, 216, 228;--mtrl-sys-color-on-tertiary-container: #31111d;--mtrl-sys-color-on-tertiary-container-rgb: 49, 17, 29;--mtrl-sys-color-surface: #fffbfe;--mtrl-sys-color-surface-rgb: 28, 27, 31;--mtrl-sys-color-surface-dim: #ded8e1;--mtrl-sys-color-surface-dim-rgb: 222, 216, 225;--mtrl-sys-color-surface-bright: #fff8f7;--mtrl-sys-color-surface-bright-rgb: 255, 248, 247;--mtrl-sys-color-surface-container-lowest: #ffffff;--mtrl-sys-color-surface-container-lowest-rgb: 255, 255, 255;--mtrl-sys-color-surface-container-low: #f7f2fa;--mtrl-sys-color-surface-container-low-rgb: 247, 242, 250;--mtrl-sys-color-surface-container: #f3edf7;--mtrl-sys-color-surface-container-rgb: 243, 237, 247;--mtrl-sys-color-surface-container-high: #ece6f0;--mtrl-sys-color-surface-container-high-rgb: 236, 230, 240;--mtrl-sys-color-surface-container-highest: #e6e0e9;--mtrl-sys-color-surface-container-highest-rgb: 230, 224, 233;--mtrl-sys-color-on-surface: #1c1b1f;--mtrl-sys-color-on-surface-rgb: 28, 27, 31;--mtrl-sys-color-on-surface-variant: #49454f;--mtrl-sys-color-on-surface-variant-rgb: 73, 69, 79;--mtrl-sys-color-outline: #79747e;--mtrl-sys-color-outline-rgb: 121, 116, 126;--mtrl-sys-color-outline-variant: #cac4d0;--mtrl-sys-color-outline-variant-rgb: 202, 196, 208;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-shadow-rgb: 0, 0, 0;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-scrim-rgb: 0, 0, 0;--mtrl-sys-color-inverse-surface: #313033;--mtrl-sys-color-inverse-surface-rgb: 49, 48, 51;--mtrl-sys-color-inverse-on-surface: #f4eff4;--mtrl-sys-color-inverse-on-surface-rgb: 244, 239, 244;--mtrl-sys-color-inverse-primary: #d0bcff;--mtrl-sys-color-inverse-primary-rgb: 208, 188, 255;--mtrl-sys-state-hover-state-layer-opacity: 0.08;--mtrl-sys-state-focus-state-layer-opacity: 0.12;--mtrl-sys-state-pressed-state-layer-opacity: 0.12;--mtrl-sys-state-dragged-state-layer-opacity: 0.16}@media(prefers-color-scheme: dark){:root{--mtrl-sys-color-error: #F2B8B5;--mtrl-sys-color-error-rgb: 242, 184, 181;--mtrl-sys-color-on-error: #601410;--mtrl-sys-color-on-error-rgb: 96, 20, 16;--mtrl-sys-color-primary: #d0bcff;--mtrl-sys-color-primary-rgb: 208, 188, 255;--mtrl-sys-color-on-primary: #381e72;--mtrl-sys-color-on-primary-rgb: 56, 30, 114;--mtrl-sys-color-primary-container: #4f378b;--mtrl-sys-color-primary-container-rgb: 79, 55, 139;--mtrl-sys-color-on-primary-container: #eaddff;--mtrl-sys-color-on-primary-container-rgb: 234, 221, 255;--mtrl-sys-color-secondary: #ccc2dc;--mtrl-sys-color-secondary-rgb: 204, 194, 220;--mtrl-sys-color-on-secondary: #332d41;--mtrl-sys-color-on-secondary-rgb: 51, 45, 65;--mtrl-sys-color-secondary-container: #4a4458;--mtrl-sys-color-secondary-container-rgb: 74, 68, 88;--mtrl-sys-color-on-secondary-container: #e8def8;--mtrl-sys-color-on-secondary-container-rgb: 232, 222, 248;--mtrl-sys-color-tertiary: #efb8c8;--mtrl-sys-color-tertiary-rgb: 239, 184, 200;--mtrl-sys-color-on-tertiary: #492532;--mtrl-sys-color-on-tertiary-rgb: 73, 37, 50;--mtrl-sys-color-tertiary-container: #633b48;--mtrl-sys-color-tertiary-container-rgb: 99, 59, 72;--mtrl-sys-color-on-tertiary-container: #ffd8e4;--mtrl-sys-color-on-tertiary-container-rgb: 255, 216, 228;--mtrl-sys-color-surface: #1c1b1f;--mtrl-sys-color-surface-rgb: 28, 27, 31;--mtrl-sys-color-surface-dim: #141218;--mtrl-sys-color-surface-dim-rgb: 20, 18, 24;--mtrl-sys-color-surface-bright: #3b383d;--mtrl-sys-color-surface-bright-rgb: 59, 56, 61;--mtrl-sys-color-surface-container-lowest: #0f0d13;--mtrl-sys-color-surface-container-lowest-rgb: 15, 13, 19;--mtrl-sys-color-surface-container-low: #1d1b20;--mtrl-sys-color-surface-container-low-rgb: 29, 27, 32;--mtrl-sys-color-surface-container: #211f26;--mtrl-sys-color-surface-container-rgb: 33, 31, 38;--mtrl-sys-color-surface-container-high: #2b2930;--mtrl-sys-color-surface-container-high-rgb: 43, 41, 48;--mtrl-sys-color-surface-container-highest: #36343b;--mtrl-sys-color-surface-container-highest-rgb: 54, 52, 59;--mtrl-sys-color-on-surface: #e6e1e5;--mtrl-sys-color-on-surface-rgb: 230, 225, 229;--mtrl-sys-color-on-surface-variant: #cac4d0;--mtrl-sys-color-on-surface-variant-rgb: 202, 196, 208;--mtrl-sys-color-outline: #938f99;--mtrl-sys-color-outline-rgb: 147, 143, 153;--mtrl-sys-color-outline-variant: #444746;--mtrl-sys-color-outline-variant-rgb: 68, 71, 70;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-shadow-rgb: 0, 0, 0;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-scrim-rgb: 0, 0, 0;--mtrl-sys-color-inverse-surface: #e6e1e5;--mtrl-sys-color-inverse-surface-rgb: 230, 225, 229;--mtrl-sys-color-inverse-on-surface: #313033;--mtrl-sys-color-inverse-on-surface-rgb: 49, 48, 51;--mtrl-sys-color-inverse-primary: #6750a4;--mtrl-sys-color-inverse-primary-rgb: 103, 80, 164}}.dark-theme{--mtrl-sys-color-error: #F2B8B5;--mtrl-sys-color-error-rgb: 242, 184, 181;--mtrl-sys-color-on-error: #601410;--mtrl-sys-color-on-error-rgb: 96, 20, 16;--mtrl-sys-color-primary: #d0bcff;--mtrl-sys-color-primary-rgb: 208, 188, 255;--mtrl-sys-color-on-primary: #381e72;--mtrl-sys-color-on-primary-rgb: 56, 30, 114;--mtrl-sys-color-primary-container: #4f378b;--mtrl-sys-color-primary-container-rgb: 79, 55, 139;--mtrl-sys-color-on-primary-container: #eaddff;--mtrl-sys-color-on-primary-container-rgb: 234, 221, 255;--mtrl-sys-color-secondary: #ccc2dc;--mtrl-sys-color-secondary-rgb: 204, 194, 220;--mtrl-sys-color-on-secondary: #332d41;--mtrl-sys-color-on-secondary-rgb: 51, 45, 65;--mtrl-sys-color-secondary-container: #4a4458;--mtrl-sys-color-secondary-container-rgb: 74, 68, 88;--mtrl-sys-color-on-secondary-container: #e8def8;--mtrl-sys-color-on-secondary-container-rgb: 232, 222, 248;--mtrl-sys-color-tertiary: #efb8c8;--mtrl-sys-color-tertiary-rgb: 239, 184, 200;--mtrl-sys-color-on-tertiary: #492532;--mtrl-sys-color-on-tertiary-rgb: 73, 37, 50;--mtrl-sys-color-tertiary-container: #633b48;--mtrl-sys-color-tertiary-container-rgb: 99, 59, 72;--mtrl-sys-color-on-tertiary-container: #ffd8e4;--mtrl-sys-color-on-tertiary-container-rgb: 255, 216, 228;--mtrl-sys-color-surface: #1c1b1f;--mtrl-sys-color-surface-rgb: 28, 27, 31;--mtrl-sys-color-surface-dim: #141218;--mtrl-sys-color-surface-dim-rgb: 20, 18, 24;--mtrl-sys-color-surface-bright: #3b383d;--mtrl-sys-color-surface-bright-rgb: 59, 56, 61;--mtrl-sys-color-surface-container-lowest: #0f0d13;--mtrl-sys-color-surface-container-lowest-rgb: 15, 13, 19;--mtrl-sys-color-surface-container-low: #1d1b20;--mtrl-sys-color-surface-container-low-rgb: 29, 27, 32;--mtrl-sys-color-surface-container: #211f26;--mtrl-sys-color-surface-container-rgb: 33, 31, 38;--mtrl-sys-color-surface-container-high: #2b2930;--mtrl-sys-color-surface-container-high-rgb: 43, 41, 48;--mtrl-sys-color-surface-container-highest: #36343b;--mtrl-sys-color-surface-container-highest-rgb: 54, 52, 59;--mtrl-sys-color-on-surface: #e6e1e5;--mtrl-sys-color-on-surface-rgb: 230, 225, 229;--mtrl-sys-color-on-surface-variant: #cac4d0;--mtrl-sys-color-on-surface-variant-rgb: 202, 196, 208;--mtrl-sys-color-outline: #938f99;--mtrl-sys-color-outline-rgb: 147, 143, 153;--mtrl-sys-color-outline-variant: #444746;--mtrl-sys-color-outline-variant-rgb: 68, 71, 70;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-shadow-rgb: 0, 0, 0;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-scrim-rgb: 0, 0, 0;--mtrl-sys-color-inverse-surface: #e6e1e5;--mtrl-sys-color-inverse-surface-rgb: 230, 225, 229;--mtrl-sys-color-inverse-on-surface: #313033;--mtrl-sys-color-inverse-on-surface-rgb: 49, 48, 51;--mtrl-sys-color-inverse-primary: #6750a4;--mtrl-sys-color-inverse-primary-rgb: 103, 80, 164}[data-theme=baseline]{--mtrl-sys-color-error: #B3261E;--mtrl-sys-color-error-rgb: 179, 38, 30;--mtrl-sys-color-on-error: #FFFFFF;--mtrl-sys-color-on-error-rgb: 255, 255, 255;--mtrl-sys-color-primary: #6750a4;--mtrl-sys-color-primary-rgb: 103, 80, 164;--mtrl-sys-color-on-primary: #ffffff;--mtrl-sys-color-on-primary-rgb: 255, 255, 255;--mtrl-sys-color-primary-container: #eaddff;--mtrl-sys-color-primary-container-rgb: 234, 221, 255;--mtrl-sys-color-on-primary-container: #21005d;--mtrl-sys-color-on-primary-container-rgb: 33, 0, 93;--mtrl-sys-color-secondary: #625b71;--mtrl-sys-color-secondary-rgb: 98, 91, 113;--mtrl-sys-color-on-secondary: #ffffff;--mtrl-sys-color-on-secondary-rgb: 255, 255, 255;--mtrl-sys-color-secondary-container: #e8def8;--mtrl-sys-color-secondary-container-rgb: 232, 222, 248;--mtrl-sys-color-on-secondary-container: #1d192b;--mtrl-sys-color-on-secondary-container-rgb: 29, 25, 43;--mtrl-sys-color-tertiary: #7d5260;--mtrl-sys-color-tertiary-rgb: 125, 82, 96;--mtrl-sys-color-on-tertiary: #ffffff;--mtrl-sys-color-on-tertiary-rgb: 255, 255, 255;--mtrl-sys-color-tertiary-container: #ffd8e4;--mtrl-sys-color-tertiary-container-rgb: 255, 216, 228;--mtrl-sys-color-on-tertiary-container: #31111d;--mtrl-sys-color-on-tertiary-container-rgb: 49, 17, 29;--mtrl-sys-color-surface: #fffbfe;--mtrl-sys-color-surface-rgb: 28, 27, 31;--mtrl-sys-color-surface-dim: #ded8e1;--mtrl-sys-color-surface-dim-rgb: 222, 216, 225;--mtrl-sys-color-surface-bright: #fff8f7;--mtrl-sys-color-surface-bright-rgb: 255, 248, 247;--mtrl-sys-color-surface-container-lowest: #ffffff;--mtrl-sys-color-surface-container-lowest-rgb: 255, 255, 255;--mtrl-sys-color-surface-container-low: #f7f2fa;--mtrl-sys-color-surface-container-low-rgb: 247, 242, 250;--mtrl-sys-color-surface-container: #f3edf7;--mtrl-sys-color-surface-container-rgb: 243, 237, 247;--mtrl-sys-color-surface-container-high: #ece6f0;--mtrl-sys-color-surface-container-high-rgb: 236, 230, 240;--mtrl-sys-color-surface-container-highest: #e6e0e9;--mtrl-sys-color-surface-container-highest-rgb: 230, 224, 233;--mtrl-sys-color-on-surface: #1c1b1f;--mtrl-sys-color-on-surface-rgb: 28, 27, 31;--mtrl-sys-color-on-surface-variant: #49454f;--mtrl-sys-color-on-surface-variant-rgb: 73, 69, 79;--mtrl-sys-color-outline: #79747e;--mtrl-sys-color-outline-rgb: 121, 116, 126;--mtrl-sys-color-outline-variant: #cac4d0;--mtrl-sys-color-outline-variant-rgb: 202, 196, 208;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-shadow-rgb: 0, 0, 0;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-scrim-rgb: 0, 0, 0;--mtrl-sys-color-inverse-surface: #313033;--mtrl-sys-color-inverse-surface-rgb: 49, 48, 51;--mtrl-sys-color-inverse-on-surface: #f4eff4;--mtrl-sys-color-inverse-on-surface-rgb: 244, 239, 244;--mtrl-sys-color-inverse-primary: #d0bcff;--mtrl-sys-color-inverse-primary-rgb: 208, 188, 255;--mtrl-sys-state-hover-state-layer-opacity: 0.08;--mtrl-sys-state-focus-state-layer-opacity: 0.12;--mtrl-sys-state-pressed-state-layer-opacity: 0.12;--mtrl-sys-state-dragged-state-layer-opacity: 0.16}[data-theme=baseline][data-theme-mode=dark]{--mtrl-sys-color-error: #F2B8B5;--mtrl-sys-color-error-rgb: 242, 184, 181;--mtrl-sys-color-on-error: #601410;--mtrl-sys-color-on-error-rgb: 96, 20, 16;--mtrl-sys-color-primary: #d0bcff;--mtrl-sys-color-primary-rgb: 208, 188, 255;--mtrl-sys-color-on-primary: #381e72;--mtrl-sys-color-on-primary-rgb: 56, 30, 114;--mtrl-sys-color-primary-container: #4f378b;--mtrl-sys-color-primary-container-rgb: 79, 55, 139;--mtrl-sys-color-on-primary-container: #eaddff;--mtrl-sys-color-on-primary-container-rgb: 234, 221, 255;--mtrl-sys-color-secondary: #ccc2dc;--mtrl-sys-color-secondary-rgb: 204, 194, 220;--mtrl-sys-color-on-secondary: #332d41;--mtrl-sys-color-on-secondary-rgb: 51, 45, 65;--mtrl-sys-color-secondary-container: #4a4458;--mtrl-sys-color-secondary-container-rgb: 74, 68, 88;--mtrl-sys-color-on-secondary-container: #e8def8;--mtrl-sys-color-on-secondary-container-rgb: 232, 222, 248;--mtrl-sys-color-tertiary: #efb8c8;--mtrl-sys-color-tertiary-rgb: 239, 184, 200;--mtrl-sys-color-on-tertiary: #492532;--mtrl-sys-color-on-tertiary-rgb: 73, 37, 50;--mtrl-sys-color-tertiary-container: #633b48;--mtrl-sys-color-tertiary-container-rgb: 99, 59, 72;--mtrl-sys-color-on-tertiary-container: #ffd8e4;--mtrl-sys-color-on-tertiary-container-rgb: 255, 216, 228;--mtrl-sys-color-surface: #1c1b1f;--mtrl-sys-color-surface-rgb: 28, 27, 31;--mtrl-sys-color-surface-dim: #141218;--mtrl-sys-color-surface-dim-rgb: 20, 18, 24;--mtrl-sys-color-surface-bright: #3b383d;--mtrl-sys-color-surface-bright-rgb: 59, 56, 61;--mtrl-sys-color-surface-container-lowest: #0f0d13;--mtrl-sys-color-surface-container-lowest-rgb: 15, 13, 19;--mtrl-sys-color-surface-container-low: #1d1b20;--mtrl-sys-color-surface-container-low-rgb: 29, 27, 32;--mtrl-sys-color-surface-container: #211f26;--mtrl-sys-color-surface-container-rgb: 33, 31, 38;--mtrl-sys-color-surface-container-high: #2b2930;--mtrl-sys-color-surface-container-high-rgb: 43, 41, 48;--mtrl-sys-color-surface-container-highest: #36343b;--mtrl-sys-color-surface-container-highest-rgb: 54, 52, 59;--mtrl-sys-color-on-surface: #e6e1e5;--mtrl-sys-color-on-surface-rgb: 230, 225, 229;--mtrl-sys-color-on-surface-variant: #cac4d0;--mtrl-sys-color-on-surface-variant-rgb: 202, 196, 208;--mtrl-sys-color-outline: #938f99;--mtrl-sys-color-outline-rgb: 147, 143, 153;--mtrl-sys-color-outline-variant: #444746;--mtrl-sys-color-outline-variant-rgb: 68, 71, 70;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-shadow-rgb: 0, 0, 0;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-scrim-rgb: 0, 0, 0;--mtrl-sys-color-inverse-surface: #e6e1e5;--mtrl-sys-color-inverse-surface-rgb: 230, 225, 229;--mtrl-sys-color-inverse-on-surface: #313033;--mtrl-sys-color-inverse-on-surface-rgb: 49, 48, 51;--mtrl-sys-color-inverse-primary: #6750a4;--mtrl-sys-color-inverse-primary-rgb: 103, 80, 164}:root{--mtrl-ref-typeface-brand: Roboto, sans-serif;--mtrl-ref-typeface-plain: Roboto, sans-serif;--mtrl-sys-shape-corner-none: 0;--mtrl-sys-shape-corner-extra-tiny: 1px;--mtrl-sys-shape-corner-tiny: 2px;--mtrl-sys-shape-corner-extra-small: 4px;--mtrl-sys-shape-corner-small: 8px;--mtrl-sys-shape-corner-medium: 12px;--mtrl-sys-shape-corner-large: 16px;--mtrl-sys-shape-corner-large-increased: 20px;--mtrl-sys-shape-corner-extra-large: 28px;--mtrl-sys-shape-corner-full: 9999px;--mtrl-sys-shape-corner-pill: 100px;--mtrl-sys-typescale-display-large-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-display-large-font-size: 57px;--mtrl-sys-typescale-display-large-line-height: 64px;--mtrl-sys-typescale-display-large-letter-spacing: -0.25px;--mtrl-sys-typescale-display-large-font-weight: 400;--mtrl-sys-typescale-display-medium-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-display-medium-font-size: 45px;--mtrl-sys-typescale-display-medium-line-height: 52px;--mtrl-sys-typescale-display-medium-letter-spacing: 0;--mtrl-sys-typescale-display-medium-font-weight: 400;--mtrl-sys-typescale-display-small-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-display-small-font-size: 36px;--mtrl-sys-typescale-display-small-line-height: 44px;--mtrl-sys-typescale-display-small-letter-spacing: 0;--mtrl-sys-typescale-display-small-font-weight: 400;--mtrl-sys-typescale-headline-large-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-headline-large-font-size: 32px;--mtrl-sys-typescale-headline-large-line-height: 40px;--mtrl-sys-typescale-headline-large-letter-spacing: 0;--mtrl-sys-typescale-headline-large-font-weight: 400;--mtrl-sys-typescale-headline-medium-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-headline-medium-font-size: 28px;--mtrl-sys-typescale-headline-medium-line-height: 36px;--mtrl-sys-typescale-headline-medium-letter-spacing: 0;--mtrl-sys-typescale-headline-medium-font-weight: 400;--mtrl-sys-typescale-headline-small-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-headline-small-font-size: 24px;--mtrl-sys-typescale-headline-small-line-height: 32px;--mtrl-sys-typescale-headline-small-letter-spacing: 0;--mtrl-sys-typescale-headline-small-font-weight: 400;--mtrl-sys-typescale-title-large-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-title-large-font-size: 22px;--mtrl-sys-typescale-title-large-line-height: 28px;--mtrl-sys-typescale-title-large-letter-spacing: 0;--mtrl-sys-typescale-title-large-font-weight: 400;--mtrl-sys-typescale-title-medium-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-title-medium-font-size: 16px;--mtrl-sys-typescale-title-medium-line-height: 24px;--mtrl-sys-typescale-title-medium-letter-spacing: 0.15px;--mtrl-sys-typescale-title-medium-font-weight: 500;--mtrl-sys-typescale-title-small-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-title-small-font-size: 14px;--mtrl-sys-typescale-title-small-line-height: 20px;--mtrl-sys-typescale-title-small-letter-spacing: 0.1px;--mtrl-sys-typescale-title-small-font-weight: 500;--mtrl-sys-typescale-body-large-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-body-large-font-size: 16px;--mtrl-sys-typescale-body-large-line-height: 24px;--mtrl-sys-typescale-body-large-letter-spacing: 0.5px;--mtrl-sys-typescale-body-large-font-weight: 400;--mtrl-sys-typescale-body-medium-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-body-medium-font-size: 14px;--mtrl-sys-typescale-body-medium-line-height: 20px;--mtrl-sys-typescale-body-medium-letter-spacing: 0.25px;--mtrl-sys-typescale-body-medium-font-weight: 400;--mtrl-sys-typescale-body-small-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-body-small-font-size: 12px;--mtrl-sys-typescale-body-small-line-height: 16px;--mtrl-sys-typescale-body-small-letter-spacing: 0.4px;--mtrl-sys-typescale-body-small-font-weight: 400;--mtrl-sys-typescale-label-large-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-label-large-font-size: 14px;--mtrl-sys-typescale-label-large-line-height: 20px;--mtrl-sys-typescale-label-large-letter-spacing: 0.1px;--mtrl-sys-typescale-label-large-font-weight: 500;--mtrl-sys-typescale-label-medium-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-label-medium-font-size: 12px;--mtrl-sys-typescale-label-medium-line-height: 16px;--mtrl-sys-typescale-label-medium-letter-spacing: 0.5px;--mtrl-sys-typescale-label-medium-font-weight: 500;--mtrl-sys-typescale-label-small-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-label-small-font-size: 11px;--mtrl-sys-typescale-label-small-line-height: 16px;--mtrl-sys-typescale-label-small-letter-spacing: 0.5px;--mtrl-sys-typescale-label-small-font-weight: 500}*,*::before,*::after{box-sizing:border-box}html,body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd{margin:0;padding:0}body{min-height:100vh;text-rendering:optimizeSpeed;line-height:1.5}img,picture{max-width:100%;display:block}input,button,textarea,select{font:inherit}@media(prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}}button{background:rgba(0,0,0,0);border:none;cursor:pointer;padding:0}ul,ol{list-style:none;margin:0;padding:0}a{text-decoration:none;color:inherit}table{border-collapse:collapse;border-spacing:0}.mtrl-display-large{font-family:"Roboto",sans-serif;font-size:57px;line-height:64px;letter-spacing:-0.25px;font-weight:400}.mtrl-display-medium{font-family:"Roboto",sans-serif;font-size:45px;line-height:52px;letter-spacing:0;font-weight:400}.mtrl-display-small{font-family:"Roboto",sans-serif;font-size:36px;line-height:44px;letter-spacing:0;font-weight:400}.mtrl-headline-large{font-family:"Roboto",sans-serif;font-size:32px;line-height:40px;letter-spacing:0;font-weight:400}.mtrl-headline-medium{font-family:"Roboto",sans-serif;font-size:28px;line-height:36px;letter-spacing:0;font-weight:400}.mtrl-headline-small{font-family:"Roboto",sans-serif;font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}.mtrl-title-large{font-family:"Roboto",sans-serif;font-size:22px;line-height:28px;letter-spacing:0;font-weight:400}.mtrl-title-medium{font-family:"Roboto",sans-serif;font-size:16px;line-height:24px;letter-spacing:.15px;font-weight:500}.mtrl-title-small{font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}.mtrl-body-large{font-family:"Roboto",sans-serif;font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}.mtrl-body-medium{font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}.mtrl-body-small{font-family:"Roboto",sans-serif;font-size:12px;line-height:16px;letter-spacing:.4px;font-weight:400}.mtrl-label-large{font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}.mtrl-label-medium{font-family:"Roboto",sans-serif;font-size:12px;line-height:16px;letter-spacing:.5px;font-weight:500}.mtrl-label-small{font-family:"Roboto",sans-serif;font-size:11px;line-height:16px;letter-spacing:.5px;font-weight:500}.mtrl-text-center{text-align:center}.mtrl-text-left{text-align:left}.mtrl-text-right{text-align:right}.mtrl-font-thin{font-weight:100}.mtrl-font-light{font-weight:300}.mtrl-font-regular{font-weight:400}.mtrl-font-medium{font-weight:500}.mtrl-font-bold{font-weight:700}.mtrl-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mtrl-truncate-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mtrl-truncate-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}h1{font-family:"Roboto",sans-serif;font-size:32px;line-height:40px;letter-spacing:0;font-weight:400;margin-bottom:.5em}h2{font-family:"Roboto",sans-serif;font-size:28px;line-height:36px;letter-spacing:0;font-weight:400;margin-bottom:.5em}h3{font-family:"Roboto",sans-serif;font-size:24px;line-height:32px;letter-spacing:0;font-weight:400;margin-bottom:.5em}h4{font-family:"Roboto",sans-serif;font-size:22px;line-height:28px;letter-spacing:0;font-weight:400;margin-bottom:.5em}h5{font-family:"Roboto",sans-serif;font-size:16px;line-height:24px;letter-spacing:.15px;font-weight:500;margin-bottom:.5em}h6{font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500;margin-bottom:.5em}p{font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400;margin-bottom:1em}.mtrl-ripple{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;border-radius:inherit;pointer-events:none;z-index:0}.mtrl-ripple-wave{position:absolute;border-radius:50%;background-color:currentColor;opacity:0;transform:scale(0);pointer-events:none;will-change:transform,opacity;transition:opacity .4s cubic-bezier(0.4, 0, 0.2, 1)}.mtrl-ripple-wave.active{animation:mtrl-ripple-expand .4s cubic-bezier(0.4, 0, 0.2, 1) both;opacity:.08}.mtrl-ripple-wave.fade-out{opacity:0}@keyframes mtrl-ripple-expand{from{transform:scale(0)}to{transform:scale(1)}}@media(prefers-reduced-motion: reduce){.mtrl-ripple-wave.active{animation:none;transform:scale(1)}.mtrl-ripple-wave{transition:none}}[data-ripple]{position:relative;overflow:hidden}[data-ripple]::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:0;pointer-events:none}[data-ripple][data-ripple=light]::after{background-color:hsla(0,0%,100%,.3)}[data-ripple][data-ripple=dark]::after{background-color:rgba(0,0,0,.1)}[data-ripple]>*{position:relative;z-index:1}body{margin:0;padding:0;background-color:var(--mtrl-sys-color-surface);color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-sys-typescale-body-medium-font);font-size:var(--mtrl-sys-typescale-body-medium-font-size);line-height:var(--mtrl-sys-typescale-body-medium-line-height);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color 200ms cubic-bezier(0.2, 0, 0, 1),color 200ms cubic-bezier(0.2, 0, 0, 1)}html{scroll-behavior:smooth}@media(prefers-reduced-motion: reduce){html{scroll-behavior:auto}}*,*::before,*::after{box-sizing:border-box}}
1
+ /*! mtrl v0.9.8 | MIT */
2
+ @layer mtrl.base,mtrl.utilities,mtrl.textfield,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.extended-fab,mtrl.segmented-button,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-rail,mtrl.navigation,mtrl.list,mtrl.tooltip;@layer mtrl.base{:root{--mtrl-sys-color-error: #B3261E;--mtrl-sys-color-error-rgb: 179, 38, 30;--mtrl-sys-color-on-error: #FFFFFF;--mtrl-sys-color-on-error-rgb: 255, 255, 255;--mtrl-sys-color-primary: #6750a4;--mtrl-sys-color-primary-rgb: 103, 80, 164;--mtrl-sys-color-on-primary: #ffffff;--mtrl-sys-color-on-primary-rgb: 255, 255, 255;--mtrl-sys-color-primary-container: #eaddff;--mtrl-sys-color-primary-container-rgb: 234, 221, 255;--mtrl-sys-color-on-primary-container: #21005d;--mtrl-sys-color-on-primary-container-rgb: 33, 0, 93;--mtrl-sys-color-secondary: #625b71;--mtrl-sys-color-secondary-rgb: 98, 91, 113;--mtrl-sys-color-on-secondary: #ffffff;--mtrl-sys-color-on-secondary-rgb: 255, 255, 255;--mtrl-sys-color-secondary-container: #e8def8;--mtrl-sys-color-secondary-container-rgb: 232, 222, 248;--mtrl-sys-color-on-secondary-container: #1d192b;--mtrl-sys-color-on-secondary-container-rgb: 29, 25, 43;--mtrl-sys-color-tertiary: #7d5260;--mtrl-sys-color-tertiary-rgb: 125, 82, 96;--mtrl-sys-color-on-tertiary: #ffffff;--mtrl-sys-color-on-tertiary-rgb: 255, 255, 255;--mtrl-sys-color-tertiary-container: #ffd8e4;--mtrl-sys-color-tertiary-container-rgb: 255, 216, 228;--mtrl-sys-color-on-tertiary-container: #31111d;--mtrl-sys-color-on-tertiary-container-rgb: 49, 17, 29;--mtrl-sys-color-surface: #fffbfe;--mtrl-sys-color-surface-rgb: 28, 27, 31;--mtrl-sys-color-surface-dim: #ded8e1;--mtrl-sys-color-surface-dim-rgb: 222, 216, 225;--mtrl-sys-color-surface-bright: #fff8f7;--mtrl-sys-color-surface-bright-rgb: 255, 248, 247;--mtrl-sys-color-surface-container-lowest: #ffffff;--mtrl-sys-color-surface-container-lowest-rgb: 255, 255, 255;--mtrl-sys-color-surface-container-low: #f7f2fa;--mtrl-sys-color-surface-container-low-rgb: 247, 242, 250;--mtrl-sys-color-surface-container: #f3edf7;--mtrl-sys-color-surface-container-rgb: 243, 237, 247;--mtrl-sys-color-surface-container-high: #ece6f0;--mtrl-sys-color-surface-container-high-rgb: 236, 230, 240;--mtrl-sys-color-surface-container-highest: #e6e0e9;--mtrl-sys-color-surface-container-highest-rgb: 230, 224, 233;--mtrl-sys-color-on-surface: #1c1b1f;--mtrl-sys-color-on-surface-rgb: 28, 27, 31;--mtrl-sys-color-on-surface-variant: #49454f;--mtrl-sys-color-on-surface-variant-rgb: 73, 69, 79;--mtrl-sys-color-outline: #79747e;--mtrl-sys-color-outline-rgb: 121, 116, 126;--mtrl-sys-color-outline-variant: #cac4d0;--mtrl-sys-color-outline-variant-rgb: 202, 196, 208;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-shadow-rgb: 0, 0, 0;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-scrim-rgb: 0, 0, 0;--mtrl-sys-color-inverse-surface: #313033;--mtrl-sys-color-inverse-surface-rgb: 49, 48, 51;--mtrl-sys-color-inverse-on-surface: #f4eff4;--mtrl-sys-color-inverse-on-surface-rgb: 244, 239, 244;--mtrl-sys-color-inverse-primary: #d0bcff;--mtrl-sys-color-inverse-primary-rgb: 208, 188, 255;--mtrl-sys-state-hover-state-layer-opacity: 0.08;--mtrl-sys-state-focus-state-layer-opacity: 0.12;--mtrl-sys-state-pressed-state-layer-opacity: 0.12;--mtrl-sys-state-dragged-state-layer-opacity: 0.16}@media(prefers-color-scheme: dark){:root{--mtrl-sys-color-error: #F2B8B5;--mtrl-sys-color-error-rgb: 242, 184, 181;--mtrl-sys-color-on-error: #601410;--mtrl-sys-color-on-error-rgb: 96, 20, 16;--mtrl-sys-color-primary: #d0bcff;--mtrl-sys-color-primary-rgb: 208, 188, 255;--mtrl-sys-color-on-primary: #381e72;--mtrl-sys-color-on-primary-rgb: 56, 30, 114;--mtrl-sys-color-primary-container: #4f378b;--mtrl-sys-color-primary-container-rgb: 79, 55, 139;--mtrl-sys-color-on-primary-container: #eaddff;--mtrl-sys-color-on-primary-container-rgb: 234, 221, 255;--mtrl-sys-color-secondary: #ccc2dc;--mtrl-sys-color-secondary-rgb: 204, 194, 220;--mtrl-sys-color-on-secondary: #332d41;--mtrl-sys-color-on-secondary-rgb: 51, 45, 65;--mtrl-sys-color-secondary-container: #4a4458;--mtrl-sys-color-secondary-container-rgb: 74, 68, 88;--mtrl-sys-color-on-secondary-container: #e8def8;--mtrl-sys-color-on-secondary-container-rgb: 232, 222, 248;--mtrl-sys-color-tertiary: #efb8c8;--mtrl-sys-color-tertiary-rgb: 239, 184, 200;--mtrl-sys-color-on-tertiary: #492532;--mtrl-sys-color-on-tertiary-rgb: 73, 37, 50;--mtrl-sys-color-tertiary-container: #633b48;--mtrl-sys-color-tertiary-container-rgb: 99, 59, 72;--mtrl-sys-color-on-tertiary-container: #ffd8e4;--mtrl-sys-color-on-tertiary-container-rgb: 255, 216, 228;--mtrl-sys-color-surface: #1c1b1f;--mtrl-sys-color-surface-rgb: 28, 27, 31;--mtrl-sys-color-surface-dim: #141218;--mtrl-sys-color-surface-dim-rgb: 20, 18, 24;--mtrl-sys-color-surface-bright: #3b383d;--mtrl-sys-color-surface-bright-rgb: 59, 56, 61;--mtrl-sys-color-surface-container-lowest: #0f0d13;--mtrl-sys-color-surface-container-lowest-rgb: 15, 13, 19;--mtrl-sys-color-surface-container-low: #1d1b20;--mtrl-sys-color-surface-container-low-rgb: 29, 27, 32;--mtrl-sys-color-surface-container: #211f26;--mtrl-sys-color-surface-container-rgb: 33, 31, 38;--mtrl-sys-color-surface-container-high: #2b2930;--mtrl-sys-color-surface-container-high-rgb: 43, 41, 48;--mtrl-sys-color-surface-container-highest: #36343b;--mtrl-sys-color-surface-container-highest-rgb: 54, 52, 59;--mtrl-sys-color-on-surface: #e6e1e5;--mtrl-sys-color-on-surface-rgb: 230, 225, 229;--mtrl-sys-color-on-surface-variant: #cac4d0;--mtrl-sys-color-on-surface-variant-rgb: 202, 196, 208;--mtrl-sys-color-outline: #938f99;--mtrl-sys-color-outline-rgb: 147, 143, 153;--mtrl-sys-color-outline-variant: #444746;--mtrl-sys-color-outline-variant-rgb: 68, 71, 70;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-shadow-rgb: 0, 0, 0;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-scrim-rgb: 0, 0, 0;--mtrl-sys-color-inverse-surface: #e6e1e5;--mtrl-sys-color-inverse-surface-rgb: 230, 225, 229;--mtrl-sys-color-inverse-on-surface: #313033;--mtrl-sys-color-inverse-on-surface-rgb: 49, 48, 51;--mtrl-sys-color-inverse-primary: #6750a4;--mtrl-sys-color-inverse-primary-rgb: 103, 80, 164}}.dark-theme{--mtrl-sys-color-error: #F2B8B5;--mtrl-sys-color-error-rgb: 242, 184, 181;--mtrl-sys-color-on-error: #601410;--mtrl-sys-color-on-error-rgb: 96, 20, 16;--mtrl-sys-color-primary: #d0bcff;--mtrl-sys-color-primary-rgb: 208, 188, 255;--mtrl-sys-color-on-primary: #381e72;--mtrl-sys-color-on-primary-rgb: 56, 30, 114;--mtrl-sys-color-primary-container: #4f378b;--mtrl-sys-color-primary-container-rgb: 79, 55, 139;--mtrl-sys-color-on-primary-container: #eaddff;--mtrl-sys-color-on-primary-container-rgb: 234, 221, 255;--mtrl-sys-color-secondary: #ccc2dc;--mtrl-sys-color-secondary-rgb: 204, 194, 220;--mtrl-sys-color-on-secondary: #332d41;--mtrl-sys-color-on-secondary-rgb: 51, 45, 65;--mtrl-sys-color-secondary-container: #4a4458;--mtrl-sys-color-secondary-container-rgb: 74, 68, 88;--mtrl-sys-color-on-secondary-container: #e8def8;--mtrl-sys-color-on-secondary-container-rgb: 232, 222, 248;--mtrl-sys-color-tertiary: #efb8c8;--mtrl-sys-color-tertiary-rgb: 239, 184, 200;--mtrl-sys-color-on-tertiary: #492532;--mtrl-sys-color-on-tertiary-rgb: 73, 37, 50;--mtrl-sys-color-tertiary-container: #633b48;--mtrl-sys-color-tertiary-container-rgb: 99, 59, 72;--mtrl-sys-color-on-tertiary-container: #ffd8e4;--mtrl-sys-color-on-tertiary-container-rgb: 255, 216, 228;--mtrl-sys-color-surface: #1c1b1f;--mtrl-sys-color-surface-rgb: 28, 27, 31;--mtrl-sys-color-surface-dim: #141218;--mtrl-sys-color-surface-dim-rgb: 20, 18, 24;--mtrl-sys-color-surface-bright: #3b383d;--mtrl-sys-color-surface-bright-rgb: 59, 56, 61;--mtrl-sys-color-surface-container-lowest: #0f0d13;--mtrl-sys-color-surface-container-lowest-rgb: 15, 13, 19;--mtrl-sys-color-surface-container-low: #1d1b20;--mtrl-sys-color-surface-container-low-rgb: 29, 27, 32;--mtrl-sys-color-surface-container: #211f26;--mtrl-sys-color-surface-container-rgb: 33, 31, 38;--mtrl-sys-color-surface-container-high: #2b2930;--mtrl-sys-color-surface-container-high-rgb: 43, 41, 48;--mtrl-sys-color-surface-container-highest: #36343b;--mtrl-sys-color-surface-container-highest-rgb: 54, 52, 59;--mtrl-sys-color-on-surface: #e6e1e5;--mtrl-sys-color-on-surface-rgb: 230, 225, 229;--mtrl-sys-color-on-surface-variant: #cac4d0;--mtrl-sys-color-on-surface-variant-rgb: 202, 196, 208;--mtrl-sys-color-outline: #938f99;--mtrl-sys-color-outline-rgb: 147, 143, 153;--mtrl-sys-color-outline-variant: #444746;--mtrl-sys-color-outline-variant-rgb: 68, 71, 70;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-shadow-rgb: 0, 0, 0;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-scrim-rgb: 0, 0, 0;--mtrl-sys-color-inverse-surface: #e6e1e5;--mtrl-sys-color-inverse-surface-rgb: 230, 225, 229;--mtrl-sys-color-inverse-on-surface: #313033;--mtrl-sys-color-inverse-on-surface-rgb: 49, 48, 51;--mtrl-sys-color-inverse-primary: #6750a4;--mtrl-sys-color-inverse-primary-rgb: 103, 80, 164}[data-theme=baseline]{--mtrl-sys-color-error: #B3261E;--mtrl-sys-color-error-rgb: 179, 38, 30;--mtrl-sys-color-on-error: #FFFFFF;--mtrl-sys-color-on-error-rgb: 255, 255, 255;--mtrl-sys-color-primary: #6750a4;--mtrl-sys-color-primary-rgb: 103, 80, 164;--mtrl-sys-color-on-primary: #ffffff;--mtrl-sys-color-on-primary-rgb: 255, 255, 255;--mtrl-sys-color-primary-container: #eaddff;--mtrl-sys-color-primary-container-rgb: 234, 221, 255;--mtrl-sys-color-on-primary-container: #21005d;--mtrl-sys-color-on-primary-container-rgb: 33, 0, 93;--mtrl-sys-color-secondary: #625b71;--mtrl-sys-color-secondary-rgb: 98, 91, 113;--mtrl-sys-color-on-secondary: #ffffff;--mtrl-sys-color-on-secondary-rgb: 255, 255, 255;--mtrl-sys-color-secondary-container: #e8def8;--mtrl-sys-color-secondary-container-rgb: 232, 222, 248;--mtrl-sys-color-on-secondary-container: #1d192b;--mtrl-sys-color-on-secondary-container-rgb: 29, 25, 43;--mtrl-sys-color-tertiary: #7d5260;--mtrl-sys-color-tertiary-rgb: 125, 82, 96;--mtrl-sys-color-on-tertiary: #ffffff;--mtrl-sys-color-on-tertiary-rgb: 255, 255, 255;--mtrl-sys-color-tertiary-container: #ffd8e4;--mtrl-sys-color-tertiary-container-rgb: 255, 216, 228;--mtrl-sys-color-on-tertiary-container: #31111d;--mtrl-sys-color-on-tertiary-container-rgb: 49, 17, 29;--mtrl-sys-color-surface: #fffbfe;--mtrl-sys-color-surface-rgb: 28, 27, 31;--mtrl-sys-color-surface-dim: #ded8e1;--mtrl-sys-color-surface-dim-rgb: 222, 216, 225;--mtrl-sys-color-surface-bright: #fff8f7;--mtrl-sys-color-surface-bright-rgb: 255, 248, 247;--mtrl-sys-color-surface-container-lowest: #ffffff;--mtrl-sys-color-surface-container-lowest-rgb: 255, 255, 255;--mtrl-sys-color-surface-container-low: #f7f2fa;--mtrl-sys-color-surface-container-low-rgb: 247, 242, 250;--mtrl-sys-color-surface-container: #f3edf7;--mtrl-sys-color-surface-container-rgb: 243, 237, 247;--mtrl-sys-color-surface-container-high: #ece6f0;--mtrl-sys-color-surface-container-high-rgb: 236, 230, 240;--mtrl-sys-color-surface-container-highest: #e6e0e9;--mtrl-sys-color-surface-container-highest-rgb: 230, 224, 233;--mtrl-sys-color-on-surface: #1c1b1f;--mtrl-sys-color-on-surface-rgb: 28, 27, 31;--mtrl-sys-color-on-surface-variant: #49454f;--mtrl-sys-color-on-surface-variant-rgb: 73, 69, 79;--mtrl-sys-color-outline: #79747e;--mtrl-sys-color-outline-rgb: 121, 116, 126;--mtrl-sys-color-outline-variant: #cac4d0;--mtrl-sys-color-outline-variant-rgb: 202, 196, 208;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-shadow-rgb: 0, 0, 0;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-scrim-rgb: 0, 0, 0;--mtrl-sys-color-inverse-surface: #313033;--mtrl-sys-color-inverse-surface-rgb: 49, 48, 51;--mtrl-sys-color-inverse-on-surface: #f4eff4;--mtrl-sys-color-inverse-on-surface-rgb: 244, 239, 244;--mtrl-sys-color-inverse-primary: #d0bcff;--mtrl-sys-color-inverse-primary-rgb: 208, 188, 255;--mtrl-sys-state-hover-state-layer-opacity: 0.08;--mtrl-sys-state-focus-state-layer-opacity: 0.12;--mtrl-sys-state-pressed-state-layer-opacity: 0.12;--mtrl-sys-state-dragged-state-layer-opacity: 0.16}[data-theme=baseline][data-theme-mode=dark]{--mtrl-sys-color-error: #F2B8B5;--mtrl-sys-color-error-rgb: 242, 184, 181;--mtrl-sys-color-on-error: #601410;--mtrl-sys-color-on-error-rgb: 96, 20, 16;--mtrl-sys-color-primary: #d0bcff;--mtrl-sys-color-primary-rgb: 208, 188, 255;--mtrl-sys-color-on-primary: #381e72;--mtrl-sys-color-on-primary-rgb: 56, 30, 114;--mtrl-sys-color-primary-container: #4f378b;--mtrl-sys-color-primary-container-rgb: 79, 55, 139;--mtrl-sys-color-on-primary-container: #eaddff;--mtrl-sys-color-on-primary-container-rgb: 234, 221, 255;--mtrl-sys-color-secondary: #ccc2dc;--mtrl-sys-color-secondary-rgb: 204, 194, 220;--mtrl-sys-color-on-secondary: #332d41;--mtrl-sys-color-on-secondary-rgb: 51, 45, 65;--mtrl-sys-color-secondary-container: #4a4458;--mtrl-sys-color-secondary-container-rgb: 74, 68, 88;--mtrl-sys-color-on-secondary-container: #e8def8;--mtrl-sys-color-on-secondary-container-rgb: 232, 222, 248;--mtrl-sys-color-tertiary: #efb8c8;--mtrl-sys-color-tertiary-rgb: 239, 184, 200;--mtrl-sys-color-on-tertiary: #492532;--mtrl-sys-color-on-tertiary-rgb: 73, 37, 50;--mtrl-sys-color-tertiary-container: #633b48;--mtrl-sys-color-tertiary-container-rgb: 99, 59, 72;--mtrl-sys-color-on-tertiary-container: #ffd8e4;--mtrl-sys-color-on-tertiary-container-rgb: 255, 216, 228;--mtrl-sys-color-surface: #1c1b1f;--mtrl-sys-color-surface-rgb: 28, 27, 31;--mtrl-sys-color-surface-dim: #141218;--mtrl-sys-color-surface-dim-rgb: 20, 18, 24;--mtrl-sys-color-surface-bright: #3b383d;--mtrl-sys-color-surface-bright-rgb: 59, 56, 61;--mtrl-sys-color-surface-container-lowest: #0f0d13;--mtrl-sys-color-surface-container-lowest-rgb: 15, 13, 19;--mtrl-sys-color-surface-container-low: #1d1b20;--mtrl-sys-color-surface-container-low-rgb: 29, 27, 32;--mtrl-sys-color-surface-container: #211f26;--mtrl-sys-color-surface-container-rgb: 33, 31, 38;--mtrl-sys-color-surface-container-high: #2b2930;--mtrl-sys-color-surface-container-high-rgb: 43, 41, 48;--mtrl-sys-color-surface-container-highest: #36343b;--mtrl-sys-color-surface-container-highest-rgb: 54, 52, 59;--mtrl-sys-color-on-surface: #e6e1e5;--mtrl-sys-color-on-surface-rgb: 230, 225, 229;--mtrl-sys-color-on-surface-variant: #cac4d0;--mtrl-sys-color-on-surface-variant-rgb: 202, 196, 208;--mtrl-sys-color-outline: #938f99;--mtrl-sys-color-outline-rgb: 147, 143, 153;--mtrl-sys-color-outline-variant: #444746;--mtrl-sys-color-outline-variant-rgb: 68, 71, 70;--mtrl-sys-color-shadow: #000000;--mtrl-sys-color-shadow-rgb: 0, 0, 0;--mtrl-sys-color-scrim: #000000;--mtrl-sys-color-scrim-rgb: 0, 0, 0;--mtrl-sys-color-inverse-surface: #e6e1e5;--mtrl-sys-color-inverse-surface-rgb: 230, 225, 229;--mtrl-sys-color-inverse-on-surface: #313033;--mtrl-sys-color-inverse-on-surface-rgb: 49, 48, 51;--mtrl-sys-color-inverse-primary: #6750a4;--mtrl-sys-color-inverse-primary-rgb: 103, 80, 164}:root{--mtrl-ref-typeface-brand: Roboto, sans-serif;--mtrl-ref-typeface-plain: Roboto, sans-serif;--mtrl-sys-shape-corner-none: 0;--mtrl-sys-shape-corner-extra-tiny: 1px;--mtrl-sys-shape-corner-tiny: 2px;--mtrl-sys-shape-corner-extra-small: 4px;--mtrl-sys-shape-corner-small: 8px;--mtrl-sys-shape-corner-medium: 12px;--mtrl-sys-shape-corner-large: 16px;--mtrl-sys-shape-corner-large-increased: 20px;--mtrl-sys-shape-corner-extra-large: 28px;--mtrl-sys-shape-corner-full: 9999px;--mtrl-sys-shape-corner-pill: 100px;--mtrl-sys-typescale-display-large-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-display-large-font-size: 57px;--mtrl-sys-typescale-display-large-line-height: 64px;--mtrl-sys-typescale-display-large-letter-spacing: -0.25px;--mtrl-sys-typescale-display-large-font-weight: 400;--mtrl-sys-typescale-display-medium-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-display-medium-font-size: 45px;--mtrl-sys-typescale-display-medium-line-height: 52px;--mtrl-sys-typescale-display-medium-letter-spacing: 0;--mtrl-sys-typescale-display-medium-font-weight: 400;--mtrl-sys-typescale-display-small-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-display-small-font-size: 36px;--mtrl-sys-typescale-display-small-line-height: 44px;--mtrl-sys-typescale-display-small-letter-spacing: 0;--mtrl-sys-typescale-display-small-font-weight: 400;--mtrl-sys-typescale-headline-large-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-headline-large-font-size: 32px;--mtrl-sys-typescale-headline-large-line-height: 40px;--mtrl-sys-typescale-headline-large-letter-spacing: 0;--mtrl-sys-typescale-headline-large-font-weight: 400;--mtrl-sys-typescale-headline-medium-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-headline-medium-font-size: 28px;--mtrl-sys-typescale-headline-medium-line-height: 36px;--mtrl-sys-typescale-headline-medium-letter-spacing: 0;--mtrl-sys-typescale-headline-medium-font-weight: 400;--mtrl-sys-typescale-headline-small-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-headline-small-font-size: 24px;--mtrl-sys-typescale-headline-small-line-height: 32px;--mtrl-sys-typescale-headline-small-letter-spacing: 0;--mtrl-sys-typescale-headline-small-font-weight: 400;--mtrl-sys-typescale-title-large-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-title-large-font-size: 22px;--mtrl-sys-typescale-title-large-line-height: 28px;--mtrl-sys-typescale-title-large-letter-spacing: 0;--mtrl-sys-typescale-title-large-font-weight: 400;--mtrl-sys-typescale-title-medium-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-title-medium-font-size: 16px;--mtrl-sys-typescale-title-medium-line-height: 24px;--mtrl-sys-typescale-title-medium-letter-spacing: 0.15px;--mtrl-sys-typescale-title-medium-font-weight: 500;--mtrl-sys-typescale-title-small-font: var(--mtrl-ref-typeface-brand);--mtrl-sys-typescale-title-small-font-size: 14px;--mtrl-sys-typescale-title-small-line-height: 20px;--mtrl-sys-typescale-title-small-letter-spacing: 0.1px;--mtrl-sys-typescale-title-small-font-weight: 500;--mtrl-sys-typescale-body-large-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-body-large-font-size: 16px;--mtrl-sys-typescale-body-large-line-height: 24px;--mtrl-sys-typescale-body-large-letter-spacing: 0.5px;--mtrl-sys-typescale-body-large-font-weight: 400;--mtrl-sys-typescale-body-medium-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-body-medium-font-size: 14px;--mtrl-sys-typescale-body-medium-line-height: 20px;--mtrl-sys-typescale-body-medium-letter-spacing: 0.25px;--mtrl-sys-typescale-body-medium-font-weight: 400;--mtrl-sys-typescale-body-small-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-body-small-font-size: 12px;--mtrl-sys-typescale-body-small-line-height: 16px;--mtrl-sys-typescale-body-small-letter-spacing: 0.4px;--mtrl-sys-typescale-body-small-font-weight: 400;--mtrl-sys-typescale-label-large-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-label-large-font-size: 14px;--mtrl-sys-typescale-label-large-line-height: 20px;--mtrl-sys-typescale-label-large-letter-spacing: 0.1px;--mtrl-sys-typescale-label-large-font-weight: 500;--mtrl-sys-typescale-label-medium-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-label-medium-font-size: 12px;--mtrl-sys-typescale-label-medium-line-height: 16px;--mtrl-sys-typescale-label-medium-letter-spacing: 0.5px;--mtrl-sys-typescale-label-medium-font-weight: 500;--mtrl-sys-typescale-label-small-font: var(--mtrl-ref-typeface-plain);--mtrl-sys-typescale-label-small-font-size: 11px;--mtrl-sys-typescale-label-small-line-height: 16px;--mtrl-sys-typescale-label-small-letter-spacing: 0.5px;--mtrl-sys-typescale-label-small-font-weight: 500}*,*::before,*::after{box-sizing:border-box}html,body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd{margin:0;padding:0}body{min-height:100vh;text-rendering:optimizeSpeed;line-height:1.5}img,picture{max-width:100%;display:block}input,button,textarea,select{font:inherit}@media(prefers-reduced-motion: reduce){html:focus-within{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-property:opacity,color,background-color,border-color,outline-color,box-shadow,visibility !important;scroll-behavior:auto !important}}button{background:rgba(0,0,0,0);border:none;cursor:pointer;padding:0}ul,ol{list-style:none;margin:0;padding:0}a{text-decoration:none;color:inherit}table{border-collapse:collapse;border-spacing:0}.mtrl-display-large{font-family:"Roboto",sans-serif;font-size:57px;line-height:64px;letter-spacing:-0.25px;font-weight:400}.mtrl-display-medium{font-family:"Roboto",sans-serif;font-size:45px;line-height:52px;letter-spacing:0;font-weight:400}.mtrl-display-small{font-family:"Roboto",sans-serif;font-size:36px;line-height:44px;letter-spacing:0;font-weight:400}.mtrl-headline-large{font-family:"Roboto",sans-serif;font-size:32px;line-height:40px;letter-spacing:0;font-weight:400}.mtrl-headline-medium{font-family:"Roboto",sans-serif;font-size:28px;line-height:36px;letter-spacing:0;font-weight:400}.mtrl-headline-small{font-family:"Roboto",sans-serif;font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}.mtrl-title-large{font-family:"Roboto",sans-serif;font-size:22px;line-height:28px;letter-spacing:0;font-weight:400}.mtrl-title-medium{font-family:"Roboto",sans-serif;font-size:16px;line-height:24px;letter-spacing:.15px;font-weight:500}.mtrl-title-small{font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}.mtrl-body-large{font-family:"Roboto",sans-serif;font-size:16px;line-height:24px;letter-spacing:.5px;font-weight:400}.mtrl-body-medium{font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400}.mtrl-body-small{font-family:"Roboto",sans-serif;font-size:12px;line-height:16px;letter-spacing:.4px;font-weight:400}.mtrl-label-large{font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500}.mtrl-label-medium{font-family:"Roboto",sans-serif;font-size:12px;line-height:16px;letter-spacing:.5px;font-weight:500}.mtrl-label-small{font-family:"Roboto",sans-serif;font-size:11px;line-height:16px;letter-spacing:.5px;font-weight:500}.mtrl-text-center{text-align:center}.mtrl-text-left{text-align:left}.mtrl-text-right{text-align:right}.mtrl-font-thin{font-weight:100}.mtrl-font-light{font-weight:300}.mtrl-font-regular{font-weight:400}.mtrl-font-medium{font-weight:500}.mtrl-font-bold{font-weight:700}.mtrl-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mtrl-truncate-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mtrl-truncate-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}h1{font-family:"Roboto",sans-serif;font-size:32px;line-height:40px;letter-spacing:0;font-weight:400;margin-bottom:.5em}h2{font-family:"Roboto",sans-serif;font-size:28px;line-height:36px;letter-spacing:0;font-weight:400;margin-bottom:.5em}h3{font-family:"Roboto",sans-serif;font-size:24px;line-height:32px;letter-spacing:0;font-weight:400;margin-bottom:.5em}h4{font-family:"Roboto",sans-serif;font-size:22px;line-height:28px;letter-spacing:0;font-weight:400;margin-bottom:.5em}h5{font-family:"Roboto",sans-serif;font-size:16px;line-height:24px;letter-spacing:.15px;font-weight:500;margin-bottom:.5em}h6{font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.1px;font-weight:500;margin-bottom:.5em}p{font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400;margin-bottom:1em}.mtrl-ripple{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;border-radius:inherit;pointer-events:none;z-index:0}.mtrl-ripple-wave{position:absolute;border-radius:50%;background-color:currentColor;opacity:0;transform:scale(0);pointer-events:none;will-change:transform,opacity;transition:opacity .4s cubic-bezier(0.4, 0, 0.2, 1)}.mtrl-ripple-wave.active{animation:mtrl-ripple-expand .4s cubic-bezier(0.4, 0, 0.2, 1) both;opacity:.08}.mtrl-ripple-wave.fade-out{opacity:0}@keyframes mtrl-ripple-expand{from{transform:scale(0)}to{transform:scale(1)}}@media(prefers-reduced-motion: reduce){.mtrl-ripple-wave.active{animation:none;transform:scale(1)}.mtrl-ripple-wave{transition:none}}[data-ripple]{position:relative;overflow:hidden}[data-ripple]::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;z-index:0;pointer-events:none}[data-ripple][data-ripple=light]::after{background-color:hsla(0,0%,100%,.3)}[data-ripple][data-ripple=dark]::after{background-color:rgba(0,0,0,.1)}[data-ripple]>*{position:relative;z-index:1}body{margin:0;padding:0;background-color:var(--mtrl-sys-color-surface);color:var(--mtrl-sys-color-on-surface);font-family:var(--mtrl-sys-typescale-body-medium-font);font-size:var(--mtrl-sys-typescale-body-medium-font-size);line-height:var(--mtrl-sys-typescale-body-medium-line-height);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color 100ms cubic-bezier(0.2, 0, 0, 1),color 100ms cubic-bezier(0.2, 0, 0, 1)}html{scroll-behavior:smooth}@media(prefers-reduced-motion: reduce){html{scroll-behavior:auto}}*,*::before,*::after{box-sizing:border-box}}
@@ -1,2 +1,2 @@
1
- /*! mtrl v0.9.5 | MIT */
1
+ /*! mtrl v0.9.8 | MIT */
2
2
  @layer mtrl.base,mtrl.utilities,mtrl.textfield,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.extended-fab,mtrl.segmented-button,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-rail,mtrl.navigation,mtrl.list,mtrl.tooltip;@layer mtrl.bottom-app-bar{.mtrl-bottom-app-bar{position:absolute;bottom:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;height:80px;padding:12px 16px 12px 4px;background-color:var(--mtrl-sys-color-surface-container);box-shadow:0px 1px 2px rgba(0,0,0,.3),0px 2px 6px 2px rgba(0,0,0,.15);border-top-left-radius:var(--mtrl-sys-shape-medium);border-top-right-radius:var(--mtrl-sys-shape-medium);transition:transform .3s ease-in-out}.mtrl-bottom-app-bar-actions{display:flex;align-items:center;gap:4px;height:100%}.mtrl-bottom-app-bar-actions>*{flex-shrink:0}.mtrl-bottom-app-bar-fab-container{display:flex;align-items:center;justify-content:center;margin-left:auto}.mtrl-bottom-app-bar--with-fab{height:72px}.mtrl-bottom-app-bar--fab-center .mtrl-bottom-app-bar-fab-container{position:absolute;left:50%;transform:translateX(-50%)}.mtrl-bottom-app-bar--hidden{transform:translateY(100%)}[dir=rtl] .mtrl-bottom-app-bar{padding:12px 4px 12px 16px}[dir=rtl] .mtrl-bottom-app-bar-actions{flex-direction:row-reverse}[dir=rtl] .mtrl-bottom-app-bar-fab-container{margin-right:auto;margin-left:initial}@media(prefers-reduced-motion: reduce){.mtrl-bottom-app-bar{transition-duration:.01ms}}@media(forced-colors: active){.mtrl-bottom-app-bar{border-top:1px solid currentColor}}}
@@ -1,2 +1,2 @@
1
- /*! mtrl v0.9.5 | MIT */
2
- @layer mtrl.base,mtrl.utilities,mtrl.textfield,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.extended-fab,mtrl.segmented-button,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-rail,mtrl.navigation,mtrl.list,mtrl.tooltip;@layer mtrl.bottom-sheet{.mtrl-bottom-sheet{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}.mtrl-bottom-sheet--scrim-visible,.mtrl-bottom-sheet--partial,.mtrl-bottom-sheet--expanded{pointer-events:auto}.mtrl-bottom-sheet-scrim{position:absolute;inset:0;background-color:color-mix(in srgb, var(--mtrl-sys-color-scrim) 32%, transparent);opacity:0;visibility:hidden;transition:opacity 400ms cubic-bezier(0.2, 0, 0, 1),visibility 400ms cubic-bezier(0.2, 0, 0, 1)}.mtrl-bottom-sheet-container{position:relative;width:100%;max-width:640px;max-height:100%;display:flex;flex-direction:column;box-sizing:border-box;pointer-events:auto;background-color:var(--mtrl-sys-color-surface-container-low);color:var(--mtrl-sys-color-on-surface);border-start-start-radius:28px;border-start-end-radius:28px;box-shadow:0px 1px 2px rgba(0,0,0,.3),0px 1px 3px 1px rgba(0,0,0,.15);transform:translateY(100%);transition:transform 500ms cubic-bezier(0.2, 0, 0, 1)}.mtrl-bottom-sheet-container:focus{outline:none}.mtrl-bottom-sheet-container:focus-visible{outline:3px solid var(--mtrl-sys-color-secondary);outline-offset:-3px}.mtrl-bottom-sheet-handle{flex:0 0 auto;width:32px;height:4px;margin:16px auto;border-radius:28px;background-color:var(--mtrl-sys-color-on-surface-variant);cursor:grab;touch-action:none}.mtrl-bottom-sheet-handle:active{cursor:grabbing}.mtrl-bottom-sheet-header{flex:0 0 auto;padding:0 24px 16px}.mtrl-bottom-sheet-title{margin:0;color:var(--mtrl-sys-color-on-surface);font-family:"Roboto",sans-serif;font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}.mtrl-bottom-sheet-content{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 24px 24px;font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400;color:var(--mtrl-sys-color-on-surface-variant)}.mtrl-bottom-sheet--partial .mtrl-bottom-sheet-container{transform:translateY(0);max-height:50%}.mtrl-bottom-sheet--partial .mtrl-bottom-sheet-scrim{opacity:1;visibility:visible}.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet-container{transform:translateY(0);max-height:100%}.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet-container:where(.mtrl-bottom-sheet--full-height *){border-start-start-radius:0;border-start-end-radius:0}.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet-scrim{opacity:1;visibility:visible}.mtrl-bottom-sheet--standard{pointer-events:none}.mtrl-bottom-sheet--standard .mtrl-bottom-sheet-container{pointer-events:auto}@media(prefers-reduced-motion: reduce){.mtrl-bottom-sheet .mtrl-bottom-sheet-container,.mtrl-bottom-sheet .mtrl-bottom-sheet-scrim{transition:none}}}
1
+ /*! mtrl v0.9.8 | MIT */
2
+ @layer mtrl.base,mtrl.utilities,mtrl.textfield,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.extended-fab,mtrl.segmented-button,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-rail,mtrl.navigation,mtrl.list,mtrl.tooltip;@layer mtrl.bottom-sheet{.mtrl-bottom-sheet{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}.mtrl-bottom-sheet--scrim-visible,.mtrl-bottom-sheet--partial,.mtrl-bottom-sheet--expanded{pointer-events:auto}.mtrl-bottom-sheet-scrim{position:absolute;inset:0;background-color:color-mix(in srgb, var(--mtrl-sys-color-scrim) 32%, transparent);opacity:0;visibility:hidden;transition:opacity 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),visibility 0s linear 250ms}.mtrl-bottom-sheet-container{position:relative;width:100%;max-width:640px;max-height:100%;display:flex;flex-direction:column;box-sizing:border-box;pointer-events:auto;background-color:var(--mtrl-sys-color-surface-container-low);color:var(--mtrl-sys-color-on-surface);border-start-start-radius:28px;border-start-end-radius:28px;box-shadow:0px 1px 2px rgba(0,0,0,.3),0px 1px 3px 1px rgba(0,0,0,.15),0 32px 0 0 var(--mtrl-sys-color-surface-container-low);transform:translateY(100%);transition:transform 175ms linear(0, 0.075, 0.227, 0.39, 0.537, 0.657, 0.751, 0.822, 0.874, 0.912, 0.939, 0.958, 0.971, 0.98, 0.987, 0.991, 0.994, 0.996, 0.997, 0.998, 0.999, 0.999, 0.999, 1, 1)}.mtrl-bottom-sheet-container:focus{outline:none}.mtrl-bottom-sheet-container:focus-visible{outline:3px solid var(--mtrl-sys-color-secondary);outline-offset:-3px}.mtrl-bottom-sheet-handle{flex:0 0 auto;width:32px;height:4px;margin:16px auto;border-radius:28px;background-color:var(--mtrl-sys-color-on-surface-variant);cursor:grab;touch-action:none}.mtrl-bottom-sheet-handle:active{cursor:grabbing}.mtrl-bottom-sheet-header{flex:0 0 auto;padding:0 24px 16px}.mtrl-bottom-sheet-title{margin:0;color:var(--mtrl-sys-color-on-surface);font-family:"Roboto",sans-serif;font-size:24px;line-height:32px;letter-spacing:0;font-weight:400}.mtrl-bottom-sheet-content{flex:1 1 auto;min-height:0;overflow-y:auto;padding:0 24px 24px;font-family:"Roboto",sans-serif;font-size:14px;line-height:20px;letter-spacing:.25px;font-weight:400;color:var(--mtrl-sys-color-on-surface-variant)}.mtrl-bottom-sheet--partial .mtrl-bottom-sheet-container{transform:translateY(0);max-height:50%;transition:transform 450ms linear(0, 0.055, 0.18, 0.332, 0.483, 0.619, 0.733, 0.823, 0.891, 0.94, 0.973, 0.994, 1.007, 1.013, 1.015, 1.015, 1.013, 1.011, 1.009, 1.006, 1.005, 1.003, 1.002, 1.001, 1)}.mtrl-bottom-sheet--partial .mtrl-bottom-sheet-scrim{opacity:1;visibility:visible;transition:opacity 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),visibility 0s}.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet-container{transform:translateY(0);max-height:100%;transition:transform 450ms linear(0, 0.055, 0.18, 0.332, 0.483, 0.619, 0.733, 0.823, 0.891, 0.94, 0.973, 0.994, 1.007, 1.013, 1.015, 1.015, 1.013, 1.011, 1.009, 1.006, 1.005, 1.003, 1.002, 1.001, 1)}.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet-container:where(.mtrl-bottom-sheet--full-height *){border-start-start-radius:0;border-start-end-radius:0}.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet-scrim{opacity:1;visibility:visible;transition:opacity 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),visibility 0s}.mtrl-bottom-sheet--standard{pointer-events:none}.mtrl-bottom-sheet--standard .mtrl-bottom-sheet-container{pointer-events:auto}@media(prefers-reduced-motion: reduce){.mtrl-bottom-sheet .mtrl-bottom-sheet-container,.mtrl-bottom-sheet .mtrl-bottom-sheet-scrim,.mtrl-bottom-sheet--partial .mtrl-bottom-sheet-container,.mtrl-bottom-sheet--partial .mtrl-bottom-sheet-scrim,.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet-container,.mtrl-bottom-sheet--expanded .mtrl-bottom-sheet-scrim{transition:none}}}
@@ -1,2 +1,2 @@
1
- /*! mtrl v0.9.5 | MIT */
1
+ /*! mtrl v0.9.8 | MIT */
2
2
  @layer mtrl.base,mtrl.utilities,mtrl.textfield,mtrl.badge,mtrl.bottom-app-bar,mtrl.bottom-sheet,mtrl.side-sheet,mtrl.menu,mtrl.slider,mtrl.switch,mtrl.select,mtrl.progress,mtrl.button,mtrl.tabs,mtrl.top-app-bar,mtrl.icon-button,mtrl.button-group,mtrl.fab,mtrl.extended-fab,mtrl.segmented-button,mtrl.card,mtrl.carousel,mtrl.checkbox,mtrl.chips,mtrl.divider,mtrl.dialog,mtrl.drawer,mtrl.loading-indicator,mtrl.split-button,mtrl.radios,mtrl.timepicker,mtrl.search,mtrl.snackbar,mtrl.navigation-rail,mtrl.navigation,mtrl.list,mtrl.tooltip;@layer mtrl.button-group{.mtrl-button-group{position:relative;display:inline-flex;flex-direction:row;align-items:center;gap:var(--mtrl-button-group-gap, 12px);--mtrl-button-group-height: 40px;--mtrl-button-group-icon: 20px;--mtrl-button-group-gap: 12px;--mtrl-button-group-inner-corner: 8px;--mtrl-button-group-pressed-corner: 4px;--mtrl-button-group-radius: 20px}.mtrl-button-group--vertical{flex-direction:column;align-items:stretch}.mtrl-button-group>.mtrl-button,.mtrl-button-group>.mtrl-icon-button{margin:0;flex-shrink:0;height:var(--mtrl-button-group-height);transition:background-color 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),color 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),box-shadow 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),border-color 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),border-radius 425ms linear(0, 0.102, 0.323, 0.57, 0.784, 0.942, 1.039, 1.085, 1.094, 1.082, 1.06, 1.037, 1.018, 1.004, 0.995, 0.992, 0.991, 0.992, 0.995, 0.997, 0.999, 1, 1.001, 1.001, 1),width 425ms linear(0, 0.102, 0.323, 0.57, 0.784, 0.942, 1.039, 1.085, 1.094, 1.082, 1.06, 1.037, 1.018, 1.004, 0.995, 0.992, 0.991, 0.992, 0.995, 0.997, 0.999, 1, 1.001, 1.001, 1),padding 425ms linear(0, 0.102, 0.323, 0.57, 0.784, 0.942, 1.039, 1.085, 1.094, 1.082, 1.06, 1.037, 1.018, 1.004, 0.995, 0.992, 0.991, 0.992, 0.995, 0.997, 0.999, 1, 1.001, 1.001, 1),gap 425ms linear(0, 0.102, 0.323, 0.57, 0.784, 0.942, 1.039, 1.085, 1.094, 1.082, 1.06, 1.037, 1.018, 1.004, 0.995, 0.992, 0.991, 0.992, 0.995, 0.997, 0.999, 1, 1.001, 1.001, 1)}.mtrl-button-group>.mtrl-button:active,.mtrl-button-group>.mtrl-icon-button:active{transition:background-color 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),color 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),box-shadow 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),border-color 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1),border-radius 450ms linear(0, 0.055, 0.18, 0.332, 0.483, 0.619, 0.733, 0.823, 0.891, 0.94, 0.973, 0.994, 1.007, 1.013, 1.015, 1.015, 1.013, 1.011, 1.009, 1.006, 1.005, 1.003, 1.002, 1.001, 1),width 425ms linear(0, 0.102, 0.323, 0.57, 0.784, 0.942, 1.039, 1.085, 1.094, 1.082, 1.06, 1.037, 1.018, 1.004, 0.995, 0.992, 0.991, 0.992, 0.995, 0.997, 0.999, 1, 1.001, 1.001, 1),padding 425ms linear(0, 0.102, 0.323, 0.57, 0.784, 0.942, 1.039, 1.085, 1.094, 1.082, 1.06, 1.037, 1.018, 1.004, 0.995, 0.992, 0.991, 0.992, 0.995, 0.997, 0.999, 1, 1.001, 1.001, 1),gap 425ms linear(0, 0.102, 0.323, 0.57, 0.784, 0.942, 1.039, 1.085, 1.094, 1.082, 1.06, 1.037, 1.018, 1.004, 0.995, 0.992, 0.991, 0.992, 0.995, 0.997, 0.999, 1, 1.001, 1.001, 1)}.mtrl-button-group>.mtrl-icon-button{width:var(--mtrl-button-group-height)}.mtrl-button-group--equal-width>.mtrl-button{flex:1 1 0;justify-content:center}.mtrl-button-group--disabled{pointer-events:none}.mtrl-button-group--connected>.mtrl-button,.mtrl-button-group--connected>.mtrl-icon-button{--mtrl-button-shape:var(--mtrl-button-group-inner-corner);--mtrl-button-shape-pressed:var(--mtrl-button-group-pressed-corner);--mtrl-button-shape-selected:var(--mtrl-button-group-radius)}.mtrl-button-group--connected>.mtrl-button-group__button--first{--mtrl-button-shape:var(--mtrl-button-group-radius) var(--mtrl-button-group-inner-corner) var(--mtrl-button-group-inner-corner) var(--mtrl-button-group-radius);--mtrl-button-shape-pressed:var(--mtrl-button-group-radius) var(--mtrl-button-group-pressed-corner) var(--mtrl-button-group-pressed-corner) var(--mtrl-button-group-radius)}.mtrl-button-group--connected>.mtrl-button-group__button--last{--mtrl-button-shape:var(--mtrl-button-group-inner-corner) var(--mtrl-button-group-radius) var(--mtrl-button-group-radius) var(--mtrl-button-group-inner-corner);--mtrl-button-shape-pressed:var(--mtrl-button-group-pressed-corner) var(--mtrl-button-group-radius) var(--mtrl-button-group-radius) var(--mtrl-button-group-pressed-corner)}.mtrl-button-group--connected>.mtrl-button-group__button--single{--mtrl-button-shape:var(--mtrl-button-group-radius);--mtrl-button-shape-pressed:var(--mtrl-button-group-radius)}.mtrl-button-group--connected.mtrl-button-group--vertical>.mtrl-button-group__button--first{--mtrl-button-shape:var(--mtrl-button-group-radius) var(--mtrl-button-group-radius) var(--mtrl-button-group-inner-corner) var(--mtrl-button-group-inner-corner);--mtrl-button-shape-pressed:var(--mtrl-button-group-radius) var(--mtrl-button-group-radius) var(--mtrl-button-group-pressed-corner) var(--mtrl-button-group-pressed-corner)}.mtrl-button-group--connected.mtrl-button-group--vertical>.mtrl-button-group__button--last{--mtrl-button-shape:var(--mtrl-button-group-inner-corner) var(--mtrl-button-group-inner-corner) var(--mtrl-button-group-radius) var(--mtrl-button-group-radius);--mtrl-button-shape-pressed:var(--mtrl-button-group-pressed-corner) var(--mtrl-button-group-pressed-corner) var(--mtrl-button-group-radius) var(--mtrl-button-group-radius)}.mtrl-button-group--connected.mtrl-button-group--square>.mtrl-button-group__button--first,.mtrl-button-group--connected.mtrl-button-group--square>.mtrl-button-group__button--last,.mtrl-button-group--connected.mtrl-button-group--square>.mtrl-button-group__button--single{--mtrl-button-shape:var(--mtrl-button-group-inner-corner);--mtrl-button-shape-pressed:var(--mtrl-button-group-pressed-corner)}.mtrl-button-group--connected.mtrl-button-group--size-xs>.mtrl-button,.mtrl-button-group--connected.mtrl-button-group--size-xs>.mtrl-icon-button,.mtrl-button-group--connected.mtrl-button-group--size-s>.mtrl-button,.mtrl-button-group--connected.mtrl-button-group--size-s>.mtrl-icon-button{min-width:48px}.mtrl-button-group--labels-selected>.mtrl-button{gap:0;min-width:var(--mtrl-button-group-height);padding:0 calc((var(--mtrl-button-group-height) - var(--mtrl-button-group-icon))/2)}.mtrl-button-group--labels-selected>.mtrl-button .mtrl-button-text{display:inline-block;max-width:0;opacity:0;overflow:hidden;white-space:nowrap;text-overflow:clip;transition:max-width 425ms linear(0, 0.102, 0.323, 0.57, 0.784, 0.942, 1.039, 1.085, 1.094, 1.082, 1.06, 1.037, 1.018, 1.004, 0.995, 0.992, 0.991, 0.992, 0.995, 0.997, 0.999, 1, 1.001, 1.001, 1),opacity 250ms linear(0, 0.066, 0.203, 0.355, 0.496, 0.616, 0.713, 0.788, 0.845, 0.888, 0.92, 0.943, 0.96, 0.971, 0.98, 0.986, 0.99, 0.993, 0.995, 0.997, 0.998, 0.998, 0.999, 0.999, 1)}.mtrl-button-group--labels-selected>.mtrl-button-group__button--selected{gap:8px;padding:0 16px}.mtrl-button-group--labels-selected>.mtrl-button-group__button--selected .mtrl-button-text{max-width:12em;opacity:1}}