@makolabs/ripple 2.5.9 → 3.0.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 (186) 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 +244 -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 -108
  46. package/dist/elements/dropdown/select.js +38 -47
  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 +254 -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/Checkbox.svelte +24 -9
  90. package/dist/forms/DateRange.svelte +23 -6
  91. package/dist/forms/Input.svelte +19 -19
  92. package/dist/forms/MarketSelector.svelte +9 -4
  93. package/dist/forms/NumberInput.svelte +14 -18
  94. package/dist/forms/RadioGroup.svelte +127 -0
  95. package/dist/forms/RadioGroup.svelte.d.ts +4 -0
  96. package/dist/forms/SegmentedControl.svelte +11 -4
  97. package/dist/forms/Slider.svelte +72 -3
  98. package/dist/forms/Tags.svelte +44 -14
  99. package/dist/forms/Textarea.svelte +121 -0
  100. package/dist/forms/Textarea.svelte.d.ts +4 -0
  101. package/dist/forms/Toggle.svelte +30 -22
  102. package/dist/forms/calendar/Calendar.svelte +315 -0
  103. package/dist/forms/calendar/Calendar.svelte.d.ts +4 -0
  104. package/dist/forms/calendar/calendar-types.d.ts +54 -0
  105. package/dist/forms/calendar/calendar-types.js +1 -0
  106. package/dist/forms/calendar/index.d.ts +2 -0
  107. package/dist/forms/calendar/index.js +1 -0
  108. package/dist/forms/date-picker/DatePicker.svelte +141 -0
  109. package/dist/forms/date-picker/DatePicker.svelte.d.ts +4 -0
  110. package/dist/forms/date-picker/date-picker-types.d.ts +29 -0
  111. package/dist/forms/date-picker/date-picker-types.js +1 -0
  112. package/dist/forms/form-size.d.ts +37 -0
  113. package/dist/forms/form-size.js +67 -0
  114. package/dist/forms/form-types.d.ts +430 -6
  115. package/dist/forms/market/market-selector-types.d.ts +52 -1
  116. package/dist/forms/segmented-control.d.ts +5 -2
  117. package/dist/forms/segmented-control.js +25 -13
  118. package/dist/forms/slider.d.ts +3 -3
  119. package/dist/forms/slider.js +37 -30
  120. package/dist/funcs/user-management.remote.js +1 -1
  121. package/dist/header/Breadcrumbs.svelte +4 -20
  122. package/dist/header/PageHeader.svelte +6 -14
  123. package/dist/header/breadcrumbs.d.ts +3 -11
  124. package/dist/header/breadcrumbs.js +10 -5
  125. package/dist/header/header-types.d.ts +62 -11
  126. package/dist/index.d.ts +35 -9
  127. package/dist/index.js +24 -4
  128. package/dist/layout/activity-list/ActivityList.svelte +13 -7
  129. package/dist/layout/activity-list/activity-list-types.d.ts +46 -7
  130. package/dist/layout/card/Card.svelte +12 -15
  131. package/dist/layout/card/MetricCard.svelte +50 -32
  132. package/dist/layout/card/card-types.d.ts +114 -4
  133. package/dist/layout/navbar/navbar-types.d.ts +48 -0
  134. package/dist/layout/navbar/navbar.d.ts +3 -3
  135. package/dist/layout/navbar/navbar.js +2 -2
  136. package/dist/layout/sidebar/Sidebar.svelte +87 -11
  137. package/dist/layout/sidebar/sidebar-types.d.ts +60 -1
  138. package/dist/layout/stepper/Stepper.svelte +288 -0
  139. package/dist/layout/stepper/Stepper.svelte.d.ts +4 -0
  140. package/dist/layout/stepper/stepper-types.d.ts +80 -0
  141. package/dist/layout/stepper/stepper-types.js +1 -0
  142. package/dist/layout/table/Table.svelte +91 -85
  143. package/dist/layout/table/table-types.d.ts +148 -24
  144. package/dist/layout/table/table.d.ts +3 -3
  145. package/dist/layout/table/table.js +2 -2
  146. package/dist/layout/tabs/Tab.svelte +6 -2
  147. package/dist/layout/tabs/Tab.svelte.d.ts +4 -1
  148. package/dist/layout/tabs/TabGroup.svelte +9 -2
  149. package/dist/layout/tabs/tabs-types.d.ts +63 -0
  150. package/dist/layout/tabs/tabs.d.ts +3 -3
  151. package/dist/layout/tabs/tabs.js +12 -6
  152. package/dist/modal/ConfirmDialog.svelte +65 -0
  153. package/dist/modal/ConfirmDialog.svelte.d.ts +4 -0
  154. package/dist/modal/Modal.svelte +6 -26
  155. package/dist/modal/confirm-dialog-types.d.ts +39 -0
  156. package/dist/modal/confirm-dialog-types.js +1 -0
  157. package/dist/modal/modal-types.d.ts +51 -12
  158. package/dist/modal/modal.d.ts +3 -3
  159. package/dist/modal/modal.js +3 -3
  160. package/dist/pipeline/Pipeline.svelte +8 -3
  161. package/dist/pipeline/pipeline-types.d.ts +55 -3
  162. package/dist/pipeline/pipeline.d.ts +18 -3
  163. package/dist/pipeline/pipeline.js +7 -2
  164. package/dist/server/s3.d.ts +35 -3
  165. package/dist/sonner/Toaster.svelte +29 -0
  166. package/dist/sonner/Toaster.svelte.d.ts +4 -0
  167. package/dist/sonner/index.d.ts +21 -0
  168. package/dist/sonner/index.js +20 -0
  169. package/dist/user-management/UserManagement.svelte +22 -16
  170. package/dist/user-management/UserModal.svelte +10 -7
  171. package/dist/user-management/UserTable.svelte +16 -17
  172. package/dist/user-management/UserViewModal.svelte +11 -11
  173. package/dist/user-management/user-management-types.d.ts +118 -31
  174. package/dist/variants.d.ts +1 -1
  175. package/dist/variants.js +1 -1
  176. package/package.json +7 -4
  177. package/dist/config/ai.d.ts +0 -13
  178. package/dist/config/ai.js +0 -44
  179. package/dist/elements/empty-state/EmptyStateTestWrapper.svelte +0 -25
  180. package/dist/elements/empty-state/EmptyStateTestWrapper.svelte.d.ts +0 -8
  181. package/dist/elements/tooltip/TooltipTestWrapper.svelte +0 -14
  182. package/dist/elements/tooltip/TooltipTestWrapper.svelte.d.ts +0 -7
  183. package/dist/helper/deprecation.d.ts +0 -14
  184. package/dist/helper/deprecation.js +0 -24
  185. package/dist/modal/ModalFooterTestWrapper.svelte +0 -17
  186. package/dist/modal/ModalFooterTestWrapper.svelte.d.ts +0 -8
