@invopop/popui 0.1.35 → 0.1.41

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.
Files changed (119) hide show
  1. package/dist/BaseButton.svelte +4 -0
  2. package/dist/BaseDropdown.svelte +42 -3
  3. package/dist/BaseDropdown.svelte.d.ts +1 -0
  4. package/dist/BaseTableHeaderOrderBy.svelte +35 -12
  5. package/dist/ButtonSearch.svelte +82 -0
  6. package/dist/ButtonSearch.svelte.d.ts +4 -0
  7. package/dist/ButtonUuidCopy.svelte +1 -0
  8. package/dist/DatePicker.svelte +96 -27
  9. package/dist/DatePicker.svelte.d.ts +5 -1
  10. package/dist/DrawerContext.svelte +443 -34
  11. package/dist/DrawerContextItem.svelte +36 -29
  12. package/dist/DropdownSelect.svelte +68 -18
  13. package/dist/DropdownSelect.svelte.d.ts +4 -1
  14. package/dist/DropdownSelectGroup.svelte +15 -0
  15. package/dist/DropdownSelectGroup.svelte.d.ts +7 -0
  16. package/dist/EmptyState.svelte +6 -2
  17. package/dist/InputSearch.svelte +45 -5
  18. package/dist/InputSelect.svelte +12 -3
  19. package/dist/InputText.svelte +25 -8
  20. package/dist/InputToggle.svelte +23 -6
  21. package/dist/StepIcon.svelte +35 -0
  22. package/dist/StepIcon.svelte.d.ts +4 -0
  23. package/dist/StepIconList.svelte +24 -31
  24. package/dist/TagStatus.svelte +1 -1
  25. package/dist/button/button.svelte +34 -3
  26. package/dist/button/button.svelte.d.ts +29 -0
  27. package/dist/clickOutside.d.ts +5 -2
  28. package/dist/clickOutside.js +9 -3
  29. package/dist/data-table/cells/boolean-cell.svelte +29 -0
  30. package/dist/data-table/cells/boolean-cell.svelte.d.ts +8 -0
  31. package/dist/data-table/cells/cell-skeleton.svelte +35 -0
  32. package/dist/data-table/cells/cell-skeleton.svelte.d.ts +4 -0
  33. package/dist/data-table/cells/currency-cell.svelte +10 -0
  34. package/dist/data-table/cells/currency-cell.svelte.d.ts +8 -0
  35. package/dist/data-table/cells/date-cell.svelte +10 -0
  36. package/dist/data-table/cells/date-cell.svelte.d.ts +8 -0
  37. package/dist/data-table/cells/tag-cell.svelte +12 -0
  38. package/dist/data-table/cells/tag-cell.svelte.d.ts +8 -0
  39. package/dist/data-table/cells/text-cell.svelte +10 -0
  40. package/dist/data-table/cells/text-cell.svelte.d.ts +8 -0
  41. package/dist/data-table/cells/uuid-cell.svelte +17 -0
  42. package/dist/data-table/cells/uuid-cell.svelte.d.ts +8 -0
  43. package/dist/data-table/column-definitions.d.ts +12 -0
  44. package/dist/data-table/column-definitions.js +42 -0
  45. package/dist/data-table/column-sizing-helpers.d.ts +6 -0
  46. package/dist/data-table/column-sizing-helpers.js +24 -0
  47. package/dist/data-table/create-columns.d.ts +3 -0
  48. package/dist/data-table/create-columns.js +67 -0
  49. package/dist/data-table/data-table-cell.svelte +94 -0
  50. package/dist/data-table/data-table-cell.svelte.d.ts +25 -0
  51. package/dist/data-table/data-table-header-cell.svelte +188 -0
  52. package/dist/data-table/data-table-header-cell.svelte.d.ts +25 -0
  53. package/dist/data-table/data-table-helpers.d.ts +10 -0
  54. package/dist/data-table/data-table-helpers.js +124 -0
  55. package/dist/data-table/data-table-pagination.svelte +221 -0
  56. package/dist/data-table/data-table-pagination.svelte.d.ts +4 -0
  57. package/dist/data-table/data-table-row.svelte +57 -0
  58. package/dist/data-table/data-table-row.svelte.d.ts +25 -0
  59. package/dist/data-table/data-table-svelte.svelte.d.ts +40 -0
  60. package/dist/data-table/data-table-svelte.svelte.js +115 -0
  61. package/dist/data-table/data-table-toolbar.svelte +19 -0
  62. package/dist/data-table/data-table-toolbar.svelte.d.ts +32 -0
  63. package/dist/data-table/data-table-types.d.ts +196 -0
  64. package/dist/data-table/data-table-types.js +1 -0
  65. package/dist/data-table/data-table-view-options.svelte +126 -0
  66. package/dist/data-table/data-table-view-options.svelte.d.ts +29 -0
  67. package/dist/data-table/data-table.svelte +437 -0
  68. package/dist/data-table/data-table.svelte.d.ts +25 -0
  69. package/dist/data-table/flex-render.svelte +40 -0
  70. package/dist/data-table/flex-render.svelte.d.ts +33 -0
  71. package/dist/data-table/index.d.ts +13 -0
  72. package/dist/data-table/index.js +13 -0
  73. package/dist/data-table/render-helpers.d.ts +90 -0
  74. package/dist/data-table/render-helpers.js +99 -0
  75. package/dist/data-table/table-setup.d.ts +39 -0
  76. package/dist/data-table/table-setup.js +151 -0
  77. package/dist/data-table/table-styles.d.ts +17 -0
  78. package/dist/data-table/table-styles.js +70 -0
  79. package/dist/drawer-dnd-helpers.d.ts +30 -0
  80. package/dist/drawer-dnd-helpers.js +72 -0
  81. package/dist/helpers.d.ts +1 -0
  82. package/dist/helpers.js +3 -0
  83. package/dist/index.d.ts +15 -3
  84. package/dist/index.js +28 -5
  85. package/dist/skeleton/index.d.ts +5 -0
  86. package/dist/skeleton/index.js +7 -0
  87. package/dist/skeleton/skeleton-avatar.svelte +14 -0
  88. package/dist/skeleton/skeleton-avatar.svelte.d.ts +7 -0
  89. package/dist/skeleton/skeleton-card.svelte +22 -0
  90. package/dist/skeleton/skeleton-card.svelte.d.ts +9 -0
  91. package/dist/skeleton/skeleton-list.svelte +25 -0
  92. package/dist/skeleton/skeleton-list.svelte.d.ts +8 -0
  93. package/dist/skeleton/skeleton.svelte +17 -0
  94. package/dist/skeleton/skeleton.svelte.d.ts +5 -0
  95. package/dist/svg/IconDelivery.svelte +1 -1
  96. package/dist/svg/IconOrder.svelte +1 -1
  97. package/dist/svg/IconPayment.svelte +1 -1
  98. package/dist/table/table-cell.svelte +4 -2
  99. package/dist/table/table-head.svelte +4 -2
  100. package/dist/table/table-header.svelte +1 -1
  101. package/dist/table/table-row.svelte +4 -2
  102. package/dist/table/table.svelte +2 -2
  103. package/dist/tailwind.theme.css +30 -6
  104. package/dist/tooltip/index.d.ts +2 -1
  105. package/dist/tooltip/index.js +3 -2
  106. package/dist/tooltip/tooltip-auto-hide.svelte +31 -0
  107. package/dist/tooltip/tooltip-auto-hide.svelte.d.ts +7 -0
  108. package/dist/types.d.ts +51 -73
  109. package/package.json +14 -8
  110. package/dist/BaseTable.svelte +0 -391
  111. package/dist/BaseTable.svelte.d.ts +0 -4
  112. package/dist/BaseTableCellContent.svelte +0 -58
  113. package/dist/BaseTableCellContent.svelte.d.ts +0 -4
  114. package/dist/BaseTableCheckbox.svelte +0 -33
  115. package/dist/BaseTableCheckbox.svelte.d.ts +0 -4
  116. package/dist/BaseTableHeaderContent.svelte +0 -67
  117. package/dist/BaseTableHeaderContent.svelte.d.ts +0 -4
  118. package/dist/BaseTableRow.svelte +0 -127
  119. package/dist/BaseTableRow.svelte.d.ts +0 -4
