@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.
Files changed (150) hide show
  1. package/dist/{composed → components}/accordion/anatomy/accordion-content.svelte +2 -1
  2. package/dist/{composed → components}/accordion/anatomy/accordion-heading.svelte +12 -2
  3. package/dist/{composed → components}/accordion/anatomy/accordion-indicator.svelte +10 -1
  4. package/dist/{composed → components}/accordion/anatomy/accordion-item.svelte +2 -1
  5. package/dist/{composed → components}/accordion/anatomy/accordion-root.svelte +2 -1
  6. package/dist/{composed → components}/accordion/anatomy/accordion-trigger.svelte +2 -2
  7. package/dist/{composed → components}/avatar/anatomy/avatar-fallback.svelte +2 -1
  8. package/dist/{composed → components}/avatar/anatomy/avatar-image.svelte +2 -1
  9. package/dist/{composed → components}/avatar/anatomy/avatar-root.svelte +2 -1
  10. package/dist/index.css +2 -0
  11. package/dist/index.d.ts +2 -21
  12. package/dist/index.js +2 -29
  13. package/package.json +31 -38
  14. package/dist/components/Accordion/Accordion.svelte +0 -55
  15. package/dist/components/Accordion/Accordion.svelte.d.ts +0 -5
  16. package/dist/components/Accordion/AccordionItem.svelte +0 -90
  17. package/dist/components/Accordion/AccordionItem.svelte.d.ts +0 -5
  18. package/dist/components/Accordion/context.d.ts +0 -2
  19. package/dist/components/Accordion/context.js +0 -3
  20. package/dist/components/Accordion/index.d.ts +0 -4
  21. package/dist/components/Accordion/index.js +0 -3
  22. package/dist/components/Accordion/types.d.ts +0 -74
  23. package/dist/components/AppBar/AppBar.svelte +0 -72
  24. package/dist/components/AppBar/AppBar.svelte.d.ts +0 -5
  25. package/dist/components/AppBar/types.d.ts +0 -61
  26. package/dist/components/AppBar/types.js +0 -1
  27. package/dist/components/Avatar/Avatar.svelte +0 -68
  28. package/dist/components/Avatar/Avatar.svelte.d.ts +0 -5
  29. package/dist/components/Avatar/types.d.ts +0 -39
  30. package/dist/components/Avatar/types.js +0 -1
  31. package/dist/components/Combobox/Combobox.svelte +0 -154
  32. package/dist/components/Combobox/Combobox.svelte.d.ts +0 -18
  33. package/dist/components/Combobox/types.d.ts +0 -66
  34. package/dist/components/Combobox/types.js +0 -1
  35. package/dist/components/FileUpload/FileUpload.svelte +0 -132
  36. package/dist/components/FileUpload/FileUpload.svelte.d.ts +0 -5
  37. package/dist/components/FileUpload/types.d.ts +0 -74
  38. package/dist/components/FileUpload/types.js +0 -1
  39. package/dist/components/Modal/Modal.svelte +0 -87
  40. package/dist/components/Modal/Modal.svelte.d.ts +0 -4
  41. package/dist/components/Modal/types.d.ts +0 -58
  42. package/dist/components/Modal/types.js +0 -1
  43. package/dist/components/Navigation/NavBar.svelte +0 -48
  44. package/dist/components/Navigation/NavBar.svelte.d.ts +0 -5
  45. package/dist/components/Navigation/NavRail.svelte +0 -90
  46. package/dist/components/Navigation/NavRail.svelte.d.ts +0 -5
  47. package/dist/components/Navigation/NavTile.svelte +0 -87
  48. package/dist/components/Navigation/NavTile.svelte.d.ts +0 -5
  49. package/dist/components/Navigation/context.d.ts +0 -2
  50. package/dist/components/Navigation/context.js +0 -6
  51. package/dist/components/Navigation/index.d.ts +0 -6
  52. package/dist/components/Navigation/index.js +0 -4
  53. package/dist/components/Navigation/types.d.ts +0 -132
  54. package/dist/components/Navigation/types.js +0 -1
  55. package/dist/components/Pagination/Pagination.svelte +0 -146
  56. package/dist/components/Pagination/Pagination.svelte.d.ts +0 -4
  57. package/dist/components/Pagination/types.d.ts +0 -56
  58. package/dist/components/Pagination/types.js +0 -1
  59. package/dist/components/Popover/Popover.svelte +0 -74
  60. package/dist/components/Popover/Popover.svelte.d.ts +0 -4
  61. package/dist/components/Popover/types.d.ts +0 -45
  62. package/dist/components/Popover/types.js +0 -1
  63. package/dist/components/Progress/Progress.svelte +0 -63
  64. package/dist/components/Progress/Progress.svelte.d.ts +0 -5
  65. package/dist/components/Progress/types.d.ts +0 -44
  66. package/dist/components/Progress/types.js +0 -1
  67. package/dist/components/ProgressRing/ProgressRing.svelte +0 -98
  68. package/dist/components/ProgressRing/ProgressRing.svelte.d.ts +0 -5
  69. package/dist/components/ProgressRing/types.d.ts +0 -56
  70. package/dist/components/ProgressRing/types.js +0 -1
  71. package/dist/components/Rating/Rating.svelte +0 -135
  72. package/dist/components/Rating/Rating.svelte.d.ts +0 -5
  73. package/dist/components/Rating/index.d.ts +0 -2
  74. package/dist/components/Rating/index.js +0 -2
  75. package/dist/components/Rating/types.d.ts +0 -36
  76. package/dist/components/Rating/types.js +0 -1
  77. package/dist/components/Segment/Segment.svelte +0 -77
  78. package/dist/components/Segment/Segment.svelte.d.ts +0 -5
  79. package/dist/components/Segment/SegmentItem.svelte +0 -40
  80. package/dist/components/Segment/SegmentItem.svelte.d.ts +0 -5
  81. package/dist/components/Segment/context.d.ts +0 -2
  82. package/dist/components/Segment/context.js +0 -6
  83. package/dist/components/Segment/index.d.ts +0 -4
  84. package/dist/components/Segment/index.js +0 -3
  85. package/dist/components/Segment/types.d.ts +0 -64
  86. package/dist/components/Segment/types.js +0 -1
  87. package/dist/components/Slider/Slider.svelte +0 -105
  88. package/dist/components/Slider/Slider.svelte.d.ts +0 -4
  89. package/dist/components/Slider/types.d.ts +0 -68
  90. package/dist/components/Slider/types.js +0 -1
  91. package/dist/components/Switch/Switch.svelte +0 -102
  92. package/dist/components/Switch/Switch.svelte.d.ts +0 -5
  93. package/dist/components/Switch/types.d.ts +0 -64
  94. package/dist/components/Switch/types.js +0 -1
  95. package/dist/components/Tabs/Tabs.svelte +0 -59
  96. package/dist/components/Tabs/Tabs.svelte.d.ts +0 -5
  97. package/dist/components/Tabs/TabsControl.svelte +0 -51
  98. package/dist/components/Tabs/TabsControl.svelte.d.ts +0 -5
  99. package/dist/components/Tabs/TabsPanel.svelte +0 -23
  100. package/dist/components/Tabs/TabsPanel.svelte.d.ts +0 -5
  101. package/dist/components/Tabs/context.d.ts +0 -2
  102. package/dist/components/Tabs/context.js +0 -6
  103. package/dist/components/Tabs/index.d.ts +0 -5
  104. package/dist/components/Tabs/index.js +0 -4
  105. package/dist/components/Tabs/types.d.ts +0 -68
  106. package/dist/components/Tabs/types.js +0 -1
  107. package/dist/components/TagsInput/TagsInput.svelte +0 -96
  108. package/dist/components/TagsInput/TagsInput.svelte.d.ts +0 -5
  109. package/dist/components/TagsInput/types.d.ts +0 -40
  110. package/dist/components/TagsInput/types.js +0 -1
  111. package/dist/components/Toast/Toast.svelte +0 -76
  112. package/dist/components/Toast/Toast.svelte.d.ts +0 -4
  113. package/dist/components/Toast/Toaster.svelte +0 -72
  114. package/dist/components/Toast/Toaster.svelte.d.ts +0 -4
  115. package/dist/components/Toast/create-toaster.d.ts +0 -2
  116. package/dist/components/Toast/create-toaster.js +0 -4
  117. package/dist/components/Toast/types.d.ts +0 -47
  118. package/dist/components/Toast/types.js +0 -1
  119. package/dist/components/Tooltip/Tooltip.svelte +0 -78
  120. package/dist/components/Tooltip/Tooltip.svelte.d.ts +0 -4
  121. package/dist/components/Tooltip/types.d.ts +0 -47
  122. package/dist/components/Tooltip/types.js +0 -1
  123. package/dist/composed/accordion/modules/types.js +0 -1
  124. package/dist/composed/index.d.ts +0 -2
  125. package/dist/composed/index.js +0 -2
  126. /package/dist/{composed → components}/accordion/anatomy/accordion-content.svelte.d.ts +0 -0
  127. /package/dist/{composed → components}/accordion/anatomy/accordion-heading.svelte.d.ts +0 -0
  128. /package/dist/{composed → components}/accordion/anatomy/accordion-indicator.svelte.d.ts +0 -0
  129. /package/dist/{composed → components}/accordion/anatomy/accordion-item.svelte.d.ts +0 -0
  130. /package/dist/{composed → components}/accordion/anatomy/accordion-root.svelte.d.ts +0 -0
  131. /package/dist/{composed → components}/accordion/anatomy/accordion-trigger.svelte.d.ts +0 -0
  132. /package/dist/{composed → components}/accordion/index.d.ts +0 -0
  133. /package/dist/{composed → components}/accordion/index.js +0 -0
  134. /package/dist/{composed → components}/accordion/modules/anatomy.d.ts +0 -0
  135. /package/dist/{composed → components}/accordion/modules/anatomy.js +0 -0
  136. /package/dist/{composed → components}/accordion/modules/context.d.ts +0 -0
  137. /package/dist/{composed → components}/accordion/modules/context.js +0 -0
  138. /package/dist/{composed → components}/accordion/modules/types.d.ts +0 -0
  139. /package/dist/components/{Accordion → accordion/modules}/types.js +0 -0
  140. /package/dist/{composed → components}/avatar/anatomy/avatar-fallback.svelte.d.ts +0 -0
  141. /package/dist/{composed → components}/avatar/anatomy/avatar-image.svelte.d.ts +0 -0
  142. /package/dist/{composed → components}/avatar/anatomy/avatar-root.svelte.d.ts +0 -0
  143. /package/dist/{composed → components}/avatar/index.d.ts +0 -0
  144. /package/dist/{composed → components}/avatar/index.js +0 -0
  145. /package/dist/{composed → components}/avatar/modules/anatomy.d.ts +0 -0
  146. /package/dist/{composed → components}/avatar/modules/anatomy.js +0 -0
  147. /package/dist/{composed → components}/avatar/modules/context.d.ts +0 -0
  148. /package/dist/{composed → components}/avatar/modules/context.js +0 -0
  149. /package/dist/{composed → components}/avatar/modules/types.d.ts +0 -0
  150. /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}&laquo;{/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}&larr;{/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}&ctdot;{/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}&rarr;{/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}&raquo;{/if}
143
- </button>
144
- {/if}
145
- </div>
146
- {/if}
@@ -1,4 +0,0 @@
1
- import type { PaginationProps } from './types.js';
2
- declare const Pagination: import("svelte").Component<PaginationProps, {}, "">;
3
- type Pagination = ReturnType<typeof Pagination>;
4
- export default Pagination;
@@ -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,4 +0,0 @@
1
- import type { PopoverProps } from './types.js';
2
- declare const Popover: import("svelte").Component<PopoverProps, {}, "">;
3
- type Popover = ReturnType<typeof Popover>;
4
- export default Popover;
@@ -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,5 +0,0 @@
1
- import type { ProgressProps } from './types.js';
2
- /** A linear progress bar. */
3
- declare const Progress: import("svelte").Component<ProgressProps, {}, "">;
4
- type Progress = ReturnType<typeof Progress>;
5
- export default Progress;
@@ -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,5 +0,0 @@
1
- import type { ProgressRingProps } from './types.js';
2
- /** A circular progress bar. */
3
- declare const ProgressRing: import("svelte").Component<ProgressRingProps, {}, "">;
4
- type ProgressRing = ReturnType<typeof ProgressRing>;
5
- export default ProgressRing;
@@ -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';