unframer 4.1.8 → 4.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.
Files changed (162) hide show
  1. package/README.md +5 -5
  2. package/dist/babel-jsx.d.ts +9 -0
  3. package/dist/babel-jsx.d.ts.map +1 -1
  4. package/dist/babel-jsx.js +72 -0
  5. package/dist/babel-jsx.js.map +1 -1
  6. package/dist/cli.d.ts +2 -2
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +262 -42
  9. package/dist/cli.js.map +1 -1
  10. package/dist/css-core.d.ts +50 -0
  11. package/dist/css-core.d.ts.map +1 -0
  12. package/dist/css-core.js +231 -0
  13. package/dist/css-core.js.map +1 -0
  14. package/dist/css.d.ts +9 -43
  15. package/dist/css.d.ts.map +1 -1
  16. package/dist/css.js +9 -232
  17. package/dist/css.js.map +1 -1
  18. package/dist/exporter.d.ts +1 -1
  19. package/dist/exporter.d.ts.map +1 -1
  20. package/dist/exporter.js +72 -11
  21. package/dist/exporter.js.map +1 -1
  22. package/dist/exporter.test.js +78 -0
  23. package/dist/exporter.test.js.map +1 -1
  24. package/dist/framer-chunks/{SqliteDatabase-VAKIICSG-R7ZS6CHH.js → SqliteDatabase-VAKIICSG-OPV4MG3Y.js} +5 -4
  25. package/dist/framer-chunks/{chunk-2DZGP7C2.js → chunk-7ZLQTYXQ.js} +5 -24
  26. package/dist/framer-chunks/chunk-IKQSD2QC.js +10 -0
  27. package/dist/framer-chunks/default-blog-sqlite-7ZHEY3GT-TVGUYU6H.js +7 -0
  28. package/dist/framer-chunks/fontshare-4THNDPMZ-FLLTWCDO.js +7 -0
  29. package/dist/framer-chunks/fontshare-B2QLD7YB-5V3XZJAH.js +7 -0
  30. package/dist/framer-chunks/fontshare-O22OBJ3D-FIG3CRN3.js +7 -0
  31. package/dist/framer-chunks/framer-font-45AI7UCZ-CKGC4MJC.js +7 -0
  32. package/dist/framer-chunks/google-3FCAKCAC-AM34UPJK.js +7 -0
  33. package/dist/framer-chunks/google-3SZHWBC6-2VTQEQ7J.js +7 -0
  34. package/dist/framer-chunks/google-GXDJLGJB-JNEJGCGD.js +7 -0
  35. package/dist/framer-chunks/sqlite-wasm-FGP37EAY-NO5QVZDI.js +7 -0
  36. package/dist/framer-chunks/sqlite3-SISQ6ENZ-5WRKGWTY.js +7 -0
  37. package/dist/framer.d.ts +128 -0
  38. package/dist/framer.js +820 -428
  39. package/dist/plugin-mcp-dist/lib/framer.d.ts +1 -7
  40. package/dist/plugin-mcp-dist/lib/framer.d.ts.map +1 -1
  41. package/dist/plugin-mcp-dist/lib/framer.js +90 -23
  42. package/dist/plugin-mcp-dist/lib/framer.js.map +1 -1
  43. package/dist/plugin-mcp-dist/lib/framer.test.d.ts +2 -0
  44. package/dist/plugin-mcp-dist/lib/framer.test.d.ts.map +1 -0
  45. package/dist/plugin-mcp-dist/lib/framer.test.js +214 -0
  46. package/dist/plugin-mcp-dist/lib/framer.test.js.map +1 -0
  47. package/dist/plugin-mcp-dist/lib/mcp-handlers.d.ts.map +1 -1
  48. package/dist/plugin-mcp-dist/lib/mcp-handlers.js +69 -11
  49. package/dist/plugin-mcp-dist/lib/mcp-handlers.js.map +1 -1
  50. package/dist/plugin-mcp-dist/lib/mcp.test.js +340 -364
  51. package/dist/plugin-mcp-dist/lib/mcp.test.js.map +1 -1
  52. package/dist/plugin-mcp-dist/lib/plugin-websocket.d.ts.map +1 -1
  53. package/dist/plugin-mcp-dist/lib/plugin-websocket.js +0 -3
  54. package/dist/plugin-mcp-dist/lib/plugin-websocket.js.map +1 -1
  55. package/dist/plugin-mcp-dist/lib/react-export.d.ts.map +1 -1
  56. package/dist/plugin-mcp-dist/lib/react-export.js +79 -61
  57. package/dist/plugin-mcp-dist/lib/react-export.js.map +1 -1
  58. package/dist/plugin-mcp-dist/lib/schema.d.ts +8 -0
  59. package/dist/plugin-mcp-dist/lib/schema.d.ts.map +1 -1
  60. package/dist/plugin-mcp-dist/lib/schema.js +18 -1
  61. package/dist/plugin-mcp-dist/lib/schema.js.map +1 -1
  62. package/dist/plugin-mcp-dist/lib/store.d.ts +1 -1
  63. package/dist/plugin-mcp-dist/lib/store.d.ts.map +1 -1
  64. package/dist/plugin-mcp-dist/lib/tunnel-integration.test.d.ts +2 -0
  65. package/dist/plugin-mcp-dist/lib/tunnel-integration.test.d.ts.map +1 -0
  66. package/dist/plugin-mcp-dist/lib/tunnel-integration.test.js +147 -0
  67. package/dist/plugin-mcp-dist/lib/tunnel-integration.test.js.map +1 -0
  68. package/dist/plugin-mcp-dist/lib/tunnel.d.ts +46 -0
  69. package/dist/plugin-mcp-dist/lib/tunnel.d.ts.map +1 -0
  70. package/dist/plugin-mcp-dist/lib/tunnel.js +117 -0
  71. package/dist/plugin-mcp-dist/lib/tunnel.js.map +1 -0
  72. package/dist/plugin-mcp-dist/lib/upstream-socket.d.ts +13 -0
  73. package/dist/plugin-mcp-dist/lib/upstream-socket.d.ts.map +1 -0
  74. package/dist/plugin-mcp-dist/lib/upstream-socket.js +56 -0
  75. package/dist/plugin-mcp-dist/lib/upstream-socket.js.map +1 -0
  76. package/dist/plugin-mcp-dist/lib/upstream-socket.test.d.ts +2 -0
  77. package/dist/plugin-mcp-dist/lib/upstream-socket.test.d.ts.map +1 -0
  78. package/dist/plugin-mcp-dist/lib/upstream-socket.test.js +212 -0
  79. package/dist/plugin-mcp-dist/lib/upstream-socket.test.js.map +1 -0
  80. package/dist/plugin-mcp-dist/lib/utils.d.ts +1 -9
  81. package/dist/plugin-mcp-dist/lib/utils.d.ts.map +1 -1
  82. package/dist/plugin-mcp-dist/lib/utils.js +13 -9
  83. package/dist/plugin-mcp-dist/lib/utils.js.map +1 -1
  84. package/dist/react.d.ts +1 -1
  85. package/dist/react.d.ts.map +1 -1
  86. package/dist/react.js +7 -13
  87. package/dist/react.js.map +1 -1
  88. package/dist/version.d.ts +1 -1
  89. package/dist/version.js +1 -1
  90. package/package.json +7 -8
  91. package/src/babel-jsx.ts +99 -0
  92. package/src/cli.ts +295 -42
  93. package/src/css-core.ts +277 -0
  94. package/src/css.tsx +10 -276
  95. package/src/exporter.test.ts +82 -0
  96. package/src/exporter.ts +92 -11
  97. package/src/framer.d.ts +128 -0
  98. package/src/framer.js +820 -428
  99. package/src/plugin-mcp-dist/lib/framer.d.ts +2 -5
  100. package/src/plugin-mcp-dist/lib/framer.d.ts.map +1 -1
  101. package/src/plugin-mcp-dist/lib/framer.js +90 -23
  102. package/src/plugin-mcp-dist/lib/framer.js.map +1 -1
  103. package/src/plugin-mcp-dist/lib/framer.test.d.ts +2 -0
  104. package/src/plugin-mcp-dist/lib/framer.test.d.ts.map +1 -0
  105. package/src/plugin-mcp-dist/lib/framer.test.js +213 -0
  106. package/src/plugin-mcp-dist/lib/framer.test.js.map +1 -0
  107. package/src/plugin-mcp-dist/lib/mcp-handlers.d.ts +2 -2
  108. package/src/plugin-mcp-dist/lib/mcp-handlers.d.ts.map +1 -1
  109. package/src/plugin-mcp-dist/lib/mcp-handlers.js +69 -11
  110. package/src/plugin-mcp-dist/lib/mcp-handlers.js.map +1 -1
  111. package/src/plugin-mcp-dist/lib/mcp.test.js +340 -364
  112. package/src/plugin-mcp-dist/lib/mcp.test.js.map +1 -1
  113. package/src/plugin-mcp-dist/lib/plugin-websocket.d.ts.map +1 -1
  114. package/src/plugin-mcp-dist/lib/plugin-websocket.js +0 -3
  115. package/src/plugin-mcp-dist/lib/plugin-websocket.js.map +1 -1
  116. package/src/plugin-mcp-dist/lib/react-export.d.ts +1 -1
  117. package/src/plugin-mcp-dist/lib/react-export.d.ts.map +1 -1
  118. package/src/plugin-mcp-dist/lib/react-export.js +79 -61
  119. package/src/plugin-mcp-dist/lib/react-export.js.map +1 -1
  120. package/src/plugin-mcp-dist/lib/schema.d.ts +11 -3
  121. package/src/plugin-mcp-dist/lib/schema.d.ts.map +1 -1
  122. package/src/plugin-mcp-dist/lib/schema.js +18 -1
  123. package/src/plugin-mcp-dist/lib/schema.js.map +1 -1
  124. package/src/plugin-mcp-dist/lib/tunnel-integration.test.d.ts +2 -0
  125. package/src/plugin-mcp-dist/lib/tunnel-integration.test.d.ts.map +1 -0
  126. package/src/plugin-mcp-dist/lib/tunnel-integration.test.js +146 -0
  127. package/src/plugin-mcp-dist/lib/tunnel-integration.test.js.map +1 -0
  128. package/src/plugin-mcp-dist/lib/tunnel.d.ts +55 -0
  129. package/src/plugin-mcp-dist/lib/tunnel.d.ts.map +1 -0
  130. package/src/plugin-mcp-dist/lib/tunnel.js +116 -0
  131. package/src/plugin-mcp-dist/lib/tunnel.js.map +1 -0
  132. package/src/plugin-mcp-dist/lib/upstream-socket.d.ts +28 -0
  133. package/src/plugin-mcp-dist/lib/upstream-socket.d.ts.map +1 -0
  134. package/src/plugin-mcp-dist/lib/upstream-socket.js +55 -0
  135. package/src/plugin-mcp-dist/lib/upstream-socket.js.map +1 -0
  136. package/src/plugin-mcp-dist/lib/upstream-socket.test.d.ts +5 -0
  137. package/src/plugin-mcp-dist/lib/upstream-socket.test.d.ts.map +1 -0
  138. package/src/plugin-mcp-dist/lib/upstream-socket.test.js +211 -0
  139. package/src/plugin-mcp-dist/lib/upstream-socket.test.js.map +1 -0
  140. package/src/plugin-mcp-dist/lib/utils.d.ts +2 -2
  141. package/src/plugin-mcp-dist/lib/utils.d.ts.map +1 -1
  142. package/src/plugin-mcp-dist/lib/utils.js +13 -9
  143. package/src/plugin-mcp-dist/lib/utils.js.map +1 -1
  144. package/src/react.tsx +7 -19
  145. package/src/styles/framer.css +34 -64
  146. package/src/version.ts +1 -1
  147. package/dist/framer-chunks/default-blog-sqlite-7ZHEY3GT-27R5KAAW.js +0 -9
  148. package/dist/framer-chunks/fontshare-4THNDPMZ-BJQGNHXN.js +0 -27099
  149. package/dist/framer-chunks/fontshare-B2QLD7YB-4BZEAA37.js +0 -119
  150. package/dist/framer-chunks/fontshare-O22OBJ3D-ALBQLFE5.js +0 -825
  151. package/dist/framer-chunks/framer-font-45AI7UCZ-LU7DEIDM.js +0 -7
  152. package/dist/framer-chunks/google-3FCAKCAC-P5EL6KGL.js +0 -623876
  153. package/dist/framer-chunks/google-3SZHWBC6-OBXS3UIH.js +0 -1627
  154. package/dist/framer-chunks/google-GXDJLGJB-HHIXFE4M.js +0 -6885
  155. package/dist/framer-chunks/sqlite-wasm-FGP37EAY-HR6PIAJQ.js +0 -11479
  156. package/dist/framer-chunks/sqlite3-SISQ6ENZ-KMXYXSSV.js +0 -9
  157. package/dist/generated/api-client.d.ts +0 -21
  158. package/dist/generated/api-client.d.ts.map +0 -1
  159. package/dist/generated/api-client.js +0 -27
  160. package/dist/generated/api-client.js.map +0 -1
  161. package/src/generated/api-client.d.ts +0 -1238
  162. package/src/generated/api-client.js +0 -26
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Tests upstream socket selection and request/socket matching logic used by the MCP worker.
3
+ */
4
+ import { describe, expect, test } from 'vitest';
5
+ import { matchesPendingRequestSocket, pickActiveUpstreamSocket, } from './upstream-socket.js';
6
+ function createSocket({ attachment, readyState, }) {
7
+ return {
8
+ deserializeAttachment() {
9
+ return attachment;
10
+ },
11
+ readyState,
12
+ };
13
+ }
14
+ describe('pickActiveUpstreamSocket', () => {
15
+ test('prefers most recently connected ready socket', () => {
16
+ const olderSocket = createSocket({
17
+ attachment: {
18
+ role: 'up',
19
+ ids: ['user'],
20
+ connectionId: 'older',
21
+ connectionOrdinal: 1,
22
+ connectedAt: 10,
23
+ readyAcked: true,
24
+ },
25
+ readyState: 1,
26
+ });
27
+ const newerSocket = createSocket({
28
+ attachment: {
29
+ role: 'up',
30
+ ids: ['user'],
31
+ connectionId: 'newer',
32
+ connectionOrdinal: 2,
33
+ connectedAt: 20,
34
+ readyAcked: true,
35
+ },
36
+ readyState: 1,
37
+ });
38
+ expect(pickActiveUpstreamSocket({
39
+ sockets: [olderSocket, newerSocket],
40
+ })).toBe(newerSocket);
41
+ });
42
+ test('ignores connecting and closed sockets', () => {
43
+ const connectingSocket = createSocket({
44
+ attachment: {
45
+ role: 'up',
46
+ ids: ['user'],
47
+ connectionId: 'connecting',
48
+ connectionOrdinal: 3,
49
+ connectedAt: 30,
50
+ readyAcked: true,
51
+ },
52
+ readyState: 0,
53
+ });
54
+ const closedSocket = createSocket({
55
+ attachment: {
56
+ role: 'up',
57
+ ids: ['user'],
58
+ connectionId: 'closed',
59
+ connectionOrdinal: 4,
60
+ connectedAt: 40,
61
+ readyAcked: true,
62
+ },
63
+ readyState: 3,
64
+ });
65
+ const openSocket = createSocket({
66
+ attachment: {
67
+ role: 'up',
68
+ ids: ['user'],
69
+ connectionId: 'open',
70
+ connectionOrdinal: 2,
71
+ connectedAt: 20,
72
+ readyAcked: true,
73
+ },
74
+ readyState: 1,
75
+ });
76
+ expect(pickActiveUpstreamSocket({
77
+ sockets: [connectingSocket, closedSocket, openSocket],
78
+ })).toBe(openSocket);
79
+ });
80
+ test('ignores sockets that have not completed ready handshake', () => {
81
+ const unackedNewest = createSocket({
82
+ attachment: {
83
+ role: 'up',
84
+ ids: ['user'],
85
+ connectionId: 'unacked',
86
+ connectionOrdinal: 3,
87
+ connectedAt: 30,
88
+ readyAcked: false,
89
+ },
90
+ readyState: 1,
91
+ });
92
+ const readyOlder = createSocket({
93
+ attachment: {
94
+ role: 'up',
95
+ ids: ['user'],
96
+ connectionId: 'ready',
97
+ connectionOrdinal: 2,
98
+ connectedAt: 20,
99
+ readyAcked: true,
100
+ },
101
+ readyState: 1,
102
+ });
103
+ expect(pickActiveUpstreamSocket({
104
+ sockets: [readyOlder, unackedNewest],
105
+ })).toBe(readyOlder);
106
+ });
107
+ test('treats legacy attachments without readyAcked as usable', () => {
108
+ const legacySocket = createSocket({
109
+ attachment: {
110
+ role: 'up',
111
+ ids: ['user'],
112
+ },
113
+ readyState: 1,
114
+ });
115
+ expect(pickActiveUpstreamSocket({
116
+ sockets: [legacySocket],
117
+ })).toBe(legacySocket);
118
+ });
119
+ test('uses connection ordinal when timestamps are identical', () => {
120
+ const olderSocket = createSocket({
121
+ attachment: {
122
+ role: 'up',
123
+ ids: ['user'],
124
+ connectionId: 'older',
125
+ connectionOrdinal: 1,
126
+ connectedAt: 20,
127
+ readyAcked: true,
128
+ },
129
+ readyState: 1,
130
+ });
131
+ const newerSocket = createSocket({
132
+ attachment: {
133
+ role: 'up',
134
+ ids: ['user'],
135
+ connectionId: 'newer',
136
+ connectionOrdinal: 2,
137
+ connectedAt: 20,
138
+ readyAcked: true,
139
+ },
140
+ readyState: 1,
141
+ });
142
+ expect(pickActiveUpstreamSocket({
143
+ sockets: [olderSocket, newerSocket],
144
+ })).toBe(newerSocket);
145
+ });
146
+ });
147
+ describe('matchesPendingRequestSocket', () => {
148
+ test('matches by connection id before falling back to timestamps', () => {
149
+ expect(matchesPendingRequestSocket({
150
+ attachment: {
151
+ role: 'up',
152
+ ids: ['user'],
153
+ connectionId: 'newer',
154
+ connectionOrdinal: 2,
155
+ connectedAt: 20,
156
+ readyAcked: true,
157
+ },
158
+ pendingRequest: {
159
+ upstreamConnectionId: 'newer',
160
+ upstreamConnectedAt: 10,
161
+ },
162
+ })).toBe(true);
163
+ expect(matchesPendingRequestSocket({
164
+ attachment: {
165
+ role: 'up',
166
+ ids: ['user'],
167
+ connectionId: 'older',
168
+ connectionOrdinal: 1,
169
+ connectedAt: 20,
170
+ readyAcked: true,
171
+ },
172
+ pendingRequest: {
173
+ upstreamConnectionId: 'newer',
174
+ upstreamConnectedAt: 20,
175
+ },
176
+ })).toBe(false);
177
+ });
178
+ test('rejects only requests sent through the closing socket', () => {
179
+ expect(matchesPendingRequestSocket({
180
+ attachment: {
181
+ role: 'up',
182
+ ids: ['user'],
183
+ connectionId: 'current',
184
+ connectionOrdinal: 2,
185
+ connectedAt: 20,
186
+ readyAcked: true,
187
+ },
188
+ pendingRequest: {
189
+ upstreamConnectionId: 'current',
190
+ upstreamConnectionOrdinal: 2,
191
+ upstreamConnectedAt: 20,
192
+ },
193
+ })).toBe(true);
194
+ expect(matchesPendingRequestSocket({
195
+ attachment: {
196
+ role: 'up',
197
+ ids: ['user'],
198
+ connectionId: 'older',
199
+ connectionOrdinal: 1,
200
+ connectedAt: 10,
201
+ readyAcked: true,
202
+ },
203
+ pendingRequest: {
204
+ upstreamConnectionId: 'current',
205
+ upstreamConnectionOrdinal: 2,
206
+ upstreamConnectedAt: 20,
207
+ },
208
+ })).toBe(false);
209
+ });
210
+ });
211
+ //# sourceMappingURL=upstream-socket.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upstream-socket.test.js","sourceRoot":"","sources":["../../src/lib/upstream-socket.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { SpiceflowClient } from 'spiceflow/client';
1
+ import { type SpiceflowFetch } from 'spiceflow/client';
2
2
  import type { RouteType } from 'website/src/lib/spiceflow-plugins.server';
