1
+ // Helper function to convert hex to HSL
2
+ function hexToHSL ( hex ) {
3
+ // Remove the # if present
4
+ hex = hex . replace ( '#' , '' ) ;
5
+
6
+ // Convert hex to RGB
7
+ const r = parseInt ( hex . substring ( 0 , 2 ) , 16 ) / 255 ;
8
+ const g = parseInt ( hex . substring ( 2 , 4 ) , 16 ) / 255 ;
9
+ const b = parseInt ( hex . substring ( 4 , 6 ) , 16 ) / 255 ;
10
+
11
+ // Find greatest and smallest RGB values
12
+ const max = Math . max ( r , g , b ) ;
13
+ const min = Math . min ( r , g , b ) ;
14
+
15
+ let h , s , l = ( max + min ) / 2 ;
16
+
17
+ if ( max === min ) {
18
+ h = s = 0 ;
19
+ } else {
20
+ const d = max - min ;
21
+ s = l > 0.5 ? d / ( 2 - max - min ) : d / ( max + min ) ;
22
+
23
+ switch ( max ) {
24
+ case r : h = ( g - b ) / d + ( g < b ? 6 : 0 ) ; break ;
25
+ case g : h = ( b - r ) / d + 2 ; break ;
26
+ case b : h = ( r - g ) / d + 4 ; break ;
27
+ }
28
+ h /= 6 ;
29
+ }
30
+
31
+ return `${ Math . round ( h * 360 ) } ${ Math . round ( s * 100 ) } % ${ Math . round ( l * 100 ) } %` ;
32
+ }
33
+
1
34
export function generateOverviewHTML ( demoData ) {
35
+
36
+ const hslColor = hexToHSL ( demoData . theme [ "brand-color" ] ) ;
37
+
2
38
return `
3
39
<!DOCTYPE html>
4
40
<html>
@@ -10,6 +46,11 @@ export function generateOverviewHTML(demoData) {
10
46
<link href="https://cdn.jsdelivr.net/npm/[email protected] /dist/full.css" rel="stylesheet">
11
47
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
12
48
<style>
49
+ :root {
50
+ --p: ${ hslColor } ;
51
+ --pf: ${ hslColor } ;
52
+ --pc: 0 0% 100%;
53
+ }
13
54
body {
14
55
min-height: 100vh;
15
56
display: flex;
@@ -68,9 +109,9 @@ export function generateOverviewHTML(demoData) {
68
109
<div class="hero-content text-center px-4">
69
110
<div>
70
111
<div class="flex justify-center items-center gap-4 md:gap-8 mb-6">
71
- <img src="${ demoData . product . logourl } " alt="${ demoData . product . name } " class="h-8 md:h-12 ">
112
+ <img src="${ demoData . product . logourl } " alt="${ demoData . product . name } " class="h-16 md:h-24 ">
72
113
<div class="divider divider-horizontal">x</div>
73
- <img src="${ demoData . customer . logourl } " alt="${ demoData . customer . name } " class="h-8 md:h-12 ">
114
+ <img src="${ demoData . customer . logourl } " alt="${ demoData . customer . name } " class="h-16 md:h-24 ">
74
115
</div>
75
116
<h1 class="text-3xl md:text-5xl font-bold mb-2">Demo Journey</h1>
76
117
<p class="text-lg md:text-xl opacity-75">Follow the story step by step</p>
@@ -108,6 +149,8 @@ export function generateOverviewHTML(demoData) {
108
149
}
109
150
110
151
export function generatePersonasHTML ( demoData ) {
152
+ const hslColor = hexToHSL ( demoData . theme [ "brand-color" ] ) ;
153
+
111
154
return `
112
155
<!DOCTYPE html>
113
156
<html>
@@ -118,6 +161,11 @@ export function generatePersonasHTML(demoData) {
118
161
<link href="https://cdn.jsdelivr.net/npm/[email protected] /dist/tailwind.min.css" rel="stylesheet">
119
162
<link href="https://cdn.jsdelivr.net/npm/[email protected] /dist/full.css" rel="stylesheet">
120
163
<style>
164
+ :root {
165
+ --p: ${ hslColor } ;
166
+ --pf: ${ hslColor } ;
167
+ --pc: 0 0% 100%;
168
+ }
121
169
body {
122
170
min-height: 100vh;
123
171
display: flex;
@@ -147,9 +195,9 @@ export function generatePersonasHTML(demoData) {
147
195
<div class="hero-content text-center">
148
196
<div>
149
197
<div class="flex justify-center items-center gap-8 mb-6">
150
- <img src="${ demoData . product . logourl } " alt="${ demoData . product . name } " class="h-12 ">
198
+ <img src="${ demoData . product . logourl } " alt="${ demoData . product . name } " class="h-16 md:h-24 ">
151
199
<div class="divider divider-horizontal">x</div>
152
- <img src="${ demoData . customer . logourl } " alt="${ demoData . customer . name } " class="h-12 ">
200
+ <img src="${ demoData . customer . logourl } " alt="${ demoData . customer . name } " class="h-16 md:h-24 ">
153
201
</div>
154
202
<h1 class="text-5xl font-bold mb-2">Meet the Team</h1>
155
203
<p class="text-xl opacity-75">The key players in this demo story</p>
@@ -159,22 +207,27 @@ export function generatePersonasHTML(demoData) {
159
207
160
208
<main class="container mx-auto px-4 pb-16">
161
209
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
162
- ${ Object . entries ( demoData . personnas ) . map ( ( [ key , persona ] ) => `
163
- <div class="persona-card card bg-base-100 shadow-xl hover:shadow-2xl">
164
- <div class="card-body items-center text-center p-8">
165
- <div class="avatar large placeholder mb-4">
166
- <div class="bg-primary text-primary-content rounded-full w-24 h-24 ring ring-primary ring-offset-2">
167
- ${ persona . pictureurl ?
168
- `<img src="${ persona . pictureurl } " alt="${ persona . name } " class="mask mask-circle">` :
169
- `<span class="text-3xl font-bold">${ persona . name . charAt ( 0 ) } </span>`
170
- }
210
+ ${ Object . entries ( demoData . personnas ) . map ( ( [ key , persona ] ) => {
211
+ const pictureUrl = persona . pictureurl ?
212
+ chrome . runtime . getURL ( `pictures/${ persona . pictureurl } ` ) : null ;
213
+
214
+ return `
215
+ <div class="persona-card card bg-base-100 shadow-xl hover:shadow-2xl">
216
+ <div class="card-body items-center text-center p-8">
217
+ <div class="avatar large placeholder mb-4">
218
+ <div class="bg-primary text-primary-content rounded-full w-24 h-24 ring ring-primary ring-offset-2">
219
+ ${ pictureUrl ?
220
+ `<img src="${ pictureUrl } " alt="${ persona . name } " class="mask mask-circle">` :
221
+ `<span class="text-3xl font-bold">${ persona . name . charAt ( 0 ) } </span>`
222
+ }
223
+ </div>
171
224
</div>
225
+ <h2 class="card-title text-2xl mb-1">${ persona . name } </h2>
226
+ <div class="badge badge-primary badge-lg mb-4">${ persona . title } </div>
172
227
</div>
173
- <h2 class="card-title text-2xl mb-1">${ persona . name } </h2>
174
- <div class="badge badge-primary badge-lg mb-4">${ persona . title } </div>
175
228
</div>
176
- </div>
177
- ` ) . join ( '' ) }
229
+ ` ;
230
+ } ) . join ( '' ) }
178
231
</div>
179
232
</main>
180
233
0 commit comments