lapikit 0.6.1 → 0.6.3
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/@types/actions.d.ts +13 -0
- package/dist/@types/props.d.ts +7 -0
- package/dist/components/app/app.svelte +161 -114
- package/dist/components/app/app.svelte.d.ts +2 -4
- package/dist/components/app/app.types.d.ts +4 -0
- package/dist/components/app/app.types.js +1 -0
- package/dist/components/card/card.svelte +16 -11
- package/dist/components/card/card.types.d.ts +2 -1
- package/dist/components/card/modules/card-title.svelte +4 -0
- package/dist/components/list/list.svelte +126 -93
- package/dist/components/list/list.types.d.ts +4 -5
- package/dist/components/list/modules/list-item.svelte +104 -66
- package/dist/components/textfield/textfield.svelte.d.ts +1 -1
- package/dist/hooks/actions.d.ts +2 -0
- package/dist/hooks/actions.js +2 -0
- package/dist/hooks/themes.svelte.d.ts +12 -0
- package/dist/hooks/themes.svelte.js +125 -0
- package/dist/utils/components.d.ts +8 -1
- package/dist/utils/components.js +19 -0
- package/package.json +2 -2
- package/dist/actions.d.ts +0 -2
- package/dist/actions.js +0 -2
- package/dist/utils/themes.d.ts +0 -3
- package/dist/utils/themes.js +0 -21
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { makeComponentProps } from '../../html-mapped';
|
|
3
3
|
import { useClassName, useStyles } from '../../utils';
|
|
4
|
-
import type {
|
|
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
|
-
}
|
|
4
|
+
import type { ListProps } from './list.types.js';
|
|
15
5
|
|
|
16
6
|
let {
|
|
17
7
|
ref = $bindable(),
|
|
@@ -26,8 +16,8 @@
|
|
|
26
16
|
density = 'default',
|
|
27
17
|
rounded = 'md',
|
|
28
18
|
nav = false,
|
|
29
|
-
color
|
|
30
|
-
background
|
|
19
|
+
color,
|
|
20
|
+
background,
|
|
31
21
|
...rest
|
|
32
22
|
}: ListProps = $props();
|
|
33
23
|
|
|
@@ -52,24 +42,7 @@
|
|
|
52
42
|
})
|
|
53
43
|
);
|
|
54
44
|
|
|
55
|
-
let
|
|
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
|
-
);
|
|
45
|
+
let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
|
|
73
46
|
</script>
|
|
74
47
|
|
|
75
48
|
<svelte:element
|
|
@@ -77,12 +50,14 @@
|
|
|
77
50
|
bind:this={ref}
|
|
78
51
|
class={componentClass}
|
|
79
52
|
style={mergedStyle}
|
|
80
|
-
data-size={
|
|
81
|
-
data-variant={
|
|
82
|
-
data-density={
|
|
53
|
+
data-size={size}
|
|
54
|
+
data-variant={variant}
|
|
55
|
+
data-density={density}
|
|
83
56
|
data-rounded={rounded}
|
|
84
57
|
data-nav={nav}
|
|
85
58
|
role={nav ? 'navigation' : is === 'ul' ? undefined : 'list'}
|
|
59
|
+
style:--kit-list-item-fg={color && `var(--kit-color-${color})`}
|
|
60
|
+
style:--kit-list-item-bg={background && `var(--kit-color-${background})`}
|
|
86
61
|
{...restProps}
|
|
87
62
|
>
|
|
88
63
|
{@render children?.()}
|
|
@@ -90,87 +65,145 @@
|
|
|
90
65
|
|
|
91
66
|
<style>
|
|
92
67
|
.kit-list {
|
|
93
|
-
|
|
94
|
-
--kit-list-fg: var(--kit-fg);
|
|
95
|
-
--kit-list-bd: var(--kit-border);
|
|
96
|
-
--kit-list-radius: 10px;
|
|
97
|
-
--kit-list-item-h-xs: 2.125rem;
|
|
98
|
-
--kit-list-item-h-sm: 2.375rem;
|
|
99
|
-
--kit-list-item-h-md: 2.75rem;
|
|
100
|
-
--kit-list-item-h-lg: 3.125rem;
|
|
101
|
-
--kit-list-item-h-xl: 3.5rem;
|
|
102
|
-
--kit-list-item-px-xs: 0.625rem;
|
|
103
|
-
--kit-list-item-px-sm: 0.75rem;
|
|
104
|
-
--kit-list-item-px-md: 0.875rem;
|
|
105
|
-
--kit-list-item-px-lg: 1rem;
|
|
106
|
-
--kit-list-item-px-xl: 1.125rem;
|
|
107
|
-
--kit-list-item-gap-xs: 0.5rem;
|
|
108
|
-
--kit-list-item-gap-sm: 0.5rem;
|
|
109
|
-
--kit-list-item-gap-md: 0.625rem;
|
|
110
|
-
--kit-list-item-gap-lg: 0.75rem;
|
|
111
|
-
--kit-list-item-gap-xl: 0.875rem;
|
|
112
|
-
--kit-list-item-font-xs: 0.75rem;
|
|
113
|
-
--kit-list-item-font-sm: 0.875rem;
|
|
114
|
-
--kit-list-item-font-md: 0.9375rem;
|
|
115
|
-
--kit-list-item-font-lg: 1rem;
|
|
116
|
-
--kit-list-item-font-xl: 1.0625rem;
|
|
117
|
-
--kit-list-item-h: var(--kit-list-item-h-md);
|
|
118
|
-
--kit-list-item-px: var(--kit-list-item-px-md);
|
|
119
|
-
--kit-list-item-gap: var(--kit-list-item-gap-md);
|
|
120
|
-
--kit-list-item-font: var(--kit-list-item-font-md);
|
|
121
|
-
--kit-list-density-offset: 0rem;
|
|
122
|
-
|
|
68
|
+
width: 100%;
|
|
123
69
|
display: flex;
|
|
70
|
+
position: relative;
|
|
124
71
|
flex-direction: column;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
72
|
+
gap: 0;
|
|
73
|
+
border: 0;
|
|
74
|
+
box-sizing: border-box;
|
|
75
|
+
transition:
|
|
76
|
+
background 140ms ease,
|
|
77
|
+
color 140ms ease,
|
|
78
|
+
box-shadow 140ms ease,
|
|
79
|
+
translate 140ms ease;
|
|
131
80
|
}
|
|
132
81
|
|
|
133
|
-
.kit-list[data-
|
|
134
|
-
|
|
82
|
+
.kit-list[data-variant='text']
|
|
83
|
+
:global(.kit-list-item[data-interactive='true'][data-active='true'][data-disabled='false']),
|
|
84
|
+
.kit-list[data-variant='text']
|
|
85
|
+
:global(.kit-list-item[data-interactive='true'][data-disabled='false']:active) {
|
|
86
|
+
background: var(--kit-list-item-active-bg);
|
|
135
87
|
}
|
|
136
88
|
|
|
89
|
+
/**
|
|
90
|
+
* density
|
|
91
|
+
* @link https://lapikit.dev/docs/components/list#density
|
|
92
|
+
*/
|
|
93
|
+
.kit-list[data-density='none'] {
|
|
94
|
+
--kit-list-density-scale: 0;
|
|
95
|
+
--kit-list-density-h-scale: 0;
|
|
96
|
+
}
|
|
137
97
|
.kit-list[data-density='compact'] {
|
|
138
|
-
--kit-list-density-
|
|
98
|
+
--kit-list-density-scale: 0.9;
|
|
99
|
+
--kit-list-density-h-scale: 0.92;
|
|
100
|
+
}
|
|
101
|
+
.kit-list[data-density='default'] {
|
|
102
|
+
--kit-list-density-scale: 1;
|
|
103
|
+
--kit-list-density-h-scale: 1;
|
|
139
104
|
}
|
|
140
|
-
|
|
141
105
|
.kit-list[data-density='comfortable'] {
|
|
142
|
-
--kit-list-density-
|
|
106
|
+
--kit-list-density-scale: 1.1;
|
|
107
|
+
--kit-list-density-h-scale: 1.15;
|
|
143
108
|
}
|
|
144
109
|
|
|
145
|
-
|
|
146
|
-
|
|
110
|
+
/**
|
|
111
|
+
* rounded
|
|
112
|
+
* @link ...
|
|
113
|
+
*/
|
|
114
|
+
.kit-list[data-rounded='0'] :global(.kit-list-item) {
|
|
115
|
+
--kit-list-item-radius: var(--kit-shape-none);
|
|
147
116
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
--kit-list-radius: 2px;
|
|
117
|
+
.kit-list[data-rounded='xs'] :global(.kit-list-item) {
|
|
118
|
+
--kit-list-item-radius: var(--kit-shape-xs);
|
|
151
119
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
120
|
+
.kit-list[data-rounded='sm'] :global(.kit-list-item) {
|
|
121
|
+
--kit-list-item-radius: var(--kit-shape-sm);
|
|
122
|
+
}
|
|
123
|
+
.kit-list[data-rounded='md'] :global(.kit-list-item) {
|
|
124
|
+
--kit-list-item-radius: var(--kit-shape-md);
|
|
125
|
+
}
|
|
126
|
+
.kit-list[data-rounded='lg'] :global(.kit-list-item) {
|
|
127
|
+
--kit-list-item-radius: var(--kit-shape-lg);
|
|
155
128
|
}
|
|
129
|
+
.kit-list[data-rounded='xl'] :global(.kit-list-item) {
|
|
130
|
+
--kit-list-item-radius: var(--kit-shape-xl);
|
|
131
|
+
}
|
|
132
|
+
.kit-list[data-rounded='full'] :global(.kit-list-item) {
|
|
133
|
+
--kit-list-item-radius: var(--kit-shape-full);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* variant
|
|
138
|
+
* @link https://lapikit.dev/docs/components/list#variants
|
|
139
|
+
*/
|
|
140
|
+
.kit-list[data-variant='filled'] :global(.kit-list-item) {
|
|
141
|
+
--kit-list-item-bg: var(--kit-color-surface-2);
|
|
142
|
+
--kit-list-item-fg: var(--kit-color-text);
|
|
156
143
|
|
|
157
|
-
|
|
158
|
-
--kit-list-
|
|
144
|
+
--kit-list-item-hover-bg: color-mix(in oklab, var(---kit-list-item-bg), black 10%);
|
|
145
|
+
--kit-list-item-active-bg: color-mix(in oklab, var(--kit-list-item-bg), black 16%);
|
|
159
146
|
}
|
|
147
|
+
.kit-list[data-variant='outline'] :global(.kit-list-item) {
|
|
148
|
+
--kit-list-item-bg: transparent;
|
|
149
|
+
--kit-list-item-fg: var(--kit-color-text);
|
|
150
|
+
--kit-list-item-bd: var(--kit-list-item-fg);
|
|
160
151
|
|
|
161
|
-
|
|
162
|
-
--kit-list-
|
|
152
|
+
--kit-list-item-hover-bg: color-mix(in oklab, var(--kit-list-item-fg), transparent 80%);
|
|
153
|
+
--kit-list-item-active-bg: color-mix(in oklab, var(--kit-list-item-fg), transparent 92%);
|
|
163
154
|
}
|
|
155
|
+
.kit-list[data-variant='text'] :global(.kit-list-item) {
|
|
156
|
+
--kit-list-item-bg: transparent;
|
|
157
|
+
--kit-list-item-fg: var(--kit-color-text);
|
|
164
158
|
|
|
165
|
-
|
|
166
|
-
--kit-list-
|
|
159
|
+
--kit-list-item-hover-bg: color-mix(in oklab, var(--kit-list-item-fg), transparent 80%);
|
|
160
|
+
--kit-list-item-active-bg: color-mix(in oklab, var(--kit-list-item-fg), transparent 92%);
|
|
161
|
+
}
|
|
162
|
+
.kit-list[data-variant='text'] :global(.kit-list-item .outline),
|
|
163
|
+
.kit-list[data-variant='filled'] :global(.kit-list-item .outline) {
|
|
164
|
+
display: none;
|
|
167
165
|
}
|
|
168
166
|
|
|
169
|
-
|
|
170
|
-
|
|
167
|
+
/**
|
|
168
|
+
* nav
|
|
169
|
+
* @link https://lapikit.dev/docs/components/list#nav
|
|
170
|
+
*/
|
|
171
|
+
.kit-list[data-nav='true'] {
|
|
172
|
+
padding: 0.5rem;
|
|
171
173
|
}
|
|
172
174
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
+
/**
|
|
176
|
+
* size
|
|
177
|
+
* @link nothing...
|
|
178
|
+
*/
|
|
179
|
+
.kit-list[data-size='xs'] :global(.kit-list-item) {
|
|
180
|
+
--kit-list-item-h: 28px;
|
|
181
|
+
--kit-list-item-px: 10px;
|
|
182
|
+
--kit-list-item-gap: 4px;
|
|
183
|
+
--kit-list-item-font: 0.75rem;
|
|
184
|
+
}
|
|
185
|
+
.kit-list[data-size='sm'] :global(.kit-list-item) {
|
|
186
|
+
--kit-list-item-h: 32px;
|
|
187
|
+
--kit-list-item-px: 12px;
|
|
188
|
+
--kit-list-item-gap: 6px;
|
|
189
|
+
--kit-list-item-font: 0.875rem;
|
|
190
|
+
}
|
|
191
|
+
.kit-list[data-size='md'] :global(.kit-list-item) {
|
|
192
|
+
--kit-list-item-h: 40px;
|
|
193
|
+
--kit-list-item-px: 16px;
|
|
194
|
+
--kit-list-item-gap: 8px;
|
|
195
|
+
--kit-list-item-font: 1rem;
|
|
196
|
+
}
|
|
197
|
+
.kit-list[data-size='lg'] :global(.kit-list-item) {
|
|
198
|
+
--kit-list-item-h: 48px;
|
|
199
|
+
--kit-list-item-px: 20px;
|
|
200
|
+
--kit-list-item-gap: 10px;
|
|
201
|
+
--kit-list-item-font: 1.125rem;
|
|
202
|
+
}
|
|
203
|
+
.kit-list[data-size='xl'] :global(.kit-list-item) {
|
|
204
|
+
--kit-list-item-h: 56px;
|
|
205
|
+
--kit-list-item-px: 24px;
|
|
206
|
+
--kit-list-item-gap: 12px;
|
|
207
|
+
--kit-list-item-font: 1.25rem;
|
|
175
208
|
}
|
|
176
209
|
</style>
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Snippet } from 'svelte';
|
|
2
|
-
import type { Component, RoundedType, SizeType } from '../../@types';
|
|
2
|
+
import type { Component, DensityType, RoundedType, SizeType } from '../../@types';
|
|
3
3
|
export type ListVariant = 'filled' | 'outline' | 'text';
|
|
4
|
-
export type ListDensity = 'compact' | 'comfortable' | 'default';
|
|
5
4
|
export type ListElement = 'div' | 'nav' | 'ul';
|
|
6
5
|
export type ListItemElement = 'div' | 'a' | 'button' | 'li';
|
|
7
6
|
export interface ListProps extends Component {
|
|
@@ -9,8 +8,8 @@ export interface ListProps extends Component {
|
|
|
9
8
|
is?: ListElement;
|
|
10
9
|
size?: SizeType;
|
|
11
10
|
variant?: ListVariant;
|
|
12
|
-
density?:
|
|
13
|
-
rounded?: RoundedType;
|
|
11
|
+
density?: DensityType;
|
|
12
|
+
rounded?: RoundedType | 'full';
|
|
14
13
|
nav?: boolean;
|
|
15
14
|
color?: string;
|
|
16
15
|
background?: string;
|
|
@@ -23,7 +22,7 @@ export interface ListItemProps extends Component {
|
|
|
23
22
|
prepend?: Snippet;
|
|
24
23
|
color?: string;
|
|
25
24
|
background?: string;
|
|
26
|
-
|
|
25
|
+
interactive?: boolean;
|
|
27
26
|
active?: boolean;
|
|
28
27
|
disabled?: boolean;
|
|
29
28
|
noRipple?: boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { ripple } from '../../../animations';
|
|
3
3
|
import { makeComponentProps } from '../../../html-mapped';
|
|
4
|
-
import { useClassName, useStyles } from '../../../utils';
|
|
4
|
+
import { useClassName, useIsInteractive, useStyles } from '../../../utils';
|
|
5
5
|
import type { ListItemProps } from '../list.types.js';
|
|
6
6
|
|
|
7
7
|
let {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
href = undefined,
|
|
18
18
|
color = undefined,
|
|
19
19
|
background = undefined,
|
|
20
|
-
|
|
20
|
+
interactive = false,
|
|
21
21
|
active = false,
|
|
22
22
|
disabled = false,
|
|
23
23
|
noRipple = false,
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
);
|
|
30
30
|
|
|
31
31
|
let tag = $derived(href ? 'a' : is === 'div' && restProps.onclick ? 'button' : is);
|
|
32
|
-
let isInteractive = $derived(tag !== 'div' && tag !== 'li' && !disabled);
|
|
32
|
+
// let isInteractive = $derived(tag !== 'div' && tag !== 'li' && !disabled);
|
|
33
|
+
let isInteractive = $derived(useIsInteractive(rest, tag, ['a', 'button'], interactive));
|
|
33
34
|
|
|
34
35
|
let componentClass = $derived(
|
|
35
36
|
useClassName({
|
|
@@ -48,15 +49,7 @@
|
|
|
48
49
|
})
|
|
49
50
|
);
|
|
50
51
|
|
|
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
|
-
);
|
|
52
|
+
let mergedStyle = $derived([componentStyle].filter(Boolean).join('; '));
|
|
60
53
|
</script>
|
|
61
54
|
|
|
62
55
|
<svelte:element
|
|
@@ -67,17 +60,22 @@
|
|
|
67
60
|
href={href && !disabled ? href : undefined}
|
|
68
61
|
data-active={active}
|
|
69
62
|
data-disabled={disabled}
|
|
70
|
-
data-rounded={rounded}
|
|
71
63
|
aria-disabled={disabled || undefined}
|
|
72
64
|
disabled={tag === 'button' ? disabled : undefined}
|
|
73
65
|
tabindex={href && disabled ? -1 : undefined}
|
|
74
66
|
role={tag === 'div' ? 'listitem' : undefined}
|
|
67
|
+
data-append={append && true}
|
|
68
|
+
data-prepend={prepend && true}
|
|
69
|
+
data-interactive={isInteractive}
|
|
70
|
+
style:--kit-list-item-fg={color && `var(--kit-color-${color})`}
|
|
71
|
+
style:--kit-list-item-bg={background && `var(--kit-color-${background})`}
|
|
75
72
|
use:ripple={{
|
|
76
73
|
component: 'list-item',
|
|
77
74
|
disabled: noRipple || !isInteractive
|
|
78
75
|
}}
|
|
79
76
|
{...restProps}
|
|
80
77
|
>
|
|
78
|
+
<span class="outline"></span>
|
|
81
79
|
{#if prepend}
|
|
82
80
|
<span class="kit-list-item__prepend">
|
|
83
81
|
{@render prepend?.()}
|
|
@@ -97,104 +95,144 @@
|
|
|
97
95
|
|
|
98
96
|
<style>
|
|
99
97
|
.kit-list-item {
|
|
100
|
-
|
|
101
|
-
--kit-list-item-
|
|
102
|
-
--kit-list-item-radius: 8px;
|
|
103
|
-
|
|
98
|
+
width: 100%;
|
|
99
|
+
min-height: calc(var(--kit-list-item-h) * var(--kit-list-density-h-scale));
|
|
104
100
|
position: relative;
|
|
105
101
|
display: grid;
|
|
106
|
-
grid-template-columns:
|
|
102
|
+
grid-template-columns: 1fr;
|
|
107
103
|
align-items: center;
|
|
108
|
-
gap: var(--kit-list-item-gap
|
|
109
|
-
min-height: calc(var(--kit-list-item-h, 2.75rem) + var(--kit-list-density-offset, 0rem));
|
|
110
|
-
padding-inline: var(--kit-list-item-px, 0.875rem);
|
|
111
|
-
border: 0;
|
|
104
|
+
gap: var(--kit-list-item-gap);
|
|
112
105
|
border-radius: var(--kit-list-item-radius);
|
|
106
|
+
border: 0;
|
|
113
107
|
background: var(--kit-list-item-bg);
|
|
114
108
|
color: var(--kit-list-item-fg);
|
|
115
109
|
text-decoration: none;
|
|
110
|
+
font-size: var(--kit-list-item-font);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.kit-list-item .kit-list-item__prepend,
|
|
114
|
+
.kit-list-item:not([data-prepend='true']) .kit-list-item__content {
|
|
115
|
+
margin-left: calc(var(--kit-list-item-px) * var(--kit-list-density-scale));
|
|
116
|
+
}
|
|
117
|
+
.kit-list-item .kit-list-item__append,
|
|
118
|
+
.kit-list-item:not([data-append='true']) .kit-list-item__content {
|
|
119
|
+
margin-right: calc(var(--kit-list-item-px) * var(--kit-list-density-scale));
|
|
120
|
+
}
|
|
121
|
+
.kit-list-item:not([data-prepend='true']):not([data-append='true']) .kit-list-item__content {
|
|
122
|
+
margin-left: calc(var(--kit-list-item-px) * var(--kit-list-density-scale));
|
|
123
|
+
margin-right: calc(var(--kit-list-item-px) * var(--kit-list-density-scale));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.kit-list-item[data-prepend='true']:not([data-append='true']) {
|
|
127
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
128
|
+
}
|
|
129
|
+
.kit-list-item[data-append='true']:not([data-prepend='true']) {
|
|
130
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
131
|
+
}
|
|
132
|
+
.kit-list-item[data-append='true'][data-prepend='true'] {
|
|
133
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
a.kit-list-item {
|
|
137
|
+
text-decoration: none;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
button.kit-list-item {
|
|
141
|
+
appearance: none;
|
|
142
|
+
border: 0;
|
|
116
143
|
font: inherit;
|
|
117
|
-
|
|
118
|
-
|
|
144
|
+
text-align: inherit;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.kit-list-item[data-interactive='true'][data-disabled='false'] {
|
|
148
|
+
cursor: pointer;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.kit-list-item[data-interactive='true'][data-disabled='false']:hover {
|
|
152
|
+
translate: 0 -1px;
|
|
153
|
+
background: var(--kit-list-item-hover-bg);
|
|
154
|
+
}
|
|
155
|
+
.kit-list-item[data-active='true'][data-disabled='false'] {
|
|
156
|
+
translate: 0 0;
|
|
157
|
+
background: var(--kit-list-item-active-bg);
|
|
158
|
+
}
|
|
159
|
+
.kit-list-item[data-interactive='true'][data-disabled='false']:active {
|
|
160
|
+
translate: 0 0;
|
|
161
|
+
background: var(--kit-list-item-active-bg);
|
|
119
162
|
}
|
|
120
163
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
--kit-list-item-gap: var(--kit-list-item-gap-xs, 0.5rem);
|
|
125
|
-
--kit-list-item-font: var(--kit-list-item-font-xs, 0.75rem);
|
|
164
|
+
.kit-list-item[data-interactive='true'][data-disabled='false']:focus-visible {
|
|
165
|
+
outline: 2px solid var(--kit-focus);
|
|
166
|
+
outline-offset: 2px;
|
|
126
167
|
}
|
|
127
168
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
--kit-list-item-gap: var(--kit-list-item-gap-sm, 0.5rem);
|
|
132
|
-
--kit-list-item-font: var(--kit-list-item-font-sm, 0.875rem);
|
|
169
|
+
.kit-list-item[data-disabled='true'] {
|
|
170
|
+
opacity: var(--kit-disabled-opacity, 0.55);
|
|
171
|
+
pointer-events: none;
|
|
133
172
|
}
|
|
134
173
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
174
|
+
.kit-list-item__prepend,
|
|
175
|
+
.kit-list-item__append,
|
|
176
|
+
.kit-list-item__content {
|
|
177
|
+
display: inline-flex;
|
|
178
|
+
align-items: center;
|
|
179
|
+
min-width: 0;
|
|
140
180
|
}
|
|
141
181
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
--kit-list-item-font: var(--kit-list-item-font-lg, 1rem);
|
|
182
|
+
.kit-list-item__content {
|
|
183
|
+
overflow: hidden;
|
|
184
|
+
text-overflow: ellipsis;
|
|
185
|
+
white-space: nowrap;
|
|
147
186
|
}
|
|
148
187
|
|
|
149
|
-
|
|
150
|
-
--
|
|
151
|
-
--kit-list-item-px: var(--kit-list-item-px-xl, 1.125rem);
|
|
152
|
-
--kit-list-item-gap: var(--kit-list-item-gap-xl, 0.875rem);
|
|
153
|
-
--kit-list-item-font: var(--kit-list-item-font-xl, 1.0625rem);
|
|
188
|
+
.kit-list-item .outline {
|
|
189
|
+
--outline-color: var(--kit-list-item-bd);
|
|
154
190
|
}
|
|
155
191
|
|
|
192
|
+
/**
|
|
193
|
+
* rounded
|
|
194
|
+
* @link ...
|
|
195
|
+
*/
|
|
156
196
|
.kit-list-item[data-rounded='0'] {
|
|
157
|
-
--kit-list-item-radius:
|
|
197
|
+
--kit-list-item-radius: var(--kit-shape-none);
|
|
158
198
|
}
|
|
159
|
-
|
|
160
199
|
.kit-list-item[data-rounded='xs'] {
|
|
161
|
-
--kit-list-item-radius:
|
|
200
|
+
--kit-list-item-radius: var(--kit-shape-xs);
|
|
162
201
|
}
|
|
163
|
-
|
|
164
202
|
.kit-list-item[data-rounded='sm'] {
|
|
165
|
-
--kit-list-item-radius:
|
|
203
|
+
--kit-list-item-radius: var(--kit-shape-sm);
|
|
166
204
|
}
|
|
167
|
-
|
|
168
205
|
.kit-list-item[data-rounded='md'] {
|
|
169
|
-
--kit-list-item-radius:
|
|
206
|
+
--kit-list-item-radius: var(--kit-shape-md);
|
|
170
207
|
}
|
|
171
|
-
|
|
172
208
|
.kit-list-item[data-rounded='lg'] {
|
|
173
|
-
--kit-list-item-radius:
|
|
209
|
+
--kit-list-item-radius: var(--kit-shape-lg);
|
|
174
210
|
}
|
|
175
|
-
|
|
176
211
|
.kit-list-item[data-rounded='xl'] {
|
|
177
|
-
--kit-list-item-radius:
|
|
212
|
+
--kit-list-item-radius: var(--kit-shape-xl);
|
|
213
|
+
}
|
|
214
|
+
.kit-list-item[data-rounded='full'] {
|
|
215
|
+
--kit-list-item-radius: var(--kit-shape-full);
|
|
178
216
|
}
|
|
179
217
|
|
|
180
|
-
:global(.kit-list[data-variant='filled']) .kit-list-item {
|
|
218
|
+
/* :global(.kit-list[data-variant='filled']) .kit-list-item {
|
|
181
219
|
background: var(--kit-list-item-bg, transparent);
|
|
182
220
|
}
|
|
183
221
|
|
|
184
222
|
:global(.kit-list[data-variant='filled']) .kit-list-item[data-active='true'] {
|
|
185
223
|
background: color-mix(in oklab, currentColor 12%, transparent);
|
|
186
|
-
}
|
|
224
|
+
} */
|
|
187
225
|
|
|
188
|
-
:global(.kit-list[data-variant='outline']) .kit-list-item::before {
|
|
226
|
+
/* :global(.kit-list[data-variant='outline']) .kit-list-item::before {
|
|
189
227
|
content: '';
|
|
190
228
|
position: absolute;
|
|
191
229
|
inset: 0;
|
|
192
230
|
border: 1px solid color-mix(in oklab, currentColor 16%, transparent);
|
|
193
231
|
border-radius: inherit;
|
|
194
232
|
pointer-events: none;
|
|
195
|
-
}
|
|
233
|
+
} */
|
|
196
234
|
|
|
197
|
-
.kit-list-item[data-active='true'] {
|
|
235
|
+
/* .kit-list-item[data-active='true'] {
|
|
198
236
|
background: color-mix(in oklab, currentColor 12%, transparent);
|
|
199
237
|
}
|
|
200
238
|
|
|
@@ -230,5 +268,5 @@
|
|
|
230
268
|
background: currentColor;
|
|
231
269
|
opacity: 0.06;
|
|
232
270
|
pointer-events: none;
|
|
233
|
-
}
|
|
271
|
+
} */
|
|
234
272
|
</style>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { TextfieldProps } from './textfield.types.ts';
|
|
2
|
-
declare const Textfield: import("svelte").Component<TextfieldProps, {}, "
|
|
2
|
+
declare const Textfield: import("svelte").Component<TextfieldProps, {}, "ref" | "value">;
|
|
3
3
|
type Textfield = ReturnType<typeof Textfield>;
|
|
4
4
|
export default Textfield;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ThemeOptions, ThemeAction } from '../@types';
|
|
2
|
+
export declare const useTheme: (name: string) => void;
|
|
3
|
+
export declare function createGlobalTheme(params?: ThemeOptions): {
|
|
4
|
+
readonly active: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function createTheme(): ThemeAction;
|
|
7
|
+
/** LEGACY CODE
|
|
8
|
+
* NEED UPDATE documentation with new theme system before removing this legacy code. The new theme system is designed to be more flexible and easier to use, allowing for better integration with Svelte's reactivity and component structure. It also provides a more consistent API for managing themes across different components and contexts.
|
|
9
|
+
* TODO: Remove this legacy code once the new theme system is fully implemented and tested. This code is kept for backward compatibility with existing components that rely on the old theme system.
|
|
10
|
+
*/
|
|
11
|
+
import { type Writable } from 'svelte/store';
|
|
12
|
+
export declare const theme: Writable<string>;
|