@makolabs/ripple 0.0.1-dev.6 → 0.0.1-dev.61

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 (140) hide show
  1. package/README.md +394 -54
  2. package/dist/button/Button.svelte +5 -3
  3. package/dist/button/Button.svelte.d.ts +1 -1
  4. package/dist/button/button.d.ts +40 -63
  5. package/dist/button/button.js +15 -14
  6. package/dist/charts/Chart.svelte +545 -0
  7. package/dist/charts/Chart.svelte.d.ts +4 -0
  8. package/dist/drawer/Drawer.svelte +13 -2
  9. package/dist/drawer/Drawer.svelte.d.ts +1 -1
  10. package/dist/drawer/drawer.d.ts +0 -17
  11. package/dist/drawer/drawer.js +3 -3
  12. package/dist/elements/accordion/Accordion.svelte +98 -0
  13. package/dist/elements/accordion/Accordion.svelte.d.ts +4 -0
  14. package/dist/elements/accordion/accordion.d.ts +227 -0
  15. package/dist/elements/accordion/accordion.js +138 -0
  16. package/dist/elements/alert/Alert.svelte +57 -0
  17. package/dist/elements/alert/Alert.svelte.d.ts +4 -0
  18. package/dist/elements/badge/Badge.svelte +13 -5
  19. package/dist/elements/badge/Badge.svelte.d.ts +1 -1
  20. package/dist/elements/badge/badge.d.ts +0 -12
  21. package/dist/elements/dropdown/Dropdown.svelte +100 -138
  22. package/dist/elements/dropdown/Dropdown.svelte.d.ts +1 -1
  23. package/dist/elements/dropdown/Select.svelte +167 -66
  24. package/dist/elements/dropdown/Select.svelte.d.ts +1 -1
  25. package/dist/elements/dropdown/dropdown.d.ts +34 -57
  26. package/dist/elements/dropdown/dropdown.js +11 -5
  27. package/dist/elements/dropdown/select.d.ts +34 -54
  28. package/dist/elements/dropdown/select.js +24 -16
  29. package/dist/elements/file-upload/FileUpload.svelte +135 -0
  30. package/dist/elements/file-upload/FileUpload.svelte.d.ts +4 -0
  31. package/dist/elements/file-upload/FilesPreview.svelte +93 -0
  32. package/dist/elements/file-upload/FilesPreview.svelte.d.ts +4 -0
  33. package/dist/elements/progress/Progress.svelte +145 -0
  34. package/dist/elements/progress/Progress.svelte.d.ts +4 -0
  35. package/dist/elements/timeline/Timeline.svelte +92 -0
  36. package/dist/elements/timeline/Timeline.svelte.d.ts +7 -0
  37. package/dist/filters/CompactFilters.svelte +157 -0
  38. package/dist/filters/CompactFilters.svelte.d.ts +5 -0
  39. package/dist/filters/index.d.ts +1 -0
  40. package/dist/filters/index.js +1 -0
  41. package/dist/forms/Checkbox.svelte +54 -0
  42. package/dist/forms/Checkbox.svelte.d.ts +4 -0
  43. package/dist/forms/DateRange.svelte +493 -0
  44. package/dist/forms/DateRange.svelte.d.ts +4 -0
  45. package/dist/forms/Form.svelte +39 -0
  46. package/dist/forms/Form.svelte.d.ts +4 -0
  47. package/dist/forms/Input.svelte +86 -0
  48. package/dist/forms/Input.svelte.d.ts +4 -0
  49. package/dist/forms/NumberInput.svelte +159 -0
  50. package/dist/forms/NumberInput.svelte.d.ts +4 -0
  51. package/dist/forms/RadioInputs.svelte +64 -0
  52. package/dist/forms/RadioInputs.svelte.d.ts +4 -0
  53. package/dist/forms/RadioPill.svelte +66 -0
  54. package/dist/forms/RadioPill.svelte.d.ts +4 -0
  55. package/dist/forms/Slider.svelte +342 -0
  56. package/dist/forms/Slider.svelte.d.ts +4 -0
  57. package/dist/forms/Tags.svelte +181 -0
  58. package/dist/forms/Tags.svelte.d.ts +4 -0
  59. package/dist/forms/Toggle.svelte +132 -0
  60. package/dist/forms/Toggle.svelte.d.ts +4 -0
  61. package/dist/forms/slider.d.ts +143 -0
  62. package/dist/forms/slider.js +62 -0
  63. package/dist/header/Breadcrumbs.svelte +2 -1
  64. package/dist/header/Breadcrumbs.svelte.d.ts +1 -1
  65. package/dist/header/PageHeader.svelte +2 -2
  66. package/dist/header/PageHeader.svelte.d.ts +1 -1
  67. package/dist/header/breadcrumbs.d.ts +20 -14
  68. package/dist/header/breadcrumbs.js +6 -0
  69. package/dist/helper/date.d.ts +7 -0
  70. package/dist/helper/date.js +15 -0
  71. package/dist/index.d.ts +829 -9
  72. package/dist/index.js +71 -16
  73. package/dist/layout/card/Card.svelte +5 -8
  74. package/dist/layout/card/Card.svelte.d.ts +1 -1
  75. package/dist/layout/card/StatsCard.svelte +119 -89
  76. package/dist/layout/card/StatsCard.svelte.d.ts +1 -1
  77. package/dist/layout/card/card.d.ts +22 -33
  78. package/dist/layout/card/card.js +9 -8
  79. package/dist/layout/card/stats-card.d.ts +22 -39
  80. package/dist/layout/card/stats-card.js +14 -14
  81. package/dist/layout/navbar/navbar.d.ts +0 -23
  82. package/dist/layout/sidebar/NavGroup.svelte +38 -47
  83. package/dist/layout/sidebar/NavGroup.svelte.d.ts +1 -1
  84. package/dist/layout/sidebar/NavItem.svelte +3 -3
  85. package/dist/layout/sidebar/NavItem.svelte.d.ts +1 -1
  86. package/dist/layout/sidebar/Sidebar.svelte +101 -72
  87. package/dist/layout/sidebar/Sidebar.svelte.d.ts +1 -1
  88. package/dist/layout/table/Table.svelte +464 -87
  89. package/dist/layout/table/Table.svelte.d.ts +1 -1
  90. package/dist/layout/table/table.d.ts +0 -47
  91. package/dist/layout/table/table.js +0 -8
  92. package/dist/layout/tabs/Tab.svelte +9 -6
  93. package/dist/layout/tabs/Tab.svelte.d.ts +1 -1
  94. package/dist/layout/tabs/TabContent.svelte +1 -2
  95. package/dist/layout/tabs/TabContent.svelte.d.ts +1 -1
  96. package/dist/layout/tabs/TabGroup.svelte +10 -5
  97. package/dist/layout/tabs/TabGroup.svelte.d.ts +2 -2
  98. package/dist/layout/tabs/tabs.d.ts +61 -76
  99. package/dist/layout/tabs/tabs.js +170 -28
  100. package/dist/modal/Modal.svelte +2 -1
  101. package/dist/modal/Modal.svelte.d.ts +1 -1
  102. package/dist/modal/modal.d.ts +0 -23
  103. package/dist/modal/modal.js +3 -3
  104. package/dist/sonner/sonner.svelte +13 -0
  105. package/dist/sonner/sonner.svelte.d.ts +4 -0
  106. package/dist/types/variants.d.ts +1 -21
  107. package/dist/types/variants.js +1 -19
  108. package/dist/utils/Portal.svelte +108 -0
  109. package/dist/utils/Portal.svelte.d.ts +8 -0
  110. package/dist/variants.d.ts +30 -0
  111. package/dist/variants.js +36 -0
  112. package/package.json +7 -3
  113. package/dist/button/index.d.ts +0 -1
  114. package/dist/button/index.js +0 -1
  115. package/dist/drawer/index.d.ts +0 -2
  116. package/dist/drawer/index.js +0 -1
  117. package/dist/elements/badge/index.d.ts +0 -2
  118. package/dist/elements/badge/index.js +0 -2
  119. package/dist/elements/dropdown/index.d.ts +0 -3
  120. package/dist/elements/dropdown/index.js +0 -2
  121. package/dist/header/index.d.ts +0 -4
  122. package/dist/header/index.js +0 -2
  123. package/dist/header/pageheaders.d.ts +0 -10
  124. package/dist/header/pageheaders.js +0 -1
  125. package/dist/layout/card/index.d.ts +0 -4
  126. package/dist/layout/card/index.js +0 -2
  127. package/dist/layout/index.d.ts +0 -5
  128. package/dist/layout/index.js +0 -5
  129. package/dist/layout/navbar/index.d.ts +0 -2
  130. package/dist/layout/navbar/index.js +0 -2
  131. package/dist/layout/sidebar/index.d.ts +0 -2
  132. package/dist/layout/sidebar/index.js +0 -1
  133. package/dist/layout/sidebar/sidebar.d.ts +0 -46
  134. package/dist/layout/sidebar/sidebar.js +0 -1
  135. package/dist/layout/table/index.d.ts +0 -3
  136. package/dist/layout/table/index.js +0 -2
  137. package/dist/layout/tabs/index.d.ts +0 -3
  138. package/dist/layout/tabs/index.js +0 -3
  139. package/dist/modal/index.d.ts +0 -1
  140. package/dist/modal/index.js +0 -1
