@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,171 +1,103 @@
1
- <script>import { createEventDispatcher } from "svelte";
2
- import Input from "./Input.svelte";
3
- import Slider from "./Slider.svelte";
1
+ <script>import { createEventDispatcher } from 'svelte';
2
+ import Input from './Input.svelte';
3
+ import Slider from './Slider.svelte';
4
+ // ----- Props ----- //
5
+ /** The red value. */
4
6
  export let red = 0;
7
+ /** The green value. */
5
8
  export let green = 0;
9
+ /** The blue value. */
6
10
  export let blue = 0;
11
+ /** The alpha value. */
7
12
  export let alpha = 255;
8
- export let colorful = false;
9
- let redText = red.toString(16).padStart(2, "0");
10
- let greenText = green.toString(16).padStart(2, "0");
11
- let blueText = blue.toString(16).padStart(2, "0");
12
- let alphaText = alpha.toString(16).padStart(2, "0");
13
+ /** Additional class names to apply. */
14
+ export let variant = '';
15
+ // ----- State ----- //
16
+ let redText = red.toString(16).padStart(2, '0');
17
+ let greenText = green.toString(16).padStart(2, '0');
18
+ let blueText = blue.toString(16).padStart(2, '0');
19
+ let alphaText = alpha.toString(16).padStart(2, '0');
13
20
  $: {
14
- redText = red.toString(16).padStart(2, "0");
21
+ redText = red.toString(16).padStart(2, '0');
15
22
  }
16
23
  $: {
17
- greenText = green.toString(16).padStart(2, "0");
24
+ greenText = green.toString(16).padStart(2, '0');
18
25
  }
19
26
  $: {
20
- blueText = blue.toString(16).padStart(2, "0");
27
+ blueText = blue.toString(16).padStart(2, '0');
21
28
  }
22
29
  $: {
23
- alphaText = alpha.toString(16).padStart(2, "0");
30
+ alphaText = alpha.toString(16).padStart(2, '0');
24
31
  }
32
+ // ----- Events ----- //
25
33
  const dispatcher = createEventDispatcher();
26
34
  const raiseChange = () => {
27
- dispatcher("change", { red, green, blue, alpha });
35
+ dispatcher('change', { red, green, blue, alpha });
28
36
  };
29
- $:
30
- red, green, blue, alpha, raiseChange();
37
+ $: red, green, blue, alpha, raiseChange();
38
+ // ----- Event Handlers ----- //
31
39
  const onRedInputChange = (event) => {
32
- const inputChangeEvent = event;
33
- const text = inputChangeEvent?.currentTarget?.value;
34
- red = text ? Number.parseInt(text, 16) : red;
40
+ const inputChangeEvent = event;
41
+ const text = inputChangeEvent?.currentTarget?.value;
42
+ red = text ? Number.parseInt(text, 16) : red;
35
43
  };
36
44
  const onGreenInputChange = (event) => {
37
- const inputChangeEvent = event;
38
- const text = inputChangeEvent?.currentTarget?.value;
39
- green = text ? Number.parseInt(text, 16) : green;
45
+ const inputChangeEvent = event;
46
+ const text = inputChangeEvent?.currentTarget?.value;
47
+ green = text ? Number.parseInt(text, 16) : green;
40
48
  };
41
49
  const onBlueInputChange = (event) => {
42
- const inputChangeEvent = event;
43
- const text = inputChangeEvent?.currentTarget?.value;
44
- blue = text ? Number.parseInt(text, 16) : blue;
50
+ const inputChangeEvent = event;
51
+ const text = inputChangeEvent?.currentTarget?.value;
52
+ blue = text ? Number.parseInt(text, 16) : blue;
45
53
  };
46
54
  const onAlphaInputchange = (event) => {
47
- const inputChangeEvent = event;
48
- const text = inputChangeEvent?.currentTarget?.value;
49
- alpha = text ? Number.parseInt(text, 16) : alpha;
55
+ const inputChangeEvent = event;
56
+ const text = inputChangeEvent?.currentTarget?.value;
57
+ alpha = text ? Number.parseInt(text, 16) : alpha;
50
58
  };
51
59
  </script>
52
60
 
