@geoffcox/sterling-svelte 0.0.30 → 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 (223) 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 +188 -0
  5. package/Callout.svelte.d.ts +54 -0
  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 -219
  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 -64
  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 +67 -74
  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 +2 -0
  45. package/{floating-ui.constants.js → Popover.constants.js} +10 -9
  46. package/Popover.svelte +72 -82
  47. package/Popover.svelte.d.ts +10 -5
  48. package/Popover.types.d.ts +4 -0
  49. package/Progress.svelte +28 -126
  50. package/Progress.svelte.d.ts +4 -3
  51. package/Radio.svelte +49 -192
  52. package/Radio.svelte.d.ts +2 -2
  53. package/RgbColorSliders.svelte +48 -137
  54. package/RgbColorSliders.svelte.d.ts +5 -5
  55. package/Select.svelte +124 -251
  56. package/Select.svelte.d.ts +6 -2
  57. package/Slider.svelte +90 -259
  58. package/Slider.svelte.d.ts +1 -2
  59. package/Switch.svelte +24 -259
  60. package/Switch.svelte.d.ts +3 -1
  61. package/Tab.svelte +27 -175
  62. package/Tab.svelte.d.ts +6 -4
  63. package/TabList.svelte +146 -171
  64. package/TabList.svelte.d.ts +3 -2
  65. package/TabList.types.d.ts +6 -1
  66. package/TextArea.svelte +32 -129
  67. package/TextArea.svelte.d.ts +1 -1
  68. package/Tooltip.svelte +88 -222
  69. package/Tooltip.svelte.d.ts +21 -13
  70. package/Tree.constants.d.ts +0 -1
  71. package/Tree.constants.js +0 -1
  72. package/Tree.svelte +35 -119
  73. package/Tree.svelte.d.ts +4 -4
  74. package/Tree.types.d.ts +1 -3
  75. package/TreeChevron.svelte +18 -98
  76. package/TreeChevron.svelte.d.ts +1 -0
  77. package/TreeItem.constants.d.ts +1 -0
  78. package/TreeItem.constants.js +1 -0
  79. package/TreeItem.svelte +251 -211
  80. package/TreeItem.svelte.d.ts +7 -3
  81. package/TreeItem.types.d.ts +1 -1
  82. package/TreeItemDisplay.svelte +20 -104
  83. package/TreeItemDisplay.svelte.d.ts +2 -2
  84. package/actions/applyLightDarkMode.d.ts +10 -0
  85. package/actions/applyLightDarkMode.js +36 -0
  86. package/actions/forwardEvents.js +3 -3
  87. package/css/Button.base.css +74 -0
  88. package/css/Button.colorful.css +17 -0
  89. package/css/Button.css +7 -0
  90. package/css/Button.secondary.colorful.css +15 -0
  91. package/css/Button.secondary.css +11 -0
  92. package/css/Button.shapes.css +14 -0
  93. package/css/Button.tool.colorful.css +13 -0
  94. package/css/Button.tool.css +18 -0
  95. package/css/Callout.base.css +43 -0
  96. package/css/Callout.colorful.css +5 -0
  97. package/css/Callout.css +2 -0
  98. package/css/Checkbox.base.css +145 -0
  99. package/css/Checkbox.colorful.css +17 -0
  100. package/css/Checkbox.css +2 -0
  101. package/css/ColorPicker.base.css +23 -0
  102. package/css/ColorPicker.css +1 -0
  103. package/css/Dialog.base.css +116 -0
  104. package/css/Dialog.css +1 -0
  105. package/css/Dropdown.base.css +147 -0
  106. package/css/Dropdown.colorful.css +23 -0
  107. package/css/Dropdown.css +2 -0
  108. package/css/HexColorSliders.base.css +106 -0
  109. package/css/HexColorSliders.css +1 -0
  110. package/css/HslColorSliders.base.css +124 -0
  111. package/css/HslColorSliders.css +1 -0
  112. package/css/Input.base.css +100 -0
  113. package/css/Input.colorful.css +22 -0
  114. package/css/Input.composed.css +8 -0
  115. package/css/Input.css +3 -0
  116. package/css/Label.base.css +119 -0
  117. package/css/Label.boxed.colorful.css +21 -0
  118. package/css/Label.boxed.css +31 -0
  119. package/css/Label.colorful.css +3 -0
  120. package/css/Label.css +4 -0
  121. package/css/Link.base.css +52 -0
  122. package/css/Link.colorful.css +15 -0
  123. package/css/Link.css +6 -0
  124. package/css/Link.ghost.colorful.css +7 -0
  125. package/css/Link.ghost.css +11 -0
  126. package/css/Link.undecorated.colorful.css +6 -0
  127. package/css/Link.undecorated.css +6 -0
  128. package/css/List.base.css +98 -0
  129. package/css/List.css +1 -0
  130. package/css/ListItem.base.css +59 -0
  131. package/css/ListItem.css +1 -0
  132. package/css/Menu.base.css +21 -0
  133. package/css/Menu.css +1 -0
  134. package/css/MenuBar.base.css +9 -0
  135. package/css/MenuBar.css +1 -0
  136. package/css/MenuButton.base.css +13 -0
  137. package/css/MenuButton.css +1 -0
  138. package/css/MenuItem.base.css +48 -0
  139. package/css/MenuItem.css +1 -0
  140. package/css/MenuItemDisplay.base.css +104 -0
  141. package/css/MenuItemDisplay.css +1 -0
  142. package/css/MenuSeparator.base.css +5 -0
  143. package/css/MenuSeparator.css +1 -0
  144. package/css/Popover copy.css +21 -0
  145. package/css/Popover.css +21 -0
  146. package/css/Progress.base.css +99 -0
  147. package/css/Progress.css +1 -0
  148. package/css/Radio.base.css +135 -0
  149. package/css/Radio.colorful.css +18 -0
  150. package/css/Radio.css +2 -0
  151. package/css/RgbColorSliders.base.css +94 -0
  152. package/css/RgbColorSliders.css +1 -0
  153. package/css/Select.base.css +127 -0
  154. package/css/Select.colorful.css +24 -0
  155. package/css/Select.composed.css +12 -0
  156. package/css/Select.css +3 -0
  157. package/css/Slider.base.css +182 -0
  158. package/css/Slider.colorful.css +11 -0
  159. package/css/Slider.composed.css +8 -0
  160. package/css/Slider.css +3 -0
  161. package/css/Switch.base.css +193 -0
  162. package/css/Switch.colorful.css +39 -0
  163. package/css/Switch.css +2 -0
  164. package/css/Tab.base.css +135 -0
  165. package/css/Tab.colorful.css +13 -0
  166. package/css/Tab.css +2 -0
  167. package/css/TabList.base.css +34 -0
  168. package/css/TabList.css +1 -0
  169. package/css/TextArea.base.css +85 -0
  170. package/css/TextArea.colorful.css +17 -0
  171. package/css/TextArea.composed.css +8 -0
  172. package/css/TextArea.css +3 -0
  173. package/css/Tooltip.base.css +6 -0
  174. package/css/Tooltip.css +1 -0
  175. package/css/Tree.base.css +74 -0
  176. package/css/Tree.composed.css +8 -0
  177. package/css/Tree.css +2 -0
  178. package/css/TreeChevron.base.css +86 -0
  179. package/css/TreeChevron.css +1 -0
  180. package/css/TreeItem.base.css +3 -0
  181. package/css/TreeItem.css +1 -0
  182. package/css/TreeItemDisplay.base.css +74 -0
  183. package/css/TreeItemDisplay.colorful.css +9 -0
  184. package/css/TreeItemDisplay.css +1 -0
  185. package/css/dark-mode.css +134 -0
  186. package/css/light-mode.css +134 -0
  187. package/css/sterling.css +37 -0
  188. package/index.d.ts +13 -18
  189. package/index.js +11 -15
  190. package/mediaQueries/prefersColorSchemeDark.d.ts +2 -0
  191. package/mediaQueries/prefersColorSchemeDark.js +10 -0
  192. package/{stores → mediaQueries}/prefersReducedMotion.d.ts +1 -0
  193. package/{stores → mediaQueries}/usingKeyboard.d.ts +1 -0
  194. package/package.json +136 -19
  195. package/Link.constants.d.ts +0 -1
  196. package/Link.constants.js +0 -1
  197. package/Link.types.d.ts +0 -4
  198. package/Tooltip.constants.d.ts +0 -1
  199. package/Tooltip.constants.js +0 -1
  200. package/Tooltip.types.d.ts +0 -4
  201. package/Tooltip.types.js +0 -1
  202. package/floating-ui.constants.d.ts +0 -1
  203. package/floating-ui.types.d.ts +0 -4
  204. package/floating-ui.types.js +0 -1
  205. package/theme/applyDarkTheme.d.ts +0 -7
  206. package/theme/applyDarkTheme.js +0 -11
  207. package/theme/applyLightTheme.d.ts +0 -7
  208. package/theme/applyLightTheme.js +0 -11
  209. package/theme/applyTheme.d.ts +0 -7
  210. package/theme/applyTheme.js +0 -20
  211. package/theme/colors.d.ts +0 -54
  212. package/theme/colors.js +0 -82
  213. package/theme/darkTheme.d.ts +0 -2
  214. package/theme/darkTheme.js +0 -142
  215. package/theme/lightTheme.d.ts +0 -2
  216. package/theme/lightTheme.js +0 -119
  217. package/theme/toggleDarkTheme.d.ts +0 -18
  218. package/theme/toggleDarkTheme.js +0 -53
  219. package/theme/types.d.ts +0 -21
  220. package/theme/types.js +0 -1
  221. /package/{Link.types.js → Popover.types.js} +0 -0
  222. /package/{stores → mediaQueries}/prefersReducedMotion.js +0 -0
  223. /package/{stores → mediaQueries}/usingKeyboard.js +0 -0