3
3
  export type LoaderReturnType<T extends (...args: any) => any> = Awaited<ReturnType<T>>;
4
- export declare const pluginApiClient: SpiceflowClient.Create<RouteType>;
4
+ export declare const pluginApiClient: SpiceflowFetch<RouteType>;
5
5
  export declare const noop: any;
6
6
  export declare function isTruthy<T>(val: T | undefined | null | false): val is T;
7
7
  export declare enum Paths {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAA;AAEzE,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,OAAO,CACnE,UAAU,CAAC,CAAC,CAAC,CAChB,CAAA;AAID,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAiBxD,CAAA;AACN,eAAO,MAAM,IAAI,EAAE,GAAc,CAAA;AAEjC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,IAAI,CAAC,CAEvE;AAED,oBAAY,KAAK;IACb,KAAK,WAAW;IAChB,IAAI,MAAM;CACb;AAED,oBAAY,QAAQ;IAChB,IAAI,SAAS;CAChB;AAED,eAAO,MAAM,WAAW,IAAK,CAAA;AAE7B,oBAAY,gBAAgB;IACxB,SAAS,0BAA0B;CACtC;AAED,wBAAgB,gBAAgB;;EAK/B;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAGrE;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAA;AAGzE,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IAAI,OAAO,CACnE,UAAU,CAAC,CAAC,CAAC,CAChB,CAAA;AAID,eAAO,MAAM,eAAe,EAAE,cAAc,CAAC,SAAS,CAoBhD,CAAA;AACN,eAAO,MAAM,IAAI,EAAE,GAAc,CAAA;AAEjC,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,IAAI,CAAC,CAEvE;AAED,oBAAY,KAAK;IACb,KAAK,WAAW;IAChB,IAAI,MAAM;CACb;AAED,oBAAY,QAAQ;IAChB,IAAI,SAAS;CAChB;AAED,eAAO,MAAM,WAAW,IAAK,CAAA;AAE7B,oBAAY,gBAAgB;IACxB,SAAS,0BAA0B;CACtC;AAED,wBAAgB,gBAAgB;;EAK/B;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAGrE;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
@@ -1,14 +1,18 @@
1
1
  import { redirect } from 'react-router';
2
- import { createSpiceflowClient } from 'spiceflow/client';
2
+ import { createSpiceflowFetch } from 'spiceflow/client';
3
+ import { superjsonOnResponse } from 'website/src/lib/superjson-client';
3
4
  const PUBLIC_URL = process.env.PUBLIC_URL || 'https://unframer.co';
4
- export const pluginApiClient = createSpiceflowClient(PUBLIC_URL, {
5
- async onResponse(response) {
6
- if (response.status === 401) {
7
- console.log('clearing session because api returned 401');
8
- localStorage.removeItem(LocalStorageKeys.sessionId);
9
- throw redirect(withMode(Paths.login));
10
- }
11
- },
5
+ export const pluginApiClient = createSpiceflowFetch(PUBLIC_URL, {
6
+ onResponse: [
7
+ async (response) => {
8
+ if (response.status === 401) {
9
+ console.log('clearing session because api returned 401');
10
+ localStorage.removeItem(LocalStorageKeys.sessionId);
11
+ throw redirect(withMode(Paths.login));
12
+ }
13
+ },
14
+ superjsonOnResponse,
15
+ ],
12
16
  async onRequest() {
13
17
  const { sessionKey } = getMcpPluginData();
14
18
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAmB,MAAM,kBAAkB,CAAA;AAOzE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,qBAAqB,CAAA;AAElE,MAAM,CAAC,MAAM,eAAe,GACxB,qBAAqB,CAAY,UAAU,EAAE;IACzC,KAAK,CAAC,UAAU,CAAC,QAAQ;QACrB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;YACxD,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;YACnD,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QACzC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,SAAS;QACX,MAAM,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,CAAA;QACzC,OAAO;YACH,OAAO,EAAE;gBACL,UAAU;aACb;SACJ,CAAA;IACL,CAAC;CACJ,CAAC,CAAA;AACN,MAAM,CAAC,MAAM,IAAI,GAAQ,GAAG,EAAE,GAAE,CAAC,CAAA;AAEjC,MAAM,UAAU,QAAQ,CAAI,GAAiC;IACzD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,CAAN,IAAY,KAGX;AAHD,WAAY,KAAK;IACb,yBAAgB,CAAA;IAChB,mBAAU,CAAA;AACd,CAAC,EAHW,KAAK,KAAL,KAAK,QAGhB;AAED,MAAM,CAAN,IAAY,QAEX;AAFD,WAAY,QAAQ;IAChB,yBAAa,CAAA;AACjB,CAAC,EAFW,QAAQ,KAAR,QAAQ,QAEnB;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAE7B,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IACxB,uDAAmC,CAAA;AACvC,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,UAAU,gBAAgB;IAC5B,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACnE,OAAO;QACH,UAAU,EAAE,UAAU,IAAI,EAAE;KAC/B,CAAA;AACL,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,MAA+B;IAClE,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAA;IAChD,OAAO,GAAG,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACnF,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,oBAAoB,EAAuB,MAAM,kBAAkB,CAAA;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAMtE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,qBAAqB,CAAA;AAElE,MAAM,CAAC,MAAM,eAAe,GACxB,oBAAoB,CAAY,UAAU,EAAE;IACxC,UAAU,EAAE;QACR,KAAK,EAAE,QAAQ,EAAE,EAAE;YACf,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;gBACxD,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;gBACnD,MAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;YACzC,CAAC;QACL,CAAC;QACD,mBAAmB;KACtB;IACD,KAAK,CAAC,SAAS;QACX,MAAM,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,CAAA;QACzC,OAAO;YACH,OAAO,EAAE;gBACL,UAAU;aACb;SACJ,CAAA;IACL,CAAC;CACJ,CAAC,CAAA;AACN,MAAM,CAAC,MAAM,IAAI,GAAQ,GAAG,EAAE,GAAE,CAAC,CAAA;AAEjC,MAAM,UAAU,QAAQ,CAAI,GAAiC;IACzD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;AACvB,CAAC;AAED,MAAM,CAAN,IAAY,KAGX;AAHD,WAAY,KAAK;IACb,yBAAgB,CAAA;IAChB,mBAAU,CAAA;AACd,CAAC,EAHW,KAAK,KAAL,KAAK,QAGhB;AAED,MAAM,CAAN,IAAY,QAEX;AAFD,WAAY,QAAQ;IAChB,yBAAa,CAAA;AACjB,CAAC,EAFW,QAAQ,KAAR,QAAQ,QAEnB;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAA;AAE7B,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IACxB,uDAAmC,CAAA;AACvC,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,UAAU,gBAAgB;IAC5B,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACnE,OAAO;QACH,UAAU,EAAE,UAAU,IAAI,EAAE;KAC/B,CAAA;AACL,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,MAA+B;IAClE,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAA;IAChD,OAAO,GAAG,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACnF,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC"}
package/src/react.tsx CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  breakpointsStylesLegacy,
16
16
  defaultBreakpointSizes,
17
17
  getFontsStyles,
18
- } from './css.js'
18
+ } from './css-core.js'
19
19
  import { version } from './version.js'
20
20
 
21
21
  function classNames(...args) {
@@ -125,10 +125,7 @@ function removeInactiveUnframerHiddenElements() {
125
125
  const activeBreakpoint = getBreakpointNameFromWindowWidth(windowWidth)
126
126
  const activeClass = activeBreakpoint ? `unframer-${activeBreakpoint}` : null
127
127
 
128
- console.log('Active unframer breakpoint class:', activeClass)
129
-
130
128
  document.querySelectorAll('.unframer-hidden').forEach((el) => {
131
- // Merge: Only remove the element itself if it has 'unframer-hidden' and does not match the current breakpoint's class.
132
129
  if (
133
130
  el.classList.contains('unframer-hidden') &&
134
131
  activeClass &&
@@ -153,25 +150,16 @@ export const WithFramerBreakpoints = <
153
150
  Component: T
154
151
  variants: Record<UnframerBreakpoint, ComponentPropsWithoutRef<T>['variant']>
155
152
  } & Omit<ComponentPropsWithoutRef<T>, 'variant'>): any => {
153
+ // getServerSnapshot must always return '' to match what the server rendered.
154
+ // During hydration React calls getServerSnapshot on the client too; if it
155
+ // returned the real breakpoint, the tree structure would differ from the
156
+ // server (server renders all variants, client would render only one).
156
157
  const currentBreakpoint = useSyncExternalStore(
157
158
  onResize,
158
159
  () => {
159
- // console.log('window.innerWidth', window.innerWidth)
160
- const breakpoint = getBreakpointNameFromWindowWidth(
161
- window.innerWidth,
162
- )
163
- return breakpoint
164
- },
165
- () => {
166
- if (typeof window !== 'undefined') {
167
- const breakpoint = getBreakpointNameFromWindowWidth(
168
- window.innerWidth,
169
- )
170
- return breakpoint
171
- }
172
-
173
- return ''
160
+ return getBreakpointNameFromWindowWidth(window.innerWidth)
174
161
  },
162
+ () => '',
175
163
  )
176
164
  if (isEmpty(_breakpointsMap)) {
177
165
  // @ts-ignore
@@ -346,11 +346,11 @@ body { --framer-will-change-filter-override: none; }
346
346
  span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {
347
347
  /* Ensure the color is inherited from the link style rather than the parent text for nested spans */
348
348
  color: inherit;
349
- font-family: var(--framer-font-family-preview, var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));
350
- font-style: var(--framer-font-style-preview, var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));
351
- font-weight: var(--framer-font-weight-preview, var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));
349
+ font-family: var(--framer-font-family-preview, var(--framer-link-font-family, var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));
350
+ font-style: var(--framer-font-style-preview, var(--framer-link-font-style, var(--framer-blockquote-font-style, var(--framer-font-style, normal))));
351
+ font-weight: var(--framer-font-weight-preview, var(--framer-link-font-weight, var(--framer-blockquote-font-weight, var(--framer-font-weight, 400))));
352
352
  font-size: calc(var(--framer-blockquote-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));
353
- text-transform: var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));
353
+ text-transform: var(--framer-link-text-transform, var(--framer-blockquote-text-transform, var(--framer-text-transform, none)));
354
354
  /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */
355
355
  cursor: var(--framer-custom-cursors, pointer);
356
356
  /* Don't inherit background styles from any parent text style. */
@@ -363,13 +363,13 @@ body { --framer-will-change-filter-override: none; }
363
363
 
364
364
  a.framer-text,
365
365
  span.framer-text[data-nested-link] {
366
- color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));
367
- text-decoration-line: var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial)));
368
- text-decoration-style: var(--framer-blockquote-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial)));
369
- text-decoration-color: var(--framer-blockquote-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial)));
370
- text-decoration-thickness: var(--framer-blockquote-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial)));
371
- text-decoration-skip-ink: var(--framer-blockquote-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial)));
372
- text-underline-offset: var(--framer-blockquote-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial)));
366
+ color: var(--framer-link-text-color, var(--framer-blockquote-text-color, var(--framer-text-color, #000)));
367
+ text-decoration-line: var(--framer-link-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-text-decoration, initial)));
368
+ text-decoration-style: var(--framer-link-text-decoration-style, var(--framer-blockquote-text-decoration-style, var(--framer-text-decoration-style, initial)));
369
+ text-decoration-color: var(--framer-link-text-decoration-color, var(--framer-blockquote-text-decoration-color, var(--framer-text-decoration-color, initial)));
370
+ text-decoration-thickness: var(--framer-link-text-decoration-thickness, var(--framer-blockquote-text-decoration-thickness, var(--framer-text-decoration-thickness, initial)));
371
+ text-decoration-skip-ink: var(--framer-link-text-decoration-skip-ink, var(--framer-blockquote-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial)));
372
+ text-underline-offset: var(--framer-link-text-decoration-offset, var(--framer-blockquote-text-decoration-offset, var(--framer-text-decoration-offset, initial)));
373
373
  /* Don't inherit background styles from any parent text style. */
