compote-ui 0.31.1 → 0.33.0

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 (60) hide show
  1. package/dist/components/checkbox/checkbox.svelte +34 -9
  2. package/dist/components/checkbox/checkbox.types.d.ts +5 -2
  3. package/dist/components/data-table/core/cells.d.ts +78 -0
  4. package/dist/components/data-table/core/cells.js +66 -0
  5. package/dist/components/data-table/core/create-table.svelte.d.ts +24 -0
  6. package/dist/components/data-table/core/create-table.svelte.js +74 -0
  7. package/dist/components/data-table/core/index.d.ts +3 -0
  8. package/dist/components/data-table/core/index.js +2 -0
  9. package/dist/components/data-table/data-table-column-visibility.svelte +79 -0
  10. package/dist/components/data-table/data-table-column-visibility.svelte.d.ts +29 -0
  11. package/dist/components/data-table/data-table-filters.svelte +285 -0
  12. package/dist/components/data-table/data-table-filters.svelte.d.ts +29 -0
  13. package/dist/components/data-table/data-table-title.svelte +16 -0
  14. package/dist/components/data-table/data-table-title.svelte.d.ts +10 -0
  15. package/dist/components/data-table/data-table-toolbar.svelte +16 -0
  16. package/dist/components/data-table/data-table-toolbar.svelte.d.ts +10 -0
  17. package/dist/components/data-table/data-table.svelte +342 -0
  18. package/dist/components/data-table/data-table.svelte.d.ts +32 -0
  19. package/dist/components/data-table/index.d.ts +7 -0
  20. package/dist/components/data-table/index.js +7 -0
  21. package/dist/components/field/field-input.svelte +8 -6
  22. package/dist/components/number-input/number-input.svelte +3 -0
  23. package/dist/components/popover/index.d.ts +6 -0
  24. package/dist/components/popover/index.js +6 -0
  25. package/dist/components/popover/popover-close-trigger.svelte +25 -0
  26. package/dist/components/popover/popover-close-trigger.svelte.d.ts +8 -0
  27. package/dist/components/popover/popover-content.svelte +71 -0
  28. package/dist/components/popover/popover-content.svelte.d.ts +10 -0
  29. package/dist/components/popover/popover-description.svelte +15 -0
  30. package/dist/components/popover/popover-description.svelte.d.ts +8 -0
  31. package/dist/components/popover/popover-root.svelte +24 -0
  32. package/dist/components/popover/popover-root.svelte.d.ts +11 -0
  33. package/dist/components/popover/popover-title.svelte +15 -0
  34. package/dist/components/popover/popover-title.svelte.d.ts +8 -0
  35. package/dist/components/popover/popover-trigger.svelte +17 -0
  36. package/dist/components/popover/popover-trigger.svelte.d.ts +10 -0
  37. package/dist/components/scroll-area/scroll-area-content.svelte +1 -1
  38. package/dist/components/toggle/toggle.svelte +17 -0
  39. package/dist/components/toggle/toggle.svelte.d.ts +4 -0
  40. package/dist/components/toggle/toggle.variants.d.ts +21 -0
  41. package/dist/components/toggle/toggle.variants.js +12 -0
  42. package/dist/components/toggle/types.d.ts +8 -0
  43. package/dist/components/toggle/types.js +1 -0
  44. package/dist/components/toggle-group/toggle-group-context.d.ts +8 -0
  45. package/dist/components/toggle-group/toggle-group-context.js +2 -0
  46. package/dist/components/toggle-group/toggle-group-item.svelte +7 -6
  47. package/dist/components/toggle-group/toggle-group-item.svelte.d.ts +2 -0
  48. package/dist/components/toggle-group/toggle-group.svelte +17 -2
  49. package/dist/components/toggle-group/toggle-group.svelte.d.ts +2 -0
  50. package/dist/components/tooltip/tooltip-trigger.svelte +2 -4
  51. package/dist/components/tooltip/tooltip-trigger.svelte.d.ts +2 -4
  52. package/dist/components/tree-view/tree-view.svelte +1 -1
  53. package/dist/icons/PhArrowSquareOut.svelte +18 -0
  54. package/dist/icons/PhArrowSquareOut.svelte.d.ts +5 -0
  55. package/dist/icons/index.d.ts +1 -0
  56. package/dist/icons/index.js +1 -0
  57. package/dist/index.d.ts +3 -0
  58. package/dist/index.js +2 -0
  59. package/dist/theme.css +1 -1
  60. package/package.json +12 -1
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import { Popover } from '@ark-ui/svelte/popover';
3
+ import type { PopoverTriggerBaseProps } from '@ark-ui/svelte/popover';
4
+ import type { ClassValue } from 'svelte/elements';
5
+ import type { Snippet } from 'svelte';
6
+
7
+ interface Props extends PopoverTriggerBaseProps {
8
+ class?: ClassValue;
9
+ children: Snippet;
10
+ }
11
+
12
+ let { class: className, children, ...restProps }: Props = $props();
13
+ </script>
14
+
15
+ <Popover.Trigger class={className} {...restProps}>
16
+ {@render children()}
17
+ </Popover.Trigger>
@@ -0,0 +1,10 @@
1
+ import type { PopoverTriggerBaseProps } from '@ark-ui/svelte/popover';
2
+ import type { ClassValue } from 'svelte/elements';
3
+ import type { Snippet } from 'svelte';
4
+ interface Props extends PopoverTriggerBaseProps {
5
+ class?: ClassValue;
6
+ children: Snippet;
7
+ }
8
+ declare const PopoverTrigger: import("svelte").Component<Props, {}, "">;
9
+ type PopoverTrigger = ReturnType<typeof PopoverTrigger>;
10
+ export default PopoverTrigger;
@@ -10,6 +10,6 @@
10
10
  let { class: className, children, ...rest }: Props = $props();
