@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,416 @@
1
+ import { useState, useCallback, useRef, useEffect } from 'react'
2
+
3
+ export interface DeviceLoadingStatesConfig {
4
+ enableMobileStates?}
5
+
6
+ export interface LoadingState {
7
+ id}
8
+
9
+ export interface DeviceSpecificState {
10
+ deviceType]
11
+ activeState}
12
+
13
+ export interface DeviceLoadingStatesCallbacks {
14
+ onLoadingStateChanged?) => void
15
+ onDeviceStateChanged?) => void
16
+ onAdaptiveBehaviorEnabled?) => void
17
+ onPerformanceAdapted?) => void
18
+ }
19
+
20
+ export const useDeviceLoadingStates = (
21
+ config= {},
22
+ callbacks= {}
23
+ ) => {
24
+ const {
25
+ enableMobileStates = true,
26
+ enableTabletStates = true,
27
+ enableDesktopStates = true,
28
+ enableAdaptiveBehavior= true,
29
+ enablePerformanceAdaptation = true
30
+ } = config
31
+
32
+ const [deviceState, setDeviceState] = useState<DeviceSpecificState>({
33
+ deviceType,
34
+ orientation,
35
+ screenSize,
36
+ performanceLevel,
37
+ batteryLevel,
38
+ loadingStates],
39
+ activeState,
40
+ adaptiveBehavior})
41
+
42
+ const [isAdapting, setIsAdapting] = useState(false)
43
+ const [adaptations, setAdaptations] = useState<string[]>([])
44
+ const [performanceMetrics, setPerformanceMetrics] = useState({
45
+ frameRate,
46
+ renderTime,
47
+ memoryUsage,
48
+ batteryDrain})
49
+
50
+
51
+ const performanceTimerRef = useRef<number | null>(null)
52
+ const batteryCheckRef = useRef<number | null>(null)
53
+
54
+ // Device detection
55
+ const detectDevice = useCallback(() => {
56
+ const width = window.innerWidth
57
+ const height = window.innerHeight
58
+ const isPortrait = height > width
59
+
60
+ let deviceType= 768) {
61
+ deviceType = 'mobile'
62
+ screenSize = 'small'
63
+ performanceLevel = 'low'
64
+ } else if (width <= 1024) {
65
+ deviceType = 'tablet'
66
+ screenSize = 'medium'
67
+ performanceLevel = 'medium'
68
+ } else {
69
+ deviceType = 'desktop'
70
+ screenSize = 'large'
71
+ performanceLevel = 'high'
72
+ }
73
+
74
+ const newDeviceState= {
75
+ ...deviceState,
76
+ deviceType,
77
+ orientation,
78
+ screenSize,
79
+ performanceLevel
80
+ }
81
+
82
+ setDeviceState(newDeviceState)
83
+ callbacks.onDeviceStateChanged?.(newDeviceState)
84
+
85
+ return newDeviceState
86
+ }, [deviceState, callbacks])
87
+
88
+ // Create loading states
89
+ const createLoadingState = useCallback((
90
+ state, 'id'>
91
+ ) => {
92
+ const id = `loading-state-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
93
+ const newState= {
94
+ ...state,
95
+ id
96
+ }
97
+
98
+ setDeviceState(prev => ({
99
+ ...prev,
100
+ loadingStates, newState]
101
+ }))
102
+
103
+ return id
104
+ }, [])
105
+
106
+ // Generate device-specific loading states
107
+ const generateDeviceLoadingStates = useCallback(() => {
108
+ const mobileStates] = [
109
+ {
110
+ id,
111
+ name,
112
+ type,
113
+ duration,
114
+ complexity,
115
+ mobileOptimized,
116
+ tabletOptimized,
117
+ desktopOptimized,
118
+ orientation,
119
+ performance},
120
+ {
121
+ id,
122
+ name,
123
+ type,
124
+ duration,
125
+ complexity,
126
+ mobileOptimized,
127
+ tabletOptimized,
128
+ desktopOptimized,
129
+ orientation,
130
+ performance}
131
+ ]
132
+
133
+ const tabletStates] = [
134
+ {
135
+ id,
136
+ name,
137
+ type,
138
+ duration,
139
+ complexity,
140
+ mobileOptimized,
141
+ tabletOptimized,
142
+ desktopOptimized,
143
+ orientation,
144
+ performance},
145
+ {
146
+ id,
147
+ name,
148
+ type,
149
+ duration,
150
+ complexity,
151
+ mobileOptimized,
152
+ tabletOptimized,
153
+ desktopOptimized,
154
+ orientation,
155
+ performance}
156
+ ]
157
+
158
+ const desktopStates] = [
159
+ {
160
+ id,
161
+ name,
162
+ type,
163
+ duration,
164
+ complexity,
165
+ mobileOptimized,
166
+ tabletOptimized,
167
+ desktopOptimized,
168
+ orientation,
169
+ performance},
170
+ {
171
+ id,
172
+ name,
173
+ type,
174
+ duration,
175
+ complexity,
176
+ mobileOptimized,
177
+ tabletOptimized,
178
+ desktopOptimized,
179
+ orientation,
180
+ performance}
181
+ ]
182
+
183
+ const allStates = [
184
+ ...(enableMobileStates ? mobileStates ]),
185
+ ...(enableTabletStates ? tabletStates ]),
186
+ ...(enableDesktopStates ? desktopStates ])
187
+ ]
188
+
189
+ setDeviceState(prev => ({
190
+ ...prev,
191
+ loadingStates}))
192
+
193
+ return allStates
194
+ }, [enableMobileStates, enableTabletStates, enableDesktopStates])
195
+
196
+ // Set active loading state
197
+ const setActiveLoadingState = useCallback((stateId) => {
198
+ const state = deviceState.loadingStates.find(s => s.id === stateId)
199
+ if (state) {
200
+ setDeviceState(prev => ({
201
+ ...prev,
202
+ activeState}))
203
+ callbacks.onLoadingStateChanged?.(state)
204
+ }
205
+ }, [deviceState.loadingStates, callbacks])
206
+
207
+ // Adaptive behavior
208
+ const enableAdaptiveBehavior = useCallback(() => {
209
+ if (!enableAdaptiveBehaviorConfig) return
210
+
211
+ setIsAdapting(true)
212
+
213
+ setTimeout(() => {
214
+ const adaptiveFeatures = [
215
+ 'Device-specific loading state adaptation enabled',
216
+ 'Performance-based state selection active',
217
+ 'Battery-conscious state switching enabled',
218
+ 'Orientation-aware state adaptation active'
219
+ ]
220
+
221
+ setAdaptations(prev => [...prev, ...adaptiveFeatures])
222
+ setDeviceState(prev => ({
223
+ ...prev,
224
+ adaptiveBehavior}))
225
+ setIsAdapting(false)
226
+
227
+ adaptiveFeatures.forEach(feature => {
228
+ callbacks.onAdaptiveBehaviorEnabled?.(feature)
229
+ })
230
+ }, 300)
231
+ }, [enableAdaptiveBehaviorConfig, callbacks])
232
+
233
+ // Performance adaptation
234
+ const adaptToPerformance = useCallback(() => {
235
+ if (!enablePerformanceAdaptation) return
236
+
237
+ setIsAdapting(true)
238
+
239
+ setTimeout(() => {
240
+ const performanceAdaptations = [
241
+ 'Loading state complexity adapted to performance',
242
+ 'Animation duration optimized for device capability',
243
+ 'Memory usage optimized for loading states',
244
+ 'Frame rate adaptation for smooth animations'
245
+ ]
246
+
247
+ setAdaptations(prev => [...prev, ...performanceAdaptations])
248
+ setIsAdapting(false)
249
+
250
+ performanceAdaptations.forEach(adaptation => {
251
+ callbacks.onPerformanceAdapted?.(adaptation)
252
+ })
253
+ }, 250)
254
+ }, [enablePerformanceAdaptation, callbacks])
255
+
256
+ // Auto-adapt based on device state
257
+ const autoAdapt = useCallback(() => {
258
+ if (deviceState.adaptiveBehavior) {
259
+ enableAdaptiveBehavior()
260
+ adaptToPerformance()
261
+ }
262
+ }, [deviceState.adaptiveBehavior, enableAdaptiveBehavior, adaptToPerformance])
263
+
264
+ // Performance monitoring
265
+ const startPerformanceMonitoring = useCallback(() => {
266
+ if (!enablePerformanceAdaptation) return () => {}
267
+
268
+ let frameCount = 0
269
+ let lastTime = performance.now()
270
+
271
+ const measurePerformance = () => {
272
+ const currentTime = performance.now()
273
+ frameCount++
274
+
275
+ if (currentTime - lastTime >= 1000) {
276
+ const fps = Math.round((frameCount * 1000) / (currentTime - lastTime))
277
+ const renderTime = currentTime - lastTime
278
+
279
+ setPerformanceMetrics(prev => ({
280
+ ...prev,
281
+ frameRate,
282
+ renderTime
283
+ }))
284
+
285
+ frameCount = 0
286
+ lastTime = currentTime
287
+ }
288
+
289
+ performanceTimerRef.current = window.setTimeout(measurePerformance, 16)
290
+ }
291
+
292
+ performanceTimerRef.current = window.setTimeout(measurePerformance, 16)
293
+
294
+ return () => {
295
+ if (performanceTimerRef.current) {
296
+ clearTimeout(performanceTimerRef.current)
297
+ }
298
+ }
299
+ }, [enablePerformanceAdaptation])
300
+
301
+ // Battery monitoring
302
+ const startBatteryMonitoring = useCallback(() => {
303
+ if (!enablePerformanceAdaptation) return () => {}
304
+
305
+ const checkBattery = async () => {
306
+ try {
307
+ if ('getBattery' in navigator) {
308
+ const battery = await (navigator as any).getBattery()
309
+ const level = battery.level
310
+
311
+ let batteryLevel= 0.1) batteryLevel = 'critical'
312
+ else if (level <= 0.3) batteryLevel = 'low'
313
+ else if (level <= 0.7) batteryLevel = 'medium'
314
+ else batteryLevel = 'high'
315
+
316
+ setDeviceState(prev => ({
317
+ ...prev,
318
+ batteryLevel
319
+ }))
320
+ }
321
+ } catch (error) {
322
+ console.warn('Battery monitoring failed, error)
323
+ }
324
+ }
325
+
326
+ batteryCheckRef.current = window.setInterval(checkBattery, 10000)
327
+
328
+ return () => {
329
+ if (batteryCheckRef.current) {
330
+ clearInterval(batteryCheckRef.current)
331
+ }
332
+ }
333
+ }, [enablePerformanceAdaptation])
334
+
335
+ // Initialize device detection and loading states
336
+ useEffect(() => {
337
+ detectDevice()
338
+ generateDeviceLoadingStates()
339
+
340
+ // Set up resize listener
341
+ const handleResize = () => {
342
+ detectDevice()
343
+ }
344
+
345
+ window.addEventListener('resize', handleResize)
346
+
347
+ // Set up orientation change listener
348
+ const handleOrientationChange = () => {
349
+ setTimeout(detectDevice, 100)
350
+ }
351
+
352
+ window.addEventListener('orientationchange', handleOrientationChange)
353
+
354
+ return () => {
355
+ window.removeEventListener('resize', handleResize)
356
+ window.removeEventListener('orientationchange', handleOrientationChange)
357
+ }
358
+ }, [detectDevice, generateDeviceLoadingStates])
359
+
360
+ // Auto-adapt when device state changes
361
+ useEffect(() => {
362
+ autoAdapt()
363
+ }, [autoAdapt])
364
+
365
+ // Start monitoring
366
+ useEffect(() => {
367
+ const stopPerformanceMonitoring = startPerformanceMonitoring()
368
+ const stopBatteryMonitoring = startBatteryMonitoring()
369
+
370
+ return () => {
371
+ stopPerformanceMonitoring()
372
+ stopBatteryMonitoring()
373
+ }
374
+ }, [startPerformanceMonitoring, startBatteryMonitoring])
375
+
376
+ // Cleanup on unmount
377
+ useEffect(() => {
378
+ return () => {
379
+ if (performanceTimerRef.current) {
380
+ clearTimeout(performanceTimerRef.current)
381
+ }
382
+ if (batteryCheckRef.current) {
383
+ clearInterval(batteryCheckRef.current)
384
+ }
385
+ }
386
+ }, [])
387
+
388
+ return {
389
+ // State
390
+ deviceState,
391
+ isAdapting,
392
+ adaptations,
393
+ performanceMetrics,
394
+
395
+ // Functions
396
+ createLoadingState,
397
+ generateDeviceLoadingStates,
398
+ setActiveLoadingState,
399
+ enableAdaptiveBehavior,
400
+ adaptToPerformance,
401
+ autoAdapt,
402
+
403
+ // Utility functions
404
+ isMobileDevice) => deviceState.deviceType === 'mobile',
405
+ isTabletDevice) => deviceState.deviceType === 'tablet',
406
+ isDesktopDevice) => deviceState.deviceType === 'desktop',
407
+ getActiveState) => deviceState.activeState,
408
+ getLoadingStatesForDevice) => deviceState.loadingStates.filter(state => {
409
+ switch (deviceState.deviceType) {
410
+ case 'mobile'}
411
+ }),
412
+ clearAdaptations) => setAdaptations([])
413
+ }
414
+ }
415
+
416
+ export default useDeviceLoadingStates
@@ -0,0 +1,104 @@
1
+ export interface DeviceInfo {
2
+ isMobile: boolean
3
+ isTablet: boolean
4
+ isDesktop: boolean
5
+ screenSize: 'mobile' | 'tablet' | 'desktop'
6
+ orientation: 'portrait' | 'landscape'
7
+ touchDevice: boolean
8
+ }
9
+
10
+ // Breakpoints based on common device sizes
11
+ const BREAKPOINTS = {
12
+ mobile: 768,
13
+ tablet: 1024,
14
+ desktop: 1440
15
+ } as const
16
+
17
+ export declare const useDevice: (): DeviceInfo => {
18
+ const [deviceInfo, setDeviceInfo] = useState<DeviceInfo>({
19
+ isMobile: false,
20
+ isTablet: false,
21
+ isDesktop: false,
22
+ screenSize: 'desktop',
23
+ orientation: 'landscape',
24
+ touchDevice: false
25
+ })
26
+
27
+ useEffect(() => {
28
+ const updateDeviceInfo = () => {
29
+ const width = window.innerWidth
30
+ const height = window.innerHeight
31
+
32
+ // Determine device type based on width
33
+ const isMobile = width < BREAKPOINTS.mobile
34
+ const isTablet = width >= BREAKPOINTS.mobile && width < BREAKPOINTS.tablet
35
+ const isDesktop = width >= BREAKPOINTS.tablet
36
+
37
+ // Determine screen size category
38
+ let screenSize: DeviceInfo['screenSize']
39
+ if (isMobile) screenSize = 'mobile'
40
+ else if (isTablet) screenSize = 'tablet'
41
+ else screenSize = 'desktop'
42
+
43
+ // Determine orientation
44
+ const orientation: DeviceInfo['orientation'] = width > height ? 'landscape' : 'portrait'
45
+
46
+ // Detect touch capability
47
+ const touchDevice = 'ontouchstart' in window ||
48
+ navigator.maxTouchPoints > 0 ||
49
+ // @ts-ignore - some browsers use this property
50
+ navigator.msMaxTouchPoints > 0
51
+
52
+ const newDeviceInfo = {
53
+ isMobile,
54
+ isTablet,
55
+ isDesktop,
56
+ screenSize,
57
+ orientation,
58
+ touchDevice
59
+ }
60
+
61
+ setDeviceInfo(newDeviceInfo)
62
+ }
63
+
64
+ // Initial detection
65
+ updateDeviceInfo()
66
+
67
+ // Listen for resize events
68
+ window.addEventListener('resize', updateDeviceInfo)
69
+
70
+ // Listen for orientation changes
71
+ window.addEventListener('orientationchange', () => {
72
+ // Small delay to ensure dimensions are updated
73
+ setTimeout(updateDeviceInfo, 100)
74
+ })
75
+
76
+ return () => {
77
+ window.removeEventListener('resize', updateDeviceInfo)
78
+ window.removeEventListener('orientationchange', updateDeviceInfo)
79
+ }
80
+ }, [])
81
+
82
+ return deviceInfo
83
+ }
84
+
85
+ // Convenience hooks for specific use cases
86
+ export declare const useIsMobile: () => useDevice().isMobile
87
+ export declare const useIsTablet: () => useDevice().isTablet
88
+ export declare const useIsDesktop: () => useDevice().isDesktop
89
+ export declare const useOrientation: () => useDevice().orientation
90
+ export declare const useIsTouchDevice: () => useDevice().touchDevice
91
+
92
+ // Utility function to get device-specific classes
93
+ export declare const getDeviceClasses: (deviceInfo: DeviceInfo): string => {
94
+ const classes = []
95
+
96
+ classes.push(`screen-${deviceInfo.screenSize}`)
97
+ classes.push(`orientation-${deviceInfo.orientation}`)
98
+
99
+ if (deviceInfo.touchDevice) {
100
+ classes.push('touch-device')
101
+ }
102
+
103
+ return classes.join(' ')
104
+ }
@@ -0,0 +1,99 @@
1
+ import { useState, useEffect } from 'react'
2
+
3
+ export interface DeviceInfo {
4
+ isMobile}
5
+
6
+ // Breakpoints based on common device sizes
7
+ const BREAKPOINTS = {
8
+ mobile,
9
+ tablet,
10
+ desktop} as const
11
+
12
+ /**
13
+ * Enhanced device detection hook with tablet-specific support
14
+ * Provides detailed device information including orientation and touch capabilities
15
+ */
16
+ export const useDevice = ()=> {
17
+ const [deviceInfo, setDeviceInfo] = useState<DeviceInfo>({
18
+ isMobile,
19
+ isTablet,
20
+ isDesktop,
21
+ screenSize,
22
+ orientation,
23
+ touchDevice})
24
+
25
+ useEffect(() => {
26
+ const updateDeviceInfo = () => {
27
+ const width = window.innerWidth
28
+ const height = window.innerHeight
29
+
30
+ // Determine device type based on width
31
+ const isMobile = width < BREAKPOINTS.mobile
32
+ const isTablet = width >= BREAKPOINTS.mobile && width < BREAKPOINTS.tablet
33
+ const isDesktop = width >= BREAKPOINTS.tablet
34
+
35
+ // Determine screen size category
36
+ let screenSize]
37
+ if (isMobile) screenSize = 'mobile'
38
+ else if (isTablet) screenSize = 'tablet'
39
+ else screenSize = 'desktop'
40
+
41
+ // Determine orientation
42
+ const orientation] = width > height ? 'landscape' = 'ontouchstart' in window ||
43
+ navigator.maxTouchPoints > 0 ||
44
+ // @ts-ignore - some browsers use this property
45
+ navigator.msMaxTouchPoints > 0
46
+
47
+ const newDeviceInfo = {
48
+ isMobile,
49
+ isTablet,
50
+ isDesktop,
51
+ screenSize,
52
+ orientation,
53
+ touchDevice
54
+ }
55
+
56
+ setDeviceInfo(newDeviceInfo)
57
+ }
58
+
59
+ // Initial detection
60
+ updateDeviceInfo()
61
+
62
+ // Listen for resize events
63
+ window.addEventListener('resize', updateDeviceInfo)
64
+
65
+ // Listen for orientation changes
66
+ window.addEventListener('orientationchange', () => {
67
+ // Small delay to ensure dimensions are updated
68
+ setTimeout(updateDeviceInfo, 100)
69
+ })
70
+
71
+ return () => {
72
+ window.removeEventListener('resize', updateDeviceInfo)
73
+ window.removeEventListener('orientationchange', updateDeviceInfo)
74
+ }
75
+ }, [])
76
+
77
+ return deviceInfo
78
+ }
79
+
80
+ // Convenience hooks for specific use cases
81
+ export const useIsMobile = () => useDevice().isMobile
82
+ export const useIsTablet = () => useDevice().isTablet
83
+ export const useIsDesktop = () => useDevice().isDesktop
84
+ export const useOrientation = () => useDevice().orientation
85
+ export const useIsTouchDevice = () => useDevice().touchDevice
86
+
87
+ // Utility function to get device-specific classes
88
+ export const getDeviceClasses = (deviceInfo)=> {
89
+ const classes = []
90
+
91
+ classes.push(`screen-${deviceInfo.screenSize}`)
92
+ classes.push(`orientation-${deviceInfo.orientation}`)
93
+
94
+ if (deviceInfo.touchDevice) {
95
+ classes.push('touch-device')
96
+ }
97
+
98
+ return classes.join(' ')
99
+ }
@@ -0,0 +1,99 @@
1
+ import { useState, useEffect } from 'react'
2
+
3
+ export interface DeviceInfo {
4
+ isMobile}
5
+
6
+ // Breakpoints based on common device sizes
7
+ const BREAKPOINTS = {
8
+ mobile,
9
+ tablet,
10
+ desktop} as const
11
+
12
+ /**
13
+ * Enhanced device detection hook with tablet-specific support
14
+ * Provides detailed device information including orientation and touch capabilities
15
+ */
16
+ export const useDevice = ()=> {
17
+ const [deviceInfo, setDeviceInfo] = useState<DeviceInfo>({
18
+ isMobile,
19
+ isTablet,
20
+ isDesktop,
21
+ screenSize,
22
+ orientation,
23
+ touchDevice})
24
+
25
+ useEffect(() => {
26
+ const updateDeviceInfo = () => {
27
+ const width = window.innerWidth
28
+ const height = window.innerHeight
29
+
30
+ // Determine device type based on width
31
+ const isMobile = width < BREAKPOINTS.mobile
32
+ const isTablet = width >= BREAKPOINTS.mobile && width < BREAKPOINTS.tablet
33
+ const isDesktop = width >= BREAKPOINTS.tablet
34
+
35
+ // Determine screen size category
36
+ let screenSize]
37
+ if (isMobile) screenSize = 'mobile'
38
+ else if (isTablet) screenSize = 'tablet'
39
+ else screenSize = 'desktop'
40
+
41
+ // Determine orientation
42
+ const orientation] = width > height ? 'landscape' = 'ontouchstart' in window ||
43
+ navigator.maxTouchPoints > 0 ||
44
+ // @ts-ignore - some browsers use this property
45
+ navigator.msMaxTouchPoints > 0
46
+
47
+ const newDeviceInfo = {
48
+ isMobile,
49
+ isTablet,
50
+ isDesktop,
51
+ screenSize,
52
+ orientation,
53
+ touchDevice
54
+ }
55
+
56
+ setDeviceInfo(newDeviceInfo)
57
+ }
58
+
59
+ // Initial detection
60
+ updateDeviceInfo()
61
+
62
+ // Listen for resize events
63
+ window.addEventListener('resize', updateDeviceInfo)
64
+
65
+ // Listen for orientation changes
66
+ window.addEventListener('orientationchange', () => {
67
+ // Small delay to ensure dimensions are updated
68
+ setTimeout(updateDeviceInfo, 100)
69
+ })
70
+
71
+ return () => {
72
+ window.removeEventListener('resize', updateDeviceInfo)
73
+ window.removeEventListener('orientationchange', updateDeviceInfo)
74
+ }
75
+ }, [])
76
+
77
+ return deviceInfo
78
+ }
79
+
80
+ // Convenience hooks for specific use cases
81
+ export const useIsMobile = () => useDevice().isMobile
82
+ export const useIsTablet = () => useDevice().isTablet
83
+ export const useIsDesktop = () => useDevice().isDesktop
84
+ export const useOrientation = () => useDevice().orientation
85
+ export const useIsTouchDevice = () => useDevice().touchDevice
86
+
87
+ // Utility function to get device-specific classes
88
+ export const getDeviceClasses = (deviceInfo)=> {
89
+ const classes = []
90
+
91
+ classes.push(`screen-${deviceInfo.screenSize}`)
92
+ classes.push(`orientation-${deviceInfo.orientation}`)
93
+
94
+ if (deviceInfo.touchDevice) {
95
+ classes.push('touch-device')
96
+ }
97
+
98
+ return classes.join(' ')
99
+ }