@invopop/popui 0.0.76 → 0.0.77-beta1

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 (87) hide show
  1. package/dist/AlertDialog.svelte +63 -0
  2. package/dist/AlertDialog.svelte.d.ts +28 -0
  3. package/dist/BaseDropdown.svelte +3 -1
  4. package/dist/BaseTable.svelte +43 -56
  5. package/dist/BaseTableActions.svelte +12 -2
  6. package/dist/BaseTableCellContent.svelte +64 -0
  7. package/dist/BaseTableCellContent.svelte.d.ts +24 -0
  8. package/dist/BaseTableCheckbox.svelte +28 -0
  9. package/dist/BaseTableCheckbox.svelte.d.ts +21 -0
  10. package/dist/BaseTableHeaderContent.svelte +59 -0
  11. package/dist/BaseTableHeaderContent.svelte.d.ts +21 -0
  12. package/dist/BaseTableRow.svelte +44 -41
  13. package/dist/BaseTableRow.svelte.d.ts +1 -1
  14. package/dist/CardCheckbox.svelte +8 -7
  15. package/dist/DrawerContext.svelte +1 -1
  16. package/dist/StepIconList.svelte +45 -0
  17. package/dist/StepIconList.svelte.d.ts +17 -0
  18. package/dist/alert-dialog/alert-dialog-action.svelte +21 -0
  19. package/dist/alert-dialog/alert-dialog-action.svelte.d.ts +28 -0
  20. package/dist/alert-dialog/alert-dialog-cancel.svelte +16 -0
  21. package/dist/alert-dialog/alert-dialog-cancel.svelte.d.ts +23 -0
  22. package/dist/alert-dialog/alert-dialog-content.svelte +23 -0
  23. package/dist/alert-dialog/alert-dialog-content.svelte.d.ts +17 -0
  24. package/dist/alert-dialog/alert-dialog-description.svelte +12 -0
  25. package/dist/alert-dialog/alert-dialog-description.svelte.d.ts +17 -0
  26. package/dist/alert-dialog/alert-dialog-footer.svelte +11 -0
  27. package/dist/alert-dialog/alert-dialog-footer.svelte.d.ts +17 -0
  28. package/dist/alert-dialog/alert-dialog-header.svelte +8 -0
  29. package/dist/alert-dialog/alert-dialog-header.svelte.d.ts +17 -0
  30. package/dist/alert-dialog/alert-dialog-overlay.svelte +17 -0
  31. package/dist/alert-dialog/alert-dialog-overlay.svelte.d.ts +15 -0
  32. package/dist/alert-dialog/alert-dialog-portal.svelte +6 -0
  33. package/dist/alert-dialog/alert-dialog-portal.svelte.d.ts +17 -0
  34. package/dist/alert-dialog/alert-dialog-title.svelte +10 -0
  35. package/dist/alert-dialog/alert-dialog-title.svelte.d.ts +17 -0
  36. package/dist/alert-dialog/index.d.ts +13 -0
  37. package/dist/alert-dialog/index.js +15 -0
  38. package/dist/button/button.svelte +20 -0
  39. package/dist/button/button.svelte.d.ts +16 -0
  40. package/dist/button/index.d.ts +60 -0
  41. package/dist/button/index.js +29 -0
  42. package/dist/index.d.ts +6 -2
  43. package/dist/index.js +6 -1
  44. package/dist/popui.css +1 -1
  45. package/dist/table/index.d.ts +9 -0
  46. package/dist/table/index.js +11 -0
  47. package/dist/table/table-body.svelte +8 -0
  48. package/dist/table/table-body.svelte.d.ts +17 -0
  49. package/dist/table/table-caption.svelte +8 -0
  50. package/dist/table/table-caption.svelte.d.ts +17 -0
  51. package/dist/table/table-cell.svelte +16 -0
  52. package/dist/table/table-cell.svelte.d.ts +20 -0
  53. package/dist/table/table-footer.svelte +8 -0
  54. package/dist/table/table-footer.svelte.d.ts +17 -0
  55. package/dist/table/table-head.svelte +14 -0
  56. package/dist/table/table-head.svelte.d.ts +17 -0
  57. package/dist/table/table-header.svelte +14 -0
  58. package/dist/table/table-header.svelte.d.ts +20 -0
  59. package/dist/table/table-row.svelte +17 -0
  60. package/dist/table/table-row.svelte.d.ts +23 -0
  61. package/dist/table/table.svelte +10 -0
  62. package/dist/table/table.svelte.d.ts +17 -0
  63. package/dist/tabs/index.d.ts +5 -0
  64. package/dist/tabs/index.js +7 -0
  65. package/dist/tabs/tabs-content.svelte +17 -0
  66. package/dist/tabs/tabs-content.svelte.d.ts +17 -0
  67. package/dist/tabs/tabs-list.svelte +15 -0
  68. package/dist/tabs/tabs-list.svelte.d.ts +17 -0
  69. package/dist/tabs/tabs-trigger.svelte +18 -0
  70. package/dist/tabs/tabs-trigger.svelte.d.ts +15 -0
  71. package/dist/tabs/tabs.svelte +14 -0
  72. package/dist/{Tabs.svelte.d.ts → tabs/tabs.svelte.d.ts} +5 -8
  73. package/dist/tooltip/index.d.ts +5 -0
  74. package/dist/tooltip/index.js +7 -0
  75. package/dist/tooltip/tooltip-content.svelte +25 -0
  76. package/dist/tooltip/tooltip-content.svelte.d.ts +17 -0
  77. package/dist/tw.theme.d.ts +4 -0
  78. package/dist/tw.theme.js +7 -3
  79. package/dist/types.d.ts +4 -0
  80. package/dist/utils.d.ts +13 -0
  81. package/dist/utils.js +38 -0
  82. package/package.json +5 -1
  83. package/dist/BaseTableCell.svelte +0 -91
  84. package/dist/BaseTableCell.svelte.d.ts +0 -28
  85. package/dist/BaseTableHeader.svelte +0 -68
  86. package/dist/BaseTableHeader.svelte.d.ts +0 -24
  87. package/dist/Tabs.svelte +0 -41