package/MenuButton.svelte CHANGED
@@ -1,87 +1,95 @@
1
- <script>import { createEventDispatcher, setContext, tick } from "svelte";
2
- import { writable } from "svelte/store";
3
- import Button from "./Button.svelte";
4
- import Menu from "./Menu.svelte";
5
- import { MENU_ITEM_CONTEXT_KEY } from "./MenuItem.constants";
6
- import { idGenerator } from "./idGenerator";
7
- import Popover from "./Popover.svelte";
8
- import { clickOutside } from "./actions/clickOutside";
1
+ <script>import { createEventDispatcher, setContext, tick } from 'svelte';
2
+ import { writable } from 'svelte/store';
3
+ import Button from './Button.svelte';
4
+ import Menu from './Menu.svelte';
5
+ import { MENU_ITEM_CONTEXT_KEY } from './MenuItem.constants';
6
+ import { idGenerator } from './idGenerator';
7
+ import Popover from './Popover.svelte';
8
+ import { clickOutside } from './actions/clickOutside';
9
+ // ----- Props ----- //
10
+ /** When true, the menu is open. */
9
11
  export let open = false;
12
+ /** The value uniquely identifying this menu button as the root of the menu hierarchy. */
10
13
  export let value;
11
- const instanceId = idGenerator.nextId("MenuButton");
14
+ /** Additional class names to apply. */
15
+ export let variant = '';
16
+ // ----- State ----- //
17
+ const instanceId = idGenerator.nextId('MenuButton');
12
18
  let buttonRef;
