@geoffcox/sterling-svelte 0.0.26 → 0.0.28

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 (92) hide show
  1. package/Button.svelte +81 -25
  2. package/Button.svelte.d.ts +3 -0
  3. package/Checkbox.svelte +56 -26
  4. package/Checkbox.svelte.d.ts +2 -0
  5. package/ColorPicker.constants.d.ts +1 -0
  6. package/ColorPicker.constants.js +1 -0
  7. package/ColorPicker.svelte +257 -0
  8. package/ColorPicker.svelte.d.ts +49 -0
  9. package/ColorPicker.types.d.ts +4 -0
  10. package/Dialog.svelte +10 -10
  11. package/Dropdown.svelte +97 -58
  12. package/Dropdown.svelte.d.ts +4 -0
  13. package/HexColorSliders.svelte +171 -0
  14. package/HexColorSliders.svelte.d.ts +22 -0
  15. package/HslColorSliders.svelte +208 -0
  16. package/HslColorSliders.svelte.d.ts +22 -0
  17. package/Input.svelte +59 -25
  18. package/Input.svelte.d.ts +3 -2
  19. package/Label.constants.d.ts +1 -0
  20. package/Label.constants.js +1 -0
  21. package/Label.svelte +212 -14
  22. package/Label.svelte.d.ts +24 -4
  23. package/Label.types.d.ts +4 -0
  24. package/Label.types.js +1 -0
  25. package/Link.svelte +62 -16
  26. package/Link.svelte.d.ts +1 -0
  27. package/List.svelte +29 -16
  28. package/List.svelte.d.ts +1 -0
  29. package/List.types.d.ts +4 -3
  30. package/ListItem.svelte +30 -10
  31. package/ListItem.svelte.d.ts +1 -1
  32. package/Menu.svelte +7 -7
  33. package/MenuBar.svelte +1 -1
  34. package/MenuButton.svelte +3 -9
  35. package/MenuButton.svelte.d.ts +2 -4
  36. package/MenuItem.svelte +34 -12
  37. package/MenuItem.svelte.d.ts +2 -1
  38. package/MenuItemDisplay.svelte +8 -1
  39. package/MenuSeparator.svelte +3 -3
  40. package/Popover.svelte +66 -51
  41. package/Popover.svelte.d.ts +4 -2
  42. package/Progress.constants.d.ts +1 -1
  43. package/Progress.constants.js +1 -1
  44. package/Progress.svelte +34 -28
  45. package/Progress.svelte.d.ts +1 -1
  46. package/Progress.types.d.ts +3 -3
  47. package/Radio.svelte +54 -23
  48. package/Radio.svelte.d.ts +2 -0
  49. package/RgbColorSliders.svelte +182 -0
  50. package/RgbColorSliders.svelte.d.ts +22 -0
  51. package/Select.svelte +32 -25
  52. package/Select.svelte.d.ts +1 -1
  53. package/Slider.svelte +111 -123
  54. package/Slider.svelte.d.ts +1 -0
  55. package/Switch.svelte +112 -41
  56. package/Switch.svelte.d.ts +3 -2
  57. package/Tab.svelte +53 -29
  58. package/Tab.svelte.d.ts +7 -4
  59. package/TabList.svelte +21 -11
  60. package/TabList.svelte.d.ts +1 -0
  61. package/TabList.types.d.ts +1 -0
  62. package/TextArea.svelte +48 -22
  63. package/TextArea.svelte.d.ts +4 -3
  64. package/Tooltip.svelte +59 -16
  65. package/Tooltip.svelte.d.ts +34 -2
  66. package/Tree.svelte +35 -21
  67. package/Tree.svelte.d.ts +2 -0
  68. package/Tree.types.d.ts +6 -8
  69. package/TreeChevron.svelte +1 -1
  70. package/TreeItem.svelte +40 -9
  71. package/TreeItem.svelte.d.ts +2 -0
  72. package/TreeItem.types.d.ts +4 -4
  73. package/TreeItemDisplay.svelte +28 -9
  74. package/TreeItemDisplay.svelte.d.ts +3 -1
  75. package/actions/clickOutside.js +1 -1
  76. package/actions/trapKeyboardFocus.d.ts +3 -0
  77. package/actions/trapKeyboardFocus.js +52 -0
  78. package/floating-ui.types.d.ts +2 -0
  79. package/index.d.ts +14 -10
  80. package/index.js +11 -7
  81. package/package.json +12 -4
  82. package/theme/applyTheme.js +3 -2
  83. package/theme/colors.d.ts +1 -0
  84. package/theme/colors.js +28 -13
  85. package/theme/darkTheme.js +129 -87
  86. package/theme/lightTheme.js +109 -90
  87. package/Field.constants.d.ts +0 -1
  88. package/Field.constants.js +0 -1
  89. package/Field.svelte +0 -265
  90. package/Field.svelte.d.ts +0 -75
  91. package/Field.types.d.ts +0 -4
  92. /package/{Field.types.js → ColorPicker.types.js} +0 -0
