@rkosafo/cai.components 0.0.3 → 0.0.6

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 (61) hide show
  1. package/README.md +8 -8
  2. package/dist/baseEditor/index.svelte +32 -32
  3. package/dist/builders/filters/FilterBuilder.svelte +638 -638
  4. package/dist/forms/FormCheckbox/FormCheckbox.svelte +53 -53
  5. package/dist/forms/FormDatepicker/FormDatepicker.svelte +159 -159
  6. package/dist/forms/FormInput/FormInput.svelte +87 -87
  7. package/dist/forms/FormRadio/FormRadio.svelte +53 -53
  8. package/dist/forms/FormSelect/FormSelect.svelte +86 -86
  9. package/dist/forms/FormTextarea/FormTextarea.svelte +77 -77
  10. package/dist/forms/checkbox/Checkbox.svelte +82 -82
  11. package/dist/forms/checkbox/CheckboxButton.svelte +92 -92
  12. package/dist/forms/datepicker/Datepicker.svelte +706 -706
  13. package/dist/forms/form/Form.svelte +69 -69
  14. package/dist/forms/input/Input.svelte +363 -363
  15. package/dist/forms/label/Label.svelte +38 -38
  16. package/dist/forms/radio/Radio.svelte +48 -48
  17. package/dist/forms/radio/RadioButton.svelte +22 -22
  18. package/dist/forms/select/Select.svelte +50 -50
  19. package/dist/forms/textarea/Textarea.svelte +165 -165
  20. package/dist/layout/TF/Content/Content.svelte +28 -28
  21. package/dist/layout/TF/Header/Header.svelte +159 -159
  22. package/dist/layout/TF/Sidebar/Sidebar.svelte +74 -74
  23. package/dist/layout/TF/Wrapper/Wrapper.svelte +17 -17
  24. package/dist/themes/ThemeProvider.svelte +20 -20
  25. package/dist/typography/heading/Heading.svelte +35 -35
  26. package/dist/ui/accordion/Accordion.svelte +49 -49
  27. package/dist/ui/accordion/AccordionItem.svelte +173 -173
  28. package/dist/ui/alert/Alert.svelte +83 -83
  29. package/dist/ui/alertDialog/AlertDialog.svelte +40 -40
  30. package/dist/ui/avatar/Avatar.svelte +77 -77
  31. package/dist/ui/buttons/Button.svelte +102 -102
  32. package/dist/ui/buttons/GradientButton.svelte +59 -59
  33. package/dist/ui/datatable/Datatable.svelte +516 -516
  34. package/dist/ui/drawer/Drawer.svelte +280 -280
  35. package/dist/ui/dropdown/Dropdown.svelte +36 -36
  36. package/dist/ui/dropdown/DropdownDivider.svelte +11 -11
  37. package/dist/ui/dropdown/DropdownGroup.svelte +14 -14
  38. package/dist/ui/dropdown/DropdownHeader.svelte +14 -14
  39. package/dist/ui/dropdown/DropdownItem.svelte +52 -52
  40. package/dist/ui/footer/Footer.svelte +15 -15
  41. package/dist/ui/footer/FooterBrand.svelte +37 -37
  42. package/dist/ui/footer/FooterCopyright.svelte +45 -45
  43. package/dist/ui/footer/FooterIcon.svelte +22 -22
  44. package/dist/ui/footer/FooterLink.svelte +33 -33
  45. package/dist/ui/footer/FooterLinkGroup.svelte +13 -13
  46. package/dist/ui/indicator/Indicator.svelte +42 -42
  47. package/dist/ui/modal/Modal.svelte +265 -265
  48. package/dist/ui/notificationList/NotificationList.svelte +123 -123
  49. package/dist/ui/pageLoader/PageLoader.svelte +10 -10
  50. package/dist/ui/paginate/Paginate.svelte +96 -96
  51. package/dist/ui/tab/Tab.svelte +65 -65
  52. package/dist/ui/table/Table.svelte +385 -385
  53. package/dist/ui/tableLoader/TableLoader.svelte +24 -24
  54. package/dist/ui/toolbar/Toolbar.svelte +59 -59
  55. package/dist/ui/toolbar/ToolbarButton.svelte +56 -56
  56. package/dist/ui/toolbar/ToolbarGroup.svelte +43 -43
  57. package/dist/utils/Popper.svelte +257 -257
  58. package/dist/utils/closeButton/CloseButton.svelte +88 -88
  59. package/dist/utils/singleSelection.svelte.js +48 -48
  60. package/dist/youtube/index.svelte +12 -12
  61. package/package.json +7 -3
