@sveltia/ui 0.1.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 (104) hide show
  1. package/LICENSE.txt +21 -0
  2. package/package/components/composite/calendar.svelte +240 -0
  3. package/package/components/composite/calendar.svelte.d.ts +27 -0
  4. package/package/components/composite/checkbox-group.svelte +43 -0
  5. package/package/components/composite/checkbox-group.svelte.d.ts +34 -0
  6. package/package/components/composite/combobox.svelte +179 -0
  7. package/package/components/composite/combobox.svelte.d.ts +47 -0
  8. package/package/components/composite/disclosure.svelte +60 -0
  9. package/package/components/composite/disclosure.svelte.d.ts +35 -0
  10. package/package/components/composite/grid.svelte +24 -0
  11. package/package/components/composite/grid.svelte.d.ts +31 -0
  12. package/package/components/composite/listbox.svelte +63 -0
  13. package/package/components/composite/listbox.svelte.d.ts +52 -0
  14. package/package/components/composite/menu-item-group.svelte +31 -0
  15. package/package/components/composite/menu-item-group.svelte.d.ts +33 -0
  16. package/package/components/composite/menu.svelte +44 -0
  17. package/package/components/composite/menu.svelte.d.ts +41 -0
  18. package/package/components/composite/radio-button-group.svelte +44 -0
  19. package/package/components/composite/radio-button-group.svelte.d.ts +36 -0
  20. package/package/components/composite/select-button-group.svelte +69 -0
  21. package/package/components/composite/select-button-group.svelte.d.ts +44 -0
  22. package/package/components/composite/select.svelte +34 -0
  23. package/package/components/composite/select.svelte.d.ts +38 -0
  24. package/package/components/composite/tab-list.svelte +76 -0
  25. package/package/components/composite/tab-list.svelte.d.ts +55 -0
  26. package/package/components/core/button.svelte +209 -0
  27. package/package/components/core/button.svelte.d.ts +113 -0
  28. package/package/components/core/checkbox.svelte +105 -0
  29. package/package/components/core/checkbox.svelte.d.ts +43 -0
  30. package/package/components/core/dialog.svelte +258 -0
  31. package/package/components/core/dialog.svelte.d.ts +73 -0
  32. package/package/components/core/grid-cell.svelte +14 -0
  33. package/package/components/core/grid-cell.svelte.d.ts +29 -0
  34. package/package/components/core/group.svelte +31 -0
  35. package/package/components/core/group.svelte.d.ts +33 -0
  36. package/package/components/core/icon.svelte +21 -0
  37. package/package/components/core/icon.svelte.d.ts +27 -0
  38. package/package/components/core/menu-button.svelte +65 -0
  39. package/package/components/core/menu-button.svelte.d.ts +36 -0
  40. package/package/components/core/menu-item-checkbox.svelte +24 -0
  41. package/package/components/core/menu-item-checkbox.svelte.d.ts +34 -0
  42. package/package/components/core/menu-item-radio.svelte +19 -0
  43. package/package/components/core/menu-item-radio.svelte.d.ts +34 -0
  44. package/package/components/core/menu-item.svelte +113 -0
  45. package/package/components/core/menu-item.svelte.d.ts +44 -0
  46. package/package/components/core/number-input.svelte +109 -0
  47. package/package/components/core/number-input.svelte.d.ts +40 -0
  48. package/package/components/core/option.svelte +57 -0
  49. package/package/components/core/option.svelte.d.ts +44 -0
  50. package/package/components/core/password-input.svelte +76 -0
  51. package/package/components/core/password-input.svelte.d.ts +36 -0
  52. package/package/components/core/radio-button.svelte +91 -0
  53. package/package/components/core/radio-button.svelte.d.ts +37 -0
  54. package/package/components/core/row-group.svelte +14 -0
  55. package/package/components/core/row-group.svelte.d.ts +29 -0
  56. package/package/components/core/row.svelte +14 -0
  57. package/package/components/core/row.svelte.d.ts +33 -0
  58. package/package/components/core/search-bar.svelte +90 -0
  59. package/package/components/core/search-bar.svelte.d.ts +49 -0
  60. package/package/components/core/select-button.svelte +29 -0
  61. package/package/components/core/select-button.svelte.d.ts +40 -0
  62. package/package/components/core/separator.svelte +28 -0
  63. package/package/components/core/separator.svelte.d.ts +26 -0
  64. package/package/components/core/spacer.svelte +22 -0
  65. package/package/components/core/spacer.svelte.d.ts +25 -0
  66. package/package/components/core/switch.svelte +80 -0
  67. package/package/components/core/switch.svelte.d.ts +37 -0
  68. package/package/components/core/tab-panel.svelte +23 -0
  69. package/package/components/core/tab-panel.svelte.d.ts +33 -0
  70. package/package/components/core/tab.svelte +20 -0
  71. package/package/components/core/tab.svelte.d.ts +33 -0
  72. package/package/components/core/text-area.svelte +90 -0
  73. package/package/components/core/text-area.svelte.d.ts +57 -0
  74. package/package/components/core/text-input.svelte +145 -0
  75. package/package/components/core/text-input.svelte.d.ts +71 -0
  76. package/package/components/core/toolbar.svelte +74 -0
  77. package/package/components/core/toolbar.svelte.d.ts +35 -0
  78. package/package/components/editor/markdown.svelte +75 -0
  79. package/package/components/editor/markdown.svelte.d.ts +25 -0
  80. package/package/components/helpers/group.d.ts +37 -0
  81. package/package/components/helpers/group.js +246 -0
  82. package/package/components/helpers/popup.d.ts +31 -0
  83. package/package/components/helpers/popup.js +134 -0
  84. package/package/components/helpers/util.d.ts +1 -0
  85. package/package/components/helpers/util.js +8 -0
  86. package/package/components/util/app-shell.svelte +282 -0
  87. package/package/components/util/app-shell.svelte.d.ts +38 -0
  88. package/package/components/util/misc.d.ts +2 -0
  89. package/package/components/util/misc.js +22 -0
  90. package/package/components/util/popup.svelte +110 -0
  91. package/package/components/util/popup.svelte.d.ts +46 -0
  92. package/package/components/util/portal.svelte +34 -0
  93. package/package/components/util/portal.svelte.d.ts +28 -0
  94. package/package/index.d.ts +40 -0
  95. package/package/index.js +65 -0
  96. package/package/locales/en.d.ts +42 -0
  97. package/package/locales/en.js +41 -0
  98. package/package/locales/ja.d.ts +42 -0
  99. package/package/locales/ja.js +41 -0
  100. package/package/styles/core.scss +134 -0
  101. package/package/styles/variables.scss +113 -0
  102. package/package/typedef.d.ts +0 -0
  103. package/package/typedef.js +0 -0
  104. package/package.json +461 -0
