create-qwik 0.21.0 → 0.22.0-dev20230314171944
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/index.cjs +67 -66
- package/package.json +2 -2
- package/starters/apps/base/package.json +8 -8
- package/starters/apps/basic/src/components/counter/counter.css +19 -0
- package/starters/apps/basic/src/components/counter/counter.tsx +15 -0
- package/starters/apps/basic/src/components/footer/footer.css +11 -0
- package/starters/apps/basic/src/components/footer/footer.tsx +16 -0
- package/starters/apps/basic/src/components/header/header.css +5 -6
- package/starters/apps/basic/src/components/header/header.tsx +4 -16
- package/starters/apps/basic/src/components/hero/hero.css +15 -0
- package/starters/apps/basic/src/components/hero/hero.tsx +55 -0
- package/starters/apps/basic/src/components/icons/qwik.tsx +4 -4
- package/starters/apps/basic/src/components/infobox/infobox.css +12 -0
- package/starters/apps/basic/src/components/infobox/infobox.tsx +14 -0
- package/starters/apps/basic/src/components/router-head/router-head.tsx +1 -1
- package/starters/apps/basic/src/components/starter/starter.css +13 -0
- package/starters/apps/basic/src/components/starter/starter.tsx +93 -0
- package/starters/apps/basic/src/global.css +102 -71
- package/starters/apps/basic/src/root.tsx +2 -0
- package/starters/apps/basic/src/routes/flower/index.tsx +31 -29
- package/starters/apps/basic/src/routes/index.tsx +94 -137
- package/starters/apps/basic/src/routes/layout.tsx +9 -11
- package/starters/apps/basic/src/routes/service-worker.ts +18 -0
- package/starters/apps/basic/src/routes/todolist/index.tsx +33 -15
- package/starters/apps/basic/src/routes/todolist/todolist.css +13 -0
- package/starters/apps/library/package.json +7 -7
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { component$, $, useStylesScoped$ } from '@builder.io/qwik';
|
|
2
|
+
import styles from './hero.css?inline';
|
|
3
|
+
|
|
4
|
+
export default component$(() => {
|
|
5
|
+
useStylesScoped$(styles);
|
|
6
|
+
return (
|
|
7
|
+
<div class="hero">
|
|
8
|
+
<h1>Welcome to qwik</h1>
|
|
9
|
+
<button
|
|
10
|
+
onClick$={() => {
|
|
11
|
+
party();
|
|
12
|
+
}}
|
|
13
|
+
>
|
|
14
|
+
Time to celebrate 🎉
|
|
15
|
+
</button>
|
|
16
|
+
</div>
|
|
17
|
+
);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export const party = $(() => {
|
|
21
|
+
const defaults = {
|
|
22
|
+
spread: 360,
|
|
23
|
+
ticks: 70,
|
|
24
|
+
gravity: 0,
|
|
25
|
+
decay: 0.95,
|
|
26
|
+
startVelocity: 30,
|
|
27
|
+
colors: ['006ce9', 'ac7ff4', '18b6f6', '713fc2', 'ffffff'],
|
|
28
|
+
origin: {
|
|
29
|
+
x: 0.5,
|
|
30
|
+
y: 0.245,
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
function shoot() {
|
|
35
|
+
// @ts-ignore
|
|
36
|
+
confetti({
|
|
37
|
+
...defaults,
|
|
38
|
+
particleCount: 80,
|
|
39
|
+
scalar: 1.2,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// @ts-ignore
|
|
43
|
+
confetti({
|
|
44
|
+
...defaults,
|
|
45
|
+
particleCount: 60,
|
|
46
|
+
scalar: 0.75,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
setTimeout(shoot, 0);
|
|
51
|
+
setTimeout(shoot, 100);
|
|
52
|
+
setTimeout(shoot, 200);
|
|
53
|
+
setTimeout(shoot, 300);
|
|
54
|
+
setTimeout(shoot, 400);
|
|
55
|
+
});
|
|
@@ -2,19 +2,19 @@ export const QwikLogo = () => (
|
|
|
2
2
|
<svg width="100" height="35" viewBox="0 0 167 53" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
3
|
<path
|
|
4
4
|
d="M81.9545 46.5859H75.5513V35.4045C73.4363 36.8579 71.0496 37.5749 68.4884 37.5749C65.0151 37.5749 62.4344 36.6253 60.8239 34.6487C59.2134 32.6915 58.3984 29.2034 58.3984 24.2231C58.3984 19.1266 59.3492 15.5997 61.2702 13.5456C63.23 11.4721 66.3734 10.4644 70.7004 10.4644C74.7946 10.4644 78.5201 11.0264 81.9545 12.131V46.5859ZM75.5513 16.278C74.096 15.8323 72.4661 15.6191 70.7004 15.6191C68.5272 15.6191 66.9749 16.1811 66.1017 17.3244C65.2479 18.4871 64.7823 20.6962 64.7823 23.9712C64.7823 27.0524 65.1897 29.1065 66.0435 30.2304C66.8973 31.335 68.3719 31.897 70.5452 31.897C73.3781 31.897 75.5513 30.7343 75.5513 29.2809V16.278Z"
|
|
5
|
-
fill="
|
|
5
|
+
fill="white"
|
|
6
6
|
/>
|
|
7
7
|
<path
|
|
8
8
|
d="M91.133 11.1426C93.4033 17.4406 95.3242 23.7386 96.993 30.0948C99.205 23.5836 101.087 17.2856 102.542 11.1426H108.15C110.265 17.4406 112.031 23.7386 113.447 30.0948C115.97 23.196 117.949 16.8787 119.404 11.1426H125.71C123.033 20.173 120.064 28.777 116.785 36.8966H109.256C108.402 32.3039 107.044 26.7617 105.22 20.1536C104.056 25.2889 102.445 30.8893 100.33 36.8966H92.8018C90.2793 27.5174 87.5434 18.9522 84.6328 11.1426H91.133Z"
|
|
9
|
-
fill="
|
|
9
|
+
fill="white"
|
|
10
10
|
/>
|
|
11
11
|
<path
|
|
12
12
|
d="M132.832 7.55758C129.999 7.55758 129.203 6.85996 129.203 3.97257C129.203 1.39523 130.018 0.794495 132.832 0.794495C135.665 0.794495 136.46 1.39523 136.46 3.97257C136.46 6.85996 135.665 7.55758 132.832 7.55758ZM129.649 11.1426H136.053V36.8966H129.649V11.1426Z"
|
|
13
|
-
fill="
|
|
13
|
+
fill="white"
|
|
14
14
|
/>
|
|
15
15
|
<path
|
|
16
16
|
d="M166.303 11.1426C161.763 17.5956 158.581 21.5295 156.815 22.9441C158.27 23.8937 162.17 28.8933 167.002 36.916H159.628C153.613 27.7887 150.742 23.8549 149.325 23.2542V36.916H142.922V0H149.325V23.2348C150.78 22.169 153.963 18.1382 158.872 11.1426H166.303Z"
|
|
17
|
-
fill="
|
|
17
|
+
fill="white"
|
|
18
18
|
/>
|
|
19
19
|
<path
|
|
20
20
|
d="M40.973 52.5351L32.0861 43.6985L31.9503 43.7179V43.621L13.0511 24.9595L17.708 20.4637L14.9721 4.76715L1.99103 20.8513C-0.220992 23.0798 -0.628467 26.7036 0.962635 29.3778L9.07337 42.8265C10.3152 44.9 12.566 46.1402 14.9915 46.1208L19.0081 46.082L40.973 52.5351Z"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Slot, component$, useStylesScoped$ } from '@builder.io/qwik';
|
|
2
|
+
import styles from './infobox.css?inline';
|
|
3
|
+
|
|
4
|
+
export default component$(() => {
|
|
5
|
+
useStylesScoped$(styles);
|
|
6
|
+
return (
|
|
7
|
+
<div class="infobox">
|
|
8
|
+
<h3>
|
|
9
|
+
<Slot name="title" />
|
|
10
|
+
</h3>
|
|
11
|
+
<Slot />
|
|
12
|
+
</div>
|
|
13
|
+
);
|
|
14
|
+
});
|
|
@@ -12,7 +12,7 @@ export const RouterHead = component$(() => {
|
|
|
12
12
|
<>
|
|
13
13
|
<title>{head.title}</title>
|
|
14
14
|
|
|
15
|
-
<link rel="canonical" href={loc.
|
|
15
|
+
<link rel="canonical" href={loc.href} />
|
|
16
16
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
17
17
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
18
18
|
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import {
|
|
2
|
+
component$,
|
|
3
|
+
$,
|
|
4
|
+
useOnWindow,
|
|
5
|
+
useSignal,
|
|
6
|
+
useStylesScoped$,
|
|
7
|
+
useTask$,
|
|
8
|
+
} from '@builder.io/qwik';
|
|
9
|
+
import { isBrowser } from '@builder.io/qwik/build';
|
|
10
|
+
import styles from './starter.css?inline';
|
|
11
|
+
import { useLocation } from '@builder.io/qwik-city';
|
|
12
|
+
|
|
13
|
+
export const GETTING_STARTED_STEPS = [
|
|
14
|
+
{
|
|
15
|
+
message: '<b>Ready</b> to make some changes?<br />Press and hold the <b>ALT</b> key',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
message: 'Select the title of this page while keeping the <b>ALT</b> key pressed',
|
|
19
|
+
hint: 'Edit the title and save the changes. If your editor does not open, have a look at <a href="https://github.com/yyx990803/launch-editor#supported-editors" target="_blank">this page</a> to set the correct <code>LAUNCH_EDITOR</code> value.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
message:
|
|
23
|
+
'<b>Update</b> now the <code>routeLoader$</code> defined in the <code>src/routes/layout.tsx</code> file',
|
|
24
|
+
hint: 'Instead of returning the current date, you could return any possible string.<br />The output is displayed in the footer.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
message: 'Create a <b>new Route</b> called <code>/me</code>',
|
|
28
|
+
hint: 'Create a new directory called <code>me</code> in <code>src/routes</code>. Within this directory create a <code>index.tsx</code> file or copy the <code>src/routes/index.tsx</code> file. Your new route is now accessible <a href="/me" target="_blank">here</a> ✨',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
message: 'Time to have a look at <b>Forms</b>',
|
|
32
|
+
hint: 'Open <a href="/todolist" target="_blank">the TODO list App</a> and add some items to the list. Try the same with disabled JavaScript 🐰',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
message: '<b>Congratulations!</b> You are now familiar with the basics! 🎉',
|
|
36
|
+
hint: "If you need further info on how to use qwik, have a look at <a href='https://qwik.builder.io' target='_blank'>qwik.builder.io</a> or join the <a href='https://qwik.builder.io/chat' target='_blank'>Discord channel</a>.",
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
export default component$(() => {
|
|
41
|
+
useStylesScoped$(styles);
|
|
42
|
+
|
|
43
|
+
const loc = useLocation();
|
|
44
|
+
let stepParam = loc.url.searchParams.has('step')
|
|
45
|
+
? parseInt(loc.url.searchParams.get('step') || '0') - 1
|
|
46
|
+
: 0;
|
|
47
|
+
|
|
48
|
+
if (stepParam < 0 || stepParam >= GETTING_STARTED_STEPS.length) {
|
|
49
|
+
stepParam = 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const gettingStartedStep = useSignal(stepParam);
|
|
53
|
+
|
|
54
|
+
useTask$(({ track }) => {
|
|
55
|
+
track(() => gettingStartedStep.value);
|
|
56
|
+
if (isBrowser) {
|
|
57
|
+
// pushState to update the URL
|
|
58
|
+
const url = new URL(window.location.href);
|
|
59
|
+
url.searchParams.set('step', gettingStartedStep.value + 1 + '');
|
|
60
|
+
window.history.pushState({}, '', url);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
useOnWindow(
|
|
65
|
+
'keydown',
|
|
66
|
+
$((e) => {
|
|
67
|
+
if ((e as KeyboardEvent).key === 'Alt') {
|
|
68
|
+
gettingStartedStep.value = 1;
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
return (
|
|
74
|
+
<>
|
|
75
|
+
<div class="getting-started">
|
|
76
|
+
<div dangerouslySetInnerHTML={GETTING_STARTED_STEPS[gettingStartedStep.value].message} />
|
|
77
|
+
<span
|
|
78
|
+
class="hint"
|
|
79
|
+
dangerouslySetInnerHTML={GETTING_STARTED_STEPS[gettingStartedStep.value].hint}
|
|
80
|
+
/>
|
|
81
|
+
</div>
|
|
82
|
+
{gettingStartedStep.value + 1 < GETTING_STARTED_STEPS.length ? (
|
|
83
|
+
<button class="gray small" onClick$={() => gettingStartedStep.value++}>
|
|
84
|
+
Continue with Step {gettingStartedStep.value + 2} of {GETTING_STARTED_STEPS.length}
|
|
85
|
+
</button>
|
|
86
|
+
) : (
|
|
87
|
+
<button class="gray small" onClick$={() => (gettingStartedStep.value = 0)}>
|
|
88
|
+
Re-Start
|
|
89
|
+
</button>
|
|
90
|
+
)}
|
|
91
|
+
</>
|
|
92
|
+
);
|
|
93
|
+
});
|
|
@@ -14,113 +14,144 @@
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
body {
|
|
17
|
-
background
|
|
17
|
+
background: linear-gradient(90deg, rgba(24, 182, 246, 0.3) 0%, rgba(172, 127, 244, 0.3) 100%);
|
|
18
|
+
/* background-color: #e1e1e1; */
|
|
18
19
|
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
|
|
19
|
-
|
|
20
|
+
font-weight: 200;
|
|
21
|
+
padding: 60px 0px;
|
|
20
22
|
}
|
|
21
23
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
border-radius: 5px;
|
|
27
|
-
box-shadow: 0px 0px 130px -50px var(--qwik-light-purple);
|
|
28
|
-
overflow: hidden;
|
|
24
|
+
h1,
|
|
25
|
+
h2,
|
|
26
|
+
h3 {
|
|
27
|
+
font-weight: 100;
|
|
29
28
|
}
|
|
30
29
|
|
|
31
|
-
h1,
|
|
32
|
-
h2
|
|
33
|
-
|
|
30
|
+
h1 b,
|
|
31
|
+
h2 b,
|
|
32
|
+
h3 b {
|
|
33
|
+
font-weight: 300;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
h1 {
|
|
37
|
+
color: white;
|
|
38
|
+
font-size: 3rem;
|
|
39
|
+
padding: 0;
|
|
40
|
+
margin: 0;
|
|
38
41
|
}
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
border-bottom: 10px solid var(--qwik-dark-blue);
|
|
43
|
+
h1.hero {
|
|
44
|
+
margin: 60px 0;
|
|
43
45
|
}
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
margin: 5px 0 30px 0;
|
|
48
|
-
padding-left: 25px;
|
|
47
|
+
h2 {
|
|
48
|
+
color: var(--qwik-dark-purple);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
input[type='text'],
|
|
52
|
+
button {
|
|
53
|
+
background-color: transparent;
|
|
54
|
+
color: white;
|
|
55
|
+
border: 1px solid white;
|
|
56
|
+
border-radius: 12px;
|
|
57
|
+
font-size: 1rem;
|
|
58
|
+
padding: 10px 20px;
|
|
53
59
|
}
|
|
54
60
|
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
button {
|
|
62
|
+
cursor: pointer;
|
|
57
63
|
}
|
|
58
64
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
color: var(--qwik-dark-
|
|
65
|
+
button:hover {
|
|
66
|
+
background-color: white;
|
|
67
|
+
color: var(--qwik-dark-purple);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
button.small {
|
|
71
|
+
border-radius: 6px;
|
|
72
|
+
font-size: 0.8rem;
|
|
73
|
+
padding: 5px 10px;
|
|
62
74
|
}
|
|
63
75
|
|
|
76
|
+
button.gray {
|
|
77
|
+
border-color: #aaa;
|
|
78
|
+
color: #aaa;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
a,
|
|
82
|
+
a:active,
|
|
83
|
+
a:visited,
|
|
64
84
|
a:hover {
|
|
85
|
+
color: black;
|
|
86
|
+
font-weight: 400;
|
|
65
87
|
text-decoration: none;
|
|
66
88
|
}
|
|
67
89
|
|
|
68
|
-
|
|
69
|
-
|
|
90
|
+
.section.bright {
|
|
91
|
+
background: white;
|
|
70
92
|
}
|
|
71
93
|
|
|
72
|
-
.
|
|
73
|
-
|
|
94
|
+
.section.dark {
|
|
95
|
+
background: rgba(50, 50, 50, 0.5);
|
|
74
96
|
}
|
|
75
97
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
98
|
+
code {
|
|
99
|
+
background: rgba(230, 230, 230, 0.3);
|
|
100
|
+
border-radius: 4px;
|
|
101
|
+
padding: 2px 6px;
|
|
79
102
|
}
|
|
80
103
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
background-color: rgb(224, 224, 224);
|
|
85
|
-
padding: 2px 4px;
|
|
86
|
-
border-radius: 3px;
|
|
87
|
-
border-bottom: 2px solid #bfbfbf;
|
|
104
|
+
ul {
|
|
105
|
+
margin: 0;
|
|
106
|
+
padding-left: 20px;
|
|
88
107
|
}
|
|
89
108
|
|
|
90
|
-
|
|
91
|
-
|
|
109
|
+
.page {
|
|
110
|
+
width: 70vw;
|
|
111
|
+
max-width: 1200px;
|
|
112
|
+
margin: 0 auto;
|
|
113
|
+
background: linear-gradient(90deg, rgba(24, 182, 246, 0.6) 0%, rgba(172, 127, 244, 0.6) 100%);
|
|
114
|
+
overflow: hidden;
|
|
115
|
+
border-radius: 6px;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.container {
|
|
119
|
+
padding: 30px 70px;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.container.center {
|
|
92
123
|
text-align: center;
|
|
93
|
-
font-size: 0.8em;
|
|
94
124
|
}
|
|
95
125
|
|
|
96
|
-
|
|
97
|
-
|
|
126
|
+
.container.mh-300 {
|
|
127
|
+
min-height: 300px;
|
|
98
128
|
}
|
|
99
129
|
|
|
100
|
-
|
|
101
|
-
|
|
130
|
+
.topics {
|
|
131
|
+
display: grid;
|
|
132
|
+
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
133
|
+
gap: 20px;
|
|
102
134
|
}
|
|
103
135
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
padding: 14px 20px 10px;
|
|
136
|
+
/* used icon pack: https://www.svgrepo.com/collection/phosphor-thin-icons */
|
|
137
|
+
.icon:before {
|
|
138
|
+
width: 18px;
|
|
139
|
+
height: 18px;
|
|
140
|
+
content: '';
|
|
141
|
+
display: inline-block;
|
|
142
|
+
margin-right: 5px;
|
|
143
|
+
position: relative;
|
|
144
|
+
top: 2px;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.icon-cli:before {
|
|
148
|
+
background-image: url("data:image/svg+xml,%3Csvg fill='%23000000' width='20px' height='20px' viewBox='0 0 256 256' id='Flat' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M122.499 124.87646a4.00053 4.00053 0 0 1 0 6.24708l-40 32a4.0002 4.0002 0 0 1-4.998-6.24708L113.59668 128 77.501 99.12354a4.0002 4.0002 0 0 1 4.998-6.24708ZM175.99414 156h-40a4 4 0 0 0 0 8h40a4 4 0 1 0 0-8ZM228 56.48535v143.0293A12.49909 12.49909 0 0 1 215.51465 212H40.48535A12.49909 12.49909 0 0 1 28 199.51465V56.48535A12.49909 12.49909 0 0 1 40.48535 44h175.0293A12.49909 12.49909 0 0 1 228 56.48535Zm-8 0A4.49023 4.49023 0 0 0 215.51465 52H40.48535A4.49023 4.49023 0 0 0 36 56.48535v143.0293A4.49023 4.49023 0 0 0 40.48535 204h175.0293A4.49023 4.49023 0 0 0 220 199.51465Z'/%3E%3C/svg%3E");
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.icon-apps:before {
|
|
152
|
+
background-image: url("data:image/svg+xml,%3Csvg fill='%23000000' width='20px' height='20px' viewBox='0 0 256 256' id='Flat' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M216 44.00586H40a12.01375 12.01375 0 0 0-12 12v144a12.01375 12.01375 0 0 0 12 12H216a12.01375 12.01375 0 0 0 12-12v-144A12.01375 12.01375 0 0 0 216 44.00586Zm4 156a4.00458 4.00458 0 0 1-4 4H40a4.00458 4.00458 0 0 1-4-4v-144a4.00458 4.00458 0 0 1 4-4H216a4.00458 4.00458 0 0 1 4 4Zm-144-116a8 8 0 1 1-8-8A7.99977 7.99977 0 0 1 76 84.00586Zm40 0a8 8 0 1 1-8-8A7.99977 7.99977 0 0 1 116 84.00586Z'/%3E%3C/svg%3E");
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.icon-community:before {
|
|
156
|
+
background-image: url("data:image/svg+xml,%3Csvg fill='%23000000' width='20px' height='20px' viewBox='0 0 256 256' id='Flat' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M246.40381 143.19434a4.00061 4.00061 0 0 1-5.60108-.7959A55.57857 55.57857 0 0 0 196 120a4 4 0 0 1 0-8 28 28 0 1 0-27.50732-33.26074 4.00013 4.00013 0 0 1-7.85987-1.49219 36.00191 36.00191 0 1 1 54.06494 37.50513 63.58068 63.58068 0 0 1 32.50147 22.84155A3.99993 3.99993 0 0 1 246.40381 143.19434Zm-57.24268 71.05273a3.9998 3.9998 0 1 1-7.1914 3.50391 60.02582 60.02582 0 0 0-107.93946 0 3.9998 3.9998 0 1 1-7.1914-3.50391 67.56008 67.56008 0 0 1 40.90625-35.20581 44 44 0 1 1 40.50976 0A67.56139 67.56139 0 0 1 189.16113 214.24707ZM128 176a36 36 0 1 0-36-36A36.04061 36.04061 0 0 0 128 176ZM60 112A28 28 0 1 1 87.50732 78.73828a3.99989 3.99989 0 1 0 7.85938-1.49219A36.00177 36.00177 0 1 0 41.30225 114.7522 63.5829 63.5829 0 0 0 8.79883 137.5957a4 4 0 1 0 6.39648 4.80469A55.58072 55.58072 0 0 1 60 120a4 4 0 0 0 0-8Z'/%3E%3C/svg%3E");
|
|
126
157
|
}
|
|
@@ -17,6 +17,8 @@ export default component$(() => {
|
|
|
17
17
|
<head>
|
|
18
18
|
<meta charSet="utf-8" />
|
|
19
19
|
<link rel="manifest" href="/manifest.json" />
|
|
20
|
+
{/* REMOVE THIS LINE BELOW IF YOUR APP DOES NOT LIKE CONFETTI 🤓 */}
|
|
21
|
+
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.5.1/dist/confetti.browser.min.js"></script>
|
|
20
22
|
<RouterHead />
|
|
21
23
|
</head>
|
|
22
24
|
<body lang="en">
|
|
@@ -20,36 +20,38 @@ export default component$(() => {
|
|
|
20
20
|
});
|
|
21
21
|
|
|
22
22
|
return (
|
|
23
|
-
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
23
|
+
<div class="section">
|
|
24
|
+
<div class="container center">
|
|
25
|
+
<input
|
|
26
|
+
type="range"
|
|
27
|
+
value={state.number}
|
|
28
|
+
max={50}
|
|
29
|
+
onInput$={(ev) => {
|
|
30
|
+
state.number = (ev.target as HTMLInputElement).valueAsNumber;
|
|
31
|
+
}}
|
|
32
|
+
/>
|
|
33
|
+
<div
|
|
34
|
+
style={{
|
|
35
|
+
'--state': `${state.count * 0.1}`,
|
|
36
|
+
}}
|
|
37
|
+
class={{
|
|
38
|
+
host: true,
|
|
39
|
+
pride: loc.query.get('pride') === 'true',
|
|
40
|
+
}}
|
|
41
|
+
>
|
|
42
|
+
{Array.from({ length: state.number }, (_, i) => (
|
|
43
|
+
<div
|
|
44
|
+
key={i}
|
|
45
|
+
class={{
|
|
46
|
+
square: true,
|
|
47
|
+
odd: i % 2 === 0,
|
|
48
|
+
}}
|
|
49
|
+
style={{ '--index': `${i + 1}` }}
|
|
50
|
+
/>
|
|
51
|
+
)).reverse()}
|
|
52
|
+
</div>
|
|
51
53
|
</div>
|
|
52
|
-
|
|
54
|
+
</div>
|
|
53
55
|
);
|
|
54
56
|
});
|
|
55
57
|
|