@invopop/popui 0.1.9 → 0.1.11

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.
@@ -41,8 +41,8 @@
41
41
  { 'px-2': !big && children && !icon },
42
42
  { 'pl-2 pr-2.5': big && children && icon && iconPosition === 'left' },
43
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' },
44
+ { 'pl-1.5 pr-2': !big && children && icon && iconPosition === 'left' },
45
+ { 'pl-2 pr-1.5': !big && children && icon && iconPosition === 'right' },
46
46
  { 'py-1.5': big && children },
47
47
  { 'py-1': !big && children },
48
48
  { 'text-white': ['primary', 'danger', 'dark', 'warning'].includes(variant) },
@@ -127,7 +127,10 @@
127
127
  return
128
128
  }
129
129
 
130
- selectionMode = 'keyboard'
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 border rounded-md border-neutral-100">
244
+ <div class="h-full w-full font-sans border rounded-md border-neutral-100 overflow-auto">
242
245
  <Table class="hidden md:table" {...rest}>
243
246
  <colgroup>
244
247
  {#if selectable}
@@ -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,
@@ -29,16 +28,7 @@
29
28
  <span>{getCountryName(String(data))}</span>
30
29
  </span>
31
30
  {:else if field.copy && data}
32
- <UuidCopy
33
- rightAlign={isMobile ? false : field.rightAlign}
34
- uuid={String(data)}
35
- prefixLength={4}
36
- suffixLength={4}
37
- full
38
- compact
39
- dark={isMobile}
40
- {onCopied}
41
- />
31
+ <ButtonUuidCopy uuid={String(data)} full oncopied={onCopied} />
42
32
  {:else}
43
33
  <span class="hidden md:inline">{data}</span>
44
34
  <span class="md:hidden">{data ? data : badge || status ? '' : '-'}</span>
@@ -54,7 +44,7 @@
54
44
  </span>
55
45
  {/if}
56
46
  {#if icons}
57
- <span class:ml-2={!!data} class="flex items-center gap-1 flex-shrink-0">
47
+ <span class:ml-2={!!data} class="flex items-center gap-1 shrink-0">
58
48
  {#each icons as icon}
59
49
  <div class="border border-neutral-200 rounded-md p-px">
60
50
  {#if typeof icon === 'string'}
@@ -115,7 +115,7 @@
115
115
  onSelect
116
116
  }: DatePickerProps = $props()
117
117
 
118
- let selectedPeriod = $state('this-week')
118
+ let selectedPeriod = $state('custom')
119
119
  let value = $state<DateRange>({
120
120
  start: undefined,
121
121
  end: undefined
@@ -143,14 +143,15 @@
143
143
  }
144
144
  return
145
145
  }
146
- value = {
147
- start: toCalendarDate(startOfThisWeek),
148
- end: toCalendarDate(endOfThisWeek)
149
- }
150
- selectedPeriod = 'this-week'
151
146
  })
152
147
 
153
148
  function cancel() {
149
+ value = {
150
+ start: undefined,
151
+ end: undefined
152
+ }
153
+ selectedPeriod = 'custom'
154
+ selectedLabel = label
154
155
  isOpen = false
155
156
  onSelect?.({ from: '', to: '' })
156
157
  }
@@ -1,16 +1,15 @@
1
1
  <script lang="ts">
2
2
  import type { DrawerContextProps, DrawerOption } from './types.ts'
3
3
  import DrawerContextItem from './DrawerContextItem.svelte'
4
- import InputSearch from './InputSearch.svelte'
5
4
  import DrawerContextSeparator from './DrawerContextSeparator.svelte'
6
5
 
7
6
  let {
8
7
  items = $bindable([]),
9
8
  multiple = false,
10
- searchable = false,
11
9
  widthClass = 'w-60',
12
10
  onclick,
13
- onselect
11
+ onselect,
12
+ children
14
13
  }: DrawerContextProps = $props()
15
14
 
16
15
  let selectedItems = $derived(items.filter((i) => i.selected))
@@ -27,13 +26,9 @@
27
26
  </script>
28
27
 
29
28
  <div
30
- class="{widthClass} border border-neutral-200 py-1 rounded-md shadow-lg space-y-0.5 bg-white max-h-80 overflow-y-auto"
29
+ class="{widthClass} border border-neutral-200 py-0.5 rounded-2xl shadow-lg space-y-0.5 bg-white max-h-80 overflow-y-auto"
31
30
  >
32
- {#if searchable}
33
- <div class="px-2 mt-2 mb-1">
34
- <InputSearch placeholder="Search" />
35
- </div>
36
- {/if}
31
+ {@render children?.()}
37
32
  <ul class="space-y-0.5 max-h-80 overflow-y-auto">
38
33
  {#each items as item}
39
34
  {#if item.separator}
@@ -90,9 +90,9 @@
90
90
  {#if item.country}
91
91
  <span class="flex space-x-1 items-center">
92
92
  <BaseFlag country={item.country} width={10} />
93
- <span class="text-sm text-neutral-500 tracking-normal"
94
- >{getCountryName(item.country)}</span
95
- >
93
+ <span class="text-sm text-neutral-500 tracking-normal">
94
+ {getCountryName(item.country)}
95
+ </span>
96
96
  </span>
97
97
  {/if}
98
98
  </div>
@@ -114,12 +114,12 @@
114
114
  }}
115
115
  >
116
116
  <div class="flex items-center space-x-1.5">
117
- <Icon src={AddCircle} class="w-4 h-4 text-neutral-800 flex-shrink-0" />
117
+ <Icon src={AddCircle} class="w-4 h-4 text-neutral-800 shrink-0" />
118
118
  <span class="text-neutral-800 tracking-tight text-base font-medium">Create workspace</span
119
119
  >
120
120
  </div>
121
121
 
122
- <Icon src={ExternalLink} class="w-5 h-5 text-neutral-800 flex-shrink-0" />
122
+ <Icon src={ExternalLink} class="w-4 h-4 text-neutral-400 shrink-0" />
123
123
  </button>
124
124
  </li>
125
125
  </ul>
@@ -8,6 +8,9 @@
8
8
  import IconPdf from './svg/IconPdf.svelte'
9
9
  import IconNoResults from './svg/IconNoResults.svelte'
10
10
  import type { SvelteComponent } from 'svelte'
11
+ import IconDelivery from './svg/IconDelivery.svelte'
12
+ import IconOrder from './svg/IconOrder.svelte'
13
+ import IconPayment from './svg/IconPayment.svelte'
11
14
 
12
15
  let {
13
16
  icon = undefined,
@@ -22,7 +25,11 @@
22
25
  const icons: Record<EmptyStateIcon, unknown> = {
23
26
  invoices: IconInvoice,
24
27
  contacts: IconContact,
28
+ parties: IconContact,
25
29
  products: IconProduct,
30
+ deliveries: IconDelivery,
31
+ orders: IconOrder,
32
+ payments: IconPayment,
26
33
  file: IconFile,
27
34
  pdf: IconPdf,
28
35
  'no-results': IconNoResults
@@ -1,7 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { Icon } from '@steeze-ui/svelte-icon'
3
3
  import type { FeddIconStatusProps, FeedItemStatus } from './types.ts'
4
- import { Alert, Failure, Queue, Running, Success, CheckBadge, Skip } from '@invopop/ui-icons'
4
+ import { Warning, Failure, Queue, Running, Success, CheckBadge, Skip } from '@invopop/ui-icons'
5
5
  import type { IconSource } from '@steeze-ui/heroicons'
6
6
 
7
7
  let { status }: FeddIconStatusProps = $props()
@@ -12,7 +12,7 @@
12
12
  success: Success,
13
13
  run: Running,
14
14
  queued: Queue,
15
- alert: Alert,
15
+ alert: Warning,
16
16
  skip: Skip,
17
17
  signed: CheckBadge
18
18
  }
@@ -24,8 +24,8 @@
24
24
 
25
25
  {#if iconStatus}
26
26
  <div title={status}>
27
- <Icon src={iconStatus} class="h-4 w-4 flex-shrink-0" />
27
+ <Icon src={iconStatus} class="h-4 w-4 shrink-0" />
28
28
  </div>
29
29
  {:else}
30
- <div class="w-4 h-4 flex-shrink-0 bg-neutral-200 rounded-full"></div>
30
+ <div class="w-4 h-4 shrink-0 bg-neutral-200 rounded-full"></div>
31
31
  {/if}
@@ -23,7 +23,7 @@
23
23
  {#if status}
24
24
  <FeedIconStatus {status} />
25
25
  {/if}
26
- <span class="truncate font-medium text-neutral-800 text-base">{title}</span>
26
+ <span class="flex-1 truncate font-medium text-neutral-800 text-base">{title}</span>
27
27
  </div>
28
28
  <SeparatorHorizontal />
29
29
  <div class="pl-3 py-1 pr-2.5 flex items-center space-x-0.5">
@@ -66,7 +66,7 @@
66
66
  bind:this={input}
67
67
  bind:value
68
68
  type="search"
69
- class="py-[5px] pl-7 border border-neutral-200 hover:border-neutral-300 w-full rounded-md text-neutral-800 placeholder-neutral-500 text-base outline-none tracking-tight caret-workspace-accent focus:border-workspace-accent focus:shadow-active"
69
+ class="py-[5px] pl-7 border border-neutral-200 hover:border-neutral-300 w-full rounded-md text-neutral-800 placeholder-neutral-500 text-base outline-none tracking-tight caret-workspace-accent focus:border-workspace-accent focus:shadow-active bg-white"
70
70
  style:padding-right={`${shortcutKeys.length * 15 + 12}px`}
71
71
  {placeholder}
72
72
  {...rest}
@@ -67,7 +67,7 @@
67
67
  bind:this={inputEl}
68
68
  bind:value
69
69
  type="text"
70
- class="{inputStyles} py-1.5 px-2.5 border w-full rounded-md placeholder:text-neutral-500 text-base tracking-tight"
70
+ class="{inputStyles} py-1.5 px-2.5 border w-full rounded-md placeholder:text-neutral-500 text-base tracking-tight bg-white"
71
71
  {placeholder}
72
72
  readonly={disabled}
73
73
  {...rest}
@@ -40,7 +40,7 @@
40
40
  {id}
41
41
  {placeholder}
42
42
  {value}
43
- class="{inputStyles} py-1.5 px-3 border w-full rounded placeholder-neutral-500 text-base tracking-tight"
43
+ class="{inputStyles} py-1.5 px-3 border w-full rounded placeholder-neutral-500 text-base tracking-tight bg-white"
44
44
  {disabled}
45
45
  {rows}
46
46
  {...rest}
@@ -32,7 +32,7 @@
32
32
  {@render children?.()}
33
33
  {#if !collapsed}
34
34
  <div>
35
- <div class="whitespace-nowrap max-w-[120px] truncate tracking-tight">{title}</div>
35
+ <div class="whitespace-nowrap max-w-[118px] truncate tracking-tight">{title}</div>
36
36
  {#if subtitle}
37
37
  <div class="text-sm font-medium text-yellow-600">{subtitle}</div>
38
38
  {/if}
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import clsx from 'clsx'
3
- import { Alert, Failure, Success } from '@invopop/ui-icons'
3
+ import { Warning, Failure, Success } from '@invopop/ui-icons'
4
4
  import { Icon } from '@steeze-ui/svelte-icon'
5
5
  import type { NotificationProps, Status } from './types'
6
6
 
@@ -13,7 +13,7 @@
13
13
  case 'error':
14
14
  return Failure
15
15
  case 'warning':
16
- return Alert
16
+ return Warning
17
17
  default:
18
18
  return null
19
19
  }
@@ -0,0 +1,7 @@
1
+ <script lang="ts">
2
+ let { percentage = 0 }: { percentage?: number } = $props()
3
+ </script>
4
+
5
+ <div class="w-full h-1 shrink-0 rounded-full bg-neutral-200">
6
+ <div class="rounded-full h-1 bg-workspace-accent" style="width: {percentage}%;"></div>
7
+ </div>
@@ -0,0 +1,6 @@
1
+ type $$ComponentProps = {
2
+ percentage?: number;
3
+ };
4
+ declare const ProgressBar: import("svelte").Component<$$ComponentProps, {}, "">;
5
+ type ProgressBar = ReturnType<typeof ProgressBar>;
6
+ export default ProgressBar;
@@ -18,6 +18,16 @@
18
18
  'border border-blue-200': status === 'blue' && dot,
19
19
  'bg-purple-100 text-purple-500': status === 'purple',
20
20
  'border border-purple-200': status === 'purple' && dot,
21
+ 'bg-olive-100 text-olive-500': status === 'olive',
22
+ 'border border-olive-200': status === 'olive' && dot,
23
+ 'bg-teal-100 text-teal-500': status === 'teal',
24
+ 'border border-teal-200': status === 'teal' && dot,
25
+ 'bg-crimson-100 text-crimson-500': status === 'crimson',
26
+ 'border border-crimson-200': status === 'crimson' && dot,
27
+ 'bg-blue-violet-100 text-blue-violet-500': status === 'blueViolet',
28
+ 'border border-blue-violet-200': status === 'blueViolet' && dot,
29
+ 'bg-steel-blue-100 text-steel-blue-500': status === 'steelBlue',
30
+ 'border border-steel-blue-200': status === 'steelBlue' && dot,
21
31
  'border border-dashed border-neutral-200 text-neutral-400': status === 'empty',
22
32
  'bg-neutral-100 text-neutral-500': status === 'grey',
23
33
  'border border-neutral-200': status === 'grey' && dot,
@@ -35,6 +45,10 @@
35
45
  'bg-warning-500': status === 'orange',
36
46
  'bg-blue-500': status === 'blue',
37
47
  'bg-purple-500': status === 'purple',
48
+ 'bg-olive-500': status === 'olive',
49
+ 'bg-teal-500': status === 'teal',
50
+ 'bg-crimson-500': status === 'crimson',
51
+ 'bg-blue-violet-500': status === 'blueViolet',
38
52
  'bg-neutral-300': status === 'empty',
39
53
  'bg-neutral-500': status === 'grey'
40
54
  })
package/dist/index.d.ts CHANGED
@@ -43,6 +43,7 @@ import MenuItemCollapsible from './MenuItemCollapsible.svelte';
43
43
  import Notification from './Notification.svelte';
44
44
  import ProfileAvatar from './ProfileAvatar.svelte';
45
45
  import ProfileSelector from './ProfileSelector.svelte';
46
+ import ProgressBar from './ProgressBar.svelte';
46
47
  import SectionLayout from './SectionLayout.svelte';
47
48
  import SeparatorHorizontal from './SeparatorHorizontal.svelte';
48
49
  import ShortcutWrapper from './ShortcutWrapper.svelte';
@@ -74,4 +75,4 @@ import twTheme from './tw.theme.js';
74
75
  import { resolveIcon } from './helpers.js';
75
76
  import { getCountryName } from './helpers.js';
76
77
  import { getStatusType } from './helpers.js';
77
- export { AlertDialog, BaseButton, BaseCard, BaseCounter, BaseDropdown, BaseFlag, BaseTable, BaseTableActions, BaseTableHeaderContent, Breadcrumbs, ButtonFile, ButtonUuidCopy, CardCheckbox, CardRelation, CompanySelector, CounterWorkflow, DataListItem, DatePicker, DrawerContext, DrawerContextItem, DrawerContextSeparator, DropdownSelect, EmptyStateIcon, EmptyStateIllustration, FeedEvents, FeedIconEvent, FeedIconStatus, FeedItem, FeedItemDetail, FeedViewer, GlobalSearch, InputCheckbox, InputError, InputLabel, InputRadio, InputSearch, InputSelect, InputText, InputTextarea, InputToggle, MenuItem, MenuItemCollapsible, Notification, ProfileAvatar, ProfileSelector, SectionLayout, SeparatorHorizontal, ShortcutWrapper, StatusLabel, StepIconList, Table, TableBody, TableCaption, TableFooter, TableHeader, TableRow, TableHead, TableCell, Tabs, TabsContent, TabsList, TabsTrigger, TagBeta, TagSearch, TagStatus, TitleMain, TitleSection, Toaster, Tooltip, TooltipContent, TooltipTrigger, UuidCopy, twTheme, resolveIcon, getCountryName, getStatusType };
78
+ export { AlertDialog, BaseButton, BaseCard, BaseCounter, BaseDropdown, BaseFlag, BaseTable, BaseTableActions, BaseTableHeaderContent, Breadcrumbs, ButtonFile, ButtonUuidCopy, CardCheckbox, CardRelation, CompanySelector, CounterWorkflow, DataListItem, DatePicker, DrawerContext, DrawerContextItem, DrawerContextSeparator, DropdownSelect, EmptyStateIcon, EmptyStateIllustration, FeedEvents, FeedIconEvent, FeedIconStatus, FeedItem, FeedItemDetail, FeedViewer, GlobalSearch, InputCheckbox, InputError, InputLabel, InputRadio, InputSearch, InputSelect, InputText, InputTextarea, InputToggle, MenuItem, MenuItemCollapsible, Notification, ProfileAvatar, ProfileSelector, ProgressBar, SectionLayout, SeparatorHorizontal, ShortcutWrapper, StatusLabel, StepIconList, Table, TableBody, TableCaption, TableFooter, TableHeader, TableRow, TableHead, TableCell, Tabs, TabsContent, TabsList, TabsTrigger, TagBeta, TagSearch, TagStatus, TitleMain, TitleSection, Toaster, Tooltip, TooltipContent, TooltipTrigger, UuidCopy, twTheme, resolveIcon, getCountryName, getStatusType };
package/dist/index.js CHANGED
@@ -43,6 +43,7 @@ import MenuItemCollapsible from './MenuItemCollapsible.svelte'
43
43
  import Notification from './Notification.svelte'
44
44
  import ProfileAvatar from './ProfileAvatar.svelte'
45
45
  import ProfileSelector from './ProfileSelector.svelte'
46
+ import ProgressBar from './ProgressBar.svelte'
46
47
  import SectionLayout from './SectionLayout.svelte'
47
48
  import SeparatorHorizontal from './SeparatorHorizontal.svelte'
48
49
  import ShortcutWrapper from './ShortcutWrapper.svelte'
@@ -116,6 +117,7 @@ export {
116
117
  Notification,
117
118
  ProfileAvatar,
118
119
  ProfileSelector,
120
+ ProgressBar,
119
121
  SectionLayout,
120
122
  SeparatorHorizontal,
121
123
  ShortcutWrapper,
@@ -11,7 +11,7 @@
11
11
  <RangeCalendarPrimitive.Cell
12
12
  bind:ref
13
13
  class={cn(
14
- 'size-(--cell-size) dark:[&:has([data-range-start])]:hover:bg-accent dark:[&:has([data-range-end])]:hover:bg-accent [&:has([data-range-middle])]:bg-accent dark:[&:has([data-range-middle])]:hover:bg-accent/50 [&:has([data-selected])]:bg-accent relative p-0 text-center text-sm focus-within:z-20 data-[range-middle]:rounded-r-md [&:first-child[data-selected]_[data-bits-day]]:rounded-l-md [&:has([data-range-end])]:rounded-r-md [&:has([data-range-middle])]:rounded-none first:[&:has([data-range-middle])]:rounded-l-md last:[&:has([data-range-middle])]:rounded-r-md [&:has([data-range-start])]:rounded-l-md [&:last-child[data-selected]_[data-bits-day]]:rounded-r-md',
14
+ 'size-(--cell-size) [&:has([data-range-middle])]:bg-accent [&:has([data-selected])]:bg-accent relative p-0 text-center text-sm focus-within:z-20 data-[range-middle]:rounded-r-md [&:first-child[data-selected]_[data-bits-day]]:rounded-l-md [&:has([data-range-end])]:rounded-r-md [&:has([data-range-middle])]:rounded-none first:[&:has([data-range-middle])]:rounded-l-md last:[&:has([data-range-middle])]:rounded-r-md [&:has([data-range-start])]:rounded-l-md [&:last-child[data-selected]_[data-bits-day]]:rounded-r-md',
15
15
  className
16
16
  )}
17
17
  {...restProps}
@@ -15,7 +15,7 @@
15
15
  buttonVariants({ variant: 'ghost' }),
16
16
  'size-(--cell-size) flex select-none flex-col items-center justify-center gap-1 whitespace-nowrap p-0 font-normal leading-none',
17
17
  // today
18
- '[&[data-today]:not([data-selected])]:border-b [&[data-today]:not([data-selected])]:border-workspace-accent [&[data-today]:not([data-selected])]:rounded-none',
18
+ '[&[data-today]:not([data-selected]):not([data-outside-month])]:border-b [&[data-today]:not([data-selected]):not([data-outside-month])]:border-workspace-accent [&[data-today]:not([data-selected]):not([data-outside-month])]:rounded-none',
19
19
  // range Start
20
20
  'data-[range-start]:bg-workspace-accent data-[range-start]:text-white data-[range-start]:font-semibold data-[range-start]:shadow-active',
21
21
  // range middle
@@ -28,9 +28,6 @@
28
28
  'data-[disabled]:text-muted-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
29
29
  // Unavailable
30
30
  'data-[unavailable]:line-through',
31
- 'dark:data-[range-middle]:hover:bg-accent/0',
32
- // hover
33
- 'dark:hover:text-accent-foreground',
34
31
  // focus
35
32
  'focus:border-ring focus:ring-ring/50 focus:relative',
36
33
  // inner spans
@@ -0,0 +1,86 @@
1
+ <script lang="ts">
2
+ export let classes = ''
3
+ </script>
4
+
5
+ <svg class={classes} xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 97 117">
6
+ <g filter="url(#a)">
7
+ <foreignObject width="97" height="119" x="0" y="-2">
8
+ <div style="backdrop-filter:blur(10px);clip-path:url(#b);height:100%;width:100%" />
9
+ </foreignObject>
10
+ <g data-figma-bg-blur-radius="20">
11
+ <rect width="57" height="79" x="20" y="18" fill="#fff" rx="6" />
12
+ <rect width="57" height="79" x="20" y="18" fill="#169958" fill-opacity=".02" rx="6" />
13
+ <rect
14
+ width="56.2"
15
+ height="78.2"
16
+ x="20.4"
17
+ y="18.4"
18
+ stroke="#169958"
19
+ stroke-opacity=".6"
20
+ stroke-width=".8"
21
+ rx="5.6"
22
+ />
23
+ </g>
24
+ <rect
25
+ width="50.4"
26
+ height="72.4"
27
+ x="23.3"
28
+ y="21.3"
29
+ stroke="#018551"
30
+ stroke-opacity=".2"
31
+ stroke-width=".6"
32
+ rx="3.7"
33
+ />
34
+ <rect width="19" height="2" x="28" y="45" fill="#018551" rx="1" />
35
+ <rect width="15" height="2" x="28" y="68" fill="#018551" rx="1" />
36
+ <rect width="10" height="2" x="59" y="50" fill="#018551" rx="1" />
37
+ <rect width="12" height="2" x="57" y="73" fill="#018551" rx="1" />
38
+ <rect width="14" height="2" x="55" y="54" fill="#018551" rx="1" />
39
+ <rect width="14" height="2" x="55" y="77" fill="#018551" rx="1" />
40
+ <rect width="10" height="2" x="59" y="58" fill="#018551" rx="1" />
41
+ <rect width="12" height="2" x="57" y="62" fill="#018551" rx="1" />
42
+ <rect width="8" height="2" x="61" y="81" fill="#018551" rx="1" />
43
+ <rect width="16" height="2" x="28" y="50" fill="#018551" fill-opacity=".2" rx="1" />
44
+ <rect width="12" height="2" x="28" y="73" fill="#018551" fill-opacity=".2" rx="1" />
45
+ <rect width="11" height="2" x="28" y="54" fill="#018551" fill-opacity=".2" rx="1" />
46
+ <rect width="16" height="2" x="28" y="77" fill="#018551" fill-opacity=".2" rx="1" />
47
+ <rect width="14" height="2" x="28" y="58" fill="#018551" fill-opacity=".2" rx="1" />
48
+ <rect width="18" height="2" x="28" y="81" fill="#018551" fill-opacity=".2" rx="1" />
49
+ <rect width="16" height="2" x="28" y="62" fill="#018551" fill-opacity=".2" rx="1" />
50
+ <g clip-path="url(#c)">
51
+ <path
52
+ fill="#018551"
53
+ d="M34.973 26.556a2.14 2.14 0 0 1 2.138 2.138v.195h1.131c.465 0 .894.235 1.145.626l1.397 2.171c.142.22.217.476.217.737v1.716a2.14 2.14 0 0 1-2.139 2.138h-.43a1.948 1.948 0 0 1-1.905 1.556c-.938 0-1.723-.67-1.904-1.556h-2.218a1.948 1.948 0 0 1-1.905 1.556 1.947 1.947 0 0 1-1.918-1.63A2.14 2.14 0 0 1 27 34.138v-5.445a2.14 2.14 0 0 1 2.139-2.138h5.834ZM30.5 35.11a.778.778 0 0 0 0 1.556.778.778 0 0 0 0-1.556Zm6.027 0a.779.779 0 0 0 0 1.556.78.78 0 0 0 .779-.778.78.78 0 0 0-.779-.778Zm.584-3.5h2.237l-.943-1.466a.193.193 0 0 0-.163-.09h-1.13v1.556Z"
54
+ />
55
+ </g>
56
+ </g>
57
+ <defs>
58
+ <clipPath id="b" transform="translate(0 2)">
59
+ <rect width="57" height="79" x="20" y="18" rx="6" />
60
+ </clipPath>
61
+ <clipPath id="c">
62
+ <path fill="#fff" d="M27 25h14v14H27z" />
63
+ </clipPath>
64
+ <filter
65
+ id="a"
66
+ width="97"
67
+ height="119"
68
+ x="0"
69
+ y="0"
70
+ color-interpolation-filters="sRGB"
71
+ filterUnits="userSpaceOnUse"
72
+ >
73
+ <feFlood flood-opacity="0" result="BackgroundImageFix" />
74
+ <feColorMatrix
75
+ in="SourceAlpha"
76
+ result="hardAlpha"
77
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
78
+ />
79
+ <feOffset dy="2" />
80
+ <feGaussianBlur stdDeviation="10" />
81
+ <feColorMatrix values="0 0 0 0 0.0392157 0 0 0 0 0.0392157 0 0 0 0 0.0392157 0 0 0 0.04 0" />
82
+ <feBlend in2="BackgroundImageFix" result="effect1_dropShadow_9631_17687" />
83
+ <feBlend in="SourceGraphic" in2="effect1_dropShadow_9631_17687" result="shape" />
84
+ </filter>
85
+ </defs>
86
+ </svg>
@@ -0,0 +1,20 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: Props & {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const IconDelivery: $$__sveltets_2_IsomorphicComponent<{
15
+ classes?: string;
16
+ }, {
17
+ [evt: string]: CustomEvent<any>;
18
+ }, {}, {}, string>;
19
+ type IconDelivery = InstanceType<typeof IconDelivery>;
20
+ export default IconDelivery;
@@ -0,0 +1,81 @@
1
+ <script lang="ts">
2
+ export let classes = ''
3
+ </script>
4
+
5
+ <svg class={classes} xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 97 117">
6
+ <g filter="url(#a)">
7
+ <foreignObject width="97" height="119" x="0" y="-2">
8
+ <div style="backdrop-filter:blur(10px);clip-path:url(#b);height:100%;width:100%" />
9
+ </foreignObject>
10
+ <g data-figma-bg-blur-radius="20">
11
+ <rect width="57" height="79" x="20" y="18" fill="#fff" rx="6" />
12
+ <rect width="57" height="79" x="20" y="18" fill="#169958" fill-opacity=".02" rx="6" />
13
+ <rect
14
+ width="56.2"
15
+ height="78.2"
16
+ x="20.4"
17
+ y="18.4"
18
+ stroke="#169958"
19
+ stroke-opacity=".6"
20
+ stroke-width=".8"
21
+ rx="5.6"
22
+ />
23
+ </g>
24
+ <rect
25
+ width="50.4"
26
+ height="72.4"
27
+ x="23.3"
28
+ y="21.3"
29
+ stroke="#018551"
30
+ stroke-opacity=".2"
31
+ stroke-width=".6"
32
+ rx="3.7"
33
+ />
34
+ <rect width="19" height="2" x="28" y="45" fill="#018551" rx="1" />
35
+ <rect width="15" height="2" x="28" y="68" fill="#018551" rx="1" />
36
+ <rect width="10" height="2" x="59" y="50" fill="#018551" rx="1" />
37
+ <rect width="12" height="2" x="57" y="73" fill="#018551" rx="1" />
38
+ <rect width="14" height="2" x="55" y="54" fill="#018551" rx="1" />
39
+ <rect width="14" height="2" x="55" y="77" fill="#018551" rx="1" />
40
+ <rect width="10" height="2" x="59" y="58" fill="#018551" rx="1" />
41
+ <rect width="12" height="2" x="57" y="62" fill="#018551" rx="1" />
42
+ <rect width="8" height="2" x="61" y="81" fill="#018551" rx="1" />
43
+ <rect width="16" height="2" x="28" y="50" fill="#018551" fill-opacity=".2" rx="1" />
44
+ <rect width="12" height="2" x="28" y="73" fill="#018551" fill-opacity=".2" rx="1" />
45
+ <rect width="11" height="2" x="28" y="54" fill="#018551" fill-opacity=".2" rx="1" />
46
+ <rect width="16" height="2" x="28" y="77" fill="#018551" fill-opacity=".2" rx="1" />
47
+ <rect width="14" height="2" x="28" y="58" fill="#018551" fill-opacity=".2" rx="1" />
48
+ <rect width="18" height="2" x="28" y="81" fill="#018551" fill-opacity=".2" rx="1" />
49
+ <rect width="16" height="2" x="28" y="62" fill="#018551" fill-opacity=".2" rx="1" />
50
+ <path
51
+ fill="#018551"
52
+ d="M37.306 26.555h-6.612c-1.18 0-2.139.96-2.139 2.14v6.61c0 1.18.96 2.14 2.14 2.14h4.022c.571 0 1.108-.223 1.512-.627l2.589-2.589c.404-.404.626-.94.626-1.512v-4.023c0-1.18-.959-2.139-2.139-2.139Zm-4.667 8.167h-1.167a.583.583 0 0 1 0-1.166h1.167a.583.583 0 0 1 0 1.166Zm.583-2.139h-1.75a.583.583 0 0 1 0-1.166h1.75a.583.583 0 0 1 0 1.166Zm-1.75-2.139a.583.583 0 0 1 0-1.166h5.056a.583.583 0 0 1 0 1.166h-5.056Zm6.52 2.96-2.588 2.589c-.068.068-.153.113-.237.158v-2.79c0-.107.087-.194.194-.194h2.791a.962.962 0 0 1-.16.237Z"
53
+ />
54
+ </g>
55
+ <defs>
56
+ <clipPath id="b" transform="translate(0 2)">
57
+ <rect width="57" height="79" x="20" y="18" rx="6" />
58
+ </clipPath>
59
+ <filter
60
+ id="a"
61
+ width="97"
62
+ height="119"
63
+ x="0"
64
+ y="0"
65
+ color-interpolation-filters="sRGB"
66
+ filterUnits="userSpaceOnUse"
67
+ >
68
+ <feFlood flood-opacity="0" result="BackgroundImageFix" />
69
+ <feColorMatrix
70
+ in="SourceAlpha"
71
+ result="hardAlpha"
72
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
73
+ />
74
+ <feOffset dy="2" />
75
+ <feGaussianBlur stdDeviation="10" />
76
+ <feColorMatrix values="0 0 0 0 0.0392157 0 0 0 0 0.0392157 0 0 0 0 0.0392157 0 0 0 0.04 0" />
77
+ <feBlend in2="BackgroundImageFix" result="effect1_dropShadow_9631_18422" />
78
+ <feBlend in="SourceGraphic" in2="effect1_dropShadow_9631_18422" result="shape" />
79
+ </filter>
80
+ </defs>
81
+ </svg>
@@ -0,0 +1,20 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: Props & {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const IconOrder: $$__sveltets_2_IsomorphicComponent<{
15
+ classes?: string;
16
+ }, {
17
+ [evt: string]: CustomEvent<any>;
18
+ }, {}, {}, string>;
19
+ type IconOrder = InstanceType<typeof IconOrder>;
20
+ export default IconOrder;
@@ -0,0 +1,86 @@
1
+ <script lang="ts">
2
+ export let classes = ''
3
+ </script>
4
+
5
+ <svg class={classes} xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 97 117">
6
+ <g filter="url(#a)">
7
+ <foreignObject width="97" height="119" x="0" y="-2">
8
+ <div style="backdrop-filter:blur(10px);clip-path:url(#b);height:100%;width:100%" />
9
+ </foreignObject>
10
+ <g data-figma-bg-blur-radius="20">
11
+ <rect width="57" height="79" x="20" y="18" fill="#fff" rx="6" />
12
+ <rect width="57" height="79" x="20" y="18" fill="#169958" fill-opacity=".02" rx="6" />
13
+ <rect
14
+ width="56.2"
15
+ height="78.2"
16
+ x="20.4"
17
+ y="18.4"
18
+ stroke="#169958"
19
+ stroke-opacity=".6"
20
+ stroke-width=".8"
21
+ rx="5.6"
22
+ />
23
+ </g>
24
+ <rect
25
+ width="50.4"
26
+ height="72.4"
27
+ x="23.3"
28
+ y="21.3"
29
+ stroke="#018551"
30
+ stroke-opacity=".2"
31
+ stroke-width=".6"
32
+ rx="3.7"
33
+ />
34
+ <rect width="19" height="2" x="28" y="45" fill="#018551" rx="1" />
35
+ <rect width="15" height="2" x="28" y="68" fill="#018551" rx="1" />
36
+ <rect width="10" height="2" x="59" y="50" fill="#018551" rx="1" />
37
+ <rect width="12" height="2" x="57" y="73" fill="#018551" rx="1" />
38
+ <rect width="14" height="2" x="55" y="54" fill="#018551" rx="1" />
39
+ <rect width="14" height="2" x="55" y="77" fill="#018551" rx="1" />
40
+ <rect width="10" height="2" x="59" y="58" fill="#018551" rx="1" />
41
+ <rect width="12" height="2" x="57" y="62" fill="#018551" rx="1" />
42
+ <rect width="8" height="2" x="61" y="81" fill="#018551" rx="1" />
43
+ <rect width="16" height="2" x="28" y="50" fill="#018551" fill-opacity=".2" rx="1" />
44
+ <rect width="12" height="2" x="28" y="73" fill="#018551" fill-opacity=".2" rx="1" />
45
+ <rect width="11" height="2" x="28" y="54" fill="#018551" fill-opacity=".2" rx="1" />
46
+ <rect width="16" height="2" x="28" y="77" fill="#018551" fill-opacity=".2" rx="1" />
47
+ <rect width="14" height="2" x="28" y="58" fill="#018551" fill-opacity=".2" rx="1" />
48
+ <rect width="18" height="2" x="28" y="81" fill="#018551" fill-opacity=".2" rx="1" />
49
+ <rect width="16" height="2" x="28" y="62" fill="#018551" fill-opacity=".2" rx="1" />
50
+ <g clip-path="url(#c)">
51
+ <path
52
+ fill="#018551"
53
+ d="M30.44 31.605c.83-.426 1.794-.433 2.715-.023l2.164.99c.408.184.721.518.88.939.049.132.076.268.091.404l2.335-1.054a1.684 1.684 0 0 1 2.226.842 1.685 1.685 0 0 1-.842 2.226l-5.282 2.383a2.902 2.902 0 0 1-2.088.12l-2.76-.882a1.362 1.362 0 0 1-1.323 1.06h-.195C27.611 38.61 27 38 27 37.25V33.36c0-.75.61-1.361 1.361-1.361h.195c.363 0 .692.145.936.378.267-.312.58-.583.947-.772Zm2.235 1.042c-.596-.265-1.185-.267-1.703-.002a2.1 2.1 0 0 0-1.055 1.381v2.313l3.077.983c.413.133.857.107 1.252-.071l5.282-2.384a.512.512 0 0 0 .27-.288.518.518 0 0 0-.695-.654c-.027.013-3.848 1.74-3.89 1.755a1.686 1.686 0 0 1-1.288-.043l-1.531-.697a.583.583 0 1 1 .481-1.062l1.532.696a.516.516 0 1 0 .428-.94l-2.16-.987ZM35.75 25a2.92 2.92 0 0 1 2.917 2.917 2.92 2.92 0 0 1-2.917 2.916 2.92 2.92 0 0 1-2.917-2.916A2.92 2.92 0 0 1 35.75 25Zm0 1.75a.583.583 0 0 0-.583.583V28.5a.583.583 0 1 0 1.166 0v-1.167a.583.583 0 0 0-.583-.583Z"
54
+ />
55
+ </g>
56
+ </g>
57
+ <defs>
58
+ <clipPath id="b" transform="translate(0 2)">
59
+ <rect width="57" height="79" x="20" y="18" rx="6" />
60
+ </clipPath>
61
+ <clipPath id="c">
62
+ <path fill="#fff" d="M27 25h14v14H27z" />
63
+ </clipPath>
64
+ <filter
65
+ id="a"
66
+ width="97"
67
+ height="119"
68
+ x="0"
69
+ y="0"
70
+ color-interpolation-filters="sRGB"
71
+ filterUnits="userSpaceOnUse"
72
+ >
73
+ <feFlood flood-opacity="0" result="BackgroundImageFix" />
74
+ <feColorMatrix
75
+ in="SourceAlpha"
76
+ result="hardAlpha"
77
+ values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
78
+ />
79
+ <feOffset dy="2" />
80
+ <feGaussianBlur stdDeviation="10" />
81
+ <feColorMatrix values="0 0 0 0 0.0392157 0 0 0 0 0.0392157 0 0 0 0 0.0392157 0 0 0 0.04 0" />
82
+ <feBlend in2="BackgroundImageFix" result="effect1_dropShadow_9631_18244" />
83
+ <feBlend in="SourceGraphic" in2="effect1_dropShadow_9631_18244" result="shape" />
84
+ </filter>
85
+ </defs>
86
+ </svg>
@@ -0,0 +1,20 @@
1
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
+ $$bindings?: Bindings;
4
+ } & Exports;
5
+ (internal: unknown, props: Props & {
6
+ $$events?: Events;
7
+ $$slots?: Slots;
8
+ }): Exports & {
9
+ $set?: any;
10
+ $on?: any;
11
+ };
12
+ z_$$bindings?: Bindings;
13
+ }
14
+ declare const IconPayment: $$__sveltets_2_IsomorphicComponent<{
15
+ classes?: string;
16
+ }, {
17
+ [evt: string]: CustomEvent<any>;
18
+ }, {}, {}, string>;
19
+ type IconPayment = InstanceType<typeof IconPayment>;
20
+ export default IconPayment;
@@ -8,7 +8,7 @@
8
8
  }: WithElementRef<HTMLTableAttributes> = $props()
9
9
  </script>
10
10
 
11
- <div data-slot="table-container" class="relative w-full overflow-x-auto">
11
+ <div data-slot="table-container" class="relative w-full">
12
12
  <table bind:this={ref} data-slot="table" class={cn('w-full caption-bottom', className)}>
13
13
  {@render children?.()}
14
14
  </table>
package/dist/types.d.ts CHANGED
@@ -4,7 +4,7 @@ import type { Snippet } from 'svelte';
4
4
  export type IconTheme = 'default' | 'solid' | 'mini';
5
5
  export type IconPosition = 'right' | 'left';
6
6
  export type ButtonVariant = 'default' | 'primary' | 'secondary' | 'warning' | 'danger' | 'dark' | 'outline';
7
- export type StatusType = 'grey' | 'green' | 'yellow' | 'red' | 'orange' | 'blue' | 'purple' | 'empty';
7
+ export type StatusType = 'grey' | 'green' | 'yellow' | 'red' | 'orange' | 'blue' | 'purple' | 'olive' | 'teal' | 'crimson' | 'blueViolet' | 'steelBlue' | 'empty';
8
8
  export type AnyProp = string | number | object | boolean;
9
9
  export type SidebarIcon = {
10
10
  path: string;
@@ -102,7 +102,7 @@ export type TabItem = {
102
102
  check?: boolean;
103
103
  warning?: boolean;
104
104
  };
105
- export type EmptyStateIcon = 'invoices' | 'contacts' | 'products' | 'pdf' | 'file' | 'no-results';
105
+ export type EmptyStateIcon = 'invoices' | 'contacts' | 'parties' | 'products' | 'deliveries' | 'orders' | 'payments' | 'pdf' | 'file' | 'no-results' | 'no-results';
106
106
  export type DataListItem = {
107
107
  label: string;
108
108
  value: string;
@@ -342,10 +342,10 @@ export interface DatePickerProps {
342
342
  export interface DrawerContextProps {
343
343
  items?: DrawerOption[];
344
344
  multiple?: boolean;
345
- searchable?: boolean;
346
345
  widthClass?: string;
347
346
  onclick?: (value: AnyProp) => void;
348
347
  onselect?: (selected: DrawerOption[]) => void;
348
+ children?: Snippet;
349
349
  }
350
350
  export interface DrawerContextItemProps {
351
351
  multiple?: boolean;
@@ -415,6 +415,8 @@ export interface FeedItemDetailProps {
415
415
  events?: FeedEvent[];
416
416
  idLabel?: string;
417
417
  onCopied?: (uuid: string) => void;
418
+ cancelable?: boolean;
419
+ onCancel?: () => void;
418
420
  }
419
421
  export interface FeedViewerProps {
420
422
  items?: FeedItemProps[];
package/package.json CHANGED
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "name": "@invopop/popui",
3
3
  "license": "MIT",
4
- "version": "0.1.9",
4
+ "version": "0.1.11",
5
5
  "scripts": {
6
6
  "dev": "vite dev",
7
+ "dev:clean": "npm run clean && vite dev",
8
+ "clean": "rm -rf .svelte-kit node_modules/.vite node_modules/.cache",
7
9
  "build": "vite build && npm run package",
8
10
  "preview": "vite preview",
9
11
  "package": "svelte-kit sync && svelte-package && publint",
@@ -79,7 +81,7 @@
79
81
  "type": "module",
80
82
  "dependencies": {
81
83
  "@floating-ui/core": "^1.5.1",
82
- "@invopop/ui-icons": "0.0.67",
84
+ "@invopop/ui-icons": "0.0.71",
83
85
  "@steeze-ui/heroicons": "^2.2.3",
84
86
  "@steeze-ui/svelte-icon": "^1.6.2",
85
87
  "@tailwindcss/vite": "^4.1.12",