@makolabs/ripple 1.2.3 → 1.2.4

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 (106) hide show
  1. package/README.md +77 -0
  2. package/dist/adapters/ai/OpenAIAdapter.js +16 -11
  3. package/dist/adapters/ai/types.d.ts +3 -3
  4. package/dist/adapters/storage/BaseAdapter.d.ts +1 -1
  5. package/dist/adapters/storage/BaseAdapter.js +1 -1
  6. package/dist/adapters/storage/S3Adapter.js +2 -2
  7. package/dist/ai/AIChatInterface.svelte +32 -34
  8. package/dist/ai/AIChatInterface.svelte.d.ts +0 -1
  9. package/dist/ai/AIChatInterfaceTestWrapper.svelte +26 -0
  10. package/dist/ai/AIChatInterfaceTestWrapper.svelte.d.ts +17 -0
  11. package/dist/ai/ChatInput.svelte +7 -15
  12. package/dist/ai/ChatInput.svelte.d.ts +0 -2
  13. package/dist/ai/CodeRenderer.svelte +25 -12
  14. package/dist/ai/ComposeDropdown.svelte +17 -14
  15. package/dist/ai/MermaidRenderer.svelte +21 -17
  16. package/dist/ai/MermaidRenderer.svelte.d.ts +0 -1
  17. package/dist/ai/MessageBox.svelte +10 -7
  18. package/dist/ai/ThinkingDisplay.svelte +67 -43
  19. package/dist/ai/ai-chat-interface.d.ts +22 -21
  20. package/dist/ai/ai-chat-interface.js +8 -7
  21. package/dist/ai/content-detector.js +2 -2
  22. package/dist/button/ButtonTestWrapper.svelte +10 -0
  23. package/dist/button/ButtonTestWrapper.svelte.d.ts +7 -0
  24. package/dist/charts/Chart.svelte +6 -1
  25. package/dist/config/ai.js +1 -0
  26. package/dist/drawer/DrawerTestWrapper.svelte +19 -0
  27. package/dist/drawer/DrawerTestWrapper.svelte.d.ts +9 -0
  28. package/dist/drawer/drawer.d.ts +19 -18
  29. package/dist/drawer/drawer.js +7 -6
  30. package/dist/elements/accordion/Accordion.svelte +1 -1
  31. package/dist/elements/accordion/Accordion.svelte.d.ts +1 -1
  32. package/dist/elements/accordion/AccordionTestWrapper.svelte +21 -0
  33. package/dist/elements/accordion/AccordionTestWrapper.svelte.d.ts +10 -0
  34. package/dist/elements/badge/Badge.svelte +5 -4
  35. package/dist/elements/badge/BadgeTestWrapper.svelte +14 -0
  36. package/dist/elements/badge/BadgeTestWrapper.svelte.d.ts +9 -0
  37. package/dist/elements/badge/badge.d.ts +40 -39
  38. package/dist/elements/badge/badge.js +14 -13
  39. package/dist/elements/dropdown/Dropdown.svelte +0 -1
  40. package/dist/elements/pagination/Pagination.svelte +20 -26
  41. package/dist/elements/progress/Progress.svelte +3 -3
  42. package/dist/elements/timeline/Timeline.svelte +1 -1
  43. package/dist/file-browser/FileBrowser.svelte +7 -10
  44. package/dist/filters/CompactFilters.svelte +3 -3
  45. package/dist/forms/Checkbox.svelte +0 -1
  46. package/dist/forms/CheckboxTestWrapper.svelte +8 -0
  47. package/dist/forms/CheckboxTestWrapper.svelte.d.ts +4 -0
  48. package/dist/forms/DateRange.svelte +186 -198
  49. package/dist/forms/Form.svelte +1 -0
  50. package/dist/forms/Input.svelte +14 -5
  51. package/dist/forms/InputTestWrapper.svelte +8 -0
  52. package/dist/forms/InputTestWrapper.svelte.d.ts +4 -0
  53. package/dist/forms/NumberInput.svelte +2 -2
  54. package/dist/forms/RadioInputs.svelte +1 -1
  55. package/dist/forms/RadioPill.svelte +1 -1
  56. package/dist/forms/Slider.svelte +2 -2
  57. package/dist/forms/Tags.svelte +3 -3
  58. package/dist/forms/ToggleTestWrapper.svelte +8 -0
  59. package/dist/forms/ToggleTestWrapper.svelte.d.ts +7 -0
  60. package/dist/forms/slider.js +1 -1
  61. package/dist/header/PageHeader.svelte +2 -1
  62. package/dist/header/breadcrumbs.d.ts +47 -33
  63. package/dist/header/breadcrumbs.js +12 -11
  64. package/dist/index.d.ts +3 -2
  65. package/dist/index.js +2 -0
  66. package/dist/layout/activity-list/ActivityList.svelte +9 -11
  67. package/dist/layout/card/CardTestWrapper.svelte +15 -0
  68. package/dist/layout/card/CardTestWrapper.svelte.d.ts +7 -0
  69. package/dist/layout/card/RankedCard.svelte +2 -3
  70. package/dist/layout/navbar/navbar.d.ts +19 -18
  71. package/dist/layout/navbar/navbar.js +7 -6
  72. package/dist/layout/sidebar/NavGroup.svelte +1 -0
  73. package/dist/layout/table/Cells.svelte +5 -5
  74. package/dist/layout/table/Table.svelte +8 -8
  75. package/dist/layout/table/table.d.ts +28 -24
  76. package/dist/layout/table/table.js +14 -13
  77. package/dist/modal/Modal.svelte +1 -1
  78. package/dist/modal/ModalTestWrapper.svelte +20 -0
  79. package/dist/modal/ModalTestWrapper.svelte.d.ts +8 -0
  80. package/dist/modal/modal.d.ts +1 -20
  81. package/dist/pipeline/Pipeline.svelte +29 -17
  82. package/dist/user-management/README.md +417 -0
  83. package/dist/user-management/UserManagement.svelte +184 -0
  84. package/dist/user-management/UserManagement.svelte.d.ts +4 -0
  85. package/dist/user-management/UserManagementTestWrapper.svelte +47 -0
  86. package/dist/user-management/UserManagementTestWrapper.svelte.d.ts +7 -0
  87. package/dist/user-management/UserModal.svelte +303 -0
  88. package/dist/user-management/UserModal.svelte.d.ts +4 -0
  89. package/dist/user-management/UserModalTestWrapper.svelte +22 -0
  90. package/dist/user-management/UserModalTestWrapper.svelte.d.ts +7 -0
  91. package/dist/user-management/UserTable.svelte +219 -0
  92. package/dist/user-management/UserTable.svelte.d.ts +4 -0
  93. package/dist/user-management/UserTableTestWrapper.svelte +41 -0
  94. package/dist/user-management/UserTableTestWrapper.svelte.d.ts +7 -0
  95. package/dist/user-management/UserViewModal.svelte +282 -0
  96. package/dist/user-management/UserViewModal.svelte.d.ts +4 -0
  97. package/dist/user-management/UserViewModalTestWrapper.svelte +22 -0
  98. package/dist/user-management/UserViewModalTestWrapper.svelte.d.ts +7 -0
  99. package/dist/user-management/index.d.ts +10 -0
  100. package/dist/user-management/index.js +11 -0
  101. package/dist/user-management/user-management.d.ts +99 -0
  102. package/dist/user-management/user-management.js +42 -0
  103. package/package.json +3 -1
  104. package/dist/types/markdown.d.ts +0 -14
  105. package/dist/types/variants.d.ts +0 -1
  106. package/dist/types/variants.js +0 -1
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { cn } from '../../helper/cls.js';
3
3
  import { table } from './table.js';