11
11
  </script>
12
12
 
13
- <ScrollArea.Content {...rest} class={cn('pe-3', className)}>
13
+ <ScrollArea.Content {...rest} class={cn('py-3 ps-4 pe-6', className)}>
14
14
  {@render children?.()}
15
15
  </ScrollArea.Content>
@@ -0,0 +1,17 @@
1
+ <script lang="ts">
2
+ import { Toggle as ArkToggle } from '@ark-ui/svelte/toggle';
3
+ import type { ToggleProps } from './types';
4
+ import { toggle } from './toggle.variants';
5
+
6
+ let {
7
+ class: className,
8
+ children,
9
+ pressed = $bindable(),
10
+ size,
11
+ ...rootProps
12
+ }: ToggleProps = $props();
13
+ </script>
14
+
15
+ <ArkToggle.Root {...rootProps} bind:pressed class={toggle({ size, class: className as never })}>
16
+ {@render children?.()}
17
+ </ArkToggle.Root>
@@ -0,0 +1,4 @@
1
+ import type { ToggleProps } from './types';
2
+ declare const Toggle: import("svelte").Component<ToggleProps, {}, "pressed">;
3
+ type Toggle = ReturnType<typeof Toggle>;
4
+ export default Toggle;
@@ -0,0 +1,21 @@
1
+ import { type VariantProps } from 'tailwind-variants';
2
+ export declare const toggle: import("tailwind-variants").TVReturnType<{
3
+ size: {
4
+ sm: string;
5
+ md: string;
6
+ lg: string;
7
+ };
8
+ }, undefined, "inline-flex cursor-pointer items-center justify-center rounded-md font-medium text-ink-dim transition-colors select-none hover:bg-surface-2 hover:text-ink focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none data-disabled:cursor-not-allowed data-disabled:opacity-50 data-pressed:bg-surface-2 data-pressed:text-ink data-pressed:shadow-sm data-[state=on]:bg-surface-2 data-[state=on]:text-ink data-[state=on]:shadow-sm [&_svg]:shrink-0", {
9
+ size: {
10
+ sm: string;
11
+ md: string;
12
+ lg: string;
13
+ };
14
+ }, undefined, import("tailwind-variants").TVReturnType<{
15
+ size: {
16
+ sm: string;
17
+ md: string;
18
+ lg: string;
19
+ };
20
+ }, undefined, "inline-flex cursor-pointer items-center justify-center rounded-md font-medium text-ink-dim transition-colors select-none hover:bg-surface-2 hover:text-ink focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none data-disabled:cursor-not-allowed data-disabled:opacity-50 data-pressed:bg-surface-2 data-pressed:text-ink data-pressed:shadow-sm data-[state=on]:bg-surface-2 data-[state=on]:text-ink data-[state=on]:shadow-sm [&_svg]:shrink-0", unknown, unknown, undefined>>;
21
+ export type ToggleSize = NonNullable<VariantProps<typeof toggle>['size']>;
@@ -0,0 +1,12 @@
1
+ import { tv } from 'tailwind-variants';
2
+ export const toggle = tv({
3
+ base: 'inline-flex cursor-pointer items-center justify-center rounded-md font-medium text-ink-dim transition-colors select-none hover:bg-surface-2 hover:text-ink focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none data-disabled:cursor-not-allowed data-disabled:opacity-50 data-pressed:bg-surface-2 data-pressed:text-ink data-pressed:shadow-sm data-[state=on]:bg-surface-2 data-[state=on]:text-ink data-[state=on]:shadow-sm [&_svg]:shrink-0',
4
+ variants: {
5
+ size: {
6
+ sm: 'h-7 min-w-7 gap-1 px-1.5 text-xs [&_svg]:size-3.5',
7
+ md: 'h-8 min-w-8 gap-1.5 px-2 text-sm [&_svg]:size-4',
8
+ lg: 'h-10 min-w-10 gap-2 px-2.5 text-sm [&_svg]:size-5'
9
+ }
10
+ },
11
+ defaultVariants: { size: 'md' }
12
+ });
@@ -0,0 +1,8 @@
1
+ import type { ToggleRootProps } from '@ark-ui/svelte/toggle';
2
+ import type { ClassValue } from 'svelte/elements';
3
+ import type { ToggleSize } from './toggle.variants';
4
+ export interface ToggleProps extends ToggleRootProps {
5
+ class?: ClassValue | null;
6
+ size?: ToggleSize;
7
+ }
8
+ export type { ToggleSize };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { ToggleSize } from '../toggle/toggle.variants';
2
+ export declare const getToggleGroupContext: () => {
3
+ readonly size: ToggleSize;
4
+ }, setToggleGroupContext: (context: {
5
+ readonly size: ToggleSize;
6
+ }) => {
7
+ readonly size: ToggleSize;
8
+ };
@@ -0,0 +1,2 @@
1
+ import { createContext } from 'svelte';
2
+ export const [getToggleGroupContext, setToggleGroupContext] = createContext();
@@ -1,22 +1,23 @@
1
1
  <script lang="ts">
