brep-io-kernel 1.0.95 → 1.0.97

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 (366) hide show
  1. package/dist-kernel/brep-io-kernel.css +1 -1
  2. package/dist-kernel/brep-kernel.js +66834 -73930
  3. package/package.json +1 -1
  4. package/src/UI/cad/CadEmbed.js +2 -2
  5. package/src/UI/viewer.js +10 -6
  6. package/src/assets/brand/brep-home-banner.svg +116 -0
  7. package/src/assets/fonts/google-ofl/catalog.js +0 -67
  8. package/src/features/textToFace/TextToFaceFeature.js +18 -73
  9. package/src/features/textToFace/fontUrlLoaders.kernel.js +8 -1
  10. package/src/features/textToFace/fontUrlLoaders.vite.js +5 -1
  11. package/src/generated/licenseBundle.js +1 -1
  12. package/src/main.js +2 -1
  13. package/src/styles/cad.css +7 -2
  14. package/src/styles/landing.css +7 -1
  15. package/src/tools/fontAuditPage.js +354 -0
  16. package/src/assets/fonts/braille-hc/BrailleLatinHC-Regular.otf +0 -0
  17. package/src/assets/fonts/braille-hc/BraillePinboardHC-Regular.otf +0 -0
  18. package/src/assets/fonts/dejavu/DejaVuSans-Bold.ttf +0 -0
  19. package/src/assets/fonts/dejavu/DejaVuSans.ttf +0 -0
  20. package/src/assets/fonts/dejavu/DejaVuSansMono-Bold.ttf +0 -0
  21. package/src/assets/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf +0 -0
  22. package/src/assets/fonts/dejavu/DejaVuSansMono-Oblique.ttf +0 -0
  23. package/src/assets/fonts/dejavu/DejaVuSansMono.ttf +0 -0
  24. package/src/assets/fonts/dejavu/DejaVuSerif-Bold.ttf +0 -0
  25. package/src/assets/fonts/dejavu/DejaVuSerif.ttf +0 -0
  26. package/src/assets/fonts/google-ofl/anektelugu/AnekTelugu[wdth,wght].ttf +0 -0
  27. package/src/assets/fonts/google-ofl/anektelugu/DESCRIPTION.en_us.html +0 -23
  28. package/src/assets/fonts/google-ofl/anektelugu/METADATA.pb +0 -47
  29. package/src/assets/fonts/google-ofl/anektelugu/OFL.txt +0 -93
  30. package/src/assets/fonts/google-ofl/anton/Anton-Regular.ttf +0 -0
  31. package/src/assets/fonts/google-ofl/anton/DESCRIPTION.en_us.html +0 -12
  32. package/src/assets/fonts/google-ofl/anton/METADATA.pb +0 -38
  33. package/src/assets/fonts/google-ofl/anton/OFL.txt +0 -93
  34. package/src/assets/fonts/google-ofl/archivo/Archivo[wdth,wght].ttf +0 -0
  35. package/src/assets/fonts/google-ofl/archivo/DESCRIPTION.en_us.html +0 -5
  36. package/src/assets/fonts/google-ofl/archivo/METADATA.pb +0 -55
  37. package/src/assets/fonts/google-ofl/archivo/OFL.txt +0 -93
  38. package/src/assets/fonts/google-ofl/bitter/Bitter[wght].ttf +0 -0
  39. package/src/assets/fonts/google-ofl/bitter/DESCRIPTION.en_us.html +0 -26
  40. package/src/assets/fonts/google-ofl/bitter/METADATA.pb +0 -52
  41. package/src/assets/fonts/google-ofl/bitter/OFL.txt +0 -94
  42. package/src/assets/fonts/google-ofl/bricolagegrotesque/BricolageGrotesque[opsz,wdth,wght].ttf +0 -0
  43. package/src/assets/fonts/google-ofl/bricolagegrotesque/DESCRIPTION.en_us.html +0 -5
  44. package/src/assets/fonts/google-ofl/bricolagegrotesque/METADATA.pb +0 -50
  45. package/src/assets/fonts/google-ofl/bricolagegrotesque/OFL.txt +0 -93
  46. package/src/assets/fonts/google-ofl/cabin/Cabin[wdth,wght].ttf +0 -0
  47. package/src/assets/fonts/google-ofl/cabin/DESCRIPTION.en_us.html +0 -16
  48. package/src/assets/fonts/google-ofl/cabin/METADATA.pb +0 -40
  49. package/src/assets/fonts/google-ofl/cabin/OFL.txt +0 -93
  50. package/src/assets/fonts/google-ofl/cairo/Cairo[slnt,wght].ttf +0 -0
  51. package/src/assets/fonts/google-ofl/cairo/DESCRIPTION.en_us.html +0 -13
  52. package/src/assets/fonts/google-ofl/cairo/METADATA.pb +0 -44
  53. package/src/assets/fonts/google-ofl/cairo/OFL.txt +0 -93
  54. package/src/assets/fonts/google-ofl/caveat/Caveat[wght].ttf +0 -0
  55. package/src/assets/fonts/google-ofl/caveat/DESCRIPTION.en_us.html +0 -15
  56. package/src/assets/fonts/google-ofl/caveat/METADATA.pb +0 -44
  57. package/src/assets/fonts/google-ofl/caveat/OFL.txt +0 -93
  58. package/src/assets/fonts/google-ofl/comfortaa/Comfortaa[wght].ttf +0 -0
  59. package/src/assets/fonts/google-ofl/comfortaa/DESCRIPTION.en_us.html +0 -1
  60. package/src/assets/fonts/google-ofl/comfortaa/METADATA.pb +0 -31
  61. package/src/assets/fonts/google-ofl/comfortaa/OFL.txt +0 -93
  62. package/src/assets/fonts/google-ofl/cormorantgaramond/CormorantGaramond[wght].ttf +0 -0
  63. package/src/assets/fonts/google-ofl/cormorantgaramond/DESCRIPTION.en_us.html +0 -4
  64. package/src/assets/fonts/google-ofl/cormorantgaramond/METADATA.pb +0 -52
  65. package/src/assets/fonts/google-ofl/cormorantgaramond/OFL.txt +0 -93
  66. package/src/assets/fonts/google-ofl/dmsans/DESCRIPTION.en_us.html +0 -13
  67. package/src/assets/fonts/google-ofl/dmsans/DMSans[opsz,wght].ttf +0 -0
  68. package/src/assets/fonts/google-ofl/dmsans/METADATA.pb +0 -54
  69. package/src/assets/fonts/google-ofl/dmsans/OFL.txt +0 -93
  70. package/src/assets/fonts/google-ofl/dosis/DESCRIPTION.en_us.html +0 -3
  71. package/src/assets/fonts/google-ofl/dosis/Dosis[wght].ttf +0 -0
  72. package/src/assets/fonts/google-ofl/dosis/METADATA.pb +0 -39
  73. package/src/assets/fonts/google-ofl/dosis/OFL.txt +0 -93
  74. package/src/assets/fonts/google-ofl/ebgaramond/DESCRIPTION.en_us.html +0 -20
  75. package/src/assets/fonts/google-ofl/ebgaramond/EBGaramond[wght].ttf +0 -0
  76. package/src/assets/fonts/google-ofl/ebgaramond/METADATA.pb +0 -42
  77. package/src/assets/fonts/google-ofl/ebgaramond/OFL.txt +0 -93
  78. package/src/assets/fonts/google-ofl/exo2/DESCRIPTION.en_us.html +0 -5
  79. package/src/assets/fonts/google-ofl/exo2/Exo2[wght].ttf +0 -0
  80. package/src/assets/fonts/google-ofl/exo2/METADATA.pb +0 -52
  81. package/src/assets/fonts/google-ofl/exo2/OFL.txt +0 -93
  82. package/src/assets/fonts/google-ofl/firasans/DESCRIPTION.en_us.html +0 -11
  83. package/src/assets/fonts/google-ofl/firasans/FiraSans-Regular.ttf +0 -0
  84. package/src/assets/fonts/google-ofl/firasans/METADATA.pb +0 -178
  85. package/src/assets/fonts/google-ofl/firasans/OFL.txt +0 -93
  86. package/src/assets/fonts/google-ofl/fjallaone/DESCRIPTION.en_us.html +0 -8
  87. package/src/assets/fonts/google-ofl/fjallaone/FjallaOne-Regular.ttf +0 -0
  88. package/src/assets/fonts/google-ofl/fjallaone/METADATA.pb +0 -32
  89. package/src/assets/fonts/google-ofl/fjallaone/OFL.txt +0 -93
  90. package/src/assets/fonts/google-ofl/heebo/DESCRIPTION.en_us.html +0 -9
  91. package/src/assets/fonts/google-ofl/heebo/Heebo[wght].ttf +0 -0
  92. package/src/assets/fonts/google-ofl/heebo/METADATA.pb +0 -41
  93. package/src/assets/fonts/google-ofl/heebo/OFL.txt +0 -93
  94. package/src/assets/fonts/google-ofl/hind/DESCRIPTION.en_us.html +0 -28
  95. package/src/assets/fonts/google-ofl/hind/Hind-Regular.ttf +0 -0
  96. package/src/assets/fonts/google-ofl/hind/METADATA.pb +0 -58
  97. package/src/assets/fonts/google-ofl/hind/OFL.txt +0 -93
  98. package/src/assets/fonts/google-ofl/hindsiliguri/DESCRIPTION.en_us.html +0 -27
  99. package/src/assets/fonts/google-ofl/hindsiliguri/HindSiliguri-Regular.ttf +0 -0
  100. package/src/assets/fonts/google-ofl/hindsiliguri/METADATA.pb +0 -58
  101. package/src/assets/fonts/google-ofl/hindsiliguri/OFL.txt +0 -93
  102. package/src/assets/fonts/google-ofl/ibmplexsans/DESCRIPTION.en_us.html +0 -15
  103. package/src/assets/fonts/google-ofl/ibmplexsans/IBMPlexSans[wdth,wght].ttf +0 -0
  104. package/src/assets/fonts/google-ofl/ibmplexsans/METADATA.pb +0 -61
  105. package/src/assets/fonts/google-ofl/ibmplexsans/OFL.txt +0 -93
  106. package/src/assets/fonts/google-ofl/inconsolata/DESCRIPTION.en_us.html +0 -21
  107. package/src/assets/fonts/google-ofl/inconsolata/Inconsolata[wdth,wght].ttf +0 -0
  108. package/src/assets/fonts/google-ofl/inconsolata/METADATA.pb +0 -34
  109. package/src/assets/fonts/google-ofl/inconsolata/OFL.txt +0 -93
  110. package/src/assets/fonts/google-ofl/inter/DESCRIPTION.en_us.html +0 -14
  111. package/src/assets/fonts/google-ofl/inter/Inter[opsz,wght].ttf +0 -0
  112. package/src/assets/fonts/google-ofl/inter/METADATA.pb +0 -56
  113. package/src/assets/fonts/google-ofl/inter/OFL.txt +0 -93
  114. package/src/assets/fonts/google-ofl/intertight/DESCRIPTION.en_us.html +0 -4
  115. package/src/assets/fonts/google-ofl/intertight/InterTight[wght].ttf +0 -0
  116. package/src/assets/fonts/google-ofl/intertight/METADATA.pb +0 -56
  117. package/src/assets/fonts/google-ofl/intertight/OFL.txt +0 -93
  118. package/src/assets/fonts/google-ofl/jost/DESCRIPTION.en_us.html +0 -8
  119. package/src/assets/fonts/google-ofl/jost/Jost[wght].ttf +0 -0
  120. package/src/assets/fonts/google-ofl/jost/METADATA.pb +0 -46
  121. package/src/assets/fonts/google-ofl/jost/OFL.txt +0 -93
  122. package/src/assets/fonts/google-ofl/kanit/DESCRIPTION.en_us.html +0 -17
  123. package/src/assets/fonts/google-ofl/kanit/Kanit-Regular.ttf +0 -0
  124. package/src/assets/fonts/google-ofl/kanit/METADATA.pb +0 -177
  125. package/src/assets/fonts/google-ofl/kanit/OFL.txt +0 -93
  126. package/src/assets/fonts/google-ofl/lato/DESCRIPTION.en_us.html +0 -14
  127. package/src/assets/fonts/google-ofl/lato/Lato-Regular.ttf +0 -0
  128. package/src/assets/fonts/google-ofl/lato/METADATA.pb +0 -358
  129. package/src/assets/fonts/google-ofl/lato/OFL.txt +0 -93
  130. package/src/assets/fonts/google-ofl/lexend/DESCRIPTION.en_us.html +0 -27
  131. package/src/assets/fonts/google-ofl/lexend/Lexend[wght].ttf +0 -0
  132. package/src/assets/fonts/google-ofl/lexend/METADATA.pb +0 -38
  133. package/src/assets/fonts/google-ofl/lexend/OFL.txt +0 -93
  134. package/src/assets/fonts/google-ofl/librebaskerville/DESCRIPTION.en_us.html +0 -9
  135. package/src/assets/fonts/google-ofl/librebaskerville/LibreBaskerville[wght].ttf +0 -0
  136. package/src/assets/fonts/google-ofl/librebaskerville/METADATA.pb +0 -53
  137. package/src/assets/fonts/google-ofl/librebaskerville/OFL.txt +0 -93
  138. package/src/assets/fonts/google-ofl/librefranklin/DESCRIPTION.en_us.html +0 -7
  139. package/src/assets/fonts/google-ofl/librefranklin/LibreFranklin[wght].ttf +0 -0
  140. package/src/assets/fonts/google-ofl/librefranklin/METADATA.pb +0 -124
  141. package/src/assets/fonts/google-ofl/librefranklin/OFL.txt +0 -93
  142. package/src/assets/fonts/google-ofl/lobster/DESCRIPTION.en_us.html +0 -6
  143. package/src/assets/fonts/google-ofl/lobster/Lobster-Regular.ttf +0 -0
  144. package/src/assets/fonts/google-ofl/lobster/METADATA.pb +0 -25
  145. package/src/assets/fonts/google-ofl/lobster/OFL.txt +0 -93
  146. package/src/assets/fonts/google-ofl/lobstertwo/DESCRIPTION.en_us.html +0 -1
  147. package/src/assets/fonts/google-ofl/lobstertwo/LobsterTwo-Regular.ttf +0 -0
  148. package/src/assets/fonts/google-ofl/lobstertwo/METADATA.pb +0 -45
  149. package/src/assets/fonts/google-ofl/lobstertwo/OFL.txt +0 -95
  150. package/src/assets/fonts/google-ofl/lora/DESCRIPTION.en_us.html +0 -5
  151. package/src/assets/fonts/google-ofl/lora/Lora[wght].ttf +0 -0
  152. package/src/assets/fonts/google-ofl/lora/METADATA.pb +0 -55
  153. package/src/assets/fonts/google-ofl/lora/OFL.txt +0 -93
  154. package/src/assets/fonts/google-ofl/manrope/DESCRIPTION.en_us.html +0 -3
  155. package/src/assets/fonts/google-ofl/manrope/METADATA.pb +0 -29
  156. package/src/assets/fonts/google-ofl/manrope/Manrope[wght].ttf +0 -0
  157. package/src/assets/fonts/google-ofl/manrope/OFL.txt +0 -93
  158. package/src/assets/fonts/google-ofl/merriweather/DESCRIPTION.en_us.html +0 -11
  159. package/src/assets/fonts/google-ofl/merriweather/METADATA.pb +0 -291
  160. package/src/assets/fonts/google-ofl/merriweather/Merriweather[opsz,wdth,wght].ttf +0 -0
  161. package/src/assets/fonts/google-ofl/merriweather/OFL.txt +0 -93
  162. package/src/assets/fonts/google-ofl/montserrat/DESCRIPTION.en_us.html +0 -19
  163. package/src/assets/fonts/google-ofl/montserrat/METADATA.pb +0 -376
  164. package/src/assets/fonts/google-ofl/montserrat/Montserrat[wght].ttf +0 -0
  165. package/src/assets/fonts/google-ofl/montserrat/OFL.txt +0 -93
  166. package/src/assets/fonts/google-ofl/mplusrounded1c/METADATA.pb +0 -78
  167. package/src/assets/fonts/google-ofl/mplusrounded1c/MPLUSRounded1c-Regular.ttf +0 -0
  168. package/src/assets/fonts/google-ofl/mukta/DESCRIPTION.en_us.html +0 -20
  169. package/src/assets/fonts/google-ofl/mukta/METADATA.pb +0 -73
  170. package/src/assets/fonts/google-ofl/mukta/Mukta-Regular.ttf +0 -0
  171. package/src/assets/fonts/google-ofl/mukta/OFL.txt +0 -93
  172. package/src/assets/fonts/google-ofl/mulish/DESCRIPTION.en_us.html +0 -11
  173. package/src/assets/fonts/google-ofl/mulish/METADATA.pb +0 -56
  174. package/src/assets/fonts/google-ofl/mulish/Mulish[wght].ttf +0 -0
  175. package/src/assets/fonts/google-ofl/mulish/OFL.txt +0 -93
  176. package/src/assets/fonts/google-ofl/nanumgothic/DESCRIPTION.en_us.html +0 -5
  177. package/src/assets/fonts/google-ofl/nanumgothic/METADATA.pb +0 -36
  178. package/src/assets/fonts/google-ofl/nanumgothic/NanumGothic-Regular.ttf +0 -0
  179. package/src/assets/fonts/google-ofl/nanumgothic/OFL.txt +0 -96
  180. package/src/assets/fonts/google-ofl/notocoloremoji/DESCRIPTION.en_us.html +0 -10
  181. package/src/assets/fonts/google-ofl/notocoloremoji/METADATA.pb +0 -71
  182. package/src/assets/fonts/google-ofl/notocoloremoji/OFL.txt +0 -87
  183. package/src/assets/fonts/google-ofl/notosans/DESCRIPTION.en_us.html +0 -13
  184. package/src/assets/fonts/google-ofl/notosans/METADATA.pb +0 -924
  185. package/src/assets/fonts/google-ofl/notosans/NotoSans[wdth,wght].ttf +0 -0
  186. package/src/assets/fonts/google-ofl/notosans/OFL.txt +0 -93
  187. package/src/assets/fonts/google-ofl/notosansjp/DESCRIPTION.en_us.html +0 -7
  188. package/src/assets/fonts/google-ofl/notosansjp/METADATA.pb +0 -34
  189. package/src/assets/fonts/google-ofl/notosansjp/OFL.txt +0 -93
  190. package/src/assets/fonts/google-ofl/notosanskr/DESCRIPTION.en_us.html +0 -6
  191. package/src/assets/fonts/google-ofl/notosanskr/METADATA.pb +0 -29
  192. package/src/assets/fonts/google-ofl/notosanskr/OFL.txt +0 -93
  193. package/src/assets/fonts/google-ofl/notosanssc/DESCRIPTION.en_us.html +0 -8
  194. package/src/assets/fonts/google-ofl/notosanssc/METADATA.pb +0 -39
  195. package/src/assets/fonts/google-ofl/notosanssc/OFL.txt +0 -93
  196. package/src/assets/fonts/google-ofl/notosanstc/DESCRIPTION.en_us.html +0 -8
  197. package/src/assets/fonts/google-ofl/notosanstc/METADATA.pb +0 -39
  198. package/src/assets/fonts/google-ofl/notosanstc/OFL.txt +0 -93
  199. package/src/assets/fonts/google-ofl/notosanstelugu/DESCRIPTION.en_us.html +0 -6
  200. package/src/assets/fonts/google-ofl/notosanstelugu/METADATA.pb +0 -57
  201. package/src/assets/fonts/google-ofl/notosanstelugu/NotoSansTelugu[wdth,wght].ttf +0 -0
  202. package/src/assets/fonts/google-ofl/notosanstelugu/OFL.txt +0 -93
  203. package/src/assets/fonts/google-ofl/notoserif/DESCRIPTION.en_us.html +0 -7
  204. package/src/assets/fonts/google-ofl/notoserif/METADATA.pb +0 -845
  205. package/src/assets/fonts/google-ofl/notoserif/NotoSerif[wdth,wght].ttf +0 -0
  206. package/src/assets/fonts/google-ofl/notoserif/OFL.txt +0 -93
  207. package/src/assets/fonts/google-ofl/notoserifjp/DESCRIPTION.en_us.html +0 -7
  208. package/src/assets/fonts/google-ofl/notoserifjp/METADATA.pb +0 -43
  209. package/src/assets/fonts/google-ofl/notoserifjp/OFL.txt +0 -94
  210. package/src/assets/fonts/google-ofl/nunito/DESCRIPTION.en_us.html +0 -9
  211. package/src/assets/fonts/google-ofl/nunito/METADATA.pb +0 -52
  212. package/src/assets/fonts/google-ofl/nunito/Nunito[wght].ttf +0 -0
  213. package/src/assets/fonts/google-ofl/nunito/OFL.txt +0 -93
  214. package/src/assets/fonts/google-ofl/nunitosans/DESCRIPTION.en_us.html +0 -9
  215. package/src/assets/fonts/google-ofl/nunitosans/METADATA.pb +0 -71
  216. package/src/assets/fonts/google-ofl/nunitosans/NunitoSans[YTLC,opsz,wdth,wght].ttf +0 -0
  217. package/src/assets/fonts/google-ofl/nunitosans/OFL.txt +0 -93
  218. package/src/assets/fonts/google-ofl/opensans/DESCRIPTION.en_us.html +0 -12
  219. package/src/assets/fonts/google-ofl/opensans/METADATA.pb +0 -291
  220. package/src/assets/fonts/google-ofl/opensans/OFL.txt +0 -92
  221. package/src/assets/fonts/google-ofl/opensans/OpenSans[wdth,wght].ttf +0 -0
  222. package/src/assets/fonts/google-ofl/oswald/DESCRIPTION.en_us.html +0 -15
  223. package/src/assets/fonts/google-ofl/oswald/METADATA.pb +0 -255
  224. package/src/assets/fonts/google-ofl/oswald/OFL.txt +0 -93
  225. package/src/assets/fonts/google-ofl/oswald/Oswald[wght].ttf +0 -0
  226. package/src/assets/fonts/google-ofl/playfairdisplay/DESCRIPTION.en_us.html +0 -19
  227. package/src/assets/fonts/google-ofl/playfairdisplay/METADATA.pb +0 -40
  228. package/src/assets/fonts/google-ofl/playfairdisplay/OFL.txt +0 -93
  229. package/src/assets/fonts/google-ofl/playfairdisplay/PlayfairDisplay[wght].ttf +0 -0
  230. package/src/assets/fonts/google-ofl/plusjakartasans/DESCRIPTION.en_us.html +0 -30
  231. package/src/assets/fonts/google-ofl/plusjakartasans/METADATA.pb +0 -51
  232. package/src/assets/fonts/google-ofl/plusjakartasans/OFL.txt +0 -93
  233. package/src/assets/fonts/google-ofl/plusjakartasans/PlusJakartaSans[wght].ttf +0 -0
  234. package/src/assets/fonts/google-ofl/poppins/DESCRIPTION.en_us.html +0 -21
  235. package/src/assets/fonts/google-ofl/poppins/METADATA.pb +0 -176
  236. package/src/assets/fonts/google-ofl/poppins/OFL.txt +0 -93
  237. package/src/assets/fonts/google-ofl/poppins/Poppins-Regular.ttf +0 -0
  238. package/src/assets/fonts/google-ofl/prompt/DESCRIPTION.en_us.html +0 -15
  239. package/src/assets/fonts/google-ofl/prompt/METADATA.pb +0 -173
  240. package/src/assets/fonts/google-ofl/prompt/OFL.txt +0 -93
  241. package/src/assets/fonts/google-ofl/prompt/Prompt-Regular.ttf +0 -0
  242. package/src/assets/fonts/google-ofl/ptsans/DESCRIPTION.en_us.html +0 -1
  243. package/src/assets/fonts/google-ofl/ptsans/METADATA.pb +0 -46
  244. package/src/assets/fonts/google-ofl/ptsans/OFL.txt +0 -93
  245. package/src/assets/fonts/google-ofl/ptsans/PT_Sans-Web-Regular.ttf +0 -0
  246. package/src/assets/fonts/google-ofl/ptsansnarrow/DESCRIPTION.en_us.html +0 -1
  247. package/src/assets/fonts/google-ofl/ptsansnarrow/METADATA.pb +0 -28
  248. package/src/assets/fonts/google-ofl/ptsansnarrow/OFL.txt +0 -93
  249. package/src/assets/fonts/google-ofl/ptsansnarrow/PT_Sans-Narrow-Web-Regular.ttf +0 -0
  250. package/src/assets/fonts/google-ofl/ptserif/DESCRIPTION.en_us.html +0 -1
  251. package/src/assets/fonts/google-ofl/ptserif/METADATA.pb +0 -46
  252. package/src/assets/fonts/google-ofl/ptserif/OFL.txt +0 -93
  253. package/src/assets/fonts/google-ofl/ptserif/PT_Serif-Web-Regular.ttf +0 -0
  254. package/src/assets/fonts/google-ofl/quicksand/DESCRIPTION.en_us.html +0 -8
  255. package/src/assets/fonts/google-ofl/quicksand/METADATA.pb +0 -31
  256. package/src/assets/fonts/google-ofl/quicksand/OFL.txt +0 -93
  257. package/src/assets/fonts/google-ofl/quicksand/Quicksand[wght].ttf +0 -0
  258. package/src/assets/fonts/google-ofl/raleway/DESCRIPTION.en_us.html +0 -17
  259. package/src/assets/fonts/google-ofl/raleway/METADATA.pb +0 -38
  260. package/src/assets/fonts/google-ofl/raleway/OFL.txt +0 -93
  261. package/src/assets/fonts/google-ofl/raleway/Raleway[wght].ttf +0 -0
  262. package/src/assets/fonts/google-ofl/ramabhadra/DESCRIPTION.en_us.html +0 -12
  263. package/src/assets/fonts/google-ofl/ramabhadra/METADATA.pb +0 -18
  264. package/src/assets/fonts/google-ofl/ramabhadra/OFL.txt +0 -93
  265. package/src/assets/fonts/google-ofl/ramabhadra/Ramabhadra-Regular.ttf +0 -0
  266. package/src/assets/fonts/google-ofl/roboto/DESCRIPTION.en_us.html +0 -16
  267. package/src/assets/fonts/google-ofl/roboto/METADATA.pb +0 -57
  268. package/src/assets/fonts/google-ofl/roboto/OFL.txt +0 -93
  269. package/src/assets/fonts/google-ofl/roboto/Roboto[wdth,wght].ttf +0 -0
  270. package/src/assets/fonts/google-ofl/robotocondensed/DESCRIPTION.en_us.html +0 -7
  271. package/src/assets/fonts/google-ofl/robotocondensed/METADATA.pb +0 -49
  272. package/src/assets/fonts/google-ofl/robotocondensed/OFL.txt +0 -93
  273. package/src/assets/fonts/google-ofl/robotocondensed/RobotoCondensed[wght].ttf +0 -0
  274. package/src/assets/fonts/google-ofl/robotoflex/DESCRIPTION.en_us.html +0 -29
  275. package/src/assets/fonts/google-ofl/robotoflex/METADATA.pb +0 -125
  276. package/src/assets/fonts/google-ofl/robotoflex/OFL.txt +0 -93
  277. package/src/assets/fonts/google-ofl/robotoflex/RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf +0 -0
  278. package/src/assets/fonts/google-ofl/robotomono/DESCRIPTION.en_us.html +0 -17
  279. package/src/assets/fonts/google-ofl/robotomono/METADATA.pb +0 -53
  280. package/src/assets/fonts/google-ofl/robotomono/OFL.txt +0 -93
  281. package/src/assets/fonts/google-ofl/robotomono/RobotoMono[wght].ttf +0 -0
  282. package/src/assets/fonts/google-ofl/rubik/DESCRIPTION.en_us.html +0 -14
  283. package/src/assets/fonts/google-ofl/rubik/METADATA.pb +0 -53
  284. package/src/assets/fonts/google-ofl/rubik/OFL.txt +0 -93
  285. package/src/assets/fonts/google-ofl/rubik/Rubik[wght].ttf +0 -0
  286. package/src/assets/fonts/google-ofl/saira/DESCRIPTION.en_us.html +0 -18
  287. package/src/assets/fonts/google-ofl/saira/METADATA.pb +0 -57
  288. package/src/assets/fonts/google-ofl/saira/OFL.txt +0 -94
  289. package/src/assets/fonts/google-ofl/saira/Saira[wdth,wght].ttf +0 -0
  290. package/src/assets/fonts/google-ofl/schibstedgrotesk/DESCRIPTION.en_us.html +0 -5
  291. package/src/assets/fonts/google-ofl/schibstedgrotesk/METADATA.pb +0 -49
  292. package/src/assets/fonts/google-ofl/schibstedgrotesk/OFL.txt +0 -93
  293. package/src/assets/fonts/google-ofl/schibstedgrotesk/SchibstedGrotesk[wght].ttf +0 -0
  294. package/src/assets/fonts/google-ofl/sourcecodepro/DESCRIPTION.en_us.html +0 -8
  295. package/src/assets/fonts/google-ofl/sourcecodepro/METADATA.pb +0 -40
  296. package/src/assets/fonts/google-ofl/sourcecodepro/OFL.txt +0 -93
  297. package/src/assets/fonts/google-ofl/sourcecodepro/SourceCodePro[wght].ttf +0 -0
  298. package/src/assets/fonts/google-ofl/sourcesans3/DESCRIPTION.en_us.html +0 -3
  299. package/src/assets/fonts/google-ofl/sourcesans3/METADATA.pb +0 -36
  300. package/src/assets/fonts/google-ofl/sourcesans3/OFL.txt +0 -93
  301. package/src/assets/fonts/google-ofl/sourcesans3/SourceSans3[wght].ttf +0 -0
  302. package/src/assets/fonts/google-ofl/spacegrotesk/DESCRIPTION.en_us.html +0 -12
  303. package/src/assets/fonts/google-ofl/spacegrotesk/METADATA.pb +0 -56
  304. package/src/assets/fonts/google-ofl/spacegrotesk/OFL.txt +0 -93
  305. package/src/assets/fonts/google-ofl/spacegrotesk/SpaceGrotesk[wght].ttf +0 -0
  306. package/src/assets/fonts/google-ofl/worksans/DESCRIPTION.en_us.html +0 -22
  307. package/src/assets/fonts/google-ofl/worksans/METADATA.pb +0 -50
  308. package/src/assets/fonts/google-ofl/worksans/OFL.txt +0 -93
  309. package/src/assets/fonts/google-ofl/worksans/WorkSans[wght].ttf +0 -0
  310. package/src/assets/fonts/hack/Hack-Bold.ttf +0 -0
  311. package/src/assets/fonts/hack/Hack-BoldItalic.ttf +0 -0
  312. package/src/assets/fonts/hack/Hack-Italic.ttf +0 -0
  313. package/src/assets/fonts/hack/Hack-Regular.ttf +0 -0
  314. package/src/assets/fonts/ibm-plex/IBMPlexMono-Bold.ttf +0 -0
  315. package/src/assets/fonts/ibm-plex/IBMPlexMono-BoldItalic.ttf +0 -0
  316. package/src/assets/fonts/ibm-plex/IBMPlexMono-Italic.ttf +0 -0
  317. package/src/assets/fonts/ibm-plex/IBMPlexMono-Regular.ttf +0 -0
  318. package/src/assets/fonts/ibm-plex/IBMPlexSans-Bold.ttf +0 -0
  319. package/src/assets/fonts/ibm-plex/IBMPlexSans-BoldItalic.ttf +0 -0
  320. package/src/assets/fonts/ibm-plex/IBMPlexSans-Italic.ttf +0 -0
  321. package/src/assets/fonts/ibm-plex/IBMPlexSans-Regular.ttf +0 -0
  322. package/src/assets/fonts/ibm-plex/IBMPlexSansCondensed-Bold.ttf +0 -0
  323. package/src/assets/fonts/ibm-plex/IBMPlexSansCondensed-Regular.ttf +0 -0
  324. package/src/assets/fonts/ibm-plex/IBMPlexSerif-Bold.ttf +0 -0
  325. package/src/assets/fonts/ibm-plex/IBMPlexSerif-BoldItalic.ttf +0 -0
  326. package/src/assets/fonts/ibm-plex/IBMPlexSerif-Italic.ttf +0 -0
  327. package/src/assets/fonts/ibm-plex/IBMPlexSerif-Regular.ttf +0 -0
  328. package/src/assets/fonts/liberation/LiberationMono-Bold.ttf +0 -0
  329. package/src/assets/fonts/liberation/LiberationMono-BoldItalic.ttf +0 -0
  330. package/src/assets/fonts/liberation/LiberationMono-Italic.ttf +0 -0
  331. package/src/assets/fonts/liberation/LiberationMono-Regular.ttf +0 -0
  332. package/src/assets/fonts/liberation/LiberationSans-Bold.ttf +0 -0
  333. package/src/assets/fonts/liberation/LiberationSans-BoldItalic.ttf +0 -0
  334. package/src/assets/fonts/liberation/LiberationSans-Italic.ttf +0 -0
  335. package/src/assets/fonts/liberation/LiberationSans-Regular.ttf +0 -0
  336. package/src/assets/fonts/liberation/LiberationSerif-Bold.ttf +0 -0
  337. package/src/assets/fonts/liberation/LiberationSerif-BoldItalic.ttf +0 -0
  338. package/src/assets/fonts/liberation/LiberationSerif-Italic.ttf +0 -0
  339. package/src/assets/fonts/liberation/LiberationSerif-Regular.ttf +0 -0
  340. package/src/assets/fonts/libre-barcode/LibreBarcodeEAN13Text-Regular.ttf +0 -0
  341. package/src/assets/fonts/noto/NotoSans-Bold.ttf +0 -0
  342. package/src/assets/fonts/noto/NotoSans-BoldItalic.ttf +0 -0
  343. package/src/assets/fonts/noto/NotoSans-Italic.ttf +0 -0
  344. package/src/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  345. package/src/assets/fonts/noto/NotoSansDisplay-Regular.ttf +0 -0
  346. package/src/assets/fonts/noto/NotoSansMono-Bold.ttf +0 -0
  347. package/src/assets/fonts/noto/NotoSansMono-Regular.ttf +0 -0
  348. package/src/assets/fonts/noto/NotoSerif-Bold.ttf +0 -0
  349. package/src/assets/fonts/noto/NotoSerif-BoldItalic.ttf +0 -0
  350. package/src/assets/fonts/noto/NotoSerif-Italic.ttf +0 -0
  351. package/src/assets/fonts/noto/NotoSerif-Regular.ttf +0 -0
  352. package/src/assets/fonts/noto/NotoSerifDisplay-Regular.ttf +0 -0
  353. package/src/assets/fonts/ubuntu/Ubuntu-B.ttf +0 -0
  354. package/src/assets/fonts/ubuntu/Ubuntu-BI.ttf +0 -0
  355. package/src/assets/fonts/ubuntu/Ubuntu-C.ttf +0 -0
  356. package/src/assets/fonts/ubuntu/Ubuntu-L.ttf +0 -0
  357. package/src/assets/fonts/ubuntu/Ubuntu-LI.ttf +0 -0
  358. package/src/assets/fonts/ubuntu/Ubuntu-M.ttf +0 -0
  359. package/src/assets/fonts/ubuntu/Ubuntu-MI.ttf +0 -0
  360. package/src/assets/fonts/ubuntu/Ubuntu-R.ttf +0 -0
  361. package/src/assets/fonts/ubuntu/Ubuntu-RI.ttf +0 -0
  362. package/src/assets/fonts/ubuntu/Ubuntu-Th.ttf +0 -0
  363. package/src/assets/fonts/ubuntu/UbuntuMono-B.ttf +0 -0
  364. package/src/assets/fonts/ubuntu/UbuntuMono-BI.ttf +0 -0
  365. package/src/assets/fonts/ubuntu/UbuntuMono-R.ttf +0 -0
  366. package/src/assets/fonts/ubuntu/UbuntuMono-RI.ttf +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brep-io-kernel",