@@ -0,0 +1,258 @@
1
+ <!--
2
+ @component
3
+ @see https://w3c.github.io/aria/#dialog
4
+ @see https://w3c.github.io/aria-practices/#dialog_modal
5
+ -->
6
+ <script>
7
+ import { createEventDispatcher, onMount } from 'svelte';
8
+ import { _ } from 'svelte-i18n';
9
+ import Button from './button.svelte';
10
+ import Spacer from './spacer.svelte';
11
+
12
+ /**
13
+ * CSS class name on the button.
14
+ * @type {String}
15
+ */
16
+ let className = '';
17
+
18
+ export { className as class };
19
+
20
+ export let open = false;
21
+
22
+ export let title = '';
23
+
24
+ /**
25
+ * Width of the dialog.
26
+ * @type {('small'|'medium'|'large')}
27
+ */
28
+ export let size = 'medium';
29
+
30
+ export let modal = true;
31
+
32
+ export let showCancel = true;
33
+
34
+ export let showOk = true;
35
+
36
+ export let showClose = false;
37
+
38
+ export let okLabel = '';
39
+
40
+ export let okDisabled = false;
41
+
42
+ export let cancelLabel = '';
43
+
44
+ export let cancelDisabled = false;
45
+
46
+ export let closeOnBackdropClick = false;
47
+
48
+ const dispatch = createEventDispatcher();
49
+ /** @type {?HTMLDialogElement} */
50
+ let dialog;
51
+ let showContent = false;
52
+ let showContentTimer = 0;
53
+
54
+ $: {
55
+ if (dialog) {
56
+ if (open) {
57
+ window.clearTimeout(showContentTimer);
58
+ showContent = true;
59
+
60
+ if (modal) {
61
+ dialog.showModal();
62
+ } else {
63
+ dialog.show();
64
+ }
65
+ } else {
66
+ dialog.close();
67
+
68
+ showContentTimer = window.setTimeout(() => {
69
+ showContent = false;
70
+ }, 500);
71
+
72
+ if (dialog.returnValue === 'ok') {
73
+ dispatch('ok');
74
+ }
75
+
76
+ if (dialog.returnValue === 'cancel') {
77
+ dispatch('cancel');
78
+ }
79
+
80
+ dispatch('close', dialog.returnValue);
81
+ }
82
+ }
83
+ }
84
+
85
+ onMount(() => {
86
+ // Avoid nested dialogs
87
+ (document.querySelector('.sui.app-shell') || document.body).appendChild(dialog);
88
+ });
89
+ </script>
90
+
91
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
92
+ <dialog
93
+ bind:this={dialog}
94
+ class="sui dialog {className} {size}"
95
+ on:click={({ target }) => {
96
+ if (closeOnBackdropClick && target?.matches('dialog')) {
97
+ dialog.returnValue = 'cancel';
98
+ open = false;
99
+ }
100
+ }}
101
+ on:cancel={() => {
102
+ // Cancelled with the Escape key
103
+ open = false;
104
+ }}
105
+ >
106
+ <form method="dialog" on:submit|preventDefault>
107
+ {#if showContent}
108
+ {#if title || showClose || $$slots.header || $$slots['header-extra']}
109
+ <div class="header">
110
+ {#if $$slots.header}
111
+ <slot name="header" />
112
+ {:else}
113
+ <div class="title">
114
+ {title}
115
+ </div>
116
+ <Spacer flex={true} />
117
+ {#if $$slots['header-extra']}
118
+ <slot name="header-extra" />
119
+ {/if}
120
+ {#if showClose}
121
+ <Button
122
+ class="ternary iconic"
123
+ iconName="close"
124
+ iconLabel={$_('sui._.close')}
125
+ on:click={() => {
126
+ dialog.returnValue = 'close';
127
+ open = false;
128
+ }}
129
+ />
130
+ {/if}
131
+ {/if}
132
+ </div>
133
+ {/if}
134
+ <div class="main">
135
+ <slot />
136
+ </div>
137
+ {#if showOk || showCancel || $$slots.footer || $$slots['footer-extra']}
138
+ <div class="footer">
139
+ {#if $$slots.footer}
140
+ <slot name="footer" />
141
+ {:else}
142
+ {#if $$slots['footer-extra']}
143
+ <slot name="footer-extra" />
144
+ {/if}
145
+ <Spacer flex={true} />
146
+ {#if showOk}
147
+ <Button
148
+ class="primary"
149
+ label={okLabel || $_('sui._.ok')}
150
+ disabled={okDisabled}
151
+ on:click={() => {
152
+ dialog.returnValue = 'ok';
153
+ open = false;
154
+ }}
155
+ />
156
+ {/if}
157
+ {#if showCancel}
158
+ <Button
159
+ class="secondary"
160
+ label={cancelLabel || $_('sui._.cancel')}
161
+ disabled={cancelDisabled}
162
+ on:click={() => {
163
+ dialog.returnValue = 'cancel';
164
+ open = false;
165
+ }}
166
+ />
167
+ {/if}
168
+ {/if}
169
+ </div>
170
+ {/if}
171
+ {/if}
172
+ </form>
173
+ </dialog>
174
+
175
+ <style>dialog {
176
+ display: flex;
177
+ justify-content: center;
178
+ align-items: center;
179
+ background-color: var(--popup-backdrop-color);
180
+ backdrop-filter: blur(8px);
181
+ transition: all 200ms;
182
+ }
183
+ dialog:not([open]) {
184
+ opacity: 0;
185
+ pointer-events: none !important;
186
+ }
187
+ dialog:not([open]) form {
188
+ transform: scale(90%);
189
+ }
190
+ dialog:not([open]) :global(*) {
191
+ pointer-events: none !important;
192
+ }
193
+ dialog[open] {
194
+ opacity: 1;
195
+ }
196
+ dialog[open] form {
197
+ transform: scale(100%);
198
+ }
199
+ dialog :global(a),
200
+ dialog :global(input),
201
+ dialog :global(textarea),
202
+ dialog :global(button),
203
+ dialog :global([tabindex="0"]) {
204
+ pointer-events: all;
205
+ }
206
+ dialog form {
207
+ display: flex;
208
+ flex-direction: column;
209
+ border-radius: 4px;
210
+ background-color: var(--secondary-background-color);
211
+ box-shadow: 0 8px 16px var(--popup-shadow-color);
212
+ transition: all 200ms;
213
+ }
214
+ dialog.small form {
215
+ width: 400px;
216
+ max-height: 400px;
217
+ }
218
+ dialog.medium form {
219
+ width: 600px;
220
+ max-height: 600px;
221
+ }
222
+ dialog.large form {
223
+ width: 800px;
224
+ max-height: 800px;
225
+ }
226
+ dialog.x-large form {
227
+ width: 1000px;
228
+ max-height: 1000px;
229
+ }
230
+
231
+ .header,
232
+ .footer {
233
+ display: flex;
234
+ align-items: center;
235
+ gap: 8px;
236
+ }
237
+
238
+ .header {
239
+ box-sizing: content-box;
240
+ margin: 0 16px;
241
+ border-width: 0 0 1px;
242
+ border-color: var(--secondary-border-color);
243
+ padding: 16px 8px;
244
+ height: 32px;
245
+ }
246
+ .header .title {
247
+ font-size: 16px;
248
+ }
249
+
250
+ .footer {
251
+ margin: 0 24px 24px;
252
+ }
253
+
254
+ .main {
255
+ overflow: auto;
256
+ margin: 24px 24px;
257
+ white-space: normal;
258
+ }</style>
@@ -0,0 +1,73 @@
1
+ /** @typedef {typeof __propDef.props} DialogProps */
2
+ /** @typedef {typeof __propDef.events} DialogEvents */
3
+ /** @typedef {typeof __propDef.slots} DialogSlots */
4
+ /**
5
+ * @see https://w3c.github.io/aria/#dialog
6
+ * @see https://w3c.github.io/aria-practices/#dialog_modal
7
+ */
8
+ export default class Dialog extends SvelteComponentTyped<{
9
+ class?: string;
10
+ size?: "small" | "medium" | "large";
11
+ title?: string;
12
+ open?: boolean;
13
+ modal?: boolean;
14
+ showCancel?: boolean;
15
+ showOk?: boolean;
16
+ showClose?: boolean;
17
+ okLabel?: string;
18
+ okDisabled?: boolean;
19
+ cancelLabel?: string;
20
+ cancelDisabled?: boolean;
21
+ closeOnBackdropClick?: boolean;
22
+ }, {
23
+ submit: SubmitEvent;
24
+ ok: CustomEvent<any>;
25
+ cancel: CustomEvent<any>;
26
+ close: CustomEvent<any>;
27
+ } & {
28
+ [evt: string]: CustomEvent<any>;
29
+ }, {
30
+ header: {};
31
+ 'header-extra': {};
32
+ default: {};
33
+ footer: {};
34
+ 'footer-extra': {};
35
+ }> {
36
+ }
37
+ export type DialogProps = typeof __propDef.props;
38
+ export type DialogEvents = typeof __propDef.events;
39
+ export type DialogSlots = typeof __propDef.slots;
40
+ import { SvelteComponentTyped } from "svelte";
41
+ declare const __propDef: {
42
+ props: {
43
+ class?: string;
44
+ size?: ('small' | 'medium' | 'large');
45
+ title?: string;
46
+ open?: boolean;
47
+ modal?: boolean;
48
+ showCancel?: boolean;
49
+ showOk?: boolean;
50
+ showClose?: boolean;
51
+ okLabel?: string;
52
+ okDisabled?: boolean;
53
+ cancelLabel?: string;
54
+ cancelDisabled?: boolean;
55
+ closeOnBackdropClick?: boolean;
56
+ };
57
+ events: {
58
+ submit: SubmitEvent;
59
+ ok: CustomEvent<any>;
60
+ cancel: CustomEvent<any>;
61
+ close: CustomEvent<any>;
62
+ } & {
63
+ [evt: string]: CustomEvent<any>;
64
+ };
65
+ slots: {
66
+ header: {};
67
+ 'header-extra': {};
68
+ default: {};
69
+ footer: {};
70
+ 'footer-extra': {};
71
+ };
72
+ };
73
+ export {};
@@ -0,0 +1,14 @@
1
+ <script>
2
+ /**
3
+ * CSS class name on the button.
4
+ * @type {String}
5
+ */
6
+ // eslint-disable-next-line padding-line-between-statements
7
+ let className = '';
8
+
9
+ export { className as class };
10
+ </script>
11
+
12
+ <div role="gridcell" class="sui grid-cell {className}" {...$$restProps}>
13
+ <slot />
14
+ </div>
@@ -0,0 +1,29 @@
1
+ /** @typedef {typeof __propDef.props} GridCellProps */
2
+ /** @typedef {typeof __propDef.events} GridCellEvents */
3
+ /** @typedef {typeof __propDef.slots} GridCellSlots */
4
+ export default class GridCell extends SvelteComponentTyped<{
5
+ [x: string]: any;
6
+ class?: string;
7
+ }, {
8
+ [evt: string]: CustomEvent<any>;
9
+ }, {
10
+ default: {};
11
+ }> {
12
+ }
13
+ export type GridCellProps = typeof __propDef.props;
14
+ export type GridCellEvents = typeof __propDef.events;
15
+ export type GridCellSlots = typeof __propDef.slots;
16
+ import { SvelteComponentTyped } from "svelte";
17
+ declare const __propDef: {
18
+ props: {
19
+ [x: string]: any;
20
+ class?: string;
21
+ };
22
+ events: {
23
+ [evt: string]: CustomEvent<any>;
24
+ };
25
+ slots: {
26
+ default: {};
27
+ };
28
+ };
29
+ export {};
@@ -0,0 +1,31 @@
1
+ <script>
2
+ import { getRandomId } from '../helpers/util';
3
+
4
+ /**
5
+ * CSS class name on the button.
6
+ * @type {String}
7
+ */
8
+ let className = '';
9
+
10
+ export { className as class };
11
+
12
+ export let title = '';
13
+
14
+ export let ariaLabel = '';
15
+
16
+ const id = getRandomId('group');
17
+ </script>
18
+
19
+ <div
20
+ class="sui group {className}"
21
+ role="group"
22
+ {id}
23
+ aria-label={ariaLabel || undefined}
24
+ aria-labelledby={title ? '{id}-title' : undefined}
25
+ {...$$restProps}
26
+ >
27
+ {#if title}
28
+ <div class="title" id="{id}-title">{title}</div>
29
+ {/if}
30
+ <slot />
31
+ </div>
@@ -0,0 +1,33 @@
1
+ /** @typedef {typeof __propDef.props} GroupProps */
2
+ /** @typedef {typeof __propDef.events} GroupEvents */
3
+ /** @typedef {typeof __propDef.slots} GroupSlots */
4
+ export default class Group extends SvelteComponentTyped<{
5
+ [x: string]: any;
6
+ class?: string;
7
+ title?: string;
8
+ ariaLabel?: string;
9
+ }, {
10
+ [evt: string]: CustomEvent<any>;
11
+ }, {
12
+ default: {};
13
+ }> {
14
+ }
15
+ export type GroupProps = typeof __propDef.props;
16
+ export type GroupEvents = typeof __propDef.events;
17
+ export type GroupSlots = typeof __propDef.slots;
18
+ import { SvelteComponentTyped } from "svelte";
19
+ declare const __propDef: {
20
+ props: {
21
+ [x: string]: any;
22
+ class?: string;
23
+ title?: string;
24
+ ariaLabel?: string;
25
+ };
26
+ events: {
27
+ [evt: string]: CustomEvent<any>;
28
+ };
29
+ slots: {
30
+ default: {};
31
+ };
32
+ };
33
+ export {};
@@ -0,0 +1,21 @@
1
+ <script>
2
+ /**
3
+ * CSS class name on the button.
4
+ * @type {String}
5
+ */
6
+ let className = '';
7
+
8
+ export { className as class };
9
+
10
+ export let name = '';
11
+
12
+ export let label = '';
13
+ </script>
14
+
15
+ <span
16
+ class="sui icon material-symbols-outlined {className}"
17
+ aria-label={label || undefined}
18
+ aria-hidden={label ? undefined : true}
19
+ >
20
+ {name}
21
+ </span>
@@ -0,0 +1,27 @@
1
+ /** @typedef {typeof __propDef.props} IconProps */
2
+ /** @typedef {typeof __propDef.events} IconEvents */
3
+ /** @typedef {typeof __propDef.slots} IconSlots */
4
+ export default class Icon extends SvelteComponentTyped<{
5
+ class?: string;
6
+ name?: string;
7
+ label?: string;
8
+ }, {
9
+ [evt: string]: CustomEvent<any>;
10
+ }, {}> {
11
+ }
12
+ export type IconProps = typeof __propDef.props;
13
+ export type IconEvents = typeof __propDef.events;
14
+ export type IconSlots = typeof __propDef.slots;
15
+ import { SvelteComponentTyped } from "svelte";
16
+ declare const __propDef: {
17
+ props: {
18
+ class?: string;
19
+ name?: string;
20
+ label?: string;
21
+ };
22
+ events: {
23
+ [evt: string]: CustomEvent<any>;
24
+ };
25
+ slots: {};
26
+ };
27
+ export {};
@@ -0,0 +1,65 @@
1
+ <!--
2
+ @component
3
+ @see https://w3c.github.io/aria-practices/#menubutton
4
+ -->
5
+ <script>
6
+ import Menu from '../composite/menu.svelte';
7
+ import Popup from '../util/popup.svelte';
8
+ import Button from './button.svelte';
9
+
10
+ /**
11
+ * CSS class name on the button.
12
+ * @type {String}
13
+ */
14
+ let className = '';
15
+
16
+ export { className as class };
17
+
18
+ /**
19
+ * Where to show the dropdown menu.
20
+ * @type {PopupPosition}
21
+ */
22
+ export let position = 'bottom-left';
23
+
24
+ /**
25
+ * Whether to show an arrow icon next to the label, if `iconName` is not given. The default is
26
+ * `true`.
27
+ */
28
+ export let showArrow = true;
29
+
30
+ /** @type {?Button} */
31
+ let buttonComponent;
32
+ /** @type {?Menu} */
33
+ let menuComponent;
34
+ </script>
35
+
36
+ <Button
37
+ class="sui menu-button {className}"
38
+ aria-haspopup="menu"
39
+ iconName={$$props.iconName || (showArrow ? 'arrow_drop_down' : undefined)}
40
+ iconPosition="end"
41
+ {...$$restProps}
42
+ bind:this={buttonComponent}
43
+ on:keydown={(event) => {
44
+ const { key, ctrlKey, metaKey, shiftKey, altKey } = event;
45
+
46
+ if (['ArrowUp', 'ArrowDown'].includes(key) && !ctrlKey && !metaKey && !shiftKey && !altKey) {
47
+ event.preventDefault();
48
+
49
+ const members = [
50
+ ...menuComponent.element.querySelectorAll('[role^="menuitem"]:not([aria-disabled="true"])'),
51
+ ];
52
+
53
+ if (members.length) {
54
+ (key === 'ArrowUp' ? members.pop() : members.shift()).focus();
55
+ }
56
+ }
57
+ }}
58
+ >
59
+ <slot name="button" />
60
+ </Button>
61
+ <Popup anchor={buttonComponent?.element} {position}>
62
+ <Menu bind:this={menuComponent}>
63
+ <slot />
64
+ </Menu>
65
+ </Popup>
@@ -0,0 +1,36 @@
1
+ /** @typedef {typeof __propDef.props} MenuButtonProps */
2
+ /** @typedef {typeof __propDef.events} MenuButtonEvents */
3
+ /** @typedef {typeof __propDef.slots} MenuButtonSlots */
4
+ /** @see https://w3c.github.io/aria-practices/#menubutton */
5
+ export default class MenuButton extends SvelteComponentTyped<{
6
+ [x: string]: any;
7
+ class?: string;
8
+ position?: any;
9
+ showArrow?: boolean;
10
+ }, {
11
+ [evt: string]: CustomEvent<any>;
12
+ }, {
13
+ button: {};
14
+ default: {};
15
+ }> {
16
+ }
17
+ export type MenuButtonProps = typeof __propDef.props;
18
+ export type MenuButtonEvents = typeof __propDef.events;
19
+ export type MenuButtonSlots = typeof __propDef.slots;
20
+ import { SvelteComponentTyped } from "svelte";
21
+ declare const __propDef: {
22
+ props: {
23
+ [x: string]: any;
24
+ class?: string;
25
+ position?: any;
26
+ showArrow?: boolean;
27
+ };
28
+ events: {
29
+ [evt: string]: CustomEvent<any>;
30
+ };
31
+ slots: {
32
+ button: {};
33
+ default: {};
34
+ };
35
+ };
36
+ export {};
@@ -0,0 +1,24 @@
1
+ <!--
2
+ @component
3
+ @see https://w3c.github.io/aria/#menuitemcheckbox
4
+ -->
5
+ <script>
6
+ import MenuItem from './menu-item.svelte';
7
+
8
+ /**
9
+ * CSS class name on the button.
10
+ * @type {String}
11
+ */
12
+ let className = '';
13
+
14
+ export { className as class };
15
+ </script>
16
+
17
+ <MenuItem
18
+ class="sui menu-item-checkbox {className}"
19
+ role="menuitemcheckbox"
20
+ {...$$restProps}
21
+ on:click
22
+ >
23
+ <slot />
24
+ </MenuItem>
@@ -0,0 +1,34 @@
1
+ /** @typedef {typeof __propDef.props} MenuItemCheckboxProps */
2
+ /** @typedef {typeof __propDef.events} MenuItemCheckboxEvents */
3
+ /** @typedef {typeof __propDef.slots} MenuItemCheckboxSlots */
4
+ /** @see https://w3c.github.io/aria/#menuitemcheckbox */
5
+ export default class MenuItemCheckbox extends SvelteComponentTyped<{
6
+ [x: string]: any;
7
+ class?: string;
8
+ }, {
9
+ click: MouseEvent;
10
+ } & {
11
+ [evt: string]: CustomEvent<any>;
12
+ }, {
13
+ default: {};
14
+ }> {
15
+ }
16
+ export type MenuItemCheckboxProps = typeof __propDef.props;
17
+ export type MenuItemCheckboxEvents = typeof __propDef.events;
18
+ export type MenuItemCheckboxSlots = typeof __propDef.slots;
19
+ import { SvelteComponentTyped } from "svelte";
20
+ declare const __propDef: {
21
+ props: {
22
+ [x: string]: any;
23
+ class?: string;
24
+ };
25
+ events: {
26
+ click: MouseEvent;
27
+ } & {
28
+ [evt: string]: CustomEvent<any>;
29
+ };
30
+ slots: {
31
+ default: {};
32
+ };
33
+ };
34
+ export {};
@@ -0,0 +1,19 @@
1
+ <!--
2
+ @component
3
+ @see https://w3c.github.io/aria/#menuitemradio
4
+ -->
5
+ <script>
6
+ import MenuItem from './menu-item.svelte';
7
+
8
+ /**
9
+ * CSS class name on the button.
10
+ * @type {String}
11
+ */
12
+ let className = '';
13
+
14
+ export { className as class };
15
+ </script>
16
+
17
+ <MenuItem class="sui menu-item-radio {className}" role="menuitemradio" {...$$restProps} on:click>
18
+ <slot />
19
+ </MenuItem>