@shopify/cli-hydrogen 5.1.1 → 5.2.0
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/dist/commands/hydrogen/build.js +10 -5
- package/dist/commands/hydrogen/check.js +1 -1
- package/dist/commands/hydrogen/codegen-unstable.js +3 -3
- package/dist/commands/hydrogen/dev.js +26 -17
- package/dist/commands/hydrogen/init.js +3 -0
- package/dist/commands/hydrogen/init.test.js +199 -51
- package/dist/commands/hydrogen/preview.js +4 -3
- package/dist/commands/hydrogen/setup.js +5 -2
- package/dist/commands/hydrogen/setup.test.js +62 -0
- package/dist/generator-templates/starter/app/components/Footer.tsx +1 -1
- package/dist/generator-templates/starter/app/components/Header.tsx +1 -1
- package/dist/generator-templates/starter/app/components/Search.tsx +3 -3
- package/dist/generator-templates/starter/app/root.tsx +24 -1
- package/dist/generator-templates/starter/app/routes/$.tsx +4 -0
- package/dist/generator-templates/starter/app/routes/_index.tsx +6 -2
- package/dist/generator-templates/starter/app/routes/account.$.tsx +1 -2
- package/dist/generator-templates/starter/app/routes/account.addresses.tsx +1 -1
- package/dist/generator-templates/starter/app/routes/account.orders._index.tsx +2 -7
- package/dist/generator-templates/starter/app/routes/account.profile.tsx +7 -2
- package/dist/generator-templates/starter/app/routes/account.tsx +4 -3
- package/dist/generator-templates/starter/app/routes/account_.activate.$id.$activationToken.tsx +6 -2
- package/dist/generator-templates/starter/app/routes/account_.login.tsx +6 -2
- package/dist/generator-templates/starter/app/routes/account_.logout.tsx +2 -6
- package/dist/generator-templates/starter/app/routes/blogs.$blogHandle.$articleHandle.tsx +1 -2
- package/dist/generator-templates/starter/app/routes/blogs.$blogHandle._index.tsx +1 -2
- package/dist/generator-templates/starter/app/routes/blogs._index.tsx +1 -2
- package/dist/generator-templates/starter/app/routes/cart.tsx +1 -2
- package/dist/generator-templates/starter/app/routes/collections.$handle.tsx +1 -2
- package/dist/generator-templates/starter/app/routes/pages.$handle.tsx +1 -2
- package/dist/generator-templates/starter/app/routes/policies.$handle.tsx +2 -3
- package/dist/generator-templates/starter/app/routes/products.$handle.tsx +23 -15
- package/dist/generator-templates/starter/app/routes/search.tsx +1 -2
- package/dist/generator-templates/starter/package.json +4 -4
- package/dist/generator-templates/starter/remix.config.js +1 -0
- package/dist/generator-templates/starter/storefrontapi.generated.d.ts +9 -9
- package/dist/lib/ast.js +9 -0
- package/dist/lib/check-version.test.js +1 -0
- package/dist/lib/codegen.js +17 -7
- package/dist/lib/environment-variables.js +15 -11
- package/dist/lib/file.test.js +4 -5
- package/dist/lib/find-port.js +9 -0
- package/dist/lib/flags.js +3 -2
- package/dist/lib/format-code.js +3 -0
- package/dist/lib/live-reload.js +62 -0
- package/dist/lib/log.js +6 -1
- package/dist/lib/mini-oxygen.js +28 -18
- package/dist/lib/missing-routes.js +17 -1
- package/dist/lib/onboarding/common.js +5 -0
- package/dist/lib/onboarding/local.js +21 -8
- package/dist/lib/onboarding/remote.js +8 -3
- package/dist/lib/remix-config.js +2 -0
- package/dist/lib/remix-version-check.test.js +1 -0
- package/dist/lib/setups/css/replacers.js +7 -4
- package/dist/lib/setups/i18n/replacers.js +7 -5
- package/dist/lib/setups/routes/generate.js +4 -1
- package/dist/lib/setups/routes/generate.test.js +10 -11
- package/dist/lib/template-downloader.js +4 -0
- package/dist/lib/transpile-ts.js +1 -0
- package/dist/lib/virtual-routes.js +4 -1
- package/dist/virtual-routes/components/HydrogenLogoBaseBW.jsx +26 -4
- package/dist/virtual-routes/components/HydrogenLogoBaseColor.jsx +40 -10
- package/dist/virtual-routes/components/IconBanner.jsx +286 -44
- package/dist/virtual-routes/components/IconDiscord.jsx +17 -1
- package/dist/virtual-routes/components/IconError.jsx +55 -17
- package/dist/virtual-routes/components/IconGithub.jsx +19 -1
- package/dist/virtual-routes/components/IconTwitter.jsx +17 -1
- package/dist/virtual-routes/components/Layout.jsx +1 -1
- package/dist/virtual-routes/routes/index.jsx +110 -94
- package/dist/virtual-routes/virtual-root.jsx +7 -15
- package/oclif.manifest.json +1 -1
- package/package.json +9 -8
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { AbortError } from '@shopify/cli-kit/node/error';
|
|
2
2
|
import { joinPath, relativePath } from '@shopify/cli-kit/node/path';
|
|
3
3
|
import { fileExists } from '@shopify/cli-kit/node/fs';
|
|
4
|
-
import { ts, tsx, js, jsx } from '@ast-grep/napi';
|
|
5
4
|
import { replaceFileContent, findFileWithExtension } from '../../file.js';
|
|
5
|
+
import { importLangAstGrep } from '../../ast.js';
|
|
6
6
|
|
|
7
|
-
const astGrep = { ts, tsx, js, jsx };
|
|
8
7
|
async function replaceServerI18n({ rootDirectory, serverEntryPoint = "server" }, formatConfig, localeExtractImplementation) {
|
|
9
8
|
const { filepath, astType } = await findEntryFile({
|
|
10
9
|
rootDirectory,
|
|
11
10
|
serverEntryPoint
|
|
12
11
|
});
|
|
13
12
|
await replaceFileContent(filepath, formatConfig, async (content) => {
|
|
14
|
-
const
|
|
13
|
+
const astGrep = await importLangAstGrep(astType);
|
|
14
|
+
const root = astGrep.parse(content).root();
|
|
15
15
|
const requestIdentifier = root.find({
|
|
16
16
|
rule: {
|
|
17
17
|
kind: "identifier",
|
|
@@ -58,6 +58,7 @@ async function replaceServerI18n({ rootDirectory, serverEntryPoint = "server" },
|
|
|
58
58
|
has: {
|
|
59
59
|
kind: "identifier",
|
|
60
60
|
regex: `^${hydrogenImportName}`
|
|
61
|
+
// could be appended with " as ..."
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
});
|
|
@@ -154,10 +155,11 @@ async function replaceRemixEnv({ rootDirectory, serverEntryPoint }, formatConfig
|
|
|
154
155
|
rootDirectory,
|
|
155
156
|
entryFilepath
|
|
156
157
|
).replace(/.[tj]sx?$/, "");
|
|
157
|
-
await replaceFileContent(remixEnvPath, formatConfig, (content) => {
|
|
158
|
+
await replaceFileContent(remixEnvPath, formatConfig, async (content) => {
|
|
158
159
|
if (content.includes(`Storefront<`))
|
|
159
160
|
return;
|
|
160
|
-
const
|
|
161
|
+
const astGrep = await importLangAstGrep("ts");
|
|
162
|
+
const root = astGrep.parse(content).root();
|
|
161
163
|
const storefrontTypeNode = root.find({
|
|
162
164
|
rule: {
|
|
163
165
|
kind: "property_signature",
|
|
@@ -191,7 +191,9 @@ async function generateProjectFile(routeFrom, {
|
|
|
191
191
|
function getDestinationRoute(routeFrom, localePrefix, v2Flags) {
|
|
192
192
|
const routePath = routeFrom.replace(GENERATOR_ROUTE_DIR + "/", "");
|
|
193
193
|
const filePrefix = localePrefix && !NO_LOCALE_PATTERNS.some((pattern) => pattern.test(routePath)) ? `($${localePrefix})` + (v2Flags.isV2RouteConvention ? "." : "/") : "";
|
|
194
|
-
return GENERATOR_ROUTE_DIR + "/" + filePrefix +
|
|
194
|
+
return GENERATOR_ROUTE_DIR + "/" + filePrefix + // The template file uses the v2 route convention, so we need to convert
|
|
195
|
+
// it to v1 if the user is not using v2.
|
|
196
|
+
(v2Flags.isV2RouteConvention ? routePath : convertRouteToV1(routePath));
|
|
195
197
|
}
|
|
196
198
|
async function findRouteDependencies(routeFilePath, appDirectory) {
|
|
197
199
|
const filesToCheck = /* @__PURE__ */ new Set([routeFilePath]);
|
|
@@ -203,6 +205,7 @@ async function findRouteDependencies(routeFilePath, appDirectory) {
|
|
|
203
205
|
continue;
|
|
204
206
|
match = match.replace(
|
|
205
207
|
"~",
|
|
208
|
+
// import from '~/components/...'
|
|
206
209
|
relativePath(dirname(filePath), appDirectory) || "."
|
|
207
210
|
);
|
|
208
211
|
const resolvedMatchPath = resolvePath(dirname(filePath), match);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { describe, beforeEach, vi, it, expect } from 'vitest';
|
|
2
|
-
import { temporaryDirectoryTask } from 'tempy';
|
|
3
2
|
import { getResolvedRoutes, generateRoutes, generateProjectFile } from './generate.js';
|
|
4
3
|
import { renderConfirmationPrompt } from '@shopify/cli-kit/node/ui';
|
|
5
|
-
import { fileExists, readFile, mkdir, writeFile } from '@shopify/cli-kit/node/fs';
|
|
4
|
+
import { inTemporaryDirectory, fileExists, readFile, mkdir, writeFile } from '@shopify/cli-kit/node/fs';
|
|
6
5
|
import { joinPath, dirname } from '@shopify/cli-kit/node/path';
|
|
7
6
|
import { getTemplateAppFile } from '../../../lib/build.js';
|
|
8
7
|
import { getRemixConfig } from '../../remix-config.js';
|
|
@@ -21,7 +20,7 @@ describe("generate/route", () => {
|
|
|
21
20
|
expect(
|
|
22
21
|
resolvedRouteFiles.find((item) => /account_?\.login/.test(item))
|
|
23
22
|
).toBeTruthy();
|
|
24
|
-
await
|
|
23
|
+
await inTemporaryDirectory(async (tmpDir) => {
|
|
25
24
|
const directories = await createHydrogenFixture(tmpDir, {
|
|
26
25
|
files: [
|
|
27
26
|
["jsconfig.json", JSON.stringify({ compilerOptions: { test: "js" } })],
|
|
@@ -51,7 +50,7 @@ describe("generate/route", () => {
|
|
|
51
50
|
});
|
|
52
51
|
});
|
|
53
52
|
it("figures out the locale if a home route already exists", async () => {
|
|
54
|
-
await
|
|
53
|
+
await inTemporaryDirectory(async (tmpDir) => {
|
|
55
54
|
const route = "routes/pages.$handle";
|
|
56
55
|
const directories = await createHydrogenFixture(tmpDir, {
|
|
57
56
|
files: [
|
|
@@ -89,7 +88,7 @@ describe("generate/route", () => {
|
|
|
89
88
|
});
|
|
90
89
|
describe("generateProjectFile", () => {
|
|
91
90
|
it("generates a route file for Remix v1", async () => {
|
|
92
|
-
await
|
|
91
|
+
await inTemporaryDirectory(async (tmpDir) => {
|
|
93
92
|
const route = "routes/pages.$handle";
|
|
94
93
|
const directories = await createHydrogenFixture(tmpDir, {
|
|
95
94
|
files: [],
|
|
@@ -107,7 +106,7 @@ describe("generate/route", () => {
|
|
|
107
106
|
});
|
|
108
107
|
});
|
|
109
108
|
it("generates a route file for Remix v2", async () => {
|
|
110
|
-
await
|
|
109
|
+
await inTemporaryDirectory(async (tmpDir) => {
|
|
111
110
|
const route = "routes/custom.path.$handle._index";
|
|
112
111
|
const directories = await createHydrogenFixture(tmpDir, {
|
|
113
112
|
files: [],
|
|
@@ -123,7 +122,7 @@ describe("generate/route", () => {
|
|
|
123
122
|
});
|
|
124
123
|
});
|
|
125
124
|
it("generates route files with locale prefix", async () => {
|
|
126
|
-
await
|
|
125
|
+
await inTemporaryDirectory(async (tmpDir) => {
|
|
127
126
|
const routeCode = `const str = 'hello world'`;
|
|
128
127
|
const directories = await createHydrogenFixture(tmpDir, {
|
|
129
128
|
files: [],
|
|
@@ -174,7 +173,7 @@ describe("generate/route", () => {
|
|
|
174
173
|
});
|
|
175
174
|
});
|
|
176
175
|
it("produces a typescript file when typescript argument is true", async () => {
|
|
177
|
-
await
|
|
176
|
+
await inTemporaryDirectory(async (tmpDir) => {
|
|
178
177
|
const route = "routes/pages.$handle";
|
|
179
178
|
const directories = await createHydrogenFixture(tmpDir, {
|
|
180
179
|
files: [],
|
|
@@ -191,7 +190,7 @@ describe("generate/route", () => {
|
|
|
191
190
|
});
|
|
192
191
|
});
|
|
193
192
|
it("prompts the user if there the file already exists", async () => {
|
|
194
|
-
await
|
|
193
|
+
await inTemporaryDirectory(async (tmpDir) => {
|
|
195
194
|
vi.mocked(renderConfirmationPrompt).mockImplementationOnce(
|
|
196
195
|
async () => true
|
|
197
196
|
);
|
|
@@ -212,7 +211,7 @@ describe("generate/route", () => {
|
|
|
212
211
|
});
|
|
213
212
|
});
|
|
214
213
|
it("does not prompt the user if the force property is true", async () => {
|
|
215
|
-
await
|
|
214
|
+
await inTemporaryDirectory(async (tmpDir) => {
|
|
216
215
|
vi.mocked(renderConfirmationPrompt).mockImplementationOnce(
|
|
217
216
|
async () => true
|
|
218
217
|
);
|
|
@@ -229,7 +228,7 @@ describe("generate/route", () => {
|
|
|
229
228
|
});
|
|
230
229
|
});
|
|
231
230
|
it("generates all the route dependencies", async () => {
|
|
232
|
-
await
|
|
231
|
+
await inTemporaryDirectory(async (tmpDir) => {
|
|
233
232
|
const templates = [
|
|
234
233
|
[
|
|
235
234
|
"routes/pages.$pageHandle.tsx",
|
|
@@ -19,6 +19,7 @@ async function getLatestReleaseDownloadUrl(signal) {
|
|
|
19
19
|
}
|
|
20
20
|
const release = await response.json();
|
|
21
21
|
return {
|
|
22
|
+
// @shopify/package-name@version => package-name@version
|
|
22
23
|
version: release.name.split("/").pop() ?? release.name,
|
|
23
24
|
url: release.tarball_url
|
|
24
25
|
};
|
|
@@ -32,8 +33,11 @@ async function downloadTarball(url, storageDir, signal) {
|
|
|
32
33
|
);
|
|
33
34
|
}
|
|
34
35
|
await pipeline(
|
|
36
|
+
// Download
|
|
35
37
|
response.body,
|
|
38
|
+
// Decompress
|
|
36
39
|
gunzipMaybe(),
|
|
40
|
+
// Unpack
|
|
37
41
|
extract(storageDir, {
|
|
38
42
|
strip: 1,
|
|
39
43
|
filter: (name) => {
|
package/dist/lib/transpile-ts.js
CHANGED
|
@@ -12,7 +12,10 @@ async function addVirtualRoutes(config) {
|
|
|
12
12
|
const relativeFilePath = path.relative(virtualRoutesPath, absoluteFilePath);
|
|
13
13
|
const routePath = relativeFilePath.replace(/\.[jt]sx?$/, "").replaceAll("\\", "/");
|
|
14
14
|
const isIndex = /(^|\/)index$/.test(routePath);
|
|
15
|
-
const normalizedVirtualRoutePath = isIndex ? routePath.slice(0, -"index".length).replace(/\/$/, "") || void 0 :
|
|
15
|
+
const normalizedVirtualRoutePath = isIndex ? routePath.slice(0, -"index".length).replace(/\/$/, "") || void 0 : (
|
|
16
|
+
// TODO: support v2 flat routes?
|
|
17
|
+
routePath.replace(/\$/g, ":").replace(/[\[\]]/g, "")
|
|
18
|
+
);
|
|
16
19
|
const hasUserRoute = userRouteList.some(
|
|
17
20
|
(r) => r.parentId === "root" && r.path === normalizedVirtualRoutePath
|
|
18
21
|
);
|
|
@@ -1,7 +1,29 @@
|
|
|
1
|
-
const HydrogenLogoBaseBW = (props) =>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
const HydrogenLogoBaseBW = (props) => /* @__PURE__ */ React.createElement(
|
|
2
|
+
"svg",
|
|
3
|
+
{
|
|
4
|
+
width: 81,
|
|
5
|
+
height: 82,
|
|
6
|
+
fill: "none",
|
|
7
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
8
|
+
...props
|
|
9
|
+
},
|
|
10
|
+
/* @__PURE__ */ React.createElement(
|
|
11
|
+
"path",
|
|
12
|
+
{
|
|
13
|
+
d: "M39.955 81.28 2.138 61.19l12.933-6.818 14.562 7.733 12.218-6.441L27.29 47.93l12.933-6.833L78.04 61.189l-12.934 6.817L51.35 60.7l-12.236 6.457 13.774 7.308-12.933 6.817Z",
|
|
14
|
+
fill: "#000"
|
|
15
|
+
}
|
|
16
|
+
),
|
|
17
|
+
/* @__PURE__ */ React.createElement(
|
|
18
|
+
"path",
|
|
19
|
+
{
|
|
20
|
+
fillRule: "evenodd",
|
|
21
|
+
clipRule: "evenodd",
|
|
22
|
+
d: "m40.225 0 39.953 21.227-15.073 7.945-13.756-7.308-10.096 5.328 13.775 7.309-15.075 7.945L0 21.22l15.073-7.945 14.562 7.732 10.078-5.313-14.56-7.731L40.225 0ZM29.426 7.967l14.564 7.734L29.63 23.27 15.07 15.537l-10.794 5.69 35.68 18.956 10.793-5.688-13.773-7.307L51.352 19.6l13.757 7.308 10.794-5.69-35.68-18.956-10.797 5.704Z",
|
|
23
|
+
fill: "#000"
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
);
|
|
5
27
|
export {
|
|
6
28
|
HydrogenLogoBaseBW
|
|
7
29
|
};
|
|
@@ -1,13 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
const HydrogenLogoBaseColor = (props) => /* @__PURE__ */ React.createElement(
|
|
3
|
+
"svg",
|
|
4
|
+
{
|
|
5
|
+
width: 76,
|
|
6
|
+
height: 81,
|
|
7
|
+
fill: "none",
|
|
8
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
9
|
+
...props
|
|
10
|
+
},
|
|
11
|
+
/* @__PURE__ */ React.createElement(
|
|
12
|
+
"path",
|
|
13
|
+
{
|
|
14
|
+
d: "M37.817 80.149 0 60.057l12.934-6.817 14.561 7.733 12.218-6.441-14.561-7.733 12.933-6.833 37.818 20.091-12.934 6.817-13.757-7.307-12.236 6.457 13.775 7.308-12.934 6.817Z",
|
|
15
|
+
fill: "#000"
|
|
16
|
+
}
|
|
17
|
+
),
|
|
18
|
+
/* @__PURE__ */ React.createElement(
|
|
19
|
+
"path",
|
|
20
|
+
{
|
|
21
|
+
d: "M37.818 40.183 0 20.092l12.934-6.818 14.562 7.733 12.218-6.441-14.562-7.733L38.086 0l37.817 20.091-12.934 6.817-13.756-7.307-12.236 6.457 13.774 7.308-12.933 6.817Z",
|
|
22
|
+
fill: "url(#a)"
|
|
23
|
+
}
|
|
24
|
+
),
|
|
25
|
+
/* @__PURE__ */ React.createElement("defs", null, /* @__PURE__ */ React.createElement(
|
|
26
|
+
"linearGradient",
|
|
27
|
+
{
|
|
28
|
+
id: "a",
|
|
29
|
+
x1: 74.48,
|
|
30
|
+
y1: 21.654,
|
|
31
|
+
x2: 18.735,
|
|
32
|
+
y2: 51.694,
|
|
33
|
+
gradientUnits: "userSpaceOnUse"
|
|
34
|
+
},
|
|
35
|
+
/* @__PURE__ */ React.createElement("stop", { offset: 2e-3, stopColor: "#430470" }),
|
|
36
|
+
/* @__PURE__ */ React.createElement("stop", { offset: 0.385, stopColor: "#8E01F0" }),
|
|
37
|
+
/* @__PURE__ */ React.createElement("stop", { offset: 0.635, stopColor: "#354CF6" }),
|
|
38
|
+
/* @__PURE__ */ React.createElement("stop", { offset: 1, stopColor: "#01FFFF" })
|
|
39
|
+
))
|
|
40
|
+
);
|
|
11
41
|
export {
|
|
12
42
|
HydrogenLogoBaseColor
|
|
13
43
|
};
|
|
@@ -1,47 +1,289 @@
|
|
|
1
|
-
const IconBanner = (props) =>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
1
|
+
const IconBanner = (props) => /* @__PURE__ */ React.createElement(
|
|
2
|
+
"svg",
|
|
3
|
+
{
|
|
4
|
+
width: 32,
|
|
5
|
+
height: 36,
|
|
6
|
+
fill: "none",
|
|
7
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
8
|
+
...props
|
|
9
|
+
},
|
|
10
|
+
/* @__PURE__ */ React.createElement("path", { fill: "#000", d: "M0 9.726h1.455v1.455H0z" }),
|
|
11
|
+
/* @__PURE__ */ React.createElement(
|
|
12
|
+
"path",
|
|
13
|
+
{
|
|
14
|
+
fill: "#E172AC",
|
|
15
|
+
d: "M1.454 9.726h1.455v1.455H1.454zM13.091 3.907h1.455v1.455h-1.455zM24.727 9.726h1.455v1.455h-1.455zM24.727 24.271h1.455v1.455h-1.455zM13.091 30.09h1.455v1.455h-1.455zM1.454 24.271h1.455v1.455H1.454z"
|
|
16
|
+
}
|
|
17
|
+
),
|
|
18
|
+
/* @__PURE__ */ React.createElement(
|
|
19
|
+
"path",
|
|
20
|
+
{
|
|
21
|
+
fill: "#AC217D",
|
|
22
|
+
d: "M5.818 9.726h1.455v1.455H5.818zM17.454 3.907h1.455v1.455h-1.455zM29.091 9.726h1.455v1.455h-1.455zM21.818 16.998h1.455v1.455h-1.455zM21.818 18.454h1.455v1.455h-1.455zM20.363 24.271h1.455v1.455h-1.455zM20.363 11.181h1.455v1.455h-1.455zM29.091 24.271h1.455v1.455h-1.455zM17.455 30.09h1.455v1.455h-1.455zM5.818 24.271h1.455v1.455H5.818z"
|
|
23
|
+
}
|
|
24
|
+
),
|
|
25
|
+
/* @__PURE__ */ React.createElement(
|
|
26
|
+
"path",
|
|
27
|
+
{
|
|
28
|
+
fill: "#000",
|
|
29
|
+
d: "M7.273 9.726h1.455v1.455H7.273zM1.454 8.271h1.455v1.455H1.454zM5.818 8.271h1.455v1.455H5.818zM2.909 6.817h1.455v1.455H2.909z"
|
|
30
|
+
}
|
|
31
|
+
),
|
|
32
|
+
/* @__PURE__ */ React.createElement(
|
|
33
|
+
"path",
|
|
34
|
+
{
|
|
35
|
+
fill: "#D43694",
|
|
36
|
+
d: "M2.909 9.726h1.455v1.455H2.909zM14.546 3.907h1.455v1.455h-1.455zM26.182 9.726h1.455v1.455h-1.455zM18.909 11.181h1.455v1.455h-1.455z"
|
|
37
|
+
}
|
|
38
|
+
),
|
|
39
|
+
/* @__PURE__ */ React.createElement(
|
|
40
|
+
"path",
|
|
41
|
+
{
|
|
42
|
+
fill: "#D43694",
|
|
43
|
+
d: "M20.363 12.635h1.455v1.455h-1.455zM20.363 14.09h1.455v1.455h-1.455z"
|
|
44
|
+
}
|
|
45
|
+
),
|
|
46
|
+
/* @__PURE__ */ React.createElement(
|
|
47
|
+
"path",
|
|
48
|
+
{
|
|
49
|
+
fill: "#D43694",
|
|
50
|
+
d: "M20.363 15.544h1.455v1.455h-1.455zM11.636 11.181h1.455v1.455h-1.455z"
|
|
51
|
+
}
|
|
52
|
+
),
|
|
53
|
+
/* @__PURE__ */ React.createElement(
|
|
54
|
+
"path",
|
|
55
|
+
{
|
|
56
|
+
fill: "#D43694",
|
|
57
|
+
d: "M10.182 12.635h1.455v1.455h-1.455zM10.182 14.09h1.455v1.455h-1.455z"
|
|
58
|
+
}
|
|
59
|
+
),
|
|
60
|
+
/* @__PURE__ */ React.createElement(
|
|
61
|
+
"path",
|
|
62
|
+
{
|
|
63
|
+
fill: "#D43694",
|
|
64
|
+
d: "M10.182 15.544h1.455v1.455h-1.455zM10.182 19.908h1.455v1.455h-1.455z"
|
|
65
|
+
}
|
|
66
|
+
),
|
|
67
|
+
/* @__PURE__ */ React.createElement(
|
|
68
|
+
"path",
|
|
69
|
+
{
|
|
70
|
+
fill: "#D43694",
|
|
71
|
+
d: "M10.182 21.362h1.455v1.455h-1.455zM10.182 22.817h1.455v1.455h-1.455z"
|
|
72
|
+
}
|
|
73
|
+
),
|
|
74
|
+
/* @__PURE__ */ React.createElement(
|
|
75
|
+
"path",
|
|
76
|
+
{
|
|
77
|
+
fill: "#D43694",
|
|
78
|
+
d: "M11.636 24.271h1.455v1.455h-1.455zM20.363 19.908h1.455v1.455h-1.455z"
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
/* @__PURE__ */ React.createElement(
|
|
82
|
+
"path",
|
|
83
|
+
{
|
|
84
|
+
fill: "#D43694",
|
|
85
|
+
d: "M20.363 21.362h1.455v1.455h-1.455zM20.363 22.817h1.455v1.455h-1.455z"
|
|
86
|
+
}
|
|
87
|
+
),
|
|
88
|
+
/* @__PURE__ */ React.createElement(
|
|
89
|
+
"path",
|
|
90
|
+
{
|
|
91
|
+
fill: "#D43694",
|
|
92
|
+
d: "M18.909 24.271h1.455v1.455h-1.455zM26.182 24.271h1.455v1.455h-1.455zM14.545 30.09H16v1.455h-1.455zM2.909 24.271h1.455v1.455H2.909zM2.909 11.181h1.455v1.455H2.909zM14.546 5.361h1.455v1.455h-1.455zM26.182 11.181h1.455v1.455h-1.455zM26.182 25.726h1.455v1.455h-1.455z"
|
|
93
|
+
}
|
|
94
|
+
),
|
|
95
|
+
/* @__PURE__ */ React.createElement(
|
|
96
|
+
"path",
|
|
97
|
+
{
|
|
98
|
+
fill: "#D43694",
|
|
99
|
+
d: "M14.546 31.544h1.455v1.455h-1.455zM2.909 25.726h1.455v1.455H2.909z"
|
|
100
|
+
}
|
|
101
|
+
),
|
|
102
|
+
/* @__PURE__ */ React.createElement("path", { fill: "#000", d: "M4.364 6.817h1.455v1.455H4.364z" }),
|
|
103
|
+
/* @__PURE__ */ React.createElement(
|
|
104
|
+
"path",
|
|
105
|
+
{
|
|
106
|
+
fill: "#D43694",
|
|
107
|
+
d: "M4.364 9.726h1.455v1.455H4.364zM16 3.907h1.455v1.455H16zM27.637 9.726h1.455v1.455h-1.455zM27.637 24.271h1.455v1.455h-1.455zM16 30.09h1.455v1.455H16zM4.364 24.271h1.455v1.455H4.364z"
|
|
108
|
+
}
|
|
109
|
+
),
|
|
110
|
+
/* @__PURE__ */ React.createElement(
|
|
111
|
+
"path",
|
|
112
|
+
{
|
|
113
|
+
fill: "#D43694",
|
|
114
|
+
d: "M4.364 11.181h1.455v1.455H4.364zM16 5.361h1.455v1.455H16zM27.637 11.181h1.455v1.455h-1.455zM27.637 25.726h1.455v1.455h-1.455zM16 31.544h1.455v1.455H16zM4.364 25.726h1.455v1.455H4.364z"
|
|
115
|
+
}
|
|
116
|
+
),
|
|
117
|
+
/* @__PURE__ */ React.createElement(
|
|
118
|
+
"path",
|
|
119
|
+
{
|
|
120
|
+
fill: "#E172AC",
|
|
121
|
+
d: "M2.909 8.271h1.455v1.455H2.909zM14.545 2.453H16v1.455h-1.455zM26.182 8.271h1.455v1.455h-1.455zM26.182 22.817h1.455v1.455h-1.455zM14.546 28.635h1.455v1.455h-1.455zM2.909 22.817h1.455v1.455H2.909z"
|
|
122
|
+
}
|
|
123
|
+
),
|
|
124
|
+
/* @__PURE__ */ React.createElement(
|
|
125
|
+
"path",
|
|
126
|
+
{
|
|
127
|
+
fill: "#AC217D",
|
|
128
|
+
d: "M2.909 12.635h1.455v1.455H2.909zM14.545 6.817H16v1.455h-1.455zM26.182 12.635h1.455v1.455h-1.455zM26.182 27.181h1.455v1.455h-1.455zM14.546 32.998h1.455v1.455h-1.455zM2.909 27.181h1.455v1.455H2.909z"
|
|
129
|
+
}
|
|
130
|
+
),
|
|
131
|
+
/* @__PURE__ */ React.createElement(
|
|
132
|
+
"path",
|
|
133
|
+
{
|
|
134
|
+
fill: "#E172AC",
|
|
135
|
+
d: "M4.364 8.271h1.455v1.455H4.364zM16 2.453h1.455v1.455H16zM27.637 8.271h1.455v1.455h-1.455zM27.637 22.817h1.455v1.455h-1.455zM16 28.635h1.455v1.455H16zM4.364 22.817h1.455v1.455H4.364z"
|
|
136
|
+
}
|
|
137
|
+
),
|
|
138
|
+
/* @__PURE__ */ React.createElement(
|
|
139
|
+
"path",
|
|
140
|
+
{
|
|
141
|
+
fill: "#AC217D",
|
|
142
|
+
d: "M4.364 12.635h1.455v1.455H4.364zM16 6.817h1.455v1.455H16zM27.637 12.635h1.455v1.455h-1.455zM27.637 27.181h1.455v1.455h-1.455zM16 32.998h1.455v1.455H16zM4.364 27.181h1.455v1.455H4.364z"
|
|
143
|
+
}
|
|
144
|
+
),
|
|
145
|
+
/* @__PURE__ */ React.createElement(
|
|
146
|
+
"path",
|
|
147
|
+
{
|
|
148
|
+
fill: "#000",
|
|
149
|
+
d: "M2.909 14.09h1.455v1.455H2.909zM4.364 14.09h1.455v1.455H4.364zM0 11.181h1.455v1.455H0z"
|
|
150
|
+
}
|
|
151
|
+
),
|
|
152
|
+
/* @__PURE__ */ React.createElement("path", { fill: "#000", d: "M1.454 12.635h1.455v1.455H1.454z" }),
|
|
153
|
+
/* @__PURE__ */ React.createElement(
|
|
154
|
+
"path",
|
|
155
|
+
{
|
|
156
|
+
fill: "#E172AC",
|
|
157
|
+
d: "M1.454 11.181h1.455v1.455H1.454zM8.727 16.998h1.455v1.455H8.727zM10.182 11.181h1.455v1.455h-1.455zM10.182 24.271h1.455v1.455h-1.455zM8.727 18.454h1.455v1.455H8.727zM13.091 5.361h1.455v1.455h-1.455zM24.727 11.181h1.455v1.455h-1.455zM24.727 25.726h1.455v1.455h-1.455zM13.091 31.544h1.455v1.455h-1.455zM1.454 25.726h1.455v1.455H1.454z"
|
|
158
|
+
}
|
|
159
|
+
),
|
|
160
|
+
/* @__PURE__ */ React.createElement(
|
|
161
|
+
"path",
|
|
162
|
+
{
|
|
163
|
+
fill: "#AC217D",
|
|
164
|
+
d: "M5.818 11.181h1.455v1.455H5.818zM17.454 5.361h1.455v1.455h-1.455zM29.091 11.181h1.455v1.455h-1.455zM29.091 25.726h1.455v1.455h-1.455zM17.454 31.544h1.455v1.455h-1.455zM5.818 25.726h1.455v1.455H5.818z"
|
|
165
|
+
}
|
|
166
|
+
),
|
|
167
|
+
/* @__PURE__ */ React.createElement(
|
|
168
|
+
"path",
|
|
169
|
+
{
|
|
170
|
+
fill: "#000",
|
|
171
|
+
d: "M5.818 12.635h1.455v1.455H5.818zM7.273 11.181h1.455v1.455H7.273zM0 24.271h1.455v1.455H0zM23.273 9.726h1.455v1.455h-1.455zM7.273 24.271h1.455v1.455H7.273zM30.546 9.726h1.455v1.455h-1.455zM1.455 22.817H2.91v1.455H1.455zM24.727 8.271h1.455v1.455h-1.455zM5.818 22.817h1.455v1.455H5.818zM29.091 8.271h1.455v1.455h-1.455zM2.909 21.362h1.455v1.455H2.909z"
|
|
172
|
+
}
|
|
173
|
+
),
|
|
174
|
+
/* @__PURE__ */ React.createElement(
|
|
175
|
+
"path",
|
|
176
|
+
{
|
|
177
|
+
fill: "#000",
|
|
178
|
+
d: "M26.182 6.817h1.455v1.455h-1.455zM4.364 21.362h1.455v1.455H4.364zM27.637 6.817h1.455v1.455h-1.455zM2.909 28.635h1.455v1.455H2.909zM26.182 14.09h1.455v1.455h-1.455zM4.364 28.635h1.455v1.455H4.364zM27.637 14.09h1.455v1.455h-1.455zM1.454 27.181h1.455v1.455H1.454zM24.727 12.635h1.455v1.455h-1.455zM0 25.726h1.455v1.455H0z"
|
|
179
|
+
}
|
|
180
|
+
),
|
|
181
|
+
/* @__PURE__ */ React.createElement(
|
|
182
|
+
"path",
|
|
183
|
+
{
|
|
184
|
+
fill: "#000",
|
|
185
|
+
d: "M23.273 11.181h1.455v1.455h-1.455zM5.818 27.181h1.455v1.455H5.818zM29.091 12.635h1.455v1.455h-1.455zM7.273 25.726h1.455v1.455H7.273zM30.546 11.181h1.455v1.455h-1.455zM23.273 24.271h1.455v1.455h-1.455zM11.636 30.09h1.455v1.455h-1.455zM11.636 3.907h1.455v1.455h-1.455zM18.909 30.09h1.455v1.455h-1.455zM30.546 24.271h1.455v1.455h-1.455zM13.091 28.635h1.455v1.455h-1.455zM18.909 3.907h1.455v1.455h-1.455zM17.454 28.635h1.455v1.455h-1.455z"
|
|
186
|
+
}
|
|
187
|
+
),
|
|
188
|
+
/* @__PURE__ */ React.createElement(
|
|
189
|
+
"path",
|
|
190
|
+
{
|
|
191
|
+
fill: "#000",
|
|
192
|
+
d: "M24.727 22.817h1.455v1.455h-1.455zM14.546 27.181h1.455v1.455h-1.455zM13.091 2.453h1.455v1.455h-1.455z"
|
|
193
|
+
}
|
|
194
|
+
),
|
|
195
|
+
/* @__PURE__ */ React.createElement(
|
|
196
|
+
"path",
|
|
197
|
+
{
|
|
198
|
+
fill: "#000",
|
|
199
|
+
d: "M16 27.181h1.455v1.455H16zM29.091 22.817h1.455v1.455h-1.455zM14.545 34.454H16v1.455h-1.455zM17.455 2.453h1.455v1.455h-1.455zM16 34.454h1.455v1.455H16zM26.182 21.362h1.455v1.455h-1.455zM13.091 32.998h1.455v1.455h-1.455zM14.546.998h1.455v1.455h-1.455zM11.636 31.544h1.455v1.455h-1.455zM27.637 21.362h1.455v1.455h-1.455zM17.454 32.998h1.455v1.455h-1.455z"
|
|
200
|
+
}
|
|
201
|
+
),
|
|
202
|
+
/* @__PURE__ */ React.createElement(
|
|
203
|
+
"path",
|
|
204
|
+
{
|
|
205
|
+
fill: "#000",
|
|
206
|
+
d: "M16 .998h1.455v1.455H16zM18.909 31.544h1.455v1.455h-1.455zM26.182 28.635h1.455v1.455h-1.455zM14.546 8.271h1.455v1.455h-1.455zM27.637 28.635h1.455v1.455h-1.455z"
|
|
207
|
+
}
|
|
208
|
+
),
|
|
209
|
+
/* @__PURE__ */ React.createElement(
|
|
210
|
+
"path",
|
|
211
|
+
{
|
|
212
|
+
fill: "#000",
|
|
213
|
+
d: "M16 8.271h1.455v1.455H16zM24.727 27.181h1.455v1.455h-1.455zM13.091 6.817h1.455v1.455h-1.455zM23.273 25.726h1.455v1.455h-1.455zM11.636 5.361h1.455v1.455h-1.455zM29.091 27.181h1.455v1.455h-1.455zM17.455 6.817h1.455v1.455h-1.455zM30.546 25.726h1.455v1.455h-1.455zM18.909 5.361h1.455v1.455h-1.455zM8.727 11.181h1.455v1.455H8.727z"
|
|
214
|
+
}
|
|
215
|
+
),
|
|
216
|
+
/* @__PURE__ */ React.createElement(
|
|
217
|
+
"path",
|
|
218
|
+
{
|
|
219
|
+
fill: "#000",
|
|
220
|
+
d: "M8.727 12.635h1.455v1.455H8.727zM8.727 19.908h1.455v1.455H8.727zM21.818 19.908h1.455v1.455h-1.455zM21.818 11.181h1.455v1.455h-1.455z"
|
|
221
|
+
}
|
|
222
|
+
),
|
|
223
|
+
/* @__PURE__ */ React.createElement(
|
|
224
|
+
"path",
|
|
225
|
+
{
|
|
226
|
+
fill: "#000",
|
|
227
|
+
d: "M8.727 21.362h1.455v1.455H8.727zM21.818 21.362h1.455v1.455h-1.455zM8.727 14.09h1.455v1.455H8.727zM21.818 12.635h1.455v1.455h-1.455zM8.727 22.817h1.455v1.455H8.727z"
|
|
228
|
+
}
|
|
229
|
+
),
|
|
230
|
+
/* @__PURE__ */ React.createElement(
|
|
231
|
+
"path",
|
|
232
|
+
{
|
|
233
|
+
fill: "#000",
|
|
234
|
+
d: "M8.727 24.271h1.455v1.455H8.727zM7.273 16.998h1.455v1.455H7.273zM21.818 22.817h1.455v1.455h-1.455zM23.273 16.998h1.455v1.455h-1.455z"
|
|
235
|
+
}
|
|
236
|
+
),
|
|
237
|
+
/* @__PURE__ */ React.createElement(
|
|
238
|
+
"path",
|
|
239
|
+
{
|
|
240
|
+
fill: "#000",
|
|
241
|
+
d: "M21.818 24.271h1.455v1.455h-1.455zM8.727 15.544h1.455v1.455H8.727zM21.818 14.09h1.455v1.455h-1.455zM7.273 18.454h1.455v1.455H7.273z"
|
|
242
|
+
}
|
|
243
|
+
),
|
|
244
|
+
/* @__PURE__ */ React.createElement(
|
|
245
|
+
"path",
|
|
246
|
+
{
|
|
247
|
+
fill: "#000",
|
|
248
|
+
d: "M21.818 15.544h1.455v1.455h-1.455zM23.273 18.454h1.455v1.455h-1.455zM11.636 12.635h1.455v1.455h-1.455zM11.636 19.908h1.455v1.455h-1.455zM18.909 19.908h1.455v1.455h-1.455zM18.909 12.635h1.455v1.455h-1.455zM11.636 14.09h1.455v1.455h-1.455z"
|
|
249
|
+
}
|
|
250
|
+
),
|
|
251
|
+
/* @__PURE__ */ React.createElement(
|
|
252
|
+
"path",
|
|
253
|
+
{
|
|
254
|
+
fill: "#000",
|
|
255
|
+
d: "M11.636 21.362h1.455v1.455h-1.455zM18.909 21.362h1.455v1.455h-1.455zM18.909 14.09h1.455v1.455h-1.455zM10.182 16.998h1.455v1.455h-1.455zM20.363 16.998h1.455v1.455h-1.455z"
|
|
256
|
+
}
|
|
257
|
+
),
|
|
258
|
+
/* @__PURE__ */ React.createElement(
|
|
259
|
+
"path",
|
|
260
|
+
{
|
|
261
|
+
fill: "#000",
|
|
262
|
+
d: "M11.636 15.544h1.455v1.455h-1.455zM11.636 22.817h1.455v1.455h-1.455zM18.909 22.817h1.455v1.455h-1.455zM18.909 15.544h1.455v1.455h-1.455zM13.091 24.271h1.455v1.455h-1.455zM17.454 24.271h1.455v1.455h-1.455zM13.091 25.726h1.455v1.455h-1.455zM17.454 25.726h1.455v1.455h-1.455zM11.636 25.726h1.455v1.455h-1.455zM20.363 25.726h1.455v1.455h-1.455z"
|
|
263
|
+
}
|
|
264
|
+
),
|
|
265
|
+
/* @__PURE__ */ React.createElement(
|
|
266
|
+
"path",
|
|
267
|
+
{
|
|
268
|
+
fill: "#000",
|
|
269
|
+
d: "M10.182 25.726h1.455v1.455h-1.455zM18.909 25.726h1.455v1.455h-1.455zM10.182 18.454h1.455v1.455h-1.455zM20.363 18.454h1.455v1.455h-1.455zM10.182 9.726h1.455v1.455h-1.455zM18.909 9.726h1.455v1.455h-1.455z"
|
|
270
|
+
}
|
|
271
|
+
),
|
|
272
|
+
/* @__PURE__ */ React.createElement(
|
|
273
|
+
"path",
|
|
274
|
+
{
|
|
275
|
+
fill: "#000",
|
|
276
|
+
d: "M11.636 9.726h1.455v1.455h-1.455zM20.363 9.726h1.455v1.455h-1.455zM13.091 9.726h1.455v1.455h-1.455zM17.454 9.726h1.455v1.455h-1.455z"
|
|
277
|
+
}
|
|
278
|
+
),
|
|
279
|
+
/* @__PURE__ */ React.createElement(
|
|
280
|
+
"path",
|
|
281
|
+
{
|
|
282
|
+
fill: "#000",
|
|
283
|
+
d: "M13.091 11.181h1.455v1.455h-1.455zM17.454 11.181h1.455v1.455h-1.455z"
|
|
284
|
+
}
|
|
285
|
+
)
|
|
286
|
+
);
|
|
45
287
|
export {
|
|
46
288
|
IconBanner
|
|
47
289
|
};
|