@makolabs/ripple 0.0.1-dev.8 → 0.0.1-dev.80

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 (77) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/storage/BaseAdapter.d.ts +20 -0
  3. package/dist/adapters/storage/BaseAdapter.js +171 -0
  4. package/dist/adapters/storage/S3Adapter.d.ts +21 -0
  5. package/dist/adapters/storage/S3Adapter.js +194 -0
  6. package/dist/adapters/storage/index.d.ts +3 -0
  7. package/dist/adapters/storage/index.js +3 -0
  8. package/dist/adapters/storage/types.d.ts +102 -0
  9. package/dist/adapters/storage/types.js +4 -0
  10. package/dist/charts/Chart.svelte +59 -47
  11. package/dist/charts/Chart.svelte.d.ts +1 -1
  12. package/dist/drawer/drawer.js +3 -3
  13. package/dist/elements/accordion/Accordion.svelte +98 -0
  14. package/dist/elements/accordion/Accordion.svelte.d.ts +4 -0
  15. package/dist/elements/accordion/accordion.d.ts +227 -0
  16. package/dist/elements/accordion/accordion.js +138 -0
  17. package/dist/elements/alert/Alert.svelte +7 -3
  18. package/dist/elements/dropdown/Dropdown.svelte +74 -107
  19. package/dist/elements/dropdown/Select.svelte +81 -62
  20. package/dist/elements/dropdown/dropdown.js +1 -1
  21. package/dist/elements/dropdown/select.js +8 -8
  22. package/dist/elements/file-upload/FileUpload.svelte +17 -95
  23. package/dist/elements/file-upload/FilesPreview.svelte +93 -0
  24. package/dist/elements/file-upload/FilesPreview.svelte.d.ts +4 -0
  25. package/dist/elements/progress/Progress.svelte +83 -25
  26. package/dist/file-browser/FileBrowser.svelte +837 -0
  27. package/dist/file-browser/FileBrowser.svelte.d.ts +14 -0
  28. package/dist/file-browser/index.d.ts +1 -0
  29. package/dist/file-browser/index.js +1 -0
  30. package/dist/filters/CompactFilters.svelte +147 -0
  31. package/dist/filters/CompactFilters.svelte.d.ts +4 -0
  32. package/dist/filters/index.d.ts +1 -0
  33. package/dist/filters/index.js +1 -0
  34. package/dist/forms/Checkbox.svelte +2 -2
  35. package/dist/forms/DateRange.svelte +21 -21
  36. package/dist/forms/Input.svelte +3 -3
  37. package/dist/forms/NumberInput.svelte +1 -1
  38. package/dist/forms/RadioInputs.svelte +3 -3
  39. package/dist/forms/Tags.svelte +5 -5
  40. package/dist/forms/Toggle.svelte +3 -3
  41. package/dist/forms/slider.js +4 -4
  42. package/dist/index.d.ts +254 -143
  43. package/dist/index.js +19 -2
  44. package/dist/layout/card/MetricCard.svelte +64 -0
  45. package/dist/layout/card/MetricCard.svelte.d.ts +4 -0
  46. package/dist/layout/card/StatsCard.svelte +4 -3
  47. package/dist/layout/card/StatsCard.svelte.d.ts +1 -1
  48. package/dist/layout/card/metric-card.d.ts +49 -0
  49. package/dist/layout/card/metric-card.js +10 -0
  50. package/dist/layout/card/stats-card.d.ts +0 -15
  51. package/dist/layout/card/stats-card.js +1 -1
  52. package/dist/layout/sidebar/NavGroup.svelte +8 -9
  53. package/dist/layout/sidebar/NavItem.svelte +2 -2
  54. package/dist/layout/sidebar/Sidebar.svelte +102 -49
  55. package/dist/layout/table/Table.svelte +464 -87
  56. package/dist/layout/table/Table.svelte.d.ts +1 -1
  57. package/dist/layout/table/table.d.ts +0 -47
  58. package/dist/layout/table/table.js +0 -8
  59. package/dist/layout/tabs/Tab.svelte +9 -6
  60. package/dist/layout/tabs/Tab.svelte.d.ts +1 -1
  61. package/dist/layout/tabs/TabContent.svelte +1 -2
  62. package/dist/layout/tabs/TabContent.svelte.d.ts +1 -1
  63. package/dist/layout/tabs/TabGroup.svelte +10 -5
  64. package/dist/layout/tabs/TabGroup.svelte.d.ts +2 -2
  65. package/dist/layout/tabs/tabs.d.ts +61 -76
  66. package/dist/layout/tabs/tabs.js +170 -28
  67. package/dist/modal/Modal.svelte +3 -3
  68. package/dist/modal/modal.js +3 -3
  69. package/dist/utils/Portal.svelte +108 -0
  70. package/dist/utils/Portal.svelte.d.ts +8 -0
  71. package/dist/utils/dateUtils.d.ts +7 -0
  72. package/dist/utils/dateUtils.js +26 -0
  73. package/dist/variants.d.ts +11 -1
  74. package/dist/variants.js +17 -0
  75. package/package.json +2 -2
  76. package/dist/header/pageheaders.d.ts +0 -10
  77. package/dist/header/pageheaders.js +0 -1
