@aham.ro/ui-designer 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/Designer.vue.d.ts +22 -0
- package/dist/composables/useTranslation.d.ts +1 -0
- package/dist/favicon.svg +1 -0
- package/dist/iam-designer.css +2 -0
- package/dist/iam-designer.js +225 -0
- package/dist/icons.svg +24 -0
- package/dist/index.d.ts +3 -0
- package/dist/widgets/Header.vue.d.ts +14 -0
- package/dist/widgets/header/IconButton.vue.d.ts +12 -0
- package/dist/widgets/header/MoreButton.vue.d.ts +23 -0
- package/dist/widgets/header/SaveButton.vue.d.ts +10 -0
- package/dist/widgets/header/types.d.ts +6 -0
- package/package.json +38 -0
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# IAM Designer
|
|
2
|
+
|
|
3
|
+
Vue 3 components for the Aham IAM designer.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @aham.ro/iam-designer
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```vue
|
|
14
|
+
<script setup lang="ts">
|
|
15
|
+
import { Designer } from '@aham.ro/iam-designer'
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<template>
|
|
19
|
+
<Designer value="" />
|
|
20
|
+
</template>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Development
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install
|
|
27
|
+
npm run build
|
|
28
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { MoreMenuItem } from './widgets/header/types';
|
|
2
|
+
interface Options {
|
|
3
|
+
subject: string;
|
|
4
|
+
shared?: boolean;
|
|
5
|
+
theme?: {
|
|
6
|
+
changeable: boolean;
|
|
7
|
+
color?: string;
|
|
8
|
+
};
|
|
9
|
+
size?: 'small' | 'medium' | 'large';
|
|
10
|
+
moreItems?: MoreMenuItem[];
|
|
11
|
+
}
|
|
12
|
+
type __VLS_Props = {
|
|
13
|
+
value: string;
|
|
14
|
+
options?: Options;
|
|
15
|
+
};
|
|
16
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
17
|
+
moreSelect: (id: string) => any;
|
|
18
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
19
|
+
onMoreSelect?: ((id: string) => any) | undefined;
|
|
20
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
21
|
+
declare const _default: typeof __VLS_export;
|
|
22
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useTranslation(): (key: string, fallback: string) => string;
|
package/dist/favicon.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="46" fill="none" viewBox="0 0 48 46"><path fill="#863bff" d="M25.946 44.938c-.664.845-2.021.375-2.021-.698V33.937a2.26 2.26 0 0 0-2.262-2.262H10.287c-.92 0-1.456-1.04-.92-1.788l7.48-10.471c1.07-1.497 0-3.578-1.842-3.578H1.237c-.92 0-1.456-1.04-.92-1.788L10.013.474c.214-.297.556-.474.92-.474h28.894c.92 0 1.456 1.04.92 1.788l-7.48 10.471c-1.07 1.498 0 3.579 1.842 3.579h11.377c.943 0 1.473 1.088.89 1.83L25.947 44.94z" style="fill:#863bff;fill:color(display-p3 .5252 .23 1);fill-opacity:1"/><mask id="a" width="48" height="46" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:alpha"><path fill="#000" d="M25.842 44.938c-.664.844-2.021.375-2.021-.698V33.937a2.26 2.26 0 0 0-2.262-2.262H10.183c-.92 0-1.456-1.04-.92-1.788l7.48-10.471c1.07-1.498 0-3.579-1.842-3.579H1.133c-.92 0-1.456-1.04-.92-1.787L9.91.473c.214-.297.556-.474.92-.474h28.894c.92 0 1.456 1.04.92 1.788l-7.48 10.471c-1.07 1.498 0 3.578 1.842 3.578h11.377c.943 0 1.473 1.088.89 1.832L25.843 44.94z" style="fill:#000;fill-opacity:1"/></mask><g mask="url(#a)"><g filter="url(#b)"><ellipse cx="5.508" cy="14.704" fill="#ede6ff" rx="5.508" ry="14.704" style="fill:#ede6ff;fill:color(display-p3 .9275 .9033 1);fill-opacity:1" transform="matrix(.00324 1 1 -.00324 -4.47 31.516)"/></g><g filter="url(#c)"><ellipse cx="10.399" cy="29.851" fill="#ede6ff" rx="10.399" ry="29.851" style="fill:#ede6ff;fill:color(display-p3 .9275 .9033 1);fill-opacity:1" transform="matrix(.00324 1 1 -.00324 -39.328 7.883)"/></g><g filter="url(#d)"><ellipse cx="5.508" cy="30.487" fill="#7e14ff" rx="5.508" ry="30.487" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.814 -25.913 -14.639)scale(1 -1)"/></g><g filter="url(#e)"><ellipse cx="5.508" cy="30.599" fill="#7e14ff" rx="5.508" ry="30.599" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.814 -32.644 -3.334)scale(1 -1)"/></g><g filter="url(#f)"><ellipse cx="5.508" cy="30.599" fill="#7e14ff" rx="5.508" ry="30.599" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="matrix(.00324 1 1 -.00324 -34.34 30.47)"/></g><g filter="url(#g)"><ellipse cx="14.072" cy="22.078" fill="#ede6ff" rx="14.072" ry="22.078" style="fill:#ede6ff;fill:color(display-p3 .9275 .9033 1);fill-opacity:1" transform="rotate(93.35 24.506 48.493)scale(-1 1)"/></g><g filter="url(#h)"><ellipse cx="3.47" cy="21.501" fill="#7e14ff" rx="3.47" ry="21.501" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.009 28.708 47.59)scale(-1 1)"/></g><g filter="url(#i)"><ellipse cx="3.47" cy="21.501" fill="#7e14ff" rx="3.47" ry="21.501" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(89.009 28.708 47.59)scale(-1 1)"/></g><g filter="url(#j)"><ellipse cx=".387" cy="8.972" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(39.51 .387 8.972)"/></g><g filter="url(#k)"><ellipse cx="47.523" cy="-6.092" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 47.523 -6.092)"/></g><g filter="url(#l)"><ellipse cx="41.412" cy="6.333" fill="#47bfff" rx="5.971" ry="9.665" style="fill:#47bfff;fill:color(display-p3 .2799 .748 1);fill-opacity:1" transform="rotate(37.892 41.412 6.333)"/></g><g filter="url(#m)"><ellipse cx="-1.879" cy="38.332" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 -1.88 38.332)"/></g><g filter="url(#n)"><ellipse cx="-1.879" cy="38.332" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 -1.88 38.332)"/></g><g filter="url(#o)"><ellipse cx="35.651" cy="29.907" fill="#7e14ff" rx="4.407" ry="29.108" style="fill:#7e14ff;fill:color(display-p3 .4922 .0767 1);fill-opacity:1" transform="rotate(37.892 35.651 29.907)"/></g><g filter="url(#p)"><ellipse cx="38.418" cy="32.4" fill="#47bfff" rx="5.971" ry="15.297" style="fill:#47bfff;fill:color(display-p3 .2799 .748 1);fill-opacity:1" transform="rotate(37.892 38.418 32.4)"/></g></g><defs><filter id="b" width="60.045" height="41.654" x="-19.77" y="16.149" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="7.659"/></filter><filter id="c" width="90.34" height="51.437" x="-54.613" y="-7.533" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="7.659"/></filter><filter id="d" width="79.355" height="29.4" x="-49.64" y="2.03" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="e" width="79.579" height="29.4" x="-45.045" y="20.029" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="f" width="79.579" height="29.4" x="-43.513" y="21.178" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="g" width="74.749" height="58.852" x="15.756" y="-17.901" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="7.659"/></filter><filter id="h" width="61.377" height="25.362" x="23.548" y="2.284" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="i" width="61.377" height="25.362" x="23.548" y="2.284" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="j" width="56.045" height="63.649" x="-27.636" y="-22.853" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="k" width="54.814" height="64.646" x="20.116" y="-38.415" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="l" width="33.541" height="35.313" x="24.641" y="-11.323" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="m" width="54.814" height="64.646" x="-29.286" y="6.009" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="n" width="54.814" height="64.646" x="-29.286" y="6.009" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="o" width="54.814" height="64.646" x="8.244" y="-2.416" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter><filter id="p" width="39.409" height="43.623" x="18.713" y="10.588" color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur result="effect1_foregroundBlur_2002_17158" stdDeviation="4.596"/></filter></defs></svg>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@import "https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,0..200";.iam-designer{--designer-panel:var(--color-panel,#fff);--designer-panel-raised:var(--color-panel-raised,#f5f2ee);--designer-text:var(--color-text,#111);--designer-muted:var(--color-text-muted,#6b7280);--designer-border:var(--color-border,#ece9e4);--designer-primary:var(--color-primary,#2563eb);--designer-space-xs:var(--space-xs,6px);--designer-space-sm:var(--space-sm,10px);--designer-space-md:var(--space-md,14px);--designer-font-xs:var(--font-xs,11px);--designer-font-sm:var(--font-sm,12.5px);--designer-font-lg:var(--font-lg,19px)}.icon-button[data-v-b3b6390f]{border:1px solid var(--color-border,#ece9e4);border-radius:var(--radius-sm,10px);background-color:var(--color-panel,#fff);width:34px;height:34px;color:var(--color-text-muted,#6b7280);font:inherit;cursor:pointer;justify-content:center;align-items:center;padding:0;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.icon-button[data-v-b3b6390f]:hover:not(:disabled){color:var(--color-primary,#2563eb);border-color:var(--color-primary,#2563eb);background-color:var(--color-panel-raised,#f5f2ee)}.icon-button[data-v-b3b6390f]:disabled{opacity:.5;cursor:not-allowed}.more-menu[data-v-923fea1e]{position:relative}.more-button[data-v-923fea1e]{border-radius:var(--radius-xs,6px);background-color:var(--color-panel,#fff);width:32px;height:32px;color:var(--color-text,#111);font:inherit;cursor:pointer;border:none;justify-content:center;align-items:center;margin:0;padding:0;line-height:1;display:inline-flex}.more-button[aria-expanded=true][data-v-923fea1e]{background-color:var(--color-panel-raised,#f5f2ee)}.dropdown[data-v-923fea1e]{z-index:1000;border:1px solid var(--designer-border,#ece9e4);border-radius:var(--radius-sm,10px);background:var(--designer-panel,#fff);min-width:180px;color:var(--designer-text,#111);font-family:var(--font-base-family,system-ui, sans-serif);padding:4px;position:fixed;box-shadow:0 8px 24px #0000001f}.dropdown .icon[data-v-923fea1e]{letter-spacing:normal;text-transform:none;white-space:nowrap;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;font-feature-settings:"liga";font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;direction:ltr;font-family:Material Symbols Outlined;font-size:20px;font-style:normal;font-weight:400;line-height:1}.menu-item[data-v-923fea1e]{align-items:center;gap:var(--designer-space-sm,10px);border-radius:var(--radius-xs,6px);width:100%;color:var(--designer-text,#111);font:inherit;font-size:var(--designer-font-sm,12.5px);text-align:left;cursor:pointer;background:0 0;border:0;padding:8px 10px;display:flex}.menu-item[data-v-923fea1e]:hover:not(:disabled){background:var(--designer-panel-raised,#f5f2ee)}.menu-item[data-v-923fea1e]:disabled{opacity:.5;cursor:not-allowed}.save-button[data-v-4a359870]{justify-content:center;align-items:center;gap:var(--space-xs,6px);min-height:32px;padding:6px var(--space-sm,10px);border:1px solid var(--color-primary,#2563eb);border-radius:var(--radius-sm,10px);background-color:var(--color-primary,#2563eb);color:var(--color-on-primary,#fff);font:inherit;font-size:var(--font-sm,12.5px);cursor:pointer;font-weight:500;display:inline-flex}.save-button[data-v-4a359870]:disabled{opacity:.6;cursor:not-allowed}.save-button[data-v-4a359870]:hover{background-color:var(--color-primary-hover,#1d4ed8);border-color:var(--color-primary-hover,#1d4ed8)}.spinner[data-v-4a359870]{border:1px solid;border-right-color:#0000;border-radius:50%;width:14px;height:14px;animation:.75s linear infinite save-button-spin-4a359870}@keyframes save-button-spin-4a359870{to{transform:rotate(360deg)}}header[data-v-b6ce5e30]{box-sizing:border-box;width:100%;height:60px;color:var(--designer-text);border-bottom:1px solid var(--designer-border);font-family:var(--font-base-family,inherit);align-items:center;display:flex}.branding[data-v-b6ce5e30]{height:100%;padding:0 var(--designer-space-md);align-items:center;min-width:0;display:flex}.branding .icon[data-v-b6ce5e30]{margin-right:var(--designer-space-xs);font-size:24px}.branding .title[data-v-b6ce5e30]{text-overflow:ellipsis;white-space:nowrap;max-width:min(60vw,620px);font-weight:500;font-size:var(--designer-font-lg);overflow:hidden}.subject[data-v-b6ce5e30]{align-items:center;gap:var(--designer-space-sm);min-width:0;height:100%;display:flex}.subject .document-name[data-v-b6ce5e30]{text-overflow:ellipsis;white-space:nowrap;max-width:min(35vw,360px);font-size:var(--designer-font-xs);background-color:var(--color-surface-disabled,color-mix(in srgb, var(--designer-text) 4%, var(--designer-panel)));border-radius:var(--radius-xs,6px);color:var(--color-info,var(--designer-primary));padding:4px 8px;font-weight:500;overflow:hidden}.subject .shared[data-v-b6ce5e30]{color:var(--designer-muted);font-size:var(--designer-font-md);cursor:default}.actions[data-v-b6ce5e30]{height:100%;padding:0 var(--designer-space-md);justify-content:flex-end;align-items:center;gap:var(--designer-space-sm);flex:1;display:flex}.icon[data-v-b6ce5e30]{white-space:nowrap;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}@media (width<=720px){.subject[data-v-b6ce5e30]{display:none}.actions[data-v-b6ce5e30]{padding-right:var(--designer-space-sm)}}section[data-v-6baee9bc]{flex-direction:column;display:flex;position:relative}
|
|
2
|
+
/*$vite$:1*/
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { Fragment as e, Teleport as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, getCurrentInstance as c, nextTick as l, normalizeStyle as u, onBeforeUnmount as d, onMounted as f, openBlock as p, ref as m, renderList as h, renderSlot as g, toDisplayString as _, unref as v, watch as y, withModifiers as b } from "vue";
|
|
2
|
+
//#region src/composables/useTranslation.ts
|
|
3
|
+
function x() {
|
|
4
|
+
let e = c()?.appContext.config.globalProperties, t = e?.$t, n = typeof t == "function" ? t.bind(e) : void 0;
|
|
5
|
+
return (e, t) => {
|
|
6
|
+
let r = n?.(e);
|
|
7
|
+
return r && r !== e ? r : t;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region src/widgets/header/IconButton.vue?vue&type=script&setup=true&lang.ts
|
|
12
|
+
var S = [
|
|
13
|
+
"title",
|
|
14
|
+
"aria-label",
|
|
15
|
+
"disabled"
|
|
16
|
+
], C = {
|
|
17
|
+
class: "icon",
|
|
18
|
+
"aria-hidden": "true"
|
|
19
|
+
}, w = /*@__PURE__*/ s({
|
|
20
|
+
__name: "IconButton",
|
|
21
|
+
props: {
|
|
22
|
+
icon: { default: "settings" },
|
|
23
|
+
title: { default: "Settings" },
|
|
24
|
+
disabled: {
|
|
25
|
+
type: Boolean,
|
|
26
|
+
default: !1
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
setup(e) {
|
|
30
|
+
return (t, n) => (p(), i("button", {
|
|
31
|
+
class: "icon-button",
|
|
32
|
+
type: "button",
|
|
33
|
+
title: e.title,
|
|
34
|
+
"aria-label": e.title,
|
|
35
|
+
disabled: e.disabled
|
|
36
|
+
}, [a("span", C, _(e.icon), 1)], 8, S));
|
|
37
|
+
}
|
|
38
|
+
}), T = (e, t) => {
|
|
39
|
+
let n = e.__vccOpts || e;
|
|
40
|
+
for (let [e, r] of t) n[e] = r;
|
|
41
|
+
return n;
|
|
42
|
+
}, E = /*#__PURE__*/ T(w, [["__scopeId", "data-v-b3b6390f"]]), D = [
|
|
43
|
+
"title",
|
|
44
|
+
"aria-label",
|
|
45
|
+
"aria-expanded"
|
|
46
|
+
], O = ["disabled", "onClick"], k = {
|
|
47
|
+
key: 0,
|
|
48
|
+
class: "icon",
|
|
49
|
+
"aria-hidden": "true"
|
|
50
|
+
}, A = /*#__PURE__*/ T(/* @__PURE__ */ s({
|
|
51
|
+
__name: "MoreButton",
|
|
52
|
+
props: { items: {} },
|
|
53
|
+
emits: ["select"],
|
|
54
|
+
setup(o, { emit: s }) {
|
|
55
|
+
let c = s, S = m(!1), C = m(), w = m(), T = m(), E = m({
|
|
56
|
+
top: 0,
|
|
57
|
+
right: 0
|
|
58
|
+
}), A = x()("tooltip-sidebar-more", "More");
|
|
59
|
+
function j() {
|
|
60
|
+
if (!w.value) return;
|
|
61
|
+
let e = w.value.getBoundingClientRect();
|
|
62
|
+
E.value = {
|
|
63
|
+
top: e.bottom + 6,
|
|
64
|
+
right: Math.max(8, window.innerWidth - e.right)
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function M() {
|
|
68
|
+
S.value = !S.value;
|
|
69
|
+
}
|
|
70
|
+
function N(e) {
|
|
71
|
+
e.disabled || (c("select", e.id), S.value = !1);
|
|
72
|
+
}
|
|
73
|
+
function P(e) {
|
|
74
|
+
let t = e.target;
|
|
75
|
+
C.value && !C.value.contains(t) && !T.value?.contains(t) && (S.value = !1);
|
|
76
|
+
}
|
|
77
|
+
function F(e) {
|
|
78
|
+
e.key === "Escape" && (S.value = !1);
|
|
79
|
+
}
|
|
80
|
+
return f(() => {
|
|
81
|
+
document.addEventListener("click", P), document.addEventListener("keydown", F), window.addEventListener("resize", j), window.addEventListener("scroll", j, !0);
|
|
82
|
+
}), d(() => {
|
|
83
|
+
document.removeEventListener("click", P), document.removeEventListener("keydown", F), window.removeEventListener("resize", j), window.removeEventListener("scroll", j, !0);
|
|
84
|
+
}), y(S, async (e) => {
|
|
85
|
+
e && (await l(), j());
|
|
86
|
+
}), (s, c) => (p(), i("div", {
|
|
87
|
+
ref_key: "root",
|
|
88
|
+
ref: C,
|
|
89
|
+
class: "more-menu"
|
|
90
|
+
}, [a("button", {
|
|
91
|
+
ref_key: "button",
|
|
92
|
+
ref: w,
|
|
93
|
+
class: "more-button",
|
|
94
|
+
type: "button",
|
|
95
|
+
title: v(A),
|
|
96
|
+
"aria-label": v(A),
|
|
97
|
+
"aria-expanded": S.value,
|
|
98
|
+
"aria-haspopup": "menu",
|
|
99
|
+
onClick: b(M, ["stop"])
|
|
100
|
+
}, [...c[0] ||= [a("span", {
|
|
101
|
+
class: "icon",
|
|
102
|
+
"aria-hidden": "true"
|
|
103
|
+
}, "more_vert", -1)]], 8, D), (p(), n(t, { to: "body" }, [S.value ? (p(), i("div", {
|
|
104
|
+
key: 0,
|
|
105
|
+
ref_key: "dropdown",
|
|
106
|
+
ref: T,
|
|
107
|
+
class: "dropdown",
|
|
108
|
+
role: "menu",
|
|
109
|
+
style: u({
|
|
110
|
+
top: `${E.value.top}px`,
|
|
111
|
+
right: `${E.value.right}px`
|
|
112
|
+
})
|
|
113
|
+
}, [o.items?.length ? (p(!0), i(e, { key: 0 }, h(o.items, (e) => (p(), i("button", {
|
|
114
|
+
key: e.id,
|
|
115
|
+
class: "menu-item",
|
|
116
|
+
type: "button",
|
|
117
|
+
role: "menuitem",
|
|
118
|
+
disabled: e.disabled,
|
|
119
|
+
onClick: (t) => N(e)
|
|
120
|
+
}, [e.icon ? (p(), i("span", k, _(e.icon), 1)) : r("", !0), a("span", null, _(e.label), 1)], 8, O))), 128)) : g(s.$slots, "menu", { close: () => S.value = !1 }, void 0, !0, 1)], 4)) : r("", !0)]))], 512));
|
|
121
|
+
}
|
|
122
|
+
}), [["__scopeId", "data-v-923fea1e"]]), j = ["disabled", "aria-busy"], M = {
|
|
123
|
+
key: 0,
|
|
124
|
+
class: "spinner",
|
|
125
|
+
"aria-hidden": "true"
|
|
126
|
+
}, N = /*#__PURE__*/ T(/* @__PURE__ */ s({
|
|
127
|
+
__name: "SaveButton",
|
|
128
|
+
props: {
|
|
129
|
+
disabled: {
|
|
130
|
+
type: Boolean,
|
|
131
|
+
default: !1
|
|
132
|
+
},
|
|
133
|
+
working: {
|
|
134
|
+
type: Boolean,
|
|
135
|
+
default: !1
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
setup(e) {
|
|
139
|
+
let t = x();
|
|
140
|
+
return (n, o) => (p(), i("button", {
|
|
141
|
+
class: "save-button",
|
|
142
|
+
type: "button",
|
|
143
|
+
disabled: e.disabled || e.working,
|
|
144
|
+
"aria-busy": e.working
|
|
145
|
+
}, [e.working ? (p(), i("span", M)) : r("", !0), a("span", null, _(v(t)("save-changes", "Save changes")), 1)], 8, j));
|
|
146
|
+
}
|
|
147
|
+
}), [["__scopeId", "data-v-4a359870"]]), P = { class: "branding" }, F = { class: "title" }, I = { class: "subject" }, L = { class: "document-name" }, R = ["title"], z = { class: "actions" }, B = /*#__PURE__*/ T(/* @__PURE__ */ s({
|
|
148
|
+
__name: "Header",
|
|
149
|
+
props: {
|
|
150
|
+
subject: {},
|
|
151
|
+
shared: { type: Boolean },
|
|
152
|
+
themeChangeable: { type: Boolean },
|
|
153
|
+
moreItems: {}
|
|
154
|
+
},
|
|
155
|
+
emits: ["moreSelect"],
|
|
156
|
+
setup(e, { emit: t }) {
|
|
157
|
+
let s = e, c = t, l = x();
|
|
158
|
+
return (t, u) => (p(), i("header", null, [
|
|
159
|
+
a("div", P, [u[1] ||= a("span", { class: "icon" }, "design_services", -1), a("span", F, _(v(l)("designer", "Designer")), 1)]),
|
|
160
|
+
a("div", I, [a("span", L, _(e.subject), 1), e.shared ? (p(), i("span", {
|
|
161
|
+
key: 0,
|
|
162
|
+
class: "shared icon",
|
|
163
|
+
title: v(l)("shared", "Shared")
|
|
164
|
+
}, "groups", 8, R)) : r("", !0)]),
|
|
165
|
+
a("div", z, [
|
|
166
|
+
o(E, {
|
|
167
|
+
icon: "translate",
|
|
168
|
+
title: v(l)("translations", "Translations")
|
|
169
|
+
}, null, 8, ["title"]),
|
|
170
|
+
o(E, {
|
|
171
|
+
icon: "palette",
|
|
172
|
+
title: v(l)("change-theme", "Change theme")
|
|
173
|
+
}, null, 8, ["title"]),
|
|
174
|
+
s.themeChangeable === !1 ? r("", !0) : (p(), n(E, {
|
|
175
|
+
key: 0,
|
|
176
|
+
icon: "dark_mode",
|
|
177
|
+
title: v(l)("toggle-theme", "Toggle theme")
|
|
178
|
+
}, null, 8, ["title"])),
|
|
179
|
+
o(E, {
|
|
180
|
+
icon: "visibility",
|
|
181
|
+
title: v(l)("preview", "Preview")
|
|
182
|
+
}, null, 8, ["title"]),
|
|
183
|
+
o(N, {
|
|
184
|
+
disabled: !1,
|
|
185
|
+
working: !1
|
|
186
|
+
}),
|
|
187
|
+
o(A, {
|
|
188
|
+
items: s.moreItems,
|
|
189
|
+
onSelect: u[0] ||= (e) => c("moreSelect", e)
|
|
190
|
+
}, null, 8, ["items"])
|
|
191
|
+
])
|
|
192
|
+
]));
|
|
193
|
+
}
|
|
194
|
+
}), [["__scopeId", "data-v-b6ce5e30"]]), V = { class: "iam-designer" }, H = /*#__PURE__*/ T(/* @__PURE__ */ s({
|
|
195
|
+
__name: "Designer",
|
|
196
|
+
props: {
|
|
197
|
+
value: {},
|
|
198
|
+
options: {}
|
|
199
|
+
},
|
|
200
|
+
emits: ["moreSelect"],
|
|
201
|
+
setup(e, { emit: t }) {
|
|
202
|
+
let n = t;
|
|
203
|
+
function r(e) {
|
|
204
|
+
n("moreSelect", e);
|
|
205
|
+
}
|
|
206
|
+
return (t, n) => (p(), i("section", V, [
|
|
207
|
+
o(B, {
|
|
208
|
+
subject: e.options?.subject ?? "",
|
|
209
|
+
shared: e.options?.shared,
|
|
210
|
+
"theme-changeable": e.options?.theme?.changeable,
|
|
211
|
+
"more-items": e.options?.moreItems,
|
|
212
|
+
onMoreSelect: r
|
|
213
|
+
}, null, 8, [
|
|
214
|
+
"subject",
|
|
215
|
+
"shared",
|
|
216
|
+
"theme-changeable",
|
|
217
|
+
"more-items"
|
|
218
|
+
]),
|
|
219
|
+
n[0] ||= a("h2", null, "UI Designer", -1),
|
|
220
|
+
a("p", null, "Value: " + _(e.value), 1)
|
|
221
|
+
]));
|
|
222
|
+
}
|
|
223
|
+
}), [["__scopeId", "data-v-6baee9bc"]]);
|
|
224
|
+
//#endregion
|
|
225
|
+
export { H as Designer };
|
package/dist/icons.svg
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<symbol id="bluesky-icon" viewBox="0 0 16 17">
|
|
3
|
+
<g clip-path="url(#bluesky-clip)"><path fill="#08060d" d="M7.75 7.735c-.693-1.348-2.58-3.86-4.334-5.097-1.68-1.187-2.32-.981-2.74-.79C.188 2.065.1 2.812.1 3.251s.241 3.602.398 4.13c.52 1.744 2.367 2.333 4.07 2.145-2.495.37-4.71 1.278-1.805 4.512 3.196 3.309 4.38-.71 4.987-2.746.608 2.036 1.307 5.91 4.93 2.746 2.72-2.746.747-4.143-1.747-4.512 1.702.189 3.55-.4 4.07-2.145.156-.528.397-3.691.397-4.13s-.088-1.186-.575-1.406c-.42-.19-1.06-.395-2.741.79-1.755 1.24-3.64 3.752-4.334 5.099"/></g>
|
|
4
|
+
<defs><clipPath id="bluesky-clip"><path fill="#fff" d="M.1.85h15.3v15.3H.1z"/></clipPath></defs>
|
|
5
|
+
</symbol>
|
|
6
|
+
<symbol id="discord-icon" viewBox="0 0 20 19">
|
|
7
|
+
<path fill="#08060d" d="M16.224 3.768a14.5 14.5 0 0 0-3.67-1.153c-.158.286-.343.67-.47.976a13.5 13.5 0 0 0-4.067 0c-.128-.306-.317-.69-.476-.976A14.4 14.4 0 0 0 3.868 3.77C1.546 7.28.916 10.703 1.231 14.077a14.7 14.7 0 0 0 4.5 2.306q.545-.748.965-1.587a9.5 9.5 0 0 1-1.518-.74q.191-.14.372-.293c2.927 1.369 6.107 1.369 8.999 0q.183.152.372.294-.723.437-1.52.74.418.838.963 1.588a14.6 14.6 0 0 0 4.504-2.308c.37-3.911-.63-7.302-2.644-10.309m-9.13 8.234c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.894 0 1.614.82 1.599 1.82.001 1-.705 1.82-1.6 1.82m5.91 0c-.878 0-1.599-.82-1.599-1.82 0-.998.705-1.82 1.6-1.82.893 0 1.614.82 1.599 1.82 0 1-.706 1.82-1.6 1.82"/>
|
|
8
|
+
</symbol>
|
|
9
|
+
<symbol id="documentation-icon" viewBox="0 0 21 20">
|
|
10
|
+
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="m15.5 13.333 1.533 1.322c.645.555.967.833.967 1.178s-.322.623-.967 1.179L15.5 18.333m-3.333-5-1.534 1.322c-.644.555-.966.833-.966 1.178s.322.623.966 1.179l1.534 1.321"/>
|
|
11
|
+
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M17.167 10.836v-4.32c0-1.41 0-2.117-.224-2.68-.359-.906-1.118-1.621-2.08-1.96-.599-.21-1.349-.21-2.848-.21-2.623 0-3.935 0-4.983.369-1.684.591-3.013 1.842-3.641 3.428C3 6.449 3 7.684 3 10.154v2.122c0 2.558 0 3.838.706 4.726q.306.383.713.671c.76.536 1.79.64 3.581.66"/>
|
|
12
|
+
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M3 10a2.78 2.78 0 0 1 2.778-2.778c.555 0 1.209.097 1.748-.047.48-.129.854-.503.982-.982.145-.54.048-1.194.048-1.749a2.78 2.78 0 0 1 2.777-2.777"/>
|
|
13
|
+
</symbol>
|
|
14
|
+
<symbol id="github-icon" viewBox="0 0 19 19">
|
|
15
|
+
<path fill="#08060d" fill-rule="evenodd" d="M9.356 1.85C5.05 1.85 1.57 5.356 1.57 9.694a7.84 7.84 0 0 0 5.324 7.44c.387.079.528-.168.528-.376 0-.182-.013-.805-.013-1.454-2.165.467-2.616-.935-2.616-.935-.349-.91-.864-1.143-.864-1.143-.71-.48.051-.48.051-.48.787.051 1.2.805 1.2.805.695 1.194 1.817.857 2.268.649.064-.507.27-.857.49-1.052-1.728-.182-3.545-.857-3.545-3.87 0-.857.31-1.558.8-2.104-.078-.195-.349-1 .077-2.078 0 0 .657-.208 2.14.805a7.5 7.5 0 0 1 1.946-.26c.657 0 1.328.092 1.946.26 1.483-1.013 2.14-.805 2.14-.805.426 1.078.155 1.883.078 2.078.502.546.799 1.247.799 2.104 0 3.013-1.818 3.675-3.558 3.87.284.247.528.714.528 1.454 0 1.052-.012 1.896-.012 2.156 0 .208.142.455.528.377a7.84 7.84 0 0 0 5.324-7.441c.013-4.338-3.48-7.844-7.773-7.844" clip-rule="evenodd"/>
|
|
16
|
+
</symbol>
|
|
17
|
+
<symbol id="social-icon" viewBox="0 0 20 20">
|
|
18
|
+
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M12.5 6.667a4.167 4.167 0 1 0-8.334 0 4.167 4.167 0 0 0 8.334 0"/>
|
|
19
|
+
<path fill="none" stroke="#aa3bff" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.35" d="M2.5 16.667a5.833 5.833 0 0 1 8.75-5.053m3.837.474.513 1.035c.07.144.257.282.414.309l.93.155c.596.1.736.536.307.965l-.723.73a.64.64 0 0 0-.152.531l.207.903c.164.715-.213.991-.84.618l-.872-.52a.63.63 0 0 0-.577 0l-.872.52c-.624.373-1.003.094-.84-.618l.207-.903a.64.64 0 0 0-.152-.532l-.723-.729c-.426-.43-.289-.864.306-.964l.93-.156a.64.64 0 0 0 .412-.31l.513-1.034c.28-.562.735-.562 1.012 0"/>
|
|
20
|
+
</symbol>
|
|
21
|
+
<symbol id="x-icon" viewBox="0 0 19 19">
|
|
22
|
+
<path fill="#08060d" fill-rule="evenodd" d="M1.893 1.98c.052.072 1.245 1.769 2.653 3.77l2.892 4.114c.183.261.333.48.333.486s-.068.089-.152.183l-.522.593-.765.867-3.597 4.087c-.375.426-.734.834-.798.905a1 1 0 0 0-.118.148c0 .01.236.017.664.017h.663l.729-.83c.4-.457.796-.906.879-.999a692 692 0 0 0 1.794-2.038c.034-.037.301-.34.594-.675l.551-.624.345-.392a7 7 0 0 1 .34-.374c.006 0 .93 1.306 2.052 2.903l2.084 2.965.045.063h2.275c1.87 0 2.273-.003 2.266-.021-.008-.02-1.098-1.572-3.894-5.547-2.013-2.862-2.28-3.246-2.273-3.266.008-.019.282-.332 2.085-2.38l2-2.274 1.567-1.782c.022-.028-.016-.03-.65-.03h-.674l-.3.342a871 871 0 0 1-1.782 2.025c-.067.075-.405.458-.75.852a100 100 0 0 1-.803.91c-.148.172-.299.344-.99 1.127-.304.343-.32.358-.345.327-.015-.019-.904-1.282-1.976-2.808L6.365 1.85H1.8zm1.782.91 8.078 11.294c.772 1.08 1.413 1.973 1.425 1.984.016.017.241.02 1.05.017l1.03-.004-2.694-3.766L7.796 5.75 5.722 2.852l-1.039-.004-1.039-.004z" clip-rule="evenodd"/>
|
|
23
|
+
</symbol>
|
|
24
|
+
</svg>
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MoreMenuItem } from './header/types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
subject: string;
|
|
4
|
+
shared: boolean | undefined;
|
|
5
|
+
themeChangeable?: boolean;
|
|
6
|
+
moreItems?: MoreMenuItem[];
|
|
7
|
+
};
|
|
8
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
|
+
moreSelect: (id: string) => any;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
11
|
+
onMoreSelect?: ((id: string) => any) | undefined;
|
|
12
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
13
|
+
declare const _default: typeof __VLS_export;
|
|
14
|
+
export default _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
icon?: string;
|
|
3
|
+
title?: string;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
};
|
|
6
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
7
|
+
icon: string;
|
|
8
|
+
title: string;
|
|
9
|
+
disabled: boolean;
|
|
10
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
|
+
declare const _default: typeof __VLS_export;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { MoreMenuItem } from './types';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
items?: MoreMenuItem[];
|
|
4
|
+
};
|
|
5
|
+
declare var __VLS_7: {
|
|
6
|
+
close: () => boolean;
|
|
7
|
+
};
|
|
8
|
+
type __VLS_Slots = {} & {
|
|
9
|
+
menu?: (props: typeof __VLS_7) => any;
|
|
10
|
+
};
|
|
11
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
12
|
+
select: (id: string) => any;
|
|
13
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
14
|
+
onSelect?: ((id: string) => any) | undefined;
|
|
15
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
17
|
+
declare const _default: typeof __VLS_export;
|
|
18
|
+
export default _default;
|
|
19
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
20
|
+
new (): {
|
|
21
|
+
$slots: S;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
disabled?: boolean;
|
|
3
|
+
working?: boolean;
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
6
|
+
disabled: boolean;
|
|
7
|
+
working: boolean;
|
|
8
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
9
|
+
declare const _default: typeof __VLS_export;
|
|
10
|
+
export default _default;
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aham.ro/ui-designer",
|
|
3
|
+
"version": "0.1.3",
|
|
4
|
+
"description": "Vue components for the UI designer for IAM and email templates.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"files": [
|
|
7
|
+
"dist"
|
|
8
|
+
],
|
|
9
|
+
"main": "./dist/ui-designer.js",
|
|
10
|
+
"module": "./dist/ui-designer.js",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/ui-designer.js"
|
|
16
|
+
},
|
|
17
|
+
"./style.css": "./dist/ui-designer.css",
|
|
18
|
+
"./designer.css": "./dist/ui-designer.css"
|
|
19
|
+
},
|
|
20
|
+
"scripts": {
|
|
21
|
+
"dev": "vite",
|
|
22
|
+
"build": "vite build && vue-tsc --project tsconfig.lib.json",
|
|
23
|
+
"build:watch": "vite build --watch",
|
|
24
|
+
"preview": "vite preview"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"vue": "^3.5.42"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^24.13.3",
|
|
31
|
+
"@vitejs/plugin-vue": "^6.0.8",
|
|
32
|
+
"@vue/tsconfig": "^0.9.1",
|
|
33
|
+
"typescript": "~6.0.2",
|
|
34
|
+
"vite": "^8.3.0",
|
|
35
|
+
"vue-tsc": "^3.3.11",
|
|
36
|
+
"vue": "^3.5.42"
|
|
37
|
+
}
|
|
38
|
+
}
|