@@ -1,280 +1,280 @@
1
- <script lang="ts">
2
- import clsx, { type ClassValue } from 'clsx';
3
- import { fly } from 'svelte/transition';
4
- import { sineIn } from 'svelte/easing';
5
- import { drawer } from './index.js';
6
- import { CloseButton } from '../../utils/closeButton/index.js';
7
- import { createDismissableContext } from '../../utils/dismissable.js';
8
- import { trapFocus } from '../../utils/index.js';
9
- import { type ParamsType, type DrawerProps } from '../../index.js';
10
- import { getTheme, warnThemeDeprecation } from '../../themes/themeUtils.js';
11
-
12
- let {
13
- children,
14
- onaction = () => true,
15
- oncancel,
16
- onsubmit,
17
- ontoggle,
18
- onclose,
19
- form = false,
20
- hidden = $bindable(),
21
- activateClickOutside = true,
22
- position,
23
- width,
24
- size, // NEW: Added size prop
25
- backdrop = true,
26
- backdropClass,
27
- placement = 'left',
28
- class: className,
29
- classes,
30
- transitionParams,
31
- transitionType = fly,
32
- bodyScrolling = false,
33
- dismissable = true,
34
- closeBtnClass,
35
- headerClass,
36
- bodyClass,
37
- footerClass,
38
- header,
39
- footer,
40
- title,
41
- permanent = false,
42
- autoclose = false,
43
- ...restProps
44
- }: DrawerProps = $props();
45
-
46
- warnThemeDeprecation(
47
- 'Drawer',
48
- { backdropClass, headerClass, bodyClass, footerClass, closeBtnClass },
49
- {
50
- backdropClass: 'backdrop',
51
- bodyClass: 'body',
52
- headerClass: 'header',
53
- footerClass: 'footer',
54
- closeBtnClass: 'close'
55
- }
56
- );
57
- const styling = $derived(
58
- classes ?? {
59
- backdrop: backdropClass,
60
- header: headerClass,
61
- body: bodyClass,
62
- footer: footerClass,
63
- close: closeBtnClass
64
- }
65
- );
66
-
67
- const theme = getTheme('drawer');
68
-
69
- const {
70
- base,
71
- backdrop: backdropCls,
72
- header: headerCls,
73
- body,
74
- footer: footerCls,
75
- close: closeCls,
76
- form: formCls
77
- } = $derived(
78
- drawer({
79
- position,
80
- placement,
81
- width,
82
- size, // NEW: Pass size to drawer function
83
- backdrop
84
- })
85
- );
86
-
87
- let innerWidth: number = $state(-1);
88
- let innerHeight: number = $state(-1);
89
-
90
- // Updated x and y calculations to consider different sizes
91
- let x = $derived(() => {
92
- if (placement === 'left') return -320;
93
- if (placement === 'right') return innerWidth + 320;
94
- return undefined;
95
- });
96
-
97
- let y = $derived(() => {
98
- if (placement === 'top') return -100;
99
- if (placement === 'bottom') return innerHeight + 100;
100
- return undefined;
101
- });
102
-
103
- let transition_params = $derived(Object.assign({}, { x, y, duration: 200, easing: sineIn }));
104
-
105
- let ref: HTMLDivElement | undefined = $state(undefined);
106
-
107
- function close(ev: MouseEvent) {
108
- if (ref?.dispatchEvent(new Event('close', { bubbles: true, cancelable: true }))) {
109
- hidden = true;
110
- }
111
- }
112
-
113
- function _oncancel(ev: Event & { currentTarget: HTMLDivElement }) {
114
- if (ev.target !== ev.currentTarget) {
115
- return; // ignore if not on drawer
116
- }
117
-
118
- oncancel?.(ev);
119
- if (ev.defaultPrevented) return;
120
-
121
- ev.preventDefault();
122
- if (!permanent) hidden = true;
123
- }
124
-
125
- function _onclick(ev: Event & { currentTarget: HTMLDivElement }) {
126
- const drawer: HTMLDivElement = ev.currentTarget;
127
- if (activateClickOutside && ev.target === drawer) {
128
- return close(ev as unknown as MouseEvent);
129
- }
130
-
131
- if (autoclose && ev.target instanceof HTMLButtonElement && !permanent) {
132
- return (hidden = true);
133
- }
134
- }
135
-
136
- function _onsubmit(ev: SubmitEvent & { currentTarget: HTMLFormElement }) {
137
- onsubmit?.(ev as any);
138
- if (ev.defaultPrevented) return;
139
-
140
- ev.preventDefault();
141
-
142
- const mainForm = ev.currentTarget;
143
- let returnValue = '';
144
-
145
- // Find all nested forms within the main form
146
- const nestedForms = mainForm.querySelectorAll('form');
147
- const combinedFormData = new FormData();
148
-
149
- // Add data from main form (excluding nested forms)
150
- new FormData(mainForm).forEach((value, key) => {
151
- combinedFormData.append(key, value);
152
- });
153
-
154
- // Add data from all nested forms
155
- nestedForms.forEach((nestedForm) => {
156
- new FormData(nestedForm).forEach((value, key) => {
157
- combinedFormData.append(key, value);
158
- });
159
- });
160
-
161
- if (ev.submitter instanceof HTMLButtonElement || ev.submitter instanceof HTMLInputElement) {
162
- returnValue = ev.submitter.value;
163
- }
164
-
165
- if (!returnValue) {
166
- return (hidden = true);
167
- }
168
-
169
- if (
170
- typeof onaction === 'function' &&
171
- onaction({ action: returnValue, data: combinedFormData }) === false
172
- ) {
173
- return;
174
- }
175
-
176
- // hidden = true;
177
- }
178
-
179
- createDismissableContext(close);
180
- </script>
181
-
182
- <svelte:window bind:innerWidth bind:innerHeight />
183
-
184
- {#snippet content()}
185
- <div class="flex h-screen flex-col">
186
- {#if title || header}
187
- <div class={headerCls({ class: clsx(theme?.header, styling.header) })}>
188
- {#if title}
189
- <h3 class="text-base">{title}</h3>
190
- {#if dismissable && !permanent}
191
- <CloseButton type="submit" formnovalidate class={clsx(styling.close)} />
192
- {/if}
193
- {:else if header}
194
- {@render header()}
195
- {/if}
196
- </div>
197
- {/if}
198
- <div class="h-full flex-grow overflow-y-auto overscroll-contain">
199
- <div class={body({ class: clsx(theme?.body, styling.body) })}>
200
- {@render children?.()}
201
- </div>
202
- </div>
203
-
204
- {#if footer}
205
- <div class={footerCls({ class: clsx(theme?.footer, styling.footer) })}>
206
- {@render footer()}
207
- </div>
208
- {/if}
209
- {#if dismissable && !permanent && !title}
210
- <CloseButton
211
- type="submit"
212
- formnovalidate
213
- class={closeCls({ class: clsx(theme?.close, styling.close) })}
214
- />
215
- {/if}
216
- </div>
217
- {/snippet}
218
-
219
- {#if !hidden}
220
- <div
221
- role="presentation"
222
- bind:this={ref}
223
- class={backdropCls({ class: clsx(theme?.backdrop, styling.backdrop) })}
224
- onclick={activateClickOutside ? close : undefined}
225
- style={bodyScrolling ? 'pointer-events: none;' : ''}
226
- ></div>
227
- <div
228
- use:trapFocus={{ onEscape: close as () => void }}
229
- {...restProps}
230
- class={base({ class: clsx(theme?.base, className) })}
231
- transition:transitionType={transitionParams
232
- ? transitionParams
233
- : (transition_params as ParamsType)}
234
- tabindex="-1"
235
- onclick={_onclick}
236
- >
237
- {#if form}
238
- <form method="dialog" onsubmit={_onsubmit} class={formCls({ class: clsx(theme?.form) })}>
239
- {@render content()}
240
- </form>
241
- {:else}
242
- {@render content()}
243
- {/if}
244
- </div>
245
- {/if}
246
-
247
- <!--
248
- @component
249
- ## Props
250
- @prop children
251
- @prop onaction = () => true
252
- @prop oncancel
253
- @prop onsubmit
254
- @prop ontoggle
255
- @prop form = false
256
- @prop hidden = $bindable()
257
- @prop activateClickOutside = true
258
- @prop position
259
- @prop width
260
- @prop size // NEW: Added size prop documentation
261
- @prop backdrop = true
262
- @prop backdropClass
263
- @prop placement = "left"
264
- @prop class: className
265
- @prop classes
266
- @prop transitionParams
267
- @prop transitionType = fly
268
- @prop bodyScrolling = false
269
- @prop dismissable = true
270
- @prop closeBtnClass
271
- @prop headerClass
272
- @prop bodyClass
273
- @prop footerClass
274
- @prop header
275
- @prop footer
276
- @prop title
277
- @prop permanent = false
278
- @prop autoclose = false
279
- @prop ...restProps
280
- -->
1
+ <script lang="ts">
2
+ import clsx, { type ClassValue } from 'clsx';
3
+ import { fly } from 'svelte/transition';
4
+ import { sineIn } from 'svelte/easing';
5
+ import { drawer } from './index.js';
6
+ import { CloseButton } from '../../utils/closeButton/index.js';
7
+ import { createDismissableContext } from '../../utils/dismissable.js';
8
+ import { trapFocus } from '../../utils/index.js';
9
+ import { type ParamsType, type DrawerProps } from '../../index.js';
10
+ import { getTheme, warnThemeDeprecation } from '../../themes/themeUtils.js';
11
+
12
+ let {
13
+ children,
14
+ onaction = () => true,
15
+ oncancel,
16
+ onsubmit,
17
+ ontoggle,
18
+ onclose,
19
+ form = false,
20
+ hidden = $bindable(),
21
+ activateClickOutside = true,
22
+ position,
23
+ width,
24
+ size, // NEW: Added size prop
25
+ backdrop = true,
26
+ backdropClass,
27
+ placement = 'left',
28
+ class: className,
29
+ classes,
30
+ transitionParams,
31
+ transitionType = fly,
32
+ bodyScrolling = false,
33
+ dismissable = true,
34
+ closeBtnClass,
35
+ headerClass,
36
+ bodyClass,
37
+ footerClass,
38
+ header,
39
+ footer,
40
+ title,
41
+ permanent = false,
42
+ autoclose = false,
43
+ ...restProps
44
+ }: DrawerProps = $props();
45
+
46
+ warnThemeDeprecation(
47
+ 'Drawer',
48
+ { backdropClass, headerClass, bodyClass, footerClass, closeBtnClass },
49
+ {
50
+ backdropClass: 'backdrop',
51
+ bodyClass: 'body',
52
+ headerClass: 'header',
53
+ footerClass: 'footer',
54
+ closeBtnClass: 'close'
55
+ }
56
+ );
57
+ const styling = $derived(
58
+ classes ?? {
59
+ backdrop: backdropClass,
60
+ header: headerClass,
61
+ body: bodyClass,
62
+ footer: footerClass,
63
+ close: closeBtnClass
64
+ }
65
+ );
66
+
67
+ const theme = getTheme('drawer');
68
+
69
+ const {
70
+ base,
71
+ backdrop: backdropCls,
72
+ header: headerCls,
73
+ body,
74
+ footer: footerCls,
75
+ close: closeCls,
76
+ form: formCls
77
+ } = $derived(
78
+ drawer({
79
+ position,
80
+ placement,
81
+ width,
82
+ size, // NEW: Pass size to drawer function
83
+ backdrop
84
+ })
85
+ );
86
+
87
+ let innerWidth: number = $state(-1);
88
+ let innerHeight: number = $state(-1);
89
+
90
+ // Updated x and y calculations to consider different sizes
91
+ let x = $derived(() => {
92
+ if (placement === 'left') return -320;
93
+ if (placement === 'right') return innerWidth + 320;
94
+ return undefined;
95
+ });
96
+
97
+ let y = $derived(() => {
98
+ if (placement === 'top') return -100;
99
+ if (placement === 'bottom') return innerHeight + 100;
100
+ return undefined;
101
+ });
102
+
103
+ let transition_params = $derived(Object.assign({}, { x, y, duration: 200, easing: sineIn }));
104
+
105
+ let ref: HTMLDivElement | undefined = $state(undefined);
106
+
107
+ function close(ev: MouseEvent) {
108
+ if (ref?.dispatchEvent(new Event('close', { bubbles: true, cancelable: true }))) {
109
+ hidden = true;
110
+ }
111
+ }
112
+
113
+ function _oncancel(ev: Event & { currentTarget: HTMLDivElement }) {
114
+ if (ev.target !== ev.currentTarget) {
115
+ return; // ignore if not on drawer
116
+ }
117
+
118
+ oncancel?.(ev);
119
+ if (ev.defaultPrevented) return;
120
+
121
+ ev.preventDefault();
122
+ if (!permanent) hidden = true;
123
+ }
124
+
125
+ function _onclick(ev: Event & { currentTarget: HTMLDivElement }) {
126
+ const drawer: HTMLDivElement = ev.currentTarget;
127
+ if (activateClickOutside && ev.target === drawer) {
128
+ return close(ev as unknown as MouseEvent);
129
+ }
130
+
131
+ if (autoclose && ev.target instanceof HTMLButtonElement && !permanent) {
132
+ return (hidden = true);
133
+ }
134
+ }
135
+
136
+ function _onsubmit(ev: SubmitEvent & { currentTarget: HTMLFormElement }) {
137
+ onsubmit?.(ev as any);
138
+ if (ev.defaultPrevented) return;
139
+
140
+ ev.preventDefault();
141
+
142
+ const mainForm = ev.currentTarget;
143
+ let returnValue = '';
144
+
145
+ // Find all nested forms within the main form
146
+ const nestedForms = mainForm.querySelectorAll('form');
147
+ const combinedFormData = new FormData();
148
+
149
+ // Add data from main form (excluding nested forms)
150
+ new FormData(mainForm).forEach((value, key) => {
151
+ combinedFormData.append(key, value);
152
+ });
153
+
154
+ // Add data from all nested forms
155
+ nestedForms.forEach((nestedForm) => {
156
+ new FormData(nestedForm).forEach((value, key) => {
157
+ combinedFormData.append(key, value);
158
+ });
159
+ });
160
+
161
+ if (ev.submitter instanceof HTMLButtonElement || ev.submitter instanceof HTMLInputElement) {
162
+ returnValue = ev.submitter.value;
163
+ }
164
+
165
+ if (!returnValue) {
166
+ return (hidden = true);
167
+ }
168
+
169
+ if (
170
+ typeof onaction === 'function' &&
171
+ onaction({ action: returnValue, data: combinedFormData }) === false
172
+ ) {
173
+ return;
174
+ }
175
+
176
+ // hidden = true;
177
+ }
178
+
179
+ createDismissableContext(close);
180
+ </script>
181
+
182
+ <svelte:window bind:innerWidth bind:innerHeight />
183
+
184
+ {#snippet content()}
185
+ <div class="flex h-screen flex-col">
186
+ {#if title || header}
187
+ <div class={headerCls({ class: clsx(theme?.header, styling.header) })}>
188
+ {#if title}
189
+ <h3 class="text-base">{title}</h3>
190
+ {#if dismissable && !permanent}
191
+ <CloseButton type="submit" formnovalidate class={clsx(styling.close)} />
192
+ {/if}
193
+ {:else if header}
194
+ {@render header()}
195
+ {/if}
196
+ </div>
197
+ {/if}
198
+ <div class="h-full flex-grow overflow-y-auto overscroll-contain">
199
+ <div class={body({ class: clsx(theme?.body, styling.body) })}>
200
+ {@render children?.()}
201
+ </div>
202
+ </div>
203
+
204
+ {#if footer}
205
+ <div class={footerCls({ class: clsx(theme?.footer, styling.footer) })}>
206
+ {@render footer()}
207
+ </div>
208
+ {/if}
209
+ {#if dismissable && !permanent && !title}
210
+ <CloseButton
211
+ type="submit"
212
+ formnovalidate
213
+ class={closeCls({ class: clsx(theme?.close, styling.close) })}
214
+ />
215
+ {/if}
216
+ </div>
217
+ {/snippet}
218
+
219
+ {#if !hidden}
220
+ <div
221
+ role="presentation"
222
+ bind:this={ref}
223
+ class={backdropCls({ class: clsx(theme?.backdrop, styling.backdrop) })}
224
+ onclick={activateClickOutside ? close : undefined}
225
+ style={bodyScrolling ? 'pointer-events: none;' : ''}
226
+ ></div>
227
+ <div
228
+ use:trapFocus={{ onEscape: close as () => void }}
229
+ {...restProps}
230
+ class={base({ class: clsx(theme?.base, className) })}
231
+ transition:transitionType={transitionParams
232
+ ? transitionParams
233
+ : (transition_params as ParamsType)}
234
+ tabindex="-1"
235
+ onclick={_onclick}
236
+ >
237
+ {#if form}
238
+ <form method="dialog" onsubmit={_onsubmit} class={formCls({ class: clsx(theme?.form) })}>
239
+ {@render content()}
240
+ </form>
241
+ {:else}
242
+ {@render content()}
243
+ {/if}
244
+ </div>
245
+ {/if}
246
+
247
+ <!--
248
+ @component
249
+ ## Props
250
+ @prop children
251
+ @prop onaction = () => true
252
+ @prop oncancel
253
+ @prop onsubmit
254
+ @prop ontoggle
255
+ @prop form = false
256
+ @prop hidden = $bindable()
257
+ @prop activateClickOutside = true
258
+ @prop position
259
+ @prop width
260
+ @prop size // NEW: Added size prop documentation
261
+ @prop backdrop = true
262
+ @prop backdropClass
263
+ @prop placement = "left"
264
+ @prop class: className
265
+ @prop classes
266
+ @prop transitionParams
267
+ @prop transitionType = fly
268
+ @prop bodyScrolling = false
269
+ @prop dismissable = true
270
+ @prop closeBtnClass
271
+ @prop headerClass
272
+ @prop bodyClass
273
+ @prop footerClass
274
+ @prop header
275
+ @prop footer
276
+ @prop title
277
+ @prop permanent = false
278
+ @prop autoclose = false
279
+ @prop ...restProps
280
+ -->
@@ -1,36 +1,36 @@
1
- <script lang="ts">
2
- import clsx from 'clsx';
3
- import { setContext } from 'svelte';
4
- import { dropdown, DropdownGroup } from './index.js';
5
- import Popper from '../../utils/Popper.svelte';
6
- import { type DropdownProps } from '../../index.js';
7
-
8
- let {
9
- children,
10
- simple = false,
11
- placement = 'bottom',
12
- offset = 2,
13
- class: className,
14
- activeUrl = '',
15
- isOpen = $bindable(false),
16
- ...restProps
17
- }: DropdownProps = $props();
18
-
19
- const base = $derived(dropdown({ class: clsx(dropdown, className) }));
20
- const activeUrlStore = $state({ value: '' });
21
- setContext('activeUrl', activeUrlStore);
22
-
23
- $effect(() => {
24
- activeUrlStore.value = activeUrl ?? '';
25
- });
26
- </script>
27
-
28
- <Popper {...restProps} {placement} {offset} bind:isOpen class={base}>
29
- {#if simple}
30
- <DropdownGroup>
31
- {@render children()}
32
- </DropdownGroup>
33
- {:else}
34
- {@render children()}
35
- {/if}
36
- </Popper>
1
+ <script lang="ts">
2
+ import clsx from 'clsx';
3
+ import { setContext } from 'svelte';
4
+ import { dropdown, DropdownGroup } from './index.js';
5
+ import Popper from '../../utils/Popper.svelte';
6
+ import { type DropdownProps } from '../../index.js';
7
+
8
+ let {
9
+ children,
10
+ simple = false,
11
+ placement = 'bottom',
12
+ offset = 2,
13
+ class: className,
14
+ activeUrl = '',
15
+ isOpen = $bindable(false),
16
+ ...restProps
17
+ }: DropdownProps = $props();
18
+
19
+ const base = $derived(dropdown({ class: clsx(dropdown, className) }));
20
+ const activeUrlStore = $state({ value: '' });
21
+ setContext('activeUrl', activeUrlStore);
22
+
23
+ $effect(() => {
24
+ activeUrlStore.value = activeUrl ?? '';
25
+ });
26
+ </script>
27
+
28
+ <Popper {...restProps} {placement} {offset} bind:isOpen class={base}>
29
+ {#if simple}
30
+ <DropdownGroup>
31
+ {@render children()}
32
+ </DropdownGroup>
33
+ {:else}
34
+ {@render children()}
35
+ {/if}
36
+ </Popper>
@@ -1,11 +1,11 @@
1
- <script lang="ts">
2
- import clsx from 'clsx';
3
- import { dropdownDivider } from './index.js';
4
- import { getTheme } from '../../themes/themeUtils.js';
5
- import type { DropdownDividerProps } from '../../index.js';
6
-
7
- let { class: className, ...restProps }: DropdownDividerProps = $props();
8
- const theme = getTheme('dropdownDivider');
9
- </script>
10
-
11
- <div {...restProps} class={dropdownDivider({ class: clsx(theme, className) })}></div>
1
+ <script lang="ts">
2
+ import clsx from 'clsx';
3
+ import { dropdownDivider } from './index.js';
4
+ import { getTheme } from '../../themes/themeUtils.js';
5
+ import type { DropdownDividerProps } from '../../index.js';
6
+
7
+ let { class: className, ...restProps }: DropdownDividerProps = $props();
8
+ const theme = getTheme('dropdownDivider');
9
+ </script>
10
+
11
+ <div {...restProps} class={dropdownDivider({ class: clsx(theme, className) })}></div>
@@ -1,14 +1,14 @@
1
- <script lang="ts">
2
- import { dropdownGroup } from './index.js';
3
- import clsx from 'clsx';
4
- import { getTheme } from '../../themes/themeUtils.js';
5
- import type { DropdownGroupProps } from '../../index.js';
6
-
7
- let { children, class: className, ...restProps }: DropdownGroupProps = $props();
8
-
9
- const theme = getTheme('dropdownGroup');
10
- </script>
11
-
12
- <ul {...restProps} class={dropdownGroup({ class: clsx(theme, className) })}>
13
- {@render children()}
14
- </ul>
1
+ <script lang="ts">
2
+ import { dropdownGroup } from './index.js';
3
+ import clsx from 'clsx';
4
+ import { getTheme } from '../../themes/themeUtils.js';
5
+ import type { DropdownGroupProps } from '../../index.js';
6
+
7
+ let { children, class: className, ...restProps }: DropdownGroupProps = $props();
8
+
9
+ const theme = getTheme('dropdownGroup');
10
+ </script>
11
+
12
+ <ul {...restProps} class={dropdownGroup({ class: clsx(theme, className) })}>
13
+ {@render children()}
14
+ </ul>