@womp/kookie-ui 0.19.0 → 0.20.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 (298) hide show
  1. package/codemods/type-0.20.py +73 -0
  2. package/components.css +1003 -2360
  3. package/dist/cjs/components/_internal/base-menu.props.d.ts +2 -2
  4. package/dist/cjs/components/_internal/base-menu.props.js +1 -1
  5. package/dist/cjs/components/_internal/base-menu.props.js.map +2 -2
  6. package/dist/cjs/components/_internal/base-menu.utils.d.ts.map +1 -1
  7. package/dist/cjs/components/_internal/base-menu.utils.js +1 -1
  8. package/dist/cjs/components/_internal/base-menu.utils.js.map +2 -2
  9. package/dist/cjs/components/_internal/menu-context.d.ts +5 -2
  10. package/dist/cjs/components/_internal/menu-context.d.ts.map +1 -1
  11. package/dist/cjs/components/_internal/menu-context.js +1 -1
  12. package/dist/cjs/components/_internal/menu-context.js.map +2 -2
  13. package/dist/cjs/components/alert-dialog.js +1 -1
  14. package/dist/cjs/components/alert-dialog.js.map +2 -2
  15. package/dist/cjs/components/badge.js +1 -1
  16. package/dist/cjs/components/badge.js.map +2 -2
  17. package/dist/cjs/components/blockquote.js +1 -1
  18. package/dist/cjs/components/blockquote.js.map +2 -2
  19. package/dist/cjs/components/blockquote.props.d.ts +2 -2
  20. package/dist/cjs/components/blockquote.props.js +1 -1
  21. package/dist/cjs/components/blockquote.props.js.map +2 -2
  22. package/dist/cjs/components/button.js +1 -1
  23. package/dist/cjs/components/button.js.map +2 -2
  24. package/dist/cjs/components/chatbar.js +1 -1
  25. package/dist/cjs/components/chatbar.js.map +2 -2
  26. package/dist/cjs/components/checkbox-group.js +1 -1
  27. package/dist/cjs/components/checkbox-group.js.map +2 -2
  28. package/dist/cjs/components/code.js +1 -1
  29. package/dist/cjs/components/code.js.map +2 -2
  30. package/dist/cjs/components/code.props.d.ts +2 -2
  31. package/dist/cjs/components/code.props.js +1 -1
  32. package/dist/cjs/components/code.props.js.map +2 -2
  33. package/dist/cjs/components/combobox.js +1 -1
  34. package/dist/cjs/components/combobox.js.map +2 -2
  35. package/dist/cjs/components/combobox.props.d.ts +1 -1
  36. package/dist/cjs/components/combobox.props.js +1 -1
  37. package/dist/cjs/components/combobox.props.js.map +2 -2
  38. package/dist/cjs/components/context-menu.js +1 -1
  39. package/dist/cjs/components/context-menu.js.map +2 -2
  40. package/dist/cjs/components/context-menu.props.js +1 -1
  41. package/dist/cjs/components/context-menu.props.js.map +2 -2
  42. package/dist/cjs/components/data-list.js +1 -1
  43. package/dist/cjs/components/data-list.js.map +2 -2
  44. package/dist/cjs/components/dialog.js +1 -1
  45. package/dist/cjs/components/dialog.js.map +2 -2
  46. package/dist/cjs/components/dropdown-menu.js +1 -1
  47. package/dist/cjs/components/dropdown-menu.js.map +2 -2
  48. package/dist/cjs/components/dropdown-menu.props.js +1 -1
  49. package/dist/cjs/components/dropdown-menu.props.js.map +2 -2
  50. package/dist/cjs/components/heading.js +1 -1
  51. package/dist/cjs/components/heading.js.map +2 -2
  52. package/dist/cjs/components/heading.props.d.ts +2 -2
  53. package/dist/cjs/components/heading.props.js +1 -1
  54. package/dist/cjs/components/heading.props.js.map +2 -2
  55. package/dist/cjs/components/icon-button.js +1 -1
  56. package/dist/cjs/components/icon-button.js.map +2 -2
  57. package/dist/cjs/components/index.js +3 -3
  58. package/dist/cjs/components/index.js.map +3 -3
  59. package/dist/cjs/components/kbd.js +1 -1
  60. package/dist/cjs/components/kbd.js.map +2 -2
  61. package/dist/cjs/components/kbd.props.d.ts +1 -1
  62. package/dist/cjs/components/kbd.props.js +1 -1
  63. package/dist/cjs/components/kbd.props.js.map +2 -2
  64. package/dist/cjs/components/link.js +1 -1
  65. package/dist/cjs/components/link.js.map +2 -2
  66. package/dist/cjs/components/link.props.d.ts +2 -2
  67. package/dist/cjs/components/link.props.js +1 -1
  68. package/dist/cjs/components/link.props.js.map +2 -2
  69. package/dist/cjs/components/message-scroller.js +1 -1
  70. package/dist/cjs/components/message-scroller.js.map +2 -2
  71. package/dist/cjs/components/notice.js +1 -1
  72. package/dist/cjs/components/notice.js.map +2 -2
  73. package/dist/cjs/components/radio-group.js +1 -1
  74. package/dist/cjs/components/radio-group.js.map +2 -2
  75. package/dist/cjs/components/sheet.js +1 -1
  76. package/dist/cjs/components/sheet.js.map +2 -2
  77. package/dist/cjs/components/sidebar.d.ts.map +1 -1
  78. package/dist/cjs/components/sidebar.js +1 -1
  79. package/dist/cjs/components/sidebar.js.map +3 -3
  80. package/dist/cjs/components/text.js +1 -1
  81. package/dist/cjs/components/text.js.map +2 -2
  82. package/dist/cjs/components/text.props.d.ts +2 -2
  83. package/dist/cjs/components/text.props.js +1 -1
  84. package/dist/cjs/components/text.props.js.map +2 -2
  85. package/dist/cjs/components/theme-panel.js +2 -2
  86. package/dist/cjs/components/theme-panel.js.map +2 -2
  87. package/dist/cjs/components/toggle-button.js +1 -1
  88. package/dist/cjs/components/toggle-button.js.map +2 -2
  89. package/dist/cjs/components/toggle-icon-button.js +1 -1
  90. package/dist/cjs/components/toggle-icon-button.js.map +2 -2
  91. package/dist/cjs/components/toolbar.js +1 -1
  92. package/dist/cjs/components/toolbar.js.map +2 -2
  93. package/dist/cjs/components/tooltip.js +1 -1
  94. package/dist/cjs/components/tooltip.js.map +2 -2
  95. package/dist/cjs/components/virtual-menu.d.ts +2 -1
  96. package/dist/cjs/components/virtual-menu.d.ts.map +1 -1
  97. package/dist/cjs/components/virtual-menu.js +1 -1
  98. package/dist/cjs/components/virtual-menu.js.map +2 -2
  99. package/dist/cjs/index.js +3 -3
  100. package/dist/cjs/index.js.map +3 -3
  101. package/dist/cjs/props/index.js +1 -1
  102. package/dist/cjs/props/index.js.map +2 -2
  103. package/dist/cjs/props/weight.prop.d.ts +1 -1
  104. package/dist/cjs/props/weight.prop.d.ts.map +1 -1
  105. package/dist/cjs/props/weight.prop.js +1 -1
  106. package/dist/cjs/props/weight.prop.js.map +2 -2
  107. package/dist/esm/chunk-2WSD2H23.js +2 -0
  108. package/dist/esm/chunk-2WSD2H23.js.map +7 -0
  109. package/dist/esm/{chunk-JZSXHYUU.js → chunk-33IRPFDK.js} +2 -2
  110. package/dist/esm/{chunk-32ATKZAP.js → chunk-3E6ADI2F.js} +2 -2
  111. package/dist/esm/{chunk-JBC6DT2X.js → chunk-74SNS4VY.js} +2 -2
  112. package/dist/esm/chunk-CD324U6G.js +2 -0
  113. package/dist/esm/chunk-CD324U6G.js.map +7 -0
  114. package/dist/esm/{chunk-DIR22XIX.js → chunk-CNMFVJNC.js} +2 -2
  115. package/dist/esm/{chunk-UUHTK35B.js → chunk-EUHAZKWY.js} +2 -2
  116. package/dist/esm/chunk-F7HK2QLM.js +2 -0
  117. package/dist/esm/{chunk-5AHQJB6H.js.map → chunk-F7HK2QLM.js.map} +2 -2
  118. package/dist/esm/{chunk-MZR6YBE7.js → chunk-GDACOD53.js} +2 -2
  119. package/dist/esm/chunk-GTXRD4FZ.js +2 -0
  120. package/dist/esm/{chunk-UUV5UNYL.js.map → chunk-GTXRD4FZ.js.map} +3 -3
  121. package/dist/esm/{chunk-BUBV3C6C.js → chunk-HJ6ACBXW.js} +2 -2
  122. package/dist/esm/{chunk-XTE22CXV.js → chunk-HJZNHNLX.js} +2 -2
  123. package/dist/esm/chunk-HK7RJPQ2.js +2 -0
  124. package/dist/esm/chunk-HK7RJPQ2.js.map +7 -0
  125. package/dist/esm/{chunk-IXNJFV4O.js → chunk-HVXXJZC2.js} +2 -2
  126. package/dist/esm/{chunk-GYB7PAGB.js → chunk-IND2NZIN.js} +2 -2
  127. package/dist/esm/{chunk-UZQO4APP.js → chunk-JDMJC76O.js} +2 -2
  128. package/dist/esm/{chunk-PUQXBW2K.js → chunk-JH55M4I2.js} +2 -2
  129. package/dist/esm/{chunk-N77QJUTO.js → chunk-JOB6FH3D.js} +2 -2
  130. package/dist/esm/chunk-JOB6FH3D.js.map +7 -0
  131. package/dist/esm/{chunk-GIIMBBVM.js → chunk-MLXFZDFU.js} +2 -2
  132. package/dist/esm/{chunk-GYNRAVCL.js → chunk-NEK7F746.js} +2 -2
  133. package/dist/esm/chunk-NTGRWJEG.js +2 -0
  134. package/dist/esm/{chunk-EVTNB4TB.js.map → chunk-NTGRWJEG.js.map} +2 -2
  135. package/dist/esm/{chunk-KDKL3HXD.js → chunk-O7IPBLC7.js} +2 -2
  136. package/dist/esm/{chunk-K6Y2SM5N.js → chunk-OLSTITVY.js} +2 -2
  137. package/dist/esm/{chunk-X3D3JR64.js → chunk-Q6GUADLO.js} +2 -2
  138. package/dist/esm/{chunk-YVHRWMSZ.js → chunk-QETAAJJV.js} +2 -2
  139. package/dist/esm/chunk-QEYOXQK5.js +2 -0
  140. package/dist/esm/{chunk-PDBVZAUJ.js.map → chunk-QEYOXQK5.js.map} +2 -2
  141. package/dist/esm/chunk-R372ULQC.js +2 -0
  142. package/dist/esm/chunk-R372ULQC.js.map +7 -0
  143. package/dist/esm/chunk-RDS3AJWW.js +2 -0
  144. package/dist/esm/chunk-RDS3AJWW.js.map +7 -0
  145. package/dist/esm/{chunk-6XNQ5XD3.js → chunk-SKOF4A27.js} +2 -2
  146. package/dist/esm/{chunk-BINUV3ME.js → chunk-TBWKDBUF.js} +2 -2
  147. package/dist/esm/{chunk-MAI7FEU7.js → chunk-TLZMLJTI.js} +2 -2
  148. package/dist/esm/{chunk-MAI7FEU7.js.map → chunk-TLZMLJTI.js.map} +2 -2
  149. package/dist/esm/{chunk-CR2BSCFM.js → chunk-UNH3FGU4.js} +2 -2
  150. package/dist/esm/{chunk-L2IIIELE.js → chunk-WBGKTN35.js} +2 -2
  151. package/dist/esm/chunk-WSKA5MZZ.js +2 -0
  152. package/dist/esm/chunk-WSKA5MZZ.js.map +7 -0
  153. package/dist/esm/chunk-XDAQXNBQ.js +2 -0
  154. package/dist/esm/chunk-XDAQXNBQ.js.map +7 -0
  155. package/dist/esm/{chunk-63ASTOS2.js → chunk-XDV2SDJ3.js} +2 -2
  156. package/dist/esm/{chunk-G6PO4QKW.js → chunk-XPT5ELKO.js} +2 -2
  157. package/dist/esm/{chunk-2XQECQF2.js → chunk-XXHIMGBY.js} +2 -2
  158. package/dist/esm/{chunk-JRIBL4WJ.js → chunk-ZRHXFYAE.js} +2 -2
  159. package/dist/esm/components/_internal/base-menu.props.d.ts +2 -2
  160. package/dist/esm/components/_internal/base-menu.props.js +1 -1
  161. package/dist/esm/components/_internal/base-menu.utils.d.ts.map +1 -1
  162. package/dist/esm/components/_internal/base-menu.utils.js +1 -1
  163. package/dist/esm/components/_internal/menu-context.d.ts +5 -2
  164. package/dist/esm/components/_internal/menu-context.d.ts.map +1 -1
  165. package/dist/esm/components/_internal/menu-context.js +1 -1
  166. package/dist/esm/components/alert-dialog.js +1 -1
  167. package/dist/esm/components/badge.js +1 -1
  168. package/dist/esm/components/blockquote.js +1 -1
  169. package/dist/esm/components/blockquote.props.d.ts +2 -2
  170. package/dist/esm/components/blockquote.props.js +1 -1
  171. package/dist/esm/components/button.js +1 -1
  172. package/dist/esm/components/chatbar.js +1 -1
  173. package/dist/esm/components/checkbox-group.js +1 -1
  174. package/dist/esm/components/code.js +1 -1
  175. package/dist/esm/components/code.props.d.ts +2 -2
  176. package/dist/esm/components/code.props.js +1 -1
  177. package/dist/esm/components/combobox.js +1 -1
  178. package/dist/esm/components/combobox.props.d.ts +1 -1
  179. package/dist/esm/components/combobox.props.js +1 -1
  180. package/dist/esm/components/context-menu.js +1 -1
  181. package/dist/esm/components/context-menu.props.js +1 -1
  182. package/dist/esm/components/data-list.js +1 -1
  183. package/dist/esm/components/dialog.js +1 -1
  184. package/dist/esm/components/dropdown-menu.js +1 -1
  185. package/dist/esm/components/dropdown-menu.props.js +1 -1
  186. package/dist/esm/components/heading.js +1 -1
  187. package/dist/esm/components/heading.props.d.ts +2 -2
  188. package/dist/esm/components/heading.props.js +1 -1
  189. package/dist/esm/components/icon-button.js +1 -1
  190. package/dist/esm/components/index.js +1 -1
  191. package/dist/esm/components/kbd.js +1 -1
  192. package/dist/esm/components/kbd.props.d.ts +1 -1
  193. package/dist/esm/components/kbd.props.js +1 -1
  194. package/dist/esm/components/link.js +1 -1
  195. package/dist/esm/components/link.props.d.ts +2 -2
  196. package/dist/esm/components/link.props.js +1 -1
  197. package/dist/esm/components/message-scroller.js +1 -1
  198. package/dist/esm/components/notice.js +1 -1
  199. package/dist/esm/components/radio-group.js +1 -1
  200. package/dist/esm/components/sheet.js +1 -1
  201. package/dist/esm/components/sidebar.d.ts.map +1 -1
  202. package/dist/esm/components/sidebar.js +1 -1
  203. package/dist/esm/components/text.js +1 -1
  204. package/dist/esm/components/text.props.d.ts +2 -2
  205. package/dist/esm/components/text.props.js +1 -1
  206. package/dist/esm/components/theme-panel.js +1 -1
  207. package/dist/esm/components/toggle-button.js +1 -1
  208. package/dist/esm/components/toggle-icon-button.js +1 -1
  209. package/dist/esm/components/toolbar.js +1 -1
  210. package/dist/esm/components/tooltip.js +1 -1
  211. package/dist/esm/components/virtual-menu.d.ts +2 -1
  212. package/dist/esm/components/virtual-menu.d.ts.map +1 -1
  213. package/dist/esm/components/virtual-menu.js +1 -1
  214. package/dist/esm/index.js +1 -1
  215. package/dist/esm/props/index.js +1 -1
  216. package/dist/esm/props/weight.prop.d.ts +1 -1
  217. package/dist/esm/props/weight.prop.d.ts.map +1 -1
  218. package/dist/esm/props/weight.prop.js +1 -1
  219. package/package.json +1 -1
  220. package/src/components/_internal/base-menu.css +120 -114
  221. package/src/components/_internal/base-menu.props.ts +1 -1
  222. package/src/components/_internal/base-menu.utils.tsx +2 -1
  223. package/src/components/_internal/base-sidebar-menu.css +8 -38
  224. package/src/components/_internal/menu-context.tsx +9 -4
  225. package/src/components/avatar.css +3 -3
  226. package/src/components/badge.css +3 -3
  227. package/src/components/blockquote.props.tsx +1 -1
  228. package/src/components/code.css +10 -32
  229. package/src/components/code.props.tsx +1 -1
  230. package/src/components/combobox.css +0 -9
  231. package/src/components/combobox.props.tsx +1 -1
  232. package/src/components/heading.css +9 -29
  233. package/src/components/heading.props.tsx +1 -1
  234. package/src/components/kbd.css +1 -29
  235. package/src/components/kbd.props.tsx +1 -1
  236. package/src/components/link.props.tsx +1 -1
  237. package/src/components/notice.css +10 -13
  238. package/src/components/select.css +19 -134
  239. package/src/components/sidebar.css +82 -123
  240. package/src/components/sidebar.tsx +1 -3
  241. package/src/components/slider.css +2 -2
  242. package/src/components/table.css +24 -11
  243. package/src/components/text.css +0 -20
  244. package/src/components/text.props.tsx +1 -1
  245. package/src/components/virtual-menu.tsx +3 -1
  246. package/src/props/weight.prop.ts +2 -1
  247. package/src/styles/tokens/radius.css +12 -0
  248. package/src/styles/tokens/typography.css +21 -49
  249. package/src/styles/utilities/font-weight.css +0 -20
  250. package/styles.css +1034 -2503
  251. package/tokens/base.css +23 -45
  252. package/tokens.css +23 -45
  253. package/utilities.css +0 -90
  254. package/dist/esm/chunk-5AHQJB6H.js +0 -2
  255. package/dist/esm/chunk-ABQHBDM4.js +0 -2
  256. package/dist/esm/chunk-ABQHBDM4.js.map +0 -7
  257. package/dist/esm/chunk-B72RMGWZ.js +0 -2
  258. package/dist/esm/chunk-B72RMGWZ.js.map +0 -7
  259. package/dist/esm/chunk-EUSKAXHP.js +0 -2
  260. package/dist/esm/chunk-EUSKAXHP.js.map +0 -7
  261. package/dist/esm/chunk-EVTNB4TB.js +0 -2
  262. package/dist/esm/chunk-FD2TR343.js +0 -2
  263. package/dist/esm/chunk-FD2TR343.js.map +0 -7
  264. package/dist/esm/chunk-FTGD2SZ6.js +0 -2
  265. package/dist/esm/chunk-FTGD2SZ6.js.map +0 -7
  266. package/dist/esm/chunk-G3U6OHVA.js +0 -2
  267. package/dist/esm/chunk-G3U6OHVA.js.map +0 -7
  268. package/dist/esm/chunk-N77QJUTO.js.map +0 -7
  269. package/dist/esm/chunk-PDBVZAUJ.js +0 -2
  270. package/dist/esm/chunk-UUV5UNYL.js +0 -2
  271. package/dist/esm/chunk-ZMFZYXLB.js +0 -2
  272. package/dist/esm/chunk-ZMFZYXLB.js.map +0 -7
  273. /package/dist/esm/{chunk-JZSXHYUU.js.map → chunk-33IRPFDK.js.map} +0 -0
  274. /package/dist/esm/{chunk-32ATKZAP.js.map → chunk-3E6ADI2F.js.map} +0 -0
  275. /package/dist/esm/{chunk-JBC6DT2X.js.map → chunk-74SNS4VY.js.map} +0 -0
  276. /package/dist/esm/{chunk-DIR22XIX.js.map → chunk-CNMFVJNC.js.map} +0 -0
  277. /package/dist/esm/{chunk-UUHTK35B.js.map → chunk-EUHAZKWY.js.map} +0 -0
  278. /package/dist/esm/{chunk-MZR6YBE7.js.map → chunk-GDACOD53.js.map} +0 -0
  279. /package/dist/esm/{chunk-BUBV3C6C.js.map → chunk-HJ6ACBXW.js.map} +0 -0
  280. /package/dist/esm/{chunk-XTE22CXV.js.map → chunk-HJZNHNLX.js.map} +0 -0
  281. /package/dist/esm/{chunk-IXNJFV4O.js.map → chunk-HVXXJZC2.js.map} +0 -0
  282. /package/dist/esm/{chunk-GYB7PAGB.js.map → chunk-IND2NZIN.js.map} +0 -0
  283. /package/dist/esm/{chunk-UZQO4APP.js.map → chunk-JDMJC76O.js.map} +0 -0
  284. /package/dist/esm/{chunk-PUQXBW2K.js.map → chunk-JH55M4I2.js.map} +0 -0
  285. /package/dist/esm/{chunk-GIIMBBVM.js.map → chunk-MLXFZDFU.js.map} +0 -0
  286. /package/dist/esm/{chunk-GYNRAVCL.js.map → chunk-NEK7F746.js.map} +0 -0
  287. /package/dist/esm/{chunk-KDKL3HXD.js.map → chunk-O7IPBLC7.js.map} +0 -0
  288. /package/dist/esm/{chunk-K6Y2SM5N.js.map → chunk-OLSTITVY.js.map} +0 -0
  289. /package/dist/esm/{chunk-X3D3JR64.js.map → chunk-Q6GUADLO.js.map} +0 -0
  290. /package/dist/esm/{chunk-YVHRWMSZ.js.map → chunk-QETAAJJV.js.map} +0 -0
  291. /package/dist/esm/{chunk-6XNQ5XD3.js.map → chunk-SKOF4A27.js.map} +0 -0
  292. /package/dist/esm/{chunk-BINUV3ME.js.map → chunk-TBWKDBUF.js.map} +0 -0
  293. /package/dist/esm/{chunk-CR2BSCFM.js.map → chunk-UNH3FGU4.js.map} +0 -0
  294. /package/dist/esm/{chunk-L2IIIELE.js.map → chunk-WBGKTN35.js.map} +0 -0
  295. /package/dist/esm/{chunk-63ASTOS2.js.map → chunk-XDV2SDJ3.js.map} +0 -0
  296. /package/dist/esm/{chunk-G6PO4QKW.js.map → chunk-XPT5ELKO.js.map} +0 -0
  297. /package/dist/esm/{chunk-2XQECQF2.js.map → chunk-XXHIMGBY.js.map} +0 -0
  298. /package/dist/esm/{chunk-JRIBL4WJ.js.map → chunk-ZRHXFYAE.js.map} +0 -0