@@ -0,0 +1,15 @@
1
+ <script>import { Tabs as TabsPrimitive } from "bits-ui";
2
+ import { cn } from "../utils.js";
3
+ let className = void 0;
4
+ export { className as class };
5
+ </script>
6
+
7
+ <TabsPrimitive.List
8
+ class={cn(
9
+ 'bg-neutral-100 text-neutal-800 border border-neutral-200 text-base text-neutral-800 inline-flex h-7 items-center justify-center rounded-md p-0.5 w-full',
10
+ className
11
+ )}
12
+ {...$$restProps}
13
+ >
14
+ <slot />
15
+ </TabsPrimitive.List>
@@ -0,0 +1,17 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { Tabs as TabsPrimitive } from 'bits-ui';
3
+ declare const __propDef: {
4
+ props: TabsPrimitive.ListProps;
5
+ events: {
6
+ [evt: string]: CustomEvent<any>;
7
+ };
8
+ slots: {
9
+ default: {};
10
+ };
11
+ };
12
+ export type TabsListProps = typeof __propDef.props;
13
+ export type TabsListEvents = typeof __propDef.events;
14
+ export type TabsListSlots = typeof __propDef.slots;
15
+ export default class TabsList extends SvelteComponent<TabsListProps, TabsListEvents, TabsListSlots> {
16
+ }
17
+ export {};
@@ -0,0 +1,18 @@
1
+ <script>import { Tabs as TabsPrimitive } from "bits-ui";
2
+ import { cn } from "../utils.js";
3
+ let className = void 0;
4
+ export let value;
5
+ export { className as class };
6
+ </script>
7
+
8
+ <TabsPrimitive.Trigger
9
+ class={cn(
10
+ 'ring-offset-background focus-visible:ring-ring data-[state=active]:bg-white inline-flex items-center justify-center whitespace-nowrap rounded px-3 py-0.5 text-base font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm w-full',
11
+ className
12
+ )}
13
+ {value}
14
+ {...$$restProps}
15
+ on:click
16
+ >
17
+ <slot />
18
+ </TabsPrimitive.Trigger>
@@ -0,0 +1,15 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { Tabs as TabsPrimitive } from 'bits-ui';
3
+ declare const __propDef: {
4
+ props: TabsPrimitive.TriggerProps;
5
+ slots: {
6
+ default: {};
7
+ };
8
+ events: TabsPrimitive.TriggerEvents;
9
+ };
10
+ export type TabsTriggerProps = typeof __propDef.props;
11
+ export type TabsTriggerEvents = typeof __propDef.events;
12
+ export type TabsTriggerSlots = typeof __propDef.slots;
13
+ export default class TabsTrigger extends SvelteComponent<TabsTriggerProps, TabsTriggerEvents, TabsTriggerSlots> {
14
+ }
15
+ export {};
@@ -0,0 +1,14 @@
1
+ <script>import { Tabs as TabsPrimitive } from "bits-ui";
2
+ import { cn } from "../utils.js";
3
+ let className = void 0;
4
+ let value = void 0;
5
+ export { className as class, value };
6
+ </script>
7
+
8
+ <TabsPrimitive.Root
9
+ bind:value
10
+ class={cn('flex flex-col flex-1 min-h-0', className)}
11
+ {...$$restProps}
12
+ >
13
+ <slot />
14
+ </TabsPrimitive.Root>
@@ -1,16 +1,13 @@
1
1
  import { SvelteComponent } from "svelte";