@@ -0,0 +1,7 @@
1
+ type $$ComponentProps = {
2
+ class?: string;
3
+ size?: number;
4
+ };
5
+ declare const SkeletonAvatar: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type SkeletonAvatar = ReturnType<typeof SkeletonAvatar>;
7
+ export default SkeletonAvatar;
@@ -0,0 +1,22 @@
1
+ <script lang="ts">
2
+ import { cn } from '../utils'
3
+ import SkeletonAvatar from './skeleton-avatar.svelte'
4
+ import SkeletonList from './skeleton-list.svelte'
5
+
6
+ let {
7
+ class: className = '',
8
+ avatarSize = 48,
9
+ lines = 2,
10
+ width = 250
11
+ }: {
12
+ class?: string
13
+ avatarSize?: number
14
+ lines?: number
15
+ width?: number
16
+ } = $props()
17
+ </script>
18
+
19
+ <div class={cn('flex items-center space-x-4', className)}>
20
+ <SkeletonAvatar size={avatarSize} />
21
+ <SkeletonList rows={lines} width={width} />
22
+ </div>
@@ -0,0 +1,9 @@
1
+ type $$ComponentProps = {
2
+ class?: string;
3
+ avatarSize?: number;
4
+ lines?: number;
5
+ width?: number;
6
+ };
7
+ declare const SkeletonCard: import("svelte").Component<$$ComponentProps, {}, "">;
8
+ type SkeletonCard = ReturnType<typeof SkeletonCard>;
9
+ export default SkeletonCard;
@@ -0,0 +1,25 @@
1
+ <script lang="ts">
2
+ import { cn } from '../utils'
3
+ import Skeleton from './skeleton.svelte'
4
+
5
+ let {
6
+ class: className = '',
7
+ rows = 5,
8
+ width = 250
9
+ }: {
10
+ class?: string
11
+ rows?: number
12
+ width?: number | string
13
+ } = $props()
14
+
15
+ const widthStyle = typeof width === 'number' ? `${width}px` : width
16
+ </script>
17
+
18
+ <div class={cn('space-y-2', className)}>
19
+ {#each Array(rows) as _, i}
20
+ <Skeleton
21
+ class="h-4"
22
+ style="width: {widthStyle}; max-width: {i === rows - 1 ? '80%' : '100%'}"
23
+ />
24
+ {/each}
25
+ </div>
@@ -0,0 +1,8 @@
1
+ type $$ComponentProps = {
2
+ class?: string;
3
+ rows?: number;
4
+ width?: number | string;
5
+ };
6
+ declare const SkeletonList: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type SkeletonList = ReturnType<typeof SkeletonList>;
8
+ export default SkeletonList;
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import { cn, type WithElementRef, type WithoutChildren } from '../utils'
3
+ import type { HTMLAttributes } from 'svelte/elements'
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ ...restProps
9
+ }: WithoutChildren<WithElementRef<HTMLAttributes<HTMLDivElement>>> = $props()
10
+ </script>
11
+
12
+ <div
13
+ bind:this={ref}
14
+ data-slot="skeleton"
15
+ class={cn('bg-background-default-tertiary animate-pulse rounded-md', className)}
16
+ {...restProps}
17
+ />
@@ -0,0 +1,5 @@
1
+ import { type WithElementRef } from '../utils';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ declare const Skeleton: import("svelte").Component<Omit<WithElementRef<HTMLAttributes<HTMLDivElement>>, "children">, {}, "ref">;
4
+ type Skeleton = ReturnType<typeof Skeleton>;
5
+ export default Skeleton;
@@ -5,7 +5,7 @@
5
5
  <svg class={classes} xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 97 117">
