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.
Files changed (55) hide show
  1. package/dist/cli.d.ts +21 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +79 -48
  4. package/dist/cli.js.map +1 -1
  5. package/dist/example-code.test.d.ts +2 -0
  6. package/dist/example-code.test.d.ts.map +1 -0
  7. package/dist/example-code.test.js +72 -0
  8. package/dist/example-code.test.js.map +1 -0
  9. package/dist/exporter.d.ts +17 -55
  10. package/dist/exporter.d.ts.map +1 -1
  11. package/dist/exporter.js +68 -68
  12. package/dist/exporter.js.map +1 -1
  13. package/dist/framer.d.ts.map +1 -1
  14. package/dist/framer.js +99 -53
  15. package/dist/framer.js.map +1 -1
  16. package/dist/generated/api-client.js +0 -1
  17. package/dist/generated/api-client.js.map +1 -1
  18. package/dist/generated/api-client.test.js +0 -69
  19. package/dist/generated/api-client.test.js.map +1 -1
  20. package/dist/version.d.ts +1 -1
  21. package/dist/version.js +1 -1
  22. package/esm/cli.d.ts +21 -0
  23. package/esm/cli.d.ts.map +1 -1
  24. package/esm/cli.js +78 -48
  25. package/esm/cli.js.map +1 -1
  26. package/esm/example-code.test.d.ts +2 -0
  27. package/esm/example-code.test.d.ts.map +1 -0
  28. package/esm/example-code.test.js +70 -0
  29. package/esm/example-code.test.js.map +1 -0
  30. package/esm/exporter.d.ts +17 -55
  31. package/esm/exporter.d.ts.map +1 -1
  32. package/esm/exporter.js +67 -68
  33. package/esm/exporter.js.map +1 -1
  34. package/esm/framer.d.ts.map +1 -1
  35. package/esm/framer.js +99 -53
  36. package/esm/framer.js.map +1 -1
  37. package/esm/generated/api-client.js +0 -1
  38. package/esm/generated/api-client.js.map +1 -1
  39. package/esm/generated/api-client.test.d.ts +0 -1
  40. package/esm/generated/api-client.test.js +1 -69
  41. package/esm/generated/api-client.test.js.map +1 -1
  42. package/esm/version.d.ts +1 -1
  43. package/esm/version.js +1 -1
  44. package/package.json +4 -4
  45. package/src/{cli.tsx → cli.ts} +114 -64
  46. package/src/example-code.test.ts +72 -0
  47. package/src/exporter.ts +94 -80
  48. package/src/framer.js +128 -79
  49. package/src/generated/api-client.d.ts +1048 -682
  50. package/src/generated/api-client.d.ts.map +1 -1
  51. package/src/generated/api-client.js +5 -6
  52. package/src/generated/api-client.js.map +1 -1
  53. package/src/generated/api-client.test.d.ts +1 -1
  54. package/src/generated/api-client.test.js +1 -69
  55. package/src/version.ts +1 -1
@@ -26,5 +26,4 @@ async function createClient({ url }) {
26
26
  return client;
27
27
  }
28
28
  // export const websiteApiClient = createClient({ url: process.env.PUBLIC_URL! })
29
- //# sourceMappingURL=api-client.js.map
30
29
  //# sourceMappingURL=api-client.js.map
@@ -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,CAAC;IACnE,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;YACP,yFAAyF;aACxF,CAAC;QACN,CAAC;KACJ,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,iFAAiF;AACjF,sCAAsC"}
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":";;AAAA,mCAAsC;AACtC,qCAAwC;AACxC,+BAAyC;AACzC,uDAA4E;AAC5E,sCAA+B;AAC/B,IAAA,aAAI,EAAC,aAAa,EAAE,KAAK,IAAI,EAAE;IAC3B,MAAM,KAAK,GAAG,IAAA,qCAAmB,GAAE,CAAC;IACpC,MAAM,KAAK,GAAG,kBAAkB,CAAC;IACjC,MAAM,QAAQ,GAAG,mBAAmB,CAAC;IACrC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAC7D,KAAK;QACL,QAAQ;QACR,aAAa,EAAE,IAAI;KACtB,CAAC,CAAC;IACH,iCAAiC;IACjC,MAAM,QAAQ,GAAG,IAAA,oCAAkB,GAAE,CAAC;IACtC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAC3D,KAAK;QACL,QAAQ;KACX,CAAC,CAAC;IACH,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC;QACxB,GAAG,EAAE,oBAAoB,SAAG,CAAC,IAAI,EAAE;QACnC,OAAO;QACP,WAAW,EAAX,iBAAW;KACd,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAA,eAAM,EAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC;;;;KAIlC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AACH,IAAA,aAAI,EAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;IACjD,MAAM,KAAK,GAAG,IAAA,qCAAmB,GAAE,CAAC;IACpC,MAAM,KAAK,GAAG,0BAA0B,CAAC;IACzC,MAAM,QAAQ,GAAG,SAAG,CAAC,qBAAqB,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,WAAE;SAChB,UAAU,CAAC,YAAY,CAAC;SACxB,SAAS,EAAE;SACX,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC;SAC1B,gBAAgB,EAAE,CAAC;IACxB,oDAAoD;IACpD,wEAAwE;IACxE,gBAAgB;IAChB,oBAAoB;IACpB,IAAI;IACJ,iCAAiC;IACjC,MAAM,QAAQ,GAAG,IAAA,oCAAkB,GAAE,CAAC;IACtC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC;QAC3D,KAAK;QACL,QAAQ;KACX,CAAC,CAAC;IACH,IAAA,eAAM,EAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC;QACxB,GAAG,EAAE,oBAAoB,SAAG,CAAC,IAAI,EAAE;QACnC,OAAO;QACP,WAAW,EAAX,iBAAW;KACd,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,IAAA,eAAM,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAA,eAAM,EAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC"}
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.3";
1
+ export declare const version = "2.25.4";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = '2.25.3';
4
+ exports.version = '2.25.4';
5
5
  //# sourceMappingURL=version.js.map
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.tsx"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAA;AAEpB,OAAO,EAAU,UAAU,EAAE,MAAM,eAAe,CAAA;AAOlD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAY1C,eAAO,MAAM,GAAG,mBAAkB,CAAA;AAoNlC,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;CAClB,CAAA"}
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
- logger.log(`Fetching config for project ${projectId}`);
40
- const client = await createClient({
41
- url: process.env.UNFRAMER_SERVER_URL ||
42
- 'https://unframer.co',
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.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=example-code.test.d.ts.map
@@ -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
- rebuild: () => Promise<{
18
- components: {
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
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkkBA;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"}
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
- path: name,
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
- let exampleComponent = result?.components?.sort((a, b) => {
379
- const aVariants = getVariantsFromPropControls(a.propertyControls);
380
- const bVariants = getVariantsFromPropControls(b.propertyControls);
381
- const aHasBreakpoints = (aVariants?.breakpoints?.length || 0) >= 2;
382
- const bHasBreakpoints = (bVariants?.breakpoints?.length || 0) >= 2;
383
- // Sort components with breakpoints first
384
- if (aHasBreakpoints && !bHasBreakpoints)
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