2
2
3
3
< head >
4
4
< meta charset ="utf-8 ">
5
- < meta name ="viewport " content ="width=device-width, initial-scale=1.0, user-scalable=no " / >
5
+ < meta name ="viewport " content ="width=device-width, initial-scale=1 " >
6
6
< link rel ="stylesheet " href ="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css "
7
7
integrity ="sha512-Evv84Mr4kqVGRNSgIGL/F/aIDqQb7xQ2vcrdIwxfjThSH8CSR7PBEakCr51Ck+w+/U6swU2Im1vVX0SVk9ABhg== "
8
8
crossorigin ="anonymous " referrerpolicy ="no-referrer " />
9
- < link rel ="stylesheet " href ="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css "
10
- integrity ="sha512-NhSC1YmyruXifcj/KFRWoC561YpHpc5Jtzgvbuzx5VozKpWvQ+4nXhPdFgmx8xqexRcpAglTj9sIBWINXa8x5w== "
11
- crossorigin ="anonymous " referrerpolicy ="no-referrer " />
12
9
< script defer src ="
https://cdn.jsdelivr.net/npm/@monaco-editor/[email protected] /lib/umd/monaco-loader.min.js "
> </ script >
10
+
13
11
< link rel ="icon " href ="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>✍️</text></svg> ">
14
12
< title > CV Maker</ title >
15
- < script type ="module " crossorigin src ="./assets/index-C8cJAPg2.js "> </ script >
16
- < link rel ="stylesheet " crossorigin href ="./assets/index-CpA7MgDL.css ">
13
+
14
+ < script async src ="https://www.googletagmanager.com/gtag/js?id=G-FKWW5S34LH "> </ script >
15
+ < script >
16
+ window . dataLayer = window . dataLayer || [ ] ;
17
+ function gtag ( ) { dataLayer . push ( arguments ) ; }
18
+ gtag ( 'js' , new Date ( ) ) ;
19
+
20
+ gtag ( 'config' , 'G-FKWW5S34LH' ) ;
21
+ </ script >
22
+ < script type ="module " crossorigin src ="./assets/index-pP8_YhaN.js "> </ script >
23
+ < link rel ="stylesheet " crossorigin href ="./assets/index-BEKBKFMb.css ">
17
24
</ head >
18
25
19
- < body x-data style ="display: flex; flex-direction: column; ">
26
+ < body x-data ="state " class ="flex flex-col p-16 pt-8 ">
27
+ <!-- navigation -->
28
+ < div
29
+ class ="no-print pb-2 flex gap-2 justify-center "
30
+ x-init ="$watch('mode', value => $dispatch('mode-was-changed', value)) "
31
+ >
20
32
21
- < div style ="padding-bottom: 20px; " class ="no-print ">
22
- < label class ="menu-item " :class ="{ 'active': $store.state.mode === 'editor' } ">
23
- < input type ="radio " value ="editor " x-model ="$store.state.mode " /> Editor
33
+ < select
34
+ class ="self-start "
35
+ x-model ="currentResume "
36
+ @change ="$dispatch('init-resume') "
37
+ >
38
+ < template x-for ="resume in availableResumes " :key ="resume.id ">
39
+ < option
40
+ :value ="resume.id "
41
+ x-text ="resume.name "
42
+ :selected ="currentResume === resume.id "
43
+ V > </ option >
44
+ </ template >
45
+ </ select >
46
+
47
+ < div class ="mx-auto ">
48
+ < label
49
+ class ="hover:cursor-pointer text-lg "
50
+ :class ="{ 'text-orange-400 underline': mode === 'editor' } "
51
+ >
52
+ < input
53
+ type ="radio "
54
+ class ="appearance-none "
55
+ value ="editor "
56
+ x-model ="mode "
57
+ /> Editor
24
58
</ label >
25
59
26
60
< label
27
- class ="menu-item "
28
- :class ="{ 'active ': $store.state. mode === 'view' } "
29
- x-show ="!$store.state. editorHasError " x-transition
61
+ class ="hover:cursor-pointer text-lg "
62
+ :class ="{ 'text-orange-400 underline ': mode === 'view' } "
63
+ x-show ="!editorHasError " x-transition
30
64
>
31
65
< input
32
66
type ="radio "
33
67
value ="view "
34
- x-model ="$store.state.mode "
68
+ x-model ="mode "
69
+ class ="appearance-none "
35
70
/> View
36
71
</ label >
72
+ </ div >
73
+
37
74
38
75
</ div >
39
76
40
- <!-- code editor -->
41
- < div x-show ="$store.state.mode == 'editor' ">
42
- < div x-data ="sections ">
43
- < template x-for ="mode in sections ">
44
- < label
45
- class ="menu-item "
46
- :class ="{ 'active': $store.state.editorSection === mode.id } "
47
- >
48
- < input
49
- type ="radio "
50
- :value ="mode.id "
51
- x-model ="$store.state.editorSection "
52
- @change ="$dispatch('section-changed') "
53
- />
54
- < span x-text ="mode.label "> </ span >
55
- </ label >
56
- </ template >
77
+ <!-- code editor and code section -->
78
+ < div
79
+ class ="flex gap-2 pb-2 "
80
+ x-show ="mode == 'editor' "
81
+ >
82
+ < div class ="self-start ">
83
+ < button
84
+ class ="btn bg-sky-500 hover:bg-sky-700 text-sm "
85
+ x-on:click ="$dispatch('save') "
86
+ > Save as</ button >
87
+ < button
88
+ class ="btn bg-[#DC382D] hover:bg-[#B93224] "
89
+ x-on:click ="$dispatch('delete') "
90
+ > Delete</ button >
91
+ </ div >
92
+
93
+ < div
94
+ class ="self-end ml-auto "
95
+ >
96
+ < select
97
+ class =" bg-white border border-gray-300 py-2 px-3 rounded focus:outline-none focus:ring-0 "
98
+ @change ="$dispatch('section-changed') "
99
+ x-model ="editorSection "
100
+ >
101
+ < template x-for ="section in $store.sections " :key ="section.id ">
102
+ < option
103
+ :value ="section.id "
104
+ :selected ="editorSection === section.id "
105
+ x-text ="section.label "
106
+ > </ option >
107
+ </ template >
108
+ </ select >
57
109
</ div >
58
110
59
- < div
60
- id ="code-editor "
61
- > </ div >
62
111
</ div >
63
112
64
- < div x-show ="$store.state.mode == 'view' ">
65
- < div x-html ="$store.state.resumeHtml "> </ div >
113
+ < div
114
+ class ="w-full h-full "
115
+ x-show ="mode == 'editor' "
116
+ id ="code-editor "
117
+ > </ div >
118
+
119
+ < div
120
+ class ="self-center "
121
+ x-show ="mode == 'view' "
122
+ >
123
+ < div
124
+ x-html ="resumeHtml "
125
+ > </ div >
66
126
</ div >
67
127
128
+ < button
129
+ @click ="window.print() "
130
+ x-show ="mode == 'view' "
131
+ class ="no-print hover:cursor-pointer fixed top-10 right-20 bg-blue-500 hover:bg-blue-600 text-white py-2 px-4 rounded-full shadow-lg "
132
+ >
133
+ Print
134
+ </ button >
135
+
136
+ < footer class ="bg-gray-100 text-gray-700 py-4 no-print mt-20 ">
137
+ < div class ="container mx-auto text-center ">
138
+ < p > © 2025 Created by Aleksandr Kondaurov</ p >
139
+ < p >
140
+ < a
141
+ target ="_blank "
142
+ href ="https://www.linkedin.com/in/alexander-kondaurov/ "
143
+ rel ="noopener noreferrer "
144
+ class ="fa-brands fa-lg fa-linkedin text-blue-300 "
145
+ > </ a >
146
+ < a
147
+ target ="_blank "
148
+ href ="https://github.com/orgs/effect-ak/repositories "
149
+ rel ="noopener noreferrer "
150
+ class ="fa-brands fa-lg fa-github "
151
+ > </ a >
152
+ </ p >
153
+ </ div >
154
+ </ footer >
155
+
68
156
</ body >
69
157
70
158
</ html >
0 commit comments