sv5ui 1.4.0 → 1.5.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.
- package/README.md +60 -183
- package/dist/Checkbox/Checkbox.svelte +2 -11
- package/dist/CheckboxGroup/CheckboxGroup.svelte +2 -11
- package/dist/FormField/FormField.svelte +2 -6
- package/dist/Input/Input.svelte +2 -10
- package/dist/PinInput/PinInput.svelte +2 -11
- package/dist/RadioGroup/RadioGroup.svelte +2 -11
- package/dist/Select/Select.svelte +2 -10
- package/dist/SelectMenu/SelectMenu.svelte +2 -10
- package/dist/Slider/Slider.svelte +2 -11
- package/dist/Switch/Switch.svelte +2 -11
- package/dist/Table/Table.svelte +763 -0
- package/dist/Table/Table.svelte.d.ts +26 -0
- package/dist/Table/index.d.ts +2 -0
- package/dist/Table/index.js +1 -0
- package/dist/Table/table.types.d.ts +202 -0
- package/dist/Table/table.types.js +1 -0
- package/dist/Table/table.utils.d.ts +51 -0
- package/dist/Table/table.utils.js +166 -0
- package/dist/Table/table.variants.d.ts +205 -0
- package/dist/Table/table.variants.js +126 -0
- package/dist/Textarea/Textarea.svelte +2 -10
- package/dist/config.d.ts +3 -0
- package/dist/config.js +4 -1
- package/dist/hooks/index.d.ts +14 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/useClickOutside.svelte.d.ts +31 -0
- package/dist/hooks/useClickOutside.svelte.js +37 -0
- package/dist/hooks/useClipboard.svelte.d.ts +30 -0
- package/dist/hooks/useClipboard.svelte.js +45 -0
- package/dist/hooks/useDebounce.svelte.d.ts +36 -0
- package/dist/hooks/useDebounce.svelte.js +56 -0
- package/dist/hooks/useEscapeKeydown.svelte.d.ts +31 -0
- package/dist/hooks/useEscapeKeydown.svelte.js +37 -0
- package/dist/hooks/useFormField.svelte.d.ts +21 -0
- package/dist/hooks/useFormField.svelte.js +17 -0
- package/dist/hooks/useInfiniteScroll.svelte.d.ts +57 -0
- package/dist/hooks/useInfiniteScroll.svelte.js +69 -0
- package/dist/hooks/useMediaQuery.svelte.d.ts +31 -0
- package/dist/hooks/useMediaQuery.svelte.js +38 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/package.json +1 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface UseMediaQueryOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Initial value before the media query is evaluated (SSR-safe).
|
|
4
|
+
* @default false
|
|
5
|
+
*/
|
|
6
|
+
initialValue?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface UseMediaQueryReturn {
|
|
9
|
+
/** Whether the media query currently matches */
|
|
10
|
+
readonly matches: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Reactive media query hook. Tracks whether a CSS media query matches.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```svelte
|
|
17
|
+
* <script>
|
|
18
|
+
* import { useMediaQuery } from 'sv5ui'
|
|
19
|
+
*
|
|
20
|
+
* const isMobile = useMediaQuery('(max-width: 640px)')
|
|
21
|
+
* const prefersDark = useMediaQuery('(prefers-color-scheme: dark)')
|
|
22
|
+
* </script>
|
|
23
|
+
*
|
|
24
|
+
* {#if isMobile.matches}
|
|
25
|
+
* <MobileLayout />
|
|
26
|
+
* {:else}
|
|
27
|
+
* <DesktopLayout />
|
|
28
|
+
* {/if}
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function useMediaQuery(query: string | (() => string), options?: UseMediaQueryOptions): UseMediaQueryReturn;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reactive media query hook. Tracks whether a CSS media query matches.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```svelte
|
|
6
|
+
* <script>
|
|
7
|
+
* import { useMediaQuery } from 'sv5ui'
|
|
8
|
+
*
|
|
9
|
+
* const isMobile = useMediaQuery('(max-width: 640px)')
|
|
10
|
+
* const prefersDark = useMediaQuery('(prefers-color-scheme: dark)')
|
|
11
|
+
* </script>
|
|
12
|
+
*
|
|
13
|
+
* {#if isMobile.matches}
|
|
14
|
+
* <MobileLayout />
|
|
15
|
+
* {:else}
|
|
16
|
+
* <DesktopLayout />
|
|
17
|
+
* {/if}
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function useMediaQuery(query, options = {}) {
|
|
21
|
+
const { initialValue = false } = options;
|
|
22
|
+
const resolveQuery = typeof query === 'function' ? query : () => query;
|
|
23
|
+
let matches = $state(initialValue);
|
|
24
|
+
$effect(() => {
|
|
25
|
+
const mediaQuery = window.matchMedia(resolveQuery());
|
|
26
|
+
matches = mediaQuery.matches;
|
|
27
|
+
function handler(event) {
|
|
28
|
+
matches = event.matches;
|
|
29
|
+
}
|
|
30
|
+
mediaQuery.addEventListener('change', handler);
|
|
31
|
+
return () => mediaQuery.removeEventListener('change', handler);
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
get matches() {
|
|
35
|
+
return matches;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -43,6 +43,8 @@ export * from './FileUpload/index.js';
|
|
|
43
43
|
export * from './Slider/index.js';
|
|
44
44
|
export * from './PinInput/index.js';
|
|
45
45
|
export * from './ThemeModeButton/index.js';
|
|
46
|
+
export * from './Table/index.js';
|
|
46
47
|
export * from './Toast/index.js';
|
|
48
|
+
export * from './hooks/index.js';
|
|
47
49
|
export { defineConfig } from './config.js';
|
|
48
50
|
export type { UIConfig } from './config.js';
|
package/dist/index.js
CHANGED
|
@@ -44,6 +44,9 @@ export * from './FileUpload/index.js';
|
|
|
44
44
|
export * from './Slider/index.js';
|
|
45
45
|
export * from './PinInput/index.js';
|
|
46
46
|
export * from './ThemeModeButton/index.js';
|
|
47
|
+
export * from './Table/index.js';
|
|
47
48
|
export * from './Toast/index.js';
|
|
49
|
+
// Composables
|
|
50
|
+
export * from './hooks/index.js';
|
|
48
51
|
// Configuration
|
|
49
52
|
export { defineConfig } from './config.js';
|