6
6
  <g filter="url(#a)">
7
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%" />
8
+ <div style="backdrop-filter:blur(10px);clip-path:url(#b);height:100%;width:100%"></div>
9
9
  </foreignObject>
10
10
  <g data-figma-bg-blur-radius="20">
11
11
  <rect width="57" height="79" x="20" y="18" fill="#fff" rx="6" />
@@ -5,7 +5,7 @@
5
5
  <svg class={classes} xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 97 117">
6
6
  <g filter="url(#a)">
7
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%" />
8
+ <div style="backdrop-filter:blur(10px);clip-path:url(#b);height:100%;width:100%"></div>
9
9
  </foreignObject>
10
10
  <g data-figma-bg-blur-radius="20">
11
11
  <rect width="57" height="79" x="20" y="18" fill="#fff" rx="6" />
@@ -5,7 +5,7 @@
5
5
  <svg class={classes} xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 97 117">
6
6
  <g filter="url(#a)">
7
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%" />
8
+ <div style="backdrop-filter:blur(10px);clip-path:url(#b);height:100%;width:100%"></div>
9
9
  </foreignObject>
10
10
  <g data-figma-bg-blur-radius="20">
11
11
  <rect width="57" height="79" x="20" y="18" fill="#fff" rx="6" />
@@ -7,7 +7,8 @@
7
7
  let {
8
8
  ref = $bindable(null),
9
9
  class: className,
10
- children
10
+ children,
11
+ ...restProps
11
12
  }: WithElementRef<HTMLTdAttributes> = $props()
12
13
  </script>
13
14
 
@@ -15,9 +16,10 @@
15
16
  bind:this={ref}
16
17
  data-slot="table-cell"
17
18
  class={cn(
18
- 'py-[9.5px] [&:has([role=menu])]:py-[5px] pl-3 pr-3 align-middle text-foreground font-normal text-base [&:has([role=menu])]:pl-1 relative z-1 border-b border-border',
19
+ 'py-[9px] [&:has([role=menu])]:py-0 [&:has([data-uuid-copy])]:py-0 pl-3 pr-3 align-middle text-foreground font-normal text-base [&:has([role=menu])]:pl-1 [&:has([role=menu])]:bg-white [&:has([type=checkbox])]:bg-white',
19
20
  className
20
21
  )}
22
+ {...restProps}
21
23
  onclick={bubble('click')}
22
24
  onkeydown={bubble('keydown')}
23
25
  >