2
2
  import { ToggleGroup } from '@ark-ui/svelte/toggle-group';
3
3
  import type { ToggleGroupItemBaseProps } from '@ark-ui/svelte/toggle-group';
4
- import { cn } from 'tailwind-variants';
5
4
  import type { ClassValue } from 'svelte/elements';
5
+ import { toggle, type ToggleSize } from '../toggle/toggle.variants';
6
+ import { getToggleGroupContext } from './toggle-group-context';
6
7
 
7
8
  interface Props extends ToggleGroupItemBaseProps {
8
9
  class?: ClassValue | null;
10
+ size?: ToggleSize;
9
11
  }
10
12
 
11
- let { class: className, children, ...rest }: Props = $props();
13
+ let { class: className, children, size, ...rest }: Props = $props();
14
+ const groupContext = getToggleGroupContext();
15
+ const itemSize = $derived(size ?? groupContext.size);
12
16
  </script>
13
17
 
14
18
  <ToggleGroup.Item
15
19
  {...rest}
16
- class={cn(
17
- 'inline-flex h-8 min-w-8 items-center justify-center rounded-md text-sm text-ink-dim transition-colors select-none hover:bg-surface-2 hover:text-ink focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none data-disabled:cursor-not-allowed data-disabled:opacity-50 data-[state=on]:bg-surface-2 data-[state=on]:text-ink data-[state=on]:shadow-sm',
18
- className as never
19
- )}
20
+ class={toggle({ size: itemSize, class: ['rounded-none', className] as never })}
20
21
  >
