unframer 2.2.2 → 2.4.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.
Files changed (52) hide show
  1. package/README.md +17 -3
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +62 -16
  4. package/dist/cli.js.map +1 -1
  5. package/dist/css.d.ts +10 -9
  6. package/dist/css.d.ts.map +1 -1
  7. package/dist/css.js +20 -16
  8. package/dist/css.js.map +1 -1
  9. package/dist/exporter.d.ts +9 -1
  10. package/dist/exporter.d.ts.map +1 -1
  11. package/dist/exporter.js +2 -2
  12. package/dist/exporter.js.map +1 -1
  13. package/dist/framer.d.ts.map +1 -1
  14. package/dist/framer.js +7300 -6415
  15. package/dist/framer.js.map +1 -1
  16. package/dist/react.d.ts +2 -2
  17. package/dist/react.d.ts.map +1 -1
  18. package/dist/react.js +5 -3
  19. package/dist/react.js.map +1 -1
  20. package/dist/utils.d.ts +1 -0
  21. package/dist/utils.d.ts.map +1 -1
  22. package/dist/utils.js +3 -0
  23. package/dist/utils.js.map +1 -1
  24. package/esm/cli.d.ts.map +1 -1
  25. package/esm/cli.js +39 -16
  26. package/esm/cli.js.map +1 -1
  27. package/esm/css.d.ts +10 -9
  28. package/esm/css.d.ts.map +1 -1
  29. package/esm/css.js +12 -9
  30. package/esm/css.js.map +1 -1
  31. package/esm/exporter.d.ts +9 -1
  32. package/esm/exporter.d.ts.map +1 -1
  33. package/esm/exporter.js +2 -2
  34. package/esm/exporter.js.map +1 -1
  35. package/esm/framer.d.ts.map +1 -1
  36. package/esm/framer.js +7278 -6398
  37. package/esm/framer.js.map +1 -1
  38. package/esm/react.d.ts +2 -2
  39. package/esm/react.d.ts.map +1 -1
  40. package/esm/react.js +6 -4
  41. package/esm/react.js.map +1 -1
  42. package/esm/utils.d.ts +1 -0
  43. package/esm/utils.d.ts.map +1 -1
  44. package/esm/utils.js +3 -0
  45. package/esm/utils.js.map +1 -1
  46. package/package.json +15 -4
  47. package/src/cli.tsx +48 -17
  48. package/src/css.ts +25 -20
  49. package/src/exporter.ts +3 -1
  50. package/src/framer.js +13178 -11810
  51. package/src/react.tsx +11 -6
  52. package/src/utils.ts +3 -0
package/esm/react.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ComponentType } from 'react';
2
- import { breakpointSizes } from './css.js';
3
- export type UnframerBreakpoint = keyof typeof breakpointSizes;
2
+ import { defaultBreakpointSizes } from './css.js';
3
+ export type UnframerBreakpoint = keyof typeof defaultBreakpointSizes;
4
4
  /**
5
5
  * @deprecated Use styles.css import instead
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEH,aAAa,EAKhB,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,eAAe,EAAqC,MAAM,UAAU,CAAA;AAW7E,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,eAAe,CAAA;AA+B7D;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,UAAwB,EAAE;;CAAA,GAAG,GAAG,CAiD9D;AAED,eAAO,MAAM,qBAAqB;;kBACM,GAAG;;;;;cAAH,GAAG;;uDA2EzC,CAAA"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAGA,OAAO,EAEH,aAAa,EAKhB,MAAM,OAAO,CAAA;AACd,OAAO,EAEH,sBAAsB,EAEzB,MAAM,UAAU,CAAA;AAWjB,MAAM,MAAM,kBAAkB,GAAG,MAAM,OAAO,sBAAsB,CAAA;AA8BpE;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,UAAwB,EAAE;;CAAA,GAAG,GAAG,CAmD9D;AAED,eAAO,MAAM,qBAAqB;;kBACM,GAAG;;;;;cAAH,GAAG;;uDA2EzC,CAAA"}
package/esm/react.js CHANGED
@@ -13,14 +13,14 @@ var __rest = (this && this.__rest) || function (s, e) {
13
13
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
14
14
  import { combinedCSSRules } from './framer';
15
15
  import { forwardRef, useId, useMemo, useSyncExternalStore, } from 'react';
16
- import { breakpointSizes, breakpointsStyles, getFontsStyles } from './css.js';
16
+ import { breakpointsStyles, defaultBreakpointSizes, getFontsStyles, } from './css.js';
17
17
  function classNames(...args) {
18
18
  return args.filter(Boolean).join(' ');
19
19
  }
20
20
  // breakpoints from the higher to the lower
21
- const defaultBreakpoints = Object.keys(breakpointSizes).reverse();
21
+ const defaultBreakpoints = Object.keys(defaultBreakpointSizes).reverse();
22
22
  function getBreakpointNameFromWindowWidth(windowWidth) {
23
- return defaultBreakpoints.find((name) => windowWidth >= breakpointSizes[name]);
23
+ return defaultBreakpoints.find((name) => windowWidth >= defaultBreakpointSizes[name]);
24
24
  }
25
25
  function fillBreakpoints(breakpoints) {
26
26
  const breakpointsOrder = ['base', 'sm', 'md', 'lg', 'xl', '2xl'];
@@ -43,7 +43,9 @@ const nothing = () => {
43
43
  */
