unframer 2.25.3 → 2.25.4
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/cli.d.ts +21 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +79 -48
- package/dist/cli.js.map +1 -1
- package/dist/example-code.test.d.ts +2 -0
- package/dist/example-code.test.d.ts.map +1 -0
- package/dist/example-code.test.js +72 -0
- package/dist/example-code.test.js.map +1 -0
- package/dist/exporter.d.ts +17 -55
- package/dist/exporter.d.ts.map +1 -1
- package/dist/exporter.js +68 -68
- package/dist/exporter.js.map +1 -1
- package/dist/framer.d.ts.map +1 -1
- package/dist/framer.js +99 -53
- package/dist/framer.js.map +1 -1
- package/dist/generated/api-client.js +0 -1
- package/dist/generated/api-client.js.map +1 -1
- package/dist/generated/api-client.test.js +0 -69
- package/dist/generated/api-client.test.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/esm/cli.d.ts +21 -0
- package/esm/cli.d.ts.map +1 -1
- package/esm/cli.js +78 -48
- package/esm/cli.js.map +1 -1
- package/esm/example-code.test.d.ts +2 -0
- package/esm/example-code.test.d.ts.map +1 -0
- package/esm/example-code.test.js +70 -0
- package/esm/example-code.test.js.map +1 -0
- package/esm/exporter.d.ts +17 -55
- package/esm/exporter.d.ts.map +1 -1
- package/esm/exporter.js +67 -68
- package/esm/exporter.js.map +1 -1
- package/esm/framer.d.ts.map +1 -1
- package/esm/framer.js +99 -53
- package/esm/framer.js.map +1 -1
- package/esm/generated/api-client.js +0 -1
- package/esm/generated/api-client.js.map +1 -1
- package/esm/generated/api-client.test.d.ts +0 -1
- package/esm/generated/api-client.test.js +1 -69
- package/esm/generated/api-client.test.js.map +1 -1
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/package.json +4 -4
- package/src/{cli.tsx → cli.ts} +114 -64
- package/src/example-code.test.ts +72 -0
- package/src/exporter.ts +94 -80
- package/src/framer.js +128 -79
- package/src/generated/api-client.d.ts +1048 -682
- package/src/generated/api-client.d.ts.map +1 -1
- package/src/generated/api-client.js +5 -6
- package/src/generated/api-client.js.map +1 -1
- package/src/generated/api-client.test.d.ts +1 -1
- package/src/generated/api-client.test.js +1 -69
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/generated/api-client.js"],"names":[],"mappings":";;AAAA,oCAuBC;AAvBM,KAAK,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE;IACtC,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/generated/api-client.js"],"names":[],"mappings":";;AAAA,oCAuBC;AAvBM,KAAK,UAAU,YAAY,CAAC,EAAE,GAAG,EAAE;IACtC,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAClE,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,EAAE;QACtC,oCAAoC;QACpC,kDAAkD;QAClD,qBAAqB;QACrB,4CAA4C;QAC5C,QAAQ;QACR,iBAAiB;QACjB,KAAK;QACL,+BAA+B;QAC/B,0BAA0B;QAC1B,iDAAiD;QACjD,QAAQ;QACR,sBAAsB;QACtB,KAAK;QACL,OAAO;YACH,OAAO;YACH,yFAAyF;aAC5F,CAAA;QACL,CAAC;KACJ,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACjB,CAAC;AACD,iFAAiF"}
|
|
@@ -1,72 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const client_1 = require("./client");
|
|
5
|
-
const env_1 = require("./env");
|
|
6
|
-
const supabase_server_1 = require("./supabase.server");
|
|
7
|
-
const kysely_1 = require("db/kysely");
|
|
8
|
-
(0, vitest_1.test)('hono client', async () => {
|
|
9
|
-
const admin = (0, supabase_server_1.createSupabaseAdmin)();
|
|
10
|
-
const email = 'test@example.com';
|
|
11
|
-
const password = 'xxpasswordxx99776';
|
|
12
|
-
const { error: signupError } = await admin.auth.admin.createUser({
|
|
13
|
-
email,
|
|
14
|
-
password,
|
|
15
|
-
email_confirm: true,
|
|
16
|
-
});
|
|
17
|
-
// expect(signupError).toBe(null)
|
|
18
|
-
const supabase = (0, supabase_server_1.createSupabaseAnon)();
|
|
19
|
-
const { data, error } = await supabase.auth.signInWithPassword({
|
|
20
|
-
email,
|
|
21
|
-
password,
|
|
22
|
-
});
|
|
23
|
-
(0, vitest_1.expect)(error).toBe(null);
|
|
24
|
-
const session = data.session;
|
|
25
|
-
const client = (0, client_1.createClient)({
|
|
26
|
-
url: `http://localhost:${env_1.env.PORT}`,
|
|
27
|
-
session,
|
|
28
|
-
supabaseRef: env_1.supabaseRef,
|
|
29
|
-
});
|
|
30
|
-
const res = await client.api.v1.health.$get({});
|
|
31
|
-
(0, vitest_1.expect)(res.status).toBe(200);
|
|
32
|
-
const json = await res.json();
|
|
33
|
-
(0, vitest_1.expect)(json).toMatchInlineSnapshot(`
|
|
34
|
-
{
|
|
35
|
-
"ok": true,
|
|
36
|
-
}
|
|
37
|
-
`);
|
|
38
|
-
});
|
|
39
|
-
(0, vitest_1.test)('get conversations with my account', async () => {
|
|
40
|
-
const admin = (0, supabase_server_1.createSupabaseAdmin)();
|
|
41
|
-
const email = 'beats.by.morse@gmail.com';
|
|
42
|
-
const password = env_1.env.CRISP_WEBHOOKS_SECRET;
|
|
43
|
-
const user = await kysely_1.db
|
|
44
|
-
.selectFrom('auth.users')
|
|
45
|
-
.selectAll()
|
|
46
|
-
.where('email', '=', email)
|
|
47
|
-
.executeTakeFirst();
|
|
48
|
-
// uncomment this to set the password the first time
|
|
49
|
-
// const { error: signupError } = await admin.auth.admin.updateUserById(
|
|
50
|
-
// user!.id,
|
|
51
|
-
// { password },
|
|
52
|
-
// )
|
|
53
|
-
// expect(signupError).toBe(null)
|
|
54
|
-
const supabase = (0, supabase_server_1.createSupabaseAnon)();
|
|
55
|
-
const { data, error } = await supabase.auth.signInWithPassword({
|
|
56
|
-
email,
|
|
57
|
-
password,
|
|
58
|
-
});
|
|
59
|
-
(0, vitest_1.expect)(error).toBe(null);
|
|
60
|
-
const session = data.session;
|
|
61
|
-
const client = (0, client_1.createClient)({
|
|
62
|
-
url: `http://localhost:${env_1.env.PORT}`,
|
|
63
|
-
session,
|
|
64
|
-
supabaseRef: env_1.supabaseRef,
|
|
65
|
-
});
|
|
66
|
-
const res = await client.api.v1.conversations.$get({});
|
|
67
|
-
(0, vitest_1.expect)(res.status).toBe(200);
|
|
68
|
-
const json = await res.json();
|
|
69
|
-
(0, vitest_1.expect)(json.conversations.length).toBeGreaterThan(0);
|
|
70
|
-
console.log(json.conversations);
|
|
71
|
-
});
|
|
72
3
|
//# sourceMappingURL=api-client.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../../src/generated/api-client.test.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api-client.test.js","sourceRoot":"","sources":["../../src/generated/api-client.test.js"],"names":[],"mappings":""}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "2.25.
|
|
1
|
+
export declare const version = "2.25.4";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/esm/cli.d.ts
CHANGED
|
@@ -32,5 +32,26 @@ export type Config = {
|
|
|
32
32
|
breakpoints?: BreakpointSizes;
|
|
33
33
|
tokens?: StyleToken[];
|
|
34
34
|
outDir?: string;
|
|
35
|
+
componentInstancesInIndexPage: ComponentInstanceInPage[];
|
|
36
|
+
pageBackgroundColor?: string;
|
|
35
37
|
};
|
|
38
|
+
type ComponentInstanceInPage = {
|
|
39
|
+
pageOrdering: number;
|
|
40
|
+
componentId: string;
|
|
41
|
+
componentPathSlug: string;
|
|
42
|
+
controls: Record<string, any>;
|
|
43
|
+
nodeDepth: number;
|
|
44
|
+
webPageId: string;
|
|
45
|
+
};
|
|
46
|
+
export declare function configFromFetch({ projectId, externalPackages, allExternal, outDir, }: {
|
|
47
|
+
projectId: any;
|
|
48
|
+
externalPackages?: string[] | undefined;
|
|
49
|
+
allExternal?: boolean | undefined;
|
|
50
|
+
outDir?: string | undefined;
|
|
51
|
+
}): Promise<{
|
|
52
|
+
websiteUrl: any;
|
|
53
|
+
cwd: string;
|
|
54
|
+
config: Config;
|
|
55
|
+
}>;
|
|
56
|
+
export {};
|
|
36
57
|
//# sourceMappingURL=cli.d.ts.map
|
package/esm/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAU,UAAU,EAAE,MAAM,eAAe,CAAA;AAOlD,OAAO,EAAE,eAAe,EAA0B,MAAM,UAAU,CAAA;AAYlE,eAAO,MAAM,GAAG,mBAAkB,CAAA;AA2JlC,MAAM,MAAM,MAAM,GAAG;IACjB,UAAU,EAAE;QACR,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KACzB,CAAA;IACD,oBAAoB,CAAC,EAAE;QACnB,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,aAAa,EAAE,MAAM,CAAA;QACrB,cAAc,EAAE,MAAM,CAAA;QACtB,KAAK,EAAE,MAAM,CAAA;KAChB,EAAE,CAAA;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QACrB,IAAI,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IAEH,OAAO,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;KACf,EAAE,CAAA;IACH,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6BAA6B,EAAE,uBAAuB,EAAE,CAAA;IACxD,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAE/B,CAAA;AAED,KAAK,uBAAuB,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;IAEjB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,eAAe,CAAC,EAClC,SAAS,EACT,gBAAiC,EACjC,WAAmB,EACnB,MAAwC,GAC3C;;;;;CAAA;;;;GAuFA"}
|
package/esm/cli.js
CHANGED
|
@@ -7,6 +7,7 @@ import { createClient } from './generated/api-client.js';
|
|
|
7
7
|
import { cac } from 'cac';
|
|
8
8
|
import fs from 'fs';
|
|
9
9
|
import path, { basename } from 'path';
|
|
10
|
+
import { defaultBreakpointSizes } from './css.js';
|
|
10
11
|
import { componentNameToPath, dispatcher, isTruthy, logger, sleep, spinner, } from './utils.js';
|
|
11
12
|
import { notifyError } from './sentry.js';
|
|
12
13
|
const configNames = ['unframer.config.json', 'unframer.json'];
|
|
@@ -36,56 +37,14 @@ cli.command('[projectId]', 'Run unframer with optional project ID')
|
|
|
36
37
|
const signal = controller.signal;
|
|
37
38
|
const watch = options.watch;
|
|
38
39
|
if (projectId) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
const { config, cwd, websiteUrl } = await configFromFetch({
|
|
41
|
+
allExternal,
|
|
42
|
+
externalPackages,
|
|
43
|
+
outDir,
|
|
44
|
+
projectId,
|
|
43
45
|
});
|
|
44
|
-
spinner.start(`Fetching config for project ${projectId}`);
|
|
45
|
-
const { data, error } = await client.api.plugins.reactExportPlugin
|
|
46
|
-
.project({ projectId })
|
|
47
|
-
.get();
|
|
48
|
-
if (error) {
|
|
49
|
-
spinner.error('Error fetching project data:');
|
|
50
|
-
console.error(error);
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
spinner.info(`Got Framer project data`);
|
|
54
|
-
const websiteUrl = data?.project?.websiteUrl;
|
|
55
|
-
const projectName = data?.project?.projectName || '';
|
|
56
|
-
if (projectName) {
|
|
57
|
-
spinner.info(`Using project: ${projectName}`);
|
|
58
|
-
}
|
|
59
|
-
let cwd = path.resolve(process.cwd(), outDir || 'framer');
|
|
60
|
-
logger.log('bundling', cwd);
|
|
61
46
|
const { rebuild, buildContext } = await bundle({
|
|
62
|
-
config
|
|
63
|
-
outDir,
|
|
64
|
-
externalPackages,
|
|
65
|
-
allExternal,
|
|
66
|
-
projectId: data?.project?.projectId,
|
|
67
|
-
projectName,
|
|
68
|
-
fullFramerProjectId: data?.project?.fullFramerProjectId,
|
|
69
|
-
locales: data?.locales,
|
|
70
|
-
components: Object.fromEntries(data.components.map((c) => [
|
|
71
|
-
componentNameToPath(c.name),
|
|
72
|
-
c.url,
|
|
73
|
-
])),
|
|
74
|
-
componentBreakpoints: data.breakpoints
|
|
75
|
-
?.map((b) => {
|
|
76
|
-
const c = data.components.find((c) => c.id === b.componentId);
|
|
77
|
-
if (!c) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
return {
|
|
81
|
-
...b,
|
|
82
|
-
componentName: componentNameToPath(c.name),
|
|
83
|
-
};
|
|
84
|
-
})
|
|
85
|
-
.filter(isTruthy) || [],
|
|
86
|
-
tokens: data.colorStyles,
|
|
87
|
-
framerWebPages: data.framerWebPages || [],
|
|
88
|
-
},
|
|
47
|
+
config,
|
|
89
48
|
watch,
|
|
90
49
|
cwd,
|
|
91
50
|
signal,
|
|
@@ -184,4 +143,75 @@ cli.command('init', 'Init the unframer.config.json config').action(async (option
|
|
|
184
143
|
const p = path.resolve(process.cwd(), 'unframer.config.json');
|
|
185
144
|
console.log(`${p} file created`);
|
|
186
145
|
});
|
|
146
|
+
export async function configFromFetch({ projectId, externalPackages = [], allExternal = false, outDir = undefined, }) {
|
|
147
|
+
logger.log(`Fetching config for project ${projectId}`);
|
|
148
|
+
const url = process.env.UNFRAMER_SERVER_URL;
|
|
149
|
+
if (url) {
|
|
150
|
+
console.log(`using server url ${url}`);
|
|
151
|
+
}
|
|
152
|
+
const client = await createClient({
|
|
153
|
+
url: url || 'https://unframer.co',
|
|
154
|
+
});
|
|
155
|
+
spinner.start(`Fetching config for project ${projectId}`);
|
|
156
|
+
const { data, error } = await client.api.plugins.reactExportPlugin
|
|
157
|
+
.project({ projectId })
|
|
158
|
+
.get();
|
|
159
|
+
if (error) {
|
|
160
|
+
spinner.error('Error fetching project data:');
|
|
161
|
+
console.error(error);
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
spinner.info(`Got Framer project data`);
|
|
165
|
+
const websiteUrl = data?.project?.websiteUrl;
|
|
166
|
+
const projectName = data?.project?.projectName || '';
|
|
167
|
+
if (projectName) {
|
|
168
|
+
spinner.info(`Using project: ${projectName}`);
|
|
169
|
+
}
|
|
170
|
+
let cwd = path.resolve(process.cwd(), outDir || 'framer');
|
|
171
|
+
const indexPage = data?.framerWebPages?.find((x) => x.path === '/');
|
|
172
|
+
const componentInstancesInIndexPage = data.componentInstances
|
|
173
|
+
?.filter((x) => x.webPageId === indexPage?.webPageId)
|
|
174
|
+
.map((x) => {
|
|
175
|
+
const component = data.components.find((c) => {
|
|
176
|
+
return x.componentId === c.id;
|
|
177
|
+
});
|
|
178
|
+
if (!component) {
|
|
179
|
+
console.error(new Error(`cannot find component for instance ${x.componentId}`));
|
|
180
|
+
}
|
|
181
|
+
const componentPathSlug = componentNameToPath(component?.name || '');
|
|
182
|
+
const res = { ...x, componentPathSlug };
|
|
183
|
+
return res;
|
|
184
|
+
})
|
|
185
|
+
.sort((a, b) => {
|
|
186
|
+
return a.pageOrdering - b.pageOrdering;
|
|
187
|
+
}) || [];
|
|
188
|
+
const config = {
|
|
189
|
+
...data,
|
|
190
|
+
breakpoints: defaultBreakpointSizes,
|
|
191
|
+
outDir,
|
|
192
|
+
externalPackages,
|
|
193
|
+
allExternal,
|
|
194
|
+
projectId: data?.project?.projectId,
|
|
195
|
+
projectName,
|
|
196
|
+
fullFramerProjectId: data?.project?.fullFramerProjectId,
|
|
197
|
+
locales: data?.locales,
|
|
198
|
+
components: Object.fromEntries(data.components.map((c) => [componentNameToPath(c.name), c.url])),
|
|
199
|
+
componentBreakpoints: data.breakpoints
|
|
200
|
+
?.map((b) => {
|
|
201
|
+
const c = data.components.find((c) => c.id === b.componentId);
|
|
202
|
+
if (!c) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
...b,
|
|
207
|
+
componentName: componentNameToPath(c.name),
|
|
208
|
+
};
|
|
209
|
+
})
|
|
210
|
+
.filter(isTruthy) || [],
|
|
211
|
+
tokens: data.colorStyles,
|
|
212
|
+
componentInstancesInIndexPage,
|
|
213
|
+
framerWebPages: data.framerWebPages || [],
|
|
214
|
+
};
|
|
215
|
+
return { websiteUrl, cwd, config };
|
|
216
|
+
}
|
|
187
217
|
//# sourceMappingURL=cli.js.map
|
package/esm/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example-code.test.d.ts","sourceRoot":"","sources":["../src/example-code.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { expect, describe, test } from 'vitest';
|
|
2
|
+
import { createExampleComponentCode } from './exporter.js';
|
|
3
|
+
import { configFromFetch } from './cli.js';
|
|
4
|
+
describe('createExampleComponentCode', () => {
|
|
5
|
+
test('should create example component code', async () => {
|
|
6
|
+
const projectId = 'cf755ed7d59e0319';
|
|
7
|
+
const { config } = await configFromFetch({ projectId });
|
|
8
|
+
const { exampleCode } = await createExampleComponentCode({
|
|
9
|
+
config,
|
|
10
|
+
outDir: 'src',
|
|
11
|
+
});
|
|
12
|
+
expect(exampleCode).toMatchInlineSnapshot(`
|
|
13
|
+
"import './src/styles.css'
|
|
14
|
+
|
|
15
|
+
import NavigationFramerComponent from './src/navigation'
|
|
16
|
+
import HeroFramerComponent from './src/hero'
|
|
17
|
+
import PricingBannerFramerComponent from './src/pricing-banner'
|
|
18
|
+
import FooterFramerComponent from './src/footer'
|
|
19
|
+
import FeatureListFramerComponent from './src/feature-list'
|
|
20
|
+
import ServiceSliderFramerComponent from './src/service-slider'
|
|
21
|
+
import SectionTitleFramerComponent from './src/section-title'
|
|
22
|
+
import ButtonFramerComponent from './src/button'
|
|
23
|
+
import BrandLogoFramerComponent from './src/brand-logo'
|
|
24
|
+
import TestmonialItemFramerComponent from './src/testmonial-item'
|
|
25
|
+
import ArticlesCardFramerComponent from './src/articles-card'
|
|
26
|
+
|
|
27
|
+
export default function App() {
|
|
28
|
+
return (
|
|
29
|
+
<div className='flex flex-col'>
|
|
30
|
+
<NavigationFramerComponent.Responsive
|
|
31
|
+
ctaVariant={"ia7uVki50"}
|
|
32
|
+
/>
|
|
33
|
+
<HeroFramerComponent.Responsive/>
|
|
34
|
+
<PricingBannerFramerComponent.Responsive/>
|
|
35
|
+
<FooterFramerComponent.Responsive
|
|
36
|
+
year={"2024"}
|
|
37
|
+
/>
|
|
38
|
+
<FeatureListFramerComponent.Responsive/>
|
|
39
|
+
<ServiceSliderFramerComponent.Responsive/>
|
|
40
|
+
<SectionTitleFramerComponent.Responsive
|
|
41
|
+
text={"We are pioneers in harnessing the power of Blockchain and Web3 technologies to drive innovation, security, and decentralization."}
|
|
42
|
+
title={"Smart Automation"}
|
|
43
|
+
tagline={"Systems and Building Web3"}
|
|
44
|
+
iconVisible={true}
|
|
45
|
+
textVisible={true}
|
|
46
|
+
/>
|
|
47
|
+
<ButtonFramerComponent.Responsive
|
|
48
|
+
link={"/news"}
|
|
49
|
+
buttonTitle={"Read all blog"}
|
|
50
|
+
iconVisibility={true}
|
|
51
|
+
/>
|
|
52
|
+
<BrandLogoFramerComponent.Responsive/>
|
|
53
|
+
<TestmonialItemFramerComponent.Responsive
|
|
54
|
+
name1={"Wade Warren"}
|
|
55
|
+
paragraph={"Security is non-negotiable in the decentralized world, and we take this aspect very seriously. Our solutions are built with a robust emphasis on security, utilizing advanced cryptographic"}
|
|
56
|
+
designation={"Flutter Developer"}
|
|
57
|
+
/>
|
|
58
|
+
<ArticlesCardFramerComponent.Responsive
|
|
59
|
+
date={"Mar 06, 2024 "}
|
|
60
|
+
link={"/news/:slug"}
|
|
61
|
+
title={"Discoveries from Our Thinkers"}
|
|
62
|
+
excerpt={"Experience seamless integration with decentralized applications (DApps)."}
|
|
63
|
+
/>
|
|
64
|
+
</div>
|
|
65
|
+
);
|
|
66
|
+
};"
|
|
67
|
+
`);
|
|
68
|
+
});
|
|
69
|
+
}, 1000 * 10);
|
|
70
|
+
//# sourceMappingURL=example-code.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example-code.test.js","sourceRoot":"","sources":["../src/example-code.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAE1D,OAAO,EAAU,eAAe,EAAE,MAAM,UAAU,CAAA;AAElD,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IACxC,IAAI,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,SAAS,GAAG,kBAAkB,CAAA;QAEpC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;QACvD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,0BAA0B,CAAC;YACrD,MAAM;YACN,MAAM,EAAE,KAAK;SAChB,CAAC,CAAA;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAuDzC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA"}
|
package/esm/exporter.d.ts
CHANGED
|
@@ -14,61 +14,8 @@ export declare function bundle({ config, cwd: out, watch, signal, }: {
|
|
|
14
14
|
watch?: boolean;
|
|
15
15
|
signal?: AbortSignal;
|
|
16
16
|
}): Promise<{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
path: string;
|
|
20
|
-
url: string;
|
|
21
|
-
name: string;
|
|
22
|
-
componentName: string;
|
|
23
|
-
propertyControls: PropertyControls<any, any> | undefined;
|
|
24
|
-
}[];
|
|
25
|
-
}>;
|
|
26
|
-
buildContext: {
|
|
27
|
-
rebuild(): Promise<BuildResult<BuildOptions>>;
|
|
28
|
-
cancel(): void;
|
|
29
|
-
dispose(): void;
|
|
30
|
-
} | import("esbuild").BuildContext<{
|
|
31
|
-
absWorkingDir: string;
|
|
32
|
-
entryPoints: {
|
|
33
|
-
in: string;
|
|
34
|
-
out: string;
|
|
35
|
-
}[];
|
|
36
|
-
jsx: "automatic";
|
|
37
|
-
bundle: true;
|
|
38
|
-
platform: "browser";
|
|
39
|
-
metafile: true;
|
|
40
|
-
format: "esm";
|
|
41
|
-
minify: false;
|
|
42
|
-
treeShaking: true;
|
|
43
|
-
splitting: true;
|
|
44
|
-
logLevel: "error";
|
|
45
|
-
pure: string[];
|
|
46
|
-
external: string[];
|
|
47
|
-
chunkNames: string;
|
|
48
|
-
plugins: import("esbuild").Plugin[];
|
|
49
|
-
write: false;
|
|
50
|
-
outdir: string;
|
|
51
|
-
}>;
|
|
52
|
-
result?: undefined;
|
|
53
|
-
} | {
|
|
54
|
-
result: {
|
|
55
|
-
components: {
|
|
56
|
-
path: string;
|
|
57
|
-
url: string;
|
|
58
|
-
name: string;
|
|
59
|
-
componentName: string;
|
|
60
|
-
propertyControls: PropertyControls<any, any> | undefined;
|
|
61
|
-
}[];
|
|
62
|
-
};
|
|
63
|
-
rebuild: () => Promise<{
|
|
64
|
-
components: {
|
|
65
|
-
path: string;
|
|
66
|
-
url: string;
|
|
67
|
-
name: string;
|
|
68
|
-
componentName: string;
|
|
69
|
-
propertyControls: PropertyControls<any, any> | undefined;
|
|
70
|
-
}[];
|
|
71
|
-
}>;
|
|
17
|
+
result: BundleResult;
|
|
18
|
+
rebuild: () => Promise<BundleResult>;
|
|
72
19
|
buildContext: {
|
|
73
20
|
rebuild(): Promise<BuildResult<BuildOptions>>;
|
|
74
21
|
cancel(): void;
|
|
@@ -126,5 +73,20 @@ type ExtractedTokenInfo = {
|
|
|
126
73
|
};
|
|
127
74
|
export declare function extractTokenInfo(code: string): ExtractedTokenInfo[];
|
|
128
75
|
export declare function componentCamelCase(str: string): string;
|
|
76
|
+
export declare function createExampleComponentCode({ outDir, config, }: {
|
|
77
|
+
outDir: string;
|
|
78
|
+
config: Config;
|
|
79
|
+
}): Promise<{
|
|
80
|
+
exampleCode: string;
|
|
81
|
+
}>;
|
|
82
|
+
type BundleResult = {
|
|
83
|
+
components: Array<{
|
|
84
|
+
componentPathSlug: string;
|
|
85
|
+
name: string;
|
|
86
|
+
url: string;
|
|
87
|
+
componentName: string;
|
|
88
|
+
propertyControls?: PropertyControls;
|
|
89
|
+
}>;
|
|
90
|
+
};
|
|
129
91
|
export {};
|
|
130
92
|
//# sourceMappingURL=exporter.d.ts.map
|
package/esm/exporter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAIxE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAU9B,OAAO,EACH,mBAAmB,EAOtB,MAAM,UAAU,CAAA;AAMjB,OAAO,EAGH,gBAAgB,EAEnB,MAAM,aAAa,CAAA;AAYpB,MAAM,MAAM,UAAU,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,MAAM,CAAC,EACzB,MAAM,EACN,GAAG,EAAE,GAAQ,EACb,KAAa,EACb,MAA6C,GAChD,EAAE;IACC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,WAAW,CAAA;CACvB
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../src/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAIxE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAU9B,OAAO,EACH,mBAAmB,EAOtB,MAAM,UAAU,CAAA;AAMjB,OAAO,EAGH,gBAAgB,EAEnB,MAAM,aAAa,CAAA;AAYpB,MAAM,MAAM,UAAU,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAsB,MAAM,CAAC,EACzB,MAAM,EACN,GAAG,EAAE,GAAQ,EACb,KAAa,EACb,MAA6C,GAChD,EAAE;IACC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,WAAW,CAAA;CACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6fA;AAID,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;;;CAAA,+BAiC1C;AAED,wBAAsB,oBAAoB,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,iBAclE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACtC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;CAClB,UAaA;AAED,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,UAAU,EAAE,EACpB,YAAY,GAAE,OAAO,GAAG,OAAiB,UAqD5C;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,YAY7C;AA2ID,wBAAsB,yBAAyB,CAC3C,QAAQ,KAAA,EACR,IAAI,KAAA,GACL,OAAO,CAAC;IACP,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAA;CAChC,CAAC,CAuED;AAWD,wBAAgB,kBAAkB,CAAC,EAC/B,MAAM,EACN,QAAQ,EACR,QAAQ,GACX,EAAE;IACC,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,QAAQ,MAAA;IACR,MAAM,MAAA;CACT,UAoGA;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,iBAqCjD;AAED,KAAK,kBAAkB,GAAG;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE9B,YAAY,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA2DnE;AASD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAY7C;AAsFD,wBAAsB,0BAA0B,CAAC,EAC7C,MAAM,EACN,MAAM,GACT,EAAE;IACC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACjB;;GA2DA;AAED,KAAK,YAAY,GAAG;IAChB,UAAU,EAAE,KAAK,CAAC;QACd,iBAAiB,EAAE,MAAM,CAAA;QACzB,IAAI,EAAE,MAAM,CAAA;QACZ,GAAG,EAAE,MAAM,CAAA;QACX,aAAa,EAAE,MAAM,CAAA;QACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;KACtC,CAAC,CAAA;CACL,CAAA"}
|
package/esm/exporter.js
CHANGED
|
@@ -342,7 +342,7 @@ export async function bundle({ config, cwd: out = '', watch = false, signal = un
|
|
|
342
342
|
components: Object.entries(components).map(([name, v]) => {
|
|
343
343
|
const propControls = propControlsData.find((x) => x?.name === name);
|
|
344
344
|
return {
|
|
345
|
-
|
|
345
|
+
componentPathSlug: name,
|
|
346
346
|
url: v,
|
|
347
347
|
name,
|
|
348
348
|
componentName: componentCamelCase(name),
|
|
@@ -375,73 +375,13 @@ export async function bundle({ config, cwd: out = '', watch = false, signal = un
|
|
|
375
375
|
const result = await rebuild();
|
|
376
376
|
console.log();
|
|
377
377
|
console.log();
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
return -1;
|
|
386
|
-
if (!aHasBreakpoints && bHasBreakpoints)
|
|
387
|
-
return 1;
|
|
388
|
-
// Within each group, prefer components with example properties
|
|
389
|
-
const aProp = findExampleProperty(a.propertyControls);
|
|
390
|
-
const bProp = findExampleProperty(b.propertyControls);
|
|
391
|
-
return (bProp ? 1 : 0) - (aProp ? 1 : 0);
|
|
392
|
-
})?.[0];
|
|
393
|
-
if (!exampleComponent) {
|
|
394
|
-
logger.log(`No example component found with breakpoints, using random example`);
|
|
395
|
-
// Create an example component if none found with breakpoints
|
|
396
|
-
exampleComponent = {
|
|
397
|
-
path: 'hero',
|
|
398
|
-
componentName: 'HeroFramerComponent',
|
|
399
|
-
propertyControls: {
|
|
400
|
-
variant: {
|
|
401
|
-
type: ControlType.Enum,
|
|
402
|
-
options: ['Desktop', 'Tablet', 'Mobile'],
|
|
403
|
-
optionTitles: ['Desktop', 'Tablet', 'Mobile'],
|
|
404
|
-
},
|
|
405
|
-
},
|
|
406
|
-
name: 'Hero',
|
|
407
|
-
url: '',
|
|
408
|
-
};
|
|
409
|
-
if (!exampleComponent) {
|
|
410
|
-
return { rebuild, buildContext };
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
const outDirForExample = path.posix
|
|
414
|
-
.relative(process.cwd(), out)
|
|
415
|
-
.replace(/^src\//, ''); // remove src so file works inside src
|
|
416
|
-
logger.log('exampleComponent?.propertyControls', exampleComponent?.propertyControls);
|
|
417
|
-
const prop = findExampleProperty(exampleComponent?.propertyControls);
|
|
418
|
-
const propStr = prop ? ` ${prop}='example'` : '';
|
|
419
|
-
const responsiveComponent = dedent `
|
|
420
|
-
{/* use .Responsive for components with breakpoints */}
|
|
421
|
-
<${exampleComponent?.componentName}.Responsive${propStr} />
|
|
422
|
-
`;
|
|
423
|
-
const nonResponsiveComponent = dedent `
|
|
424
|
-
<${exampleComponent?.componentName}
|
|
425
|
-
${prop}='example'
|
|
426
|
-
style={{ width: '100%' }}
|
|
427
|
-
/>
|
|
428
|
-
`;
|
|
429
|
-
const exampleCode = dedent `
|
|
430
|
-
import './${outDirForExample}/styles.css'
|
|
431
|
-
// this file imported below is generated when you run \`npm run framer\`
|
|
432
|
-
import ${exampleComponent?.componentName} from './${outDirForExample}/${exampleComponent?.path}'
|
|
433
|
-
|
|
434
|
-
export default function App() {
|
|
435
|
-
return (
|
|
436
|
-
<div className='flex flex-col'>
|
|
437
|
-
${responsiveComponent
|
|
438
|
-
.split('\n')
|
|
439
|
-
.map((line, i) => (!i ? line : ' ' + line))
|
|
440
|
-
.join('\n')}
|
|
441
|
-
</div>
|
|
442
|
-
);
|
|
443
|
-
};
|
|
444
|
-
`;
|
|
378
|
+
const outDirForExample = path.posix.relative(process.cwd(), out).replace(/^src\//, '') ||
|
|
379
|
+
'framer'; // remove src so file works inside src
|
|
380
|
+
const { exampleCode } = await createExampleComponentCode({
|
|
381
|
+
outDir: out,
|
|
382
|
+
// buildResult: result,
|
|
383
|
+
config,
|
|
384
|
+
});
|
|
445
385
|
if (stackblitzDemoExample) {
|
|
446
386
|
logger.log(`Inside Stackblitz demo, writing App.tsx`);
|
|
447
387
|
await fs.promises.mkdir(path.dirname(stackblitzDemoExample), {
|
|
@@ -1006,4 +946,63 @@ async function recursiveReaddir(dir) {
|
|
|
1006
946
|
}));
|
|
1007
947
|
return files.flat();
|
|
1008
948
|
}
|
|
949
|
+
function indentWithTabs(str, tabs) {
|
|
950
|
+
return str
|
|
951
|
+
.split('\n')
|
|
952
|
+
.map((line, i) => (!i ? line : tabs + line))
|
|
953
|
+
.join('\n');
|
|
954
|
+
}
|
|
955
|
+
export async function createExampleComponentCode({ outDir, config, }) {
|
|
956
|
+
const outDirForExample = path.posix
|
|
957
|
+
.relative(process.cwd(), outDir)
|
|
958
|
+
.replace(/^src\//, ''); // remove src so file works inside src
|
|
959
|
+
const instances = config?.componentInstancesInIndexPage.sort((a, b) => {
|
|
960
|
+
// Order first by nodeDepth (lower is better)
|
|
961
|
+
return a.nodeDepth - b.nodeDepth || a.pageOrdering - b.pageOrdering;
|
|
962
|
+
});
|
|
963
|
+
const imports = instances.map((exampleComponent) => {
|
|
964
|
+
return `import ${componentCamelCase(exampleComponent?.componentPathSlug)} from './${outDirForExample}/${exampleComponent?.componentPathSlug}'`;
|
|
965
|
+
});
|
|
966
|
+
const jsx = instances.map((exampleComponent) => {
|
|
967
|
+
let propStr = '';
|
|
968
|
+
for (let [key, value] of Object.entries(exampleComponent.controls || {})) {
|
|
969
|
+
if (key === 'variant') {
|
|
970
|
+
continue;
|
|
971
|
+
}
|
|
972
|
+
if (typeof value === 'object') {
|
|
973
|
+
continue;
|
|
974
|
+
}
|
|
975
|
+
// TODO get property controls to render enums much better? maybe do this in plugin instead
|
|
976
|
+
propStr += '\n';
|
|
977
|
+
propStr += ` ${key}={${JSON.stringify(value)}}`;
|
|
978
|
+
}
|
|
979
|
+
if (propStr)
|
|
980
|
+
propStr += '\n';
|
|
981
|
+
const responsiveComponent = dedent `
|
|
982
|
+
<${componentCamelCase(exampleComponent?.componentPathSlug)}.Responsive${propStr}/>
|
|
983
|
+
`;
|
|
984
|
+
return responsiveComponent;
|
|
985
|
+
});
|
|
986
|
+
let containerClasses = '';
|
|
987
|
+
if (config.pageBackgroundColor) {
|
|
988
|
+
let bg = config.pageBackgroundColor?.replace(' ', '_');
|
|
989
|
+
containerClasses += `bg-[${bg}]`;
|
|
990
|
+
}
|
|
991
|
+
const exampleCode = dedent `
|
|
992
|
+
import './${outDirForExample}/styles.css'
|
|
993
|
+
|
|
994
|
+
${indentWithTabs(imports.join('\n'), '')}
|
|
995
|
+
|
|
996
|
+
export default function App() {
|
|
997
|
+
return (
|
|
998
|
+
<div className='flex flex-col items-center gap-3 ${containerClasses}'>
|
|
999
|
+
${indentWithTabs(jsx.join('\n'), ' ')}
|
|
1000
|
+
</div>
|
|
1001
|
+
);
|
|
1002
|
+
};
|
|
1003
|
+
`;
|
|
1004
|
+
return {
|
|
1005
|
+
exampleCode,
|
|
1006
|
+
};
|
|
1007
|
+
}
|
|
1009
1008
|
//# sourceMappingURL=exporter.js.map
|