@invopop/popui 0.1.2 → 0.1.3-6.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 +25 -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 +46 -18
- 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 +200 -24
- package/dist/button/button.svelte.d.ts +51 -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 +144 -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 +66 -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 +303 -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 +48 -0
- package/dist/helpers.d.ts +1 -0
- package/dist/helpers.js +3 -0
- package/dist/index.d.ts +15 -7
- package/dist/index.js +31 -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 +71 -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 -142
- package/dist/tw.theme.js +0 -158
package/dist/TagStatus.svelte
CHANGED
|
@@ -5,50 +5,48 @@
|
|
|
5
5
|
let { label = '', status = 'grey', dot = false }: TagStatusProps = $props()
|
|
6
6
|
|
|
7
7
|
let tagStyles = $derived(
|
|
8
|
-
clsx({
|
|
9
|
-
'bg-
|
|
10
|
-
'
|
|
11
|
-
'bg-
|
|
12
|
-
'
|
|
13
|
-
'bg-
|
|
14
|
-
'
|
|
15
|
-
'bg-
|
|
16
|
-
'
|
|
17
|
-
'bg-
|
|
18
|
-
'
|
|
19
|
-
'bg-
|
|
20
|
-
'
|
|
21
|
-
'
|
|
22
|
-
'
|
|
23
|
-
'
|
|
24
|
-
'pl-1.5 pr-[5px] py-0.5': dot && label,
|
|
25
|
-
'p-0.5': dot && !label,
|
|
26
|
-
'px-1 py-0.5': !dot
|
|
8
|
+
clsx('rounded inline-flex items-center text-sm font-medium gap-1 box-border leading-4 py-0.5', {
|
|
9
|
+
'bg-background-status-paid text-foreground-status-paid': status === 'green',
|
|
10
|
+
'bg-background-status-processing text-foreground-status-processing': status === 'yellow',
|
|
11
|
+
'bg-background-status-error text-foreground-status-error': status === 'red',
|
|
12
|
+
'bg-background-status-draft text-foreground-status-draft': status === 'orange',
|
|
13
|
+
'bg-background-status-sent text-foreground-status-sent': status === 'blue',
|
|
14
|
+
'bg-background-status-registered text-foreground-status-registered': status === 'purple',
|
|
15
|
+
'bg-background-status-completed text-foreground-status-completed': status === 'teal',
|
|
16
|
+
'bg-background-status-received text-foreground-status-received': status === 'steelBlue',
|
|
17
|
+
'bg-background-status-rejected text-foreground-status-rejected': status === 'crimson',
|
|
18
|
+
'bg-sherwood-alpha-10 text-sherwood-60': status === 'olive',
|
|
19
|
+
'bg-background-status-void text-foreground-default-secondary': status === 'grey',
|
|
20
|
+
'shadow-avatar text-foreground-default-secondary': status === 'empty',
|
|
21
|
+
'px-1.5': dot,
|
|
22
|
+
'p-1!': dot && !label,
|
|
23
|
+
'px-1': !dot
|
|
27
24
|
})
|
|
28
25
|
)
|
|
29
26
|
|
|
30
27
|
let dotStyles = $derived(
|
|
31
|
-
clsx({
|
|
32
|
-
'bg-
|
|
33
|
-
'bg-
|
|
34
|
-
'bg-
|
|
35
|
-
'bg-
|
|
36
|
-
'bg-
|
|
37
|
-
'bg-
|
|
38
|
-
'bg-
|
|
39
|
-
'bg-
|
|
28
|
+
clsx('rounded-[2px] shrink-0', {
|
|
29
|
+
'bg-icon-status-paid': status === 'green',
|
|
30
|
+
'bg-icon-status-processing': status === 'yellow',
|
|
31
|
+
'bg-icon-status-error': status === 'red',
|
|
32
|
+
'bg-icon-status-draft': status === 'orange',
|
|
33
|
+
'bg-icon-status-sent': status === 'blue',
|
|
34
|
+
'bg-icon-status-registered': status === 'purple',
|
|
35
|
+
'bg-icon-status-completed': status === 'teal',
|
|
36
|
+
'bg-icon-status-received': status === 'steelBlue',
|
|
37
|
+
'bg-icon-status-rejected': status === 'crimson',
|
|
38
|
+
'bg-sherwood-50': status === 'olive',
|
|
39
|
+
'bg-icon-status-void': status === 'grey',
|
|
40
|
+
'bg-icon-default-secondary': status === 'empty'
|
|
40
41
|
})
|
|
41
42
|
)
|
|
42
43
|
</script>
|
|
43
44
|
|
|
44
|
-
<span
|
|
45
|
-
class:h-5={Boolean(label)}
|
|
46
|
-
class="{tagStyles} rounded text-sm inline-flex items-center font-medium gap-1 box-border"
|
|
47
|
-
>
|
|
45
|
+
<span class={tagStyles}>
|
|
48
46
|
{#if dot}
|
|
49
|
-
<span class="{dotStyles}
|
|
47
|
+
<span class="{dotStyles} size-2"></span>
|
|
50
48
|
{/if}
|
|
51
49
|
{#if label}
|
|
52
|
-
<span>{label}</span>
|
|
50
|
+
<span class="whitespace-nowrap">{label}</span>
|
|
53
51
|
{/if}
|
|
54
52
|
</span>
|
package/dist/TitleMain.svelte
CHANGED
package/dist/TitleSection.svelte
CHANGED
package/dist/UuidCopy.svelte
CHANGED
|
@@ -35,11 +35,11 @@
|
|
|
35
35
|
'justify-end': rightAlign,
|
|
36
36
|
'text-sm': small,
|
|
37
37
|
'text-base': !small,
|
|
38
|
-
'text-
|
|
39
|
-
'text-
|
|
38
|
+
'text-foreground': dark,
|
|
39
|
+
'text-foreground-default-secondary': !dark,
|
|
40
40
|
'justify-between': !compact,
|
|
41
41
|
'w-full': full,
|
|
42
|
-
'border border-
|
|
42
|
+
'border border-border rounded-md pl-2.5 pr-2 py-[5px]': !full
|
|
43
43
|
})
|
|
44
44
|
)
|
|
45
45
|
|
|
@@ -65,6 +65,6 @@
|
|
|
65
65
|
{formattedUuid}
|
|
66
66
|
</button>
|
|
67
67
|
<button class="p-1 cursor-pointer" onclick={handleIconClick}>
|
|
68
|
-
<Icon src={link ? ExternalLink : Duplicate} class="w-4 h-4 text-
|
|
68
|
+
<Icon src={link ? ExternalLink : Duplicate} class="w-4 h-4 text-foreground-default-secondary" />
|
|
69
69
|
</button>
|
|
70
70
|
</div>
|
|
@@ -6,16 +6,20 @@
|
|
|
6
6
|
ref = $bindable(null),
|
|
7
7
|
class: className,
|
|
8
8
|
destructive = false,
|
|
9
|
-
children
|
|
9
|
+
children,
|
|
10
|
+
...restProps
|
|
10
11
|
}: AlertDialogPrimitive.ActionProps & { destructive: boolean } = $props()
|
|
11
12
|
|
|
12
|
-
let variant = $derived((destructive ? '
|
|
13
|
+
let variant = $derived((destructive ? 'danger' : 'primary') as ButtonVariant)
|
|
13
14
|
</script>
|
|
14
15
|
|
|
15
16
|
<AlertDialogPrimitive.Action
|
|
16
17
|
bind:ref
|
|
17
18
|
data-slot="alert-dialog-action"
|
|
18
|
-
class={cn(buttonVariants({ variant }), className)}
|
|
19
|
+
class={cn(buttonVariants({ variant }), 'group', className)}
|
|
20
|
+
{...restProps}
|
|
19
21
|
>
|
|
20
|
-
|
|
22
|
+
<div class="inline-flex items-center transition-transform group-active:translate-y-px">
|
|
23
|
+
{@render children?.()}
|
|
24
|
+
</div>
|
|
21
25
|
</AlertDialogPrimitive.Action>
|
|
@@ -5,15 +5,19 @@
|
|
|
5
5
|
let {
|
|
6
6
|
ref = $bindable(null),
|
|
7
7
|
class: className,
|
|
8
|
-
children
|
|
8
|
+
children,
|
|
9
|
+
...restProps
|
|
9
10
|
}: AlertDialogPrimitive.CancelProps = $props()
|
|
10
11
|
</script>
|
|
11
12
|
|
|
12
13
|
<AlertDialogPrimitive.Cancel
|
|
13
14
|
bind:ref
|
|
14
15
|
data-slot="alert-dialog-cancel"
|
|
15
|
-
class={cn(buttonVariants({ variant: 'secondary' }), 'mt-2 sm:mt-0', className)}
|
|
16
|
+
class={cn(buttonVariants({ variant: 'secondary' }), 'group mt-2 sm:mt-0', className)}
|
|
16
17
|
{onkeydown}
|
|
18
|
+
{...restProps}
|
|
17
19
|
>
|
|
18
|
-
|
|
20
|
+
<div class="inline-flex items-center transition-transform group-active:translate-y-px">
|
|
21
|
+
{@render children?.()}
|
|
22
|
+
</div>
|
|
19
23
|
</AlertDialogPrimitive.Cancel>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
bind:ref
|
|
19
19
|
data-slot="alert-dialog-content"
|
|
20
20
|
class={cn(
|
|
21
|
-
'bg-
|
|
21
|
+
'bg-background fixed left-1/2 top-1/2 z-[1002] flex flex-col w-full max-w-lg -translate-x-1/2 -translate-y-1/2 rounded-xl overflow-clip',
|
|
22
22
|
className
|
|
23
23
|
)}
|
|
24
24
|
>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
bind:ref
|
|
13
13
|
data-slot="alert-dialog-description"
|
|
14
14
|
class={cn(
|
|
15
|
-
'text-
|
|
15
|
+
'text-base font-normal leading-5 tracking-tight text-foreground-default-secondary',
|
|
16
16
|
className
|
|
17
17
|
)}
|
|
18
18
|
>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
bind:ref
|
|
9
9
|
data-slot="alert-dialog-overlay"
|
|
10
10
|
class={cn(
|
|
11
|
-
'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 bg-neutral-
|
|
11
|
+
'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 bg-neutral-80/30 fixed inset-0 z-[1001]',
|
|
12
12
|
className
|
|
13
13
|
)}
|
|
14
14
|
/>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<AlertDialogPrimitive.Title
|
|
12
12
|
bind:ref
|
|
13
13
|
data-slot="alert-dialog-title"
|
|
14
|
-
class={cn('text-lg font-semibold text-
|
|
14
|
+
class={cn('text-lg font-semibold leading-6 tracking-tight text-foreground', className)}
|
|
15
15
|
>
|
|
16
16
|
{@render children?.()}
|
|
17
17
|
</AlertDialogPrimitive.Title>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { AlertDialog as AlertDialogPrimitive } from 'bits-ui'
|
|
3
|
-
let { ref = $bindable(null) }: AlertDialogPrimitive.TriggerProps = $props()
|
|
3
|
+
let { ref = $bindable(null), children }: AlertDialogPrimitive.TriggerProps = $props()
|
|
4
4
|
</script>
|
|
5
5
|
|
|
6
|
-
<AlertDialogPrimitive.Trigger bind:ref data-slot="alert-dialog-trigger"
|
|
6
|
+
<AlertDialogPrimitive.Trigger bind:ref data-slot="alert-dialog-trigger">
|
|
7
|
+
{@render children?.()}
|
|
8
|
+
</AlertDialogPrimitive.Trigger>
|
|
@@ -2,77 +2,253 @@
|
|
|
2
2
|
import { cn, type WithElementRef } from '../utils.js'
|
|
3
3
|
import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements'
|
|
4
4
|
import { type VariantProps, tv } from 'tailwind-variants'
|
|
5
|
+
import type { IconSource } from '@steeze-ui/svelte-icon'
|
|
6
|
+
|
|
5
7
|
export const buttonVariants = tv({
|
|
6
|
-
base: '
|
|
8
|
+
base: 'inline-flex items-center justify-center font-medium text-base whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-selected focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-30 relative overflow-hidden box-border cursor-pointer',
|
|
7
9
|
variants: {
|
|
8
10
|
variant: {
|
|
9
|
-
default: 'bg-white text-neutral-800 hover:bg-primary/90',
|
|
10
|
-
destructive:
|
|
11
|
-
'ring-danger-200 bg-danger-500 border border-danger-500 hover:bg-danger-600 hover:border-danger-600 active:bg-danger-700 active:border-danger-700 text-white',
|
|
12
|
-
outline:
|
|
13
|
-
'border-neutral-200 bg-white hover:border-neutral-300 border shadow-button active:shadow-button-active',
|
|
14
11
|
primary:
|
|
15
|
-
'bg-
|
|
12
|
+
'bg-background-accent text-foreground-inverse border border-border shadow-button-primary hover:bg-background-accent-hover active:bg-background-accent-hover active:shadow-button-pressed [&_svg]:text-icon-inverse',
|
|
13
|
+
warning:
|
|
14
|
+
'bg-background-warning-inverse text-foreground-inverse border border-border shadow-button-primary hover:bg-background-warning-bold active:bg-background-warning-bold active:shadow-button-pressed [&_svg]:text-icon-inverse',
|
|
15
|
+
danger:
|
|
16
|
+
'bg-background-default-tertiary text-foreground-critical border border-border shadow-button-default hover:bg-background-critical-bold hover:text-foreground-inverse hover:border-background-critical-bold active:bg-background-critical-bold active:text-foreground-inverse active:border-background-critical-bold active:shadow-[0px_4px_4px_-1px_inset_rgba(11,11,16,0.16)] [&_svg]:text-icon-critical hover:[&_svg]:text-icon-inverse active:[&_svg]:text-icon-inverse',
|
|
17
|
+
outline:
|
|
18
|
+
'bg-background text-foreground border border-border-default-secondary shadow-button-default hover:border-border-default-secondary-hover active:shadow-button-pressed [&_svg]:text-icon',
|
|
19
|
+
ghost:
|
|
20
|
+
'bg-transparent text-foreground hover:shadow-button-default active:shadow-button-pressed hover:bg-background-default-tertiary-hover active:bg-background-default-tertiary-hover [&_svg]:text-icon',
|
|
16
21
|
secondary:
|
|
17
|
-
'bg-
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
'bg-background-default-tertiary text-foreground shadow-button-default hover:bg-background-default-tertiary-hover active:bg-background-default-tertiary-hover active:shadow-button-pressed [&_svg]:text-icon',
|
|
23
|
+
dark: 'bg-transparent text-foreground-inverse border border-border-inverse-secondary hover:bg-background-selected-inverse active:bg-background-inverse-tertiary active:shadow-button-dark-pressed [&_svg]:text-icon-inverse',
|
|
24
|
+
'dark-ghost':
|
|
25
|
+
'bg-transparent text-foreground-inverse hover:bg-background-selected-inverse active:bg-background-inverse-tertiary active:shadow-button-dark-pressed [&_svg]:text-icon-inverse'
|
|
20
26
|
},
|
|
21
27
|
size: {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
lg: 'h-
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
sm: 'h-6 rounded-sm',
|
|
29
|
+
md: 'h-7 rounded-md',
|
|
30
|
+
lg: 'h-8 rounded-lg'
|
|
31
|
+
},
|
|
32
|
+
iconOnly: {
|
|
33
|
+
true: '',
|
|
34
|
+
false: ''
|
|
35
|
+
},
|
|
36
|
+
hasIcon: {
|
|
37
|
+
true: '',
|
|
38
|
+
false: ''
|
|
27
39
|
}
|
|
28
40
|
},
|
|
41
|
+
compoundVariants: [
|
|
42
|
+
// Icon-only padding (varies by size) - must come first to avoid conflicts
|
|
43
|
+
{
|
|
44
|
+
size: 'sm',
|
|
45
|
+
iconOnly: true,
|
|
46
|
+
class: '!p-1'
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
size: 'md',
|
|
50
|
+
iconOnly: true,
|
|
51
|
+
class: '!p-1.5'
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
size: 'lg',
|
|
55
|
+
iconOnly: true,
|
|
56
|
+
class: '!p-2'
|
|
57
|
+
},
|
|
58
|
+
// Vertical padding for buttons with text
|
|
59
|
+
{
|
|
60
|
+
size: ['sm', 'md'],
|
|
61
|
+
iconOnly: false,
|
|
62
|
+
class: 'py-1'
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
size: 'lg',
|
|
66
|
+
iconOnly: false,
|
|
67
|
+
class: 'py-1.5'
|
|
68
|
+
},
|
|
69
|
+
// No icon - symmetric padding
|
|
70
|
+
{
|
|
71
|
+
size: ['sm', 'md'],
|
|
72
|
+
iconOnly: false,
|
|
73
|
+
hasIcon: false,
|
|
74
|
+
class: 'px-2'
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
size: 'lg',
|
|
78
|
+
iconOnly: false,
|
|
79
|
+
hasIcon: false,
|
|
80
|
+
class: 'px-3'
|
|
81
|
+
},
|
|
82
|
+
// Icon-left - asymmetric padding (less on icon side)
|
|
83
|
+
{
|
|
84
|
+
size: ['sm', 'md'],
|
|
85
|
+
iconOnly: false,
|
|
86
|
+
hasIcon: true,
|
|
87
|
+
class: 'pl-1.5 pr-2'
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
size: 'lg',
|
|
91
|
+
iconOnly: false,
|
|
92
|
+
hasIcon: true,
|
|
93
|
+
class: 'pl-2 pr-3'
|
|
94
|
+
},
|
|
95
|
+
// Icon-only uses bold icon variants
|
|
96
|
+
{
|
|
97
|
+
variant: ['secondary', 'outline', 'ghost'],
|
|
98
|
+
iconOnly: true,
|
|
99
|
+
class: '[&_svg]:!text-icon-default-bold'
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
variant: ['primary', 'warning', 'dark-ghost'],
|
|
103
|
+
iconOnly: true,
|
|
104
|
+
class: '[&_svg]:!text-icon-inverse-bold'
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
variant: 'dark',
|
|
108
|
+
iconOnly: true,
|
|
109
|
+
class: '[&_svg]:!text-icon-inverse-bold'
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
size: 'sm',
|
|
113
|
+
iconOnly: true,
|
|
114
|
+
class: 'w-6'
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
size: 'md',
|
|
118
|
+
iconOnly: true,
|
|
119
|
+
class: 'w-7'
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
size: 'lg',
|
|
123
|
+
iconOnly: true,
|
|
124
|
+
class: 'w-8'
|
|
125
|
+
}
|
|
126
|
+
],
|
|
29
127
|
defaultVariants: {
|
|
30
|
-
variant: '
|
|
31
|
-
size: '
|
|
128
|
+
variant: 'primary',
|
|
129
|
+
size: 'md',
|
|
130
|
+
iconOnly: false,
|
|
131
|
+
hasIcon: false
|
|
32
132
|
}
|
|
33
133
|
})
|
|
134
|
+
|
|
34
135
|
export type ButtonVariant = VariantProps<typeof buttonVariants>['variant']
|
|
35
136
|
export type ButtonSize = VariantProps<typeof buttonVariants>['size']
|
|
36
137
|
export type ButtonProps = WithElementRef<HTMLButtonAttributes> &
|
|
37
138
|
WithElementRef<HTMLAnchorAttributes> & {
|
|
38
139
|
variant?: ButtonVariant
|
|
39
140
|
size?: ButtonSize
|
|
141
|
+
icon?: IconSource
|
|
142
|
+
iconPosition?: 'left' | 'right'
|
|
143
|
+
iconClass?: string
|
|
40
144
|
}
|
|
41
145
|
</script>
|
|
42
146
|
|
|
43
147
|
<script lang="ts">
|
|
148
|
+
import { Icon } from '@steeze-ui/svelte-icon'
|
|
149
|
+
|
|
44
150
|
let {
|
|
45
151
|
class: className,
|
|
46
|
-
variant = '
|
|
47
|
-
size = '
|
|
152
|
+
variant = 'primary',
|
|
153
|
+
size = 'lg',
|
|
154
|
+
icon,
|
|
155
|
+
iconPosition = 'left',
|
|
156
|
+
iconClass = '',
|
|
48
157
|
ref = $bindable(null),
|
|
49
158
|
href = undefined,
|
|
50
159
|
type = 'button',
|
|
51
160
|
disabled,
|
|
52
|
-
children
|
|
161
|
+
children,
|
|
162
|
+
onclick,
|
|
163
|
+
...rest
|
|
53
164
|
}: ButtonProps = $props()
|
|
165
|
+
|
|
166
|
+
let iconOnly = $derived(!children)
|
|
167
|
+
let hasIcon = $derived(!!icon && !iconOnly)
|
|
168
|
+
|
|
169
|
+
let iconSize = $derived(
|
|
170
|
+
{
|
|
171
|
+
sm: 'size-3',
|
|
172
|
+
md: 'size-4',
|
|
173
|
+
lg: 'size-4'
|
|
174
|
+
}[size]
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
// For icon-right, we need to reverse the padding
|
|
178
|
+
let paddingClass = $derived(
|
|
179
|
+
iconPosition === 'right' && hasIcon ? (size === 'lg' ? 'pl-3 pr-2' : 'pl-2 pr-1.5') : ''
|
|
180
|
+
)
|
|
54
181
|
</script>
|
|
55
182
|
|
|
183
|
+
{#snippet iconContent()}
|
|
184
|
+
{#if icon}
|
|
185
|
+
<div class={cn('relative z-10', iconClass && `[&_svg]:${iconClass}`)}>
|
|
186
|
+
<Icon src={icon} class={iconSize} />
|
|
187
|
+
</div>
|
|
188
|
+
{/if}
|
|
189
|
+
{/snippet}
|
|
190
|
+
|
|
191
|
+
{#snippet buttonContent()}
|
|
192
|
+
<div
|
|
193
|
+
class={cn(
|
|
194
|
+
'inline-flex items-center transition-transform group-active:translate-y-px',
|
|
195
|
+
!iconOnly && 'gap-1'
|
|
196
|
+
)}
|
|
197
|
+
>
|
|
198
|
+
{#if icon && !children}
|
|
199
|
+
{@render iconContent()}
|
|
200
|
+
{:else if iconPosition === 'right'}
|
|
201
|
+
{#if children}
|
|
202
|
+
<span class="z-10">{@render children()}</span>
|
|
203
|
+
{/if}
|
|
204
|
+
{#if icon}
|
|
205
|
+
{@render iconContent()}
|
|
206
|
+
{/if}
|
|
207
|
+
{:else}
|
|
208
|
+
{#if icon}
|
|
209
|
+
{@render iconContent()}
|
|
210
|
+
{/if}
|
|
211
|
+
{#if children}
|
|
212
|
+
<span class="z-10">{@render children()}</span>
|
|
213
|
+
{/if}
|
|
214
|
+
{/if}
|
|
215
|
+
</div>
|
|
216
|
+
{/snippet}
|
|
217
|
+
|
|
56
218
|
{#if href}
|
|
57
219
|
<a
|
|
58
220
|
bind:this={ref}
|
|
59
221
|
data-slot="button"
|
|
60
|
-
class={cn(
|
|
222
|
+
class={cn(
|
|
223
|
+
buttonVariants({ variant, size, iconOnly, hasIcon }),
|
|
224
|
+
iconPosition === 'right' && 'flex-row-reverse',
|
|
225
|
+
paddingClass,
|
|
226
|
+
className
|
|
227
|
+
)}
|
|
61
228
|
href={disabled ? undefined : href}
|
|
62
229
|
aria-disabled={disabled}
|
|
63
230
|
role={disabled ? 'link' : undefined}
|
|
64
231
|
tabindex={disabled ? -1 : undefined}
|
|
232
|
+
{...rest}
|
|
65
233
|
>
|
|
66
|
-
{@render
|
|
234
|
+
{@render buttonContent()}
|
|
67
235
|
</a>
|
|
68
236
|
{:else}
|
|
69
237
|
<button
|
|
70
238
|
bind:this={ref}
|
|
71
239
|
data-slot="button"
|
|
72
|
-
class={cn(
|
|
240
|
+
class={cn(
|
|
241
|
+
buttonVariants({ variant, size, iconOnly, hasIcon }),
|
|
242
|
+
'group',
|
|
243
|
+
iconPosition === 'right' && 'flex-row-reverse',
|
|
244
|
+
paddingClass,
|
|
245
|
+
className
|
|
246
|
+
)}
|
|
73
247
|
{type}
|
|
74
248
|
{disabled}
|
|
249
|
+
{onclick}
|
|
250
|
+
{...rest}
|
|
75
251
|
>
|
|
76
|
-
{@render
|
|
252
|
+
{@render buttonContent()}
|
|
77
253
|
</button>
|
|
78
254
|
{/if}
|
|
@@ -1,63 +1,88 @@
|
|
|
1
1
|
import { type WithElementRef } from '../utils.js';
|
|
2
2
|
import type { HTMLAnchorAttributes, HTMLButtonAttributes } from 'svelte/elements';
|
|
3
3
|
import { type VariantProps } from 'tailwind-variants';
|
|
4
|
+
import type { IconSource } from '@steeze-ui/svelte-icon';
|
|
4
5
|
export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
|
|
5
6
|
variant: {
|
|
6
|
-
default: string;
|
|
7
|
-
destructive: string;
|
|
8
|
-
outline: string;
|
|
9
7
|
primary: string;
|
|
10
|
-
|
|
8
|
+
warning: string;
|
|
9
|
+
danger: string;
|
|
10
|
+
outline: string;
|
|
11
11
|
ghost: string;
|
|
12
|
-
|
|
12
|
+
secondary: string;
|
|
13
|
+
dark: string;
|
|
14
|
+
'dark-ghost': string;
|
|
13
15
|
};
|
|
14
16
|
size: {
|
|
15
|
-
default: string;
|
|
16
17
|
sm: string;
|
|
18
|
+
md: string;
|
|
17
19
|
lg: string;
|
|
18
|
-
icon: string;
|
|
19
|
-
'icon-sm': string;
|
|
20
20
|
};
|
|
21
|
-
|
|
21
|
+
iconOnly: {
|
|
22
|
+
true: string;
|
|
23
|
+
false: string;
|
|
24
|
+
};
|
|
25
|
+
hasIcon: {
|
|
26
|
+
true: string;
|
|
27
|
+
false: string;
|
|
28
|
+
};
|
|
29
|
+
}, undefined, "inline-flex items-center justify-center font-medium text-base whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-selected focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-30 relative overflow-hidden box-border cursor-pointer", {
|
|
22
30
|
variant: {
|
|
23
|
-
default: string;
|
|
24
|
-
destructive: string;
|
|
25
|
-
outline: string;
|
|
26
31
|
primary: string;
|
|
27
|
-
|
|
32
|
+
warning: string;
|
|
33
|
+
danger: string;
|
|
34
|
+
outline: string;
|
|
28
35
|
ghost: string;
|
|
29
|
-
|
|
36
|
+
secondary: string;
|
|
37
|
+
dark: string;
|
|
38
|
+
'dark-ghost': string;
|
|
30
39
|
};
|
|
31
40
|
size: {
|
|
32
|
-
default: string;
|
|
33
41
|
sm: string;
|
|
42
|
+
md: string;
|
|
34
43
|
lg: string;
|
|
35
|
-
|
|
36
|
-
|
|
44
|
+
};
|
|
45
|
+
iconOnly: {
|
|
46
|
+
true: string;
|
|
47
|
+
false: string;
|
|
48
|
+
};
|
|
49
|
+
hasIcon: {
|
|
50
|
+
true: string;
|
|
51
|
+
false: string;
|
|
37
52
|
};
|
|
38
53
|
}, undefined, import("tailwind-variants").TVReturnType<{
|
|
39
54
|
variant: {
|
|
40
|
-
default: string;
|
|
41
|
-
destructive: string;
|
|
42
|
-
outline: string;
|
|
43
55
|
primary: string;
|
|
44
|
-
|
|
56
|
+
warning: string;
|
|
57
|
+
danger: string;
|
|
58
|
+
outline: string;
|
|
45
59
|
ghost: string;
|
|
46
|
-
|
|
60
|
+
secondary: string;
|
|
61
|
+
dark: string;
|
|
62
|
+
'dark-ghost': string;
|
|
47
63
|
};
|
|
48
64
|
size: {
|
|
49
|
-
default: string;
|
|
50
65
|
sm: string;
|
|
66
|
+
md: string;
|
|
51
67
|
lg: string;
|
|
52
|
-
icon: string;
|
|
53
|
-
'icon-sm': string;
|
|
54
68
|
};
|
|
55
|
-
|
|
69
|
+
iconOnly: {
|
|
70
|
+
true: string;
|
|
71
|
+
false: string;
|
|
72
|
+
};
|
|
73
|
+
hasIcon: {
|
|
74
|
+
true: string;
|
|
75
|
+
false: string;
|
|
76
|
+
};
|
|
77
|
+
}, undefined, "inline-flex items-center justify-center font-medium text-base whitespace-nowrap focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-selected focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-30 relative overflow-hidden box-border cursor-pointer", unknown, unknown, undefined>>;
|
|
56
78
|
export type ButtonVariant = VariantProps<typeof buttonVariants>['variant'];
|
|
57
79
|
export type ButtonSize = VariantProps<typeof buttonVariants>['size'];
|
|
58
80
|
export type ButtonProps = WithElementRef<HTMLButtonAttributes> & WithElementRef<HTMLAnchorAttributes> & {
|
|
59
81
|
variant?: ButtonVariant;
|
|
60
82
|
size?: ButtonSize;
|
|
83
|
+
icon?: IconSource;
|
|
84
|
+
iconPosition?: 'left' | 'right';
|
|
85
|
+
iconClass?: string;
|
|
61
86
|
};
|
|
62
87
|
declare const Button: import("svelte").Component<ButtonProps, {}, "ref">;
|
|
63
88
|
type Button = ReturnType<typeof Button>;
|
package/dist/clickOutside.d.ts
CHANGED