374
374
  background-color: var(--framer-link-text-background-color, initial);
375
375
  }
@@ -378,7 +378,7 @@ body { --framer-will-change-filter-override: none; }
378
378
  @supports not (color: color(display-p3 1 1 1)) {
379
379
  a.framer-text,
380
380
  span.framer-text[data-nested-link] {
381
- color: var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))));
381
+ color: var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))));
382
382
  background-color: var(--framer-link-text-background-color-rgb, var(--framer-link-text-background-color, initial));
383
383
  text-decoration-color: var(--framer-link-text-decoration-color-rgb, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color-rgb, var(--framer-text-decoration-color, currentcolor))));
384
384
  }
@@ -399,7 +399,7 @@ body { --framer-will-change-filter-override: none; }
399
399
 
400
400
  code.framer-text a.framer-text,
401
401
  code.framer-text span.framer-text[data-nested-link] {
402
- color: var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));
402
+ color: var(--framer-link-text-color, var(--framer-blockquote-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));
403
403
  }
404
404
 
405
405
 
@@ -408,7 +408,7 @@ body { --framer-will-change-filter-override: none; }
408
408
  code.framer-text a.framer-text span.framer-text:not([data-text-fill]),
409
409
  code.framer-text span.framer-text[data-nested-link],
410
410
  code.framer-text span.framer-text[data-nested-link] span.framer-text:not([data-text-fill]) {
411
- color: var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-code-text-color-rgb, var(--framer-code-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))))));
411
+ color: var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-code-text-color-rgb, var(--framer-code-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))))));
412
412
  }
