@geoffcox/sterling-svelte 0.0.31 → 1.0.1

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 +90 -187
  11. package/Dialog.svelte.d.ts +2 -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
package/Tooltip.svelte CHANGED
@@ -1,57 +1,64 @@
1
- <script>import { onMount } from "svelte";
2
- import Callout from "./Callout.svelte";
1
+ <script>import { onMount } from 'svelte';
2
+ import Callout from './Callout.svelte';
3
+ // ----- Props ----- //
4
+ // Forwarded to Callout
3
5
  export let conditionalRender = true;
4
6
  export let crossAxisOffset = 0;
5
7
  export let mainAxisOffset = 0;
6
- export let disabled = false;
7
- export let hoverDelayMilliseconds = 1e3;
8
8
  export let open = false;
9
- export let placement = "bottom-start";
10
- export let portalHost = void 0;
9
+ export let placement = 'bottom-start';
10
+ export let portalHost = undefined;
11
+ export let variant = '';
12
+ /** When true, the tooltip is disabled and will not be shown. */
13
+ export let disabled = false;
14
+ /** The duration of mouse hover before showing the tooltip. */
15
+ export let hoverDelayMilliseconds = 1000;
16
+ // ----- State ----- //
11
17
  let originRef;
12
- $:
13
- reference = $$slots.default ? originRef?.previousElementSibling : void 0;
18
+ $: reference = $$slots.default ? originRef?.previousElementSibling : undefined;
19
+ // ----- Show/Hide ----- //
14
20
  const show = () => {
15
- if (!disabled) {
16
- open = true;
17
- }
21
+ if (!disabled) {
22
+ open = true;
23
+ }
18
24
  };
19
- const hide = () => open = false;
25
+ const hide = () => (open = false);
20
26
  const delayShow = () => {
21
- hoverDelayMilliseconds === 0 ? show() : setTimeout(() => {
22
- show();
23
- }, hoverDelayMilliseconds);
27
+ hoverDelayMilliseconds === 0
28
+ ? show()
29
+ : setTimeout(() => {
30
+ show();
31
+ }, hoverDelayMilliseconds);
24
32
  };
25
33
  $: {
26
- if (disabled) {
27
- hide();
28
- }
34
+ if (disabled) {
35
+ hide();
36
+ }
29
37
  }
30
- let cleanupAutoShowUpdate = () => {
31
- };
38
+ // ----- Event Listeners ----- //
39
+ let cleanupAutoShowUpdate = () => { };
32
40
  const autoShowUpdate = () => {
33
- cleanupAutoShowUpdate();
34
- cleanupAutoShowUpdate = () => {
35
- };
36
- const element = reference;
37
- open = false;
38
- if (element) {
39
- element.addEventListener("mouseenter", delayShow);
40
- element.addEventListener("mouseleave", hide);
41
- cleanupAutoShowUpdate = () => {
42
- element.removeEventListener("mouseenter", delayShow);
43
- element.removeEventListener("mouseleave", hide);
44
- };
45
- }
41
+ cleanupAutoShowUpdate();
42
+ cleanupAutoShowUpdate = () => { };
43
+ const element = reference;
44
+ open = false;
45
+ if (element) {
46
+ element.addEventListener('mouseenter', delayShow);
47
+ element.addEventListener('mouseleave', hide);
48
+ cleanupAutoShowUpdate = () => {
49
+ element.removeEventListener('mouseenter', delayShow);
50
+ element.removeEventListener('mouseleave', hide);
51
+ };
52
+ }
46
53
  };
47
- $:
48
- reference, autoShowUpdate();
54
+ $: reference, autoShowUpdate();
55
+ // ----- EventHandlers ----- //
49
56
  onMount(() => {
50
- autoShowUpdate();
57
+ autoShowUpdate();
51
58
  });
52
59
  </script>
53
60
 
54
- <slot {disabled} {hoverDelayMilliseconds} {open} />
61
+ <slot {disabled} {hoverDelayMilliseconds} {open} {variant} />
55
62
  <div class="sterling-tooltip-origin" bind:this={originRef} />