@@ -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
+ });
@@ -0,0 +1,57 @@
1
+ <script lang="ts">
2
+ import { cn } from '../../helper/cls.js';
3
+ import { Color } from '../../variants.js';
4
+ import type { AlertProps } from '../../index.js';
5
+
6
+ let {
7
+ title,
8
+ message,
9
+ color = Color.DEFAULT,
10
+ onclose,
11
+ footer,
12
+ class: className = ''
13
+ }: AlertProps = $props();
14
+
15
+ function handleClose() {
16
+ onclose?.();
17
+ }
18
+
19
+ const colorClasses = {
20
+ [Color.DEFAULT]: 'bg-default-50 border-default-200 text-default-800',
21
+ [Color.PRIMARY]: 'bg-primary-50 border-primary-200 text-primary-800',
22
+ [Color.SUCCESS]: 'bg-success-50 border-success-200 text-success-800',
23
+ [Color.WARNING]: 'bg-warning-50 border-warning-200 text-warning-800',
24
+ [Color.DANGER]: 'bg-danger-50 border-danger-200 text-danger-800',
25
+ [Color.INFO]: 'bg-info-50 border-info-200 text-info-800'
26
+ };
27
+ </script>
28
+
29
+ <div class={cn('relative rounded-lg border p-4', colorClasses[color], className)}>
30
+ <div class="flex items-start justify-between gap-4">
31
+ <div class="flex-1">
32
+ {#if title}
33
+ <h4 class="font-semibold">{title}</h4>
34
+ {/if}
35
+ <p class="text-sm">{message}</p>
36
+ </div>
37
+ {#if onclose}
38
+ <button
39
+ type="button"
40
+ class="hover:bg-default-200/20 flex-shrink-0 cursor-pointer rounded-md p-1"
41
+ onclick={handleClose}
42
+ aria-label="Close alert"
43
+ >
44
+ <svg class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
45
+ <path
46
+ fill-rule="evenodd"
47
+ d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
48
+ clip-rule="evenodd"
49
+ />
50
+ </svg>
51
+ </button>
52
+ {/if}
53
+ </div>
54
+ {#if footer}
55
+ {@render footer()}
56
+ {/if}
57
+ </div>
@@ -0,0 +1,4 @@
1
+ import type { AlertProps } from '../../index.js';
2
+ declare const Alert: import("svelte").Component<AlertProps, {}, "">;
3
+ type Alert = ReturnType<typeof Alert>;
4
+ export default Alert;
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { cn } from '../../helper/cls.js';
3
- import { badge, type BadgeProps } from './badge.js';
3
+ import { badge } from './badge.js';
4
+ import type { BadgeProps } from '../../index.js';
4
5
 
5
6
  let {
6
7
  size = 'base',
@@ -18,13 +19,20 @@
18
19
  );
19
20
 
20
21
  const baseClass = $derived(cn(base(), className));
22
+
23
+ function handleOnClose(event) {
24
+ event.preventDefault();
25
+ onClose();
26
+ }
21
27
  </script>
22
28
 
23
- <div class={baseClass}>
29
+ <span class={baseClass}>
24
30
  {@render children()}
25
31
  {#if onClose}
26
- <button type="button" onclick={onClose} class="cursor-pointer" aria-label="Close">
27
- <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
32
+ <button
33
+ onclick={handleOnClose} class="cursor-pointer h-full flex items-center" aria-label="Close" title="Close"
34
+ tabindex="0" type="button">
35
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" class="size-2">
28
36
  <path
29
37
  fill="currentColor"
30
38
  d="M26.113 4.116a1.25 1.25 0 0 1 1.768 1.768L17.766 15.999l10.115 10.114a1.25 1.25 0 1 1-1.768 1.768L16 17.766L5.884 27.881a1.25 1.25 0 1 1-1.768-1.768L14.231 16L4.116 5.884a1.25 1.25 0 1 1 1.768-1.768l10.115 10.115z"
@@ -32,4 +40,4 @@
32
40
  </svg>
33
41
  </button>
34
42
  {/if}
35
- </div>
43
+ </span>
@@ -1,4 +1,4 @@
1
- import { type BadgeProps } from './badge.js';
1
+ import type { BadgeProps } from '../../index.js';
2
2
  declare const Badge: import("svelte").Component<BadgeProps, {}, "">;
3
3
  type Badge = ReturnType<typeof Badge>;
4
4
  export default Badge;
@@ -1,6 +1,3 @@
1
- import type { ClassValue } from 'tailwind-variants';
2
- import type { VariantColors, VariantSizes } from '../../types/variants.js';
3
- import type { Snippet } from 'svelte';
4
1
  export declare const badge: import("tailwind-variants").TVReturnType<{
5
2
  size: {
6
3
  xs: {
@@ -182,12 +179,3 @@ export declare const badge: import("tailwind-variants").TVReturnType<{
182
179
  base: string;
183
180
  icon: string;
184
181
  }, undefined, unknown, unknown, undefined>>;
185
- export type BadgeProps = {
186
- label?: string;
187
- size?: VariantSizes;
188
- color?: VariantColors;
189
- class?: ClassValue;
190
- contentClass?: ClassValue;
191
- children: Snippet;
192
- onclose?: (event: MouseEvent) => void;
193
- };