@invopop/popui 0.1.3 → 0.1.4-beta.1
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/AlertDialog.svelte +10 -11
- package/dist/BaseButton.svelte +29 -104
- package/dist/BaseCard.svelte +35 -30
- package/dist/BaseCounter.svelte +11 -8
- package/dist/BaseDropdown.svelte +5 -5
- package/dist/BaseFlag.svelte +5 -3
- package/dist/BaseFlag.svelte.d.ts +1 -0
- package/dist/BaseTable.svelte +16 -16
- package/dist/BaseTable.svelte.d.ts +1 -1
- package/dist/BaseTableActions.svelte +4 -6
- package/dist/BaseTableCellContent.svelte +9 -21
- package/dist/BaseTableCheckbox.svelte +9 -11
- package/dist/BaseTableHeaderContent.svelte +4 -4
- package/dist/BaseTableHeaderOrderBy.svelte +23 -12
- package/dist/BaseTableRow.svelte +12 -10
- package/dist/Breadcrumb.svelte +40 -0
- package/dist/Breadcrumb.svelte.d.ts +4 -0
- package/dist/Breadcrumbs.svelte +5 -30
- package/dist/ButtonFile.svelte +40 -30
- package/dist/ButtonUuidCopy.svelte +6 -3
- package/dist/CardCheckbox.svelte +45 -32
- package/dist/CardCheckbox.svelte.d.ts +1 -1
- package/dist/CardRelation.svelte +12 -13
- package/dist/CompanySelector.svelte +35 -7
- package/dist/CounterWidget.svelte +52 -0
- package/dist/CounterWidget.svelte.d.ts +4 -0
- package/dist/DataListItem.svelte +14 -10
- package/dist/DatePicker.svelte +20 -17
- package/dist/DrawerContext.svelte +207 -15
- package/dist/DrawerContextItem.svelte +50 -50
- package/dist/DrawerContextSeparator.svelte +1 -1
- package/dist/DropdownSelect.svelte +81 -22
- package/dist/DropdownSelectGroup.svelte +15 -0
- package/dist/DropdownSelectGroup.svelte.d.ts +7 -0
- package/dist/EmptyState.svelte +42 -0
- package/dist/EmptyState.svelte.d.ts +4 -0
- package/dist/FeedEvents.svelte +9 -5
- package/dist/FeedIconEvent.svelte +2 -2
- package/dist/FeedIconStatus.svelte +4 -4
- package/dist/FeedItem.svelte +10 -11
- package/dist/FeedItemDetail.svelte +32 -6
- package/dist/FeedViewer.svelte +1 -1
- package/dist/GlobalSearch.svelte +13 -12
- package/dist/InputCheckbox.svelte +2 -5
- package/dist/InputError.svelte +4 -9
- package/dist/InputLabel.svelte +3 -1
- package/dist/InputRadio.svelte +29 -13
- package/dist/InputRadio.svelte.d.ts +1 -1
- package/dist/InputSearch.svelte +8 -8
- package/dist/InputSelect.svelte +32 -31
- package/dist/InputText.svelte +32 -24
- package/dist/InputTextarea.svelte +25 -19
- package/dist/InputToggle.svelte +24 -18
- package/dist/MenuItem.svelte +16 -11
- package/dist/MenuItemCollapsible.svelte +7 -7
- package/dist/Notification.svelte +60 -25
- package/dist/ProfileAvatar.svelte +43 -14
- package/dist/ProgressBar.svelte +42 -0
- package/dist/ProgressBar.svelte.d.ts +4 -0
- package/dist/ProgressBarCircle.svelte +46 -0
- package/dist/ProgressBarCircle.svelte.d.ts +4 -0
- package/dist/SeparatorHorizontal.svelte +2 -2
- package/dist/ShortcutWrapper.svelte +14 -5
- package/dist/StatusLabel.svelte +4 -5
- package/dist/StepIconList.svelte +11 -9
- package/dist/TagBeta.svelte +26 -14
- package/dist/TagProgress.svelte +28 -0
- package/dist/TagProgress.svelte.d.ts +4 -0
- package/dist/TagSearch.svelte +4 -4
- package/dist/TagStatus.svelte +32 -34
- package/dist/TitleMain.svelte +1 -1
- package/dist/TitleSection.svelte +1 -1
- package/dist/UuidCopy.svelte +4 -4
- package/dist/alert-dialog/alert-dialog-action.svelte +8 -4
- package/dist/alert-dialog/alert-dialog-cancel.svelte +7 -3
- package/dist/alert-dialog/alert-dialog-content.svelte +1 -1
- package/dist/alert-dialog/alert-dialog-description.svelte +1 -1
- package/dist/alert-dialog/alert-dialog-footer.svelte +1 -1
- package/dist/alert-dialog/alert-dialog-header.svelte +1 -1
- package/dist/alert-dialog/alert-dialog-overlay.svelte +1 -1
- package/dist/alert-dialog/alert-dialog-title.svelte +1 -1
- package/dist/alert-dialog/alert-dialog-trigger.svelte +4 -2
- package/dist/button/button.svelte +224 -24
- package/dist/button/button.svelte.d.ts +77 -26
- package/dist/clickOutside.d.ts +5 -2
- package/dist/clickOutside.js +9 -3
- package/dist/data-table/cells/boolean-cell.svelte +16 -0
- package/dist/data-table/cells/boolean-cell.svelte.d.ts +8 -0
- package/dist/data-table/cells/currency-cell.svelte +10 -0
- package/dist/data-table/cells/currency-cell.svelte.d.ts +8 -0
- package/dist/data-table/cells/date-cell.svelte +10 -0
- package/dist/data-table/cells/date-cell.svelte.d.ts +8 -0
- package/dist/data-table/cells/tag-cell.svelte +12 -0
- package/dist/data-table/cells/tag-cell.svelte.d.ts +8 -0
- package/dist/data-table/cells/text-cell.svelte +10 -0
- package/dist/data-table/cells/text-cell.svelte.d.ts +8 -0
- package/dist/data-table/column-definitions.d.ts +12 -0
- package/dist/data-table/column-definitions.js +40 -0
- package/dist/data-table/column-sizing-helpers.d.ts +6 -0
- package/dist/data-table/column-sizing-helpers.js +24 -0
- package/dist/data-table/create-columns.d.ts +3 -0
- package/dist/data-table/create-columns.js +50 -0
- package/dist/data-table/data-table-pagination.svelte +173 -0
- package/dist/data-table/data-table-pagination.svelte.d.ts +4 -0
- package/dist/data-table/data-table-svelte.svelte.d.ts +40 -0
- package/dist/data-table/data-table-svelte.svelte.js +111 -0
- package/dist/data-table/data-table-toolbar.svelte +16 -0
- package/dist/data-table/data-table-toolbar.svelte.d.ts +29 -0
- package/dist/data-table/data-table-types.d.ts +74 -0
- package/dist/data-table/data-table-types.js +1 -0
- package/dist/data-table/data-table-view-options.svelte +88 -0
- package/dist/data-table/data-table-view-options.svelte.d.ts +27 -0
- package/dist/data-table/data-table.svelte +324 -0
- package/dist/data-table/data-table.svelte.d.ts +25 -0
- package/dist/data-table/flex-render.svelte +40 -0
- package/dist/data-table/flex-render.svelte.d.ts +33 -0
- package/dist/data-table/index.d.ts +13 -0
- package/dist/data-table/index.js +13 -0
- package/dist/data-table/render-helpers.d.ts +90 -0
- package/dist/data-table/render-helpers.js +99 -0
- package/dist/data-table/table-setup.d.ts +36 -0
- package/dist/data-table/table-setup.js +130 -0
- package/dist/data-table/table-styles.d.ts +17 -0
- package/dist/data-table/table-styles.js +49 -0
- package/dist/helpers.d.ts +1 -0
- package/dist/helpers.js +3 -0
- package/dist/index.d.ts +16 -7
- package/dist/index.js +33 -14
- package/dist/range-calendar/range-calendar-cell.svelte +1 -1
- package/dist/range-calendar/range-calendar-day.svelte +11 -12
- package/dist/range-calendar/range-calendar-head-cell.svelte +1 -1
- package/dist/range-calendar/range-calendar-header.svelte +1 -1
- package/dist/range-calendar/range-calendar-month-select.svelte +1 -1
- package/dist/range-calendar/range-calendar-next-button.svelte +3 -3
- package/dist/range-calendar/range-calendar-prev-button.svelte +3 -3
- package/dist/range-calendar/range-calendar.svelte +1 -1
- package/dist/sonner/index.d.ts +1 -0
- package/dist/sonner/index.js +1 -0
- package/dist/sonner/sonner.svelte +44 -0
- package/dist/sonner/sonner.svelte.d.ts +4 -0
- package/dist/svg/CheckBadge.svelte +18 -0
- package/dist/svg/CheckBadge.svelte.d.ts +26 -0
- package/dist/svg/IconDelivery.svelte +86 -0
- package/dist/svg/IconDelivery.svelte.d.ts +20 -0
- package/dist/svg/IconEmpty.svelte +113 -121
- package/dist/svg/IconOrder.svelte +81 -0
- package/dist/svg/IconOrder.svelte.d.ts +20 -0
- package/dist/svg/IconPayment.svelte +86 -0
- package/dist/svg/IconPayment.svelte.d.ts +20 -0
- package/dist/table/table-body.svelte +5 -1
- package/dist/table/table-cell.svelte +4 -2
- package/dist/table/table-footer.svelte +1 -1
- package/dist/table/table-head.svelte +4 -2
- package/dist/table/table-header.svelte +1 -1
- package/dist/table/table-row.svelte +4 -2
- package/dist/table/table.svelte +2 -2
- package/dist/tabs/tabs-list.svelte +8 -2
- package/dist/tabs/tabs-list.svelte.d.ts +4 -1
- package/dist/tabs/tabs-trigger.svelte +5 -3
- package/dist/tabs/tabs-trigger.svelte.d.ts +4 -1
- package/dist/tailwind.theme.css +998 -0
- package/dist/tooltip/tooltip-content.svelte +2 -2
- package/dist/types.d.ts +76 -50
- package/package.json +20 -10
- package/dist/CounterWorkflow.svelte +0 -19
- package/dist/CounterWorkflow.svelte.d.ts +0 -4
- package/dist/DrawerContextWorkspace.svelte +0 -126
- package/dist/DrawerContextWorkspace.svelte.d.ts +0 -4
- package/dist/EmptyStateIcon.svelte +0 -52
- package/dist/EmptyStateIcon.svelte.d.ts +0 -4
- package/dist/EmptyStateIllustration.svelte +0 -66
- package/dist/EmptyStateIllustration.svelte.d.ts +0 -4
- package/dist/FormLayoutModal.svelte +0 -14
- package/dist/FormLayoutModal.svelte.d.ts +0 -4
- package/dist/ProfileSelector.svelte +0 -41
- package/dist/ProfileSelector.svelte.d.ts +0 -4
- package/dist/SectionLayout.svelte +0 -13
- package/dist/SectionLayout.svelte.d.ts +0 -4
- package/dist/tw.theme.d.ts +0 -171
- package/dist/tw.theme.js +0 -188
package/dist/AlertDialog.svelte
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
children
|
|
28
28
|
}: AlertDialogProps = $props()
|
|
29
29
|
|
|
30
|
+
let previousOpen = $state(open)
|
|
30
31
|
let recentAction = $state(false)
|
|
31
32
|
|
|
32
33
|
function cancel() {
|
|
@@ -46,17 +47,13 @@
|
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
$effect(() => {
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
// Only fire oncancel when transitioning from true to false (ESC or backdrop click)
|
|
51
|
+
if (previousOpen && !open && !recentAction) {
|
|
52
|
+
oncancel?.()
|
|
51
53
|
}
|
|
54
|
+
previousOpen = open
|
|
52
55
|
})
|
|
53
56
|
|
|
54
|
-
function cancelByEsc() {
|
|
55
|
-
if (recentAction) return
|
|
56
|
-
|
|
57
|
-
oncancel?.()
|
|
58
|
-
}
|
|
59
|
-
|
|
60
57
|
function handleOpen(value: boolean) {
|
|
61
58
|
if (value) {
|
|
62
59
|
const focusEl = document.querySelector(
|
|
@@ -68,9 +65,11 @@
|
|
|
68
65
|
</script>
|
|
69
66
|
|
|
70
67
|
<AlertDialog onOpenChange={handleOpen} bind:open>
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
{#if children}
|
|
69
|
+
<AlertDialogTrigger>
|
|
70
|
+
{@render children?.()}
|
|
71
|
+
</AlertDialogTrigger>
|
|
72
|
+
{/if}
|
|
74
73
|
<AlertDialogContent>
|
|
75
74
|
<AlertDialogHeader>
|
|
76
75
|
<AlertDialogTitle>{title}</AlertDialogTitle>
|
package/dist/BaseButton.svelte
CHANGED
|
@@ -1,124 +1,49 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import clsx from 'clsx'
|
|
3
2
|
import type { BaseButtonProps } from './types.ts'
|
|
4
|
-
import
|
|
5
|
-
import ShortcutWrapper from './ShortcutWrapper.svelte'
|
|
3
|
+
import Button from './button/button.svelte'
|
|
6
4
|
|
|
7
5
|
let {
|
|
8
6
|
icon,
|
|
9
7
|
iconTheme = 'default',
|
|
10
8
|
iconPosition = 'left',
|
|
11
9
|
type = 'button',
|
|
12
|
-
variant = '
|
|
10
|
+
variant = 'outline',
|
|
13
11
|
disabled = false,
|
|
14
|
-
|
|
15
|
-
big = false,
|
|
12
|
+
size = 'md',
|
|
16
13
|
dangerIcon = false,
|
|
17
14
|
shortcut = false,
|
|
18
15
|
fullwidth = false,
|
|
19
16
|
notification = false,
|
|
17
|
+
stackedLeft = false,
|
|
18
|
+
stackedRight = false,
|
|
20
19
|
children,
|
|
21
20
|
onclick,
|
|
21
|
+
class: className,
|
|
22
22
|
...rest
|
|
23
23
|
}: BaseButtonProps = $props()
|
|
24
24
|
|
|
25
|
-
let
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
{ 'px-2': !big && children && !icon },
|
|
42
|
-
{ 'pl-2 pr-2.5': big && children && icon && iconPosition === 'left' },
|
|
43
|
-
{ 'pl-2.5 pr-2': big && children && icon && iconPosition === 'right' },
|
|
44
|
-
{ 'pl-1.5 pr-2': !small && !big && children && icon && iconPosition === 'left' },
|
|
45
|
-
{ 'pl-2 pr-1.5': !small && !big && children && icon && iconPosition === 'right' },
|
|
46
|
-
{ 'py-1.5': big && children },
|
|
47
|
-
{ 'py-1': !big && children },
|
|
48
|
-
{ 'text-white': ['primary', 'danger', 'dark', 'warning'].includes(variant) },
|
|
49
|
-
{ 'text-neutral-800': ['default', 'secondary', 'outline'].includes(variant) },
|
|
50
|
-
{ 'border border-white-10 hover:border-white-20 active:border-white-40': variant === 'dark' },
|
|
51
|
-
{
|
|
52
|
-
'border border-neutral-200 hover:bg-neutral-100 active:border-neutral-300 active:bg-neutral-200':
|
|
53
|
-
variant === 'default'
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
'border border-neutral-800/10 hover:bg-neutral-800/5 active:border-neutral-800/20 active:bg-neutral-800/10':
|
|
57
|
-
variant === 'outline'
|
|
58
|
-
},
|
|
59
|
-
{ 'gap-1': icon && children }
|
|
60
|
-
)
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
let iconStyles = $derived(
|
|
64
|
-
clsx(
|
|
65
|
-
{
|
|
66
|
-
'text-neutral-500': ['default', 'secondary'].includes(variant) && children && !dangerIcon
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
'text-neutral-800': ['default', 'secondary'].includes(variant) && !children && !dangerIcon
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
'text-white-70': !['default', 'secondary'].includes(variant) && children && !dangerIcon
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
'text-white': !['default', 'secondary'].includes(variant) && !children && !dangerIcon
|
|
76
|
-
},
|
|
77
|
-
{ 'text-danger-500': dangerIcon }
|
|
78
|
-
)
|
|
79
|
-
)
|
|
80
|
-
|
|
81
|
-
let overlayClasses = $derived(
|
|
82
|
-
clsx({
|
|
83
|
-
'rounded-md': !small,
|
|
84
|
-
rounded: small,
|
|
85
|
-
'group-hover:bg-black/[.16] group-active:bg-black/[.32]': [
|
|
86
|
-
'primary',
|
|
87
|
-
'danger',
|
|
88
|
-
'warning'
|
|
89
|
-
].includes(variant)
|
|
90
|
-
})
|
|
91
|
-
)
|
|
92
|
-
|
|
93
|
-
function handleClick(event: MouseEvent) {
|
|
94
|
-
event.stopPropagation()
|
|
95
|
-
onclick?.(event)
|
|
96
|
-
}
|
|
25
|
+
let iconClass = $derived(dangerIcon ? 'text-icon-critical' : '')
|
|
26
|
+
let fullWidthClass = $derived(fullwidth ? 'w-full' : '')
|
|
27
|
+
let buttonProps = $derived({
|
|
28
|
+
variant,
|
|
29
|
+
size,
|
|
30
|
+
icon,
|
|
31
|
+
iconPosition,
|
|
32
|
+
iconClass,
|
|
33
|
+
type,
|
|
34
|
+
disabled,
|
|
35
|
+
stackedLeft,
|
|
36
|
+
stackedRight,
|
|
37
|
+
onclick,
|
|
38
|
+
class: `${fullWidthClass} ${className || ''}`,
|
|
39
|
+
...rest
|
|
40
|
+
})
|
|
97
41
|
</script>
|
|
98
42
|
|
|
99
|
-
|
|
100
|
-
{
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
<span class="{overlayClasses} absolute inset-0"></span>
|
|
107
|
-
{#if icon}
|
|
108
|
-
<div class="relative">
|
|
109
|
-
{#if shortcut}
|
|
110
|
-
<ShortcutWrapper>
|
|
111
|
-
<Icon src={icon} theme={iconTheme} class="{iconStyles} h-3 w-3 z-10" />
|
|
112
|
-
</ShortcutWrapper>
|
|
113
|
-
{:else}
|
|
114
|
-
<Icon src={icon} theme={iconTheme} class="{iconStyles} h-4 w-4 z-10" />
|
|
115
|
-
{/if}
|
|
116
|
-
{#if notification}
|
|
117
|
-
<span class="absolute top-0 right-0 w-1.5 h-1.5 bg-danger-500 rounded-full z-20"></span>
|
|
118
|
-
{/if}
|
|
119
|
-
</div>
|
|
120
|
-
{/if}
|
|
121
|
-
{#if children}
|
|
122
|
-
<span class="z-10">{@render children?.()}</span>
|
|
123
|
-
{/if}
|
|
124
|
-
</button>
|
|
43
|
+
{#if children}
|
|
44
|
+
<Button {...buttonProps}>
|
|
45
|
+
{@render children()}
|
|
46
|
+
</Button>
|
|
47
|
+
{:else}
|
|
48
|
+
<Button {...buttonProps} />
|
|
49
|
+
{/if}
|
package/dist/BaseCard.svelte
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
title = '',
|
|
9
9
|
description = '',
|
|
10
10
|
type = 'default',
|
|
11
|
-
enabled = false,
|
|
12
11
|
footer,
|
|
13
12
|
onclick,
|
|
14
13
|
...rest
|
|
@@ -16,43 +15,49 @@
|
|
|
16
15
|
</script>
|
|
17
16
|
|
|
18
17
|
<button
|
|
19
|
-
class="
|
|
18
|
+
class="flex flex-col gap-4 p-3 min-w-[298px] bg-background border border-border rounded-xl cursor-pointer text-left transition-colors hover:border-border-default-secondary disabled:bg-background-default-secondary disabled:cursor-not-allowed disabled:pointer-events-none"
|
|
20
19
|
disabled={type === 'soon'}
|
|
21
20
|
{...rest}
|
|
22
21
|
{onclick}
|
|
23
22
|
>
|
|
24
|
-
<div class="flex flex-col
|
|
25
|
-
<div class="flex items-
|
|
26
|
-
<div
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
{#if enabled}
|
|
31
|
-
<div
|
|
32
|
-
class="flex items-center space-x-1 rounded bg-neutral-50 border border-neutral-100 py-0.5 pl-1.5 pr-[5px] text-sm text-neutral-500 font-medium"
|
|
33
|
-
>
|
|
34
|
-
<div class="bg-positive-500 h-2 w-2 rounded-full"></div>
|
|
35
|
-
<span>Enabled</span>
|
|
36
|
-
</div>
|
|
37
|
-
{/if}
|
|
38
|
-
{#if type === 'beta'}
|
|
39
|
-
<TagBeta />
|
|
40
|
-
{:else if type === 'soon'}
|
|
41
|
-
<div
|
|
42
|
-
class="flex items-center space-x-1 rounded bg-neutral-50 border border-neutral-200 py-0.5 pl-1.5 pr-[5px] text-sm text-neutral-400 font-medium"
|
|
43
|
-
>
|
|
44
|
-
<span>Soon</span>
|
|
45
|
-
</div>
|
|
46
|
-
{/if}
|
|
23
|
+
<div class="flex flex-col gap-2 w-full flex-1">
|
|
24
|
+
<div class="flex items-start justify-between w-full">
|
|
25
|
+
<div
|
|
26
|
+
class="size-8 border border-border rounded-lg overflow-hidden flex items-center justify-center shrink-0"
|
|
27
|
+
>
|
|
28
|
+
<img class="size-5 shrink-0" src={imageUrl} alt={imageAlt} />
|
|
47
29
|
</div>
|
|
30
|
+
{#if type === 'beta' || type === 'soon'}
|
|
31
|
+
<div class="flex gap-2 items-start">
|
|
32
|
+
{#if type === 'beta'}
|
|
33
|
+
<TagBeta />
|
|
34
|
+
{:else if type === 'soon'}
|
|
35
|
+
<div
|
|
36
|
+
class="flex items-center gap-2 px-[5px] py-0.5 rounded bg-background-default-secondary border border-border"
|
|
37
|
+
>
|
|
38
|
+
<span
|
|
39
|
+
class="font-medium text-sm leading-4 text-foreground-default-tertiary whitespace-nowrap"
|
|
40
|
+
>
|
|
41
|
+
Soon
|
|
42
|
+
</span>
|
|
43
|
+
</div>
|
|
44
|
+
{/if}
|
|
45
|
+
</div>
|
|
46
|
+
{/if}
|
|
47
|
+
</div>
|
|
48
|
+
<div class="flex flex-col gap-0.5 w-full flex-1">
|
|
49
|
+
<h3 class="font-medium text-sm leading-5 tracking-[-0.07px] text-foreground w-full">
|
|
50
|
+
{title}
|
|
51
|
+
</h3>
|
|
52
|
+
<p
|
|
53
|
+
class="font-normal text-sm leading-5 tracking-[-0.07px] text-foreground-default-secondary w-full"
|
|
54
|
+
>
|
|
55
|
+
{description}
|
|
56
|
+
</p>
|
|
48
57
|
</div>
|
|
49
|
-
<h3 class="truncate text-base font-medium text-neutral-800 tracking-tight">{title}</h3>
|
|
50
58
|
</div>
|
|
51
|
-
<p class="flex mt-0.5 text-base text-neutral-500 tracking-normal flex-1">
|
|
52
|
-
{description}
|
|
53
|
-
</p>
|
|
54
59
|
{#if footer}
|
|
55
|
-
<div class="
|
|
60
|
+
<div class="shrink-0">
|
|
56
61
|
{@render footer?.()}
|
|
57
62
|
</div>
|
|
58
63
|
{/if}
|
package/dist/BaseCounter.svelte
CHANGED
|
@@ -2,19 +2,22 @@
|
|
|
2
2
|
import clsx from 'clsx'
|
|
3
3
|
import type { BaseCounterProps } from './types'
|
|
4
4
|
|
|
5
|
-
let {
|
|
5
|
+
let { value, theme = 'light' }: BaseCounterProps = $props()
|
|
6
6
|
|
|
7
7
|
let styles = $derived(
|
|
8
8
|
clsx(
|
|
9
|
-
|
|
10
|
-
{
|
|
11
|
-
|
|
9
|
+
'inline-flex items-center justify-center rounded px-[3px] pb-[1.5px] pt-[2.5px] font-mono font-medium text-sm leading-none',
|
|
10
|
+
{
|
|
11
|
+
'bg-background-default-tertiary text-foreground': theme === 'light',
|
|
12
|
+
'bg-background-accent text-foreground-inverse': theme === 'accent',
|
|
13
|
+
'bg-background-selected-inverse text-foreground-inverse': theme === 'navigation'
|
|
14
|
+
}
|
|
12
15
|
)
|
|
13
16
|
)
|
|
14
17
|
</script>
|
|
15
18
|
|
|
16
|
-
<div
|
|
17
|
-
class=
|
|
18
|
-
>
|
|
19
|
-
|
|
19
|
+
<div class="p-0.5">
|
|
20
|
+
<div class={styles}>
|
|
21
|
+
<p class="flex items-center justify-center min-w-2.5">{value}</p>
|
|
22
|
+
</div>
|
|
20
23
|
</div>
|
package/dist/BaseDropdown.svelte
CHANGED
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
let {
|
|
9
9
|
isOpen = $bindable(false),
|
|
10
10
|
fullWidth = false,
|
|
11
|
-
placement = 'bottom-
|
|
11
|
+
placement = 'bottom-start',
|
|
12
12
|
matchParentWidth = false,
|
|
13
|
+
class: className = '',
|
|
13
14
|
trigger,
|
|
14
15
|
children,
|
|
15
16
|
...rest
|
|
@@ -49,10 +50,9 @@
|
|
|
49
50
|
}
|
|
50
51
|
</script>
|
|
51
52
|
|
|
52
|
-
<div class="
|
|
53
|
+
<div class="flex {className}" class:w-full={fullWidth} role="menu">
|
|
53
54
|
<button
|
|
54
|
-
class="text-left"
|
|
55
|
-
class:w-full={fullWidth}
|
|
55
|
+
class="cursor-pointer text-left w-full min-w-0"
|
|
56
56
|
use:floatingRef
|
|
57
57
|
{...rest}
|
|
58
58
|
onclick={handleClick}
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</button>
|
|
62
62
|
{#if isOpen}
|
|
63
63
|
<div
|
|
64
|
-
class="max-h-40 absolute z-
|
|
64
|
+
class="max-h-40 absolute z-1001"
|
|
65
65
|
use:portal
|
|
66
66
|
use:floatingContent
|
|
67
67
|
use:clickOutside
|
package/dist/BaseFlag.svelte
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import 'flag-icons/css/flag-icons.min.css'
|
|
2
3
|
import type { BaseFlagProps } from './types'
|
|
3
4
|
|
|
4
|
-
let { country = ''
|
|
5
|
+
let { country = '' }: BaseFlagProps = $props()
|
|
5
6
|
|
|
6
7
|
let iso = $derived(country.toLowerCase())
|
|
7
8
|
</script>
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
<
|
|
10
|
+
<div class="w-3.5 h-2.5 rounded-[1.5px] overflow-hidden flex items-center justify-center">
|
|
11
|
+
<span class="fi fi-{country.toLocaleLowerCase()} text-[14px] leading-none"></span>
|
|
12
|
+
</div>
|
package/dist/BaseTable.svelte
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
let {
|
|
28
28
|
sortBy = '',
|
|
29
|
-
sortDirection = '',
|
|
29
|
+
sortDirection = $bindable(''),
|
|
30
30
|
fields = [],
|
|
31
31
|
data = [],
|
|
32
32
|
getActions = undefined,
|
|
@@ -127,7 +127,10 @@
|
|
|
127
127
|
return
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
// Only set keyboard mode if it's not just the Shift key alone
|
|
131
|
+
if (event.key !== 'Shift') {
|
|
132
|
+
selectionMode = 'keyboard'
|
|
133
|
+
}
|
|
131
134
|
|
|
132
135
|
if (event.key === 'Escape' || event.key === 'Esc') {
|
|
133
136
|
event.preventDefault()
|
|
@@ -238,7 +241,7 @@
|
|
|
238
241
|
}}
|
|
239
242
|
/>
|
|
240
243
|
|
|
241
|
-
<div class="w-full font-sans
|
|
244
|
+
<div class="h-full w-full font-sans rounded-md overflow-auto">
|
|
242
245
|
<Table class="hidden md:table" {...rest}>
|
|
243
246
|
<colgroup>
|
|
244
247
|
{#if selectable}
|
|
@@ -255,13 +258,13 @@
|
|
|
255
258
|
<TableRow>
|
|
256
259
|
{#if selectable}
|
|
257
260
|
<!-- if table is selectable we need to add an extra header with a checkbox -->
|
|
258
|
-
<TableHead class="bg-
|
|
261
|
+
<TableHead class="bg-background sticky top-0 z-10 p-0 h-9">
|
|
259
262
|
{#if !hideSelectAll}
|
|
260
263
|
<BaseTableCheckbox
|
|
261
|
-
hidden={!selectedRows.length}
|
|
262
264
|
{indeterminate}
|
|
263
265
|
checked={allChecked}
|
|
264
266
|
onChecked={() => {
|
|
267
|
+
console.log('toggle all')
|
|
265
268
|
toggleAllSelected(!selectedRows.length)
|
|
266
269
|
}}
|
|
267
270
|
/>
|
|
@@ -270,7 +273,7 @@
|
|
|
270
273
|
{/if}
|
|
271
274
|
{#each fields as field, i (i)}
|
|
272
275
|
<TableHead
|
|
273
|
-
class="bg-
|
|
276
|
+
class="bg-background group sticky z-10 top-0 py-0 {i === 0 && !selectable
|
|
274
277
|
? 'pl-3'
|
|
275
278
|
: 'pl-0'} {i === fields.length - 1 && !addExtraCell ? 'pr-3' : 'pr-0'}"
|
|
276
279
|
>
|
|
@@ -279,9 +282,7 @@
|
|
|
279
282
|
{/each}
|
|
280
283
|
{#if addExtraCell}
|
|
281
284
|
<!-- if table has actions cell we need to add an extra header -->
|
|
282
|
-
<th scope="col" class="bg-
|
|
283
|
-
<div class="border-b border-neutral-100 h-9"></div>
|
|
284
|
-
</th>
|
|
285
|
+
<th scope="col" class="bg-background sticky top-0 z-10 rounded-tr-md"> </th>
|
|
285
286
|
{/if}
|
|
286
287
|
</TableRow>
|
|
287
288
|
</TableHeader>
|
|
@@ -292,17 +293,16 @@
|
|
|
292
293
|
<th
|
|
293
294
|
scope="colgroup"
|
|
294
295
|
colspan={fields.length + (selectable ? 2 : 1)}
|
|
295
|
-
class="bg-
|
|
296
|
+
class="bg-background text-left text-base font-normal text-foreground-default-secondary sticky top-9 tracking-normal h-8 z-10"
|
|
296
297
|
>
|
|
297
298
|
<span
|
|
298
|
-
class:
|
|
299
|
-
class:pl-
|
|
300
|
-
class
|
|
301
|
-
class="flex items-center space-x-1 box-border border-b border-neutral-100 h-8"
|
|
299
|
+
class:pl-16={selectable}
|
|
300
|
+
class:pl-6={!selectable}
|
|
301
|
+
class="flex items-center space-x-1 box-border border-b border-border h-9"
|
|
302
302
|
>
|
|
303
303
|
<span>{group.label}</span>
|
|
304
304
|
{#if !hideCounter}
|
|
305
|
-
<BaseCounter
|
|
305
|
+
<BaseCounter value={group.rows.length} />
|
|
306
306
|
{/if}
|
|
307
307
|
</span>
|
|
308
308
|
</th>
|
|
@@ -361,7 +361,7 @@
|
|
|
361
361
|
{#each group.rows as row}
|
|
362
362
|
<button
|
|
363
363
|
class:cursor-default={disableRowClick}
|
|
364
|
-
class="w-full text-left border border-
|
|
364
|
+
class="w-full text-left border border-border rounded"
|
|
365
365
|
onclick={() => {
|
|
366
366
|
if (disableRowClick) return
|
|
367
367
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { BaseTableProps } from './types.js';
|
|
2
|
-
declare const BaseTable: import("svelte").Component<BaseTableProps, {}, "selectedRows">;
|
|
2
|
+
declare const BaseTable: import("svelte").Component<BaseTableProps, {}, "sortDirection" | "selectedRows">;
|
|
3
3
|
type BaseTable = ReturnType<typeof BaseTable>;
|
|
4
4
|
export default BaseTable;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import DrawerContext from './DrawerContext.svelte'
|
|
6
6
|
import { Options } from '@invopop/ui-icons'
|
|
7
7
|
import clsx from 'clsx'
|
|
8
|
+
import BaseButton from './BaseButton.svelte'
|
|
8
9
|
|
|
9
10
|
let { actions, onclick }: BaseTableActionsProps = $props()
|
|
10
11
|
|
|
@@ -23,8 +24,8 @@
|
|
|
23
24
|
|
|
24
25
|
let overlayClasses = $derived(
|
|
25
26
|
clsx({
|
|
26
|
-
'group-hover:bg-
|
|
27
|
-
'bg-
|
|
27
|
+
'group-hover:bg-foreground/[.05]': !isOpen,
|
|
28
|
+
'bg-foreground/[.1]': isOpen
|
|
28
29
|
})
|
|
29
30
|
)
|
|
30
31
|
|
|
@@ -34,10 +35,7 @@
|
|
|
34
35
|
</script>
|
|
35
36
|
|
|
36
37
|
{#snippet trigger()}
|
|
37
|
-
<
|
|
38
|
-
<span class="{overlayClasses} absolute inset-0 rounded"></span>
|
|
39
|
-
<Icon src={Options} class="w-4 text-neutral-500" />
|
|
40
|
-
</div>
|
|
38
|
+
<BaseButton variant="ghost" aria-label="Row actions" icon={Options} />
|
|
41
39
|
{/snippet}
|
|
42
40
|
|
|
43
41
|
<BaseDropdown bind:isOpen bind:this={actionDropdown} {trigger}>
|
|
@@ -4,13 +4,12 @@
|
|
|
4
4
|
import FeedIconStatus from './FeedIconStatus.svelte'
|
|
5
5
|
import BaseFlag from './BaseFlag.svelte'
|
|
6
6
|
import { getCountryName } from './helpers.js'
|
|
7
|
-
import UuidCopy from './UuidCopy.svelte'
|
|
8
7
|
import { Icon } from '@steeze-ui/svelte-icon'
|
|
8
|
+
import ButtonUuidCopy from './ButtonUuidCopy.svelte'
|
|
9
9
|
|
|
10
10
|
let {
|
|
11
11
|
field,
|
|
12
12
|
data = '',
|
|
13
|
-
isMobile = false,
|
|
14
13
|
badge = null,
|
|
15
14
|
status = null,
|
|
16
15
|
icons = null,
|
|
@@ -19,34 +18,23 @@
|
|
|
19
18
|
</script>
|
|
20
19
|
|
|
21
20
|
<div class="flex flex-col">
|
|
22
|
-
<span class="md:hidden text-sm
|
|
21
|
+
<span class="md:hidden text-sm font-normal">
|
|
23
22
|
{field.headerLabel}
|
|
24
23
|
</span>
|
|
25
|
-
<span class="flex items-center" class:justify-end={field.rightAlign}>
|
|
24
|
+
<span class="flex items-center gap-2" class:justify-end={field.rightAlign}>
|
|
26
25
|
{#if field.isCountry && data}
|
|
27
26
|
<span class="flex items-center space-x-1">
|
|
28
|
-
<BaseFlag country={String(data)}
|
|
27
|
+
<BaseFlag country={String(data)} />
|
|
29
28
|
<span>{getCountryName(String(data))}</span>
|
|
30
29
|
</span>
|
|
31
30
|
{:else if field.copy && data}
|
|
32
|
-
<
|
|
33
|
-
|
|
34
|
-
uuid={String(data)}
|
|
35
|
-
prefixLength={4}
|
|
36
|
-
suffixLength={4}
|
|
37
|
-
full
|
|
38
|
-
compact
|
|
39
|
-
dark={isMobile}
|
|
40
|
-
{onCopied}
|
|
41
|
-
/>
|
|
42
|
-
{:else}
|
|
31
|
+
<ButtonUuidCopy uuid={String(data)} full oncopied={onCopied} />
|
|
32
|
+
{:else if data}
|
|
43
33
|
<span class="hidden md:inline">{data}</span>
|
|
44
34
|
<span class="md:hidden">{data ? data : badge || status ? '' : '-'}</span>
|
|
45
35
|
{/if}
|
|
46
36
|
{#if badge}
|
|
47
|
-
<
|
|
48
|
-
<TagStatus label={badge.label} status={badge.status} dot={Boolean(badge.dot)} />
|
|
49
|
-
</span>
|
|
37
|
+
<TagStatus label={badge.label} status={badge.status} dot={Boolean(badge.dot)} />
|
|
50
38
|
{/if}
|
|
51
39
|
{#if status}
|
|
52
40
|
<span class:ml-2={!!data}>
|
|
@@ -54,9 +42,9 @@
|
|
|
54
42
|
</span>
|
|
55
43
|
{/if}
|
|
56
44
|
{#if icons}
|
|
57
|
-
<span class:ml-2={!!data} class="flex items-center gap-1
|
|
45
|
+
<span class:ml-2={!!data} class="flex items-center gap-1 shrink-0">
|
|
58
46
|
{#each icons as icon}
|
|
59
|
-
<div class="border border-
|
|
47
|
+
<div class="border border-border rounded-md p-px">
|
|
60
48
|
{#if typeof icon === 'string'}
|
|
61
49
|
<img alt="icon" src={icon} class="h-4 w-4" />
|
|
62
50
|
{:else}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
let {
|
|
6
6
|
checkboxButton = $bindable(undefined),
|
|
7
7
|
checked = false,
|
|
8
|
-
hidden = false,
|
|
9
8
|
indeterminate = false,
|
|
10
9
|
onChecked
|
|
11
10
|
}: BaseTableCheckboxProps = $props()
|
|
@@ -20,16 +19,15 @@
|
|
|
20
19
|
role="checkbox"
|
|
21
20
|
aria-checked={checked}
|
|
22
21
|
bind:this={checkboxButton}
|
|
23
|
-
class="
|
|
22
|
+
class="pl-3 h-full w-full flex items-center justify-center outline-none group cursor-default"
|
|
24
23
|
onclick={handleClick}
|
|
25
24
|
>
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
</div>
|
|
25
|
+
<InputCheckbox
|
|
26
|
+
{checked}
|
|
27
|
+
{indeterminate}
|
|
28
|
+
onclick={(e) => e.stopPropagation()}
|
|
29
|
+
onchange={(changed) => {
|
|
30
|
+
onChecked?.(changed)
|
|
31
|
+
}}
|
|
32
|
+
/>
|
|
35
33
|
</button>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
let headerStyles = $derived(
|
|
17
17
|
clsx({
|
|
18
|
-
'hover:bg-
|
|
18
|
+
'hover:bg-background-default-secondary focus:bg-background-default-tertiary': field.sortable
|
|
19
19
|
})
|
|
20
20
|
)
|
|
21
21
|
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
{#if field.sortable}
|
|
30
30
|
{#snippet trigger()}
|
|
31
31
|
<span
|
|
32
|
-
class="{headerStyles} w-full
|
|
32
|
+
class="{headerStyles} w-full px-3 py-2.5 flex items-center justify-start space-x-1 text-left text-base tracking-normal whitespace-nowrap font-normal"
|
|
33
33
|
>
|
|
34
34
|
<span class="w-full" class:text-right={field.rightAlign}>{field.headerLabel}</span>
|
|
35
35
|
{#if sortBy === field.slug}
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
fill="none"
|
|
39
39
|
xmlns="http://www.w3.org/2000/svg"
|
|
40
40
|
class:rotate-180={sortDirection === 'asc'}
|
|
41
|
-
class="mt-px text-
|
|
41
|
+
class="mt-px text-icon h-3 w-3"
|
|
42
42
|
>
|
|
43
43
|
<path
|
|
44
44
|
fill-rule="evenodd"
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
</BaseDropdown>
|
|
60
60
|
{:else}
|
|
61
61
|
<div
|
|
62
|
-
class="{headerStyles}
|
|
62
|
+
class="{headerStyles} px-3 py-2.5 text-left text-base font-normal tracking-normal whitespace-nowrap"
|
|
63
63
|
>
|
|
64
64
|
<div class="h-5">{field.headerLabel}</div>
|
|
65
65
|
</div>
|