@geoffcox/sterling-svelte 0.0.31 → 1.0.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 (215) hide show
  1. package/@types/clickOutside.d.ts +11 -7
  2. package/Button.svelte +11 -183
  3. package/Button.svelte.d.ts +2 -6
  4. package/Callout.svelte +107 -146
  5. package/Callout.svelte.d.ts +1 -1
  6. package/Checkbox.svelte +15 -177
  7. package/Checkbox.svelte.d.ts +2 -2
  8. package/ColorPicker.svelte +204 -223
  9. package/ColorPicker.svelte.d.ts +1 -2
  10. package/Dialog.svelte +91 -187
  11. package/Dialog.svelte.d.ts +3 -1
  12. package/Dropdown.svelte +52 -220
  13. package/Dropdown.svelte.d.ts +4 -8
  14. package/HexColorSliders.svelte +77 -145
  15. package/HexColorSliders.svelte.d.ts +28 -1
  16. package/HslColorSliders.svelte +99 -179
  17. package/HslColorSliders.svelte.d.ts +28 -1
  18. package/Input.svelte +27 -136
  19. package/Input.svelte.d.ts +2 -3
  20. package/Label.constants.d.ts +1 -0
  21. package/Label.constants.js +1 -0
  22. package/Label.svelte +96 -169
  23. package/Label.svelte.d.ts +6 -1
  24. package/Label.types.d.ts +3 -1
  25. package/Link.svelte +9 -106
  26. package/Link.svelte.d.ts +0 -1
  27. package/List.svelte +142 -230
  28. package/List.svelte.d.ts +2 -3
  29. package/List.types.d.ts +6 -1
  30. package/ListItem.svelte +25 -94
  31. package/ListItem.svelte.d.ts +2 -0
  32. package/Menu.svelte +48 -65
  33. package/Menu.svelte.d.ts +4 -1
  34. package/MenuBar.svelte +84 -86
  35. package/MenuBar.svelte.d.ts +4 -1
  36. package/MenuButton.svelte +66 -73
  37. package/MenuButton.svelte.d.ts +7 -3
  38. package/MenuItem.svelte +256 -288
  39. package/MenuItem.svelte.d.ts +2 -2
  40. package/MenuItemDisplay.svelte +12 -116
  41. package/MenuItemDisplay.svelte.d.ts +21 -7
  42. package/MenuSeparator.svelte +6 -45
  43. package/MenuSeparator.svelte.d.ts +8 -78
  44. package/Popover.constants.d.ts +1 -1
  45. package/Popover.constants.js +1 -1
  46. package/Popover.svelte +66 -80
  47. package/Popover.svelte.d.ts +5 -1
  48. package/Progress.svelte +28 -126
  49. package/Progress.svelte.d.ts +4 -3
  50. package/Radio.svelte +49 -192
  51. package/Radio.svelte.d.ts +2 -2
  52. package/RgbColorSliders.svelte +48 -137
  53. package/RgbColorSliders.svelte.d.ts +5 -5
  54. package/Select.svelte +122 -250
  55. package/Select.svelte.d.ts +6 -2
  56. package/Slider.svelte +90 -259
  57. package/Slider.svelte.d.ts +1 -2
  58. package/Switch.svelte +24 -259
  59. package/Switch.svelte.d.ts +3 -1
  60. package/Tab.svelte +27 -175
  61. package/Tab.svelte.d.ts +6 -4
  62. package/TabList.svelte +146 -171
  63. package/TabList.svelte.d.ts +3 -2
  64. package/TabList.types.d.ts +6 -1
  65. package/TextArea.svelte +32 -129
  66. package/TextArea.svelte.d.ts +1 -1
  67. package/Tooltip.svelte +46 -47
  68. package/Tooltip.svelte.d.ts +8 -3
  69. package/Tree.constants.d.ts +0 -1
  70. package/Tree.constants.js +0 -1
  71. package/Tree.svelte +35 -119
  72. package/Tree.svelte.d.ts +4 -4
  73. package/Tree.types.d.ts +1 -3
  74. package/TreeChevron.svelte +18 -98
  75. package/TreeChevron.svelte.d.ts +1 -0
  76. package/TreeItem.constants.d.ts +1 -0
  77. package/TreeItem.constants.js +1 -0
  78. package/TreeItem.svelte +251 -211
  79. package/TreeItem.svelte.d.ts +7 -3
  80. package/TreeItem.types.d.ts +1 -1
  81. package/TreeItemDisplay.svelte +20 -104
  82. package/TreeItemDisplay.svelte.d.ts +2 -2
  83. package/actions/applyLightDarkMode.d.ts +10 -0
  84. package/actions/applyLightDarkMode.js +36 -0
  85. package/actions/forwardEvents.js +3 -3
  86. package/css/Button.base.css +74 -0
  87. package/css/Button.colorful.css +17 -0
  88. package/css/Button.css +7 -0
  89. package/css/Button.secondary.colorful.css +15 -0
  90. package/css/Button.secondary.css +11 -0
  91. package/css/Button.shapes.css +14 -0
  92. package/css/Button.tool.colorful.css +13 -0
  93. package/css/Button.tool.css +18 -0
  94. package/css/Callout.base.css +43 -0
  95. package/css/Callout.colorful.css +5 -0
  96. package/css/Callout.css +2 -0
  97. package/css/Checkbox.base.css +145 -0
  98. package/css/Checkbox.colorful.css +17 -0
  99. package/css/Checkbox.css +2 -0
  100. package/css/ColorPicker.base.css +23 -0
  101. package/css/ColorPicker.css +1 -0
  102. package/css/Dialog.base.css +116 -0
  103. package/css/Dialog.css +1 -0
  104. package/css/Dropdown.base.css +147 -0
  105. package/css/Dropdown.colorful.css +23 -0
  106. package/css/Dropdown.css +2 -0
  107. package/css/HexColorSliders.base.css +106 -0
  108. package/css/HexColorSliders.css +1 -0
  109. package/css/HslColorSliders.base.css +124 -0
  110. package/css/HslColorSliders.css +1 -0
  111. package/css/Input.base.css +100 -0
  112. package/css/Input.colorful.css +22 -0
  113. package/css/Input.composed.css +8 -0
  114. package/css/Input.css +3 -0
  115. package/css/Label.base.css +119 -0
  116. package/css/Label.boxed.colorful.css +21 -0
  117. package/css/Label.boxed.css +31 -0
  118. package/css/Label.colorful.css +3 -0
  119. package/css/Label.css +4 -0
  120. package/css/Link.base.css +52 -0
  121. package/css/Link.colorful.css +15 -0
  122. package/css/Link.css +6 -0
  123. package/css/Link.ghost.colorful.css +7 -0
  124. package/css/Link.ghost.css +11 -0
  125. package/css/Link.undecorated.colorful.css +6 -0
  126. package/css/Link.undecorated.css +6 -0
  127. package/css/List.base.css +98 -0
  128. package/css/List.css +1 -0
  129. package/css/ListItem.base.css +59 -0
  130. package/css/ListItem.css +1 -0
  131. package/css/Menu.base.css +21 -0
  132. package/css/Menu.css +1 -0
  133. package/css/MenuBar.base.css +9 -0
  134. package/css/MenuBar.css +1 -0
  135. package/css/MenuButton.base.css +13 -0
  136. package/css/MenuButton.css +1 -0
  137. package/css/MenuItem.base.css +48 -0
  138. package/css/MenuItem.css +1 -0
  139. package/css/MenuItemDisplay.base.css +104 -0
  140. package/css/MenuItemDisplay.css +1 -0
  141. package/css/MenuSeparator.base.css +5 -0
  142. package/css/MenuSeparator.css +1 -0
  143. package/css/Popover copy.css +21 -0
  144. package/css/Popover.css +21 -0
  145. package/css/Progress.base.css +99 -0
  146. package/css/Progress.css +1 -0
  147. package/css/Radio.base.css +135 -0
  148. package/css/Radio.colorful.css +18 -0
  149. package/css/Radio.css +2 -0
  150. package/css/RgbColorSliders.base.css +94 -0
  151. package/css/RgbColorSliders.css +1 -0
  152. package/css/Select.base.css +127 -0
  153. package/css/Select.colorful.css +24 -0
  154. package/css/Select.composed.css +12 -0
  155. package/css/Select.css +3 -0
  156. package/css/Slider.base.css +182 -0
  157. package/css/Slider.colorful.css +11 -0
  158. package/css/Slider.composed.css +8 -0
  159. package/css/Slider.css +3 -0
  160. package/css/Switch.base.css +193 -0
  161. package/css/Switch.colorful.css +39 -0
  162. package/css/Switch.css +2 -0
  163. package/css/Tab.base.css +135 -0
  164. package/css/Tab.colorful.css +13 -0
  165. package/css/Tab.css +2 -0
  166. package/css/TabList.base.css +34 -0
  167. package/css/TabList.css +1 -0
  168. package/css/TextArea.base.css +85 -0
  169. package/css/TextArea.colorful.css +17 -0
  170. package/css/TextArea.composed.css +8 -0
  171. package/css/TextArea.css +3 -0
  172. package/css/Tooltip.base.css +6 -0
  173. package/css/Tooltip.css +1 -0
  174. package/css/Tree.base.css +74 -0
  175. package/css/Tree.composed.css +8 -0
  176. package/css/Tree.css +2 -0
  177. package/css/TreeChevron.base.css +86 -0
  178. package/css/TreeChevron.css +1 -0
  179. package/css/TreeItem.base.css +3 -0
  180. package/css/TreeItem.css +1 -0
  181. package/css/TreeItemDisplay.base.css +74 -0
  182. package/css/TreeItemDisplay.colorful.css +9 -0
  183. package/css/TreeItemDisplay.css +1 -0
  184. package/css/dark-mode.css +134 -0
  185. package/css/light-mode.css +134 -0
  186. package/css/sterling.css +37 -0
  187. package/index.d.ts +9 -13
  188. package/index.js +8 -12
  189. package/mediaQueries/prefersColorSchemeDark.d.ts +2 -0
  190. package/mediaQueries/prefersColorSchemeDark.js +10 -0
  191. package/{stores → mediaQueries}/prefersReducedMotion.d.ts +1 -0
  192. package/{stores → mediaQueries}/usingKeyboard.d.ts +1 -0
  193. package/package.json +121 -13
  194. package/Link.constants.d.ts +0 -1
  195. package/Link.constants.js +0 -1
  196. package/Link.types.d.ts +0 -4
  197. package/Link.types.js +0 -1
  198. package/theme/applyDarkTheme.d.ts +0 -7
  199. package/theme/applyDarkTheme.js +0 -11
  200. package/theme/applyLightTheme.d.ts +0 -7
  201. package/theme/applyLightTheme.js +0 -11
  202. package/theme/applyTheme.d.ts +0 -7
  203. package/theme/applyTheme.js +0 -20
  204. package/theme/colors.d.ts +0 -54
  205. package/theme/colors.js +0 -82
  206. package/theme/darkTheme.d.ts +0 -2
  207. package/theme/darkTheme.js +0 -142
  208. package/theme/lightTheme.d.ts +0 -2
  209. package/theme/lightTheme.js +0 -119
  210. package/theme/toggleDarkTheme.d.ts +0 -18
  211. package/theme/toggleDarkTheme.js +0 -53
  212. package/theme/types.d.ts +0 -21
  213. package/theme/types.js +0 -1
  214. /package/{stores → mediaQueries}/prefersReducedMotion.js +0 -0
  215. /package/{stores → mediaQueries}/usingKeyboard.js +0 -0
