@makolabs/ripple 2.5.9 → 3.0.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 (183) hide show
  1. package/README.md +403 -497
  2. package/dist/adapters/storage/S3Adapter.d.ts +49 -1
  3. package/dist/adapters/storage/S3Adapter.js +38 -1
  4. package/dist/adapters/storage/types.d.ts +20 -0
  5. package/dist/ai/AIChatInterface.svelte +2 -1
  6. package/dist/ai/AIChatInterface.svelte.d.ts +2 -1
  7. package/dist/ai/CodeRenderer.svelte +7 -2
  8. package/dist/ai/CodeRenderer.svelte.d.ts +2 -1
  9. package/dist/ai/ComposeDropdown.svelte +1 -1
  10. package/dist/ai/MessageBox.svelte +3 -3
  11. package/dist/ai/MessageBox.svelte.d.ts +3 -2
  12. package/dist/ai/ThinkingDisplay.svelte +4 -3
  13. package/dist/ai/ThinkingDisplay.svelte.d.ts +2 -1
  14. package/dist/ai/ai-types.d.ts +55 -1
  15. package/dist/button/Button.svelte +5 -5
  16. package/dist/button/button-types.d.ts +49 -4
  17. package/dist/button/button.d.ts +9 -9
  18. package/dist/button/button.js +6 -6
  19. package/dist/charts/Chart.svelte +8 -16
  20. package/dist/charts/chart-types.d.ts +78 -1
  21. package/dist/drawer/Drawer.svelte +6 -26
  22. package/dist/drawer/drawer-types.d.ts +33 -12
  23. package/dist/drawer/drawer.d.ts +3 -3
  24. package/dist/drawer/drawer.js +1 -1
  25. package/dist/elements/accordion/Accordion.svelte +6 -17
  26. package/dist/elements/accordion/accordion-types.d.ts +53 -6
  27. package/dist/elements/alert/Alert.svelte +3 -0
  28. package/dist/elements/badge/Badge.svelte +1 -1
  29. package/dist/elements/badge/badge-types.d.ts +22 -0
  30. package/dist/elements/badge/badge.d.ts +3 -3
  31. package/dist/elements/badge/badge.js +1 -1
  32. package/dist/elements/combobox/ComboBox.svelte +247 -0
  33. package/dist/elements/combobox/ComboBox.svelte.d.ts +4 -0
  34. package/dist/elements/combobox/combobox-types.d.ts +41 -0
  35. package/dist/elements/combobox/combobox-types.js +1 -0
  36. package/dist/elements/context-menu/ContextMenu.svelte +137 -0
  37. package/dist/elements/context-menu/ContextMenu.svelte.d.ts +4 -0
  38. package/dist/elements/context-menu/context-menu-types.d.ts +40 -0
  39. package/dist/elements/context-menu/context-menu-types.js +1 -0
  40. package/dist/elements/dropdown/Dropdown.svelte +1 -1
  41. package/dist/elements/dropdown/Select.svelte +4 -1
  42. package/dist/elements/dropdown/dropdown-types.d.ts +114 -0
  43. package/dist/elements/dropdown/dropdown.d.ts +3 -3
  44. package/dist/elements/dropdown/dropdown.js +2 -2
  45. package/dist/elements/dropdown/select.d.ts +3 -3
  46. package/dist/elements/dropdown/select.js +2 -2
  47. package/dist/elements/empty-state/EmptyState.svelte +1 -1
  48. package/dist/elements/empty-state/empty-state-types.d.ts +32 -1
  49. package/dist/elements/empty-state/empty-state.d.ts +3 -3
  50. package/dist/elements/empty-state/empty-state.js +2 -2
  51. package/dist/elements/file-upload/FileUpload.svelte +5 -0
  52. package/dist/elements/file-upload/file-upload-types.d.ts +59 -0
  53. package/dist/elements/pagination/Pagination.svelte +53 -21
  54. package/dist/elements/pagination/Pagination.svelte.d.ts +33 -5
  55. package/dist/elements/popover/Popover.svelte +234 -0
  56. package/dist/elements/popover/Popover.svelte.d.ts +4 -0
  57. package/dist/elements/popover/index.d.ts +2 -0
  58. package/dist/elements/popover/index.js +1 -0
  59. package/dist/elements/popover/popover-types.d.ts +60 -0
  60. package/dist/elements/popover/popover-types.js +1 -0
  61. package/dist/elements/progress/Progress.svelte +32 -7
  62. package/dist/elements/progress/progress-types.d.ts +48 -1
  63. package/dist/elements/skeleton/Skeleton.svelte +56 -0
  64. package/dist/elements/skeleton/Skeleton.svelte.d.ts +4 -0
  65. package/dist/elements/skeleton/index.d.ts +2 -0
  66. package/dist/elements/skeleton/index.js +1 -0
  67. package/dist/elements/skeleton/skeleton-types.d.ts +50 -0
  68. package/dist/elements/skeleton/skeleton-types.js +1 -0
  69. package/dist/elements/spinner/Spinner.svelte +1 -1
  70. package/dist/elements/spinner/spinner-types.d.ts +20 -0
  71. package/dist/elements/spinner/spinner.d.ts +3 -3
  72. package/dist/elements/spinner/spinner.js +2 -2
  73. package/dist/elements/tooltip/Tooltip.svelte +108 -11
  74. package/dist/elements/tooltip/tooltip-types.d.ts +49 -1
  75. package/dist/file-browser/FileBrowser.svelte +21 -12
  76. package/dist/filters/CompactFilters.svelte +221 -33
  77. package/dist/filters/CompactFilters.svelte.d.ts +1 -1
  78. package/dist/filters/FilterBar.svelte +184 -0
  79. package/dist/filters/FilterBar.svelte.d.ts +4 -0
  80. package/dist/filters/FilterPopover.svelte +346 -0
  81. package/dist/filters/FilterPopover.svelte.d.ts +4 -0
  82. package/dist/filters/date-presets.d.ts +15 -0
  83. package/dist/filters/date-presets.js +107 -0
  84. package/dist/filters/filter-types.d.ts +69 -3
  85. package/dist/filters/index.d.ts +5 -0
  86. package/dist/filters/index.js +4 -0
  87. package/dist/filters/sync-filters-to-url.svelte.d.ts +37 -0
  88. package/dist/filters/sync-filters-to-url.svelte.js +114 -0
  89. package/dist/forms/DateRange.svelte +4 -2
  90. package/dist/forms/Input.svelte +2 -2
  91. package/dist/forms/MarketSelector.svelte +8 -3
  92. package/dist/forms/NumberInput.svelte +4 -4
  93. package/dist/forms/RadioGroup.svelte +123 -0
  94. package/dist/forms/RadioGroup.svelte.d.ts +4 -0
  95. package/dist/forms/SegmentedControl.svelte +11 -4
  96. package/dist/forms/Slider.svelte +72 -3
  97. package/dist/forms/Tags.svelte +14 -5
  98. package/dist/forms/Textarea.svelte +126 -0
  99. package/dist/forms/Textarea.svelte.d.ts +4 -0
  100. package/dist/forms/Toggle.svelte +8 -8
  101. package/dist/forms/calendar/Calendar.svelte +218 -0
  102. package/dist/forms/calendar/Calendar.svelte.d.ts +4 -0
  103. package/dist/forms/calendar/calendar-types.d.ts +46 -0
  104. package/dist/forms/calendar/calendar-types.js +1 -0
  105. package/dist/forms/calendar/index.d.ts +2 -0
  106. package/dist/forms/calendar/index.js +1 -0
  107. package/dist/forms/date-picker/DatePicker.svelte +144 -0
  108. package/dist/forms/date-picker/DatePicker.svelte.d.ts +4 -0
  109. package/dist/forms/date-picker/date-picker-types.d.ts +29 -0
  110. package/dist/forms/date-picker/date-picker-types.js +1 -0
  111. package/dist/forms/form-types.d.ts +425 -6
  112. package/dist/forms/market/market-selector-types.d.ts +52 -1
  113. package/dist/forms/segmented-control.d.ts +5 -2
  114. package/dist/forms/segmented-control.js +16 -5
  115. package/dist/forms/slider.d.ts +3 -3
  116. package/dist/forms/slider.js +2 -2
  117. package/dist/funcs/user-management.remote.js +1 -1
  118. package/dist/header/Breadcrumbs.svelte +4 -20
  119. package/dist/header/PageHeader.svelte +6 -14
  120. package/dist/header/breadcrumbs.d.ts +3 -11
  121. package/dist/header/breadcrumbs.js +10 -5
  122. package/dist/header/header-types.d.ts +62 -11
  123. package/dist/index.d.ts +35 -9
  124. package/dist/index.js +24 -4
  125. package/dist/layout/activity-list/ActivityList.svelte +13 -7
  126. package/dist/layout/activity-list/activity-list-types.d.ts +46 -7
  127. package/dist/layout/card/Card.svelte +12 -15
  128. package/dist/layout/card/MetricCard.svelte +50 -32
  129. package/dist/layout/card/card-types.d.ts +114 -4
  130. package/dist/layout/navbar/navbar-types.d.ts +48 -0
  131. package/dist/layout/navbar/navbar.d.ts +3 -3
  132. package/dist/layout/navbar/navbar.js +2 -2
  133. package/dist/layout/sidebar/Sidebar.svelte +87 -11
  134. package/dist/layout/sidebar/sidebar-types.d.ts +60 -1
  135. package/dist/layout/stepper/Stepper.svelte +288 -0
  136. package/dist/layout/stepper/Stepper.svelte.d.ts +4 -0
  137. package/dist/layout/stepper/stepper-types.d.ts +80 -0
  138. package/dist/layout/stepper/stepper-types.js +1 -0
  139. package/dist/layout/table/Table.svelte +91 -85
  140. package/dist/layout/table/table-types.d.ts +148 -24
  141. package/dist/layout/table/table.d.ts +3 -3
  142. package/dist/layout/table/table.js +2 -2
  143. package/dist/layout/tabs/Tab.svelte +6 -2
  144. package/dist/layout/tabs/Tab.svelte.d.ts +4 -1
  145. package/dist/layout/tabs/TabGroup.svelte +9 -2
  146. package/dist/layout/tabs/tabs-types.d.ts +63 -0
  147. package/dist/layout/tabs/tabs.d.ts +3 -3
  148. package/dist/layout/tabs/tabs.js +12 -6
  149. package/dist/modal/ConfirmDialog.svelte +65 -0
  150. package/dist/modal/ConfirmDialog.svelte.d.ts +4 -0
  151. package/dist/modal/Modal.svelte +6 -26
  152. package/dist/modal/confirm-dialog-types.d.ts +39 -0
  153. package/dist/modal/confirm-dialog-types.js +1 -0
  154. package/dist/modal/modal-types.d.ts +51 -12
  155. package/dist/modal/modal.d.ts +3 -3
  156. package/dist/modal/modal.js +3 -3
  157. package/dist/pipeline/Pipeline.svelte +8 -3
  158. package/dist/pipeline/pipeline-types.d.ts +55 -3
  159. package/dist/pipeline/pipeline.d.ts +18 -3
  160. package/dist/pipeline/pipeline.js +7 -2
  161. package/dist/server/s3.d.ts +35 -3
  162. package/dist/sonner/Toaster.svelte +29 -0
  163. package/dist/sonner/Toaster.svelte.d.ts +4 -0
  164. package/dist/sonner/index.d.ts +21 -0
  165. package/dist/sonner/index.js +20 -0
  166. package/dist/user-management/UserManagement.svelte +22 -16
  167. package/dist/user-management/UserModal.svelte +10 -7
  168. package/dist/user-management/UserTable.svelte +16 -17
  169. package/dist/user-management/UserViewModal.svelte +11 -11
  170. package/dist/user-management/user-management-types.d.ts +118 -31
  171. package/dist/variants.d.ts +1 -1
  172. package/dist/variants.js +1 -1
  173. package/package.json +7 -4
  174. package/dist/config/ai.d.ts +0 -13
  175. package/dist/config/ai.js +0 -44
  176. package/dist/elements/empty-state/EmptyStateTestWrapper.svelte +0 -25
  177. package/dist/elements/empty-state/EmptyStateTestWrapper.svelte.d.ts +0 -8
  178. package/dist/elements/tooltip/TooltipTestWrapper.svelte +0 -14
  179. package/dist/elements/tooltip/TooltipTestWrapper.svelte.d.ts +0 -7
  180. package/dist/helper/deprecation.d.ts +0 -14
  181. package/dist/helper/deprecation.js +0 -24
  182. package/dist/modal/ModalFooterTestWrapper.svelte +0 -17
  183. package/dist/modal/ModalFooterTestWrapper.svelte.d.ts +0 -8
