@geoffcox/sterling-svelte 0.0.25 → 0.0.27

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 (86) hide show
  1. package/Button.svelte +79 -24
  2. package/Button.svelte.d.ts +1 -0
  3. package/Checkbox.svelte +44 -19
  4. package/Checkbox.svelte.d.ts +1 -0
  5. package/ColorPicker.constants.d.ts +1 -0
  6. package/ColorPicker.constants.js +1 -0
  7. package/ColorPicker.svelte +226 -0
  8. package/ColorPicker.svelte.d.ts +22 -0
  9. package/ColorPicker.types.d.ts +4 -0
  10. package/ColorPicker.types.js +1 -0
  11. package/Dialog.svelte +10 -10
  12. package/Dropdown.svelte +88 -47
  13. package/Dropdown.svelte.d.ts +4 -0
  14. package/Field.svelte +34 -46
  15. package/HexColorSliders.svelte +150 -0
  16. package/HexColorSliders.svelte.d.ts +22 -0
  17. package/HslColorSliders.svelte +187 -0
  18. package/HslColorSliders.svelte.d.ts +22 -0
  19. package/Input.svelte +49 -21
  20. package/Input.svelte.d.ts +2 -1
  21. package/Label.svelte +3 -3
  22. package/Link.svelte +63 -17
  23. package/Link.svelte.d.ts +1 -0
  24. package/List.svelte +31 -30
  25. package/List.svelte.d.ts +1 -0
  26. package/List.types.d.ts +4 -3
  27. package/ListItem.svelte +29 -10
  28. package/ListItem.svelte.d.ts +1 -1
  29. package/Menu.svelte +92 -121
  30. package/Menu.svelte.d.ts +8 -2
  31. package/MenuBar.svelte +77 -32
  32. package/MenuBar.types.d.ts +2 -2
  33. package/MenuButton.svelte +48 -28
  34. package/MenuItem.constants.d.ts +1 -0
  35. package/MenuItem.constants.js +1 -0
  36. package/MenuItem.svelte +202 -139
  37. package/MenuItem.svelte.d.ts +7 -3
  38. package/MenuItem.types.d.ts +14 -5
  39. package/MenuItem.utils.d.ts +2 -0
  40. package/MenuItem.utils.js +16 -0
  41. package/MenuItemDisplay.svelte +9 -2
  42. package/MenuItemDisplay.svelte.d.ts +1 -0
  43. package/MenuSeparator.svelte +3 -3
  44. package/Popover.svelte +68 -64
  45. package/Popover.svelte.d.ts +4 -2
  46. package/Progress.svelte +14 -14
  47. package/Radio.svelte +42 -16
  48. package/Radio.svelte.d.ts +1 -0
  49. package/RgbColorSliders.svelte +161 -0
  50. package/RgbColorSliders.svelte.d.ts +22 -0
  51. package/Select.svelte +50 -32
  52. package/Slider.svelte +108 -118
  53. package/Slider.svelte.d.ts +1 -0
  54. package/Switch.svelte +97 -34
  55. package/Switch.svelte.d.ts +1 -0
  56. package/Tab.svelte +53 -30
  57. package/TabList.svelte +23 -28
  58. package/TabList.svelte.d.ts +1 -0
  59. package/TabList.types.d.ts +1 -1
  60. package/TextArea.svelte +45 -20
  61. package/TextArea.svelte.d.ts +3 -2
  62. package/Tooltip.svelte +12 -11
  63. package/Tree.svelte +37 -35
  64. package/Tree.svelte.d.ts +2 -0
  65. package/Tree.types.d.ts +1 -0
  66. package/TreeChevron.svelte +1 -1
  67. package/TreeItem.svelte +47 -10
  68. package/TreeItem.svelte.d.ts +2 -0
  69. package/TreeItemDisplay.svelte +26 -8
  70. package/TreeItemDisplay.svelte.d.ts +2 -0
  71. package/actions/clickOutside.js +1 -1
  72. package/actions/trapKeyboardFocus.d.ts +3 -0
  73. package/actions/trapKeyboardFocus.js +52 -0
  74. package/floating-ui.types.d.ts +2 -0
  75. package/index.d.ts +10 -5
  76. package/index.js +8 -3
  77. package/package.json +12 -1
  78. package/stores/prefersReducedMotion.d.ts +1 -0
  79. package/stores/prefersReducedMotion.js +10 -0
  80. package/stores/usingKeyboard.d.ts +1 -0
  81. package/stores/usingKeyboard.js +13 -0
  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 +130 -87
  86. package/theme/lightTheme.js +107 -87