@@ -4,7 +4,8 @@
4
4
  let {
5
5
  ref = $bindable(null),
6
6
  class: className,
7
- children
7
+ children,
8
+ ...restProps
8
9
  }: WithElementRef<HTMLThAttributes> = $props()
9
10
  </script>
10
11
 
@@ -12,9 +13,10 @@
12
13
  bind:this={ref}
13
14
  data-slot="table-head"
14
15
  class={cn(
15
- 'text-foreground-default-secondary text-base font-normal text-left align-middle [&:has([role=checkbox])]:pr-0 px-3',
16
+ 'text-foreground-default-secondary text-base font-normal text-left align-middle [&:has([role=checkbox])]:p-0 [&:has(button)]:p-0 px-3 bg-background shadow-[inset_0_-1px_0_0_var(--color-border)]',
16
17
  className
17
18
  )}
19
+ {...restProps}
18
20
  >
19
21
  {@render children?.()}
20
22
  </th>
@@ -15,7 +15,7 @@
15
15
  <thead
16
16
  bind:this={ref}
17
17
  data-slot="table-header"
18
- class={cn('[&_tr]:border-b [&_tr]:border-border bg-background', className)}
18
+ class={cn('sticky top-0 z-20 bg-background', className)}
19
19
  onclick={bubble('click')}
20
20
  onkeydown={bubble('keydown')}
21
21
  >
@@ -10,7 +10,8 @@
10
10
  oncontextmenu,
11
11
  onkeydown,
12
12
  onmouseover,
13
- onfocus
13
+ onfocus,
14
+ ...restProps
14
15
  }: WithElementRef<HTMLAttributes<HTMLTableRowElement>> = $props()
15
16
  </script>
16
17
 
@@ -18,7 +19,7 @@
18
19
  bind:this={ref}
19
20
  data-slot="table-row"
20
21
  class={cn(
21
- 'data-[state=selected]:bg-background-default-secondary data-[state=checked]:bg-background-selected transition-colors h-10',
22
+ 'group/row hover:bg-background-default-secondary data-[state=selected]:bg-background-selected data-[state=checked]:bg-background-selected data-[state=error]:bg-background-critical data-[state=warning]:bg-background-warning data-[state=success]:bg-background-selected h-10 data-[state=selected]:hover:bg-background-selected data-[state=checked]:hover:bg-background-selected data-[state=error]:hover:bg-background-critical data-[state=warning]:hover:bg-background-warning data-[state=success]:hover:bg-background-selected data-[focused=true]:bg-background-default-secondary',
22
23
  className
23
24
  )}
24
25
  {oncontextmenu}
@@ -26,6 +27,7 @@
26
27
  {onkeydown}
27
28
  {onmouseover}
28
29
  {onfocus}
30
+ {...restProps}
29
31
  >
30
32
  {@render children?.()}
31
33
  </tr>
@@ -8,8 +8,8 @@
8
8
  }: WithElementRef<HTMLTableAttributes> = $props()
9
9
  </script>
10
10
 
11
- <div data-slot="table-container" class="relative w-full">
12
- <table bind:this={ref} data-slot="table" class={cn('w-full caption-bottom', className)}>
11
+ <div data-slot="table-container" class="relative w-full h-full">
12
+ <table bind:this={ref} data-slot="table" class={cn('caption-bottom w-full', className)}>
13
13
  {@render children?.()}
14
14
  </table>
15
15
  </div>
@@ -617,11 +617,11 @@
617
617
 
618
618
  --color-background-attention-default: var(--color-attention-alpha-10);
619
619
 
620
- --color-background-warning-default: var(--color-warning-alpha-10);
620
+ --color-background-warning-default: var(--color-warning-alpha-5);
621
621
  --color-background-warning-bold: var(--color-warning-60);
622
622
  --color-background-warning-inverse: var(--color-warning-50);
623
623
 
624
- --color-background-critical-default: var(--color-critical-alpha-10);
624
+ --color-background-critical-default: var(--color-critical-alpha-5);
625
625
  --color-background-critical-bold: var(--color-critical-50);
626
626
  --color-background-critical-inverse: var(--color-critical-40);
627
627
 
@@ -672,7 +672,7 @@
672
672
  --color-icon-inverse-secondary: var(--color-neutral-white-alpha-40);
673
673
  --color-icon-inverse-bold: var(--color-neutral-white-alpha-100);
674
674
 
675
- --color-icon-selected-default: var(--color-positive-50);
675
+ --color-icon-selected-default: var(--color-accent-50);
676
676
  --color-icon-accent-default: var(--color-accent-50);
677
677
 
678
678
  --color-icon-success-default: var(--color-positive-50);
@@ -799,7 +799,10 @@
799
799
 
800
800
  /* Font Family */
801
801
  --font-sans: Inter, sans-serif;
