@sveltia/ui 0.7.4 → 0.8.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 (118) hide show
  1. package/package/components/alert/alert.svelte +4 -4
  2. package/package/components/alert/alert.svelte.d.ts +2 -2
  3. package/package/components/button/button.svelte +13 -3
  4. package/package/components/button/button.svelte.d.ts +11 -4
  5. package/package/components/button/select-button-group.svelte +12 -8
  6. package/package/components/button/select-button.svelte +5 -4
  7. package/package/components/button/select-button.svelte.d.ts +2 -0
  8. package/package/components/calendar/calendar.svelte +20 -14
  9. package/package/components/checkbox/checkbox-group.svelte +6 -5
  10. package/package/components/checkbox/checkbox.svelte +16 -9
  11. package/package/components/checkbox/checkbox.svelte.d.ts +2 -2
  12. package/package/components/dialog/alert-dialog.svelte +50 -0
  13. package/package/components/dialog/alert-dialog.svelte.d.ts +55 -0
  14. package/package/components/dialog/confirmation-dialog.svelte +55 -0
  15. package/package/components/dialog/confirmation-dialog.svelte.d.ts +57 -0
  16. package/package/components/dialog/dialog.svelte +164 -220
  17. package/package/components/dialog/dialog.svelte.d.ts +20 -12
  18. package/package/components/dialog/prompt-dialog.svelte +78 -0
  19. package/package/components/dialog/prompt-dialog.svelte.d.ts +72 -0
  20. package/package/components/disclosure/disclosure.svelte +3 -3
  21. package/package/components/divider/divider.svelte +1 -1
  22. package/package/components/divider/spacer.svelte +1 -12
  23. package/package/components/divider/spacer.svelte.d.ts +0 -2
  24. package/package/components/drawer/drawer.svelte +118 -208
  25. package/package/components/drawer/drawer.svelte.d.ts +12 -8
  26. package/package/components/grid/grid-body.svelte +51 -0
  27. package/package/components/grid/grid-body.svelte.d.ts +36 -0
  28. package/package/components/grid/grid-cell.svelte +22 -0
  29. package/package/components/grid/grid-cell.svelte.d.ts +34 -0
  30. package/package/components/grid/grid-col-header.svelte +22 -0
  31. package/package/components/grid/grid-col-header.svelte.d.ts +34 -0
  32. package/package/components/grid/grid-foot.svelte +27 -0
  33. package/package/components/grid/grid-foot.svelte.d.ts +34 -0
  34. package/package/components/grid/grid-head.svelte +27 -0
  35. package/package/components/grid/grid-head.svelte.d.ts +34 -0
  36. package/package/components/grid/grid-row-header.svelte +23 -0
  37. package/package/components/grid/grid-row-header.svelte.d.ts +34 -0
  38. package/package/components/grid/grid-row.svelte +37 -0
  39. package/package/components/grid/grid-row.svelte.d.ts +44 -0
  40. package/package/components/grid/grid.svelte +52 -0
  41. package/package/components/grid/grid.svelte.d.ts +42 -0
  42. package/package/components/icon/icon.svelte +6 -7
  43. package/package/components/icon/icon.svelte.d.ts +0 -2
  44. package/package/components/listbox/listbox.svelte +6 -6
  45. package/package/components/listbox/option-group.svelte +6 -5
  46. package/package/components/listbox/option.svelte +7 -28
  47. package/package/components/listbox/option.svelte.d.ts +2 -0
  48. package/package/components/menu/menu-button.svelte +26 -16
  49. package/package/components/menu/menu-button.svelte.d.ts +2 -2
  50. package/package/components/menu/menu-item-checkbox.svelte +5 -4
  51. package/package/components/menu/menu-item-checkbox.svelte.d.ts +2 -0
  52. package/package/components/menu/menu-item-group.svelte +4 -3
  53. package/package/components/menu/menu-item-radio.svelte +5 -4
  54. package/package/components/menu/menu-item-radio.svelte.d.ts +2 -0
  55. package/package/components/menu/menu-item.svelte +7 -5
  56. package/package/components/menu/menu-item.svelte.d.ts +4 -2
  57. package/package/components/menu/menu.svelte +1 -1
  58. package/package/components/radio/radio-group.svelte +8 -8
  59. package/package/components/radio/radio-group.svelte.d.ts +2 -2
  60. package/package/components/radio/radio.svelte +5 -2
  61. package/package/components/radio/radio.svelte.d.ts +2 -0
  62. package/package/components/select/combobox.svelte +55 -35
  63. package/package/components/select/combobox.svelte.d.ts +3 -2
  64. package/package/components/select/select.svelte +10 -9
  65. package/package/components/select/select.svelte.d.ts +4 -3
  66. package/package/components/slider/slider.svelte +15 -7
  67. package/package/components/switch/switch.svelte +9 -6
  68. package/package/components/switch/switch.svelte.d.ts +2 -2
  69. package/package/components/table/table-body.svelte +31 -3
  70. package/package/components/table/table-body.svelte.d.ts +2 -0
  71. package/package/components/table/table-cell.svelte +3 -4
  72. package/package/components/table/table-cell.svelte.d.ts +1 -1
  73. package/package/components/table/table-col-header.svelte +1 -2
  74. package/package/components/table/table-foot.svelte +7 -3
  75. package/package/components/table/table-head.svelte +7 -3
  76. package/package/components/table/table-row-header.svelte +1 -2
  77. package/package/components/table/table-row.svelte +1 -14
  78. package/package/components/table/table-row.svelte.d.ts +0 -8
  79. package/package/components/table/table.svelte +5 -17
  80. package/package/components/table/table.svelte.d.ts +1 -7
  81. package/package/components/tabs/tab-list.svelte +7 -5
  82. package/package/components/tabs/tab-panel.svelte +1 -1
  83. package/package/components/tabs/tab.svelte +2 -1
  84. package/package/components/tabs/tab.svelte.d.ts +2 -0
  85. package/package/components/text-field/markdown-editor.svelte +36 -9
  86. package/package/components/text-field/markdown-editor.svelte.d.ts +2 -0
  87. package/package/components/text-field/number-input.svelte +107 -43
  88. package/package/components/text-field/number-input.svelte.d.ts +2 -0
  89. package/package/components/text-field/password-input.svelte +43 -12
  90. package/package/components/text-field/password-input.svelte.d.ts +2 -0
  91. package/package/components/text-field/search-bar.svelte +43 -13
  92. package/package/components/text-field/search-bar.svelte.d.ts +5 -0
  93. package/package/components/text-field/text-area.svelte +26 -6
  94. package/package/components/text-field/text-area.svelte.d.ts +2 -0
  95. package/package/components/text-field/text-input.svelte +37 -7
  96. package/package/components/text-field/text-input.svelte.d.ts +14 -4
  97. package/package/components/toast/toast.svelte +6 -16
  98. package/package/components/toast/toast.svelte.d.ts +2 -2
  99. package/package/components/toolbar/toolbar.svelte +3 -4
  100. package/package/components/util/app-shell.svelte +34 -29
  101. package/package/components/util/group.svelte +2 -2
  102. package/package/components/util/modal.svelte +220 -0
  103. package/package/components/util/modal.svelte.d.ts +83 -0
  104. package/package/components/util/popup.svelte +80 -121
  105. package/package/components/util/popup.svelte.d.ts +22 -13
  106. package/package/components/util/portal.svelte +1 -1
  107. package/package/index.d.ts +12 -0
  108. package/package/index.js +12 -0
  109. package/package/locales/en.d.ts +1 -0
  110. package/package/locales/en.js +1 -0
  111. package/package/locales/ja.d.ts +1 -0
  112. package/package/locales/ja.js +1 -0
  113. package/package/services/group.js +67 -13
  114. package/package/services/popup.d.ts +5 -1
  115. package/package/services/popup.js +22 -19
  116. package/package/styles/core.scss +13 -26
  117. package/package/styles/variables.scss +14 -2
  118. package/package.json +107 -11