@@ -1,4 +1,4 @@
1
- import type { ChartProps } from '../index.js';
1
+ import { type ChartProps } from '../index.js';
2
2
  declare const Chart: import("svelte").Component<ChartProps<any>, {}, "">;
3
3
  type Chart = ReturnType<typeof Chart>;
4
4
  export default Chart;
@@ -5,11 +5,11 @@ export const drawer = tv({
5
5
  backdrop: 'fixed inset-0 transition-opacity bg-black/50',
6
6
  contentWrapper: 'absolute flex flex-col transform transition-transform',
7
7
  content: 'flex flex-col h-full w-full overflow-y-auto bg-white',
8
- header: 'flex items-center justify-between px-4 py-3 border-b border-gray-200',
8
+ header: 'flex items-center justify-between px-4 py-3 border-b border-default-200',
9
9
  body: 'flex-1 overflow-y-auto p-4',
10
- footer: 'flex justify-end border-t border-gray-200 p-4',
10
+ footer: 'flex justify-end border-t border-default-200 p-4',
11
11
  title: 'text-default-900 leading-6 text-base font-semibold',
12
- closeButton: 'text-gray-400 hover:text-gray-500 rounded-md cursor-pointer'
12
+ closeButton: 'text-default-400 hover:text-default-500 rounded-md cursor-pointer'
13
13
  },
14
14
  variants: {
15
15
  open: {
@@ -0,0 +1,98 @@
1
+ <script lang="ts">
2
+ import { twMerge } from 'tailwind-merge';
3
+ import { accordion } from './accordion.js';
4
+ import type { AccordionProps } from '../../index.js';
5
+
6
+ let {
7
+ title,
8
+ description,
9
+ id,
10
+ bordered,
11
+ color,
12
+ open,
13
+ onexpand,
14
+ oncollapse,
15
+ class: className,
16
+ summary,
17
+ children,
18
+ icon: Icon
19
+ }: AccordionProps = $props();
20
+
21
+ const {
22
+ base,
23
+ header,
24
+ title: titleClass,
25
+ body
26
+ } = accordion({
27
+ color,
28
+ open,
29
+ bordered,
30
+ hasChildren: !!children
31
+ });
32
+
33
+ function handleClick() {
34
+ if (!children) return; // Don't toggle if no children
35
+ open = !open;
36
+ if (open && onexpand) {
37
+ onexpand();
38
+ } else if (!open && oncollapse) {
39
+ oncollapse();
40
+ }
41
+ }
42
+
43
+ const baseClasses = $derived(twMerge(base(), className));
44
+ </script>
45
+
46
+ <div class={baseClasses}>
47
+ {#if children}
48
+ <button
49
+ class={twMerge(header(), 'flex gap-3')}
50
+ aria-expanded={open}
51
+ aria-controls={id}
52
+ onclick={handleClick}
53
+ >
54
+ {@render accordionHeaderContent()}
55
+ <div class="flex items-center">
56
+ <svg
57
+ xmlns="http://www.w3.org/2000/svg"
58
+ width="20"
59
+ height="20"
60
+ viewBox="0 0 20 20"
61
+ class="text-default-500 size-5 transition-transform duration-200"
62
+ class:rotate-180={open}
63
+ >
64
+ <path
65
+ fill="currentColor"
66
+ d="M15.794 7.733a.75.75 0 0 1-.026 1.06l-5.25 5.001a.75.75 0 0 1-1.035 0l-5.25-5a.75.75 0 0 1 1.034-1.087l4.734 4.509l4.733-4.51a.75.75 0 0 1 1.06.027"
67
+ />
68
+ </svg>
69
+ </div>
70
+ </button>
71
+ {#if open}
72
+ <div class={body()} {id}>
73
+ {@render children()}
74
+ </div>
75
+ {/if}
76
+ {:else}
77
+ <div class={twMerge(header(), 'flex gap-3')}>
78
+ {@render accordionHeaderContent()}
79
+ </div>
80
+ {/if}
81
+ </div>
82
+
83
+ {#snippet accordionHeaderContent()}
84
+ <div class="flex items-start justify-start gap-3">
85
+ {#if Icon}
86
+ <Icon class="text-default-500 size-5" />
87
+ {/if}
88
+ <div class="flex flex-col items-start text-left">
89
+ {#if title}
90
+ <h3 class={titleClass()}>{title}</h3>
91
+ {/if}
92
+ {#if description}
93
+ <p class="text-default-500 text-xs whitespace-nowrap">{description}</p>
94
+ {/if}
95
+ </div>
96
+ </div>
97
+ {@render summary?.()}
98
+ {/snippet}
@@ -0,0 +1,4 @@
1
+ import type { AccordionProps } from '../../index.js';
2
+ declare const Accordion: import("svelte").Component<AccordionProps, {}, "">;
3
+ type Accordion = ReturnType<typeof Accordion>;
4
+ export default Accordion;
@@ -0,0 +1,227 @@
1
+ import { Color } from '../../variants.js';
2
+ export declare const accordion: import("tailwind-variants").TVReturnType<{
3
+ color: {
4
+ [Color.DEFAULT]: {
5
+ base: string;
6
+ header: string;
7
+ body: string;
8
+ };
9
+ [Color.PRIMARY]: {
10
+ base: string;
11
+ header: string;
12
+ title: string;
13
+ };
14
+ [Color.SECONDARY]: {
15
+ base: string;
16
+ header: string;
17
+ title: string;
18
+ };
19
+ [Color.SUCCESS]: {
20
+ base: string;
21
+ header: string;
22
+ title: string;
23
+ };
24
+ [Color.WARNING]: {
25
+ base: string;
26
+ header: string;
27
+ title: string;
28
+ };
29
+ [Color.DANGER]: {
30
+ base: string;
31
+ header: string;
32
+ title: string;
33
+ };
34
+ [Color.INFO]: {
35
+ base: string;
36
+ header: string;
37
+ title: string;
38
+ };
39
+ };
40
+ open: {
41
+ true: {
42
+ base: string;
43
+ title: string;
44
+ };
45
+ false: {
46
+ base: string;
47
+ };
48
+ };
49
+ bordered: {
50
+ true: {
51
+ base: string;
52
+ body: string;
53
+ };
54
+ false: {
55
+ base: string;
56
+ };
57
+ };
58
+ hasChildren: {
59
+ true: {
60
+ base: string;
61
+ header: string;
62
+ };
63
+ false: {
64
+ base: string;
65
+ header: string;
66
+ };
67
+ };
68
+ iconPosition: {
69
+ start: {};
70
+ end: {};
71
+ };
72
+ }, {
73
+ base: string;
74
+ header: string;
75
+ title: string;
76
+ body: string;
77
+ }, undefined, {
78
+ color: {
79
+ [Color.DEFAULT]: {
80
+ base: string;
81
+ header: string;
82
+ body: string;
83
+ };
84
+ [Color.PRIMARY]: {
85
+ base: string;
86
+ header: string;
87
+ title: string;
88
+ };
89
+ [Color.SECONDARY]: {
90
+ base: string;
91
+ header: string;
92
+ title: string;
93
+ };
94
+ [Color.SUCCESS]: {
95
+ base: string;
96
+ header: string;
97
+ title: string;
98
+ };
99
+ [Color.WARNING]: {
100
+ base: string;
101
+ header: string;
102
+ title: string;
103
+ };
104
+ [Color.DANGER]: {
105
+ base: string;
106
+ header: string;
107
+ title: string;
108
+ };
109
+ [Color.INFO]: {
110
+ base: string;
111
+ header: string;
112
+ title: string;
113
+ };
114
+ };
115
+ open: {
116
+ true: {
117
+ base: string;
118
+ title: string;
119
+ };
120
+ false: {
121
+ base: string;
122
+ };
123
+ };
124
+ bordered: {
125
+ true: {
126
+ base: string;
127
+ body: string;
128
+ };
129
+ false: {
130
+ base: string;
131
+ };
132
+ };
133
+ hasChildren: {
134
+ true: {
135
+ base: string;
136
+ header: string;
137
+ };
138
+ false: {
139
+ base: string;
140
+ header: string;
141
+ };
142
+ };
143
+ iconPosition: {
144
+ start: {};
145
+ end: {};
146
+ };
147
+ }, {
148
+ base: string;
149
+ header: string;
150
+ title: string;
151
+ body: string;
152
+ }, import("tailwind-variants").TVReturnType<{
153
+ color: {
154
+ [Color.DEFAULT]: {
155
+ base: string;
156
+ header: string;
157
+ body: string;
158
+ };
159
+ [Color.PRIMARY]: {
160
+ base: string;
161
+ header: string;
162
+ title: string;
163
+ };
164
+ [Color.SECONDARY]: {
165
+ base: string;
166
+ header: string;
167
+ title: string;
168
+ };
169
+ [Color.SUCCESS]: {
170
+ base: string;
171
+ header: string;
172
+ title: string;
173
+ };
174
+ [Color.WARNING]: {
175
+ base: string;
176
+ header: string;
177
+ title: string;
178
+ };
179
+ [Color.DANGER]: {
180
+ base: string;
181
+ header: string;
182
+ title: string;
183
+ };
184
+ [Color.INFO]: {
185
+ base: string;
186
+ header: string;
187
+ title: string;
188
+ };
189
+ };
190
+ open: {
191
+ true: {
192
+ base: string;
193
+ title: string;
194
+ };
195
+ false: {
196
+ base: string;
197
+ };
198
+ };
199
+ bordered: {
200
+ true: {
201
+ base: string;
202
+ body: string;
203
+ };
204
+ false: {
205
+ base: string;
206
+ };
207
+ };
208
+ hasChildren: {
209
+ true: {
210
+ base: string;
211
+ header: string;
212
+ };
213
+ false: {
214
+ base: string;
215
+ header: string;
216
+ };
217
+ };
218
+ iconPosition: {
219
+ start: {};
220
+ end: {};
221
+ };
222
+ }, {
223
+ base: string;
224
+ header: string;
225
+ title: string;
226
+ body: string;
227
+ }, undefined, unknown, unknown, undefined>>;
@@ -0,0 +1,138 @@
1
+ import { tv } from '../../helper/cls.js';
2
+ import { Color } from '../../variants.js';
3
+ export const accordion = tv({
4
+ slots: {
5
+ base: 'w-full relative overflow-hidden rounded-xl transition-all duration-200 bg-white border border-default-200',
6
+ header: 'w-full flex cursor-pointer items-center justify-between p-4 transition-colors duration-200',
7
+ title: 'flex text-default-900 text-lg font-medium leading-tight',
8
+ body: 'w-full border-t border-default-200 p-4 pt-3 transition-all',
9
+ },
10
+ variants: {
11
+ color: {
12
+ [Color.DEFAULT]: {
13
+ base: 'bg-white hover:border-default-300',
14
+ header: '',
15
+ body: ''
16
+ },
17
+ [Color.PRIMARY]: {
18
+ base: 'bg-primary-50/50 hover:border-primary-300',
19
+ header: 'text-primary-700',
20
+ title: 'text-primary-700'
21
+ },
22
+ [Color.SECONDARY]: {
23
+ base: 'bg-secondary-50/50 hover:border-secondary-300',
24
+ header: 'text-secondary-700',
25
+ title: 'text-secondary-700'
26
+ },
27
+ [Color.SUCCESS]: {
28
+ base: 'bg-success-50/50 hover:border-success-300',
29
+ header: 'text-success-700',
30
+ title: 'text-success-700'
31
+ },
32
+ [Color.WARNING]: {
33
+ base: 'bg-warning-50/50 hover:border-warning-300',
34
+ header: 'text-warning-700',
35
+ title: 'text-warning-700'
36
+ },
37
+ [Color.DANGER]: {
38
+ base: 'bg-danger-50/50 hover:border-danger-300',
39
+ header: 'text-danger-700',
40
+ title: 'text-danger-700'
41
+ },
42
+ [Color.INFO]: {
43
+ base: 'bg-info-50/50 hover:border-info-300',
44
+ header: 'text-info-700',
45
+ title: 'text-info-700'
46
+ }
47
+ },
48
+ open: {
49
+ true: {
50
+ base: 'shadow-sm',
51
+ title: 'text-default-900'
52
+ },
53
+ false: {
54
+ base: ''
55
+ }
56
+ },
57
+ bordered: {
58
+ true: {
59
+ base: 'border border-default-200',
60
+ body: 'border-t'
61
+ },
62
+ false: {
63
+ base: 'shadow-sm'
64
+ }
65
+ },
66
+ hasChildren: {
67
+ true: {
68
+ base: 'hover:shadow-md',
69
+ header: 'hover:bg-default-50'
70
+ },
71
+ false: {
72
+ base: 'hover:shadow-none',
73
+ header: 'cursor-default'
74
+ }
75
+ },
76
+ iconPosition: {
77
+ start: {},
78
+ end: {}
79
+ }
80
+ },
81
+ compoundVariants: [
82
+ {
83
+ open: true,
84
+ class: {
85
+ header: 'border-b-0'
86
+ }
87
+ },
88
+ {
89
+ hasChildren: true,
90
+ color: Color.PRIMARY,
91
+ class: {
92
+ header: 'hover:bg-primary-50'
93
+ }
94
+ },
95
+ {
96
+ hasChildren: true,
97
+ color: Color.SECONDARY,
98
+ class: {
99
+ header: 'hover:bg-secondary-50'
100
+ }
101
+ },
102
+ {
103
+ hasChildren: true,
104
+ color: Color.SUCCESS,
105
+ class: {
106
+ header: 'hover:bg-success-50'
107
+ }
108
+ },
109
+ {
110
+ hasChildren: true,
111
+ color: Color.WARNING,
112
+ class: {
113
+ header: 'hover:bg-warning-50'
114
+ }
115
+ },
116
+ {
117
+ hasChildren: true,
118
+ color: Color.DANGER,
119
+ class: {
120
+ header: 'hover:bg-danger-50'
121
+ }
122
+ },
123
+ {
124
+ hasChildren: true,
125
+ color: Color.INFO,
126
+ class: {
127
+ header: 'hover:bg-info-50'
128
+ }
129
+ }
130
+ ],
131
+ defaultVariants: {
132
+ color: Color.DEFAULT,
133
+ open: false,
134
+ bordered: true,
135
+ hasChildren: false,
136
+ iconPosition: 'start'
137
+ }
138
+ });
@@ -8,6 +8,7 @@
8
8
  message,
9
9
  color = Color.DEFAULT,
10
10
  onclose,
11
+ footer,
11
12
  class: className = ''
12
13
  }: AlertProps = $props();
13
14
 
@@ -16,7 +17,7 @@
16
17
  }
17
18
 
18
19
  const colorClasses = {
19
- [Color.DEFAULT]: 'bg-gray-50 border-gray-200 text-gray-800',
20
+ [Color.DEFAULT]: 'bg-default-50 border-default-200 text-default-800',
20
21
  [Color.PRIMARY]: 'bg-primary-50 border-primary-200 text-primary-800',
21
22
  [Color.SUCCESS]: 'bg-success-50 border-success-200 text-success-800',
22
23
  [Color.WARNING]: 'bg-warning-50 border-warning-200 text-warning-800',
@@ -29,14 +30,14 @@
29
30
  <div class="flex items-start justify-between gap-4">
30
31
  <div class="flex-1">
31
32
  {#if title}
32
- <h4 class="mb-2 font-semibold">{title}</h4>
33
+ <h4 class="font-semibold">{title}</h4>
33
34
  {/if}
34
35
  <p class="text-sm">{message}</p>
35
36
  </div>
36
37
  {#if onclose}
37
38
  <button
38
39
  type="button"
39
- class="flex-shrink-0 cursor-pointer rounded-md p-1 hover:bg-gray-200/20"
40
+ class="hover:bg-default-200/20 flex-shrink-0 cursor-pointer rounded-md p-1"
40
41
  onclick={handleClose}
41
42
  aria-label="Close alert"
42
43
  >
@@ -50,4 +51,7 @@
50
51
  </button>
51
52
  {/if}
52
53
  </div>
54
+ {#if footer}
55
+ {@render footer()}
56
+ {/if}
53
57
  </div>