802
- --font-mono: CommitMono, ui-monospace, Menlo, Monaco, Consolas, "Ubuntu Mono", "Roboto Mono", "DejaVu Sans Mono", monospace;
802
+ --font-mono: "Geist Mono", CommitMono, ui-monospace, Menlo, Monaco, Consolas, "Ubuntu Mono", "Roboto Mono", "DejaVu Sans Mono", monospace;
803
+
804
+ /* Font Features for Monospace */
805
+ --font-mono-features: "ss02" on, "ss08" on, "ss09" on;
803
806
 
804
807
  /* Typography */
805
808
  --text-2xl: 24px;
@@ -884,7 +887,7 @@
884
887
  --color-background-selected-default-hover: var(--color-accent-alpha-30);
885
888
  --color-background-selected-default-press: var(--color-accent-alpha-40);
886
889
  --color-background-selected-inverse: var(--color-white-10);
887
- --color-background-selected-inverse-hover: var(--color-nwhite-20);
890
+ --color-background-selected-inverse-hover: var(--color-white-20);
888
891
  --color-background-selected-inverse-press: var(--color-white-30);
889
892
 
890
893
  --color-background-accent-default: var(--color-accent-60);
@@ -954,7 +957,7 @@
954
957
  --color-icon-inverse-secondary: var(--color-neutral-white-alpha-40);
955
958
  --color-icon-inverse-bold: var(--color-neutral-white-alpha-100);
956
959
 
957
- --color-icon-selected-default: var(--color-positive-50);
960
+ --color-icon-selected-default: var(--color-accent-50);
958
961
  --color-icon-accent-default: var(--color-white);
959
962
  --color-icon-success-default: var(--color-positive-50);
960
963
 
@@ -986,3 +989,24 @@
986
989
  --color-icon-status-void: var(--color-neutral-40);
987
990
  }
988
991
  }
992
+
993
+ /* Custom utility for monospace font with OpenType features */
994
+ @utility font-mono {
995
+ font-family: var(--font-mono);
996
+ font-variant-numeric: lining-nums tabular-nums;
997
+ font-feature-settings: var(--font-mono-features);
998
+ }
999
+
1000
+ /* Pulse icon animation */
1001
+ @keyframes pulse-fill {
1002
+ 0%, 100% { fill: var(--color-background-default-tertiary); }
1003
+ 40% { fill: var(--color-accent-50); }
1004
+ }
1005
+
1006
+ .pulse-icon .r0 {
1007
+ animation: pulse-fill 1.6s ease-in-out infinite 0s;
1008
+ }
1009
+
1010
+ .pulse-icon .r1 {
1011
+ animation: pulse-fill 1.6s ease-in-out infinite 0.16s;
1012
+ }
@@ -1,7 +1,8 @@
1
1
  import { Tooltip as TooltipPrimitive } from 'bits-ui';
2
2
  import Trigger from './tooltip-trigger.svelte';
3
3
  import Content from './tooltip-content.svelte';
4
+ import AutoHide from './tooltip-auto-hide.svelte';
4
5
  declare const Root: import("svelte").Component<TooltipPrimitive.RootProps, {}, "open">;
5
6
  declare const Provider: import("svelte").Component<TooltipPrimitive.ProviderProps, {}, "">;
6
7
  declare const Portal: import("svelte").Component<TooltipPrimitive.PortalProps, {}, "">;
7
- export { Root, Trigger, Content, Provider, Portal, Root as Tooltip, Content as TooltipContent, Trigger as TooltipTrigger, Provider as TooltipProvider, Portal as TooltipPortal };
8
+ export { Root, Trigger, Content, Provider, Portal, AutoHide, Root as Tooltip, Content as TooltipContent, Trigger as TooltipTrigger, Provider as TooltipProvider, Portal as TooltipPortal, AutoHide as TooltipAutoHide };
@@ -1,9 +1,10 @@
1
1
  import { Tooltip as TooltipPrimitive } from 'bits-ui';
2
2
  import Trigger from './tooltip-trigger.svelte';
3
3
  import Content from './tooltip-content.svelte';
4
+ import AutoHide from './tooltip-auto-hide.svelte';
4
5
  const Root = TooltipPrimitive.Root;
5
6
  const Provider = TooltipPrimitive.Provider;
6
7
  const Portal = TooltipPrimitive.Portal;
