sv5ui 1.1.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/README.md +6 -0
  2. package/dist/Alert/Alert.svelte +33 -22
  3. package/dist/Alert/Alert.svelte.d.ts +1 -1
  4. package/dist/Alert/alert.types.d.ts +4 -0
  5. package/dist/Avatar/Avatar.svelte +72 -46
  6. package/dist/Avatar/avatar.types.d.ts +36 -3
  7. package/dist/Avatar/avatar.variants.d.ts +138 -0
  8. package/dist/Avatar/avatar.variants.js +23 -12
  9. package/dist/Avatar/index.d.ts +1 -1
  10. package/dist/AvatarGroup/AvatarGroup.svelte +11 -6
  11. package/dist/AvatarGroup/AvatarGroup.svelte.d.ts +1 -1
  12. package/dist/AvatarGroup/avatar-group.types.d.ts +18 -3
  13. package/dist/AvatarGroup/avatar-group.variants.d.ts +85 -0
  14. package/dist/AvatarGroup/avatar-group.variants.js +19 -29
  15. package/dist/Badge/Badge.svelte +4 -3
  16. package/dist/Badge/Badge.svelte.d.ts +1 -1
  17. package/dist/Badge/badge.types.d.ts +9 -0
  18. package/dist/Breadcrumb/Breadcrumb.svelte +20 -7
  19. package/dist/Breadcrumb/Breadcrumb.svelte.d.ts +1 -1
  20. package/dist/Breadcrumb/breadcrumb.types.d.ts +5 -1
  21. package/dist/Breadcrumb/breadcrumb.variants.d.ts +15 -5
  22. package/dist/Breadcrumb/breadcrumb.variants.js +7 -3
  23. package/dist/Button/Button.svelte +71 -16
  24. package/dist/Button/Button.svelte.d.ts +0 -1
  25. package/dist/Button/button.types.d.ts +61 -2
  26. package/dist/Calendar/Calendar.svelte +4 -0
  27. package/dist/Calendar/Calendar.svelte.d.ts +1 -1
  28. package/dist/Calendar/calendar.types.d.ts +4 -0
  29. package/dist/Card/Card.svelte +5 -4
  30. package/dist/Card/Card.svelte.d.ts +1 -1
  31. package/dist/Card/card.types.d.ts +5 -1
  32. package/dist/Checkbox/Checkbox.svelte +37 -11
  33. package/dist/Checkbox/Checkbox.svelte.d.ts +1 -1
  34. package/dist/Checkbox/checkbox.types.d.ts +16 -1
  35. package/dist/Checkbox/checkbox.variants.d.ts +90 -0
  36. package/dist/Checkbox/checkbox.variants.js +73 -4
  37. package/dist/CheckboxGroup/CheckboxGroup.svelte +215 -0
  38. package/dist/CheckboxGroup/CheckboxGroup.svelte.d.ts +5 -0
  39. package/dist/CheckboxGroup/checkbox-group.types.d.ts +130 -0
  40. package/dist/CheckboxGroup/checkbox-group.types.js +1 -0
  41. package/dist/CheckboxGroup/checkbox-group.variants.d.ts +553 -0
  42. package/dist/CheckboxGroup/checkbox-group.variants.js +231 -0
  43. package/dist/CheckboxGroup/index.d.ts +2 -0
  44. package/dist/CheckboxGroup/index.js +1 -0
  45. package/dist/Chip/Chip.svelte +3 -2
  46. package/dist/Chip/Chip.svelte.d.ts +1 -1
  47. package/dist/Chip/chip.types.d.ts +5 -1
  48. package/dist/Chip/chip.variants.d.ts +135 -45
  49. package/dist/Chip/chip.variants.js +9 -9
  50. package/dist/ContextMenu/ContextMenu.svelte +87 -77
  51. package/dist/ContextMenu/ContextMenu.svelte.d.ts +1 -1
  52. package/dist/ContextMenu/context-menu.types.d.ts +9 -3
  53. package/dist/ContextMenu/context-menu.types.js +1 -1
  54. package/dist/ContextMenu/context-menu.variants.d.ts +74 -160
  55. package/dist/ContextMenu/context-menu.variants.js +63 -95
  56. package/dist/DropdownMenu/DropdownMenu.svelte +37 -43
  57. package/dist/DropdownMenu/DropdownMenu.svelte.d.ts +1 -1
  58. package/dist/DropdownMenu/dropdown-menu.types.d.ts +9 -3
  59. package/dist/DropdownMenu/dropdown-menu.types.js +1 -1
  60. package/dist/DropdownMenu/dropdown-menu.variants.d.ts +79 -230
  61. package/dist/DropdownMenu/dropdown-menu.variants.js +68 -111
  62. package/dist/DropdownMenu/index.d.ts +1 -1
  63. package/dist/Empty/Empty.svelte +68 -33
  64. package/dist/Empty/Empty.svelte.d.ts +1 -1
  65. package/dist/Empty/empty.types.d.ts +26 -9
  66. package/dist/Empty/empty.variants.d.ts +150 -130
  67. package/dist/Empty/empty.variants.js +33 -324
  68. package/dist/FieldGroup/FieldGroup.svelte +11 -6
  69. package/dist/FieldGroup/FieldGroup.svelte.d.ts +1 -1
  70. package/dist/FieldGroup/field-group.types.d.ts +4 -0
  71. package/dist/FileUpload/FileUpload.svelte +561 -0
  72. package/dist/FileUpload/FileUpload.svelte.d.ts +8 -0
  73. package/dist/FileUpload/file-upload.types.d.ts +164 -0
  74. package/dist/FileUpload/file-upload.types.js +1 -0
  75. package/dist/FileUpload/file-upload.variants.d.ts +397 -0
  76. package/dist/FileUpload/file-upload.variants.js +224 -0
  77. package/dist/FileUpload/index.d.ts +2 -0
  78. package/dist/FileUpload/index.js +1 -0
  79. package/dist/FormField/FormField.svelte +17 -18
  80. package/dist/FormField/FormField.svelte.d.ts +1 -1
  81. package/dist/FormField/form-field.types.d.ts +4 -0
  82. package/dist/Icon/Icon.svelte +13 -7
  83. package/dist/Icon/icon.types.d.ts +18 -9
  84. package/dist/Input/Input.svelte +30 -29
  85. package/dist/Kbd/Kbd.svelte +13 -3
  86. package/dist/Kbd/Kbd.svelte.d.ts +1 -1
  87. package/dist/Kbd/index.d.ts +1 -1
  88. package/dist/Kbd/kbd.types.d.ts +15 -1
  89. package/dist/Kbd/kbd.variants.d.ts +92 -30
  90. package/dist/Kbd/kbd.variants.js +55 -35
  91. package/dist/Kbd/useKbd.svelte.d.ts +2 -2
  92. package/dist/Kbd/useKbd.svelte.js +34 -41
  93. package/dist/Link/Link.svelte +69 -24
  94. package/dist/Link/Link.svelte.d.ts +1 -1
  95. package/dist/Link/link.types.d.ts +26 -8
  96. package/dist/Link/link.variants.d.ts +35 -60
  97. package/dist/Link/link.variants.js +8 -110
  98. package/dist/Modal/Modal.svelte +9 -1
  99. package/dist/Modal/modal.types.d.ts +5 -0
  100. package/dist/Modal/modal.variants.d.ts +5 -0
  101. package/dist/Modal/modal.variants.js +1 -0
  102. package/dist/Pagination/Pagination.svelte +143 -94
  103. package/dist/Pagination/Pagination.svelte.d.ts +1 -1
  104. package/dist/Pagination/index.d.ts +1 -1
  105. package/dist/Pagination/pagination.types.d.ts +21 -2
  106. package/dist/Pagination/pagination.variants.d.ts +21 -387
  107. package/dist/Pagination/pagination.variants.js +63 -59
  108. package/dist/PinInput/PinInput.svelte +150 -0
  109. package/dist/PinInput/PinInput.svelte.d.ts +6 -0
  110. package/dist/PinInput/index.d.ts +2 -0
  111. package/dist/PinInput/index.js +1 -0
  112. package/dist/PinInput/pin-input.types.d.ts +99 -0
  113. package/dist/PinInput/pin-input.types.js +1 -0
  114. package/dist/PinInput/pin-input.variants.d.ts +303 -0
  115. package/dist/PinInput/pin-input.variants.js +196 -0
  116. package/dist/Popover/Popover.svelte +9 -12
  117. package/dist/Popover/Popover.svelte.d.ts +1 -1
  118. package/dist/Popover/popover.types.d.ts +4 -0
  119. package/dist/Popover/popover.variants.d.ts +5 -75
  120. package/dist/Popover/popover.variants.js +6 -16
  121. package/dist/Progress/Progress.svelte +58 -30
  122. package/dist/Progress/progress.types.d.ts +9 -1
  123. package/dist/Progress/progress.variants.d.ts +55 -25
  124. package/dist/Progress/progress.variants.js +34 -28
  125. package/dist/RadioGroup/RadioGroup.svelte +105 -61
  126. package/dist/RadioGroup/RadioGroup.svelte.d.ts +1 -1
  127. package/dist/RadioGroup/radio-group.types.d.ts +16 -1
  128. package/dist/RadioGroup/radio-group.variants.d.ts +90 -0
  129. package/dist/RadioGroup/radio-group.variants.js +73 -4
  130. package/dist/Select/Select.svelte +9 -6
  131. package/dist/Select/Select.svelte.d.ts +1 -1
  132. package/dist/Select/select.types.d.ts +4 -0
  133. package/dist/SelectMenu/SelectMenu.svelte +436 -0
  134. package/dist/SelectMenu/SelectMenu.svelte.d.ts +5 -0
  135. package/dist/SelectMenu/index.d.ts +2 -0
  136. package/dist/SelectMenu/index.js +1 -0
  137. package/dist/SelectMenu/select-menu.types.d.ts +262 -0
  138. package/dist/SelectMenu/select-menu.types.js +1 -0
  139. package/dist/SelectMenu/select-menu.variants.d.ts +759 -0
  140. package/dist/SelectMenu/select-menu.variants.js +33 -0
  141. package/dist/Separator/Separator.svelte +1 -2
  142. package/dist/Separator/separator.variants.d.ts +1 -5
  143. package/dist/Separator/separator.variants.js +2 -2
  144. package/dist/Skeleton/Skeleton.svelte +18 -2
  145. package/dist/Skeleton/Skeleton.svelte.d.ts +1 -1
  146. package/dist/Skeleton/skeleton.types.d.ts +10 -1
  147. package/dist/Slideover/Slideover.svelte +9 -1
  148. package/dist/Slideover/slideover.types.d.ts +5 -0
  149. package/dist/Slideover/slideover.variants.d.ts +20 -5
  150. package/dist/Slideover/slideover.variants.js +4 -29
  151. package/dist/Slider/Slider.svelte +135 -0
  152. package/dist/Slider/Slider.svelte.d.ts +6 -0
  153. package/dist/Slider/index.d.ts +2 -0
  154. package/dist/Slider/index.js +1 -0
  155. package/dist/Slider/slider.types.d.ts +55 -0
  156. package/dist/Slider/slider.types.js +1 -0
  157. package/dist/Slider/slider.variants.d.ts +383 -0
  158. package/dist/Slider/slider.variants.js +102 -0
  159. package/dist/Switch/Switch.svelte +32 -31
  160. package/dist/Switch/Switch.svelte.d.ts +1 -1
  161. package/dist/Switch/switch.types.d.ts +6 -1
  162. package/dist/Switch/switch.variants.js +6 -6
  163. package/dist/Tabs/Tabs.svelte +6 -9
  164. package/dist/Tabs/Tabs.svelte.d.ts +1 -1
  165. package/dist/Tabs/tabs.types.d.ts +4 -0
  166. package/dist/Tabs/tabs.variants.js +2 -0
  167. package/dist/Textarea/Textarea.svelte +26 -25
  168. package/dist/ThemeModeButton/theme-mode-button.types.d.ts +7 -2
  169. package/dist/Timeline/Timeline.svelte +62 -19
  170. package/dist/Timeline/Timeline.svelte.d.ts +1 -1
  171. package/dist/Timeline/index.d.ts +1 -1
  172. package/dist/Timeline/timeline.types.d.ts +8 -0
  173. package/dist/Tooltip/Tooltip.svelte +12 -10
  174. package/dist/Tooltip/Tooltip.svelte.d.ts +1 -1
  175. package/dist/Tooltip/tooltip.types.d.ts +8 -4
  176. package/dist/Tooltip/tooltip.variants.d.ts +10 -75
  177. package/dist/Tooltip/tooltip.variants.js +8 -17
  178. package/dist/User/User.svelte +13 -9
  179. package/dist/User/User.svelte.d.ts +1 -1
  180. package/dist/User/user.types.d.ts +4 -0
  181. package/dist/User/user.variants.d.ts +60 -0
  182. package/dist/User/user.variants.js +13 -1
  183. package/dist/config.d.ts +8 -0
  184. package/dist/config.js +9 -1
  185. package/dist/index.d.ts +5 -0
  186. package/dist/index.js +5 -0
  187. package/package.json +2 -2
