@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.6 → 0.2.8

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 (468) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/accessibility-demo.d.ts +259 -0
  3. package/dist/components/ui/accessibility-demo.esm.js +265 -0
  4. package/dist/components/ui/accessibility-demo.js +265 -0
  5. package/dist/components/ui/advanced-component-architecture-demo.d.ts +718 -0
  6. package/dist/components/ui/advanced-component-architecture-demo.esm.js +860 -0
  7. package/dist/components/ui/advanced-component-architecture-demo.js +860 -0
  8. package/dist/components/ui/advanced-transition-system-demo.d.ts +660 -0
  9. package/dist/components/ui/advanced-transition-system-demo.esm.js +624 -0
  10. package/dist/components/ui/advanced-transition-system-demo.js +624 -0
  11. package/dist/components/ui/advanced-transition-system.d.ts +391 -0
  12. package/dist/components/ui/advanced-transition-system.esm.js +351 -0
  13. package/dist/components/ui/advanced-transition-system.js +351 -0
  14. package/dist/components/ui/animation/animated-container.d.ts +162 -0
  15. package/dist/components/ui/animation/animated-container.esm.js +143 -0
  16. package/dist/components/ui/animation/animated-container.js +143 -0
  17. package/dist/components/ui/animation/index.d.ts +9 -0
  18. package/dist/components/ui/animation/index.esm.js +19 -0
  19. package/dist/components/ui/animation/index.js +19 -0
  20. package/dist/components/ui/animation/staggered-container.d.ts +64 -0
  21. package/dist/components/ui/animation/staggered-container.esm.js +59 -0
  22. package/dist/components/ui/animation/staggered-container.js +59 -0
  23. package/dist/components/ui/animation-demo.d.ts +238 -0
  24. package/dist/components/ui/animation-demo.esm.js +218 -0
  25. package/dist/components/ui/animation-demo.js +218 -0
  26. package/dist/components/ui/badge.d.ts +28 -0
  27. package/dist/components/ui/badge.esm.js +30 -0
  28. package/dist/components/ui/badge.js +30 -0
  29. package/dist/components/ui/battery-conscious-animation-demo.d.ts +561 -0
  30. package/dist/components/ui/battery-conscious-animation-demo.esm.js +533 -0
  31. package/dist/components/ui/battery-conscious-animation-demo.js +533 -0
  32. package/dist/components/ui/border-radius-shadow-demo.d.ts +183 -0
  33. package/dist/components/ui/border-radius-shadow-demo.esm.js +176 -0
  34. package/dist/components/ui/border-radius-shadow-demo.js +176 -0
  35. package/dist/components/ui/button.d.ts +33 -0
  36. package/dist/components/ui/button.esm.js +30 -0
  37. package/dist/components/ui/button.js +30 -0
  38. package/dist/components/ui/card.d.ts +205 -0
  39. package/dist/components/ui/card.esm.js +182 -0
  40. package/dist/components/ui/card.js +182 -0
  41. package/dist/components/ui/checkbox.d.ts +26 -0
  42. package/dist/components/ui/checkbox.esm.js +30 -0
  43. package/dist/components/ui/checkbox.js +30 -0
  44. package/dist/components/ui/color-preview.d.ts +402 -0
  45. package/dist/components/ui/color-preview.esm.js +388 -0
  46. package/dist/components/ui/color-preview.js +388 -0
  47. package/dist/components/ui/data-display/chart.d.ts +646 -0
  48. package/dist/components/ui/data-display/chart.esm.js +625 -0
  49. package/dist/components/ui/data-display/chart.js +625 -0
  50. package/dist/components/ui/data-display/data-grid-simple.d.ts +73 -0
  51. package/dist/components/ui/data-display/data-grid-simple.esm.js +76 -0
  52. package/dist/components/ui/data-display/data-grid-simple.js +76 -0
  53. package/dist/components/ui/data-display/data-grid.d.ts +670 -0
  54. package/dist/components/ui/data-display/data-grid.esm.js +667 -0
  55. package/dist/components/ui/data-display/data-grid.js +667 -0
  56. package/dist/components/ui/data-display/list.d.ts +448 -0
  57. package/dist/components/ui/data-display/list.esm.js +448 -0
  58. package/dist/components/ui/data-display/list.js +448 -0
  59. package/dist/components/ui/data-display/table.d.ts +472 -0
  60. package/dist/components/ui/data-display/table.esm.js +474 -0
  61. package/dist/components/ui/data-display/table.js +474 -0
  62. package/dist/components/ui/data-display/timeline.d.ts +433 -0
  63. package/dist/components/ui/data-display/timeline.esm.js +436 -0
  64. package/dist/components/ui/data-display/timeline.js +436 -0
  65. package/dist/components/ui/data-display/tree.d.ts +594 -0
  66. package/dist/components/ui/data-display/tree.esm.js +570 -0
  67. package/dist/components/ui/data-display/tree.js +570 -0
  68. package/dist/components/ui/data-display/types.d.ts +534 -0
  69. package/dist/components/ui/data-display/types.esm.js +511 -0
  70. package/dist/components/ui/data-display/types.js +511 -0
  71. package/dist/components/ui/enterprise-mobile-experience-demo.d.ts +735 -0
  72. package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +699 -0
  73. package/dist/components/ui/enterprise-mobile-experience-demo.js +699 -0
  74. package/dist/components/ui/enterprise-mobile-experience.d.ts +461 -0
  75. package/dist/components/ui/enterprise-mobile-experience.esm.js +413 -0
  76. package/dist/components/ui/enterprise-mobile-experience.js +413 -0
  77. package/dist/components/ui/feedback/alert.d.ts +154 -0
  78. package/dist/components/ui/feedback/alert.esm.js +150 -0
  79. package/dist/components/ui/feedback/alert.js +150 -0
  80. package/dist/components/ui/feedback/progress.d.ts +288 -0
  81. package/dist/components/ui/feedback/progress.esm.js +269 -0
  82. package/dist/components/ui/feedback/progress.js +269 -0
  83. package/dist/components/ui/feedback/skeleton.d.ts +182 -0
  84. package/dist/components/ui/feedback/skeleton.esm.js +175 -0
  85. package/dist/components/ui/feedback/skeleton.js +175 -0
  86. package/dist/components/ui/feedback/toast.d.ts +277 -0
  87. package/dist/components/ui/feedback/toast.esm.js +256 -0
  88. package/dist/components/ui/feedback/toast.js +256 -0
  89. package/dist/components/ui/feedback/types.d.ts +123 -0
  90. package/dist/components/ui/feedback/types.esm.js +125 -0
  91. package/dist/components/ui/feedback/types.js +125 -0
  92. package/dist/components/ui/font-preview.d.ts +282 -0
  93. package/dist/components/ui/font-preview.esm.js +286 -0
  94. package/dist/components/ui/font-preview.js +286 -0
  95. package/dist/components/ui/form-demo.d.ts +544 -0
  96. package/dist/components/ui/form-demo.esm.js +516 -0
  97. package/dist/components/ui/form-demo.js +516 -0
  98. package/dist/components/ui/hardware-acceleration-demo.d.ts +540 -0
  99. package/dist/components/ui/hardware-acceleration-demo.esm.js +497 -0
  100. package/dist/components/ui/hardware-acceleration-demo.js +497 -0
  101. package/dist/components/ui/input.d.ts +33 -0
  102. package/dist/components/ui/input.esm.js +32 -0
  103. package/dist/components/ui/input.js +32 -0
  104. package/dist/components/ui/label.d.ts +13 -0
  105. package/dist/components/ui/label.esm.js +16 -0
  106. package/dist/components/ui/label.js +16 -0
  107. package/dist/components/ui/layout-demo.d.ts +352 -0
  108. package/dist/components/ui/layout-demo.esm.js +342 -0
  109. package/dist/components/ui/layout-demo.js +342 -0
  110. package/dist/components/ui/layouts/adaptive-layout.d.ts +132 -0
  111. package/dist/components/ui/layouts/adaptive-layout.esm.js +120 -0
  112. package/dist/components/ui/layouts/adaptive-layout.js +120 -0
  113. package/dist/components/ui/layouts/desktop-layout.d.ts +219 -0
  114. package/dist/components/ui/layouts/desktop-layout.esm.js +204 -0
  115. package/dist/components/ui/layouts/desktop-layout.js +204 -0
  116. package/dist/components/ui/layouts/index.d.ts +5 -0
  117. package/dist/components/ui/layouts/index.esm.js +10 -0
  118. package/dist/components/ui/layouts/index.js +10 -0
  119. package/dist/components/ui/layouts/mobile-layout.d.ts +158 -0
  120. package/dist/components/ui/layouts/mobile-layout.esm.js +152 -0
  121. package/dist/components/ui/layouts/mobile-layout.js +152 -0
  122. package/dist/components/ui/layouts/tablet-layout.d.ts +192 -0
  123. package/dist/components/ui/layouts/tablet-layout.esm.js +183 -0
  124. package/dist/components/ui/layouts/tablet-layout.js +183 -0
  125. package/dist/components/ui/mobile-form-validation.d.ts +439 -0
  126. package/dist/components/ui/mobile-form-validation.esm.js +418 -0
  127. package/dist/components/ui/mobile-form-validation.js +418 -0
  128. package/dist/components/ui/mobile-input-demo.d.ts +197 -0
  129. package/dist/components/ui/mobile-input-demo.esm.js +195 -0
  130. package/dist/components/ui/mobile-input-demo.js +195 -0
  131. package/dist/components/ui/mobile-input.d.ts +273 -0
  132. package/dist/components/ui/mobile-input.esm.js +216 -0
  133. package/dist/components/ui/mobile-input.js +216 -0
  134. package/dist/components/ui/mobile-skeleton-loading-demo.d.ts +628 -0
  135. package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +621 -0
  136. package/dist/components/ui/mobile-skeleton-loading-demo.js +621 -0
  137. package/dist/components/ui/navigation/breadcrumb.d.ts +149 -0
  138. package/dist/components/ui/navigation/breadcrumb.esm.js +155 -0
  139. package/dist/components/ui/navigation/breadcrumb.js +155 -0
  140. package/dist/components/ui/navigation/index.d.ts +25 -0
  141. package/dist/components/ui/navigation/index.esm.js +14 -0
  142. package/dist/components/ui/navigation/index.js +14 -0
  143. package/dist/components/ui/navigation/menu.d.ts +366 -0
  144. package/dist/components/ui/navigation/menu.esm.js +360 -0
  145. package/dist/components/ui/navigation/menu.js +360 -0
  146. package/dist/components/ui/navigation/navigation-demo.d.ts +169 -0
  147. package/dist/components/ui/navigation/navigation-demo.esm.js +317 -0
  148. package/dist/components/ui/navigation/navigation-demo.js +317 -0
  149. package/dist/components/ui/navigation/pagination.d.ts +261 -0
  150. package/dist/components/ui/navigation/pagination.esm.js +260 -0
  151. package/dist/components/ui/navigation/pagination.js +260 -0
  152. package/dist/components/ui/navigation/sidebar.d.ts +375 -0
  153. package/dist/components/ui/navigation/sidebar.esm.js +369 -0
  154. package/dist/components/ui/navigation/sidebar.js +369 -0
  155. package/dist/components/ui/navigation/stepper.d.ts +294 -0
  156. package/dist/components/ui/navigation/stepper.esm.js +292 -0
  157. package/dist/components/ui/navigation/stepper.js +292 -0
  158. package/dist/components/ui/navigation/tabs.d.ts +196 -0
  159. package/dist/components/ui/navigation/tabs.esm.js +194 -0
  160. package/dist/components/ui/navigation/tabs.js +194 -0
  161. package/dist/components/ui/navigation/types.d.ts +293 -0
  162. package/dist/components/ui/navigation/types.esm.js +298 -0
  163. package/dist/components/ui/navigation/types.js +298 -0
  164. package/dist/components/ui/overlay/backdrop.d.ts +79 -0
  165. package/dist/components/ui/overlay/backdrop.esm.js +80 -0
  166. package/dist/components/ui/overlay/backdrop.js +80 -0
  167. package/dist/components/ui/overlay/focus-manager.d.ts +141 -0
  168. package/dist/components/ui/overlay/focus-manager.esm.js +141 -0
  169. package/dist/components/ui/overlay/focus-manager.js +141 -0
  170. package/dist/components/ui/overlay/index.d.ts +27 -0
  171. package/dist/components/ui/overlay/index.esm.js +16 -0
  172. package/dist/components/ui/overlay/index.js +16 -0
  173. package/dist/components/ui/overlay/modal.d.ts +262 -0
  174. package/dist/components/ui/overlay/modal.esm.js +266 -0
  175. package/dist/components/ui/overlay/modal.js +266 -0
  176. package/dist/components/ui/overlay/overlay-manager.d.ts +107 -0
  177. package/dist/components/ui/overlay/overlay-manager.esm.js +105 -0
  178. package/dist/components/ui/overlay/overlay-manager.js +105 -0
  179. package/dist/components/ui/overlay/popover.d.ts +450 -0
  180. package/dist/components/ui/overlay/popover.esm.js +446 -0
  181. package/dist/components/ui/overlay/popover.js +446 -0
  182. package/dist/components/ui/overlay/portal.d.ts +75 -0
  183. package/dist/components/ui/overlay/portal.esm.js +79 -0
  184. package/dist/components/ui/overlay/portal.js +79 -0
  185. package/dist/components/ui/overlay/tooltip.d.ts +298 -0
  186. package/dist/components/ui/overlay/tooltip.esm.js +288 -0
  187. package/dist/components/ui/overlay/tooltip.js +288 -0
  188. package/dist/components/ui/overlay/types.d.ts +194 -0
  189. package/dist/components/ui/overlay/types.esm.js +195 -0
  190. package/dist/components/ui/overlay/types.js +195 -0
  191. package/dist/components/ui/performance-demo.d.ts +583 -0
  192. package/dist/components/ui/performance-demo.esm.js +549 -0
  193. package/dist/components/ui/performance-demo.js +549 -0
  194. package/dist/components/ui/semantic-input-system-demo.d.ts +490 -0
  195. package/dist/components/ui/semantic-input-system-demo.esm.js +465 -0
  196. package/dist/components/ui/semantic-input-system-demo.js +465 -0
  197. package/dist/components/ui/theme-customizer.d.ts +378 -0
  198. package/dist/components/ui/theme-customizer.esm.js +354 -0
  199. package/dist/components/ui/theme-customizer.js +354 -0
  200. package/dist/components/ui/theme-preview.d.ts +305 -0
  201. package/dist/components/ui/theme-preview.esm.js +258 -0
  202. package/dist/components/ui/theme-preview.js +258 -0
  203. package/dist/components/ui/theme-switcher.d.ts +259 -0
  204. package/dist/components/ui/theme-switcher.esm.js +238 -0
  205. package/dist/components/ui/theme-switcher.js +238 -0
  206. package/dist/components/ui/theme-toggle.d.ts +34 -0
  207. package/dist/components/ui/theme-toggle.esm.js +38 -0
  208. package/dist/components/ui/theme-toggle.js +38 -0
  209. package/dist/components/ui/token-demo.d.ts +188 -0
  210. package/dist/components/ui/token-demo.esm.js +183 -0
  211. package/dist/components/ui/token-demo.js +183 -0
  212. package/dist/components/ui/touch-demo.d.ts +455 -0
  213. package/dist/components/ui/touch-demo.esm.js +433 -0
  214. package/dist/components/ui/touch-demo.js +433 -0
  215. package/dist/components/ui/touch-friendly-interface-demo.d.ts +512 -0
  216. package/dist/components/ui/touch-friendly-interface-demo.esm.js +481 -0
  217. package/dist/components/ui/touch-friendly-interface-demo.js +481 -0
  218. package/dist/components/ui/touch-friendly-interface.d.ts +292 -0
  219. package/dist/components/ui/touch-friendly-interface.esm.js +272 -0
  220. package/dist/components/ui/touch-friendly-interface.js +272 -0
  221. package/dist/hooks/index.d.ts +161 -0
  222. package/dist/hooks/index.esm.js +190 -0
  223. package/dist/hooks/index.js +190 -0
  224. package/dist/hooks/use-accessibility-support.d.ts +516 -0
  225. package/dist/hooks/use-accessibility-support.esm.js +488 -0
  226. package/dist/hooks/use-accessibility-support.js +488 -0
  227. package/dist/hooks/use-adaptive-layout.d.ts +287 -0
  228. package/dist/hooks/use-adaptive-layout.esm.js +266 -0
  229. package/dist/hooks/use-adaptive-layout.js +266 -0
  230. package/dist/hooks/use-advanced-patterns.d.ts +292 -0
  231. package/dist/hooks/use-advanced-patterns.esm.js +279 -0
  232. package/dist/hooks/use-advanced-patterns.js +279 -0
  233. package/dist/hooks/use-advanced-transition-system.d.ts +390 -0
  234. package/dist/hooks/use-advanced-transition-system.esm.js +352 -0
  235. package/dist/hooks/use-advanced-transition-system.js +352 -0
  236. package/dist/hooks/use-animation-profile.d.ts +285 -0
  237. package/dist/hooks/use-animation-profile.esm.js +259 -0
  238. package/dist/hooks/use-animation-profile.js +259 -0
  239. package/dist/hooks/use-battery-animations.d.ts +382 -0
  240. package/dist/hooks/use-battery-animations.esm.js +359 -0
  241. package/dist/hooks/use-battery-animations.js +359 -0
  242. package/dist/hooks/use-battery-conscious-loading.d.ts +473 -0
  243. package/dist/hooks/use-battery-conscious-loading.esm.js +432 -0
  244. package/dist/hooks/use-battery-conscious-loading.js +432 -0
  245. package/dist/hooks/use-battery-optimization.d.ts +328 -0
  246. package/dist/hooks/use-battery-optimization.esm.js +307 -0
  247. package/dist/hooks/use-battery-optimization.js +307 -0
  248. package/dist/hooks/use-battery-status.d.ts +297 -0
  249. package/dist/hooks/use-battery-status.esm.js +277 -0
  250. package/dist/hooks/use-battery-status.js +277 -0
  251. package/dist/hooks/use-component-performance.d.ts +342 -0
  252. package/dist/hooks/use-component-performance.esm.js +329 -0
  253. package/dist/hooks/use-component-performance.js +329 -0
  254. package/dist/hooks/use-device-loading-states.d.ts +456 -0
  255. package/dist/hooks/use-device-loading-states.esm.js +416 -0
  256. package/dist/hooks/use-device-loading-states.js +416 -0
  257. package/dist/hooks/use-device.d.ts +104 -0
  258. package/dist/hooks/use-device.esm.js +99 -0
  259. package/dist/hooks/use-device.js +99 -0
  260. package/dist/hooks/use-enterprise-mobile-experience.d.ts +486 -0
  261. package/dist/hooks/use-enterprise-mobile-experience.esm.js +439 -0
  262. package/dist/hooks/use-enterprise-mobile-experience.js +439 -0
  263. package/dist/hooks/use-form-feedback.d.ts +401 -0
  264. package/dist/hooks/use-form-feedback.esm.js +360 -0
  265. package/dist/hooks/use-form-feedback.js +360 -0
  266. package/dist/hooks/use-form-performance.d.ts +511 -0
  267. package/dist/hooks/use-form-performance.esm.js +478 -0
  268. package/dist/hooks/use-form-performance.js +478 -0
  269. package/dist/hooks/use-frame-rate.d.ts +249 -0
  270. package/dist/hooks/use-frame-rate.esm.js +232 -0
  271. package/dist/hooks/use-frame-rate.js +232 -0
  272. package/dist/hooks/use-gestures.d.ts +336 -0
  273. package/dist/hooks/use-gestures.esm.js +314 -0
  274. package/dist/hooks/use-gestures.js +314 -0
  275. package/dist/hooks/use-hardware-acceleration.d.ts +339 -0
  276. package/dist/hooks/use-hardware-acceleration.esm.js +313 -0
  277. package/dist/hooks/use-hardware-acceleration.js +313 -0
  278. package/dist/hooks/use-input-accessibility.d.ts +451 -0
  279. package/dist/hooks/use-input-accessibility.esm.js +417 -0
  280. package/dist/hooks/use-input-accessibility.js +417 -0
  281. package/dist/hooks/use-input-performance.d.ts +503 -0
  282. package/dist/hooks/use-input-performance.esm.js +471 -0
  283. package/dist/hooks/use-input-performance.js +471 -0
  284. package/dist/hooks/use-layout-performance.d.ts +317 -0
  285. package/dist/hooks/use-layout-performance.esm.js +298 -0
  286. package/dist/hooks/use-layout-performance.js +298 -0
  287. package/dist/hooks/use-loading-accessibility.d.ts +532 -0
  288. package/dist/hooks/use-loading-accessibility.esm.js +495 -0
  289. package/dist/hooks/use-loading-accessibility.js +495 -0
  290. package/dist/hooks/use-loading-performance.d.ts +471 -0
  291. package/dist/hooks/use-loading-performance.esm.js +449 -0
  292. package/dist/hooks/use-loading-performance.js +449 -0
  293. package/dist/hooks/use-memory-usage.d.ts +285 -0
  294. package/dist/hooks/use-memory-usage.esm.js +268 -0
  295. package/dist/hooks/use-memory-usage.js +268 -0
  296. package/dist/hooks/use-mobile-form-layout.d.ts +462 -0
  297. package/dist/hooks/use-mobile-form-layout.esm.js +427 -0
  298. package/dist/hooks/use-mobile-form-layout.js +427 -0
  299. package/dist/hooks/use-mobile-form-validation.d.ts +516 -0
  300. package/dist/hooks/use-mobile-form-validation.esm.js +451 -0
  301. package/dist/hooks/use-mobile-form-validation.js +451 -0
  302. package/dist/hooks/use-mobile-keyboard-optimization.d.ts +469 -0
  303. package/dist/hooks/use-mobile-keyboard-optimization.esm.js +431 -0
  304. package/dist/hooks/use-mobile-keyboard-optimization.js +431 -0
  305. package/dist/hooks/use-mobile-layout.d.ts +300 -0
  306. package/dist/hooks/use-mobile-layout.esm.js +280 -0
  307. package/dist/hooks/use-mobile-layout.js +280 -0
  308. package/dist/hooks/use-mobile-optimization.d.ts +404 -0
  309. package/dist/hooks/use-mobile-optimization.esm.js +378 -0
  310. package/dist/hooks/use-mobile-optimization.js +378 -0
  311. package/dist/hooks/use-mobile-skeleton.d.ts +399 -0
  312. package/dist/hooks/use-mobile-skeleton.esm.js +369 -0
  313. package/dist/hooks/use-mobile-skeleton.js +369 -0
  314. package/dist/hooks/use-mobile-touch.d.ts +412 -0
  315. package/dist/hooks/use-mobile-touch.esm.js +379 -0
  316. package/dist/hooks/use-mobile-touch.js +379 -0
  317. package/dist/hooks/use-performance-throttling.d.ts +346 -0
  318. package/dist/hooks/use-performance-throttling.esm.js +324 -0
  319. package/dist/hooks/use-performance-throttling.js +324 -0
  320. package/dist/hooks/use-performance.d.ts +314 -0
  321. package/dist/hooks/use-performance.esm.js +278 -0
  322. package/dist/hooks/use-performance.js +278 -0
  323. package/dist/hooks/use-reusable-architecture.d.ts +412 -0
  324. package/dist/hooks/use-reusable-architecture.esm.js +385 -0
  325. package/dist/hooks/use-reusable-architecture.js +385 -0
  326. package/dist/hooks/use-semantic-input-types.d.ts +354 -0
  327. package/dist/hooks/use-semantic-input-types.esm.js +315 -0
  328. package/dist/hooks/use-semantic-input-types.js +315 -0
  329. package/dist/hooks/use-semantic-input.d.ts +563 -0
  330. package/dist/hooks/use-semantic-input.esm.js +513 -0
  331. package/dist/hooks/use-semantic-input.js +513 -0
  332. package/dist/hooks/use-tablet-layout.d.ts +382 -0
  333. package/dist/hooks/use-tablet-layout.esm.js +355 -0
  334. package/dist/hooks/use-tablet-layout.js +355 -0
  335. package/dist/hooks/use-touch-friendly-input.d.ts +520 -0
  336. package/dist/hooks/use-touch-friendly-input.esm.js +480 -0
  337. package/dist/hooks/use-touch-friendly-input.js +480 -0
  338. package/dist/hooks/use-touch-friendly-interface.d.ts +329 -0
  339. package/dist/hooks/use-touch-friendly-interface.esm.js +299 -0
  340. package/dist/hooks/use-touch-friendly-interface.js +299 -0
  341. package/dist/hooks/use-touch-optimization.d.ts +373 -0
  342. package/dist/hooks/use-touch-optimization.esm.js +348 -0
  343. package/dist/hooks/use-touch-optimization.js +348 -0
  344. package/dist/index.esm.js +2 -2
  345. package/dist/index.js +2 -2
  346. package/dist/lib/utils.d.ts +3 -0
  347. package/dist/lib/utils.esm.js +6 -0
  348. package/dist/lib/utils.js +6 -0
  349. package/dist/plugins/theme-css-generator.d.ts +345 -0
  350. package/dist/plugins/theme-css-generator.esm.js +305 -0
  351. package/dist/plugins/theme-css-generator.js +305 -0
  352. package/dist/styles.css +1 -1
  353. package/dist/themes/ThemeContext.d.ts +27 -0
  354. package/dist/themes/ThemeContext.esm.js +31 -0
  355. package/dist/themes/ThemeContext.js +31 -0
  356. package/dist/themes/ThemeProvider.d.ts +222 -0
  357. package/dist/themes/ThemeProvider.esm.js +229 -0
  358. package/dist/themes/ThemeProvider.js +229 -0
  359. package/dist/themes/accessibility/index.d.ts +7 -0
  360. package/dist/themes/accessibility/index.esm.js +27 -0
  361. package/dist/themes/accessibility/index.js +27 -0
  362. package/dist/themes/accessibility.d.ts +259 -0
  363. package/dist/themes/accessibility.esm.js +220 -0
  364. package/dist/themes/accessibility.js +220 -0
  365. package/dist/themes/aria-patterns.d.ts +418 -0
  366. package/dist/themes/aria-patterns.esm.js +384 -0
  367. package/dist/themes/aria-patterns.js +384 -0
  368. package/dist/themes/base-themes.d.ts +34 -0
  369. package/dist/themes/base-themes.esm.js +52 -0
  370. package/dist/themes/base-themes.js +52 -0
  371. package/dist/themes/colorManager.d.ts +327 -0
  372. package/dist/themes/colorManager.esm.js +362 -0
  373. package/dist/themes/colorManager.js +362 -0
  374. package/dist/themes/examples/dark-theme.d.ts +139 -0
  375. package/dist/themes/examples/dark-theme.esm.js +124 -0
  376. package/dist/themes/examples/dark-theme.js +124 -0
  377. package/dist/themes/examples/minimal-theme.d.ts +93 -0
  378. package/dist/themes/examples/minimal-theme.esm.js +86 -0
  379. package/dist/themes/examples/minimal-theme.js +86 -0
  380. package/dist/themes/focus-management.d.ts +699 -0
  381. package/dist/themes/focus-management.esm.js +642 -0
  382. package/dist/themes/focus-management.js +642 -0
  383. package/dist/themes/fontLoader.d.ts +163 -0
  384. package/dist/themes/fontLoader.esm.js +192 -0
  385. package/dist/themes/fontLoader.js +192 -0
  386. package/dist/themes/high-contrast.d.ts +619 -0
  387. package/dist/themes/high-contrast.esm.js +573 -0
  388. package/dist/themes/high-contrast.js +573 -0
  389. package/dist/themes/index.d.ts +11 -0
  390. package/dist/themes/index.esm.js +19 -0
  391. package/dist/themes/index.js +19 -0
  392. package/dist/themes/inheritance.d.ts +160 -0
  393. package/dist/themes/inheritance.esm.js +219 -0
  394. package/dist/themes/inheritance.js +219 -0
  395. package/dist/themes/keyboard-navigation.d.ts +550 -0
  396. package/dist/themes/keyboard-navigation.esm.js +521 -0
  397. package/dist/themes/keyboard-navigation.js +521 -0
  398. package/dist/themes/motion-reduction.d.ts +660 -0
  399. package/dist/themes/motion-reduction.esm.js +602 -0
  400. package/dist/themes/motion-reduction.js +602 -0
  401. package/dist/themes/navigation.d.ts +232 -0
  402. package/dist/themes/navigation.esm.js +238 -0
  403. package/dist/themes/navigation.js +238 -0
  404. package/dist/themes/screen-reader.d.ts +645 -0
  405. package/dist/themes/screen-reader.esm.js +580 -0
  406. package/dist/themes/screen-reader.js +580 -0
  407. package/dist/themes/systemThemeDetector.d.ts +148 -0
  408. package/dist/themes/systemThemeDetector.esm.js +174 -0
  409. package/dist/themes/systemThemeDetector.js +174 -0
  410. package/dist/themes/themeCSSUpdater.d.ts +229 -0
  411. package/dist/themes/themeCSSUpdater.esm.js +250 -0
  412. package/dist/themes/themeCSSUpdater.js +250 -0
  413. package/dist/themes/themePersistence.d.ts +192 -0
  414. package/dist/themes/themePersistence.esm.js +217 -0
  415. package/dist/themes/themePersistence.js +217 -0
  416. package/dist/themes/themes/stan-design.d.ts +678 -0
  417. package/dist/themes/themes/stan-design.esm.js +518 -0
  418. package/dist/themes/themes/stan-design.js +518 -0
  419. package/dist/themes/types.d.ts +454 -0
  420. package/dist/themes/types.esm.js +446 -0
  421. package/dist/themes/types.js +446 -0
  422. package/dist/themes/useSystemTheme.d.ts +43 -0
  423. package/dist/themes/useSystemTheme.esm.js +48 -0
  424. package/dist/themes/useSystemTheme.js +48 -0
  425. package/dist/themes/useTheme.d.ts +20 -0
  426. package/dist/themes/useTheme.esm.js +87 -0
  427. package/dist/themes/useTheme.js +87 -0
  428. package/dist/themes/validation.d.ts +406 -0
  429. package/dist/themes/validation.esm.js +411 -0
  430. package/dist/themes/validation.js +411 -0
  431. package/dist/tokens/index.d.ts +25 -0
  432. package/dist/tokens/index.esm.js +23 -0
  433. package/dist/tokens/index.js +23 -0
  434. package/dist/tokens/tokenExporter.d.ts +336 -0
  435. package/dist/tokens/tokenExporter.esm.js +371 -0
  436. package/dist/tokens/tokenExporter.js +371 -0
  437. package/dist/tokens/tokenGenerator.d.ts +250 -0
  438. package/dist/tokens/tokenGenerator.esm.js +267 -0
  439. package/dist/tokens/tokenGenerator.js +267 -0
  440. package/dist/tokens/tokenManager.d.ts +194 -0
  441. package/dist/tokens/tokenManager.esm.js +235 -0
  442. package/dist/tokens/tokenManager.js +235 -0
  443. package/dist/tokens/tokenValidator.d.ts +488 -0
  444. package/dist/tokens/tokenValidator.esm.js +497 -0
  445. package/dist/tokens/tokenValidator.js +497 -0
  446. package/dist/tokens/types.d.ts +78 -0
  447. package/dist/tokens/types.esm.js +64 -0
  448. package/dist/tokens/types.js +64 -0
  449. package/dist/utils/bundle-analyzer.d.ts +260 -0
  450. package/dist/utils/bundle-analyzer.esm.js +242 -0
  451. package/dist/utils/bundle-analyzer.js +242 -0
  452. package/dist/utils/bundle-splitting.d.ts +483 -0
  453. package/dist/utils/bundle-splitting.esm.js +458 -0
  454. package/dist/utils/bundle-splitting.js +458 -0
  455. package/dist/utils/lazy-loading.d.ts +437 -0
  456. package/dist/utils/lazy-loading.esm.js +415 -0
  457. package/dist/utils/lazy-loading.js +415 -0
  458. package/dist/utils/performance-monitor.d.ts +513 -0
  459. package/dist/utils/performance-monitor.esm.js +472 -0
  460. package/dist/utils/performance-monitor.js +472 -0
  461. package/dist/utils/tree-shaking.d.ts +274 -0
  462. package/dist/utils/tree-shaking.esm.js +266 -0
  463. package/dist/utils/tree-shaking.js +266 -0
  464. package/package.json +1 -1
  465. package/src/index.ts +2 -2
  466. package/src/themes/accessibility/index.ts +1 -1
  467. package/src/themes/focus-management.ts +3 -3
  468. package/src/themes/keyboard-navigation.ts +3 -3
