@leavepulse/ui 0.22.21 → 0.23.0
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/chunks/{LpAddressInput-CxKwIG6T.js → LpAddressInput-BTqnUXZG.js} +3 -3
- package/dist/chunks/{LpAppShell-D8CAP9oF.js → LpAppShell-CaQYQKZV.js} +25 -14
- package/dist/chunks/{LpAvatar-B1Ez0ZAx.js → LpAvatar-D-jHoHR7.js} +15 -5
- package/dist/chunks/{LpConfirmDialog-CmgeAdCh.js → LpConfirmDialog-CObRah9c.js} +11 -6
- package/dist/chunks/{LpFileTree-Cw50eG_y.js → LpFileTree-CN0IOIY7.js} +1 -1
- package/dist/chunks/{LpFileTreeNode-DFg4PhOK.js → LpFileTreeNode-D7WgUPcJ.js} +23 -21
- package/dist/chunks/{LpFormField-Bn-ZwC6z.js → LpFormField-CesaPWPO.js} +12 -6
- package/dist/chunks/{LpInput-BkomKdqQ.js → LpInput-jwqXlAy0.js} +6 -3
- package/dist/chunks/{LpLink-DHwOEp4e.js → LpLink-DU9kkKGW.js} +25 -10
- package/dist/chunks/{LpModal-CNNSf5pv.js → LpModal-D_o-56To.js} +13 -76
- package/dist/chunks/{LpNotificationBell-DWDEkmdA.js → LpNotificationBell-a08cl0yY.js} +67 -61
- package/dist/chunks/{LpPasswordInput-DgUC2Ur7.js → LpPasswordInput-Bmo6q9Kd.js} +11 -3
- package/dist/chunks/LpShift-DXNsauQZ.js +40 -0
- package/dist/chunks/{LpTextarea-CRAkhemZ.js → LpTextarea-1ENb3ZAO.js} +7 -4
- package/dist/chunks/{LpThemeSwitcher-B_kj0T2b.js → LpThemeSwitcher-BgpJgrnP.js} +27 -0
- package/dist/component-names.d.ts +1 -1
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAppShell.vue.d.ts +6 -6
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpAvatar.vue.d.ts +10 -0
- package/dist/components/LpAvatar.vue.js +1 -1
- package/dist/components/LpConfirmDialog.vue.d.ts +8 -0
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpFormField.vue.js +1 -1
- package/dist/components/LpInput.vue.d.ts +12 -0
- package/dist/components/LpInput.vue.js +1 -1
- package/dist/components/LpLink.vue.d.ts +20 -2
- package/dist/components/LpLink.vue.js +1 -1
- package/dist/components/LpModal.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpPasswordInput.vue.d.ts +8 -0
- package/dist/components/LpPasswordInput.vue.js +1 -1
- package/dist/components/LpShift.vue.d.ts +36 -0
- package/dist/components/LpShift.vue.js +4 -0
- package/dist/components/LpShortcutsDialog.vue.js +1 -1
- package/dist/components/LpTextarea.vue.d.ts +5 -0
- package/dist/components/LpTextarea.vue.js +1 -1
- package/dist/components/LpThemeSwitcher.vue.js +1 -1
- package/dist/composables/useShift.d.ts +35 -0
- package/dist/composables/useShift.js +112 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +48 -44
- package/dist/theme/tokens.d.ts +3 -0
- package/package.json +1 -1
- package/src/component-names.ts +1 -0
- package/src/components/LpAppShell.vue +27 -7
- package/src/components/LpAvatar.vue +17 -5
- package/src/components/LpConfirmDialog.vue +21 -6
- package/src/components/LpFileTreeNode.vue +11 -2
- package/src/components/LpFormField.vue +19 -2
- package/src/components/LpInput.vue +8 -0
- package/src/components/LpLink.vue +40 -8
- package/src/components/LpModal.vue +20 -128
- package/src/components/LpNotificationBell.vue +48 -42
- package/src/components/LpPasswordInput.vue +16 -1
- package/src/components/LpShift.vue +90 -0
- package/src/components/LpTextarea.vue +7 -0
- package/src/composables/useShift.ts +236 -0
- package/src/index.ts +3 -0
- package/src/theme/presets.ts +24 -0
- package/src/theme/tokens.ts +6 -0
- package/src/tokens/tokens.css +3 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { defineComponent, computed, useModel, openBlock, createBlock, withCtx, createElementVNode, toDisplayString, createElementBlock, createCommentVNode, Fragment, renderList, resolveDynamicComponent, normalizeClass,
|
|
2
|
-
import { _ as _sfc_main$
|
|
3
|
-
import { _ as _sfc_main$
|
|
4
|
-
import { _ as _sfc_main$
|
|
5
|
-
import { _ as _sfc_main$
|
|
6
|
-
import { _ as _sfc_main$
|
|
1
|
+
import { defineComponent, computed, useModel, openBlock, createBlock, withCtx, createElementVNode, toDisplayString, createElementBlock, createCommentVNode, createVNode, Fragment, renderList, resolveDynamicComponent, normalizeClass, createTextVNode, mergeModels } from "vue";
|
|
2
|
+
import { _ as _sfc_main$8 } from "./LpBadge-BPodVcJa.js";
|
|
3
|
+
import { _ as _sfc_main$7 } from "./LpButton-5VXXCjwF.js";
|
|
4
|
+
import { _ as _sfc_main$5 } from "./LpContextMenu-D0mzXqA7.js";
|
|
5
|
+
import { _ as _sfc_main$3 } from "./LpEmptyState-CrfyRJUG.js";
|
|
6
|
+
import { _ as _sfc_main$6 } from "./LpIcon-CCnX5_2j.js";
|
|
7
7
|
import { _ as _sfc_main$1 } from "./LpPopover-8268UmlC.js";
|
|
8
|
-
import { _ as _sfc_main$
|
|
8
|
+
import { _ as _sfc_main$4 } from "./LpScrollArea-D8xyKXcF.js";
|
|
9
|
+
import { _ as _sfc_main$2 } from "./LpShift-DXNsauQZ.js";
|
|
9
10
|
const _hoisted_1 = { class: "flex items-center justify-between gap-2 px-3 py-2.5" };
|
|
10
11
|
const _hoisted_2 = { class: "text-sm font-semibold" };
|
|
11
12
|
const _hoisted_3 = {
|
|
@@ -134,9 +135,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
134
135
|
"panel-class": "w-80 p-0"
|
|
135
136
|
}, {
|
|
136
137
|
trigger: withCtx(() => [
|
|
137
|
-
createVNode(_sfc_main$
|
|
138
|
+
createVNode(_sfc_main$5, { items: contextMenu.value }, {
|
|
138
139
|
default: withCtx(() => [
|
|
139
|
-
createVNode(_sfc_main$
|
|
140
|
+
createVNode(_sfc_main$7, {
|
|
140
141
|
variant: "ghost",
|
|
141
142
|
size: "sm",
|
|
142
143
|
class: "relative",
|
|
@@ -144,11 +145,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
144
145
|
onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)
|
|
145
146
|
}, {
|
|
146
147
|
default: withCtx(() => [
|
|
147
|
-
createVNode(_sfc_main$
|
|
148
|
+
createVNode(_sfc_main$6, {
|
|
148
149
|
name: "lucide:bell",
|
|
149
150
|
size: 18
|
|
150
151
|
}),
|
|
151
|
-
hasUnread.value ? (openBlock(), createBlock(_sfc_main$
|
|
152
|
+
hasUnread.value ? (openBlock(), createBlock(_sfc_main$8, {
|
|
152
153
|
key: 0,
|
|
153
154
|
tone: "danger",
|
|
154
155
|
class: "absolute -right-1 -top-1 min-w-4 justify-center px-1 py-0 text-[10px] leading-4"
|
|
@@ -175,65 +176,70 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
175
176
|
onClick: _cache[1] || (_cache[1] = ($event) => emit("markAllRead"))
|
|
176
177
|
}, toDisplayString(l.value.markAllRead), 1)) : createCommentVNode("", true)
|
|
177
178
|
]),
|
|
178
|
-
|
|
179
|
-
(openBlock(), createElementBlock(Fragment, null, renderList(4, (i) => {
|
|
180
|
-
return createElementVNode("div", {
|
|
181
|
-
key: i,
|
|
182
|
-
class: "h-12 animate-pulse rounded-control bg-surface-soft"
|
|
183
|
-
});
|
|
184
|
-
}), 64))
|
|
185
|
-
])) : !__props.items.length ? (openBlock(), createBlock(_sfc_main$2, {
|
|
186
|
-
key: 1,
|
|
187
|
-
icon: "lucide:bell-off",
|
|
188
|
-
title: l.value.empty,
|
|
189
|
-
class: "px-3 py-10"
|
|
190
|
-
}, null, 8, ["title"])) : (openBlock(), createBlock(_sfc_main$3, {
|
|
191
|
-
key: 2,
|
|
192
|
-
class: "max-h-96",
|
|
193
|
-
"content-class": "flex flex-col gap-0.5 px-2 pb-2"
|
|
194
|
-
}, {
|
|
179
|
+
createVNode(_sfc_main$2, { axis: "height" }, {
|
|
195
180
|
default: withCtx(() => [
|
|
196
|
-
(openBlock(
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
181
|
+
__props.loading ? (openBlock(), createElementBlock("div", _hoisted_3, [
|
|
182
|
+
(openBlock(), createElementBlock(Fragment, null, renderList(4, (i) => {
|
|
183
|
+
return createElementVNode("div", {
|
|
184
|
+
key: i,
|
|
185
|
+
class: "h-12 animate-pulse rounded-control bg-surface-soft"
|
|
186
|
+
});
|
|
187
|
+
}), 64))
|
|
188
|
+
])) : !__props.items.length ? (openBlock(), createBlock(_sfc_main$3, {
|
|
189
|
+
key: 1,
|
|
190
|
+
icon: "lucide:bell-off",
|
|
191
|
+
title: l.value.empty,
|
|
192
|
+
class: "px-3 py-10"
|
|
193
|
+
}, null, 8, ["title"])) : (openBlock(), createBlock(_sfc_main$4, {
|
|
194
|
+
key: 2,
|
|
195
|
+
class: "max-h-96",
|
|
196
|
+
"content-class": "flex flex-col gap-0.5 px-2 pb-2"
|
|
197
|
+
}, {
|
|
198
|
+
default: withCtx(() => [
|
|
199
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
|
|
200
|
+
return openBlock(), createBlock(_sfc_main$5, {
|
|
201
|
+
key: item.id,
|
|
202
|
+
items: rowMenu(item)
|
|
207
203
|
}, {
|
|
208
204
|
default: withCtx(() => [
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
], 2),
|
|
217
|
-
createElementVNode("span", _hoisted_4, [
|
|
218
|
-
createElementVNode("span", _hoisted_5, [
|
|
205
|
+
(openBlock(), createBlock(resolveDynamicComponent(item.link ? "a" : "button"), {
|
|
206
|
+
href: item.link || void 0,
|
|
207
|
+
type: item.link ? void 0 : "button",
|
|
208
|
+
class: normalizeClass(["group/notif flex w-full items-start gap-2.5 rounded-control px-2 py-2 text-left outline-none transition-colors hover:bg-white/[0.05] focus-visible:bg-white/[0.05]", item.read ? "" : "bg-brand-soft/35"]),
|
|
209
|
+
onClick: ($event) => onSelect(item)
|
|
210
|
+
}, {
|
|
211
|
+
default: withCtx(() => [
|
|
219
212
|
createElementVNode("span", {
|
|
220
|
-
class: normalizeClass(["
|
|
221
|
-
},
|
|
222
|
-
|
|
213
|
+
class: normalizeClass(["grid size-7 shrink-0 place-items-center rounded-control", item.read ? "bg-surface-soft text-muted" : "bg-brand-soft text-brand"])
|
|
214
|
+
}, [
|
|
215
|
+
createVNode(_sfc_main$6, {
|
|
216
|
+
name: item.icon || "lucide:bell",
|
|
217
|
+
size: 15
|
|
218
|
+
}, null, 8, ["name"])
|
|
219
|
+
], 2),
|
|
220
|
+
createElementVNode("span", _hoisted_4, [
|
|
221
|
+
createElementVNode("span", _hoisted_5, [
|
|
222
|
+
createElementVNode("span", {
|
|
223
|
+
class: normalizeClass(["truncate text-sm font-medium", item.read ? "text-muted-strong" : "text-ink"])
|
|
224
|
+
}, toDisplayString(item.title), 3),
|
|
225
|
+
!item.read ? (openBlock(), createElementBlock("span", _hoisted_6)) : createCommentVNode("", true)
|
|
226
|
+
]),
|
|
227
|
+
item.body ? (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(item.body), 1)) : createCommentVNode("", true),
|
|
228
|
+
item.createdAt ? (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString(timeAgo(item.createdAt)), 1)) : createCommentVNode("", true)
|
|
229
|
+
])
|
|
223
230
|
]),
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
])
|
|
231
|
+
_: 2
|
|
232
|
+
}, 1032, ["href", "type", "class", "onClick"]))
|
|
227
233
|
]),
|
|
228
234
|
_: 2
|
|
229
|
-
}, 1032, ["
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
})
|
|
235
|
+
}, 1032, ["items"]);
|
|
236
|
+
}), 128))
|
|
237
|
+
]),
|
|
238
|
+
_: 1
|
|
239
|
+
}))
|
|
234
240
|
]),
|
|
235
241
|
_: 1
|
|
236
|
-
})
|
|
242
|
+
})
|
|
237
243
|
]),
|
|
238
244
|
_: 1
|
|
239
245
|
}, 8, ["open"]);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, ref, openBlock, createBlock, createSlots, withCtx, createElementVNode, createVNode, renderSlot } from "vue";
|
|
2
2
|
import { _ as _sfc_main$2 } from "./LpIcon-CCnX5_2j.js";
|
|
3
|
-
import { _ as _sfc_main$1 } from "./LpInput-
|
|
3
|
+
import { _ as _sfc_main$1 } from "./LpInput-jwqXlAy0.js";
|
|
4
4
|
const _hoisted_1 = ["aria-label"];
|
|
5
5
|
const __default__ = { inheritAttrs: false };
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
@@ -10,7 +10,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
10
10
|
modelValue: {},
|
|
11
11
|
placeholder: {},
|
|
12
12
|
invalid: { type: Boolean },
|
|
13
|
-
disabled: { type: Boolean }
|
|
13
|
+
disabled: { type: Boolean },
|
|
14
|
+
label: {},
|
|
15
|
+
hint: {},
|
|
16
|
+
error: {},
|
|
17
|
+
required: { type: Boolean }
|
|
14
18
|
},
|
|
15
19
|
emits: ["update:modelValue"],
|
|
16
20
|
setup(__props, { expose: __expose }) {
|
|
@@ -30,6 +34,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
30
34
|
placeholder: __props.placeholder,
|
|
31
35
|
invalid: __props.invalid,
|
|
32
36
|
disabled: __props.disabled,
|
|
37
|
+
label: __props.label,
|
|
38
|
+
hint: __props.hint,
|
|
39
|
+
error: __props.error,
|
|
40
|
+
required: __props.required,
|
|
33
41
|
"onUpdate:modelValue": _cache[1] || (_cache[1] = (v) => _ctx.$emit("update:modelValue", v))
|
|
34
42
|
}, createSlots({
|
|
35
43
|
trailing: withCtx(() => [
|
|
@@ -55,7 +63,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
55
63
|
]),
|
|
56
64
|
key: "0"
|
|
57
65
|
} : void 0
|
|
58
|
-
]), 1032, ["model-value", "type", "placeholder", "invalid", "disabled"]);
|
|
66
|
+
]), 1032, ["model-value", "type", "placeholder", "invalid", "disabled", "label", "hint", "error", "required"]);
|
|
59
67
|
};
|
|
60
68
|
}
|
|
61
69
|
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, renderSlot } from "vue";
|
|
2
|
+
import { useShift } from "../composables/useShift.js";
|
|
3
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
4
|
+
__name: "LpShift",
|
|
5
|
+
props: {
|
|
6
|
+
axis: { default: "height" },
|
|
7
|
+
duration: {},
|
|
8
|
+
disabled: { type: Boolean, default: false }
|
|
9
|
+
},
|
|
10
|
+
setup(__props, { expose: __expose }) {
|
|
11
|
+
const props = __props;
|
|
12
|
+
const { el, tweening, resizing } = useShift({
|
|
13
|
+
axis: () => props.axis,
|
|
14
|
+
duration: () => props.duration,
|
|
15
|
+
enabled: () => !props.disabled
|
|
16
|
+
});
|
|
17
|
+
const TRANSITION_CLASS = {
|
|
18
|
+
height: "transition-[height]",
|
|
19
|
+
width: "transition-[width]",
|
|
20
|
+
both: "transition-[height,width]"
|
|
21
|
+
};
|
|
22
|
+
const transitionClass = computed(() => TRANSITION_CLASS[props.axis]);
|
|
23
|
+
__expose({ resizing });
|
|
24
|
+
return (_ctx, _cache) => {
|
|
25
|
+
return openBlock(), createElementBlock("div", {
|
|
26
|
+
ref_key: "el",
|
|
27
|
+
ref: el,
|
|
28
|
+
class: normalizeClass([
|
|
29
|
+
unref(tweening) && !__props.disabled ? `${transitionClass.value} duration-fast ease-[var(--ease-emphasized)] motion-reduce:transition-none` : "",
|
|
30
|
+
unref(resizing) ? "overflow-hidden" : ""
|
|
31
|
+
])
|
|
32
|
+
}, [
|
|
33
|
+
renderSlot(_ctx.$slots, "default", { resizing: unref(resizing) })
|
|
34
|
+
], 2);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
export {
|
|
39
|
+
_sfc_main as _
|
|
40
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, computed, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createElementVNode } from "vue";
|
|
2
|
-
import { _ as _sfc_main$1 } from "./LpFormField-
|
|
3
|
-
const _hoisted_1 = ["value", "placeholder", "rows", "disabled"];
|
|
2
|
+
import { _ as _sfc_main$1 } from "./LpFormField-CesaPWPO.js";
|
|
3
|
+
const _hoisted_1 = ["value", "placeholder", "rows", "disabled", "required"];
|
|
4
4
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
5
5
|
__name: "LpTextarea",
|
|
6
6
|
props: {
|
|
@@ -11,7 +11,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
11
11
|
disabled: { type: Boolean },
|
|
12
12
|
label: {},
|
|
13
13
|
hint: {},
|
|
14
|
-
error: {}
|
|
14
|
+
error: {},
|
|
15
|
+
required: { type: Boolean }
|
|
15
16
|
},
|
|
16
17
|
emits: ["update:modelValue"],
|
|
17
18
|
setup(__props) {
|
|
@@ -22,6 +23,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
22
23
|
label: hasField.value ? __props.label : void 0,
|
|
23
24
|
hint: hasField.value ? __props.hint : void 0,
|
|
24
25
|
error: hasField.value ? __props.error : void 0,
|
|
26
|
+
required: hasField.value ? __props.required : void 0,
|
|
25
27
|
class: normalizeClass(hasField.value ? void 0 : "contents")
|
|
26
28
|
}, {
|
|
27
29
|
default: withCtx(() => [
|
|
@@ -30,12 +32,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
30
32
|
placeholder: __props.placeholder,
|
|
31
33
|
rows: __props.rows ?? 4,
|
|
32
34
|
disabled: __props.disabled,
|
|
35
|
+
required: __props.required || void 0,
|
|
33
36
|
class: normalizeClass(["w-full resize-y rounded-control border bg-surface-soft px-3 py-2 text-sm text-ink outline-none transition-colors duration-[var(--duration-fast)] placeholder:text-muted focus:border-brand focus:ring-2 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-55", __props.invalid || __props.error ? "border-danger focus:border-danger focus:ring-danger-soft" : "border-line"]),
|
|
34
37
|
onInput: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("update:modelValue", $event.target.value))
|
|
35
38
|
}, null, 42, _hoisted_1)
|
|
36
39
|
]),
|
|
37
40
|
_: 1
|
|
38
|
-
}, 8, ["label", "hint", "error", "class"]);
|
|
41
|
+
}, 8, ["label", "hint", "error", "required", "class"]);
|
|
39
42
|
};
|
|
40
43
|
}
|
|
41
44
|
});
|
|
@@ -23,7 +23,10 @@ const dark = {
|
|
|
23
23
|
brandSoft: "rgba(0, 188, 255, 0.16)",
|
|
24
24
|
action: "#39e58c",
|
|
25
25
|
actionHover: "#4dffa1",
|
|
26
|
+
actionSoft: "rgba(57, 229, 140, 0.14)",
|
|
26
27
|
accent: "#f0b35a",
|
|
28
|
+
accentHover: "#f2bf74",
|
|
29
|
+
accentSoft: "rgba(240, 179, 90, 0.14)",
|
|
27
30
|
danger: "#ff6f6f",
|
|
28
31
|
dangerHover: "#ff8585",
|
|
29
32
|
dangerSoft: "rgba(255, 111, 111, 0.14)",
|
|
@@ -51,7 +54,10 @@ const light = {
|
|
|
51
54
|
brandSoft: "rgba(0, 134, 199, 0.12)",
|
|
52
55
|
action: "#1f9d5f",
|
|
53
56
|
actionHover: "#23b06b",
|
|
57
|
+
actionSoft: "rgba(31, 157, 95, 0.12)",
|
|
54
58
|
accent: "#aa6f1d",
|
|
59
|
+
accentHover: "#b88641",
|
|
60
|
+
accentSoft: "rgba(170, 111, 29, 0.12)",
|
|
55
61
|
danger: "#c2333b",
|
|
56
62
|
dangerHover: "#d23b44",
|
|
57
63
|
dangerSoft: "rgba(194, 51, 59, 0.12)",
|
|
@@ -79,7 +85,10 @@ const lime = {
|
|
|
79
85
|
brandSoft: "rgba(196, 240, 66, 0.14)",
|
|
80
86
|
action: "#5fd97a",
|
|
81
87
|
actionHover: "#74e88d",
|
|
88
|
+
actionSoft: "rgba(95, 217, 122, 0.14)",
|
|
82
89
|
accent: "#ffb84d",
|
|
90
|
+
accentHover: "#ffc369",
|
|
91
|
+
accentSoft: "rgba(255, 184, 77, 0.14)",
|
|
83
92
|
danger: "#ff6f6f",
|
|
84
93
|
dangerHover: "#ff8585",
|
|
85
94
|
dangerSoft: "rgba(255, 111, 111, 0.14)",
|
|
@@ -120,7 +129,10 @@ const leavepulse = {
|
|
|
120
129
|
brandSoft: "rgba(0, 188, 255, 0.2)",
|
|
121
130
|
action: "#44c2ad",
|
|
122
131
|
actionHover: "#56d3be",
|
|
132
|
+
actionSoft: "rgba(68, 194, 173, 0.14)",
|
|
123
133
|
accent: "#d36a2c",
|
|
134
|
+
accentHover: "#da824e",
|
|
135
|
+
accentSoft: "rgba(211, 106, 44, 0.14)",
|
|
124
136
|
danger: "#f87171",
|
|
125
137
|
dangerHover: "#fca5a5",
|
|
126
138
|
dangerSoft: "rgba(248, 113, 113, 0.14)",
|
|
@@ -152,7 +164,10 @@ const rose = {
|
|
|
152
164
|
brandSoft: "rgba(251, 113, 133, 0.14)",
|
|
153
165
|
action: "#34d399",
|
|
154
166
|
actionHover: "#4adeaa",
|
|
167
|
+
actionSoft: "rgba(52, 211, 153, 0.14)",
|
|
155
168
|
accent: "#fbbf24",
|
|
169
|
+
accentHover: "#fcc947",
|
|
170
|
+
accentSoft: "rgba(251, 191, 36, 0.14)",
|
|
156
171
|
danger: "#ef4444",
|
|
157
172
|
dangerHover: "#f56565",
|
|
158
173
|
dangerSoft: "rgba(239, 68, 68, 0.14)",
|
|
@@ -180,7 +195,10 @@ const amber = {
|
|
|
180
195
|
brandSoft: "rgba(245, 158, 11, 0.14)",
|
|
181
196
|
action: "#4ade80",
|
|
182
197
|
actionHover: "#5cea90",
|
|
198
|
+
actionSoft: "rgba(74, 222, 128, 0.14)",
|
|
183
199
|
accent: "#38bdf8",
|
|
200
|
+
accentHover: "#58c8f9",
|
|
201
|
+
accentSoft: "rgba(56, 189, 248, 0.14)",
|
|
184
202
|
danger: "#f87171",
|
|
185
203
|
dangerHover: "#fa8a8a",
|
|
186
204
|
dangerSoft: "rgba(248, 113, 113, 0.14)",
|
|
@@ -208,7 +226,10 @@ const violet = {
|
|
|
208
226
|
brandSoft: "rgba(167, 139, 250, 0.14)",
|
|
209
227
|
action: "#34d399",
|
|
210
228
|
actionHover: "#4adeaa",
|
|
229
|
+
actionSoft: "rgba(52, 211, 153, 0.14)",
|
|
211
230
|
accent: "#fbbf24",
|
|
231
|
+
accentHover: "#fcc947",
|
|
232
|
+
accentSoft: "rgba(251, 191, 36, 0.14)",
|
|
212
233
|
danger: "#f87171",
|
|
213
234
|
dangerHover: "#fa8a8a",
|
|
214
235
|
dangerSoft: "rgba(248, 113, 113, 0.14)",
|
|
@@ -236,7 +257,10 @@ const nord = {
|
|
|
236
257
|
brandSoft: "rgba(136, 192, 208, 0.16)",
|
|
237
258
|
action: "#a3be8c",
|
|
238
259
|
actionHover: "#b3cb9f",
|
|
260
|
+
actionSoft: "rgba(163, 190, 140, 0.16)",
|
|
239
261
|
accent: "#ebcb8b",
|
|
262
|
+
accentHover: "#eed39e",
|
|
263
|
+
accentSoft: "rgba(235, 203, 139, 0.16)",
|
|
240
264
|
danger: "#bf616a",
|
|
241
265
|
dangerHover: "#cb727b",
|
|
242
266
|
dangerSoft: "rgba(191, 97, 106, 0.16)",
|
|
@@ -275,7 +299,10 @@ const COLOR_VARS = {
|
|
|
275
299
|
brandSoft: "--color-brand-soft",
|
|
276
300
|
action: "--color-action",
|
|
277
301
|
actionHover: "--color-action-hover",
|
|
302
|
+
actionSoft: "--color-action-soft",
|
|
278
303
|
accent: "--color-accent",
|
|
304
|
+
accentHover: "--color-accent-hover",
|
|
305
|
+
accentSoft: "--color-accent-soft",
|
|
279
306
|
danger: "--color-danger",
|
|
280
307
|
dangerHover: "--color-danger-hover",
|
|
281
308
|
dangerSoft: "--color-danger-soft",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const COMPONENT_NAMES: readonly ["LayoutCanvas", "LayoutNode", "LpAddressInput", "LpAlert", "LpAppShell", "LpAutocomplete", "LpAvatar", "LpBadge", "LpBreadcrumbs", "LpButton", "LpCalendar", "LpCard", "LpCheckbox", "LpCodeBlock", "LpCommandPalette", "LpConfirmDialog", "LpContextMenu", "LpDatePicker", "LpDisclosure", "LpDivider", "LpDrawer", "LpDropdownMenu", "LpEmptyState", "LpFileTree", "LpFileTreeNode", "LpFormField", "LpIcon", "LpInfraNode", "LpInput", "LpLaneNode", "LpLightbox", "LpLink", "LpLogViewer", "LpMapPicker", "LpModal", "LpNotificationBell", "LpNumberField", "LpOtpInput", "LpPagination", "LpPasswordInput", "LpPhoneInput", "LpPopover", "LpProgress", "LpRadio", "LpRadioGroup", "LpScrollArea", "LpSegmented", "LpSelect", "LpServiceNode", "LpShortcutsDialog", "LpSidebar", "LpSidebarNav", "LpSkeleton", "LpSlider", "LpStat", "LpStepper", "LpSwitch", "LpTable", "LpTableOfContents", "LpTabs", "LpTextarea", "LpThemeSwitcher", "LpTilt", "LpToaster", "LpTooltip", "LpTopologyCanvas", "LpUptimeBar", "LpWaypointEdge"];
|
|
1
|
+
export declare const COMPONENT_NAMES: readonly ["LayoutCanvas", "LayoutNode", "LpAddressInput", "LpAlert", "LpAppShell", "LpAutocomplete", "LpAvatar", "LpBadge", "LpBreadcrumbs", "LpButton", "LpCalendar", "LpCard", "LpCheckbox", "LpCodeBlock", "LpCommandPalette", "LpConfirmDialog", "LpContextMenu", "LpDatePicker", "LpDisclosure", "LpDivider", "LpDrawer", "LpDropdownMenu", "LpEmptyState", "LpFileTree", "LpFileTreeNode", "LpFormField", "LpIcon", "LpInfraNode", "LpInput", "LpLaneNode", "LpLightbox", "LpLink", "LpLogViewer", "LpMapPicker", "LpModal", "LpNotificationBell", "LpNumberField", "LpOtpInput", "LpPagination", "LpPasswordInput", "LpPhoneInput", "LpPopover", "LpProgress", "LpRadio", "LpRadioGroup", "LpScrollArea", "LpSegmented", "LpSelect", "LpServiceNode", "LpShift", "LpShortcutsDialog", "LpSidebar", "LpSidebarNav", "LpSkeleton", "LpSlider", "LpStat", "LpStepper", "LpSwitch", "LpTable", "LpTableOfContents", "LpTabs", "LpTextarea", "LpThemeSwitcher", "LpTilt", "LpToaster", "LpTooltip", "LpTopologyCanvas", "LpUptimeBar", "LpWaypointEdge"];
|
|
@@ -38,7 +38,7 @@ type __VLS_Props = {
|
|
|
38
38
|
declare var __VLS_12: {}, __VLS_15: {}, __VLS_18: {}, __VLS_21: {
|
|
39
39
|
item: SidebarItem;
|
|
40
40
|
active: boolean;
|
|
41
|
-
},
|
|
41
|
+
}, __VLS_42: {}, __VLS_50: {}, __VLS_52: {}, __VLS_60: {}, __VLS_62: {};
|
|
42
42
|
type __VLS_Slots = {} & {
|
|
43
43
|
logo?: (props: typeof __VLS_12) => any;
|
|
44
44
|
} & {
|
|
@@ -48,15 +48,15 @@ type __VLS_Slots = {} & {
|
|
|
48
48
|
} & {
|
|
49
49
|
'sidebar-item'?: (props: typeof __VLS_21) => any;
|
|
50
50
|
} & {
|
|
51
|
-
'header-title'?: (props: typeof
|
|
51
|
+
'header-title'?: (props: typeof __VLS_42) => any;
|
|
52
52
|
} & {
|
|
53
|
-
'header-actions'?: (props: typeof
|
|
53
|
+
'header-actions'?: (props: typeof __VLS_50) => any;
|
|
54
54
|
} & {
|
|
55
|
-
default?: (props: typeof
|
|
55
|
+
default?: (props: typeof __VLS_52) => any;
|
|
56
56
|
} & {
|
|
57
|
-
default?: (props: typeof
|
|
57
|
+
default?: (props: typeof __VLS_60) => any;
|
|
58
58
|
} & {
|
|
59
|
-
overlays?: (props: typeof
|
|
59
|
+
overlays?: (props: typeof __VLS_62) => any;
|
|
60
60
|
};
|
|
61
61
|
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
62
62
|
openDrawer: () => void;
|
|
@@ -6,6 +6,10 @@ declare const __VLS_export: import('vue').DefineComponent<{
|
|
|
6
6
|
alt?: string;
|
|
7
7
|
fallback?: string;
|
|
8
8
|
size?: "sm" | "md" | "lg" | undefined;
|
|
9
|
+
/** Silhouette: circle for people, soft/square for servers and projects. */
|
|
10
|
+
shape?: "circle" | "square" | "soft" | undefined;
|
|
11
|
+
/** Draws a hairline ring, for avatars laid over imagery or other avatars. */
|
|
12
|
+
ring?: boolean;
|
|
9
13
|
/** Right-click menu (e.g. account quick actions). Consumer-supplied. */
|
|
10
14
|
menuItems?: ContextMenuItemDef[];
|
|
11
15
|
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
@@ -13,8 +17,14 @@ declare const __VLS_export: import('vue').DefineComponent<{
|
|
|
13
17
|
alt?: string;
|
|
14
18
|
fallback?: string;
|
|
15
19
|
size?: "sm" | "md" | "lg" | undefined;
|
|
20
|
+
/** Silhouette: circle for people, soft/square for servers and projects. */
|
|
21
|
+
shape?: "circle" | "square" | "soft" | undefined;
|
|
22
|
+
/** Draws a hairline ring, for avatars laid over imagery or other avatars. */
|
|
23
|
+
ring?: boolean;
|
|
16
24
|
/** Right-click menu (e.g. account quick actions). Consumer-supplied. */
|
|
17
25
|
menuItems?: ContextMenuItemDef[];
|
|
18
26
|
}> & Readonly<{}>, {
|
|
19
27
|
size: "sm" | "md" | "lg";
|
|
28
|
+
shape: "circle" | "square" | "soft";
|
|
29
|
+
ring: boolean;
|
|
20
30
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
@@ -5,6 +5,13 @@ type __VLS_Props = {
|
|
|
5
5
|
confirmLabel?: string;
|
|
6
6
|
cancelLabel?: string;
|
|
7
7
|
danger?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* The confirm action is in flight: the button disables and swaps to
|
|
10
|
+
* `loadingLabel`, and confirming no longer closes the dialog — the owner
|
|
11
|
+
* closes it once the work settles, so a failure can stay on screen.
|
|
12
|
+
*/
|
|
13
|
+
loading?: boolean;
|
|
14
|
+
loadingLabel?: string;
|
|
8
15
|
};
|
|
9
16
|
declare var __VLS_10: {};
|
|
10
17
|
type __VLS_Slots = {} & {
|
|
@@ -21,6 +28,7 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
21
28
|
}>, {
|
|
22
29
|
confirmLabel: string;
|
|
23
30
|
cancelLabel: string;
|
|
31
|
+
loadingLabel: string;
|
|
24
32
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
25
33
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
26
34
|
declare const _default: typeof __VLS_export;
|
|
@@ -11,6 +11,12 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
|
|
|
11
11
|
hint?: string;
|
|
12
12
|
error?: string;
|
|
13
13
|
icon?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Marks the label with the required indicator. The attribute still reaches
|
|
16
|
+
* the underlying <input> for native validation; this only makes the field
|
|
17
|
+
* read as required.
|
|
18
|
+
*/
|
|
19
|
+
required?: boolean;
|
|
14
20
|
/**
|
|
15
21
|
* RegExp/string the whole value must match to be valid. Validation only —
|
|
16
22
|
* never blocks typing; a non-matching non-empty value shows the invalid
|
|
@@ -40,6 +46,12 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
|
|
|
40
46
|
hint?: string;
|
|
41
47
|
error?: string;
|
|
42
48
|
icon?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Marks the label with the required indicator. The attribute still reaches
|
|
51
|
+
* the underlying <input> for native validation; this only makes the field
|
|
52
|
+
* read as required.
|
|
53
|
+
*/
|
|
54
|
+
required?: boolean;
|
|
43
55
|
/**
|
|
44
56
|
* RegExp/string the whole value must match to be valid. Validation only —
|
|
45
57
|
* never blocks typing; a non-matching non-empty value shows the invalid
|
|
@@ -1,7 +1,24 @@
|
|
|
1
|
+
import { Component } from 'vue';
|
|
1
2
|
type __VLS_Props = {
|
|
2
3
|
href?: string;
|
|
3
4
|
external?: boolean;
|
|
5
|
+
/** Shorthand for `tone="muted"`. */
|
|
4
6
|
muted?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* "brand" — the accent link colour (default).
|
|
9
|
+
* "ink" — inherits body text colour; for links that sit inside prose or
|
|
10
|
+
* chrome where an accent would shout (breadcrumbs, footers, nav).
|
|
11
|
+
* "muted" / "soft" — progressively quieter, both resolving to ink on hover.
|
|
12
|
+
*/
|
|
13
|
+
tone?: "brand" | "ink" | "muted" | "soft";
|
|
14
|
+
/**
|
|
15
|
+
* Root element/component. Defaults to a native <a>. Pass a router link
|
|
16
|
+
* component (e.g. NuxtLink or RouterLink) to keep client-side navigation;
|
|
17
|
+
* the kit stays DOM-agnostic, the consumer supplies the link component.
|
|
18
|
+
* Router links take their destination through their own prop (`to`), which
|
|
19
|
+
* falls through as a plain attribute.
|
|
20
|
+
*/
|
|
21
|
+
as?: string | Component;
|
|
5
22
|
/**
|
|
6
23
|
* "default" — plain hover underline.
|
|
7
24
|
* "reveal" — an underline bar that grows in from the left on hover
|
|
@@ -10,11 +27,12 @@ type __VLS_Props = {
|
|
|
10
27
|
*/
|
|
11
28
|
variant?: "default" | "reveal";
|
|
12
29
|
};
|
|
13
|
-
declare var
|
|
30
|
+
declare var __VLS_8: {};
|
|
14
31
|
type __VLS_Slots = {} & {
|
|
15
|
-
default?: (props: typeof
|
|
32
|
+
default?: (props: typeof __VLS_8) => any;
|
|
16
33
|
};
|
|
17
34
|
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
35
|
+
as: string | Component;
|
|
18
36
|
variant: "default" | "reveal";
|
|
19
37
|
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
20
38
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -5,6 +5,10 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
|
|
|
5
5
|
placeholder?: string;
|
|
6
6
|
invalid?: boolean;
|
|
7
7
|
disabled?: boolean;
|
|
8
|
+
label?: string;
|
|
9
|
+
hint?: string;
|
|
10
|
+
error?: string;
|
|
11
|
+
required?: boolean;
|
|
8
12
|
}, {
|
|
9
13
|
focus: (options?: FocusOptions) => void | undefined;
|
|
10
14
|
blur: () => void | undefined;
|
|
@@ -16,6 +20,10 @@ declare const __VLS_export: __VLS_WithSlots<import('vue').DefineComponent<{
|
|
|
16
20
|
placeholder?: string;
|
|
17
21
|
invalid?: boolean;
|
|
18
22
|
disabled?: boolean;
|
|
23
|
+
label?: string;
|
|
24
|
+
hint?: string;
|
|
25
|
+
error?: string;
|
|
26
|
+
required?: boolean;
|
|
19
27
|
}> & Readonly<{
|
|
20
28
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
21
29
|
}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
|