413
413
  }
414
414
 
@@ -417,11 +417,11 @@ body { --framer-will-change-filter-override: none; }
417
417
  a.framer-text:hover span.framer-text:not([data-text-fill]),
418
418
  span.framer-text[data-nested-link]:hover,
419
419
  span.framer-text[data-nested-link]:hover span.framer-text:not([data-text-fill]) {
420
- font-family: var(--framer-font-family-preview, var(--framer-link-hover-font-family, var(--framer-blockquote-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)))));
421
- font-style: var(--framer-font-style-preview, var(--framer-link-hover-font-style, var(--framer-blockquote-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)))));
422
- font-weight: var(--framer-font-weight-preview, var(--framer-link-hover-font-weight, var(--framer-blockquote-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)))));
420
+ font-family: var(--framer-font-family-preview, var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-blockquote-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)))));
421
+ font-style: var(--framer-font-style-preview, var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-blockquote-font-style, var(--framer-font-style, normal)))));
422
+ font-weight: var(--framer-font-weight-preview, var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-blockquote-font-weight, var(--framer-font-weight, 400)))));
423
423
  font-size: calc(var(--framer-link-hover-font-size, var(--framer-blockquote-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));
424
- text-transform: var(--framer-link-hover-text-transform, var(--framer-blockquote-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));
424
+ text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-blockquote-text-transform, var(--framer-text-transform, none))));
425
425
  border-radius: var(--framer-link-hover-text-background-radius, var(--framer-link-text-background-radius, var(--framer-text-background-radius, initial)));
