@geoffcox/sterling-svelte 2.0.2 → 2.0.4

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 (133) hide show
  1. package/README.md +18 -0
  2. package/dist/@types/clickOutside.d.ts +15 -0
  3. package/dist/Button.svelte +29 -0
  4. package/dist/Button.svelte.d.ts +8 -0
  5. package/dist/Callout.svelte +243 -0
  6. package/dist/Callout.svelte.d.ts +14 -0
  7. package/dist/Callout.types.d.ts +11 -0
  8. package/dist/Callout.types.js +1 -0
  9. package/dist/Checkbox.svelte +62 -0
  10. package/dist/Checkbox.svelte.d.ts +9 -0
  11. package/dist/Dialog.svelte +201 -0
  12. package/dist/Dialog.svelte.d.ts +14 -0
  13. package/dist/Dropdown.svelte +159 -0
  14. package/dist/Dropdown.svelte.d.ts +23 -0
  15. package/dist/Input.svelte +80 -0
  16. package/dist/Input.svelte.d.ts +11 -0
  17. package/dist/Label.constants.d.ts +2 -0
  18. package/dist/Label.constants.js +2 -0
  19. package/dist/Label.svelte +135 -0
  20. package/dist/Label.svelte.d.ts +17 -0
  21. package/dist/Link.svelte +31 -0
  22. package/dist/Link.svelte.d.ts +11 -0
  23. package/dist/List.constants.d.ts +1 -0
  24. package/dist/List.constants.js +1 -0
  25. package/dist/List.svelte +258 -0
  26. package/dist/List.svelte.d.ts +19 -0
  27. package/dist/List.types.d.ts +5 -0
  28. package/dist/List.types.js +1 -0
  29. package/dist/ListItem.svelte +64 -0
  30. package/dist/ListItem.svelte.d.ts +12 -0
  31. package/dist/Menu.svelte +105 -0
  32. package/dist/Menu.svelte.d.ts +12 -0
  33. package/dist/MenuBar.constants.d.ts +1 -0
  34. package/dist/MenuBar.constants.js +1 -0
  35. package/dist/MenuBar.svelte +144 -0
  36. package/dist/MenuBar.svelte.d.ts +12 -0
  37. package/dist/MenuBar.types.d.ts +4 -0
  38. package/dist/MenuBar.types.js +1 -0
  39. package/dist/MenuButton.svelte +156 -0
  40. package/dist/MenuButton.svelte.d.ts +20 -0
  41. package/dist/MenuItem.constants.d.ts +2 -0
  42. package/dist/MenuItem.constants.js +2 -0
  43. package/dist/MenuItem.svelte +431 -0
  44. package/dist/MenuItem.svelte.d.ts +22 -0
  45. package/dist/MenuItem.types.d.ts +20 -0
  46. package/dist/MenuItem.types.js +1 -0
  47. package/dist/MenuItem.utils.d.ts +7 -0
  48. package/dist/MenuItem.utils.js +36 -0
  49. package/dist/MenuSeparator.svelte +11 -0
  50. package/dist/MenuSeparator.svelte.d.ts +5 -0
  51. package/dist/Pagination.svelte +267 -0
  52. package/dist/Pagination.svelte.d.ts +4 -0
  53. package/dist/Pagination.types.d.ts +24 -0
  54. package/dist/Pagination.types.js +1 -0
  55. package/dist/Popover.constants.d.ts +1 -0
  56. package/dist/Popover.constants.js +14 -0
  57. package/dist/Popover.svelte +175 -0
  58. package/dist/Popover.svelte.d.ts +14 -0
  59. package/dist/Popover.types.d.ts +4 -0
  60. package/dist/Popover.types.js +1 -0
  61. package/dist/Portal.constants.d.ts +2 -0
  62. package/dist/Portal.constants.js +2 -0
  63. package/dist/Portal.types.d.ts +3 -0
  64. package/dist/Portal.types.js +1 -0
  65. package/dist/Progress.constants.d.ts +1 -0
  66. package/dist/Progress.constants.js +1 -0
  67. package/dist/Progress.svelte +61 -0
  68. package/dist/Progress.svelte.d.ts +11 -0
  69. package/dist/Progress.types.d.ts +4 -0
  70. package/dist/Progress.types.js +1 -0
  71. package/dist/Radio.svelte +65 -0
  72. package/dist/Radio.svelte.d.ts +12 -0
  73. package/dist/Select.svelte +262 -0
  74. package/dist/Select.svelte.d.ts +26 -0
  75. package/dist/Slider.svelte +182 -0
  76. package/dist/Slider.svelte.d.ts +18 -0
  77. package/dist/Switch.svelte +92 -0
  78. package/dist/Switch.svelte.d.ts +21 -0
  79. package/dist/Tab.svelte +66 -0
  80. package/dist/Tab.svelte.d.ts +11 -0
  81. package/dist/TabList.constants.d.ts +1 -0
  82. package/dist/TabList.constants.js +1 -0
  83. package/dist/TabList.svelte +253 -0
  84. package/dist/TabList.svelte.d.ts +17 -0
  85. package/dist/TabList.types.d.ts +5 -0
  86. package/dist/TabList.types.js +1 -0
  87. package/dist/TextArea.constants.d.ts +1 -0
  88. package/dist/TextArea.constants.js +1 -0
  89. package/dist/TextArea.svelte +116 -0
  90. package/dist/TextArea.svelte.d.ts +18 -0
  91. package/dist/TextArea.types.d.ts +4 -0
  92. package/dist/TextArea.types.js +1 -0
  93. package/dist/Tooltip.svelte +95 -0
  94. package/dist/Tooltip.svelte.d.ts +10 -0
  95. package/dist/Tree.constants.d.ts +1 -0
  96. package/dist/Tree.constants.js +1 -0
  97. package/dist/Tree.svelte +81 -0
  98. package/dist/Tree.svelte.d.ts +14 -0
  99. package/dist/Tree.types.d.ts +5 -0
  100. package/dist/Tree.types.js +1 -0
  101. package/dist/TreeChevron.svelte +39 -0
  102. package/dist/TreeChevron.svelte.d.ts +8 -0
  103. package/dist/TreeItem.constants.d.ts +1 -0
  104. package/dist/TreeItem.constants.js +1 -0
  105. package/dist/TreeItem.svelte +396 -0
  106. package/dist/TreeItem.svelte.d.ts +22 -0
  107. package/dist/TreeItem.types.d.ts +4 -0
  108. package/dist/TreeItem.types.js +1 -0
  109. package/dist/actions/applyLightDarkMode.d.ts +11 -0
  110. package/dist/actions/applyLightDarkMode.js +37 -0
  111. package/dist/actions/clickOutside.d.ts +15 -0
  112. package/dist/actions/clickOutside.js +28 -0
  113. package/dist/actions/colorScheme.d.ts +8 -0
  114. package/dist/actions/colorScheme.js +26 -0
  115. package/dist/actions/extraClass.d.ts +9 -0
  116. package/dist/actions/extraClass.js +15 -0
  117. package/dist/actions/forwardEvents.d.ts +12 -0
  118. package/dist/actions/forwardEvents.js +32 -0
  119. package/dist/actions/portal.d.ts +8 -0
  120. package/dist/actions/portal.js +19 -0
  121. package/dist/actions/trapKeyboardFocus.d.ts +3 -0
  122. package/dist/actions/trapKeyboardFocus.js +52 -0
  123. package/dist/idGenerator.d.ts +5 -0
  124. package/dist/idGenerator.js +11 -0
  125. package/dist/index.d.ts +61 -0
  126. package/dist/index.js +56 -0
  127. package/dist/mediaQueries/prefersColorSchemeDark.d.ts +1 -0
  128. package/dist/mediaQueries/prefersColorSchemeDark.js +14 -0
  129. package/dist/mediaQueries/prefersReducedMotion.d.ts +1 -0
  130. package/dist/mediaQueries/prefersReducedMotion.js +14 -0
  131. package/dist/mediaQueries/usingKeyboard.d.ts +1 -0
  132. package/dist/mediaQueries/usingKeyboard.js +17 -0
  133. package/package.json +17 -13
