@makolabs/ripple 0.0.1 → 0.0.3
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 +575 -8
- package/dist/adapters/storage/BaseAdapter.d.ts +20 -0
- package/dist/adapters/storage/BaseAdapter.js +171 -0
- package/dist/adapters/storage/S3Adapter.d.ts +21 -0
- package/dist/adapters/storage/S3Adapter.js +194 -0
- package/dist/adapters/storage/index.d.ts +3 -0
- package/dist/adapters/storage/index.js +3 -0
- package/dist/adapters/storage/types.d.ts +102 -0
- package/dist/adapters/storage/types.js +4 -0
- package/dist/button/Button.svelte +48 -0
- package/dist/button/Button.svelte.d.ts +4 -0
- package/dist/button/button.d.ts +113 -0
- package/dist/button/button.js +168 -0
- package/dist/charts/Chart.svelte +545 -0
- package/dist/charts/Chart.svelte.d.ts +4 -0
- package/dist/drawer/Drawer.svelte +224 -0
- package/dist/drawer/Drawer.svelte.d.ts +4 -0
- package/dist/drawer/drawer.d.ts +160 -0
- package/dist/drawer/drawer.js +80 -0
- package/dist/elements/accordion/Accordion.svelte +98 -0
- package/dist/elements/accordion/Accordion.svelte.d.ts +4 -0
- package/dist/elements/accordion/accordion.d.ts +227 -0
- package/dist/elements/accordion/accordion.js +138 -0
- package/dist/elements/alert/Alert.svelte +57 -0
- package/dist/elements/alert/Alert.svelte.d.ts +4 -0
- package/dist/elements/badge/Badge.svelte +43 -0
- package/dist/elements/badge/Badge.svelte.d.ts +4 -0
- package/dist/elements/badge/badge.d.ts +181 -0
- package/dist/elements/badge/badge.js +65 -0
- package/dist/elements/dropdown/Dropdown.svelte +234 -0
- package/dist/elements/dropdown/Dropdown.svelte.d.ts +4 -0
- package/dist/elements/dropdown/Select.svelte +333 -0
- package/dist/elements/dropdown/Select.svelte.d.ts +4 -0
- package/dist/elements/dropdown/dropdown.d.ts +251 -0
- package/dist/elements/dropdown/dropdown.js +95 -0
- package/dist/elements/dropdown/select.d.ts +200 -0
- package/dist/elements/dropdown/select.js +82 -0
- package/dist/elements/file-upload/FileUpload.svelte +135 -0
- package/dist/elements/file-upload/FileUpload.svelte.d.ts +4 -0
- package/dist/elements/file-upload/FilesPreview.svelte +93 -0
- package/dist/elements/file-upload/FilesPreview.svelte.d.ts +4 -0
- package/dist/elements/progress/Progress.svelte +145 -0
- package/dist/elements/progress/Progress.svelte.d.ts +4 -0
- package/dist/elements/timeline/Timeline.svelte +92 -0
- package/dist/elements/timeline/Timeline.svelte.d.ts +7 -0
- package/dist/file-browser/FileBrowser.svelte +877 -0
- package/dist/file-browser/FileBrowser.svelte.d.ts +14 -0
- package/dist/file-browser/index.d.ts +1 -0
- package/dist/file-browser/index.js +1 -0
- package/dist/filters/CompactFilters.svelte +147 -0
- package/dist/filters/CompactFilters.svelte.d.ts +4 -0
- package/dist/filters/index.d.ts +1 -0
- package/dist/filters/index.js +1 -0
- package/dist/forms/Checkbox.svelte +54 -0
- package/dist/forms/Checkbox.svelte.d.ts +4 -0
- package/dist/forms/DateRange.svelte +493 -0
- package/dist/forms/DateRange.svelte.d.ts +4 -0
- package/dist/forms/Form.svelte +39 -0
- package/dist/forms/Form.svelte.d.ts +4 -0
- package/dist/forms/Input.svelte +86 -0
- package/dist/forms/Input.svelte.d.ts +4 -0
- package/dist/forms/NumberInput.svelte +159 -0
- package/dist/forms/NumberInput.svelte.d.ts +4 -0
- package/dist/forms/RadioInputs.svelte +64 -0
- package/dist/forms/RadioInputs.svelte.d.ts +4 -0
- package/dist/forms/RadioPill.svelte +66 -0
- package/dist/forms/RadioPill.svelte.d.ts +4 -0
- package/dist/forms/Slider.svelte +342 -0
- package/dist/forms/Slider.svelte.d.ts +4 -0
- package/dist/forms/Tags.svelte +181 -0
- package/dist/forms/Tags.svelte.d.ts +4 -0
- package/dist/forms/Toggle.svelte +132 -0
- package/dist/forms/Toggle.svelte.d.ts +4 -0
- package/dist/forms/slider.d.ts +143 -0
- package/dist/forms/slider.js +62 -0
- package/dist/header/Breadcrumbs.svelte +73 -0
- package/dist/header/Breadcrumbs.svelte.d.ts +4 -0
- package/dist/header/PageHeader.svelte +68 -0
- package/dist/header/PageHeader.svelte.d.ts +4 -0
- package/dist/header/breadcrumbs.d.ts +226 -0
- package/dist/header/breadcrumbs.js +87 -0
- package/dist/helper/cls.d.ts +1 -0
- package/dist/helper/cls.js +4 -0
- package/dist/helper/date.d.ts +7 -0
- package/dist/helper/date.js +15 -0
- package/dist/helper/nav.svelte.d.ts +6 -0
- package/dist/helper/nav.svelte.js +23 -0
- package/dist/index.d.ts +856 -1
- package/dist/index.js +78 -1
- package/dist/layout/card/Card.svelte +41 -0
- package/dist/layout/card/Card.svelte.d.ts +4 -0
- package/dist/layout/card/MetricCard.svelte +64 -0
- package/dist/layout/card/MetricCard.svelte.d.ts +4 -0
- package/dist/layout/card/StatsCard.svelte +266 -0
- package/dist/layout/card/StatsCard.svelte.d.ts +4 -0
- package/dist/layout/card/card.d.ts +128 -0
- package/dist/layout/card/card.js +51 -0
- package/dist/layout/card/metric-card.d.ts +49 -0
- package/dist/layout/card/metric-card.js +10 -0
- package/dist/layout/card/stats-card.d.ts +191 -0
- package/dist/layout/card/stats-card.js +73 -0
- package/dist/layout/navbar/Navbar.svelte +206 -0
- package/dist/layout/navbar/Navbar.svelte.d.ts +4 -0
- package/dist/layout/navbar/navbar.d.ts +205 -0
- package/dist/layout/navbar/navbar.js +98 -0
- package/dist/layout/sidebar/NavGroup.svelte +91 -0
- package/dist/layout/sidebar/NavGroup.svelte.d.ts +4 -0
- package/dist/layout/sidebar/NavItem.svelte +29 -0
- package/dist/layout/sidebar/NavItem.svelte.d.ts +4 -0
- package/dist/layout/sidebar/Sidebar.svelte +193 -0
- package/dist/layout/sidebar/Sidebar.svelte.d.ts +4 -0
- package/dist/layout/table/Cells.svelte +111 -0
- package/dist/layout/table/Cells.svelte.d.ts +27 -0
- package/dist/layout/table/Table.svelte +790 -0
- package/dist/layout/table/Table.svelte.d.ts +4 -0
- package/dist/layout/table/table.d.ts +256 -0
- package/dist/layout/table/table.js +141 -0
- package/dist/layout/tabs/Tab.svelte +60 -0
- package/dist/layout/tabs/Tab.svelte.d.ts +4 -0
- package/dist/layout/tabs/TabContent.svelte +30 -0
- package/dist/layout/tabs/TabContent.svelte.d.ts +4 -0
- package/dist/layout/tabs/TabGroup.svelte +62 -0
- package/dist/layout/tabs/TabGroup.svelte.d.ts +4 -0
- package/dist/layout/tabs/tabs.d.ts +140 -0
- package/dist/layout/tabs/tabs.js +298 -0
- package/dist/modal/Modal.svelte +207 -0
- package/dist/modal/Modal.svelte.d.ts +4 -0
- package/dist/modal/modal.d.ts +211 -0
- package/dist/modal/modal.js +81 -0
- package/dist/sonner/sonner.svelte +13 -0
- package/dist/sonner/sonner.svelte.d.ts +4 -0
- package/dist/types/variants.d.ts +1 -0
- package/dist/types/variants.js +1 -0
- package/dist/utils/Portal.svelte +108 -0
- package/dist/utils/Portal.svelte.d.ts +8 -0
- package/dist/utils/dateUtils.d.ts +7 -0
- package/dist/utils/dateUtils.js +26 -0
- package/dist/variants.d.ts +30 -0
- package/dist/variants.js +36 -0
- package/package.json +39 -6
- package/dist/layout/Card.svelte +0 -179
- package/dist/layout/Card.svelte.d.ts +0 -208
- package/dist/layout/index.d.ts +0 -1
- package/dist/layout/index.js +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { StorageAdapter, FileAction } from '../adapters/storage/index.js';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
adapter: StorageAdapter;
|
|
4
|
+
startPath?: string;
|
|
5
|
+
actions?: FileAction[];
|
|
6
|
+
selectedFiles?: string[];
|
|
7
|
+
infoSection?: (props: {
|
|
8
|
+
selectedFiles: string[];
|
|
9
|
+
navToFileFolder: (fileKey: string) => void;
|
|
10
|
+
}) => any;
|
|
11
|
+
};
|
|
12
|
+
declare const FileBrowser: import("svelte").Component<$$ComponentProps, {}, "selectedFiles">;
|
|
13
|
+
type FileBrowser = ReturnType<typeof FileBrowser>;
|
|
14
|
+
export default FileBrowser;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as FileBrowser } from './FileBrowser.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as FileBrowser } from './FileBrowser.svelte';
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '../helper/cls.js';
|
|
3
|
+
import type { FilterTab, CompactFiltersProps } from '../index.js';
|
|
4
|
+
|
|
5
|
+
// Props definition
|
|
6
|
+
let {
|
|
7
|
+
filterGroups = [],
|
|
8
|
+
isExpanded = $bindable(false),
|
|
9
|
+
title = 'Filters',
|
|
10
|
+
class: className,
|
|
11
|
+
summaryClass,
|
|
12
|
+
expandedClass,
|
|
13
|
+
FilterIcon
|
|
14
|
+
}: CompactFiltersProps = $props();
|
|
15
|
+
|
|
16
|
+
// Toggle expanded state
|
|
17
|
+
function toggleExpanded() {
|
|
18
|
+
isExpanded = !isExpanded;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Helper to get the label of the selected filter
|
|
22
|
+
function getSelectedLabel(tabs: FilterTab[], selectedValue: string): string {
|
|
23
|
+
const tab = tabs.find((tab) => tab.value === selectedValue);
|
|
24
|
+
return tab ? tab.label : 'All';
|
|
25
|
+
}
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
{#snippet DefaultFilterIcon()}
|
|
29
|
+
<svg
|
|
30
|
+
width="16"
|
|
31
|
+
height="16"
|
|
32
|
+
viewBox="0 0 24 24"
|
|
33
|
+
fill="none"
|
|
34
|
+
stroke="currentColor"
|
|
35
|
+
stroke-width="2"
|
|
36
|
+
stroke-linecap="round"
|
|
37
|
+
stroke-linejoin="round"
|
|
38
|
+
>
|
|
39
|
+
<polygon points="22,3 2,3 10,12.46 10,19 14,21 14,12.46"></polygon>
|
|
40
|
+
</svg>
|
|
41
|
+
{/snippet}
|
|
42
|
+
|
|
43
|
+
{#snippet DefaultChevronDown()}
|
|
44
|
+
<svg
|
|
45
|
+
width="18"
|
|
46
|
+
height="18"
|
|
47
|
+
viewBox="0 0 24 24"
|
|
48
|
+
fill="none"
|
|
49
|
+
stroke="currentColor"
|
|
50
|
+
stroke-width="2"
|
|
51
|
+
stroke-linecap="round"
|
|
52
|
+
stroke-linejoin="round"
|
|
53
|
+
>
|
|
54
|
+
<polyline points="6,9 12,15 18,9"></polyline>
|
|
55
|
+
</svg>
|
|
56
|
+
{/snippet}
|
|
57
|
+
|
|
58
|
+
{#snippet DefaultChevronUp()}
|
|
59
|
+
<svg
|
|
60
|
+
width="18"
|
|
61
|
+
height="18"
|
|
62
|
+
viewBox="0 0 24 24"
|
|
63
|
+
fill="none"
|
|
64
|
+
stroke="currentColor"
|
|
65
|
+
stroke-width="2"
|
|
66
|
+
stroke-linecap="round"
|
|
67
|
+
stroke-linejoin="round"
|
|
68
|
+
>
|
|
69
|
+
<polyline points="18,15 12,9 6,15"></polyline>
|
|
70
|
+
</svg>
|
|
71
|
+
{/snippet}
|
|
72
|
+
|
|
73
|
+
<div class={cn('rounded-lg border border-gray-200 bg-white p-3 shadow-sm', className)}>
|
|
74
|
+
<button
|
|
75
|
+
onclick={toggleExpanded}
|
|
76
|
+
class="mb-2 flex min-w-full cursor-pointer items-center justify-between"
|
|
77
|
+
>
|
|
78
|
+
<div class="flex items-center gap-2">
|
|
79
|
+
{#if FilterIcon}
|
|
80
|
+
<FilterIcon size={16} class="text-gray-500" />
|
|
81
|
+
{:else}
|
|
82
|
+
<span class="text-gray-500">
|
|
83
|
+
{@render DefaultFilterIcon()}
|
|
84
|
+
</span>
|
|
85
|
+
{/if}
|
|
86
|
+
<span class="text-sm font-medium">{title}</span>
|
|
87
|
+
</div>
|
|
88
|
+
<div
|
|
89
|
+
class="rounded-md p-1 text-gray-500 hover:bg-gray-100 hover:text-gray-700"
|
|
90
|
+
aria-label={isExpanded ? `Collapse ${title.toLowerCase()}` : `Expand ${title.toLowerCase()}`}
|
|
91
|
+
>
|
|
92
|
+
{#if isExpanded}
|
|
93
|
+
<span>{@render DefaultChevronUp()}</span>
|
|
94
|
+
{:else}
|
|
95
|
+
<span>{@render DefaultChevronDown()}</span>
|
|
96
|
+
{/if}
|
|
97
|
+
</div>
|
|
98
|
+
</button>
|
|
99
|
+
|
|
100
|
+
{#if !isExpanded}
|
|
101
|
+
<!-- Summary of selected filters when collapsed -->
|
|
102
|
+
<div class={cn('flex flex-wrap gap-2', summaryClass)}>
|
|
103
|
+
{#each filterGroups as group}
|
|
104
|
+
{#if group.tabs.length > 0}
|
|
105
|
+
<div
|
|
106
|
+
class="bg-primary-50 text-primary-700 border-primary-200 flex items-center gap-1 rounded-full border px-3 py-1 text-xs"
|
|
107
|
+
>
|
|
108
|
+
<span class="font-medium">{group.label}:</span>
|
|
109
|
+
{getSelectedLabel(group.tabs, group.selectedValue)}
|
|
110
|
+
</div>
|
|
111
|
+
{/if}
|
|
112
|
+
{/each}
|
|
113
|
+
</div>
|
|
114
|
+
{:else}
|
|
115
|
+
<div class={cn('flex flex-col gap-2', expandedClass)}>
|
|
116
|
+
{#each filterGroups as group, index}
|
|
117
|
+
{#if group.tabs.length > 0}
|
|
118
|
+
<div
|
|
119
|
+
class={cn(
|
|
120
|
+
'flex items-center gap-2 pb-2',
|
|
121
|
+
index > 0 ? 'border-t border-gray-100 pt-2' : ''
|
|
122
|
+
)}
|
|
123
|
+
>
|
|
124
|
+
<div class={cn('text-xs font-medium text-gray-500', group.minWidth || 'min-w-[70px]')}>
|
|
125
|
+
{group.label}
|
|
126
|
+
</div>
|
|
127
|
+
<div class="flex flex-wrap gap-2">
|
|
128
|
+
{#each group.tabs as tab}
|
|
129
|
+
<button
|
|
130
|
+
onclick={() => group.onChange(tab.value)}
|
|
131
|
+
class={cn(
|
|
132
|
+
'rounded-full border px-3 py-1 text-xs font-medium whitespace-nowrap',
|
|
133
|
+
group.selectedValue === tab.value
|
|
134
|
+
? 'bg-primary-50 text-primary-700 border-primary-200'
|
|
135
|
+
: 'border-gray-200 text-gray-700 hover:bg-gray-50'
|
|
136
|
+
)}
|
|
137
|
+
>
|
|
138
|
+
{tab.label}
|
|
139
|
+
</button>
|
|
140
|
+
{/each}
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
{/if}
|
|
144
|
+
{/each}
|
|
145
|
+
</div>
|
|
146
|
+
{/if}
|
|
147
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as CompactFilters } from './CompactFilters.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as CompactFilters } from './CompactFilters.svelte';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '../helper/cls.js';
|
|
3
|
+
import type { CheckboxProps } from '../index.js';
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
name,
|
|
7
|
+
label,
|
|
8
|
+
value = $bindable(false),
|
|
9
|
+
disabled = false,
|
|
10
|
+
class: className = '',
|
|
11
|
+
errors = [],
|
|
12
|
+
required = false
|
|
13
|
+
}: CheckboxProps = $props();
|
|
14
|
+
|
|
15
|
+
const checkboxClass = $derived(
|
|
16
|
+
cn('w-4 h-4 rounded text-primary-600 border-default-300 focus:ring-primary-500', {
|
|
17
|
+
'opacity-50 cursor-not-allowed': disabled,
|
|
18
|
+
'accent-danger-500': errors.length
|
|
19
|
+
})
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
const labelClass = $derived(
|
|
23
|
+
cn('text-sm font-medium', {
|
|
24
|
+
'text-default-700': !errors.length,
|
|
25
|
+
'text-danger-600': errors.length
|
|
26
|
+
})
|
|
27
|
+
);
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<div class="w-full">
|
|
31
|
+
<div class="inline-flex w-full items-center gap-2">
|
|
32
|
+
<input
|
|
33
|
+
type="checkbox"
|
|
34
|
+
{name}
|
|
35
|
+
id={name}
|
|
36
|
+
bind:checked={value}
|
|
37
|
+
class={checkboxClass}
|
|
38
|
+
{disabled}
|
|
39
|
+
{required}
|
|
40
|
+
aria-describedby={errors.length ? `${name}-errors` : undefined}
|
|
41
|
+
/>
|
|
42
|
+
{#if label}
|
|
43
|
+
<label for={name} class={labelClass}>{label}</label>
|
|
44
|
+
{/if}
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
{#if errors.length}
|
|
48
|
+
{#each errors as error (error)}
|
|
49
|
+
<p id={`${name}-errors`} class="text-danger-600 mt-1 text-sm" role="alert">
|
|
50
|
+
{error}
|
|
51
|
+
</p>
|
|
52
|
+
{/each}
|
|
53
|
+
{/if}
|
|
54
|
+
</div>
|