@leavepulse/ui 0.53.0 → 0.54.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/{LpAppShell-BmMYcEVx.js → LpAppShell-DcSXik4a.js} +1 -1
- package/dist/chunks/{LpAvatar-Cb1jtOVv.js → LpAvatar-LTvy0OkE.js} +1 -1
- package/dist/chunks/{LpCard-BdxkMXjo.js → LpCard-DbjO5yaF.js} +1 -1
- package/dist/chunks/{LpCheckbox-Bkj13CbW.js → LpCheckbox-DvVYeOD-.js} +2 -2
- package/dist/chunks/{LpColorPicker-BLqPX5Vw.js → LpColorPicker-D1sQqtXS.js} +1 -1
- package/dist/chunks/{LpContextMenu-1cKew_Dc.js → LpContextMenu-EF_90u3g.js} +5 -1
- package/dist/chunks/{LpFileTree-bk5VjBey.js → LpFileTree-3E4w4Rjr.js} +1 -1
- package/dist/chunks/{LpFileTreeNode-BvMSBM7X.js → LpFileTreeNode-B4uB8Ks_.js} +2 -2
- package/dist/chunks/{LpLogViewer-BDFXzvcl.js → LpLogViewer-BfgtXVKm.js} +1 -1
- package/dist/chunks/{LpModalNav-BAxC9et7.js → LpModalNav-aWwc_5CD.js} +1 -1
- package/dist/chunks/{LpNotificationBell-DsqSyMwS.js → LpNotificationBell-wZ3meeim.js} +1 -1
- package/dist/chunks/LpOtpInput-PbeNJ5In.js +131 -0
- package/dist/chunks/{LpPie-BdSnta11.js → LpPie-B7ti5qCH.js} +1 -1
- package/dist/chunks/{LpRadio-B5AfqTpZ.js → LpRadio-CWA5Eb3M.js} +2 -2
- package/dist/chunks/{LpRadioGroup-DmEW0l78.js → LpRadioGroup-CCn-Q2_c.js} +2 -2
- package/dist/chunks/{LpSidebar-DpEiGi8L.js → LpSidebar-C2oolgwy.js} +1 -1
- package/dist/chunks/{LpSidebarNav-BUuxipX-.js → LpSidebarNav-C9dHu-2b.js} +1 -1
- package/dist/chunks/{LpSwitch-OrcOJX9m.js → LpSwitch-DG2AhXIL.js} +2 -2
- package/dist/chunks/{LpTableFilter-BV8PpLM9.js → LpTableFilter-CrW7_Rj4.js} +1 -1
- package/dist/chunks/{LpTabs-UM0FQmPA.js → LpTabs-BMSBB78h.js} +44 -17
- package/dist/chunks/{LpThemeSwitcher-BbYFFT5w.js → LpThemeSwitcher-CPmhYOjX.js} +1 -1
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpAvatar.vue.js +1 -1
- package/dist/components/LpCard.vue.js +1 -1
- package/dist/components/LpChart.vue.js +1 -1
- package/dist/components/LpCheckbox.vue.js +1 -1
- package/dist/components/LpColorPicker.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.js +1 -1
- package/dist/components/LpContextMenu.vue.d.ts +2 -2
- package/dist/components/LpContextMenu.vue.js +1 -1
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpOtpInput.vue.d.ts +17 -0
- package/dist/components/LpOtpInput.vue.js +1 -1
- package/dist/components/LpPaletteHeader.vue.js +1 -1
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpRadio.vue.js +1 -1
- package/dist/components/LpRadioGroup.vue.js +1 -1
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpSwitch.vue.js +1 -1
- package/dist/components/LpTable.vue.js +3 -3
- package/dist/components/LpTableFilter.vue.js +1 -1
- package/dist/components/LpTabs.vue.d.ts +10 -2
- package/dist/components/LpTabs.vue.js +1 -1
- package/dist/components/LpThemeSwitcher.vue.js +1 -1
- package/dist/components/otp.d.ts +2 -0
- package/dist/components/otp.js +17 -1
- package/dist/index.js +18 -18
- package/package.json +1 -1
- package/src/components/LpCheckbox.vue +2 -2
- package/src/components/LpContextMenu.vue +18 -1
- package/src/components/LpOtpInput.vue +84 -28
- package/src/components/LpRadio.vue +2 -2
- package/src/components/LpRadioGroup.vue +2 -2
- package/src/components/LpSwitch.vue +2 -2
- package/src/components/LpTabs.vue +60 -21
- package/src/components/otp.ts +29 -0
- package/dist/chunks/LpOtpInput-CziPF3Oq.js +0 -99
|
@@ -4,7 +4,7 @@ import { _ as _sfc_main$2 } from "./LpButton-CKSwC6Mu.js";
|
|
|
4
4
|
import { _ as _sfc_main$3 } from "./LpIcon-DYtaid0K.js";
|
|
5
5
|
import { _ as _sfc_main$5 } from "./LpScrollArea-Hz3-JWUG.js";
|
|
6
6
|
import { _ as _sfc_main$4 } from "./LpShift-DXNsauQZ.js";
|
|
7
|
-
import { _ as _sfc_main$1 } from "./LpSidebar-
|
|
7
|
+
import { _ as _sfc_main$1 } from "./LpSidebar-C2oolgwy.js";
|
|
8
8
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
9
9
|
const _hoisted_1 = ["href"];
|
|
10
10
|
const _hoisted_2 = { class: "flex min-w-0 flex-1 flex-col" };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, computed, ref, onMounted, openBlock, createBlock, withCtx, createVNode, unref, mergeProps, createCommentVNode, createElementBlock, Fragment, createTextVNode, toDisplayString } from "vue";
|
|
2
2
|
import { AvatarRoot, AvatarImage, AvatarFallback } from "reka-ui";
|
|
3
3
|
import { tv } from "tailwind-variants";
|
|
4
|
-
import { _ as _sfc_main$1 } from "./LpContextMenu-
|
|
4
|
+
import { _ as _sfc_main$1 } from "./LpContextMenu-EF_90u3g.js";
|
|
5
5
|
import { _ as _sfc_main$2 } from "./LpIcon-DYtaid0K.js";
|
|
6
6
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
7
7
|
const __default__ = { inheritAttrs: false };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, computed, openBlock, createBlock, withCtx, resolveDynamicComponent, mergeProps, unref, renderSlot } from "vue";
|
|
2
2
|
import { tv } from "tailwind-variants";
|
|
3
3
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
4
|
-
import { _ as _sfc_main$1 } from "./LpContextMenu-
|
|
4
|
+
import { _ as _sfc_main$1 } from "./LpContextMenu-EF_90u3g.js";
|
|
5
5
|
const __default__ = { inheritAttrs: false };
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
7
7
|
...__default__,
|
|
@@ -26,7 +26,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
26
26
|
}
|
|
27
27
|
const field = useFieldControl(() => ({ wrapped: false, id: props.id, disabled: props.disabled }));
|
|
28
28
|
const { class: rootClass, attrs: rest } = useMergedAttrs(
|
|
29
|
-
"group inline-flex cursor-pointer items-center gap-2 text-sm text-ink"
|
|
29
|
+
"group/check inline-flex cursor-pointer items-center gap-2 text-sm text-ink"
|
|
30
30
|
);
|
|
31
31
|
return (_ctx, _cache) => {
|
|
32
32
|
return openBlock(), createElementBlock("label", mergeProps({ class: unref(rootClass) }, unref(rest)), [
|
|
@@ -36,7 +36,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
36
36
|
"model-value": __props.indeterminate ? "indeterminate" : __props.modelValue,
|
|
37
37
|
disabled: unref(field).disabled,
|
|
38
38
|
"aria-describedby": unref(field).describedBy,
|
|
39
|
-
class: "flex size-[18px] items-center justify-center rounded-[5px] border border-line-strong bg-surface-soft outline-none transition-[color,background-color,border-color,box-shadow,scale] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] not-data-[state=checked]:not-data-[state=indeterminate]:group-hover:border-brand active:scale-90 motion-reduce:active:scale-100 focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-transparent data-[state=checked]:bg-brand data-[state=indeterminate]:border-transparent data-[state=indeterminate]:bg-brand disabled:cursor-not-allowed disabled:opacity-55",
|
|
39
|
+
class: "flex size-[18px] items-center justify-center rounded-[5px] border border-line-strong bg-surface-soft outline-none transition-[color,background-color,border-color,box-shadow,scale] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] not-data-[state=checked]:not-data-[state=indeterminate]:group-hover/check:border-brand active:scale-90 motion-reduce:active:scale-100 focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-transparent data-[state=checked]:bg-brand data-[state=indeterminate]:border-transparent data-[state=indeterminate]:bg-brand disabled:cursor-not-allowed disabled:opacity-55",
|
|
40
40
|
"onUpdate:modelValue": onUpdate
|
|
41
41
|
}, {
|
|
42
42
|
default: withCtx(() => [
|
|
@@ -5,7 +5,7 @@ import { useFieldControl } from "../composables/useField.js";
|
|
|
5
5
|
import { DEFAULT_SWATCHES, formatColor, opaqueCss, parseColor, rgbToHsv, isLight, clampHsv } from "../components/color.js";
|
|
6
6
|
import { useClipboard } from "../composables/useClipboard.js";
|
|
7
7
|
import { POPOVER_PANEL } from "../components/dropdown.js";
|
|
8
|
-
import { _ as _sfc_main$1 } from "./LpContextMenu-
|
|
8
|
+
import { _ as _sfc_main$1 } from "./LpContextMenu-EF_90u3g.js";
|
|
9
9
|
import { _ as _sfc_main$2 } from "./LpIcon-DYtaid0K.js";
|
|
10
10
|
import { _ as _sfc_main$3 } from "./LpRollingText-DB7upf-5.js";
|
|
11
11
|
const _hoisted_1 = ["id", "disabled", "aria-label", "aria-invalid", "aria-describedby"];
|
|
@@ -24,6 +24,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
24
24
|
const text = el instanceof HTMLTextAreaElement || el instanceof HTMLInputElement && SELECTABLE.has(el.type);
|
|
25
25
|
field = text ? { el, value: el.value, start: el.selectionStart ?? 0, end: el.selectionEnd ?? 0 } : null;
|
|
26
26
|
}
|
|
27
|
+
function keepContextMenu(event) {
|
|
28
|
+
if (enabled.value) event.stopPropagation();
|
|
29
|
+
}
|
|
27
30
|
function returnFocus(event) {
|
|
28
31
|
const saved = field;
|
|
29
32
|
field = null;
|
|
@@ -38,7 +41,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
38
41
|
createVNode(unref(ContextMenuTrigger), {
|
|
39
42
|
"as-child": "",
|
|
40
43
|
disabled: !enabled.value,
|
|
41
|
-
onContextmenuCapture: rememberField
|
|
44
|
+
onContextmenuCapture: rememberField,
|
|
45
|
+
onContextmenu: keepContextMenu
|
|
42
46
|
}, {
|
|
43
47
|
default: withCtx(() => [
|
|
44
48
|
renderSlot(_ctx.$slots, "default")
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, ref, watch, computed, openBlock, createElementBlock, mergeProps, unref, Fragment, renderList, normalizeStyle, createBlock, createVNode, withCtx, createElementVNode, renderSlot, normalizeProps, guardReactiveProps, createTextVNode, toDisplayString, createCommentVNode } from "vue";
|
|
2
2
|
import { computeStats, formatSize, sortNodes, subtreeIds, ancestorIds } from "../components/fileTree.js";
|
|
3
3
|
import { _ as _sfc_main$1 } from "./LpEmptyState-BJbZXC8D.js";
|
|
4
|
-
import { _ as _sfc_main$3 } from "./LpFileTreeNode-
|
|
4
|
+
import { _ as _sfc_main$3 } from "./LpFileTreeNode-B4uB8Ks_.js";
|
|
5
5
|
import { _ as _sfc_main$2 } from "./LpScrollArea-Hz3-JWUG.js";
|
|
6
6
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
7
7
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineComponent, computed, resolveComponent, openBlock, createElementBlock, mergeProps, unref, createVNode, withCtx, createElementVNode, withModifiers, normalizeStyle, normalizeClass, createBlock, createCommentVNode, renderSlot, createTextVNode, toDisplayString, Transition, Fragment, renderList } from "vue";
|
|
2
2
|
import { prefersReducedMotion, easingToken } from "../composables/easing.js";
|
|
3
3
|
import { sortNodes, formatSize, formatModified, fileIcon } from "../components/fileTree.js";
|
|
4
|
-
import { _ as _sfc_main$3 } from "./LpCheckbox-
|
|
5
|
-
import { _ as _sfc_main$1 } from "./LpContextMenu-
|
|
4
|
+
import { _ as _sfc_main$3 } from "./LpCheckbox-DvVYeOD-.js";
|
|
5
|
+
import { _ as _sfc_main$1 } from "./LpContextMenu-EF_90u3g.js";
|
|
6
6
|
import { _ as _sfc_main$2 } from "./LpIcon-DYtaid0K.js";
|
|
7
7
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
8
8
|
const _hoisted_1 = ["aria-level", "aria-selected", "aria-expanded", "aria-disabled"];
|
|
@@ -2,7 +2,7 @@ import { defineComponent, useModel, computed, ref, shallowRef, onMounted, onBefo
|
|
|
2
2
|
import { prefersReducedMotion } from "../composables/easing.js";
|
|
3
3
|
import { useClipboard } from "../composables/useClipboard.js";
|
|
4
4
|
import { useHotkeys } from "../composables/useHotkeys.js";
|
|
5
|
-
import { _ as _sfc_main$3 } from "./LpContextMenu-
|
|
5
|
+
import { _ as _sfc_main$3 } from "./LpContextMenu-EF_90u3g.js";
|
|
6
6
|
import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
|
|
7
7
|
import { _ as _sfc_main$2 } from "./LpScrollArea-Hz3-JWUG.js";
|
|
8
8
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
@@ -4,7 +4,7 @@ import { useLabels } from "../composables/useLpConfig.js";
|
|
|
4
4
|
import { _ as _sfc_main$2 } from "./LpButton-CKSwC6Mu.js";
|
|
5
5
|
import { _ as _sfc_main$3 } from "./LpIcon-DYtaid0K.js";
|
|
6
6
|
import { _ as _sfc_main$1 } from "./LpModal-JNa3B_Lr.js";
|
|
7
|
-
import { _ as _sfc_main$4 } from "./LpSidebar-
|
|
7
|
+
import { _ as _sfc_main$4 } from "./LpSidebar-C2oolgwy.js";
|
|
8
8
|
const _hoisted_1 = { class: "flex items-center gap-2" };
|
|
9
9
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
10
10
|
__name: "LpModalNav",
|
|
@@ -2,7 +2,7 @@ import { defineComponent, computed, useModel, getCurrentInstance, ref, onMounted
|
|
|
2
2
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
3
3
|
import { _ as _sfc_main$8 } from "./LpBadge-Fe0D1bYx.js";
|
|
4
4
|
import { _ as _sfc_main$7 } from "./LpButton-CKSwC6Mu.js";
|
|
5
|
-
import { _ as _sfc_main$5 } from "./LpContextMenu-
|
|
5
|
+
import { _ as _sfc_main$5 } from "./LpContextMenu-EF_90u3g.js";
|
|
6
6
|
import { _ as _sfc_main$3 } from "./LpEmptyState-BJbZXC8D.js";
|
|
7
7
|
import { _ as _sfc_main$6 } from "./LpIcon-DYtaid0K.js";
|
|
8
8
|
import { _ as _sfc_main$1 } from "./LpPopover-DCKeqiVn.js";
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { defineComponent, computed, ref, watch, openBlock, createBlock, unref, mergeProps, withCtx, createElementBlock, Fragment, renderList, createVNode, normalizeClass, createCommentVNode } from "vue";
|
|
2
|
+
import { PinInputRoot, PinInputInput } from "reka-ui";
|
|
3
|
+
import { useFieldControl } from "../composables/useField.js";
|
|
4
|
+
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
5
|
+
import { splitCode, upperCells, joinCells, groupBreaks } from "../components/otp.js";
|
|
6
|
+
const _hoisted_1 = {
|
|
7
|
+
key: 0,
|
|
8
|
+
"aria-hidden": "true",
|
|
9
|
+
class: "h-0.5 w-2 shrink-0 rounded-full bg-muted opacity-60"
|
|
10
|
+
};
|
|
11
|
+
const __default__ = { inheritAttrs: false };
|
|
12
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
13
|
+
...__default__,
|
|
14
|
+
__name: "LpOtpInput",
|
|
15
|
+
props: {
|
|
16
|
+
modelValue: {},
|
|
17
|
+
length: { default: 6 },
|
|
18
|
+
disabled: { type: Boolean },
|
|
19
|
+
mask: { type: Boolean },
|
|
20
|
+
alphanumeric: { type: Boolean, default: false },
|
|
21
|
+
uppercase: { type: Boolean, default: void 0 },
|
|
22
|
+
group: {},
|
|
23
|
+
invalid: { type: Boolean },
|
|
24
|
+
size: { default: "md" }
|
|
25
|
+
},
|
|
26
|
+
emits: ["update:modelValue", "complete"],
|
|
27
|
+
setup(__props, { emit: __emit }) {
|
|
28
|
+
const props = __props;
|
|
29
|
+
const emit = __emit;
|
|
30
|
+
const upper = computed(() => props.alphanumeric && (props.uppercase ?? true));
|
|
31
|
+
const local = ref(splitCode(props.modelValue, props.length));
|
|
32
|
+
let emitted = props.modelValue ?? "";
|
|
33
|
+
watch(
|
|
34
|
+
() => props.modelValue ?? "",
|
|
35
|
+
(value) => {
|
|
36
|
+
if (value === emitted) return;
|
|
37
|
+
emitted = value;
|
|
38
|
+
local.value = splitCode(value, props.length);
|
|
39
|
+
}
|
|
40
|
+
);
|
|
41
|
+
watch(
|
|
42
|
+
() => props.length,
|
|
43
|
+
(length) => {
|
|
44
|
+
local.value = local.value.slice(0, length);
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
const cells = computed({
|
|
48
|
+
get: () => local.value,
|
|
49
|
+
set: (arr) => {
|
|
50
|
+
local.value = upper.value ? upperCells(arr) : arr;
|
|
51
|
+
emitted = joinCells(local.value);
|
|
52
|
+
emit("update:modelValue", emitted);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const field = useFieldControl(() => ({
|
|
56
|
+
wrapped: false,
|
|
57
|
+
invalid: props.invalid,
|
|
58
|
+
disabled: props.disabled
|
|
59
|
+
}));
|
|
60
|
+
function onComplete(arr) {
|
|
61
|
+
emit("complete", joinCells(upper.value ? upperCells(arr) : arr));
|
|
62
|
+
}
|
|
63
|
+
const breaks = computed(() => groupBreaks(props.length, props.group));
|
|
64
|
+
const root = ref(null);
|
|
65
|
+
function onBeforeInput(event, index) {
|
|
66
|
+
if (event.inputType !== "deleteContentBackward") return;
|
|
67
|
+
event.preventDefault();
|
|
68
|
+
const target = event.target;
|
|
69
|
+
const next = [...local.value];
|
|
70
|
+
let clear = index;
|
|
71
|
+
if (!target.value && index > 0) {
|
|
72
|
+
clear = index - 1;
|
|
73
|
+
root.value?.$el.querySelectorAll("input")[clear]?.focus();
|
|
74
|
+
}
|
|
75
|
+
next[clear] = props.alphanumeric ? "" : void 0;
|
|
76
|
+
cells.value = next;
|
|
77
|
+
}
|
|
78
|
+
const cellSize = {
|
|
79
|
+
sm: "max-w-9 text-base",
|
|
80
|
+
md: "max-w-11 text-lg",
|
|
81
|
+
lg: "max-w-13 text-xl"
|
|
82
|
+
};
|
|
83
|
+
const { class: rootClass, attrs: rest } = useMergedAttrs(
|
|
84
|
+
"flex min-w-0 max-w-full items-center gap-1.5 sm:gap-2"
|
|
85
|
+
);
|
|
86
|
+
return (_ctx, _cache) => {
|
|
87
|
+
return openBlock(), createBlock(unref(PinInputRoot), mergeProps({
|
|
88
|
+
ref_key: "root",
|
|
89
|
+
ref: root,
|
|
90
|
+
modelValue: cells.value,
|
|
91
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => cells.value = $event),
|
|
92
|
+
type: __props.alphanumeric ? "text" : "number",
|
|
93
|
+
mask: __props.mask,
|
|
94
|
+
disabled: unref(field).disabled,
|
|
95
|
+
otp: "",
|
|
96
|
+
class: unref(rootClass)
|
|
97
|
+
}, unref(rest), { onComplete }), {
|
|
98
|
+
default: withCtx(() => [
|
|
99
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.length, (i) => {
|
|
100
|
+
return openBlock(), createElementBlock(Fragment, { key: i }, [
|
|
101
|
+
createVNode(unref(PinInputInput), {
|
|
102
|
+
index: i - 1,
|
|
103
|
+
id: i === 1 ? unref(field).id : void 0,
|
|
104
|
+
"aria-invalid": unref(field).invalid || void 0,
|
|
105
|
+
"aria-describedby": unref(field).describedBy,
|
|
106
|
+
autocapitalize: upper.value ? "characters" : "none",
|
|
107
|
+
autocorrect: "off",
|
|
108
|
+
spellcheck: false,
|
|
109
|
+
class: normalizeClass([
|
|
110
|
+
cellSize[__props.size],
|
|
111
|
+
"aspect-square h-auto min-w-0 flex-1 basis-0 p-0",
|
|
112
|
+
"rounded-control border bg-surface-soft text-center font-semibold text-ink caret-brand",
|
|
113
|
+
"outline-none transition-colors duration-[var(--duration-fast)]",
|
|
114
|
+
"focus:border-brand focus:ring-2 focus:ring-ring",
|
|
115
|
+
"disabled:cursor-not-allowed disabled:opacity-55",
|
|
116
|
+
unref(field).invalid ? "border-danger focus:border-danger focus:ring-danger-soft" : "border-line"
|
|
117
|
+
]),
|
|
118
|
+
onBeforeinput: ($event) => onBeforeInput($event, i - 1)
|
|
119
|
+
}, null, 8, ["index", "id", "aria-invalid", "aria-describedby", "autocapitalize", "class", "onBeforeinput"]),
|
|
120
|
+
breaks.value.has(i - 1) ? (openBlock(), createElementBlock("span", _hoisted_1)) : createCommentVNode("", true)
|
|
121
|
+
], 64);
|
|
122
|
+
}), 128))
|
|
123
|
+
]),
|
|
124
|
+
_: 1
|
|
125
|
+
}, 16, ["modelValue", "type", "mask", "disabled", "class"]);
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
export {
|
|
130
|
+
_sfc_main as _
|
|
131
|
+
};
|
|
@@ -2,7 +2,7 @@ import { defineComponent, computed, ref, watch, onBeforeUnmount, openBlock, crea
|
|
|
2
2
|
import { prefersReducedMotion, easeTravel } from "../composables/easing.js";
|
|
3
3
|
import { useReveal } from "../composables/useReveal.js";
|
|
4
4
|
import { resolveSlices, arcPath, calloutLabels, formatTick } from "../components/chart.js";
|
|
5
|
-
import { _ as _sfc_main$2 } from "./LpContextMenu-
|
|
5
|
+
import { _ as _sfc_main$2 } from "./LpContextMenu-EF_90u3g.js";
|
|
6
6
|
import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
|
|
7
7
|
import { _ as _sfc_main$4 } from "./LpNumberFlow-z4WPZcZu.js";
|
|
8
8
|
import { _ as _sfc_main$5 } from "./LpRollingText-DB7upf-5.js";
|
|
@@ -14,7 +14,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
14
14
|
const props = __props;
|
|
15
15
|
const { class: rootClass, attrs: rest } = useMergedAttrs(
|
|
16
16
|
() => [
|
|
17
|
-
"group inline-flex cursor-pointer items-center gap-2 text-sm text-ink",
|
|
17
|
+
"group/radio inline-flex cursor-pointer items-center gap-2 text-sm text-ink",
|
|
18
18
|
props.disabled ? "cursor-not-allowed opacity-55" : ""
|
|
19
19
|
].join(" ")
|
|
20
20
|
);
|
|
@@ -23,7 +23,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
23
23
|
createVNode(unref(RadioGroupItem), {
|
|
24
24
|
value: __props.value,
|
|
25
25
|
disabled: __props.disabled,
|
|
26
|
-
class: "flex size-[18px] shrink-0 items-center justify-center rounded-full border border-line-strong bg-surface-soft outline-none transition-[color,border-color,box-shadow,scale] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] not-data-[state=checked]:group-hover:border-brand active:scale-90 motion-reduce:active:scale-100 focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-brand disabled:cursor-not-allowed disabled:opacity-55"
|
|
26
|
+
class: "flex size-[18px] shrink-0 items-center justify-center rounded-full border border-line-strong bg-surface-soft outline-none transition-[color,border-color,box-shadow,scale] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] not-data-[state=checked]:group-hover/radio:border-brand active:scale-90 motion-reduce:active:scale-100 focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-brand disabled:cursor-not-allowed disabled:opacity-55"
|
|
27
27
|
}, {
|
|
28
28
|
default: withCtx(() => [
|
|
29
29
|
createVNode(unref(RadioGroupIndicator), { class: "flex data-[state=checked]:animate-[indicator-in_140ms_var(--ease-emphasized)]" }, {
|
|
@@ -35,11 +35,11 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
35
35
|
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (opt) => {
|
|
36
36
|
return openBlock(), createElementBlock("label", {
|
|
37
37
|
key: opt.value,
|
|
38
|
-
class: "group inline-flex cursor-pointer items-center gap-2 text-sm text-ink"
|
|
38
|
+
class: "group/radio inline-flex cursor-pointer items-center gap-2 text-sm text-ink"
|
|
39
39
|
}, [
|
|
40
40
|
createVNode(unref(RadioGroupItem), {
|
|
41
41
|
value: opt.value,
|
|
42
|
-
class: "flex size-[18px] items-center justify-center rounded-full border border-line-strong bg-surface-soft outline-none transition-[color,border-color,box-shadow,scale] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] not-data-[state=checked]:group-hover:border-brand active:scale-90 motion-reduce:active:scale-100 focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-brand disabled:cursor-not-allowed disabled:opacity-55"
|
|
42
|
+
class: "flex size-[18px] items-center justify-center rounded-full border border-line-strong bg-surface-soft outline-none transition-[color,border-color,box-shadow,scale] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] not-data-[state=checked]:group-hover/radio:border-brand active:scale-90 motion-reduce:active:scale-100 focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-brand disabled:cursor-not-allowed disabled:opacity-55"
|
|
43
43
|
}, {
|
|
44
44
|
default: withCtx(() => [
|
|
45
45
|
createVNode(unref(RadioGroupIndicator), { class: "flex data-[state=checked]:animate-[indicator-in_140ms_var(--ease-emphasized)]" }, {
|
|
@@ -2,7 +2,7 @@ import { defineComponent, computed, ref, useId, openBlock, createElementBlock, F
|
|
|
2
2
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
3
3
|
import { _ as _sfc_main$3 } from "./LpDrawer-CBFVD624.js";
|
|
4
4
|
import { _ as _sfc_main$1 } from "./LpInput-D-YGQbEv.js";
|
|
5
|
-
import { _ as _sfc_main$2 } from "./LpSidebarNav-
|
|
5
|
+
import { _ as _sfc_main$2 } from "./LpSidebarNav-C9dHu-2b.js";
|
|
6
6
|
const _hoisted_1 = ["aria-label"];
|
|
7
7
|
const _hoisted_2 = {
|
|
8
8
|
key: 2,
|
|
@@ -3,7 +3,7 @@ import { Motion } from "motion-v";
|
|
|
3
3
|
import { CollapsibleRoot, CollapsibleTrigger, CollapsibleContent } from "reka-ui";
|
|
4
4
|
import { usePillTransition } from "../composables/usePillTransition.js";
|
|
5
5
|
import { _ as _sfc_main$3 } from "./LpBadge-Fe0D1bYx.js";
|
|
6
|
-
import { _ as _sfc_main$4 } from "./LpContextMenu-
|
|
6
|
+
import { _ as _sfc_main$4 } from "./LpContextMenu-EF_90u3g.js";
|
|
7
7
|
import { _ as _sfc_main$2 } from "./LpIcon-DYtaid0K.js";
|
|
8
8
|
import { _ as _sfc_main$1 } from "./LpScrollArea-Hz3-JWUG.js";
|
|
9
9
|
import { resolveLink } from "../components/link.js";
|
|
@@ -27,8 +27,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
27
27
|
const emit = __emit;
|
|
28
28
|
const slots = useSlots();
|
|
29
29
|
const labelled = computed(() => Boolean(props.label || props.description || slots.default));
|
|
30
|
-
const TRACK = "group inline-flex h-5 w-9 shrink-0 items-center rounded-pill border border-line bg-surface-soft px-0.5 outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-transparent data-[state=checked]:bg-brand disabled:cursor-not-allowed disabled:opacity-55";
|
|
31
|
-
const THUMB = "h-3.5 w-3.5 rounded-full bg-ink shadow transition-[translate,width,background-color] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] group-active:w-5 group-data-[state=checked]:translate-x-4 group-data-[state=checked]:bg-ink-inverse group-data-[state=checked]:group-active:translate-x-2.5 motion-reduce:group-active:w-3.5";
|
|
30
|
+
const TRACK = "group/switch inline-flex h-5 w-9 shrink-0 items-center rounded-pill border border-line bg-surface-soft px-0.5 outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-ring data-[state=checked]:border-transparent data-[state=checked]:bg-brand disabled:cursor-not-allowed disabled:opacity-55";
|
|
31
|
+
const THUMB = "h-3.5 w-3.5 rounded-full bg-ink shadow transition-[translate,width,background-color] duration-[var(--duration-fast)] ease-[var(--ease-emphasized)] group-active/switch:w-5 group-data-[state=checked]/switch:translate-x-4 group-data-[state=checked]/switch:bg-ink-inverse group-data-[state=checked]/switch:group-active/switch:translate-x-2.5 motion-reduce:group-active/switch:w-3.5";
|
|
32
32
|
const { class: rootClass, attrs: rest } = useMergedAttrs(() => {
|
|
33
33
|
if (!labelled.value) return TRACK;
|
|
34
34
|
return props.labelPosition === "start" ? "flex w-full cursor-pointer items-center justify-between gap-3 text-sm text-ink" : "inline-flex cursor-pointer items-center gap-2 text-sm text-ink";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineComponent, ref, computed, openBlock, createElementBlock, createBlock, createCommentVNode, createElementVNode, Fragment, unref, normalizeClass, toDisplayString, createVNode, withCtx, renderList } from "vue";
|
|
2
|
-
import { _ as _sfc_main$3 } from "./LpCheckbox-
|
|
2
|
+
import { _ as _sfc_main$3 } from "./LpCheckbox-DvVYeOD-.js";
|
|
3
3
|
import { _ as _sfc_main$1 } from "./LpInput-D-YGQbEv.js";
|
|
4
4
|
import { _ as _sfc_main$2 } from "./LpShift-DXNsauQZ.js";
|
|
5
5
|
import { usePaintSelect } from "../composables/usePaintSelect.js";
|
|
@@ -1,9 +1,22 @@
|
|
|
1
|
-
import { defineComponent, ref, watch, nextTick, useId,
|
|
1
|
+
import { defineComponent, computed, ref, watch, nextTick, useId, openBlock, createBlock, unref, withCtx, createVNode, normalizeClass, createElementBlock, Fragment, renderList, createCommentVNode, createElementVNode, toDisplayString, renderSlot } from "vue";
|
|
2
2
|
import { useReducedMotion, Motion } from "motion-v";
|
|
3
3
|
import { TabsRoot, TabsList, TabsTrigger, TabsContent } from "reka-ui";
|
|
4
4
|
import { usePillTransition } from "../composables/usePillTransition.js";
|
|
5
5
|
import { _ as _sfc_main$1 } from "./LpIcon-DYtaid0K.js";
|
|
6
|
-
const _hoisted_1 = {
|
|
6
|
+
const _hoisted_1 = {
|
|
7
|
+
key: 1,
|
|
8
|
+
class: "relative z-10 inline-flex"
|
|
9
|
+
};
|
|
10
|
+
const _hoisted_2 = {
|
|
11
|
+
key: 0,
|
|
12
|
+
"aria-hidden": "true",
|
|
13
|
+
class: "absolute -right-1 -top-0.5 size-2 rounded-full bg-accent"
|
|
14
|
+
};
|
|
15
|
+
const _hoisted_3 = {
|
|
16
|
+
key: 2,
|
|
17
|
+
"aria-hidden": "true",
|
|
18
|
+
class: "relative z-10 size-1.5 self-start rounded-full bg-accent"
|
|
19
|
+
};
|
|
7
20
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
8
21
|
__name: "LpTabs",
|
|
9
22
|
props: {
|
|
@@ -12,11 +25,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
12
25
|
items: {},
|
|
13
26
|
variant: { default: "contained" },
|
|
14
27
|
accent: { type: Boolean, default: false },
|
|
15
|
-
block: { type: Boolean, default: false }
|
|
28
|
+
block: { type: Boolean, default: false },
|
|
29
|
+
label: {}
|
|
16
30
|
},
|
|
17
31
|
emits: ["update:modelValue"],
|
|
18
32
|
setup(__props, { emit: __emit }) {
|
|
19
33
|
const props = __props;
|
|
34
|
+
const bottom = computed(() => props.variant === "bottom");
|
|
20
35
|
const emit = __emit;
|
|
21
36
|
const current = ref(props.modelValue ?? props.defaultValue ?? props.items[0]?.value);
|
|
22
37
|
watch(
|
|
@@ -50,6 +65,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
50
65
|
() => reduceMotion.value ? { duration: 0 } : { type: "spring", stiffness: 520, damping: 42, mass: 0.9 }
|
|
51
66
|
);
|
|
52
67
|
function pillUnder(value, active) {
|
|
68
|
+
if (bottom.value) return active === value;
|
|
53
69
|
return hovered.value ? hovered.value === value : active === value;
|
|
54
70
|
}
|
|
55
71
|
function releaseFocusAfterPointer(event) {
|
|
@@ -65,11 +81,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
65
81
|
createVNode(unref(TabsList), {
|
|
66
82
|
ref_key: "list",
|
|
67
83
|
ref: list,
|
|
68
|
-
|
|
84
|
+
"aria-label": __props.label,
|
|
85
|
+
class: normalizeClass(bottom.value ? "grid w-full auto-cols-fr grid-flow-col border-t border-line bg-surface pb-[env(safe-area-inset-bottom)] pl-[env(safe-area-inset-left)] pr-[env(safe-area-inset-right)]" : [
|
|
86
|
+
"max-w-full gap-1 overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
|
|
69
87
|
__props.block ? "flex w-full" : "inline-flex",
|
|
70
88
|
__props.variant === "contained" ? "rounded-control border border-line bg-surface-soft p-1" : "",
|
|
71
89
|
__props.variant === "underline" ? "border-b border-line" : ""
|
|
72
|
-
]
|
|
90
|
+
]),
|
|
73
91
|
onPointerleave: _cache[0] || (_cache[0] = ($event) => hovered.value = null)
|
|
74
92
|
}, {
|
|
75
93
|
default: withCtx(() => [
|
|
@@ -77,11 +95,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
77
95
|
return openBlock(), createBlock(unref(TabsTrigger), {
|
|
78
96
|
key: item.value,
|
|
79
97
|
value: item.value,
|
|
80
|
-
class: normalizeClass(["relative inline-flex
|
|
81
|
-
|
|
82
|
-
__props.
|
|
98
|
+
class: normalizeClass(["relative inline-flex items-center justify-center outline-none transition-colors duration-[var(--duration-fast)] focus-visible:ring-2 focus-visible:ring-ring", [
|
|
99
|
+
bottom.value ? "min-h-14 min-w-0 flex-col gap-0.5 px-1 py-1.5 text-[11px] font-medium focus-visible:ring-inset" : "shrink-0 gap-1.5 whitespace-nowrap text-sm",
|
|
100
|
+
__props.block && !bottom.value ? "flex-1" : "",
|
|
101
|
+
__props.variant === "underline" ? "rounded-t-md px-3 pt-1.5 pb-2" : "",
|
|
102
|
+
__props.variant === "contained" || __props.variant === "plain" ? "rounded-md px-3 py-1.5" : "",
|
|
83
103
|
__props.accent ? "data-[state=active]:text-brand" : "data-[state=active]:text-ink",
|
|
84
|
-
hovered.value === item.value ? "text-ink" : "text-muted"
|
|
104
|
+
hovered.value === item.value && !bottom.value ? "text-ink" : "text-muted"
|
|
85
105
|
]]),
|
|
86
106
|
onPointerenter: ($event) => hovered.value = item.value,
|
|
87
107
|
onPointerup: releaseFocusAfterPointer
|
|
@@ -94,25 +114,32 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
94
114
|
class: normalizeClass(__props.variant === "underline" ? [
|
|
95
115
|
"absolute inset-x-0 -bottom-px z-0 h-0.5 rounded-full",
|
|
96
116
|
__props.accent ? "bg-brand" : "bg-ink"
|
|
117
|
+
] : bottom.value ? [
|
|
118
|
+
"absolute inset-x-[22%] top-0 z-0 h-0.5 rounded-b-full",
|
|
119
|
+
__props.accent ? "bg-brand" : "bg-ink"
|
|
97
120
|
] : [
|
|
98
121
|
"absolute inset-0 z-0 rounded-md shadow-sm",
|
|
99
122
|
__props.accent ? "border border-brand/35 bg-brand/12" : "border border-line bg-surface-raised"
|
|
100
123
|
])
|
|
101
124
|
}, null, 8, ["transition", "class"])) : createCommentVNode("", true),
|
|
102
|
-
item.icon ? (openBlock(),
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
125
|
+
item.icon ? (openBlock(), createElementBlock("span", _hoisted_1, [
|
|
126
|
+
createVNode(_sfc_main$1, {
|
|
127
|
+
name: item.icon,
|
|
128
|
+
size: bottom.value ? 22 : 14
|
|
129
|
+
}, null, 8, ["name", "size"]),
|
|
130
|
+
item.dot ? (openBlock(), createElementBlock("span", _hoisted_2)) : createCommentVNode("", true)
|
|
131
|
+
])) : createCommentVNode("", true),
|
|
132
|
+
createElementVNode("span", {
|
|
133
|
+
class: normalizeClass(["relative z-10", bottom.value ? "max-w-full truncate" : ""])
|
|
134
|
+
}, toDisplayString(item.label), 3),
|
|
135
|
+
item.dot && !item.icon ? (openBlock(), createElementBlock("span", _hoisted_3)) : createCommentVNode("", true)
|
|
109
136
|
]),
|
|
110
137
|
_: 2
|
|
111
138
|
}, 1032, ["value", "class", "onPointerenter"]);
|
|
112
139
|
}), 128))
|
|
113
140
|
]),
|
|
114
141
|
_: 1
|
|
115
|
-
}, 8, ["class"]),
|
|
142
|
+
}, 8, ["aria-label", "class"]),
|
|
116
143
|
_ctx.$slots.panel ? (openBlock(), createBlock(unref(Motion), {
|
|
117
144
|
key: 0,
|
|
118
145
|
layout: true,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, computed, onMounted, ref, openBlock, createBlock, withCtx, createElementVNode, normalizeClass, createElementBlock, createVNode, toDisplayString, createCommentVNode } from "vue";
|
|
2
2
|
import { useLabels } from "../composables/useLpConfig.js";
|
|
3
3
|
import { u as useTheme, p as presets } from "./useTheme-DJm1JSsY.js";
|
|
4
|
-
import { _ as _sfc_main$1 } from "./LpContextMenu-
|
|
4
|
+
import { _ as _sfc_main$1 } from "./LpContextMenu-EF_90u3g.js";
|
|
5
5
|
import { _ as _sfc_main$2 } from "./LpIcon-DYtaid0K.js";
|
|
6
6
|
const _hoisted_1 = ["aria-label", "title"];
|
|
7
7
|
const _hoisted_2 = {
|
|
@@ -5,7 +5,7 @@ import { prefersReducedMotion, easeTravel } from "../composables/easing.js";
|
|
|
5
5
|
import { usePillTransition } from "../composables/usePillTransition.js";
|
|
6
6
|
import { useReveal } from "../composables/useReveal.js";
|
|
7
7
|
import { normalise, pointCount, resolveLabels, extent, axisTicks, plotHeight, plotWidth, xAt, yAt, areaPath, linePath, barPath, markerIndex, chartSummary, niceScale, nearestIndex, formatTick } from "./chart.js";
|
|
8
|
-
import { _ as _sfc_main$1 } from "../chunks/LpContextMenu-
|
|
8
|
+
import { _ as _sfc_main$1 } from "../chunks/LpContextMenu-EF_90u3g.js";
|
|
9
9
|
import { _ as _sfc_main$2 } from "../chunks/LpIcon-DYtaid0K.js";
|
|
10
10
|
import { _ as _sfc_main$3 } from "../chunks/LpShift-DXNsauQZ.js";
|
|
11
11
|
import { useMergedAttrs } from "../composables/useMergedClass.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent, ref, useId, computed, shallowRef, watch, useSlots, onBeforeUnmount, nextTick, openBlock, createBlock, unref, withCtx, createVNode, normalizeStyle, normalizeClass, withModifiers, createTextVNode, toDisplayString, createElementVNode, createElementBlock, Fragment, renderList, createCommentVNode, withDirectives, withKeys, vModelText, resolveDynamicComponent, Transition, renderSlot } from "vue";
|
|
2
2
|
import { DialogRoot, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription } from "reka-ui";
|
|
3
|
-
import { _ as _sfc_main$3 } from "../chunks/LpAvatar-
|
|
3
|
+
import { _ as _sfc_main$3 } from "../chunks/LpAvatar-LTvy0OkE.js";
|
|
4
4
|
import { _ as _sfc_main$1 } from "../chunks/LpIcon-DYtaid0K.js";
|
|
5
5
|
import { _ as _sfc_main$2 } from "../chunks/LpScrollArea-Hz3-JWUG.js";
|
|
6
6
|
import { useAsyncTask } from "../composables/useAsyncTask.js";
|
|
@@ -38,9 +38,9 @@ type __VLS_Props = {
|
|
|
38
38
|
titleIcon?: string;
|
|
39
39
|
titleImage?: string;
|
|
40
40
|
};
|
|
41
|
-
declare var
|
|
41
|
+
declare var __VLS_17: {};
|
|
42
42
|
type __VLS_Slots = {} & {
|
|
43
|
-
default?: (props: typeof
|
|
43
|
+
default?: (props: typeof __VLS_17) => any;
|
|
44
44
|
};
|
|
45
45
|
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
46
46
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|