21
22
  {@render children?.()}
22
23
  </ToggleGroup.Item>
@@ -1,7 +1,9 @@
1
1
  import type { ToggleGroupItemBaseProps } from '@ark-ui/svelte/toggle-group';
2
2
  import type { ClassValue } from 'svelte/elements';
3
+ import { type ToggleSize } from '../toggle/toggle.variants';
3
4
  interface Props extends ToggleGroupItemBaseProps {
4
5
  class?: ClassValue | null;
6
+ size?: ToggleSize;
5
7
  }
6
8
  declare const ToggleGroupItem: import("svelte").Component<Props, {}, "">;
7
9
  type ToggleGroupItem = ReturnType<typeof ToggleGroupItem>;
@@ -2,19 +2,34 @@
2
2
  import { ToggleGroup } from '@ark-ui/svelte/toggle-group';
3
3
  import type { ToggleGroupRootBaseProps } from '@ark-ui/svelte/toggle-group';
4
4
  import { cn } from 'tailwind-variants';
5
+ import type { ToggleSize } from '../toggle/toggle.variants';
6
+ import { setToggleGroupContext } from './toggle-group-context';
5
7
 
6
8
  interface Props extends ToggleGroupRootBaseProps {
7
9
  class?: string;
10
+ size?: ToggleSize;
8
11
  }
9
12
 
10
- let { class: className, children, value = $bindable(), ...rootProps }: Props = $props();
13
+ let {
14
+ class: className,
15
+ children,
16
+ value = $bindable(),
17
+ size = 'md',
18
+ ...rootProps
19
+ }: Props = $props();
20
+
21
+ setToggleGroupContext({
22
+ get size() {
23
+ return size;
24
+ }
25
+ });
11
26
  </script>
12
27
 
13
28
  <ToggleGroup.Root
14
29
  {...rootProps}
15
30
  bind:value
16
31
  class={cn(
17
- 'inline-flex gap-px rounded-lg border border-border p-0.5 data-[orientation=vertical]:flex-col',
32
+ 'inline-flex w-fit rounded border border-border data-[orientation=vertical]:flex-col [&>:not([hidden])~:not([hidden])]:border-border data-[orientation=horizontal]:[&>:not([hidden])~:not([hidden])]:border-s data-[orientation=horizontal]:[&>:not([hidden])~:not([hidden])]:border-e-0 data-[orientation=vertical]:[&>:not([hidden])~:not([hidden])]:border-t data-[orientation=vertical]:[&>:not([hidden])~:not([hidden])]:border-b-0',
18
33
  className
19
34
  )}
20
35
  >
@@ -1,7 +1,9 @@
1
1
  import { ToggleGroup } from '@ark-ui/svelte/toggle-group';
2
2
  import type { ToggleGroupRootBaseProps } from '@ark-ui/svelte/toggle-group';
3
+ import type { ToggleSize } from '../toggle/toggle.variants';
3
4
  interface Props extends ToggleGroupRootBaseProps {
4
5
  class?: string;
6
+ size?: ToggleSize;
5
7
  }
6
8
  declare const ToggleGroup: import("svelte").Component<Props, {}, "value">;
7
9
  type ToggleGroup = ReturnType<typeof ToggleGroup>;
@@ -1,14 +1,12 @@
1
1
  <script lang="ts">
2
2
  import { Tooltip } from '@ark-ui/svelte/tooltip';
3
- import type { TooltipTriggerBaseProps } from '@ark-ui/svelte/tooltip';
4
- import type { Snippet } from 'svelte';
3
+ import type { TooltipTriggerProps } from '@ark-ui/svelte/tooltip';
5
4
  import { button, type ButtonSize, type ButtonVariant } from '../button/button.variants';
6
5
 