44
44
  export function FramerStyles({ Components = [] }) {
45
45
  const isClient = useSyncExternalStore(nothing, () => true, () => false);
46
- const breakpoints = (_jsx("style", { dangerouslySetInnerHTML: { __html: breakpointsStyles }, suppressHydrationWarning: true, hidden: true }, 'breakpointsStyles'));
46
+ const breakpoints = (_jsx("style", { dangerouslySetInnerHTML: {
47
+ __html: breakpointsStyles(defaultBreakpointSizes),
48
+ }, suppressHydrationWarning: true, hidden: true }, 'breakpointsStyles'));
47
49
  const fonts = (_jsx("style", { dangerouslySetInnerHTML: {
48
50
  __html: getFontsStyles(Components.map((x) => x.fonts || []).flat()),
49
51
  }, suppressHydrationWarning: true, hidden: true }, 'fonts'));
package/esm/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"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"}
package/esm/utils.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export declare const logger: {
2
2
  log(...args: any[]): void;
3
+ green(...args: any[]): void;
3
4
  error(...args: any[]): void;
4
5
  };
5
6
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;CAOlB,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;;CAUlB,CAAA"}
package/esm/utils.js CHANGED
@@ -4,6 +4,9 @@ export const logger = {
4
4
  log(...args) {
5
5
  console.log(prefix, ...args);
6
6
  },
7
+ green(...args) {
8
+ console.log([prefix, ...args].map((x) => pico.green(x)).join(' '));
9
+ },
7
10
  error(...args) {
8
11
  console.error([prefix, ...args].map((x) => pico.red(x)).join(' '));
9
12
  },
package/esm/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,YAAY,CAAA;AAE7B,MAAM,MAAM,GAAG,YAAY,CAAA;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,GAAG,CAAC,GAAG,IAAI;QACP,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IAChC,CAAC;IACD,KAAK,CAAC,GAAG,IAAI;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACtE,CAAC;CACJ,CAAA"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,YAAY,CAAA;AAE7B,MAAM,MAAM,GAAG,YAAY,CAAA;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,GAAG,CAAC,GAAG,IAAI;QACP,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IAChC,CAAC;IACD,KAAK,CAAC,GAAG,IAAI;QACT,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACtE,CAAC;IACD,KAAK,CAAC,GAAG,IAAI;QACT,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACtE,CAAC;CACJ,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "unframer",
3
- "version": "2.2.2",
4
- "description": "",
3
+ "version": "2.4.0",
4
+ "description": "Import Framer components directly in your React app, type safe and customizable",
5
5
  "sideEffects": false,
6
6
  "repository": "https://github.com/remorses/unframer",
7
7
  "bin": "bin.js",
@@ -44,16 +44,27 @@
44
44
  "json5": "^2.2.3",
45
45
  "native-fetch": "^4.0.2",
46
46
  "picocolors": "^1.0.0",
47
- "real-framer-motion": "npm:framer-motion@11.0.14",
47
+ "real-framer-motion": "npm:framer-motion@11.1.7",
48
48
  "tmp": "^0.2.1"
49
49
  },