@@ -0,0 +1,163 @@
1
+
2
+ export class FontLoader {
3
+ private loadedFonts: Set<string> = new Set();
4
+
5
+ async loadThemeFonts(fonts: FontThemeConfig): Promise<void> {
6
+ const fontPromises: Promise<void>[] = [];
7
+
8
+ // Load primary font
9
+ fontPromises.push(this.loadFont(fonts.primary));
10
+
11
+ // Load secondary font
12
+ fontPromises.push(this.loadFont(fonts.secondary));
13
+
14
+ // Load display font
15
+ fontPromises.push(this.loadFont(fonts.display));
16
+
17
+ // Load body font
18
+ fontPromises.push(this.loadFont(fonts.body));
19
+
20
+ // Wait for all fonts to load
21
+ await Promise.all(fontPromises);
22
+ }
23
+
24
+ private async loadFont(fontConfig: FontThemeConfig['primary']): Promise<void> {
25
+ const { family, weights, display = 'swap', source } = fontConfig;
26
+
27
+ // Skip if already loaded
28
+ if (this.loadedFonts.has(family)) {
29
+ return;
30
+ }
31
+
32
+ try {
33
+ // Load based on source type
34
+ if (source?.type === 'google') {
35
+ await this.loadGoogleFont(family, weights, display);
36
+ this.loadedFonts.add(family);
37
+ return;
38
+ }
39
+
40
+ if (source?.type === 'custom' && source.files) {
41
+ await this.loadCustomFontFiles(family, source.files, weights, display);
42
+ this.loadedFonts.add(family);
43
+ return;
44
+ }
45
+
46
+ if (source?.type === 'system' || !source) {
47
+ // Check if font is available in the system
48
+ if (await this.isFontAvailable(family)) {
49
+ this.loadedFonts.add(family);
50
+ return;
51
+ }
52
+ }
53
+
54
+ // Fallback: try Google Fonts if it's a known web font
55
+ if (this.isGoogleFont(family)) {
56
+ await this.loadGoogleFont(family, weights, display);
57
+ this.loadedFonts.add(family);
58
+ return;
59
+ }
60
+
61
+ console.warn(`Font ${family} could not be loaded, falling back to system fonts`);
62
+ } catch (error) {
63
+ console.error(`Error loading font ${family}:`, error);
64
+ }
65
+ }
66
+
67
+ private async isFontAvailable(fontFamily: string): Promise<boolean> {
68
+ if (typeof document === 'undefined') return false;
69
+
70
+ // Remove quotes and get the first font family
71
+ const cleanFamily = fontFamily.split(',')[0].replace(/['"]/g, '').trim();
72
+
73
+ return new Promise((resolve) => {
74
+ // Use FontFace API if available
75
+ if ('fonts' in document) {
76
+ const font = new FontFace(cleanFamily, 'normal');
77
+ font.load().then(() => {
78
+ resolve(true);
79
+ }).catch(() => {
80
+ resolve(false);
81
+ });
82
+ } else {
83
+ // For now, assume font is available if FontFace API is not supported
84
+ resolve(true);
85
+ }
86
+ });
87
+ }
88
+
89
+ private isGoogleFont(fontFamily: string): boolean {
90
+ const googleFonts = [
91
+ 'Poppins', 'Inter', 'Roboto', 'Open Sans', 'Lato', 'Montserrat', 'Source Sans Pro',
92
+ 'Raleway', 'PT Sans', 'Ubuntu', 'Noto Sans', 'Oswald', 'Playfair Display'
93
+ ];
94
+
95
+ const cleanFamily = fontFamily.split(',')[0].replace(/['"]/g, '').trim();
96
+ return googleFonts.includes(cleanFamily);
97
+ }
98
+
99
+ private async loadGoogleFont(family: string, weights: number[], display: string): Promise<void> {
100
+ const cleanFamily = family.split(',')[0].replace(/['"]/g, '').trim();
101
+ const weightsParam = weights.join(',');
102
+
103
+ const link = document.createElement('link');
104
+ link.rel = 'stylesheet';
105
+ link.href = `https://fonts.googleapis.com/css2?family=${cleanFamily.replace(/\s+/g, '+')}:wght@${weightsParam}&display=${display}`;
106
+
107
+ return new Promise((resolve, reject) => {
108
+ link.onload = () => resolve();
109
+ link.onerror = () => reject(new Error(`Failed to load Google Font: ${family}`));
110
+ document.head.appendChild(link);
111
+ });
112
+ }
113
+
114
+ private async loadCustomFontFiles(family: string, files: FontFiles, weights: number[], display: string): Promise<void> {
115
+ const promises: Promise<void>[] = [];
116
+
117
+ weights.forEach(weight => {
118
+ if (files.woff2) {
119
+ promises.push(this.loadFontFace(family, weight, files.woff2, 'woff2', display));
120
+ } else if (files.woff) {
121
+ promises.push(this.loadFontFace(family, weight, files.woff, 'woff', display));
122
+ } else if (files.ttf) {
123
+ promises.push(this.loadFontFace(family, weight, files.ttf, 'truetype', display));
124
+ }
125
+ });
126
+
127
+ await Promise.all(promises);
128
+ }
129
+
130
+ private async loadFontFace(family: string, weight: number, url: string, format: string, display: string): Promise<void> {
131
+ if (typeof document === 'undefined') return;
132
+
133
+ return new Promise((resolve, reject) => {
134
+ const style = document.createElement('style');
135
+ style.textContent = `
136
+ @font-face {
137
+ font-family: '${family}';
138
+ font-weight: ${weight};
139
+ font-display: ${display};
140
+ src: url('${url}') format('${format}');
141
+ }
142
+ `;
143
+
144
+ style.onload = () => resolve();
145
+ style.onerror = () => reject(new Error(`Failed to load font: ${family} ${weight}`));
146
+
147
+ document.head.appendChild(style);
148
+
149
+ // Resolve immediately since CSS loading doesn't have a reliable onload event
150
+ resolve();
151
+ });
152
+ }
153
+
154
+ clearLoadedFonts(): void {
155
+ this.loadedFonts.clear();
156
+ }
157
+
158
+ getLoadedFonts(): string[] {
159
+ return Array.from(this.loadedFonts);
160
+ }
161
+ }
162
+
163
+ export declare const fontLoader: new FontLoader();
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Theme Font Loader
3
+ * Dynamically loads fonts for different themes
4
+ */
5
+
6
+ import { FontThemeConfig, FontFiles } from './types';
7
+
8
+ export class FontLoader {
9
+ private loadedFonts= new Set();
10
+
11
+ /**
12
+ * Load fonts for a theme
13
+ */
14
+ async loadThemeFonts(fonts)] = [];
15
+
16
+ // Load primary font
17
+ fontPromises.push(this.loadFont(fonts.primary));
18
+
19
+ // Load secondary font
20
+ fontPromises.push(this.loadFont(fonts.secondary));
21
+
22
+ // Load display font
23
+ fontPromises.push(this.loadFont(fonts.display));
24
+
25
+ // Load body font
26
+ fontPromises.push(this.loadFont(fonts.body));
27
+
28
+ // Wait for all fonts to load
29
+ await Promise.all(fontPromises);
30
+ }
31
+
32
+ /**
33
+ * Load a single font family
34
+ */
35
+ private async loadFont(fontConfig]), weights, display = 'swap', source } = fontConfig;
36
+
37
+ // Skip if already loaded
38
+ if (this.loadedFonts.has(family)) {
39
+ return;
40
+ }
41
+
42
+ try {
43
+ // Load based on source type
44
+ if (source?.type === 'google') {
45
+ await this.loadGoogleFont(family, weights, display);
46
+ this.loadedFonts.add(family);
47
+ return;
48
+ }
49
+
50
+ if (source?.type === 'custom' && source.files) {
51
+ await this.loadCustomFontFiles(family, source.files, weights, display);
52
+ this.loadedFonts.add(family);
53
+ return;
54
+ }
55
+
56
+ if (source?.type === 'system' || !source) {
57
+ // Check if font is available in the system
58
+ if (await this.isFontAvailable(family)) {
59
+ this.loadedFonts.add(family);
60
+ return;
61
+ }
62
+ }
63
+
64
+ // Fallback)) {
65
+ await this.loadGoogleFont(family, weights, display);
66
+ this.loadedFonts.add(family);
67
+ return;
68
+ }
69
+
70
+ console.warn(`Font ${family} could not be loaded, falling back to system fonts`);
71
+ } catch (error) {
72
+ console.error(`Error loading font ${family}, error);
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Check if a font is available in the system
78
+ */
79
+ private async isFontAvailable(fontFamily)=== 'undefined') return false;
80
+
81
+ // Remove quotes and get the first font family
82
+ const cleanFamily = fontFamily.split(',')[0].replace(/['"]/g, '').trim();
83
+
84
+ return new Promise((resolve) => {
85
+ // Use FontFace API if available
86
+ if ('fonts' in document) {
87
+ const font = new FontFace(cleanFamily, 'normal');
88
+ font.load().then(() => {
89
+ resolve(true);
90
+ }).catch(() => {
91
+ resolve(false);
92
+ });
93
+ } else {
94
+ // For now, assume font is available if FontFace API is not supported
95
+ resolve(true);
96
+ }
97
+ });
98
+ }
99
+
100
+ /**
101
+ * Check if a font is a Google Font
102
+ */
103
+ private isGoogleFont(fontFamily)= [
104
+ 'Poppins', 'Inter', 'Roboto', 'Open Sans', 'Lato', 'Montserrat', 'Source Sans Pro',
105
+ 'Raleway', 'PT Sans', 'Ubuntu', 'Noto Sans', 'Oswald', 'Playfair Display'
106
+ ];
107
+
108
+ const cleanFamily = fontFamily.split(',')[0].replace(/['"]/g, '').trim();
109
+ return googleFonts.includes(cleanFamily);
110
+ }
111
+
112
+ /**
113
+ * Load a Google Font
114
+ */
115
+ private async loadGoogleFont(family, weights], display)= family.split(',')[0].replace(/['"]/g, '').trim();
116
+ const weightsParam = weights.join(',');
117
+
118
+ const link = document.createElement('link');
119
+ link.rel = 'stylesheet';
120
+ link.href = `https=${cleanFamily.replace(/\s+/g, '+')}}&display=${display}`;
121
+
122
+ return new Promise((resolve, reject) => {
123
+ link.onload = () => resolve();
124
+ link.onerror = () => reject(new Error(`Failed to load Google Font}`));
125
+ document.head.appendChild(link);
126
+ });
127
+ }
128
+
129
+ /**
130
+ * Load custom font files using @font-face
131
+ */
132
+ private async loadCustomFontFiles(family, files, weights], display)] = [];
133
+
134
+ weights.forEach(weight => {
135
+ if (files.woff2) {
136
+ promises.push(this.loadFontFace(family, weight, files.woff2, 'woff2', display));
137
+ } else if (files.woff) {
138
+ promises.push(this.loadFontFace(family, weight, files.woff, 'woff', display));
139
+ } else if (files.ttf) {
140
+ promises.push(this.loadFontFace(family, weight, files.ttf, 'truetype', display));
141
+ }
142
+ });
143
+
144
+ await Promise.all(promises);
145
+ }
146
+
147
+ /**
148
+ * Load a single font face using @font-face
149
+ */
150
+ private async loadFontFace(family, weight, url, format, display)=== 'undefined') return;
151
+
152
+ return new Promise((resolve, reject) => {
153
+ const style = document.createElement('style');
154
+ style.textContent = `
155
+ @font-face {
156
+ font-family}';
157
+ font-weight};
158
+ font-display};
159
+ src}') format('${format}');
160
+ }
161
+ `;
162
+
163
+ style.onload = () => resolve();
164
+ style.onerror = () => reject(new Error(`Failed to load font} ${weight}`));
165
+
166
+ document.head.appendChild(style);
167
+
168
+ // Resolve immediately since CSS loading doesn't have a reliable onload event
169
+ resolve();
170
+ });
171
+ }
172
+
173
+
174
+
175
+ /**
176
+ * Clear loaded fonts
177
+ */
178
+ clearLoadedFonts());
179
+ }
180
+
181
+ /**
182
+ * Get list of loaded fonts
183
+ */
184
+ getLoadedFonts()] {
185
+ return Array.from(this.loadedFonts);
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Default font loader instance
191
+ */
192
+ export const fontLoader = new FontLoader();
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Theme Font Loader
3
+ * Dynamically loads fonts for different themes
4
+ */
5
+
6
+ import { FontThemeConfig, FontFiles } from './types';
7
+
8
+ export class FontLoader {
9
+ private loadedFonts= new Set();
10
+
11
+ /**
12
+ * Load fonts for a theme
13
+ */
14
+ async loadThemeFonts(fonts)] = [];
15
+
16
+ // Load primary font
17
+ fontPromises.push(this.loadFont(fonts.primary));
18
+
19
+ // Load secondary font
20
+ fontPromises.push(this.loadFont(fonts.secondary));
21
+
22
+ // Load display font
23
+ fontPromises.push(this.loadFont(fonts.display));
24
+
25
+ // Load body font
26
+ fontPromises.push(this.loadFont(fonts.body));
27
+
28
+ // Wait for all fonts to load
29
+ await Promise.all(fontPromises);
30
+ }
31
+
32
+ /**
33
+ * Load a single font family
34
+ */
35
+ private async loadFont(fontConfig]), weights, display = 'swap', source } = fontConfig;
36
+
37
+ // Skip if already loaded
38
+ if (this.loadedFonts.has(family)) {
39
+ return;
40
+ }
41
+
42
+ try {
43
+ // Load based on source type
44
+ if (source?.type === 'google') {
45
+ await this.loadGoogleFont(family, weights, display);
46
+ this.loadedFonts.add(family);
47
+ return;
48
+ }
49
+
50
+ if (source?.type === 'custom' && source.files) {
51
+ await this.loadCustomFontFiles(family, source.files, weights, display);
52
+ this.loadedFonts.add(family);
53
+ return;
54
+ }
55
+
56
+ if (source?.type === 'system' || !source) {
57
+ // Check if font is available in the system
58
+ if (await this.isFontAvailable(family)) {
59
+ this.loadedFonts.add(family);
60
+ return;
61
+ }
62
+ }
63
+
64
+ // Fallback)) {
65
+ await this.loadGoogleFont(family, weights, display);
66
+ this.loadedFonts.add(family);
67
+ return;
68
+ }
69
+
70
+ console.warn(`Font ${family} could not be loaded, falling back to system fonts`);
71
+ } catch (error) {
72
+ console.error(`Error loading font ${family}, error);
73
+ }
74
+ }
75
+
76
+ /**
77
+ * Check if a font is available in the system
78
+ */
79
+ private async isFontAvailable(fontFamily)=== 'undefined') return false;
80
+
81
+ // Remove quotes and get the first font family
82
+ const cleanFamily = fontFamily.split(',')[0].replace(/['"]/g, '').trim();
83
+
84
+ return new Promise((resolve) => {
85
+ // Use FontFace API if available
86
+ if ('fonts' in document) {
87
+ const font = new FontFace(cleanFamily, 'normal');
88
+ font.load().then(() => {
89
+ resolve(true);
90
+ }).catch(() => {
91
+ resolve(false);
92
+ });
93
+ } else {
94
+ // For now, assume font is available if FontFace API is not supported
95
+ resolve(true);
96
+ }
97
+ });
98
+ }
99
+
100
+ /**
101
+ * Check if a font is a Google Font
102
+ */
103
+ private isGoogleFont(fontFamily)= [
104
+ 'Poppins', 'Inter', 'Roboto', 'Open Sans', 'Lato', 'Montserrat', 'Source Sans Pro',
105
+ 'Raleway', 'PT Sans', 'Ubuntu', 'Noto Sans', 'Oswald', 'Playfair Display'
106
+ ];
107
+
108
+ const cleanFamily = fontFamily.split(',')[0].replace(/['"]/g, '').trim();
109
+ return googleFonts.includes(cleanFamily);
110
+ }
111
+
112
+ /**
113
+ * Load a Google Font
114
+ */
115
+ private async loadGoogleFont(family, weights], display)= family.split(',')[0].replace(/['"]/g, '').trim();
116
+ const weightsParam = weights.join(',');
117
+
118
+ const link = document.createElement('link');
119
+ link.rel = 'stylesheet';
120
+ link.href = `https=${cleanFamily.replace(/\s+/g, '+')}}&display=${display}`;
121
+
122
+ return new Promise((resolve, reject) => {
123
+ link.onload = () => resolve();
124
+ link.onerror = () => reject(new Error(`Failed to load Google Font}`));
125
+ document.head.appendChild(link);
126
+ });
127
+ }
128
+
129
+ /**
130
+ * Load custom font files using @font-face
131
+ */
132
+ private async loadCustomFontFiles(family, files, weights], display)] = [];
133
+
134
+ weights.forEach(weight => {
135
+ if (files.woff2) {
136
+ promises.push(this.loadFontFace(family, weight, files.woff2, 'woff2', display));
137
+ } else if (files.woff) {
138
+ promises.push(this.loadFontFace(family, weight, files.woff, 'woff', display));
139
+ } else if (files.ttf) {
140
+ promises.push(this.loadFontFace(family, weight, files.ttf, 'truetype', display));
141
+ }
142
+ });
143
+
144
+ await Promise.all(promises);
145
+ }
146
+
147
+ /**
148
+ * Load a single font face using @font-face
149
+ */
150
+ private async loadFontFace(family, weight, url, format, display)=== 'undefined') return;
151
+
152
+ return new Promise((resolve, reject) => {
153
+ const style = document.createElement('style');
154
+ style.textContent = `
155
+ @font-face {
156
+ font-family}';
157
+ font-weight};
158
+ font-display};
159
+ src}') format('${format}');
160
+ }
161
+ `;
162
+
163
+ style.onload = () => resolve();
164
+ style.onerror = () => reject(new Error(`Failed to load font} ${weight}`));
165
+
166
+ document.head.appendChild(style);
167
+
168
+ // Resolve immediately since CSS loading doesn't have a reliable onload event
169
+ resolve();
170
+ });
171
+ }
172
+
173
+
174
+
175
+ /**
176
+ * Clear loaded fonts
177
+ */
178
+ clearLoadedFonts());
179
+ }
180
+
181
+ /**
182
+ * Get list of loaded fonts
183
+ */
184
+ getLoadedFonts()] {
185
+ return Array.from(this.loadedFonts);
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Default font loader instance
191
+ */
192
+ export const fontLoader = new FontLoader();