@michaelthielemann/kestrel 3.0.0 → 3.0.1
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/layers/ui/app/components/field/Repeater.vue +5 -5
- package/layers/ui/app/components/ui/Button.vue +2 -2
- package/layers/ui/app/components/ui/ButtonGroup.vue +2 -2
- package/layers/ui/app/components/ui/Checkbox.vue +2 -2
- package/layers/ui/app/components/ui/Combobox.vue +5 -5
- package/layers/ui/app/components/ui/DatePicker.vue +2 -2
- package/layers/ui/app/components/ui/DateRangePicker.vue +2 -2
- package/layers/ui/app/components/ui/NumberInput.vue +4 -4
- package/layers/ui/app/components/ui/Select.vue +2 -2
- package/layers/ui/app/components/ui/TextInput.vue +4 -4
- package/layers/ui/app/components/ui/Textarea.vue +2 -2
- package/layers/ui/app/components/ui/TimeInput.vue +2 -2
- package/layers/ui/app/components/ui/Toasts.vue +3 -3
- package/package.json +1 -1
|
@@ -239,7 +239,7 @@ function insertRowAt(at: number) {
|
|
|
239
239
|
</template>
|
|
240
240
|
|
|
241
241
|
<style lang="scss">
|
|
242
|
-
@use '../../assets/scss/mixins'
|
|
242
|
+
@use '../../assets/scss/mixins';
|
|
243
243
|
|
|
244
244
|
.ui-repeater {
|
|
245
245
|
display: flex;
|
|
@@ -294,7 +294,7 @@ function insertRowAt(at: number) {
|
|
|
294
294
|
}
|
|
295
295
|
|
|
296
296
|
&__insert {
|
|
297
|
-
@include focus-ring;
|
|
297
|
+
@include mixins.focus-ring;
|
|
298
298
|
position: relative;
|
|
299
299
|
z-index: 1;
|
|
300
300
|
display: flex;
|
|
@@ -388,7 +388,7 @@ function insertRowAt(at: number) {
|
|
|
388
388
|
&__move,
|
|
389
389
|
&__duplicate,
|
|
390
390
|
&__remove {
|
|
391
|
-
@include focus-ring;
|
|
391
|
+
@include mixins.focus-ring;
|
|
392
392
|
display: flex;
|
|
393
393
|
align-items: center;
|
|
394
394
|
justify-content: center;
|
|
@@ -428,7 +428,7 @@ function insertRowAt(at: number) {
|
|
|
428
428
|
}
|
|
429
429
|
|
|
430
430
|
&__add {
|
|
431
|
-
@include focus-ring;
|
|
431
|
+
@include mixins.focus-ring;
|
|
432
432
|
align-self: flex-start;
|
|
433
433
|
border: 1px solid var(--color-border);
|
|
434
434
|
background: var(--color-surface);
|
|
@@ -450,7 +450,7 @@ function insertRowAt(at: number) {
|
|
|
450
450
|
}
|
|
451
451
|
|
|
452
452
|
&__live {
|
|
453
|
-
@include sr-only;
|
|
453
|
+
@include mixins.sr-only;
|
|
454
454
|
}
|
|
455
455
|
|
|
456
456
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -29,10 +29,10 @@ withDefaults(
|
|
|
29
29
|
</template>
|
|
30
30
|
|
|
31
31
|
<style lang="scss">
|
|
32
|
-
@use '../../assets/scss/mixins'
|
|
32
|
+
@use '../../assets/scss/mixins';
|
|
33
33
|
|
|
34
34
|
.ui-button {
|
|
35
|
-
@include focus-ring;
|
|
35
|
+
@include mixins.focus-ring;
|
|
36
36
|
display: inline-flex;
|
|
37
37
|
align-items: center;
|
|
38
38
|
justify-content: center;
|
|
@@ -49,7 +49,7 @@ function onUpdate(v: unknown) {
|
|
|
49
49
|
</template>
|
|
50
50
|
|
|
51
51
|
<style lang="scss">
|
|
52
|
-
@use '../../assets/scss/mixins'
|
|
52
|
+
@use '../../assets/scss/mixins';
|
|
53
53
|
|
|
54
54
|
.ui-btngroup {
|
|
55
55
|
display: inline-flex;
|
|
@@ -62,7 +62,7 @@ function onUpdate(v: unknown) {
|
|
|
62
62
|
width: fit-content;
|
|
63
63
|
|
|
64
64
|
&__item {
|
|
65
|
-
@include focus-ring;
|
|
65
|
+
@include mixins.focus-ring;
|
|
66
66
|
display: inline-flex;
|
|
67
67
|
align-items: center;
|
|
68
68
|
gap: var(--space-1);
|
|
@@ -36,10 +36,10 @@ watch(() => props.indeterminate, syncIndeterminate)
|
|
|
36
36
|
</template>
|
|
37
37
|
|
|
38
38
|
<style lang="scss">
|
|
39
|
-
@use '../../assets/scss/mixins'
|
|
39
|
+
@use '../../assets/scss/mixins';
|
|
40
40
|
|
|
41
41
|
.ui-checkbox {
|
|
42
|
-
@include focus-ring;
|
|
42
|
+
@include mixins.focus-ring;
|
|
43
43
|
width: 1.25rem;
|
|
44
44
|
height: 1.25rem;
|
|
45
45
|
accent-color: var(--color-primary);
|
|
@@ -197,7 +197,7 @@ function moveChip(from: number, to: number) {
|
|
|
197
197
|
</template>
|
|
198
198
|
|
|
199
199
|
<style lang="scss">
|
|
200
|
-
@use '../../assets/scss/mixins'
|
|
200
|
+
@use '../../assets/scss/mixins';
|
|
201
201
|
|
|
202
202
|
.ui-combobox {
|
|
203
203
|
&__anchor {
|
|
@@ -232,7 +232,7 @@ function moveChip(from: number, to: number) {
|
|
|
232
232
|
font-size: var(--text-sm);
|
|
233
233
|
}
|
|
234
234
|
&__chip-remove {
|
|
235
|
-
@include focus-ring;
|
|
235
|
+
@include mixins.focus-ring;
|
|
236
236
|
display: inline-flex;
|
|
237
237
|
align-items: center;
|
|
238
238
|
justify-content: center;
|
|
@@ -246,7 +246,7 @@ function moveChip(from: number, to: number) {
|
|
|
246
246
|
line-height: 1;
|
|
247
247
|
}
|
|
248
248
|
&__chip-move {
|
|
249
|
-
@include focus-ring;
|
|
249
|
+
@include mixins.focus-ring;
|
|
250
250
|
display: inline-flex;
|
|
251
251
|
align-items: center;
|
|
252
252
|
justify-content: center;
|
|
@@ -269,7 +269,7 @@ function moveChip(from: number, to: number) {
|
|
|
269
269
|
|
|
270
270
|
&:disabled { cursor: default; } // stays collapsed (the reveal selector excludes :disabled)
|
|
271
271
|
}
|
|
272
|
-
&__live { @include sr-only; }
|
|
272
|
+
&__live { @include mixins.sr-only; }
|
|
273
273
|
&__chip {
|
|
274
274
|
&:hover,
|
|
275
275
|
&:focus-within {
|
|
@@ -302,7 +302,7 @@ function moveChip(from: number, to: number) {
|
|
|
302
302
|
padding: var(--space-1) 0;
|
|
303
303
|
}
|
|
304
304
|
&__icon {
|
|
305
|
-
@include focus-ring;
|
|
305
|
+
@include mixins.focus-ring;
|
|
306
306
|
border: 0;
|
|
307
307
|
background: transparent;
|
|
308
308
|
cursor: pointer;
|
|
@@ -87,6 +87,6 @@ const value = computed<DateValue | undefined>({
|
|
|
87
87
|
|
|
88
88
|
<style lang="scss">
|
|
89
89
|
// Shared, global (non-scoped) datepicker chrome — the calendar is teleported to <body>.
|
|
90
|
-
@use '../../assets/scss/datepicker'
|
|
91
|
-
@include ui-datepicker;
|
|
90
|
+
@use '../../assets/scss/datepicker';
|
|
91
|
+
@include datepicker.ui-datepicker;
|
|
92
92
|
</style>
|
|
@@ -95,6 +95,6 @@ const value = computed<{ start: DateValue | undefined; end: DateValue | undefine
|
|
|
95
95
|
// Shares the global (non-scoped) datepicker chrome — the calendar is teleported to <body>, so a
|
|
96
96
|
// `scoped` block would silently drop these styles. Included explicitly rather than borrowing them
|
|
97
97
|
// from DatePicker being present on the page.
|
|
98
|
-
@use '../../assets/scss/datepicker'
|
|
99
|
-
@include ui-datepicker;
|
|
98
|
+
@use '../../assets/scss/datepicker';
|
|
99
|
+
@include datepicker.ui-datepicker;
|
|
100
100
|
</style>
|
|
@@ -90,17 +90,17 @@ function onKeydown(e: KeyboardEvent) {
|
|
|
90
90
|
</template>
|
|
91
91
|
|
|
92
92
|
<style lang="scss">
|
|
93
|
-
@use '../../assets/scss/mixins'
|
|
93
|
+
@use '../../assets/scss/mixins';
|
|
94
94
|
|
|
95
95
|
.ui-number {
|
|
96
|
-
@include input-base;
|
|
96
|
+
@include mixins.input-base;
|
|
97
97
|
width: 100%;
|
|
98
98
|
|
|
99
99
|
&::placeholder {
|
|
100
100
|
color: var(--color-text-muted);
|
|
101
101
|
}
|
|
102
102
|
&--slim {
|
|
103
|
-
@include input-slim;
|
|
103
|
+
@include mixins.input-slim;
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
|
|
@@ -166,7 +166,7 @@ function onKeydown(e: KeyboardEvent) {
|
|
|
166
166
|
// separate rule (not nested) so `.ui-number-wrap--slim .ui-number-wrap__input` outranks the base element rule.
|
|
167
167
|
.ui-number-wrap--slim {
|
|
168
168
|
.ui-number-wrap__input {
|
|
169
|
-
@include input-slim;
|
|
169
|
+
@include mixins.input-slim;
|
|
170
170
|
}
|
|
171
171
|
.ui-number-wrap__suffix {
|
|
172
172
|
padding-inline: var(--space-2);
|
|
@@ -27,7 +27,7 @@ const model = defineModel<string | null>()
|
|
|
27
27
|
</template>
|
|
28
28
|
|
|
29
29
|
<style lang="scss">
|
|
30
|
-
@use '../../assets/scss/mixins'
|
|
30
|
+
@use '../../assets/scss/mixins';
|
|
31
31
|
|
|
32
32
|
.ui-select {
|
|
33
33
|
position: relative;
|
|
@@ -35,7 +35,7 @@ const model = defineModel<string | null>()
|
|
|
35
35
|
width: 100%;
|
|
36
36
|
}
|
|
37
37
|
.ui-select__field {
|
|
38
|
-
@include input-base;
|
|
38
|
+
@include mixins.input-base;
|
|
39
39
|
width: 100%;
|
|
40
40
|
appearance: none;
|
|
41
41
|
// leave room for the overlaid chevron so long values don't run under it
|
|
@@ -55,7 +55,7 @@ const inputType = computed(() => (revealable.value && revealed.value ? 'text' :
|
|
|
55
55
|
</template>
|
|
56
56
|
|
|
57
57
|
<style lang="scss">
|
|
58
|
-
@use '../../assets/scss/mixins'
|
|
58
|
+
@use '../../assets/scss/mixins';
|
|
59
59
|
|
|
60
60
|
.ui-input-wrap {
|
|
61
61
|
position: relative;
|
|
@@ -64,7 +64,7 @@ const inputType = computed(() => (revealable.value && revealed.value ? 'text' :
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
.ui-input {
|
|
67
|
-
@include input-base;
|
|
67
|
+
@include mixins.input-base;
|
|
68
68
|
width: 100%;
|
|
69
69
|
|
|
70
70
|
&::placeholder {
|
|
@@ -72,7 +72,7 @@ const inputType = computed(() => (revealable.value && revealed.value ? 'text' :
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
&--slim {
|
|
75
|
-
@include input-slim;
|
|
75
|
+
@include mixins.input-slim;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
// Leave room for the inset reveal button so the value never sits under it. Declared after `--slim` so a
|
|
@@ -83,7 +83,7 @@ const inputType = computed(() => (revealable.value && revealed.value ? 'text' :
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
.ui-input__reveal {
|
|
86
|
-
@include focus-ring;
|
|
86
|
+
@include mixins.focus-ring;
|
|
87
87
|
position: absolute;
|
|
88
88
|
inset-block: 1px;
|
|
89
89
|
inset-inline-end: 1px;
|
|
@@ -23,10 +23,10 @@ const model = defineModel<string | null>()
|
|
|
23
23
|
</template>
|
|
24
24
|
|
|
25
25
|
<style lang="scss">
|
|
26
|
-
@use '../../assets/scss/mixins'
|
|
26
|
+
@use '../../assets/scss/mixins';
|
|
27
27
|
|
|
28
28
|
.ui-textarea {
|
|
29
|
-
@include input-base;
|
|
29
|
+
@include mixins.input-base;
|
|
30
30
|
width: 100%;
|
|
31
31
|
font-family: inherit;
|
|
32
32
|
line-height: var(--leading-normal);
|
|
@@ -39,9 +39,9 @@ const { t } = useT()
|
|
|
39
39
|
</template>
|
|
40
40
|
|
|
41
41
|
<style lang="scss">
|
|
42
|
-
@use '../../assets/scss/mixins'
|
|
42
|
+
@use '../../assets/scss/mixins';
|
|
43
43
|
|
|
44
|
-
.ui-toasts__live { @include sr-only; }
|
|
44
|
+
.ui-toasts__live { @include mixins.sr-only; }
|
|
45
45
|
|
|
46
46
|
.ui-toasts {
|
|
47
47
|
position: fixed;
|
|
@@ -76,7 +76,7 @@ const { t } = useT()
|
|
|
76
76
|
&__msg { flex: 1 1 auto; min-width: 0; }
|
|
77
77
|
|
|
78
78
|
&__close {
|
|
79
|
-
@include focus-ring;
|
|
79
|
+
@include mixins.focus-ring;
|
|
80
80
|
flex-shrink: 0;
|
|
81
81
|
display: inline-flex;
|
|
82
82
|
padding: var(--space-1);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@michaelthielemann/kestrel",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "A slim, collection-driven Nuxt 4 CMS meta-layer with a runtime schema engine. Add `extends: ['@michaelthielemann/kestrel']`, define collections, and the database migrates itself.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Michael Thielemann <283621694+MichaelThielemann@users.noreply.github.com>",
|