@@ -25,17 +25,17 @@
25
25
  */
26
26
  export let disabled = false;
27
27
  /**
28
- * Whether to disable the widget. An alias of the `aria-readonly` attribute.
28
+ * Whether to make the widget read-only. An alias of the `aria-readonly` attribute.
29
29
  * @type {boolean}
30
30
  */
31
31
  export let readonly = false;
32
32
  /**
33
- * Whether to disable the widget. An alias of the `aria-required` attribute.
33
+ * Whether to mark the widget required. An alias of the `aria-required` attribute.
34
34
  * @type {boolean}
35
35
  */
36
36
  export let required = false;
37
37
  /**
38
- * Whether to disable the widget. An alias of the `aria-invalid` attribute.
38
+ * Whether to mark the widget invalid. An alias of the `aria-invalid` attribute.
39
39
  * @type {boolean}
40
40
  */
41
41
  export let invalid = false;
@@ -48,9 +48,9 @@
48
48
  </script>
49
49
 
50
50
  <div
51
+ role="listbox"
51
52
  class="sui listbox {className}"
52
53
  tabindex={disabled ? -1 : 0}
53
- role="listbox"
54
54
  hidden={hidden || undefined}
55
55
  aria-hidden={hidden}
56
56
  aria-disabled={disabled}