2
- import type { TabItem } from './types.js';
2
+ import { Tabs as TabsPrimitive } from 'bits-ui';
3
3
  declare const __propDef: {
4
- props: {
5
- items?: TabItem[] | undefined;
6
- selected?: string | undefined;
7
- };
4
+ props: TabsPrimitive.Props;
8
5
  events: {
9
- selected: CustomEvent<any>;
10
- } & {
11
6
  [evt: string]: CustomEvent<any>;
12
7
  };
13
- slots: {};
8
+ slots: {
9
+ default: {};
10
+ };
14
11
  };
15
12
  export type TabsProps = typeof __propDef.props;
16
13
  export type TabsEvents = typeof __propDef.events;
@@ -0,0 +1,5 @@
1
+ import { Tooltip as TooltipPrimitive } from 'bits-ui';
2
+ import Content from './tooltip-content.svelte';
3
+ declare const Root: typeof TooltipPrimitive.Root;
4
+ declare const Trigger: typeof TooltipPrimitive.Trigger;
5
+ export { Root, Trigger, Content, Root as Tooltip, Content as TooltipContent, Trigger as TooltipTrigger };
@@ -0,0 +1,7 @@
1
+ import { Tooltip as TooltipPrimitive } from 'bits-ui';
2
+ import Content from './tooltip-content.svelte';
3
+ const Root = TooltipPrimitive.Root;
4
+ const Trigger = TooltipPrimitive.Trigger;
5
+ export { Root, Trigger, Content,
6
+ //
7
+ Root as Tooltip, Content as TooltipContent, Trigger as TooltipTrigger };
@@ -0,0 +1,25 @@
1
+ <script>import { Tooltip as TooltipPrimitive } from "bits-ui";
2
+ import { cn, flyAndScale } from "../utils.js";
3
+ let className = void 0;
4
+ export let sideOffset = 4;
5
+ export let transition = flyAndScale;
6
+ export let transitionConfig = {
7
+ y: 8,
8
+ duration: 150
9
+ };
10
+ export { className as class };
11
+ </script>
12
+
13
+ <TooltipPrimitive.Content
14
+ {transition}
15
+ {transitionConfig}
16
+ {sideOffset}
17
+ class={cn(
18
+ 'bg-neutral-700 text-white-80 z-50 rounded-md px-3 py-2 text-base font-medium shadow-md',
19
+ className
20
+ )}
21
+ {...$$restProps}
22
+ >
23
+ <slot />
24
+ <TooltipPrimitive.Arrow />
25
+ </TooltipPrimitive.Content>
@@ -0,0 +1,17 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { Tooltip as TooltipPrimitive } from 'bits-ui';
3
+ declare const __propDef: {
4
+ props: TooltipPrimitive.ContentProps;
5
+ events: {
6
+ [evt: string]: CustomEvent<any>;
7
+ };
8
+ slots: {
9
+ default: {};
10
+ };
11
+ };
12
+ export type TooltipContentProps = typeof __propDef.props;
13
+ export type TooltipContentEvents = typeof __propDef.events;
14
+ export type TooltipContentSlots = typeof __propDef.slots;
15
+ export default class TooltipContent extends SvelteComponent<TooltipContentProps, TooltipContentEvents, TooltipContentSlots> {
16
+ }
17
+ export {};
@@ -26,6 +26,8 @@ declare namespace _default {
26
26
  100: string;
27
27
  200: string;
28
28
  500: string;
29
+ 600: string;
30
+ 700: string;
29
31
  };
