lapikit 0.4.11 → 0.4.13

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 (42) hide show
  1. package/dist/labs/compiler/components.js +14 -0
  2. package/dist/labs/components/appbar/appbar.svelte +196 -0
  3. package/dist/labs/components/appbar/appbar.svelte.d.ts +4 -0
  4. package/dist/labs/components/appbar/appbar.types.d.ts +16 -0
  5. package/dist/labs/components/appbar/appbar.types.js +1 -0
  6. package/dist/labs/components/dropdown/dropdown.svelte +249 -0
  7. package/dist/labs/components/dropdown/dropdown.svelte.d.ts +4 -0
  8. package/dist/labs/components/dropdown/dropdown.svelte.js +148 -0
  9. package/dist/labs/components/dropdown/dropdown.types.d.ts +28 -0
  10. package/dist/labs/components/dropdown/dropdown.types.js +1 -0
  11. package/dist/labs/components/index.d.ts +8 -0
  12. package/dist/labs/components/index.js +8 -0
  13. package/dist/labs/components/list/list.svelte +190 -0
  14. package/dist/labs/components/list/list.svelte.d.ts +4 -0
  15. package/dist/labs/components/list/list.types.d.ts +30 -0
  16. package/dist/labs/components/list/list.types.js +1 -0
  17. package/dist/labs/components/list/modules/list-item.svelte +195 -0
  18. package/dist/labs/components/list/modules/list-item.svelte.d.ts +4 -0
  19. package/dist/labs/components/popover/popover.svelte +188 -0
  20. package/dist/labs/components/popover/popover.svelte.d.ts +4 -0
  21. package/dist/labs/components/popover/popover.svelte.js +134 -0
  22. package/dist/labs/components/popover/popover.types.d.ts +22 -0
  23. package/dist/labs/components/popover/popover.types.js +1 -0
  24. package/dist/labs/components/textfield/textfield.svelte +587 -0
  25. package/dist/labs/components/textfield/textfield.svelte.d.ts +4 -0
  26. package/dist/labs/components/textfield/textfield.types.d.ts +41 -0
  27. package/dist/labs/components/textfield/textfield.types.js +1 -0
  28. package/dist/labs/components/toolbar/toolbar.svelte +262 -0
  29. package/dist/labs/components/toolbar/toolbar.svelte.d.ts +4 -0
  30. package/dist/labs/components/toolbar/toolbar.types.d.ts +21 -0
  31. package/dist/labs/components/toolbar/toolbar.types.js +1 -0
  32. package/dist/labs/components/tooltip/tooltip.svelte +372 -0
  33. package/dist/labs/components/tooltip/tooltip.svelte.d.ts +4 -0
  34. package/dist/labs/components/tooltip/tooltip.svelte.js +131 -0
  35. package/dist/labs/components/tooltip/tooltip.types.d.ts +26 -0
  36. package/dist/labs/components/tooltip/tooltip.types.js +1 -0
  37. package/dist/labs/utils/index.d.ts +1 -0
  38. package/dist/labs/utils/index.js +1 -0
  39. package/dist/labs/utils/outside.d.ts +5 -0
  40. package/dist/labs/utils/outside.js +34 -0
  41. package/dist/labs/utils/types/index.d.ts +4 -0
  42. package/package.json +1 -1
@@ -1,11 +1,19 @@
1
1
  // components
2
2
  export { default as KitSheet } from './sheet/sheet.svelte';
3
3
  export { default as KitApp } from './app/app.svelte';
4
+ export { default as KitAppbar } from './appbar/appbar.svelte';
4
5
  export { default as KitBtn } from './btn/btn.svelte';
5
6
  export { default as KitIcon } from './icon/icon.svelte';
6
7
  export { default as KitCard } from './card/card.svelte';
7
8
  export { default as KitChip } from './chip/chip.svelte';
8
9
  export { default as KitAvatar } from './avatar/avatar.svelte';
10
+ export { default as KitDropdown } from './dropdown/dropdown.svelte';
11
+ export { default as KitPopover } from './popover/popover.svelte';
12
+ export { default as KitTooltip } from './tooltip/tooltip.svelte';
13
+ export { default as KitTextfield } from './textfield/textfield.svelte';
14
+ export { default as KitToolbar } from './toolbar/toolbar.svelte';
15
+ export { default as KitList } from './list/list.svelte';
16
+ export { default as KitListItem } from './list/modules/list-item.svelte';
9
17
  export { default as KitDialog } from './dialog/dialog.svelte';
