@reshape-biotech/design-system 2.7.26 → 2.7.27
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/dist/components/dropdown/Dropdown.stories.svelte +106 -82
- package/dist/components/dropdown/components/dropdown-item.svelte +14 -6
- package/dist/components/dropdown/components/dropdown-sub-trigger.svelte +20 -12
- package/dist/components/dropdown/components/dropdown-trigger.svelte +3 -3
- package/dist/components/dropdown/types.d.ts +10 -3
- package/dist/components/status-badge/StatusBadge.svelte +5 -0
- package/dist/echarts-config.js +2 -1
- package/package.json +1 -1
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
<Dropdown.Trigger>Dropdown</Dropdown.Trigger>
|
|
20
20
|
<Dropdown.Portal>
|
|
21
21
|
<Dropdown.Content>
|
|
22
|
-
<Dropdown.Item>
|
|
22
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: 1st item')}>
|
|
23
23
|
<p>1st item</p>
|
|
24
24
|
</Dropdown.Item>
|
|
25
|
-
<Dropdown.Item>
|
|
25
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: 2nd item')}>
|
|
26
26
|
<p>2nd item</p>
|
|
27
27
|
</Dropdown.Item>
|
|
28
28
|
</Dropdown.Content>
|
|
@@ -218,9 +218,9 @@
|
|
|
218
218
|
</Story>
|
|
219
219
|
|
|
220
220
|
<Story name="Match Trigger Width">
|
|
221
|
-
<div class="
|
|
221
|
+
<div class="flex gap-8 bg-base p-12">
|
|
222
222
|
<div>
|
|
223
|
-
<p class="
|
|
223
|
+
<p class="mb-2 text-sm text-secondary">Without matchTriggerWidth</p>
|
|
224
224
|
<Dropdown.Root open>
|
|
225
225
|
<Dropdown.Trigger class="w-64">Wide Trigger Button</Dropdown.Trigger>
|
|
226
226
|
<Dropdown.Portal>
|
|
@@ -237,7 +237,7 @@
|
|
|
237
237
|
</div>
|
|
238
238
|
|
|
239
239
|
<div>
|
|
240
|
-
<p class="
|
|
240
|
+
<p class="mb-2 text-sm text-secondary">With matchTriggerWidth</p>
|
|
241
241
|
<Dropdown.Root open>
|
|
242
242
|
<Dropdown.Trigger class="w-64">Wide Trigger Button</Dropdown.Trigger>
|
|
243
243
|
<Dropdown.Portal>
|
|
@@ -259,7 +259,7 @@
|
|
|
259
259
|
<div class="py-12">
|
|
260
260
|
<Dropdown.Root open>
|
|
261
261
|
<Dropdown.Trigger>
|
|
262
|
-
{#snippet
|
|
262
|
+
{#snippet child({ props }: { props: Record<string, any> })}
|
|
263
263
|
<button
|
|
264
264
|
{...props}
|
|
265
265
|
class="flex items-center gap-2 rounded-full bg-gradient-to-r from-purple-500 to-pink-500 px-6 py-3 text-white hover:from-purple-600 hover:to-pink-600"
|
|
@@ -271,10 +271,10 @@
|
|
|
271
271
|
</Dropdown.Trigger>
|
|
272
272
|
<Dropdown.Portal>
|
|
273
273
|
<Dropdown.Content>
|
|
274
|
-
<Dropdown.Item>
|
|
274
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: 1st item (custom trigger)')}>
|
|
275
275
|
<p>1st item</p>
|
|
276
276
|
</Dropdown.Item>
|
|
277
|
-
<Dropdown.Item>
|
|
277
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: 2nd item (custom trigger)')}>
|
|
278
278
|
<p>2nd item</p>
|
|
279
279
|
</Dropdown.Item>
|
|
280
280
|
</Dropdown.Content>
|
|
@@ -289,28 +289,26 @@
|
|
|
289
289
|
<Dropdown.Trigger>Menu with Submenu</Dropdown.Trigger>
|
|
290
290
|
<Dropdown.Portal>
|
|
291
291
|
<Dropdown.Content matchTriggerWidth>
|
|
292
|
-
<Dropdown.Item>
|
|
292
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: First item')}>
|
|
293
293
|
<p>First item</p>
|
|
294
294
|
</Dropdown.Item>
|
|
295
|
-
<Dropdown.Sub>
|
|
295
|
+
<Dropdown.Sub open>
|
|
296
296
|
<Dropdown.SubTrigger side="right">
|
|
297
297
|
<p>More options</p>
|
|
298
298
|
</Dropdown.SubTrigger>
|
|
299
|
-
<Dropdown.
|
|
300
|
-
<Dropdown.
|
|
301
|
-
<
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
<
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
<
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
</Dropdown.SubContent>
|
|
311
|
-
</Dropdown.Portal>
|
|
299
|
+
<Dropdown.SubContent side="right">
|
|
300
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: Sub item 1')}>
|
|
301
|
+
<p>Sub item 1</p>
|
|
302
|
+
</Dropdown.Item>
|
|
303
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: Sub item 2')}>
|
|
304
|
+
<p>Sub item 2</p>
|
|
305
|
+
</Dropdown.Item>
|
|
306
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: Sub item 3')}>
|
|
307
|
+
<p>Sub item 3</p>
|
|
308
|
+
</Dropdown.Item>
|
|
309
|
+
</Dropdown.SubContent>
|
|
312
310
|
</Dropdown.Sub>
|
|
313
|
-
<Dropdown.Item>
|
|
311
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: Last item')}>
|
|
314
312
|
<p>Last item</p>
|
|
315
313
|
</Dropdown.Item>
|
|
316
314
|
</Dropdown.Content>
|
|
@@ -325,28 +323,26 @@
|
|
|
325
323
|
<Dropdown.Trigger>Menu with Left Submenu</Dropdown.Trigger>
|
|
326
324
|
<Dropdown.Portal>
|
|
327
325
|
<Dropdown.Content>
|
|
328
|
-
<Dropdown.Item>
|
|
326
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: First item (left menu)')}>
|
|
329
327
|
<p>First item</p>
|
|
330
328
|
</Dropdown.Item>
|
|
331
|
-
<Dropdown.Sub>
|
|
329
|
+
<Dropdown.Sub open>
|
|
332
330
|
<Dropdown.SubTrigger side="left">
|
|
333
331
|
<p>More options</p>
|
|
334
332
|
</Dropdown.SubTrigger>
|
|
335
|
-
<Dropdown.
|
|
336
|
-
<Dropdown.
|
|
337
|
-
<
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
<
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
<
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
</Dropdown.SubContent>
|
|
347
|
-
</Dropdown.Portal>
|
|
333
|
+
<Dropdown.SubContent side="left">
|
|
334
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: Sub item 1 (left submenu)')}>
|
|
335
|
+
<p>Sub item 1</p>
|
|
336
|
+
</Dropdown.Item>
|
|
337
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: Sub item 2 (left submenu)')}>
|
|
338
|
+
<p>Sub item 2</p>
|
|
339
|
+
</Dropdown.Item>
|
|
340
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: Sub item 3 (left submenu)')}>
|
|
341
|
+
<p>Sub item 3</p>
|
|
342
|
+
</Dropdown.Item>
|
|
343
|
+
</Dropdown.SubContent>
|
|
348
344
|
</Dropdown.Sub>
|
|
349
|
-
<Dropdown.Item>
|
|
345
|
+
<Dropdown.Item onSelect={() => console.log('Clicked: Last item (left menu)')}>
|
|
350
346
|
<p>Last item</p>
|
|
351
347
|
</Dropdown.Item>
|
|
352
348
|
</Dropdown.Content>
|
|
@@ -368,34 +364,30 @@
|
|
|
368
364
|
<Dropdown.SubTrigger>
|
|
369
365
|
<p>Settings</p>
|
|
370
366
|
</Dropdown.SubTrigger>
|
|
371
|
-
<Dropdown.
|
|
372
|
-
<Dropdown.
|
|
373
|
-
<
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
<Dropdown.
|
|
377
|
-
<
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
<Dropdown.
|
|
381
|
-
<
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
<p>Security</p>
|
|
396
|
-
</Dropdown.Item>
|
|
397
|
-
</Dropdown.SubContent>
|
|
398
|
-
</Dropdown.Portal>
|
|
367
|
+
<Dropdown.SubContent>
|
|
368
|
+
<Dropdown.Item>
|
|
369
|
+
<p>Profile</p>
|
|
370
|
+
</Dropdown.Item>
|
|
371
|
+
<Dropdown.Sub>
|
|
372
|
+
<Dropdown.SubTrigger>
|
|
373
|
+
<p>Preferences</p>
|
|
374
|
+
</Dropdown.SubTrigger>
|
|
375
|
+
<Dropdown.SubContent>
|
|
376
|
+
<Dropdown.Item>
|
|
377
|
+
<p>Theme</p>
|
|
378
|
+
</Dropdown.Item>
|
|
379
|
+
<Dropdown.Item>
|
|
380
|
+
<p>Language</p>
|
|
381
|
+
</Dropdown.Item>
|
|
382
|
+
<Dropdown.Item>
|
|
383
|
+
<p>Notifications</p>
|
|
384
|
+
</Dropdown.Item>
|
|
385
|
+
</Dropdown.SubContent>
|
|
386
|
+
</Dropdown.Sub>
|
|
387
|
+
<Dropdown.Item>
|
|
388
|
+
<p>Security</p>
|
|
389
|
+
</Dropdown.Item>
|
|
390
|
+
</Dropdown.SubContent>
|
|
399
391
|
</Dropdown.Sub>
|
|
400
392
|
<Dropdown.Item>
|
|
401
393
|
<p>Help</p>
|
|
@@ -419,16 +411,48 @@
|
|
|
419
411
|
<Dropdown.SubTrigger>
|
|
420
412
|
<p>More options</p>
|
|
421
413
|
</Dropdown.SubTrigger>
|
|
422
|
-
<Dropdown.
|
|
423
|
-
<Dropdown.
|
|
424
|
-
<
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
<
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
414
|
+
<Dropdown.SubContent variant="secondary">
|
|
415
|
+
<Dropdown.Item>
|
|
416
|
+
<p>Sub item 1</p>
|
|
417
|
+
</Dropdown.Item>
|
|
418
|
+
<Dropdown.Item>
|
|
419
|
+
<p>Sub item 2</p>
|
|
420
|
+
</Dropdown.Item>
|
|
421
|
+
</Dropdown.SubContent>
|
|
422
|
+
</Dropdown.Sub>
|
|
423
|
+
<Dropdown.Item>
|
|
424
|
+
<p>Last item</p>
|
|
425
|
+
</Dropdown.Item>
|
|
426
|
+
</Dropdown.Content>
|
|
427
|
+
</Dropdown.Portal>
|
|
428
|
+
</Dropdown.Root>
|
|
429
|
+
</div>
|
|
430
|
+
</Story>
|
|
431
|
+
|
|
432
|
+
<Story name="Submenu without Chevron">
|
|
433
|
+
<div class="py-12">
|
|
434
|
+
<Dropdown.Root open>
|
|
435
|
+
<Dropdown.Trigger>Menu without Chevron</Dropdown.Trigger>
|
|
436
|
+
<Dropdown.Portal>
|
|
437
|
+
<Dropdown.Content>
|
|
438
|
+
<Dropdown.Item>
|
|
439
|
+
<p>First item</p>
|
|
440
|
+
</Dropdown.Item>
|
|
441
|
+
<Dropdown.Sub open>
|
|
442
|
+
<Dropdown.SubTrigger hideChevron>
|
|
443
|
+
<p>More options (no chevron)</p>
|
|
444
|
+
</Dropdown.SubTrigger>
|
|
445
|
+
<Dropdown.SubContent>
|
|
446
|
+
<Dropdown.Item>
|
|
447
|
+
<p>Sub item 1</p>
|
|
448
|
+
</Dropdown.Item>
|
|
449
|
+
<Dropdown.Item>
|
|
450
|
+
<p>Sub item 2</p>
|
|
451
|
+
</Dropdown.Item>
|
|
452
|
+
<Dropdown.Item>
|
|
453
|
+
<p>Sub item 3</p>
|
|
454
|
+
</Dropdown.Item>
|
|
455
|
+
</Dropdown.SubContent>
|
|
432
456
|
</Dropdown.Sub>
|
|
433
457
|
<Dropdown.Item>
|
|
434
458
|
<p>Last item</p>
|
|
@@ -472,21 +496,21 @@
|
|
|
472
496
|
<Dropdown.Portal>
|
|
473
497
|
<Dropdown.Content>
|
|
474
498
|
<Dropdown.Item
|
|
475
|
-
|
|
499
|
+
onSelect={() => {
|
|
476
500
|
selectedOption = 'Option 1';
|
|
477
501
|
}}
|
|
478
502
|
>
|
|
479
503
|
<p>Option 1</p>
|
|
480
504
|
</Dropdown.Item>
|
|
481
505
|
<Dropdown.Item
|
|
482
|
-
|
|
506
|
+
onSelect={() => {
|
|
483
507
|
selectedOption = 'Option 2';
|
|
484
508
|
}}
|
|
485
509
|
>
|
|
486
510
|
<p>Option 2</p>
|
|
487
511
|
</Dropdown.Item>
|
|
488
512
|
<Dropdown.Item
|
|
489
|
-
|
|
513
|
+
onSelect={() => {
|
|
490
514
|
selectedOption = 'Option 3';
|
|
491
515
|
}}
|
|
492
516
|
>
|
|
@@ -497,7 +521,7 @@
|
|
|
497
521
|
</Dropdown.Root>
|
|
498
522
|
|
|
499
523
|
{#if selectedOption}
|
|
500
|
-
<div class="
|
|
524
|
+
<div class="mt-4 rounded bg-neutral p-2">
|
|
501
525
|
<p>You selected: <strong>{selectedOption}</strong></p>
|
|
502
526
|
</div>
|
|
503
527
|
{/if}
|
|
@@ -2,12 +2,20 @@
|
|
|
2
2
|
import { DropdownMenu } from 'bits-ui';
|
|
3
3
|
import type { DropdownItemProps } from '../types';
|
|
4
4
|
|
|
5
|
-
let { children, class: className = '', ...restProps }: DropdownItemProps = $props();
|
|
5
|
+
let { children, child: userChild, class: className = '', onSelect, ...restProps }: DropdownItemProps = $props();
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
|
-
<DropdownMenu.Item
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
<DropdownMenu.Item onSelect={onSelect} {...restProps}>
|
|
9
|
+
{#snippet child({ props }: { props: Record<string, any> })}
|
|
10
|
+
{#if userChild}
|
|
11
|
+
{@render userChild({ props })}
|
|
12
|
+
{:else}
|
|
13
|
+
<div
|
|
14
|
+
{...props}
|
|
15
|
+
class="h-8 cursor-pointer rounded-lg px-2 py-1.5 text-sm outline-none transition-colors hover:bg-neutral-hover focus:bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_a]:no-underline {className}"
|
|
16
|
+
>
|
|
17
|
+
{@render children?.()}
|
|
18
|
+
</div>
|
|
19
|
+
{/if}
|
|
20
|
+
{/snippet}
|
|
13
21
|
</DropdownMenu.Item>
|
|
@@ -5,20 +5,28 @@
|
|
|
5
5
|
import { Icon } from '../../icons/index.js';
|
|
6
6
|
import type { DropdownSubTriggerProps } from '../types';
|
|
7
7
|
|
|
8
|
-
let { children, class: className = '', side = 'right', ...restProps }: DropdownSubTriggerProps = $props();
|
|
8
|
+
let { children, child: userChild, class: className = '', side = 'right', hideChevron = false, ...restProps }: DropdownSubTriggerProps = $props();
|
|
9
9
|
|
|
10
10
|
let chevronIcon = $derived(side === 'left' ? CaretLeft : CaretRight);
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
|
-
<DropdownMenu.SubTrigger
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
13
|
+
<DropdownMenu.SubTrigger {...restProps}>
|
|
14
|
+
{#snippet child({ props }: { props: Record<string, any> })}
|
|
15
|
+
{#if userChild}
|
|
16
|
+
{@render userChild({ props })}
|
|
17
|
+
{:else}
|
|
18
|
+
<div
|
|
19
|
+
{...props}
|
|
20
|
+
class="flex h-8 cursor-pointer items-center justify-between gap-2 rounded-lg px-2 py-1.5 text-sm outline-none transition-colors hover:bg-neutral-hover focus:bg-neutral-hover data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_a]:no-underline {className}"
|
|
21
|
+
>
|
|
22
|
+
{#if !hideChevron && side === 'left'}
|
|
23
|
+
<Icon color="tertiary" icon={chevronIcon} size={16} />
|
|
24
|
+
{/if}
|
|
25
|
+
{@render children?.()}
|
|
26
|
+
{#if !hideChevron && side === 'right'}
|
|
27
|
+
<Icon color="tertiary" icon={chevronIcon} size={16} />
|
|
28
|
+
{/if}
|
|
29
|
+
</div>
|
|
30
|
+
{/if}
|
|
31
|
+
{/snippet}
|
|
24
32
|
</DropdownMenu.SubTrigger>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
let {
|
|
7
7
|
children,
|
|
8
|
-
|
|
8
|
+
child: userChild,
|
|
9
9
|
class: className = '',
|
|
10
10
|
variant = 'primary',
|
|
11
11
|
size = 'md',
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
|
|
16
16
|
<DropdownMenu.Trigger {...restProps}>
|
|
17
17
|
{#snippet child({ props }: { props: Record<string, any> })}
|
|
18
|
-
{#if
|
|
19
|
-
{@render
|
|
18
|
+
{#if userChild}
|
|
19
|
+
{@render userChild({ props })}
|
|
20
20
|
{:else}
|
|
21
21
|
<Button {...props} {variant} {size} class={className}>
|
|
22
22
|
{@render children?.()}
|
|
@@ -5,7 +5,7 @@ export type DropdownContentVariant = 'primary' | 'secondary';
|
|
|
5
5
|
export type DropdownSubMenuSide = 'left' | 'right';
|
|
6
6
|
export type DropdownTriggerProps = {
|
|
7
7
|
children?: Snippet;
|
|
8
|
-
|
|
8
|
+
child?: Snippet<[{
|
|
9
9
|
props: Record<string, any>;
|
|
10
10
|
}]>;
|
|
11
11
|
class?: string;
|
|
@@ -23,13 +23,20 @@ export type DropdownContentProps = {
|
|
|
23
23
|
matchTriggerWidth?: boolean;
|
|
24
24
|
} & BitsDropdownMenuContentProps;
|
|
25
25
|
export type DropdownItemProps = {
|
|
26
|
-
children
|
|
26
|
+
children?: Snippet;
|
|
27
|
+
child?: Snippet<[{
|
|
28
|
+
props: Record<string, any>;
|
|
29
|
+
}]>;
|
|
27
30
|
class?: string;
|
|
28
31
|
} & BitsDropdownMenuItemProps;
|
|
29
32
|
export type DropdownSubTriggerProps = {
|
|
30
|
-
children
|
|
33
|
+
children?: Snippet;
|
|
34
|
+
child?: Snippet<[{
|
|
35
|
+
props: Record<string, any>;
|
|
36
|
+
}]>;
|
|
31
37
|
class?: string;
|
|
32
38
|
side?: DropdownSubMenuSide;
|
|
39
|
+
hideChevron?: boolean;
|
|
33
40
|
} & BitsDropdownMenuSubTriggerProps;
|
|
34
41
|
export type DropdownSubContentProps = {
|
|
35
42
|
children: Snippet;
|
|
@@ -41,7 +41,12 @@
|
|
|
41
41
|
|
|
42
42
|
<style>
|
|
43
43
|
.badge {
|
|
44
|
+
display: inline-flex;
|
|
45
|
+
flex-direction: row;
|
|
46
|
+
align-items: center;
|
|
47
|
+
justify-content: center;
|
|
44
48
|
gap: 0.5rem;
|
|
49
|
+
border-radius: 9999px;
|
|
45
50
|
border-style: none;
|
|
46
51
|
--tw-text-opacity: 1;
|
|
47
52
|
color: rgb(18 25 42 / var(--tw-text-opacity, 1))
|
package/dist/echarts-config.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Core components (required)
|
|
4
4
|
import * as echarts from 'echarts/core';
|
|
5
5
|
// Charts we use
|
|
6
|
-
import { CandlestickChart, LineChart } from 'echarts/charts';
|
|
6
|
+
import { BoxplotChart, CandlestickChart, LineChart } from 'echarts/charts';
|
|
7
7
|
import { BarChart } from 'echarts/charts';
|
|
8
8
|
import { ScatterChart } from 'echarts/charts';
|
|
9
9
|
import { CustomChart } from 'echarts/charts';
|
|
@@ -19,6 +19,7 @@ echarts.use([
|
|
|
19
19
|
ScatterChart,
|
|
20
20
|
CustomChart,
|
|
21
21
|
CandlestickChart,
|
|
22
|
+
BoxplotChart,
|
|
22
23
|
// Components
|
|
23
24
|
TooltipComponent,
|
|
24
25
|
GridComponent,
|