m3-svelte 3.6.0 → 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/package/buttons/Button.svelte +142 -78
  2. package/package/buttons/Button.svelte.d.ts +17 -34
  3. package/package/buttons/ConnectedButtons.svelte +26 -0
  4. package/package/buttons/ConnectedButtons.svelte.d.ts +8 -0
  5. package/package/buttons/FAB.svelte +30 -15
  6. package/package/buttons/FAB.svelte.d.ts +14 -25
  7. package/package/containers/BottomSheet.svelte +33 -27
  8. package/package/containers/BottomSheet.svelte.d.ts +7 -21
  9. package/package/containers/Card.svelte +45 -14
  10. package/package/containers/Card.svelte.d.ts +10 -30
  11. package/package/containers/Dialog.svelte +46 -32
  12. package/package/containers/Dialog.svelte.d.ts +9 -34
  13. package/package/containers/ListItem.svelte +78 -14
  14. package/package/containers/ListItem.svelte.d.ts +14 -25
  15. package/package/containers/Menu.svelte +6 -3
  16. package/package/containers/Menu.svelte.d.ts +6 -28
  17. package/package/containers/MenuItem.svelte +15 -5
  18. package/package/containers/MenuItem.svelte.d.ts +7 -29
  19. package/package/containers/Snackbar.svelte +35 -37
  20. package/package/containers/Snackbar.svelte.d.ts +7 -22
  21. package/package/containers/SnackbarItem.svelte +6 -6
  22. package/package/containers/SnackbarItem.svelte.d.ts +6 -29
  23. package/package/containers/StandardSideSheet.svelte +14 -8
  24. package/package/containers/StandardSideSheet.svelte.d.ts +7 -30
  25. package/package/forms/Checkbox.svelte +19 -4
  26. package/package/forms/Checkbox.svelte.d.ts +6 -29
  27. package/package/forms/Chip.svelte +41 -29
  28. package/package/forms/Chip.svelte.d.ts +18 -41
  29. package/package/forms/CircularProgress.svelte +4 -6
  30. package/package/forms/CircularProgress.svelte.d.ts +4 -20
  31. package/package/forms/CircularProgressIndeterminate.svelte +3 -4
  32. package/package/forms/CircularProgressIndeterminate.svelte.d.ts +2 -20
  33. package/package/forms/DatePickerDocked.svelte +52 -35
  34. package/package/forms/DatePickerDocked.svelte.d.ts +6 -22
  35. package/package/forms/LinearProgress.svelte +10 -5
  36. package/package/forms/LinearProgress.svelte.d.ts +4 -20
  37. package/package/forms/LinearProgressIndeterminate.svelte +4 -3
  38. package/package/forms/LinearProgressIndeterminate.svelte.d.ts +2 -20
  39. package/package/forms/RadioAnim1.svelte +10 -4
  40. package/package/forms/RadioAnim1.svelte.d.ts +6 -29
  41. package/package/forms/RadioAnim2.svelte +10 -4
  42. package/package/forms/RadioAnim2.svelte.d.ts +6 -29
  43. package/package/forms/RadioAnim3.svelte +10 -4
  44. package/package/forms/RadioAnim3.svelte.d.ts +6 -29
  45. package/package/forms/Slider.svelte +32 -26
  46. package/package/forms/Slider.svelte.d.ts +5 -21
  47. package/package/forms/SliderTicks.svelte +40 -33
  48. package/package/forms/SliderTicks.svelte.d.ts +5 -21
  49. package/package/forms/Switch.svelte +23 -21
  50. package/package/forms/Switch.svelte.d.ts +5 -22
  51. package/package/forms/TextField.svelte +36 -19
  52. package/package/forms/TextField.svelte.d.ts +14 -27
  53. package/package/forms/TextFieldMultiline.svelte +21 -21
  54. package/package/forms/TextFieldMultiline.svelte.d.ts +6 -23
  55. package/package/forms/TextFieldOutlined.svelte +36 -18
  56. package/package/forms/TextFieldOutlined.svelte.d.ts +14 -26
  57. package/package/forms/TextFieldOutlinedMultiline.svelte +21 -21
  58. package/package/forms/TextFieldOutlinedMultiline.svelte.d.ts +6 -23
  59. package/package/forms/_picker/Actions.svelte +16 -18
  60. package/package/forms/_picker/Actions.svelte.d.ts +7 -22
  61. package/package/forms/_picker/CalendarPicker.svelte +14 -4
  62. package/package/forms/_picker/CalendarPicker.svelte.d.ts +4 -18
  63. package/package/forms/_picker/FocusPicker.svelte +8 -9
  64. package/package/forms/_picker/FocusPicker.svelte.d.ts +5 -21
  65. package/package/forms/_picker/Header.svelte +20 -9
  66. package/package/forms/_picker/Header.svelte.d.ts +4 -18
  67. package/package/forms/_picker/Item.svelte +15 -6
  68. package/package/forms/_picker/Item.svelte.d.ts +8 -23
  69. package/package/index.d.ts +3 -9
  70. package/package/index.js +1 -8
  71. package/package/misc/Layer.svelte +7 -3
  72. package/package/misc/Layer.svelte.d.ts +5 -17
  73. package/package/misc/StyleFromScheme.svelte +6 -2
  74. package/package/misc/StyleFromScheme.svelte.d.ts +5 -19
  75. package/package/misc/_icon.svelte +12 -5
  76. package/package/misc/_icon.svelte.d.ts +5 -19
  77. package/package/misc/_ripple.svelte +11 -3
  78. package/package/misc/_ripple.svelte.d.ts +5 -17
  79. package/package/misc/_ripplesimple.svelte +4 -0
  80. package/package/misc/_ripplesimple.svelte.d.ts +5 -25
  81. package/package/misc/_styling.svelte +7 -3
  82. package/package/misc/_styling.svelte.d.ts +5 -19
  83. package/package/misc/animation.js +1 -5
  84. package/package/misc/easing.js +1 -28
  85. package/package/misc/recommended-styles.css +2 -2
  86. package/package/misc/styles.css +135 -107
  87. package/package/misc/utils.d.ts +1 -0
  88. package/package/misc/utils.js +5 -0
  89. package/package/nav/NavDrawer.svelte +9 -5
  90. package/package/nav/NavDrawer.svelte.d.ts +6 -30
  91. package/package/nav/NavDrawerButton.svelte +22 -12
  92. package/package/nav/NavDrawerButton.svelte.d.ts +8 -31
  93. package/package/nav/NavDrawerLink.svelte +21 -12
  94. package/package/nav/NavDrawerLink.svelte.d.ts +8 -30
  95. package/package/nav/NavList.svelte +13 -9
  96. package/package/nav/NavList.svelte.d.ts +7 -31
  97. package/package/nav/NavListButton.svelte +26 -22
  98. package/package/nav/NavListButton.svelte.d.ts +9 -33
  99. package/package/nav/NavListLink.svelte +26 -23
  100. package/package/nav/NavListLink.svelte.d.ts +9 -32
  101. package/package/nav/Tabs.svelte +20 -19
  102. package/package/nav/Tabs.svelte.d.ts +5 -22
  103. package/package/nav/TabsLink.svelte +22 -18
  104. package/package/nav/TabsLink.svelte.d.ts +5 -22
  105. package/package/nav/VariableTabs.svelte +25 -20
  106. package/package/nav/VariableTabs.svelte.d.ts +5 -22
  107. package/package/nav/VariableTabsLink.svelte +29 -22
  108. package/package/nav/VariableTabsLink.svelte.d.ts +5 -22
  109. package/package/utils/ChipChooser.svelte +10 -4
  110. package/package/utils/ChipChooser.svelte.d.ts +5 -19
  111. package/package/utils/DateField.svelte +24 -18
  112. package/package/utils/DateField.svelte.d.ts +4 -19
  113. package/package/utils/Divider.svelte +5 -1
  114. package/package/utils/Divider.svelte.d.ts +4 -18
  115. package/package.json +44 -43
  116. package/package/buttons/ButtonLink.svelte +0 -116
  117. package/package/buttons/ButtonLink.svelte.d.ts +0 -34
  118. package/package/buttons/SegmentedButtonContainer.svelte +0 -27
  119. package/package/buttons/SegmentedButtonContainer.svelte.d.ts +0 -31
  120. package/package/buttons/SegmentedButtonItem.svelte +0 -119
  121. package/package/buttons/SegmentedButtonItem.svelte.d.ts +0 -34
  122. package/package/containers/CardClickable.svelte +0 -78
  123. package/package/containers/CardClickable.svelte.d.ts +0 -34
  124. package/package/containers/ListItemButton.svelte +0 -86
  125. package/package/containers/ListItemButton.svelte.d.ts +0 -31
  126. package/package/containers/ListItemLabel.svelte +0 -82
  127. package/package/containers/ListItemLabel.svelte.d.ts +0 -29
  128. package/package/containers/SnackbarAnim.svelte +0 -127
  129. package/package/containers/SnackbarAnim.svelte.d.ts +0 -33
  130. package/package/forms/CheckboxAnim.svelte +0 -116
  131. package/package/forms/CheckboxAnim.svelte.d.ts +0 -31