4
- import type { TableProps, SortDirection, SortState } from '../../index.js';
4
+ import type { TableProps, SortDirection, SortState, DataRow } from '../../index.js';
5
5
  import Pagination from '../../elements/pagination/Pagination.svelte';
6
6
  import Card from '../../layout/card/Card.svelte';
7
7
 
@@ -42,6 +42,7 @@
42
42
  title,
43
43
  subtitle,
44
44
  headerActions
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
46
  }: TableProps<any> = $props();
46
47
 
47
48
  // Determine if we should use Card wrapper
@@ -70,12 +71,11 @@
70
71
  const showPaginationControls = $derived(
71
72
  pagination &&
72
73
  showPagination &&
73
- (data.length > internalPageSize || totalItems > internalPageSize)
74
+ (data.length > internalPageSize || (totalItems ?? 0) > internalPageSize)
74
75
  );
75
76
 
76
77
  // Calculate total items and pages
77
78
  const effectiveTotalItems = $derived(totalItems !== undefined ? totalItems : data.length);
78
- const totalPages = $derived(Math.ceil(effectiveTotalItems / internalPageSize));
79
79
 
80
80
  const {
81
81
  base: baseClass,
@@ -154,7 +154,7 @@
154
154
  onsort(newSortState);
155
155
  }