53
- <div class="sterling-rgb-color-sliders">
54
- <div class="slider red-slider">
55
- <Slider {colorful} min={0} max={255} precision={0} bind:value={red} />
56
- </div>
57
- <Input {colorful} bind:value={redText} on:change={(e) => onRedInputChange(e)} />
58
- <div class="slider green-slider">
59
- <Slider {colorful} min={0} max={255} precision={0} bind:value={green} />
60
- </div>
61
- <Input {colorful} bind:value={greenText} on:change={(e) => onGreenInputChange(e)} />
62
- <div class="slider blue-slider">
63
- <Slider {colorful} min={0} max={255} precision={0} bind:value={blue} />
64
- </div>
65
- <Input {colorful} bind:value={blueText} on:change={(e) => onBlueInputChange(e)} />
66
- <div class="alpha" style={`--red:${red};--green:${green};--blue:${blue}`}>
67
- <div class="alpha-hatch" />
68
- <div class="alpha-gradient" />
69
- <div class="slider alpha-slider">
70
- <Slider {colorful} min={0} max={255} precision={0} bind:value={alpha} />
71
- </div>
72
- </div>
73
- <Input {colorful} bind:value={alphaText} on:change={(e) => onAlphaInputchange(e)} />
61
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
62
+ <div
63
+ class={`sterling-hex-color-sliders ${variant}`}
64
+ on:blur
65
+ on:click
66
+ on:copy
67
+ on:cut
68
+ on:dblclick
69
+ on:dragend
70
+ on:dragenter
71
+ on:dragleave
72
+ on:dragover
73
+ on:dragstart
74
+ on:drop
75
+ on:focus
76
+ on:focusin
77
+ on:focusout
78
+ on:keydown
79
+ on:keypress
80
+ on:keyup
81
+ on:mousedown
82
+ on:mouseenter
83
+ on:mouseleave
84
+ on:mousemove
85
+ on:mouseover
86
+ on:mouseout
87
+ on:mouseup
88
+ on:wheel
89
+ on:paste
90
+ {...$$restProps}
91
+ style={`--red:${red};--green:${green};--blue:${blue}`}
92
+ >
93
+ <Slider min={0} max={255} precision={0} bind:value={red} variant="red" />
94
+ <Input bind:value={redText} variant="red" on:change={(e) => onRedInputChange(e)} />
95
+ <Slider min={0} max={255} precision={0} bind:value={green} variant="green" />
96
+ <Input bind:value={greenText} variant="green" on:change={(e) => onGreenInputChange(e)} />
97
+ <Slider min={0} max={255} precision={0} bind:value={blue} variant="blue" />
98
+ <Input bind:value={blueText} variant="blue" on:change={(e) => onBlueInputChange(e)} />
99
+ <div class="alpha-hatch" />
100
+ <div class="alpha-gradient" />
101
+ <Slider min={0} max={255} precision={0} bind:value={alpha} variant="alpha" />
102
+ <Input bind:value={alphaText} variant="alpha" on:change={(e) => onAlphaInputchange(e)} />
74
103
  </div>