426
426
  corner-shape: var(--framer-link-hover-text-background-corner-shape, var(--framer-link-text-background-corner-shape, var(--framer-text-background-corner-shape, initial)));
427
427
  padding: var(--framer-link-hover-text-background-padding, var(--framer-link-text-background-padding, var(--framer-text-background-padding, initial)));
@@ -430,13 +430,13 @@ body { --framer-will-change-filter-override: none; }
430
430
 
431
431
  a.framer-text:hover,
432
432
  span.framer-text[data-nested-link]:hover {
433
- color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));
434
- text-decoration-line: var(--framer-link-hover-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, initial))));
435
- text-decoration-style: var(--framer-link-hover-text-decoration-style, var(--framer-blockquote-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-text-decoration-style, initial))));
436
- text-decoration-color: var(--framer-link-hover-text-decoration-color, var(--framer-blockquote-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color, initial))));
437
- text-decoration-thickness: var(--framer-link-hover-text-decoration-thickness, var(--framer-blockquote-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-text-decoration-thickness, initial))));
438
- text-decoration-skip-ink: var(--framer-link-hover-text-decoration-skip-ink, var(--framer-blockquote-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial))));
439
- text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-blockquote-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-text-decoration-offset, initial))));
433
+ color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-blockquote-text-color, var(--framer-text-color, #000))));
434
+ text-decoration-line: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-blockquote-text-decoration, var(--framer-text-decoration, initial))));
435
+ text-decoration-style: var(--framer-link-hover-text-decoration-style, var(--framer-link-text-decoration-style, var(--framer-blockquote-text-decoration-style, var(--framer-text-decoration-style, initial))));
436
+ text-decoration-color: var(--framer-link-hover-text-decoration-color, var(--framer-link-text-decoration-color, var(--framer-blockquote-text-decoration-color, var(--framer-text-decoration-color, initial))));
437
+ text-decoration-thickness: var(--framer-link-hover-text-decoration-thickness, var(--framer-link-text-decoration-thickness, var(--framer-blockquote-text-decoration-thickness, var(--framer-text-decoration-thickness, initial))));
438
+ text-decoration-skip-ink: var(--framer-link-hover-text-decoration-skip-ink, var(--framer-link-text-decoration-skip-ink, var(--framer-blockquote-text-decoration-skip-ink, var(--framer-text-decoration-skip-ink, initial))));
439
+ text-underline-offset: var(--framer-link-hover-text-decoration-offset, var(--framer-link-text-decoration-offset, var(--framer-blockquote-text-decoration-offset, var(--framer-text-decoration-offset, initial))));
440
440
  background-color: var(--framer-link-hover-text-background-color, var(--framer-link-text-background-color, var(--framer-text-background-color, initial)));
