@finema/finework-layer 0.0.17 → 0.1.2
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/.playground/app/pages/layout-admin.vue +5 -10
- package/CHANGELOG.md +12 -1
- package/app/components/Layout/Admin/Sidebar.vue +67 -59
- package/app/components/Layout/Admin/index.vue +30 -50
- package/app/components/Layout/User/index.vue +99 -0
- package/bun.lock +27 -3
- package/package.json +2 -2
- /package/app/components/Layout/{Admin/Apps.vue → Apps.vue} +0 -0
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
:is-sidebar-group="true"
|
|
6
|
-
>
|
|
7
|
-
<p>
|
|
8
|
-
dasdasd
|
|
9
|
-
</p>
|
|
10
|
-
</LayoutAdmin>
|
|
2
|
+
<LayoutUser>
|
|
3
|
+
<p>dasdasd</p>
|
|
4
|
+
</LayoutUser>
|
|
11
5
|
</template>
|
|
12
6
|
|
|
13
7
|
<script lang="ts" setup>
|
|
@@ -39,7 +33,8 @@ auth.me.set({
|
|
|
39
33
|
position: 'Technical Specialist',
|
|
40
34
|
team_code: 'DEV',
|
|
41
35
|
company: 'finema',
|
|
42
|
-
avatar_url:
|
|
36
|
+
avatar_url:
|
|
37
|
+
'https://avatars.slack-edge.com/2023-09-25/5968557597936_c750902e3ffc4f690d80_512.jpg',
|
|
43
38
|
slack_id: 'U0147KLKKH8',
|
|
44
39
|
azure_id: 'fd7fbb55-a249-4b79-b439-2270981bd3ae',
|
|
45
40
|
is_active: true,
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## [0.
|
|
3
|
+
## [0.1.2](https://gitlab.finema.co/finema/finework/finework-frontend-layer/compare/0.1.1...0.1.2) (2025-10-14)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* layout user ([6bf83a1](https://gitlab.finema.co/finema/finework/finework-frontend-layer/commit/6bf83a15db0747323e6fd02555eab0b0c4e3e64e))
|
|
8
|
+
|
|
9
|
+
## [0.1.1](https://gitlab.finema.co/finema/finework/finework-frontend-layer/compare/0.0.16...0.1.1) (2025-10-14)
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* lint version ([0b2ef1f](https://gitlab.finema.co/finema/finework/finework-frontend-layer/commit/0b2ef1f822b8db97be7fd55a24be42f0fc65357d))
|
|
14
|
+
* version ([742da07](https://gitlab.finema.co/finema/finework/finework-frontend-layer/commit/742da076e250a965d1a2684430d522d3e901c3b6))
|
|
4
15
|
|
|
5
16
|
## [0.0.16](https://gitlab.finema.co/finema/finework/finework-frontend-layer/compare/0.0.15...0.0.16) (2025-10-14)
|
|
6
17
|
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<aside
|
|
3
|
-
:class="[
|
|
3
|
+
:class="[
|
|
4
|
+
`
|
|
4
5
|
flex h-full flex-col overflow-y-auto bg-white
|
|
5
6
|
transition-all duration-300
|
|
6
|
-
|
|
7
|
+
`,
|
|
8
|
+
]"
|
|
7
9
|
>
|
|
8
10
|
<div
|
|
9
|
-
:class="[
|
|
10
|
-
'
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
:class="[
|
|
12
|
+
'flex h-[72px] items-center max-sm:pr-5',
|
|
13
|
+
{
|
|
14
|
+
'justify-center': isCollapsed,
|
|
15
|
+
'w-[260px] justify-between pl-5': !isCollapsed,
|
|
16
|
+
},
|
|
17
|
+
]"
|
|
13
18
|
>
|
|
14
19
|
<NuxtLink :to="routes.home.to">
|
|
15
20
|
<img
|
|
@@ -22,8 +27,10 @@
|
|
|
22
27
|
|
|
23
28
|
<Navbar />
|
|
24
29
|
</div>
|
|
25
|
-
<div
|
|
26
|
-
|
|
30
|
+
<div
|
|
31
|
+
class="bg-primary flex items-center justify-between px-7 py-4 font-bold text-white"
|
|
32
|
+
>
|
|
33
|
+
{{ isCollapsed ? "" : label }}
|
|
27
34
|
|
|
28
35
|
<Icon
|
|
29
36
|
v-if="!isCollapsed"
|
|
@@ -40,15 +47,8 @@
|
|
|
40
47
|
</div>
|
|
41
48
|
|
|
42
49
|
<div class="flex-1 overflow-y-auto border-r border-gray-200 p-4">
|
|
43
|
-
<div
|
|
44
|
-
v-
|
|
45
|
-
class="space-y-4 divide-y-1 divide-[#d9d9d9]"
|
|
46
|
-
>
|
|
47
|
-
<div
|
|
48
|
-
v-for="group in navigationItems"
|
|
49
|
-
:key="group.label"
|
|
50
|
-
class="pb-4"
|
|
51
|
-
>
|
|
50
|
+
<div v-if="isGroup" class="space-y-4 divide-y-1 divide-[#d9d9d9]">
|
|
51
|
+
<div v-for="group in navigationItems" :key="group.label" class="pb-4">
|
|
52
52
|
<div class="mt-2 mb-2 text-[10px] font-semibold text-gray-400">
|
|
53
53
|
{{ group.label }}
|
|
54
54
|
</div>
|
|
@@ -69,8 +69,10 @@
|
|
|
69
69
|
'hover:text-primary',
|
|
70
70
|
'data-active:before:bg-white data-active:before:rounded-lg data-active:text-primary font-semibold',
|
|
71
71
|
],
|
|
72
|
-
linkLeadingIcon:
|
|
73
|
-
|
|
72
|
+
linkLeadingIcon:
|
|
73
|
+
'group-data-[state=open]:text-current text-current size-[24px] group-hover:text-primary',
|
|
74
|
+
childList:
|
|
75
|
+
'border-none ms-0 pl-8 bg-gray-100 mt-2 py-1 rounded-lg',
|
|
74
76
|
childLink: 'ps-0',
|
|
75
77
|
childItem: 'ps-0',
|
|
76
78
|
}"
|
|
@@ -96,7 +98,8 @@
|
|
|
96
98
|
'hover:text-primary',
|
|
97
99
|
'data-active:before:bg-white data-active:before:rounded-lg data-active:text-primary font-semibold',
|
|
98
100
|
],
|
|
99
|
-
linkLeadingIcon:
|
|
101
|
+
linkLeadingIcon:
|
|
102
|
+
'group-data-[state=open]:text-current text-current size-[24px] group-hover:text-primary ',
|
|
100
103
|
childList: 'border-none ms-0 pl-8 bg-gray-100 mt-2 py-1 rounded-lg',
|
|
101
104
|
childLink: 'ps-0',
|
|
102
105
|
childItem: 'ps-0',
|
|
@@ -104,10 +107,7 @@
|
|
|
104
107
|
class="w-full justify-center"
|
|
105
108
|
/>
|
|
106
109
|
</div>
|
|
107
|
-
<div
|
|
108
|
-
v-if="isMobile"
|
|
109
|
-
class="border-t border-gray-100 p-3"
|
|
110
|
-
>
|
|
110
|
+
<div v-if="isMobile" class="border-t border-gray-100 p-3">
|
|
111
111
|
<div class="flex items-center justify-between gap-2">
|
|
112
112
|
<div class="flex min-w-0 flex-1 items-center gap-3">
|
|
113
113
|
<Avatar
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
{{ auth.me.value?.display_name || auth.me.value?.full_name }}
|
|
121
121
|
</p>
|
|
122
122
|
<p class="text-muted truncate text-xs">
|
|
123
|
-
{{ auth.me.value?.email ||
|
|
123
|
+
{{ auth.me.value?.email || "" }}
|
|
124
124
|
</p>
|
|
125
125
|
</div>
|
|
126
126
|
</div>
|
|
@@ -149,7 +149,7 @@ import type { NavigationMenuItem } from '@nuxt/ui'
|
|
|
149
149
|
import { computed } from 'vue'
|
|
150
150
|
import { useRoute } from 'vue-router'
|
|
151
151
|
import type { Permission, UserModule } from '#imports'
|
|
152
|
-
import Navbar from '
|
|
152
|
+
import Navbar from '../Apps.vue'
|
|
153
153
|
|
|
154
154
|
defineEmits<{
|
|
155
155
|
'toggle-collapsed': []
|
|
@@ -166,7 +166,6 @@ const props = defineProps<{
|
|
|
166
166
|
const route = useRoute()
|
|
167
167
|
const auth = useAuth()
|
|
168
168
|
const userMenuItems = [
|
|
169
|
-
|
|
170
169
|
{
|
|
171
170
|
label: 'View profile',
|
|
172
171
|
icon: 'i-lucide-user',
|
|
@@ -193,13 +192,16 @@ const mappedItems = (items: NavigationMenuItem[]): NavigationMenuItem[] => {
|
|
|
193
192
|
|
|
194
193
|
return {
|
|
195
194
|
active: isChildCurrentlyActive,
|
|
196
|
-
class:
|
|
195
|
+
class:
|
|
196
|
+
'hover:bg-transparent hover:text-gray-700 hover:font-bold py-2 data-active:before:bg-transparent data-active:text-gray-700 data-active:font-bold',
|
|
197
197
|
icon: '',
|
|
198
198
|
...child,
|
|
199
199
|
}
|
|
200
200
|
})
|
|
201
201
|
|
|
202
|
-
const selfIsActive = item.to
|
|
202
|
+
const selfIsActive = item.to
|
|
203
|
+
? route.path.startsWith(String(item.to))
|
|
204
|
+
: false
|
|
203
205
|
|
|
204
206
|
const itemIsActive = selfIsActive || isAnyChildActive // A root item is active if its own link matches OR if any child is active
|
|
205
207
|
|
|
@@ -221,46 +223,52 @@ const mappedItems = (items: NavigationMenuItem[]): NavigationMenuItem[] => {
|
|
|
221
223
|
|
|
222
224
|
// filter items base on auth.hasPermission and nested children , permissions: ['pmo:USER', 'pmo:ADMIN', 'pmo:SUPER']
|
|
223
225
|
const filterItems = (items: NavigationMenuItem[]): NavigationMenuItem[] => {
|
|
224
|
-
return items
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
226
|
+
return items
|
|
227
|
+
.filter((item) => {
|
|
228
|
+
if (item.permissions && Array.isArray(item.permissions)) {
|
|
229
|
+
// permissions: ['pmo:USER', 'pmo:ADMIN', 'pmo:SUPER'] => module: 'pmo', permissions: ['USER', 'ADMIN', 'SUPER']
|
|
230
|
+
const permissionStrings = item.permissions as string[]
|
|
228
231
|
|
|
229
|
-
|
|
230
|
-
|
|
232
|
+
// Extract module from first permission (all should have same module)
|
|
233
|
+
const firstPermission = permissionStrings[0]
|
|
231
234
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
+
if (!firstPermission) {
|
|
236
|
+
return true
|
|
237
|
+
}
|
|
235
238
|
|
|
236
|
-
|
|
239
|
+
const [moduleStr] = firstPermission.split(':')
|
|
237
240
|
|
|
238
|
-
|
|
239
|
-
|
|
241
|
+
// Extract all permission levels
|
|
242
|
+
const permissionLevels = permissionStrings.map(
|
|
243
|
+
(p) => p.split(':')[1],
|
|
244
|
+
) as Permission[]
|
|
240
245
|
|
|
241
|
-
|
|
242
|
-
|
|
246
|
+
return auth.hasPermission(moduleStr as UserModule, ...permissionLevels)
|
|
247
|
+
}
|
|
243
248
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
249
|
+
// Recursively filter children
|
|
250
|
+
if (item.children) {
|
|
251
|
+
const filteredChildren = filterItems(
|
|
252
|
+
item.children as NavigationMenuItem[],
|
|
253
|
+
)
|
|
247
254
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
255
|
+
// Only include parent if it has visible children or no permission requirement
|
|
256
|
+
return filteredChildren.length > 0
|
|
257
|
+
}
|
|
251
258
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
+
return true
|
|
260
|
+
})
|
|
261
|
+
.map((item) => {
|
|
262
|
+
// Apply filtering to children
|
|
263
|
+
if (item.children) {
|
|
264
|
+
return {
|
|
265
|
+
...item,
|
|
266
|
+
children: filterItems(item.children as NavigationMenuItem[]),
|
|
267
|
+
}
|
|
259
268
|
}
|
|
260
|
-
}
|
|
261
269
|
|
|
262
|
-
|
|
263
|
-
|
|
270
|
+
return item
|
|
271
|
+
})
|
|
264
272
|
}
|
|
265
273
|
|
|
266
274
|
const navigationItems = computed<NavigationMenuItem[]>(() => {
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="relative flex min-h-screen flex-1">
|
|
3
3
|
<div
|
|
4
|
-
:class="[
|
|
4
|
+
:class="[
|
|
5
|
+
`
|
|
5
6
|
fixed inset-0 z-30 hidden w-auto
|
|
6
7
|
lg:block
|
|
7
|
-
`,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
`,
|
|
9
|
+
{
|
|
10
|
+
'max-w-[88px]': isCollapsed,
|
|
11
|
+
'max-w-[260px]': !isCollapsed,
|
|
12
|
+
},
|
|
13
|
+
]"
|
|
11
14
|
>
|
|
12
15
|
<Sidebar
|
|
13
16
|
:label="label"
|
|
@@ -18,18 +21,17 @@
|
|
|
18
21
|
/>
|
|
19
22
|
</div>
|
|
20
23
|
<div
|
|
21
|
-
:class="[
|
|
22
|
-
'
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
:class="[
|
|
25
|
+
'w-full bg-gray-50',
|
|
26
|
+
{
|
|
27
|
+
'lg:pl-[88px]': isCollapsed,
|
|
28
|
+
'lg:pl-[260px]': !isCollapsed,
|
|
29
|
+
},
|
|
30
|
+
]"
|
|
25
31
|
>
|
|
26
32
|
<nav
|
|
27
|
-
class="
|
|
28
|
-
|
|
29
|
-
gap-4 bg-white px-5 lg:min-h-[72px]
|
|
30
|
-
lg:justify-end
|
|
31
|
-
"
|
|
32
|
-
style="box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.04);"
|
|
33
|
+
class="fixed top-0 left-0 z-20 flex min-h-[64px] w-screen items-center justify-between gap-4 bg-white px-5 lg:min-h-[72px] lg:justify-end"
|
|
34
|
+
style="box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.04)"
|
|
33
35
|
>
|
|
34
36
|
<div class="flex items-center gap-4">
|
|
35
37
|
<Slideover
|
|
@@ -41,10 +43,7 @@
|
|
|
41
43
|
side="left"
|
|
42
44
|
>
|
|
43
45
|
<svg
|
|
44
|
-
class="
|
|
45
|
-
cursor-pointer
|
|
46
|
-
lg:hidden
|
|
47
|
-
"
|
|
46
|
+
class="cursor-pointer lg:hidden"
|
|
48
47
|
width="19"
|
|
49
48
|
height="18"
|
|
50
49
|
viewBox="0 0 19 18"
|
|
@@ -74,10 +73,7 @@
|
|
|
74
73
|
<img
|
|
75
74
|
src="/logo-mini.png"
|
|
76
75
|
alt="logo_mini_color"
|
|
77
|
-
class="
|
|
78
|
-
w-[126px] min-w-[126px] lg:hidden
|
|
79
|
-
lg:w-[172px] lg:min-w-[172px]
|
|
80
|
-
"
|
|
76
|
+
class="w-[126px] min-w-[126px] lg:hidden lg:w-[172px] lg:min-w-[172px]"
|
|
81
77
|
/>
|
|
82
78
|
</NuxtLink>
|
|
83
79
|
<Apps class="lg:hidden" />
|
|
@@ -96,14 +92,12 @@
|
|
|
96
92
|
}"
|
|
97
93
|
>
|
|
98
94
|
<div class="relative flex cursor-pointer items-center gap-2">
|
|
99
|
-
<div
|
|
100
|
-
class="hidden flex-col justify-end text-right lg:flex"
|
|
101
|
-
>
|
|
95
|
+
<div class="hidden flex-col justify-end text-right lg:flex">
|
|
102
96
|
<p class="font-bold">
|
|
103
97
|
{{ auth.me.value?.display_name || auth.me.value?.full_name }}
|
|
104
98
|
</p>
|
|
105
99
|
<p class="text-muted text-sm">
|
|
106
|
-
{{ auth.me.value?.email ||
|
|
100
|
+
{{ auth.me.value?.email || "" }}
|
|
107
101
|
</p>
|
|
108
102
|
</div>
|
|
109
103
|
<Avatar
|
|
@@ -111,22 +105,17 @@
|
|
|
111
105
|
icon="ri:user-line"
|
|
112
106
|
:src="auth.me.value?.avatar_url || ''"
|
|
113
107
|
/>
|
|
114
|
-
<Icon
|
|
115
|
-
name="i-ph:caret-down-light"
|
|
116
|
-
class="size-5"
|
|
117
|
-
/>
|
|
108
|
+
<Icon name="i-ph:caret-down-light" class="size-5" />
|
|
118
109
|
</div>
|
|
119
110
|
</DropdownMenu>
|
|
120
111
|
</div>
|
|
121
112
|
</nav>
|
|
122
113
|
<div class="w-full bg-gray-50 pt-[64px] lg:pt-[72px]">
|
|
123
|
-
<main
|
|
124
|
-
class="
|
|
125
|
-
mx-auto min-h-full w-full flex-1 px-6 py-10 lg:px-8
|
|
126
|
-
"
|
|
127
|
-
>
|
|
114
|
+
<main class="mx-auto min-h-full w-full flex-1 px-6 py-10 lg:px-8">
|
|
128
115
|
<Breadcrumb
|
|
129
|
-
v-if="
|
|
116
|
+
v-if="
|
|
117
|
+
!app.pageMeta.isHideBreadcrumbs && breadcrumbsItems.length > 1
|
|
118
|
+
"
|
|
130
119
|
:items="breadcrumbsItems"
|
|
131
120
|
class="mb-6"
|
|
132
121
|
:ui="{
|
|
@@ -136,17 +125,11 @@
|
|
|
136
125
|
/>
|
|
137
126
|
<div
|
|
138
127
|
v-if="app.pageMeta.title"
|
|
139
|
-
class="
|
|
140
|
-
mb-4 flex flex-col justify-between gap-1 md:mb-6 md:gap-4
|
|
141
|
-
lg:flex-row lg:items-start
|
|
142
|
-
"
|
|
128
|
+
class="mb-4 flex flex-col justify-between gap-1 md:mb-6 md:gap-4 lg:flex-row lg:items-start"
|
|
143
129
|
>
|
|
144
130
|
<div class="flex flex-1 flex-col">
|
|
145
131
|
<h1
|
|
146
|
-
class="
|
|
147
|
-
text-3xl font-bold wrap-break-word
|
|
148
|
-
lg:max-w-2/3
|
|
149
|
-
"
|
|
132
|
+
class="text-3xl font-bold wrap-break-word lg:max-w-2/3"
|
|
150
133
|
:title="app.pageMeta.title"
|
|
151
134
|
>
|
|
152
135
|
{{ app.pageMeta.title }}
|
|
@@ -154,10 +137,7 @@
|
|
|
154
137
|
</h1>
|
|
155
138
|
|
|
156
139
|
<div id="page-subtitle" />
|
|
157
|
-
<p
|
|
158
|
-
v-if="app.pageMeta.sub_title"
|
|
159
|
-
class="text-[#475467]"
|
|
160
|
-
>
|
|
140
|
+
<p v-if="app.pageMeta.sub_title" class="text-[#475467]">
|
|
161
141
|
{{ app.pageMeta.sub_title }}
|
|
162
142
|
</p>
|
|
163
143
|
</div>
|
|
@@ -174,7 +154,7 @@
|
|
|
174
154
|
import type { DropdownMenuItem, NavigationMenuItem } from '@nuxt/ui'
|
|
175
155
|
import { computed } from 'vue'
|
|
176
156
|
import Sidebar from './Sidebar.vue'
|
|
177
|
-
import Apps from '
|
|
157
|
+
import Apps from '../Apps.vue'
|
|
178
158
|
|
|
179
159
|
defineProps<{
|
|
180
160
|
label: string
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="overflow-hidden pt-[80px]">
|
|
3
|
+
<div class="flex min-h-[calc(100vh-80px)] flex-col">
|
|
4
|
+
<nav
|
|
5
|
+
class="fixed top-0 left-0 z-20 flex min-h-[80px] w-screen items-center justify-center bg-white"
|
|
6
|
+
style="box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.04)"
|
|
7
|
+
>
|
|
8
|
+
<div class="mx-auto flex w-full px-4 md:px-8">
|
|
9
|
+
<div class="flex items-center gap-4">
|
|
10
|
+
<NuxtLink :to="routes.home.to">
|
|
11
|
+
<img
|
|
12
|
+
src="/logo-mini.png"
|
|
13
|
+
alt="logo_mini"
|
|
14
|
+
class="h-[27px] w-[172px] cursor-pointer"
|
|
15
|
+
/>
|
|
16
|
+
</NuxtLink>
|
|
17
|
+
<Apps />
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div class="flex flex-1 items-center justify-end gap-2">
|
|
21
|
+
<DropdownMenu
|
|
22
|
+
:items="userMenuItems"
|
|
23
|
+
size="xl"
|
|
24
|
+
:content="{
|
|
25
|
+
align: 'end',
|
|
26
|
+
side: 'bottom',
|
|
27
|
+
}"
|
|
28
|
+
:ui="{
|
|
29
|
+
content: 'w-48',
|
|
30
|
+
}"
|
|
31
|
+
>
|
|
32
|
+
<div class="relative flex cursor-pointer items-center gap-2">
|
|
33
|
+
<div class="hidden flex-col justify-end text-right lg:flex">
|
|
34
|
+
<p class="text-sm font-bold">
|
|
35
|
+
{{
|
|
36
|
+
auth.me.value?.display_name || auth.me.value?.full_name
|
|
37
|
+
}}
|
|
38
|
+
</p>
|
|
39
|
+
<p class="text-muted text-xs">
|
|
40
|
+
{{ auth.me.value?.email }}
|
|
41
|
+
</p>
|
|
42
|
+
</div>
|
|
43
|
+
<Avatar
|
|
44
|
+
class="border-muted size-[36px] border text-2xl"
|
|
45
|
+
icon="ri:user-line"
|
|
46
|
+
:src="auth.me.value?.avatar_url"
|
|
47
|
+
/>
|
|
48
|
+
<Icon name="i-ph:caret-down-light" class="size-5" />
|
|
49
|
+
</div>
|
|
50
|
+
</DropdownMenu>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</nav>
|
|
54
|
+
<main class="mx-auto w-full max-w-7xl flex-1 px-4 pb-20 2xl:max-w-7/10">
|
|
55
|
+
<div
|
|
56
|
+
v-if="app.pageMeta.title"
|
|
57
|
+
class="mb-4 flex flex-col justify-between gap-1 md:mb-6 md:gap-4 lg:flex-row lg:items-center"
|
|
58
|
+
>
|
|
59
|
+
<div class="flex flex-1 flex-col">
|
|
60
|
+
<h1
|
|
61
|
+
class="text-3xl font-bold wrap-break-word lg:max-w-2/3"
|
|
62
|
+
:title="app.pageMeta.title"
|
|
63
|
+
>
|
|
64
|
+
{{ app.pageMeta.title }}
|
|
65
|
+
<span id="page-title-extra" />
|
|
66
|
+
</h1>
|
|
67
|
+
|
|
68
|
+
<div id="page-subtitle" />
|
|
69
|
+
</div>
|
|
70
|
+
<div id="page-header" />
|
|
71
|
+
</div>
|
|
72
|
+
<slot />
|
|
73
|
+
</main>
|
|
74
|
+
<div id="page-footer" />
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
</template>
|
|
78
|
+
|
|
79
|
+
<script lang="ts" setup>
|
|
80
|
+
import type { DropdownMenuItem } from '@nuxt/ui'
|
|
81
|
+
import Apps from '../Apps.vue'
|
|
82
|
+
|
|
83
|
+
const app = useApp()
|
|
84
|
+
const auth = useAuth()
|
|
85
|
+
const userMenuItems: DropdownMenuItem[] = [
|
|
86
|
+
{
|
|
87
|
+
label: 'View profile',
|
|
88
|
+
icon: 'i-lucide-user',
|
|
89
|
+
to: routes.account.profile.to,
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
{
|
|
93
|
+
label: routes.logout.label,
|
|
94
|
+
icon: 'i-lucide-log-out',
|
|
95
|
+
to: routes.logout.to,
|
|
96
|
+
external: true,
|
|
97
|
+
},
|
|
98
|
+
]
|
|
99
|
+
</script>
|
package/bun.lock
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"@finema/core": "^2.43.2",
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
|
-
"@finema/eslint-config": "^2.0.
|
|
10
|
+
"@finema/eslint-config": "^2.0.3",
|
|
11
11
|
"@nuxt/eslint": "latest",
|
|
12
12
|
"@nuxt/test-utils": "^3.19.2",
|
|
13
13
|
"@release-it/conventional-changelog": "^10.0.1",
|
|
@@ -176,6 +176,8 @@
|
|
|
176
176
|
|
|
177
177
|
"@eslint/core": ["@eslint/core@0.16.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q=="],
|
|
178
178
|
|
|
179
|
+
"@eslint/css-tree": ["@eslint/css-tree@3.6.6", "", { "dependencies": { "mdn-data": "2.23.0", "source-map-js": "^1.0.1" } }, "sha512-C3YiJMY9OZyZ/3vEMFWJIesdGaRY6DmIYvmtyxMT934CbrOKqRs+Iw7NWSRlJQEaK4dPYy2lZ2y1zkaj8z0p5A=="],
|
|
180
|
+
|
|
179
181
|
"@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="],
|
|
180
182
|
|
|
181
183
|
"@eslint/js": ["@eslint/js@9.37.0", "", {}, "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg=="],
|
|
@@ -186,7 +188,7 @@
|
|
|
186
188
|
|
|
187
189
|
"@finema/core": ["@finema/core@2.43.2", "", { "dependencies": { "@iconify-json/heroicons": "^1.2.2", "@iconify-json/ph": "^1.2.2", "@iconify-json/svg-spinners": "^1.2.2", "@nuxt/kit": "^4.0.2", "@nuxt/ui": "^4.0.1", "@pinia/nuxt": "^0.11.0", "@tailwindcss/typography": "^0.5.0-alpha.3", "@tiptap/extension-image": "^3.0.7", "@tiptap/extension-link": "^3.0.7", "@tiptap/extension-text-align": "^3.0.7", "@tiptap/extension-text-style": "^3.0.7", "@tiptap/extension-underline": "^3.0.7", "@tiptap/extension-youtube": "^3.0.7", "@tiptap/pm": "^3.0.7", "@tiptap/starter-kit": "^3.0.7", "@tiptap/vue-3": "^3.0.7", "@vee-validate/nuxt": "^4.15.1", "@vee-validate/valibot": "^4.15.1", "@vuepic/vue-datepicker": "^11.0.2", "@vueuse/components": "^13.2.0", "@vueuse/core": "^13.4.0", "@wdns/vue-code-block": "^2.3.5", "axios": "^1.10.0", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", "defu": "^6.1.4", "lodash-es": "^4.17.21", "maska": "^3.1.1", "url-join": "^5.0.0" } }, "sha512-/JrFnsj6zskoZyIEDUK4G21ariM/i/MweuZmVODhHOZ2A+5t779rEt4scR1u4nt7vNKDmeTY40NfmphNZxJjiQ=="],
|
|
188
190
|
|
|
189
|
-
"@finema/eslint-config": ["@finema/eslint-config@2.0.
|
|
191
|
+
"@finema/eslint-config": ["@finema/eslint-config@2.0.3", "", { "dependencies": { "eslint-plugin-better-tailwindcss": "^3.7.10", "eslint-plugin-tailwindcss": "^3.18.2", "eslint-plugin-unused-imports": "^4.2.0" }, "peerDependencies": { "eslint": "^9.37.0" } }, "sha512-cKayHHZLTp/cA1q9ohowBcNWqpMZcA3zYcw8W7JkB89B+cyT1hYUOIi046cUEW23mFTfsSKUVIeW/C+BKpXuXQ=="],
|
|
190
192
|
|
|
191
193
|
"@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="],
|
|
192
194
|
|
|
@@ -478,6 +480,8 @@
|
|
|
478
480
|
|
|
479
481
|
"@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="],
|
|
480
482
|
|
|
483
|
+
"@pkgr/core": ["@pkgr/core@0.2.9", "", {}, "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA=="],
|
|
484
|
+
|
|
481
485
|
"@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="],
|
|
482
486
|
|
|
483
487
|
"@poppinss/colors": ["@poppinss/colors@4.1.5", "", { "dependencies": { "kleur": "^4.1.5" } }, "sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw=="],
|
|
@@ -1206,6 +1210,8 @@
|
|
|
1206
1210
|
|
|
1207
1211
|
"eslint-merge-processors": ["eslint-merge-processors@2.0.0", "", { "peerDependencies": { "eslint": "*" } }, "sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA=="],
|
|
1208
1212
|
|
|
1213
|
+
"eslint-plugin-better-tailwindcss": ["eslint-plugin-better-tailwindcss@3.7.10", "", { "dependencies": { "@eslint/css-tree": "^3.6.5", "enhanced-resolve": "^5.18.3", "jiti": "^2.5.1", "postcss": "^8.5.6", "postcss-import": "^16.1.1", "synckit": "^0.11.11", "tailwind-csstree": "^0.1.4", "tsconfig-paths-webpack-plugin": "^4.2.0" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", "tailwindcss": "^3.3.0 || ^4.1.6" } }, "sha512-a6Hif4A9lPJZwpoMir2WVs1ZL4IK6fzwbZvVhQQchoqqg3BycL+ZGLHGIuqKBqwnZgOC6olwmu0sDzM3uSkEFw=="],
|
|
1214
|
+
|
|
1209
1215
|
"eslint-plugin-import-lite": ["eslint-plugin-import-lite@0.3.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/types": "^8.34.0" }, "peerDependencies": { "eslint": ">=9.0.0", "typescript": ">=4.5" }, "optionalPeers": ["typescript"] }, "sha512-dkNBAL6jcoCsXZsQ/Tt2yXmMDoNt5NaBh/U7yvccjiK8cai6Ay+MK77bMykmqQA2bTF6lngaLCDij6MTO3KkvA=="],
|
|
1210
1216
|
|
|
1211
1217
|
"eslint-plugin-import-x": ["eslint-plugin-import-x@4.16.1", "", { "dependencies": { "@typescript-eslint/types": "^8.35.0", "comment-parser": "^1.4.1", "debug": "^4.4.1", "eslint-import-context": "^0.1.9", "is-glob": "^4.0.3", "minimatch": "^9.0.3 || ^10.0.1", "semver": "^7.7.2", "stable-hash-x": "^0.2.0", "unrs-resolver": "^1.9.2" }, "peerDependencies": { "@typescript-eslint/utils": "^8.0.0", "eslint": "^8.57.0 || ^9.0.0", "eslint-import-resolver-node": "*" }, "optionalPeers": ["@typescript-eslint/utils", "eslint-import-resolver-node"] }, "sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ=="],
|
|
@@ -1608,7 +1614,7 @@
|
|
|
1608
1614
|
|
|
1609
1615
|
"math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
|
|
1610
1616
|
|
|
1611
|
-
"mdn-data": ["mdn-data@2.
|
|
1617
|
+
"mdn-data": ["mdn-data@2.23.0", "", {}, "sha512-786vq1+4079JSeu2XdcDjrhi/Ry7BWtjDl9WtGPWLiIHb2T66GvIVflZTBoSNZ5JqTtJGYEVMuFA/lbQlMOyDQ=="],
|
|
1612
1618
|
|
|
1613
1619
|
"mdurl": ["mdurl@2.0.0", "", {}, "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w=="],
|
|
1614
1620
|
|
|
@@ -1786,6 +1792,8 @@
|
|
|
1786
1792
|
|
|
1787
1793
|
"pidtree": ["pidtree@0.6.0", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="],
|
|
1788
1794
|
|
|
1795
|
+
"pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="],
|
|
1796
|
+
|
|
1789
1797
|
"pinia": ["pinia@3.0.3", "", { "dependencies": { "@vue/devtools-api": "^7.7.2" }, "peerDependencies": { "typescript": ">=4.4.4", "vue": "^2.7.0 || ^3.5.11" }, "optionalPeers": ["typescript"] }, "sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA=="],
|
|
1790
1798
|
|
|
1791
1799
|
"pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="],
|
|
@@ -1808,6 +1816,8 @@
|
|
|
1808
1816
|
|
|
1809
1817
|
"postcss-discard-overridden": ["postcss-discard-overridden@7.0.1", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg=="],
|
|
1810
1818
|
|
|
1819
|
+
"postcss-import": ["postcss-import@16.1.1", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-2xVS1NCZAfjtVdvXiyegxzJ447GyqCeEI5V7ApgQVOWnros1p5lGNovJNapwPpMombyFBfqDwt7AD3n2l0KOfQ=="],
|
|
1820
|
+
|
|
1811
1821
|
"postcss-merge-longhand": ["postcss-merge-longhand@7.0.5", "", { "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^7.0.5" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw=="],
|
|
1812
1822
|
|
|
1813
1823
|
"postcss-merge-rules": ["postcss-merge-rules@7.0.6", "", { "dependencies": { "browserslist": "^4.25.1", "caniuse-api": "^3.0.0", "cssnano-utils": "^5.0.1", "postcss-selector-parser": "^7.1.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ=="],
|
|
@@ -1924,6 +1934,8 @@
|
|
|
1924
1934
|
|
|
1925
1935
|
"rc9": ["rc9@2.1.2", "", { "dependencies": { "defu": "^6.1.4", "destr": "^2.0.3" } }, "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg=="],
|
|
1926
1936
|
|
|
1937
|
+
"read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="],
|
|
1938
|
+
|
|
1927
1939
|
"read-package-up": ["read-package-up@11.0.0", "", { "dependencies": { "find-up-simple": "^1.0.0", "read-pkg": "^9.0.0", "type-fest": "^4.6.0" } }, "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ=="],
|
|
1928
1940
|
|
|
1929
1941
|
"read-pkg": ["read-pkg@9.0.1", "", { "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", "parse-json": "^8.0.0", "type-fest": "^4.6.0", "unicorn-magic": "^0.1.0" } }, "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA=="],
|
|
@@ -2072,6 +2084,8 @@
|
|
|
2072
2084
|
|
|
2073
2085
|
"strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
|
|
2074
2086
|
|
|
2087
|
+
"strip-bom": ["strip-bom@3.0.0", "", {}, "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="],
|
|
2088
|
+
|
|
2075
2089
|
"strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="],
|
|
2076
2090
|
|
|
2077
2091
|
"strip-indent": ["strip-indent@4.1.1", "", {}, "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA=="],
|
|
@@ -2094,10 +2108,14 @@
|
|
|
2094
2108
|
|
|
2095
2109
|
"swrv": ["swrv@1.1.0", "", { "peerDependencies": { "vue": ">=3.2.26 < 4" } }, "sha512-pjllRDr2s0iTwiE5Isvip51dZGR7GjLH1gCSVyE8bQnbAx6xackXsFdojau+1O5u98yHF5V73HQGOFxKUXO9gQ=="],
|
|
2096
2110
|
|
|
2111
|
+
"synckit": ["synckit@0.11.11", "", { "dependencies": { "@pkgr/core": "^0.2.9" } }, "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw=="],
|
|
2112
|
+
|
|
2097
2113
|
"system-architecture": ["system-architecture@0.1.0", "", {}, "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA=="],
|
|
2098
2114
|
|
|
2099
2115
|
"tagged-tag": ["tagged-tag@1.0.0", "", {}, "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng=="],
|
|
2100
2116
|
|
|
2117
|
+
"tailwind-csstree": ["tailwind-csstree@0.1.4", "", {}, "sha512-FzD187HuFIZEyeR7Xy6sJbJll2d4SybS90satC8SKIuaNRC05CxMvdzN7BUsfDQffcnabckRM5OIcfArjsZ0mg=="],
|
|
2118
|
+
|
|
2101
2119
|
"tailwind-merge": ["tailwind-merge@3.3.1", "", {}, "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g=="],
|
|
2102
2120
|
|
|
2103
2121
|
"tailwind-variants": ["tailwind-variants@3.1.1", "", { "peerDependencies": { "tailwind-merge": ">=3.0.0", "tailwindcss": "*" }, "optionalPeers": ["tailwind-merge"] }, "sha512-ftLXe3krnqkMHsuBTEmaVUXYovXtPyTK7ckEfDRXS8PBZx0bAUas+A0jYxuKA5b8qg++wvQ3d2MQ7l/xeZxbZQ=="],
|
|
@@ -2132,6 +2150,10 @@
|
|
|
2132
2150
|
|
|
2133
2151
|
"ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="],
|
|
2134
2152
|
|
|
2153
|
+
"tsconfig-paths": ["tsconfig-paths@4.2.0", "", { "dependencies": { "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg=="],
|
|
2154
|
+
|
|
2155
|
+
"tsconfig-paths-webpack-plugin": ["tsconfig-paths-webpack-plugin@4.2.0", "", { "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.7.0", "tapable": "^2.2.1", "tsconfig-paths": "^4.1.2" } }, "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA=="],
|
|
2156
|
+
|
|
2135
2157
|
"tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
|
|
2136
2158
|
|
|
2137
2159
|
"type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="],
|
|
@@ -2434,6 +2456,8 @@
|
|
|
2434
2456
|
|
|
2435
2457
|
"cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
|
|
2436
2458
|
|
|
2459
|
+
"css-tree/mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="],
|
|
2460
|
+
|
|
2437
2461
|
"csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="],
|
|
2438
2462
|
|
|
2439
2463
|
"dot-prop/type-fest": ["type-fest@5.1.0", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-wQ531tuWvB6oK+pchHIu5lHe5f5wpSCqB8Kf4dWQRbOYc9HTge7JL0G4Qd44bh6QuJCccIzL3bugb8GI0MwHrg=="],
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finema/finework-layer",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.1.2",
|
|
5
5
|
"main": "./nuxt.config.ts",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"dev": "nuxi dev .playground -o",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"postinstall": "nuxt prepare .playground"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@finema/eslint-config": "^2.0.
|
|
19
|
+
"@finema/eslint-config": "^2.0.3",
|
|
20
20
|
"@nuxt/eslint": "latest",
|
|
21
21
|
"@nuxt/test-utils": "^3.19.2",
|
|
22
22
|
"@release-it/conventional-changelog": "^10.0.1",
|
|
File without changes
|