156
156
 
157
- function toggleRowSelection(row: any) {
157
+ function toggleRowSelection(row: DataRow) {
158
158
  if (!selectable) return;
159
159
 
160
160
  const index = selected.findIndex((r) => r === row);
@@ -167,11 +167,11 @@
167
167
  onselect(selected);
168
168
  }
169
169
 
170
- function isRowSelected(row: any) {
170
+ function isRowSelected(row: DataRow) {
171
171
  return selected.includes(row);
172
172
  }
173
173
 
174
- function handleRowClick(row: any, index: number) {
174
+ function handleRowClick(row: DataRow, index: number) {
175
175
  onrowclick?.(row, index);
176
176
  }
177
177
 
@@ -367,7 +367,7 @@
367
367
  </td>
368
368
  </tr>
369
369
  {:else}
370
- {#each getPaginatedData() as row, rowIndex}
370
+ {#each getPaginatedData() as row, rowIndex (rowIndex)}
371
371
  <tr
372
372
  class={cn(trClasses, rowclass(row, rowIndex), {
373
373
  'bg-primary-100': selectable && isRowSelected(row),
@@ -595,7 +595,7 @@
595
595
  </td>
596
596
  </tr>
597
597
  {:else}
598
- {#each getPaginatedData() as row, rowIndex}
598
+ {#each getPaginatedData() as row, rowIndex (rowIndex)}
599
599
  <tr
600
600
  class={cn(trClasses, rowclass(row, rowIndex), {
601
601
  'bg-primary-100': selectable && isRowSelected(row),
@@ -1,3 +1,4 @@
1
+ import { Color } from '../../variants.js';
1
2
  export declare const table: import("tailwind-variants").TVReturnType<{
2
3
  size: {
3
4
  xs: {
@@ -26,32 +27,32 @@ export declare const table: import("tailwind-variants").TVReturnType<{
26
27
  };
27
28
  };
28
29
  color: {
29
- default: {
30
+ [Color.PRIMARY]: {
30
31
  th: string;
32
+ tr: string;
31
33
  };
32
- primary: {
34
+ [Color.SECONDARY]: {
33
35
  th: string;
34
36
  tr: string;
35
37
  };
36
- secondary: {
38
+ [Color.INFO]: {
37
39
  th: string;
38
40
  tr: string;
39
41
  };
40
- info: {
42
+ [Color.SUCCESS]: {
41
43
  th: string;
42
44
  tr: string;
43
45
  };
44
- success: {
46
+ [Color.WARNING]: {
45
47
  th: string;
46
48
  tr: string;
47
49
  };
48
- warning: {
50
+ [Color.DANGER]: {
49
51
  th: string;
50
52
  tr: string;
51
53
  };
52
- danger: {
54
+ default: {
53
55
  th: string;
54
- tr: string;
55
56
  };
56
57
  };
57
58
  bordered: {
@@ -111,32 +112,32 @@ export declare const table: import("tailwind-variants").TVReturnType<{
111
112
  };
112
113
  };
113
114
  color: {
114
- default: {
115
+ [Color.PRIMARY]: {
115
116
  th: string;
117
+ tr: string;
116
118
  };
117
- primary: {
119
+ [Color.SECONDARY]: {
118
120
  th: string;
119
121
  tr: string;
120
122
  };
121
- secondary: {
123
+ [Color.INFO]: {
122
124
  th: string;
123
125
  tr: string;
124
126
  };
125
- info: {
127
+ [Color.SUCCESS]: {
126
128
  th: string;
127
129
  tr: string;
128
130
  };
129
- success: {
131
+ [Color.WARNING]: {
130
132
  th: string;
131
133
  tr: string;
132
134
  };
133
- warning: {
135
+ [Color.DANGER]: {
134
136
  th: string;
135
137
  tr: string;
136
138
  };
137
- danger: {
139
+ default: {
138
140
  th: string;
139
- tr: string;
140
141
  };
141
142
  };
142
143
  bordered: {
@@ -196,32 +197,32 @@ export declare const table: import("tailwind-variants").TVReturnType<{
196
197
  };
197
198
  };
198
199
  color: {
199
- default: {
200
+ [Color.PRIMARY]: {
200
201
  th: string;
202
+ tr: string;
201
203
  };
202
- primary: {
204
+ [Color.SECONDARY]: {
203
205
  th: string;
204
206
  tr: string;
205
207
  };
206
- secondary: {
208
+ [Color.INFO]: {
207
209
  th: string;
208
210
  tr: string;
209
211
  };
210
- info: {
212
+ [Color.SUCCESS]: {
211
213
  th: string;
212
214
  tr: string;
213
215
  };
214
- success: {
216
+ [Color.WARNING]: {
215
217
  th: string;
216
218
  tr: string;
217
219
  };
218
- warning: {
220
+ [Color.DANGER]: {
219
221
  th: string;
220
222
  tr: string;
221
223
  };
222
- danger: {
224
+ default: {
223
225
  th: string;
224
- tr: string;
225
226
  };
226
227
  };
227
228
  bordered: {
@@ -254,3 +255,6 @@ export declare const table: import("tailwind-variants").TVReturnType<{
254
255
  sortButton: string;
255
256
  sortIcon: string;
256
257
  }, undefined, unknown, unknown, undefined>>;
258
+ export type StatusType = 'active' | 'inactive' | 'pending' | 'error' | 'default';
259
+ export type KeyType = string;
260
+ export type DataRow = Record<string, unknown>;
@@ -1,4 +1,5 @@
1
1
  import { tv } from 'tailwind-variants';
2
+ import { Color } from '../../variants.js';
2
3
  export const table = tv({
3
4
  slots: {
4
5
  base: 'w-full',
@@ -18,55 +19,55 @@ export const table = tv({
18
19
  variants: {
19
20
  size: {
20
21
  xs: {
21
- th: 'px-2 py-1.5',
22
+ th: 'px-2 py-1.5 text-xs',
22
23
  td: 'px-2 py-1.5 text-xs'
23
24
  },
24
25
  sm: {
25
- th: 'px-3 py-2',
26
+ th: 'px-3 py-2 text-xs',
26
27
  td: 'px-3 py-2 text-sm'
27
28
  },
28
29
  base: {
29
- th: 'px-3 py-2',
30
+ th: 'px-4 py-3 text-sm',
30
31
  td: 'px-4 py-3 text-sm'
31
32
  },
32
33
  lg: {
33
- th: 'px-4 py-3',
34
+ th: 'px-6 py-4 text-sm',
34
35
  td: 'px-6 py-4 text-base'
35
36
  },
36
37
  xl: {
37
- th: 'px-5 py-4',
38
+ th: 'px-8 py-5 text-base',
38
39
  td: 'px-8 py-5 text-base'
39
40
  },
40
41
  '2xl': {
41
- th: 'px-6 py-5',
42
+ th: 'px-10 py-6 text-lg',
42
43
  td: 'px-10 py-6 text-lg'
43
44
  }
44
45
  },
45
46
  color: {
46
47
  default: {
47
- th: 'bg-gray-50'
48
+ th: 'text-default-700 bg-default-50'
48
49
  },
49
- primary: {
50
+ [Color.PRIMARY]: {
50
51
  th: 'text-primary-700 bg-primary-50',
51
52
  tr: 'hover:bg-primary-50'
52
53
  },
53
- secondary: {
54
+ [Color.SECONDARY]: {
54
55
  th: 'text-secondary-700 bg-secondary-50',
55
56
  tr: 'hover:bg-secondary-50'
56
57
  },
57
- info: {
58
+ [Color.INFO]: {
58
59
  th: 'text-info-700 bg-info-50',
59
60
  tr: 'hover:bg-info-50'
60
61
  },
61
- success: {
62
+ [Color.SUCCESS]: {
62
63
  th: 'text-success-700 bg-success-50',
63
64
  tr: 'hover:bg-success-50'
64
65
  },
65
- warning: {
66
+ [Color.WARNING]: {
66
67
  th: 'text-warning-700 bg-warning-50',
67
68
  tr: 'hover:bg-warning-50'
68
69
  },
69
- danger: {
70
+ [Color.DANGER]: {
70
71
  th: 'text-danger-700 bg-danger-50',
71
72
  tr: 'hover:bg-danger-50'
72
73
  }
@@ -40,6 +40,7 @@
40
40
  );
41
41
  const footerClass = $derived(cn(styles.footer(), ''));
42
42
  const closeClass = $derived(cn(styles.close(), ''));
43
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
43
44
  const descriptionClass = $derived(cn(styles.description(), ''));
44
45
 
45
46
  function handleBackdropClick() {
@@ -89,7 +90,6 @@
89
90
  </button>
90
91
  {/if}
91
92
  </header>
92
-
93
93
  {/if}
94
94
 
95
95
  <!-- Close button only (positioned absolutely when no header) -->
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ import Modal from './Modal.svelte';
3
+ import type { ModalProps } from '../index.js';
4
+
5
+ let {
6
+ bodyText = '',
7
+ footerText = '',
8
+ ...modalProps
9
+ }: ModalProps & { bodyText?: string; footerText?: string } = $props();
10
+ </script>
11
+
12
+ <Modal {...modalProps}>
13
+ <div>{bodyText}</div>
14
+ {#if footerText}
15
+ <!-- eslint-disable-next-line @typescript-eslint/no-unused-vars -->
16
+ {#snippet footer()}
17
+ <div>{footerText}</div>
18
+ {/snippet}
19
+ {/if}
20
+ </Modal>
@@ -0,0 +1,8 @@
1
+ import type { ModalProps } from '../index.js';
2
+ type $$ComponentProps = ModalProps & {
3
+ bodyText?: string;
4
+ footerText?: string;
5
+ };
6
+ declare const ModalTestWrapper: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type ModalTestWrapper = ReturnType<typeof ModalTestWrapper>;
8
+ export default ModalTestWrapper;
@@ -1,5 +1,4 @@
1
- import { Size, type VariantSizes } from '../index.js';
2
- import type { Snippet } from 'svelte';
1
+ import { Size } from '../index.js';
3
2
  export declare const modal: import("tailwind-variants").TVReturnType<{
4
3
  size: {
5
4
  [Size.XS]: {
@@ -94,21 +93,3 @@ export declare const modal: import("tailwind-variants").TVReturnType<{
94
93
  description: string;
95
94
  close: string;
96
95
  }, undefined, unknown, unknown, undefined>>;
97
- export type ModalProps = {
98
- open?: boolean;
99
- onclose?: () => void;
100
- title?: string;
101
- description?: string;
102
- size?: VariantSizes;
103
- hideCloseButton?: boolean;
104
- class?: string;
105
- contentclass?: string;
106
- bodyclass?: string;
107
- titleclass?: string;
108
- headerclass?: string;
109
- backdropclass?: string;
110
- footerclass?: string;
111
- children?: Snippet;
112
- footer?: Snippet;
113
- header?: Snippet;
114
- };
@@ -1,14 +1,14 @@
1
1
  <script lang="ts">
2
2
  import { tv } from 'tailwind-variants';
3
3
  import type { Snippet } from 'svelte';
4
-
4
+
5
5
  export type PipelineStage = {
6
6
  label: string;
7
7
  count?: number | string;
8
8
  color?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info';
9
9
  active?: boolean;
10
10
  };
11
-
11
+
12
12
  interface Props {
13
13
  stages: PipelineStage[];
14
14
  class?: string;
@@ -17,7 +17,7 @@
17
17
  children?: Snippet<[PipelineStage, number]>;
18
18
  beneathChildren?: Snippet<[PipelineStage, number]>;
19
19
  }
20
-
20
+
21
21
  let {
22
22
  stages = [],
23
23
  class: className = '',
@@ -26,7 +26,7 @@
26
26
  children,
27
27
  beneathChildren
28
28
  }: Props = $props();
29
-
29
+
30
30
  const pipeline = tv({
31
31
  slots: {
32
32
  container: 'flex items-center gap-0 w-full',
@@ -109,9 +109,9 @@
109
109
  }
110
110
  }
111
111
  });
112
-
112
+
113
113
  const styles = $derived(pipeline({ size, equalWidth }));
114
-
114
+
115
115
  function getStageStyles(stage: PipelineStage) {
116
116
  return pipeline({
117
117
  size,
@@ -123,22 +123,34 @@
123
123
  </script>
124
124
 
125
125
  <div class="{styles.container()} {className}">
126
- {#each stages as stage, index}
126
+ {#each stages as stage, index (stage.label + index)}
127
127
  {@const isFirst = index === 0}
128
- {@const isLast = index === stages.length - 1}
129
128
  {@const chevronWidth = 20}
130
-
131
- <div class="flex flex-col {getStageStyles(stage).stage()}" style="{!isFirst ? `margin-left: -${chevronWidth}px; z-index: ${stages.length - index}` : `z-index: ${stages.length - index}`}">
129
+
130
+ <div
131
+ class="flex flex-col {getStageStyles(stage).stage()}"
132
+ style={!isFirst
133
+ ? `margin-left: -${chevronWidth}px; z-index: ${stages.length - index}`
134
+ : `z-index: ${stages.length - index}`}
135
+ >
132
136
  <!-- BACKGROUND LAYER (Border color - larger) -->
133
- <div
134
- class="{getStageStyles(stage).borderLayer()}"
135
- style="clip-path: polygon({isFirst ? '0' : '0'} 0%, calc(100% - {chevronWidth}px) 0%, 100% 50%, calc(100% - {chevronWidth}px) 100%, {isFirst ? '0' : '0'} 100%, {isFirst ? '0' : `${chevronWidth}px`} 50%);"
137
+ <div
138
+ class={getStageStyles(stage).borderLayer()}
139
+ style="clip-path: polygon({isFirst
140
+ ? '0'
141
+ : '0'} 0%, calc(100% - {chevronWidth}px) 0%, 100% 50%, calc(100% - {chevronWidth}px) 100%, {isFirst
142
+ ? '0'
143
+ : '0'} 100%, {isFirst ? '0' : `${chevronWidth}px`} 50%);"
136
144
  ></div>
137
-
145
+
138
146
  <!-- FOREGROUND LAYER (White - smaller, creates border effect) -->
139
- <div
140
- class="{getStageStyles(stage).innerLayer()}"
141
- style="clip-path: polygon({isFirst ? '2px' : '2px'} 2px, calc(100% - {chevronWidth}px - 2px) 2px, calc(100% - 2px) 50%, calc(100% - {chevronWidth}px - 2px) calc(100% - 2px), {isFirst ? '2px' : '2px'} calc(100% - 2px), {isFirst ? '2px' : `${chevronWidth + 2}px`} 50%);"
147
+ <div
148
+ class={getStageStyles(stage).innerLayer()}
149
+ style="clip-path: polygon({isFirst
150
+ ? '2px'
151
+ : '2px'} 2px, calc(100% - {chevronWidth}px - 2px) 2px, calc(100% - 2px) 50%, calc(100% - {chevronWidth}px - 2px) calc(100% - 2px), {isFirst
152
+ ? '2px'
153
+ : '2px'} calc(100% - 2px), {isFirst ? '2px' : `${chevronWidth + 2}px`} 50%);"
142
154
  >
143
155
  <div class={getStageStyles(stage).content()}>
144
156
  {#if children}