create-qwik 0.0.108 → 0.0.109
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/README.md +7 -19
- package/create-qwik.cjs +3 -0
- package/index.cjs +121 -0
- package/package.json +11 -7
- package/starters/apps/base/.prettierignore +6 -0
- package/starters/apps/base/README.md +41 -16
- package/starters/apps/base/gitignore +4 -6
- package/starters/apps/base/package.json +20 -23
- package/starters/apps/base/public/favicon.svg +1 -0
- package/starters/apps/base/src/entry.preview.tsx +6 -0
- package/starters/apps/base/src/entry.ssr.tsx +7 -5
- package/starters/apps/base/src/routes/service-worker.ts +9 -0
- package/starters/apps/base/tsconfig.json +5 -4
- package/starters/apps/base/vite.config.ts +3 -6
- package/starters/apps/blank/package.json +2 -15
- package/starters/apps/blank/src/components/header/header.css +37 -0
- package/starters/apps/blank/src/components/header/header.tsx +34 -0
- package/starters/apps/blank/src/components/icons/qwik.tsx +32 -0
- package/starters/apps/blank/src/components/router-head/router-head.tsx +43 -0
- package/starters/apps/blank/src/global.css +70 -3
- package/starters/apps/blank/src/root.tsx +17 -9
- package/starters/apps/blank/src/routes/index.tsx +81 -0
- package/starters/apps/{qwik-city → blank}/src/routes/layout.tsx +4 -6
- package/starters/apps/documentation-site/package.json +9 -0
- package/starters/apps/{qwik-city → documentation-site}/src/components/breadcrumbs/breadcrumbs.css +0 -0
- package/starters/apps/{qwik-city → documentation-site}/src/components/breadcrumbs/breadcrumbs.tsx +0 -0
- package/starters/apps/{qwik-city → documentation-site}/src/components/footer/footer.css +1 -1
- package/starters/apps/{qwik-city → documentation-site}/src/components/footer/footer.tsx +13 -6
- package/starters/apps/documentation-site/src/components/header/header.css +34 -0
- package/starters/apps/documentation-site/src/components/header/header.tsx +26 -0
- package/starters/apps/documentation-site/src/components/icons/qwik.tsx +20 -0
- package/starters/apps/{qwik-city → documentation-site}/src/components/menu/menu.css +0 -0
- package/starters/apps/{qwik-city → documentation-site}/src/components/menu/menu.tsx +5 -5
- package/starters/apps/documentation-site/src/components/on-this-page/on-this-page.css +33 -0
- package/starters/apps/documentation-site/src/components/on-this-page/on-this-page.tsx +62 -0
- package/starters/apps/documentation-site/src/components/router-head/router-head.tsx +43 -0
- package/starters/apps/documentation-site/src/global.css +66 -0
- package/starters/apps/documentation-site/src/root.tsx +26 -0
- package/starters/apps/documentation-site/src/routes/about-us/index.md +15 -0
- package/starters/apps/documentation-site/src/routes/docs/advanced/index.md +11 -0
- package/starters/apps/documentation-site/src/routes/docs/docs.css +22 -0
- package/starters/apps/documentation-site/src/routes/docs/getting-started/index.md +13 -0
- package/starters/apps/documentation-site/src/routes/docs/index.md +22 -0
- package/starters/apps/documentation-site/src/routes/docs/layout.tsx +25 -0
- package/starters/apps/documentation-site/src/routes/docs/menu.md +21 -0
- package/starters/apps/documentation-site/src/routes/index.tsx +89 -0
- package/starters/apps/documentation-site/src/routes/layout.tsx +15 -0
- package/starters/apps/library/package.json +1 -0
- package/starters/apps/{qwik-city → library}/tsconfig.json +1 -4
- package/starters/apps/library/vite.config.ts +1 -6
- package/create-qwik +0 -107
- package/index.js +0 -22
- package/starters/apps/base/public/favicon.ico +0 -0
- package/starters/apps/base/src/root.tsx +0 -14
- package/starters/apps/blank/src/components/app/app.tsx +0 -54
- package/starters/apps/blank/src/components/logo/logo.tsx +0 -16
- package/starters/apps/blank/src/entry.express.tsx +0 -59
- package/starters/apps/blank/src/entry.ssr.tsx +0 -15
- package/starters/apps/perf.prod/package.json +0 -22
- package/starters/apps/perf.prod/src/components/app/app.tsx +0 -189
- package/starters/apps/perf.prod/src/entry.express.tsx +0 -59
- package/starters/apps/perf.prod/src/entry.ssr.tsx +0 -15
- package/starters/apps/perf.prod/src/global.css +0 -3
- package/starters/apps/perf.prod/src/root.tsx +0 -18
- package/starters/apps/qwik-city/package.json +0 -19
- package/starters/apps/qwik-city/public/_headers +0 -2
- package/starters/apps/qwik-city/public/favicon.ico +0 -0
- package/starters/apps/qwik-city/public/favicons/android-chrome-192x192.png +0 -0
- package/starters/apps/qwik-city/public/favicons/android-chrome-256x256.png +0 -0
- package/starters/apps/qwik-city/public/favicons/apple-touch-icon.png +0 -0
- package/starters/apps/qwik-city/public/favicons/favicon.svg +0 -1
- package/starters/apps/qwik-city/public/logos/qwik-logo.svg +0 -1
- package/starters/apps/qwik-city/public/logos/qwik.svg +0 -1
- package/starters/apps/qwik-city/src/components/counter/counter.tsx +0 -19
- package/starters/apps/qwik-city/src/components/head/analytics.tsx +0 -13
- package/starters/apps/qwik-city/src/components/head/head.tsx +0 -34
- package/starters/apps/qwik-city/src/components/head/social.tsx +0 -10
- package/starters/apps/qwik-city/src/components/header/header.css +0 -46
- package/starters/apps/qwik-city/src/components/header/header.tsx +0 -36
- package/starters/apps/qwik-city/src/global.css +0 -24
- package/starters/apps/qwik-city/src/root.tsx +0 -16
- package/starters/apps/qwik-city/src/routes/about-us/index.tsx +0 -17
- package/starters/apps/qwik-city/src/routes/api/[org]/[user].json/index.ts +0 -15
- package/starters/apps/qwik-city/src/routes/api/api.css +0 -14
- package/starters/apps/qwik-city/src/routes/api/data.json/index.ts +0 -9
- package/starters/apps/qwik-city/src/routes/api/index@api.tsx +0 -34
- package/starters/apps/qwik-city/src/routes/api/layout-api.tsx +0 -37
- package/starters/apps/qwik-city/src/routes/blog/[...slug]/index.tsx +0 -36
- package/starters/apps/qwik-city/src/routes/blog/index.md +0 -7
- package/starters/apps/qwik-city/src/routes/blog/layout.tsx +0 -21
- package/starters/apps/qwik-city/src/routes/dashboard/dashboard.css +0 -14
- package/starters/apps/qwik-city/src/routes/dashboard/index.tsx +0 -15
- package/starters/apps/qwik-city/src/routes/dashboard/layout!.tsx +0 -44
- package/starters/apps/qwik-city/src/routes/dashboard/profile/index.tsx +0 -15
- package/starters/apps/qwik-city/src/routes/dashboard/settings/index.tsx +0 -15
- package/starters/apps/qwik-city/src/routes/docs/[category]/[id]/index.tsx +0 -23
- package/starters/apps/qwik-city/src/routes/docs/docs.css +0 -10
- package/starters/apps/qwik-city/src/routes/docs/getting-started/index.md +0 -44
- package/starters/apps/qwik-city/src/routes/docs/index.tsx +0 -14
- package/starters/apps/qwik-city/src/routes/docs/layout!.tsx +0 -31
- package/starters/apps/qwik-city/src/routes/docs/menu.md +0 -11
- package/starters/apps/qwik-city/src/routes/docs/overview/index.md +0 -7
- package/starters/apps/qwik-city/src/routes/index.tsx +0 -16
- package/starters/apps/qwik-city/src/routes/products/[id]/index.tsx +0 -123
- package/starters/apps/qwik-city/vite.config.ts +0 -17
- package/starters/features/prettier/.prettierignore +0 -23
- package/starters/features/prettier/package.json +0 -10
- package/starters/features/react/package.json +0 -26
- package/starters/features/react/src/entry.ssr.tsx +0 -11
- package/starters/features/react/src/react/app.tsx +0 -14
- package/starters/features/tailwindcss/package.json +0 -8
- package/starters/features/tailwindcss/postcss.config.cjs +0 -6
- package/starters/features/tailwindcss/src/global.css +0 -3
- package/starters/features/tailwindcss/tailwind.config.cjs +0 -7
- package/starters/servers/cloudflare-pages/.node-version +0 -1
- package/starters/servers/cloudflare-pages/README.md +0 -17
- package/starters/servers/cloudflare-pages/functions/[[path]].ts +0 -5
- package/starters/servers/cloudflare-pages/package.json +0 -18
- package/starters/servers/cloudflare-pages/public/_headers +0 -2
- package/starters/servers/cloudflare-pages/src/entry.cloudflare.tsx +0 -4
- package/starters/servers/express/README.md +0 -9
- package/starters/servers/express/package.json +0 -11
- package/starters/servers/express/src/entry.express.tsx +0 -31
- package/starters/servers/netlify-edge/.node-version +0 -1
- package/starters/servers/netlify-edge/README.md +0 -39
- package/starters/servers/netlify-edge/netlify.toml +0 -10
- package/starters/servers/netlify-edge/package.json +0 -19
- package/starters/servers/netlify-edge/public/_headers +0 -2
- package/starters/servers/netlify-edge/src/entry.netlify.ts +0 -6
- package/starters/servers/netlify-edge/tsconfig.json +0 -17
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import { component$, useStore } from '@builder.io/qwik';
|
|
2
|
-
|
|
3
|
-
let idCounter = 1;
|
|
4
|
-
const adjectives = [
|
|
5
|
-
'pretty',
|
|
6
|
-
'large',
|
|
7
|
-
'big',
|
|
8
|
-
'small',
|
|
9
|
-
'tall',
|
|
10
|
-
'short',
|
|
11
|
-
'long',
|
|
12
|
-
'handsome',
|
|
13
|
-
'plain',
|
|
14
|
-
'quaint',
|
|
15
|
-
'clean',
|
|
16
|
-
'elegant',
|
|
17
|
-
'easy',
|
|
18
|
-
'angry',
|
|
19
|
-
'crazy',
|
|
20
|
-
'helpful',
|
|
21
|
-
'mushy',
|
|
22
|
-
'odd',
|
|
23
|
-
'unsightly',
|
|
24
|
-
'adorable',
|
|
25
|
-
'important',
|
|
26
|
-
'inexpensive',
|
|
27
|
-
'cheap',
|
|
28
|
-
'expensive',
|
|
29
|
-
'fancy',
|
|
30
|
-
],
|
|
31
|
-
colours = [
|
|
32
|
-
'red',
|
|
33
|
-
'yellow',
|
|
34
|
-
'blue',
|
|
35
|
-
'green',
|
|
36
|
-
'pink',
|
|
37
|
-
'brown',
|
|
38
|
-
'purple',
|
|
39
|
-
'brown',
|
|
40
|
-
'white',
|
|
41
|
-
'black',
|
|
42
|
-
'orange',
|
|
43
|
-
],
|
|
44
|
-
nouns = [
|
|
45
|
-
'table',
|
|
46
|
-
'chair',
|
|
47
|
-
'house',
|
|
48
|
-
'bbq',
|
|
49
|
-
'desk',
|
|
50
|
-
'car',
|
|
51
|
-
'pony',
|
|
52
|
-
'cookie',
|
|
53
|
-
'sandwich',
|
|
54
|
-
'burger',
|
|
55
|
-
'pizza',
|
|
56
|
-
'mouse',
|
|
57
|
-
'keyboard',
|
|
58
|
-
];
|
|
59
|
-
|
|
60
|
-
function _random(max: number) {
|
|
61
|
-
return Math.round(Math.random() * 1000) % max;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export function buildData(count: number) {
|
|
65
|
-
const data = new Array(count);
|
|
66
|
-
for (let i = 0; i < count; i++) {
|
|
67
|
-
data[i] = {
|
|
68
|
-
id: idCounter++,
|
|
69
|
-
label: `${adjectives[_random(adjectives.length)]} ${colours[_random(colours.length)]} ${
|
|
70
|
-
nouns[_random(nouns.length)]
|
|
71
|
-
}`,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
return data;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
type BenchState = {
|
|
78
|
-
data: Array<{ id: number; label: string }>;
|
|
79
|
-
selected: number | null;
|
|
80
|
-
};
|
|
81
|
-
export const App = component$(() => {
|
|
82
|
-
const state = useStore<BenchState>({ data: [], selected: null });
|
|
83
|
-
return (
|
|
84
|
-
<div class="container">
|
|
85
|
-
<div class="jumbotron">
|
|
86
|
-
<div class="row">
|
|
87
|
-
<div class="col-md-6">
|
|
88
|
-
<h1>Qwik Keyed</h1>
|
|
89
|
-
</div>
|
|
90
|
-
<div class="col-md-6">
|
|
91
|
-
<div class="row">
|
|
92
|
-
<div class="col-sm-6 smallpad">
|
|
93
|
-
<button
|
|
94
|
-
id="run"
|
|
95
|
-
class="btn btn-primary btn-block"
|
|
96
|
-
type="button"
|
|
97
|
-
onClick$={() => (state.data = buildData(1000))}
|
|
98
|
-
>
|
|
99
|
-
Create 1,000 rows
|
|
100
|
-
</button>
|
|
101
|
-
<button
|
|
102
|
-
id="runlots"
|
|
103
|
-
class="btn btn-primary btn-block"
|
|
104
|
-
type="button"
|
|
105
|
-
onClick$={() => (state.data = buildData(10000))}
|
|
106
|
-
>
|
|
107
|
-
Create 10,000 rows
|
|
108
|
-
</button>
|
|
109
|
-
<button
|
|
110
|
-
id="add"
|
|
111
|
-
class="btn btn-primary btn-block"
|
|
112
|
-
type="button"
|
|
113
|
-
onClick$={() => (state.data = state.data.concat(buildData(1000)))}
|
|
114
|
-
>
|
|
115
|
-
Append 1,000 rows
|
|
116
|
-
</button>
|
|
117
|
-
<button
|
|
118
|
-
id="update"
|
|
119
|
-
class="btn btn-primary btn-block"
|
|
120
|
-
type="button"
|
|
121
|
-
onClick$={() => {
|
|
122
|
-
for (let i = 0, d = state.data, len = d.length; i < len; i += 10) {
|
|
123
|
-
d[i].label += ' !!!';
|
|
124
|
-
}
|
|
125
|
-
}}
|
|
126
|
-
>
|
|
127
|
-
Update every 10th row
|
|
128
|
-
</button>
|
|
129
|
-
<button
|
|
130
|
-
id="clear"
|
|
131
|
-
class="btn btn-primary btn-block"
|
|
132
|
-
type="button"
|
|
133
|
-
onClick$={() => (state.data = [])}
|
|
134
|
-
>
|
|
135
|
-
Clear
|
|
136
|
-
</button>
|
|
137
|
-
<button
|
|
138
|
-
id="swaprows"
|
|
139
|
-
class="btn btn-primary btn-block"
|
|
140
|
-
type="button"
|
|
141
|
-
onClick$={() => {
|
|
142
|
-
const d = state.data.slice();
|
|
143
|
-
if (d.length > 998) {
|
|
144
|
-
const tmp = d[1];
|
|
145
|
-
d[1] = d[998];
|
|
146
|
-
d[998] = tmp;
|
|
147
|
-
state.data = d;
|
|
148
|
-
}
|
|
149
|
-
}}
|
|
150
|
-
>
|
|
151
|
-
Swap Rows
|
|
152
|
-
</button>
|
|
153
|
-
</div>
|
|
154
|
-
</div>
|
|
155
|
-
</div>
|
|
156
|
-
</div>
|
|
157
|
-
</div>
|
|
158
|
-
<table class="table table-hover table-striped test-data">
|
|
159
|
-
<tbody>
|
|
160
|
-
{state.data.map(({ id, label }) => {
|
|
161
|
-
return (
|
|
162
|
-
<tr key={id} class={id === state.selected ? 'danger' : ''}>
|
|
163
|
-
<td class="col-md-1">{id}</td>
|
|
164
|
-
<td class="col-md-4">
|
|
165
|
-
<a onClick$={() => alert(label)}>{label}</a>
|
|
166
|
-
</td>
|
|
167
|
-
<td class="col-md-1">
|
|
168
|
-
<a
|
|
169
|
-
// onClick$={() => {
|
|
170
|
-
// const d = state.data;
|
|
171
|
-
// d.splice(
|
|
172
|
-
// d.findIndex((d) => d.id === id),
|
|
173
|
-
// 1
|
|
174
|
-
// );
|
|
175
|
-
// }}
|
|
176
|
-
>
|
|
177
|
-
<span class="glyphicon glyphicon-remove" ariaHidden="true" />
|
|
178
|
-
</a>
|
|
179
|
-
</td>
|
|
180
|
-
<td class="col-md-6" />
|
|
181
|
-
</tr>
|
|
182
|
-
);
|
|
183
|
-
})}
|
|
184
|
-
</tbody>
|
|
185
|
-
</table>
|
|
186
|
-
<span class="preloadicon glyphicon glyphicon-remove" ariaHidden="true" />
|
|
187
|
-
</div>
|
|
188
|
-
);
|
|
189
|
-
});
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import express from 'express';
|
|
2
|
-
import { join } from 'path';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import render from './entry.ssr';
|
|
5
|
-
|
|
6
|
-
const __dirname = fileURLToPath(new URL('.', import.meta.url));
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Create an express server
|
|
10
|
-
* https://expressjs.com/
|
|
11
|
-
*/
|
|
12
|
-
const app = express();
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Serve static client build files,
|
|
16
|
-
* hashed filenames, immutable cache-control
|
|
17
|
-
*/
|
|
18
|
-
app.use(
|
|
19
|
-
'/build',
|
|
20
|
-
express.static(join(__dirname, '..', 'dist', 'build'), {
|
|
21
|
-
immutable: true,
|
|
22
|
-
maxAge: '1y',
|
|
23
|
-
})
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Serve static public files at the root
|
|
28
|
-
*/
|
|
29
|
-
app.use(express.static(join(__dirname, '..', 'dist'), { index: false }));
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Server-Side Render Qwik application
|
|
33
|
-
*/
|
|
34
|
-
app.get('/*', async (req, res, next) => {
|
|
35
|
-
try {
|
|
36
|
-
// Render the Root component to a string
|
|
37
|
-
const result = await render({
|
|
38
|
-
stream: res,
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
// respond with SSR'd HTML
|
|
42
|
-
if ('html' in result) {
|
|
43
|
-
res.send((result as any).html);
|
|
44
|
-
} else {
|
|
45
|
-
res.end();
|
|
46
|
-
}
|
|
47
|
-
} catch (e) {
|
|
48
|
-
// Error while server-side rendering
|
|
49
|
-
next(e);
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Start the express server
|
|
55
|
-
*/
|
|
56
|
-
app.listen(8080, () => {
|
|
57
|
-
/* eslint-disable */
|
|
58
|
-
console.log(`http://localhost:8080/`);
|
|
59
|
-
});
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { renderToStream, RenderToStreamOptions } from '@builder.io/qwik/server';
|
|
2
|
-
import { manifest } from '@qwik-client-manifest';
|
|
3
|
-
import Root from './root';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Server-Side Render method to be called by a server.
|
|
7
|
-
*/
|
|
8
|
-
export default function (opts: RenderToStreamOptions) {
|
|
9
|
-
// Render the Root component to a string
|
|
10
|
-
// Pass in the manifest that was generated from the client build
|
|
11
|
-
return renderToStream(<Root />, {
|
|
12
|
-
manifest,
|
|
13
|
-
...opts,
|
|
14
|
-
});
|
|
15
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { App } from './components/app/app';
|
|
2
|
-
|
|
3
|
-
import './global.css';
|
|
4
|
-
|
|
5
|
-
export default () => {
|
|
6
|
-
return (
|
|
7
|
-
<html>
|
|
8
|
-
<head>
|
|
9
|
-
<meta charSet="utf-8" />
|
|
10
|
-
<title>Qwik Blank App</title>
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
12
|
-
</head>
|
|
13
|
-
<body>
|
|
14
|
-
<App />
|
|
15
|
-
</body>
|
|
16
|
-
</html>
|
|
17
|
-
);
|
|
18
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"description": "File based routing and MDX support",
|
|
3
|
-
"__qwik__": {
|
|
4
|
-
"priority": 1,
|
|
5
|
-
"selectServer": true,
|
|
6
|
-
"featureOptions": [
|
|
7
|
-
"prettier",
|
|
8
|
-
"tailwindcss"
|
|
9
|
-
],
|
|
10
|
-
"featureEnabled": [
|
|
11
|
-
"prettier"
|
|
12
|
-
]
|
|
13
|
-
},
|
|
14
|
-
"type": "module",
|
|
15
|
-
"devDependencies": {
|
|
16
|
-
"@builder.io/qwik-city": "0.0.108",
|
|
17
|
-
"vite-tsconfig-paths": "3.5.0"
|
|
18
|
-
}
|
|
19
|
-
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg viewBox="0 0 120 126" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m78.457 103.898 10.263-6.147 20.107-35.456-31.115 36.34.745 5.263Z" fill="url(#a)"/><path d="m105.901 40.086-2.009-3.834-.788-1.494-.082.08-10.53-19.176c-2.642-4.844-7.68-7.87-13.236-7.934l-10.227.084L83.8 54.114l-9.772 9.516 3.64 35.177 30.088-34.27c4.081-4.726 4.882-11.457 2.007-16.986l-3.861-7.465Z" fill="url(#b)"/><path d="M89.087 36.761 71.475 7.84 41.08 7.291c-5.403-.062-10.434 2.68-13.269 7.288L9.72 48.734l31.886-38.036 39.928 45.744 7.464-7.597c3.425-3.321 2.26-7.977.09-12.083Z" fill="url(#c)"/><path d="m46.942 46.144-5.409-35.267-29.835 35.905C6.67 51.65 5.622 59.288 9.08 65.336l17.53 30.479c2.673 4.676 7.65 7.577 13.062 7.639l17.516.2-20.983-47.58 10.737-9.93Z" fill="url(#d)"/><path d="m77.713 98.612-41.54-42.776-5.382 5.135c-4.41 4.18-4.53 11.148-.297 15.467l17.942 27.076 28.816.37.46-5.272Z" fill="url(#e)"/><path d="m48.492 103.508 29.486-4.731 19.457 20.175-48.943-15.444Z" fill="url(#f)"/><path d="m77.666 98.85 11.081-1.41 9.828 20.359c.432.84-.701 1.622-1.376.939L77.666 98.85Z" fill="url(#g)"/><path d="m81.58 56.258-39.982-45.46 5.099 35.06-10.614 9.879 41.51 42.978-3.098-35.038 7.085-7.42Z" fill="#fff"/><defs><linearGradient id="a" x1="77.887" y1="82.907" x2="108.576" y2="83.258" gradientUnits="userSpaceOnUse"><stop stop-color="#4340C4"/><stop offset=".118" stop-color="#4642C8"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="b" x1="68.506" y1="53.126" x2="111.514" y2="53.618" gradientUnits="userSpaceOnUse"><stop stop-color="#4340C4"/><stop offset=".74" stop-color="#534ADB"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="c" x1="9.915" y1="31.234" x2="91.26" y2="32.165" gradientUnits="userSpaceOnUse"><stop offset=".225" stop-color="#4340C4"/><stop offset=".598" stop-color="#4F48D5"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="d" x1="7.054" y1="56.764" x2="57.7" y2="57.344" gradientUnits="userSpaceOnUse"><stop stop-color="#0080FF"/><stop offset="1" stop-color="#00B9FF"/></linearGradient><linearGradient id="e" x1="27.277" y1="79.526" x2="77.92" y2="80.106" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0080FF"/><stop offset=".172" stop-color="#008BFF"/><stop offset=".473" stop-color="#00A7FF"/><stop offset=".629" stop-color="#00B9FF"/></linearGradient><linearGradient id="f" x1="48.431" y1="108.422" x2="97.545" y2="108.984" gradientUnits="userSpaceOnUse"><stop stop-color="#00B9FF"/><stop offset=".298" stop-color="#0080FF"/><stop offset=".601" stop-color="#2D67F1"/><stop offset=".858" stop-color="#4D55E8"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="g" x1="78.113" y1="108.259" x2="99.089" y2="108.499" gradientUnits="userSpaceOnUse"><stop stop-color="#4340C4"/><stop offset=".118" stop-color="#4642C8"/><stop offset="1" stop-color="#594EE4"/></linearGradient></defs></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg viewBox="0 0 120 126" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="m78.457 103.898 10.263-6.147 20.107-35.456-31.115 36.34.745 5.263Z" fill="url(#a)"/><path d="m105.901 40.086-2.009-3.834-.788-1.494-.082.08-10.53-19.176c-2.642-4.844-7.68-7.87-13.236-7.934l-10.227.084L83.8 54.114l-9.772 9.516 3.64 35.177 30.088-34.27c4.081-4.726 4.882-11.457 2.007-16.986l-3.861-7.465Z" fill="url(#b)"/><path d="M89.087 36.761 71.475 7.84 41.08 7.291c-5.403-.062-10.434 2.68-13.269 7.288L9.72 48.734l31.886-38.036 39.928 45.744 7.464-7.597c3.425-3.321 2.26-7.977.09-12.083Z" fill="url(#c)"/><path d="m46.942 46.144-5.409-35.267-29.835 35.905C6.67 51.65 5.622 59.288 9.08 65.336l17.53 30.479c2.673 4.676 7.65 7.577 13.062 7.639l17.516.2-20.983-47.58 10.737-9.93Z" fill="url(#d)"/><path d="m77.713 98.612-41.54-42.776-5.382 5.135c-4.41 4.18-4.53 11.148-.297 15.467l17.942 27.076 28.816.37.46-5.272Z" fill="url(#e)"/><path d="m48.492 103.508 29.486-4.731 19.457 20.175-48.943-15.444Z" fill="url(#f)"/><path d="m77.666 98.85 11.081-1.41 9.828 20.359c.432.84-.701 1.622-1.376.939L77.666 98.85Z" fill="url(#g)"/><path d="m81.58 56.258-39.982-45.46 5.099 35.06-10.614 9.879 41.51 42.978-3.098-35.038 7.085-7.42Z" fill="#fff"/><defs><linearGradient id="a" x1="77.887" y1="82.907" x2="108.576" y2="83.258" gradientUnits="userSpaceOnUse"><stop stop-color="#4340C4"/><stop offset=".118" stop-color="#4642C8"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="b" x1="68.506" y1="53.126" x2="111.514" y2="53.618" gradientUnits="userSpaceOnUse"><stop stop-color="#4340C4"/><stop offset=".74" stop-color="#534ADB"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="c" x1="9.915" y1="31.234" x2="91.26" y2="32.165" gradientUnits="userSpaceOnUse"><stop offset=".225" stop-color="#4340C4"/><stop offset=".598" stop-color="#4F48D5"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="d" x1="7.054" y1="56.764" x2="57.7" y2="57.344" gradientUnits="userSpaceOnUse"><stop stop-color="#0080FF"/><stop offset="1" stop-color="#00B9FF"/></linearGradient><linearGradient id="e" x1="27.277" y1="79.526" x2="77.92" y2="80.106" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0080FF"/><stop offset=".172" stop-color="#008BFF"/><stop offset=".473" stop-color="#00A7FF"/><stop offset=".629" stop-color="#00B9FF"/></linearGradient><linearGradient id="f" x1="48.431" y1="108.422" x2="97.545" y2="108.984" gradientUnits="userSpaceOnUse"><stop stop-color="#00B9FF"/><stop offset=".298" stop-color="#0080FF"/><stop offset=".601" stop-color="#2D67F1"/><stop offset=".858" stop-color="#4D55E8"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="g" x1="78.113" y1="108.259" x2="99.089" y2="108.499" gradientUnits="userSpaceOnUse"><stop stop-color="#4340C4"/><stop offset=".118" stop-color="#4642C8"/><stop offset="1" stop-color="#594EE4"/></linearGradient></defs></svg>
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 106 49"><path fill="#fff" d="m30.1 29.65 4.89 10.87a1.52 1.52 0 0 1-.31 1.71 1.59 1.59 0 0 1-1.71.37L17.8 37.71l12.3-8.06Z"/><path fill="#fff" d="m16.66 37.74 10.79-.1a6.08 6.08 0 0 0 5.24-3.1l5.3-9.4a6.08 6.08 0 0 0-.07-6.07l-5.48-9.29a6.09 6.09 0 0 0-5.3-2.99l-10.78.12a6.07 6.07 0 0 0-5.24 3.1l-5.3 9.38a6.09 6.09 0 0 0 .06 6.09l5.49 9.28a6.08 6.08 0 0 0 5.3 2.98Zm39.32-24.89a8.65 8.65 0 0 1 6.2 2.53 8.5 8.5 0 0 1 2.48 6.08 8.49 8.49 0 0 1-6.15 8.27c1.13.43 2.27.8 3.43 1.1 1.14.3 2.12.46 2.93.46v2.22c-.91 0-1.89-.16-2.95-.46-1.06-.3-2.1-.71-3.12-1.24a20.78 20.78 0 0 1-2.82-1.72 8.65 8.65 0 0 1-6.21-2.53 8.5 8.5 0 0 1-2.48-6.08 8.68 8.68 0 0 1 5.23-7.94 8.47 8.47 0 0 1 3.46-.7Zm0 2.16c-1.23 0-2.33.27-3.3.84a6.1 6.1 0 0 0-2.3 2.3 6.5 6.5 0 0 0-.83 3.31 6.3 6.3 0 0 0 6.43 6.46 6.2 6.2 0 0 0 5.59-3.15 6.4 6.4 0 0 0 .83-3.3 6.5 6.5 0 0 0-.84-3.32 6.1 6.1 0 0 0-2.28-2.3 6.41 6.41 0 0 0-3.3-.84Zm28.3 2.39-4.31 12.32h-1.25l-3.38-8.7-3.37 8.7h-1.25L66.4 17.4h2.4l2.75 8.65 3.22-8.65h1.13l3.22 8.65 2.74-8.65h2.4Zm5.68 0v12.32h-2.02V19.3H86v-1.9h3.96Zm-1.25-5.91c.48 0 .88.16 1.2.5a1.64 1.64 0 0 1 0 2.33c-.32.34-.72.52-1.2.52s-.88-.18-1.2-.52a1.67 1.67 0 0 1-.48-1.16 1.68 1.68 0 0 1 1.68-1.67Zm16.49 5.91-5.7 5.37 6.02 6.95h-2.56l-4.87-5.61-1.75 1.62v4h-2.02V11.97h2.02V23.4l6.14-6.02h2.73v.01Z"/><path fill="url(#a)" d="m27.48 36.45 2.97-1.78 5.82-10.26-9 10.52.2 1.52Z"/><path fill="url(#b)" d="m35.43 17.97-.58-1.1-.23-.44-.03.02-3.05-5.55a4.41 4.41 0 0 0-3.83-2.3l-2.96.03 4.28 13.4-2.83 2.76 1.05 10.19 8.71-9.93a4.41 4.41 0 0 0 .59-4.92l-1.12-2.16Z"/><path fill="url(#c)" d="m30.56 17.01-5.1-8.37-8.8-.16a4.44 4.44 0 0 0-3.85 2.1l-5.24 9.9 9.24-11.02 11.56 13.25 2.16-2.2c1-.96.66-2.31.03-3.5Z"/><path fill="url(#d)" d="M18.35 19.73 16.78 9.5 8.14 19.9a4.42 4.42 0 0 0-.76 5.38l5.08 8.82a4.41 4.41 0 0 0 3.78 2.21l5.07.06-6.07-13.78 3.1-2.87Z"/><path fill="url(#e)" d="M27.26 34.92 15.23 22.53l-1.56 1.5a3.14 3.14 0 0 0-.08 4.47l5.2 7.84 8.34.1.13-1.52Z"/><path fill="url(#f)" d="m18.8 36.34 8.53-1.37 5.64 5.84-14.17-4.47Z"/><path fill="url(#g)" d="m27.24 35 3.21-.42 2.85 5.9c.13.24-.2.47-.4.27l-5.66-5.76Z"/><path fill="#fff" d="M28.38 22.66 16.8 9.49l1.48 10.15-3.07 2.87 12.02 12.44-.9-10.15 2.05-2.14Z"/><defs><linearGradient id="a" x1="27.31" x2="36.2" y1="30.37" y2="30.48" gradientUnits="userSpaceOnUse"><stop stop-color="#4340C4"/><stop offset=".12" stop-color="#4642C8"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="b" x1="24.6" x2="37.05" y1="21.75" y2="21.89" gradientUnits="userSpaceOnUse"><stop stop-color="#4340C4"/><stop offset=".74" stop-color="#534ADB"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="c" x1="7.63" x2="31.19" y1="15.41" y2="15.68" gradientUnits="userSpaceOnUse"><stop offset=".23" stop-color="#4340C4"/><stop offset=".6" stop-color="#4F48D5"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="d" x1="6.8" x2="21.46" y1="22.8" y2="22.97" gradientUnits="userSpaceOnUse"><stop stop-color="#0080FF"/><stop offset="1" stop-color="#00B9FF"/></linearGradient><linearGradient id="e" x1="12.66" x2="27.32" y1="29.39" y2="29.56" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0080FF"/><stop offset=".17" stop-color="#008BFF"/><stop offset=".47" stop-color="#00A7FF"/><stop offset=".63" stop-color="#00B9FF"/></linearGradient><linearGradient id="f" x1="18.78" x2="33" y1="37.76" y2="37.93" gradientUnits="userSpaceOnUse"><stop stop-color="#00B9FF"/><stop offset=".3" stop-color="#0080FF"/><stop offset=".6" stop-color="#2D67F1"/><stop offset=".86" stop-color="#4D55E8"/><stop offset="1" stop-color="#594EE4"/></linearGradient><linearGradient id="g" x1="27.37" x2="33.45" y1="37.72" y2="37.79" gradientUnits="userSpaceOnUse"><stop stop-color="#4340C4"/><stop offset=".12" stop-color="#4642C8"/><stop offset="1" stop-color="#594EE4"/></linearGradient></defs></svg>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { component$, useStyles$, useStore } from '@builder.io/qwik';
|
|
2
|
-
|
|
3
|
-
export const Counter = component$(() => {
|
|
4
|
-
const store = useStore({ count: 0 });
|
|
5
|
-
useStyles$(`
|
|
6
|
-
.counter {
|
|
7
|
-
border: 3px solid #1474ff;
|
|
8
|
-
padding: 10px;
|
|
9
|
-
border-radius: 10px;
|
|
10
|
-
color: #1474ff;
|
|
11
|
-
}
|
|
12
|
-
`);
|
|
13
|
-
|
|
14
|
-
return (
|
|
15
|
-
<button class="counter" type="button" onClick$={() => store.count++}>
|
|
16
|
-
Increment {store.count}
|
|
17
|
-
</button>
|
|
18
|
-
);
|
|
19
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { RouteLocation } from '@builder.io/qwik-city';
|
|
2
|
-
|
|
3
|
-
interface AnalyticsProps {
|
|
4
|
-
loc: RouteLocation;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export const Analytics = ({ loc }: AnalyticsProps) => {
|
|
8
|
-
return (
|
|
9
|
-
<>
|
|
10
|
-
<script dangerouslySetInnerHTML={`console.log("🧨 Analytics! ${loc.pathname}");`} />
|
|
11
|
-
</>
|
|
12
|
-
);
|
|
13
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { component$ } from '@builder.io/qwik';
|
|
2
|
-
import { useDocumentHead, useLocation } from '@builder.io/qwik-city';
|
|
3
|
-
import { Analytics } from './analytics';
|
|
4
|
-
import { Social } from './social';
|
|
5
|
-
|
|
6
|
-
export const Head = component$(() => {
|
|
7
|
-
const head = useDocumentHead();
|
|
8
|
-
const loc = useLocation();
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<head>
|
|
12
|
-
<meta charSet="utf-8" />
|
|
13
|
-
|
|
14
|
-
<title>{head.title ? `${head.title} - Qwik` : `Qwik`}</title>
|
|
15
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
16
|
-
<link rel="canonical" href={loc.href} />
|
|
17
|
-
|
|
18
|
-
{head.meta.map((m) => (
|
|
19
|
-
<meta {...m} />
|
|
20
|
-
))}
|
|
21
|
-
|
|
22
|
-
{head.links.map((l) => (
|
|
23
|
-
<link {...l} />
|
|
24
|
-
))}
|
|
25
|
-
|
|
26
|
-
{head.styles.map((s) => (
|
|
27
|
-
<style {...s.props} dangerouslySetInnerHTML={s.style} />
|
|
28
|
-
))}
|
|
29
|
-
|
|
30
|
-
<Social />
|
|
31
|
-
<Analytics loc={loc} />
|
|
32
|
-
</head>
|
|
33
|
-
);
|
|
34
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export const Social = () => {
|
|
2
|
-
return (
|
|
3
|
-
<>
|
|
4
|
-
<meta property="og:site_name" content="Qwik" />
|
|
5
|
-
<meta name="twitter:card" content="summary_large_image" />
|
|
6
|
-
<meta name="twitter:site" content="@QwikDev" />
|
|
7
|
-
<meta name="twitter:title" content="Qwik" />
|
|
8
|
-
</>
|
|
9
|
-
);
|
|
10
|
-
};
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
header {
|
|
2
|
-
background-color: #0093ee;
|
|
3
|
-
}
|
|
4
|
-
|
|
5
|
-
header .header-inner {
|
|
6
|
-
display: grid;
|
|
7
|
-
grid-template-columns: 1fr auto auto;
|
|
8
|
-
padding: 10px;
|
|
9
|
-
max-width: 800px;
|
|
10
|
-
margin: 0 auto;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.full-screen header .header-inner {
|
|
14
|
-
max-width: 100%;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
header a {
|
|
18
|
-
color: white;
|
|
19
|
-
text-decoration: none;
|
|
20
|
-
padding: 4px 8px;
|
|
21
|
-
margin-right: 5px;
|
|
22
|
-
border-radius: 4px;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
header a:hover {
|
|
26
|
-
background-color: #ffffff50;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
header .active {
|
|
30
|
-
background-color: #ffffff30;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.theme-toggle {
|
|
34
|
-
background: transparent;
|
|
35
|
-
width: 30px;
|
|
36
|
-
border: none;
|
|
37
|
-
cursor: pointer;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.theme-light .theme-toggle::before {
|
|
41
|
-
content: '☽';
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.theme-dark .theme-toggle::before {
|
|
45
|
-
content: '☀';
|
|
46
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { component$, useStyles$ } from '@builder.io/qwik';
|
|
2
|
-
import { useLocation } from '@builder.io/qwik-city';
|
|
3
|
-
import styles from './header.css?inline';
|
|
4
|
-
|
|
5
|
-
export default component$(() => {
|
|
6
|
-
useStyles$(styles);
|
|
7
|
-
|
|
8
|
-
const pathname = useLocation().pathname;
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<header>
|
|
12
|
-
<div class="header-inner">
|
|
13
|
-
<section class="logo">
|
|
14
|
-
<a href="/">Qwik City 🏙</a>
|
|
15
|
-
</section>
|
|
16
|
-
<nav>
|
|
17
|
-
<a href="/blog" class={{ active: pathname.startsWith('/blog') }}>
|
|
18
|
-
Blog
|
|
19
|
-
</a>
|
|
20
|
-
<a href="/docs" class={{ active: pathname.startsWith('/docs') }}>
|
|
21
|
-
Docs
|
|
22
|
-
</a>
|
|
23
|
-
<a href="/api" class={{ active: pathname.startsWith('/api') }}>
|
|
24
|
-
API
|
|
25
|
-
</a>
|
|
26
|
-
<a href="/products/hat" class={{ active: pathname.startsWith('/products') }}>
|
|
27
|
-
Products
|
|
28
|
-
</a>
|
|
29
|
-
<a href="/about-us" class={{ active: pathname.startsWith('/about-us') }}>
|
|
30
|
-
About Us
|
|
31
|
-
</a>
|
|
32
|
-
</nav>
|
|
33
|
-
</div>
|
|
34
|
-
</header>
|
|
35
|
-
);
|
|
36
|
-
});
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
body {
|
|
2
|
-
margin: 0;
|
|
3
|
-
padding: 0;
|
|
4
|
-
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',
|
|
5
|
-
sans-serif;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
main {
|
|
9
|
-
padding: 10px 20px;
|
|
10
|
-
max-width: 800px;
|
|
11
|
-
margin: 0 auto;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.full-screen main {
|
|
15
|
-
max-width: 100%;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
a {
|
|
19
|
-
color: #006eb3;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
a:hover {
|
|
23
|
-
text-decoration: none;
|
|
24
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { component$ } from '@builder.io/qwik';
|
|
2
|
-
import { QwikCity, RouterOutlet } from '@builder.io/qwik-city';
|
|
3
|
-
import { Head } from './components/head/head';
|
|
4
|
-
|
|
5
|
-
import './global.css';
|
|
6
|
-
|
|
7
|
-
export default component$(() => {
|
|
8
|
-
return (
|
|
9
|
-
<QwikCity>
|
|
10
|
-
<Head />
|
|
11
|
-
<body lang="en">
|
|
12
|
-
<RouterOutlet />
|
|
13
|
-
</body>
|
|
14
|
-
</QwikCity>
|
|
15
|
-
);
|
|
16
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { component$ } from '@builder.io/qwik';
|
|
2
|
-
import type { DocumentHead } from '@builder.io/qwik-city';
|
|
3
|
-
|
|
4
|
-
export default component$(() => {
|
|
5
|
-
return (
|
|
6
|
-
<div>
|
|
7
|
-
<h1>About Us</h1>
|
|
8
|
-
<p>
|
|
9
|
-
<a href="/">Home</a>
|
|
10
|
-
</p>
|
|
11
|
-
</div>
|
|
12
|
-
);
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
export const head: DocumentHead = {
|
|
16
|
-
title: 'About Us',
|
|
17
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { RequestHandler } from '@builder.io/qwik-city';
|
|
2
|
-
|
|
3
|
-
export const onGet: RequestHandler = ({ request, params }) => {
|
|
4
|
-
return {
|
|
5
|
-
timestamp: Date.now(),
|
|
6
|
-
method: request.method,
|
|
7
|
-
url: request.url,
|
|
8
|
-
params,
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export const onPost: RequestHandler = async ({ request, response }) => {
|
|
13
|
-
response.headers.set('Content-Type', 'text/plain');
|
|
14
|
-
return `HTTP Method: ${request.method}`;
|
|
15
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { component$, useClientEffect$, useStore } from '@builder.io/qwik';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Uses named layout `foo`
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export default component$(() => {
|
|
8
|
-
const store = useStore({ timestamp: '' });
|
|
9
|
-
|
|
10
|
-
useClientEffect$(async () => {
|
|
11
|
-
const url = `/api/builder.io/oss.json`;
|
|
12
|
-
const rsp = await fetch(url);
|
|
13
|
-
const data: any = await rsp.json();
|
|
14
|
-
|
|
15
|
-
store.timestamp = data.timestamp;
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<div>
|
|
20
|
-
<h1>Qwik City Test API!</h1>
|
|
21
|
-
|
|
22
|
-
<ul>
|
|
23
|
-
<li>
|
|
24
|
-
<a href="/api/builder.io/oss.json">/api/[org]/[user].json</a>
|
|
25
|
-
</li>
|
|
26
|
-
<li>
|
|
27
|
-
<a href="/api/data.json">/api/data.json</a>
|
|
28
|
-
</li>
|
|
29
|
-
</ul>
|
|
30
|
-
|
|
31
|
-
<p>Timestamp: {store.timestamp}</p>
|
|
32
|
-
</div>
|
|
33
|
-
);
|
|
34
|
-
});
|