@una-ui/nuxt-edge 0.61.0-29182246.bc2c328 → 1.0.0-alpha.0-29173950.b6a8c03
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/module.json +1 -1
- package/dist/module.mjs +2 -2
- package/dist/runtime/components/alert-dialog/AlertDialogCancel.vue +1 -1
- package/dist/runtime/components/combobox/Combobox.vue +2 -1
- package/dist/runtime/components/combobox/ComboboxTrigger.vue +1 -1
- package/dist/runtime/components/data/table/Table.vue +0 -1
- package/dist/runtime/components/elements/Skeleton.vue +1 -1
- package/dist/runtime/components/elements/Skeleton.vue.d.ts +3 -1
- package/dist/runtime/components/elements/tabs/TabsTrigger.vue +1 -1
- package/dist/runtime/components/forms/Checkbox.vue +2 -2
- package/dist/runtime/components/forms/Checkbox.vue.d.ts +2 -0
- package/dist/runtime/components/forms/FormGroup.vue +1 -1
- package/dist/runtime/components/forms/Slider.vue +13 -11
- package/dist/runtime/components/forms/Slider.vue.d.ts +1 -0
- package/dist/runtime/components/forms/form/FormField.vue +1 -1
- package/dist/runtime/components/forms/select/SelectTrigger.vue +1 -1
- package/dist/runtime/components/misc/ThemeSwitcher.vue +75 -17
- package/dist/runtime/components/navigation/breadcrumb/BreadcrumbPage.vue +1 -1
- package/dist/runtime/components/sidebar/SidebarMenuSubButton.vue +2 -1
- package/dist/runtime/composables/useUnaSettings.js +11 -7
- package/dist/runtime/composables/useUnaThemes.d.ts +77 -5
- package/dist/runtime/composables/useUnaThemes.js +414 -98
- package/dist/runtime/plugins/theme.client.js +12 -0
- package/dist/runtime/plugins/theme.server.js +9 -0
- package/dist/runtime/types/index.d.ts +7 -2
- package/dist/runtime/types/index.js +0 -2
- package/package.json +10 -10
- package/dist/runtime/components/number-field/NumberField.vue +0 -73
- package/dist/runtime/components/number-field/NumberField.vue.d.ts +0 -28
- package/dist/runtime/components/number-field/NumberFieldContent.vue +0 -20
- package/dist/runtime/components/number-field/NumberFieldContent.vue.d.ts +0 -13
- package/dist/runtime/components/number-field/NumberFieldDecrement.vue +0 -33
- package/dist/runtime/components/number-field/NumberFieldDecrement.vue.d.ts +0 -16
- package/dist/runtime/components/number-field/NumberFieldIncrement.vue +0 -33
- package/dist/runtime/components/number-field/NumberFieldIncrement.vue.d.ts +0 -16
- package/dist/runtime/components/number-field/NumberFieldInput.vue +0 -24
- package/dist/runtime/components/number-field/NumberFieldInput.vue.d.ts +0 -5
- package/dist/runtime/components/pin-input/PinInput.vue +0 -139
- package/dist/runtime/components/pin-input/PinInput.vue.d.ts +0 -33
- package/dist/runtime/components/pin-input/PinInputGroup.vue +0 -28
- package/dist/runtime/components/pin-input/PinInputGroup.vue.d.ts +0 -13
- package/dist/runtime/components/pin-input/PinInputSeparator.vue +0 -30
- package/dist/runtime/components/pin-input/PinInputSeparator.vue.d.ts +0 -15
- package/dist/runtime/components/pin-input/PinInputSlot.vue +0 -46
- package/dist/runtime/components/pin-input/PinInputSlot.vue.d.ts +0 -5
- package/dist/runtime/types/number-field.d.ts +0 -48
- package/dist/runtime/types/number-field.js +0 -0
- package/dist/runtime/types/pin-input.d.ts +0 -88
- package/dist/runtime/types/pin-input.js +0 -0
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -8,7 +8,7 @@ import 'unocss';
|
|
|
8
8
|
import 'unocss-preset-animations';
|
|
9
9
|
|
|
10
10
|
const name = "@una-ui/nuxt-edge";
|
|
11
|
-
const version = "0.
|
|
11
|
+
const version = "1.0.0-alpha.0-29173950.b6a8c03";
|
|
12
12
|
|
|
13
13
|
const module = defineNuxtModule({
|
|
14
14
|
meta: {
|
|
@@ -33,7 +33,7 @@ const module = defineNuxtModule({
|
|
|
33
33
|
...{
|
|
34
34
|
primary: "yellow",
|
|
35
35
|
gray: "stone",
|
|
36
|
-
radius: 0.
|
|
36
|
+
radius: 0.625,
|
|
37
37
|
fontSize: 16
|
|
38
38
|
},
|
|
39
39
|
...nuxt.options.appConfig.una || {}
|
|
@@ -15,7 +15,7 @@ const props = defineProps({
|
|
|
15
15
|
block: { type: Boolean, required: false },
|
|
16
16
|
to: { type: null, required: false },
|
|
17
17
|
label: { type: String, required: false, default: "Cancel" },
|
|
18
|
-
btn: { type: String, required: false, default: "
|
|
18
|
+
btn: { type: String, required: false, default: "outline-gray" },
|
|
19
19
|
leading: { type: String, required: false },
|
|
20
20
|
trailing: { type: String, required: false },
|
|
21
21
|
size: { type: String, required: false },
|
|
@@ -206,8 +206,9 @@ function isItemSelected(item) {
|
|
|
206
206
|
<slot name="input-wrapper" :model-value :open>
|
|
207
207
|
<ComboboxInput
|
|
208
208
|
v-if="$slots.trigger || $slots.triggerRoot"
|
|
209
|
+
input="~"
|
|
209
210
|
:class="cn(
|
|
210
|
-
'border-
|
|
211
|
+
'border-b-1 rounded-none text-1em',
|
|
211
212
|
props._comboboxInput?.class
|
|
212
213
|
)"
|
|
213
214
|
leading="combobox-input-leading-icon"
|
|
@@ -20,7 +20,7 @@ const props = defineProps({
|
|
|
20
20
|
block: { type: Boolean, required: false },
|
|
21
21
|
to: { type: null, required: false },
|
|
22
22
|
label: { type: String, required: false },
|
|
23
|
-
btn: { type: String, required: false, default: "
|
|
23
|
+
btn: { type: String, required: false, default: "outline-gray" },
|
|
24
24
|
leading: { type: String, required: false },
|
|
25
25
|
trailing: { type: String, required: false },
|
|
26
26
|
size: { type: String, required: false },
|
|
@@ -213,7 +213,6 @@ const table = useVueTable({
|
|
|
213
213
|
getFilteredRowModel: getFilteredRowModel(),
|
|
214
214
|
getPaginationRowModel: getPaginationRowModel(),
|
|
215
215
|
getRowId: (row) => props.rowId ? row[props.rowId] : row.id,
|
|
216
|
-
getSubRows: (row) => row.subRows,
|
|
217
216
|
getExpandedRowModel: getExpandedRowModel(),
|
|
218
217
|
onSortingChange: (updaterOrValue) => valueUpdater(updaterOrValue, sorting),
|
|
219
218
|
onRowSelectionChange: (updaterOrValue) => valueUpdater(updaterOrValue, rowSelection),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { cn } from "../../utils";
|
|
3
3
|
const props = defineProps({
|
|
4
|
-
skeleton: { type: null, required: false },
|
|
4
|
+
skeleton: { type: null, required: false, default: "gray" },
|
|
5
5
|
size: { type: null, required: false },
|
|
6
6
|
rounded: { type: null, required: false },
|
|
7
7
|
una: { type: Object, required: false },
|
|
@@ -3,7 +3,9 @@ declare var __VLS_1: {};
|
|
|
3
3
|
type __VLS_Slots = {} & {
|
|
4
4
|
default?: (props: typeof __VLS_1) => any;
|
|
5
5
|
};
|
|
6
|
-
declare const __VLS_component: import("vue").DefineComponent<NSkeletonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<NSkeletonProps> & Readonly<{}>, {
|
|
6
|
+
declare const __VLS_component: import("vue").DefineComponent<NSkeletonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<NSkeletonProps> & Readonly<{}>, {
|
|
7
|
+
skeleton: import("vue").HTMLAttributes["class"];
|
|
8
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
7
9
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
8
10
|
export default _default;
|
|
9
11
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -31,7 +31,7 @@ const props = defineProps({
|
|
|
31
31
|
dropdownMenu: { type: String, required: false },
|
|
32
32
|
toggleOn: { type: String, required: false },
|
|
33
33
|
toggleOff: { type: String, required: false },
|
|
34
|
-
tabsActive: { type: String, required: false, default: "
|
|
34
|
+
tabsActive: { type: String, required: false, default: "outline-gray" },
|
|
35
35
|
tabsInactive: { type: String, required: false },
|
|
36
36
|
navigationMenu: { type: String, required: false },
|
|
37
37
|
navigationMenuLink: { type: String, required: false },
|
|
@@ -9,9 +9,9 @@ defineOptions({
|
|
|
9
9
|
inheritAttrs: false
|
|
10
10
|
});
|
|
11
11
|
const props = defineProps({
|
|
12
|
-
checkbox: { type: String, required: false },
|
|
12
|
+
checkbox: { type: String, required: false, default: "primary" },
|
|
13
13
|
label: { type: String, required: false },
|
|
14
|
-
size: { type: String, required: false },
|
|
14
|
+
size: { type: String, required: false, default: "md" },
|
|
15
15
|
reverse: { type: Boolean, required: false },
|
|
16
16
|
forceMount: { type: Boolean, required: false, default: true },
|
|
17
17
|
_checkboxIndicator: { type: Object, required: false },
|
|
@@ -10,7 +10,9 @@ declare const __VLS_component: import("vue").DefineComponent<NCheckboxProps, {},
|
|
|
10
10
|
}, string, import("vue").PublicProps, Readonly<NCheckboxProps> & Readonly<{
|
|
11
11
|
"onUpdate:modelValue"?: ((value: boolean | "indeterminate") => any) | undefined;
|
|
12
12
|
}>, {
|
|
13
|
+
size: string;
|
|
13
14
|
forceMount: boolean;
|
|
15
|
+
checkbox: string;
|
|
14
16
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
15
17
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
16
18
|
export default _default;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { reactiveOmit } from "@vueuse/core";
|
|
3
3
|
import { SliderRange, SliderRoot, SliderThumb, SliderTrack, useForwardPropsEmits } from "reka-ui";
|
|
4
|
-
import { computed } from "vue";
|
|
5
4
|
import { cn } from "../../utils";
|
|
6
5
|
const props = defineProps({
|
|
7
6
|
slider: { type: String, required: false, default: "primary" },
|
|
8
|
-
size: { type: String, required: false },
|
|
7
|
+
size: { type: String, required: false, default: "md" },
|
|
9
8
|
una: { type: Object, required: false },
|
|
10
9
|
defaultValue: { type: Array, required: false },
|
|
11
10
|
modelValue: { type: [Array, null], required: false },
|
|
@@ -25,37 +24,39 @@ const props = defineProps({
|
|
|
25
24
|
class: { type: null, required: false }
|
|
26
25
|
});
|
|
27
26
|
const emits = defineEmits(["update:modelValue", "valueCommit"]);
|
|
28
|
-
const rootProps = reactiveOmit(props, ["class", "una", "slider"
|
|
27
|
+
const rootProps = reactiveOmit(props, ["class", "una", "slider"]);
|
|
29
28
|
const forwarded = useForwardPropsEmits(rootProps, emits);
|
|
30
|
-
const isVertical = computed(() => props.orientation === "vertical");
|
|
31
29
|
</script>
|
|
32
30
|
|
|
33
31
|
<template>
|
|
34
32
|
<SliderRoot
|
|
35
33
|
v-slot="{ modelValue }"
|
|
34
|
+
data-slot="slider-root"
|
|
36
35
|
:class="cn(
|
|
37
|
-
'
|
|
38
|
-
|
|
36
|
+
'relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',
|
|
37
|
+
// \'slider-root\',
|
|
39
38
|
props.class,
|
|
40
|
-
props.una?.sliderRoot
|
|
41
|
-
disabled && 'slider-disabled'
|
|
39
|
+
props.una?.sliderRoot
|
|
42
40
|
)"
|
|
43
41
|
v-bind="forwarded"
|
|
44
42
|
:slider="slider"
|
|
43
|
+
:size="size"
|
|
45
44
|
>
|
|
46
45
|
<slot name="slider-track">
|
|
47
46
|
<SliderTrack
|
|
47
|
+
data-slot="slider-track"
|
|
48
48
|
:class="cn(
|
|
49
49
|
'slider-track',
|
|
50
|
-
isVertical && 'slider-track-vertical',
|
|
51
50
|
props.una?.sliderTrack
|
|
52
51
|
)"
|
|
52
|
+
:size
|
|
53
53
|
>
|
|
54
54
|
<slot name="slider-range">
|
|
55
55
|
<SliderRange
|
|
56
|
+
data-slot="slider-range"
|
|
57
|
+
:size
|
|
56
58
|
:class="cn(
|
|
57
59
|
'slider-range',
|
|
58
|
-
isVertical && 'slider-range-vertical',
|
|
59
60
|
props.una?.sliderRange
|
|
60
61
|
)"
|
|
61
62
|
/>
|
|
@@ -67,9 +68,10 @@ const isVertical = computed(() => props.orientation === "vertical");
|
|
|
67
68
|
<SliderThumb
|
|
68
69
|
v-for="(_, key) in modelValue"
|
|
69
70
|
:key="key"
|
|
71
|
+
data-slot="slider-thumb"
|
|
72
|
+
:size
|
|
70
73
|
:class="cn(
|
|
71
74
|
'slider-thumb',
|
|
72
|
-
isVertical && 'slider-thumb-vertical',
|
|
73
75
|
props.una?.sliderThumb
|
|
74
76
|
)"
|
|
75
77
|
/>
|
|
@@ -14,6 +14,7 @@ declare const __VLS_component: import("vue").DefineComponent<NSliderProps, {}, {
|
|
|
14
14
|
"onUpdate:modelValue"?: ((payload: number[] | undefined) => any) | undefined;
|
|
15
15
|
onValueCommit?: ((payload: number[]) => any) | undefined;
|
|
16
16
|
}>, {
|
|
17
|
+
size: string;
|
|
17
18
|
slider: string;
|
|
18
19
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
20
|
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
@@ -7,7 +7,7 @@ import Button from "../../elements/Button.vue";
|
|
|
7
7
|
import Icon from "../../elements/Icon.vue";
|
|
8
8
|
const props = defineProps({
|
|
9
9
|
id: { type: String, required: false },
|
|
10
|
-
select: { type: String, required: false, default: "
|
|
10
|
+
select: { type: String, required: false, default: "outline-gray" },
|
|
11
11
|
status: { type: String, required: false },
|
|
12
12
|
una: { type: Object, required: false },
|
|
13
13
|
disabled: { type: Boolean, required: false },
|
|
@@ -6,27 +6,41 @@ import { useUnaSettings } from "../../composables/useUnaSettings";
|
|
|
6
6
|
import { useUnaThemes } from "../../composables/useUnaThemes";
|
|
7
7
|
import { RADIUS } from "../../constants";
|
|
8
8
|
import Button from "../elements/Button.vue";
|
|
9
|
+
import Icon from "../elements/Icon.vue";
|
|
9
10
|
import Label from "../elements/Label.vue";
|
|
10
11
|
import Popover from "../elements/popover/Popover.vue";
|
|
11
12
|
import Separator from "../elements/Separator.vue";
|
|
12
13
|
const colorMode = useColorMode();
|
|
13
14
|
const [value, toggle] = useToggle();
|
|
14
|
-
const { primaryThemes, grayThemes } = useUnaThemes();
|
|
15
|
+
const { primaryThemes, grayThemes, predefinedThemes } = useUnaThemes();
|
|
15
16
|
const { settings, reset } = useUnaSettings();
|
|
16
17
|
const currentPrimaryThemeHex = computed(() => settings.value.primaryColors?.["--una-primary-hex"]);
|
|
17
18
|
const currentPrimaryThemeName = computed(() => {
|
|
19
|
+
if (settings.value.theme) {
|
|
20
|
+
return settings.value.theme.name;
|
|
21
|
+
}
|
|
18
22
|
const theme = primaryThemes.find(([, theme2]) => theme2["--una-primary-hex"] === currentPrimaryThemeHex.value);
|
|
19
23
|
return theme ? theme[0] : "";
|
|
20
24
|
});
|
|
21
25
|
const currentGrayThemeHex = computed(() => settings.value.grayColors?.["--una-gray-hex"]);
|
|
22
26
|
const currentGrayThemeName = computed(() => {
|
|
27
|
+
if (settings.value.theme !== null) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
23
30
|
const theme = grayThemes.find(([, theme2]) => theme2["--una-gray-hex"] === currentGrayThemeHex.value);
|
|
24
31
|
return theme ? theme[0] : "";
|
|
25
32
|
});
|
|
33
|
+
function updateColor(theme) {
|
|
34
|
+
settings.value.theme = theme;
|
|
35
|
+
settings.value.primary = "";
|
|
36
|
+
settings.value.gray = "";
|
|
37
|
+
}
|
|
26
38
|
function updatePrimaryTheme(theme) {
|
|
39
|
+
settings.value.theme = null;
|
|
27
40
|
settings.value.primary = theme;
|
|
28
41
|
}
|
|
29
42
|
function updateGrayTheme(theme) {
|
|
43
|
+
settings.value.theme = null;
|
|
30
44
|
settings.value.gray = theme;
|
|
31
45
|
}
|
|
32
46
|
function shuffleTheme() {
|
|
@@ -62,8 +76,7 @@ function shuffleTheme() {
|
|
|
62
76
|
<slot name="trigger" :open="open">
|
|
63
77
|
<Button
|
|
64
78
|
btn="soft"
|
|
65
|
-
square
|
|
66
|
-
icon
|
|
79
|
+
icon square
|
|
67
80
|
label="i-lucide-paintbrush"
|
|
68
81
|
/>
|
|
69
82
|
</slot>
|
|
@@ -72,32 +85,77 @@ function shuffleTheme() {
|
|
|
72
85
|
<slot name="content">
|
|
73
86
|
<div class="flex flex-col">
|
|
74
87
|
<div class="grid space-y-1">
|
|
75
|
-
<h1 class="text-md text-
|
|
88
|
+
<h1 class="text-md text-foreground font-semibold">
|
|
76
89
|
Customize
|
|
77
90
|
</h1>
|
|
78
|
-
<p class="text-xs text-muted">
|
|
91
|
+
<p class="text-xs text-muted-foreground">
|
|
79
92
|
Pick a style and color for your components.
|
|
80
93
|
</p>
|
|
81
94
|
</div>
|
|
82
95
|
|
|
83
96
|
<Separator />
|
|
84
97
|
|
|
98
|
+
<div class="space-y-2">
|
|
99
|
+
<Label for="color" class="text-xs"> Themes</Label>
|
|
100
|
+
<div class="grid grid-cols-2 gap-3">
|
|
101
|
+
<template
|
|
102
|
+
v-for="theme in predefinedThemes"
|
|
103
|
+
:key="theme.name"
|
|
104
|
+
>
|
|
105
|
+
<Button
|
|
106
|
+
v-if="theme"
|
|
107
|
+
btn="solid-gray"
|
|
108
|
+
size="xs"
|
|
109
|
+
:title="capitalize(theme?.name)"
|
|
110
|
+
class="justify-start gap-2 ring-primary"
|
|
111
|
+
:aria-label="`Theme: ${theme.name}`"
|
|
112
|
+
:class="currentPrimaryThemeName === theme?.name && 'ring-2'"
|
|
113
|
+
@click="updateColor(theme)"
|
|
114
|
+
>
|
|
115
|
+
<template #leading>
|
|
116
|
+
<Icon
|
|
117
|
+
name="i-tabler-circle-filled"
|
|
118
|
+
square="4.5"
|
|
119
|
+
:style="{
|
|
120
|
+
'--c-primary': `oklch(${theme?.cssVars.dark['--una-primary']})`,
|
|
121
|
+
'--c-primary-foreground': `oklch(${theme?.cssVars.dark['--una-background']})`
|
|
122
|
+
}"
|
|
123
|
+
class="shrink-0 rounded-full from-$c-primary to-$c-primary-foreground from-20% bg-gradient-to-b"
|
|
124
|
+
/>
|
|
125
|
+
</template>
|
|
126
|
+
|
|
127
|
+
<span class="truncate text-xs">
|
|
128
|
+
{{ theme.name }}
|
|
129
|
+
</span>
|
|
130
|
+
</Button>
|
|
131
|
+
</template>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
<Separator />
|
|
136
|
+
|
|
85
137
|
<div class="space-y-2">
|
|
86
138
|
<Label for="color" class="text-xs"> Primary Color</Label>
|
|
87
139
|
<div class="grid grid-cols-7 gap-3">
|
|
88
|
-
<
|
|
140
|
+
<template
|
|
89
141
|
v-for="[key, theme] in primaryThemes"
|
|
90
142
|
:key="key"
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
143
|
+
>
|
|
144
|
+
<button
|
|
145
|
+
:title="capitalize(key)"
|
|
146
|
+
:style="{
|
|
147
|
+
'--c-primary': `oklch(${theme['--una-primary-600']})`,
|
|
148
|
+
'--c-primary-foreground': `oklch(${theme['--una-primary-500']})`
|
|
149
|
+
}"
|
|
150
|
+
class="bg-$c-primary transition-all dark:bg-$c-primary-foreground"
|
|
151
|
+
rounded="full"
|
|
152
|
+
square="6.5"
|
|
153
|
+
:class="[currentPrimaryThemeName === key ? 'ring-2' : 'scale-93']"
|
|
154
|
+
ring="primary offset-4 offset-background"
|
|
155
|
+
:aria-label="`Primary Color: ${key}`"
|
|
156
|
+
@click="updatePrimaryTheme(key)"
|
|
157
|
+
/>
|
|
158
|
+
</template>
|
|
101
159
|
</div>
|
|
102
160
|
</div>
|
|
103
161
|
|
|
@@ -116,7 +174,7 @@ function shuffleTheme() {
|
|
|
116
174
|
rounded="full"
|
|
117
175
|
square="6.5"
|
|
118
176
|
:aria-label="`Gray Color: ${key}`"
|
|
119
|
-
ring="gray offset-4 offset-
|
|
177
|
+
ring="gray offset-4 offset-background"
|
|
120
178
|
@click="updateGrayTheme(key)"
|
|
121
179
|
/>
|
|
122
180
|
</div>
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { Primitive } from "reka-ui";
|
|
3
3
|
import { cn } from "../../utils";
|
|
4
|
+
import NLink from "../elements/Link.vue";
|
|
4
5
|
const props = defineProps({
|
|
5
6
|
isActive: { type: Boolean, required: false },
|
|
6
7
|
size: { type: String, required: false, default: "md" },
|
|
7
8
|
class: { type: null, required: false },
|
|
8
9
|
una: { type: Object, required: false },
|
|
9
10
|
asChild: { type: Boolean, required: false },
|
|
10
|
-
as: { type: [String, Object, Function], required: false, default:
|
|
11
|
+
as: { type: [String, Object, Function], required: false, default: NLink }
|
|
11
12
|
});
|
|
12
13
|
</script>
|
|
13
14
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { useAppConfig } from "#imports";
|
|
1
|
+
import { useAppConfig, watch } from "#imports";
|
|
2
2
|
import { useStorage } from "@vueuse/core";
|
|
3
3
|
import { defu } from "defu";
|
|
4
|
-
import { watchEffect } from "vue";
|
|
5
4
|
import { useUnaThemes } from "./useUnaThemes.js";
|
|
6
5
|
export function useUnaSettings() {
|
|
7
6
|
const { una } = useAppConfig();
|
|
@@ -12,15 +11,20 @@ export function useUnaSettings() {
|
|
|
12
11
|
primary: una.primary,
|
|
13
12
|
gray: una.gray,
|
|
14
13
|
radius: una.radius,
|
|
15
|
-
fontSize: una.fontSize
|
|
14
|
+
fontSize: una.fontSize,
|
|
15
|
+
theme: null
|
|
16
16
|
};
|
|
17
17
|
const settings = useStorage("una-settings", defaultSettings, void 0, {
|
|
18
18
|
mergeDefaults: defu
|
|
19
19
|
});
|
|
20
|
-
|
|
21
|
-
settings.value.
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
watch(
|
|
21
|
+
() => [settings.value.primary, settings.value.gray],
|
|
22
|
+
([primary, gray]) => {
|
|
23
|
+
settings.value.primaryColors = getPrimaryColors(primary, una.primary);
|
|
24
|
+
settings.value.grayColors = getGrayColors(gray, una.gray);
|
|
25
|
+
},
|
|
26
|
+
{ immediate: true }
|
|
27
|
+
);
|
|
24
28
|
function reset() {
|
|
25
29
|
settings.value.primary = defaultSettings.primary;
|
|
26
30
|
settings.value.gray = defaultSettings.gray;
|
|
@@ -1,8 +1,80 @@
|
|
|
1
1
|
import type { Colors } from '../types/index.js';
|
|
2
|
-
export
|
|
2
|
+
export declare function useUnaThemes(): {
|
|
3
3
|
primaryThemes: [string, Colors][];
|
|
4
4
|
grayThemes: [string, Colors][];
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
predefinedThemes: {
|
|
6
|
+
name: string;
|
|
7
|
+
cssVars: {
|
|
8
|
+
light: {
|
|
9
|
+
'--una-background': string;
|
|
10
|
+
'--una-foreground': string;
|
|
11
|
+
'--una-card': string;
|
|
12
|
+
'--una-card-foreground': string;
|
|
13
|
+
'--una-popover': string;
|
|
14
|
+
'--una-popover-foreground': string;
|
|
15
|
+
'--una-primary': string;
|
|
16
|
+
'--una-primary-foreground': string;
|
|
17
|
+
'--una-secondary': string;
|
|
18
|
+
'--una-secondary-foreground': string;
|
|
19
|
+
'--una-muted': string;
|
|
20
|
+
'--una-muted-foreground': string;
|
|
21
|
+
'--una-accent': string;
|
|
22
|
+
'--una-accent-foreground': string;
|
|
23
|
+
'--una-destructive': string;
|
|
24
|
+
'--una-destructive-foreground': string;
|
|
25
|
+
'--una-border': string;
|
|
26
|
+
'--una-input': string;
|
|
27
|
+
'--una-ring': string;
|
|
28
|
+
'--una-chart-1': string;
|
|
29
|
+
'--una-chart-2': string;
|
|
30
|
+
'--una-chart-3': string;
|
|
31
|
+
'--una-chart-4': string;
|
|
32
|
+
'--una-chart-5': string;
|
|
33
|
+
'--una-sidebar': string;
|
|
34
|
+
'--una-sidebar-foreground': string;
|
|
35
|
+
'--una-sidebar-primary': string;
|
|
36
|
+
'--una-sidebar-primary-foreground': string;
|
|
37
|
+
'--una-sidebar-accent': string;
|
|
38
|
+
'--una-sidebar-accent-foreground': string;
|
|
39
|
+
'--una-sidebar-border': string;
|
|
40
|
+
'--una-sidebar-ring': string;
|
|
41
|
+
};
|
|
42
|
+
dark: {
|
|
43
|
+
'--una-background': string;
|
|
44
|
+
'--una-foreground': string;
|
|
45
|
+
'--una-card': string;
|
|
46
|
+
'--una-card-foreground': string;
|
|
47
|
+
'--una-popover': string;
|
|
48
|
+
'--una-popover-foreground': string;
|
|
49
|
+
'--una-primary': string;
|
|
50
|
+
'--una-primary-foreground': string;
|
|
51
|
+
'--una-secondary': string;
|
|
52
|
+
'--una-secondary-foreground': string;
|
|
53
|
+
'--una-muted': string;
|
|
54
|
+
'--una-muted-foreground': string;
|
|
55
|
+
'--una-accent': string;
|
|
56
|
+
'--una-accent-foreground': string;
|
|
57
|
+
'--una-destructive': string;
|
|
58
|
+
'--una-destructive-foreground': string;
|
|
59
|
+
'--una-border': string;
|
|
60
|
+
'--una-input': string;
|
|
61
|
+
'--una-ring': string;
|
|
62
|
+
'--una-chart-1': string;
|
|
63
|
+
'--una-chart-2': string;
|
|
64
|
+
'--una-chart-3': string;
|
|
65
|
+
'--una-chart-4': string;
|
|
66
|
+
'--una-chart-5': string;
|
|
67
|
+
'--una-sidebar': string;
|
|
68
|
+
'--una-sidebar-foreground': string;
|
|
69
|
+
'--una-sidebar-primary': string;
|
|
70
|
+
'--una-sidebar-primary-foreground': string;
|
|
71
|
+
'--una-sidebar-accent': string;
|
|
72
|
+
'--una-sidebar-accent-foreground': string;
|
|
73
|
+
'--una-sidebar-border': string;
|
|
74
|
+
'--una-sidebar-ring': string;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
}[];
|
|
78
|
+
getPrimaryColors: (color: string, defaultColor?: string) => Colors;
|
|
79
|
+
getGrayColors: (color: string, defaultColor?: string) => Colors;
|
|
80
|
+
};
|