m3-svelte 5.9.1 → 5.10.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.
@@ -14,54 +14,27 @@
14
14
  children: Snippet;
15
15
  } & ActionProps;
16
16
 
17
- let props: Props = $props();
18
- </script>
19
-
20
- {#if "for" in props}
21
- {@const {
17
+ let {
22
18
  variant = "filled",
23
- for: forItem,
24
19
  square = false,
25
20
  iconType = "none",
26
21
  children,
27
- ...extra
28
- } = props}
29
- <label
30
- for={forItem}
31
- class="m3-container m3-font-label-large {variant} icon-{iconType}"
32
- class:square
33
- {...extra}
34
- >
22
+ ...props
23
+ }: Props = $props();
24
+ </script>
25
+
26
+ {#if "for" in props}
27
+ <label class="m3-container m3-font-label-large {variant} icon-{iconType}" class:square {...props}>
35
28
  <Layer />
36
29
  {@render children()}
37
30
  </label>
38
31
  {:else if "href" in props}
39
- {@const {
40
- variant = "filled",
41
- href,
42
- square = false,
43
- iconType = "none",
44
- children,
45
- ...extra
46
- } = props}
47
- <a
48
- {href}
49
- class="m3-container m3-font-label-large {variant} icon-{iconType}"
50
- class:square
51
- {...extra}
52
- >
32
+ <a class="m3-container m3-font-label-large {variant} icon-{iconType}" class:square {...props}>
53
33
  <Layer />
54
34
  {@render children()}
55
35
  </a>
56
36
  {:else if "summary" in props}
57
- {@const {
58
- variant = "filled",
59
- square = false,
60
- iconType = "none",
61
- children,
62
- summary: _,
63
- ...extra
64
- } = props}
37
+ {@const { summary: _, ...extra } = props}
65
38
  <summary
66
39
  class="m3-container m3-font-label-large {variant} icon-{iconType}"
67
40
  class:square
@@ -71,12 +44,11 @@
71
44
  {@render children()}
72
45
  </summary>
73
46
  {:else}
74
- {@const { variant = "filled", square = false, iconType = "none", children, ...extra } = props}
75
47
  <button
76
- type={"onclick" in extra ? "button" : "submit"}
48
+ type={"onclick" in props ? "button" : "submit"}
77
49
  class="m3-container m3-font-label-large {variant} icon-{iconType}"
78
50
  class:square
79
- {...extra}
51
+ {...props}
80
52
  >
81
53
  <Layer />
82
54
  {@render children()}
@@ -5,20 +5,22 @@
5
5
 
6
6
  type ActionProps = ButtonAttrs | DivAttrs;
7
7
 
8
- let props: {
8
+ let {
9
+ variant,
10
+ children,
11
+ ...extra
12
+ }: {
9
13
  variant: "elevated" | "filled" | "outlined";
10
14
  children: Snippet;
11
15
  } & ActionProps = $props();
12
16
  </script>
13
17
 
14
- {#if "onclick" in props}
15
- {@const { variant, children, ...extra } = props}
18
+ {#if "onclick" in extra}
16
19
  <button type="button" class="m3-container {variant}" {...extra}>
17
20
  <Layer />
18
21
  {@render children()}
19
22
  </button>
20
23
  {:else}
21
- {@const { variant, children, ...extra } = props}
22
24
  <div class="m3-container {variant}" {...extra}>
23
25
  {@render children()}
24
26
  </div>
@@ -5,9 +5,15 @@
5
5
  import Layer from "../misc/Layer.svelte";
6
6
 
7
7
  type ActionProps =
8
- | ({ click: () => void } & HTMLButtonAttributes)
8
+ | ({ click?: () => void } & HTMLButtonAttributes) // deprecated: drop in favour of `onclick`
9
9
  | ({ href: string } & HTMLAnchorAttributes);
10
- let props: {
10
+ let {
11
+ variant,
12
+ icon,
13
+ text,
14
+ selected,
15
+ ...props
16
+ }: {
11
17
  variant: "compact" | "medium" | "large" | "expanded" | "auto"; // next release / "deprecated": rename expanded to extra-large
12
18
  icon: IconifyIcon;
13
19
  text: string;
@@ -15,15 +21,8 @@
15
21
  } & ActionProps = $props();
16
22
  </script>
17
23
 
18
- {#if "click" in props}
19
- {@const { variant, icon, text, selected, click, ...extra } = props}
20
- <button
21
- type="button"
22
- onclick={click}
23
- class="m3-container m3-font-label-medium {variant}"
24
- disabled={selected}
25
- {...extra}
26
- >
24
+ {#if "href" in props}
25
+ <a class="m3-container m3-font-label-medium {variant}" {...props}>
27
26
  <div class="content" class:selected>
28
27
  <Layer />
29
28
  <div class="icon">
@@ -31,10 +30,16 @@
31
30
  </div>
32
31
  {text}
33
32
  </div>
34
- </button>
33
+ </a>
35
34
  {:else}
36
- {@const { variant, icon, text, selected, href, ...extra } = props}
37
- <a {href} class="m3-container m3-font-label-medium {variant}" {...extra}>
35
+ {@const { click, ...extra } = props}
36
+ <button
37
+ type="button"
38
+ onclick={click}
39
+ class="m3-container m3-font-label-medium {variant}"
40
+ disabled={selected}
41
+ {...extra}
42
+ >
38
43
  <div class="content" class:selected>
39
44
  <Layer />
40
45
  <div class="icon">
@@ -42,7 +47,7 @@
42
47
  </div>
43
48
  {text}
44
49
  </div>
45
- </a>
50
+ </button>
46
51
  {/if}
47
52
 
48
53
  <style>
@@ -1,7 +1,7 @@
1
1
  import type { IconifyIcon } from "@iconify/types";
2
2
  import type { HTMLButtonAttributes, HTMLAnchorAttributes } from "svelte/elements";
3
3
  type ActionProps = ({
4
- click: () => void;
4
+ click?: () => void;
5
5
  } & HTMLButtonAttributes) | ({
6
6
  href: string;
7
7
  } & HTMLAnchorAttributes);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "m3-svelte",
3
- "version": "5.9.1",
3
+ "version": "5.10.0",
4
4
  "license": "Apache-2.0 OR GPL-3.0-only",
5
5
  "repository": "KTibow/m3-svelte",
6
6
  "author": {
@@ -57,7 +57,7 @@
57
57
  "svelte-check": "^4.3.3",
58
58
  "svelte-highlight": "^7.8.4",
59
59
  "typescript": "^5.9.3",
60
- "typescript-eslint": "^8.46.0",
60
+ "typescript-eslint": "^8.46.1",
61
61
  "vite": "^7.1.9"
62
62
  },
63
63
  "keywords": [