@@ -0,0 +1,26 @@
1
+ const getRootColorScheme = () => {
2
+ return globalThis.document?.documentElement?.style.getPropertyValue('color-scheme');
3
+ };
4
+ const setRootColorScheme = (value) => {
5
+ globalThis.document?.documentElement?.style.setProperty('color-scheme', value);
6
+ };
7
+ const clearRootColorScheme = () => {
8
+ globalThis.document?.documentElement?.style.removeProperty('color-scheme');
9
+ };
10
+ export const colorScheme = (_node, params) => {
11
+ const originalValue = getRootColorScheme();
12
+ setRootColorScheme(params?.value || 'light dark');
13
+ return {
14
+ destroy() {
15
+ if (originalValue) {
16
+ setRootColorScheme(originalValue);
17
+ }
18
+ else {
19
+ clearRootColorScheme();
20
+ }
21
+ },
22
+ update(params) {
23
+ setRootColorScheme(params?.value || 'light dark');
24
+ }
25
+ };
26
+ };
@@ -0,0 +1,9 @@
1
+ type Params = {
2
+ extraClass: string | null | undefined;
3
+ };
4
+ /** @deprecated Use clsx class merging through class={['name1', 'name2']} */
5
+ export declare const extraClass: (node: HTMLElement, params?: Params) => {
6
+ update(params: Params): void;
7
+ destroy(): void;
8
+ };
9
+ export {};
@@ -0,0 +1,15 @@
1
+ /** @deprecated Use clsx class merging through class={['name1', 'name2']} */
2
+ export const extraClass = (node, params) => {
3
+ let _class = params?.extraClass;
4
+ !!_class && node.classList.add(_class);
5
+ return {
6
+ update(params) {
7
+ !!_class && node.classList.remove(_class);
8
+ _class = params.extraClass;
9
+ !!_class && node.classList.add(_class);
10
+ },
11
+ destroy() {
12
+ !!_class && node.classList.remove(_class);
13
+ }
14
+ };
15
+ };
@@ -0,0 +1,12 @@
1
+ export declare const forwardEvents: (node: HTMLElement, params: {
2
+ target: HTMLElement;
3
+ events?: string[];
4
+ customEvents?: string[];
5
+ }) => {
6
+ update: (params: {
7
+ target: HTMLElement;
8
+ events?: string[];
9
+ customEvents?: [];
10
+ }) => void;
11
+ destroy(): void;
12
+ };
@@ -0,0 +1,32 @@
1
+ export const forwardEvents = (node, params) => {
2
+ const addListeners = (node, target, events, customEvents) => {
3
+ let forward = (event) => {
4
+ target.dispatchEvent(event);
5
+ };
6
+ let forwardCustom = (event) => {
7
+ const customEvent = event;
8
+ target.dispatchEvent(new CustomEvent(customEvent.type, {
9
+ bubbles: customEvent.bubbles,
10
+ cancelable: customEvent.cancelable,
11
+ detail: customEvent.detail
12
+ }));
13
+ };
14
+ events?.forEach((e) => node.addEventListener(e, forward));
15
+ customEvents?.forEach((e) => node.addEventListener(e, forwardCustom));
16
+ return () => {
17
+ events?.forEach((e) => node.removeEventListener(e, forward));
18
+ customEvents?.forEach((e) => node.removeEventListener(e, forwardCustom));
19
+ };
20
+ };
21
+ let unsubscribe = addListeners(node, params.target, params.events, params.customEvents);
22
+ const update = (params) => {
23
+ unsubscribe();
24
+ unsubscribe = addListeners(node, params.target, params.events, params.customEvents);
25
+ };
26
+ return {
27
+ update,
28
+ destroy() {
29
+ unsubscribe();
30
+ }
31
+ };
32
+ };
@@ -0,0 +1,8 @@
1
+ export declare const portal: (node: HTMLElement, params: {
2
+ target?: HTMLElement;
3
+ }) => {
4
+ update: (params: {
5
+ target?: HTMLElement;
6
+ }) => void;
7
+ destroy(): void;
8
+ };
@@ -0,0 +1,19 @@
1
+ export const portal = (node, params) => {
2
+ const child = node;
3
+ let portaled = false;
4
+ const createPortal = (node, params) => {
5
+ if (!portaled && params.target && node) {
6
+ params.target.appendChild(node);
7
+ portaled = true;
8
+ }
9
+ };
10
+ createPortal(child, params);
11
+ return {
12
+ update: (params) => createPortal(child, params),
13
+ destroy() {
14
+ if (portaled) {
15
+ child?.parentNode?.removeChild(child);
16
+ }
17
+ }
18
+ };
19
+ };
@@ -0,0 +1,3 @@
1
+ export declare const trapKeyboardFocus: (node: HTMLElement) => {
2
+ destroy: () => void;
3
+ };
@@ -0,0 +1,52 @@
1
+ const getFirstFocusable = (node) => {
2
+ // we can't select [tabIndex] as many elements don't have tabIndex as a declared property
3
+ // but do default to tabIndex >= 0.
4
+ const nodes = node.querySelectorAll('*');
5
+ const elements = Array.from(nodes)
6
+ .map((n) => n)
7
+ .filter((n) => n.tabIndex !== undefined && n.tabIndex >= 0);
8
+ return elements.length > 0 ? elements[0] : null;
9
+ };
10
+ const getLastFocusable = (node) => {
11
+ // we can't select [tabIndex] as many elements don't have tabIndex as a declared property
12
+ // but do default to tabIndex >= 0.
13
+ const nodes = node.querySelectorAll('*');
14
+ const elements = Array.from(nodes)
15
+ .map((n) => n)
16
+ .filter((n) => n.tabIndex !== undefined && n.tabIndex >= 0);
17
+ return elements.length > 0 ? elements[elements.length - 1] : null;
18
+ };
19
+ export const trapKeyboardFocus = (node) => {
20
+ const onKeydown = (e) => {
21
+ let handledFocus = false;
22
+ if (e.key === 'Tab') {
23
+ if (e.shiftKey) {
24
+ const firstFocusable = getFirstFocusable(node);
25
+ if (document.activeElement === firstFocusable) {
26
+ const lastFocusable = getLastFocusable(node);
27
+ lastFocusable?.focus();
28
+ handledFocus = true;
29
+ }
30
+ }
31
+ else {
32
+ const lastFocusable = getLastFocusable(node);
33
+ if (document.activeElement === lastFocusable) {
34
+ const firstFocusable = getFirstFocusable(node);
35
+ firstFocusable?.focus();
36
+ handledFocus = true;
37
+ }
38
+ }
39
+ }
40
+ if (handledFocus) {
41
+ e.stopPropagation();
42
+ e.preventDefault();
43
+ return false;
44
+ }
45
+ };
46
+ node.addEventListener('keydown', onKeydown);
47
+ return {
48
+ destroy: () => {
49
+ node.removeEventListener('keydown', onKeydown);
50
+ }
51
+ };
52
+ };
@@ -0,0 +1,5 @@
1
+ /** @deprecated Use $props.id() instead */
2
+ export declare const idGenerator: {
3
+ next: () => number;
4
+ nextId: (prefix?: string) => string;
5
+ };
@@ -0,0 +1,11 @@
1
+ let id = 0;
2
+ const next = () => {
3
+ return ++id;
4
+ };
5
+ /** @deprecated Use $props.id() instead */
6
+ export const idGenerator = {
7
+ next,
8
+ nextId: (prefix) => {
9
+ return prefix ? `${prefix}-${next()}` : `${next()}`;
10
+ }
11
+ };
@@ -0,0 +1,61 @@
1
+ export type { ClickOutsideEvent, ClickOutsideEventDetail } from './@types/clickOutside';
2
+ export { applyLightDarkMode } from './actions/applyLightDarkMode';
3
+ export { clickOutside } from './actions/clickOutside';
4
+ export { colorScheme } from './actions/colorScheme';
5
+ export { extraClass } from './actions/extraClass';
6
+ export { forwardEvents } from './actions/forwardEvents';
7
+ export { portal } from './actions/portal';
8
+ export { trapKeyboardFocus } from './actions/trapKeyboardFocus';
9
+ export { prefersColorSchemeDark } from './mediaQueries/prefersColorSchemeDark';
10
+ export { prefersReducedMotion } from './mediaQueries/prefersReducedMotion';
11
+ export { usingKeyboard } from './mediaQueries/usingKeyboard';
12
+ export { idGenerator } from './idGenerator';
13
+ export type { ListContext } from './List.types';
14
+ export type { MenuBarContext } from './MenuBar.types';
15
+ export type { MenuItemContext, MenuItemRegistration, MenuItemRole } from './MenuItem.types';
16
+ export type { PopoverPlacement } from './Popover.types';
17
+ export type { ProgressOrientation } from './Progress.types';
18
+ export type { TabListContext } from './TabList.types';
19
+ export type { TextAreaResize } from './TextArea.types';
20
+ export type { TreeContext } from './Tree.types';
21
+ export type { TreeItemContext } from './TreeItem.types';
22
+ export { LABEL_STATUSES, LABEL_VARIANTS } from './Label.constants';
23
+ export { LIST_CONTEXT_KEY } from './List.constants';
24
+ export { MENU_BAR_CONTEXT_KEY } from './MenuBar.constants';
25
+ export { MENU_ITEM_CONTEXT_KEY, MENU_ITEM_ROLES } from './MenuItem.constants';
26
+ export { POPOVER_PLACEMENTS } from './Popover.constants';
27
+ export { PROGRESS_ORIENTATIONS } from './Progress.constants';
28
+ export { TAB_LIST_CONTEXT_KEY } from './TabList.constants';
29
+ export { TEXT_AREA_RESIZES } from './TextArea.constants';
30
+ export { TREE_CONTEXT_KEY } from './Tree.constants';
31
+ export { TREE_ITEM_CONTEXT_KEY } from './TreeItem.constants';
32
+ import Button from './Button.svelte';
33
+ import Callout from './Callout.svelte';
34
+ import Checkbox from './Checkbox.svelte';
35
+ import Dialog from './Dialog.svelte';
36
+ import Dropdown from './Dropdown.svelte';
37
+ import Input from './Input.svelte';
38
+ import Label from './Label.svelte';
39
+ import Link from './Link.svelte';
40
+ import List from './List.svelte';
41
+ import ListItem from './ListItem.svelte';
42
+ import Menu from './Menu.svelte';
43
+ import MenuBar from './MenuBar.svelte';
44
+ import MenuButton from './MenuButton.svelte';
45
+ import MenuItem from './MenuItem.svelte';
46
+ import MenuSeparator from './MenuSeparator.svelte';
47
+ import Pagination from './Pagination.svelte';
48
+ import Popover from './Popover.svelte';
49
+ import Progress from './Progress.svelte';
50
+ import Radio from './Radio.svelte';
51
+ import Select from './Select.svelte';
52
+ import Slider from './Slider.svelte';
53
+ import Switch from './Switch.svelte';
54
+ import Tab from './Tab.svelte';
55
+ import TabList from './TabList.svelte';
56
+ import TextArea from './TextArea.svelte';
57
+ import Tooltip from './Tooltip.svelte';
58
+ import Tree from './Tree.svelte';
59
+ import TreeChevron from './TreeChevron.svelte';
60
+ import TreeItem from './TreeItem.svelte';
61
+ export { Button, Callout, Checkbox, Dialog, Dropdown, Input, Label, Link, List, ListItem, Menu, MenuBar, MenuButton, MenuItem, MenuSeparator, Pagination, Popover, Progress, Radio, Select, Slider, Switch, Tab, TabList, TextArea, Tooltip, Tree, TreeChevron, TreeItem };
package/dist/index.js ADDED
@@ -0,0 +1,56 @@
1
+ // ----- actions ----- //
2
+ export { applyLightDarkMode } from './actions/applyLightDarkMode';
3
+ export { clickOutside } from './actions/clickOutside';
4
+ export { colorScheme } from './actions/colorScheme';
5
+ export { extraClass } from './actions/extraClass';
6
+ export { forwardEvents } from './actions/forwardEvents';
7
+ export { portal } from './actions/portal';
8
+ export { trapKeyboardFocus } from './actions/trapKeyboardFocus';
9
+ // ----- media queries ----- //
10
+ export { prefersColorSchemeDark } from './mediaQueries/prefersColorSchemeDark';
11
+ export { prefersReducedMotion } from './mediaQueries/prefersReducedMotion';
12
+ export { usingKeyboard } from './mediaQueries/usingKeyboard';
13
+ // ----- functions ----- //
14
+ export { idGenerator } from './idGenerator';
15
+ // ----- Component constants ----- //
16
+ export { LABEL_STATUSES, LABEL_VARIANTS } from './Label.constants';
17
+ export { LIST_CONTEXT_KEY } from './List.constants';
18
+ export { MENU_BAR_CONTEXT_KEY } from './MenuBar.constants';
19
+ export { MENU_ITEM_CONTEXT_KEY, MENU_ITEM_ROLES } from './MenuItem.constants';
20
+ export { POPOVER_PLACEMENTS } from './Popover.constants';
21
+ export { PROGRESS_ORIENTATIONS } from './Progress.constants';
22
+ export { TAB_LIST_CONTEXT_KEY } from './TabList.constants';
23
+ export { TEXT_AREA_RESIZES } from './TextArea.constants';
24
+ export { TREE_CONTEXT_KEY } from './Tree.constants';
25
+ export { TREE_ITEM_CONTEXT_KEY } from './TreeItem.constants';
26
+ // ----- Components ----- //
27
+ import Button from './Button.svelte';
28
+ import Callout from './Callout.svelte';
29
+ import Checkbox from './Checkbox.svelte';
30
+ import Dialog from './Dialog.svelte';
31
+ import Dropdown from './Dropdown.svelte';
32
+ import Input from './Input.svelte';
33
+ import Label from './Label.svelte';
34
+ import Link from './Link.svelte';
35
+ import List from './List.svelte';
36
+ import ListItem from './ListItem.svelte';
37
+ import Menu from './Menu.svelte';
38
+ import MenuBar from './MenuBar.svelte';
39
+ import MenuButton from './MenuButton.svelte';
40
+ import MenuItem from './MenuItem.svelte';
41
+ import MenuSeparator from './MenuSeparator.svelte';
42
+ import Pagination from './Pagination.svelte';
43
+ import Popover from './Popover.svelte';
44
+ import Progress from './Progress.svelte';
45
+ import Radio from './Radio.svelte';
46
+ import Select from './Select.svelte';
47
+ import Slider from './Slider.svelte';
48
+ import Switch from './Switch.svelte';
49
+ import Tab from './Tab.svelte';
50
+ import TabList from './TabList.svelte';
51
+ import TextArea from './TextArea.svelte';
52
+ import Tooltip from './Tooltip.svelte';
53
+ import Tree from './Tree.svelte';
54
+ import TreeChevron from './TreeChevron.svelte';
55
+ import TreeItem from './TreeItem.svelte';
56
+ export { Button, Callout, Checkbox, Dialog, Dropdown, Input, Label, Link, List, ListItem, Menu, MenuBar, MenuButton, MenuItem, MenuSeparator, Pagination, Popover, Progress, Radio, Select, Slider, Switch, Tab, TabList, TextArea, Tooltip, Tree, TreeChevron, TreeItem };
@@ -0,0 +1 @@
1
+ export declare const prefersColorSchemeDark: import("svelte/store").Writable<boolean>;
@@ -0,0 +1,14 @@
1
+ import { onMount } from 'svelte';
2
+ import { writable } from 'svelte/store';
3
+ export const prefersColorSchemeDark = writable(false, (set) => {
4
+ let matchMedia = undefined;
5
+ const mediaChangeHandler = (e) => set(e.matches);
6
+ onMount(() => {
7
+ matchMedia = window.matchMedia('(prefers-color-scheme: dark)');
8
+ set(matchMedia.matches);
9
+ matchMedia.addEventListener('change', mediaChangeHandler);
10
+ });
11
+ return () => {
12
+ matchMedia?.removeEventListener('change', mediaChangeHandler);
13
+ };
14
+ });
@@ -0,0 +1 @@
1
+ export declare const prefersReducedMotion: import("svelte/store").Writable<boolean>;
@@ -0,0 +1,14 @@
1
+ import { onMount } from 'svelte';
2
+ import { writable } from 'svelte/store';
3
+ export const prefersReducedMotion = writable(false, (set) => {
4
+ let matchMedia = undefined;
5
+ const mediaChangeHandler = (e) => set(e.matches);
6
+ onMount(() => {
7
+ matchMedia = window.matchMedia('(prefers-reduced-motion: reduce)');
8
+ set(matchMedia.matches);
9
+ matchMedia.addEventListener('change', mediaChangeHandler);
10
+ });
11
+ return () => {
12
+ matchMedia?.removeEventListener('change', mediaChangeHandler);
13
+ };
14
+ });
@@ -0,0 +1 @@
1
+ export declare const usingKeyboard: import("svelte/store").Writable<boolean>;
@@ -0,0 +1,17 @@
1
+ import { onMount } from 'svelte';
2
+ import { writable } from 'svelte/store';
3
+ import { createKeyborg } from 'keyborg';
4
+ export const usingKeyboard = writable(false, (set) => {
5
+ let keyborg = undefined;
6
+ const keyborgHandler = (value) => {
7
+ set(value);
8
+ };
9
+ onMount(() => {
10
+ keyborg = createKeyborg(window);
11
+ set(keyborg.isNavigatingWithKeyboard());
12
+ keyborg.subscribe(keyborgHandler);
13
+ });
14
+ return () => {
15
+ keyborg?.unsubscribe(keyborgHandler);
16
+ };
17
+ });
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@geoffcox/sterling-svelte",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "author": "Geoff Cox",
5
- "description": "A modern, accessible, and lightweight UI component library for Svelte.",
5
+ "description": "A modern, accessible, and lightweight component library for Svelte.",
6
6
  "license": "MIT",
