@depup/react-email 5.2.10-depup.0 → 6.9.0-depup.1

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 (404) hide show
  1. package/CHANGELOG.md +313 -0
  2. package/README.md +11 -10
  3. package/changes.json +21 -17
  4. package/dev/CHANGELOG.md +2 -0
  5. package/dev/index.js +1 -1
  6. package/dev/package.json +1 -1
  7. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  8. package/dist/cli/index.mjs +7801 -0
  9. package/dist/components/body/body.cjs +39 -0
  10. package/dist/components/body/body.d.cts +7 -0
  11. package/dist/components/body/body.d.mts +7 -0
  12. package/dist/components/body/body.mjs +37 -0
  13. package/dist/components/body/index.d.cts +1 -0
  14. package/dist/components/body/index.d.mts +1 -0
  15. package/dist/components/body/margin-properties.cjs +30 -0
  16. package/dist/components/body/margin-properties.mjs +29 -0
  17. package/dist/components/button/button.cjs +64 -0
  18. package/dist/components/button/button.d.cts +13 -0
  19. package/dist/components/button/button.d.mts +13 -0
  20. package/dist/components/button/button.mjs +62 -0
  21. package/dist/components/button/index.d.cts +1 -0
  22. package/dist/components/button/index.d.mts +1 -0
  23. package/dist/components/button/utils/parse-padding.cjs +90 -0
  24. package/dist/components/button/utils/parse-padding.mjs +90 -0
  25. package/dist/components/button/utils/px-to-pt.cjs +4 -0
  26. package/dist/components/button/utils/px-to-pt.mjs +4 -0
  27. package/dist/components/code-block/code-block.cjs +79 -0
  28. package/dist/components/code-block/code-block.d.cts +20 -0
  29. package/dist/components/code-block/code-block.d.mts +20 -0
  30. package/dist/components/code-block/code-block.mjs +77 -0
  31. package/dist/components/code-block/index.d.cts +3 -0
  32. package/dist/components/code-block/index.d.mts +3 -0
  33. package/dist/components/code-block/languages-available.d.cts +4 -0
  34. package/dist/components/code-block/languages-available.d.mts +4 -0
  35. package/dist/components/code-block/prism.cjs +14564 -0
  36. package/dist/components/code-block/prism.mjs +14562 -0
  37. package/dist/components/code-block/themes.cjs +2578 -0
  38. package/dist/components/code-block/themes.d.cts +4877 -0
  39. package/dist/components/code-block/themes.d.mts +4877 -0
  40. package/dist/components/code-block/themes.mjs +2541 -0
  41. package/dist/components/code-inline/code-inline.cjs +43 -0
  42. package/dist/components/code-inline/code-inline.d.cts +12 -0
  43. package/dist/components/code-inline/code-inline.d.mts +12 -0
  44. package/dist/components/code-inline/code-inline.mjs +41 -0
  45. package/dist/components/code-inline/index.d.cts +1 -0
  46. package/dist/components/code-inline/index.d.mts +1 -0
  47. package/dist/components/column/column.cjs +19 -0
  48. package/dist/components/column/column.d.cts +7 -0
  49. package/dist/components/column/column.d.mts +7 -0
  50. package/dist/components/column/column.mjs +17 -0
  51. package/dist/components/column/index.d.cts +1 -0
  52. package/dist/components/column/index.d.mts +1 -0
  53. package/dist/components/container/container.cjs +42 -0
  54. package/dist/components/container/container.d.cts +7 -0
  55. package/dist/components/container/container.d.mts +7 -0
  56. package/dist/components/container/container.mjs +40 -0
  57. package/dist/components/container/index.d.cts +1 -0
  58. package/dist/components/container/index.d.mts +1 -0
  59. package/dist/components/element-marker.cjs +8 -0
  60. package/dist/components/element-marker.mjs +7 -0
  61. package/dist/components/font/font.cjs +22 -0
  62. package/dist/components/font/font.d.cts +26 -0
  63. package/dist/components/font/font.d.mts +26 -0
  64. package/dist/components/font/font.mjs +21 -0
  65. package/dist/components/font/index.d.cts +1 -0
  66. package/dist/components/font/index.d.mts +1 -0
  67. package/dist/components/head/head.cjs +20 -0
  68. package/dist/components/head/head.d.cts +7 -0
  69. package/dist/components/head/head.d.mts +7 -0
  70. package/dist/components/head/head.mjs +18 -0
  71. package/dist/components/head/index.d.cts +1 -0
  72. package/dist/components/head/index.d.mts +1 -0
  73. package/dist/components/heading/heading.cjs +30 -0
  74. package/dist/components/heading/heading.d.cts +22 -0
  75. package/dist/components/heading/heading.d.mts +22 -0
  76. package/dist/components/heading/heading.mjs +28 -0
  77. package/dist/components/heading/index.d.cts +1 -0
  78. package/dist/components/heading/index.d.mts +1 -0
  79. package/dist/components/heading/utils/as.d.cts +16 -0
  80. package/dist/components/heading/utils/as.d.mts +16 -0
  81. package/dist/components/heading/utils/spaces.cjs +24 -0
  82. package/dist/components/heading/utils/spaces.d.cts +14 -0
  83. package/dist/components/heading/utils/spaces.d.mts +14 -0
  84. package/dist/components/heading/utils/spaces.mjs +24 -0
  85. package/dist/components/hr/hr.cjs +21 -0
  86. package/dist/components/hr/hr.d.cts +7 -0
  87. package/dist/components/hr/hr.d.mts +7 -0
  88. package/dist/components/hr/hr.mjs +19 -0
  89. package/dist/components/hr/index.d.cts +1 -0
  90. package/dist/components/hr/index.d.mts +1 -0
  91. package/dist/components/html/html.cjs +15 -0
  92. package/dist/components/html/html.d.cts +7 -0
  93. package/dist/components/html/html.d.mts +7 -0
  94. package/dist/components/html/html.mjs +13 -0
  95. package/dist/components/html/index.d.cts +1 -0
  96. package/dist/components/html/index.d.mts +1 -0
  97. package/dist/components/img/img.cjs +25 -0
  98. package/dist/components/img/img.d.cts +7 -0
  99. package/dist/components/img/img.d.mts +7 -0
  100. package/dist/components/img/img.mjs +23 -0
  101. package/dist/components/img/index.d.cts +1 -0
  102. package/dist/components/img/index.d.mts +1 -0
  103. package/dist/components/index.d.cts +24 -0
  104. package/dist/components/index.d.mts +24 -0
  105. package/dist/components/link/index.d.cts +1 -0
  106. package/dist/components/link/index.d.mts +1 -0
  107. package/dist/components/link/link.cjs +21 -0
  108. package/dist/components/link/link.d.cts +7 -0
  109. package/dist/components/link/link.d.mts +7 -0
  110. package/dist/components/link/link.mjs +19 -0
  111. package/dist/components/markdown/index.d.cts +1 -0
  112. package/dist/components/markdown/index.d.mts +1 -0
  113. package/dist/components/markdown/markdown.cjs +101 -0
  114. package/dist/components/markdown/markdown.d.cts +16 -0
  115. package/dist/components/markdown/markdown.d.mts +16 -0
  116. package/dist/components/markdown/markdown.mjs +99 -0
  117. package/dist/components/markdown/styles.cjs +92 -0
  118. package/dist/components/markdown/styles.d.cts +31 -0
  119. package/dist/components/markdown/styles.d.mts +31 -0
  120. package/dist/components/markdown/styles.mjs +92 -0
  121. package/dist/components/markdown/utils/parse-css-in-js-to-inline-css.cjs +60 -0
  122. package/dist/components/markdown/utils/parse-css-in-js-to-inline-css.mjs +60 -0
  123. package/dist/components/preview/index.d.cts +1 -0
  124. package/dist/components/preview/index.d.mts +1 -0
  125. package/dist/components/preview/preview.cjs +34 -0
  126. package/dist/components/preview/preview.d.cts +21 -0
  127. package/dist/components/preview/preview.d.mts +21 -0
  128. package/dist/components/preview/preview.mjs +31 -0
  129. package/dist/components/row/index.d.cts +1 -0
  130. package/dist/components/row/index.d.mts +1 -0
  131. package/dist/components/row/row.cjs +30 -0
  132. package/dist/components/row/row.d.cts +11 -0
  133. package/dist/components/row/row.d.mts +11 -0
  134. package/dist/components/row/row.mjs +28 -0
  135. package/dist/components/section/index.d.cts +1 -0
  136. package/dist/components/section/index.d.mts +1 -0
  137. package/dist/components/section/section.cjs +36 -0
  138. package/dist/components/section/section.d.cts +7 -0
  139. package/dist/components/section/section.d.mts +7 -0
  140. package/dist/components/section/section.mjs +34 -0
  141. package/dist/components/tailwind/hooks/use-suspended-promise.cjs +15 -0
  142. package/dist/components/tailwind/hooks/use-suspended-promise.mjs +15 -0
  143. package/dist/components/tailwind/index.d.cts +4 -0
  144. package/dist/components/tailwind/index.d.mts +4 -0
  145. package/dist/components/tailwind/inline-styles.cjs +11 -0
  146. package/dist/components/tailwind/inline-styles.d.cts +6 -0
  147. package/dist/components/tailwind/inline-styles.d.mts +6 -0
  148. package/dist/components/tailwind/inline-styles.mjs +11 -0
  149. package/dist/components/tailwind/sanitize-stylesheet.cjs +11 -0
  150. package/dist/components/tailwind/sanitize-stylesheet.d.cts +6 -0
  151. package/dist/components/tailwind/sanitize-stylesheet.d.mts +6 -0
  152. package/dist/components/tailwind/sanitize-stylesheet.mjs +11 -0
  153. package/dist/components/tailwind/tailwind.cjs +120 -0
  154. package/dist/components/tailwind/tailwind.d.cts +25 -0
  155. package/dist/components/tailwind/tailwind.d.mts +25 -0
  156. package/dist/components/tailwind/tailwind.mjs +117 -0
  157. package/dist/components/tailwind/utils/compatibility/get-react-property.cjs +10 -0
  158. package/dist/components/tailwind/utils/compatibility/get-react-property.mjs +10 -0
  159. package/dist/components/tailwind/utils/compatibility/sanitize-class-name.cjs +26 -0
  160. package/dist/components/tailwind/utils/compatibility/sanitize-class-name.mjs +26 -0
  161. package/dist/components/tailwind/utils/css/downlevel-for-email-clients.cjs +126 -0
  162. package/dist/components/tailwind/utils/css/downlevel-for-email-clients.mjs +125 -0
  163. package/dist/components/tailwind/utils/css/extract-rules-per-class.cjs +45 -0
  164. package/dist/components/tailwind/utils/css/extract-rules-per-class.mjs +44 -0
  165. package/dist/components/tailwind/utils/css/get-custom-properties.cjs +35 -0
  166. package/dist/components/tailwind/utils/css/get-custom-properties.mjs +34 -0
  167. package/dist/components/tailwind/utils/css/is-part-inlinable.cjs +10 -0
  168. package/dist/components/tailwind/utils/css/is-part-inlinable.mjs +9 -0
  169. package/dist/components/tailwind/utils/css/is-rule-inlinable.cjs +10 -0
  170. package/dist/components/tailwind/utils/css/is-rule-inlinable.mjs +9 -0
  171. package/dist/components/tailwind/utils/css/make-inline-styles-for.cjs +52 -0
  172. package/dist/components/tailwind/utils/css/make-inline-styles-for.mjs +51 -0
  173. package/dist/components/tailwind/utils/css/resolve-all-css-variables.cjs +89 -0
  174. package/dist/components/tailwind/utils/css/resolve-all-css-variables.mjs +88 -0
  175. package/dist/components/tailwind/utils/css/resolve-calc-expressions.cjs +92 -0
  176. package/dist/components/tailwind/utils/css/resolve-calc-expressions.mjs +91 -0
  177. package/dist/components/tailwind/utils/css/sanitize-declarations.cjs +310 -0
  178. package/dist/components/tailwind/utils/css/sanitize-declarations.mjs +309 -0
  179. package/dist/components/tailwind/utils/css/sanitize-non-inlinable-rules.cjs +46 -0
  180. package/dist/components/tailwind/utils/css/sanitize-non-inlinable-rules.mjs +45 -0
  181. package/dist/components/tailwind/utils/css/split-mixed-rule.cjs +41 -0
  182. package/dist/components/tailwind/utils/css/split-mixed-rule.mjs +40 -0
  183. package/dist/components/tailwind/utils/css/strip-empty-tailwind-vars.cjs +52 -0
  184. package/dist/components/tailwind/utils/css/strip-empty-tailwind-vars.mjs +51 -0
  185. package/dist/components/tailwind/utils/css/unwrap-value.cjs +7 -0
  186. package/dist/components/tailwind/utils/css/unwrap-value.mjs +7 -0
  187. package/dist/components/tailwind/utils/react/is-component.cjs +7 -0
  188. package/dist/components/tailwind/utils/react/is-component.mjs +7 -0
  189. package/dist/components/tailwind/utils/react/map-react-tree.cjs +32 -0
  190. package/dist/components/tailwind/utils/react/map-react-tree.mjs +30 -0
  191. package/dist/components/tailwind/utils/tailwindcss/clone-element-with-inlined-styles.cjs +37 -0
  192. package/dist/components/tailwind/utils/tailwindcss/clone-element-with-inlined-styles.mjs +35 -0
  193. package/dist/components/tailwind/utils/tailwindcss/setup-tailwind.cjs +77 -0
  194. package/dist/components/tailwind/utils/tailwindcss/setup-tailwind.d.cts +19 -0
  195. package/dist/components/tailwind/utils/tailwindcss/setup-tailwind.d.mts +19 -0
  196. package/dist/components/tailwind/utils/tailwindcss/setup-tailwind.mjs +76 -0
  197. package/dist/components/tailwind/utils/tailwindcss/tailwind-stylesheets/index.cjs +901 -0
  198. package/dist/components/tailwind/utils/tailwindcss/tailwind-stylesheets/index.mjs +901 -0
  199. package/dist/components/tailwind/utils/tailwindcss/tailwind-stylesheets/preflight.cjs +398 -0
  200. package/dist/components/tailwind/utils/tailwindcss/tailwind-stylesheets/preflight.mjs +398 -0
  201. package/dist/components/tailwind/utils/tailwindcss/tailwind-stylesheets/theme.cjs +467 -0
  202. package/dist/components/tailwind/utils/tailwindcss/tailwind-stylesheets/theme.mjs +467 -0
  203. package/dist/components/tailwind/utils/tailwindcss/tailwind-stylesheets/utilities.cjs +6 -0
  204. package/dist/components/tailwind/utils/tailwindcss/tailwind-stylesheets/utilities.mjs +6 -0
  205. package/dist/components/tailwind/utils/text/from-dash-case-to-camel-case.cjs +6 -0
  206. package/dist/components/tailwind/utils/text/from-dash-case-to-camel-case.mjs +6 -0
  207. package/dist/components/text/index.d.cts +1 -0
  208. package/dist/components/text/index.d.mts +1 -0
  209. package/dist/components/text/text.cjs +43 -0
  210. package/dist/components/text/text.d.cts +7 -0
  211. package/dist/components/text/text.d.mts +7 -0
  212. package/dist/components/text/text.mjs +41 -0
  213. package/dist/components/text/utils/compute-margins.cjs +62 -0
  214. package/dist/components/text/utils/compute-margins.mjs +62 -0
  215. package/dist/index.cjs +95 -0
  216. package/dist/index.d.cts +26 -0
  217. package/dist/index.d.mts +26 -0
  218. package/dist/index.mjs +25 -7326
  219. package/package.json +64 -32
  220. package/src/components/body/__snapshots__/body.spec.tsx.snap +23 -0
  221. package/src/components/body/body.spec.tsx +78 -0
  222. package/src/components/body/body.tsx +62 -0
  223. package/src/components/body/index.ts +1 -0
  224. package/src/components/body/margin-properties.ts +27 -0
  225. package/src/components/button/button.spec.tsx +53 -0
  226. package/src/components/button/button.tsx +114 -0
  227. package/src/components/button/index.ts +1 -0
  228. package/src/components/button/utils/parse-padding.ts +137 -0
  229. package/src/components/button/utils/px-to-pt.ts +4 -0
  230. package/src/components/button/utils/utils.spec.ts +153 -0
  231. package/src/components/code-block/code-block.tsx +136 -0
  232. package/src/components/code-block/index.ts +3 -0
  233. package/src/components/code-block/languages-available.ts +402 -0
  234. package/src/components/code-block/prism.ts +15618 -0
  235. package/src/components/code-block/themes.ts +4929 -0
  236. package/src/components/code-inline/code-inline.tsx +60 -0
  237. package/src/components/code-inline/index.ts +1 -0
  238. package/src/components/column/column.spec.tsx +28 -0
  239. package/src/components/column/column.tsx +17 -0
  240. package/src/components/column/index.ts +1 -0
  241. package/src/components/container/container.spec.tsx +33 -0
  242. package/src/components/container/container.tsx +59 -0
  243. package/src/components/container/index.ts +1 -0
  244. package/src/components/element-marker.ts +5 -0
  245. package/src/components/font/font.spec.tsx +63 -0
  246. package/src/components/font/font.tsx +76 -0
  247. package/src/components/font/index.ts +1 -0
  248. package/src/components/head/head.spec.tsx +34 -0
  249. package/src/components/head/head.tsx +15 -0
  250. package/src/components/head/index.ts +1 -0
  251. package/src/components/heading/heading.spec.tsx +32 -0
  252. package/src/components/heading/heading.tsx +31 -0
  253. package/src/components/heading/index.ts +1 -0
  254. package/src/components/heading/utils/as.ts +26 -0
  255. package/src/components/heading/utils/spaces.ts +64 -0
  256. package/src/components/heading/utils/utils.spec.ts +70 -0
  257. package/src/components/hr/hr.spec.tsx +22 -0
  258. package/src/components/hr/hr.tsx +23 -0
  259. package/src/components/hr/index.ts +1 -0
  260. package/src/components/html/html.spec.tsx +26 -0
  261. package/src/components/html/html.tsx +13 -0
  262. package/src/components/html/index.ts +1 -0
  263. package/src/components/img/img.spec.tsx +30 -0
  264. package/src/components/img/img.tsx +27 -0
  265. package/src/components/img/index.ts +1 -0
  266. package/src/components/index.ts +19 -0
  267. package/src/components/link/index.ts +1 -0
  268. package/src/components/link/link.spec.tsx +37 -0
  269. package/src/components/link/link.tsx +24 -0
  270. package/src/components/markdown/index.ts +1 -0
  271. package/src/components/markdown/markdown.spec.tsx +221 -0
  272. package/src/components/markdown/markdown.tsx +239 -0
  273. package/src/components/markdown/styles.ts +130 -0
  274. package/src/components/markdown/utils/parse-css-in-js-to-inline-css.spec.ts +42 -0
  275. package/src/components/markdown/utils/parse-css-in-js-to-inline-css.ts +73 -0
  276. package/src/components/preview/index.ts +1 -0
  277. package/src/components/preview/preview.spec.tsx +49 -0
  278. package/src/components/preview/preview.tsx +56 -0
  279. package/src/components/row/index.ts +1 -0
  280. package/src/components/row/row.spec.tsx +28 -0
  281. package/src/components/row/row.tsx +33 -0
  282. package/src/components/section/index.ts +1 -0
  283. package/src/components/section/section.spec.tsx +58 -0
  284. package/src/components/section/section.tsx +59 -0
  285. package/src/components/tailwind/e2e/integrations.spec.ts +44 -0
  286. package/src/components/tailwind/e2e/nextjs/README.md +9 -0
  287. package/src/components/tailwind/e2e/nextjs/emails/vercel-invite-user.tsx +151 -0
  288. package/src/components/tailwind/e2e/nextjs/next.config.mjs +6 -0
  289. package/src/components/tailwind/e2e/nextjs/package.json +24 -0
  290. package/src/components/tailwind/e2e/nextjs/src/app/favicon.ico +0 -0
  291. package/src/components/tailwind/e2e/nextjs/src/app/layout.tsx +23 -0
  292. package/src/components/tailwind/e2e/nextjs/src/app/page.tsx +7 -0
  293. package/src/components/tailwind/e2e/nextjs/tsconfig.json +27 -0
  294. package/src/components/tailwind/e2e/vite/README.md +9 -0
  295. package/src/components/tailwind/e2e/vite/emails/vercel-invite-user.tsx +151 -0
  296. package/src/components/tailwind/e2e/vite/index.html +13 -0
  297. package/src/components/tailwind/e2e/vite/package.json +25 -0
  298. package/src/components/tailwind/e2e/vite/public/vite.svg +1 -0
  299. package/src/components/tailwind/e2e/vite/src/App.tsx +10 -0
  300. package/src/components/tailwind/e2e/vite/src/main.tsx +9 -0
  301. package/src/components/tailwind/e2e/vite/src/vite-env.d.ts +1 -0
  302. package/src/components/tailwind/e2e/vite/tsconfig.json +25 -0
  303. package/src/components/tailwind/e2e/vite/tsconfig.node.json +11 -0
  304. package/src/components/tailwind/e2e/vite/vite.config.ts +7 -0
  305. package/src/components/tailwind/hooks/use-suspended-promise.ts +34 -0
  306. package/src/components/tailwind/hooks/use-suspensed-promise.spec.ts +263 -0
  307. package/src/components/tailwind/index.ts +4 -0
  308. package/src/components/tailwind/inline-styles.spec.ts +49 -0
  309. package/src/components/tailwind/inline-styles.ts +21 -0
  310. package/src/components/tailwind/sanitize-stylesheet.ts +10 -0
  311. package/src/components/tailwind/tailwind.spec.tsx +1390 -0
  312. package/src/components/tailwind/tailwind.tsx +178 -0
  313. package/src/components/tailwind/utils/__snapshots__/quick-safe-render-to-string.spec.tsx.snap +3 -0
  314. package/src/components/tailwind/utils/compatibility/escape-class-name.spec.ts +17 -0
  315. package/src/components/tailwind/utils/compatibility/escape-class-name.ts +18 -0
  316. package/src/components/tailwind/utils/compatibility/get-react-property.ts +15 -0
  317. package/src/components/tailwind/utils/compatibility/sanitize-class-name.spec.ts +7 -0
  318. package/src/components/tailwind/utils/compatibility/sanitize-class-name.ts +36 -0
  319. package/src/components/tailwind/utils/compatibility/unescape-class.ts +3 -0
  320. package/src/components/tailwind/utils/css/__snapshots__/extract-rules-matching-classes.spec.ts.snap +23 -0
  321. package/src/components/tailwind/utils/css/__snapshots__/remove-rule-duplicates-from-root.spec.ts.snap +3 -0
  322. package/src/components/tailwind/utils/css/__snapshots__/sanitize-non-inlinable-classes.spec.ts.snap +7 -0
  323. package/src/components/tailwind/utils/css/downlevel-for-email-clients.spec.ts +119 -0
  324. package/src/components/tailwind/utils/css/downlevel-for-email-clients.ts +244 -0
  325. package/src/components/tailwind/utils/css/extract-rules-per-class.spec.ts +232 -0
  326. package/src/components/tailwind/utils/css/extract-rules-per-class.ts +76 -0
  327. package/src/components/tailwind/utils/css/get-custom-properties.ts +49 -0
  328. package/src/components/tailwind/utils/css/is-part-inlinable.ts +15 -0
  329. package/src/components/tailwind/utils/css/is-rule-inlinable.ts +15 -0
  330. package/src/components/tailwind/utils/css/make-inline-styles-for.spec.ts +124 -0
  331. package/src/components/tailwind/utils/css/make-inline-styles-for.ts +73 -0
  332. package/src/components/tailwind/utils/css/resolve-all-css-variables.spec.ts +296 -0
  333. package/src/components/tailwind/utils/css/resolve-all-css-variables.ts +236 -0
  334. package/src/components/tailwind/utils/css/resolve-calc-expressions.spec.ts +36 -0
  335. package/src/components/tailwind/utils/css/resolve-calc-expressions.ts +147 -0
  336. package/src/components/tailwind/utils/css/sanitize-declarations.spec.ts +491 -0
  337. package/src/components/tailwind/utils/css/sanitize-declarations.ts +443 -0
  338. package/src/components/tailwind/utils/css/sanitize-non-inlinable-rules.spec.ts +72 -0
  339. package/src/components/tailwind/utils/css/sanitize-non-inlinable-rules.ts +48 -0
  340. package/src/components/tailwind/utils/css/split-mixed-rule.ts +68 -0
  341. package/src/components/tailwind/utils/css/strip-empty-tailwind-vars.spec.ts +128 -0
  342. package/src/components/tailwind/utils/css/strip-empty-tailwind-vars.ts +70 -0
  343. package/src/components/tailwind/utils/css/unwrap-value.ts +9 -0
  344. package/src/components/tailwind/utils/react/is-component.ts +12 -0
  345. package/src/components/tailwind/utils/react/map-react-tree.spec.tsx +58 -0
  346. package/src/components/tailwind/utils/react/map-react-tree.ts +58 -0
  347. package/src/components/tailwind/utils/tailwindcss/clone-element-with-inlined-styles.ts +61 -0
  348. package/src/components/tailwind/utils/tailwindcss/setup-tailwind.spec.ts +25 -0
  349. package/src/components/tailwind/utils/tailwindcss/setup-tailwind.ts +121 -0
  350. package/src/components/tailwind/utils/tailwindcss/tailwind-stylesheets/index.ts +900 -0
  351. package/src/components/tailwind/utils/tailwindcss/tailwind-stylesheets/preflight.ts +397 -0
  352. package/src/components/tailwind/utils/tailwindcss/tailwind-stylesheets/theme.ts +466 -0
  353. package/src/components/tailwind/utils/tailwindcss/tailwind-stylesheets/utilities.ts +5 -0
  354. package/src/components/tailwind/utils/text/from-dash-case-to-camel-case.ts +3 -0
  355. package/src/components/text/index.ts +1 -0
  356. package/src/components/text/text.spec.tsx +35 -0
  357. package/src/components/text/text.tsx +50 -0
  358. package/src/components/text/utils/compute-margins.spec.ts +67 -0
  359. package/src/components/text/utils/compute-margins.ts +102 -0
  360. package/src/index.ts +2 -110
  361. package/tsconfig.json +9 -4
  362. package/tsdown.config.ts +51 -6
  363. package/vitest.config.ts +1 -0
  364. package/vitest.e2e.config.ts +17 -0
  365. package/src/commands/build.ts +0 -269
  366. package/src/commands/dev.ts +0 -27
  367. package/src/commands/export.ts +0 -204
  368. package/src/commands/resend/reset.ts +0 -8
  369. package/src/commands/resend/setup.ts +0 -29
  370. package/src/commands/start.ts +0 -38
  371. package/src/utils/conf.ts +0 -9
  372. package/src/utils/esbuild/escape-string-for-regex.ts +0 -3
  373. package/src/utils/esbuild/renderring-utilities-exporter.ts +0 -63
  374. package/src/utils/get-emails-directory-metadata.spec.ts +0 -82
  375. package/src/utils/get-emails-directory-metadata.ts +0 -140
  376. package/src/utils/get-preview-server-location.ts +0 -50
  377. package/src/utils/index.ts +0 -2
  378. package/src/utils/packageJson.ts +0 -4
  379. package/src/utils/preview/get-env-variables-for-preview-app.ts +0 -20
  380. package/src/utils/preview/hot-reloading/create-dependency-graph.spec.ts +0 -226
  381. package/src/utils/preview/hot-reloading/create-dependency-graph.ts +0 -343
  382. package/src/utils/preview/hot-reloading/get-imported-modules.spec.ts +0 -151
  383. package/src/utils/preview/hot-reloading/get-imported-modules.ts +0 -49
  384. package/src/utils/preview/hot-reloading/resolve-path-aliases.spec.ts +0 -11
  385. package/src/utils/preview/hot-reloading/resolve-path-aliases.ts +0 -32
  386. package/src/utils/preview/hot-reloading/setup-hot-reloading.ts +0 -121
  387. package/src/utils/preview/hot-reloading/test/dependency-graph/inner/data-to-import.json +0 -1
  388. package/src/utils/preview/hot-reloading/test/dependency-graph/inner/file-a.ts +0 -5
  389. package/src/utils/preview/hot-reloading/test/dependency-graph/inner/file-b.ts +0 -5
  390. package/src/utils/preview/hot-reloading/test/dependency-graph/inner/general-importing-file.ts +0 -9
  391. package/src/utils/preview/hot-reloading/test/dependency-graph/inner/outer-dependency.ts +0 -3
  392. package/src/utils/preview/hot-reloading/test/dependency-graph/inner/path-aliases.ts +0 -1
  393. package/src/utils/preview/hot-reloading/test/dependency-graph/outer.ts +0 -5
  394. package/src/utils/preview/hot-reloading/test/some-file.ts +0 -0
  395. package/src/utils/preview/hot-reloading/test/tsconfig.json +0 -8
  396. package/src/utils/preview/index.ts +0 -2
  397. package/src/utils/preview/serve-static-file.ts +0 -51
  398. package/src/utils/preview/start-dev-server.ts +0 -252
  399. package/src/utils/register-spinner-autostopping.ts +0 -28
  400. package/src/utils/style-text.ts +0 -11
  401. package/src/utils/tree.spec.ts +0 -29
  402. package/src/utils/tree.ts +0 -76
  403. package/src/utils/types/hot-reload-change.ts +0 -6
  404. package/src/utils/types/hot-reload-event.ts +0 -3
