@finema/finework-layer 0.1.15 → 0.1.17
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/{submenu1/layout-admin.vue → layout-admin/[id]/index.vue} +18 -1
- package/.playground/app/pages/layout-admin.vue +17 -5
- package/.playground/app/pages/submenu/layout-admin.vue +129 -0
- package/CHANGELOG.md +12 -0
- package/app/app.config.ts +1 -286
- package/app/assets/css/main.css +0 -106
- package/app/components/Layout/Admin/Sidebar.vue +11 -1
- package/bun.lock +2 -2
- package/nuxt.config.ts +0 -7
- package/package.json +3 -3
|
@@ -34,7 +34,7 @@ auth.me.set({
|
|
|
34
34
|
team_code: 'DEV',
|
|
35
35
|
company: 'finema',
|
|
36
36
|
avatar_url:
|
|
37
|
-
|
|
37
|
+
'https://avatars.slack-edge.com/2023-09-25/5968557597936_c750902e3ffc4f690d80_512.jpg',
|
|
38
38
|
slack_id: 'U0147KLKKH8',
|
|
39
39
|
azure_id: 'fd7fbb55-a249-4b79-b439-2270981bd3ae',
|
|
40
40
|
is_active: true,
|
|
@@ -124,5 +124,22 @@ const sidebarItems: NavigationMenuItem[] = [
|
|
|
124
124
|
},
|
|
125
125
|
],
|
|
126
126
|
},
|
|
127
|
+
{
|
|
128
|
+
label: 'Submenu 2',
|
|
129
|
+
to: '/submenu1/layout-admin',
|
|
130
|
+
icon: 'i-heroicons-outline:home',
|
|
131
|
+
children: [
|
|
132
|
+
{
|
|
133
|
+
label: 'Submenu 2-1',
|
|
134
|
+
to: '/submenu1/layout-admin2',
|
|
135
|
+
icon: 'i-heroicons-outline:home',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
label: 'Submenu 2-2',
|
|
139
|
+
to: '/submenu1/layout-admin',
|
|
140
|
+
icon: 'i-heroicons-outline:home',
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
},
|
|
127
144
|
]
|
|
128
145
|
</script>
|
|
@@ -73,12 +73,12 @@ const sidebarItems: NavigationMenuItem[] = [
|
|
|
73
73
|
children: [
|
|
74
74
|
{
|
|
75
75
|
label: 'Submenu 1',
|
|
76
|
-
to: '/
|
|
76
|
+
to: '/layout-admin',
|
|
77
77
|
icon: 'i-heroicons-outline:home',
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
label: 'Submenu 2',
|
|
81
|
-
to: '/
|
|
81
|
+
to: '/layout-admin/asdasd',
|
|
82
82
|
icon: 'i-heroicons-outline:home',
|
|
83
83
|
},
|
|
84
84
|
],
|
|
@@ -88,12 +88,12 @@ const sidebarItems: NavigationMenuItem[] = [
|
|
|
88
88
|
children: [
|
|
89
89
|
{
|
|
90
90
|
label: 'Submenu 1',
|
|
91
|
-
to: '/
|
|
91
|
+
to: '/submenu',
|
|
92
92
|
icon: 'i-heroicons-outline:home',
|
|
93
93
|
},
|
|
94
94
|
{
|
|
95
95
|
label: 'Submenu 2',
|
|
96
|
-
to: '/
|
|
96
|
+
to: '/submenu/layout-admin',
|
|
97
97
|
icon: 'i-heroicons-outline:home',
|
|
98
98
|
},
|
|
99
99
|
],
|
|
@@ -108,8 +108,20 @@ const sidebarItems: NavigationMenuItem[] = [
|
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
110
|
label: 'Submenu 2',
|
|
111
|
-
to: '/
|
|
111
|
+
to: '/layout-admin',
|
|
112
112
|
icon: 'i-heroicons-outline:home',
|
|
113
|
+
children: [
|
|
114
|
+
{
|
|
115
|
+
label: 'Submenu 2-1',
|
|
116
|
+
to: '/layout-admin/1',
|
|
117
|
+
icon: 'i-heroicons-outline:home',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
label: 'Submenu 2-2',
|
|
121
|
+
to: '/layout-admin/2',
|
|
122
|
+
icon: 'i-heroicons-outline:home',
|
|
123
|
+
},
|
|
124
|
+
],
|
|
113
125
|
},
|
|
114
126
|
],
|
|
115
127
|
},
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<LayoutAdmin
|
|
3
|
+
label="Test Layout"
|
|
4
|
+
:sidebar-items="sidebarItems"
|
|
5
|
+
is-sidebar-group
|
|
6
|
+
>
|
|
7
|
+
<p>dasdasd</p>
|
|
8
|
+
</LayoutAdmin>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script lang="ts" setup>
|
|
12
|
+
import type { NavigationMenuItem } from '@nuxt/ui'
|
|
13
|
+
|
|
14
|
+
const auth = useAuth()
|
|
15
|
+
|
|
16
|
+
useApp().definePage({
|
|
17
|
+
title: 'Test Layout',
|
|
18
|
+
breadcrumbs: [
|
|
19
|
+
{
|
|
20
|
+
label: 'Home',
|
|
21
|
+
to: '/',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: 'Test Layout',
|
|
25
|
+
to: '/test-layout',
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
auth.me.set({
|
|
31
|
+
id: 'edab2396-2b6f-4855-b04e-a7c9ae9b70ae',
|
|
32
|
+
created_at: '2025-09-02T10:16:37.195Z',
|
|
33
|
+
updated_at: '2025-10-11T10:14:10.296Z',
|
|
34
|
+
email: 'long@finema.co',
|
|
35
|
+
full_name: 'Passakon Puttasuwan',
|
|
36
|
+
display_name: 'Long',
|
|
37
|
+
position: 'Technical Specialist',
|
|
38
|
+
team_code: 'DEV',
|
|
39
|
+
company: 'finema',
|
|
40
|
+
avatar_url:
|
|
41
|
+
'https://avatars.slack-edge.com/2023-09-25/5968557597936_c750902e3ffc4f690d80_512.jpg',
|
|
42
|
+
slack_id: 'U0147KLKKH8',
|
|
43
|
+
azure_id: 'fd7fbb55-a249-4b79-b439-2270981bd3ae',
|
|
44
|
+
is_active: true,
|
|
45
|
+
joined_date: '2025-09-02T00:00:00Z',
|
|
46
|
+
access_level: {
|
|
47
|
+
user_id: 'edab2396-2b6f-4855-b04e-a7c9ae9b70ae',
|
|
48
|
+
clockin: 'ADMIN',
|
|
49
|
+
timesheet: 'ADMIN',
|
|
50
|
+
pmo: 'SUPER',
|
|
51
|
+
setting: 'SUPER',
|
|
52
|
+
created_at: '2025-08-15T16:40:29.319Z',
|
|
53
|
+
updated_at: '2025-09-30T10:14:59.228Z',
|
|
54
|
+
},
|
|
55
|
+
team: {
|
|
56
|
+
id: 'ef2abb00-d57f-4a38-a5d1-660ee63d2e1f',
|
|
57
|
+
created_at: '2025-08-26T10:36:53.598Z',
|
|
58
|
+
updated_at: '2025-10-01T06:00:29.941Z',
|
|
59
|
+
name: 'Developer Team',
|
|
60
|
+
code: 'DEV',
|
|
61
|
+
color: 'violet',
|
|
62
|
+
description: '',
|
|
63
|
+
working_start_at: '12:02:00',
|
|
64
|
+
working_end_at: '20:00:00',
|
|
65
|
+
created_by_id: null,
|
|
66
|
+
updated_by_id: '96d3ec63-be14-41c6-9268-ea8095d2a73b',
|
|
67
|
+
deleted_by_id: null,
|
|
68
|
+
},
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
const sidebarItems: NavigationMenuItem[] = [
|
|
72
|
+
{
|
|
73
|
+
children: [
|
|
74
|
+
{
|
|
75
|
+
label: 'Submenu 1',
|
|
76
|
+
to: '/layout-admin',
|
|
77
|
+
icon: 'i-heroicons-outline:home',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
label: 'Submenu 2',
|
|
81
|
+
to: '/layout-admin/asdasd',
|
|
82
|
+
icon: 'i-heroicons-outline:home',
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
label: 'DASHBOARD',
|
|
88
|
+
children: [
|
|
89
|
+
{
|
|
90
|
+
label: 'Submenu 1',
|
|
91
|
+
to: '/submenu1',
|
|
92
|
+
icon: 'i-heroicons-outline:home',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
label: 'Submenu 2',
|
|
96
|
+
to: '/submenu2',
|
|
97
|
+
icon: 'i-heroicons-outline:home',
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
label: 'Users',
|
|
103
|
+
children: [
|
|
104
|
+
{
|
|
105
|
+
label: 'Submenu 1',
|
|
106
|
+
to: '/submenu1',
|
|
107
|
+
icon: 'i-heroicons-outline:home',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
label: 'Submenu 2',
|
|
111
|
+
to: '/layout-admin',
|
|
112
|
+
icon: 'i-heroicons-outline:home',
|
|
113
|
+
children: [
|
|
114
|
+
{
|
|
115
|
+
label: 'Submenu 2-1',
|
|
116
|
+
to: '/layout-admin/1',
|
|
117
|
+
icon: 'i-heroicons-outline:home',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
label: 'Submenu 2-2',
|
|
121
|
+
to: '/layout-admin/2',
|
|
122
|
+
icon: 'i-heroicons-outline:home',
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
]
|
|
129
|
+
</script>
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.17](https://gitlab.finema.co/finema/finework/finework-frontend-layer/compare/0.1.16...0.1.17) (2025-10-16)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **sidebar:** update sidebar navigation paths and add submenu structure ([0094fe5](https://gitlab.finema.co/finema/finework/finework-frontend-layer/commit/0094fe5a6a2a9fbd3c159b393e7c774ae7d4aebf))
|
|
8
|
+
|
|
9
|
+
## [0.1.16](https://gitlab.finema.co/finema/finework/finework-frontend-layer/compare/0.1.15...0.1.16) (2025-10-16)
|
|
10
|
+
|
|
11
|
+
### Performance Improvements
|
|
12
|
+
|
|
13
|
+
* **lint:** enable eslint caching for better performance ([369be3c](https://gitlab.finema.co/finema/finework/finework-frontend-layer/commit/369be3ceadaf8f3a7297dbe12fd0a11360cdb781))
|
|
14
|
+
|
|
3
15
|
## [0.1.15](https://gitlab.finema.co/finema/finework/finework-frontend-layer/compare/0.1.14...0.1.15) (2025-10-16)
|
|
4
16
|
|
|
5
17
|
## [0.1.14](https://gitlab.finema.co/finema/finework/finework-frontend-layer/compare/0.1.13...0.1.14) (2025-10-16)
|
package/app/app.config.ts
CHANGED
|
@@ -9,290 +9,5 @@ export default defineAppConfig({
|
|
|
9
9
|
limit_per_page: 15,
|
|
10
10
|
locale: 'en',
|
|
11
11
|
},
|
|
12
|
-
ui: {
|
|
13
|
-
colors: {
|
|
14
|
-
white: 'white',
|
|
15
|
-
},
|
|
16
|
-
dialog: {
|
|
17
|
-
icons: {
|
|
18
|
-
iconInfo: 'material-symbols:info-outline',
|
|
19
|
-
iconConfirm: 'material-symbols:info-outline',
|
|
20
|
-
},
|
|
21
|
-
slots: {
|
|
22
|
-
iconWrapper: 'rounded-full size-[48px] flex justify-center items-center',
|
|
23
|
-
icon: 'size-6',
|
|
24
|
-
base: [
|
|
25
|
-
'rounded-xl flex-col justify-start items-start space-x-0 bg-[url(/dialog-bg.png)] bg-no-repeat bg-top-left bg-size-[220px]',
|
|
26
|
-
'max-sm:top-auto max-sm:bottom-0 max-sm:left-0 max-sm:right-0 max-sm:translate-x-0 max-sm:translate-y-0 max-sm:w-full max-sm:max-w-full max-sm:rounded-b-none max-sm:rounded-t-xl',
|
|
27
|
-
],
|
|
28
|
-
overlay: 'bg-black/50 backdrop-blur',
|
|
29
|
-
description: 'whitespace-pre-line',
|
|
30
|
-
wrapper: 'justify-start items-start',
|
|
31
|
-
title: 'mt-4',
|
|
32
|
-
buttonGroup: 'justify-center w-full mt-6',
|
|
33
|
-
cancelButton: 'w-full justify-center',
|
|
34
|
-
confirmButton: 'w-full justify-center',
|
|
35
|
-
},
|
|
36
|
-
variants: {
|
|
37
|
-
color: {
|
|
38
|
-
success: {
|
|
39
|
-
icon: 'text-success',
|
|
40
|
-
iconWrapper: 'bg-success/10',
|
|
41
|
-
},
|
|
42
|
-
info: {
|
|
43
|
-
icon: 'text-info',
|
|
44
|
-
iconWrapper: 'bg-info/10',
|
|
45
|
-
},
|
|
46
|
-
warning: {
|
|
47
|
-
icon: 'text-warning',
|
|
48
|
-
iconWrapper: 'bg-warning/10',
|
|
49
|
-
},
|
|
50
|
-
error: {
|
|
51
|
-
icon: 'text-error',
|
|
52
|
-
iconWrapper: 'bg-error/10',
|
|
53
|
-
},
|
|
54
|
-
loading: {
|
|
55
|
-
icon: 'text-primary size-10',
|
|
56
|
-
base: 'max-w-[400px] bg-none',
|
|
57
|
-
wrapper: 'justify-center',
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
confirm: {
|
|
61
|
-
true: {},
|
|
62
|
-
false: {},
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
slideover: {
|
|
67
|
-
slots: {
|
|
68
|
-
overlay: 'bg-black/50 backdrop-blur',
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
toast: {
|
|
72
|
-
slots: {
|
|
73
|
-
root: 'rounded-xl',
|
|
74
|
-
icon: 'size-8',
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
card: {
|
|
78
|
-
slots: {
|
|
79
|
-
root: '!bg-white',
|
|
80
|
-
header: 'text-lg font-bold',
|
|
81
|
-
},
|
|
82
|
-
variants: {
|
|
83
|
-
variant: {
|
|
84
|
-
soft: {
|
|
85
|
-
root: 'bg-elevated/50 divide-y divide-default shadow-[0px_2px_14px_0px_rgba(0,0,0,0.06)]',
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
switch: {
|
|
91
|
-
slots: {
|
|
92
|
-
base: 'cursor-pointer',
|
|
93
|
-
label: 'cursor-pointer',
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
breadcrumb: {
|
|
97
|
-
variants: {
|
|
98
|
-
active: {
|
|
99
|
-
true: {
|
|
100
|
-
link: 'text-black font-semibold',
|
|
101
|
-
},
|
|
102
|
-
},
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
tabs: {
|
|
106
|
-
slots: {
|
|
107
|
-
label: 'whitespace-nowrap',
|
|
108
|
-
list: 'relative flex p-1 group overflow-x-auto overflow-y-hidden scrollbar-hide',
|
|
109
|
-
trigger: 'data-[state=active]:font-bold cursor-pointer whitespace-nowrap shrink-0',
|
|
110
|
-
},
|
|
111
|
-
defaultVariants: {
|
|
112
|
-
size: 'xl',
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
modal: {
|
|
116
|
-
slots: {
|
|
117
|
-
overlay: 'bg-[#0C111D]/60 backdrop-blur',
|
|
118
|
-
title: 'text-xl font-bold',
|
|
119
|
-
content: [
|
|
120
|
-
'divide-none overflow-visible flex flex-col',
|
|
121
|
-
'max-sm:top-auto max-sm:bottom-0 max-sm:left-0 max-sm:right-0 max-sm:translate-x-0 max-sm:translate-y-0 max-sm:w-full max-sm:max-w-full max-sm:h-auto max-sm:max-h-[90dvh] max-sm:rounded-b-none max-sm:rounded-t-lg',
|
|
122
|
-
],
|
|
123
|
-
body: '!pt-0 overflow-y-auto flex-1 overflow-x-visible',
|
|
124
|
-
footer: 'w-full',
|
|
125
|
-
},
|
|
126
|
-
variants: {
|
|
127
|
-
fullscreen: {
|
|
128
|
-
false: {
|
|
129
|
-
content: 'overflow-visible',
|
|
130
|
-
},
|
|
131
|
-
},
|
|
132
|
-
},
|
|
133
|
-
},
|
|
134
|
-
pagination: {
|
|
135
|
-
slots: {
|
|
136
|
-
first: 'disabled:hidden',
|
|
137
|
-
prev: 'disabled:hidden',
|
|
138
|
-
next: 'disabled:hidden',
|
|
139
|
-
last: 'disabled:hidden',
|
|
140
|
-
},
|
|
141
|
-
},
|
|
142
|
-
table: {
|
|
143
|
-
slots: {
|
|
144
|
-
root: 'rounded-t-md rounded-b-md bg-white',
|
|
145
|
-
captionContainer: 'hidden',
|
|
146
|
-
paginationInfo: 'text-gray-600',
|
|
147
|
-
paginationContainer: 'items-center flex-col lg:flex-row gap-4',
|
|
148
|
-
thead: 'bg-primary',
|
|
149
|
-
th: 'text-[#222222] bg-white whitespace-nowrap',
|
|
150
|
-
td: 'text-[#222222]',
|
|
151
|
-
},
|
|
152
|
-
variants: {
|
|
153
|
-
pinned: {
|
|
154
|
-
true: {
|
|
155
|
-
th: 'sticky bg-gray-100 data-[pinned=left]:left-0 data-[pinned=right]:right-0 z-[100] ',
|
|
156
|
-
td: 'sticky bg-gray-50 data-[pinned=left]:left-0 data-[pinned=right]:right-0 ',
|
|
157
|
-
},
|
|
158
|
-
},
|
|
159
|
-
sticky: {
|
|
160
|
-
true: {
|
|
161
|
-
thead: 'sticky top-0 inset-x-0 bg-primary z-[1] backdrop-blur',
|
|
162
|
-
tfoot: 'sticky bottom-0 inset-x-0 bg-white z-[1] backdrop-blur',
|
|
163
|
-
},
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
},
|
|
167
|
-
formField: {
|
|
168
|
-
slots: {
|
|
169
|
-
label: 'font-bold',
|
|
170
|
-
},
|
|
171
|
-
},
|
|
172
|
-
input: {
|
|
173
|
-
variants: {
|
|
174
|
-
size: {
|
|
175
|
-
xl: {
|
|
176
|
-
base: 'py-2.5 disabled:bg-[#F5F5F5] disabled:text-[#737373] disabled:cursor-not-allowed',
|
|
177
|
-
},
|
|
178
|
-
},
|
|
179
|
-
},
|
|
180
|
-
defaultVariants: {
|
|
181
|
-
size: 'xl',
|
|
182
|
-
},
|
|
183
|
-
},
|
|
184
|
-
inputNumber: {
|
|
185
|
-
variants: {
|
|
186
|
-
size: {
|
|
187
|
-
xl: 'py-2.5 disabled:bg-[#F5F5F5] disabled:text-[#737373] disabled:cursor-not-allowed',
|
|
188
|
-
},
|
|
189
|
-
},
|
|
190
|
-
defaultVariants: {
|
|
191
|
-
size: 'xl',
|
|
192
|
-
},
|
|
193
|
-
},
|
|
194
|
-
inputTags: {
|
|
195
|
-
variants: {
|
|
196
|
-
size: {
|
|
197
|
-
xl: {
|
|
198
|
-
base: 'py-2.5 min-h-[100px] items-start disabled:bg-[#F5F5F5] disabled:text-[#737373] disabled:cursor-not-allowed w-full',
|
|
199
|
-
item: 'bg-white',
|
|
200
|
-
},
|
|
201
|
-
},
|
|
202
|
-
},
|
|
203
|
-
defaultVariants: {
|
|
204
|
-
size: 'xl',
|
|
205
|
-
},
|
|
206
|
-
},
|
|
207
|
-
dateTime: {
|
|
208
|
-
slots: {
|
|
209
|
-
clearIcon: 'size-6 mr-3',
|
|
210
|
-
},
|
|
211
|
-
},
|
|
212
|
-
selectMenu: {
|
|
213
|
-
slots: {
|
|
214
|
-
base: 'cursor-pointer w-full',
|
|
215
|
-
item: 'cursor-pointer max-sm:h-14',
|
|
216
|
-
clearIcon: 'size-6',
|
|
217
|
-
},
|
|
218
|
-
variants: {
|
|
219
|
-
size: {
|
|
220
|
-
xl: {
|
|
221
|
-
base: 'py-2.5 disabled:bg-[#F5F5F5] disabled:text-[#737373] disabled:cursor-not-allowed',
|
|
222
|
-
},
|
|
223
|
-
},
|
|
224
|
-
},
|
|
225
|
-
defaultVariants: {
|
|
226
|
-
size: 'xl',
|
|
227
|
-
},
|
|
228
|
-
},
|
|
229
|
-
textarea: {
|
|
230
|
-
variants: {
|
|
231
|
-
size: {
|
|
232
|
-
xl: {
|
|
233
|
-
base: 'py-2.5 disabled:bg-[#F5F5F5] disabled:text-[#737373] disabled:cursor-not-allowed',
|
|
234
|
-
},
|
|
235
|
-
},
|
|
236
|
-
},
|
|
237
|
-
defaultVariants: {
|
|
238
|
-
size: 'xl',
|
|
239
|
-
},
|
|
240
|
-
},
|
|
241
|
-
button: {
|
|
242
|
-
slots: {
|
|
243
|
-
base: ['rounded-lg cursor-pointer'],
|
|
244
|
-
},
|
|
245
|
-
variants: {
|
|
246
|
-
size: {
|
|
247
|
-
xl: {
|
|
248
|
-
base: 'py-2.5 font-semibold',
|
|
249
|
-
},
|
|
250
|
-
},
|
|
251
|
-
},
|
|
252
|
-
compoundVariants: [
|
|
253
|
-
{
|
|
254
|
-
color: 'white',
|
|
255
|
-
variant: 'solid',
|
|
256
|
-
class: 'text-black',
|
|
257
|
-
},
|
|
258
|
-
],
|
|
259
|
-
defaultVariants: {
|
|
260
|
-
size: 'xl',
|
|
261
|
-
},
|
|
262
|
-
},
|
|
263
|
-
stepper: {
|
|
264
|
-
variants: {
|
|
265
|
-
size: {
|
|
266
|
-
xs: {
|
|
267
|
-
trigger: 'size-8',
|
|
268
|
-
icon: 'size-6',
|
|
269
|
-
title: 'text-base font-bold',
|
|
270
|
-
description: 'text-sm',
|
|
271
|
-
wrapper: 'mt-1.5',
|
|
272
|
-
},
|
|
273
|
-
},
|
|
274
|
-
},
|
|
275
|
-
defaultVariants: {
|
|
276
|
-
size: 'xs',
|
|
277
|
-
},
|
|
278
|
-
},
|
|
279
|
-
dropdownMenu: {
|
|
280
|
-
slots: {
|
|
281
|
-
content: 'cursor-pointer w-full',
|
|
282
|
-
item: 'cursor-pointer max-sm:h-14',
|
|
283
|
-
clearIcon: 'size-6',
|
|
284
|
-
},
|
|
285
|
-
variants: {
|
|
286
|
-
size: {
|
|
287
|
-
lg: {
|
|
288
|
-
content: 'text-sm py-2.5 disabled:bg-[#F5F5F5] disabled:text-[#737373] disabled:cursor-not-allowed',
|
|
289
|
-
},
|
|
290
|
-
},
|
|
291
|
-
},
|
|
292
|
-
defaultVariants: {
|
|
293
|
-
size: 'lg',
|
|
294
|
-
},
|
|
295
|
-
},
|
|
296
|
-
|
|
297
|
-
},
|
|
12
|
+
ui: {},
|
|
298
13
|
})
|
package/app/assets/css/main.css
CHANGED
|
@@ -1,115 +1,9 @@
|
|
|
1
1
|
@import "tailwindcss";
|
|
2
2
|
|
|
3
3
|
:root {
|
|
4
|
-
--ui-text: var(--ui-color-neutral-800);
|
|
5
|
-
--color-main: #1570EF;
|
|
6
|
-
--color-main-50: #EBEEFF;
|
|
7
|
-
--color-main-100: #D1E9FF;
|
|
8
|
-
--color-main-200: #B2DDFF;
|
|
9
|
-
--color-main-300: #84CAFF;
|
|
10
|
-
--color-main-400: #53B1FD;
|
|
11
|
-
--color-main-500: #1570EF;
|
|
12
|
-
--color-main-600: #1570EF;
|
|
13
|
-
--color-main-700: #175CD3;
|
|
14
|
-
--color-main-800: #1849A9;
|
|
15
|
-
--color-main-900: #194185;
|
|
16
|
-
--color-main-950: #102A56;
|
|
17
|
-
|
|
18
|
-
--color-warning: #F79009;
|
|
19
|
-
--color-warning-50: #FFFAEB;
|
|
20
|
-
--color-warning-100: #FEF0C7;
|
|
21
|
-
--color-warning-200: #FEDF89;
|
|
22
|
-
--color-warning-300: #FEC84B;
|
|
23
|
-
--color-warning-400: #FDB022;
|
|
24
|
-
--color-warning-500: #F79009;
|
|
25
|
-
--color-warning-600: #DC6803;
|
|
26
|
-
--color-warning-700: #B54708;
|
|
27
|
-
--color-warning-800: #93370D;
|
|
28
|
-
--color-warning-900: #7A2E0E;
|
|
29
|
-
--color-warning-950: #4E1D09;
|
|
30
|
-
|
|
31
|
-
--color-success: #17B26A;
|
|
32
|
-
--color-success-50: #ECFDF3;
|
|
33
|
-
--color-success-100: #DCFAE6;
|
|
34
|
-
--color-success-200: #ABEFC6;
|
|
35
|
-
--color-success-300: #75E0A7;
|
|
36
|
-
--color-success-400: #47CD89;
|
|
37
|
-
--color-success-500: #17B26A;
|
|
38
|
-
--color-success-600: #079455;
|
|
39
|
-
--color-success-700: #067647;
|
|
40
|
-
--color-success-800: #085D3A;
|
|
41
|
-
--color-success-900: #074D31;
|
|
42
|
-
--color-success-950: #053321;
|
|
43
|
-
|
|
44
|
-
--color-error: #E11D48;
|
|
45
|
-
--color-error-50: #fef2f2;
|
|
46
|
-
--color-error-100: #FEE2E2;
|
|
47
|
-
--color-error-200: #F0899F;
|
|
48
|
-
--color-error-300: #EB6582;
|
|
49
|
-
--color-error-400: #E64065;
|
|
50
|
-
--color-error-500: #E11D48;
|
|
51
|
-
--color-error-600: #AF1738;
|
|
52
|
-
--color-error-700: #7E1028;
|
|
53
|
-
--color-error-800: #4C0A18;
|
|
54
|
-
--color-error-900: #1A0308;
|
|
55
|
-
--color-error-950: #010000;
|
|
56
|
-
|
|
57
|
-
--color-info: #2563EB;
|
|
58
|
-
--color-info-50: #DDE9FF;
|
|
59
|
-
--color-info-100: #C8DFFF;
|
|
60
|
-
--color-info-200: #A1C4FF;
|
|
61
|
-
--color-info-300: #7AA9FF;
|
|
62
|
-
--color-info-400: #538EFF;
|
|
63
|
-
--color-info-500: #2563EB;
|
|
64
|
-
--color-info-600: #1A4AAF;
|
|
65
|
-
--color-info-700: #0F318A;
|
|
66
|
-
--color-info-800: #081F65;
|
|
67
|
-
--color-info-900: #020B3A;
|
|
68
|
-
--color-info-950: #000000;
|
|
69
|
-
|
|
70
|
-
--color-white: #FFFFFF;
|
|
71
|
-
--color-white-50: #FFFFFF;
|
|
72
|
-
--color-white-100: #FFFFFF;
|
|
73
|
-
--color-white-200: #FFFFFF;
|
|
74
|
-
--color-white-300: #FFFFFF;
|
|
75
|
-
--color-white-400: #FFFFFF;
|
|
76
|
-
--color-white-500: #FFFFFF;
|
|
77
|
-
--color-white-600: #E3E3E3;
|
|
78
|
-
--color-white-700: #C7C7C7;
|
|
79
|
-
--color-white-800: #ABABAB;
|
|
80
|
-
--color-white-900: #8F8F8F;
|
|
81
|
-
--color-white-950: #818181;
|
|
82
|
-
|
|
83
4
|
--color-background: var(--color-gray-50);
|
|
84
5
|
}
|
|
85
6
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
html {
|
|
89
|
-
@apply text-sm lg:text-base;
|
|
90
|
-
font-family: 'Noto Sans Thai', 'Noto Sans Thai Looped', 'Public Sans', sans-serif !important;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
7
|
body {
|
|
94
8
|
@apply bg-[var(--color-background)];
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
.dp__main {
|
|
98
|
-
display: block !important;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.dp__menu {
|
|
102
|
-
border: none !important;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.dp__pointer {
|
|
106
|
-
height: 44px !important;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.dp__outer_menu_wrap {
|
|
110
|
-
box-shadow: none !important;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
.dp--menu-wrapper {
|
|
114
|
-
@apply ring-1 ring-slate-300;
|
|
115
9
|
}
|
|
@@ -204,11 +204,21 @@ const mappedItems = (items: NavigationMenuItem[]): NavigationMenuItem[] => {
|
|
|
204
204
|
}
|
|
205
205
|
})
|
|
206
206
|
|
|
207
|
+
const allPaths = props.items
|
|
208
|
+
.flatMap((i) => [i.to, ...(i.children?.map((c) => c.to) || [])])
|
|
209
|
+
.filter(Boolean) as string[]
|
|
210
|
+
|
|
211
|
+
const hasExactMatch = allPaths.some(
|
|
212
|
+
(p) => normalizePath(route.path) === normalizePath(p),
|
|
213
|
+
)
|
|
214
|
+
|
|
207
215
|
const selfIsActive = item.to
|
|
208
216
|
? normalizePath(route.path) === normalizePath(String(item.to))
|
|
217
|
+
|| (route.path.startsWith(normalizePath(String(item.to)))
|
|
218
|
+
&& !hasExactMatch)
|
|
209
219
|
: false
|
|
210
220
|
|
|
211
|
-
const itemIsActive = selfIsActive || isAnyChildActive
|
|
221
|
+
const itemIsActive = selfIsActive || isAnyChildActive
|
|
212
222
|
|
|
213
223
|
const itemDefaultOpen = item.children ? isAnyChildActive : false
|
|
214
224
|
|
package/bun.lock
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"": {
|
|
5
5
|
"name": "@finema/finework-layer",
|
|
6
6
|
"dependencies": {
|
|
7
|
-
"@finema/core": "^2.
|
|
7
|
+
"@finema/core": "^2.45.0",
|
|
8
8
|
},
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@finema/eslint-config": "^2.0.3",
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
|
|
188
188
|
"@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.0", "", { "dependencies": { "@eslint/core": "^0.16.0", "levn": "^0.4.1" } }, "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A=="],
|
|
189
189
|
|
|
190
|
-
"@finema/core": ["@finema/core@2.
|
|
190
|
+
"@finema/core": ["@finema/core@2.45.0", "", { "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-oL3kCVOpQ51rW02ttC5rFB+9kX//+wXFcC2jR3qKl2Ea55iVf/MQARqhHIhQ04bMxXBF1Wguf/biR2K/HfAxLA=="],
|
|
191
191
|
|
|
192
192
|
"@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=="],
|
|
193
193
|
|
package/nuxt.config.ts
CHANGED
|
@@ -17,13 +17,6 @@ export default defineNuxtConfig({
|
|
|
17
17
|
enabled: true,
|
|
18
18
|
},
|
|
19
19
|
css: [join(currentDir, './app/assets/css/main.css'), '@vuepic/vue-datepicker/dist/main.css'],
|
|
20
|
-
ui: {
|
|
21
|
-
theme: {
|
|
22
|
-
colors: [
|
|
23
|
-
'white',
|
|
24
|
-
],
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
20
|
alias: {
|
|
28
21
|
'#layer': resolve('./'),
|
|
29
22
|
},
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finema/finework-layer",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.17",
|
|
5
5
|
"main": "./nuxt.config.ts",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"dev": "nuxi dev .playground -o",
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"vue": "latest"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@finema/core": "^2.
|
|
33
|
+
"@finema/core": "^2.45.0"
|
|
34
34
|
},
|
|
35
35
|
"lint-staged": {
|
|
36
|
-
"*": "eslint --
|
|
36
|
+
"*": "eslint --cache"
|
|
37
37
|
}
|
|
38
38
|
}
|