10
18
  export { default as KitModal } from './modal/modal.svelte';
11
19
  export { default as KitAccordion } from './accordion/accordion.svelte';
@@ -0,0 +1,190 @@
1
+ <script lang="ts">
2
+ import { makeComponentProps } from '../../compiler/mapped-code.js';
3
+ import { useClassName, useStyles } from '../../utils/index.js';
4
+ import type { ListDensity, ListProps, ListVariant } from './list.types.js';
5
+
6
+ function resolveVariant(value: ListVariant | undefined): ListVariant {
7
+ return value === 'filled' || value === 'outline' || value === 'text' ? value : 'filled';
8
+ }
9
+
10
+ function resolveDensity(value: ListDensity | undefined): ListDensity {
11
+ return value === 'compact' || value === 'comfortable' || value === 'default'
12
+ ? value
13
+ : 'default';
14
+ }
15
+
16
+ let {
17
+ ref = $bindable(),
18
+ is = 'div',
19
+ children = undefined,
20
+ class: className = '',
21
+ style: styleAttr = '',
22
+ 's-class': sClass,
23
+ 's-style': sStyle,
24
+ size = 'md',
25
+ variant = 'filled',
26
+ density = 'default',
27
+ rounded = 'md',
28
+ nav = false,
29
+ color = undefined,
30
+ background = undefined,
31
+ ...rest
32
+ }: ListProps = $props();
33
+
34
+ let { classProps, styleProps, restProps } = $derived(
35
+ makeComponentProps(rest as Record<string, unknown>)
36
+ );
37
+
38
+ let componentClass = $derived(
39
+ useClassName({
40
+ baseClass: 'kit-list',
41
+ className: `${className ?? ''}`.trim(),
42
+ sClass,
43
+ classProps
44
+ })
45
+ );
46
+
47
+ let componentStyle = $derived(
48
+ useStyles({
49
+ styleAttr,
50
+ sStyle,
51
+ styleProps
52
+ })
53
+ );
54
+
55
+ let safeVariant = $derived(resolveVariant(variant));
56
+ let safeDensity = $derived(resolveDensity(density));
57
+ let safeSize = $derived(
58
+ size === 'default'
59
+ ? 'md'
60
+ : size === 'xs' || size === 'sm' || size === 'md' || size === 'lg' || size === 'xl'
61
+ ? size
62
+ : 'md'
63
+ );
64
+ let mergedStyle = $derived(
65
+ [
66
+ componentStyle,
67
+ color ? `--kit-list-fg:${color}` : '',
68
+ background ? `--kit-list-bg:${background}` : ''
69
+ ]
70
+ .filter(Boolean)
71
+ .join('; ')
72
+ );
73
+ </script>
74
+
75
+ <svelte:element
76
+ this={is}
77
+ bind:this={ref}
78
+ class={componentClass}
79
+ style={mergedStyle}
80
+ data-size={safeSize}
81
+ data-variant={safeVariant}
82
+ data-density={safeDensity}
83
+ data-rounded={rounded}
84
+ data-nav={nav}
85
+ role={nav ? 'navigation' : is === 'ul' ? undefined : 'list'}
86
+ {...restProps}
87
+ >
88
+ {@render children?.()}
89
+ </svelte:element>
90
+
91
+ <style>
92
+ .kit-list {
93
+ --kit-list-bg: var(--kit-surface-1);
94
+ --kit-list-fg: var(--kit-fg);
95
+ --kit-list-bd: var(--kit-border);
96
+ --kit-list-radius: 10px;
97
+ --kit-list-item-h: 2.75rem;
98
+ --kit-list-item-px: 0.875rem;
99
+ --kit-list-item-gap: 0.625rem;
100
+ --kit-list-item-font: 0.9375rem;
101
+
102
+ display: flex;
103
+ flex-direction: column;
104
+ width: 100%;
105
+ padding: 0.25rem;
106
+ gap: 0.125rem;
107
+ color: var(--kit-list-fg);
108
+ background: transparent;
109
+ border-radius: var(--kit-list-radius);
110
+ }
111
+
112
+ .kit-list[data-nav='true'] {
113
+ padding: 0.5rem;
114
+ }
115
+
116
+ .kit-list[data-size='xs'] {
117
+ --kit-list-item-h: 2.125rem;
118
+ --kit-list-item-px: 0.625rem;
119
+ --kit-list-item-gap: 0.5rem;
120
+ --kit-list-item-font: 0.75rem;
121
+ }
122
+
123
+ .kit-list[data-size='sm'] {
124
+ --kit-list-item-h: 2.375rem;
125
+ --kit-list-item-px: 0.75rem;
126
+ --kit-list-item-gap: 0.5rem;
127
+ --kit-list-item-font: 0.875rem;
128
+ }
129
+
130
+ .kit-list[data-size='md'] {
131
+ --kit-list-item-h: 2.75rem;
132
+ --kit-list-item-px: 0.875rem;
133
+ --kit-list-item-gap: 0.625rem;
134
+ --kit-list-item-font: 0.9375rem;
135
+ }
136
+
137
+ .kit-list[data-size='lg'] {
138
+ --kit-list-item-h: 3.125rem;
139
+ --kit-list-item-px: 1rem;
140
+ --kit-list-item-gap: 0.75rem;
141
+ --kit-list-item-font: 1rem;
142
+ }
143
+
144
+ .kit-list[data-size='xl'] {
145
+ --kit-list-item-h: 3.5rem;
146
+ --kit-list-item-px: 1.125rem;
147
+ --kit-list-item-gap: 0.875rem;
148
+ --kit-list-item-font: 1.0625rem;
149
+ }
150
+
151
+ .kit-list[data-density='compact'] {
152
+ --kit-list-item-h: calc(var(--kit-list-item-h) - 0.25rem);
153
+ }
154
+
155
+ .kit-list[data-density='comfortable'] {
156
+ --kit-list-item-h: calc(var(--kit-list-item-h) + 0.25rem);
157
+ }
158
+
159
+ .kit-list[data-rounded='0'] {
160
+ --kit-list-radius: 0;
161
+ }
162
+
163
+ .kit-list[data-rounded='xs'] {
164
+ --kit-list-radius: 2px;
165
+ }
166
+
167
+ .kit-list[data-rounded='sm'] {
168
+ --kit-list-radius: 6px;
169
+ }
170
+
171
+ .kit-list[data-rounded='md'] {
172
+ --kit-list-radius: 10px;
173
+ }
174
+
175
+ .kit-list[data-rounded='lg'] {
176
+ --kit-list-radius: 16px;
177
+ }
178
+
179
+ .kit-list[data-rounded='xl'] {
180
+ --kit-list-radius: 9999px;
181
+ }
182
+
183
+ .kit-list[data-variant='filled'] {
184
+ background: color-mix(in oklab, var(--kit-list-bg), transparent 12%);
185
+ }
186
+
187
+ .kit-list[data-variant='outline'] {
188
+ border: 1px solid var(--kit-list-bd);
189
+ }
190
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { ListProps } from './list.types.ts';
2
+ declare const List: import("svelte").Component<ListProps, {}, "ref">;
3
+ type List = ReturnType<typeof List>;
4
+ export default List;
@@ -0,0 +1,30 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { Component, RoundedType, SizeType } from '../../utils/types/index.js';
3
+ export type ListVariant = 'filled' | 'outline' | 'text';
4
+ export type ListDensity = 'compact' | 'comfortable' | 'default';
5
+ export type ListElement = 'div' | 'nav' | 'ul';
6
+ export type ListItemElement = 'div' | 'a' | 'button' | 'li';
7
+ export interface ListProps extends Component {
8
+ ref?: HTMLElement | null;
9
+ is?: ListElement;
10
+ size?: SizeType;
11
+ variant?: ListVariant;
12
+ density?: ListDensity;
13
+ rounded?: RoundedType;
14
+ nav?: boolean;
15
+ color?: string;
16
+ background?: string;
17
+ }
18
+ export interface ListItemProps extends Component {
19
+ ref?: HTMLElement | null;
20
+ is?: ListItemElement;
21
+ href?: string;
22
+ append?: Snippet;
23
+ prepend?: Snippet;
24
+ color?: string;
25
+ background?: string;
26
+ rounded?: RoundedType;
27
+ active?: boolean;
28
+ disabled?: boolean;
29
+ noRipple?: boolean;
30
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,195 @@
1
+ <script lang="ts">
2
+ import { ripple } from '../../../animations/index.js';
3
+ import { makeComponentProps } from '../../../compiler/mapped-code.js';
4
+ import { useClassName, useStyles } from '../../../utils/index.js';
5
+ import type { ListItemProps } from '../list.types.js';
6
+
7
+ let {
8
+ ref = $bindable(),
9
+ is = 'div',
10
+ children = undefined,
11
+ class: className = '',
12
+ style: styleAttr = '',
13
+ 's-class': sClass,
14
+ 's-style': sStyle,
15
+ append = undefined,
16
+ prepend = undefined,
17
+ href = undefined,
18
+ color = undefined,
19
+ background = undefined,
20
+ rounded = 'sm',
21
+ active = false,
22
+ disabled = false,
23
+ noRipple = false,
24
+ ...rest
25
+ }: ListItemProps = $props();
26
+
27
+ let { classProps, styleProps, restProps } = $derived(
28
+ makeComponentProps(rest as Record<string, unknown>)
29
+ );
30
+
31
+ let tag = $derived(href ? 'a' : is === 'div' && restProps.onclick ? 'button' : is);
32
+ let isInteractive = $derived(tag !== 'div' && tag !== 'li' && !disabled);
33
+
34
+ let componentClass = $derived(
35
+ useClassName({
36
+ baseClass: 'kit-list-item',
37
+ className: `${className ?? ''}`.trim(),
38
+ sClass,
39
+ classProps
40
+ })
41
+ );
42
+
43
+ let componentStyle = $derived(
44
+ useStyles({
45
+ styleAttr,
46
+ sStyle,
47
+ styleProps
48
+ })
49
+ );
50
+
51
+ let mergedStyle = $derived(
52
+ [
53
+ componentStyle,
54
+ color ? `--kit-list-item-fg:${color}` : '',
55
+ background ? `--kit-list-item-bg:${background}` : ''
56
+ ]
57
+ .filter(Boolean)
58
+ .join('; ')
59
+ );
60
+ </script>
61
+
62
+ <svelte:element
63
+ this={tag}
64
+ bind:this={ref}
65
+ class={componentClass}
66
+ style={mergedStyle}
67
+ href={href && !disabled ? href : undefined}
68
+ data-active={active}
69
+ data-disabled={disabled}
70
+ data-rounded={rounded}
71
+ aria-disabled={disabled || undefined}
72
+ disabled={tag === 'button' ? disabled : undefined}
73
+ tabindex={href && disabled ? -1 : undefined}
74
+ role={tag === 'div' ? 'listitem' : undefined}
75
+ use:ripple={{
76
+ component: 'list-item',
77
+ disabled: noRipple || !isInteractive
78
+ }}
79
+ {...restProps}
80
+ >
81
+ {#if prepend}
82
+ <span class="kit-list-item__prepend">
83
+ {@render prepend?.()}
84
+ </span>
85
+ {/if}
86
+
87
+ <span class="kit-list-item__content">
88
+ {@render children?.()}
89
+ </span>
90
+
91
+ {#if append}
92
+ <span class="kit-list-item__append">
93
+ {@render append?.()}
94
+ </span>
95
+ {/if}
96
+ </svelte:element>
97
+
98
+ <style>
99
+ .kit-list-item {
100
+ --kit-list-item-bg: transparent;
101
+ --kit-list-item-fg: inherit;
102
+ --list-item-shape: 8px;
103
+
104
+ position: relative;
105
+ display: grid;
106
+ grid-template-columns: auto minmax(0, 1fr) auto;
107
+ align-items: center;
108
+ gap: var(--kit-list-item-gap, 0.625rem);
109
+ min-height: var(--kit-list-item-h, 2.75rem);
110
+ padding-inline: var(--kit-list-item-px, 0.875rem);
111
+ border: 0;
112
+ border-radius: var(--list-item-shape);
113
+ background: var(--kit-list-item-bg);
114
+ color: var(--kit-list-item-fg);
115
+ text-decoration: none;
116
+ font: inherit;
117
+ font-size: var(--kit-list-item-font, 0.9375rem);
118
+ text-align: left;
119
+ }
120
+
121
+ .kit-list-item[data-rounded='0'] {
122
+ --list-item-shape: 0;
123
+ }
124
+
125
+ .kit-list-item[data-rounded='xs'] {
126
+ --list-item-shape: 2px;
127
+ }
128
+
129
+ .kit-list-item[data-rounded='sm'] {
130
+ --list-item-shape: 8px;
131
+ }
132
+
133
+ .kit-list-item[data-rounded='md'] {
134
+ --list-item-shape: 12px;
135
+ }
136
+
137
+ .kit-list-item[data-rounded='lg'] {
138
+ --list-item-shape: 16px;
139
+ }
140
+
141
+ .kit-list-item[data-rounded='xl'] {
142
+ --list-item-shape: 9999px;
143
+ }
144
+
145
+ .kit-list[data-variant='filled'] .kit-list-item {
146
+ background: var(--kit-list-item-bg, transparent);
147
+ }
148
+
149
+ .kit-list[data-variant='outline'] .kit-list-item::before {
150
+ content: '';
151
+ position: absolute;
152
+ inset: 0;
153
+ border: 1px solid color-mix(in oklab, currentColor 16%, transparent);
154
+ border-radius: inherit;
155
+ pointer-events: none;
156
+ }
157
+
158
+ .kit-list-item[data-active='true'] {
159
+ background: color-mix(in oklab, currentColor 12%, transparent);
160
+ }
161
+
162
+ .kit-list-item[data-disabled='true'] {
163
+ opacity: 0.45;
164
+ pointer-events: none;
165
+ }
166
+
167
+ .kit-list-item:is(button, a) {
168
+ cursor: pointer;
169
+ }
170
+
171
+ .kit-list-item__prepend,
172
+ .kit-list-item__append,
173
+ .kit-list-item__content {
174
+ display: inline-flex;
175
+ align-items: center;
176
+ min-width: 0;
177
+ }
178
+
179
+ .kit-list-item__content {
180
+ overflow: hidden;
181
+ text-overflow: ellipsis;
182
+ white-space: nowrap;
183
+ }
184
+
185
+ .kit-list-item:is(button, a):hover::after,
186
+ .kit-list-item:is(button, a):focus-visible::after {
187
+ content: '';
188
+ position: absolute;
189
+ inset: 0;
190
+ border-radius: inherit;
191
+ background: currentColor;
192
+ opacity: 0.06;
193
+ pointer-events: none;
194
+ }
195
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { ListItemProps } from '../list.types.ts';
2
+ declare const ListItem: import("svelte").Component<ListItemProps, {}, "ref">;
3
+ type ListItem = ReturnType<typeof ListItem>;
4
+ export default ListItem;
@@ -0,0 +1,188 @@
1
+ <script lang="ts">
2
+ import { useClassName, useStyles, clickOutside } from '../../utils/index.js';
3
+ import { makeComponentProps } from '../../compiler/mapped-code.js';
4
+ import { getPositions } from './popover.svelte.js';
5
+ import type { ModelPopoverProps, PopoverProps } from './popover.types.js';
6
+
7
+ let {
8
+ ref = $bindable(),
9
+ open = $bindable(false),
10
+ children,
11
+ activator,
12
+ dark = false,
13
+ light = false,
14
+ rounded,
15
+ position = 'bottom',
16
+ color,
17
+ background,
18
+ class: className = '',
19
+ style: styleAttr = '',
20
+ 's-class': sClass,
21
+ 's-style': sStyle,
22
+ ...rest
23
+ }: PopoverProps = $props();
24
+
25
+ let safePosition = $derived(
26
+ position === 'top' || position === 'bottom' || position === 'left' || position === 'right'
27
+ ? position
28
+ : 'bottom'
29
+ );
30
+
31
+ let { classProps, styleProps, restProps } = $derived(
32
+ makeComponentProps(rest as Record<string, unknown>)
33
+ );
34
+
35
+ let componentClass = $derived(
36
+ useClassName({
37
+ baseClass: 'kit-popover-content',
38
+ className: `${className ?? ''}`.trim(),
39
+ sClass,
40
+ classProps
41
+ })
42
+ );
43
+
44
+ let componentStyle = $derived(
45
+ useStyles({
46
+ styleAttr,
47
+ sStyle,
48
+ styleProps
49
+ })
50
+ );
51
+
52
+ let mergedStyle = $derived(
53
+ [
54
+ componentStyle,
55
+ background ? `--kit-popover-background:${background}` : '',
56
+ color ? `--kit-popover-color:${color}` : '',
57
+ typeof rounded === 'string' && rounded.includes('px') ? `--kit-popover-radius:${rounded}` : ''
58
+ ]
59
+ .filter(Boolean)
60
+ .join('; ')
61
+ );
62
+
63
+ const positioner = getPositions();
64
+
65
+ let contentRef = $state<HTMLElement | null>(null);
66
+ let activatorRef = $state<HTMLElement | null>(null);
67
+ let axis = $state(positioner.values);
68
+ let innerHeight = $state(0);
69
+ let innerWidth = $state(0);
70
+ let scrollX = $state(0);
71
+ let scrollY = $state(0);
72
+
73
+ const handleToggle = (element: HTMLElement | null) => {
74
+ if (element === null) return;
75
+ activatorRef = element;
76
+ open = !open;
77
+ };
78
+
79
+ let model: ModelPopoverProps = {
80
+ toggle: (element) => handleToggle(element)
81
+ };
82
+
83
+ const updatePosition = () => {
84
+ if (!contentRef || !activatorRef) return;
85
+ positioner.update(activatorRef, contentRef, safePosition, false, true);
86
+ axis = positioner.values;
87
+ };
88
+
89
+ $effect(() => {
90
+ if (open && contentRef && activatorRef) {
91
+ updatePosition();
92
+ }
93
+ });
94
+
95
+ $effect(() => {
96
+ if (
97
+ open &&
98
+ contentRef &&
99
+ activatorRef &&
100
+ (scrollX > 0 || scrollY > 0 || innerHeight > 0 || innerWidth > 0)
101
+ ) {
102
+ updatePosition();
103
+ }
104
+ });
105
+
106
+ $effect(() => {
107
+ if (scrollX || scrollY) open = false;
108
+ });
109
+
110
+ $effect(() => {
111
+ ref = contentRef;
112
+ });
113
+ </script>
114
+
115
+ <svelte:window bind:innerHeight bind:innerWidth bind:scrollX bind:scrollY />
116
+
117
+ {@render activator?.(model)}
118
+
119
+ {#if open}
120
+ <div
121
+ bind:this={contentRef}
122
+ class={componentClass}
123
+ style={`left:${axis.x}px; top:${axis.y}px; ${mergedStyle}`}
124
+ role="dialog"
125
+ data-light={light || undefined}
126
+ data-dark={dark || undefined}
127
+ data-rounded={rounded}
128
+ data-position={axis.location ?? safePosition}
129
+ use:clickOutside={{ exclude: [contentRef, activatorRef], onClose: () => (open = false) }}
130
+ {...restProps}
131
+ >
132
+ {@render children?.()}
133
+ </div>
134
+ {/if}
135
+
136
+ <style>
137
+ .kit-popover-content {
138
+ --kit-popover-background: var(--kit-surface-1);
139
+ --kit-popover-color: var(--kit-fg);
140
+ --kit-popover-radius: 12px;
141
+ --kit-popover-border: color-mix(in oklab, var(--kit-fg), transparent 88%);
142
+ --kit-popover-shadow: 0 18px 40px -18px color-mix(in oklab, black 24%, transparent);
143
+
144
+ position: fixed;
145
+ z-index: 1900;
146
+ display: inline-block;
147
+ width: auto;
148
+ max-width: min(28rem, calc(100vw - 1rem));
149
+ padding: 1rem;
150
+ border: 1px solid var(--kit-popover-border);
151
+ border-radius: var(--kit-popover-radius);
152
+ background: var(--kit-popover-background);
153
+ color: var(--kit-popover-color);
154
+ box-shadow: var(--kit-popover-shadow);
155
+ opacity: 1;
156
+ transition: opacity 140ms ease;
157
+ }
158
+
159
+ .kit-popover-content[data-light='true'] {
160
+ --kit-popover-background: color-mix(in oklab, white 94%, var(--kit-surface-1));
161
+ --kit-popover-color: var(--kit-fg);
162
+ }
163
+
164
+ .kit-popover-content[data-dark='true'] {
165
+ --kit-popover-background: color-mix(in oklab, black 78%, var(--kit-surface-3));
166
+ --kit-popover-color: white;
167
+ --kit-popover-border: color-mix(in oklab, white, transparent 80%);
168
+ }
169
+
170
+ .kit-popover-content[data-rounded='0'] {
171
+ --kit-popover-radius: 0;
172
+ }
173
+ .kit-popover-content[data-rounded='xs'] {
174
+ --kit-popover-radius: 2px;
175
+ }
176
+ .kit-popover-content[data-rounded='sm'] {
177
+ --kit-popover-radius: 4px;
178
+ }
179
+ .kit-popover-content[data-rounded='md'] {
180
+ --kit-popover-radius: 8px;
181
+ }
182
+ .kit-popover-content[data-rounded='lg'] {
183
+ --kit-popover-radius: 16px;
184
+ }
185
+ .kit-popover-content[data-rounded='xl'] {
186
+ --kit-popover-radius: 99999px;
187
+ }
188
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { PopoverProps } from './popover.types.ts';
2
+ declare const Popover: import("svelte").Component<PopoverProps, {}, "ref" | "open">;
3
+ type Popover = ReturnType<typeof Popover>;
4
+ export default Popover;