@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.
- package/README.md +403 -497
- package/dist/adapters/storage/S3Adapter.d.ts +49 -1
- package/dist/adapters/storage/S3Adapter.js +38 -1
- package/dist/adapters/storage/types.d.ts +20 -0
- package/dist/ai/AIChatInterface.svelte +2 -1
- package/dist/ai/AIChatInterface.svelte.d.ts +2 -1
- package/dist/ai/CodeRenderer.svelte +7 -2
- package/dist/ai/CodeRenderer.svelte.d.ts +2 -1
- package/dist/ai/ComposeDropdown.svelte +1 -1
- package/dist/ai/MessageBox.svelte +3 -3
- package/dist/ai/MessageBox.svelte.d.ts +3 -2
- package/dist/ai/ThinkingDisplay.svelte +4 -3
- package/dist/ai/ThinkingDisplay.svelte.d.ts +2 -1
- package/dist/ai/ai-types.d.ts +55 -1
- package/dist/button/Button.svelte +5 -5
- package/dist/button/button-types.d.ts +49 -4
- package/dist/button/button.d.ts +9 -9
- package/dist/button/button.js +6 -6
- package/dist/charts/Chart.svelte +8 -16
- package/dist/charts/chart-types.d.ts +78 -1
- package/dist/drawer/Drawer.svelte +6 -26
- package/dist/drawer/drawer-types.d.ts +33 -12
- package/dist/drawer/drawer.d.ts +3 -3
- package/dist/drawer/drawer.js +1 -1
- package/dist/elements/accordion/Accordion.svelte +6 -17
- package/dist/elements/accordion/accordion-types.d.ts +53 -6
- package/dist/elements/alert/Alert.svelte +3 -0
- package/dist/elements/badge/Badge.svelte +1 -1
- package/dist/elements/badge/badge-types.d.ts +22 -0
- package/dist/elements/badge/badge.d.ts +3 -3
- package/dist/elements/badge/badge.js +1 -1
- package/dist/elements/combobox/ComboBox.svelte +247 -0
- package/dist/elements/combobox/ComboBox.svelte.d.ts +4 -0
- package/dist/elements/combobox/combobox-types.d.ts +41 -0
- package/dist/elements/combobox/combobox-types.js +1 -0
- package/dist/elements/context-menu/ContextMenu.svelte +137 -0
- package/dist/elements/context-menu/ContextMenu.svelte.d.ts +4 -0
- package/dist/elements/context-menu/context-menu-types.d.ts +40 -0
- package/dist/elements/context-menu/context-menu-types.js +1 -0
- package/dist/elements/dropdown/Dropdown.svelte +1 -1
- package/dist/elements/dropdown/Select.svelte +4 -1
- package/dist/elements/dropdown/dropdown-types.d.ts +114 -0
- package/dist/elements/dropdown/dropdown.d.ts +3 -3
- package/dist/elements/dropdown/dropdown.js +2 -2
- package/dist/elements/dropdown/select.d.ts +3 -3
- package/dist/elements/dropdown/select.js +2 -2
- package/dist/elements/empty-state/EmptyState.svelte +1 -1
- package/dist/elements/empty-state/empty-state-types.d.ts +32 -1
- package/dist/elements/empty-state/empty-state.d.ts +3 -3
- package/dist/elements/empty-state/empty-state.js +2 -2
- package/dist/elements/file-upload/FileUpload.svelte +5 -0
- package/dist/elements/file-upload/file-upload-types.d.ts +59 -0
- package/dist/elements/pagination/Pagination.svelte +53 -21
- package/dist/elements/pagination/Pagination.svelte.d.ts +33 -5
- package/dist/elements/popover/Popover.svelte +234 -0
- package/dist/elements/popover/Popover.svelte.d.ts +4 -0
- package/dist/elements/popover/index.d.ts +2 -0
- package/dist/elements/popover/index.js +1 -0
- package/dist/elements/popover/popover-types.d.ts +60 -0
- package/dist/elements/popover/popover-types.js +1 -0
- package/dist/elements/progress/Progress.svelte +32 -7
- package/dist/elements/progress/progress-types.d.ts +48 -1
- package/dist/elements/skeleton/Skeleton.svelte +56 -0
- package/dist/elements/skeleton/Skeleton.svelte.d.ts +4 -0
- package/dist/elements/skeleton/index.d.ts +2 -0
- package/dist/elements/skeleton/index.js +1 -0
- package/dist/elements/skeleton/skeleton-types.d.ts +50 -0
- package/dist/elements/skeleton/skeleton-types.js +1 -0
- package/dist/elements/spinner/Spinner.svelte +1 -1
- package/dist/elements/spinner/spinner-types.d.ts +20 -0
- package/dist/elements/spinner/spinner.d.ts +3 -3
- package/dist/elements/spinner/spinner.js +2 -2
- package/dist/elements/tooltip/Tooltip.svelte +108 -11
- package/dist/elements/tooltip/tooltip-types.d.ts +49 -1
- package/dist/file-browser/FileBrowser.svelte +21 -12
- package/dist/filters/CompactFilters.svelte +221 -33
- package/dist/filters/CompactFilters.svelte.d.ts +1 -1
- package/dist/filters/FilterBar.svelte +184 -0
- package/dist/filters/FilterBar.svelte.d.ts +4 -0
- package/dist/filters/FilterPopover.svelte +346 -0
- package/dist/filters/FilterPopover.svelte.d.ts +4 -0
- package/dist/filters/date-presets.d.ts +15 -0
- package/dist/filters/date-presets.js +107 -0
- package/dist/filters/filter-types.d.ts +69 -3
- package/dist/filters/index.d.ts +5 -0
- package/dist/filters/index.js +4 -0
- package/dist/filters/sync-filters-to-url.svelte.d.ts +37 -0
- package/dist/filters/sync-filters-to-url.svelte.js +114 -0
- package/dist/forms/DateRange.svelte +4 -2
- package/dist/forms/Input.svelte +2 -2
- package/dist/forms/MarketSelector.svelte +8 -3
- package/dist/forms/NumberInput.svelte +4 -4
- package/dist/forms/RadioGroup.svelte +123 -0
- package/dist/forms/RadioGroup.svelte.d.ts +4 -0
- package/dist/forms/SegmentedControl.svelte +11 -4
- package/dist/forms/Slider.svelte +72 -3
- package/dist/forms/Tags.svelte +14 -5
- package/dist/forms/Textarea.svelte +126 -0
- package/dist/forms/Textarea.svelte.d.ts +4 -0
- package/dist/forms/Toggle.svelte +8 -8
- package/dist/forms/calendar/Calendar.svelte +218 -0
- package/dist/forms/calendar/Calendar.svelte.d.ts +4 -0
- package/dist/forms/calendar/calendar-types.d.ts +46 -0
- package/dist/forms/calendar/calendar-types.js +1 -0
- package/dist/forms/calendar/index.d.ts +2 -0
- package/dist/forms/calendar/index.js +1 -0
- package/dist/forms/date-picker/DatePicker.svelte +144 -0
- package/dist/forms/date-picker/DatePicker.svelte.d.ts +4 -0
- package/dist/forms/date-picker/date-picker-types.d.ts +29 -0
- package/dist/forms/date-picker/date-picker-types.js +1 -0
- package/dist/forms/form-types.d.ts +425 -6
- package/dist/forms/market/market-selector-types.d.ts +52 -1
- package/dist/forms/segmented-control.d.ts +5 -2
- package/dist/forms/segmented-control.js +16 -5
- package/dist/forms/slider.d.ts +3 -3
- package/dist/forms/slider.js +2 -2
- package/dist/funcs/user-management.remote.js +1 -1
- package/dist/header/Breadcrumbs.svelte +4 -20
- package/dist/header/PageHeader.svelte +6 -14
- package/dist/header/breadcrumbs.d.ts +3 -11
- package/dist/header/breadcrumbs.js +10 -5
- package/dist/header/header-types.d.ts +62 -11
- package/dist/index.d.ts +35 -9
- package/dist/index.js +24 -4
- package/dist/layout/activity-list/ActivityList.svelte +13 -7
- package/dist/layout/activity-list/activity-list-types.d.ts +46 -7
- package/dist/layout/card/Card.svelte +12 -15
- package/dist/layout/card/MetricCard.svelte +50 -32
- package/dist/layout/card/card-types.d.ts +114 -4
- package/dist/layout/navbar/navbar-types.d.ts +48 -0
- package/dist/layout/navbar/navbar.d.ts +3 -3
- package/dist/layout/navbar/navbar.js +2 -2
- package/dist/layout/sidebar/Sidebar.svelte +87 -11
- package/dist/layout/sidebar/sidebar-types.d.ts +60 -1
- package/dist/layout/stepper/Stepper.svelte +288 -0
- package/dist/layout/stepper/Stepper.svelte.d.ts +4 -0
- package/dist/layout/stepper/stepper-types.d.ts +80 -0
- package/dist/layout/stepper/stepper-types.js +1 -0
- package/dist/layout/table/Table.svelte +91 -85
- package/dist/layout/table/table-types.d.ts +148 -24
- package/dist/layout/table/table.d.ts +3 -3
- package/dist/layout/table/table.js +2 -2
- package/dist/layout/tabs/Tab.svelte +6 -2
- package/dist/layout/tabs/Tab.svelte.d.ts +4 -1
- package/dist/layout/tabs/TabGroup.svelte +9 -2
- package/dist/layout/tabs/tabs-types.d.ts +63 -0
- package/dist/layout/tabs/tabs.d.ts +3 -3
- package/dist/layout/tabs/tabs.js +12 -6
- package/dist/modal/ConfirmDialog.svelte +65 -0
- package/dist/modal/ConfirmDialog.svelte.d.ts +4 -0
- package/dist/modal/Modal.svelte +6 -26
- package/dist/modal/confirm-dialog-types.d.ts +39 -0
- package/dist/modal/confirm-dialog-types.js +1 -0
- package/dist/modal/modal-types.d.ts +51 -12
- package/dist/modal/modal.d.ts +3 -3
- package/dist/modal/modal.js +3 -3
- package/dist/pipeline/Pipeline.svelte +8 -3
- package/dist/pipeline/pipeline-types.d.ts +55 -3
- package/dist/pipeline/pipeline.d.ts +18 -3
- package/dist/pipeline/pipeline.js +7 -2
- package/dist/server/s3.d.ts +35 -3
- package/dist/sonner/Toaster.svelte +29 -0
- package/dist/sonner/Toaster.svelte.d.ts +4 -0
- package/dist/sonner/index.d.ts +21 -0
- package/dist/sonner/index.js +20 -0
- package/dist/user-management/UserManagement.svelte +22 -16
- package/dist/user-management/UserModal.svelte +10 -7
- package/dist/user-management/UserTable.svelte +16 -17
- package/dist/user-management/UserViewModal.svelte +11 -11
- package/dist/user-management/user-management-types.d.ts +118 -31
- package/dist/variants.d.ts +1 -1
- package/dist/variants.js +1 -1
- package/package.json +7 -4
- package/dist/config/ai.d.ts +0 -13
- package/dist/config/ai.js +0 -44
- package/dist/elements/empty-state/EmptyStateTestWrapper.svelte +0 -25
- package/dist/elements/empty-state/EmptyStateTestWrapper.svelte.d.ts +0 -8
- package/dist/elements/tooltip/TooltipTestWrapper.svelte +0 -14
- package/dist/elements/tooltip/TooltipTestWrapper.svelte.d.ts +0 -7
- package/dist/helper/deprecation.d.ts +0 -14
- package/dist/helper/deprecation.js +0 -24
- package/dist/modal/ModalFooterTestWrapper.svelte +0 -17
- 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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
73
|
-
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* // src/lib/users/adapter.remote.ts
|
|
154
|
+
* import { query, command } from '$app/server';
|
|
94
155
|
*
|
|
95
|
-
*
|
|
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
|
|
134
|
-
*
|
|
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
|
}
|
package/dist/variants.d.ts
CHANGED
package/dist/variants.js
CHANGED
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@makolabs/ripple",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
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",
|
package/dist/config/ai.d.ts
DELETED
|
@@ -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;
|