7
7
  "bugs": {
8
8
  "url": "https://github.com/GeoffCox/sterling-svelte/issues"
@@ -10,14 +10,15 @@
10
10
  "homepage": "https://github.com/GeoffCox/sterling-svelte/blob/main/README.md",
11
11
  "keywords": [
12
12
  "svelte",
13
+ "svelte5",
13
14
  "svelte 5",
14
- "sveltekit",
15
- "design system",
15
+ "typescript",
16
+ "javascript",
17
+ "UI",
18
+ "UX",
16
19
  "component",
17
20
  "components",
18
21
  "controls",
19
- "typescript",
20
- "javascript",
21
22
  "button",
22
23
  "callout",
23
24
  "checkbox",
@@ -28,27 +29,30 @@
28
29
  "link",
29
30
  "list",
30
31
  "menu",
32
+ "pagination",
31
33
  "popover",
32
34
  "progress",
33
35
  "radio",
34
36
  "select",
35
37
  "slider",
36
38
  "switch",
39
+ "tab",
37
40
  "tabs",
41
+ "tab list",
38
42
  "textarea",
39
43
  "tooltip",
40
44
  "tree"
41
45
  ],
42
46
  "exports": {
43
47
  ".": {
44
- "types": "./index.d.ts",
45
- "svelte": "./index.js"
48
+ "types": "./dist/index.d.ts",
49
+ "svelte": "./dist/index.js"
46
50
  }
47
51
  },
48
52
  "files": [
49
53
  "dist",
50
- "!**/*.test.*",
51
- "!**/*.spec.*"
54
+ "!dist/**/*.test.*",
55
+ "!dist/**/*.spec.*"
52
56
  ],
53
57
  "scripts": {
54
58
  "build": "vite build && npm run package",
@@ -70,7 +74,7 @@
70
74
  "@eslint/js": "^9.18.0",
71
75
  "@fontsource/atkinson-hyperlegible": "^5.1.1",
72
76
  "@fontsource/source-code-pro": "^4.5.14",
73
- "@geoffcox/sterling-svelte-themes": "^1.0.4",
77
+ "@geoffcox/sterling-svelte-themes": "^2.0.0",
74
78
  "@sveltejs/adapter-static": "^3.0.8",
75
79
  "@sveltejs/kit": "^2.16.0",
76
80
  "@sveltejs/package": "^2.0.0",
@@ -98,7 +102,7 @@
98
102
  "keyborg": "^2.0.0",
99
103
  "lodash-es": "^4.17.21"
100
104
  },
101
- "svelte": "./index.js",
102
- "types": "./index.d.ts",
105
+ "svelte": "./dist/index.js",
106
+ "types": "./dist/index.d.ts",
103
107
  "type": "module"
104
108
  }