7
- export { Root, Trigger, Content, Provider, Portal,
8
+ export { Root, Trigger, Content, Provider, Portal, AutoHide,
8
9
  //
9
- Root as Tooltip, Content as TooltipContent, Trigger as TooltipTrigger, Provider as TooltipProvider, Portal as TooltipPortal };
10
+ Root as Tooltip, Content as TooltipContent, Trigger as TooltipTrigger, Provider as TooltipProvider, Portal as TooltipPortal, AutoHide as TooltipAutoHide };
@@ -0,0 +1,31 @@
1
+ <script lang="ts">
2
+ import { Tooltip, TooltipProvider } from './'
3
+ import { onMount, onDestroy } from 'svelte'
4
+ import type { Snippet } from 'svelte'
5
+
6
+ let {
7
+ children
8
+ }: {
9
+ children: Snippet
10
+ } = $props()
11
+
12
+ let isOpen = $state(false)
13
+
14
+ function handleScroll() {
15
+ isOpen = false
16
+ }
17
+
18
+ onMount(() => {
19
+ window.addEventListener('scroll', handleScroll, true)
20
+ })
21
+
22
+ onDestroy(() => {
23
+ window.removeEventListener('scroll', handleScroll, true)
24
+ })
25
+ </script>
26
+
27
+ <TooltipProvider>
28
+ <Tooltip bind:open={isOpen}>
29
+ {@render children()}
30
+ </Tooltip>
31
+ </TooltipProvider>
@@ -0,0 +1,7 @@
1
+ import type { Snippet } from 'svelte';
2
+ type $$ComponentProps = {
3
+ children: Snippet;
4
+ };
5
+ declare const TooltipAutoHide: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type TooltipAutoHide = ReturnType<typeof TooltipAutoHide>;
7
+ export default TooltipAutoHide;
package/dist/types.d.ts CHANGED
@@ -3,7 +3,7 @@ import type { IconSource } from '@steeze-ui/svelte-icon';
3
3
  import type { Snippet } from 'svelte';
4
4
  export type IconTheme = 'default' | 'solid' | 'mini';
5
5
  export type IconPosition = 'right' | 'left';