56
63
  <Callout
57
64
  {conditionalRender}
@@ -61,6 +68,7 @@ onMount(() => {
61
68
  {placement}
62
69
  {portalHost}
63
70
  {reference}
71
+ {variant}
64
72
  on:blur
65
73
  on:click
66
74
  on:dblclick
@@ -94,14 +102,5 @@ onMount(() => {
94
102
  on:wheel
95
103
  {...$$restProps}
96
104
  >
97
- <slot name="tip" />
105
+ <slot name="tip" {placement} {variant} />
98
106
  </Callout>
99
-
100
- <style>
101
- .sterling-tooltip-origin {
102
- display: block;
103
- background: transparent;
104
- width: 0px;
105
- height: 0px;
106
- }
107
- </style>
@@ -5,11 +5,12 @@ declare const __propDef: {
5
5
  conditionalRender?: boolean | undefined;
6
6
  crossAxisOffset?: number | undefined;
7
7
  mainAxisOffset?: number | undefined;
8
- disabled?: boolean | undefined;
9
- hoverDelayMilliseconds?: number | undefined;
10
8
  open?: boolean | undefined;
11
9
  placement?: string | undefined;
12
10
  portalHost?: HTMLElement | undefined;
11
+ variant?: string | undefined;
12
+ disabled?: boolean | undefined;
13
+ hoverDelayMilliseconds?: number | undefined;
13
14
  };
14
15
  events: {
15
16
  blur: FocusEvent;
@@ -51,8 +52,12 @@ declare const __propDef: {
51
52
  disabled: boolean;
52
53
  hoverDelayMilliseconds: number;
53
54
  open: boolean;
55
+ variant: string;
56
+ };
57
+ tip: {
58
+ placement: string;
59
+ variant: string;
54
60
  };
55
- tip: {};
56
61
  };
57
62
  };
58
63
  export type TooltipProps = typeof __propDef.props;
@@ -1,2 +1 @@
1
1
  export declare const TREE_CONTEXT_KEY = "sterlingTree";
2
- export declare const TREE_ITEM_CONTEXT_KEY = "sterlingTreeItem";
package/Tree.constants.js CHANGED
@@ -1,2 +1 @@
1
1
  export const TREE_CONTEXT_KEY = 'sterlingTree';
2
- export const TREE_ITEM_CONTEXT_KEY = 'sterlingTreeItem';
package/Tree.svelte CHANGED
@@ -1,68 +1,70 @@
1
- <script>import { createEventDispatcher, setContext } from "svelte";
2
- import { writable } from "svelte/store";
3
- import { TREE_CONTEXT_KEY } from "./Tree.constants";
4
- import { usingKeyboard } from "./stores/usingKeyboard";
5
- export let colorful = false;
6
- export let composed = false;
1
+ <script>import { createEventDispatcher, setContext } from 'svelte';
2
+ import { writable } from 'svelte/store';
3
+ import { TREE_CONTEXT_KEY } from './Tree.constants';
4
+ import { usingKeyboard } from './mediaQueries/usingKeyboard';
5
+ // ----- Props ----- //
6
+ /** When true, the tree and its descendants are disabled. */
7
7
  export let disabled = false;
8
- export let selectedValue = void 0;
8
+ /** The value of the currently selected item. */
9
+ export let selectedValue = undefined;
10
+ /** The values of items that are expanded. */
9
11
  export let expandedValues = [];
12
+ /** Additional class names to apply. */
13
+ export let variant = '';
14
+ // ----- State ----- //
10
15
  let treeRef;
11
- const colorfulStore = writable(colorful);
12
16
  const disabledStore = writable(disabled);
13
17
  const expandedValuesStore = writable(expandedValues);
14
18
  const selectedValueStore = writable(selectedValue);
19
+ // ----- Methods ----- //
15
20
  export const blur = () => {
16
- treeRef?.blur();
21
+ treeRef?.blur();
17
22
  };
18
23
  export const focus = (options) => {
19
- treeRef?.focus(options);
24
+ treeRef?.focus(options);
20
25
  };
26
+ // ----- Events ----- //
21
27
  const dispatch = createEventDispatcher();
22
- const raiseExpandCollapse = (expandedValues2) => {
23
- dispatch("expandCollapse", { expandedValues: expandedValues2 });
28
+ const raiseExpandCollapse = (expandedValues) => {
29
+ dispatch('expandCollapse', { expandedValues });
24
30
  };
25
- const raiseSelect = (selectedValue2) => {
26
- dispatch("select", { selectedValue: selectedValue2 });
31
+ const raiseSelect = (selectedValue) => {
32
+ dispatch('select', { selectedValue });
27
33
  };
34
+ // ----- Reactions ----- //
28
35
  $: {
29
- selectedValueStore.set(selectedValue);
36
+ selectedValueStore.set(selectedValue);
30
37
  }
31
38
  $: {
32
- selectedValue = $selectedValueStore;
33
- raiseSelect($selectedValueStore);
39
+ selectedValue = $selectedValueStore;
40
+ raiseSelect($selectedValueStore);
34
41
  }
35
42
  $: {
36
- expandedValuesStore.set(expandedValues);
43
+ expandedValuesStore.set(expandedValues);
37
44
  }
38
45
  $: {
39
- expandedValues = $expandedValuesStore;
40
- raiseExpandCollapse($expandedValuesStore);
46
+ expandedValues = $expandedValuesStore;
47
+ raiseExpandCollapse($expandedValuesStore);
41
48
  }
42
49
  $: {
43
- colorfulStore.set(colorful);
44
- }
45
- $: {
46
- disabledStore.set(disabled);
50
+ disabledStore.set(disabled);
47
51
  }
52
+ // ----- Set Context ----- //
48
53
  setContext(TREE_CONTEXT_KEY, {
49
- colorful: colorfulStore,
50
- disabled: disabledStore,
51
- expandedValues: expandedValuesStore,
52
- selectedValue: selectedValueStore
54
+ disabled: disabledStore,
55
+ expandedValues: expandedValuesStore,
56
+ selectedValue: selectedValueStore
53
57
  });
54
58
  </script>
55
59
 
56
- <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
57
60
  <div
58
61
  bind:this={treeRef}
59
62
  aria-disabled={disabled}
60
- class="sterling-tree"
61
- class:colorful
62
- class:composed
63
+ class={`sterling-tree ${variant}`}
63
64
  class:disabled
64
65
  class:using-keyboard={$usingKeyboard}
65
66
  role="tree"
67
+ tabindex="0"
66
68
  on:blur
67
69
  on:click
68
70
  on:dblclick
@@ -97,92 +99,6 @@ setContext(TREE_CONTEXT_KEY, {
97
99
  {...$$restProps}
98
100
  >
99
101
  <div class="container">
100
- <slot {colorful} {composed} {disabled} />
102
+ <slot {disabled} {expandedValues} {selectedValue} {variant} />
101
103
  </div>
102
104
  </div>
103
-
104
- <style>
105
- .sterling-tree {
106
- background-color: var(--stsv-common__background-color);
107
- border-color: var(--stsv-common__border-color);
108
- border-radius: var(--stsv-common__border-radius);
109
- border-style: var(--stsv-common__border-style);
110
- border-width: var(--stsv-common__border-width);
111
- box-sizing: border-box;
112
- color: var(--stsv-common__color);
113
- height: 100%;
114
- overflow-x: hidden;
115
- overflow-y: auto;
116
- margin: 0;
117
- transition: background-color 250ms, color 250ms, border-color 250ms;
118
- }
119
-
120
- .sterling-tree:hover {
121
- border-color: var(--stsv-input__border-color--hover);
122
- color: var(--stsv-input__color--hover);
123
- }
124
-
125
- .sterling-tree.using-keyboard:focus-within {
126
- border-color: var(--stsv-button__border-color--focus);
127
- color: var(--stsv-input__color--focus);
128
- outline-color: var(--stsv-common__outline-color);
129
- outline-offset: var(--stsv-common__outline-offset);
130
- outline-style: var(--stsv-common__outline-style);
131
- outline-width: var(--stsv-common__outline-width);
132
- }
133
-
134
- .sterling-tree.composed,
135
- .sterling-tree.composed:hover,
136
- .sterling-tree.composed.using-keyboard:focus-visible,
137
- .sterling-tree.composed.disabled {
138
- background: none;
139
- border: none;
140
- outline: none;
141
- }
142
-
143
- .sterling-tree.disabled * {
144
- cursor: not-allowed;
145
- }
146
-
147
- /* ----- container - a layout panel that grows with the items ----- */
148
-
149
- .container {
150
- display: flex;
151
- flex-direction: column;
152
- flex-wrap: nowrap;
153
- position: relative;
154
- }
155
-
156
- .container::after {
157
- background: repeating-linear-gradient(
158
- var(--stsv-common--disabled__stripe-angle),
159
- var(--stsv-common--disabled__stripe-color),
160
- var(--stsv-common--disabled__stripe-color) var(--stsv-common--disabled__stripe-width),
161
- var(--stsv-common--disabled__stripe-color--alt) var(--stsv-common--disabled__stripe-width),
162
- var(--stsv-common--disabled__stripe-color--alt)
163
- calc(2 * var(--stsv-common--disabled__stripe-width))
164
- );
165
- bottom: 0;
166
- content: '';
167
- left: 0;
168
- opacity: 0;
169
- position: absolute;
170
- pointer-events: none;
171
- right: 0;
172
- top: 0;
173
- transition: opacity 250ms;
174
- }
175
-
176
- .sterling-tree.disabled .container::after {
177
- opacity: 1;
178
- }
179
-
180
- /* ----- media queries ----- */
181
-
182
- @media (prefers-reduced-motion) {
183
- .sterling-tree,
184
- .container::after {
185
- transition: none;
186
- }
187
- }
188
- </style>
package/Tree.svelte.d.ts CHANGED
@@ -2,11 +2,10 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
- colorful?: boolean | undefined;
6
- composed?: boolean | undefined;
7
5
  disabled?: boolean | undefined;
8
6
  selectedValue?: string | undefined;
9
7
  expandedValues?: string[] | undefined;
8
+ variant?: string | undefined;
10
9
  blur?: (() => void) | undefined;
11
10
  focus?: ((options?: FocusOptions) => void) | undefined;
12
11
  };
@@ -49,9 +48,10 @@ declare const __propDef: {
49
48
  };
50
49
  slots: {
51
50
  default: {
52
- colorful: boolean;
53
- composed: boolean;
54
51
  disabled: boolean;
52
+ expandedValues: string[];
53
+ selectedValue: string | undefined;
54
+ variant: string;
55
55
  };
56
56
  };
57
57
  };
package/Tree.types.d.ts CHANGED
@@ -3,9 +3,7 @@ import type { Readable, Writable } from 'svelte/store';
3
3
  * The context for a Tree and its descendants.
4
4
  */
5
5
  export type TreeContext = {
6
- /** When true, applies colorful theme styles. */
7
- colorful: Readable<boolean>;
8
- /** When true, the tree and its descendants are disabled */
6
+ /** When true, the tree and its descendants are disabled. */
9
7
  disabled: Readable<boolean>;
10
8
  /** The values of items that are expanded. */
11
9
  expandedValues: Writable<string[]>;
@@ -1,24 +1,33 @@
1
- <script>import { onMount } from "svelte";
1
+ <script>import { onMount } from 'svelte';
2
+ // ----- Props ----- //
3
+ /** When true, the chevron rotates to indicate children are visible. */
2
4
  export let expanded = false;
5
+ /** When true, the chevron is displayed, otherwise a dot is displayed. */
3
6
  export let hasChildren = false;
7
+ /** Additional class names to apply. */
8
+ export let variant = '';
9
+ // ----- State ----- //
4
10
  let previousExpanded = expanded;
5
11
  let mounted = false;
12
+ // ----- Event Handlers ----- //
6
13
  onMount(() => {
7
- setTimeout(() => {
8
- mounted = true;
9
- }, 0);
14
+ setTimeout(() => {
15
+ mounted = true;
16
+ }, 0);
10
17
  });
18
+ // ----- Animation ----- //
11
19
  let animate = false;
12
20
  $: {
13
- if (expanded !== previousExpanded && mounted) {
14
- animate = true;
15
- }
16
- previousExpanded = expanded;
21
+ if (expanded !== previousExpanded && mounted) {
22
+ animate = true;
23
+ }
24
+ previousExpanded = expanded;
17
25
  }
18
26
  </script>
19
27
 
28
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
20
29
  <div
21
- class="tree-chevron"
30
+ class={`sterling-tree-chevron ${variant}`}
22
31
  class:leaf={!hasChildren}
23
32
  class:animate
24
33
  class:expanded
@@ -55,92 +64,3 @@ $: {
55
64
  on:wheel|passive
56
65
  {...$$restProps}
57
66
  />
58
-
59
- <style>
60
- .tree-chevron {
61
- position: relative;
62
- border: none;
63
- background: none;
64
- height: 1em;
65
- width: 1em;
66
- transform-origin: 50% 50%;
67
- }
68
-
69
- .tree-chevron::after {
70
- position: absolute;
71
- content: '';
72
- top: 50%;
73
- left: 50%;
74
- width: 7px;
75
- height: 7px;
76
- border-right: 3px solid currentColor;
77
- border-top: 3px solid currentColor;
78
- }
79
-
80
- :not(.expanded):not(.animate)::after {
81
- transform: translate(-50%, -50%) rotate(45deg);
82
- }
83
-
84
- .expanded:not(.animate)::after {
85
- transform: translate(-50%, -70%) rotate(135deg);
86
- }
87
-
88
- @keyframes rotate-collapse {
89
- from {
90
- transform: translate(-50%, -70%) rotate(135deg);
91
- }
92
- to {
93
- transform: translate(-50%, -50%) rotate(45deg);
94
- }
95
- }
96
-
97
- @keyframes rotate-expand {
98
- from {
99
- transform: translate(-50%, -50%) rotate(45deg);
100
- }
101
- to {
102
- transform: translate(-50%, -70%) rotate(135deg);
103
- }
104
- }
105
-
106
- :not(.expanded).animate::after {
107
- animation-name: rotate-collapse;
108
- animation-duration: 100ms;
109
- animation-iteration-count: 1;
110
- animation-timing-function: linear;
111
- animation-fill-mode: forwards;
112
- }
113
-
114
- .expanded.animate::after {
115
- animation-name: rotate-expand;
116
- animation-duration: 100ms;
117
- animation-iteration-count: 1;
118
- animation-timing-function: linear;
119
- animation-fill-mode: forwards;
120
- }
121
-
122
- .tree-chevron.leaf::after {
123
- animation: none;
124
- content: '';
125
- position: absolute;
126
- font: inherit;
127
- left: 50%;
128
- top: 50%;
129
- width: 0.35em;
130
- height: 0.35em;
131
- background: currentColor;
132
- border-radius: 50%;
133
- transform: translate(-50%, -50%);
134
- }
135
-
136
- @media (prefers-reduced-motion) {
137
- :not(.expanded).animate::after {
138
- animation: none;
139
- transform: translate(-50%, -50%) rotate(45deg);
140
- }
141
- .expanded.animate::after {
142
- animation: none;
143
- transform: translate(-50%, -70%) rotate(135deg);
144
- }
145
- }
146
- </style>
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  [x: string]: any;
5
5
  expanded?: boolean | undefined;
6
6
  hasChildren?: boolean | undefined;
7
+ variant?: string | undefined;
7
8
  };
8
9
  events: {
9
10
  blur: FocusEvent;
@@ -0,0 +1 @@
1
+ export declare const TREE_ITEM_CONTEXT_KEY = "sterlingTreeItem";
@@ -0,0 +1 @@
1
+ export const TREE_ITEM_CONTEXT_KEY = 'sterlingTreeItem';