50
50
  "devDependencies": {
51
+ "@babel/core": "^7.24.5",
52
+ "@babel/helper-annotate-as-pure": "^7.22.5",
53
+ "@babel/helper-environment-visitor": "^7.22.20",
54
+ "@babel/helper-split-export-declaration": "^7.24.5",
55
+ "@babel/plugin-transform-react-pure-annotations": "^7.24.1",
56
+ "@babel/traverse": "^7.24.5",
57
+ "@babel/types": "^7.24.5",
58
+ "@types/babel__core": "^7.20.5",
59
+ "@types/babel__traverse": "^7.20.5",
51
60
  "@types/fs-extra": "^11.0.1",
52
61
  "@types/node": "^20.5.7",
53
62
  "@xmorse/deployment-utils": "^0.1.0",
63
+ "openai": "^4.40.2",
54
64
  "posthtml": "^0.16.6",
55
65
  "react": "^18.3.0",
56
- "react-dom": "^18.3.0"
66
+ "react-dom": "^18.3.0",
67
+ "tiktoken": "^1.0.14"
57
68
  },
58
69
  "scripts": {
59
70
  "build": "rm -rf dist && tsc -m esnext --outDir esm && tsc && cp ../README.md ./README.md && cp ./src/framer.d.ts ./dist/framer.d.ts && cp ./src/framer.d.ts ./esm/framer.d.ts",
package/src/cli.tsx CHANGED
@@ -6,34 +6,42 @@ import chokidar from 'chokidar'
6
6
  import fs from 'fs-extra'
7
7
  import findUp from 'find-up'
8
8
  import tmp from 'tmp'
9
- import path from 'path'
10
- const configName = 'unframer.json'
9
+ import path, { basename } from 'path'
10
+ const configNames = ['unframer.config.json', 'unframer.json']
11
11
  import { cac } from 'cac'
12
12
  import { logger } from './utils.js'
13
+ import { BreakpointSizes } from './css.js'
13
14
 
14
15
  export const cli = cac()
15
16
 
16
17
  cli.command('', 'Run unframer')
17
- .option('--watch', 'Watch for Framer and unframer.json changes')
18
+ .option('--watch', 'Watch for Framer and unframer.config.json changes')
18
19
  .action(async function main(options) {
20
+ fixOldUnframerPath()
19
21
  const cwd = process.cwd()
20
22
  const watch = process.argv.includes('--watch')
21
- logger.log(`Looking for ${configName} in ${cwd}`)
22
- const configPath = await findUp([configName], { cwd })
23
+ logger.log(`Looking for ${configNames.join(', ')} in ${cwd}`)
24
+ const configPath = await findUp(configNames, { cwd })
23
25
  if (!configPath) {
24
- logger.log(`No ${configName} found`)
26
+ logger.log(`No ${configNames.join(', ')} found`)
25
27
  return
26
28
  }
29
+ let configBasename = basename(configPath!)
27
30
  const configContent = fs.readFileSync(configPath, 'utf8')
28
31
  if (!configContent) {
29
- logger.log(`No ${configName} contents found`)
32
+ logger.log(`No ${configBasename} contents found`)
30
33
  return
31
34
  }
32
35
  let config = JSON.parse(configContent)
33
36
 
34
37
  let controller = new AbortController()
35
38
  setMaxListeners(0, controller.signal)
36
- processConfig({ config, watch, signal: controller.signal })
39
+ processConfig({
40
+ config,
41
+ watch,
42
+ signal: controller.signal,
43
+ configBasename,
44
+ })
37
45
  if (!watch) {
38
46
  return
39
47
  }
@@ -43,7 +51,7 @@ cli.command('', 'Run unframer')
43
51
  })
44
52
 
45
53
  watcher.on('change', async (path) => {
46
- logger.log(`${configName} changed`)
54
+ logger.log(`${configBasename} changed`)
47
55
  console.log()
48
56
  controller.abort()
49
57
 
@@ -54,7 +62,7 @@ cli.command('', 'Run unframer')
54
62
  fs.readFileSync(configPath!, 'utf8'),
55
63
  )
56
64
  if (!newConfig) {
57
- logger.log(`Invalid ${configName} file`)
65
+ logger.log(`Invalid ${configBasename} file`)
58
66
  return
59
67
  }
60
68
  const newNames = getNewNames(config, newConfig)
@@ -66,6 +74,7 @@ cli.command('', 'Run unframer')
66
74
  components: pluck(newConfig.components, newNames),
67
75
  },
68
76
  watch,
77
+ configBasename,
69
78
  // signal: controller.signal,
70
79
  })
