@invopop/popui 0.1.69 → 0.1.71
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/AvatarIcon.svelte +35 -0
- package/dist/AvatarIcon.svelte.d.ts +4 -0
- package/dist/AvatarStack.svelte +59 -0
- package/dist/AvatarStack.svelte.d.ts +4 -0
- package/dist/BaseDropdown.svelte +3 -1
- package/dist/DrawerContext.svelte +3 -1
- package/dist/DropdownSelect.svelte +28 -16
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -4
- package/dist/types.d.ts +13 -6
- package/package.json +1 -1
- package/dist/StepIcon.svelte +0 -35
- package/dist/StepIcon.svelte.d.ts +0 -4
- package/dist/StepIconList.svelte +0 -43
- package/dist/StepIconList.svelte.d.ts +0 -4
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { TooltipAutoHide, TooltipContent, TooltipTrigger } from './tooltip'
|
|
3
|
+
import type { AvatarIconProps } from './types.js'
|
|
4
|
+
|
|
5
|
+
let { name, showMask = false, size = 'md', tooltipContent, children }: AvatarIconProps = $props()
|
|
6
|
+
|
|
7
|
+
const masks = {
|
|
8
|
+
md: `url("data:image/svg+xml,%3Csvg width='26' height='28' viewBox='0 0 26 28' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.4004 0C21.7603 9.85818e-10 23.4402 0.000417824 24.7236 0.654297C25.1531 0.873098 25.552 1.14144 25.9131 1.45215C25.5579 1.90591 25.2449 2.39516 24.9805 2.91406C23.9996 4.83925 24 7.36007 24 12.4004V15.5996C24 20.6399 23.9996 23.1608 24.9805 25.0859C25.2447 25.6046 25.5581 26.0933 25.9131 26.5469C25.5519 26.8578 25.1532 27.1268 24.7236 27.3457C23.4402 27.9996 21.7603 28 18.4004 28H9.59961C6.23965 28 4.55977 27.9996 3.27637 27.3457C2.14739 26.7705 1.22954 25.8526 0.654297 24.7236C0.00041777 23.4402 9.8162e-10 21.7603 0 18.4004V9.59961C9.88222e-10 6.23965 0.000417662 4.55977 0.654297 3.27637C1.22954 2.14739 2.14739 1.22954 3.27637 0.654297C4.55977 0.000417608 6.23965 9.84018e-10 9.59961 0H18.4004Z' fill='white'/%3E%3C/svg%3E")`,
|
|
9
|
+
sm: `url("data:image/svg+xml,%3Csvg width='23' height='24' viewBox='0 0 23 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5996 1.63272e-09C19.8398 1.63272e-09 20.9608 -0.000427061 21.8164 0.435547C21.9034 0.479874 21.9882 0.527831 22.0713 0.578125C21.9172 0.80011 21.778 1.03354 21.6543 1.27637C21.0004 2.55977 21 4.23965 21 7.59961V16.4004C21 19.7603 21.0004 21.4402 21.6543 22.7236C21.7779 22.9662 21.9174 23.1991 22.0713 23.4209C21.9881 23.4713 21.9035 23.52 21.8164 23.5645C20.9608 24.0004 19.8398 24 17.5996 24H6.40039C4.16018 24 3.03924 24.0004 2.18359 23.5645C1.43109 23.181 0.819016 22.5689 0.435547 21.8164C-0.000427061 20.9608 1.63272e-09 19.8398 1.63272e-09 17.5996V6.40039C1.63272e-09 4.16018 -0.000427061 3.03924 0.435547 2.18359C0.819016 1.43109 1.43109 0.819016 2.18359 0.435547C3.03924 -0.000427061 4.16018 1.63272e-09 6.40039 1.63272e-09H17.5996Z' fill='white'/%3E%3C/svg%3E")`
|
|
10
|
+
}
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<TooltipAutoHide>
|
|
14
|
+
<TooltipTrigger class="shrink-0">
|
|
15
|
+
<div
|
|
16
|
+
style={showMask
|
|
17
|
+
? `mask-image: ${masks[size]};
|
|
18
|
+
mask-size: 100% 100%;
|
|
19
|
+
mask-repeat: no-repeat;
|
|
20
|
+
-webkit-mask-image: ${masks[size]};
|
|
21
|
+
-webkit-mask-size: 100% 100%;
|
|
22
|
+
-webkit-mask-repeat: no-repeat;`
|
|
23
|
+
: ''}
|
|
24
|
+
>
|
|
25
|
+
{@render children()}
|
|
26
|
+
</div>
|
|
27
|
+
</TooltipTrigger>
|
|
28
|
+
<TooltipContent>
|
|
29
|
+
{#if tooltipContent}
|
|
30
|
+
{@render tooltipContent()}
|
|
31
|
+
{:else if name}
|
|
32
|
+
{name}
|
|
33
|
+
{/if}
|
|
34
|
+
</TooltipContent>
|
|
35
|
+
</TooltipAutoHide>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Icon } from '@steeze-ui/svelte-icon'
|
|
3
|
+
import clsx from 'clsx'
|
|
4
|
+
import { TooltipProvider } from './tooltip'
|
|
5
|
+
import AvatarIcon from './AvatarIcon.svelte'
|
|
6
|
+
import type { AvatarStackProps } from './types.js'
|
|
7
|
+
import { cn } from './utils.js'
|
|
8
|
+
|
|
9
|
+
let { icons = [], size = 'md', class: className }: AvatarStackProps = $props()
|
|
10
|
+
|
|
11
|
+
let maxItems = $derived(icons.length > 5 ? 4 : 5)
|
|
12
|
+
let mainIcons = $derived(icons.slice(0, maxItems))
|
|
13
|
+
let restIcons = $derived(icons.slice(maxItems, icons.length))
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
{#snippet restTooltip()}
|
|
17
|
+
{#each restIcons as restIcon}
|
|
18
|
+
<div>{restIcon.name}</div>
|
|
19
|
+
{/each}
|
|
20
|
+
{/snippet}
|
|
21
|
+
|
|
22
|
+
<TooltipProvider>
|
|
23
|
+
<div class={cn('flex flex-col space-y-2 sm:flex-row sm:flex-nowrap sm:space-y-0 items-center', className)}>
|
|
24
|
+
{#each mainIcons as icon, i (i)}
|
|
25
|
+
<AvatarIcon
|
|
26
|
+
name={icon.name}
|
|
27
|
+
{size}
|
|
28
|
+
showMask={i < mainIcons.length - 1 || restIcons.length > 0}
|
|
29
|
+
>
|
|
30
|
+
<div
|
|
31
|
+
data-avatar-stack-item
|
|
32
|
+
class={clsx(
|
|
33
|
+
'flex items-center bg-background-default-secondary text-icon shrink-0',
|
|
34
|
+
size === 'sm' ? 'p-1 rounded' : 'p-1.5 rounded-md'
|
|
35
|
+
)}
|
|
36
|
+
>
|
|
37
|
+
{#if icon.icon}
|
|
38
|
+
<Icon src={icon.icon} class="size-4 shrink-0" />
|
|
39
|
+
{:else if icon.url}
|
|
40
|
+
<img src={icon.url} alt={icon.name} class="size-4 shrink-0" />
|
|
41
|
+
{/if}
|
|
42
|
+
</div>
|
|
43
|
+
</AvatarIcon>
|
|
44
|
+
{/each}
|
|
45
|
+
{#if restIcons.length}
|
|
46
|
+
<AvatarIcon {size} tooltipContent={restTooltip}>
|
|
47
|
+
<div
|
|
48
|
+
data-avatar-stack-overflow
|
|
49
|
+
class={clsx(
|
|
50
|
+
'flex items-center justify-center text-icon font-medium text-sm shrink-0 bg-background-default-secondary',
|
|
51
|
+
size === 'sm' ? 'size-6 rounded' : 'size-7 rounded-md'
|
|
52
|
+
)}
|
|
53
|
+
>
|
|
54
|
+
+{restIcons.length}
|
|
55
|
+
</div>
|
|
56
|
+
</AvatarIcon>
|
|
57
|
+
{/if}
|
|
58
|
+
</div>
|
|
59
|
+
</TooltipProvider>
|
package/dist/BaseDropdown.svelte
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
matchParentWidth = false,
|
|
14
14
|
usePortal = true,
|
|
15
15
|
strategy: strategyProp,
|
|
16
|
+
disabled = false,
|
|
16
17
|
class: className = '',
|
|
17
18
|
trigger,
|
|
18
19
|
children,
|
|
@@ -91,7 +92,8 @@
|
|
|
91
92
|
|
|
92
93
|
<div class="flex {className}" class:w-full={fullWidth} role="menu">
|
|
93
94
|
<button
|
|
94
|
-
class="cursor-pointer text-left w-full min-w-0 outline-none"
|
|
95
|
+
class="cursor-pointer disabled:cursor-default text-left w-full min-w-0 outline-none"
|
|
96
|
+
{disabled}
|
|
95
97
|
use:floatingRef
|
|
96
98
|
{...rest}
|
|
97
99
|
onclick={handleClick}
|
|
@@ -49,7 +49,8 @@
|
|
|
49
49
|
onreorder,
|
|
50
50
|
ondropitem,
|
|
51
51
|
children,
|
|
52
|
-
groups
|
|
52
|
+
groups,
|
|
53
|
+
...rest
|
|
53
54
|
}: DrawerContextProps = $props()
|
|
54
55
|
|
|
55
56
|
type DndItem = DrawerOption & { id: string }
|
|
@@ -497,6 +498,7 @@
|
|
|
497
498
|
<div
|
|
498
499
|
bind:this={containerRef}
|
|
499
500
|
class={containerClasses}
|
|
501
|
+
{...rest}
|
|
500
502
|
>
|
|
501
503
|
{@render children?.()}
|
|
502
504
|
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import BaseFlag from './BaseFlag.svelte'
|
|
10
10
|
import { resolveIcon } from './helpers.js'
|
|
11
11
|
import { buttonVariants } from './button/button.svelte'
|
|
12
|
+
import { cn } from './utils.js'
|
|
12
13
|
|
|
13
14
|
let {
|
|
14
15
|
value = $bindable(''),
|
|
@@ -25,7 +26,9 @@
|
|
|
25
26
|
stackLeft = false,
|
|
26
27
|
stackRight = false,
|
|
27
28
|
multipleLabel = 'items',
|
|
28
|
-
strategy
|
|
29
|
+
strategy,
|
|
30
|
+
disabled = false,
|
|
31
|
+
class: className = ''
|
|
29
32
|
}: DropdownSelectProps = $props()
|
|
30
33
|
|
|
31
34
|
let selectDropdown: BaseDropdown | undefined = $state()
|
|
@@ -71,16 +74,25 @@
|
|
|
71
74
|
let isStacked = $derived(stackLeft || stackRight)
|
|
72
75
|
|
|
73
76
|
let styles = $derived(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
cn(
|
|
78
|
+
'flex items-center rounded-lg py-1.5 pl-2 bg-background overflow-hidden w-full h-7',
|
|
79
|
+
{
|
|
80
|
+
'pr-[28px]': !isStacked,
|
|
81
|
+
'pr-2': isStacked,
|
|
82
|
+
'opacity-30 pointer-events-none': disabled
|
|
83
|
+
},
|
|
84
|
+
isStacked
|
|
85
|
+
? buttonVariants({
|
|
86
|
+
variant: 'ghost',
|
|
87
|
+
stackedLeft: stackLeft,
|
|
88
|
+
stackedRight: stackRight
|
|
89
|
+
})
|
|
90
|
+
: clsx('border backdrop-blur-sm backdrop-filter dropdown-select', {
|
|
91
|
+
'border-border-selected-bold shadow-active': isOpen,
|
|
92
|
+
'border-border-default-secondary hover:border-border-default-secondary-hover': !isOpen
|
|
93
|
+
}),
|
|
94
|
+
className
|
|
95
|
+
)
|
|
84
96
|
)
|
|
85
97
|
|
|
86
98
|
function handleClick(val: AnyProp) {
|
|
@@ -115,6 +127,7 @@
|
|
|
115
127
|
|
|
116
128
|
{#snippet label()}
|
|
117
129
|
<span
|
|
130
|
+
data-dropdown-select-label
|
|
118
131
|
class={clsx('flex-1 text-base truncate', {
|
|
119
132
|
'text-foreground': selectedItems.length,
|
|
120
133
|
'text-foreground-default-secondary': !selectedItems.length,
|
|
@@ -126,19 +139,17 @@
|
|
|
126
139
|
{/snippet}
|
|
127
140
|
|
|
128
141
|
<BaseDropdown
|
|
142
|
+
data-dropdown-select
|
|
129
143
|
bind:isOpen
|
|
130
144
|
placement="bottom-start"
|
|
131
145
|
{fullWidth}
|
|
132
146
|
{strategy}
|
|
147
|
+
{disabled}
|
|
133
148
|
bind:this={selectDropdown}
|
|
134
149
|
class={fullWidth || isStacked ? '' : widthClass}
|
|
135
150
|
>
|
|
136
151
|
{#snippet trigger()}
|
|
137
|
-
<div
|
|
138
|
-
class="{styles} flex items-center rounded-lg py-1.5 pl-2 bg-background overflow-hidden w-full h-7"
|
|
139
|
-
class:pr-[28px]={!isStacked}
|
|
140
|
-
class:pr-2={isStacked}
|
|
141
|
-
>
|
|
152
|
+
<div data-dropdown-select-trigger class={styles}>
|
|
142
153
|
{#if hasMultipleColors}
|
|
143
154
|
<div class="flex items-center gap-1 flex-1 min-w-0">
|
|
144
155
|
<div class="flex items-center -space-x-0.5">
|
|
@@ -177,6 +188,7 @@
|
|
|
177
188
|
</div>
|
|
178
189
|
{/snippet}
|
|
179
190
|
<DrawerContext
|
|
191
|
+
data-dropdown-select-content
|
|
180
192
|
widthClass="min-w-[256px]"
|
|
181
193
|
{multiple}
|
|
182
194
|
{items}
|
package/dist/index.d.ts
CHANGED
|
@@ -51,8 +51,8 @@ import { SkeletonAvatar } from './skeleton';
|
|
|
51
51
|
import { SkeletonCard } from './skeleton';
|
|
52
52
|
import { SkeletonList } from './skeleton';
|
|
53
53
|
import StatusLabel from './StatusLabel.svelte';
|
|
54
|
-
import
|
|
55
|
-
import
|
|
54
|
+
import AvatarIcon from './AvatarIcon.svelte';
|
|
55
|
+
import AvatarStack from './AvatarStack.svelte';
|
|
56
56
|
import { Table } from './table';
|
|
57
57
|
import { TableBody } from './table';
|
|
58
58
|
import { TableCaption } from './table';
|
|
@@ -87,4 +87,4 @@ import { FlexRender } from './data-table';
|
|
|
87
87
|
import { createSvelteTable } from './data-table';
|
|
88
88
|
import { renderComponent } from './data-table';
|
|
89
89
|
import { renderSnippet } from './data-table';
|
|
90
|
-
export { Accordion, AlertDialog, BaseButton, BaseCard, BaseCounter, BaseDropdown, BaseFlag, BaseTableActions, Breadcrumbs, ButtonFile, ButtonSearch, ButtonUuidCopy, CardCheckbox, CardRelation, CompanySelector, CounterWidget, DataListItem, DatePicker, DrawerContext, DrawerContextItem, DrawerContextSeparator, DropdownSelect, DropdownSelectGroup, EmptyState, FeedEvents, FeedIconEvent, FeedIconStatus, FeedItem, FeedItemDetail, FeedViewer, GlobalSearch, InputCheckbox, InputError, InputLabel, InputRadio, InputSearch, InputSelect, InputText, InputTextarea, InputToggle, MenuItem, MenuItemCollapsible, Notification, ProfileAvatar, ProgressBar, ProgressBarCircle, SeparatorHorizontal, ShortcutWrapper, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonList, StatusLabel,
|
|
90
|
+
export { Accordion, AlertDialog, BaseButton, BaseCard, BaseCounter, BaseDropdown, BaseFlag, BaseTableActions, Breadcrumbs, ButtonFile, ButtonSearch, ButtonUuidCopy, CardCheckbox, CardRelation, CompanySelector, CounterWidget, DataListItem, DatePicker, DrawerContext, DrawerContextItem, DrawerContextSeparator, DropdownSelect, DropdownSelectGroup, EmptyState, FeedEvents, FeedIconEvent, FeedIconStatus, FeedItem, FeedItemDetail, FeedViewer, GlobalSearch, InputCheckbox, InputError, InputLabel, InputRadio, InputSearch, InputSelect, InputText, InputTextarea, InputToggle, MenuItem, MenuItemCollapsible, Notification, ProfileAvatar, ProgressBar, ProgressBarCircle, SeparatorHorizontal, ShortcutWrapper, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonList, StatusLabel, AvatarIcon, AvatarStack, Table, TableBody, TableCaption, TableFooter, TableHeader, TableRow, TableHead, TableCell, Tabs, TabsContent, TabsList, TabsTrigger, TagBeta, TagProgress, TagSearch, TagStatus, TitleMain, TitleSection, Toaster, Tooltip, TooltipContent, TooltipTrigger, TooltipAutoHide, resolveIcon, getCountryName, getStatusType, buttonVariants, DataTable, DataTableToolbar, DataTableViewOptions, FlexRender, createSvelteTable, renderComponent, renderSnippet };
|
package/dist/index.js
CHANGED
|
@@ -48,8 +48,8 @@ import SeparatorHorizontal from './SeparatorHorizontal.svelte'
|
|
|
48
48
|
import ShortcutWrapper from './ShortcutWrapper.svelte'
|
|
49
49
|
import { Skeleton, SkeletonAvatar, SkeletonCard, SkeletonList } from './skeleton'
|
|
50
50
|
import StatusLabel from './StatusLabel.svelte'
|
|
51
|
-
import
|
|
52
|
-
import
|
|
51
|
+
import AvatarIcon from './AvatarIcon.svelte'
|
|
52
|
+
import AvatarStack from './AvatarStack.svelte'
|
|
53
53
|
import {
|
|
54
54
|
Table,
|
|
55
55
|
TableHeader,
|
|
@@ -135,8 +135,8 @@ export {
|
|
|
135
135
|
SkeletonCard,
|
|
136
136
|
SkeletonList,
|
|
137
137
|
StatusLabel,
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
AvatarIcon,
|
|
139
|
+
AvatarStack,
|
|
140
140
|
Table,
|
|
141
141
|
TableBody,
|
|
142
142
|
TableCaption,
|
package/dist/types.d.ts
CHANGED
|
@@ -135,9 +135,10 @@ export type Breadcrumb = {
|
|
|
135
135
|
country?: string;
|
|
136
136
|
copiable?: boolean;
|
|
137
137
|
};
|
|
138
|
-
export type
|
|
138
|
+
export type AvatarIcon = {
|
|
139
139
|
name: string;
|
|
140
|
-
url
|
|
140
|
+
url?: string;
|
|
141
|
+
icon?: IconSource;
|
|
141
142
|
};
|
|
142
143
|
export interface AccordionProps {
|
|
143
144
|
label: string;
|
|
@@ -223,6 +224,7 @@ export interface BaseDropdownProps {
|
|
|
223
224
|
matchParentWidth?: boolean;
|
|
224
225
|
usePortal?: boolean;
|
|
225
226
|
strategy?: 'absolute' | 'fixed';
|
|
227
|
+
disabled?: boolean;
|
|
226
228
|
trigger?: Snippet;
|
|
227
229
|
children?: Snippet;
|
|
228
230
|
[key: string]: any;
|
|
@@ -349,6 +351,7 @@ export interface DrawerContextProps {
|
|
|
349
351
|
ondropitem?: (groups: Record<string, DrawerOption[]>) => void;
|
|
350
352
|
children?: Snippet;
|
|
351
353
|
groups?: DrawerGroup[];
|
|
354
|
+
[key: string]: unknown;
|
|
352
355
|
}
|
|
353
356
|
export interface DrawerContextItemProps {
|
|
354
357
|
multiple?: boolean;
|
|
@@ -374,6 +377,8 @@ export interface DropdownSelectProps {
|
|
|
374
377
|
stackRight?: boolean;
|
|
375
378
|
multipleLabel?: string;
|
|
376
379
|
strategy?: 'absolute' | 'fixed';
|
|
380
|
+
disabled?: boolean;
|
|
381
|
+
class?: string;
|
|
377
382
|
}
|
|
378
383
|
export interface EmptyStateProps {
|
|
379
384
|
icon?: Snippet;
|
|
@@ -561,13 +566,15 @@ export interface StatusLabelProps {
|
|
|
561
566
|
status: FeedItemStatus;
|
|
562
567
|
label?: string;
|
|
563
568
|
}
|
|
564
|
-
export interface
|
|
565
|
-
icons?:
|
|
566
|
-
|
|
569
|
+
export interface AvatarStackProps {
|
|
570
|
+
icons?: AvatarIcon[];
|
|
571
|
+
size?: 'sm' | 'md';
|
|
572
|
+
class?: string;
|
|
567
573
|
}
|
|
568
|
-
export interface
|
|
574
|
+
export interface AvatarIconProps {
|
|
569
575
|
name?: string;
|
|
570
576
|
showMask?: boolean;
|
|
577
|
+
size?: 'sm' | 'md';
|
|
571
578
|
tooltipContent?: Snippet;
|
|
572
579
|
children: Snippet;
|
|
573
580
|
}
|
package/package.json
CHANGED
package/dist/StepIcon.svelte
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { TooltipAutoHide, TooltipContent, TooltipTrigger } from './tooltip'
|
|
3
|
-
import type { StepIconProps } from './types.js'
|
|
4
|
-
|
|
5
|
-
let {
|
|
6
|
-
name,
|
|
7
|
-
showMask = false,
|
|
8
|
-
tooltipContent,
|
|
9
|
-
children
|
|
10
|
-
}: StepIconProps = $props()
|
|
11
|
-
</script>
|
|
12
|
-
|
|
13
|
-
<TooltipAutoHide>
|
|
14
|
-
<TooltipTrigger class="shrink-0">
|
|
15
|
-
<div
|
|
16
|
-
style={showMask
|
|
17
|
-
? `mask-image: url("data:image/svg+xml,%3Csvg width='26' height='28' viewBox='0 0 26 28' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.4004 0C21.7603 9.85818e-10 23.4402 0.000417824 24.7236 0.654297C25.1531 0.873098 25.552 1.14144 25.9131 1.45215C25.5579 1.90591 25.2449 2.39516 24.9805 2.91406C23.9996 4.83925 24 7.36007 24 12.4004V15.5996C24 20.6399 23.9996 23.1608 24.9805 25.0859C25.2447 25.6046 25.5581 26.0933 25.9131 26.5469C25.5519 26.8578 25.1532 27.1268 24.7236 27.3457C23.4402 27.9996 21.7603 28 18.4004 28H9.59961C6.23965 28 4.55977 27.9996 3.27637 27.3457C2.14739 26.7705 1.22954 25.8526 0.654297 24.7236C0.00041777 23.4402 9.8162e-10 21.7603 0 18.4004V9.59961C9.88222e-10 6.23965 0.000417662 4.55977 0.654297 3.27637C1.22954 2.14739 2.14739 1.22954 3.27637 0.654297C4.55977 0.000417608 6.23965 9.84018e-10 9.59961 0H18.4004Z' fill='white'/%3E%3C/svg%3E");
|
|
18
|
-
mask-size: 100% 100%;
|
|
19
|
-
mask-repeat: no-repeat;
|
|
20
|
-
-webkit-mask-image: url("data:image/svg+xml,%3Csvg width='26' height='28' viewBox='0 0 26 28' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M18.4004 0C21.7603 9.85818e-10 23.4402 0.000417824 24.7236 0.654297C25.1531 0.873098 25.552 1.14144 25.9131 1.45215C25.5579 1.90591 25.2449 2.39516 24.9805 2.91406C23.9996 4.83925 24 7.36007 24 12.4004V15.5996C24 20.6399 23.9996 23.1608 24.9805 25.0859C25.2447 25.6046 25.5581 26.0933 25.9131 26.5469C25.5519 26.8578 25.1532 27.1268 24.7236 27.3457C23.4402 27.9996 21.7603 28 18.4004 28H9.59961C6.23965 28 4.55977 27.9996 3.27637 27.3457C2.14739 26.7705 1.22954 25.8526 0.654297 24.7236C0.00041777 23.4402 9.8162e-10 21.7603 0 18.4004V9.59961C9.88222e-10 6.23965 0.000417662 4.55977 0.654297 3.27637C1.22954 2.14739 2.14739 1.22954 3.27637 0.654297C4.55977 0.000417608 6.23965 9.84018e-10 9.59961 0H18.4004Z' fill='white'/%3E%3C/svg%3E");
|
|
21
|
-
-webkit-mask-size: 100% 100%;
|
|
22
|
-
-webkit-mask-repeat: no-repeat;`
|
|
23
|
-
: ''}
|
|
24
|
-
>
|
|
25
|
-
{@render children()}
|
|
26
|
-
</div>
|
|
27
|
-
</TooltipTrigger>
|
|
28
|
-
<TooltipContent>
|
|
29
|
-
{#if tooltipContent}
|
|
30
|
-
{@render tooltipContent()}
|
|
31
|
-
{:else if name}
|
|
32
|
-
{name}
|
|
33
|
-
{/if}
|
|
34
|
-
</TooltipContent>
|
|
35
|
-
</TooltipAutoHide>
|
package/dist/StepIconList.svelte
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { TooltipProvider } from './tooltip'
|
|
3
|
-
import StepIcon from './StepIcon.svelte'
|
|
4
|
-
import type { StepIconListProps } from './types.js'
|
|
5
|
-
|
|
6
|
-
let { icons = [] }: StepIconListProps = $props()
|
|
7
|
-
|
|
8
|
-
let maxItems = $derived(icons.length > 6 ? 5 : 6)
|
|
9
|
-
let mainIcons = $derived(icons.slice(0, maxItems))
|
|
10
|
-
let restIcons = $derived(icons.slice(maxItems, icons.length))
|
|
11
|
-
</script>
|
|
12
|
-
|
|
13
|
-
{#snippet restTooltip()}
|
|
14
|
-
{#each restIcons as restIcon}
|
|
15
|
-
<div>{restIcon.name}</div>
|
|
16
|
-
{/each}
|
|
17
|
-
{/snippet}
|
|
18
|
-
|
|
19
|
-
<TooltipProvider>
|
|
20
|
-
<div class="flex flex-col space-y-2 sm:flex-row sm:flex-nowrap sm:space-y-0 items-center">
|
|
21
|
-
{#each mainIcons as icon, i (i)}
|
|
22
|
-
<StepIcon name={icon.name} showMask={i < mainIcons.length - 1 || restIcons.length > 0}>
|
|
23
|
-
<div
|
|
24
|
-
class="p-1.5 rounded-md flex items-center space-x-1 bg-background-default-secondary text-icon shrink-0 {i >
|
|
25
|
-
0
|
|
26
|
-
? 'ml-[-2px]'
|
|
27
|
-
: ''}"
|
|
28
|
-
>
|
|
29
|
-
<img src={icon.url} alt={icon.name} class="size-4 shrink-0" />
|
|
30
|
-
</div>
|
|
31
|
-
</StepIcon>
|
|
32
|
-
{/each}
|
|
33
|
-
{#if restIcons.length}
|
|
34
|
-
<StepIcon tooltipContent={restTooltip}>
|
|
35
|
-
<div
|
|
36
|
-
class="flex items-center justify-center text-icon font-medium text-sm size-7 shrink-0 rounded-md bg-background-default-secondary ml-[-1px]"
|
|
37
|
-
>
|
|
38
|
-
+{restIcons.length}
|
|
39
|
-
</div>
|
|
40
|
-
</StepIcon>
|
|
41
|
-
{/if}
|
|
42
|
-
</div>
|
|
43
|
-
</TooltipProvider>
|