@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/Switch.svelte CHANGED
@@ -1,10 +1,10 @@
1
- <script>import Label from "./Label.svelte";
2
- import { idGenerator } from "./idGenerator";
1
+ <script>import { idGenerator } from "./idGenerator";
3
2
  export let checked = false;
4
3
  export let disabled = false;
5
- export let vertical = false;
6
- export let onText = void 0;
4
+ export let colorful = false;
7
5
  export let offText = void 0;
6
+ export let onText = void 0;
7
+ export let vertical = false;
8
8
  const inputId = idGenerator.nextId("Switch");
9
9
  let inputRef;
10
10
  let switchWidth = 0;
@@ -38,7 +38,7 @@ export const focus = (options) => {
38
38
  @component
39
39
  A styled HTML input type=checkbox element.
40
40
  -->
41
- <div class="sterling-switch" class:vertical class:disabled>
41
+ <div class="sterling-switch" class:colorful class:disabled class:vertical>
42
42
  <input
43
43
  bind:this={inputRef}
44
44
  bind:checked
@@ -69,14 +69,14 @@ export const focus = (options) => {
69
69
  on:mouseover
70
70
  on:mouseout
71
71
  on:mouseup
72
- on:wheel
72
+ on:wheel|passive
73
73
  {...$$restProps}
74
74
  />
75
75
  {#if hasOffLabel}
76
76
  <div class="off-label">
77
77
  <slot name="offLabel" {checked} {disabled} {inputId} {offText} {vertical}>
78
78
  {#if offText}
79
- <Label for={inputId} {disabled}>{offText}</Label>
79
+ <label for={inputId}>{offText}</label>
80
80
  {/if}
81
81
  </slot>
82
82
  </div>
@@ -94,7 +94,7 @@ export const focus = (options) => {
94
94
  <div class="on-label">
95
95
  <slot name="onLabel" {checked} {disabled} {inputId} {onText} {vertical}>
96
96
  {#if onText}
97
- <Label for={inputId} {disabled}>{onText}</Label>
97
+ <label for={inputId}>{onText}</label>
98
98
  {/if}
99
99
  </slot>
100
100
  </div>
@@ -144,6 +144,8 @@ export const focus = (options) => {
144
144
  grid-row: 1 / span 1;
145
145
  }
146
146
 
147
+ /* ----- input hidden ----- */
148
+
147
149
  input {
148
150
  font: inherit;
149
151
  margin: 0;
@@ -156,14 +158,16 @@ export const focus = (options) => {
156
158
  opacity: 0;
157
159
  }
158
160
 
161
+ /* ----- switch ----- */
162
+
159
163
  .switch {
160
- background-color: var(--stsv-Input__background-color);
161
- border-color: var(--stsv-Input__border-color);
164
+ background-color: var(--stsv-input__background-color);
165
+ border-color: var(--stsv-input__border-color);
162
166
  border-radius: 10000px;
163
- border-style: var(--stsv-Input__border-style);
164
- border-width: var(--stsv-Input__border-width);
167
+ border-style: var(--stsv-input__border-style);
168
+ border-width: var(--stsv-input__border-width);
165
169
  box-sizing: border-box;
166
- color: var(--stsv-Input__color);
170
+ color: var(--stsv-input__color);
167
171
  font: inherit;
168
172
  pointer-events: none;
169
173
  position: relative;
@@ -172,21 +176,23 @@ export const focus = (options) => {
172
176
  }
173
177
 
174
178
  .sterling-switch:hover .switch {
175
- background-color: var(--stsv-Input__background-color--hover);
176
- border-color: var(--stsv-Input__border-color--hover);
177
- color: var(--stsv-Input__color--hover);
179
+ background-color: var(--stsv-input__background-color--hover);
180
+ border-color: var(--stsv-input__border-color--hover);
181
+ color: var(--stsv-input__color--hover);
178
182
  }
179
183
 
180
184
  input:focus-visible ~ .switch {
181
- background-color: var(--stsv-Input__background-color--focus);
182
- border-color: var(--stsv-Input__border-color--focus);
183
- color: var(--stsv-Common__color--focux);
184
- outline-color: var(--stsv-Common__outline-color);
185
- outline-offset: var(--stsv-Common__outline-offset);
186
- outline-style: var(--stsv-Common__outline-style);
187
- outline-width: var(--stsv-Common__outline-width);
185
+ background-color: var(--stsv-input__background-color--focus);
186
+ border-color: var(--stsv-input__border-color--focus);
187
+ color: var(--stsv-common__color--focux);
188
+ outline-color: var(--stsv-common__outline-color);
189
+ outline-offset: var(--stsv-common__outline-offset);
190
+ outline-style: var(--stsv-common__outline-style);
191
+ outline-width: var(--stsv-common__outline-width);
188
192
  }
189
193
 
194
+ /* ----- switch vertical ----- */
195
+
190
196
  .sterling-switch:not(.vertical) .switch {
191
197
  width: 2em;
192
198
  height: 1.25em;
@@ -197,19 +203,49 @@ export const focus = (options) => {
197
203
  height: 2em;
198
204
  }
199
205
 
206
+ /* ----- labels ----- */
207
+
208
+ label {
209
+ color: var(--stsv-common__color);
210
+ transition: color 250ms;
211
+ font: inherit;
212
+ }
213
+
200
214
  .off-label,
201
215
  .on-label {
202
- padding-top: var(--stsv-Button__border-width);
216
+ padding-top: var(--stsv-button__border-width);
217
+ }
218
+
219
+ /* ----- switch colorful ----- */
220
+
221
+ .sterling-switch.colorful .switch {
222
+ background-color: var(--stsv-input--colorful__background-color);
223
+ border-color: var(--stsv-input--colorful__border-color);
224
+ color: var(--stsv-input--colorful__color);
225
+ }
226
+
227
+ .sterling-switch.colorful:hover .switch {
228
+ background-color: var(--stsv-input--colorful__background-color--hover);
229
+ border-color: var(--stsv-input--colorful__border-color--hover);
230
+ color: var(--stsv-input_--colorful_color--hover);
231
+ }
232
+
233
+ .sterling-switch.colorful input:focus-visible ~ .switch {
234
+ background-color: var(--stsv-input--colorful__background-color--focus);
235
+ border-color: var(--stsv-input--colorful__border-color--focus);
236
+ color: var(--stsv-input--colorful__color--focus);
203
237
  }
204
238
 
239
+ /* ----- thumb ----- */
240
+
205
241
  .thumb {
206
- background-color: var(--stsv-Button__background-color);
207
- border-color: var(--stsv-Button__border-color);
242
+ background-color: var(--stsv-button__background-color);
243
+ border-color: var(--stsv-button__border-color);
208
244
  border-radius: 10000px;
209
- border-style: var(--stsv-Button__border-style);
210
- border-width: var(--stsv-Button__border-width);
245
+ border-style: var(--stsv-button__border-style);
246
+ border-width: var(--stsv-button__border-width);
211
247
  box-sizing: border-box;
212
- color: var(--stsv-Button__color);
248
+ color: var(--stsv-button__color);
213
249
  display: block;
214
250
  font: inherit;
215
251
  height: 1.25em;
@@ -219,20 +255,50 @@ export const focus = (options) => {
219
255
  }
220
256
 
221
257
  .sterling-switch:hover .thumb {
222
- background-color: var(--stsv-Button__background-color--hover);
223
- border-color: var(--stsv-Button__border-color--hover);
224
- color: var(--stsv-Button__color--hover);
258
+ background-color: var(--stsv-button__background-color--hover);
259
+ border-color: var(--stsv-button__border-color--hover);
260
+ color: var(--stsv-button__color--hover);
225
261
  }
226
262
 
227
263
  .sterling-switch:active .thumb {
228
- background-color: var(--stsv-Button__background-color--active);
229
- border-color: var(--stsv-Button__border-color--active);
230
- color: var(--stsv-Button__color--hover);
264
+ background-color: var(--stsv-button__background-color--active);
265
+ border-color: var(--stsv-button__border-color--active);
266
+ color: var(--stsv-button__color--hover);
231
267
  }
232
268
 
269
+ /* ----- thumb colorful ----- */
270
+
271
+ .sterling-switch.colorful .thumb {
272
+ background-color: var(--stsv-button--colorful__background-color);
273
+ border-color: var(--stsv-button--colorful__border-color);
274
+ color: var(--stsv-button--colorful__color);
275
+ }
276
+
277
+ .sterling-switch.colorful:hover .thumb {
278
+ background-color: var(--stsv-button--colorful__background-color--hover);
279
+ border-color: var(--stsv-button--colorful__border-color--hover);
280
+ color: var(--stsv-button--colorful__color--hover);
281
+ }
282
+
283
+ .sterling-switch.colorful:active .thumb {
284
+ background-color: var(--stsv-button--colorful__background-color--active);
285
+ border-color: var(--stsv-button--colorful__border-color--active);
286
+ color: var(--stsv-button--colorful__color--hover);
287
+ }
288
+
289
+ /* ----- thumb disabled ----- */
290
+
233
291
  .sterling-switch .thumb::after {
234
- background: var(--stsv-Disabled__background);
292
+ background: repeating-linear-gradient(
293
+ var(--stsv-common--disabled__stripe-angle),
294
+ var(--stsv-common--disabled__stripe-color),
295
+ var(--stsv-common--disabled__stripe-color) var(--stsv-common--disabled__stripe-width),
296
+ var(--stsv-common--disabled__stripe-color--alt) var(--stsv-common--disabled__stripe-width),
297
+ var(--stsv-common--disabled__stripe-color--alt)
298
+ calc(2 * var(--stsv-common--disabled__stripe-width))
299
+ );
235
300
  bottom: 0;
301
+ border-radius: 10000px;
236
302
  content: '';
237
303
  left: 0;
238
304
  opacity: 0;
@@ -247,20 +313,25 @@ export const focus = (options) => {
247
313
  opacity: 1;
248
314
  }
249
315
 
316
+ /* ----- thumb vertical ----- */
317
+
250
318
  .sterling-switch:not(.vertical) .thumb {
251
- top: calc(-1 * var(--stsv-Button__border-width));
252
- transform: translateX(calc(var(--thumb-offset) - var(--stsv-Button__border-width)));
319
+ top: calc(-1 * var(--stsv-button__border-width));
320
+ transform: translateX(calc(var(--thumb-offset) - var(--stsv-button__border-width)));
253
321
  }
254
322
 
255
323
  .sterling-switch.vertical .thumb {
256
- left: calc(-1 * var(--stsv-Button__border-width));
257
- transform: translateY(calc(var(--thumb-offset) - var(--stsv-Button__border-width)));
324
+ left: calc(-1 * var(--stsv-button__border-width));
325
+ transform: translateY(calc(var(--thumb-offset) - var(--stsv-button__border-width)));
258
326
  }
259
327
 
328
+ /* ----- reduced motion ----- */
329
+
260
330
  @media (prefers-reduced-motion) {
261
331
  .switch,
262
332
  .thumb,
263
- .thumb::after {
333
+ .thumb::after,
334
+ label {
264
335
  transition: none;
265
336
  }
266
337
  }
@@ -4,9 +4,10 @@ declare const __propDef: {
4
4
  [x: string]: any;
5
5
  checked?: boolean | undefined;
6
6
  disabled?: boolean | undefined;
7
- vertical?: boolean | undefined;
8
- onText?: string | undefined;
7
+ colorful?: boolean | undefined;
9
8
  offText?: string | undefined;
9
+ onText?: string | undefined;
10
+ vertical?: boolean | undefined;
10
11
  blur?: (() => void) | undefined;
11
12
  click?: (() => void) | undefined;
12
13
  focus?: ((options?: FocusOptions) => void) | undefined;
package/Tab.svelte CHANGED
@@ -7,6 +7,7 @@ export let text = void 0;
7
7
  export let value;
8
8
  let tabRef;
9
9
  const {
10
+ colorful,
10
11
  disabled: tabListDisabled,
11
12
  selectedValue,
12
13
  vertical
@@ -36,6 +37,7 @@ export const focus = (options) => {
36
37
  bind:this={tabRef}
37
38
  aria-selected={selected}
38
39
  class="sterling-tab"
40
+ class:colorful={$colorful}
39
41
  disabled={_disabled}
40
42
  class:selected
41
43
  class:using-keyboard={$usingKeyboard}
@@ -74,7 +76,7 @@ export const focus = (options) => {
74
76
  on:pointerover
75
77
  on:pointerout
76
78
  on:pointerup
77
- on:wheel
79
+ on:wheel|passive
78
80
  >
79
81
  <div class="content">
80
82
  <slot disabled={_disabled} {selected} {value} {text}>
@@ -90,13 +92,13 @@ export const focus = (options) => {
90
92
  .sterling-tab {
91
93
  align-content: center;
92
94
  align-items: center;
93
- background-color: var(--stsv-Common__background-color);
95
+ background-color: var(--stsv-common__background-color);
94
96
  border-color: transparent;
95
- border-radius: var(--stsv-Button__border-radius);
96
- border-style: var(--stsv-Common__border-style);
97
+ border-radius: var(--stsv-button__border-radius);
98
+ border-style: var(--stsv-common__border-style);
97
99
  border-width: 0;
98
100
  box-sizing: border-box;
99
- color: var(--stsv-Common__color);
101
+ color: var(--stsv-common__color);
100
102
  cursor: pointer;
101
103
  display: grid;
102
104
  font: inherit;
@@ -127,30 +129,29 @@ export const focus = (options) => {
127
129
  column-gap: 0.15em;
128
130
  }
129
131
 
130
- .sterling-tab:hover {
131
- background-color: var(--stsv-Common__background-color--hover);
132
- color: var(--stsv-Common__color--hover);
133
- }
134
-
135
- .sterling-tab:active {
136
- background-color: var(--stsv-Common__background-color--active);
137
- color: var(--stsv-Common__color--active);
138
- }
139
-
140
132
  .sterling-tab.using-keyboard:focus-visible {
141
- outline-color: var(--stsv-Common__outline-color);
142
- outline-offset: var(--stsv-Common__outline-offset);
143
- outline-style: var(--stsv-Common__outline-style);
144
- outline-width: var(--stsv-Common__outline-width);
133
+ outline-color: var(--stsv-common__outline-color);
134
+ outline-offset: var(--stsv-common__outline-offset);
135
+ outline-style: var(--stsv-common__outline-style);
136
+ outline-width: var(--stsv-common__outline-width);
145
137
  }
146
138
 
139
+ /* ----- disabled -----*/
140
+
147
141
  .sterling-tab:disabled {
148
142
  cursor: not-allowed;
149
143
  outline: none;
150
144
  }
151
145
 
152
146
  .sterling-tab::after {
153
- background: var(--stsv-Disabled__background);
147
+ background: repeating-linear-gradient(
148
+ var(--stsv-common--disabled__stripe-angle),
149
+ var(--stsv-common--disabled__stripe-color),
150
+ var(--stsv-common--disabled__stripe-color) var(--stsv-common--disabled__stripe-width),
151
+ var(--stsv-common--disabled__stripe-color--alt) var(--stsv-common--disabled__stripe-width),
152
+ var(--stsv-common--disabled__stripe-color--alt)
153
+ calc(2 * var(--stsv-common--disabled__stripe-width))
154
+ );
154
155
  bottom: 0;
155
156
  content: '';
156
157
  left: 0;
@@ -166,6 +167,8 @@ export const focus = (options) => {
166
167
  opacity: 1;
167
168
  }
168
169
 
170
+ /* ----- content -----*/
171
+
169
172
  .content {
170
173
  padding: 0 0.2em;
171
174
  }
@@ -174,6 +177,8 @@ export const focus = (options) => {
174
177
  padding-top: 0.25em;
175
178
  }
176
179
 
180
+ /* ----- indicator -----*/
181
+
177
182
  .indicator {
178
183
  background-color: transparent;
179
184
  border-radius: 10000px;
@@ -190,24 +195,43 @@ export const focus = (options) => {
190
195
  width: 0.4em;
191
196
  }
192
197
 
193
- .sterling-tab:hover .indicator {
194
- background-color: var(--stsv-Display__color--faint);
198
+ .sterling-tab:not(.selected):not(:active):hover .indicator {
199
+ background-color: var(--stsv-input__border-color--hover);
200
+ opacity: 0.3;
195
201
  }
196
202
 
197
203
  .sterling-tab:active .indicator {
198
- background-color: var(--stsv-Button__border-color--hover);
204
+ background-color: var(--stsv-input__border-color--selected);
199
205
  }
200
206
 
201
- .sterling-tab:disabled .indicator,
202
- .sterling-tab:disabled:hover .indicator,
203
- .sterling-tab:disabled:active .indicator {
204
- background-color: transparent;
207
+ .sterling-tab.selected .indicator {
208
+ background-color: var(--stsv-input__border-color--selected);
205
209
  }
206
210
 
207
- .sterling-tab.selected .indicator {
208
- background-color: var(--stsv-Input__color);
211
+ /* ----- indicator colorful -----*/
212
+
213
+ .sterling-tab.colorful:not(.selected):not(:active):hover .indicator {
214
+ background-color: var(--stsv-input--colorful__border-color--hover);
215
+ }
216
+
217
+ .sterling-tab.colorful:active .indicator {
218
+ background-color: var(--stsv-input--colorful__border-color--selected);
219
+ }
220
+
221
+ .sterling-tab.colorful.selected .indicator {
222
+ background-color: var(--stsv-input--colorful__border-color--selected);
209
223
  }
210
224
 
225
+ /* ----- indicator disabled -----*/
226
+
227
+ .sterling-tab:disabled:not(.selected) .indicator,
228
+ .sterling-tab:disabled:not(.selected):hover .indicator,
229
+ .sterling-tab:disabled:not(.selected):active .indicator {
230
+ background-color: transparent;
231
+ }
232
+
233
+ /* ----- reduced motion -----*/
234
+
211
235
  @media (prefers-reduced-motion) {
212
236
  .sterling-tab,
213
237
  .sterling-tab::after,
package/Tab.svelte.d.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
- disabled?: boolean | undefined;
5
- selected?: boolean | undefined;
6
- text?: string | undefined;
7
- value: string;
4
+ /**
5
+ * When true, the tab is disabled.
6
+ * The tab is also disabled if the tab list is disabled.
7
+ */ disabled?: boolean | undefined;
8
+ /** When true, the tab is selected. */ selected?: boolean | undefined;
9
+ /** The text of the tab when the default slot is not replaced. */ text?: string | undefined;
10
+ /** The value uniquely identifying this item within the tab list. */ value: string;
8
11
  click?: (() => void) | undefined;
9
12
  blur?: (() => void) | undefined;
10
13
  focus?: ((options?: FocusOptions) => void) | undefined;
package/TabList.svelte CHANGED
@@ -1,15 +1,18 @@
1
1
  <script>import { createEventDispatcher, setContext } from "svelte";
2
2
  import { writable } from "svelte/store";
3
3
  import { TAB_LIST_CONTEXT_KEY } from "./TabList.constants";
4
- import { usingKeyboard } from "./stores/usingKeyboard";
4
+ export let colorful = false;
5
5
  export let disabled = false;
6
6
  export let vertical = false;
7
7
  export let selectedValue = void 0;
8
8
  let tabListRef;
9
9
  let lastSelectedTabRef;
10
+ const colorfulStore = writable(colorful);
10
11
  const disabledStore = writable(disabled);
11
12
  const selectedValueStore = writable(selectedValue);
12
13
  const verticalStore = writable(vertical);
14
+ $:
15
+ colorfulStore.set(colorful);
13
16
  $:
14
17
  disabledStore.set(disabled);
15
18
  $:
@@ -30,7 +33,12 @@ export const blur = () => {
30
33
  tabListRef?.blur();
31
34
  };
32
35
  export const focus = (options) => {
33
- tabListRef?.focus(options);
36
+ let selectedItem = getSelectedTabElement();
37
+ if (selectedValue && selectedItem) {
38
+ selectTab(selectedValue, selectedItem);
39
+ } else {
40
+ selectFirstTab();
41
+ }
34
42
  };
35
43
  const isElementTab = (candidate) => {
36
44
  return candidate && candidate.getAttribute("data-value") !== null && candidate.getAttribute("data-value") !== void 0 && candidate.getAttribute("role") === "tab";
@@ -61,8 +69,8 @@ export const selectFirstTab = () => {
61
69
  return false;
62
70
  };
63
71
  export const selectPreviousTab = () => {
64
- let selectedItem = getSelectedTabElement();
65
- let candidate = selectedItem?.previousElementSibling;
72
+ let selectedTab = getSelectedTabElement();
73
+ let candidate = selectedTab?.previousElementSibling;
66
74
  while (candidate && !isElementTab(candidate)) {
67
75
  candidate = candidate.previousElementSibling;
68
76
  }
@@ -74,8 +82,8 @@ export const selectPreviousTab = () => {
74
82
  return false;
75
83
  };
76
84
  export const selectNextTab = () => {
77
- let selectedItem = getSelectedTabElement();
78
- let candidate = selectedItem?.nextElementSibling;
85
+ let selectedTab = getSelectedTabElement();
86
+ let candidate = selectedTab?.nextElementSibling;
79
87
  while (candidate && !isElementTab(candidate)) {
80
88
  candidate = candidate.nextElementSibling;
81
89
  }
@@ -158,6 +166,7 @@ const onKeydown = (event) => {
158
166
  }
159
167
  };
160
168
  setContext(TAB_LIST_CONTEXT_KEY, {
169
+ colorful: colorfulStore,
161
170
  disabled: disabledStore,
162
171
  selectedValue: selectedValueStore,
163
172
  vertical: verticalStore
@@ -168,9 +177,10 @@ setContext(TAB_LIST_CONTEXT_KEY, {
168
177
  aria-orientation={vertical ? 'vertical' : 'horizontal'}
169
178
  bind:this={tabListRef}
170
179
  class="sterling-tab-list"
171
- role="tablist"
172
- class:vertical
180
+ class:colorful
173
181
  class:disabled
182
+ class:vertical
183
+ role="tablist"
174
184
  on:blur
175
185
  on:click
176
186
  on:click={onClick}
@@ -198,7 +208,7 @@ setContext(TAB_LIST_CONTEXT_KEY, {
198
208
  on:mouseout
199
209
  on:mouseup
200
210
  on:scroll
201
- on:wheel
211
+ on:wheel|passive
202
212
  on:paste
203
213
  {...$$restProps}
204
214
  >
@@ -210,7 +220,7 @@ setContext(TAB_LIST_CONTEXT_KEY, {
210
220
  box-sizing: border-box;
211
221
  display: grid;
212
222
  margin: 0;
213
- padding: calc(2 * var(--stsv-Common__outline-width));
223
+ padding: calc(2 * var(--stsv-common__outline-width));
214
224
  }
215
225
 
216
226
  .sterling-tab-list:not(.vertical) {
@@ -232,7 +242,7 @@ setContext(TAB_LIST_CONTEXT_KEY, {
232
242
  }
233
243
 
234
244
  .sterling-tab-list:hover {
235
- color: var(--stsv-Common__color--hover);
245
+ color: var(--stsv-common__color--hover);
236
246
  }
237
247
 
238
248
  @media (prefers-reduced-motion) {
@@ -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
  disabled?: boolean | undefined;
6
7
  vertical?: boolean | undefined;
7
8
  selectedValue?: string | undefined;
@@ -1,5 +1,6 @@
1
1
  import type { Readable, Writable } from 'svelte/store';
2
2
  export type TabListContext = {
3
+ colorful: Readable<boolean>;
3
4
  disabled: Readable<boolean>;
4
5
  selectedValue: Writable<string | undefined>;
5
6
  vertical: Readable<boolean>;
package/TextArea.svelte CHANGED
@@ -1,8 +1,9 @@
1
1
  <script>import { onMount } from "svelte";
2
- export let autoHeight = false;
3
2
  export let disabled = false;
4
- export let resize = "none";
5
3
  export let value = "";
4
+ export let autoHeight = false;
5
+ export let colorful = false;
6
+ export let resize = "none";
6
7
  let textAreaRef;
7
8
  const autoSetHeight = () => {
8
9
  if (autoHeight && textAreaRef) {
@@ -42,7 +43,7 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
42
43
  };
43
44
  </script>
44
45
 
45
- <div class="sterling-text-area" class:disabled>
46
+ <div class="sterling-text-area" class:colorful class:disabled>
46
47
  <textarea
47
48
  bind:this={textAreaRef}
48
49
  bind:value
@@ -81,7 +82,7 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
81
82
  on:select
82
83
  on:submit
83
84
  on:reset
84
- on:wheel
85
+ on:wheel|passive
85
86
  on:input={onInput}
86
87
  {...$$restProps}
87
88
  />
@@ -95,13 +96,13 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
95
96
  }
96
97
 
97
98
  textarea {
98
- background-color: var(--stsv-Input__background-color);
99
- border-color: var(--stsv-Input__border-color);
100
- border-radius: var(--stsv-Input__border-radius);
101
- border-style: var(--stsv-Input__border-style);
102
- border-width: var(--stsv-Input__border-width);
99
+ background-color: var(--stsv-input__background-color);
100
+ border-color: var(--stsv-input__border-color);
101
+ border-radius: var(--stsv-input__border-radius);
102
+ border-style: var(--stsv-input__border-style);
103
+ border-width: var(--stsv-input__border-width);
103
104
  box-sizing: border-box;
104
- color: var(--stsv-Input__color);
105
+ color: var(--stsv-input__color);
105
106
  display: block;
106
107
  font: inherit;
107
108
  line-height: inherit;
@@ -117,19 +118,37 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
117
118
  }
118
119
 
119
120
  textarea:hover {
120
- background-color: var(--stsv-Input__background-color--hover);
121
- border-color: var(--stsv-Input__border-color--hover);
122
- color: var(--stsv-Input__color--hover);
121
+ background-color: var(--stsv-input__background-color--hover);
122
+ border-color: var(--stsv-input__border-color--hover);
123
+ color: var(--stsv-input__color--hover);
123
124
  }
124
125
 
125
126
  textarea:focus {
126
- background-color: var(--stsv-Input__background-color--focus);
127
- border-color: var(--stsv-Input__border-color--focus);
128
- color: var(--stsv-Input__color--focus);
129
- outline-color: var(--stsv-Common__outline-color);
130
- outline-offset: var(--stsv-Common__outline-offset);
131
- outline-style: var(--stsv-Common__outline-style);
132
- outline-width: var(--stsv-Common__outline-width);
127
+ background-color: var(--stsv-input__background-color--focus);
128
+ border-color: var(--stsv-input__border-color--focus);
129
+ color: var(--stsv-input__color--focus);
130
+ outline-color: var(--stsv-common__outline-color);
131
+ outline-offset: var(--stsv-common__outline-offset);
132
+ outline-style: var(--stsv-common__outline-style);
133
+ outline-width: var(--stsv-common__outline-width);
134
+ }
135
+
136
+ .sterling-text-area.colorful textarea {
137
+ background-color: var(--stsv-input--colorful__background-color);
138
+ border-color: var(--stsv-input--colorful__border-color);
139
+ color: var(--stsv-input--colorful__color);
140
+ }
141
+
142
+ .sterling-text-area.colorful textarea:hover {
143
+ background-color: var(--stsv-input--colorful__background-color--hover);
144
+ border-color: var(--stsv-input--colorful__border-color--hover);
145
+ color: var(--stsv-input--colorful__color--hover);
146
+ }
147
+
148
+ .sterling-text-area.colorful textarea:focus {
149
+ background-color: var(--stsv-input--colorful__background-color--focus);
150
+ border-color: var(--stsv-input--colorful__border-color--focus);
151
+ color: var(--stsv-input--colorful__color--focus);
133
152
  }
134
153
 
135
154
  .sterling-text-area:disabled {
@@ -138,7 +157,14 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
138
157
  }
139
158
 
140
159
  .sterling-text-area::after {
141
- background: var(--stsv-Disabled__background);
160
+ background: repeating-linear-gradient(
161
+ var(--stsv-common--disabled__stripe-angle),
162
+ var(--stsv-common--disabled__stripe-color),
163
+ var(--stsv-common--disabled__stripe-color) var(--stsv-common--disabled__stripe-width),
164
+ var(--stsv-common--disabled__stripe-color--alt) var(--stsv-common--disabled__stripe-width),
165
+ var(--stsv-common--disabled__stripe-color--alt)
166
+ calc(2 * var(--stsv-common--disabled__stripe-width))
167
+ );
142
168
  bottom: 0;
143
169
  content: '';
144
170
  left: 0;
@@ -155,7 +181,7 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
155
181
  }
156
182
 
157
183
  textarea::placeholder {
158
- color: var(--stsv-Display__color--faint);
184
+ color: var(--stsv-common__color--subtle);
159
185
  transition: background-color 250ms, color 250ms, border-color 250ms;
160
186
  }
161
187