30
32
  }
31
33
  let positive: {
@@ -43,6 +45,8 @@ declare namespace _default {
43
45
  300: string;
44
46
  400: string;
45
47
  500: string;
48
+ 600: string;
49
+ 700: string;
46
50
  };
47
51
  let neutral: {
48
52
  50: string;
package/dist/tw.theme.js CHANGED
@@ -29,7 +29,9 @@ export default {
29
29
  50: 'color-mix(in lab, transparent 95%, var(--workspace-accent-color, #169958))',
30
30
  100: 'color-mix(in lab, transparent 90%, var(--workspace-accent-color, #169958))',
31
31
  200: 'color-mix(in lab, transparent 80%, var(--workspace-accent-color, #169958))',
32
- 500: 'var(--workspace-accent-color, #169958)'
32
+ 500: 'var(--workspace-accent-color, #169958)',
33
+ 600: 'color-mix(in lab, black 16%, var(--workspace-accent-color, #169958))',
34
+ 700: 'color-mix(in lab, black 32%, var(--workspace-accent-color, #169958))'
33
35
  }
34
36
  },
35
37
  positive: {
@@ -46,7 +48,9 @@ export default {
46
48
  200: 'rgba(201, 45, 69, 0.2)',
47
49
  300: 'rgba(201, 45, 69, 0.3)',
48
50
  400: 'rgba(201, 45, 69, 0.4)',
49
- 500: '#C92D45'
51
+ 500: '#C92D45',
52
+ 600: '#A9263A',
53
+ 700: '#891F2F'
50
54
  },
51
55
  neutral: {
52
56
  50: '#F9FAFB',
@@ -125,7 +129,7 @@ export default {
125
129
  boxShadow: {
126
130
  active:
127
131
  '0px 0px 0px 2px color-mix(in lab, transparent 88%, var(--workspace-accent-color, #169958))',
128
- warning: '0px 0px 0px 2px rgba(215, 135, 0, 0.12)'
132
+ warning: '0px 0px 0px 2px rgba(215, 135, 0, 0.12)'
129
133
  },
130
134
 
131
135
  letterSpacing: {
package/dist/types.d.ts CHANGED
@@ -133,3 +133,7 @@ export type Breadcrumb = {
133
133
  url?: string;
134
134
  country?: string;
135
135
  };
136
+ export type StepIcon = {
137
+ name: string;
138
+ url: string;
139
+ };
@@ -0,0 +1,13 @@
1
+ /// <reference types="svelte" />
2
+ import type { ClassValue } from 'clsx';
3
+ import type { TransitionConfig } from 'svelte/transition';
4
+ type FlyAndScaleParams = {
5
+ y?: number;
6
+ x?: number;
7
+ start?: number;
8
+ duration?: number;
9
+ };
10
+ export declare function cn(...inputs: ClassValue[]): string;
11
+ export declare function styleToString(style: Record<string, number | string | undefined>): string;
12
+ export declare function flyAndScale(node: Element, params?: FlyAndScaleParams): TransitionConfig;
13
+ export {};
package/dist/utils.js ADDED
@@ -0,0 +1,38 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ import { cubicOut } from 'svelte/easing';
4
+ export function cn(...inputs) {
5
+ return twMerge(clsx(inputs));
6
+ }
7
+ export function styleToString(style) {
8
+ return Object.keys(style).reduce((str, key) => {
9
+ if (style[key] === undefined)
10
+ return str;
11
+ return `${str}${key}:${style[key]};`;
12
+ }, '');
13
+ }
14
+ export function flyAndScale(node, params = { y: -8, x: 0, start: 0.95, duration: 150 }) {
15
+ const style = getComputedStyle(node);
16
+ const transform = style.transform === 'none' ? '' : style.transform;
17
+ const scaleConversion = (valueA, scaleA, scaleB) => {
18
+ const [minA, maxA] = scaleA;
19
+ const [minB, maxB] = scaleB;
20
+ const percentage = (valueA - minA) / (maxA - minA);
21
+ const valueB = percentage * (maxB - minB) + minB;
22
+ return valueB;
23
+ };
24
+ return {
25
+ duration: params.duration ?? 200,
26
+ delay: 0,
27
+ css: (t) => {
28
+ const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]);
29
+ const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]);
30
+ const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]);
31
+ return styleToString({
32
+ transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`,
33
+ opacity: t
34
+ });
35
+ },
36
+ easing: cubicOut
37
+ };
38
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@invopop/popui",
3
3
  "license": "MIT",
4
- "version": "0.0.76",
4
+ "version": "0.0.77-beta1",
5
5
  "scripts": {
6
6
  "dev": "vite dev",
7
7
  "build": "vite build && npm run package",
@@ -71,6 +71,7 @@
71
71
  "svelte": "^4.0.5",
72
72
  "svelte-check": "^3.4.3",
73
73
  "svelte-headlessui": "^0.0.32",
74
+ "tailwind-merge": "^3.0.2",
74
75
  "tailwindcss": "^3.4.16",
75
76
  "tslib": "^2.4.1",
76
77
  "typescript": "^4.1.6",
@@ -92,6 +93,7 @@
92
93
  "@twind/preset-tailwind-forms": "^1.1.2",
93
94
  "@twind/with-web-components": "^1.1.3",
94
95
  "@types/flatpickr": "^3.1.2",
96
+ "bits-ui": "^0.22.0",
95
97
  "clsx": "^2.0.0",
96
98
  "date-fns": "^2.30.0",
97
99
  "dayjs": "^1.11.10",
@@ -99,8 +101,10 @@
99
101
  "inter-ui": "^3.19.3",
100
102
  "svelte-floating-ui": "^1.5.8",
101
103
  "svelte-intersection-observer-action": "^0.0.4",
104
+ "svelte-portal": "^2.2.1",
102
105
  "svelte-transition": "^0.0.10",
103
106
  "svelte-viewport-info": "^1.0.2",
107
+ "tailwind-variants": "^1.0.0",
104
108
  "twind": "^0.16.19"
105
109
  }
106
110
  }
@@ -1,91 +0,0 @@
1
- <script>import Viewport from "svelte-viewport-info";
2
- import clsx from "clsx";
3
- import TagStatus from "./TagStatus.svelte";
4
- import FeedIconStatus from "./FeedIconStatus.svelte";
5
- import BaseFlag from "./BaseFlag.svelte";
6
- import { getCountryName } from "./helpers.js";
7
- import UuidCopy from "./UuidCopy.svelte";
8
- import { Icon } from "@steeze-ui/svelte-icon";
9
- export let field;
10
- export let isFirst = false;
11
- export let isLast = false;
12
- export let badge = null;
13
- export let status = null;
14
- export let icons = null;
15
- export let data = "";
16
- export let tag = "td";
17
- export let selectable = false;
18
- export let hasActions = false;
19
- $:
20
- isSelectableFirst = isFirst && selectable;
21
- $:
22
- cellStyles = clsx(
23
- { "tabular-nums slashed-zero lining-nums": field.monospacedNums },
24
- { "font-mono": field.monospaced },
25
- { "whitespace-nowrap": field.nowrap },
26
- { "text-neutral-800 font-medium": isFirst && !field.grayed },
27
- { "text-neutral-800 md:text-neutral-500": !isFirst || field.grayed },
28
- { "md:text-right": field.rightAlign },
29
- { "pl-5": isFirst && !selectable },
30
- { "pl-3": !isFirst && !isSelectableFirst },
31
- { "pr-5": isLast && !hasActions },
32
- { "pr-3": !isLast || hasActions },
33
- { "px-2": (!isFirst || !selectable) && !field.noPadding },
34
- { "px-0": field.noPadding }
35
- );
36
- $:
37
- isMobile = Viewport.Width < 769;
38
- </script>
39
-
40
- <svelte:element this={tag} class="{cellStyles} text-base tracking-normal py-2">
41
- <div class="flex flex-col">
42
- <span class="md:hidden text-sm text-neutral-600 font-normal">
43
- {field.headerLabel}
44
- </span>
45
- <span class="flex items-center" class:justify-end={field.rightAlign}>
46
- {#if field.isCountry && data}
47
- <span class="flex items-center space-x-1">
48
- <BaseFlag country={String(data)} width={16} />
49
- <span>{getCountryName(String(data))}</span>
50
- </span>
51
- {:else if field.copy && data}
52
- <UuidCopy
53
- rightAlign={isMobile ? false : field.rightAlign}
54
- uuid={String(data)}
55
- prefixLength={4}
56
- suffixLength={4}
57
- full
58
- compact
59
- dark={isMobile}
60
- on:copied
61
- />
62
- {:else}
63
- <span class="hidden md:inline">{data}</span>
64
- <span class="md:hidden">{data ? data : badge || status ? '' : '-'}</span>
65
- {/if}
66
- {#if badge}
67
- <span class:ml-2={!!data}>
68
- <TagStatus label={badge.label} status={badge.status} dot={Boolean(badge.dot)} />
69
- </span>
70
- {/if}
71
- {#if status}
72
- <span class:ml-2={!!data}>
73
- <FeedIconStatus {status} />
74
- </span>
75
- {/if}
76
- {#if icons}
77
- <span class:ml-2={!!data} class="flex items-center gap-1 flex-shrink-0">
78
- {#each icons as icon}
79
- <div class="border border-neutral-200 rounded-md p-px">
80
- {#if typeof icon === 'string'}
81
- <img alt="icon" src={icon} class="h-4 w-4" />
82
- {:else}
83
- <Icon src={icon} class="h-4 w-4" />
84
- {/if}
85
- </div>
86
- {/each}
87
- </span>
88
- {/if}
89
- </span>
90
- </div>
91
- </svelte:element>
@@ -1,28 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { Badge, FeedItemStatus, TableField, TableIcon } from './types.js';
3
- declare const __propDef: {
4
- props: {
5
- field: TableField;
6
- isFirst?: boolean | undefined;
7
- isLast?: boolean | undefined;
8
- badge?: Badge | null | undefined;
9
- status?: FeedItemStatus | null | undefined;
10
- icons?: TableIcon[] | null | undefined;
11
- data?: unknown;
12
- tag?: string | undefined;
13
- selectable?: boolean | undefined;
14
- hasActions?: boolean | undefined;
15
- };
16
- events: {
17
- copied: CustomEvent<any>;
18
- } & {
19
- [evt: string]: CustomEvent<any>;
20
- };
21
- slots: {};
22
- };
23
- export type BaseTableCellProps = typeof __propDef.props;
24
- export type BaseTableCellEvents = typeof __propDef.events;
25
- export type BaseTableCellSlots = typeof __propDef.slots;
26
- export default class BaseTableCell extends SvelteComponent<BaseTableCellProps, BaseTableCellEvents, BaseTableCellSlots> {
27
- }
28
- export {};
@@ -1,68 +0,0 @@
1
- <script>import clsx from "clsx";
2
- import { createEventDispatcher } from "svelte";
3
- import BaseDropdown from "./BaseDropdown.svelte";
4
- import BaseTableHeaderSortBy from "./BaseTableHeaderSortBy.svelte";
5
- const dispatch = createEventDispatcher();
6
- let sortDropdown;
7
- export let field;
8
- export let sortBy = "";
9
- export let sortDirection;
10
- export let isFirst = false;
11
- export let isLast = false;
12
- export let selectable = false;
13
- $:
14
- headerStyles = clsx({
15
- "hover:bg-neutral-50 focus:bg-neutral-100": field.sortable,
16
- "pl-5": isFirst && !selectable,
17
- "pl-2": !isFirst,
18
- "pr-5": isLast,
19
- "pr-2": !isLast
20
- });
21
- function handleSortBy(event) {
22
- sortDirection = event.detail;
23
- dispatch("orderBy", { field: field.slug, direction: sortDirection });
24
- sortDropdown.toggle();
25
- }
26
- </script>
27
-
28
- <th scope="col" class="bg-white text-neutral-500 group sticky z-10 top-0 h-9 box-border p-0">
29
- <span class="flex border-b border-neutral-100" class:justify-end={field.rightAlign}>
30
- {#if field.sortable}
31
- <BaseDropdown bind:this={sortDropdown} fullWidth>
32
- <span
33
- slot="trigger"
34
- class="{headerStyles} w-full py-2 flex items-center justify-start space-x-1 text-left text-base tracking-normal whitespace-nowrap font-normal"
35
- >
36
- <span class="w-full" class:text-right={field.rightAlign}>{field.headerLabel}</span>
37
- {#if sortBy === field.slug}
38
- <svg
39
- viewBox="0 0 12 12"
40
- fill="none"
41
- xmlns="http://www.w3.org/2000/svg"
42
- class:rotate-180={sortDirection === 'asc'}
43
- class="mt-px text-neutral-400 h-3 w-3"
44
- >
45
- <path
46
- fill-rule="evenodd"
47
- clip-rule="evenodd"
48
- d="M6.56519 8.8272L7.9966 7.39579L8.7037 8.1029L6.41082 10.3958L6.05726 10.7493L5.70371 10.3958L3.41082 8.1029L4.11793 7.39579L5.56507 8.84293L5.61453 1.24609L6.61451 1.2526L6.56519 8.8272Z"
49
- fill="currentColor"
50
- />
51
- </svg>
52
- {/if}
53
- </span>
54
- <BaseTableHeaderSortBy
55
- {sortDirection}
56
- isActive={sortBy === field.slug}
57
- on:sortBy={handleSortBy}
58
- />
59
- </BaseDropdown>
60
- {:else}
61
- <div
62
- class="{headerStyles} py-2 text-left text-base font-normal tracking-normal whitespace-nowrap"
63
- >
64
- <div class="h-5">{field.headerLabel}</div>
65
- </div>
66
- {/if}
67
- </span>
68
- </th>
@@ -1,24 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { TableField, TableSortBy } from './types.js';
3
- declare const __propDef: {
4
- props: {
5
- field: TableField;
6
- sortBy?: string | undefined;
7
- sortDirection: TableSortBy;
8
- isFirst?: boolean | undefined;
9
- isLast?: boolean | undefined;
10
- selectable?: boolean | undefined;
11
- };
12
- events: {
13
- orderBy: CustomEvent<any>;
14
- } & {
15
- [evt: string]: CustomEvent<any>;
16
- };
17
- slots: {};
18
- };
19
- export type BaseTableHeaderProps = typeof __propDef.props;
20
- export type BaseTableHeaderEvents = typeof __propDef.events;
21
- export type BaseTableHeaderSlots = typeof __propDef.slots;
22
- export default class BaseTableHeader extends SvelteComponent<BaseTableHeaderProps, BaseTableHeaderEvents, BaseTableHeaderSlots> {
23
- }
24
- export {};
package/dist/Tabs.svelte DELETED
@@ -1,41 +0,0 @@
1
- <script>import { createTabs } from "svelte-headlessui";
2
- import BaseCounter from "./BaseCounter.svelte";
3
- import { Icon } from "@steeze-ui/svelte-icon";
4
- import { Alert, Success } from "@invopop/ui-icons";
5
- import { createEventDispatcher } from "svelte";
6
- const dispatch = createEventDispatcher();
7
- export let items = [];
8
- export let selected = "";
9
- const tabs = createTabs({ selected: items.find((i) => i.slug === selected) || items[0] });
10
- </script>
11
-
12
- <div
13
- use:tabs.list
14
- class="inline-flex space-x-0.5 rounded-md border p-0.5 border-neutral-200 bg-neutral-100 w-full"
15
- >
16
- {#each items as value}
17
- <button
18
- use:tabs.tab={{ value }}
19
- class:bg-white={selected === value.slug}
20
- class="flex items-center space-x-1 justify-center w-full whitespace-nowrap text-neutral-800 text-base font-medium focus:outline-none focus:ring-0 py-0.5 px-3 rounded"
21
- on:click={() => {
22
- selected = value.slug
23
- dispatch('selected', selected)
24
- }}
25
- >
26
- <span class="tracking-tighter">{value.label}</span>
27
- {#if value.counter}
28
- <BaseCounter
29
- content={value.counter}
30
- variant={selected === value.slug ? 'light' : 'default'}
31
- />
32
- {/if}
33
- {#if value.check}
34
- <Icon src={Success} class="h-4 w-4" />
35
- {/if}
36
- {#if value.warning}
37
- <Icon src={Alert} class="h-4 w-4" />
38
- {/if}
39
- </button>
40
- {/each}
41
- </div>