13
19
  let reference;
14
20
  let menuRef;
15
21
  let prevOpen = open;
16
- $:
17
- menuId = `${value}-menu-${instanceId}`;
18
- $:
19
- hasChildren = $$slots.items;
22
+ $: menuId = `${value}-menu-${instanceId}`;
23
+ $: hasChildren = $$slots.items;
20
24
  const openValues = writable([]);
21
25
  $: {
22
- open = $openValues.length > 0;
26
+ open = $openValues.length > 0;
23
27
  }
28
+ // ----- Events ----- //
24
29
  const dispatch = createEventDispatcher();
25
- const raiseClose = (value2) => {
26
- dispatch("close", { value: value2 });
30
+ const raiseClose = (value) => {
31
+ dispatch('close', { value });
27
32
  };
28
- const raiseOpen = (value2) => {
29
- dispatch("open", { value: value2 });
33
+ const raiseOpen = (value) => {
34
+ dispatch('open', { value });
30
35
  };
31
- const raiseSelect = (value2) => {
32
- dispatch("select", { value: value2 });
36
+ const raiseSelect = (value) => {
37
+ dispatch('select', { value });
33
38
  };
39
+ // ----- Methods ----- //
34
40
  export const click = () => {
35
- buttonRef?.click();
41
+ buttonRef?.click();
36
42
  };
37
43
  export const blur = () => {
38
- buttonRef?.blur();
44
+ buttonRef?.blur();
39
45
  };
40
46
  export const focus = (options) => {
41
- buttonRef?.focus(options);
47
+ buttonRef?.focus(options);
42
48
  };
49
+ // ----- Event Handlers ----- //
43
50
  const onClick = async () => {
44
- if (!open) {
45
- openValues.set(["menu-button"]);
46
- await tick();
47
- menuRef?.focusFirstMenuItem();
48
- } else {
49
- open = false;
50
- openValues.set([]);
51
- }
51
+ if (!open) {
52
+ openValues.set(['menu-button']);
53
+ await tick();
54
+ menuRef?.focusFirstMenuItem();
55
+ }
56
+ else {
57
+ open = false;
58
+ openValues.set([]);
59
+ }
52
60
  };
53
61
  $: {
54
- if (!open && open !== prevOpen) {
55
- focus();
56
- }
57
- prevOpen = open;
62
+ if (!open && open !== prevOpen) {
63
+ focus();
64
+ }
65
+ prevOpen = open;
58
66
  }
67
+ // ----- Event Handlers ----- //
59
68
  const closeAllMenus = () => {
60
- openValues.set([]);
69
+ openValues.set([]);
61
70
  };
62
71
  const onClickOutside = (event) => {
63
- const {
64
- detail: { mouseEvent }
65
- } = event;
66
- let element = mouseEvent.target;
67
- while (element) {
68
- if (element.getAttribute("data-root-value") === value) {
69
- return;
72
+ const { detail: { mouseEvent } } = event;
73
+ let element = mouseEvent.target;
74
+ while (element) {
75
+ if (element.getAttribute('data-root-value') === value) {
76
+ return;
77
+ }
78
+ element = element.parentElement;
70
79
  }
71
- element = element.parentElement;
72
- }
73
- closeAllMenus?.();
80
+ closeAllMenus?.();
74
81
  };
82
+ // ----- Set Context ----- //
75
83
  setContext(MENU_ITEM_CONTEXT_KEY, {
76
- depth: 1,
77
- openValues,
78
- rootValue: value,
79
- closeContainingMenu: () => {
80
- open = false;
81
- },
82
- onOpen: raiseOpen,
83
- onClose: raiseClose,
84
- onSelect: raiseSelect
84
+ depth: 1,
85
+ openValues,
86
+ rootValue: value,
87
+ closeContainingMenu: () => {
88
+ open = false;
89
+ },
90
+ onOpen: raiseOpen,
91
+ onClose: raiseClose,
92
+ onSelect: raiseSelect
85
93
  });
86
94
  </script>
87
95
 
@@ -97,6 +105,7 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
97
105
  aria-owns={menuId}
98
106
  data-value={value}
99
107
  data-root-value={value}
108
+ variant={`sterling-menu-button ${variant}`}
100
109
  on:blur
101
110
  on:click
102
111
  on:click={onClick}
@@ -132,27 +141,11 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
132
141
  {...$$restProps}
133
142
  >
134
143
  <div class="reference" bind:this={reference} use:clickOutside on:click_outside={onClickOutside}>
135
- <slot shape={$$restProps.shape} variant={$$restProps.variant} />
144
+ <slot {open} {value} {variant} />
136
145
  </div>
137
- <Popover {reference} placement="bottom-start" {open}>
146
+ <Popover {reference} {open}>
138
147
  <Menu bind:this={menuRef} id={menuId} {reference} {open}>
139
- <slot name="items" />
148
+ <slot name="items" {variant} />
140
149
  </Menu>
141
150
  </Popover>
142
151
  </Button>
143
-
144
- <style>
145
- .reference {
146
- align-content: center;
147
- align-items: center;
148
- box-sizing: border-box;
149
- display: inline-flex;
150
- flex-direction: row;
151
- justify-content: center;
152
- justify-items: center;
153
- column-gap: 0.25em;
154
- overflow: hidden;
155
- text-overflow: ellipsis;
156
- white-space: nowrap;
157
- }
158
- </style>
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  [x: string]: any;
5
5
  open?: boolean | undefined;
6
6
  value: string;
7
+ variant?: string | undefined;
7
8
  click?: (() => void) | undefined;
8
9
  blur?: (() => void) | undefined;
9
10
  focus?: ((options?: FocusOptions) => void) | undefined;
@@ -48,10 +49,13 @@ declare const __propDef: {
48
49
  };
49
50
  slots: {
50
51
  default: {
51
- shape: any;
52
- variant: any;
52
+ open: boolean;
53
+ value: string;
54
+ variant: string;
55
+ };
56
+ items: {
57
+ variant: string;
53
58
  };
54
- items: {};
55
59
  };
56
60
  };
57
61
  export type MenuButtonProps = typeof __propDef.props;