441
441
  }
442
442
 
@@ -444,7 +444,7 @@ body { --framer-will-change-filter-override: none; }
444
444
  @supports not (color: color(display-p3 1 1 1)) {
445
445
  a.framer-text:hover,
446
446
  span.framer-text[data-nested-link]:hover {
447
- color: var(--framer-link-hover-text-color-rgb, var(--framer-link-hover-text-color, var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))))));
447
+ color: var(--framer-link-hover-text-color-rgb, var(--framer-link-hover-text-color, var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))))));
448
448
  background-color: var(--framer-link-hover-text-background-color-rgb, var(--framer-link-hover-text-background-color, var(--framer-link-text-background-color-rgb, var(--framer-link-text-background-color, var(--framer-text-background-color-rgb, var(--framer-text-background-color, initial))))));
449
449
  text-decoration-color: var(--framer-link-hover-text-decoration-color-rgb, var(--framer-link-hover-text-decoration-color, var(--framer-link-text-decoration-color-rgb, var(--framer-link-text-decoration-color, var(--framer-text-decoration-color-rgb, var(--framer-text-decoration-color, currentcolor))))));
450
450
  }
@@ -453,14 +453,14 @@ body { --framer-will-change-filter-override: none; }
453
453
 
454
454
  code.framer-text a.framer-text:hover,