package/Button.svelte CHANGED
@@ -1,6 +1,7 @@
1
1
  <script>export let disabled = false;
2
2
  export let variant = "regular";
3
3
  export let shape = "rounded";
4
+ export let colorful = false;
4
5
  let buttonRef;
5
6
  export const click = () => {
6
7
  buttonRef?.click();
@@ -20,6 +21,7 @@ export const focus = (options) => {
20
21
  <button
21
22
  bind:this={buttonRef}
22
23
  class="sterling-button"
24
+ class:colorful
23
25
  class:square={shape === 'square'}
24
26
  class:circular={shape === 'circular'}
25
27
  class:outline={variant === 'outline'}
@@ -57,7 +59,7 @@ export const focus = (options) => {
57
59
  on:pointerover
58
60
  on:pointerout
59
61
  on:pointerup
60
- on:wheel
62
+ on:wheel|passive
61
63
  {...$$restProps}
62
64
  >
63
65
  <slot {shape} {variant} />
@@ -67,13 +69,13 @@ export const focus = (options) => {
67
69
  button {
68
70
  align-content: center;
69
71
  align-items: center;
70
- background-color: var(--stsv-Button__background-color);
71
- border-color: var(--stsv-Button__border-color);
72
- border-radius: var(--stsv-Button__border-radius);
73
- border-style: var(--stsv-Button__border-style);
74
- border-width: var(--stsv-Button__border-width);
72
+ background-color: var(--stsv-button__background-color);
73
+ border-color: var(--stsv-button__border-color);
74
+ border-radius: var(--stsv-button__border-radius);
75
+ border-style: var(--stsv-button__border-style);
76
+ border-width: var(--stsv-button__border-width);
75
77
  box-sizing: border-box;
76
- color: var(--stsv-Button__color);
78
+ color: var(--stsv-button__color);
77
79
  cursor: pointer;
78
80
  display: inline-flex;
79
81
  flex-direction: row;
@@ -105,23 +107,40 @@ export const focus = (options) => {
105
107
  }
106
108
 
107
109
  button:hover {
108
- background-color: var(--stsv-Button__background-color--hover);
109
- border-color: var(--stsv-Button__border-color--hover);
110
- color: var(--stsv-Button__color--hover);
110
+ background-color: var(--stsv-button__background-color--hover);
111
+ border-color: var(--stsv-button__border-color--hover);
112
+ color: var(--stsv-button__color--hover);
111
113
  }
112
114
 
113
115
  button:active {
114
- background-color: var(--stsv-Button__background-color--active);
115
- border-color: var(--stsv-Button__border-color--active);
116
- color: var(--stsv-Button__color--active);
116
+ background-color: var(--stsv-button__background-color--active);
117
+ border-color: var(--stsv-button__border-color--active);
118
+ color: var(--stsv-button__color--active);
117
119
  }
118
120
 
119
121
  button:focus-visible {
120
- border-color: var(--stsv-Button__border-color--focus);
121
- outline-color: var(--stsv-Common__outline-color);
122
- outline-offset: var(--stsv-Common__outline-offset);
123
- outline-style: var(--stsv-Common__outline-style);
124
- outline-width: var(--stsv-Common__outline-width);
122
+ border-color: var(--stsv-button__border-color--focus);
123
+ outline-color: var(--stsv-common__outline-color);
124
+ outline-offset: var(--stsv-common__outline-offset);
125
+ outline-style: var(--stsv-common__outline-style);
126
+ outline-width: var(--stsv-common__outline-width);
127
+ }
128
+
129
+ button.colorful {
130
+ background-color: var(--stsv-button--colorful__background-color);
131
+ border-color: var(--stsv-button--colorful__border-color);
132
+ color: var(--stsv-button--colorful__color);
133
+ }
134
+ button.colorful:hover {
135
+ background-color: var(--stsv-button--colorful__background-color--hover);
136
+ border-color: var(--stsv-button--colorful__border-color--hover);
137
+ color: var(--stsv-button--colorful__color--hover);
138
+ }
139
+
140
+ button.colorful:active {
141
+ background-color: var(--stsv-button--colorful__background-color--active);
142
+ border-color: var(--stsv-button--colorful__border-color--active);
143
+ color: var(--stsv-button--colorful__color--active);
125
144
  }
126
145
 
127
146
  button.outline {
@@ -129,11 +148,27 @@ export const focus = (options) => {
129
148
  }
130
149
 
131
150
  button.outline:hover {
132
- background-color: var(--stsv-Button__background-color--hover);
151
+ background-color: var(--stsv-button__background-color--hover);
133
152
  }
134
153
 
135
154
  button.outline:active {
136
- background-color: var(--stsv-Button__background-color--active);
155
+ background-color: var(--stsv-button__background-color--active);
156
+ }
157
+
158
+ button.outline.colorful {
159
+ border-color: var(--stsv-button--colorful__border-color);
160
+ color: var(--stsv-button--colorful__border-color);
161
+ }
162
+ button.outline.colorful:hover {
163
+ background-color: var(--stsv-button--colorful__background-color--hover);
164
+ border-color: var(--stsv-button--colorful__border-color--hover);
165
+ color: var(--stsv-button--colorful__color--hover);
166
+ }
167
+
168
+ button.outline.colorful:active {
169
+ background-color: var(--stsv-button--colorful__background-color--active);
170
+ border-color: var(--stsv-button--colorful__border-color--active);
171
+ color: var(--stsv-button--colorful__color--active);
137
172
  }
138
173
 
139
174
  button.ghost {
@@ -142,17 +177,31 @@ export const focus = (options) => {
142
177
  }
143
178
 
144
179
  button.ghost:hover {
145
- background-color: var(--stsv-Button__background-color--hover);
180
+ background-color: var(--stsv-button__background-color--hover);
146
181
  border-color: transparent;
147
182
  }
148
183
 
149
184
  button.ghost:active {
150
- background-color: var(--stsv-Button__background-color--active);
185
+ background-color: var(--stsv-button__background-color--active);
151
186
  border-color: transparent;
152
187
  }
153
188
 
154
189
  button.ghost:focus-visible {
155
- border-color: var(--stsv-Button__border-color--focus);
190
+ border-color: var(--stsv-button__border-color--focus);
191
+ }
192
+
193
+ button.ghost.colorful {
194
+ color: var(--stsv-button--colorful__border-color);
195
+ }
196
+
197
+ button.ghost.colorful:hover {
198
+ background-color: var(--stsv-button--colorful__background-color--hover);
199
+ color: var(--stsv-button--colorful__color--hover);
200
+ }
201
+
202
+ button.ghost.colorful:active {
203
+ background-color: var(--stsv-button--colorful__background-color--active);
204
+ color: var(--stsv-button--colorful__color--active);
156
205
  }
157
206
 
158
207
  button:disabled {
@@ -167,7 +216,13 @@ export const focus = (options) => {
167
216
  right: 0;
168
217
  top: 0;
169
218
  bottom: 0;
170
- background: var(--stsv-Disabled__background);
219
+ background: repeating-linear-gradient(
220
+ 45deg,
221
+ var(--stsv-common__background-color1--disabled),
222
+ var(--stsv-common__background-color1--disabled) 3px,
223
+ var(--stsv-common__background-color2--disabled) 3px,
224
+ var(--stsv-common__background-color2--disabled) 6px
225
+ );
171
226
  pointer-events: none;
172
227
  }
173
228
 
@@ -5,6 +5,7 @@ declare const __propDef: {
5
5
  disabled?: boolean | undefined;
6
6
  variant?: "regular" | "outline" | "ghost" | undefined;
7
7
  shape?: "circular" | "rounded" | "square" | undefined;
8
+ colorful?: boolean | undefined;
8
9
  click?: (() => void) | undefined;
9
10
  blur?: (() => void) | undefined;
10
11
  focus?: ((options?: FocusOptions) => void) | undefined;
package/Checkbox.svelte CHANGED
@@ -1,6 +1,7 @@
1
1
  <script>import { idGenerator } from "./idGenerator";
2
2
  import Label from "./Label.svelte";
3
3
  export let checked = false;
4
+ export let colorful = false;
4
5
  export let disabled = false;
5
6
  export let id = void 0;
6
7
  let inputRef;
@@ -24,7 +25,7 @@ export const focus = (options) => {
24
25
  @component
25
26
  A styled HTML input type=checkbox element.
26
27
  -->
27
- <div class="sterling-checkbox" class:disabled>
28
+ <div class="sterling-checkbox" class:colorful class:disabled>
28
29
  <div class="container">
29
30
  <input
30
31
  bind:this={inputRef}
@@ -56,7 +57,7 @@ export const focus = (options) => {
56
57
  on:mouseover
57
58
  on:mouseout
58
59
  on:mouseup
59
- on:wheel
60
+ on:wheel|passive
60
61
  {...$$restProps}
61
62
  />
62
63
  <div class="indicator" />
@@ -115,10 +116,10 @@ export const focus = (options) => {
115
116
  and there is not a parent CSS selector.
116
117
  */
117
118
  .indicator {
118
- background-color: var(--stsv-Input__background-color);
119
- border-color: var(--stsv-Input__border-color);
120
- border-style: var(--stsv-Input__border-style);
121
- border-width: var(--stsv-Input__border-width);
119
+ background-color: var(--stsv-input__background-color);
120
+ border-color: var(--stsv-input__border-color);
121
+ border-style: var(--stsv-input__border-style);
122
+ border-width: var(--stsv-input__border-width);
122
123
  box-sizing: border-box;
123
124
  display: inline-block;
124
125
  height: 20px;
@@ -129,27 +130,27 @@ export const focus = (options) => {
129
130
  }
130
131
 
131
132
  input:checked + .indicator {
132
- background-color: var(--stsv-Input__background-color);
133
- border-color: var(--stsv-Input__border-color);
133
+ background-color: var(--stsv-input__background-color);
134
+ border-color: var(--stsv-input__border-color);
134
135
  }
135
136
 
136
- .sterling-checkbox:hover .indicator {
137
- background-color: var(--stsv-Input__background-color--hover);
138
- border-color: var(--stsv-Input__border-color--hover);
137
+ .sterling-checkbox:not(.disabled):hover .indicator {
138
+ background-color: var(--stsv-input__background-color--hover);
139
+ border-color: var(--stsv-input__border-color--hover);
139
140
  }
140
141
 
141
142
  input:focus-visible + .indicator {
142
- outline-color: var(--stsv-Common__outline-color);
143
- outline-offset: var(--stsv-Common__outline-offset);
144
- outline-style: var(--stsv-Common__outline-style);
145
- outline-width: var(--stsv-Common__outline-width);
143
+ outline-color: var(--stsv-common__outline-color);
144
+ outline-offset: var(--stsv-common__outline-offset);
145
+ outline-style: var(--stsv-common__outline-style);
146
+ outline-width: var(--stsv-common__outline-width);
146
147
  }
147
148
 
148
149
  /*
149
150
  The checkmark is a rotated L centered in the box.
150
151
  */
151
152
  .indicator::after {
152
- border-color: var(--stsv-Input__color);
153
+ border-color: var(--stsv-input__color);
153
154
  border-style: solid;
154
155
  border-width: 0 3px 3px 0;
155
156
  box-sizing: border-box;
@@ -169,8 +170,26 @@ export const focus = (options) => {
169
170
  opacity: 1;
170
171
  }
171
172
 
172
- .sterling-checkbox:hover input:checked + .indicator::after {
173
- border-color: var(--stsv-Input__color--hover);
173
+ .sterling-checkbox:not(.disabled):hover input:checked + .indicator::after {
174
+ border-color: var(--stsv-input__color--hover);
175
+ }
176
+
177
+ .sterling-checkbox.colorful .indicator {
178
+ background-color: var(--stsv-input--colorful__background-color);
179
+ border-color: var(--stsv-input--colorful__border-color);
180
+ }
181
+
182
+ .sterling-checkbox.colorful:not(.disabled):hover .indicator {
183
+ background-color: var(--stsv-input--colorful__background-color--hover);
184
+ border-color: var(--stsv-input--colorful__border-color--hover);
185
+ }
186
+
187
+ .sterling-checkbox.colorful .indicator::after {
188
+ border-color: var(--stsv-input--colorful__color);
189
+ }
190
+
191
+ .sterling-checkbox.colorful:not(.disabled):hover input:checked + .indicator::after {
192
+ border-color: var(--stsv-input--colorful__color--hover);
174
193
  }
175
194
 
176
195
  .sterling-checkbox.disabled,
@@ -179,7 +198,13 @@ export const focus = (options) => {
179
198
  }
180
199
 
181
200
  .container::after {
182
- background: var(--stsv-Disabled__background);
201
+ background: repeating-linear-gradient(
202
+ 45deg,
203
+ var(--stsv-common__background-color1--disabled),
204
+ var(--stsv-common__background-color1--disabled) 3px,
205
+ var(--stsv-common__background-color2--disabled) 3px,
206
+ var(--stsv-common__background-color2--disabled) 6px
207
+ );
183
208
  bottom: 0;
184
209
  content: '';
185
210
  left: 0;
@@ -3,6 +3,7 @@ declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
5
  checked?: boolean | undefined;
6
+ colorful?: boolean | undefined;
6
7
  disabled?: boolean | undefined;
7
8
  id?: string | undefined;
8
9
  blur?: (() => void) | undefined;
@@ -0,0 +1 @@
1
+ export declare const COLOR_FORMATS: readonly ["hex", "rgb", "hsl"];
@@ -0,0 +1 @@
1
+ export const COLOR_FORMATS = ['hex', 'rgb', 'hsl'];
@@ -0,0 +1,226 @@
1
+ <script>import { tick } from "svelte";
2
+ import tinycolor from "@ctrl/tinycolor";
3
+ import Dropdown from "./Dropdown.svelte";
4
+ import Input from "./Input.svelte";
5
+ import Tab from "./Tab.svelte";
6
+ import TabList from "./TabList.svelte";
7
+ import RgbColorSliders from "./RgbColorSliders.svelte";
8
+ import HslColorSliders from "./HslColorSliders.svelte";
9
+ import HexColorSliders from "./HexColorSliders.svelte";
10
+ import { round } from "lodash-es";
11
+ import { trapKeyboardFocus } from "./actions/trapKeyboardFocus";
12
+ const defaultColorText = "#000000";
13
+ export let colorText = defaultColorText;
14
+ export let colorFormat = "hex";
15
+ export let colorful = false;
16
+ export let composed = false;
17
+ export let disabled = false;
18
+ export let open = false;
19
+ export let stayOpenOnClickAway = false;
20
+ let hue = 0;
21
+ let saturation = 0;
22
+ let lightness = 0;
23
+ let red = 0;
24
+ let green = 0;
25
+ let blue = 0;
26
+ let alpha = 1;
27
+ let hexAlpha = 255;
28
+ let updating = false;
29
+ let tabListRef;
30
+ let tabsRef;
31
+ const updateFromRgb = async () => {
32
+ if (!updating && (colorFormat === "hex" || colorFormat === "rgb")) {
33
+ updating = true;
34
+ const newAlpha = colorFormat === "hex" ? hexAlpha / 255 : alpha;
35
+ const color = tinycolor({ r: red, g: green, b: blue, a: newAlpha });
36
+ const hsl = color.toHsl();
37
+ hue = Math.round(hsl.h);
38
+ saturation = Math.round(hsl.s * 100);
39
+ lightness = Math.round(hsl.l * 100);
40
+ switch (colorFormat) {
41
+ case "rgb":
42
+ colorText = color.toRgbString();
43
+ hexAlpha = Math.round(alpha * 255);
44
+ break;
45
+ case "hex":
46
+ colorText = alpha === 100 ? color.toHexString() : color.toHex8String();
47
+ alpha = round(hexAlpha / 255, 2);
48
+ break;
49
+ }
50
+ await tick();
51
+ updating = false;
52
+ }
53
+ };
54
+ const updateFromHsl = async () => {
55
+ if (!updating && colorFormat === "hsl") {
56
+ updating = true;
57
+ const color = tinycolor({ h: hue, s: saturation / 100, l: lightness / 100, a: alpha });
58
+ const rgb = color.toRgb();
59
+ red = rgb.r;
60
+ green = rgb.g;
61
+ blue = rgb.b;
62
+ colorText = color.toHslString();
63
+ hexAlpha = Math.round(alpha * 255);
64
+ await tick();
65
+ updating = false;
66
+ }
67
+ };
68
+ const updateColorsFromText = async () => {
69
+ const color = tinycolor(colorText);
70
+ if (color.isValid) {
71
+ if (!updating) {
72
+ updating = true;
73
+ switch (color.format) {
74
+ case "hsl":
75
+ colorFormat = "hsl";
76
+ break;
77
+ case "rgb":
78
+ colorFormat = "rgb";
79
+ break;
80
+ case "hex":
81
+ case "hex4":
82
+ case "hex8":
83
+ colorFormat = "hex";
84
+ break;
85
+ default:
86
+ break;
87
+ }
88
+ const hsl = color.toHsl();
89
+ hue = Math.round(hsl.h);
90
+ saturation = Math.round(hsl.s * 100);
91
+ lightness = Math.round(hsl.l * 100);
92
+ const rgb = color.toRgb();
93
+ red = rgb.r;
94
+ green = rgb.g;
95
+ blue = rgb.b;
96
+ if (rgb.a) {
97
+ alpha = hsl.a;
98
+ hexAlpha = Math.round(alpha * 255);
99
+ }
100
+ await tick();
101
+ updating = false;
102
+ }
103
+ }
104
+ };
105
+ $:
106
+ colorText, updateColorsFromText();
107
+ $:
108
+ colorFormat, hue, saturation, lightness, alpha, updateFromHsl();
109
+ $:
110
+ colorFormat, red, green, blue, alpha, hexAlpha, updateFromRgb();
111
+ const onInputBlur = async () => {
112
+ if (!updating) {
113
+ if (colorText.trim().length === 0) {
114
+ colorText = defaultColorText;
115
+ return;
116
+ }
117
+ const color = tinycolor(colorText);
118
+ if (color.isValid) {
119
+ updating = true;
120
+ switch (colorFormat) {
121
+ case "hsl":
122
+ colorText = color.toHslString();
123
+ break;
124
+ case "rgb":
125
+ colorText = color.toRgbString();
126
+ break;
127
+ case "hex":
128
+ colorText = alpha === 1 ? color.toHexString() : color.toHex8String();
129
+ break;
130
+ default:
131
+ break;
132
+ }
133
+ await tick();
134
+ updating = false;
135
+ }
136
+ }
137
+ };
138
+ const onInputClick = (event) => {
139
+ event.stopPropagation();
140
+ return false;
141
+ };
142
+ const onInputKeydown = (event) => {
143
+ switch (event.key) {
144
+ case "Tab":
145
+ if (open) {
146
+ setTimeout(() => {
147
+ tabListRef?.focus();
148
+ }, 0);
149
+ event.preventDefault();
150
+ event.stopPropagation();
151
+ return false;
152
+ }
153
+ break;
154
+ case "Escape":
155
+ if (open) {
156
+ open = false;
157
+ event.preventDefault();
158
+ event.stopPropagation();
159
+ return false;
160
+ }
161
+ break;
162
+ }
163
+ event.stopImmediatePropagation();
164
+ };
165
+ updateColorsFromText();
166
+ </script>
167
+
168
+ <Dropdown bind:open {colorful} {composed} {disabled} {stayOpenOnClickAway}>
169
+ <div class="value" slot="value">
170
+ <div class="color-box" style="background-color: {colorText}" />
171
+ <Input
172
+ bind:value={colorText}
173
+ {colorful}
174
+ {disabled}
175
+ composed
176
+ on:blur={onInputBlur}
177
+ on:click={onInputClick}
178
+ on:keydown={onInputKeydown}
179
+ spellcheck="false"
180
+ />
181
+ </div>
182
+ <div class="popup" use:trapKeyboardFocus>
183
+ <div class="tabs" bind:this={tabsRef}>
184
+ <TabList bind:this={tabListRef} bind:selectedValue={colorFormat} {colorful}>
185
+ <Tab value="hex">hex</Tab>
186
+ <Tab value="rgb">rgb</Tab>
187
+ <Tab value="hsl">hsl</Tab>
188
+ </TabList>
189
+ </div>
190
+ <div class="sliders">
191
+ {#if colorFormat === 'rgb'}
192
+ <RgbColorSliders bind:red bind:green bind:blue bind:alpha {colorful} />
193
+ {:else if colorFormat === 'hex'}
194
+ <HexColorSliders bind:red bind:green bind:blue bind:alpha={hexAlpha} {colorful} />
195
+ {:else if colorFormat === 'hsl'}
196
+ <HslColorSliders bind:hue bind:saturation bind:lightness bind:alpha {colorful} />
197
+ {/if}
198
+ </div>
199
+ </div>
200
+ </Dropdown>
201
+
202
+ <style>
203
+ .value {
204
+ display: grid;
205
+ align-items: center;
206
+ justify-content: stretch;
207
+ justify-items: stretch;
208
+ grid-template-columns: auto 1fr;
209
+ padding-left: 0.5em;
210
+ width: 250px;
211
+ }
212
+
213
+ .color-box {
214
+ width: 1em;
215
+ height: 1em;
216
+ border: 1px dashed var(--stsv-common__border-color);
217
+ }
218
+
219
+ .popup {
220
+ width: fit-content;
221
+ min-width: 500px;
222
+ display: grid;
223
+ align-items: center;
224
+ padding: 0.25em;
225
+ }
226
+ </style>
@@ -0,0 +1,22 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ colorText?: string | undefined;
5
+ colorFormat?: "hex" | "rgb" | "hsl" | undefined;
6
+ colorful?: boolean | undefined;
7
+ composed?: boolean | undefined;
8
+ disabled?: boolean | undefined;
9
+ open?: boolean | undefined;
10
+ stayOpenOnClickAway?: boolean | undefined;
11
+ };
12
+ events: {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {};
16
+ };
17
+ export type ColorPickerProps = typeof __propDef.props;
18
+ export type ColorPickerEvents = typeof __propDef.events;
19
+ export type ColorPickerSlots = typeof __propDef.slots;
20
+ export default class ColorPicker extends SvelteComponentTyped<ColorPickerProps, ColorPickerEvents, ColorPickerSlots> {
21
+ }
22
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { COLOR_FORMATS } from './ColorPicker.constants';
2
+ type ColorFormatTuple = typeof COLOR_FORMATS;
3
+ export type ColorFormat = ColorFormatTuple[number];
4
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/Dialog.svelte CHANGED
@@ -10,7 +10,7 @@ let formRef;
10
10
  let closing = false;
11
11
  const onDocumentClick = (event) => {
12
12
  const targetNode = event?.target;
13
- if (targetNode && !contentRef.contains(targetNode) && backdropCloses) {
13
+ if (targetNode && !contentRef?.contains(targetNode) && backdropCloses) {
14
14
  open = false;
15
15
  }
16
16
  };
@@ -146,17 +146,17 @@ A styled &lt;dialog&gt; element
146
146
  }
147
147
 
148
148
  .header {
149
- background-color: var(--stsv-Display__background-color);
149
+ background-color: var(--stsv-common__background-color--secondary);
150
150
  }
151
151
 
152
152
  .content {
153
- background-color: var(--stsv-Common__background-color);
154
- border-color: var(--stsv-Common__border-color);
155
- border-radius: var(--stsv-Common__border-radius);
156
- border-style: var(--stsv-Common__border-style);
157
- border-width: var(--stsv-Common__border-width);
153
+ background-color: var(--stsv-common__background-color);
154
+ border-color: var(--stsv-common__border-color);
155
+ border-radius: var(--stsv-common__border-radius);
156
+ border-style: var(--stsv-common__border-style);
157
+ border-width: var(--stsv-common__border-width);
158
158
  box-sizing: border-box;
159
- color: var(--stsv-Common__color);
159
+ color: var(--stsv-common__color);
160
160
  display: grid;
161
161
  grid-template-columns: 1fr;
162
162
  grid-template-rows: auto 1fr auto auto;
@@ -229,8 +229,8 @@ A styled &lt;dialog&gt; element
229
229
  }
230
230
 
231
231
  .separator {
232
- background-color: var(--stsv-Display__background-color);
233
- height: var(--stsv-Common__border-width);
232
+ background-color: var(--stsv-common__background-color--secondary);
233
+ height: var(--stsv-common__border-width);
234
234
  margin: 0 0.25em;
235
235
  }
236
236