71
80
  }
@@ -83,11 +92,29 @@ const defaultConfig = `{
83
92
  }
84
93
  `
85
94
 
86
- cli.command('init', 'Init the unframer.json config').action(async (options) => {
87
- fs.writeFileSync(`unframer.json`, defaultConfig)
88
- const p = path.resolve(process.cwd(), 'unframer.json')
89
- console.log(`${p} file created`)
90
- })
95
+ function fixOldUnframerPath() {
96
+ // if unframer.json exists, rename it to unframer.config.json
97
+
98
+ const oldConfigPath = fs.existsSync('unframer.json')
99
+ if (oldConfigPath) {
100
+ fs.renameSync('unframer.json', 'unframer.config.json')
101
+ logger.green('legacy unframer.json config renamed to unframer.config.json')
102
+ return true
103
+ }
104
+ return false
105
+ }
106
+
107
+ cli.command('init', 'Init the unframer.config.json config').action(
108
+ async (options) => {
109
+ let fixed = fixOldUnframerPath()
110
+ if (fixed) {
111
+ return
112
+ }
113
+ fs.writeFileSync(`unframer.config.json`, defaultConfig)
114
+ const p = path.resolve(process.cwd(), 'unframer.config.json')
115
+ console.log(`${p} file created`)
116
+ },
117
+ )
91
118
 
92
119
  cli.help()
93
120
 
@@ -123,27 +150,31 @@ type Config = {
123
150
  components: {
124
151
  [name: string]: string
125
152
  }
153
+ breakpoints?: BreakpointSizes
126
154
  outDir?: string
127
155
  }