@@ -1,21 +1,28 @@
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";
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
+ // ----- Constants ----- //
13
+ const defaultColorText = '#000000';
14
+ // ----- Props ----- //
15
+ /** The color value in HEX, RGB, or HSL format */
13
16
  export let colorText = defaultColorText;
14
- export let colorFormat = "hex";
15
- export let colorful = false;
16
- export let composed = false;
17
+ /** The current color format */
18
+ export let colorFormat = 'hex';
19
+ /** When true, the picker is disabled. */
17
20
  export let disabled = false;
21
+ /** When true, the dropdown is open. */
18
22
  export let open = false;
23
+ /** Additional class names to apply. */
24
+ export let variant = '';
25
+ // ----- State ----- //
19
26
  let hue = 0;
20
27
  let saturation = 0;
21
28
  let lightness = 0;
@@ -27,231 +34,205 @@ let hexAlpha = 255;
27
34
  let updating = false;
28
35
  let tabListRef;
29
36
  let tabsRef;
37
+ // ----- Update HSL, RGB, Text ----- //
30
38
  const updateFromRgb = async () => {
31
- if (!updating && (colorFormat === "hex" || colorFormat === "rgb")) {
32
- updating = true;
33
- const newAlpha = colorFormat === "hex" ? hexAlpha / 255 : alpha;
34
- const color = tinycolor({ r: red, g: green, b: blue, a: newAlpha });
35
- const hsl = color.toHsl();
36
- hue = Math.round(hsl.h);
37
- saturation = Math.round(hsl.s * 100);
38
- lightness = Math.round(hsl.l * 100);
39
- switch (colorFormat) {
40
- case "rgb":
41
- colorText = color.toRgbString();
42
- hexAlpha = Math.round(alpha * 255);
43
- break;
44
- case "hex":
45
- colorText = alpha === 100 ? color.toHexString() : color.toHex8String();
46
- alpha = round(hexAlpha / 255, 2);
47
- break;
39
+ if (!updating && (colorFormat === 'hex' || colorFormat === 'rgb')) {
40
+ updating = true;
41
+ const newAlpha = colorFormat === 'hex' ? hexAlpha / 255 : alpha;
42
+ const color = tinycolor({ r: red, g: green, b: blue, a: newAlpha });
43
+ const hsl = color.toHsl();
44
+ hue = Math.round(hsl.h);
45
+ saturation = Math.round(hsl.s * 100);
46
+ lightness = Math.round(hsl.l * 100);
47
+ switch (colorFormat) {
48
+ case 'rgb':
49
+ colorText = color.toRgbString();
50
+ hexAlpha = Math.round(alpha * 255);
51
+ break;
52
+ case 'hex':
53
+ colorText = alpha === 100 ? color.toHexString() : color.toHex8String();
54
+ alpha = round(hexAlpha / 255, 2);
55
+ break;
56
+ }
57
+ await tick();
58
+ updating = false;
48
59
  }
49
- await tick();
50
- updating = false;
51
- }
52
60
  };
53
61
  const updateFromHsl = async () => {
54
- if (!updating && colorFormat === "hsl") {
55
- updating = true;
56
- const color = tinycolor({ h: hue, s: saturation / 100, l: lightness / 100, a: alpha });
57
- const rgb = color.toRgb();
58
- red = rgb.r;
59
- green = rgb.g;
60
- blue = rgb.b;
61
- colorText = color.toHslString();
62
- hexAlpha = Math.round(alpha * 255);
63
- await tick();
64
- updating = false;
65
- }
66
- };
67
- const updateColorsFromText = async () => {
68
- const color = tinycolor(colorText);
69
- if (color.isValid) {
70
- if (!updating) {
71
- updating = true;
72
- switch (color.format) {
73
- case "hsl":
74
- colorFormat = "hsl";
75
- break;
76
- case "rgb":
77
- colorFormat = "rgb";
78
- break;
79
- case "hex":
80
- case "hex4":
81
- case "hex8":
82
- colorFormat = "hex";
83
- break;
84
- default:
85
- break;
86
- }
87
- const hsl = color.toHsl();
88
- hue = Math.round(hsl.h);
89
- saturation = Math.round(hsl.s * 100);
90
- lightness = Math.round(hsl.l * 100);
91
- const rgb = color.toRgb();
92
- red = rgb.r;
93
- green = rgb.g;
94
- blue = rgb.b;
95
- if (rgb.a) {
96
- alpha = hsl.a;
62
+ if (!updating && colorFormat === 'hsl') {
63
+ updating = true;
64
+ const color = tinycolor({ h: hue, s: saturation / 100, l: lightness / 100, a: alpha });
65
+ const rgb = color.toRgb();
66
+ red = rgb.r;
67
+ green = rgb.g;
68
+ blue = rgb.b;
69
+ colorText = color.toHslString();
97
70
  hexAlpha = Math.round(alpha * 255);
98
- }
99
- await tick();
100
- updating = false;
71
+ await tick();
72
+ updating = false;
101
73
  }
102
- }
103
74
  };
104
- $:
105
- colorText, updateColorsFromText();
106
- $:
107
- colorFormat, hue, saturation, lightness, alpha, updateFromHsl();
108
- $:
109
- colorFormat, red, green, blue, alpha, hexAlpha, updateFromRgb();
110
- const onInputBlur = async () => {
111
- if (!updating) {
112
- if (colorText.trim().length === 0) {
113
- colorText = defaultColorText;
114
- return;
115
- }
75
+ const updateColorsFromText = async () => {
116
76
  const color = tinycolor(colorText);
117
77
  if (color.isValid) {
118
- updating = true;
119
- switch (colorFormat) {
120
- case "hsl":
121
- colorText = color.toHslString();
122
- break;
123
- case "rgb":
124
- colorText = color.toRgbString();
125
- break;
126
- case "hex":
127
- colorText = alpha === 1 ? color.toHexString() : color.toHex8String();
128
- break;
129
- default:
130
- break;
131
- }
132
- await tick();
133
- updating = false;
78
+ if (!updating) {
79
+ updating = true;
80
+ switch (color.format) {
81
+ case 'hsl':
82
+ colorFormat = 'hsl';
83
+ break;
84
+ case 'rgb':
85
+ colorFormat = 'rgb';
86
+ break;
87
+ case 'hex':
88
+ case 'hex4':
89
+ case 'hex8':
90
+ colorFormat = 'hex';
91
+ break;
92
+ default:
93
+ break;
94
+ }
95
+ const hsl = color.toHsl();
96
+ hue = Math.round(hsl.h);
97
+ saturation = Math.round(hsl.s * 100);
98
+ lightness = Math.round(hsl.l * 100);
99
+ const rgb = color.toRgb();
100
+ red = rgb.r;
101
+ green = rgb.g;
102
+ blue = rgb.b;
103
+ if (rgb.a) {
104
+ alpha = hsl.a;
105
+ hexAlpha = Math.round(alpha * 255);
106
+ }
107
+ await tick();
108
+ updating = false;
109
+ }
110
+ }
111
+ };
112
+ $: colorText, updateColorsFromText();
113
+ $: colorFormat, hue, saturation, lightness, alpha, updateFromHsl();
114
+ $: colorFormat, red, green, blue, alpha, hexAlpha, updateFromRgb();
115
+ // ----- Event handlers ----- //
116
+ const onInputBlur = async () => {
117
+ if (!updating) {
118
+ if (colorText.trim().length === 0) {
119
+ colorText = defaultColorText;
120
+ return;
121
+ }
122
+ const color = tinycolor(colorText);
123
+ if (color.isValid) {
124
+ updating = true;
125
+ switch (colorFormat) {
126
+ case 'hsl':
127
+ colorText = color.toHslString();
128
+ break;
129
+ case 'rgb':
130
+ colorText = color.toRgbString();
131
+ break;
132
+ case 'hex':
133
+ colorText = alpha === 1 ? color.toHexString() : color.toHex8String();
134
+ break;
135
+ default:
136
+ break;
137
+ }
138
+ await tick();
139
+ updating = false;
140
+ }
134
141
  }
135
- }
136
142
  };
137
143
  const onInputClick = (event) => {
138
- event.stopPropagation();
139
- return false;
144
+ event.stopPropagation();
145
+ return false;
140
146
  };
141
147
  const onInputKeydown = (event) => {
142
- switch (event.key) {
143
- case "Tab":
144
- if (open) {
145
- setTimeout(() => {
146
- tabListRef?.focus();
147
- }, 0);
148
- event.preventDefault();
149
- event.stopPropagation();
150
- return false;
151
- }
152
- break;
153
- case "Escape":
154
- if (open) {
155
- open = false;
156
- event.preventDefault();
157
- event.stopPropagation();
158
- return false;
159
- }
160
- break;
161
- }
162
- event.stopImmediatePropagation();
148
+ switch (event.key) {
149
+ case 'Tab':
150
+ if (open) {
151
+ setTimeout(() => {
152
+ tabListRef?.focus();
153
+ }, 0);
154
+ event.preventDefault();
155
+ event.stopPropagation();
156
+ return false;
157
+ }
158
+ break;
159
+ case 'Escape':
160
+ if (open) {
161
+ open = false;
162
+ event.preventDefault();
163
+ event.stopPropagation();
164
+ return false;
165
+ }
166
+ break;
167
+ }
168
+ // prevent typing from bubbling to the dropdown
169
+ event.stopImmediatePropagation();
163
170
  };
171
+ // -----Initialization ----- //
164
172
  updateColorsFromText();
165
173
  </script>
166
174
 
167
- <Dropdown
168
- bind:open
169
- {colorful}
170
- {composed}
171
- {disabled}
172
- on:blur
173
- on:click
174
- on:copy
175
- on:cut
176
- on:dblclick
177
- on:dragend
178
- on:dragenter
179
- on:dragleave
180
- on:dragover
181
- on:dragstart
182
- on:drop
183
- on:focus
184
- on:focusin
185
- on:focusout
186
- on:keydown
187
- on:keypress
188
- on:keyup
189
- on:mousedown
190
- on:mouseenter
191
- on:mouseleave
192
- on:mousemove
193
- on:mouseover
194
- on:mouseout
195
- on:mouseup
196
- on:wheel
197
- on:paste
198
- {...$$restProps}
199
- >
200
- <div class="value" slot="value">
201
- <div class="color-box" style="background-color: {colorText}" />
202
- <Input
203
- bind:value={colorText}
204
- {colorful}
205
- {disabled}
206
- composed
207
- on:blur={onInputBlur}
208
- on:click={onInputClick}
209
- on:keydown={onInputKeydown}
210
- spellcheck="false"
211
- />
212
- </div>
213
- <div class="popup" use:trapKeyboardFocus>
214
- <div class="tabs" bind:this={tabsRef}>
215
- <TabList bind:this={tabListRef} bind:selectedValue={colorFormat} {colorful}>
216
- <Tab value="hex">hex</Tab>
217
- <Tab value="rgb">rgb</Tab>
218
- <Tab value="hsl">hsl</Tab>
219
- </TabList>
175
+ <div class={`sterling-color-picker ${variant}`}>
176
+ <Dropdown
177
+ {disabled}
178
+ bind:open
179
+ on:blur
180
+ on:click
181
+ on:copy
182
+ on:cut
183
+ on:dblclick
184
+ on:dragend
185
+ on:dragenter
186
+ on:dragleave
187
+ on:dragover
188
+ on:dragstart
189
+ on:drop
190
+ on:focus
191
+ on:focusin
192
+ on:focusout
193
+ on:keydown
194
+ on:keypress
195
+ on:keyup
196
+ on:mousedown
197
+ on:mouseenter
198
+ on:mouseleave
199
+ on:mousemove
200
+ on:mouseover
201
+ on:mouseout
202
+ on:mouseup
203
+ on:wheel
204
+ on:paste
205
+ {...$$restProps}
206
+ >
207
+ <div class="value" slot="value">
208
+ <div class="color-box" style="background-color: {colorText}" />
209
+ <Input
210
+ bind:value={colorText}
211
+ {disabled}
212
+ on:blur={onInputBlur}
213
+ on:click={onInputClick}
214
+ on:keydown={onInputKeydown}
215
+ spellcheck="false"
216
+ variant={`composed ${variant}`}
217
+ />
220
218
  </div>
221
- <div class="sliders">
222
- {#if colorFormat === 'rgb'}
223
- <RgbColorSliders bind:red bind:green bind:blue bind:alpha {colorful} />
224
- {:else if colorFormat === 'hex'}
225
- <HexColorSliders bind:red bind:green bind:blue bind:alpha={hexAlpha} {colorful} />
226
- {:else if colorFormat === 'hsl'}
227
- <HslColorSliders bind:hue bind:saturation bind:lightness bind:alpha {colorful} />
228
- {/if}
219
+ <div class="sterling-color-picker-popup" use:trapKeyboardFocus>
220
+ <div class="tabs" bind:this={tabsRef}>
221
+ <TabList bind:this={tabListRef} bind:selectedValue={colorFormat}>
222
+ <Tab value="hex">hex</Tab>
223
+ <Tab value="rgb">rgb</Tab>
224
+ <Tab value="hsl">hsl</Tab>
225
+ </TabList>
226
+ </div>
227
+ <div class="sliders">
228
+ {#if colorFormat === 'rgb'}
229
+ <RgbColorSliders bind:red bind:green bind:blue bind:alpha />
230
+ {:else if colorFormat === 'hex'}
231
+ <HexColorSliders bind:red bind:green bind:blue bind:alpha={hexAlpha} />
232
+ {:else if colorFormat === 'hsl'}
233
+ <HslColorSliders bind:hue bind:saturation bind:lightness bind:alpha />
234
+ {/if}
235
+ </div>
229
236
  </div>
230
- </div>
231
- </Dropdown>
232
-
233
- <style>
234
- .value {
235
- display: grid;
236
- align-items: center;
237
- justify-content: stretch;
238
- justify-items: stretch;
239
- grid-template-columns: auto 1fr;
240
- padding-left: 0.5em;
241
- width: 250px;
242
- }
243
-
244
- .color-box {
245
- width: 1em;
246
- height: 1em;
247
- border: 1px dashed var(--stsv-common__border-color);
248
- }
249
-
250
- .popup {
251
- width: fit-content;
252
- min-width: 500px;
253
- display: grid;
254
- align-items: center;
255
- padding: 0.25em;
256
- }
257
- </style>
237
+ </Dropdown>
238
+ </div>
@@ -4,10 +4,9 @@ declare const __propDef: {
4
4
  [x: string]: any;
5
5
  colorText?: string | undefined;
6
6
  colorFormat?: "hex" | "rgb" | "hsl" | undefined;
7
- colorful?: boolean | undefined;
8
- composed?: boolean | undefined;
9
7
  disabled?: boolean | undefined;
10
8
  open?: boolean | undefined;
9
+ variant?: string | undefined;
11
10
  };
12
11
  events: {
13
12
  blur: FocusEvent;