@@ -63,7 +63,7 @@
63
63
  on:click
64
64
  on:change
65
65
  >
66
- <div class="inner" inert={disabled}>
66
+ <div role="none" class="inner" inert={disabled}>
67
67
  <slot />
68
68
  </div>
69
69
  </div>
@@ -71,7 +71,7 @@
71
71
  <style>[role=listbox] {
72
72
  display: flex;
73
73
  flex-direction: column;
74
- margin: 0;
74
+ margin: var(--sui-focus-ring-width);
75
75
  border-width: 1px;
76
76
  border-color: var(--sui-listbox-border-color);
77
77
  border-radius: var(--sui-listbox-border-radius);
@@ -34,22 +34,23 @@
34
34
  </script>
35
35
 
36
36
  <div
37
- {id}
38
- class="sui optgroup {className}"
39
37
  role="group"
38
+ {id}
39
+ class="sui option-group {className}"
40
40
  hidden={hidden || undefined}
41
41
  aria-hidden={hidden}
42
42
  aria-disabled={disabled}
43
43
  aria-labelledby="{id}-label"
44
+ aria-roledescription="option group"
44
45
  {...$$restProps}
45
46
  >
46
- <div id="{id}-label" class="label" role="none">{label}</div>
47
- <div class="inner" inert={disabled}>
47
+ <div role="none" id="{id}-label" class="label">{label}</div>
48
+ <div role="none" class="inner" inert={disabled}>
48
49
  <slot />
49
50
  </div>
50
51
  </div>
51
52
 
52
- <style>.optgroup:not(:first-child) {
53
+ <style>.option-group:not(:first-child) {
53
54
  margin: 12px 0 0;
54
55
  }
55
56
 
@@ -5,7 +5,6 @@
5
5
  @see https://w3c.github.io/aria/#option
6
6
  -->
7
7
  <script>
8
- import { onMount } from 'svelte';
9
8
  import Button from '../button/button.svelte';
10
9
  import Icon from '../icon/icon.svelte';
11
10
 
@@ -40,37 +39,12 @@
40
39
  * @type {string | undefined}
41
40
  */
42
41
  export let value = undefined;
43
-
44
- /**
45
- * Reference to the `Button` component.
46
- * @type {Button | undefined}
47
- */
48
- let buttonComponent;
49
-
50
- /**
51
- * Event listener for the `select` event fired in `group.js`.
52
- * @param {CustomEvent} event `select` event.
53
- */
54
- const listener = ({ type }) => {
55
- selected = type === 'select';
56
- };
57
-
58
- onMount(() => {
59
- buttonComponent.element.addEventListener('select', listener);
60
- buttonComponent.element.addEventListener('unselect', listener);
61
-
62
- return () => {
63
- buttonComponent.element.removeEventListener('select', listener);
64
- buttonComponent.element.removeEventListener('unselect', listener);
65
- };
66
- });
67
42
  </script>
68
43
 
69
- <div class="sui option {className}" hidden={hidden || undefined}>
44
+ <div role="none" class="sui option {className}" hidden={hidden || undefined}>
70
45
  <Button
71
- bind:this={buttonComponent}
72
- tabindex="-1"
73
46
  role="option"
47
+ tabindex="-1"
74
48
  aria-selected={selected}
75
49
  {label}
76
50
  {value}
@@ -84,6 +58,10 @@
84
58
  on:dragend
85
59
  on:drop
86
60
  on:select
61
+ on:change
62
+ on:change={(event) => {
63
+ selected = /** @type {CustomEvent} */ (event).detail.selected;
64
+ }}
87
65
  >
88
66
  {#if selected}
89
67
  <Icon class="check" name="check" />
@@ -105,6 +83,7 @@
105
83
  display: flex;
106
84
  justify-content: space-between;
107
85
  gap: 4px;
86
+ margin: 0 !important;
108
87
  border-radius: var(--sui-option-border-radius);
109
88
  padding: var(--sui-option-padding);
110
89
  width: 100%;
@@ -21,6 +21,7 @@ export default class Option extends SvelteComponent<{
21
21
  dragend: DragEvent;
22
22
  drop: DragEvent;
23
23
  select: Event;
24
+ change: Event;
24
25
  } & {
25
26
  [evt: string]: CustomEvent<any>;
26
27
  }, {
@@ -54,6 +55,7 @@ declare const __propDef: {
54
55
  dragend: DragEvent;
55
56
  drop: DragEvent;
56
57
  select: Event;
58
+ change: Event;
57
59
  } & {
58
60
  [evt: string]: CustomEvent<any>;
59
61
  };
@@ -67,23 +67,33 @@
67
67
  };
68
68
  </script>
69
69
 
70
- <Button
71
- class="sui menu-button {className}"
72
- {hidden}
73
- {disabled}
74
- {label}
75
- {variant}
76
- {size}
77
- {iconic}
78
- aria-haspopup="menu"
79
- {...$$restProps}
80
- bind:this={buttonComponent}
81
- >
82
- <slot name="start-icon" slot="start-icon" />
83
- <slot />
84
- <slot name="end-icon" slot="end-icon" />
85
- </Button>
70
+ <div role="none" class="wrapper">
71
+ <Button
72
+ class="sui menu-button {className}"
73
+ {hidden}
74
+ {disabled}
75
+ {label}
76
+ {variant}
77
+ {size}
78
+ {iconic}
79
+ aria-haspopup="menu"
80
+ {...$$restProps}
81
+ bind:this={buttonComponent}
82
+ >
83
+ <slot name="start-icon" slot="start-icon" />
84
+ <slot />
85
+ <slot name="end-icon" slot="end-icon" />
86
+ </Button>
87
+ </div>
86
88
 
87
89
  <Popup anchor={buttonComponent?.element} position={popupPosition} bind:this={popupComponent}>
88
90
  <slot name="popup" />
89
91
  </Popup>
92
+
93
+ <style>.wrapper {
94
+ display: contents;
95
+ }
96
+ .wrapper :global(.icon:last-child) {
97
+ margin: 0 -2px;
98
+ font-size: 20px;
99
+ }</style>
@@ -8,8 +8,8 @@
8
8
  export default class MenuButton extends SvelteComponent<{
9
9
  [x: string]: any;
10
10
  class?: string;
11
- label?: string;
12
11
  focus?: () => void;
12
+ label?: string;
13
13
  disabled?: boolean;
14
14
  size?: "small" | "medium" | "large";
15
15
  hidden?: boolean;
@@ -38,8 +38,8 @@ declare const __propDef: {
38
38
  props: {
39
39
  [x: string]: any;
40
40
  class?: string;
41
- label?: string;
42
41
  focus?: () => void;
42
+ label?: string;
43
43
  disabled?: boolean;
44
44
  size?: 'small' | 'medium' | 'large';
45
45
  hidden?: boolean | undefined;
@@ -44,8 +44,8 @@
44
44
  </script>
45
45
 
46
46
  <MenuItem
47
- class="sui menu-item-checkbox {className}"
48
47
  role="menuitemcheckbox"
48
+ class="sui menu-item-checkbox {className}"
49
49
  {label}
50
50
  {hidden}
51
51
  {disabled}
@@ -54,10 +54,11 @@
54
54
  {iconLabel}
55
55
  {...$$restProps}
56
56
  on:click
57
- on:click={() => {
58
- checked = !checked;
59
- }}
60
57
  on:select
58
+ on:change
59
+ on:change={(event) => {
60
+ checked = /** @type {CustomEvent} */ (event).detail.checked;
61
+ }}
61
62
  >
62
63
  <slot />
63
64
  <svelte:component this={checked ? Icon : undefined} slot="end-icon" name="check" />
@@ -17,6 +17,7 @@ export default class MenuItemCheckbox extends SvelteComponent<{
17
17
  }, {
18
18
  click: MouseEvent;
19
19
  select: Event;
20
+ change: Event;
20
21
  } & {
21
22
  [evt: string]: CustomEvent<any>;
22
23
  }, {
@@ -41,6 +42,7 @@ declare const __propDef: {
41
42
  events: {
42
43
  click: MouseEvent;
43
44
  select: Event;
45
+ change: Event;
44
46
  } & {
45
47
  [evt: string]: CustomEvent<any>;
46
48
  };
@@ -30,19 +30,20 @@
30
30
  </script>
31
31
 
32
32
  <div
33
+ role="group"
33
34
  {id}
34
35
  class="sui menu-item-group {className}"
35
36
  hidden={hidden || undefined}
36
- role="group"
37
37
  aria-hidden={hidden}
38
38
  aria-disabled={disabled}
39
39
  aria-labelledby={title ? '{id}-title' : undefined}
40
+ aria-roledescription="menu item group"
40
41
  {...$$restProps}
41
42
  >
42
43
  {#if title}
43
- <div class="title" id="{id}-title">{title}</div>
44
+ <div role="none" class="title" id="{id}-title">{title}</div>
44
45
  {/if}
45
- <div class="inner" inert={disabled}>
46
+ <div role="none" class="inner" inert={disabled}>
46
47
  <slot />
47
48
  </div>
48
49
  </div>
@@ -45,8 +45,8 @@
45
45
  </script>
46
46
 
47
47
  <MenuItem
48
- class="sui menu-item-radio {className}"
49
48
  role="menuitemradio"
49
+ class="sui menu-item-radio {className}"
50
50
  {label}
51
51
  {hidden}
52
52
  {disabled}
@@ -55,10 +55,11 @@
55
55
  {iconLabel}
56
56
  {...$$restProps}
57
57
  on:click
58
- on:click={() => {
59
- checked = !checked;
60
- }}
61
58
  on:select
59
+ on:change
60
+ on:change={(event) => {
61
+ checked = /** @type {CustomEvent} */ (event).detail.checked;
62
+ }}
62
63
  >
63
64
  <slot />
64
65
  <svelte:component this={checked ? Icon : undefined} slot="end-icon" name="check" />
@@ -18,6 +18,7 @@ export default class MenuItemRadio extends SvelteComponent<{
18
18
  }, {
19
19
  click: MouseEvent;
20
20
  select: Event;
21
+ change: Event;
21
22
  } & {
22
23
  [evt: string]: CustomEvent<any>;
23
24
  }, {
@@ -42,6 +43,7 @@ declare const __propDef: {
42
43
  events: {
43
44
  click: MouseEvent;
44
45
  select: Event;
46
+ change: Event;
45
47
  } & {
46
48
  [evt: string]: CustomEvent<any>;
47
49
  };
@@ -52,7 +52,7 @@
52
52
  $: hasChildren = role === 'menuitem' && $$slots.default;
53
53
  </script>
54
54
 
55
- <div class="sui menuitem {className}" hidden={hidden || undefined}>
55
+ <div role="none" class="sui menuitem {className}" hidden={hidden || undefined}>
56
56
  <Button
57
57
  {role}
58
58
  {hidden}
@@ -73,20 +73,21 @@
73
73
  }
74
74
  }}
75
75
  on:select
76
+ on:change
76
77
  >
77
78
  {#if iconName}
78
- <Icon slot="start-icon" name={iconName} label={iconLabel} />
79
+ <Icon slot="start-icon" name={iconName} aria-label={iconLabel} />
79
80
  {/if}
80
81
  {#if label}
81
- <span class="label">{label}</span>
82
+ <span role="none" class="label">{label}</span>
82
83
  {/if}
83
84
  {#if $$slots['end-icon']}
84
- <span class="icon-outer">
85
+ <span role="none" class="icon-outer">
85
86
  <slot name="end-icon" />
86
87
  </span>
87
88
  {/if}
88
89
  {#if hasChildren}
89
- <span class="icon-outer">
90
+ <span role="none" class="icon-outer">
90
91
  <Icon name="chevron_right" />
91
92
  </span>
92
93
  {/if}
@@ -107,6 +108,7 @@
107
108
  display: flex;
108
109
  justify-content: space-between !important;
109
110
  border-radius: var(--sui-option-border-radius);
111
+ margin: 0 !important;
110
112
  padding: 0 16px;
111
113
  width: 100%;
112
114
  min-width: 160px;
@@ -10,13 +10,14 @@ export default class MenuItem extends SvelteComponent<{
10
10
  class?: string;
11
11
  label?: string;
12
12
  disabled?: boolean;
13
- hidden?: boolean;
14
13
  role?: "menuitem" | "menuitemcheckbox" | "menuitemradio";
14
+ hidden?: boolean;
15
15
  iconName?: string;
16
16
  iconLabel?: string;
17
17
  }, {
18
18
  click: MouseEvent;
19
19
  select: Event;
20
+ change: Event;
20
21
  } & {
21
22
  [evt: string]: CustomEvent<any>;
22
23
  }, {
@@ -34,14 +35,15 @@ declare const __propDef: {
34
35
  class?: string;
35
36
  label?: string | undefined;
36
37
  disabled?: boolean;
37
- hidden?: boolean | undefined;
38
38
  role?: 'menuitem' | 'menuitemcheckbox' | 'menuitemradio';
39
+ hidden?: boolean | undefined;
39
40
  iconName?: string;
40
41
  iconLabel?: string;
41
42
  };
42
43
  events: {
43
44
  click: MouseEvent;
44
45
  select: Event;
46
+ change: Event;
45
47
  } & {
46
48
  [evt: string]: CustomEvent<any>;
47
49
  };
@@ -26,8 +26,8 @@
26
26
  </script>
27
27
 
28
28
  <div
29
- class="sui menu {className}"
30
29
  role="menu"
30
+ class="sui menu {className}"
31
31
  hidden={hidden || undefined}
32
32
  aria-hidden={hidden}
33
33
  aria-disabled={disabled}
@@ -24,17 +24,17 @@
24
24
  */
25
25
  export let disabled = false;
26
26
  /**
27
- * Whether to disable the widget. An alias of the `aria-readonly` attribute.
27
+ * Whether to make the widget read-only. An alias of the `aria-readonly` attribute.
28
28
  * @type {boolean}
29
29
  */
30
30
  export let readonly = false;
31
31
  /**
32
- * Whether to disable the widget. An alias of the `aria-required` attribute.
32
+ * Whether to mark the widget required. An alias of the `aria-required` attribute.
33
33
  * @type {boolean}
34
34
  */
35
35
  export let required = false;
36
36
  /**
37
- * Whether to disable the widget. An alias of the `aria-invalid` attribute.
37
+ * Whether to mark the widget invalid. An alias of the `aria-invalid` attribute.
38
38
  * @type {boolean}
39
39
  */
40
40
  export let invalid = false;
@@ -46,9 +46,9 @@
46
46
  </script>
47
47
 
48
48
  <div
49
+ role="radiogroup"
49
50
  class="sui radio-group {className} {orientation}"
50
51
  tabindex="-1"
51
- role="radiogroup"
52
52
  hidden={hidden || undefined}
53
53
  aria-hidden={hidden}
54
54
  aria-disabled={disabled}
@@ -60,7 +60,7 @@
60
60
  use:activateGroup
61
61
  on:change
62
62
  >
63
- <div class="inner" inert={disabled}>
63
+ <div role="none" class="inner" inert={disabled}>
64
64
  <slot />
65
65
  </div>
66
66
  </div>
@@ -72,16 +72,16 @@
72
72
  outline-width: 0 !important;
73
73
  }
74
74
  .radio-group.horizontal {
75
- gap: 16px;
75
+ gap: 8px;
76
76
  align-items: center;
77
77
  }
78
78
  .radio-group.vertical {
79
- gap: 8px;
79
+ gap: 4px;
80
80
  flex-direction: column;
81
81
  }
82
82
  @media (pointer: coarse) {
83
83
  .radio-group.vertical {
84
- gap: 16px;
84
+ gap: 8px;
85
85
  }
86
86
  }
87
87
 
@@ -13,8 +13,8 @@ export default class RadioGroup extends SvelteComponent<{
13
13
  disabled?: boolean;
14
14
  required?: boolean;
15
15
  hidden?: boolean;
16
- orientation?: "vertical" | "horizontal";
17
16
  readonly?: boolean;
17
+ orientation?: "vertical" | "horizontal";
18
18
  }, {
19
19
  change: Event;
20
20
  } & {
@@ -35,8 +35,8 @@ declare const __propDef: {
35
35
  disabled?: boolean;
36
36
  required?: boolean;
37
37
  hidden?: boolean | undefined;
38
- orientation?: 'horizontal' | 'vertical';
39
38
  readonly?: boolean;
39
+ orientation?: 'horizontal' | 'vertical';
40
40
  };
41
41
  events: {
42
42
  change: Event;
@@ -56,9 +56,9 @@
56
56
  </script>
57
57
 
58
58
  <span
59
+ role="none"
59
60
  class="sui radio {className}"
60
61
  class:disabled
61
- role="none"
62
62
  hidden={hidden || undefined}
63
63
  {...$$restProps}
64
64
  on:click={(event) => {
@@ -68,8 +68,8 @@
68
68
  }}
69
69
  >
70
70
  <Button
71
- {id}
72
71
  role="radio"
72
+ {id}
73
73
  {hidden}
74
74
  {disabled}
75
75
  {name}
@@ -82,6 +82,7 @@
82
82
  checked = true;
83
83
  }}
84
84
  on:select
85
+ on:change
85
86
  />
86
87
  {#if $$slots.default || label}
87
88
  <label id="{id}-label">
@@ -98,6 +99,7 @@
98
99
  display: inline-flex;
99
100
  align-items: center;
100
101
  gap: 8px;
102
+ margin: var(--sui-focus-ring-width);
101
103
  color: var(--sui-control-foreground-color);
102
104
  font-family: var(--sui-control-font-family);
103
105
  font-size: var(--sui-control-font-size);
@@ -126,6 +128,7 @@
126
128
  .radio :global(button) {
127
129
  justify-content: center;
128
130
  overflow: hidden;
131
+ margin: 0 !important;
129
132
  border-width: 1.5px;
130
133
  border-color: var(--sui-checkbox-border-color);
131
134
  border-radius: var(--sui-checkbox-height);
@@ -18,6 +18,7 @@ export default class Radio extends SvelteComponent<{
18
18
  hidden?: boolean;
19
19
  }, {
20
20
  select: Event;
21
+ change: Event;
21
22
  } & {
22
23
  [evt: string]: CustomEvent<any>;
23
24
  }, {
@@ -41,6 +42,7 @@ declare const __propDef: {
41
42
  };
42
43
  events: {
43
44
  select: Event;
45
+ change: Event;
44
46
  } & {
45
47
  [evt: string]: CustomEvent<any>;
46
48
  };