128
156
  async function processConfig({
129
157
  config,
130
158
  watch,
131
159
  signal,
160
+ configBasename,
132
161
  }: {
133
162
  config: Config
134
163
  watch: boolean
164
+ configBasename: string
135
165
  signal?: AbortSignal
136
166
  }) {
137
167
  try {
138
- const { components, outDir } = config || {}
168
+ const { components, breakpoints, outDir } = config || {}
139
169
  const installDir = path.resolve(process.cwd(), outDir || 'framer')
140
170
  if (!components) {
141
- logger.log(`No components found in ${configName}`)
171
+ logger.log(`No components found in ${configBasename}`)
142
172
  return
143
173
  }
144
174
 
145
175
  await bundle({
146
176
  components,
177
+ breakpoints,
147
178
  cwd: installDir,
148
179
  watch,
149
180
  signal,
package/src/css.ts CHANGED
@@ -1,15 +1,6 @@
1
1
  import dedent from 'dedent'
2
2
  import { ComponentFont } from './framer.js'
3
3
 
4
- export const breakpointSizes = {
5
- base: 0,
6
- sm: 320,
7
- md: 768,
8
- lg: 960,
9
- xl: 1200,
10
- '2xl': 1536,
11
- } as const
12
-
13
4
  function deduplicateByKey<T>(arr: T[], key: (k: T) => string): T[] {
14
5
  let map = new Map()
15
6
  for (let item of arr) {
@@ -121,11 +112,24 @@ export function getFontsStyles(_fontsDefs: ComponentFontBundle[]) {
121
112
  return str
122
113
  }
123
114
 
124
- export const breakpointsStyles = /* css */ `
115
+ export const defaultBreakpointSizes = {
116
+ base: 0,
117
+ sm: 320,
118
+ md: 768,
119
+ lg: 960,
120
+ xl: 1200,
121
+ '2xl': 1536,
122
+ } as const
123
+
124
+ export type BreakpointSizes = typeof defaultBreakpointSizes
125
+
126
+ export const breakpointsStyles = (breakpointSizes?: BreakpointSizes) => {
127
+ breakpointSizes = { ...defaultBreakpointSizes, ...breakpointSizes }
128
+ return /* css */ `
125
129
  /* Base */
126
130
  @media (min-width: ${breakpointSizes.base}px) and (max-width: ${
127
- breakpointSizes.sm - 1
128
- }px) {
131
+ breakpointSizes.sm - 1
132
+ }px) {
129
133
  .unframer-hidden.unframer-base {
130
134
  display: contents;
131
135
  }
@@ -133,8 +137,8 @@ export const breakpointsStyles = /* css */ `
133
137
 
134
138
  /* Small */
135
139
  @media (min-width: ${breakpointSizes.sm}px) and (max-width: ${
136
- breakpointSizes.md - 1
137
- }px) {
140
+ breakpointSizes.md - 1
141
+ }px) {
138
142
  .unframer-hidden.unframer-sm {
139
143
  display: contents;
140
144
  }
@@ -142,8 +146,8 @@ export const breakpointsStyles = /* css */ `
142
146
 
143
147
  /* Medium */
144
148
  @media (min-width: ${breakpointSizes.md}px) and (max-width: ${
145
- breakpointSizes.lg - 1
146
- }px) {
149
+ breakpointSizes.lg - 1
150
+ }px) {
147
151
  .unframer-hidden.unframer-md {
148
152
  display: contents;
149
153
  }
@@ -151,8 +155,8 @@ export const breakpointsStyles = /* css */ `
151
155
 
152
156
  /* Large */
153
157
  @media (min-width: ${breakpointSizes.lg}px) and (max-width: ${
154
- breakpointSizes.xl - 1
155
- }px) {
158
+ breakpointSizes.xl - 1
159
+ }px) {
156
160
  .unframer-hidden.unframer-lg {
157
161
  display: contents;
158
162
  }
@@ -160,8 +164,8 @@ export const breakpointsStyles = /* css */ `
160
164
 
161
165
  /* Extra Large */
162
166
  @media (min-width: ${breakpointSizes.xl}px) and (max-width: ${
163
- breakpointSizes['2xl'] - 1
164
- }px) {
167
+ breakpointSizes['2xl'] - 1
168
+ }px) {
165
169
  .unframer-hidden.unframer-xl {
166
170
  display: contents;
167
171
  }
@@ -178,6 +182,7 @@ export const breakpointsStyles = /* css */ `
178
182
  display: none;
179
183
  }
180
184
  `
185
+ }
181
186
 
182
187
  export function groupBy<T>(arr: T[], key: (x: T) => string) {
183
188
  const map = new Map<string, T[]>()
package/src/exporter.ts CHANGED
@@ -19,6 +19,7 @@ import fs from 'fs'
19
19
  import path from 'path'
20
20
  import { exec, execSync } from 'child_process'
21
21
  import {
22
+ BreakpointSizes,
22
23
  ComponentFontBundle,
23
24
  breakpointsStyles,
24
25
  getFontsStyles,
@@ -45,6 +46,7 @@ export async function bundle({
45
46
  cwd: out = '',
46
47
  watch = false,
47
48
  components = {} as Record<string, string>,
49
+ breakpoints = {} as BreakpointSizes,
48
50
  signal = undefined as AbortSignal | undefined,
49
51
  }) {
50
52
  out ||= path.resolve(process.cwd(), 'example')
@@ -220,7 +222,7 @@ export async function bundle({
220
222
 
221
223
  const cssString =
222
224
  '/* This css file has all the necessary styles to run all your components */\n' +
223
- breakpointsStyles +
225
+ breakpointsStyles(breakpoints) +
224
226
  '\n\n' +
225
227
  combinedCSSRules
226
228
  .map((x) => (x?.startsWith(' ') ? dedent(x) : x))