@skeletonlabs/skeleton-svelte 1.5.1 → 2.0.0-next.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/dist/{composed → components}/accordion/anatomy/accordion-content.svelte +2 -1
- package/dist/{composed → components}/accordion/anatomy/accordion-heading.svelte +12 -2
- package/dist/{composed → components}/accordion/anatomy/accordion-indicator.svelte +10 -1
- package/dist/{composed → components}/accordion/anatomy/accordion-item.svelte +2 -1
- package/dist/{composed → components}/accordion/anatomy/accordion-root.svelte +2 -1
- package/dist/{composed → components}/accordion/anatomy/accordion-trigger.svelte +2 -2
- package/dist/{composed → components}/avatar/anatomy/avatar-fallback.svelte +2 -1
- package/dist/{composed → components}/avatar/anatomy/avatar-image.svelte +2 -1
- package/dist/{composed → components}/avatar/anatomy/avatar-root.svelte +2 -1
- package/dist/index.css +2 -0
- package/dist/index.d.ts +2 -21
- package/dist/index.js +2 -29
- package/package.json +31 -38
- package/dist/components/Accordion/Accordion.svelte +0 -55
- package/dist/components/Accordion/Accordion.svelte.d.ts +0 -5
- package/dist/components/Accordion/AccordionItem.svelte +0 -90
- package/dist/components/Accordion/AccordionItem.svelte.d.ts +0 -5
- package/dist/components/Accordion/context.d.ts +0 -2
- package/dist/components/Accordion/context.js +0 -3
- package/dist/components/Accordion/index.d.ts +0 -4
- package/dist/components/Accordion/index.js +0 -3
- package/dist/components/Accordion/types.d.ts +0 -74
- package/dist/components/AppBar/AppBar.svelte +0 -72
- package/dist/components/AppBar/AppBar.svelte.d.ts +0 -5
- package/dist/components/AppBar/types.d.ts +0 -61
- package/dist/components/AppBar/types.js +0 -1
- package/dist/components/Avatar/Avatar.svelte +0 -68
- package/dist/components/Avatar/Avatar.svelte.d.ts +0 -5
- package/dist/components/Avatar/types.d.ts +0 -39
- package/dist/components/Avatar/types.js +0 -1
- package/dist/components/Combobox/Combobox.svelte +0 -154
- package/dist/components/Combobox/Combobox.svelte.d.ts +0 -18
- package/dist/components/Combobox/types.d.ts +0 -66
- package/dist/components/Combobox/types.js +0 -1
- package/dist/components/FileUpload/FileUpload.svelte +0 -132
- package/dist/components/FileUpload/FileUpload.svelte.d.ts +0 -5
- package/dist/components/FileUpload/types.d.ts +0 -74
- package/dist/components/FileUpload/types.js +0 -1
- package/dist/components/Modal/Modal.svelte +0 -87
- package/dist/components/Modal/Modal.svelte.d.ts +0 -4
- package/dist/components/Modal/types.d.ts +0 -58
- package/dist/components/Modal/types.js +0 -1
- package/dist/components/Navigation/NavBar.svelte +0 -48
- package/dist/components/Navigation/NavBar.svelte.d.ts +0 -5
- package/dist/components/Navigation/NavRail.svelte +0 -90
- package/dist/components/Navigation/NavRail.svelte.d.ts +0 -5
- package/dist/components/Navigation/NavTile.svelte +0 -87
- package/dist/components/Navigation/NavTile.svelte.d.ts +0 -5
- package/dist/components/Navigation/context.d.ts +0 -2
- package/dist/components/Navigation/context.js +0 -6
- package/dist/components/Navigation/index.d.ts +0 -6
- package/dist/components/Navigation/index.js +0 -4
- package/dist/components/Navigation/types.d.ts +0 -132
- package/dist/components/Navigation/types.js +0 -1
- package/dist/components/Pagination/Pagination.svelte +0 -146
- package/dist/components/Pagination/Pagination.svelte.d.ts +0 -4
- package/dist/components/Pagination/types.d.ts +0 -56
- package/dist/components/Pagination/types.js +0 -1
- package/dist/components/Popover/Popover.svelte +0 -74
- package/dist/components/Popover/Popover.svelte.d.ts +0 -4
- package/dist/components/Popover/types.d.ts +0 -45
- package/dist/components/Popover/types.js +0 -1
- package/dist/components/Progress/Progress.svelte +0 -63
- package/dist/components/Progress/Progress.svelte.d.ts +0 -5
- package/dist/components/Progress/types.d.ts +0 -44
- package/dist/components/Progress/types.js +0 -1
- package/dist/components/ProgressRing/ProgressRing.svelte +0 -98
- package/dist/components/ProgressRing/ProgressRing.svelte.d.ts +0 -5
- package/dist/components/ProgressRing/types.d.ts +0 -56
- package/dist/components/ProgressRing/types.js +0 -1
- package/dist/components/Rating/Rating.svelte +0 -135
- package/dist/components/Rating/Rating.svelte.d.ts +0 -5
- package/dist/components/Rating/index.d.ts +0 -2
- package/dist/components/Rating/index.js +0 -2
- package/dist/components/Rating/types.d.ts +0 -36
- package/dist/components/Rating/types.js +0 -1
- package/dist/components/Segment/Segment.svelte +0 -77
- package/dist/components/Segment/Segment.svelte.d.ts +0 -5
- package/dist/components/Segment/SegmentItem.svelte +0 -40
- package/dist/components/Segment/SegmentItem.svelte.d.ts +0 -5
- package/dist/components/Segment/context.d.ts +0 -2
- package/dist/components/Segment/context.js +0 -6
- package/dist/components/Segment/index.d.ts +0 -4
- package/dist/components/Segment/index.js +0 -3
- package/dist/components/Segment/types.d.ts +0 -64
- package/dist/components/Segment/types.js +0 -1
- package/dist/components/Slider/Slider.svelte +0 -105
- package/dist/components/Slider/Slider.svelte.d.ts +0 -4
- package/dist/components/Slider/types.d.ts +0 -68
- package/dist/components/Slider/types.js +0 -1
- package/dist/components/Switch/Switch.svelte +0 -102
- package/dist/components/Switch/Switch.svelte.d.ts +0 -5
- package/dist/components/Switch/types.d.ts +0 -64
- package/dist/components/Switch/types.js +0 -1
- package/dist/components/Tabs/Tabs.svelte +0 -59
- package/dist/components/Tabs/Tabs.svelte.d.ts +0 -5
- package/dist/components/Tabs/TabsControl.svelte +0 -51
- package/dist/components/Tabs/TabsControl.svelte.d.ts +0 -5
- package/dist/components/Tabs/TabsPanel.svelte +0 -23
- package/dist/components/Tabs/TabsPanel.svelte.d.ts +0 -5
- package/dist/components/Tabs/context.d.ts +0 -2
- package/dist/components/Tabs/context.js +0 -6
- package/dist/components/Tabs/index.d.ts +0 -5
- package/dist/components/Tabs/index.js +0 -4
- package/dist/components/Tabs/types.d.ts +0 -68
- package/dist/components/Tabs/types.js +0 -1
- package/dist/components/TagsInput/TagsInput.svelte +0 -96
- package/dist/components/TagsInput/TagsInput.svelte.d.ts +0 -5
- package/dist/components/TagsInput/types.d.ts +0 -40
- package/dist/components/TagsInput/types.js +0 -1
- package/dist/components/Toast/Toast.svelte +0 -76
- package/dist/components/Toast/Toast.svelte.d.ts +0 -4
- package/dist/components/Toast/Toaster.svelte +0 -72
- package/dist/components/Toast/Toaster.svelte.d.ts +0 -4
- package/dist/components/Toast/create-toaster.d.ts +0 -2
- package/dist/components/Toast/create-toaster.js +0 -4
- package/dist/components/Toast/types.d.ts +0 -47
- package/dist/components/Toast/types.js +0 -1
- package/dist/components/Tooltip/Tooltip.svelte +0 -78
- package/dist/components/Tooltip/Tooltip.svelte.d.ts +0 -4
- package/dist/components/Tooltip/types.d.ts +0 -47
- package/dist/components/Tooltip/types.js +0 -1
- package/dist/composed/accordion/modules/types.js +0 -1
- package/dist/composed/index.d.ts +0 -2
- package/dist/composed/index.js +0 -2
- /package/dist/{composed → components}/accordion/anatomy/accordion-content.svelte.d.ts +0 -0
- /package/dist/{composed → components}/accordion/anatomy/accordion-heading.svelte.d.ts +0 -0
- /package/dist/{composed → components}/accordion/anatomy/accordion-indicator.svelte.d.ts +0 -0
- /package/dist/{composed → components}/accordion/anatomy/accordion-item.svelte.d.ts +0 -0
- /package/dist/{composed → components}/accordion/anatomy/accordion-root.svelte.d.ts +0 -0
- /package/dist/{composed → components}/accordion/anatomy/accordion-trigger.svelte.d.ts +0 -0
- /package/dist/{composed → components}/accordion/index.d.ts +0 -0
- /package/dist/{composed → components}/accordion/index.js +0 -0
- /package/dist/{composed → components}/accordion/modules/anatomy.d.ts +0 -0
- /package/dist/{composed → components}/accordion/modules/anatomy.js +0 -0
- /package/dist/{composed → components}/accordion/modules/context.d.ts +0 -0
- /package/dist/{composed → components}/accordion/modules/context.js +0 -0
- /package/dist/{composed → components}/accordion/modules/types.d.ts +0 -0
- /package/dist/components/{Accordion → accordion/modules}/types.js +0 -0
- /package/dist/{composed → components}/avatar/anatomy/avatar-fallback.svelte.d.ts +0 -0
- /package/dist/{composed → components}/avatar/anatomy/avatar-image.svelte.d.ts +0 -0
- /package/dist/{composed → components}/avatar/anatomy/avatar-root.svelte.d.ts +0 -0
- /package/dist/{composed → components}/avatar/index.d.ts +0 -0
- /package/dist/{composed → components}/avatar/index.js +0 -0
- /package/dist/{composed → components}/avatar/modules/anatomy.d.ts +0 -0
- /package/dist/{composed → components}/avatar/modules/anatomy.js +0 -0
- /package/dist/{composed → components}/avatar/modules/context.d.ts +0 -0
- /package/dist/{composed → components}/avatar/modules/context.js +0 -0
- /package/dist/{composed → components}/avatar/modules/types.d.ts +0 -0
- /package/dist/{composed → components}/avatar/modules/types.js +0 -0
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as pagination from '@zag-js/pagination';
|
|
3
|
-
import { normalizeProps, useMachine } from '@zag-js/svelte';
|
|
4
|
-
import type { PaginationProps } from './types.js';
|
|
5
|
-
|
|
6
|
-
const {
|
|
7
|
-
data = [],
|
|
8
|
-
alternative = false,
|
|
9
|
-
textSeparator = 'of',
|
|
10
|
-
showFirstLastButtons = false,
|
|
11
|
-
// Root
|
|
12
|
-
base = 'inline-flex items-stretch overflow-hidden',
|
|
13
|
-
background = 'preset-outlined-surface-200-800',
|
|
14
|
-
border = '',
|
|
15
|
-
gap = 'gap-2',
|
|
16
|
-
padding = 'p-2',
|
|
17
|
-
rounded = 'rounded-container',
|
|
18
|
-
classes = '',
|
|
19
|
-
// Titles
|
|
20
|
-
titleFirst,
|
|
21
|
-
titlePrevious,
|
|
22
|
-
titleNumeral,
|
|
23
|
-
titleNext,
|
|
24
|
-
titleLast,
|
|
25
|
-
// Buttons
|
|
26
|
-
buttonBase = 'btn',
|
|
27
|
-
buttonActive = 'preset-filled',
|
|
28
|
-
buttonInactive = 'preset-tonal',
|
|
29
|
-
buttonHover = 'hover:preset-filled',
|
|
30
|
-
buttonClasses = '',
|
|
31
|
-
// Children
|
|
32
|
-
labelFirst,
|
|
33
|
-
labelPrevious,
|
|
34
|
-
labelEllipsis,
|
|
35
|
-
labelNext,
|
|
36
|
-
labelLast,
|
|
37
|
-
// Zag ---
|
|
38
|
-
...zagProps
|
|
39
|
-
}: PaginationProps = $props();
|
|
40
|
-
|
|
41
|
-
// Zag
|
|
42
|
-
const id = $props.id();
|
|
43
|
-
const service = useMachine(pagination.machine, () => ({
|
|
44
|
-
id: id,
|
|
45
|
-
count: zagProps.count ?? data.length,
|
|
46
|
-
...zagProps
|
|
47
|
-
}));
|
|
48
|
-
const api = $derived(pagination.connect(service, normalizeProps));
|
|
49
|
-
|
|
50
|
-
// Reactive
|
|
51
|
-
const rxButtonActive = (page: { value: number }) => {
|
|
52
|
-
return service.prop('page') === page.value ? buttonActive : `${buttonInactive} ${buttonHover}`;
|
|
53
|
-
};
|
|
54
|
-
</script>
|
|
55
|
-
|
|
56
|
-
{#if api.totalPages > 1}
|
|
57
|
-
<div {...api.getRootProps()} class="{base} {background} {border} {gap} {padding} {rounded} {classes}" data-testid="pagination">
|
|
58
|
-
<!-- Button: First Page -->
|
|
59
|
-
{#if showFirstLastButtons}
|
|
60
|
-
<button
|
|
61
|
-
type="button"
|
|
62
|
-
onclick={api.goToFirstPage}
|
|
63
|
-
class="{buttonBase} {buttonInactive} {buttonHover} {buttonClasses}"
|
|
64
|
-
title={titleFirst}
|
|
65
|
-
disabled={api.page === 1}
|
|
66
|
-
data-testid="pagination-button-first"
|
|
67
|
-
>
|
|
68
|
-
{#if labelFirst}{@render labelFirst()}{:else}«{/if}
|
|
69
|
-
</button>
|
|
70
|
-
{/if}
|
|
71
|
-
<!-- Button: Previous Page -->
|
|
72
|
-
<button
|
|
73
|
-
type="button"
|
|
74
|
-
{...api.getPrevTriggerProps()}
|
|
75
|
-
class="{buttonBase} {buttonInactive} {buttonHover} {buttonClasses}"
|
|
76
|
-
title={titlePrevious}
|
|
77
|
-
disabled={api.page === 1}
|
|
78
|
-
data-testid="pagination-button-previous"
|
|
79
|
-
>
|
|
80
|
-
{#if labelPrevious}{@render labelPrevious()}{:else}←{/if}
|
|
81
|
-
</button>
|
|
82
|
-
<!-- Numeral List -->
|
|
83
|
-
{#if !alternative}
|
|
84
|
-
{#each api.pages as page, i}
|
|
85
|
-
{#if page.type === 'page'}
|
|
86
|
-
<!-- Numeral -->
|
|
87
|
-
<button
|
|
88
|
-
type="button"
|
|
89
|
-
{...api.getItemProps(page)}
|
|
90
|
-
class="{buttonBase} {rxButtonActive(page)} {buttonClasses}"
|
|
91
|
-
title={titleNumeral && `${titleNumeral} ${page.value}`}
|
|
92
|
-
data-testid="pagination-button-numeral"
|
|
93
|
-
>
|
|
94
|
-
{page.value}
|
|
95
|
-
</button>
|
|
96
|
-
{:else}
|
|
97
|
-
<!-- Ellipsis -->
|
|
98
|
-
<span
|
|
99
|
-
{...api.getEllipsisProps({ index: i })}
|
|
100
|
-
class="{buttonBase} {buttonInactive} {buttonClasses}"
|
|
101
|
-
data-testid="pagination-ellipsis"
|
|
102
|
-
>
|
|
103
|
-
{#if labelEllipsis}{@render labelEllipsis()}{:else}⋯{/if}
|
|
104
|
-
</span>
|
|
105
|
-
{/if}
|
|
106
|
-
{/each}
|
|
107
|
-
{/if}
|
|
108
|
-
<!-- Alternative Interface -->
|
|
109
|
-
{#if alternative}
|
|
110
|
-
<span class="{buttonBase} {buttonInactive} {buttonClasses}" data-testid="pagination-alt-ui">
|
|
111
|
-
<span>
|
|
112
|
-
{api.pageRange.start + 1} - {api.pageRange.end}
|
|
113
|
-
</span>
|
|
114
|
-
<span class="opacity-60">
|
|
115
|
-
{api.page}
|
|
116
|
-
{textSeparator}
|
|
117
|
-
{api.totalPages}
|
|
118
|
-
</span>
|
|
119
|
-
</span>
|
|
120
|
-
{/if}
|
|
121
|
-
<!-- Button: Next Page -->
|
|
122
|
-
<button
|
|
123
|
-
type="button"
|
|
124
|
-
{...api.getNextTriggerProps()}
|
|
125
|
-
class="{buttonBase} {buttonInactive} {buttonHover} {buttonClasses}"
|
|
126
|
-
title={titleNext}
|
|
127
|
-
disabled={!api.nextPage}
|
|
128
|
-
data-testid="pagination-button-next"
|
|
129
|
-
>
|
|
130
|
-
{#if labelNext}{@render labelNext()}{:else}→{/if}
|
|
131
|
-
</button>
|
|
132
|
-
<!-- Button: Last Page -->
|
|
133
|
-
{#if showFirstLastButtons}
|
|
134
|
-
<button
|
|
135
|
-
type="button"
|
|
136
|
-
onclick={api.goToLastPage}
|
|
137
|
-
class="{buttonBase} {buttonInactive} {buttonHover} {buttonClasses}"
|
|
138
|
-
title={titleLast}
|
|
139
|
-
disabled={!api.nextPage}
|
|
140
|
-
data-testid="pagination-button-last"
|
|
141
|
-
>
|
|
142
|
-
{#if labelLast}{@render labelLast()}{:else}»{/if}
|
|
143
|
-
</button>
|
|
144
|
-
{/if}
|
|
145
|
-
</div>
|
|
146
|
-
{/if}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import type { Snippet } from 'svelte';
|
|
2
|
-
import * as pagination from '@zag-js/pagination';
|
|
3
|
-
export interface PaginationProps extends Omit<pagination.Props, 'id'> {
|
|
4
|
-
/** Provide source data as an array. */
|
|
5
|
-
data: unknown[];
|
|
6
|
-
/** Enables alternative display with stats and first/last buttons. */
|
|
7
|
-
alternative?: boolean;
|
|
8
|
-
/** Set the separator text or character, such as "of" in "X of Y". */
|
|
9
|
-
textSeparator?: string;
|
|
10
|
-
/** Show first and last page button. */
|
|
11
|
-
showFirstLastButtons?: boolean;
|
|
12
|
-
/** Sets base classes for the list. */
|
|
13
|
-
base?: string;
|
|
14
|
-
/** Sets background classes for the list. */
|
|
15
|
-
background?: string;
|
|
16
|
-
/** Sets border classes for the list. */
|
|
17
|
-
border?: string;
|
|
18
|
-
/** Sets gap classes for the list. */
|
|
19
|
-
gap?: string;
|
|
20
|
-
/** Sets padding classes for the list. */
|
|
21
|
-
padding?: string;
|
|
22
|
-
/** Sets border radius classes for the list. */
|
|
23
|
-
rounded?: string;
|
|
24
|
-
/** Provide arbitrary CSS classes for the root. */
|
|
25
|
-
classes?: string;
|
|
26
|
-
/** Set an optional title for the first button. */
|
|
27
|
-
titleFirst?: string;
|
|
28
|
-
/** Set an optional title for the previous button. */
|
|
29
|
-
titlePrevious?: string;
|
|
30
|
-
/** Set an optional title for the numeral buttons (ex: Page 1). */
|
|
31
|
-
titleNumeral?: string;
|
|
32
|
-
/** Set an optional title for the next button. */
|
|
33
|
-
titleNext?: string;
|
|
34
|
-
/** Set an optional title for the last button. */
|
|
35
|
-
titleLast?: string;
|
|
36
|
-
/** Sets base classes for buttons. */
|
|
37
|
-
buttonBase?: string;
|
|
38
|
-
/** Sets active state classes for buttons. */
|
|
39
|
-
buttonActive?: string;
|
|
40
|
-
/** Sets inactive state classes for buttons. */
|
|
41
|
-
buttonInactive?: string;
|
|
42
|
-
/** Sets hover state classes for buttons. */
|
|
43
|
-
buttonHover?: string;
|
|
44
|
-
/** Provide arbitrary CSS classes for buttons. */
|
|
45
|
-
buttonClasses?: string;
|
|
46
|
-
/** Set button icon or label for first button. */
|
|
47
|
-
labelFirst?: Snippet;
|
|
48
|
-
/** Set button icon or label for previous button. */
|
|
49
|
-
labelPrevious?: Snippet;
|
|
50
|
-
/** Set button icon or label for ellipsis. */
|
|
51
|
-
labelEllipsis?: Snippet;
|
|
52
|
-
/** Set button icon or label for next button. */
|
|
53
|
-
labelNext?: Snippet;
|
|
54
|
-
/** Set button icon or label for last button. */
|
|
55
|
-
labelLast?: Snippet;
|
|
56
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import * as pagination from '@zag-js/pagination';
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { fade } from 'svelte/transition';
|
|
3
|
-
|
|
4
|
-
import * as popover from '@zag-js/popover';
|
|
5
|
-
import { portal, useMachine, normalizeProps, mergeProps } from '@zag-js/svelte';
|
|
6
|
-
import type { PopoverProps } from './types.js';
|
|
7
|
-
|
|
8
|
-
const {
|
|
9
|
-
zIndex = 'auto',
|
|
10
|
-
// Arrow
|
|
11
|
-
arrow = false,
|
|
12
|
-
arrowBackground = 'var(--color-surface-950-50)',
|
|
13
|
-
arrowSize = '10px',
|
|
14
|
-
// Base
|
|
15
|
-
base = '',
|
|
16
|
-
classes = '',
|
|
17
|
-
// Trigger
|
|
18
|
-
triggerBase = '',
|
|
19
|
-
triggerBackground = '',
|
|
20
|
-
triggerClasses = '',
|
|
21
|
-
triggerAriaLabel = '',
|
|
22
|
-
// Positioner
|
|
23
|
-
positionerBase = '',
|
|
24
|
-
positionerClasses = '',
|
|
25
|
-
// Content
|
|
26
|
-
contentBase = '',
|
|
27
|
-
contentBackground = '',
|
|
28
|
-
contentClasses = '',
|
|
29
|
-
// Arrow
|
|
30
|
-
arrowBase = '',
|
|
31
|
-
arrowClasses = '',
|
|
32
|
-
// Snippets
|
|
33
|
-
trigger,
|
|
34
|
-
content,
|
|
35
|
-
// Events
|
|
36
|
-
onclick,
|
|
37
|
-
// Zag ---
|
|
38
|
-
...zagProps
|
|
39
|
-
}: PopoverProps = $props();
|
|
40
|
-
|
|
41
|
-
// Zag
|
|
42
|
-
const id = $props.id();
|
|
43
|
-
const service = useMachine(popover.machine, () => ({
|
|
44
|
-
id: id,
|
|
45
|
-
...zagProps
|
|
46
|
-
}));
|
|
47
|
-
const api = $derived(popover.connect(service, normalizeProps));
|
|
48
|
-
const triggerProps = $derived(mergeProps(api.getTriggerProps(), { onclick }));
|
|
49
|
-
</script>
|
|
50
|
-
|
|
51
|
-
<span class="{base} {classes}" data-testid="popover">
|
|
52
|
-
<!-- Snippet: Trigger -->
|
|
53
|
-
{#if trigger}
|
|
54
|
-
<button {...triggerProps} class="{triggerBase} {triggerBackground} {triggerClasses}" type="button" aria-label={triggerAriaLabel}>
|
|
55
|
-
{@render trigger()}
|
|
56
|
-
</button>
|
|
57
|
-
{/if}
|
|
58
|
-
<!-- Portal -->
|
|
59
|
-
<div use:portal={{ disabled: !api.portalled }} {...api.getPositionerProps()} class="{positionerBase} {positionerClasses}">
|
|
60
|
-
<!-- Popover -->
|
|
61
|
-
{#if api.open}
|
|
62
|
-
<div {...api.getContentProps()} transition:fade={{ duration: 100 }} style="z-index: {zIndex};">
|
|
63
|
-
<!-- Arrow -->
|
|
64
|
-
{#if arrow}
|
|
65
|
-
<div {...api.getArrowProps()} style:--arrow-size={arrowSize}>
|
|
66
|
-
<div {...api.getArrowTipProps()} class="{arrowBase} {arrowClasses}" style:--arrow-background={arrowBackground}></div>
|
|
67
|
-
</div>
|
|
68
|
-
{/if}
|
|
69
|
-
<!-- Snippet: Content -->
|
|
70
|
-
<div class="{contentBase} {contentBackground} {contentClasses}">{@render content?.()}</div>
|
|
71
|
-
</div>
|
|
72
|
-
{/if}
|
|
73
|
-
</div>
|
|
74
|
-
</span>
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type { Snippet } from 'svelte';
|
|
2
|
-
import * as popover from '@zag-js/popover';
|
|
3
|
-
import type { HTMLButtonAttributes } from 'svelte/elements';
|
|
4
|
-
export interface PopoverProps extends Omit<popover.Props, 'id'> {
|
|
5
|
-
/** Set a positioner style for z-index, ex: "10" */
|
|
6
|
-
zIndex?: string;
|
|
7
|
-
/** Enable display of the popover arrow. */
|
|
8
|
-
arrow?: boolean;
|
|
9
|
-
/** Set a style value for --arrow-background, ex: "var(--color-surface-50-950)" */
|
|
10
|
-
arrowBackground?: string;
|
|
11
|
-
/** Set a style value for --arrow-size, ex: "10px" */
|
|
12
|
-
arrowSize?: string;
|
|
13
|
-
/** Set base classes for the root element. */
|
|
14
|
-
base?: string;
|
|
15
|
-
/** Provide arbitrary classes for the root element. */
|
|
16
|
-
classes?: string;
|
|
17
|
-
/** Set base classes for the trigger. */
|
|
18
|
-
triggerBase?: string;
|
|
19
|
-
/** Set background classes for the trigger. */
|
|
20
|
-
triggerBackground?: string;
|
|
21
|
-
/** Provide arbitrary classes for the trigger. */
|
|
22
|
-
triggerClasses?: string;
|
|
23
|
-
/** Set the aria-label for the trigger. */
|
|
24
|
-
triggerAriaLabel?: string;
|
|
25
|
-
/** Set base classes for the positioner. */
|
|
26
|
-
positionerBase?: string;
|
|
27
|
-
/** Provide arbitrary classes for the positioner. */
|
|
28
|
-
positionerClasses?: string;
|
|
29
|
-
/** Set base classes for the content. */
|
|
30
|
-
contentBase?: string;
|
|
31
|
-
/** Set background classes for the content. */
|
|
32
|
-
contentBackground?: string;
|
|
33
|
-
/** Provide arbitrary classes for the content. */
|
|
34
|
-
contentClasses?: string;
|
|
35
|
-
/** Set base classes for the arrow. */
|
|
36
|
-
arrowBase?: string;
|
|
37
|
-
/** Provide arbitrary classes for the arrow. */
|
|
38
|
-
arrowClasses?: string;
|
|
39
|
-
/** Provide the template contents inside the trigger button. */
|
|
40
|
-
trigger?: Snippet;
|
|
41
|
-
/** Provide the template contents of the popover itself. */
|
|
42
|
-
content?: Snippet;
|
|
43
|
-
/** Handle the popover button click event. */
|
|
44
|
-
onclick?: HTMLButtonAttributes['onclick'];
|
|
45
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import * as popover from '@zag-js/popover';
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as progress from '@zag-js/progress';
|
|
3
|
-
import { normalizeProps, useMachine } from '@zag-js/svelte';
|
|
4
|
-
import type { ProgressProps } from './types.js';
|
|
5
|
-
|
|
6
|
-
// Props
|
|
7
|
-
const {
|
|
8
|
-
// Root
|
|
9
|
-
base = 'flex items-center gap-4',
|
|
10
|
-
height = 'h-2',
|
|
11
|
-
width = 'w-full',
|
|
12
|
-
classes = '',
|
|
13
|
-
// Label
|
|
14
|
-
labelBase = 'whitespace-nowrap',
|
|
15
|
-
labelText = 'text-xs',
|
|
16
|
-
labelClasses = '',
|
|
17
|
-
// Track
|
|
18
|
-
trackBase = 'h-full w-full overflow-x-hidden',
|
|
19
|
-
trackBg = 'bg-surface-200-800',
|
|
20
|
-
trackRounded = 'rounded-base',
|
|
21
|
-
trackClasses = '',
|
|
22
|
-
// Meter
|
|
23
|
-
meterBase = 'h-full w-full',
|
|
24
|
-
meterBg = 'bg-surface-950-50',
|
|
25
|
-
meterRounded = 'rounded-base',
|
|
26
|
-
meterTransition = 'transition-[width]',
|
|
27
|
-
meterAnimate = 'animate-progress-indeterminate',
|
|
28
|
-
meterClasses = '',
|
|
29
|
-
// Snippets
|
|
30
|
-
children,
|
|
31
|
-
// Zag
|
|
32
|
-
...zagProps
|
|
33
|
-
}: ProgressProps = $props();
|
|
34
|
-
|
|
35
|
-
// Zag
|
|
36
|
-
const id = $props.id();
|
|
37
|
-
const service = useMachine(progress.machine, () => ({
|
|
38
|
-
id: id,
|
|
39
|
-
...zagProps
|
|
40
|
-
}));
|
|
41
|
-
const api = $derived(progress.connect(service, normalizeProps));
|
|
42
|
-
|
|
43
|
-
// Reactive
|
|
44
|
-
const rxIndeterminate = $derived(api.indeterminate ? meterAnimate : '');
|
|
45
|
-
</script>
|
|
46
|
-
|
|
47
|
-
<!-- @component A linear progress bar. -->
|
|
48
|
-
|
|
49
|
-
<figure {...api.getRootProps()} class="{base} {height} {width} {classes}" data-testid="progress">
|
|
50
|
-
<!-- Label -->
|
|
51
|
-
{#if children}
|
|
52
|
-
<div {...api.getLabelProps()} class="{labelBase} {labelText} {labelClasses}" data-testid="progress-label">{@render children()}</div>
|
|
53
|
-
{/if}
|
|
54
|
-
<!-- Track -->
|
|
55
|
-
<div {...api.getTrackProps()} class="{trackBase} {trackBg} {trackRounded} {trackClasses}" data-testid="progress-track">
|
|
56
|
-
<!-- Meter -->
|
|
57
|
-
<div
|
|
58
|
-
{...api.getRangeProps()}
|
|
59
|
-
class="{meterBase} {meterBg} {meterRounded} {meterTransition} {rxIndeterminate} {meterClasses}"
|
|
60
|
-
data-testid="progress-meter"
|
|
61
|
-
></div>
|
|
62
|
-
</div>
|
|
63
|
-
</figure>
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import * as progress from '@zag-js/progress';
|
|
2
|
-
import type { Snippet } from 'svelte';
|
|
3
|
-
export interface ProgressProps extends Omit<progress.Props, 'id'> {
|
|
4
|
-
/** Set root base classes */
|
|
5
|
-
base?: string;
|
|
6
|
-
/** Set root background classes */
|
|
7
|
-
bg?: string;
|
|
8
|
-
/** Set root width classes */
|
|
9
|
-
width?: string;
|
|
10
|
-
/** Set root height classes */
|
|
11
|
-
height?: string;
|
|
12
|
-
/** Set root rounded classes */
|
|
13
|
-
rounded?: string;
|
|
14
|
-
/** Set root arbitrary classes */
|
|
15
|
-
classes?: string;
|
|
16
|
-
/** Set label base classes. */
|
|
17
|
-
labelBase?: string;
|
|
18
|
-
/** Set label text classes. */
|
|
19
|
-
labelText?: string;
|
|
20
|
-
/** Set label classes. */
|
|
21
|
-
labelClasses?: string;
|
|
22
|
-
/** Set the track base classes. */
|
|
23
|
-
trackBase?: string;
|
|
24
|
-
/** Set the track background classes. */
|
|
25
|
-
trackBg?: string;
|
|
26
|
-
/** Set the track border radius classes. */
|
|
27
|
-
trackRounded?: string;
|
|
28
|
-
/** Set arbitrary track classes. */
|
|
29
|
-
trackClasses?: string;
|
|
30
|
-
/** Set meter base classes. */
|
|
31
|
-
meterBase?: string;
|
|
32
|
-
/** Set meter bg classes */
|
|
33
|
-
meterBg?: string;
|
|
34
|
-
/** Set meter rounded classes. */
|
|
35
|
-
meterRounded?: string;
|
|
36
|
-
/** Set meter transition classes. */
|
|
37
|
-
meterTransition?: string;
|
|
38
|
-
/** Set meter animation classes for indeterminate mode. (value === undefined) */
|
|
39
|
-
meterAnimate?: string;
|
|
40
|
-
/** Set meter arbitrary classes. */
|
|
41
|
-
meterClasses?: string;
|
|
42
|
-
/** Set the label */
|
|
43
|
-
children?: Snippet;
|
|
44
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import * as progress from '@zag-js/progress';
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as progress from '@zag-js/progress';
|
|
3
|
-
import { normalizeProps, useMachine } from '@zag-js/svelte';
|
|
4
|
-
|
|
5
|
-
import type { ProgressRingProps } from './types.js';
|
|
6
|
-
|
|
7
|
-
const {
|
|
8
|
-
label,
|
|
9
|
-
showLabel = false,
|
|
10
|
-
strokeWidth = '10px',
|
|
11
|
-
strokeLinecap = 'round',
|
|
12
|
-
// Root
|
|
13
|
-
base = 'relative',
|
|
14
|
-
size = 'size-32',
|
|
15
|
-
classes = '',
|
|
16
|
-
// Slot
|
|
17
|
-
childrenBase = 'absolute top-0 left-0 z-[1] flex justify-center items-center',
|
|
18
|
-
childrenClasses = '',
|
|
19
|
-
// SVG
|
|
20
|
-
svgBase = 'absolute top-0 left-0 size-full rounded-full',
|
|
21
|
-
svgClasses = '',
|
|
22
|
-
// Track
|
|
23
|
-
trackBase = 'fill-none',
|
|
24
|
-
trackStroke = 'stroke-surface-200-800',
|
|
25
|
-
trackClasses = '',
|
|
26
|
-
// Meter
|
|
27
|
-
meterBase = 'fill-none',
|
|
28
|
-
meterStroke = 'stroke-primary-500',
|
|
29
|
-
meterTransition = 'transition-[stroke-dashoffset] transition-[stroke-dashoffset]',
|
|
30
|
-
meterAnimate = 'animate-ring-indeterminate',
|
|
31
|
-
meterDuration = 'duration-200',
|
|
32
|
-
meterClasses = '',
|
|
33
|
-
// Label
|
|
34
|
-
labelBase = '',
|
|
35
|
-
labelFill = 'fill-surface-950-50',
|
|
36
|
-
labelFontSize = 24, // px
|
|
37
|
-
labelFontWeight = 'bold',
|
|
38
|
-
labelClasses = '',
|
|
39
|
-
// Snippets
|
|
40
|
-
children,
|
|
41
|
-
// Zag
|
|
42
|
-
...zagProps
|
|
43
|
-
}: ProgressRingProps = $props();
|
|
44
|
-
|
|
45
|
-
// Zag
|
|
46
|
-
const id = $props.id();
|
|
47
|
-
const service = useMachine(progress.machine, () => ({
|
|
48
|
-
id: id,
|
|
49
|
-
...zagProps
|
|
50
|
-
}));
|
|
51
|
-
const api = $derived(progress.connect(service, normalizeProps));
|
|
52
|
-
|
|
53
|
-
// Reactive Classes
|
|
54
|
-
const rxAnimCircle = $derived(api.indeterminate ? 'animate-spin' : '');
|
|
55
|
-
const rxAnimMeter = $derived(api.indeterminate ? meterAnimate : '');
|
|
56
|
-
</script>
|
|
57
|
-
|
|
58
|
-
<!-- @component A circular progress bar. -->
|
|
59
|
-
|
|
60
|
-
<figure {...api.getRootProps()} class="{base} {size} {classes}" data-testid="progress-ring">
|
|
61
|
-
<!-- Children -->
|
|
62
|
-
<div {...api.getLabelProps()} class="{childrenBase} {size} {childrenClasses}" data-testid="progress-ring-children">
|
|
63
|
-
{@render children?.()}
|
|
64
|
-
</div>
|
|
65
|
-
<!-- SVG -->
|
|
66
|
-
<svg
|
|
67
|
-
{...api.getCircleProps()}
|
|
68
|
-
viewBox="0 0 100 100"
|
|
69
|
-
class="{svgBase} {svgClasses} {rxAnimCircle}"
|
|
70
|
-
style="--size:100px;--thickness:{strokeWidth};"
|
|
71
|
-
data-testid="progress-ring-svg"
|
|
72
|
-
>
|
|
73
|
-
<!-- Track -->
|
|
74
|
-
<circle {...api.getCircleTrackProps()} class="{trackBase} {trackStroke} {trackClasses}" data-testid="progress-ring-track" />
|
|
75
|
-
<!-- Meter -->
|
|
76
|
-
<circle
|
|
77
|
-
{...api.getCircleRangeProps()}
|
|
78
|
-
class="{meterBase} {meterStroke} {meterTransition} {meterDuration} {meterClasses} {rxAnimMeter}"
|
|
79
|
-
stroke-linecap={strokeLinecap}
|
|
80
|
-
data-testid="progress-ring-meter"
|
|
81
|
-
/>
|
|
82
|
-
<!-- Label -->
|
|
83
|
-
{#if api.value !== null && !children && showLabel}
|
|
84
|
-
<text
|
|
85
|
-
class="{labelBase} {labelFill} {labelClasses}"
|
|
86
|
-
x="50%"
|
|
87
|
-
y="50%"
|
|
88
|
-
font-size={labelFontSize}
|
|
89
|
-
font-weight={labelFontWeight}
|
|
90
|
-
text-anchor="middle"
|
|
91
|
-
dominant-baseline="central"
|
|
92
|
-
data-testid="progress-label"
|
|
93
|
-
>
|
|
94
|
-
{label ?? api.value}%
|
|
95
|
-
</text>
|
|
96
|
-
{/if}
|
|
97
|
-
</svg>
|
|
98
|
-
</figure>
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import type { Snippet } from 'svelte';
|
|
2
|
-
import * as progress from '@zag-js/progress';
|
|
3
|
-
export interface ProgressRingProps extends Omit<progress.Props, 'id'> {
|
|
4
|
-
/** Set the text for the scalable label */
|
|
5
|
-
label?: string;
|
|
6
|
-
/** When enabled, show a text label with the percentage amount */
|
|
7
|
-
showLabel?: boolean;
|
|
8
|
-
/** Set the stroke size (ex: 15px) */
|
|
9
|
-
strokeWidth?: string;
|
|
10
|
-
/** Defines the shape of the meter */
|
|
11
|
-
strokeLinecap?: 'inherit' | 'butt' | 'round' | 'square';
|
|
12
|
-
/** Set the root base classes */
|
|
13
|
-
base?: string;
|
|
14
|
-
/** Set the root size classes */
|
|
15
|
-
size?: string;
|
|
16
|
-
/** Provide arbitrary classes to the root element */
|
|
17
|
-
classes?: string;
|
|
18
|
-
/** Set the nested children base classes */
|
|
19
|
-
childrenBase?: string;
|
|
20
|
-
/** Provide arbitrary classes to the nested children. */
|
|
21
|
-
childrenClasses?: string;
|
|
22
|
-
/** Set the SVG element base classes */
|
|
23
|
-
svgBase?: string;
|
|
24
|
-
/** Provide arbitrary classes to the SVG element */
|
|
25
|
-
svgClasses?: string;
|
|
26
|
-
/** Set the track base classes */
|
|
27
|
-
trackBase?: string;
|
|
28
|
-
/** Set the track stroke color classes */
|
|
29
|
-
trackStroke?: string;
|
|
30
|
-
/** Provide arbitrary classes to the track element */
|
|
31
|
-
trackClasses?: string;
|
|
32
|
-
/** Set the meter base classes */
|
|
33
|
-
meterBase?: string;
|
|
34
|
-
/** Set the meter stroke color classes */
|
|
35
|
-
meterStroke?: string;
|
|
36
|
-
/** Set the meter transition classes */
|
|
37
|
-
meterTransition?: string;
|
|
38
|
-
/** Set the meter animation classes */
|
|
39
|
-
meterAnimate?: string;
|
|
40
|
-
/** Set the meter transition duration classes */
|
|
41
|
-
meterDuration?: string;
|
|
42
|
-
/** Provide arbitrary classes to the meter element */
|
|
43
|
-
meterClasses?: string;
|
|
44
|
-
/** Set the label classes */
|
|
45
|
-
labelBase?: string;
|
|
46
|
-
/** Set the label fill color classes */
|
|
47
|
-
labelFill?: string;
|
|
48
|
-
/** Set the label font size */
|
|
49
|
-
labelFontSize?: number;
|
|
50
|
-
/** Set the label font weight */
|
|
51
|
-
labelFontWeight?: string;
|
|
52
|
-
/** Provide arbitrary classes to the label element */
|
|
53
|
-
labelClasses?: string;
|
|
54
|
-
/** The default child slot. */
|
|
55
|
-
children?: Snippet;
|
|
56
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import * as progress from '@zag-js/progress';
|