455
455
  code.framer-text span.framer-text[data-nested-link]:hover {
456
- color: var(--framer-link-hover-text-color, var(--framer-blockquote-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));
456
+ color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-blockquote-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));
457
457
  }
458
458
 
459
459
 
460
460
  @supports not (color: color(display-p3 1 1 1)) {
461
461
  code.framer-text a.framer-text:hover,
462
462
  code.framer-text span.framer-text[data-nested-link]:hover {
463
- color: var(--framer-link-hover-text-color-rgb, var(--framer-link-hover-text-color, var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-code-text-color-rgb, var(--framer-code-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))))))));
463
+ color: var(--framer-link-hover-text-color-rgb, var(--framer-link-hover-text-color, var(--framer-link-text-color-rgb, var(--framer-link-text-color, var(--framer-blockquote-text-color-rgb, var(--framer-blockquote-text-color, var(--framer-code-text-color-rgb, var(--framer-code-text-color, var(--framer-text-color-rgb, var(--framer-text-color, #000))))))))));
464
464
  }
465
465
  }
466
466
 
@@ -638,6 +638,11 @@ body { --framer-will-change-filter-override: none; }
638
638
  }
639
639
 
640
640
 
641
+ ol.framer-text > li.framer-text {
642
+ padding-inline-start: calc(calc(var(--max-list-digits, 1) + 1) * 1ch);
643
+ }
644
+
645
+
641
646
  ol.framer-text > li.framer-text::before {
642
647
  position: absolute;
643
648
  inset-inline-start: 0;
@@ -646,42 +651,6 @@ body { --framer-will-change-filter-override: none; }
646
651
  }
647
652
 
648
653
 
649
- ol.framer-text > li.framer-text:nth-last-child(n + 10),
650
- ol.framer-text > li.framer-text:nth-last-child(n + 10) ~ li {
651
- padding-inline-start: 3ch;
652
- }
653
-
654
-
655
- ol.framer-text > li.framer-text:nth-last-child(n + 100),
656
- ol.framer-text > li.framer-text:nth-last-child(n + 100) ~ li {
657
- padding-inline-start: 4ch;
658
- }
659
-
660
-
661
- ol.framer-text > li.framer-text:nth-last-child(n + 1000),
662
- ol.framer-text > li.framer-text:nth-last-child(n + 1000) ~ li {
663
- padding-inline-start: 5ch;
664
- }
665
-
666
-
667
- ol.framer-text > li.framer-text:nth-last-child(n + 10000),
668
- ol.framer-text > li.framer-text:nth-last-child(n + 10000) ~ li {
669
- padding-inline-start: 6ch;
670
- }
671
-
672
-
673
- ol.framer-text > li.framer-text:nth-last-child(n + 100000),
674
- ol.framer-text > li.framer-text:nth-last-child(n + 100000) ~ li {
675
- padding-inline-start: 7ch;
676
- }
677
-
678
-
679
- ol.framer-text > li.framer-text:nth-last-child(n + 1000000),
680
- ol.framer-text > li.framer-text:nth-last-child(n + 1000000) ~ li {
681
- padding-inline-start: 8ch;
682
- }
683
-
684
-
685
654
  ul.framer-text > li.framer-text::before {
686
655
  position: absolute;
687
656
  inset-inline-start: 0;
@@ -707,6 +676,7 @@ body { --framer-will-change-filter-override: none; }
707
676
  td.framer-text,
708
677
  th.framer-text {
709
678
  min-width: 16ch;
679
+ overflow-wrap: anywhere;
710
680
  vertical-align: top;
711
681
  }
712
682
 
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '4.1.8'
1
+ export const version = '4.2.0'