75
-
76
- <style>
77
- .sterling-rgb-color-sliders {
78
- align-items: center;
79
- display: grid;
80
- grid-template-columns: 1fr 4em;
81
- column-gap: 0.5em;
82
- row-gap: 0.25em;
83
- }
84
-
85
- .slider :global(.fill),
86
- .slider :global(.sterling-slider.colorful .fill) {
87
- background-color: transparent;
88
- }
89
-
90
- .slider :global(.track),
91
- .slider :global(.sterling-slider.colorful .track) {
92
- background-color: transparent;
93
- background-image: linear-gradient(to right, #ffffff, #ffffff 1px, #000000 1px, #000000);
94
- background-size: 2px 100%;
95
- opacity: 0.1;
96
- }
97
-
98
- .red-slider {
99
- background: linear-gradient(to right, black 0%, rgb(255, 0, 0) 100%);
100
- }
101
-
102
- .green-slider {
103
- background: linear-gradient(to right, black 0%, rgb(0, 255, 0) 100%);
104
- }
105
-
106
- .blue-slider {
107
- background: linear-gradient(to right, black 0%, rgb(0, 0, 255) 100%);
108
- }
109
-
110
- .alpha {
111
- display: grid;
112
- grid-template-columns: 1fr;
113
- grid-template-rows: 1fr;
114
- place-content: stretch;
115
- place-items: stretch;
116
- }
117
-
118
- .alpha-gradient,
119
- .alpha-hatch,
120
- .alpha-slider {
121
- grid-row: 1 / span 1;
122
- grid-column: 1 / span 1;
123
- }
124
-
125
- .alpha-hatch {
126
- background-color: #eee;
127
- opacity: 0.1;
128
- background-image: repeating-linear-gradient(
129
- var(--stsv-common--disabled__stripe-angle),
130
- #444 25%,
131
- transparent 25%,
132
- transparent 75%,
133
- #444 75%,
134
- #444
135
- ),
136
- repeating-linear-gradient(
137
- var(--stsv-common--disabled__stripe-angle),
138
- #444 25%,
139
- #eee 25%,
140
- #eee 75%,
141
- #444 75%,
142
- #444
143
- ),
144
- repeating-linear-gradient(
145
- -var(--stsv-common--disabled__stripe-angle),
146
- #444 25%,
147
- transparent 25%,
148
- transparent 75%,
149
- #444 75%,
150
- #444
151
- ),
152
- repeating-linear-gradient(
153
- -var(--stsv-common--disabled__stripe-angle),
154
- #444 25%,
155
- #eee 25%,
156
- #eee 75%,
157
- #444 75%,
158
- #444
159
- );
160
- background-position: 0 0, 4px 4px;
161
- background-size: 8px 8px;
162
- }
163
-
164
- .alpha-gradient {
165
- background: linear-gradient(
166
- to right,
167
- rgba(var(--red), var(--green), var(--blue), 0) 0%,
168
- rgba(var(--red), var(--green), var(--blue), 100) 100%
169
- );
170
- }
171
- </style>
@@ -1,13 +1,40 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
+ [x: string]: any;
4
5
  red?: number | undefined;
5
6
  green?: number | undefined;
6
7
  blue?: number | undefined;
7
8
  alpha?: number | undefined;
8
- /** When true, applies colorful theme styles. */ colorful?: boolean | undefined;
9
+ variant?: string | undefined;
9
10
  };