package/Label.svelte.d.ts CHANGED
@@ -2,9 +2,15 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
- disabled?: boolean | undefined;
6
- blur?: (() => void) | undefined;
5
+ for?: string | undefined;
6
+ forwardClick?: boolean | undefined;
7
+ text?: string | undefined;
8
+ message?: string | undefined;
9
+ required?: boolean | undefined;
10
+ requiredReason?: string | undefined;
11
+ status?: string | undefined;
7
12
  click?: (() => void) | undefined;
13
+ blur?: (() => void) | undefined;
8
14
  focus?: ((options?: FocusOptions) => void) | undefined;
9
15
  };
10
16
  events: {
@@ -39,8 +45,22 @@ declare const __propDef: {
39
45
  [evt: string]: CustomEvent<any>;
40
46
  };
41
47
  slots: {
42
- default: {
48
+ text: {
49
+ disabled: boolean;
50
+ for: string | undefined;
51
+ forwardClick: boolean;
52
+ text: string | undefined;
53
+ required: boolean;
54
+ };
55
+ default: {};
56
+ message: {
43
57
  disabled: boolean;
58
+ message: string | undefined;
59
+ required: boolean;
60
+ status: string;
61
+ };
62
+ required: {
63
+ requiredReason: string;
44
64
  };
45
65
  };
46
66
  };
@@ -48,8 +68,8 @@ export type LabelProps = typeof __propDef.props;
48
68
  export type LabelEvents = typeof __propDef.events;
49
69
  export type LabelSlots = typeof __propDef.slots;
50
70
  export default class Label extends SvelteComponentTyped<LabelProps, LabelEvents, LabelSlots> {
51
- get blur(): () => void;
52
71
  get click(): () => void;
72
+ get blur(): () => void;
53
73
  get focus(): (options?: FocusOptions | undefined) => void;
54
74
  }
55
75
  export {};
@@ -0,0 +1,4 @@
1
+ import type { LABEL_STATUSES } from './Label.constants';
2
+ type LabelStatusTuple = typeof LABEL_STATUSES;
3
+ export type LabelStatus = LabelStatusTuple[number];
4
+ export {};
package/Label.types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
package/Link.svelte CHANGED
@@ -1,5 +1,6 @@
1
1
  <script>export let href;
2
2
  export let disabled = false;
3
+ export let colorful = false;
3
4
  export let variant = "regular";
4
5
  let linkRef;
5
6
  export const blur = () => {
@@ -16,6 +17,7 @@ export const focus = (options) => {
16
17
  <a
17
18
  bind:this={linkRef}
18
19
  class="sterling-link"
20
+ class:colorful
19
21
  class:disabled
20
22
  class:ghost={variant === 'ghost'}
21
23
  class:undecorated={variant === 'undecorated'}
@@ -50,7 +52,7 @@ export const focus = (options) => {
50
52
  on:pointerover
51
53
  on:pointerout
52
54
  on:pointerup
53
- on:wheel
55
+ on:wheel|passive
54
56
  {...$$restProps}><slot {disabled} {href} {variant} /></a
55
57
  >
56
58
 
@@ -61,10 +63,10 @@ export const focus = (options) => {
61
63
  border-left: none;
62
64
  border-right: none;
63
65
  border-radius: 0;
64
- border-bottom-style: var(--stsv-Button__border-style);
65
- border-bottom-width: calc(var(--stsv-Button__border-width));
66
- border-bottom-color: var(--stsv-Button__border-color);
67
- color: var(--stsv-Button__color);
66
+ border-bottom-style: var(--stsv-common__border-style);
67
+ border-bottom-width: calc(var(--stsv-common__border-width));
68
+ border-bottom-color: var(--stsv-common__border-color);
69
+ color: var(--stsv-common__color);
68
70
  cursor: pointer;
69
71
  font: inherit;
70
72
  text-decoration: none;
@@ -75,34 +77,78 @@ export const focus = (options) => {
75
77
  }
76
78
 
77
79
  a:visited {
78
- border-bottom-color: var(--stsv-Button__border-color);
80
+ border-bottom-color: var(--stsv-input__border-color);
79
81
  }
80
82
 
83
+ a:hover {
84
+ border-bottom-color: var(--stsv-input__border-color--hover);
85
+ color: var(--stsv-input__color--hover);
86
+ }
87
+
88
+ a:active {
89
+ border-bottom-color: var(--stsv-input__border-color--selected);
90
+ color: var(--stsv-input__color--active);
91
+ }
92
+
93
+ /* ----- colorful ----- */
94
+
95
+ a.colorful,
96
+ a.colorful:visited {
97
+ border-bottom-color: var(--stsv-input--colorful__border-color);
98
+ color: var(--stsv-input--colorful__color);
99
+ }
100
+
101
+ a.colorful:hover {
102
+ border-bottom-color: var(--stsv-input--colorful__border-color--hover);
103
+ color: var(--stsv-input--colorful__color--hover);
104
+ }
105
+
106
+ a.colorful:active {
107
+ border-bottom-color: var(--stsv-input--colorful__border-color--selected);
108
+ color: var(--stsv-input--colorful__color--active);
109
+ }
110
+
111
+ /* ----- ghost ----- */
112
+
81
113
  a.ghost {
82
114
  border-bottom-color: transparent;
83
115
  }
84
116
 
85
- a:hover {
86
- border-bottom-color: var(--stsv-Button__border-color--hover);
87
- color: var(--stsv-Button__color--hover);
117
+ a.ghost:hover {
118
+ border-bottom-color: var(--stsv-input__border-color--hover);
88
119
  }
89
120
 
90
- a:active {
91
- border-bottom-color: var(--stsv-Button__border-color--active);
92
- color: var(--stsv-Button__color--active);
121
+ a.ghost:active {
122
+ border-bottom-color: var(--stsv-input__border-color--selected);
93
123
  }
94
124
 
95
- a.disabled {
96
- border-bottom-color: var(--stsv-Common__border-color--disabled);
97
- color: var(--stsv-Common__color--disabled);
125
+ /* ----- ghost colorful ----- */
126
+
127
+ a.ghost.colorful:hover {
128
+ border-bottom-color: var(--stsv-input--colorful__border-color--hover);
129
+ }
130
+
131
+ a.ghost.colorful:active {
132
+ border-bottom-color: var(--stsv-input--colorful__border-color--selected);
133
+ }
134
+
135
+ /* ----- disabled ----- */
136
+
137
+ a.disabled,
138
+ a.disabled:visited,
139
+ a.disabled:hover,
140
+ a.disabled:active {
141
+ border-bottom-color: var(--stsv-common__border-color--disabled);
142
+ color: var(--stsv-common__color--disabled);
98
143
  cursor: not-allowed;
99
144
  pointer-events: none;
100
145
  }
101
146
 
147
+ /* ----- undecorated ----- */
102
148
  a.undecorated,
103
149
  a.undecorated:hover,
104
150
  a.undecorated:active,
105
151
  a.undecorated:visited {
106
- border: none;
152
+ border-bottom-color: transparent;
107
153
  }
108
154
  </style>
package/Link.svelte.d.ts CHANGED
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  [x: string]: any;
5
5
  href: string;
6
6
  disabled?: boolean | undefined;
7
+ colorful?: boolean | undefined;
7
8
  variant?: string | undefined;
8
9
  blur?: (() => void) | undefined;
9
10
  click?: (() => void) | undefined;
package/List.svelte CHANGED
@@ -2,15 +2,20 @@
2
2
  import { writable } from "svelte/store";
3
3
  import { LIST_CONTEXT_KEY } from "./List.constants";
4
4
  import { usingKeyboard } from "./stores/usingKeyboard";
5
+ export let colorful = false;
5
6
  export let composed = false;
6
7
  export let disabled = false;
7
8
  export let horizontal = false;
8
9
  export let selectedValue = void 0;
9
10
  let listRef;
10
11
  let lastSelectedItemRef;
12
+ const colorfulStore = writable(colorful);
11
13
  const disabledStore = writable(disabled);
12
14
  const horizontalStore = writable(horizontal);
13
15
  const selectedValueStore = writable(selectedValue);
16
+ $: {
17
+ colorfulStore.set(colorful);
18
+ }
14
19
  $: {
15
20
  disabledStore.set(disabled);
16
21
  }
@@ -166,6 +171,7 @@ const onKeydown = (event) => {
166
171
  }
167
172
  };
168
173
  setContext(LIST_CONTEXT_KEY, {
174
+ colorful: colorfulStore,
169
175
  disabled: disabledStore,
170
176
  selectedValue: selectedValueStore,
171
177
  horizontal: horizontalStore
@@ -216,7 +222,7 @@ A list of items where a single item can be selected.
216
222
  on:mouseout
217
223
  on:mouseup
218
224
  on:scroll
219
- on:wheel
225
+ on:wheel|passive
220
226
  on:paste
221
227
  {...$$restProps}
222
228
  >
@@ -227,13 +233,13 @@ A list of items where a single item can be selected.
227
233
 
228
234
  <style>
229
235
  .sterling-list {
230
- background-color: var(--stsv-Common__background-color);
231
- border-color: var(--stsv-Common__border-color);
232
- border-radius: var(--stsv-Common__border-radius);
233
- border-style: var(--stsv-Common__border-style);
234
- border-width: var(--stsv-Common__border-width);
236
+ background-color: var(--stsv-common__background-color);
237
+ border-color: var(--stsv-input__border-color);
238
+ border-radius: var(--stsv-input__border-radius);
239
+ border-style: var(--stsv-input__border-style);
240
+ border-width: var(--stsv-input__border-width);
235
241
  box-sizing: border-box;
236
- color: var(--stsv-Common__color);
242
+ color: var(--stsv-input__color);
237
243
  height: 100%;
238
244
  overflow-x: hidden;
239
245
  overflow-y: auto;
@@ -252,17 +258,17 @@ A list of items where a single item can be selected.
252
258
  }
253
259
 
254
260
  .sterling-list:hover {
255
- border-color: var(--stsv-Common__border-color--hover);
256
- color: var(--stsv-Common__color--hover);
261
+ border-color: var(--stsv-input__border-color--hover);
262
+ color: var(--stsv-input__color--hover);
257
263
  }
258
264
 
259
265
  .sterling-list.using-keyboard:focus-within {
260
- border-color: var(--stsv-Common__border-color--focus);
261
- color: var(--stsv-Common__color--focus);
262
- outline-color: var(--stsv-Common__outline-color);
263
- outline-offset: var(--stsv-Common__outline-offset);
264
- outline-style: var(--stsv-Common__outline-style);
265
- outline-width: var(--stsv-Common__outline-width);
266
+ border-color: var(--stsv-input__border-color--focus);
267
+ color: var(--stsv-input__color--focus);
268
+ outline-color: var(--stsv-common__outline-color);
269
+ outline-offset: var(--stsv-common__outline-offset);
270
+ outline-style: var(--stsv-common__outline-style);
271
+ outline-width: var(--stsv-common__outline-width);
266
272
  }
267
273
 
268
274
  .sterling-list.composed,
@@ -292,7 +298,14 @@ A list of items where a single item can be selected.
292
298
  }
293
299
 
294
300
  .container::after {
295
- background: var(--stsv-Disabled__background);
301
+ background: repeating-linear-gradient(
302
+ var(--stsv-common--disabled__stripe-angle),
303
+ var(--stsv-common--disabled__stripe-color),
304
+ var(--stsv-common--disabled__stripe-color) var(--stsv-common--disabled__stripe-width),
305
+ var(--stsv-common--disabled__stripe-color--alt) var(--stsv-common--disabled__stripe-width),
306
+ var(--stsv-common--disabled__stripe-color--alt)
307
+ calc(2 * var(--stsv-common--disabled__stripe-width))
308
+ );
296
309
  content: '';
297
310
  bottom: 0;
298
311
  left: 0;
package/List.svelte.d.ts CHANGED
@@ -2,6 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
+ colorful?: boolean | undefined;
5
6
  composed?: boolean | undefined;
6
7
  disabled?: boolean | undefined;
7
8
  horizontal?: boolean | undefined;
package/List.types.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { Readable, Writable } from 'svelte/store';
2
2
  export type ListContext = {
3
- disabled: Readable<boolean>;
4
- selectedValue: Writable<string | undefined>;
5
- horizontal: Readable<boolean>;
3
+ colorful?: Readable<boolean>;
4
+ disabled?: Readable<boolean>;
5
+ selectedValue?: Writable<string | undefined>;
6
+ horizontal?: Readable<boolean>;
6
7
  };
package/ListItem.svelte CHANGED
@@ -1,16 +1,18 @@
1
1
  <script>import { getContext } from "svelte";
2
+ import { readable, writable } from "svelte/store";
2
3
  import { LIST_CONTEXT_KEY } from "./List.constants";
3
- import { readable } from "svelte/store";
4
4
  export let disabled = false;
5
5
  export let value;
6
6
  const {
7
+ colorful,
7
8
  disabled: listDisabled,
8
9
  selectedValue,
9
10
  horizontal
10
11
  } = getContext(LIST_CONTEXT_KEY) || {
12
+ colorful: readable(false),
11
13
  disabled: readable(false),
12
- selectedValue: void 0,
13
- horizontal: false
14
+ selectedValue: writable(void 0),
15
+ horizontal: readable(false)
14
16
  };
15
17
  let itemRef;
16
18
  $:
@@ -30,6 +32,7 @@ export const focus = (options) => {
30
32
  aria-selected={selected}
31
33
  bind:this={itemRef}
32
34
  class="sterling-list-item"
35
+ class:colorful={$colorful}
33
36
  class:disabled={disabled || $listDisabled}
34
37
  class:item-disabled={disabled && !$listDisabled}
35
38
  class:selected
@@ -65,7 +68,7 @@ export const focus = (options) => {
65
68
  on:pointerover
66
69
  on:pointerout
67
70
  on:pointerup
68
- on:wheel
71
+ on:wheel|passive
69
72
  {...$$restProps}
70
73
  >
71
74
  <slot {disabled} {horizontal} {selected} {value}>{value}</slot>
@@ -75,7 +78,7 @@ export const focus = (options) => {
75
78
  .sterling-list-item {
76
79
  background-color: transparent;
77
80
  box-sizing: border-box;
78
- color: var(--stsv-Input__color);
81
+ color: var(--stsv-common__color);
79
82
  cursor: pointer;
80
83
  margin: 0;
81
84
  padding: 0.5em;
@@ -87,13 +90,23 @@ export const focus = (options) => {
87
90
  }
88
91
 
89
92
  .sterling-list-item:not(.disabled):not(.selected):hover {
90
- background-color: var(--stsv-Button__background-color--hover);
91
- color: var(--stsv-Button__color--hover);
93
+ background-color: var(--stsv-button__background-color--hover);
94
+ color: var(--stsv-button__color--hover);
92
95
  }
93
96
 
94
97
  .sterling-list-item.selected {
95
- background-color: var(--stsv-Input__background-color--selected);
96
- color: var(--stsv-Input__color--selected);
98
+ background-color: var(--stsv-button__background-color--active);
99
+ color: var(--stsv-button__color--active);
100
+ }
101
+
102
+ .sterling-list-item.colorful:not(.disabled):not(.selected):hover {
103
+ background-color: var(--stsv-button--colorful__background-color--hover);
104
+ color: var(--stsv-button--colorful__color--hover);
105
+ }
106
+
107
+ .sterling-list-item.colorful.selected {
108
+ background-color: var(--stsv-button--colorful__background-color--active);
109
+ color: var(--stsv-button--colorful__color--active);
97
110
  }
98
111
 
99
112
  .sterling-list-item.disabled {
@@ -102,7 +115,14 @@ export const focus = (options) => {
102
115
  }
103
116
 
104
117
  .sterling-list-item::after {
105
- background: var(--stsv-Disabled__background);
118
+ background: repeating-linear-gradient(
119
+ var(--stsv-common--disabled__stripe-angle),
120
+ var(--stsv-common--disabled__stripe-color),
121
+ var(--stsv-common--disabled__stripe-color) var(--stsv-common--disabled__stripe-width),
122
+ var(--stsv-common--disabled__stripe-color--alt) var(--stsv-common--disabled__stripe-width),
123
+ var(--stsv-common--disabled__stripe-color--alt)
124
+ calc(2 * var(--stsv-common--disabled__stripe-width))
125
+ );
106
126
  bottom: 0;
107
127
  content: '';
108
128
  left: 0;
@@ -46,7 +46,7 @@ declare const __propDef: {
46
46
  slots: {
47
47
  default: {
48
48
  disabled: boolean;
49
- horizontal: import("svelte/store").Readable<boolean>;
49
+ horizontal: import("svelte/store").Readable<boolean> | undefined;
50
50
  selected: boolean;
51
51
  value: string;
52
52
  };
package/Menu.svelte CHANGED
@@ -93,7 +93,7 @@ export const focusLastMenuItem = () => {
93
93
  on:mouseout
94
94
  on:mouseup
95
95
  on:scroll
96
- on:wheel
96
+ on:wheel|passive
97
97
  on:paste
98
98
  {...$$restProps}
99
99
  >
@@ -104,11 +104,11 @@ export const focusLastMenuItem = () => {
104
104
 
105
105
  <style>
106
106
  .sterling-menu {
107
- background-color: var(--stsv-Common__background-color);
108
- border-color: var(--stsv-Common__border-color);
109
- border-radius: var(--stsv-Common__border-radius);
110
- border-style: var(--stsv-Common__border-style);
111
- border-width: var(--stsv-Common__border-width);
107
+ background-color: var(--stsv-common__background-color);
108
+ border-color: var(--stsv-common__border-color);
109
+ border-radius: var(--stsv-common__border-radius);
110
+ border-style: var(--stsv-common__border-style);
111
+ border-width: var(--stsv-common__border-width);
112
112
  box-sizing: border-box;
113
113
  display: grid;
114
114
  grid-template-columns: 1fr;
@@ -121,6 +121,6 @@ export const focusLastMenuItem = () => {
121
121
  display: grid;
122
122
  grid-template-columns: 1fr;
123
123
  grid-template-rows: auto;
124
- row-gap: calc(2 * var(--stsv-Common__outline-width));
124
+ row-gap: calc(2 * var(--stsv-common__outline-width));
125
125
  }
126
126
  </style>
package/MenuBar.svelte CHANGED
@@ -135,7 +135,7 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
135
135
  on:mouseout
136
136
  on:mouseup
137
137
  on:scroll
138
- on:wheel
138
+ on:wheel|passive
139
139
  on:paste
140
140
  {...$$restProps}
141
141
  use:clickOutside
package/MenuButton.svelte CHANGED
@@ -6,11 +6,8 @@ import { MENU_ITEM_CONTEXT_KEY } from "./MenuItem.constants";
6
6
  import { idGenerator } from "./idGenerator";
7
7
  import Popover from "./Popover.svelte";
8
8
  import { clickOutside } from "./actions/clickOutside";
9
- import { usingKeyboard } from "./stores/usingKeyboard";
10
9
  export let open = false;
11
- export let shape = "rounded";
12
10
  export let value;
13
- export let variant = "regular";
14
11
  const instanceId = idGenerator.nextId("MenuButton");
15
12
  let buttonRef;
16
13
  let reference;
@@ -46,10 +43,8 @@ export const focus = (options) => {
46
43
  const onClick = async () => {
47
44
  if (!open) {
48
45
  openValues.set(["menu-button"]);
49
- if ($usingKeyboard) {
50
- await tick();
51
- menuRef?.focusFirstMenuItem();
52
- }
46
+ await tick();
47
+ menuRef?.focusFirstMenuItem();
53
48
  } else {
54
49
  open = false;
55
50
  openValues.set([]);
@@ -78,6 +73,7 @@ const onClickOutside = (event) => {
78
73
  closeAllMenus?.();
79
74
  };
80
75
  setContext(MENU_ITEM_CONTEXT_KEY, {
76
+ depth: 1,
81
77
  openValues,
82
78
  rootValue: value,
83
79
  closeContainingMenu: () => {
@@ -101,8 +97,6 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
101
97
  aria-owns={menuId}
102
98
  data-value={value}
103
99
  data-root-value={value}
104
- {variant}
105
- {shape}
106
100
  on:blur
107
101
  on:click
108
102
  on:click={onClick}
@@ -3,9 +3,7 @@ declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
5
  open?: boolean | undefined;
6
- shape?: "circular" | "rounded" | "square" | undefined;
7
6
  value: string;
8
- variant?: "regular" | "outline" | "ghost" | undefined;
9
7
  click?: (() => void) | undefined;
10
8
  blur?: (() => void) | undefined;
11
9
  focus?: ((options?: FocusOptions) => void) | undefined;
@@ -50,8 +48,8 @@ declare const __propDef: {
50
48
  };
51
49
  slots: {
52
50
  default: {
53
- shape: "circular" | "rounded" | "square";
54
- variant: "regular" | "outline" | "ghost";
51
+ shape: any;
52
+ variant: any;
55
53
  };
56
54
  items: {};
57
55
  };
package/MenuItem.svelte CHANGED
@@ -16,11 +16,12 @@ import MenuItemDisplay from "./MenuItemDisplay.svelte";
16
16
  import Popover from "./Popover.svelte";
17
17
  import { usingKeyboard } from "./stores/usingKeyboard";
18
18
  export let checked = false;
19
+ export let colorful = false;
19
20
  export let composed = false;
20
21
  export let disabled = false;
21
- export let value;
22
22
  export let role = "menuitem";
23
23
  export let text = void 0;
24
+ export let value;
24
25
  const {
25
26
  isMenuBarItem,
26
27
  openValues = writable([]),
@@ -258,6 +259,7 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
258
259
  aria-owns={menuId}
259
260
  bind:this={menuItemRef}
260
261
  class="sterling-menu-item"
262
+ class:colorful
261
263
  class:composed
262
264
  class:using-keyboard={usingKeyboard}
263
265
  data-value={value}
@@ -296,7 +298,7 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
296
298
  on:pointerover
297
299
  on:pointerout
298
300
  on:pointerup
299
- on:wheel
301
+ on:wheel|passive
300
302
  on:click={onClick}
301
303
  on:keydown={onKeyDown}
302
304
  on:mouseenter={onMouseEnter}
@@ -337,11 +339,11 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
337
339
  .sterling-menu-item {
338
340
  background-color: transparent;
339
341
  border-color: transparent;
340
- border-radius: var(--stsv-Button__border-radius);
342
+ border-radius: var(--stsv-button__border-radius);
341
343
  border-style: none;
342
344
  border-width: 0;
343
345
  box-sizing: border-box;
344
- color: var(--stsv-Common__color);
346
+ color: var(--stsv-common__color);
345
347
  cursor: pointer;
346
348
  font: inherit;
347
349
  margin: 0;
@@ -357,8 +359,8 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
357
359
  }
358
360
 
359
361
  .sterling-menu-item:hover {
360
- background-color: var(--stsv-Button__background-color--hover);
361
- color: var(--stsv-Button__color--hover);
362
+ background-color: var(--stsv-button__background-color--hover);
363
+ color: var(--stsv-button__color--hover);
362
364
  }
363
365
 
364
366
  .sterling-menu-item:focus {
@@ -366,15 +368,35 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
366
368
  }
367
369
 
368
370
  .sterling-menu-item.using-keyboard:focus {
369
- border-color: var(--stsv-Button__border-color--focus);
370
- outline-color: var(--stsv-Common__outline-color);
371
- outline-offset: var(--stsv-Common__outline-offset);
372
- outline-style: var(--stsv-Common__outline-style);
373
- outline-width: var(--stsv-Common__outline-width);
371
+ border-color: var(--stsv-button__border-color--focus);
372
+ outline-color: var(--stsv-common__outline-color);
373
+ outline-offset: var(--stsv-common__outline-offset);
374
+ outline-style: var(--stsv-common__outline-style);
375
+ outline-width: var(--stsv-common__outline-width);
374
376
  }
375
377
 
376
378
  .sterling-menu-item:focus {
377
- background-color: var(--stsv-Input__background-color--selected);
379
+ background-color: var(--stsv-input__background-color--selected);
380
+ }
381
+
382
+ /** ----- colorful ----- */
383
+
384
+ .sterling-menu-item.colorful {
385
+ color: var(--stsv-common--colorful__color);
386
+ }
387
+
388
+ .sterling-menu-item.colorful:hover {
389
+ background-color: var(--stsv-button--colorful__background-color--hover);
390
+ color: var(--stsv-button--colorful__color--hover);
391
+ }
392
+
393
+ .sterling-menu-item.colorful.using-keyboard:focus {
394
+ border-color: var(--stsv-button--colorful__border-color--focus);
395
+ }
396
+
397
+ .sterling-menu-item.colorful:focus {
398
+ background-color: var(--stsv-button--colorful__background-color--focus);
399
+ color: var(--stsv-button--colorful__color--focus);
378
400
  }
379
401
 
380
402
  .sterling-menu-item.composed,
@@ -3,11 +3,12 @@ declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
5
  checked?: boolean | undefined;
6
+ colorful?: boolean | undefined;
6
7
  composed?: boolean | undefined;
7
8
  disabled?: boolean | undefined;
8
- value: string;
9
9
  role?: "menuitem" | "menuitemcheckbox" | "menuitemradio" | undefined;
10
10
  text?: string | undefined;
11
+ value: string;
11
12
  blur?: (() => void) | undefined;
12
13
  click?: (() => void) | undefined;
13
14
  focus?: ((options?: FocusOptions) => void) | undefined;
@@ -103,7 +103,14 @@ export let menuItemRole = "menuitem";
103
103
  }
104
104
 
105
105
  .sterling-menu-item-display::after {
106
- background: var(--stsv-Disabled__background);
106
+ background: repeating-linear-gradient(
107
+ var(--stsv-common--disabled__stripe-angle),
108
+ var(--stsv-common--disabled__stripe-color),
109
+ var(--stsv-common--disabled__stripe-color) var(--stsv-common--disabled__stripe-width),
110
+ var(--stsv-common--disabled__stripe-color--alt) var(--stsv-common--disabled__stripe-width),
111
+ var(--stsv-common--disabled__stripe-color--alt)
112
+ calc(2 * var(--stsv-common--disabled__stripe-width))
113
+ );
107
114
  bottom: 0;
108
115
  content: '';
109
116
  left: 0;
@@ -35,14 +35,14 @@ A styled line to visually separate menu items in a menu.
35
35
  on:pointerover
36
36
  on:pointerout
37
37
  on:pointerup
38
- on:wheel
38
+ on:wheel|passive
39
39
  {...$$restProps}
40
40
  />
41
41
 
42
42
  <style>
43
43
  .sterling-menu-item-separator {
44
- height: var(--stsv-Common__border-width);
45
- background-color: var(--stsv-Common__border-color);
44
+ height: var(--stsv-common__border-width);
45
+ background-color: var(--stsv-common__border-color);
46
46
  margin: 0.1em 0;
47
47
  }
48
48
  </style>