@@ -0,0 +1,73 @@
1
+ """
2
+ Kookie UI 0.20 type codemod.
3
+
4
+ Type takes v2's nine steps (12, 14, 16, 18, 20, 24, 32, 44, 64px) and three weights
5
+ (regular, medium, semibold). Sizes v2 lacks move to the nearest step: 0 -> 1, 8 -> 7,
6
+ 10, 11 and 12 -> 9. Weights: thin, extralight and light -> regular; bold and extrabold -> semibold.
7
+ This rewrites, in place:
8
+
9
+ - size and weight props on Text, Heading, Link, Code, Kbd, Blockquote, Em, Strong and Quote,
10
+ plain strings and responsive objects (.tsx/.jsx/.mdx)
11
+ - var(--font-size-N), var(--line-height-N), var(--letter-spacing-N) and
12
+ var(--font-weight-NAME) in .css/.ts/.tsx/.mdx
13
+
14
+ Usage: python3 type-0.20.py <folder> [<folder> ...] Safe to run twice.
15
+ """
16
+ import glob
17
+ import os
18
+ import re
19
+ import sys
20
+
21
+ SIZE = {'0': '1', '8': '7', '10': '9', '11': '9', '12': '9'}
22
+ WEIGHT = {'thin': 'regular', 'extralight': 'regular', 'light': 'regular', 'bold': 'semibold', 'extrabold': 'semibold'}
23
+ TYPE = r'(?:Text|Heading|Link|Code|Kbd|Blockquote|Em|Strong|Quote)'
24
+ TAG = re.compile(r'<' + TYPE + r'\b[^<>]*?>', re.S)
25
+ PLAIN = re.compile(r'(\b(size|weight)=)(["\'])([\w-]+)\3')
26
+ OBJECT = re.compile(r'(\b(size|weight)=\{\{)([^{}]*)(\}\})')
27
+ ENTRY = re.compile(r'(\w+\s*:\s*)(["\'])([\w-]+)\2')
28
+ TOKEN = re.compile(r'--(font-size|line-height|letter-spacing)-(\d+)\b')
29
+ WEIGHT_TOKEN = re.compile(r'--font-weight-(thin|extralight|light|bold|extrabold)\b')
30
+ SKIP = ('node_modules', '/.next/', '/dist/', '/build/')
31
+
32
+
33
+ def value(prop, v):
34
+ return (SIZE if prop == 'size' else WEIGHT).get(v, v)
35
+
36
+
37
+ def tag(m):
38
+ t = PLAIN.sub(lambda p: p.group(1) + p.group(3) + value(p.group(2), p.group(4)) + p.group(3), m.group(0))
39
+ return OBJECT.sub(
40
+ lambda o: o.group(1) + ENTRY.sub(lambda e: e.group(1) + e.group(2) + value(o.group(2), e.group(3)) + e.group(2), o.group(3)) + o.group(4),
41
+ t,
42
+ )
43
+
44
+
45
+ def rewrite(text, jsx):
46
+ if jsx:
47
+ text = TAG.sub(tag, text)
48
+ text = TOKEN.sub(lambda m: '--%s-%s' % (m.group(1), SIZE.get(m.group(2), m.group(2))), text)
49
+ return WEIGHT_TOKEN.sub(lambda m: '--font-weight-' + WEIGHT[m.group(1)], text)
50
+
51
+
52
+ def main(folders):
53
+ changed = 0
54
+ for folder in folders:
55
+ for path in glob.glob(os.path.join(folder, '**', '*'), recursive=True):
56
+ if not os.path.isfile(path) or any(s in path for s in SKIP):
57
+ continue
58
+ if not path.endswith(('.css', '.scss', '.ts', '.tsx', '.jsx', '.mdx')):
59
+ continue
60
+ with open(path) as f:
61
+ before = f.read()
62
+ after = rewrite(before, path.endswith(('.tsx', '.jsx', '.mdx')))
63
+ if after != before:
64
+ with open(path, 'w') as f:
65
+ f.write(after)
66
+ changed += 1
67
+ print('%d files rewritten' % changed)
68
+
69
+
70
+ if __name__ == '__main__':
71
+ if len(sys.argv) < 2:
72
+ sys.exit(__doc__)
73
+ main(sys.argv[1:])