10
11
  events: {
12
+ blur: FocusEvent;
13
+ click: MouseEvent;
14
+ copy: ClipboardEvent;
15
+ cut: ClipboardEvent;
16
+ dblclick: MouseEvent;
17
+ dragend: DragEvent;
18
+ dragenter: DragEvent;
19
+ dragleave: DragEvent;
20
+ dragover: DragEvent;
21
+ dragstart: DragEvent;
22
+ drop: DragEvent;
23
+ focus: FocusEvent;
24
+ focusin: FocusEvent;
25
+ focusout: FocusEvent;
26
+ keydown: KeyboardEvent;
27
+ keypress: KeyboardEvent;
28
+ keyup: KeyboardEvent;
29
+ mousedown: MouseEvent;
30
+ mouseenter: MouseEvent;
31
+ mouseleave: MouseEvent;
32
+ mousemove: MouseEvent;
33
+ mouseover: MouseEvent;
34
+ mouseout: MouseEvent;
35
+ mouseup: MouseEvent;
36
+ wheel: WheelEvent;
37
+ paste: ClipboardEvent;
11
38
  change: CustomEvent<any>;
12
39
  } & {
13
40
  [evt: string]: CustomEvent<any>;
@@ -1,208 +1,128 @@
1
- <script>import { createEventDispatcher } from "svelte";
2
- import Input from "./Input.svelte";
3
- import Slider from "./Slider.svelte";
4
- import { round } from "lodash-es";
1
+ <script>import { createEventDispatcher } from 'svelte';
2
+ import Input from './Input.svelte';
3
+ import Slider from './Slider.svelte';
4
+ import { round } from 'lodash-es';
5
+ // ----- Props ----- //
6
+ /** The hue value. */
5
7
  export let hue = 180;
8
+ /** The saturation value. */
6
9
  export let saturation = 100;
10
+ /** The lightness value. */
7
11
  export let lightness = 50;
12
+ /** The alpha value. */
8
13
  export let alpha = 1;
9
- export let colorful = false;
14
+ /** Additional class names to apply. */
15
+ export let variant = '';
16
+ // ----- State ----- //
10
17
  let hueText = hue.toString();
11
18
  let saturationText = saturation.toString();
12
19
  let lightnessText = lightness.toString();
13
20
  let alphaText = alpha.toString();
14
21
  $: {
15
- hueText = hue.toString();
22
+ hueText = hue.toString();
16
23
  }
17
24
  $: {
18
- saturationText = saturation.toString();
25
+ saturationText = saturation.toString();
19
26
  }
20
27
  $: {
21
- lightnessText = lightness.toString();
28
+ lightnessText = lightness.toString();
22
29
  }
23
30
  $: {
24
- alphaText = alpha.toString();
31
+ alphaText = alpha.toString();
25
32
  }
33
+ // ----- Events ----- //
26
34
  const dispatcher = createEventDispatcher();
27
- const raiseChange = (hue2, saturation2, lightness2) => {
28
- dispatcher("change", { hue: hue2, saturation: saturation2, lightness: lightness2 });
35
+ const raiseChange = (hue, saturation, lightness) => {
36
+ dispatcher('change', { hue, saturation, lightness });
29
37
  };
30
- $:
31
- raiseChange(hue, saturation, lightness);
38
+ $: raiseChange(hue, saturation, lightness);
39
+ // ----- Event Handlers ----- //
32
40
  const onHueInputChange = (event) => {
33
- const inputChangeEvent = event;
34
- const text = inputChangeEvent?.currentTarget?.value;
35
- const newValue = text ? Number.parseFloat(text) : hue;
36
- if (newValue && newValue !== Number.NaN) {
37
- hue = Math.round(Math.max(0, Math.min(360, newValue)));
38
- hueText = hue.toString();
39
- }
41
+ const inputChangeEvent = event;
42
+ const text = inputChangeEvent?.currentTarget?.value;
43
+ const newValue = text ? Number.parseFloat(text) : hue;
44
+ if (newValue && newValue !== Number.NaN) {
45
+ hue = Math.round(Math.max(0, Math.min(360, newValue)));
46
+ hueText = hue.toString();
47
+ }
40
48
  };
41
49
  const onSaturationInputChange = (event) => {
42
- const inputChangeEvent = event;
43
- const text = inputChangeEvent?.currentTarget?.value?.replace(/%/g, "");
44
- const newValue = text ? Number.parseFloat(text) : saturation;
45
- if (newValue && newValue !== Number.NaN) {
46
- saturation = Math.round(Math.max(0, Math.min(100, newValue)));
47
- saturationText = saturation.toString();
48
- }
50
+ const inputChangeEvent = event;
51
+ const text = inputChangeEvent?.currentTarget?.value?.replace(/%/g, '');
52
+ const newValue = text ? Number.parseFloat(text) : saturation;
53
+ if (newValue && newValue !== Number.NaN) {
54
+ saturation = Math.round(Math.max(0, Math.min(100, newValue)));
55
+ saturationText = saturation.toString();
56
+ }
49
57
  };
50
58
  const onLightnessInputChange = (event) => {
51
- const inputChangeEvent = event;
52
- const text = inputChangeEvent?.currentTarget?.value?.replace(/%/g, "");
53
- const newValue = text ? Number.parseFloat(text) : lightness;
54
- if (newValue && newValue !== Number.NaN) {
55
- lightness = Math.round(Math.max(0, Math.min(100, newValue)));
56
- lightnessText = lightness.toString();
57
- }
59
+ const inputChangeEvent = event;
60
+ const text = inputChangeEvent?.currentTarget?.value?.replace(/%/g, '');
61
+ const newValue = text ? Number.parseFloat(text) : lightness;
62
+ if (newValue && newValue !== Number.NaN) {
63
+ lightness = Math.round(Math.max(0, Math.min(100, newValue)));
64
+ lightnessText = lightness.toString();
65
+ }
58
66
  };
59
67
  const onAlphaInputchange = (event) => {
60
- const inputChangeEvent = event;
61
- const text = inputChangeEvent?.currentTarget?.value;
62
- const newValue = text ? Number.parseFloat(text) : alpha;
63
- if (newValue && newValue !== Number.NaN) {
64
- alpha = round(Math.max(0, Math.min(1, newValue)), 2);
65
- alphaText = alpha.toString();
66
- }
68
+ const inputChangeEvent = event;
69
+ const text = inputChangeEvent?.currentTarget?.value;
70
+ const newValue = text ? Number.parseFloat(text) : alpha;
71
+ if (newValue && newValue !== Number.NaN) {
72
+ alpha = round(Math.max(0, Math.min(1, newValue)), 2);
73
+ alphaText = alpha.toString();
74
+ }
67
75
  };
68
76
  </script>
69
77
 
70
- <div class="sterling-hsl-color-sliders">
71
- <div class="slider hue">
72
- <Slider min={0} max={360} precision={0} bind:value={hue} {colorful} />
73
- </div>
74
- <Input bind:value={hueText} {colorful} on:change={(e) => onHueInputChange(e)} />
75
- <div class="slider saturation" style={`--hue:${hue};`}>
76
- <Slider min={0} max={100} precision={0} bind:value={saturation} {colorful} />
77
- </div>
78
- <Input bind:value={saturationText} {colorful} on:change={(e) => onSaturationInputChange(e)} />
79
- <div class="slider lightness" style={`--hue:${hue};--saturation:${saturation}%;`}>
80
- <Slider min={0} max={100} precision={0} bind:value={lightness} {colorful} />
81
- </div>
82
- <Input bind:value={lightnessText} {colorful} on:change={(e) => onLightnessInputChange(e)} />
83
- <div
84
- class="slider alpha"
85
- style={`--hue:${hue};--saturation:${saturation}%;--lightness:${lightness}%`}
86
- >
87
- <div class="alpha-hatch" />
88
- <div class="alpha-gradient" />
89
- <div class="alpha-slider">
90
- <Slider min={0} max={1} precision={2} step={0.01} bind:value={alpha} {colorful} />
91
- </div>
92
- </div>
93
- <Input bind:value={alphaText} {colorful} on:change={(e) => onAlphaInputchange(e)} />
78
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
79
+ <div
80
+ class={`sterling-hsl-color-sliders ${variant}`}
81
+ on:blur
82
+ on:click
83
+ on:copy
84
+ on:cut
85
+ on:dblclick
86
+ on:dragend
87
+ on:dragenter
88
+ on:dragleave
89
+ on:dragover
90
+ on:dragstart
91
+ on:drop
92
+ on:focus
93
+ on:focusin
94
+ on:focusout
95
+ on:keydown
96
+ on:keypress
97
+ on:keyup
98
+ on:mousedown
99
+ on:mouseenter
100
+ on:mouseleave
101
+ on:mousemove
102
+ on:mouseover
103
+ on:mouseout
104
+ on:mouseup
105
+ on:wheel
106
+ on:paste
107
+ {...$$restProps}
108
+ style={`--hue:${hue};--saturation:${saturation}%;--lightness:${lightness}%`}
109
+ >
110
+ <Slider min={0} max={360} precision={0} bind:value={hue} variant="hue" />
111
+ <Input bind:value={hueText} variant="hue" on:change={(e) => onHueInputChange(e)} />
112
+ <Slider min={0} max={100} precision={0} bind:value={saturation} variant="saturation" />
113
+ <Input
114
+ bind:value={saturationText}
115
+ variant="saturation"
116
+ on:change={(e) => onSaturationInputChange(e)}
117
+ />
118
+ <Slider min={0} max={100} precision={0} bind:value={lightness} variant="lightness" />
119
+ <Input
120
+ bind:value={lightnessText}
121
+ variant="lightness"
122
+ on:change={(e) => onLightnessInputChange(e)}
123
+ />
124
+ <div class="alpha-hatch" />
125
+ <div class="alpha-gradient" />
126
+ <Slider min={0} max={1} precision={2} step={0.01} bind:value={alpha} variant="alpha" />
127
+ <Input bind:value={alphaText} variant="alpha" on:change={(e) => onAlphaInputchange(e)} />
94
128
  </div>
95
-
96
- <style>
97
- .sterling-hsl-color-sliders {
98
- align-items: center;
99
- display: grid;
100
- grid-template-columns: 1fr 5em;
101
- column-gap: 0.5em;
102
- row-gap: 0.25em;
103
- }
104
-
105
- .hue {
106
- background: linear-gradient(
107
- to right,
108
- hsl(0, 100%, 50%) 0%,
109
- hsl(60, 100%, 50%) 17%,
110
- hsl(120, 100%, 50%) 33%,
111
- hsl(180, 100%, 50%) 50%,
112
- hsl(240, 100%, 50%) 67%,
113
- hsl(300, 100%, 50%) 83%,
114
- hsl(0, 100%, 50%) 100%
115
- );
116
- }
117
-
118
- .slider :global(.fill),
119
- .slider :global(.sterling-slider.colorful .fill) {
120
- background-color: transparent;
121
- }
122
- .slider :global(.track),
123
- .slider :global(.sterling-slider.colorful .track) {
124
- background-color: transparent;
125
- opacity: 0.1;
126
- background-image: linear-gradient(to right, #7f3a3a, #ffffff 1px, #000000 1px, #000000);
127
- background-size: 2px 100%;
128
- }
129
-
130
- .saturation {
131
- background: linear-gradient(
132
- to right,
133
- hsl(var(--hue), 0%, 50%) 0%,
134
- hsl(var(--hue), 100%, 50%) 100%
135
- );
136
- }
137
-
138
- .lightness {
139
- background: linear-gradient(
140
- to right,
141
- hsl(var(--hue), var(--saturation), 0%) 0%,
142
- hsl(var(--hue), var(--saturation), 50%) 50%,
143
- hsl(var(--hue), var(--saturation), 100%) 100%
144
- );
145
- }
146
-
147
- .alpha {
148
- display: grid;
149
- grid-template-columns: 1fr;
150
- grid-template-rows: 1fr;
151
- place-content: stretch;
152
- place-items: stretch;
153
- }
154
-
155
- .alpha-gradient,
156
- .alpha-hatch,
157
- .alpha-slider {
158
- grid-row: 1 / span 1;
159
- grid-column: 1 / span 1;
160
- }
161
-
162
- .alpha-hatch {
163
- background-color: #eee;
164
- opacity: 0.1;
165
- background-image: repeating-linear-gradient(
166
- var(--stsv-common--disabled__stripe-angle),
167
- #444 25%,
168
- transparent 25%,
169
- transparent 75%,
170
- #444 75%,
171
- #444
172
- ),
173
- repeating-linear-gradient(
174
- var(--stsv-common--disabled__stripe-angle),
175
- #444 25%,
176
- #eee 25%,
177
- #eee 75%,
178
- #444 75%,
179
- #444
180
- ),
181
- repeating-linear-gradient(
182
- -var(--stsv-common--disabled__stripe-angle),
183
- #444 25%,
184
- transparent 25%,
185
- transparent 75%,
186
- #444 75%,
187
- #444
188
- ),
189
- repeating-linear-gradient(
190
- -var(--stsv-common--disabled__stripe-angle),
191
- #444 25%,
192
- #eee 25%,
193
- #eee 75%,
194
- #444 75%,
195
- #444
196
- );
197
- background-position: 0 0, 4px 4px;
198
- background-size: 8px 8px;
199
- }
200
-
201
- .alpha-gradient {
202
- background: linear-gradient(
203
- to right,
204
- hsla(var(--hue), var(--saturation), var(--lightness), 0) 0%,
205
- hsla(var(--hue), var(--saturation), var(--lightness), 1) 100%
206
- );
207
- }
208
- </style>
@@ -1,13 +1,40 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
+ [x: string]: any;
4
5
  hue?: number | undefined;
5
6
  saturation?: number | undefined;
6
7
  lightness?: number | undefined;
7
8
  alpha?: number | undefined;
8
- /** When true, applies colorful theme styles. */ colorful?: boolean | undefined;
9
+ variant?: string | undefined;
9
10
  };
10
11
  events: {
12
+ blur: FocusEvent;
13
+ click: MouseEvent;
14
+ copy: ClipboardEvent;
15
+ cut: ClipboardEvent;
16
+ dblclick: MouseEvent;
17
+ dragend: DragEvent;
18
+ dragenter: DragEvent;
19
+ dragleave: DragEvent;
20
+ dragover: DragEvent;
21
+ dragstart: DragEvent;
22
+ drop: DragEvent;
23
+ focus: FocusEvent;
24
+ focusin: FocusEvent;
25
+ focusout: FocusEvent;
26
+ keydown: KeyboardEvent;
27
+ keypress: KeyboardEvent;
28
+ keyup: KeyboardEvent;
29
+ mousedown: MouseEvent;
30
+ mouseenter: MouseEvent;
31
+ mouseleave: MouseEvent;
32
+ mousemove: MouseEvent;
33
+ mouseover: MouseEvent;
34
+ mouseout: MouseEvent;
35
+ mouseup: MouseEvent;
36
+ wheel: WheelEvent;
37
+ paste: ClipboardEvent;
11
38
  change: CustomEvent<any>;
12
39
  } & {
13
40
  [evt: string]: CustomEvent<any>;