7
- type Props = TooltipTriggerBaseProps & {
6
+ type Props = Omit<TooltipTriggerProps, 'class'> & {
8
7
  variant?: ButtonVariant;
9
8
  size?: ButtonSize;
10
9
  class?: string;
11
- children?: Snippet;
12
10
  };
13
11
 
14
12
  const {
@@ -1,11 +1,9 @@
1
- import type { TooltipTriggerBaseProps } from '@ark-ui/svelte/tooltip';
2
- import type { Snippet } from 'svelte';
1
+ import type { TooltipTriggerProps } from '@ark-ui/svelte/tooltip';
3
2
  import { type ButtonSize, type ButtonVariant } from '../button/button.variants';
4
- type Props = TooltipTriggerBaseProps & {
3
+ type Props = Omit<TooltipTriggerProps, 'class'> & {
5
4
  variant?: ButtonVariant;
6
5
  size?: ButtonSize;
7
6
  class?: string;
8
- children?: Snippet;
9
7
  };
10
8
  declare const TooltipTrigger: import("svelte").Component<Props, {}, "">;
11
9
  type TooltipTrigger = ReturnType<typeof TooltipTrigger>;
@@ -112,7 +112,7 @@
112
112
  {#snippet render(tree)}
113
113
  <Button
114
114
  variant="outline"
115
- size="icon"
115
+ size="icon-lg"
116
116
  title="Collapse all"
117
117
  onclick={() => tree().collapse()}
118
118
  >
@@ -0,0 +1,18 @@
1
+ <script lang="ts">
2
+ let { class: className = '', ...restProps } = $props();
3
+ </script>
4
+
5
+ <svg
6
+ xmlns="http://www.w3.org/2000/svg"
7
+ width="1em"
8
+ height="1em"
9
+ viewBox="0 0 256 256"
10
+ class={className}
11
+ {...restProps}
12
+ >
13
+ <path
14
+ fill="currentColor"
15
+ d="M224 104a8 8 0 0 1-16 0V59.32l-66.33 66.34a8 8 0 0 1-11.32-11.32L196.68 48H152a8 8 0 0 1 0-16h64a8 8 0 0 1 8 8Zm-40 24a8 8 0 0 0-8 8v72H48V80h72a8 8 0 0 0 0-16H48a16 16 0 0 0-16 16v128a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-72a8 8 0 0 0-8-8"
16
+ />
17
+ </svg>
18
+ <!-- Icon from Phosphor by Phosphor Icons - https://github.com/phosphor-icons/core/blob/main/LICENSE -->
@@ -0,0 +1,5 @@
1
+ declare const PhArrowSquareOut: import("svelte").Component<{
2
+ class?: string;
3
+ } & Record<string, any>, {}, "">;
4
+ type PhArrowSquareOut = ReturnType<typeof PhArrowSquareOut>;
5
+ export default PhArrowSquareOut;
@@ -2,6 +2,7 @@ export { default as PhArrowClockwise } from './PhArrowClockwise.svelte';
2
2
  export { default as PhArrowCounterClockwise } from './PhArrowCounterClockwise.svelte';
3
3
  export { default as PhArrowLeft } from './PhArrowLeft.svelte';
4
4
  export { default as PhArrowRight } from './PhArrowRight.svelte';
5
+ export { default as PhArrowSquareOut } from './PhArrowSquareOut.svelte';
5
6
  export { default as PhArrowsInSimple } from './PhArrowsInSimple.svelte';
6
7
  export { default as PhCaretDown } from './PhCaretDown.svelte';
7
8
  export { default as PhCaretRight } from './PhCaretRight.svelte';
@@ -2,6 +2,7 @@ export { default as PhArrowClockwise } from './PhArrowClockwise.svelte';
2
2
  export { default as PhArrowCounterClockwise } from './PhArrowCounterClockwise.svelte';
3
3
  export { default as PhArrowLeft } from './PhArrowLeft.svelte';
4
4
  export { default as PhArrowRight } from './PhArrowRight.svelte';
5
+ export { default as PhArrowSquareOut } from './PhArrowSquareOut.svelte';
5
6
  export { default as PhArrowsInSimple } from './PhArrowsInSimple.svelte';
6
7
  export { default as PhCaretDown } from './PhCaretDown.svelte';
7
8
  export { default as PhCaretRight } from './PhCaretRight.svelte';
package/dist/index.d.ts CHANGED
@@ -25,11 +25,14 @@ export type { ImageCropDialogProps } from './components/image-crop-dialog/types'
25
25
  export * as Listbox from './components/listbox';
26
26
  export { default as NumberInput } from './components/number-input/number-input.svelte';
27
27
  export type { NumberInputProps } from './components/number-input/types';
28
+ export * as Popover from './components/popover';
28
29
  export { default as Select } from './components/select/select.svelte';
29
30
  export { default as Splitter } from './components/splitter/splitter.svelte';
30
31
  export type { SplitterPanelConfig, SplitterProps } from './components/splitter/types';
31
32
  export { default as Switch } from './components/switch/switch.svelte';
32
33
  export * as Tabs from './components/tabs';
34
+ export { default as Toggle } from './components/toggle/toggle.svelte';
35
+ export type { ToggleProps, ToggleSize } from './components/toggle/types';
33
36
  export * as ToggleGroup from './components/toggle-group';
34
37
  export * as Menu from './components/menu';
35
38
  export * as Tooltip from './components/tooltip';
package/dist/index.js CHANGED
@@ -19,10 +19,12 @@ export { default as ImageCropper } from './components/image-cropper/image-croppe
19
19
  export { default as ImageCropDialog } from './components/image-crop-dialog/image-crop-dialog.svelte';
20
20
  export * as Listbox from './components/listbox';
21
21
  export { default as NumberInput } from './components/number-input/number-input.svelte';
22
+ export * as Popover from './components/popover';
22
23
  export { default as Select } from './components/select/select.svelte';
23
24
  export { default as Splitter } from './components/splitter/splitter.svelte';
24
25
  export { default as Switch } from './components/switch/switch.svelte';
25
26
  export * as Tabs from './components/tabs';
27
+ export { default as Toggle } from './components/toggle/toggle.svelte';
26
28
  export * as ToggleGroup from './components/toggle-group';
27
29
  export * as Menu from './components/menu';
28
30
  export * as Tooltip from './components/tooltip';
package/dist/theme.css CHANGED
@@ -19,7 +19,7 @@
19
19
  --compote-ink: light-dark(var(--gray-15), var(--gray-1));
20
20
  --compote-ink-dim: light-dark(var(--gray-11), var(--gray-5));
21
21
  --compote-ink-inverse: white;
22
- --compote-surface-3: light-dark(var(--gray-5), var(--gray-11));
22
+ --compote-surface-3: light-dark(var(--gray-5), var(--gray-10));
23
23
  --compote-surface-2: light-dark(var(--gray-4), var(--gray-12));
24
24
  --compote-surface-1: light-dark(var(--gray-3), var(--gray-13));
25
25
  --compote-surface-document: light-dark(var(--gray-2), var(--gray-14));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "compote-ui",
3
- "version": "0.31.1",
3
+ "version": "0.33.0",
4
4
  "license": "MIT",
5
5
  "scripts": {
6
6
  "dev": "vite dev --open",
@@ -29,11 +29,21 @@
29
29
  "types": "./dist/index.d.ts",
30
30
  "svelte": "./dist/index.js"
31
31
  },
32
+ "./data-table": {
33
+ "types": "./dist/components/data-table/index.d.ts",
34
+ "svelte": "./dist/components/data-table/index.js"
35
+ },
32
36
  "./theme.css": "./dist/theme.css"
33
37
  },
34
38
  "peerDependencies": {
39
+ "@tanstack/svelte-table": "^9.0.0-alpha.41",
35
40
  "svelte": "^5.0.0"
36
41
  },
42
+ "peerDependenciesMeta": {
43
+ "@tanstack/svelte-table": {
44
+ "optional": true
45
+ }
46
+ },
37
47
  "devDependencies": {
38
48
  "@eslint/compat": "^2.0.5",
39
49
  "@eslint/js": "^10.0.1",
@@ -43,6 +53,7 @@
43
53
  "@sveltejs/package": "^2.5.7",
44
54
  "@sveltejs/vite-plugin-svelte": "7.0.0",
45
55
  "@tailwindcss/vite": "^4.2.4",
56
+ "@tanstack/svelte-table": "9.0.0-alpha.41",
46
57
  "@types/node": "^22",
47
58
  "eslint": "^10.2.1",
48
59
  "eslint-config-prettier": "^10.1.8",