6
- export type ButtonVariant = 'warning' | 'primary' | 'secondary' | 'danger' | 'dark' | 'outline' | 'ghost' | 'dark-ghost';
6
+ export type ButtonVariant = 'warning' | 'primary' | 'secondary' | 'danger' | 'dark' | 'outline' | 'ghost' | 'selected' | 'dark-ghost';
7
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 = {
@@ -23,6 +23,7 @@ export type DrawerGroup = {
23
23
  emptyIcon?: IconSource;
24
24
  emptyTitle?: string;
25
25
  emptyDescription?: string;
26
+ hideCounter?: boolean;
26
27
  };
27
28
  export type DrawerOption = SelectOption & {
28
29
  separator?: boolean;
@@ -39,7 +40,7 @@ export type DrawerOption = SelectOption & {
39
40
  locked?: boolean;
40
41
  groupBy?: string;
41
42
  useAvatar?: boolean;
42
- action?: Snippet;
43
+ action?: Snippet<[DrawerOption]>;
43
44
  };
44
45
  export type Company = {
45
46
  id: string;
@@ -168,6 +169,8 @@ export interface BaseButtonProps {
168
169
  shortcut?: boolean;
169
170
  fullwidth?: boolean;
170
171
  notification?: boolean;
172
+ stackedLeft?: boolean;
173
+ stackedRight?: boolean;
171
174
  children?: Snippet;
172
175
  [key: string]: any;
173
176
  onclick?: (event: MouseEvent) => void;
@@ -215,6 +218,7 @@ export interface BaseDropdownProps {
215
218
  fullWidth?: boolean;
216
219
  placement?: Placement;
217
220
  matchParentWidth?: boolean;
221
+ usePortal?: boolean;
218
222
  trigger?: Snippet;
219
223
  children?: Snippet;
220
224
  [key: string]: any;
@@ -222,84 +226,20 @@ export interface BaseDropdownProps {
222
226
  export interface BaseFlagProps {
223
227
  country?: string;
224
228
  }
225
- export interface BaseTableProps {
226
- sortBy?: string;
227
- sortDirection?: TableSortBy;
228
- fields?: TableField[];
229
- data?: TableDataRow[];
230
- getActions?: TableActionProp;
231
- groupLabel?: TableGroupLabelProp;
232
- disableRowClick?: boolean;
233
- hideCounter?: boolean;
234
- selectable?: boolean;
235
- selectedRows?: TableDataRow[];
236
- selectedTrackedBy?: string;
237
- hideSelectAll?: boolean;
238
- disableKeyboardNavigation?: boolean;
239
- [key: string]: any;
240
- ontableEndReached?: () => void;
241
- onSelectAllRows?: (selected: boolean) => void;
242
- onRowClick?: (row: TableDataRow) => void;
243
- onRowRightClick?: (row: TableDataRow) => void;
244
- onRowNewTabClick?: (row: TableDataRow) => void;
245
- onCopied?: (uuid: string) => void;
246
- onOrderBy?: (field: string, direction: TableSortBy) => void;
247
- onClickAction?: (args: {
248
- row: TableDataRow;
249
- action: AnyProp;
250
- }) => void;
251
- }
252
229
  export interface BaseTableActionsProps {
253
230
  actions: TableAction[];
254
231
  onclick?: (value: AnyProp) => void;
255
232
  }
256
- export interface BaseTableCellContentProps {
257
- field: TableField;
258
- data?: unknown;
259
- isMobile?: boolean;
260
- badge?: Badge | null;
261
- status?: FeedItemStatus | null;
262
- icons?: TableIcon[] | null;
263
- onCopied?: (uuid: string) => void;
264
- }
265
- export interface BaseTableCheckboxProps {
266
- checkboxButton?: HTMLButtonElement | undefined;
267
- checked?: boolean;
268
- hidden?: boolean;
269
- indeterminate?: boolean;
270
- onChecked?: (checked: boolean) => void;
271
- }
272
- export interface BaseTableHeaderProps {
273
- field: TableField;
274
- sortBy?: string;
275
- sortDirection: TableSortBy;
276
- onOrderBy?: (field: string, direction: TableSortBy) => void;
277
- }
278
233
  export interface BaseTableHeaderOrderByProps {
279
234
  isActive?: boolean;
280
235
  sortDirection: TableSortBy;
281
236
  onOrderBy?: (direction: TableSortBy) => void;
282
- }
283
- export interface BaseTableRowProps {
284
- row: TableDataRow;
285
- getActions?: TableActionProp;
286
- fields?: TableField[];
287
- disableRowClick?: boolean;
288
- selectable?: boolean;
289
- selected?: boolean;
290
- selectionMode?: string;
291
- selectedTrackedBy?: string;
292
- selectedRows?: TableDataRow[];
293
- onclick?: (event: MouseEvent) => void;
294
- onmouseover?: () => void;
295
- oncontextmenu?: () => void;
296
- onfocus?: () => void;
297
- onChecked?: (checked: boolean) => void;
298
- onCopied?: (uuid: string) => void;
299
- onClickAction?: (args: {
300
- row: TableDataRow;
301
- action: AnyProp;
302
- }) => void;
237
+ onHide?: () => void;
238
+ onFilter?: () => void;
239
+ onFreeze?: () => void;
240
+ isFrozen?: boolean;
241
+ showSortOptions?: boolean;
242
+ showFilterOption?: boolean;
303
243
  }
304
244
  export interface BreadcrumbProps {
305
245
  breadcrumb: Breadcrumb;
@@ -329,6 +269,17 @@ export interface ButtonUuidCopyProps {
329
269
  disabled?: boolean;
330
270
  oncopied?: (label: string) => void;
331
271
  }
272
+ export interface ButtonSearchProps {
273
+ value?: string;
274
+ expanded?: boolean;
275
+ placeholder?: string;
276
+ size?: 'sm' | 'md';
277
+ loading?: boolean;
278
+ autofocus?: boolean;
279
+ oninput?: (value: string) => void;
280
+ onExpand?: () => void;
281
+ onCollapse?: () => void;
282
+ }
332
283
  export interface CardCheckboxProps {
333
284
  id?: any;
334
285
  name?: string;
@@ -365,20 +316,29 @@ export interface DataListItemProps {
365
316
  }
366
317
  export interface DatePickerProps {
367
318
  label?: string;
368
- position?: 'left' | 'right';
319
+ placement?: Placement;
369
320
  from?: string;
370
321
  to?: string;
371
322
  onSelect?: (date: {
372
323
  from: string;
373
324
  to: string;
374
325
  }) => void;
326
+ stackLeft?: boolean;
327
+ stackRight?: boolean;
328
+ icon?: IconSource | string;
329
+ iconTheme?: IconTheme;
330
+ isOpen?: boolean;
375
331
  }
376
332
  export interface DrawerContextProps {
377
333
  items?: DrawerOption[];
378
334
  multiple?: boolean;
335
+ draggable?: boolean;
379
336
  widthClass?: string;
337
+ collapsibleGroups?: boolean;
380
338
  onclick?: (value: AnyProp) => void;
381
339
  onselect?: (selected: DrawerOption[]) => void;
340
+ onreorder?: (items: DrawerOption[]) => void;
341
+ ondropitem?: (groups: Record<string, DrawerOption[]>) => void;
382
342
  children?: Snippet;
383
343
  groups?: DrawerGroup[];
384
344
  }
@@ -399,6 +359,10 @@ export interface DropdownSelectProps {
399
359
  fullWidth?: boolean;
400
360
  widthClass?: string;
401
361
  onSelect?: (value: AnyProp) => void;
362
+ onOpenChange?: (isOpen: boolean) => void;
363
+ stackLeft?: boolean;
364
+ stackRight?: boolean;
365
+ multipleLabel?: string;
402
366
  }
403
367
  export interface EmptyStateProps {
404
368
  icon?: Snippet;
@@ -482,6 +446,8 @@ export interface InputSearchProps {
482
446
  placeholder?: string;
483
447
  icon?: IconSource;
484
448
  focusOnLoad?: boolean;
449
+ size?: 'xs' | 'sm' | 'md';
450
+ loading?: boolean;
485
451
  oninput?: (value: string) => void;
486
452
  onclick?: (event: MouseEvent) => void;
487
453
  onfocus?: (event: FocusEvent) => void;
@@ -500,6 +466,7 @@ export interface InputSelectProps {
500
466
  placeholder?: string;
501
467
  disablePlaceholder?: boolean;
502
468
  errorText?: string;
469
+ size?: 'xs' | 'sm' | 'md';
503
470
  onchange?: (value: string) => void;
504
471
  [key: string]: any;
505
472
  }
@@ -511,6 +478,10 @@ export interface InputTextProps {
511
478
  disabled?: boolean;
512
479
  value?: string | number;
513
480
  focusOnLoad?: boolean;
481
+ stackLeft?: boolean;
482
+ stackRight?: boolean;
483
+ widthClass?: string;
484
+ size?: 'xs' | 'sm' | 'md';
514
485
  oninput?: (value: string) => void;
515
486
  onfocus?: (event: FocusEvent) => void;
516
487
  onblur?: (event: FocusEvent) => void;
@@ -580,6 +551,12 @@ export interface StepIconListProps {
580
551
  icons?: StepIcon[];
581
552
  [key: string]: any;
582
553
  }
554
+ export interface StepIconProps {
555
+ name?: string;
556
+ showMask?: boolean;
557
+ tooltipContent?: Snippet;
558
+ children: Snippet;
559
+ }
583
560
  export interface TagSearchProps {
584
561
  label?: string;
585
562
  icon?: IconSource | string | undefined;
@@ -617,3 +594,4 @@ export interface UuidCopyProps {
617
594
  onCopied?: (uuid: string) => void;
618
595
  onLinkClick?: (uuid: string) => void;
619
596
  }
597
+ export type { DataTableColumn, DataTableProps, CellType, TextCellConfig, BooleanCellConfig, TagCellConfig, DateCellConfig, CurrencyCellConfig, CellConfig } from './data-table/data-table-types.js';
package/package.json CHANGED
@@ -1,7 +1,10 @@
1
1
  {
2
2
  "name": "@invopop/popui",
3
3
  "license": "MIT",
4
- "version": "0.1.35",
4
+ "version": "0.1.41",
5
+ "repository": {
6
+ "url": "https://github.com/invopop/popui"
7
+ },
5
8
  "scripts": {
6
9
  "dev": "vite dev",
7
10
  "dev:clean": "npm run clean && vite dev",
@@ -11,16 +14,13 @@
11
14
  "preview": "vite preview",
12
15
  "package": "svelte-kit sync && svelte-package && publint",
13
16
  "prepublishOnly": "npm run package",
14
- "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
17
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.check.json",
15
18
  "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
16
19
  "test": "vitest",
17
20
  "lint": "prettier --plugin-search-dir . --check . && eslint .",
18
21
  "format": "prettier --plugin-search-dir . --write .",
19
22
  "storybook": "storybook dev -p 6006",
20
- "build-storybook": "storybook build",
21
- "build:tailwind": "tailwindcss -i ../styles.css -o ./dist/popui.css --minify",
22
- "build-web-components": "vite build --config vite.wbc.config.ts",
23
- "publish-wbc": "npm run build-web-components && cp ./package-wbc.json ./dist/package.json && cd ./dist && npm run publish"
23
+ "build-storybook": "storybook build"
24
24
  },
25
25
  "exports": {
26
26
  ".": {
@@ -81,11 +81,15 @@
81
81
  "types": "./dist/index.d.ts",
82
82
  "type": "module",
83
83
  "dependencies": {
84
+ "@atlaskit/pragmatic-drag-and-drop": "^1.7.7",
85
+ "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.5",
86
+ "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0",
84
87
  "@floating-ui/core": "^1.5.1",
85
- "@invopop/ui-icons": "0.0.74",
88
+ "@invopop/ui-icons": "^0.0.78",
86
89
  "@steeze-ui/heroicons": "^2.2.3",
87
90
  "@steeze-ui/svelte-icon": "^1.6.2",
88
91
  "@tailwindcss/vite": "^4.1.12",
92
+ "@tanstack/table-core": "^8.21.3",
89
93
  "@types/flatpickr": "^3.1.2",
90
94
  "bits-ui": "^2.9.4",
91
95
  "clsx": "^2.0.0",
@@ -103,6 +107,8 @@
103
107
  "svelte-sonner": "^1.0.5",
104
108
  "svelte-transition": "^0.0.17",
105
109
  "svelte-viewport-info": "^1.0.2",
106
- "tailwind-variants": "^1.0.0"
110
+ "tailwind-variants": "^1.0.0",
111
+ "tailwindcss-animate": "^1.0.7",
112
+ "zod": "^4.3.5"
107
113
  }
108
114
  }