3
- "version": "1.0.95",
3
+ "version": "1.0.97",
4
4
  "scripts": {
5
5
  "dev": "pnpm prepareFonts && pnpm generateLicenses && pnpm build:kernel && vite --host 0.0.0.0",
6
6
  "build": "pnpm prepareFonts && pnpm generateLicenses && pnpm build:kernel && vite build",
@@ -151,8 +151,8 @@ export class CadEmbed {
151
151
  const iframe = document.createElement("iframe");
152
152
  iframe.title = this._options.title || "BREP CAD";
153
153
  iframe.className = this._options.iframeClassName || "";
154
- iframe.style.width = this._options.width || "100%";
155
- iframe.style.height = this._options.height || "760px";
154
+ iframe.style.width = "100%";
155
+ iframe.style.height = "100%";
156
156
  iframe.style.border = "0";
157
157
  iframe.style.display = "block";
158
158
  iframe.style.background = String(this._options.backgroundColor || "#0b0f16");
package/src/UI/viewer.js CHANGED
@@ -41,6 +41,7 @@ import { maybeStartStartupTour } from './startupTour.js';
41
41
  import { BREP } from '../BREP/BREP.js';
42
42
  import { createAxisHelperGroup, DEFAULT_AXIS_HELPER_PX } from '../utils/axisHelpers.js';
43
43
  import { readBrowserStorageValue, writeBrowserStorageValue } from '../utils/browserStorage.js';
44
+ import brepHomeBannerSvg from '../assets/brand/brep-home-banner.svg?raw';
44
45
 
45
46
  const ASSEMBLY_CONSTRAINTS_TITLE = 'Assembly Constraints';
46
47
  const SIDEBAR_HOME_BANNER_HEIGHT_PX = 41;
@@ -1178,12 +1179,15 @@ export class Viewer {
1178
1179
  void navigateHomeWithGuard(this);
1179
1180
  });
1180
1181
 
1181
- const img = document.createElement('img');
1182
- img.className = 'cad-sidebar-home-banner-img';
1183
- img.src = '/brep-home-banner.svg';
1184
- img.alt = 'BREP.io home';
1185
- img.draggable = false;
1186
- banner.appendChild(img);
1182
+ const logo = document.createElement('span');
1183
+ logo.className = 'cad-sidebar-home-banner-img';
1184
+ logo.setAttribute('aria-hidden', 'true');
1185
+ logo.innerHTML = brepHomeBannerSvg;
1186
+ const svg = logo.querySelector('svg');
1187
+ if (svg) {
1188
+ svg.setAttribute('focusable', 'false');
1189
+ }
1190
+ banner.appendChild(logo);
1187
1191
 
1188
1192
  this.sidebar.prepend(banner);
1189
1193
  this._sidebarHomeBanner = banner;
@@ -0,0 +1,116 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg"
2
+ viewBox="0 0 920 270"
3
+ role="img"
4
+ aria-label="BREP.io logo"
5
+ preserveAspectRatio="xMinYMin meet">
6
+ <defs>
7
+ <linearGradient id="g1" x1="0" y1="0" x2="1" y2="1">
8
+ <stop offset="0" stop-color="#46B3FF"/>
9
+ <stop offset="1" stop-color="#0A6BFF"/>
10
+ </linearGradient>
11
+ <linearGradient id="g2" x1="0" y1="1" x2="1" y2="0">
12
+ <stop offset="0" stop-color="#0B3B8F"/>
13
+ <stop offset="1" stop-color="#2A8CFF"/>
14
+ </linearGradient>
15
+ <linearGradient id="g3" x1="0" y1="0" x2="0" y2="1">
16
+ <stop offset="0" stop-color="#BFE8FF"/>
17
+ <stop offset="1" stop-color="#2E9CFF"/>
18
+ </linearGradient>
19
+
20
+ <!-- glow extends outside text bounds, so leave some filter room -->
21
+ <filter id="glow" x="-90%" y="-90%" width="280%" height="280%">
22
+ <feGaussianBlur in="SourceGraphic" stdDeviation="7" result="b"/>
23
+ <feMerge>
24
+ <feMergeNode in="b"/>
25
+ <feMergeNode in="SourceGraphic"/>
26
+ </feMerge>
27
+ </filter>
28
+
29
+ <style>
30
+ .mainText{
31
+ font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
32
+ font-weight:800;
33
+ letter-spacing:0.02em;
34
+ }
35
+ .subText{
36
+ font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;
37
+ font-weight:600;
38
+ letter-spacing:0.28em;
39
+ }
40
+ .wordMain{
41
+ fill:#ecf4ff;
42
+ stroke:#0c1b3d;
43
+ stroke-opacity:0.88;
44
+ stroke-width:4;
45
+ paint-order:stroke;
46
+ }
47
+ .wordIo{
48
+ fill:#3eb2ff;
49
+ stroke:#0a2d63;
50
+ stroke-opacity:0.55;
51
+ stroke-width:1.5;
52
+ paint-order:stroke;
53
+ }
54
+ .wordSub{
55
+ fill:#cfdef8;
56
+ fill-opacity:0.86;
57
+ }
58
+ @media (prefers-color-scheme: light) {
59
+ .wordMain{
60
+ fill:#17325f;
61
+ stroke:#f3f8ff;
62
+ stroke-opacity:0.90;
63
+ }
64
+ .wordIo{
65
+ fill:#0a6bff;
66
+ stroke:#d9ebff;
67
+ stroke-opacity:0.75;
68
+ }
69
+ .wordSub{
70
+ fill:#274676;
71
+ fill-opacity:0.82;
72
+ }
73
+ }
74
+ </style>
75
+ </defs>
76
+
77
+ <!-- ICON -->
78
+ <g transform="translate(12,8)">
79
+ <path d="M65 75 L190 25 L300 75 L176 130 Z" fill="url(#g3)"/>
80
+ <path d="M176 130 L300 75 L300 200 L176 255 Z" fill="url(#g2)"/>
81
+ <path d="M65 75 L176 130 L176 255 L65 205 Z" fill="url(#g1)"/>
82
+
83
+ <path d="M110 130 L176 165 L176 205 L110 175 Z"
84
+ fill="#1F2937" fill-opacity="0.18"/>
85
+
86
+ <g fill="none" stroke-linecap="round" stroke-linejoin="round">
87
+ <path stroke="#1F2937" stroke-width="3" stroke-opacity="0.70"
88
+ d="M185 135 C235 105 285 110 315 145 C345 180 330 235 285 260 C240 285 195 255 185 220"/>
89
+ <path stroke="#1F2937" stroke-width="2" stroke-opacity="0.55"
90
+ d="M205 150 C250 130 285 145 300 165 C315 185 305 220 275 235 C245 250 215 230 205 210"/>
91
+ </g>
92
+ </g>
93
+
94
+ <!-- WORDMARK -->
95
+ <!-- moved slightly left + down for tighter crop -->
96
+ <g transform="translate(345,160)">
97
+ <text class="mainText wordMain"
98
+ font-size="130"
99
+ x="0" y="0">
100
+ BREP
101
+ </text>
102
+
103
+ <!-- .io moved closer: x reduced from ~400 -> 305 -->
104
+ <g filter="url(#glow)">
105
+ <text class="mainText wordIo"
106
+ x="305" y="0"
107
+ font-size="130">.io</text>
108
+ </g>
109
+
110
+ <text class="subText wordSub"
111
+ x="6" y="62"
112
+ font-size="22">
113
+ CAD MODELING &amp; DESIGN
114
+ </text>
115
+ </g>
116
+ </svg>
@@ -1,96 +1,29 @@
1
1
  export const GOOGLE_OFL_FONTS = [
2
- { id: "Roboto", path: "google-ofl/roboto/Roboto[wdth,wght].ttf" },
3
- { id: "Open Sans", path: "google-ofl/opensans/OpenSans[wdth,wght].ttf" },
4
- { id: "Inter", path: "google-ofl/inter/Inter[opsz,wght].ttf" },
5
- { id: "Montserrat", path: "google-ofl/montserrat/Montserrat[wght].ttf" },
6
- { id: "Poppins", path: "google-ofl/poppins/Poppins-Regular.ttf" },
7
- { id: "Lato", path: "google-ofl/lato/Lato-Regular.ttf" },
8
- { id: "Roboto Condensed", path: "google-ofl/robotocondensed/RobotoCondensed[wght].ttf" },
9
- { id: "Roboto Mono", path: "google-ofl/robotomono/RobotoMono[wght].ttf" },
10
- { id: "Oswald", path: "google-ofl/oswald/Oswald[wght].ttf" },
11
- { id: "Noto Sans", path: "google-ofl/notosans/NotoSans[wdth,wght].ttf" },
12
- { id: "Raleway", path: "google-ofl/raleway/Raleway[wght].ttf" },
13
- { id: "Nunito Sans", path: "google-ofl/nunitosans/NunitoSans[YTLC,opsz,wdth,wght].ttf" },
14
- { id: "Nunito", path: "google-ofl/nunito/Nunito[wght].ttf" },
15
- { id: "Playfair Display", path: "google-ofl/playfairdisplay/PlayfairDisplay[wght].ttf" },
16
- { id: "Rubik", path: "google-ofl/rubik/Rubik[wght].ttf" },
17
- { id: "DM Sans", path: "google-ofl/dmsans/DMSans[opsz,wght].ttf" },
18
- { id: "Merriweather", path: "google-ofl/merriweather/Merriweather[opsz,wdth,wght].ttf" },
19
- { id: "Work Sans", path: "google-ofl/worksans/WorkSans[wght].ttf" },
20
- { id: "Kanit", path: "google-ofl/kanit/Kanit-Regular.ttf" },
21
- { id: "PT Sans", path: "google-ofl/ptsans/PT_Sans-Web-Regular.ttf" },
22
- { id: "Bricolage Grotesque", path: "google-ofl/bricolagegrotesque/BricolageGrotesque[opsz,wdth,wght].ttf" },
23
- { id: "Lora", path: "google-ofl/lora/Lora[wght].ttf" },
24
2
  { id: "Archivo Black", path: "google-ofl/archivoblack/ArchivoBlack-Regular.ttf" },
25
- { id: "Mulish", path: "google-ofl/mulish/Mulish[wght].ttf" },
26
3
  { id: "Outfit", path: "google-ofl/outfit/Outfit[wght].ttf" },
27
- { id: "Archivo", path: "google-ofl/archivo/Archivo[wdth,wght].ttf" },
28
- { id: "Manrope", path: "google-ofl/manrope/Manrope[wght].ttf" },
29
- { id: "Fjalla One", path: "google-ofl/fjallaone/FjallaOne-Regular.ttf" },
30
4
  { id: "Figtree", path: "google-ofl/figtree/Figtree[wght].ttf" },
31
- { id: "IBM Plex Sans", path: "google-ofl/ibmplexsans/IBMPlexSans[wdth,wght].ttf" },
32
5
  { id: "Bebas Neue", path: "google-ofl/bebasneue/BebasNeue-Regular.ttf" },
33
- { id: "Quicksand", path: "google-ofl/quicksand/Quicksand[wght].ttf" },
34
- { id: "Fira Sans", path: "google-ofl/firasans/FiraSans-Regular.ttf" },
35
- { id: "Prompt", path: "google-ofl/prompt/Prompt-Regular.ttf" },
36
6
  { id: "Barlow", path: "google-ofl/barlow/Barlow-Regular.ttf" },
37
7
  { id: "Bungee", path: "google-ofl/bungee/Bungee-Regular.ttf" },
38
- { id: "Saira", path: "google-ofl/saira/Saira[wdth,wght].ttf" },
39
- { id: "Source Sans 3", path: "google-ofl/sourcesans3/SourceSans3[wght].ttf" },
40
- { id: "Heebo", path: "google-ofl/heebo/Heebo[wght].ttf" },
41
8
  { id: "Karla", path: "google-ofl/karla/Karla[wght].ttf" },
42
9
  { id: "Titillium Web", path: "google-ofl/titilliumweb/TitilliumWeb-Regular.ttf" },
43
- { id: "Jost", path: "google-ofl/jost/Jost[wght].ttf" },
44
- { id: "Noto Serif", path: "google-ofl/notoserif/NotoSerif[wdth,wght].ttf" },
45
10
  { id: "Share Tech", path: "google-ofl/sharetech/ShareTech-Regular.ttf" },
46
11
  { id: "Smooch Sans", path: "google-ofl/smoochsans/SmoochSans[wght].ttf" },
47
- { id: "PT Serif", path: "google-ofl/ptserif/PT_Serif-Web-Regular.ttf" },
48
- { id: "Lobster Two", path: "google-ofl/lobstertwo/LobsterTwo-Regular.ttf" },
49
- { id: "Inconsolata", path: "google-ofl/inconsolata/Inconsolata[wdth,wght].ttf" },
50
- { id: "Hind Siliguri", path: "google-ofl/hindsiliguri/HindSiliguri-Regular.ttf" },
51
12
  { id: "Dancing Script", path: "google-ofl/dancingscript/DancingScript[wght].ttf" },
52
- { id: "Mukta", path: "google-ofl/mukta/Mukta-Regular.ttf" },
53
- { id: "Cairo", path: "google-ofl/cairo/Cairo[slnt,wght].ttf" },
54
- { id: "Libre Baskerville", path: "google-ofl/librebaskerville/LibreBaskerville[wght].ttf" },
55
- { id: "Plus Jakarta Sans", path: "google-ofl/plusjakartasans/PlusJakartaSans[wght].ttf" },
56
13
  { id: "Josefin Sans", path: "google-ofl/josefinsans/JosefinSans[wght].ttf" },
57
- { id: "EB Garamond", path: "google-ofl/ebgaramond/EBGaramond[wght].ttf" },
58
- { id: "Libre Franklin", path: "google-ofl/librefranklin/LibreFranklin[wght].ttf" },
59
- { id: "Anton", path: "google-ofl/anton/Anton-Regular.ttf" },
60
- { id: "Source Code Pro", path: "google-ofl/sourcecodepro/SourceCodePro[wght].ttf" },
61
- { id: "Nanum Gothic", path: "google-ofl/nanumgothic/NanumGothic-Regular.ttf" },
62
14
  { id: "Changa One", path: "google-ofl/changaone/ChangaOne-Regular.ttf" },
63
- { id: "Dosis", path: "google-ofl/dosis/Dosis[wght].ttf" },
64
- { id: "Cabin", path: "google-ofl/cabin/Cabin[wdth,wght].ttf" },
65
- { id: "Roboto Flex", path: "google-ofl/robotoflex/RobotoFlex[GRAD,XOPQ,XTRA,YOPQ,YTAS,YTDE,YTFI,YTLC,YTUC,opsz,slnt,wdth,wght].ttf" },
66
15
  { id: "Barlow Condensed", path: "google-ofl/barlowcondensed/BarlowCondensed-Regular.ttf" },
67
16
  { id: "Public Sans", path: "google-ofl/publicsans/PublicSans[wght].ttf" },
68
- { id: "Schibsted Grotesk", path: "google-ofl/schibstedgrotesk/SchibstedGrotesk[wght].ttf" },
69
- { id: "Bitter", path: "google-ofl/bitter/Bitter[wght].ttf" },
70
- { id: "Noto Sans Telugu", path: "google-ofl/notosanstelugu/NotoSansTelugu[wdth,wght].ttf" },
71
- { id: "Ramabhadra", path: "google-ofl/ramabhadra/Ramabhadra-Regular.ttf" },
72
17
  { id: "Assistant", path: "google-ofl/assistant/Assistant[wght].ttf" },
73
- { id: "Anek Telugu", path: "google-ofl/anektelugu/AnekTelugu[wdth,wght].ttf" },
74
18
  { id: "Alfa Slab One", path: "google-ofl/alfaslabone/AlfaSlabOne-Regular.ttf" },
75
- { id: "Space Grotesk", path: "google-ofl/spacegrotesk/SpaceGrotesk[wght].ttf" },
76
19
  { id: "Pacifico", path: "google-ofl/pacifico/Pacifico-Regular.ttf" },
77
- { id: "Exo 2", path: "google-ofl/exo2/Exo2[wght].ttf" },
78
- { id: "M PLUS Rounded 1c", path: "google-ofl/mplusrounded1c/MPLUSRounded1c-Regular.ttf" },
79
20
  { id: "Slabo 27px", path: "google-ofl/slabo27px/Slabo27px-Regular.ttf" },
80
21
  { id: "Red Hat Display", path: "google-ofl/redhatdisplay/RedHatDisplay[wght].ttf" },
81
22
  { id: "Gravitas One", path: "google-ofl/gravitasone/GravitasOne.ttf" },
82
23
  { id: "Oxygen", path: "google-ofl/oxygen/Oxygen-Regular.ttf" },
83
- { id: "Hind", path: "google-ofl/hind/Hind-Regular.ttf" },
84
24
  { id: "Tajawal", path: "google-ofl/tajawal/Tajawal-Regular.ttf" },
85
25
  { id: "Crimson Text", path: "google-ofl/crimsontext/CrimsonText-Regular.ttf" },
86
- { id: "Cormorant Garamond", path: "google-ofl/cormorantgaramond/CormorantGaramond[wght].ttf" },
87
- { id: "Lobster", path: "google-ofl/lobster/Lobster-Regular.ttf" },
88
26
  { id: "Urbanist", path: "google-ofl/urbanist/Urbanist[wght].ttf" },
89
- { id: "Inter Tight", path: "google-ofl/intertight/InterTight[wght].ttf" },
90
- { id: "Lexend", path: "google-ofl/lexend/Lexend[wght].ttf" },
91
- { id: "Comfortaa", path: "google-ofl/comfortaa/Comfortaa[wght].ttf" },
92
- { id: "Caveat", path: "google-ofl/caveat/Caveat[wght].ttf" },
93
- { id: "PT Sans Narrow", path: "google-ofl/ptsansnarrow/PT_Sans-Narrow-Web-Regular.ttf" },
94
27
  { id: "Arvo", path: "google-ofl/arvo/Arvo-Regular.ttf" },
95
28
  { id: "Overpass", path: "google-ofl/overpass/Overpass[wght].ttf" },
96
29
  ];
@@ -36,9 +36,12 @@ const resolveFontUrl = async (entry) => {
36
36
  if (entry.url) return entry.url;
37
37
  if (!entry.path) return null;
38
38
  const key = normalizeFontKey(entry.path);
39
- const loader = FONT_URL_LOADERS && FONT_URL_LOADERS[key];
40
- if (loader) {
41
- return loader();
39
+ const source = FONT_URL_LOADERS && FONT_URL_LOADERS[key];
40
+ if (typeof source === 'function') {
41
+ return source();
42
+ }
43
+ if (typeof source === 'string') {
44
+ return source;
42
45
  }
43
46
  if (FONT_URL_LOADERS) {
44
47
  console.warn('Unknown font asset; falling back to public path:', entry.path);
@@ -58,87 +61,25 @@ const dedupeFonts = (fonts) => {
58
61
  });
59
62
  };
60
63
 
64
+ const sortFontsByName = (fonts) => (
65
+ [...fonts].sort((a, b) => String(a?.id || '').localeCompare(String(b?.id || ''), undefined, { sensitivity: 'base' }))
66
+ );
67
+
61
68
  const BASE_FONT_CATALOG = [
62
- { id: 'Noto Sans', path: "noto/NotoSans-Regular.ttf" },
63
- { id: 'Noto Sans Bold', path: "noto/NotoSans-Bold.ttf" },
64
- { id: 'Noto Sans Italic', path: "noto/NotoSans-Italic.ttf" },
65
- { id: 'Noto Sans Bold Italic', path: "noto/NotoSans-BoldItalic.ttf" },
66
- { id: 'Noto Serif', path: "noto/NotoSerif-Regular.ttf" },
67
- { id: 'Noto Serif Bold', path: "noto/NotoSerif-Bold.ttf" },
68
- { id: 'Noto Serif Italic', path: "noto/NotoSerif-Italic.ttf" },
69
- { id: 'Noto Serif Bold Italic', path: "noto/NotoSerif-BoldItalic.ttf" },
70
- { id: 'Noto Sans Mono', path: "noto/NotoSansMono-Regular.ttf" },
71
- { id: 'Noto Sans Mono Bold', path: "noto/NotoSansMono-Bold.ttf" },
72
- { id: 'Noto Sans Display', path: "noto/NotoSansDisplay-Regular.ttf" },
73
- { id: 'Noto Serif Display', path: "noto/NotoSerifDisplay-Regular.ttf" },
74
- { id: 'DejaVu Sans', path: "dejavu/DejaVuSans.ttf" },
75
- { id: 'DejaVu Sans Bold', path: "dejavu/DejaVuSans-Bold.ttf" },
76
- { id: 'DejaVu Serif', path: "dejavu/DejaVuSerif.ttf" },
77
- { id: 'DejaVu Serif Bold', path: "dejavu/DejaVuSerif-Bold.ttf" },
78
- { id: 'DejaVu Sans Mono', path: "dejavu/DejaVuSansMono.ttf" },
79
- { id: 'DejaVu Sans Mono Bold', path: "dejavu/DejaVuSansMono-Bold.ttf" },
80
- { id: 'DejaVu Sans Mono Oblique', path: "dejavu/DejaVuSansMono-Oblique.ttf" },
81
- { id: 'DejaVu Sans Mono Bold Oblique', path: "dejavu/DejaVuSansMono-BoldOblique.ttf" },
82
- { id: 'Liberation Sans', path: "liberation/LiberationSans-Regular.ttf" },
83
- { id: 'Liberation Sans Bold', path: "liberation/LiberationSans-Bold.ttf" },
84
- { id: 'Liberation Sans Italic', path: "liberation/LiberationSans-Italic.ttf" },
85
- { id: 'Liberation Sans Bold Italic', path: "liberation/LiberationSans-BoldItalic.ttf" },
86
69
  { id: 'Liberation Sans Narrow', path: "liberation/LiberationSansNarrow-Regular.ttf" },
87
70
  { id: 'Liberation Sans Narrow Bold', path: "liberation/LiberationSansNarrow-Bold.ttf" },
88
- { id: 'Liberation Serif', path: "liberation/LiberationSerif-Regular.ttf" },
89
- { id: 'Liberation Serif Bold', path: "liberation/LiberationSerif-Bold.ttf" },
90
- { id: 'Liberation Serif Italic', path: "liberation/LiberationSerif-Italic.ttf" },
91
- { id: 'Liberation Serif Bold Italic', path: "liberation/LiberationSerif-BoldItalic.ttf" },
92
- { id: 'Liberation Mono', path: "liberation/LiberationMono-Regular.ttf" },
93
- { id: 'Liberation Mono Bold', path: "liberation/LiberationMono-Bold.ttf" },
94
- { id: 'Liberation Mono Italic', path: "liberation/LiberationMono-Italic.ttf" },
95
- { id: 'Liberation Mono Bold Italic', path: "liberation/LiberationMono-BoldItalic.ttf" },
96
- { id: 'IBM Plex Sans', path: "ibm-plex/IBMPlexSans-Regular.ttf" },
97
- { id: 'IBM Plex Sans Bold', path: "ibm-plex/IBMPlexSans-Bold.ttf" },
98
- { id: 'IBM Plex Sans Italic', path: "ibm-plex/IBMPlexSans-Italic.ttf" },
99
- { id: 'IBM Plex Sans Bold Italic', path: "ibm-plex/IBMPlexSans-BoldItalic.ttf" },
100
- { id: 'IBM Plex Sans Condensed', path: "ibm-plex/IBMPlexSansCondensed-Regular.ttf" },
101
- { id: 'IBM Plex Sans Condensed Bold', path: "ibm-plex/IBMPlexSansCondensed-Bold.ttf" },
102
- { id: 'IBM Plex Serif', path: "ibm-plex/IBMPlexSerif-Regular.ttf" },
103
- { id: 'IBM Plex Serif Bold', path: "ibm-plex/IBMPlexSerif-Bold.ttf" },
104
- { id: 'IBM Plex Serif Italic', path: "ibm-plex/IBMPlexSerif-Italic.ttf" },
105
- { id: 'IBM Plex Serif Bold Italic', path: "ibm-plex/IBMPlexSerif-BoldItalic.ttf" },
106
- { id: 'IBM Plex Mono', path: "ibm-plex/IBMPlexMono-Regular.ttf" },
107
- { id: 'IBM Plex Mono Bold', path: "ibm-plex/IBMPlexMono-Bold.ttf" },
108
- { id: 'IBM Plex Mono Italic', path: "ibm-plex/IBMPlexMono-Italic.ttf" },
109
- { id: 'IBM Plex Mono Bold Italic', path: "ibm-plex/IBMPlexMono-BoldItalic.ttf" },
110
- { id: 'Hack', path: "hack/Hack-Regular.ttf" },
111
- { id: 'Hack Bold', path: "hack/Hack-Bold.ttf" },
112
- { id: 'Hack Italic', path: "hack/Hack-Italic.ttf" },
113
- { id: 'Hack Bold Italic', path: "hack/Hack-BoldItalic.ttf" },
114
- { id: 'Ubuntu', path: "ubuntu/Ubuntu-R.ttf" },
115
- { id: 'Ubuntu Italic', path: "ubuntu/Ubuntu-RI.ttf" },
116
- { id: 'Ubuntu Bold', path: "ubuntu/Ubuntu-B.ttf" },
117
- { id: 'Ubuntu Bold Italic', path: "ubuntu/Ubuntu-BI.ttf" },
118
- { id: 'Ubuntu Light', path: "ubuntu/Ubuntu-L.ttf" },
119
- { id: 'Ubuntu Light Italic', path: "ubuntu/Ubuntu-LI.ttf" },
120
- { id: 'Ubuntu Medium', path: "ubuntu/Ubuntu-M.ttf" },
121
- { id: 'Ubuntu Medium Italic', path: "ubuntu/Ubuntu-MI.ttf" },
122
- { id: 'Ubuntu Thin', path: "ubuntu/Ubuntu-Th.ttf" },
123
- { id: 'Ubuntu Condensed', path: "ubuntu/Ubuntu-C.ttf" },
124
- { id: 'Ubuntu Mono', path: "ubuntu/UbuntuMono-R.ttf" },
125
- { id: 'Ubuntu Mono Italic', path: "ubuntu/UbuntuMono-RI.ttf" },
126
- { id: 'Ubuntu Mono Bold', path: "ubuntu/UbuntuMono-B.ttf" },
127
- { id: 'Ubuntu Mono Bold Italic', path: "ubuntu/UbuntuMono-BI.ttf" },
128
71
  { id: 'Libre Barcode 39', path: "libre-barcode/LibreBarcode39-Regular.ttf" },
129
72
  { id: 'Libre Barcode 39 Text', path: "libre-barcode/LibreBarcode39Text-Regular.ttf" },
130
73
  { id: 'Libre Barcode 39 Extended', path: "libre-barcode/LibreBarcode39Extended-Regular.ttf" },
131
74
  { id: 'Libre Barcode 39 Extended Text', path: "libre-barcode/LibreBarcode39ExtendedText-Regular.ttf" },
132
75
  { id: 'Libre Barcode 128', path: "libre-barcode/LibreBarcode128-Regular.ttf" },
133
76
  { id: 'Libre Barcode 128 Text', path: "libre-barcode/LibreBarcode128Text-Regular.ttf" },
134
- { id: 'Libre Barcode EAN13 Text', path: "libre-barcode/LibreBarcodeEAN13Text-Regular.ttf" },
135
77
  { id: 'Braille Grid HC', path: "braille-hc/BrailleGridHC-Regular.otf" },
136
- { id: 'Braille Latin HC', path: "braille-hc/BrailleLatinHC-Regular.otf" },
137
- { id: 'Braille Pinboard HC', path: "braille-hc/BraillePinboardHC-Regular.otf" },
138
78
  { id: 'Braille Pixel HC', path: "braille-hc/BraillePixelHC-Regular.otf" },
139
79
  ];
140
80
 
141
- const FONT_CATALOG = dedupeFonts([...BASE_FONT_CATALOG, ...GOOGLE_OFL_FONTS]);
81
+ const FONT_CATALOG = sortFontsByName(dedupeFonts([...BASE_FONT_CATALOG, ...GOOGLE_OFL_FONTS]));
82
+ const DEFAULT_FONT_ID = FONT_CATALOG.find((font) => font.id === 'Noto Sans')?.id || FONT_CATALOG[0]?.id || 'Noto Sans';
142
83
 
143
84
  const DEFAULT_TRANSFORM = {
144
85
  position: [0, 0, 0],
@@ -186,7 +127,7 @@ const inputParamsSchema = {
186
127
  font: {
187
128
  type: "options",
188
129
  options: FONT_CATALOG.map((f) => f.id),
189
- default_value: FONT_CATALOG[0]?.id || "Noto Sans",
130
+ default_value: DEFAULT_FONT_ID,
190
131
  hint: "Select a built-in font",
191
132
  },
192
133
  fontFile: {
@@ -816,7 +757,11 @@ async function resolveFont(params, selectedEntry = null) {
816
757
 
817
758
  function getSelectedFontEntry(params) {
818
759
  const fontId = (params && typeof params.font === 'string') ? params.font : null;
819
- return FONT_CATALOG.find((f) => f.id === fontId) || FONT_CATALOG[0];
760
+ if (fontId) {
761
+ const match = FONT_CATALOG.find((font) => font.id === fontId);
762
+ if (match) return match;
763
+ }
764
+ return FONT_CATALOG.find((font) => font.id === DEFAULT_FONT_ID) || FONT_CATALOG[0];
820
765
  }
821
766
 
822
767
  async function loadFontFromSource(source, { type }) {
@@ -1 +1,8 @@
1
- export const FONT_URL_LOADERS = null;
1
+ export const FONT_URL_LOADERS = import.meta.glob(
2
+ '../../assets/fonts/**/*.{ttf,otf,woff,woff2,ttc}',
3
+ {
4
+ eager: true,
5
+ query: '?inline',
6
+ import: 'default',
7
+ }
8
+ );
@@ -1,4 +1,8 @@
1
1
  export const FONT_URL_LOADERS = import.meta.glob(
2
2
  '../../assets/fonts/**/*.{ttf,otf,woff,woff2,ttc}',
3
- { query: '?url', import: 'default' }
3
+ {
4
+ eager: true,
5
+ query: '?inline',
6
+ import: 'default',
7
+ }
4
8
  );