@@ -0,0 +1,126 @@
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");
2
+ let css_tree = require("css-tree");
3
+ //#region src/components/tailwind/utils/css/downlevel-for-email-clients.ts
4
+ /**
5
+ * Downlevels modern CSS features that email clients don't support,
6
+ * operating on a css-tree StyleSheet AST.
7
+ *
8
+ * 1. CSS Nesting: unnests @media rules from inside selectors
9
+ * `.sm_p-4{@media (min-width:40rem){padding:1rem!important}}`
10
+ * → `@media (min-width:40rem){.sm_p-4{padding:1rem!important}}`
11
+ *
12
+ * 2. Media Queries Level 4 range syntax → legacy min-width/max-width
13
+ * `(width>=40rem)` → `(min-width:40rem)`
14
+ *
15
+ * Gmail, Outlook, Yahoo, and most email clients don't support either feature.
16
+ * See: https://www.caniemail.com/features/css-at-media/
17
+ * https://www.caniemail.com/features/css-nesting/
18
+ */
19
+ /**
20
+ * Unnest @media at-rules from inside regular rules, and downlevel
21
+ * range media query syntax to legacy min-width/max-width.
22
+ *
23
+ * Mutates the stylesheet in place.
24
+ */
25
+ function downlevelForEmailClients(styleSheet) {
26
+ unnestMediaQueries(styleSheet);
27
+ downlevelRangeMediaQueries(styleSheet);
28
+ }
29
+ /**
30
+ * Walk the stylesheet and unnest any @media/@supports rules that are nested
31
+ * inside regular rules. For each, the parent Rule's selector wraps the
32
+ * at-rule's body.
33
+ *
34
+ * Before: `.sm_p-4 { @media (...) { padding: 1rem } }`
35
+ * After: `@media (...) { .sm_p-4 { padding: 1rem } }`
36
+ */
37
+ function unnestMediaQueries(styleSheet) {
38
+ const transforms = [];
39
+ (0, css_tree.walk)(styleSheet, {
40
+ visit: "Rule",
41
+ enter(rule, item, list) {
42
+ if (!rule.block || !item) return;
43
+ const nestedAtrules = [];
44
+ const remainingChildren = [];
45
+ rule.block.children.forEach((child) => {
46
+ if (child.type === "Atrule" && (child.name === "media" || child.name === "supports")) nestedAtrules.push(child);
47
+ else remainingChildren.push(child);
48
+ });
49
+ if (nestedAtrules.length > 0) transforms.push({
50
+ parentRule: rule,
51
+ parentItem: item,
52
+ parentList: list,
53
+ nestedAtrules,
54
+ remainingChildren
55
+ });
56
+ }
57
+ });
58
+ for (let i = transforms.length - 1; i >= 0; i--) {
59
+ const { parentRule, parentItem, parentList, nestedAtrules, remainingChildren } = transforms[i];
60
+ const replacements = new css_tree.List();
61
+ if (remainingChildren.length > 0) {
62
+ parentRule.block.children = new css_tree.List().fromArray(remainingChildren);
63
+ replacements.appendData(parentRule);
64
+ }
65
+ for (const atrule of nestedAtrules) {
66
+ const wrappedRule = {
67
+ type: "Rule",
68
+ prelude: (0, css_tree.clone)(parentRule.prelude),
69
+ block: {
70
+ type: "Block",
71
+ children: atrule.block ? atrule.block.children : new css_tree.List()
72
+ }
73
+ };
74
+ const newAtrule = {
75
+ type: "Atrule",
76
+ name: atrule.name,
77
+ prelude: atrule.prelude,
78
+ block: {
79
+ type: "Block",
80
+ children: new css_tree.List().fromArray([wrappedRule])
81
+ }
82
+ };
83
+ replacements.appendData(newAtrule);
84
+ }
85
+ parentList.replace(parentItem, replacements);
86
+ }
87
+ }
88
+ /**
89
+ * Walk all nodes and downlevel range syntax (`FeatureRange`) inside @media
90
+ * preludes to legacy `Feature` nodes (`min-width` / `max-width`).
91
+ */
92
+ function downlevelRangeMediaQueries(styleSheet) {
93
+ const replacements = [];
94
+ (0, css_tree.walk)(styleSheet, { enter(originalNode, item) {
95
+ const node = originalNode;
96
+ if (item && node.type === "FeatureRange") {
97
+ const replacement = downlevelFeatureRange(node);
98
+ if (replacement) replacements.push({
99
+ item,
100
+ replacement
101
+ });
102
+ }
103
+ } });
104
+ for (const { item, replacement } of replacements) item.data = replacement;
105
+ }
106
+ /**
107
+ * Convert a `FeatureRange` node to a `Feature` node (legacy min-/max- syntax).
108
+ *
109
+ * For `width >= 40rem`: left=Identifier("width"), leftComparison=">=", middle=Dimension("40","rem")
110
+ * Result: { type: "Feature", name: "min-width", value: Dimension("40","rem") }
111
+ */
112
+ function downlevelFeatureRange(range) {
113
+ if (range.left.type !== "Identifier") return null;
114
+ let prefix;
115
+ if (range.leftComparison === ">=" || range.leftComparison === ">") prefix = "min-";
116
+ else if (range.leftComparison === "<=" || range.leftComparison === "<") prefix = "max-";
117
+ else return null;
118
+ return {
119
+ type: "Feature",
120
+ kind: "media",
121
+ name: `${prefix}${range.left.name}`,
122
+ value: range.middle
123
+ };
124
+ }
125
+ //#endregion
126
+ exports.downlevelForEmailClients = downlevelForEmailClients;
@@ -0,0 +1,125 @@
1
+ import { List, clone, walk } from "css-tree/dist/csstree.esm";
2
+ //#region src/components/tailwind/utils/css/downlevel-for-email-clients.ts
3
+ /**
4
+ * Downlevels modern CSS features that email clients don't support,
5
+ * operating on a css-tree StyleSheet AST.
6
+ *
7
+ * 1. CSS Nesting: unnests @media rules from inside selectors
8
+ * `.sm_p-4{@media (min-width:40rem){padding:1rem!important}}`
9
+ * → `@media (min-width:40rem){.sm_p-4{padding:1rem!important}}`
10
+ *
11
+ * 2. Media Queries Level 4 range syntax → legacy min-width/max-width
12
+ * `(width>=40rem)` → `(min-width:40rem)`
13
+ *
14
+ * Gmail, Outlook, Yahoo, and most email clients don't support either feature.
15
+ * See: https://www.caniemail.com/features/css-at-media/
16
+ * https://www.caniemail.com/features/css-nesting/
17
+ */
18
+ /**
19
+ * Unnest @media at-rules from inside regular rules, and downlevel
20
+ * range media query syntax to legacy min-width/max-width.
21
+ *
22
+ * Mutates the stylesheet in place.
23
+ */
24
+ function downlevelForEmailClients(styleSheet) {
25
+ unnestMediaQueries(styleSheet);
26
+ downlevelRangeMediaQueries(styleSheet);
27
+ }
28
+ /**
29
+ * Walk the stylesheet and unnest any @media/@supports rules that are nested
30
+ * inside regular rules. For each, the parent Rule's selector wraps the
31
+ * at-rule's body.
32
+ *
33
+ * Before: `.sm_p-4 { @media (...) { padding: 1rem } }`
34
+ * After: `@media (...) { .sm_p-4 { padding: 1rem } }`
35
+ */
36
+ function unnestMediaQueries(styleSheet) {
37
+ const transforms = [];
38
+ walk(styleSheet, {
39
+ visit: "Rule",
40
+ enter(rule, item, list) {
41
+ if (!rule.block || !item) return;
42
+ const nestedAtrules = [];
43
+ const remainingChildren = [];
44
+ rule.block.children.forEach((child) => {
45
+ if (child.type === "Atrule" && (child.name === "media" || child.name === "supports")) nestedAtrules.push(child);
46
+ else remainingChildren.push(child);
47
+ });
48
+ if (nestedAtrules.length > 0) transforms.push({
49
+ parentRule: rule,
50
+ parentItem: item,
51
+ parentList: list,
52
+ nestedAtrules,
53
+ remainingChildren
54
+ });
55
+ }
56
+ });
57
+ for (let i = transforms.length - 1; i >= 0; i--) {
58
+ const { parentRule, parentItem, parentList, nestedAtrules, remainingChildren } = transforms[i];
59
+ const replacements = new List();
60
+ if (remainingChildren.length > 0) {
61
+ parentRule.block.children = new List().fromArray(remainingChildren);
62
+ replacements.appendData(parentRule);
63
+ }
64
+ for (const atrule of nestedAtrules) {
65
+ const wrappedRule = {
66
+ type: "Rule",
67
+ prelude: clone(parentRule.prelude),
68
+ block: {
69
+ type: "Block",
70
+ children: atrule.block ? atrule.block.children : new List()
71
+ }
72
+ };
73
+ const newAtrule = {
74
+ type: "Atrule",
75
+ name: atrule.name,
76
+ prelude: atrule.prelude,
77
+ block: {
78
+ type: "Block",
79
+ children: new List().fromArray([wrappedRule])
80
+ }
81
+ };
82
+ replacements.appendData(newAtrule);
83
+ }
84
+ parentList.replace(parentItem, replacements);
85
+ }
86
+ }
87
+ /**
88
+ * Walk all nodes and downlevel range syntax (`FeatureRange`) inside @media
89
+ * preludes to legacy `Feature` nodes (`min-width` / `max-width`).
90
+ */
91
+ function downlevelRangeMediaQueries(styleSheet) {
92
+ const replacements = [];
93
+ walk(styleSheet, { enter(originalNode, item) {
94
+ const node = originalNode;
95
+ if (item && node.type === "FeatureRange") {
96
+ const replacement = downlevelFeatureRange(node);
97
+ if (replacement) replacements.push({
98
+ item,
99
+ replacement
100
+ });
101
+ }
102
+ } });
103
+ for (const { item, replacement } of replacements) item.data = replacement;
104
+ }
105
+ /**
106
+ * Convert a `FeatureRange` node to a `Feature` node (legacy min-/max- syntax).
107
+ *
108
+ * For `width >= 40rem`: left=Identifier("width"), leftComparison=">=", middle=Dimension("40","rem")
109
+ * Result: { type: "Feature", name: "min-width", value: Dimension("40","rem") }
110
+ */
111
+ function downlevelFeatureRange(range) {
112
+ if (range.left.type !== "Identifier") return null;
113
+ let prefix;
114
+ if (range.leftComparison === ">=" || range.leftComparison === ">") prefix = "min-";
115
+ else if (range.leftComparison === "<=" || range.leftComparison === "<") prefix = "max-";
116
+ else return null;
117
+ return {
118
+ type: "Feature",
119
+ kind: "media",
120
+ name: `${prefix}${range.left.name}`,
121
+ value: range.middle
122
+ };
123
+ }
124
+ //#endregion
125
+ export { downlevelForEmailClients };
@@ -0,0 +1,45 @@
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_is_rule_inlinable = require("./is-rule-inlinable.cjs");
3
+ const require_split_mixed_rule = require("./split-mixed-rule.cjs");
4
+ let css_tree = require("css-tree");
5
+ //#region src/components/tailwind/utils/css/extract-rules-per-class.ts
6
+ function extractRulesPerClass(root, classes) {
7
+ const classSet = new Set(classes);
8
+ const inlinableRules = /* @__PURE__ */ new Map();
9
+ const nonInlinableRules = /* @__PURE__ */ new Map();
10
+ const appendRule = (map, className, rule) => {
11
+ const existing = map.get(className);
12
+ if (existing) existing.push(rule);
13
+ else map.set(className, [rule]);
14
+ };
15
+ (0, css_tree.walk)(root, {
16
+ visit: "Rule",
17
+ enter(rule) {
18
+ const firstSelector = rule.prelude.type === "SelectorList" ? rule.prelude.children.first : null;
19
+ if (firstSelector?.type === "Selector" && firstSelector.children.first?.type === "NestingSelector") return;
20
+ const selectorClasses = [];
21
+ (0, css_tree.walk)(rule.prelude, {
22
+ visit: "ClassSelector",
23
+ enter(classSelector) {
24
+ selectorClasses.push(css_tree.string.decode(classSelector.name));
25
+ }
26
+ });
27
+ if (require_is_rule_inlinable.isRuleInlinable(rule)) {
28
+ for (const className of selectorClasses) if (classSet.has(className)) appendRule(inlinableRules, className, rule);
29
+ } else {
30
+ const { inlinablePart, nonInlinablePart } = require_split_mixed_rule.splitMixedRule(rule);
31
+ for (const className of selectorClasses) {
32
+ if (!classSet.has(className)) continue;
33
+ if (inlinablePart) appendRule(inlinableRules, className, inlinablePart);
34
+ if (nonInlinablePart) appendRule(nonInlinableRules, className, nonInlinablePart);
35
+ }
36
+ }
37
+ }
38
+ });
39
+ return {
40
+ inlinable: inlinableRules,
41
+ nonInlinable: nonInlinableRules
42
+ };
43
+ }
44
+ //#endregion
45
+ exports.extractRulesPerClass = extractRulesPerClass;
@@ -0,0 +1,44 @@
1
+ import { isRuleInlinable } from "./is-rule-inlinable.mjs";
2
+ import { splitMixedRule } from "./split-mixed-rule.mjs";
3
+ import { string, walk } from "css-tree/dist/csstree.esm";
4
+ //#region src/components/tailwind/utils/css/extract-rules-per-class.ts
5
+ function extractRulesPerClass(root, classes) {
6
+ const classSet = new Set(classes);
7
+ const inlinableRules = /* @__PURE__ */ new Map();
8
+ const nonInlinableRules = /* @__PURE__ */ new Map();
9
+ const appendRule = (map, className, rule) => {
10
+ const existing = map.get(className);
11
+ if (existing) existing.push(rule);
12
+ else map.set(className, [rule]);
13
+ };
14
+ walk(root, {
15
+ visit: "Rule",
16
+ enter(rule) {
17
+ const firstSelector = rule.prelude.type === "SelectorList" ? rule.prelude.children.first : null;
18
+ if (firstSelector?.type === "Selector" && firstSelector.children.first?.type === "NestingSelector") return;
19
+ const selectorClasses = [];
20
+ walk(rule.prelude, {
21
+ visit: "ClassSelector",
22
+ enter(classSelector) {
23
+ selectorClasses.push(string.decode(classSelector.name));
24
+ }
25
+ });
26
+ if (isRuleInlinable(rule)) {
27
+ for (const className of selectorClasses) if (classSet.has(className)) appendRule(inlinableRules, className, rule);
28
+ } else {
29
+ const { inlinablePart, nonInlinablePart } = splitMixedRule(rule);
30
+ for (const className of selectorClasses) {
31
+ if (!classSet.has(className)) continue;
32
+ if (inlinablePart) appendRule(inlinableRules, className, inlinablePart);
33
+ if (nonInlinablePart) appendRule(nonInlinableRules, className, nonInlinablePart);
34
+ }
35
+ }
36
+ }
37
+ });
38
+ return {
39
+ inlinable: inlinableRules,
40
+ nonInlinable: nonInlinableRules
41
+ };
42
+ }
43
+ //#endregion
44
+ export { extractRulesPerClass };
@@ -0,0 +1,35 @@
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");
2
+ let css_tree = require("css-tree");
3
+ //#region src/components/tailwind/utils/css/get-custom-properties.ts
4
+ function getCustomProperties(node) {
5
+ const customProperties = /* @__PURE__ */ new Map();
6
+ (0, css_tree.walk)(node, {
7
+ visit: "Atrule",
8
+ enter(atrule) {
9
+ if (atrule.name === "property" && atrule.prelude) {
10
+ const prelude = (0, css_tree.generate)(atrule.prelude);
11
+ if (prelude.startsWith("--")) {
12
+ let syntax;
13
+ let inherits;
14
+ let initialValue;
15
+ (0, css_tree.walk)(atrule, {
16
+ visit: "Declaration",
17
+ enter(declaration) {
18
+ if (declaration.property === "syntax") syntax = declaration;
19
+ if (declaration.property === "inherits") inherits = declaration;
20
+ if (declaration.property === "initial-value") initialValue = declaration;
21
+ }
22
+ });
23
+ customProperties.set(prelude, {
24
+ syntax,
25
+ inherits,
26
+ initialValue
27
+ });
28
+ }
29
+ }
30
+ }
31
+ });
32
+ return customProperties;
33
+ }
34
+ //#endregion
35
+ exports.getCustomProperties = getCustomProperties;
@@ -0,0 +1,34 @@
1
+ import { generate, walk } from "css-tree/dist/csstree.esm";
2
+ //#region src/components/tailwind/utils/css/get-custom-properties.ts
3
+ function getCustomProperties(node) {
4
+ const customProperties = /* @__PURE__ */ new Map();
5
+ walk(node, {
6
+ visit: "Atrule",
7
+ enter(atrule) {
8
+ if (atrule.name === "property" && atrule.prelude) {
9
+ const prelude = generate(atrule.prelude);
10
+ if (prelude.startsWith("--")) {
11
+ let syntax;
12
+ let inherits;
13
+ let initialValue;
14
+ walk(atrule, {
15
+ visit: "Declaration",
16
+ enter(declaration) {
17
+ if (declaration.property === "syntax") syntax = declaration;
18
+ if (declaration.property === "inherits") inherits = declaration;
19
+ if (declaration.property === "initial-value") initialValue = declaration;
20
+ }
21
+ });
22
+ customProperties.set(prelude, {
23
+ syntax,
24
+ inherits,
25
+ initialValue
26
+ });
27
+ }
28
+ }
29
+ }
30
+ });
31
+ return customProperties;
32
+ }
33
+ //#endregion
34
+ export { getCustomProperties };
@@ -0,0 +1,10 @@
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");
2
+ let css_tree = require("css-tree");
3
+ //#region src/components/tailwind/utils/css/is-part-inlinable.ts
4
+ function isPartInlinable(part) {
5
+ const hasAtRuleInside = (0, css_tree.find)(part, (node) => node.type === "Atrule") !== null;
6
+ const hasPseudoSelector = (0, css_tree.find)(part, (node) => node.type === "PseudoClassSelector" || node.type === "PseudoElementSelector") !== null;
7
+ return !hasAtRuleInside && !hasPseudoSelector;
8
+ }
9
+ //#endregion
10
+ exports.isPartInlinable = isPartInlinable;
@@ -0,0 +1,9 @@
1
+ import { find } from "css-tree/dist/csstree.esm";
2
+ //#region src/components/tailwind/utils/css/is-part-inlinable.ts
3
+ function isPartInlinable(part) {
4
+ const hasAtRuleInside = find(part, (node) => node.type === "Atrule") !== null;
5
+ const hasPseudoSelector = find(part, (node) => node.type === "PseudoClassSelector" || node.type === "PseudoElementSelector") !== null;
6
+ return !hasAtRuleInside && !hasPseudoSelector;
7
+ }
8
+ //#endregion
9
+ export { isPartInlinable };
@@ -0,0 +1,10 @@
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");
2
+ let css_tree = require("css-tree");
3
+ //#region src/components/tailwind/utils/css/is-rule-inlinable.ts
4
+ function isRuleInlinable(rule) {
5
+ const hasAtRuleInside = (0, css_tree.find)(rule, (node) => node.type === "Atrule") !== null;
6
+ const hasPseudoSelector = (0, css_tree.find)(rule, (node) => node.type === "PseudoClassSelector" || node.type === "PseudoElementSelector") !== null;
7
+ return !hasAtRuleInside && !hasPseudoSelector;
8
+ }
9
+ //#endregion
10
+ exports.isRuleInlinable = isRuleInlinable;
@@ -0,0 +1,9 @@
1
+ import { find } from "css-tree/dist/csstree.esm";
2
+ //#region src/components/tailwind/utils/css/is-rule-inlinable.ts
3
+ function isRuleInlinable(rule) {
4
+ const hasAtRuleInside = find(rule, (node) => node.type === "Atrule") !== null;
5
+ const hasPseudoSelector = find(rule, (node) => node.type === "PseudoClassSelector" || node.type === "PseudoElementSelector") !== null;
6
+ return !hasAtRuleInside && !hasPseudoSelector;
7
+ }
8
+ //#endregion
9
+ export { isRuleInlinable };
@@ -0,0 +1,52 @@
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_get_react_property = require("../compatibility/get-react-property.cjs");
3
+ const require_strip_empty_tailwind_vars = require("./strip-empty-tailwind-vars.cjs");
4
+ const require_unwrap_value = require("./unwrap-value.cjs");
5
+ let css_tree = require("css-tree");
6
+ //#region src/components/tailwind/utils/css/make-inline-styles-for.ts
7
+ function makeInlineStylesFor(inlinableRules, customProperties) {
8
+ const styles = {};
9
+ const localVariableDeclarations = /* @__PURE__ */ new Map();
10
+ for (const rule of inlinableRules) (0, css_tree.walk)(rule, {
11
+ visit: "Declaration",
12
+ enter(declaration) {
13
+ if (declaration.property.startsWith("--")) localVariableDeclarations.set(declaration.property, declaration);
14
+ }
15
+ });
16
+ for (const rule of inlinableRules) {
17
+ (0, css_tree.walk)(rule, {
18
+ visit: "Function",
19
+ enter(func, funcParentListItem) {
20
+ if (func.name === "var") {
21
+ let variableName;
22
+ (0, css_tree.walk)(func, {
23
+ visit: "Identifier",
24
+ enter(identifier) {
25
+ variableName = identifier.name;
26
+ return this.break;
27
+ }
28
+ });
29
+ if (variableName) {
30
+ const definition = localVariableDeclarations.get(variableName);
31
+ if (definition) funcParentListItem.data = require_unwrap_value.unwrapValue(definition.value);
32
+ else {
33
+ const customProperty = customProperties.get(variableName);
34
+ if (customProperty?.initialValue) funcParentListItem.data = require_unwrap_value.unwrapValue(customProperty.initialValue.value);
35
+ }
36
+ }
37
+ }
38
+ }
39
+ });
40
+ (0, css_tree.walk)(rule, {
41
+ visit: "Declaration",
42
+ enter(declaration) {
43
+ if (declaration.property.startsWith("--")) return;
44
+ require_strip_empty_tailwind_vars.stripEmptyTailwindVars(declaration.value);
45
+ styles[require_get_react_property.getReactProperty(declaration.property)] = (0, css_tree.generate)(declaration.value).trim() + (declaration.important ? "!important" : "");
46
+ }
47
+ });
48
+ }
49
+ return styles;
50
+ }
51
+ //#endregion
52
+ exports.makeInlineStylesFor = makeInlineStylesFor;
@@ -0,0 +1,51 @@
1
+ import { getReactProperty } from "../compatibility/get-react-property.mjs";
2
+ import { stripEmptyTailwindVars } from "./strip-empty-tailwind-vars.mjs";
3
+ import { unwrapValue } from "./unwrap-value.mjs";
4
+ import { generate, walk } from "css-tree/dist/csstree.esm";
5
+ //#region src/components/tailwind/utils/css/make-inline-styles-for.ts
6
+ function makeInlineStylesFor(inlinableRules, customProperties) {
7
+ const styles = {};
8
+ const localVariableDeclarations = /* @__PURE__ */ new Map();
9
+ for (const rule of inlinableRules) walk(rule, {
10
+ visit: "Declaration",
11
+ enter(declaration) {
12
+ if (declaration.property.startsWith("--")) localVariableDeclarations.set(declaration.property, declaration);
13
+ }
14
+ });
15
+ for (const rule of inlinableRules) {
16
+ walk(rule, {
17
+ visit: "Function",
18
+ enter(func, funcParentListItem) {
19
+ if (func.name === "var") {
20
+ let variableName;
21
+ walk(func, {
22
+ visit: "Identifier",
23
+ enter(identifier) {
24
+ variableName = identifier.name;
25
+ return this.break;
26
+ }
27
+ });
28
+ if (variableName) {
29
+ const definition = localVariableDeclarations.get(variableName);
30
+ if (definition) funcParentListItem.data = unwrapValue(definition.value);
31
+ else {
32
+ const customProperty = customProperties.get(variableName);
33
+ if (customProperty?.initialValue) funcParentListItem.data = unwrapValue(customProperty.initialValue.value);
34
+ }
35
+ }
36
+ }
37
+ }
38
+ });
39
+ walk(rule, {
40
+ visit: "Declaration",
41
+ enter(declaration) {
42
+ if (declaration.property.startsWith("--")) return;
43
+ stripEmptyTailwindVars(declaration.value);
44
+ styles[getReactProperty(declaration.property)] = generate(declaration.value).trim() + (declaration.important ? "!important" : "");
45
+ }
46
+ });
47
+ }
48
+ return styles;
49
+ }
50
+ //#endregion
51
+ export { makeInlineStylesFor };
@@ -0,0 +1,89 @@
1
+ require("../../../../_virtual/_rolldown/runtime.cjs");
2
+ let css_tree = require("css-tree");
3
+ //#region src/components/tailwind/utils/css/resolve-all-css-variables.ts
4
+ function doSelectorsIntersect(first, second) {
5
+ if ((0, css_tree.generate)(first) === (0, css_tree.generate)(second)) return true;
6
+ let hasSomeUniversal = false;
7
+ const walker = (node, _parentListItem, parentList) => {
8
+ if (hasSomeUniversal) return;
9
+ if (node.type === "PseudoClassSelector" && node.name === "root") hasSomeUniversal = true;
10
+ if (node.type === "TypeSelector" && node.name === "*" && parentList.size === 1) hasSomeUniversal = true;
11
+ };
12
+ (0, css_tree.walk)(first, walker);
13
+ (0, css_tree.walk)(second, walker);
14
+ if (hasSomeUniversal) return true;
15
+ return false;
16
+ }
17
+ function resolveAllCssVariables(node) {
18
+ const variableDefinitions = /* @__PURE__ */ new Set();
19
+ const variableUses = /* @__PURE__ */ new Set();
20
+ const path = [];
21
+ (0, css_tree.walk)(node, {
22
+ leave() {
23
+ path.shift();
24
+ },
25
+ enter(node) {
26
+ if (node.type === "Declaration") {
27
+ const declaration = node;
28
+ if (path.some((ancestor) => ancestor.type === "Atrule" && ancestor.name === "layer" && ancestor.prelude !== null && (0, css_tree.generate)(ancestor.prelude).includes("properties"))) {
29
+ path.unshift(node);
30
+ return;
31
+ }
32
+ if (/--[\S]+/.test(declaration.property)) variableDefinitions.add({
33
+ declaration,
34
+ path: [...path],
35
+ variableName: declaration.property,
36
+ definition: (0, css_tree.generate)(declaration.value)
37
+ });
38
+ else {
39
+ function parseVariableUsesFrom(node) {
40
+ (0, css_tree.walk)(node, {
41
+ visit: "Function",
42
+ enter(funcNode) {
43
+ if (funcNode.name === "var") {
44
+ const children = funcNode.children.toArray();
45
+ const name = (0, css_tree.generate)(children[0]);
46
+ const fallback = children[2] ? (0, css_tree.generate)(children[2]) : void 0;
47
+ variableUses.add({
48
+ declaration,
49
+ path: [...path],
50
+ fallback,
51
+ variableName: name,
52
+ raw: (0, css_tree.generate)(funcNode)
53
+ });
54
+ if (fallback?.includes("var(")) parseVariableUsesFrom((0, css_tree.parse)(fallback, { context: "value" }));
55
+ }
56
+ }
57
+ });
58
+ }
59
+ parseVariableUsesFrom(declaration.value);
60
+ }
61
+ }
62
+ path.unshift(node);
63
+ }
64
+ });
65
+ for (const use of variableUses) {
66
+ let hasReplaced = false;
67
+ for (const definition of variableDefinitions) {
68
+ if (use.variableName !== definition.variableName) continue;
69
+ if (use.path[0]?.type === "Block" && use.path[1]?.type === "Atrule" && use.path[2]?.type === "Block" && use.path[3]?.type === "Rule" && definition.path[0].type === "Block" && definition.path[1].type === "Rule" && doSelectorsIntersect(use.path[3].prelude, definition.path[1].prelude)) {
70
+ use.declaration.value = (0, css_tree.parse)((0, css_tree.generate)(use.declaration.value).replaceAll(use.raw, definition.definition), { context: "value" });
71
+ hasReplaced = true;
72
+ break;
73
+ }
74
+ if (use.path[0]?.type === "Block" && use.path[1]?.type === "Rule" && definition.path[0]?.type === "Block" && definition.path[1]?.type === "Rule" && doSelectorsIntersect(use.path[1].prelude, definition.path[1].prelude)) {
75
+ use.declaration.value = (0, css_tree.parse)((0, css_tree.generate)(use.declaration.value).replaceAll(use.raw, definition.definition), { context: "value" });
76
+ hasReplaced = true;
77
+ break;
78
+ }
79
+ if (use.path[0]?.type === "Block" && use.path[1]?.type === "Atrule" && use.path[2]?.type === "Block" && use.path[3]?.type === "Rule" && definition.path[0]?.type === "Block" && definition.path[1]?.type === "Atrule" && definition.path[2]?.type === "Block" && definition.path[3]?.type === "Rule" && use.path[1].name === definition.path[1].name && (use.path[1].prelude ? definition.path[1].prelude ? (0, css_tree.generate)(use.path[1].prelude) === (0, css_tree.generate)(definition.path[1].prelude) : false : definition.path[1].prelude === null) && doSelectorsIntersect(use.path[3].prelude, definition.path[3].prelude)) {
80
+ use.declaration.value = (0, css_tree.parse)((0, css_tree.generate)(use.declaration.value).replaceAll(use.raw, definition.definition), { context: "value" });
81
+ hasReplaced = true;
82
+ break;
83
+ }
84
+ }
85
+ if (!hasReplaced && use.fallback) use.declaration.value = (0, css_tree.parse)((0, css_tree.generate)(use.declaration.value).replaceAll(use.raw, use.fallback), { context: "value" });
86
+ }
87
+ }
88
+ //#endregion
89
+ exports.resolveAllCssVariables = resolveAllCssVariables;