@casinogate/ui 2.0.8 → 2.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/css/root.css +304 -5
- package/dist/assets/css/tailwind/theme.css +24 -0
- package/dist/assets/css/tokens/primitives.css +14 -0
- package/dist/internal/utils/motion.d.ts +20 -0
- package/dist/internal/utils/motion.js +15 -0
- package/dist/primitives/app-shell/styles.js +4 -5
- package/dist/primitives/badge/styles.js +5 -4
- package/dist/primitives/breadcrumb/styles.js +1 -1
- package/dist/primitives/button/components/button.root.svelte +1 -1
- package/dist/primitives/button/styles.js +5 -3
- package/dist/primitives/calendar/styles.js +2 -2
- package/dist/primitives/checkbox/components/checkbox.root.svelte +19 -6
- package/dist/primitives/checkbox/styles.js +1 -1
- package/dist/primitives/chip/styles.js +1 -1
- package/dist/primitives/collapsible/components/collapsaible.content.svelte +2 -1
- package/dist/primitives/collapsible/styles.js +2 -2
- package/dist/primitives/combobox/styles.js +1 -1
- package/dist/primitives/command/styles.js +2 -2
- package/dist/primitives/date-picker/styles.js +4 -3
- package/dist/primitives/dialog/styles.js +2 -0
- package/dist/primitives/drawer/styles.js +2 -2
- package/dist/primitives/dropdown/styles.js +2 -1
- package/dist/primitives/field/styles.js +1 -1
- package/dist/primitives/file-upload/styles.js +2 -2
- package/dist/primitives/input/styles.js +1 -1
- package/dist/primitives/navigation/components/navigation.content.svelte +2 -1
- package/dist/primitives/navigation/components/navigation.item.svelte +3 -2
- package/dist/primitives/navigation/components/navigation.root.svelte +2 -1
- package/dist/primitives/navigation/components/navigation.sub-content.svelte +10 -5
- package/dist/primitives/navigation/components/navigation.sub-trigger.svelte +18 -22
- package/dist/primitives/navigation/components/navigation.sub.svelte +3 -2
- package/dist/primitives/navigation/components/navigation.trigger.svelte +9 -11
- package/dist/primitives/navigation/styles.js +31 -12
- package/dist/primitives/pagination/styles.js +2 -2
- package/dist/primitives/pill/styles.js +2 -2
- package/dist/primitives/popover/styles.js +1 -0
- package/dist/primitives/segment/styles.js +4 -4
- package/dist/primitives/select/components/select.item.svelte +1 -1
- package/dist/primitives/select/styles.js +10 -5
- package/dist/primitives/skeleton/components/skeleton.svelte +18 -12
- package/dist/primitives/skeleton/styles.d.ts +40 -31
- package/dist/primitives/skeleton/styles.js +122 -17
- package/dist/primitives/skeleton/types.d.ts +4 -5
- package/dist/primitives/slider/styles.js +2 -2
- package/dist/primitives/switch/styles.js +2 -2
- package/dist/primitives/textarea/styles.js +1 -1
- package/dist/primitives/toast/styles.js +2 -2
- package/package.json +1 -1
- package/dist/assets/css/theme.css +0 -337
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { Icon } from '../../../atomic/icons/index.js';
|
|
3
3
|
import { useId } from '../../../internal/utils/common.js';
|
|
4
|
+
import { motion } from '../../../internal/utils/motion.js';
|
|
4
5
|
import { cn } from '../../../internal/utils/tailwindcss.js';
|
|
5
6
|
import { Checkbox } from 'bits-ui';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
7
|
+
import { prefersReducedMotion } from 'svelte/motion';
|
|
8
|
+
import { scale } from 'svelte/transition';
|
|
8
9
|
import {
|
|
9
10
|
checkboxCheckedIndicatorVariants,
|
|
10
11
|
checkboxIndeterminateIndicatorVariants,
|
|
@@ -25,6 +26,18 @@
|
|
|
25
26
|
rounded = 'xs',
|
|
26
27
|
...props
|
|
27
28
|
}: CheckboxRootProps = $props();
|
|
29
|
+
|
|
30
|
+
const indicatorStart = $derived(prefersReducedMotion.current ? 1 : 0.85);
|
|
31
|
+
const indicatorIn = $derived({
|
|
32
|
+
start: indicatorStart,
|
|
33
|
+
duration: motion.duration.fast,
|
|
34
|
+
easing: motion.easeOut,
|
|
35
|
+
});
|
|
36
|
+
const indicatorOut = $derived({
|
|
37
|
+
start: indicatorStart,
|
|
38
|
+
duration: motion.duration.instant,
|
|
39
|
+
easing: motion.easeOut,
|
|
40
|
+
});
|
|
28
41
|
</script>
|
|
29
42
|
|
|
30
43
|
<Checkbox.Root
|
|
@@ -42,16 +55,16 @@
|
|
|
42
55
|
<span
|
|
43
56
|
data-slot="indeterminate-indicator"
|
|
44
57
|
data-state="indeterminate"
|
|
45
|
-
in:
|
|
46
|
-
out:
|
|
58
|
+
in:scale={indicatorIn}
|
|
59
|
+
out:scale={indicatorOut}
|
|
47
60
|
class={checkboxIndeterminateIndicatorVariants({ size, rounded })}
|
|
48
61
|
></span>
|
|
49
62
|
{:else if childrenProps.checked}
|
|
50
63
|
<span
|
|
51
64
|
data-slot="checked-indicator"
|
|
52
65
|
data-state="checked"
|
|
53
|
-
in:
|
|
54
|
-
out:
|
|
66
|
+
in:scale={indicatorIn}
|
|
67
|
+
out:scale={indicatorOut}
|
|
55
68
|
class={checkboxCheckedIndicatorVariants({ size, rounded })}
|
|
56
69
|
>
|
|
57
70
|
<Icon.Check />
|
|
@@ -5,7 +5,7 @@ export const checkboxRootVariants = tv({
|
|
|
5
5
|
'cgui:flex cgui:items-center cgui:justify-center',
|
|
6
6
|
'cgui:border cgui:border-surface-regular cgui:outline-none',
|
|
7
7
|
'cgui:cursor-pointer cgui:select-none',
|
|
8
|
-
'cgui:transition-
|
|
8
|
+
'cgui:transition-[background-color,border-color,transform] cgui:duration-(--cg-ui-duration-fast) cgui:ease-out',
|
|
9
9
|
'cgui:active:scale-95',
|
|
10
10
|
'cgui:disabled:opacity-50 cgui:disabled:cursor-not-allowed',
|
|
11
11
|
'cgui:data-[state=indeterminate]:border-surface-primary',
|
|
@@ -7,7 +7,7 @@ export const chipGroupVariants = tv({
|
|
|
7
7
|
export const chipVariants = tv({
|
|
8
8
|
base: [
|
|
9
9
|
'cgui:inline-flex cgui:items-center cgui:justify-center cgui:gap-1 cgui:text-center cgui:overflow-hidden cgui:shrink-0 cgui:w-fit cgui:whitespace-nowrap',
|
|
10
|
-
'cgui:transition-
|
|
10
|
+
'cgui:transition-[color,background-color,border-color] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
11
11
|
'cgui:select-none cgui:font-normal cgui:text-caption-2',
|
|
12
12
|
'cgui:cursor-pointer cgui:outline-none',
|
|
13
13
|
'cgui:focus-visible:ring-2 cgui:focus-visible:ring-stroke-primary cgui:focus-visible:ring-offset-2',
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { cn } from '../../../internal/utils/tailwindcss.js';
|
|
4
4
|
|
|
5
5
|
import { Collapsible as CollapsiblePrimitive } from 'bits-ui';
|
|
6
|
+
import { motion } from '../../../internal/utils/motion.js';
|
|
6
7
|
import { fade } from 'svelte/transition';
|
|
7
8
|
import { collapsibleContentVariants } from '../styles.js';
|
|
8
9
|
import type { CollapsibleContentProps } from '../types.js';
|
|
@@ -31,7 +32,7 @@
|
|
|
31
32
|
{#if childSnippet}
|
|
32
33
|
{@render childSnippet?.(childProps)}
|
|
33
34
|
{:else if childProps.open}
|
|
34
|
-
<div {...childProps.props} transition:fade={{ duration:
|
|
35
|
+
<div {...childProps.props} transition:fade={{ duration: motion.duration.base, easing: motion.easeOut }}>
|
|
35
36
|
{@render children?.()}
|
|
36
37
|
</div>
|
|
37
38
|
{/if}
|
|
@@ -5,7 +5,7 @@ export const collapsibleRootVariants = tv({
|
|
|
5
5
|
base: [
|
|
6
6
|
'cgui:relative cgui:overflow-hidden',
|
|
7
7
|
'cgui:w-full',
|
|
8
|
-
'cgui:transition-
|
|
8
|
+
'cgui:transition-[color,background-color,border-color] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
9
9
|
'cgui:data-[disabled]:opacity-50 cgui:data-[disabled]:cursor-not-allowed cgui:data-[disabled]:pointer-events-none',
|
|
10
10
|
],
|
|
11
11
|
variants: {
|
|
@@ -39,7 +39,7 @@ export const collapsibleTriggerVariants = tv({
|
|
|
39
39
|
export const collapsibleIconVariants = tv({
|
|
40
40
|
base: [
|
|
41
41
|
'cgui:relative cgui:inline-flex cgui:ml-auto cgui:size-6 cgui:items-center cgui:justify-center cgui:shrink-0',
|
|
42
|
-
'cgui:transition-
|
|
42
|
+
'cgui:transition-transform cgui:duration-(--cg-ui-duration-fast) cgui:ease-out',
|
|
43
43
|
'cgui:[&>svg]:size-5',
|
|
44
44
|
],
|
|
45
45
|
variants: {
|
|
@@ -4,7 +4,7 @@ export const comboboxTriggerVariants = tv({
|
|
|
4
4
|
'cgui:group/combobox-trigger ',
|
|
5
5
|
'cgui:relative cgui:flex cgui:items-center cgui:gap-1 cgui:flex-wrap',
|
|
6
6
|
'cgui:text-body cgui:outline-none cgui:bg-clip-padding',
|
|
7
|
-
'cgui:transition-
|
|
7
|
+
'cgui:transition-[color,background-color,border-color,box-shadow,transform] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
8
8
|
'cgui:[&_svg]:shrink-0 cgui:[&_svg]:pointer-events-none cgui:[&_svg]:text-icon-regular cgui:[&_svg:not([class*="size-"])]:size-4',
|
|
9
9
|
'cgui:has-[data-slot=chevron]:pr-3',
|
|
10
10
|
'cgui:data-[state=open]:ring-stroke-primary/50 cgui:data-[state=open]:ring-1',
|
|
@@ -37,7 +37,7 @@ export const commandInputVariants = tv({
|
|
|
37
37
|
'cgui:placeholder:text-fg-regular/70',
|
|
38
38
|
'cgui:focus-visible:ring-0 cgui:focus-visible:ring-offset-0',
|
|
39
39
|
'cgui:disabled:opacity-50 cgui:disabled:cursor-not-allowed',
|
|
40
|
-
'cgui:transition-
|
|
40
|
+
'cgui:transition-colors cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
41
41
|
],
|
|
42
42
|
});
|
|
43
43
|
export const commandListVariants = tv({
|
|
@@ -58,7 +58,7 @@ export const commandItemVariants = tv({
|
|
|
58
58
|
'cgui:aria-selected:bg-surface-lightest cgui:aria-selected:text-fg-primary',
|
|
59
59
|
'cgui:data-selected:text-fg-primary',
|
|
60
60
|
'cgui:cursor-default cgui:text-body cgui:select-none cgui:outline-hidden cgui:rounded-xs',
|
|
61
|
-
'cgui:transition-
|
|
61
|
+
'cgui:transition-[color,background-color,border-color] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
62
62
|
'cgui:[&_svg:not([class*="text-"])]:text-muted-foreground cgui:relative',
|
|
63
63
|
'cgui:[&_kbd]:ml-auto',
|
|
64
64
|
'cgui:data-[disabled]:pointer-events-none cgui:data-[disabled]:opacity-50 cgui:[&_svg]:pointer-events-none cgui:[&_svg]:shrink-0 cgui:[&_svg:not([class*="size-"])]:size-4',
|
|
@@ -6,7 +6,7 @@ export const datePickerTriggerVariants = tv({
|
|
|
6
6
|
'cgui:group/date-picker-trigger',
|
|
7
7
|
'cgui:relative cgui:inline-flex cgui:items-center cgui:gap-1',
|
|
8
8
|
'cgui:text-body cgui:outline-none',
|
|
9
|
-
'cgui:transition-
|
|
9
|
+
'cgui:transition-[color,background-color,border-color,box-shadow,transform] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
10
10
|
'cgui:[&_svg]:shrink-0 cgui:[&_svg]:pointer-events-none cgui:[&_svg]:text-icon-regular cgui:[&_svg:not([class*="size-"])]:size-4',
|
|
11
11
|
'cgui:has-[data-slot=chevron]:pr-3',
|
|
12
12
|
'cgui:data-[state=open]:ring-stroke-primary/50 cgui:data-[state=open]:ring-1',
|
|
@@ -71,6 +71,7 @@ export const datePickerContentVariants = tv({
|
|
|
71
71
|
'cgui:origin-(--bits-popover-content-transform-origin) cgui:outline-hidden',
|
|
72
72
|
'cgui:data-[state=open]:animate-in cgui:data-[state=closed]:animate-out cgui:data-[state=closed]:fade-out-0 cgui:data-[state=open]:fade-in-0 cgui:data-[state=closed]:zoom-out-95 cgui:data-[state=open]:zoom-in-95',
|
|
73
73
|
'cgui:data-[side=bottom]:slide-in-from-top-2 cgui:data-[side=left]:slide-in-from-end-2 cgui:data-[side=right]:slide-in-from-start-2 cgui:data-[side=top]:slide-in-from-bottom-2',
|
|
74
|
+
'cgui:transition-[opacity,transform] cgui:duration-(--cg-ui-duration-fast) cgui:ease-out',
|
|
74
75
|
],
|
|
75
76
|
variants: {
|
|
76
77
|
rounded: {
|
|
@@ -93,7 +94,7 @@ export const datePickerInputVariants = tv({
|
|
|
93
94
|
'cgui:group/date-picker-input',
|
|
94
95
|
'cgui:relative cgui:inline-flex cgui:items-center cgui:gap-0.5 cgui:w-full',
|
|
95
96
|
'cgui:text-body',
|
|
96
|
-
'cgui:transition-
|
|
97
|
+
'cgui:transition-[color,background-color,border-color,box-shadow] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
97
98
|
'cgui:data-invalid:border-stroke-error cgui:data-invalid:ring-stroke-error',
|
|
98
99
|
'cgui:data-disabled:opacity-50 cgui:data-disabled:cursor-not-allowed',
|
|
99
100
|
],
|
|
@@ -135,7 +136,7 @@ export const datePickerSegmentVariants = tv({
|
|
|
135
136
|
'cgui:inline-flex cgui:items-center cgui:justify-center',
|
|
136
137
|
'cgui:rounded-xs cgui:px-0.5',
|
|
137
138
|
'cgui:outline-none',
|
|
138
|
-
'cgui:transition-colors cgui:duration-
|
|
139
|
+
'cgui:transition-colors cgui:duration-(--cg-ui-duration-fast) cgui:ease-out',
|
|
139
140
|
'cgui:focus:bg-surface-primary cgui:focus:text-fg-white',
|
|
140
141
|
'cgui:data-invalid:text-fg-error',
|
|
141
142
|
'cgui:data-disabled:text-fg-semilight/40 cgui:data-disabled:pointer-events-none',
|
|
@@ -19,6 +19,7 @@ export const dialogOverlayStyles = tv({
|
|
|
19
19
|
'cgui:size-full',
|
|
20
20
|
'cgui:bg-neutral-100/50',
|
|
21
21
|
'cgui:data-[state=open]:animate-in cgui:data-[state=closed]:animate-out cgui:data-[state=closed]:fade-out-0 cgui:data-[state=open]:fade-in-0',
|
|
22
|
+
'cgui:transition-opacity cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
22
23
|
],
|
|
23
24
|
});
|
|
24
25
|
export const dialogContentStyles = tv({
|
|
@@ -26,6 +27,7 @@ export const dialogContentStyles = tv({
|
|
|
26
27
|
'cgui:relative cgui:z-(--cg-ui-z-index-dialog) cgui:outline-none cgui:overflow-hidden',
|
|
27
28
|
'cgui:data-[state=open]:animate-in cgui:data-[state=open]:fade-in-0 cgui:data-[state=open]:slide-in-from-bottom-20',
|
|
28
29
|
'cgui:data-[state=closed]:animate-out cgui:data-[state=closed]:fade-out-0 cgui:data-[state=closed]:slide-out-to-bottom-20',
|
|
30
|
+
'cgui:transition-[opacity,transform] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
29
31
|
],
|
|
30
32
|
variants: {
|
|
31
33
|
variant: {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { buttonVariants } from '../button/styles.js';
|
|
2
1
|
import { tv } from '../../internal/utils/tailwindcss.js';
|
|
2
|
+
import { buttonVariants } from '../button/styles.js';
|
|
3
3
|
export const drawerOverlayStyles = tv({
|
|
4
4
|
base: [
|
|
5
5
|
'cgui:fixed cgui:inset-0 cgui:z-(--cg-ui-z-index-dialog)',
|
|
6
6
|
'cgui:bg-neutral-100/50',
|
|
7
|
-
'cgui:transition-
|
|
7
|
+
'cgui:transition-opacity cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
8
8
|
'cgui:data-[state=open]:animate-in cgui:data-[state=closed]:animate-out',
|
|
9
9
|
'cgui:data-[state=open]:fade-in-0 cgui:data-[state=closed]:fade-out-0',
|
|
10
10
|
],
|
|
@@ -16,6 +16,7 @@ export const dropdownContentStyles = tv({
|
|
|
16
16
|
'cgui:data-[state=open]:animate-in cgui:data-[state=open]:fade-in-0 cgui:data-[state=open]:zoom-in-95',
|
|
17
17
|
'cgui:data-[state=closed]:animate-out cgui:data-[state=closed]:fade-out-0 cgui:data-[state=closed]:zoom-out-95',
|
|
18
18
|
'cgui:data-[side=bottom]:slide-in-from-top-2 cgui:data-[side=left]:slide-in-from-end-2 cgui:data-[side=right]:slide-in-from-start-2 cgui:data-[side=top]:slide-in-from-bottom-2',
|
|
19
|
+
'cgui:transition-[opacity,transform] cgui:duration-(--cg-ui-duration-fast) cgui:ease-out',
|
|
19
20
|
],
|
|
20
21
|
variants: {
|
|
21
22
|
variant: {
|
|
@@ -57,7 +58,7 @@ export const dropdownItemStyles = tv({
|
|
|
57
58
|
'cgui:text-body cgui:text-fg-dark cgui:font-normal cgui:select-none',
|
|
58
59
|
'cgui:overflow-hidden cgui:whitespace-nowrap cgui:outline-none',
|
|
59
60
|
'cgui:[&_svg]:shrink-0 cgui:[&_svg]:pointer-events-none cgui:[&_svg]:text-icon-regular cgui:[&_svg:not([class*="size-"])]:size-4.5',
|
|
60
|
-
'cgui:transition-[background-color,color,
|
|
61
|
+
'cgui:transition-[color,background-color,border-color,box-shadow] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
61
62
|
'cgui:data-highlighted:bg-surface-lightest',
|
|
62
63
|
'cgui:data-[disabled]:cursor-not-allowed cgui:data-[disabled]:pointer-events-none cgui:data-[disabled]:opacity-50',
|
|
63
64
|
],
|
|
@@ -14,7 +14,7 @@ export const fieldErrorVariants = tv({
|
|
|
14
14
|
base: [
|
|
15
15
|
'cgui:text-caption cgui:text-fg-error',
|
|
16
16
|
'cgui:min-h-[1lh]',
|
|
17
|
-
'cgui:invisible cgui:opacity-0 cgui:transition-opacity cgui:duration-
|
|
17
|
+
'cgui:invisible cgui:opacity-0 cgui:transition-opacity cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
18
18
|
'cgui:data-[invalid]:visible cgui:data-[invalid]:opacity-100',
|
|
19
19
|
],
|
|
20
20
|
});
|
|
@@ -12,7 +12,7 @@ export const fileUploadDropzoneVariants = tv({
|
|
|
12
12
|
'cgui:flex cgui:flex-col cgui:items-center cgui:justify-center cgui:gap-2 cgui:p-4',
|
|
13
13
|
'cgui:rounded-md cgui:border cgui:border-dashed cgui:border-stroke-default',
|
|
14
14
|
'cgui:cursor-pointer',
|
|
15
|
-
'cgui:transition-colors cgui:duration-
|
|
15
|
+
'cgui:transition-colors cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
16
16
|
],
|
|
17
17
|
variants: {
|
|
18
18
|
dragging: {
|
|
@@ -60,7 +60,7 @@ export const fileUploadItemDeleteTriggerVariants = tv({
|
|
|
60
60
|
'cgui:shrink-0 cgui:size-6 cgui:flex cgui:items-center cgui:justify-center',
|
|
61
61
|
'cgui:rounded-xs cgui:cursor-pointer',
|
|
62
62
|
'cgui:text-fg-regular cgui:hover:text-fg-darkest',
|
|
63
|
-
'cgui:transition-colors cgui:duration-
|
|
63
|
+
'cgui:transition-colors cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
64
64
|
'cgui:[&>svg]:size-4 cgui:text-icon-regular',
|
|
65
65
|
],
|
|
66
66
|
});
|
|
@@ -12,7 +12,7 @@ export const inputStyles = tv({
|
|
|
12
12
|
export const inputVariants = tv({
|
|
13
13
|
base: [
|
|
14
14
|
'cgui:outline-none cgui:py-0',
|
|
15
|
-
'cgui:transition-
|
|
15
|
+
'cgui:transition-[color,background-color,border-color,box-shadow] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
16
16
|
'cgui:text-body',
|
|
17
17
|
'cgui:disabled:opacity-50 cgui:disabled:cursor-not-allowed',
|
|
18
18
|
],
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
2
|
+
import { useId } from '../../../internal/utils/common.js';
|
|
3
|
+
import { cn } from '../../../internal/utils/tailwindcss.js';
|
|
3
4
|
import { boxWith, mergeProps } from 'svelte-toolbelt';
|
|
4
5
|
import { navigationContentStyles } from '../styles.js';
|
|
5
6
|
import type { NavigationContentProps } from '../types.js';
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import { cn
|
|
2
|
+
import { useId } from '../../../internal/utils/common.js';
|
|
3
|
+
import { cn } from '../../../internal/utils/tailwindcss.js';
|
|
4
4
|
import { boxWith, mergeProps } from 'svelte-toolbelt';
|
|
5
|
+
import { Dropdown as DropdownPrimitive } from '../../dropdown/index.js';
|
|
5
6
|
import { navigationItemStyles } from '../styles.js';
|
|
6
7
|
import type { NavigationItemProps } from '../types.js';
|
|
7
8
|
import { NavigationItemState, NavigationSubStateCtx } from './navigation.svelte.js';
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
import { NavigationRootState } from './navigation.svelte.js';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { useId } from '../../../internal/utils/common.js';
|
|
8
|
+
import { cn } from '../../../internal/utils/tailwindcss.js';
|
|
8
9
|
import { boxWith, mergeProps } from 'svelte-toolbelt';
|
|
9
10
|
|
|
10
11
|
const uid = $props.id();
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { cn
|
|
2
|
+
import { useId } from '../../../internal/utils/common.js';
|
|
3
|
+
import { motion } from '../../../internal/utils/motion.js';
|
|
4
|
+
import { cn } from '../../../internal/utils/tailwindcss.js';
|
|
5
5
|
import { boxWith, mergeProps } from 'svelte-toolbelt';
|
|
6
|
-
import { cubicInOut } from 'svelte/easing';
|
|
7
6
|
import { fade } from 'svelte/transition';
|
|
7
|
+
import { Collapsible as CollapsiblePrimitive } from '../../collapsible/index.js';
|
|
8
|
+
import { Dropdown as DropdownPrimitive } from '../../dropdown/index.js';
|
|
8
9
|
import { navigationDropdownContentStyles, navigationSubContentStyles } from '../styles.js';
|
|
9
10
|
import type { NavigationSubContentProps } from '../types.js';
|
|
10
11
|
import { NavigationSubContentState } from './navigation.svelte.js';
|
|
@@ -62,7 +63,11 @@
|
|
|
62
63
|
<CollapsiblePrimitive.Content>
|
|
63
64
|
{#snippet child({ props: collapsibleProps, open })}
|
|
64
65
|
{#if open}
|
|
65
|
-
<ol
|
|
66
|
+
<ol
|
|
67
|
+
{...collapsibleProps}
|
|
68
|
+
{...mergedProps}
|
|
69
|
+
transition:fade={{ duration: motion.duration.base, easing: motion.easeOut }}
|
|
70
|
+
>
|
|
66
71
|
{@render children?.({ compact: subContentState.root.isCompact })}
|
|
67
72
|
</ol>
|
|
68
73
|
{/if}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { Collapsible as CollapsiblePrimitive } from '../../collapsible/index.js';
|
|
3
|
-
import { Dropdown as DropdownPrimitive } from '../../dropdown/index.js';
|
|
4
2
|
import ChevronDown from '../../../atomic/icons/chevron-down.svelte';
|
|
5
|
-
import {
|
|
3
|
+
import { useId } from '../../../internal/utils/common.js';
|
|
4
|
+
import { motion } from '../../../internal/utils/motion.js';
|
|
5
|
+
import { cn } from '../../../internal/utils/tailwindcss.js';
|
|
6
6
|
import { boxWith, mergeProps } from 'svelte-toolbelt';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { fade } from 'svelte/transition';
|
|
8
|
+
import { Collapsible as CollapsiblePrimitive } from '../../collapsible/index.js';
|
|
9
|
+
import { Dropdown as DropdownPrimitive } from '../../dropdown/index.js';
|
|
9
10
|
import { navigationSubTriggerStyles } from '../styles.js';
|
|
10
11
|
import type { NavigationSubTriggerProps } from '../types.js';
|
|
11
12
|
import { NavigationSubTriggerState } from './navigation.svelte.js';
|
|
@@ -48,10 +49,7 @@
|
|
|
48
49
|
|
|
49
50
|
{#snippet content()}
|
|
50
51
|
{#if icon}
|
|
51
|
-
<span
|
|
52
|
-
data-slot="icon"
|
|
53
|
-
class={cn('cgui:inline-flex cgui:items-center cgui:justify-center cgui:shrink-0 cgui:empty:hidden')}
|
|
54
|
-
>
|
|
52
|
+
<span data-slot="nav-trigger-icon">
|
|
55
53
|
{@render icon?.()}
|
|
56
54
|
</span>
|
|
57
55
|
{/if}
|
|
@@ -60,30 +58,28 @@
|
|
|
60
58
|
{#if typeof label === 'string'}
|
|
61
59
|
{#if !subTriggerState.root.isCompact}
|
|
62
60
|
<span
|
|
63
|
-
data-slot="label"
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
data-slot="nav-trigger-label"
|
|
62
|
+
in:fade={{ delay: 120, duration: motion.duration.slow, easing: motion.easeOut }}
|
|
63
|
+
out:fade={{ duration: motion.duration.instant, easing: motion.easeOut }}
|
|
66
64
|
>
|
|
67
|
-
<span
|
|
65
|
+
<span>
|
|
68
66
|
{label}
|
|
69
67
|
</span>
|
|
70
68
|
</span>
|
|
71
69
|
{/if}
|
|
72
70
|
{:else}
|
|
73
|
-
{@render label?.({ props: { 'data-slot': 'label' } })}
|
|
71
|
+
{@render label?.({ props: { 'data-slot': 'nav-trigger-label' } })}
|
|
74
72
|
{/if}
|
|
75
73
|
{/if}
|
|
76
74
|
{/snippet}
|
|
77
75
|
|
|
76
|
+
<!-- class={cn(
|
|
77
|
+
'cgui:flex cgui:items-center cgui:justify-center cgui:shrink-0',
|
|
78
|
+
'cgui:transition-transform cgui:duration-(--cg-ui-duration-base) cgui:ease-in-out'
|
|
79
|
+
)} -->
|
|
78
80
|
{#snippet chevron()}
|
|
79
|
-
<span
|
|
80
|
-
|
|
81
|
-
class={cn(
|
|
82
|
-
'cgui:flex cgui:items-center cgui:justify-center cgui:shrink-0',
|
|
83
|
-
'cgui:transition-transform cgui:duration-250 cgui:ease-in-out'
|
|
84
|
-
)}
|
|
85
|
-
>
|
|
86
|
-
<ChevronDown width={24} height={24} />
|
|
81
|
+
<span data-slot="nav-trigger-chevron">
|
|
82
|
+
<ChevronDown />
|
|
87
83
|
</span>
|
|
88
84
|
{/snippet}
|
|
89
85
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { useId } from '../../../internal/utils/common.js';
|
|
3
|
+
import { cn } from '../../../internal/utils/tailwindcss.js';
|
|
4
|
+
import { boxWith, mergeProps } from 'svelte-toolbelt';
|
|
2
5
|
import { Collapsible as CollapsiblePrimitive } from '../../collapsible/index.js';
|
|
3
6
|
import { Dropdown as DropdownPrimitive } from '../../dropdown/index.js';
|
|
4
|
-
import { cn, useId } from '../../../internal/utils/common.js';
|
|
5
|
-
import { boxWith, mergeProps } from 'svelte-toolbelt';
|
|
6
7
|
import { navigationSubStyles } from '../styles.js';
|
|
7
8
|
import type { NavigationSubProps } from '../types.js';
|
|
8
9
|
import { NavigationSubState } from './navigation.svelte.js';
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
2
|
+
import { useId } from '../../../internal/utils/common.js';
|
|
3
|
+
import { motion } from '../../../internal/utils/motion.js';
|
|
4
|
+
import { cn } from '../../../internal/utils/tailwindcss.js';
|
|
3
5
|
import { boxWith, mergeProps } from 'svelte-toolbelt';
|
|
4
|
-
import {
|
|
5
|
-
import { slide } from 'svelte/transition';
|
|
6
|
+
import { fade } from 'svelte/transition';
|
|
6
7
|
import { navigationTriggerStyles } from '../styles.js';
|
|
7
8
|
import type { NavigationTriggerProps } from '../types.js';
|
|
8
9
|
import { NavigationSubStateCtx, NavigationTriggerState } from './navigation.svelte.js';
|
|
@@ -48,10 +49,7 @@
|
|
|
48
49
|
|
|
49
50
|
{#snippet content()}
|
|
50
51
|
{#if icon}
|
|
51
|
-
<span
|
|
52
|
-
data-slot="icon"
|
|
53
|
-
class={cn('cgui:inline-flex cgui:items-center cgui:justify-center cgui:shrink-0 cgui:empty:hidden')}
|
|
54
|
-
>
|
|
52
|
+
<span data-slot="nav-trigger-icon">
|
|
55
53
|
{@render icon?.()}
|
|
56
54
|
</span>
|
|
57
55
|
{/if}
|
|
@@ -60,11 +58,11 @@
|
|
|
60
58
|
{#if typeof label === 'string'}
|
|
61
59
|
{#if shouldShowLabel}
|
|
62
60
|
<span
|
|
63
|
-
data-slot="label"
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
data-slot="nav-trigger-label"
|
|
62
|
+
in:fade={{ delay: 120, duration: motion.duration.slow, easing: motion.easeOut }}
|
|
63
|
+
out:fade={{ duration: motion.duration.instant, easing: motion.easeOut }}
|
|
66
64
|
>
|
|
67
|
-
<span
|
|
65
|
+
<span>
|
|
68
66
|
{label}
|
|
69
67
|
</span>
|
|
70
68
|
</span>
|
|
@@ -3,7 +3,7 @@ export const navigationRootStyles = tv({
|
|
|
3
3
|
base: [
|
|
4
4
|
'cgui:group/navigation',
|
|
5
5
|
'cgui:data-[compact=true]:w-fit cgui:min-w-px cgui:w-full',
|
|
6
|
-
'cgui:transition-
|
|
6
|
+
'cgui:transition-[width] cgui:duration-(--cg-ui-duration-slow) cgui:ease-out',
|
|
7
7
|
],
|
|
8
8
|
variants: {
|
|
9
9
|
compact: {
|
|
@@ -15,20 +15,33 @@ export const navigationContentStyles = tv({
|
|
|
15
15
|
base: [''],
|
|
16
16
|
});
|
|
17
17
|
export const navigationItemStyles = tv({
|
|
18
|
-
base: [
|
|
18
|
+
base: [
|
|
19
|
+
'cgui:data-highlighted:bg-transparent',
|
|
20
|
+
'cgui:transition-[background-color,color] cgui:duration-(--cg-ui-duration-base) cgui:ease-hover',
|
|
21
|
+
],
|
|
19
22
|
});
|
|
20
23
|
export const navigationTriggerStyles = tv({
|
|
21
24
|
base: [
|
|
22
|
-
'cgui:
|
|
23
|
-
'cgui:
|
|
24
|
-
'cgui:w-full cgui:px-3 cgui:py-4',
|
|
25
|
-
'cgui:
|
|
26
|
-
'cgui:
|
|
27
|
-
'cgui:
|
|
25
|
+
'cgui:grid cgui:grid-cols-[1.5rem_minmax(0,1fr)]',
|
|
26
|
+
'cgui:items-center cgui:gap-2 cgui:justify-center',
|
|
27
|
+
'cgui:w-full cgui:px-3 cgui:py-4 cgui:rounded-sm',
|
|
28
|
+
'cgui:[&_[data-slot="nav-trigger-icon"]]:me-auto cgui:[&_[data-slot="nav-trigger-icon"]]:pointer-events-none',
|
|
29
|
+
'cgui:[&_[data-slot="nav-trigger-icon"]_svg:not([class*="size-"])]:size-6',
|
|
30
|
+
'cgui:data-[active]:bg-surface-dark cgui:data-[active]:text-fg-white',
|
|
31
|
+
'cgui:text-fg-semilight cgui:text-body cgui:hover:text-fg-white',
|
|
28
32
|
'cgui:data-[disabled]:cursor-not-allowed cgui:data-[disabled]:opacity-50',
|
|
29
|
-
'cgui:
|
|
30
|
-
'cgui:
|
|
31
|
-
'cgui:
|
|
33
|
+
'cgui:cursor-pointer',
|
|
34
|
+
'cgui:group-data-[compact=true]/navigation:grid-cols-[1.5rem_minmax(0,0fr)]',
|
|
35
|
+
'cgui:group-data-[compact=true]/navigation:gap-0',
|
|
36
|
+
'cgui:group-data-[compact=true]/navigation:py-3',
|
|
37
|
+
'cgui:[&_[data-slot="nav-trigger-icon"]]:shrink-0',
|
|
38
|
+
'cgui:[&_[data-slot="nav-trigger-label"]]:min-w-0 cgui:[&_[data-slot="nav-trigger-label"]]:overflow-hidden cgui:[&_[data-slot="nav-trigger-label"]]:whitespace-nowrap cgui:[&_[data-slot="nav-trigger-label"]]:text-left',
|
|
39
|
+
'cgui:[&_[data-slot="nav-trigger-label"]>*]:min-w-0',
|
|
40
|
+
'cgui:[&_[data-slot="nav-trigger-label"]>*]:overflow-hidden',
|
|
41
|
+
'cgui:[&_[data-slot="nav-trigger-label"]>*]:whitespace-nowrap',
|
|
42
|
+
'cgui:[transition:grid-template-columns_var(--cg-ui-duration-slow)_var(--ease-out),padding_var(--cg-ui-duration-slow)_var(--ease-out),gap_var(--cg-ui-duration-slow)_var(--ease-out),border-radius_var(--cg-ui-duration-slow)_var(--ease-out),background-color_var(--cg-ui-duration-base)_var(--ease-hover),color_var(--cg-ui-duration-base)_var(--ease-hover),transform_var(--cg-ui-duration-instant)_var(--ease-out)]',
|
|
43
|
+
'cgui:data-[state=closed]:delay-[120ms] cgui:data-[state=open]:delay-0',
|
|
44
|
+
'cgui:not-data-[disabled]:active:scale-[0.98]',
|
|
32
45
|
],
|
|
33
46
|
});
|
|
34
47
|
export const navigationSubStyles = tv({
|
|
@@ -36,7 +49,13 @@ export const navigationSubStyles = tv({
|
|
|
36
49
|
});
|
|
37
50
|
export const navigationSubTriggerStyles = tv({
|
|
38
51
|
extend: navigationTriggerStyles,
|
|
39
|
-
base: [
|
|
52
|
+
base: [
|
|
53
|
+
'cgui:grid-cols-[1.5rem_minmax(0,1fr)_auto]',
|
|
54
|
+
'cgui:[&_[data-slot="nav-trigger-chevron"]]:inline-grid cgui:[&_[data-slot="nav-trigger-chevron"]]:place-items-center',
|
|
55
|
+
'cgui:[&_[data-slot="nav-trigger-chevron"]]:shrink-0',
|
|
56
|
+
'cgui:[&_[data-slot="nav-trigger-chevron"]_svg]:size-5',
|
|
57
|
+
'cgui:group-data-[compact=false]/navigation:data-[state=open]:[&_[data-slot="nav-trigger-chevron"]]:rotate-180',
|
|
58
|
+
],
|
|
40
59
|
});
|
|
41
60
|
export const navigationSubContentStyles = tv({
|
|
42
61
|
base: [
|
|
@@ -21,7 +21,7 @@ export const paginationItemStyles = tv({
|
|
|
21
21
|
'cgui:flex cgui:items-center cgui:justify-center',
|
|
22
22
|
'cgui:text-fg-dark cgui:text-body-2 cgui:font-normal',
|
|
23
23
|
'cgui:border cgui:border-transparent',
|
|
24
|
-
'cgui:transition-
|
|
24
|
+
'cgui:transition-[color,background-color,border-color] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
25
25
|
'cgui:cursor-pointer cgui:select-none cgui:rounded-full',
|
|
26
26
|
'cgui:data-[selected=""]:text-fg-primary cgui:data-[selected=""]:border-stroke-primary',
|
|
27
27
|
'cgui:disabled:opacity-50 cgui:disabled:cursor-not-allowed cgui:disabled:pointer-events-none',
|
|
@@ -38,7 +38,7 @@ export const paginationButtonStyles = tv({
|
|
|
38
38
|
base: [
|
|
39
39
|
'cgui:flex cgui:items-center cgui:justify-center cgui:shrink-0 cgui:size-6 cgui:text-icon-regular',
|
|
40
40
|
'cgui:select-none cgui:cursor-pointer',
|
|
41
|
-
'cgui:transition-
|
|
41
|
+
'cgui:transition-colors cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
42
42
|
'cgui:disabled:opacity-50 cgui:disabled:cursor-not-allowed cgui:disabled:pointer-events-none',
|
|
43
43
|
],
|
|
44
44
|
});
|
|
@@ -7,7 +7,7 @@ export const pillGroupVariants = tv({
|
|
|
7
7
|
export const pillItemVariants = tv({
|
|
8
8
|
base: [
|
|
9
9
|
'cgui:inline-flex cgui:items-center cgui:justify-center cgui:gap-1 cgui:text-center cgui:overflow-hidden cgui:shrink-0 cgui:w-fit cgui:whitespace-nowrap cgui:max-w-full',
|
|
10
|
-
'cgui:transition-
|
|
10
|
+
'cgui:transition-[color,background-color,border-color] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
11
11
|
'cgui:select-none cgui:font-normal cgui:text-caption-2',
|
|
12
12
|
'cgui:[&>svg]:pointer-events-none',
|
|
13
13
|
],
|
|
@@ -165,7 +165,7 @@ export const pillRemoveVariants = tv({
|
|
|
165
165
|
base: [
|
|
166
166
|
'cgui:inline-flex cgui:items-center cgui:justify-center cgui:shrink-0',
|
|
167
167
|
'cgui:rounded-full cgui:cursor-pointer cgui:outline-none',
|
|
168
|
-
'cgui:transition-colors cgui:duration-
|
|
168
|
+
'cgui:transition-colors cgui:duration-(--cg-ui-duration-fast) cgui:ease-out',
|
|
169
169
|
'cgui:bg-transparent cgui:text-inherit',
|
|
170
170
|
'cgui:disabled:opacity-50 cgui:disabled:cursor-not-allowed cgui:disabled:hover:bg-transparent',
|
|
171
171
|
'cgui:[&>svg]:pointer-events-none cgui:[&>svg:not([class*="size"])]:size-[80%]',
|
|
@@ -8,6 +8,7 @@ export const popoverContentVariants = tv({
|
|
|
8
8
|
'cgui:origin-(--bits-popover-content-transform-origin) cgui:outline-hidden',
|
|
9
9
|
'cgui:data-[state=open]:animate-in cgui:data-[state=closed]:animate-out cgui:data-[state=closed]:fade-out-0 cgui:data-[state=open]:fade-in-0 cgui:data-[state=closed]:zoom-out-95 cgui:data-[state=open]:zoom-in-95',
|
|
10
10
|
'cgui:data-[side=bottom]:slide-in-from-top-2 cgui:data-[side=left]:slide-in-from-end-2 cgui:data-[side=right]:slide-in-from-start-2 cgui:data-[side=top]:slide-in-from-bottom-2',
|
|
11
|
+
'cgui:transition-[opacity,transform] cgui:duration-(--cg-ui-duration-fast) cgui:ease-out',
|
|
11
12
|
],
|
|
12
13
|
variants: {
|
|
13
14
|
variant: {
|
|
@@ -4,8 +4,8 @@ import { Context } from 'runed';
|
|
|
4
4
|
export const segmentRootVariants = tv({
|
|
5
5
|
base: [
|
|
6
6
|
'cgui:flex cgui:items-center cgui:p-1 cgui:w-fit',
|
|
7
|
-
'cgui:transition-
|
|
8
|
-
'cgui:data-
|
|
7
|
+
'cgui:transition-[background-color,border-color,opacity] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
8
|
+
'cgui:data-disabled:opacity-50 cgui:data-disabled:cursor-not-allowed cgui:data-disabled:pointer-events-none',
|
|
9
9
|
],
|
|
10
10
|
variants: {
|
|
11
11
|
variant: {
|
|
@@ -28,7 +28,7 @@ export const segmentItemVariants = tv({
|
|
|
28
28
|
'cgui:font-medium cgui:text-body-2',
|
|
29
29
|
'cgui:rounded-[inherit]',
|
|
30
30
|
'cgui:cursor-pointer cgui:overflow-hidden cgui:select-none',
|
|
31
|
-
'cgui:transition-
|
|
31
|
+
'cgui:transition-[color,background-color,border-color,opacity] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
32
32
|
],
|
|
33
33
|
variants: {
|
|
34
34
|
variant: {
|
|
@@ -58,7 +58,7 @@ export const segmentThumbVariants = tv({
|
|
|
58
58
|
base: [
|
|
59
59
|
'cgui:rounded-[inherit] cgui:pointer-events-none',
|
|
60
60
|
'cgui:shadow-segment-thumb',
|
|
61
|
-
'cgui:transition-
|
|
61
|
+
'cgui:transition-[background-color] cgui:duration-(--cg-ui-duration-base) cgui:ease-out',
|
|
62
62
|
],
|
|
63
63
|
variants: {
|
|
64
64
|
variant: {
|