@@ -7,14 +7,20 @@
7
7
  <script lang="ts">
8
8
  import { Pagination } from 'bits-ui'
9
9
  import { untrack } from 'svelte'
10
- import { paginationVariants, paginationDefaults } from './pagination.variants.js'
11
- import { getComponentConfig } from '../config.js'
10
+ import {
11
+ paginationVariants,
12
+ paginationDefaults,
13
+ activeVariantColorClasses
14
+ } from './pagination.variants.js'
15
+ import { getComponentConfig, iconsDefaults } from '../config.js'
12
16
  import Icon from '../Icon/Icon.svelte'
13
17
  import ButtonComponent from '../Button/Button.svelte'
14
18
 
15
19
  const config = getComponentConfig('pagination', paginationDefaults)
20
+ const icons = getComponentConfig('icons', iconsDefaults)
16
21
 
17
22
  let {
23
+ ref = $bindable(null),
18
24
  page = $bindable(),
19
25
  defaultPage = 1,
20
26
  total = 0,
@@ -25,12 +31,15 @@
25
31
  disabled = false,
26
32
  onPageChange,
27
33
  size = config.defaultVariants.size ?? 'md',
34
+ variant = config.defaultVariants.variant ?? 'ghost',
35
+ color = config.defaultVariants.color ?? 'surface',
28
36
  activeColor = config.defaultVariants.activeColor ?? 'primary',
29
- firstIcon = 'lucide:chevrons-left',
30
- prevIcon = 'lucide:chevron-left',
31
- nextIcon = 'lucide:chevron-right',
32
- lastIcon = 'lucide:chevrons-right',
33
- ellipsisIcon = 'lucide:ellipsis',
37
+ activeVariant = config.defaultVariants.activeVariant ?? 'solid',
38
+ firstIcon = icons.chevronsLeft,
39
+ prevIcon = icons.chevronLeft,
40
+ nextIcon = icons.chevronRight,
41
+ lastIcon = icons.chevronsRight,
42
+ ellipsisIcon = icons.ellipsis,
34
43
  ui,
35
44
  class: className,
36
45
  firstSlot,
@@ -51,45 +60,24 @@
51
60
  const prevDisabled = $derived(disabled || isFirstPage)
52
61
  const nextDisabled = $derived(disabled || isLastPage)
53
62
 
54
- const variantSlots = $derived(paginationVariants({ size, activeColor, disabled }))
55
-
56
- function resolveSlot(slot: keyof typeof variantSlots, extra?: unknown) {
57
- const configSlot = config.slots[slot as keyof typeof config.slots]
58
- const uiSlot = ui?.[slot as keyof typeof ui]
59
- return (variantSlots[slot] as (opts: { class: unknown[] }) => string)({
60
- class: [configSlot, extra, uiSlot]
61
- })
62
- }
63
-
64
- const baseClasses = $derived.by(() => ({
65
- root: resolveSlot('root', className),
66
- list: resolveSlot('list'),
67
- item: resolveSlot('item'),
68
- ellipsis: resolveSlot('ellipsis'),
69
- ellipsisIcon: resolveSlot('ellipsisIcon')
70
- }))
71
-
72
- const controlClasses = $derived.by(() =>
73
- showControls
74
- ? {
75
- prev: resolveSlot('prev'),
76
- next: resolveSlot('next'),
77
- prevIcon: resolveSlot('prevIcon'),
78
- nextIcon: resolveSlot('nextIcon')
79
- }
80
- : null
81
- )
82
-
83
- const edgeClasses = $derived.by(() =>
84
- showEdges
85
- ? {
86
- first: resolveSlot('first'),
87
- last: resolveSlot('last'),
88
- firstIcon: resolveSlot('firstIcon'),
89
- lastIcon: resolveSlot('lastIcon')
90
- }
91
- : null
63
+ const variantSlots = $derived(paginationVariants({ size, disabled }))
64
+ const activeCls = $derived(
65
+ activeVariantColorClasses[activeVariant]?.[activeColor] ??
66
+ activeVariantColorClasses.solid.primary
92
67
  )
68
+ const classes = $derived({
69
+ root: variantSlots.root({ class: [config.slots.root, className] }),
70
+ list: variantSlots.list({ class: [config.slots.list, ui?.list] }),
71
+ item: variantSlots.item({ class: [config.slots.item, activeCls, ui?.item] }),
72
+ ellipsis: variantSlots.ellipsis({ class: [config.slots.ellipsis, ui?.ellipsis] }),
73
+ ellipsisIcon: variantSlots.ellipsisIcon({
74
+ class: [config.slots.ellipsisIcon, ui?.ellipsisIcon]
75
+ }),
76
+ first: variantSlots.first({ class: [config.slots.first, ui?.first] }),
77
+ prev: variantSlots.prev({ class: [config.slots.prev, ui?.prev] }),
78
+ next: variantSlots.next({ class: [config.slots.next, ui?.next] }),
79
+ last: variantSlots.last({ class: [config.slots.last, ui?.last] })
80
+ })
93
81
 
94
82
  function handlePageChange(newPage: number) {
95
83
  page = newPage
@@ -106,54 +94,85 @@
106
94
  </script>
107
95
 
108
96
  <Pagination.Root
97
+ bind:ref
109
98
  count={total}
110
99
  perPage={itemsPerPage}
111
100
  {siblingCount}
112
101
  {page}
113
102
  onPageChange={handlePageChange}
114
- class={baseClasses.root}
103
+ class={classes.root}
115
104
  >
116
105
  {#snippet children({ pages })}
117
- <div class={baseClasses.list}>
118
- {#if edgeClasses}
119
- <ButtonComponent
120
- variant="ghost"
121
- color="surface"
122
- square
123
- class={edgeClasses.first}
124
- disabled={prevDisabled}
125
- aria-label="First page"
126
- onclick={goToFirst}
127
- >
128
- {#if firstSlot}
106
+ <div class={classes.list}>
107
+ {#if showEdges}
108
+ {#if firstSlot}
109
+ <ButtonComponent
110
+ {variant}
111
+ {color}
112
+ square
113
+ {size}
114
+ class={classes.first}
115
+ disabled={prevDisabled}
116
+ aria-label="First page"
117
+ onclick={goToFirst}
118
+ >
129
119
  {@render firstSlot({ page: page!, disabled: prevDisabled })}
130
- {:else}
131
- <Icon name={firstIcon} class={edgeClasses.firstIcon} />
132
- {/if}
133
- </ButtonComponent>
120
+ </ButtonComponent>
121
+ {:else}
122
+ <ButtonComponent
123
+ {variant}
124
+ {color}
125
+ square
126
+ {size}
127
+ icon={firstIcon}
128
+ class={classes.first}
129
+ disabled={prevDisabled}
130
+ aria-label="First page"
131
+ onclick={goToFirst}
132
+ />
133
+ {/if}
134
134
  {/if}
135
135
 
136
- {#if controlClasses}
137
- <Pagination.PrevButton class={controlClasses.prev} disabled={prevDisabled}>
138
- {#if prevSlot}
139
- {@render prevSlot({ page: page!, disabled: prevDisabled })}
140
- {:else}
141
- <Icon name={prevIcon} class={controlClasses.prevIcon} />
142
- {/if}
136
+ {#if showControls}
137
+ <Pagination.PrevButton disabled={prevDisabled}>
138
+ {#snippet child({ props })}
139
+ {#if prevSlot}
140
+ <ButtonComponent
141
+ {...props}
142
+ {variant}
143
+ {color}
144
+ square
145
+ {size}
146
+ class={classes.prev}
147
+ >
148
+ {@render prevSlot({ page: page!, disabled: prevDisabled })}
149
+ </ButtonComponent>
150
+ {:else}
151
+ <ButtonComponent
152
+ {...props}
153
+ {variant}
154
+ {color}
155
+ square
156
+ {size}
157
+ icon={prevIcon}
158
+ class={classes.prev}
159
+ />
160
+ {/if}
161
+ {/snippet}
143
162
  </Pagination.PrevButton>
144
163
  {/if}
145
164
 
146
165
  {#each pages as pageItem (pageItem.key)}
147
166
  {#if pageItem.type === 'ellipsis'}
148
- <span class={baseClasses.ellipsis}>
167
+ <span class={classes.ellipsis}>
149
168
  {#if ellipsisSlot}
150
169
  {@render ellipsisSlot()}
151
170
  {:else}
152
- <Icon name={ellipsisIcon} class={baseClasses.ellipsisIcon} />
171
+ <Icon name={ellipsisIcon} class={classes.ellipsisIcon} />
153
172
  {/if}
154
173
  </span>
155
174
  {:else}
156
- <Pagination.Page page={pageItem} class={baseClasses.item} {disabled}>
175
+ <Pagination.Page page={pageItem} class={classes.item} {disabled}>
157
176
  {#if itemSlot}
158
177
  {@render itemSlot({
159
178
  page: pageItem.value,
@@ -166,32 +185,62 @@
166
185
  {/if}
167
186
  {/each}
168
187
 
169
- {#if controlClasses}
170
- <Pagination.NextButton class={controlClasses.next} disabled={nextDisabled}>
171
- {#if nextSlot}
172
- {@render nextSlot({ page: page!, disabled: nextDisabled })}
173
- {:else}
174
- <Icon name={nextIcon} class={controlClasses.nextIcon} />
175
- {/if}
188
+ {#if showControls}
189
+ <Pagination.NextButton disabled={nextDisabled}>
190
+ {#snippet child({ props })}
191
+ {#if nextSlot}
192
+ <ButtonComponent
193
+ {...props}
194
+ {variant}
195
+ {color}
196
+ square
197
+ {size}
198
+ class={classes.next}
199
+ >
200
+ {@render nextSlot({ page: page!, disabled: nextDisabled })}
201
+ </ButtonComponent>
202
+ {:else}
203
+ <ButtonComponent
204
+ {...props}
205
+ {variant}
206
+ {color}
207
+ square
208
+ {size}
209
+ icon={nextIcon}
210
+ class={classes.next}
211
+ />
212
+ {/if}
213
+ {/snippet}
176
214
  </Pagination.NextButton>
177
215
  {/if}
178
216
 
179
- {#if edgeClasses}
180
- <ButtonComponent
181
- variant="ghost"
182
- color="surface"
183
- square
184
- class={edgeClasses.last}
185
- disabled={nextDisabled}
186
- aria-label="Last page"
187
- onclick={goToLast}
188
- >
189
- {#if lastSlot}
217
+ {#if showEdges}
218
+ {#if lastSlot}
219
+ <ButtonComponent
220
+ {variant}
221
+ {color}
222
+ square
223
+ {size}
224
+ class={classes.last}
225
+ disabled={nextDisabled}
226
+ aria-label="Last page"
227
+ onclick={goToLast}
228
+ >
190
229
  {@render lastSlot({ page: page!, disabled: nextDisabled })}
191
- {:else}
192
- <Icon name={lastIcon} class={edgeClasses.lastIcon} />
193
- {/if}
194
- </ButtonComponent>
230
+ </ButtonComponent>
231
+ {:else}
232
+ <ButtonComponent
233
+ {variant}
234
+ {color}
235
+ square
236
+ {size}
237
+ icon={lastIcon}
238
+ class={classes.last}
239
+ disabled={nextDisabled}
240
+ aria-label="Last page"
241
+ onclick={goToLast}
242
+ />
243
+ {/if}
195
244
  {/if}
196
245
  </div>
197
246
  {/snippet}
@@ -1,6 +1,6 @@
1
1
  import type { PaginationProps } from './pagination.types.js';
2
2
  export type Props = PaginationProps;
3
3
  import { Pagination } from 'bits-ui';
4
- declare const Pagination: import("svelte").Component<PaginationProps, {}, "page">;
4
+ declare const Pagination: import("svelte").Component<PaginationProps, {}, "ref" | "page">;
5
5
  type Pagination = ReturnType<typeof Pagination>;
6
6
  export default Pagination;
@@ -1,2 +1,2 @@
1
1
  export { default as Pagination } from './Pagination.svelte';
2
- export type { PaginationProps } from './pagination.types.js';
2
+ export type { PaginationProps, PaginationNavSlotProps, PaginationItemSlotProps } from './pagination.types.js';
@@ -1,6 +1,7 @@
1
1
  import type { Snippet } from 'svelte';
2
2
  import type { ClassNameValue } from 'tailwind-merge';
3
3
  import type { PaginationSlots, PaginationVariantProps } from './pagination.variants.js';
4
+ import type { ButtonProps } from '../Button/button.types.js';
4
5
  /**
5
6
  * Props passed to navigation button snippet slots (first, prev, next, last).
6
7
  */
@@ -38,6 +39,10 @@ export interface PaginationItemSlotProps {
38
39
  * @see https://bits-ui.com/docs/components/pagination
39
40
  */
40
41
  export interface PaginationProps {
42
+ /**
43
+ * Bindable reference to the root DOM element.
44
+ */
45
+ ref?: HTMLElement | null;
41
46
  /**
42
47
  * The currently active page number.
43
48
  * Use `bind:page` for two-way binding.
@@ -90,11 +95,26 @@ export interface PaginationProps {
90
95
  * @default 'md'
91
96
  */
92
97
  size?: NonNullable<PaginationVariantProps['size']>;
98
+ /**
99
+ * Button variant for navigation buttons (first, prev, next, last).
100
+ * @default 'ghost'
101
+ */
102
+ variant?: NonNullable<ButtonProps['variant']>;
103
+ /**
104
+ * Button color for navigation buttons (first, prev, next, last).
105
+ * @default 'surface'
106
+ */
107
+ color?: NonNullable<ButtonProps['color']>;
93
108
  /**
94
109
  * Color applied to the currently selected page button.
95
110
  * @default 'primary'
96
111
  */
97
- activeColor?: NonNullable<PaginationVariantProps['activeColor']>;
112
+ activeColor?: NonNullable<ButtonProps['color']>;
113
+ /**
114
+ * Variant style applied to the currently selected page button.
115
+ * @default 'solid'
116
+ */
117
+ activeVariant?: NonNullable<ButtonProps['variant']>;
98
118
  /**
99
119
  * Icon for the "first page" button.
100
120
  * @default 'lucide:chevrons-left'
@@ -132,7 +152,6 @@ export interface PaginationProps {
132
152
  * ui={{
133
153
  * list: 'gap-2',
134
154
  * item: 'rounded-full',
135
- * prev: 'rounded-full'
136
155
  * }}
137
156
  * ```
138
157
  */