@@ -2,7 +2,9 @@ import { tv } from 'tailwind-variants';
2
2
  import { cn } from '../helper/cls.js';
3
3
  import { Color, Size } from '../variants.js';
4
4
  export const segmentedTrack = tv({
5
- base: 'inline-flex overflow-hidden rounded-lg border',
5
+ // `max-w-full overflow-x-auto` + hidden scrollbar lets a long segment
6
+ // row swipe on narrow viewports instead of bleeding past the parent.
7
+ base: 'inline-flex max-w-full overflow-x-auto rounded-lg border [scrollbar-width:none] [&::-webkit-scrollbar]:hidden',
6
8
  variants: {
7
9
  appearance: {
8
10
  surface: 'border-default-200 bg-white p-0',
@@ -11,7 +13,13 @@ export const segmentedTrack = tv({
11
13
  },
12
14
  orientation: {
13
15
  horizontal: 'flex-row',
14
- vertical: 'w-full flex-col'
16
+ vertical: 'w-full flex-col',
17
+ // `auto`: horizontal + content width by default, flips to full-width
18
+ // column when the parent @container drops below 250px. Component
19
+ // sets `@container` on the rootClass wrapper for the query to resolve.
20
+ // `w-fit` prevents flex-stretch when labelLayout='above' puts this
21
+ // inside a flex-col root.
22
+ auto: 'w-fit flex-row @max-[250px]:w-full @max-[250px]:flex-col'
15
23
  }
16
24
  },
17
25
  defaultVariants: {
@@ -31,7 +39,7 @@ const selectedByColor = {
31
39
  const segmentSize = {
32
40
  [Size.XS]: 'gap-1 px-2 py-1 text-xs',
33
41
  [Size.SM]: 'gap-1.5 px-3 py-1.5 text-xs',
34
- [Size.BASE]: 'gap-1.5 px-3 py-1.5 text-sm',
42
+ [Size.MD]: 'gap-1.5 px-3 py-1.5 text-sm',
35
43
  [Size.LG]: 'gap-2 px-4 py-2 text-base',
36
44
  [Size.XL]: 'gap-2 px-4 py-2.5 text-lg',
37
45
  [Size.XXL]: 'gap-2 px-5 py-3 text-xl'
@@ -39,14 +47,17 @@ const segmentSize = {
39
47
  export function segmentClasses(args) {
40
48
  const { selected, disabled, appearance, color, size } = args;
41
49
  if (appearance === 'pills') {
42
- const pillBase = cn('flex cursor-pointer items-center justify-center rounded-full font-medium transition-colors duration-150', 'focus-visible:ring-primary-500 focus-visible:ring-2 focus-visible:outline-none focus-visible:ring-offset-2', segmentSize[size], disabled && 'cursor-not-allowed opacity-50');
50
+ const pillBase = cn('flex cursor-pointer items-center justify-center rounded-full font-medium transition-colors duration-150 shrink-0 whitespace-nowrap', 'focus-visible:ring-primary-500 focus-visible:ring-2 focus-visible:outline-none focus-visible:ring-offset-2', segmentSize[size], disabled && 'cursor-not-allowed opacity-50');
43
51
  if (disabled)
44
52
  return cn(pillBase, 'text-default-400');
45
53
  if (selected)
46
54
  return cn(pillBase, selectedByColor[color]);
47
55
  return cn(pillBase, 'bg-default-100 text-default-700 hover:bg-default-200');
48
56
  }
49
- const base = cn('flex cursor-pointer items-center justify-center font-medium transition-colors duration-150', 'focus-visible:ring-primary-500 focus-visible:ring-2 focus-visible:outline-none', appearance === 'inverted' ? 'focus-visible:ring-offset-0' : 'focus-visible:ring-offset-2', segmentSize[size], disabled && 'cursor-not-allowed opacity-50');
57
+ const base = cn('flex cursor-pointer items-center justify-center font-medium transition-colors duration-150 shrink-0 whitespace-nowrap', 'focus-visible:ring-primary-500 focus-visible:ring-2 focus-visible:outline-none', appearance === 'inverted' ? 'focus-visible:ring-offset-0' : 'focus-visible:ring-offset-2',
58
+ // Inverted track has p-0.5 padding around segments — give them inner radius
59
+ // so selected segments don't render as square boxes (matches surface look).
60
+ appearance === 'inverted' && 'rounded-md', segmentSize[size], disabled && 'cursor-not-allowed opacity-50');
50
61
  if (disabled) {
51
62
  return cn(base, 'text-default-400');
52
63
  }
@@ -14,7 +14,7 @@ export declare const slider: import("tailwind-variants").TVReturnType<{
14
14
  label: string;
15
15
  value: string;
16
16
  };
17
- base: {
17
+ md: {
18
18
  track: string;
19
19
  thumb: string;
20
20
  mark: string;
@@ -82,7 +82,7 @@ export declare const slider: import("tailwind-variants").TVReturnType<{
82
82
  label: string;
83
83
  value: string;
84
84
  };
85
- base: {
85
+ md: {
86
86
  track: string;
87
87
  thumb: string;
88
88
  mark: string;
@@ -150,7 +150,7 @@ export declare const slider: import("tailwind-variants").TVReturnType<{
150
150
  label: string;
151
151
  value: string;
152
152
  };
153
- base: {
153
+ md: {
154
154
  track: string;
155
155
  thumb: string;
156
156
  mark: string;
@@ -30,7 +30,7 @@ export const slider = tv({
30
30
  label: 'text-xs',
31
31
  value: 'text-xs'
32
32
  },
33
- [Size.BASE]: {
33
+ [Size.MD]: {
34
34
  track: 'h-2',
35
35
  thumb: 'w-4 h-4',
36
36
  mark: 'text-sm top-6',
@@ -76,7 +76,7 @@ export const slider = tv({
76
76
  }
77
77
  },
78
78
  defaultVariants: {
79
- size: Size.BASE,
79
+ size: Size.MD,
80
80
  disabled: false,
81
81
  hasError: false
82
82
  }
@@ -1,4 +1,4 @@
1
- import { query, command } from '$app/server';
1
+ import { command } from '$app/server';
2
2
  import { getRequestEvent } from '$app/server';
3
3
  import { env } from '$env/dynamic/private';
4
4
  import { building } from '$app/environment';
@@ -1,6 +1,5 @@
1
1
  <script lang="ts">
2
2
  import { cn } from '../helper/cls.js';
3
- import { warnDeprecatedProps } from '../helper/deprecation.js';
4
3
  import { breadcrumbs } from './breadcrumbs.js';
5
4
  import type { BreadcrumbsProps } from '../index.js';
6
5
  import { resolve } from '$app/paths';
@@ -12,27 +11,12 @@
12
11
  weight = 'medium',
13
12
  icon: SeparatorIcon,
14
13
  class: className = '',
15
- listclass,
16
- listClass = listclass ?? '',
17
- itemclass,
18
- itemClass = itemclass ?? '',
19
- separatorclass,
20
- separatorClass = separatorclass ?? '',
21
- wrapperclass,
22
- wrapperClass = wrapperclass ?? ''
14
+ listClass = '',
15
+ itemClass = '',
16
+ separatorClass = '',
17
+ wrapperClass = ''
23
18
  }: BreadcrumbsProps = $props();
24
19
 
25
- warnDeprecatedProps(
26
- 'Breadcrumbs',
27
- { listclass, itemclass, separatorclass, wrapperclass },
28
- {
29
- listclass: 'listClass',
30
- itemclass: 'itemClass',
31
- separatorclass: 'separatorClass',
32
- wrapperclass: 'wrapperClass'
33
- }
34
- );
35
-
36
20
  const { base, list, item, separator, wrapper } = $derived(
37
21
  breadcrumbs({
38
22
  size,
@@ -1,6 +1,5 @@
1
1
  <script lang="ts">
2
2
  import { cn } from '../helper/cls.js';
3
- import { warnDeprecatedProps } from '../helper/deprecation.js';
4
3
  import type { PageHeaderProps } from '../index.js';
5
4
  import Breadcrumbs from './Breadcrumbs.svelte';
6
5
 
@@ -10,19 +9,10 @@
10
9
  breadcrumbs = [],
11
10
  children,
12
11
  class: className = '',
13
- titleclass,
14
- titleClass = titleclass ?? '',
12
+ titleClass = '',
15
13
  layout = 'vertical'
16
14
  }: PageHeaderProps = $props();
17
15
 
18
- warnDeprecatedProps(
19
- 'PageHeader',
20
- { titleclass },
21
- {
22
- titleclass: 'titleClass'
23
- }
24
- );
25
-
26
16
  const defaultTitleClasses =
27
17
  'font-bold text-default-900 sm:tracking-tight sm:truncate text-2xl/7 sm:text-3xl';
28
18
 
@@ -47,9 +37,11 @@
47
37
  {/if}
48
38
  </div>
49
39
 
50
- <!-- Actions area - responsive positioning -->
40
+ <!-- Actions area - responsive positioning. `flex-wrap` lets
41
+ multiple buttons wrap to a second row on narrow viewports
42
+ instead of overflowing. -->
51
43
  {#if children}
52
- <div class="flex-shrink-0 md:ml-6">
44
+ <div class="flex flex-wrap items-center gap-2 md:ml-6 md:shrink-0">
53
45
  {@render children()}
54
46
  </div>
55
47
  {/if}
@@ -70,7 +62,7 @@
70
62
 
71
63
  <!-- Children as separate unit below -->
72
64
  {#if children}
73
- <div class="mt-4">
65
+ <div class="mt-4 flex flex-wrap items-center gap-2">
74
66
  {@render children()}
75
67
  </div>
76
68
  {/if}
@@ -13,7 +13,7 @@ export declare const breadcrumbs: import("tailwind-variants").TVReturnType<{
13
13
  sm: {
14
14
  base: string;
15
15
  };
16
- base: {
16
+ md: {
17
17
  base: string;
18
18
  };
19
19
  lg: {
@@ -86,7 +86,7 @@ export declare const breadcrumbs: import("tailwind-variants").TVReturnType<{
86
86
  sm: {
87
87
  base: string;
88
88
  };
89
- base: {
89
+ md: {
90
90
  base: string;
91
91
  };
92
92
  lg: {
@@ -159,7 +159,7 @@ export declare const breadcrumbs: import("tailwind-variants").TVReturnType<{
159
159
  sm: {
160
160
  base: string;
161
161
  };
162
- base: {
162
+ md: {
163
163
  base: string;
164
164
  };
165
165
  lg: {
@@ -232,17 +232,9 @@ export type BreadcrumbsProps = {
232
232
  color?: keyof typeof breadcrumbs.variants.color;
233
233
  icon?: Component;
234
234
  class?: ClassValue;
235
- /** @deprecated Use listClass instead */
236
- listclass?: ClassValue;
237
235
  listClass?: ClassValue;
238
- /** @deprecated Use itemClass instead */
239
- itemclass?: ClassValue;
240
236
  itemClass?: ClassValue;
241
- /** @deprecated Use separatorClass instead */
242
- separatorclass?: ClassValue;
243
237
  separatorClass?: ClassValue;
244
- /** @deprecated Use wrapperClass instead */
245
- wrapperclass?: ClassValue;
246
238
  wrapperClass?: ClassValue;
247
239
  };
248
240
  export type { BreadcrumbItem };
@@ -2,11 +2,16 @@ import { tv } from 'tailwind-variants';
2
2
  import { Size, Color } from '../variants.js';
3
3
  export const breadcrumbs = tv({
4
4
  slots: {
5
- base: 'flex',
6
- list: 'flex flex-wrap items-center space-x-2.5',
5
+ // `min-w-0` lets the breadcrumb participate in a flex/grid parent
6
+ // that constrains its width so overflow scrolling actually triggers.
7
+ base: 'flex min-w-0',
8
+ // Switched from `flex-wrap` to `flex-nowrap` + horizontal scroll so
9
+ // deep paths stay on one line on narrow viewports and swipe cleanly
10
+ // instead of reflowing into a wall of text.
11
+ list: 'flex flex-nowrap items-center space-x-2.5 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden',
7
12
  item: 'flex items-center whitespace-nowrap',
8
- separator: 'flex items-center',
9
- wrapper: 'flex items-center gap-2.5'
13
+ separator: 'flex items-center shrink-0',
14
+ wrapper: 'flex items-center gap-2.5 shrink-0'
10
15
  },
11
16
  variants: {
12
17
  size: {
@@ -16,7 +21,7 @@ export const breadcrumbs = tv({
16
21
  [Size.SM]: {
17
22
  base: 'items-center text-sm'
18
23
  },
19
- [Size.BASE]: {
24
+ [Size.MD]: {
20
25
  base: 'items-center text-base'
21
26
  },
22
27
  [Size.LG]: {
@@ -2,42 +2,93 @@ import type { ClassValue } from 'tailwind-variants';
2
2
  import type { Snippet } from 'svelte';
3
3
  import type { Component } from 'svelte';
4
4
  import type { VariantColors } from '../index.js';
5
+ /** Single crumb in `<Breadcrumbs>`. */
5
6
  export type BreadcrumbItem = {
7
+ /** Visible text. */
6
8
  label: string;
9
+ /** Target URL. Use `'#'` for non-navigable items. */
7
10
  href: string;
11
+ /** Mark as the current page (last crumb, no link styling). */
8
12
  current?: boolean;
13
+ /** Optional icon rendered before the label. */
9
14
  icon?: Component;
10
15
  };
16
+ /**
17
+ * Props for `<Breadcrumbs>` — a horizontal trail of links showing the
18
+ * user's location in a hierarchy. Pair with `<PageHeader>` for a
19
+ * standard top-of-page treatment.
20
+ *
21
+ * @example
22
+ * ```svelte
23
+ * <Breadcrumbs
24
+ * items={[
25
+ * { label: 'Home', href: '/' },
26
+ * { label: 'Reports', href: '/reports' },
27
+ * { label: 'Q1 2026', href: '/reports/q1-2026', current: true }
28
+ * ]}
29
+ * />
30
+ * ```
31
+ */
11
32
  export type BreadcrumbsProps = {
33
+ /** Ordered list of crumbs from root to current. */
12
34
  items: BreadcrumbItem[];
13
- size?: 'xs' | 'sm' | 'base' | 'lg';
35
+ /** Text size scale. @default 'sm' */
36
+ size?: 'xs' | 'sm' | 'md' | 'lg';
37
+ /** @default 'medium' */
14
38
  weight?: 'normal' | 'medium' | 'semibold' | 'bold';
39
+ /** @default 'default' */
15
40
  color?: VariantColors;
41
+ /** Custom separator icon (e.g. chevron, slash). Defaults to a chevron. */
16
42
  icon?: Component;
17
43
  class?: ClassValue;
18
- /** @deprecated Use listClass instead */
19
- listclass?: ClassValue;
44
+ /** Classes on the `<ol>`. */
20
45
  listClass?: ClassValue;
21
- /** @deprecated Use itemClass instead */
22
- itemclass?: ClassValue;
46
+ /** Classes on each `<li>` item. */
23
47
  itemClass?: ClassValue;
24
- /** @deprecated Use separatorClass instead */
25
- separatorclass?: ClassValue;
48
+ /** Classes on the separator span. */
26
49
  separatorClass?: ClassValue;
27
- /** @deprecated Use wrapperClass instead */
28
- wrapperclass?: ClassValue;
50
+ /** Classes on the inner item wrapper (icon + label). */
29
51
  wrapperClass?: ClassValue;
30
52
  testId?: string;
31
53
  };
54
+ /**
55
+ * Props for `<PageHeader>` — the top-of-page title block. Combines a
56
+ * heading, optional subtitle, breadcrumbs, and a children slot for
57
+ * page-level actions (Save, Export, etc.).
58
+ *
59
+ * @example
60
+ * ```svelte
61
+ * <PageHeader
62
+ * title="Q1 2026 report"
63
+ * subtitle="Generated 2 hours ago"
64
+ * breadcrumbs={[
65
+ * { label: 'Home', href: '/' },
66
+ * { label: 'Reports', href: '/reports' }
67
+ * ]}
68
+ * >
69
+ * <Button color="primary">Export PDF</Button>
70
+ * </PageHeader>
71
+ * ```
72
+ */
32
73
  export type PageHeaderProps = {
74
+ /** Page title — main heading. */
33
75
  title: string;
76
+ /** Short subtitle below the title. */
34
77
  subtitle?: string;
78
+ /** Optional crumb trail rendered above the title. */
35
79
  breadcrumbs?: BreadcrumbItem[];
80
+ /**
81
+ * Right-aligned (horizontal layout) or below-the-title (vertical)
82
+ * content — typically page-level action buttons.
83
+ */
36
84
  children?: Snippet;
37
85
  class?: ClassValue;
38
- /** @deprecated Use titleClass instead */
39
- titleclass?: ClassValue;
86
+ /** Classes on the title element. */
40
87
  titleClass?: ClassValue;
88
+ /**
89
+ * - `'vertical'` (default): title above, actions below
90
+ * - `'horizontal'`: title left, actions right (md+ breakpoint)
91
+ */
41
92
  layout?: 'vertical' | 'horizontal';
42
93
  testId?: string;
43
94
  };
package/dist/index.d.ts CHANGED
@@ -1,10 +1,16 @@
1
1
  import { ChartColor, Color, Size } from './variants.js';
2
2
  /**
3
3
  * Size System:
4
- * - Size.*: Component dimensions (XS, SM, BASE, LG, XL, XXL)
4
+ * - Size.*: Component dimensions (XS, SM, MD, LG, XL, XXL)
5
5
  */
6
6
  export type VariantSizes = (typeof Size)[keyof typeof Size];
7
7
  export type VariantColors = (typeof Color)[keyof typeof Color];
8
+ /**
9
+ * Border-radius scale. Matches Tailwind's `rounded-*` utility suffixes
10
+ * plus `'none'` for no corners and `'full'` for fully rounded (pills,
11
+ * avatar badges). Use on any component that exposes a `rounded` prop.
12
+ */
13
+ export type RoundedSizes = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
8
14
  /**
9
15
  * Color System:
10
16
  * - Color.*: UI component colors (buttons, text, backgrounds)
@@ -19,6 +25,7 @@ export type { ClassValue } from 'tailwind-variants';
19
25
  export type { BadgeProps } from './elements/badge/badge-types.js';
20
26
  export type { BaseButtonProps, ButtonHTMLProps, AnchorHTMLProps, ButtonProps } from './button/button-types.js';
21
27
  export type { ModalProps } from './modal/modal-types.js';
28
+ export type { ConfirmDialogProps } from './modal/confirm-dialog-types.js';
22
29
  export type { DrawerProps } from './drawer/drawer-types.js';
23
30
  export type { DropdownItem, DropSection, DropHeaderConfig, DropdownMenuProps, SelectItem, SelectProps } from './elements/dropdown/dropdown-types.js';
24
31
  export type { CardProps, AlertProps, MetricDetail, MetricCardProps } from './layout/card/card-types.js';
@@ -29,7 +36,7 @@ export type { TabItem, TabProps, TabsGroupProps, TabContentProps } from './layou
29
36
  export type { NavbarLinkItem, NavbarProps } from './layout/navbar/navbar-types.js';
30
37
  export type { MenuBar, BaseNavigationItem, WithIcon, Activatable, LinkItem, ParentItem, DividerItem, NavigationItem, LogoType, NavGroupProps, NavItemProps, SidebarProps } from './layout/sidebar/sidebar-types.js';
31
38
  export type { ChartColorKey, ChartColorValue, ChartColors, ChartType, ChartColorString, XAxisConfig, YAxisConfig, SeriesConfig, ChartThreshold, ChartAnnotation, GridConfig, LegendConfig, TooltipConfig, ToolboxConfig, ChartConfig, PointClickType, ChartRenderType, ChartProps } from './charts/chart-types.js';
32
- export type { FormProps, InputProps, RadioOption, CheckboxProps, ToggleProps, CurrencyOption, NumberInputProps, DateRangeProps, DateSelectEvent, TagsProps, SliderMode, NotationType, EnumOption, SliderProps, SegmentedOption, SegmentedControlProps } from './forms/form-types.js';
39
+ export type { FormProps, InputProps, TextareaProps, RadioOption, RadioGroupProps, CheckboxProps, ToggleProps, CurrencyOption, NumberInputProps, DateRangeProps, DateSelectEvent, TagsProps, SliderMode, NotationType, EnumOption, SliderProps, SliderTick, SegmentedOption, SegmentedControlProps } from './forms/form-types.js';
33
40
  export type { CountryCode } from './forms/market/country-data.js';
34
41
  export type { MarketCode } from './forms/market/market.js';
35
42
  export { ALL_COUNTRY_CODES, COUNTRY_NAMES } from './forms/market/country-data.js';
@@ -38,22 +45,31 @@ export type { MarketSelectorProps } from './forms/market/market-selector-types.j
38
45
  export { countryCodeToFlagEmoji } from './forms/market/flag-emoji.js';
39
46
  export type { ProgressSegment, ProgressProps } from './elements/progress/progress-types.js';
40
47
  export type { SpinnerProps } from './elements/spinner/spinner-types.js';
48
+ export type { SkeletonProps, SkeletonVariant } from './elements/skeleton/skeleton-types.js';
41
49
  export type { EmptyStateProps, EmptyStateSize } from './elements/empty-state/empty-state-types.js';
42
- export type { TooltipProps, TooltipPlacement } from './elements/tooltip/tooltip-types.js';
50
+ export type { TooltipProps, TooltipPlacement, TooltipSize, TooltipVariant } from './elements/tooltip/tooltip-types.js';
51
+ export type { PopoverProps, PopoverPlacement, PopoverTrigger } from './elements/popover/popover-types.js';
52
+ export type { CalendarProps, CalendarMode } from './forms/calendar/calendar-types.js';
53
+ export type { DatePickerProps } from './forms/date-picker/date-picker-types.js';
54
+ export type { ComboBoxProps, ComboBoxItem } from './elements/combobox/combobox-types.js';
55
+ export type { ContextMenuProps, ContextMenuItem } from './elements/context-menu/context-menu-types.js';
43
56
  export type { AccordionProps } from './elements/accordion/accordion-types.js';
44
- export type { FilterTab, FilterGroup, CompactFiltersProps } from './filters/filter-types.js';
57
+ export type { FilterTab, FilterGroup, FilterSelectionValue, DatePreset, DateRangeConfig, DateRangeValue, CompactFiltersProps } from './filters/filter-types.js';
58
+ export { defaultDatePresets, toIsoDate, fromIsoDate } from './filters/date-presets.js';
59
+ export type { StepperProps, StepperStep, StepState, StepperOrientation } from './layout/stepper/stepper-types.js';
45
60
  export type { ActivityItemBadge, ActivityItemAction, ActivityItem, ActivityListProps, ActivityListSize } from './layout/activity-list/activity-list-types.js';
46
61
  export type { FileUploadProps, FileUploadSize, FilePreviewProps, UploadedFile, StagedFile } from './elements/file-upload/file-upload-types.js';
47
62
  export type { ChatMessageType, StreamingCallback, ChatAction, ChatMessage, ChatResponse, QuickAction, FileBrowserProps } from './ai/ai-types.js';
48
- export type { GetUsersOptions, GetUsersResult, UserEmail, UserPhone, User, Permission, Role, UserTableProps, UserModalProps, UserViewModalProps, UserManagementAdapter, UserManagementProps, FormErrors } from './user-management/user-management-types.js';
63
+ export type { GetUsersOptions, GetUsersResult, UserEmail, UserPhone, User, Permission, Role, UserTableProps, UserModalProps, UserModalSavePayload, UserViewModalProps, UserManagementAdapter, UserManagementProps, FormErrors } from './user-management/user-management-types.js';
49
64
  export { tv, cn } from './helper/cls.js';
50
65
  export { isRouteActive } from './helper/nav.svelte.js';
51
66
  export { default as Button } from './button/Button.svelte';
52
67
  export { default as Modal } from './modal/Modal.svelte';
53
68
  export { default as ModalFooter } from './modal/ModalFooter.svelte';
69
+ export { default as ConfirmDialog } from './modal/ConfirmDialog.svelte';
54
70
  export { default as Pipeline } from './pipeline/Pipeline.svelte';
55
71
  export { pipelineVariants } from './pipeline/pipeline.js';
56
- export type { PipelineStage, PipelineStageColor, PipelineStageEvent, PipelineStageClickEvent, PipelineStagePointerEvent, PipelineProps } from './pipeline/pipeline-types.js';
72
+ export type { PipelineStage, PipelineStageEvent, PipelineStageClickEvent, PipelineStagePointerEvent, PipelineProps } from './pipeline/pipeline-types.js';
57
73
  export { default as Drawer } from './drawer/Drawer.svelte';
58
74
  export { default as PageHeader } from './header/PageHeader.svelte';
59
75
  export { default as Breadcrumbs } from './header/Breadcrumbs.svelte';
@@ -70,34 +86,44 @@ export { default as Tab } from './layout/tabs/Tab.svelte';
70
86
  export { default as TabContent } from './layout/tabs/TabContent.svelte';
71
87
  export { default as TabGroup } from './layout/tabs/TabGroup.svelte';
72
88
  export { default as Table } from './layout/table/Table.svelte';
73
- export { default as Cells } from './layout/table/Cells.svelte';
89
+ export * as Cells from './layout/table/Cells.svelte';
74
90
  export { default as Navbar } from './layout/navbar/Navbar.svelte';
75
91
  export { default as Sidebar } from './layout/sidebar/Sidebar.svelte';
76
92
  export { default as NavItem } from './layout/sidebar/NavItem.svelte';
77
93
  export { default as NavGroup } from './layout/sidebar/NavGroup.svelte';
78
94
  export { default as ActivityList } from './layout/activity-list/ActivityList.svelte';
95
+ export { default as Stepper } from './layout/stepper/Stepper.svelte';
79
96
  export { default as Progress } from './elements/progress/Progress.svelte';
80
97
  export { default as Spinner } from './elements/spinner/Spinner.svelte';
98
+ export { default as Skeleton } from './elements/skeleton/Skeleton.svelte';
81
99
  export { spinner as spinnerVariants } from './elements/spinner/spinner.js';
82
100
  export { default as EmptyState } from './elements/empty-state/EmptyState.svelte';
83
101
  export { emptyState as emptyStateVariants } from './elements/empty-state/empty-state.js';
84
102
  export { default as Tooltip } from './elements/tooltip/Tooltip.svelte';
103
+ export { default as Popover } from './elements/popover/Popover.svelte';
104
+ export { default as ComboBox } from './elements/combobox/ComboBox.svelte';
105
+ export { default as ContextMenu } from './elements/context-menu/ContextMenu.svelte';
85
106
  export { default as Accordion } from './elements/accordion/Accordion.svelte';
86
107
  export { default as Chart } from './charts/Chart.svelte';
87
108
  export { default as FileUpload } from './elements/file-upload/FileUpload.svelte';
88
109
  export { default as FilesPreview } from './elements/file-upload/FilesPreview.svelte';
89
- export { default as Toaster } from './sonner/sonner.svelte';
110
+ export { Toaster, toast } from './sonner/index.js';
111
+ export type { ToasterProps, ToastT } from './sonner/index.js';
90
112
  export { default as AIChatInterface } from './ai/AIChatInterface.svelte';
91
113
  export { default as MermaidRenderer } from './ai/MermaidRenderer.svelte';
92
114
  export { default as CodeRenderer } from './ai/CodeRenderer.svelte';
93
115
  export * from './ai/content-detector.js';
94
116
  export { default as Form } from './forms/Form.svelte';
95
117
  export { default as Input } from './forms/Input.svelte';
118
+ export { default as Textarea } from './forms/Textarea.svelte';
119
+ export { default as RadioGroup } from './forms/RadioGroup.svelte';
96
120
  export { default as Checkbox } from './forms/Checkbox.svelte';
97
121
  export { default as Toggle } from './forms/Toggle.svelte';
98
122
  export { default as Slider } from './forms/Slider.svelte';
99
123
  export { default as NumberInput } from './forms/NumberInput.svelte';
100
124
  export { default as DateRange } from './forms/DateRange.svelte';
125
+ export { default as Calendar } from './forms/calendar/Calendar.svelte';
126
+ export { default as DatePicker } from './forms/date-picker/DatePicker.svelte';
101
127
  export { default as Tags } from './forms/Tags.svelte';
102
128
  export { default as SegmentedControl } from './forms/SegmentedControl.svelte';
103
129
  export { default as MarketSelector } from './forms/MarketSelector.svelte';
@@ -114,7 +140,7 @@ export { activityList } from './layout/activity-list/activity-list.js';
114
140
  export { slider } from './forms/slider.js';
115
141
  export type { SegmentAppearance } from './forms/segmented-control.js';
116
142
  export { segmentedTrack, segmentClasses, segmentedLabelClasses } from './forms/segmented-control.js';
117
- export { CompactFilters } from './filters/index.js';
143
+ export { CompactFilters, FilterPopover, FilterBar, syncFiltersToUrl } from './filters/index.js';
118
144
  export * from './file-browser/index.js';
119
145
  export * from './adapters/storage/index.js';
120
146
  export * from './adapters/ai/index.js';
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ export { buildTestId } from './helper/testid.js';
12
12
  export { ALL_COUNTRY_CODES, COUNTRY_NAMES } from './forms/market/country-data.js';
13
13
  export { Market } from './forms/market/market.js';
14
14
  export { countryCodeToFlagEmoji } from './forms/market/flag-emoji.js';
15
+ export { defaultDatePresets, toIsoDate, fromIsoDate } from './filters/date-presets.js';
15
16
  // ============================================================================
16
17
  // Helper utilities
17
18
  // ============================================================================
@@ -25,6 +26,7 @@ export { default as Button } from './button/Button.svelte';
25
26
  // Modal
26
27
  export { default as Modal } from './modal/Modal.svelte';
27
28
  export { default as ModalFooter } from './modal/ModalFooter.svelte';
29
+ export { default as ConfirmDialog } from './modal/ConfirmDialog.svelte';
28
30
  // Pipeline
29
31
  export { default as Pipeline } from './pipeline/Pipeline.svelte';
30
32
  export { pipelineVariants } from './pipeline/pipeline.js';
@@ -50,7 +52,10 @@ export { default as TabContent } from './layout/tabs/TabContent.svelte';
50
52
  export { default as TabGroup } from './layout/tabs/TabGroup.svelte';
51
53
  // Elements - Table
52
54
  export { default as Table } from './layout/table/Table.svelte';
53
- export { default as Cells } from './layout/table/Cells.svelte';
55
+ // Cells is a collection of pre-built table-cell snippets. Consumers use
56
+ // them via namespace import: `import { Cells } from '@makolabs/ripple'`
57
+ // then `{#snippet cell(row, key)} {@render Cells.Currency(row, key)} {/snippet}`.
58
+ export * as Cells from './layout/table/Cells.svelte';
54
59
  // Elements - Navbar
55
60
  export { default as Navbar } from './layout/navbar/Navbar.svelte';
56
61
  // Elements - Sidebar
@@ -59,16 +64,26 @@ export { default as NavItem } from './layout/sidebar/NavItem.svelte';
59
64
  export { default as NavGroup } from './layout/sidebar/NavGroup.svelte';
60
65
  // Elements - ActivityList
61
66
  export { default as ActivityList } from './layout/activity-list/ActivityList.svelte';
67
+ // Elements - Stepper
68
+ export { default as Stepper } from './layout/stepper/Stepper.svelte';
62
69
  // Elements - Progress
63
70
  export { default as Progress } from './elements/progress/Progress.svelte';
64
71
  // Elements - Spinner
65
72
  export { default as Spinner } from './elements/spinner/Spinner.svelte';
73
+ // Elements - Skeleton
74
+ export { default as Skeleton } from './elements/skeleton/Skeleton.svelte';
66
75
  export { spinner as spinnerVariants } from './elements/spinner/spinner.js';
67
76
  // Elements - EmptyState
68
77
  export { default as EmptyState } from './elements/empty-state/EmptyState.svelte';
69
78
  export { emptyState as emptyStateVariants } from './elements/empty-state/empty-state.js';
70
79
  // Elements - Tooltip
71
80
  export { default as Tooltip } from './elements/tooltip/Tooltip.svelte';
81
+ // Elements - Popover
82
+ export { default as Popover } from './elements/popover/Popover.svelte';
83
+ // Elements - ComboBox
84
+ export { default as ComboBox } from './elements/combobox/ComboBox.svelte';
85
+ // Elements - ContextMenu
86
+ export { default as ContextMenu } from './elements/context-menu/ContextMenu.svelte';
72
87
  // Elements - Accordion
73
88
  export { default as Accordion } from './elements/accordion/Accordion.svelte';
74
89
  // Chart
@@ -76,8 +91,9 @@ export { default as Chart } from './charts/Chart.svelte';
76
91
  // File Upload
77
92
  export { default as FileUpload } from './elements/file-upload/FileUpload.svelte';
78
93
  export { default as FilesPreview } from './elements/file-upload/FilesPreview.svelte';
79
- // Toaster: Should be registered in +layout.svelte
80
- export { default as Toaster } from './sonner/sonner.svelte';
94
+ // Toaster: Should be registered in +layout.svelte.
95
+ // Also exports `toast` function and types for consumers.
96
+ export { Toaster, toast } from './sonner/index.js';
81
97
  // AI Components
82
98
  export { default as AIChatInterface } from './ai/AIChatInterface.svelte';
83
99
  export { default as MermaidRenderer } from './ai/MermaidRenderer.svelte';
@@ -87,11 +103,15 @@ export * from './ai/content-detector.js';
87
103
  // Form Component Exports
88
104
  export { default as Form } from './forms/Form.svelte';
89
105
  export { default as Input } from './forms/Input.svelte';
106
+ export { default as Textarea } from './forms/Textarea.svelte';
107
+ export { default as RadioGroup } from './forms/RadioGroup.svelte';
90
108
  export { default as Checkbox } from './forms/Checkbox.svelte';
91
109
  export { default as Toggle } from './forms/Toggle.svelte';
92
110
  export { default as Slider } from './forms/Slider.svelte';
93
111
  export { default as NumberInput } from './forms/NumberInput.svelte';
94
112
  export { default as DateRange } from './forms/DateRange.svelte';
113
+ export { default as Calendar } from './forms/calendar/Calendar.svelte';
114
+ export { default as DatePicker } from './forms/date-picker/DatePicker.svelte';
95
115
  export { default as Tags } from './forms/Tags.svelte';
96
116
  export { default as SegmentedControl } from './forms/SegmentedControl.svelte';
97
117
  export { default as MarketSelector } from './forms/MarketSelector.svelte';
@@ -113,7 +133,7 @@ export { segmentedTrack, segmentClasses, segmentedLabelClasses } from './forms/s
113
133
  // ============================================================================
114
134
  // Re-export filters
115
135
  // ============================================================================
116
- export { CompactFilters } from './filters/index.js';
136
+ export { CompactFilters, FilterPopover, FilterBar, syncFiltersToUrl } from './filters/index.js';
117
137
  // ============================================================================
118
138
  // File Browser and Storage Adapters
119
139
  // ============================================================================