@@ -1,14 +1,30 @@
1
1
  <script lang="ts">
2
+ import type { Snippet } from "svelte";
2
3
  import type { HTMLAttributes, HTMLButtonAttributes } from "svelte/elements";
4
+ import Layer from "../misc/Layer.svelte";
3
5
 
4
- export let display = "flex";
5
- export let extraOptions: HTMLAttributes<HTMLDivElement> & HTMLButtonAttributes = {};
6
- export let type: "elevated" | "filled" | "outlined";
6
+ type ActionProps =
7
+ | ({ click: () => void } & HTMLButtonAttributes)
8
+ | HTMLAttributes<HTMLDivElement>;
9
+
10
+ let props: {
11
+ variant: "elevated" | "filled" | "outlined";
12
+ children: Snippet;
13
+ } & ActionProps = $props();
7
14
  </script>
8
15
 
9
- <div class="m3-container type-{type}" style="display: {display};" {...extraOptions}>
10
- <slot />
11
- </div>
16
+ {#if "click" in props}
17
+ {@const { variant, click, children, ...extra } = props}
18
+ <button class="m3-container {variant}" onclick={click} {...extra}>
19
+ <Layer />
20
+ {@render children()}
21
+ </button>
22
+ {:else}
23
+ {@const { variant, children, ...extra } = props}
24
+ <div class="m3-container {variant}" {...extra}>
25
+ {@render children()}
26
+ </div>
27
+ {/if}
12
28
 
13
29
  <style>
14
30
  :root {
@@ -16,27 +32,42 @@
16
32
  }
17
33
 
18
34
  .m3-container {
35
+ display: flex;
19
36
  flex-direction: column;
20
37
  position: relative;
21
38
  padding: 1rem; /* protip: use margin: -1rem (adjust as needed) to make images stretch to the end */
39
+ border: none;
22
40
  border-radius: var(--m3-card-shape);
23
41
  background-color: rgb(var(--m3-scheme-surface));
24
42
  color: rgb(var(--m3-scheme-on-surface));
25
43
  }
26
44
 
27
- .type-elevated {
28
- background-color: rgb(var(--m3-scheme-surface-container-low));
45
+ button {
46
+ text-align: inherit;
47
+ font: inherit;
48
+ letter-spacing: inherit;
49
+ cursor: pointer;
50
+ -webkit-tap-highlight-color: transparent;
29
51
  }
30
- .type-filled {
31
- background-color: rgb(var(--m3-scheme-surface-container-highest));
32
- }
33
- .type-outlined {
34
- border: solid 0.0625rem rgb(var(--m3-scheme-outline-variant));
52
+ @media (hover: hover) {
53
+ button:hover {
54
+ box-shadow: var(--m3-util-elevation-1);
55
+ }
56
+ button.type-elevated:hover {
57
+ box-shadow: var(--m3-util-elevation-2);
58
+ }
35
59
  }
36
60
 
37
- .type-elevated {
61
+ .elevated {
62
+ background-color: rgb(var(--m3-scheme-surface-container-low));
38
63
  box-shadow: var(--m3-util-elevation-1);
39
64
  }
65
+ .filled {
66
+ background-color: rgb(var(--m3-scheme-surface-container-highest));
67
+ }
68
+ .outlined {
69
+ border: solid 1px rgb(var(--m3-scheme-outline-variant));
70
+ }
40
71
 
41
72
  @media print, (forced-colors: active) {
42
73
  .type-filled {
@@ -1,32 +1,12 @@
1
+ import type { Snippet } from "svelte";
1
2
  import type { HTMLAttributes, HTMLButtonAttributes } from "svelte/elements";
2
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
- $$bindings?: Bindings;
5
- } & Exports;
6
- (internal: unknown, props: Props & {
7
- $$events?: Events;
8
- $$slots?: Slots;
9
- }): Exports & {
10
- $set?: any;
11
- $on?: any;
12
- };
13
- z_$$bindings?: Bindings;
14
- }
15
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
16
- default: any;
17
- } ? Props extends Record<string, never> ? any : {
18
- children?: any;
19
- } : {});
20
- declare const Card: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
21
- display?: string;
22
- extraOptions?: HTMLAttributes<HTMLDivElement> & HTMLButtonAttributes;
23
- type: "elevated" | "filled" | "outlined";
24
- }, {
25
- default: {};
26
- }>, {
27
- [evt: string]: CustomEvent<any>;
28
- }, {
29
- default: {};
30
- }, {}, string>;
31
- type Card = InstanceType<typeof Card>;
3
+ type ActionProps = ({
4
+ click: () => void;
5
+ } & HTMLButtonAttributes) | HTMLAttributes<HTMLDivElement>;
6
+ type $$ComponentProps = {
7
+ variant: "elevated" | "filled" | "outlined";
8
+ children: Snippet;
9
+ } & ActionProps;
10
+ declare const Card: import("svelte").Component<$$ComponentProps, {}, "">;
11
+ type Card = ReturnType<typeof Card>;
32
12
  export default Card;
@@ -1,45 +1,58 @@
1
1
  <script lang="ts">
2
- import Icon from "../misc/_icon.svelte";
3
2
  import type { IconifyIcon } from "@iconify/types";
4
- import { createEventDispatcher } from "svelte";
5
3
  import type { HTMLDialogAttributes } from "svelte/elements";
4
+ import type { Snippet } from "svelte";
5
+ import Icon from "../misc/_icon.svelte";
6
6
 
7
- export let display = "flex";
8
- export let extraOptions: HTMLDialogAttributes = {};
9
- export let icon: IconifyIcon | undefined = undefined;
10
- export let headline: string;
11
- export let open: boolean;
12
- export let closeOnEsc = true;
13
- export let closeOnClick = true;
7
+ let {
8
+ icon,
9
+ headline,
10
+ buttons,
11
+ children,
12
+ open = $bindable(),
13
+ closeOnEsc = true,
14
+ closeOnClick = true,
15
+ onEsc,
16
+ onClick,
17
+ ...extra
18
+ }: {
19
+ icon?: IconifyIcon | undefined;
20
+ headline: string;
21
+ buttons: Snippet;
22
+ children: Snippet;
23
+ open: boolean;
24
+ closeOnEsc?: boolean;
25
+ closeOnClick?: boolean;
26
+ onEsc?: () => void;
27
+ onClick?: () => void;
28
+ } & HTMLDialogAttributes = $props();
14
29
 
15
- const dispatch = createEventDispatcher();
16
- let dialog: HTMLDialogElement;
17
- $: {
18
- if (!dialog) break $;
30
+ let dialog: HTMLDialogElement | undefined = $state();
31
+ $effect(() => {
32
+ if (!dialog) return;
19
33
  if (open) dialog.showModal();
20
34
  else dialog.close();
21
- }
35
+ });
22
36
  </script>
23
37
 
24
- <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
25
38
  <dialog
26
- on:cancel={(e) => {
39
+ oncancel={(e) => {
27
40
  if (closeOnEsc) {
28
- dispatch("closedByEsc");
41
+ onEsc?.();
29
42
  open = false;
30
43
  } else {
31
44
  e.preventDefault();
32
45
  }
33
46
  }}
34
- on:click|self={() => {
47
+ onclick={(e) => {
48
+ if (e.target != e.currentTarget) return;
35
49
  if (closeOnClick) {
36
- dispatch("closedByClick");
50
+ onClick?.();
37
51
  open = false;
38
52
  }
39
53
  }}
40
54
  bind:this={dialog}
41
- style="display: {display};"
42
- {...extraOptions}
55
+ {...extra}
43
56
  >
44
57
  <div class="m3-container">
45
58
  {#if icon}
@@ -47,10 +60,10 @@
47
60
  {/if}
48
61
  <p class="headline m3-font-headline-small" class:center={icon}>{headline}</p>
49
62
  <div class="content m3-font-body-medium">
50
- <slot />
63
+ {@render children()}
51
64
  </div>
52
65
  <div class="buttons">
53
- <slot name="buttons" />
66
+ {@render buttons()}
54
67
  </div>
55
68
  </div>
56
69
  </dialog>
@@ -60,6 +73,7 @@
60
73
  --m3-dialog-shape: var(--m3-util-rounding-extra-large);
61
74
  }
62
75
  dialog {
76
+ display: flex;
63
77
  background-color: rgb(var(--m3-scheme-surface-container-high));
64
78
  border: none;
65
79
  border-radius: var(--m3-dialog-shape);
@@ -109,32 +123,32 @@
109
123
  visibility: hidden;
110
124
  pointer-events: none;
111
125
  transition:
112
- opacity 200ms,
113
- visibility 200ms;
126
+ opacity var(--m3-util-easing-fast),
127
+ visibility var(--m3-util-easing-fast);
114
128
  }
115
129
  dialog[open] {
116
130
  opacity: 1;
117
131
  visibility: visible;
118
132
  pointer-events: auto;
119
133
  animation:
120
- dialogIn 500ms var(--m3-easing-decel),
121
- opacity 100ms var(--m3-easing-decel);
134
+ dialogIn var(--m3-util-curve-decel) 500ms,
135
+ opacity var(--m3-util-curve-decel) 100ms both;
122
136
  }
123
137
  dialog[open] .headline {
124
- animation: opacity 150ms;
138
+ animation: opacity var(--m3-util-easing-fast);
125
139
  }
126
140
  dialog[open] .content {
127
- animation: opacity 200ms;
141
+ animation: opacity var(--m3-util-easing-fast) 50ms both;
128
142
  }
129
143
  dialog[open] .buttons {
130
144
  position: relative;
131
145
  animation:
132
- buttonsIn 500ms var(--m3-easing-decel),
133
- opacity 200ms 100ms backwards;
146
+ buttonsIn var(--m3-util-curve-decel) 500ms,
147
+ opacity var(--m3-util-easing-fast) 100ms both;
134
148
  }
135
149
  dialog::backdrop {
136
150
  background-color: rgb(var(--m3-scheme-scrim) / 0.3);
137
- animation: opacity 400ms;
151
+ animation: opacity var(--m3-util-curve-decel) 500ms;
138
152
  }
139
153
  @keyframes dialogIn {
140
154
  0% {
@@ -1,42 +1,17 @@
1
1
  import type { IconifyIcon } from "@iconify/types";
2
2
  import type { HTMLDialogAttributes } from "svelte/elements";
3
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
4
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
5
- $$bindings?: Bindings;
6
- } & Exports;
7
- (internal: unknown, props: Props & {
8
- $$events?: Events;
9
- $$slots?: Slots;
10
- }): Exports & {
11
- $set?: any;
12
- $on?: any;
13
- };
14
- z_$$bindings?: Bindings;
15
- }
16
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
17
- default: any;
18
- } ? Props extends Record<string, never> ? any : {
19
- children?: any;
20
- } : {});
21
- declare const Dialog: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
22
- display?: string;
23
- extraOptions?: HTMLDialogAttributes;
3
+ import type { Snippet } from "svelte";
4
+ type $$ComponentProps = {
24
5
  icon?: IconifyIcon | undefined;
25
6
  headline: string;
7
+ buttons: Snippet;
8
+ children: Snippet;
26
9
  open: boolean;
27
10
  closeOnEsc?: boolean;
28
11
  closeOnClick?: boolean;
29
- }, {
30
- default: {};
31
- buttons: {};
32
- }>, {
33
- closedByEsc: CustomEvent<any>;
34
- closedByClick: CustomEvent<any>;
35
- } & {
36
- [evt: string]: CustomEvent<any>;
37
- }, {
38
- default: {};
39
- buttons: {};
40
- }, {}, string>;
41
- type Dialog = InstanceType<typeof Dialog>;
12
+ onEsc?: () => void;
13
+ onClick?: () => void;
14
+ } & HTMLDialogAttributes;
15
+ declare const Dialog: import("svelte").Component<$$ComponentProps, {}, "open">;
16
+ type Dialog = ReturnType<typeof Dialog>;
42
17
  export default Dialog;
@@ -1,19 +1,37 @@
1
1
  <script lang="ts">
2
- import type { HTMLAttributes } from "svelte/elements";
2
+ import type { Snippet } from "svelte";
3
+ import type { HTMLAttributes, HTMLButtonAttributes, HTMLLabelAttributes } from "svelte/elements";
4
+ import Layer from "../misc/Layer.svelte";
3
5
 
4
- export let display = "flex";
5
- export let extraOptions: HTMLAttributes<HTMLDivElement> = {};
6
- export let overline = "";
7
- export let headline = "";
8
- export let supporting = "";
9
- export let lines: number | undefined = undefined;
10
- $: _lines = lines || (overline && supporting ? 3 : overline || supporting ? 2 : 1);
6
+ type ActionProps =
7
+ | HTMLAttributes<HTMLDivElement>
8
+ | ({ click: () => void } & HTMLButtonAttributes)
9
+ | ({ label: true } & HTMLLabelAttributes);
10
+
11
+ let props: {
12
+ leading?: Snippet;
13
+ overline?: string;
14
+ headline?: string;
15
+ supporting?: string;
16
+ trailing?: Snippet;
17
+ lines?: number;
18
+ } & ActionProps = $props();
19
+ let _lines = $derived(
20
+ props.lines ||
21
+ (props.overline && props.supporting ? 3 : props.overline || props.supporting ? 2 : 1),
22
+ );
11
23
  </script>
12
24
 
13
- <div class="m3-container lines-{_lines}" style="display: {display}" {...extraOptions}>
14
- {#if $$slots.leading}
25
+ {#snippet content(
26
+ leading: Snippet | undefined,
27
+ overline: string,
28
+ headline: string,
29
+ supporting: string,
30
+ trailing: Snippet | undefined,
31
+ )}
32
+ {#if leading}
15
33
  <div class="leading">
16
- <slot name="leading" />
34
+ {@render leading()}
17
35
  </div>
18
36
  {/if}
19
37
  <div class="body">
@@ -25,18 +43,64 @@
25
43
  <p class="supporting m3-font-body-medium">{supporting}</p>
26
44
  {/if}
27
45
  </div>
28
- {#if $$slots.trailing}
46
+ {#if trailing}
29
47
  <div class="trailing m3-font-label-small">
30
- <slot name="trailing" />
48
+ {@render trailing()}
31
49
  </div>
32
50
  {/if}
33
- </div>
51
+ {/snippet}
52
+
53
+ {#if "label" in props}
54
+ {@const {
55
+ leading,
56
+ overline = "",
57
+ headline = "",
58
+ supporting = "",
59
+ trailing,
60
+ label: _,
61
+ ...extra
62
+ } = props}
63
+ <label class="m3-container lines-{_lines}" {...extra}>
64
+ <Layer />
65
+ {@render content(leading, overline, headline, supporting, trailing)}
66
+ </label>
67
+ {:else if "click" in props}
68
+ {@const {
69
+ leading,
70
+ overline = "",
71
+ headline = "",
72
+ supporting = "",
73
+ trailing,
74
+ click,
75
+ ...extra
76
+ } = props}
77
+ <button class="m3-container lines-{_lines}" onclick={click} {...extra}>
78
+ <Layer />
79
+ {@render content(leading, overline, headline, supporting, trailing)}
80
+ </button>
81
+ {:else}
82
+ {@const { leading, overline = "", headline = "", supporting = "", trailing, ...extra } = props}
83
+ <div class="m3-container lines-{_lines}" {...extra}>
84
+ {@render content(leading, overline, headline, supporting, trailing)}
85
+ </div>
86
+ {/if}
34
87
 
35
88
  <style>
36
89
  .m3-container {
90
+ display: flex;
37
91
  padding: 0.5rem 1.5rem 0.5rem 1rem;
38
92
  align-items: center;
39
93
  gap: 1rem;
94
+
95
+ text-align: inherit;
96
+ border: none;
97
+ position: relative;
98
+ background: transparent;
99
+ -webkit-tap-highlight-color: transparent;
100
+ }
101
+ button.m3-container,
102
+ label.m3-container {
103
+ cursor: pointer;
40
104
  }
41
105
  .lines-1 {
42
106
  height: 3.5rem;
@@ -1,29 +1,18 @@
1
- import type { HTMLAttributes } from "svelte/elements";
2
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
- $$bindings?: Bindings;
5
- } & Exports;
6
- (internal: unknown, props: Props & {
7
- $$events?: Events;
8
- $$slots?: Slots;
9
- }): Exports & {
10
- $set?: any;
11
- $on?: any;
12
- };
13
- z_$$bindings?: Bindings;
14
- }
15
- declare const ListItem: $$__sveltets_2_IsomorphicComponent<{
16
- display?: string;
17
- extraOptions?: HTMLAttributes<HTMLDivElement>;
1
+ import type { Snippet } from "svelte";
2
+ import type { HTMLAttributes, HTMLButtonAttributes, HTMLLabelAttributes } from "svelte/elements";
3
+ type ActionProps = HTMLAttributes<HTMLDivElement> | ({
4
+ click: () => void;
5
+ } & HTMLButtonAttributes) | ({
6
+ label: true;
7
+ } & HTMLLabelAttributes);
8
+ type $$ComponentProps = {
9
+ leading?: Snippet;
18
10
  overline?: string;
19
11
  headline?: string;
20
12
  supporting?: string;
21
- lines?: number | undefined;
22
- }, {
23
- [evt: string]: CustomEvent<any>;
24
- }, {
25
- leading: {};
26
- trailing: {};
27
- }, {}, string>;
28
- type ListItem = InstanceType<typeof ListItem>;
13
+ trailing?: Snippet;
14
+ lines?: number;
15
+ } & ActionProps;
16
+ declare const ListItem: import("svelte").Component<$$ComponentProps, {}, "">;
17
+ type ListItem = ReturnType<typeof ListItem>;
29
18
  export default ListItem;
@@ -1,9 +1,11 @@
1
1
  <script lang="ts">
2
- export let display = "flex";
2
+ import type { Snippet } from "svelte";
3
+
4
+ let { children }: { children: Snippet } = $props();
3
5
  </script>
4
6
 
5
- <div class="m3-container" style="display: {display};">
6
- <slot />
7
+ <div class="m3-container">
8
+ {@render children()}
7
9
  </div>
8
10
 
9
11
  <style>
@@ -11,6 +13,7 @@
11
13
  --m3-menu-shape: var(--m3-util-rounding-extra-small);
12
14
  }
13
15
  .m3-container {
16
+ display: flex;
14
17
  position: relative;
15
18
  overflow: hidden;
16
19
  flex-direction: column;
@@ -1,29 +1,7 @@
1
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: Props & {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
13
- }
14
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
15
- default: any;
16
- } ? Props extends Record<string, never> ? any : {
17
- children?: any;
18
- } : {});
19
- declare const Menu: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
20
- display?: string;
21
- }, {
22
- default: {};
23
- }>, {
24
- [evt: string]: CustomEvent<any>;
25
- }, {
26
- default: {};
27
- }, {}, string>;
28
- type Menu = InstanceType<typeof Menu>;
1
+ import type { Snippet } from "svelte";
2
+ type $$ComponentProps = {
3
+ children: Snippet;
4
+ };
5
+ declare const Menu: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type Menu = ReturnType<typeof Menu>;
29
7
  export default Menu;
@@ -1,13 +1,23 @@
1
1
  <script lang="ts">
2
+ import type { Snippet } from "svelte";
3
+ import type { IconifyIcon } from "@iconify/types";
2
4
  import Icon from "../misc/_icon.svelte";
3
5
  import Layer from "../misc/Layer.svelte";
4
- import type { IconifyIcon } from "@iconify/types";
5
6
 
6
- export let icon: IconifyIcon | "space" | undefined = undefined;
7
- export let disabled = false;
7
+ let {
8
+ icon,
9
+ disabled = false,
10
+ click,
11
+ children,
12
+ }: {
13
+ icon?: IconifyIcon | "space" | undefined;
14
+ disabled?: boolean;
15
+ click: () => void;
16
+ children: Snippet;
17
+ } = $props();
8
18
  </script>
9
19
 
10
- <button class="item m3-font-label-large" {disabled} on:click>
20
+ <button class="item m3-font-label-large" {disabled} onclick={click}>
11
21
  <Layer />
12
22
  {#if icon == "space"}
13
23
  <span class="icon"></span>
@@ -16,7 +26,7 @@
16
26
  <Icon {icon} />
17
27
  </span>
18
28
  {/if}
19
- <slot />
29
+ {@render children()}
20
30
  </button>
21
31
 
22
32
  <style>
@@ -1,33 +1,11 @@
1
+ import type { Snippet } from "svelte";
1
2
  import type { IconifyIcon } from "@iconify/types";
2
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
- $$bindings?: Bindings;
5
- } & Exports;
6
- (internal: unknown, props: Props & {
7
- $$events?: Events;
8
- $$slots?: Slots;
9
- }): Exports & {
10
- $set?: any;
11
- $on?: any;
12
- };
13
- z_$$bindings?: Bindings;
14
- }
15
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
16
- default: any;
17
- } ? Props extends Record<string, never> ? any : {
18
- children?: any;
19
- } : {});
20
- declare const MenuItem: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
3
+ type $$ComponentProps = {
21
4
  icon?: IconifyIcon | "space" | undefined;
22
5
  disabled?: boolean;
23
- }, {
24
- default: {};
25
- }>, {
26
- click: MouseEvent;
27
- } & {
28
- [evt: string]: CustomEvent<any>;
29
- }, {
30
- default: {};
31
- }, {}, string>;
32
- type MenuItem = InstanceType<typeof MenuItem>;
6
+ click: () => void;
7
+ children: Snippet;
8
+ };
9
+ declare const MenuItem: import("svelte").Component<$$ComponentProps, {}, "">;
10
+ type MenuItem = ReturnType<typeof MenuItem>;
33
11
  export default MenuItem;