@@ -1,23 +1,37 @@
1
1
  import type { ClassValue } from 'tailwind-variants';
2
+ /** Args passed to `UserManagementAdapter.getUsers`. */
2
3
  export interface GetUsersOptions {
4
+ /** 1-indexed page number. */
3
5
  page: number;
6
+ /** Rows per page. */
4
7
  pageSize: number;
8
+ /** Field to sort by. Adapter-specific. */
5
9
  sortBy?: string;
6
10
  sortOrder?: 'asc' | 'desc';
11
+ /** Free-text search query. */
7
12
  query?: string;
8
13
  }
14
+ /** Result returned by `UserManagementAdapter.getUsers`. */
9
15
  export interface GetUsersResult {
10
16
  users: User[];
17
+ /** Total count across all pages — used for pagination. */
11
18
  totalUsers: number;
12
19
  }
20
+ /** A single email address attached to a user. */
13
21
  export interface UserEmail {
14
22
  email_address: string;
15
23
  verified?: boolean;
16
24
  }
25
+ /** A single phone number attached to a user. */
17
26
  export interface UserPhone {
18
27
  phone_number: string;
19
28
  verified?: boolean;
20
29
  }
30
+ /**
31
+ * User shape consumed by `<UserManagement>` and friends. Field naming
32
+ * mirrors common identity providers (Clerk, Stytch) — adapt your adapter
33
+ * to map your backend's shape to this one.
34
+ */
21
35
  export interface User {
22
36
  id: string;
23
37
  first_name?: string;
@@ -30,69 +44,125 @@ export interface User {
30
44
  last_sign_in_at?: number;
31
45
  private_metadata?: Record<string, unknown>;
32
46
  public_metadata?: Record<string, unknown>;
47
+ /** Permission keys the user has been granted. */
33
48
  permissions?: string[];
49
+ /** Role identifier (matches `Role.value`). */
34
50
  role?: string;
35
51
  }
52
+ /** A single permission flag the system recognises. */
36
53
  export interface Permission {
37
54
  id: string;
38
55
  name: string;
39
56
  description?: string;
57
+ /** Logical grouping (rendered as a section header in the UI). */
40
58
  category?: string;
41
59
  }
60
+ /** A role bundles a set of permissions under a single label. */
42
61
  export interface Role {
43
62
  value: string;
44
63
  label: string;
45
64
  description?: string;
65
+ /** Permission keys this role grants. */
46
66
  permissions: string[];
47
67
  }
68
+ /**
69
+ * Props for `<UserTable>` — a paginated, sortable, action-aware table
70
+ * of users. Usually consumed via the higher-level `<UserManagement>`
71
+ * dashboard, but exposed for custom layouts.
72
+ */
48
73
  export interface UserTableProps {
49
74
  users: User[];
50
75
  loading?: boolean;
51
76
  currentPage?: number;
52
77
  pageSize?: number;
53
78
  totalUsers?: number;
54
- onPageChange: (page: number) => void;
55
- onPageSizeChange: (size: number) => void;
56
- onSort?: (state: {
79
+ onpagechange: (page: number) => void;
80
+ onpagesizechange: (size: number) => void;
81
+ onsort?: (state: {
57
82
  column: string | null;
58
83
  direction: 'asc' | 'desc' | null;
59
84
  }) => void;
60
- onView: (user: User) => void;
61
- onEdit: (user: User) => void;
62
- onDelete: (userId: string) => void;
85
+ /** Fires when the user clicks the View action on a row. */
86
+ onview: (user: User) => void;
87
+ /** Fires when the user clicks the Edit action on a row. */
88
+ onedit: (user: User) => void;
89
+ /** Fires when the user confirms a Delete action on a row. */
90
+ ondelete: (userId: string) => void;
63
91
  class?: ClassValue;
64
92
  testId?: string;
65
93
  }
94
+ /**
95
+ * Payload for `UserModalProps.onsave`. Discriminated by `mode` so
96
+ * create-mode consumers don't have to invent a fake `id`.
97
+ */
98
+ export type UserModalSavePayload = {
99
+ mode: 'create';
100
+ user: Omit<User, 'id'>;
101
+ } | {
102
+ mode: 'edit';
103
+ user: User;
104
+ };
105
+ /**
106
+ * Props for `<UserModal>` — the create/edit user form. Wraps `<Modal>`
107
+ * with role + permission selection + validation.
108
+ */
66
109
  export interface UserModalProps {
67
110
  open?: boolean;
111
+ /** User being edited. Pass `null`/`undefined` to create a new one. */
68
112
  user?: User | null;
69
113
  roles?: Role[];
114
+ /** Adapter for permission lookups (only the permission-related methods are used). */
70
115
  adapter?: UserManagementAdapter;
116
+ /** True while the parent is fetching the user's permission set. */
71
117
  loadingPermissions?: boolean;
72
- onSave: (user: User, mode: 'create' | 'edit') => void | Promise<void>;
73
- onClose?: () => void;
118
+ /**
119
+ * Fires when the form is submitted. Return a promise to keep the modal
120
+ * open during save. Payload is discriminated by `mode` — create-mode
121
+ * payloads carry an `Omit<User, 'id'>` so you don't have to invent an id.
122
+ */
123
+ onsave: (payload: UserModalSavePayload) => void | Promise<void>;
124
+ onclose?: () => void;
74
125
  class?: ClassValue;
75
126
  testId?: string;
76
127
  }
128
+ /**
129
+ * Props for `<UserViewModal>` — read-only user details panel with
130
+ * optional Edit button and API key regeneration affordance.
131
+ */
77
132
  export interface UserViewModalProps {
78
133
  open?: boolean;
79
134
  user: User | null;
80
135
  permissions?: Permission[];
81
136
  roles?: Role[];
82
- onEdit?: (user: User) => void;
83
- onRegenerateApiKey?: (userId: string) => Promise<void>;
84
- onClose: () => void;
137
+ /** When provided, an Edit button appears that calls this. */
138
+ onedit?: (user: User) => void;
139
+ /** When provided, a "Regenerate API key" button appears. Async. */
140
+ onregenerateapikey?: (userId: string) => Promise<void>;
141
+ onclose: () => void;
85
142
  class?: ClassValue;
86
143
  testId?: string;
87
144
  }
88
145
  /**
89
- * User Management Adapter Interface
146
+ * Adapter contract for `<UserManagement>` and its subcomponents. The
147
+ * adapter wires the UI to your backend — every method can be a
148
+ * SvelteKit remote function (`query`/`command`) or a plain async
149
+ * function. `PromiseLike` accepts both.
90
150
  *
91
- * Defines the contract for user management adapters.
92
- * Adapters can be remote function modules (returning RemoteQuery/RemoteCommand)
93
- * or regular async function modules (returning Promise).
151
+ * @example
152
+ * ```ts
153
+ * // src/lib/users/adapter.remote.ts
154
+ * import { query, command } from '$app/server';
94
155
  *
95
- * Uses PromiseLike to accept both Promise and RemoteQuery/RemoteCommand types.
156
+ * export const getUsers = query(async ({ page, pageSize }) => {
157
+ * const users = await db.users.list({ page, pageSize });
158
+ * return { users, totalUsers: await db.users.count() };
159
+ * });
160
+ * // …createUser, updateUser, etc.
161
+ *
162
+ * // src/routes/+page.svelte
163
+ * import * as adapter from '../users/adapter.remote';
164
+ * <UserManagement {adapter} {roles} />
165
+ * ```
96
166
  */
97
167
  export interface UserManagementAdapter {
98
168
  getUsers: (options: GetUsersOptions) => PromiseLike<GetUsersResult>;
@@ -108,6 +178,10 @@ export interface UserManagementAdapter {
108
178
  userId: string;
109
179
  permissions: string[];
110
180
  }) => PromiseLike<void>;
181
+ /**
182
+ * Optional — present only on adapters that issue API keys. When set,
183
+ * the UserViewModal renders a "Regenerate API key" button.
184
+ */
111
185
  generateApiKey?: (options: {
112
186
  userId: string;
113
187
  permissions: string[];
@@ -118,6 +192,7 @@ export interface UserManagementAdapter {
118
192
  message: string;
119
193
  verificationWarning?: string;
120
194
  }>;
195
+ /** Optional — used by the API-key panel to verify scopes after regeneration. */
121
196
  verifyToken?: (options: {
122
197
  apiKey: string;
123
198
  }) => PromiseLike<{
@@ -127,30 +202,42 @@ export interface UserManagementAdapter {
127
202
  token?: string;
128
203
  }>;
129
204
  }
205
+ /**
206
+ * Props for `<UserManagement>` — the all-in-one user dashboard
207
+ * combining table, search, filters, create/edit/view modals, and
208
+ * permission management. Pass an adapter and a list of roles; the
209
+ * component handles the rest.
210
+ *
211
+ * @example
212
+ * ```svelte
213
+ * <script lang="ts">
214
+ * import { UserManagement } from '@makolabs/ripple';
215
+ * import * as adapter from '../users/adapter.remote';
216
+ *
217
+ * const roles = [
218
+ * { value: 'admin', label: 'Admin', permissions: ['read', 'write', 'delete'] },
219
+ * { value: 'viewer', label: 'Viewer', permissions: ['read'] }
220
+ * ];
221
+ * </script>
222
+ *
223
+ * <UserManagement {adapter} {roles} />
224
+ * ```
225
+ */
130
226
  export interface UserManagementProps {
131
227
  /**
132
- * Adapter module containing remote functions or async functions
133
- * Should be imported from a .remote.ts file
134
- * If not provided, uses the default adapter from @makolabs/ripple
135
- *
136
- * Example:
137
- * ```ts
138
- * import * as adapter from './adapter.remote';
139
- * <UserManagement adapter={adapter} roles={roles} />
140
- * ```
228
+ * Adapter module containing remote functions or async functions.
229
+ * Should be imported from a `.remote.ts` file (SvelteKit remote
230
+ * functions) or a plain `.ts` module of async functions.
141
231
  */
142
232
  adapter: UserManagementAdapter;
143
- /**
144
- * Available roles for user assignment
145
- */
233
+ /** Available roles for user assignment. */
146
234
  roles?: Role[];
147
- /**
148
- * Available permissions for display (optional)
149
- */
235
+ /** Available permissions for display (optional). */
150
236
  permissions?: Permission[];
151
237
  class?: ClassValue;
152
238
  testId?: string;
153
239
  }
240
+ /** Map of field name → error message for in-form validation errors. */
154
241
  export interface FormErrors {
155
242
  [key: string]: string;
156
243
  }
@@ -11,7 +11,7 @@ export declare const Color: {
11
11
  export declare const Size: {
12
12
  readonly XS: "xs";
13
13
  readonly SM: "sm";
14
- readonly BASE: "base";
14
+ readonly MD: "md";
15
15
  readonly LG: "lg";
16
16
  readonly XL: "xl";
17
17
  readonly XXL: "2xl";
package/dist/variants.js CHANGED
@@ -10,7 +10,7 @@ export const Color = {
10
10
  export const Size = {
11
11
  XS: 'xs',
12
12
  SM: 'sm',
13
- BASE: 'base',
13
+ MD: 'md',
14
14
  LG: 'lg',
15
15
  XL: 'xl',
16
16
  XXL: '2xl'
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@makolabs/ripple",
3
- "version": "2.5.9",
3
+ "version": "3.0.1",
4
4
  "description": "Simple Svelte 5 powered component library ✨",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "https://github.com/makolabsai/ripple-ui.git"
8
+ "url": "git+https://github.com/makolabsai/ripple-ui.git"
9
9
  },
10
10
  "scripts": {
11
11
  "dev": "vite dev",
@@ -29,7 +29,9 @@
29
29
  "files": [
30
30
  "dist",
31
31
  "!dist/**/*.test.*",
32
- "!dist/**/*.spec.*"
32
+ "!dist/**/*.spec.*",
33
+ "!dist/**/*TestWrapper.svelte",
34
+ "!dist/**/*TestWrapper.svelte.d.ts"
33
35
  ],
34
36
  "sideEffects": [
35
37
  "**/*.css"
@@ -52,7 +54,8 @@
52
54
  }
53
55
  },
54
56
  "peerDependencies": {
55
- "svelte": "^5.0.0 || ^6.0.0"
57
+ "svelte": "^5.0.0 || ^6.0.0",
58
+ "@sveltejs/kit": "^2.0.0"
56
59
  },
57
60
  "devDependencies": {
58
61
  "@eslint/compat": "^1.4.1",
@@ -1,13 +0,0 @@
1
- export interface AIConfig {
2
- provider: 'openai' | 'anthropic' | 'ollama';
3
- apiKey?: string;
4
- model?: string;
5
- baseUrl?: string;
6
- }
7
- export declare function getAIConfig(): AIConfig;
8
- export declare function validateAIConfig(config: AIConfig): boolean;
9
- export declare const ENV_GUIDE: {
10
- openai: string[];
11
- anthropic: string[];
12
- ollama: string[];
13
- };
package/dist/config/ai.js DELETED
@@ -1,44 +0,0 @@
1
- import { browser } from '$app/environment';
2
- import { dev } from '$app/environment';
3
- export function getAIConfig() {
4
- if (!browser) {
5
- return {
6
- provider: 'openai'
7
- };
8
- }
9
- const config = {
10
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
- provider: import.meta.env.VITE_AI_PROVIDER || 'openai',
12
- apiKey: import.meta.env.VITE_OPENAI_API_KEY,
13
- model: import.meta.env.VITE_OPENAI_MODEL || 'gpt-4-turbo-preview',
14
- baseUrl: import.meta.env.VITE_OPENAI_BASE_URL || 'https://api.openai.com/v1'
15
- };
16
- // In development, provide helpful warnings
17
- if (dev && !config.apiKey && config.provider === 'openai') {
18
- console.warn('⚠️ OpenAI API key not found. Set VITE_OPENAI_API_KEY in your .env file');
19
- console.warn('💡 Create a .env file with: VITE_OPENAI_API_KEY=sk-your-key-here');
20
- }
21
- return config;
22
- }
23
- export function validateAIConfig(config) {
24
- switch (config.provider) {
25
- case 'openai':
26
- return !!config.apiKey;
27
- case 'anthropic':
28
- return !!config.apiKey;
29
- case 'ollama':
30
- return !!config.baseUrl;
31
- default:
32
- return false;
33
- }
34
- }
35
- // Environment variables guide
36
- export const ENV_GUIDE = {
37
- openai: [
38
- 'VITE_OPENAI_API_KEY=sk-your-openai-key',
39
- 'VITE_OPENAI_MODEL=gpt-4-turbo-preview (optional)',
40
- 'VITE_OPENAI_BASE_URL=https://api.openai.com/v1 (optional)'
41
- ],
42
- anthropic: ['VITE_ANTHROPIC_API_KEY=your-anthropic-key', 'VITE_AI_PROVIDER=anthropic'],
43
- ollama: ['VITE_OLLAMA_BASE_URL=http://localhost:11434', 'VITE_AI_PROVIDER=ollama']
44
- };
@@ -1,25 +0,0 @@
1
- <script lang="ts">
2
- import EmptyState from './EmptyState.svelte';
3
- import type { EmptyStateProps } from '../../index.js';
4
-
5
- type Props = Omit<EmptyStateProps, 'icon' | 'action'> & {
6
- iconText?: string;
7
- actionText?: string;
8
- };
9
-
10
- let { iconText, actionText, ...rest }: Props = $props();
11
- </script>
12
-
13
- {#snippet iconSnippet()}
14
- <span data-testid="wrapper-icon">{iconText}</span>
15
- {/snippet}
16
-
17
- {#snippet actionSnippet()}
18
- <button type="button" data-testid="wrapper-action">{actionText}</button>
19
- {/snippet}
20
-
21
- <EmptyState
22
- {...rest}
23
- icon={iconText ? iconSnippet : undefined}
24
- action={actionText ? actionSnippet : undefined}
25
- />
@@ -1,8 +0,0 @@
1
- import type { EmptyStateProps } from '../../index.js';
2
- type Props = Omit<EmptyStateProps, 'icon' | 'action'> & {
3
- iconText?: string;
4
- actionText?: string;
5
- };
6
- declare const EmptyStateTestWrapper: import("svelte").Component<Props, {}, "">;
7
- type EmptyStateTestWrapper = ReturnType<typeof EmptyStateTestWrapper>;
8
- export default EmptyStateTestWrapper;
@@ -1,14 +0,0 @@
1
- <script lang="ts">
2
- import Tooltip from './Tooltip.svelte';
3
- import type { TooltipProps } from '../../index.js';
4
-
5
- type Props = Omit<TooltipProps, 'children'> & {
6
- triggerText?: string;
7
- };
8
-
9
- let { triggerText = 'trigger', ...rest }: Props = $props();
10
- </script>
11
-
12
- <Tooltip {...rest}>
13
- <button type="button">{triggerText}</button>
14
- </Tooltip>
@@ -1,7 +0,0 @@
1
- import type { TooltipProps } from '../../index.js';
2
- type Props = Omit<TooltipProps, 'children'> & {
3
- triggerText?: string;
4
- };
5
- declare const TooltipTestWrapper: import("svelte").Component<Props, {}, "">;
6
- type TooltipTestWrapper = ReturnType<typeof TooltipTestWrapper>;
7
- export default TooltipTestWrapper;
@@ -1,14 +0,0 @@
1
- /**
2
- * Logs a console.warn once per component+prop combination when a deprecated prop is used.
3
- * @param component - Component name (e.g. 'Modal', 'Card')
4
- * @param props - The raw props object from $props()
5
- * @param map - Map of deprecated prop names to their replacements (e.g. { titleclass: 'titleClass' })
6
- */
7
- export declare function warnDeprecatedProps(component: string, props: Record<string, unknown>, map: Record<string, string>): void;
8
- /**
9
- * Reset warnings — only for testing.
10
- * Note: In SSR, the warned Set persists across requests within the same process,
11
- * so warnings will only fire once per server lifetime. This is acceptable for
12
- * development-time deprecation notices.
13
- */
14
- export declare function resetDeprecationWarnings(): void;
@@ -1,24 +0,0 @@
1
- const warned = new Set();
2
- /**
3
- * Logs a console.warn once per component+prop combination when a deprecated prop is used.
4
- * @param component - Component name (e.g. 'Modal', 'Card')
5
- * @param props - The raw props object from $props()
6
- * @param map - Map of deprecated prop names to their replacements (e.g. { titleclass: 'titleClass' })
7
- */
8
- export function warnDeprecatedProps(component, props, map) {
9
- for (const [oldName, newName] of Object.entries(map)) {
10
- if (props[oldName] !== undefined && !warned.has(`${component}.${oldName}`)) {
11
- warned.add(`${component}.${oldName}`);
12
- console.warn(`[ripple-ui] ${component}: "${oldName}" is deprecated, use "${newName}" instead.`);
13
- }
14
- }
15
- }
16
- /**
17
- * Reset warnings — only for testing.
18
- * Note: In SSR, the warned Set persists across requests within the same process,
19
- * so warnings will only fire once per server lifetime. This is acceptable for
20
- * development-time deprecation notices.
21
- */
22
- export function resetDeprecationWarnings() {
23
- warned.clear();
24
- }
@@ -1,17 +0,0 @@
1
- <script lang="ts">
2
- import ModalFooter from './ModalFooter.svelte';
3
-
4
- let {
5
- text = '',
6
- align,
7
- class: className
8
- }: {
9
- text?: string;
10
- align?: 'start' | 'center' | 'end' | 'between';
11
- class?: string;
12
- } = $props();
13
- </script>
14
-
15
- <ModalFooter {align} class={className}>
16
- <button type="button">{text}</button>
17
- </ModalFooter>
@@ -1,8 +0,0 @@
1
- type $$ComponentProps = {
2
- text?: string;
3
- align?: 'start' | 'center' | 'end' | 'between';
4
- class?: string;
5
- };
6
- declare const ModalFooterTestWrapper: import("svelte").Component<$$ComponentProps, {}, "">;
7
- type ModalFooterTestWrapper = ReturnType<typeof ModalFooterTestWrapper>;
8
- export default ModalFooterTestWrapper;