fluentglass 0.2.6

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 (414) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +169 -0
  3. package/lib/commonjs/assets/fonts/Inter-Black.ttf +0 -0
  4. package/lib/commonjs/assets/fonts/Inter-Bold.ttf +0 -0
  5. package/lib/commonjs/assets/fonts/Inter-ExtraBold.ttf +0 -0
  6. package/lib/commonjs/assets/fonts/Inter-Medium.ttf +0 -0
  7. package/lib/commonjs/assets/fonts/Inter-Regular.ttf +0 -0
  8. package/lib/commonjs/assets/fonts/Inter-SemiBold.ttf +0 -0
  9. package/lib/commonjs/components/FluentGlass.js +94 -0
  10. package/lib/commonjs/components/FluentGlass.js.map +1 -0
  11. package/lib/commonjs/components/FluentGlassAlert.js +126 -0
  12. package/lib/commonjs/components/FluentGlassAlert.js.map +1 -0
  13. package/lib/commonjs/components/FluentGlassBadge.js +124 -0
  14. package/lib/commonjs/components/FluentGlassBadge.js.map +1 -0
  15. package/lib/commonjs/components/FluentGlassBarChart.js +287 -0
  16. package/lib/commonjs/components/FluentGlassBarChart.js.map +1 -0
  17. package/lib/commonjs/components/FluentGlassBreadcrumb.js +155 -0
  18. package/lib/commonjs/components/FluentGlassBreadcrumb.js.map +1 -0
  19. package/lib/commonjs/components/FluentGlassButton.js +175 -0
  20. package/lib/commonjs/components/FluentGlassButton.js.map +1 -0
  21. package/lib/commonjs/components/FluentGlassCalendarWidget.js +73 -0
  22. package/lib/commonjs/components/FluentGlassCalendarWidget.js.map +1 -0
  23. package/lib/commonjs/components/FluentGlassCard.js +195 -0
  24. package/lib/commonjs/components/FluentGlassCard.js.map +1 -0
  25. package/lib/commonjs/components/FluentGlassCheckbox.js +121 -0
  26. package/lib/commonjs/components/FluentGlassCheckbox.js.map +1 -0
  27. package/lib/commonjs/components/FluentGlassClockWidget.js +80 -0
  28. package/lib/commonjs/components/FluentGlassClockWidget.js.map +1 -0
  29. package/lib/commonjs/components/FluentGlassCodeBlock.js +239 -0
  30. package/lib/commonjs/components/FluentGlassCodeBlock.js.map +1 -0
  31. package/lib/commonjs/components/FluentGlassContainer.js +52 -0
  32. package/lib/commonjs/components/FluentGlassContainer.js.map +1 -0
  33. package/lib/commonjs/components/FluentGlassCrossfade.js +118 -0
  34. package/lib/commonjs/components/FluentGlassCrossfade.js.map +1 -0
  35. package/lib/commonjs/components/FluentGlassDateInput.js +176 -0
  36. package/lib/commonjs/components/FluentGlassDateInput.js.map +1 -0
  37. package/lib/commonjs/components/FluentGlassDatePicker.js +271 -0
  38. package/lib/commonjs/components/FluentGlassDatePicker.js.map +1 -0
  39. package/lib/commonjs/components/FluentGlassDialog.js +169 -0
  40. package/lib/commonjs/components/FluentGlassDialog.js.map +1 -0
  41. package/lib/commonjs/components/FluentGlassDock.js +187 -0
  42. package/lib/commonjs/components/FluentGlassDock.js.map +1 -0
  43. package/lib/commonjs/components/FluentGlassDropdown.js +349 -0
  44. package/lib/commonjs/components/FluentGlassDropdown.js.map +1 -0
  45. package/lib/commonjs/components/FluentGlassEmailInput.js +43 -0
  46. package/lib/commonjs/components/FluentGlassEmailInput.js.map +1 -0
  47. package/lib/commonjs/components/FluentGlassInput.js +83 -0
  48. package/lib/commonjs/components/FluentGlassInput.js.map +1 -0
  49. package/lib/commonjs/components/FluentGlassLabeledInput.js +64 -0
  50. package/lib/commonjs/components/FluentGlassLabeledInput.js.map +1 -0
  51. package/lib/commonjs/components/FluentGlassLayout.js +106 -0
  52. package/lib/commonjs/components/FluentGlassLayout.js.map +1 -0
  53. package/lib/commonjs/components/FluentGlassPasswordInput.js +60 -0
  54. package/lib/commonjs/components/FluentGlassPasswordInput.js.map +1 -0
  55. package/lib/commonjs/components/FluentGlassPopover.js +75 -0
  56. package/lib/commonjs/components/FluentGlassPopover.js.map +1 -0
  57. package/lib/commonjs/components/FluentGlassResponsiveRow.js +74 -0
  58. package/lib/commonjs/components/FluentGlassResponsiveRow.js.map +1 -0
  59. package/lib/commonjs/components/FluentGlassScrollArea.js +101 -0
  60. package/lib/commonjs/components/FluentGlassScrollArea.js.map +1 -0
  61. package/lib/commonjs/components/FluentGlassSegmentedControl.js +126 -0
  62. package/lib/commonjs/components/FluentGlassSegmentedControl.js.map +1 -0
  63. package/lib/commonjs/components/FluentGlassSelect.js +155 -0
  64. package/lib/commonjs/components/FluentGlassSelect.js.map +1 -0
  65. package/lib/commonjs/components/FluentGlassSeparator.js +62 -0
  66. package/lib/commonjs/components/FluentGlassSeparator.js.map +1 -0
  67. package/lib/commonjs/components/FluentGlassSheet.js +189 -0
  68. package/lib/commonjs/components/FluentGlassSheet.js.map +1 -0
  69. package/lib/commonjs/components/FluentGlassSidebar.js +358 -0
  70. package/lib/commonjs/components/FluentGlassSidebar.js.map +1 -0
  71. package/lib/commonjs/components/FluentGlassSimpleCard.js +56 -0
  72. package/lib/commonjs/components/FluentGlassSimpleCard.js.map +1 -0
  73. package/lib/commonjs/components/FluentGlassSkeleton.js +52 -0
  74. package/lib/commonjs/components/FluentGlassSkeleton.js.map +1 -0
  75. package/lib/commonjs/components/FluentGlassSlider.js +197 -0
  76. package/lib/commonjs/components/FluentGlassSlider.js.map +1 -0
  77. package/lib/commonjs/components/FluentGlassStatWidget.js +133 -0
  78. package/lib/commonjs/components/FluentGlassStatWidget.js.map +1 -0
  79. package/lib/commonjs/components/FluentGlassStatusIndicator.js +89 -0
  80. package/lib/commonjs/components/FluentGlassStatusIndicator.js.map +1 -0
  81. package/lib/commonjs/components/FluentGlassSwitch.js +126 -0
  82. package/lib/commonjs/components/FluentGlassSwitch.js.map +1 -0
  83. package/lib/commonjs/components/FluentGlassTable.js +163 -0
  84. package/lib/commonjs/components/FluentGlassTable.js.map +1 -0
  85. package/lib/commonjs/components/FluentGlassTag.js +109 -0
  86. package/lib/commonjs/components/FluentGlassTag.js.map +1 -0
  87. package/lib/commonjs/components/FluentGlassTextInput.js +90 -0
  88. package/lib/commonjs/components/FluentGlassTextInput.js.map +1 -0
  89. package/lib/commonjs/components/FluentGlassTimeline.js +334 -0
  90. package/lib/commonjs/components/FluentGlassTimeline.js.map +1 -0
  91. package/lib/commonjs/components/FluentGlassWeatherWidget.js +72 -0
  92. package/lib/commonjs/components/FluentGlassWeatherWidget.js.map +1 -0
  93. package/lib/commonjs/components/index.js +308 -0
  94. package/lib/commonjs/components/index.js.map +1 -0
  95. package/lib/commonjs/fonts.js +33 -0
  96. package/lib/commonjs/fonts.js.map +1 -0
  97. package/lib/commonjs/hooks/useBreakpoint.js +57 -0
  98. package/lib/commonjs/hooks/useBreakpoint.js.map +1 -0
  99. package/lib/commonjs/index.js +462 -0
  100. package/lib/commonjs/index.js.map +1 -0
  101. package/lib/commonjs/package.json +1 -0
  102. package/lib/commonjs/theme/FluentGlassProvider.js +84 -0
  103. package/lib/commonjs/theme/FluentGlassProvider.js.map +1 -0
  104. package/lib/commonjs/theme/defaultTheme.js +55 -0
  105. package/lib/commonjs/theme/defaultTheme.js.map +1 -0
  106. package/lib/commonjs/theme/resolvers.js +118 -0
  107. package/lib/commonjs/theme/resolvers.js.map +1 -0
  108. package/lib/commonjs/theme/tokens.js +239 -0
  109. package/lib/commonjs/theme/tokens.js.map +1 -0
  110. package/lib/commonjs/theme/typography.js +50 -0
  111. package/lib/commonjs/theme/typography.js.map +1 -0
  112. package/lib/commonjs/theme/useTheme.js +22 -0
  113. package/lib/commonjs/theme/useTheme.js.map +1 -0
  114. package/lib/commonjs/types/components.js +6 -0
  115. package/lib/commonjs/types/components.js.map +1 -0
  116. package/lib/commonjs/types/theme.js +6 -0
  117. package/lib/commonjs/types/theme.js.map +1 -0
  118. package/lib/commonjs/utils/colors.js +59 -0
  119. package/lib/commonjs/utils/colors.js.map +1 -0
  120. package/lib/commonjs/utils/responsive.js +126 -0
  121. package/lib/commonjs/utils/responsive.js.map +1 -0
  122. package/lib/module/assets/fonts/Inter-Black.ttf +0 -0
  123. package/lib/module/assets/fonts/Inter-Bold.ttf +0 -0
  124. package/lib/module/assets/fonts/Inter-ExtraBold.ttf +0 -0
  125. package/lib/module/assets/fonts/Inter-Medium.ttf +0 -0
  126. package/lib/module/assets/fonts/Inter-Regular.ttf +0 -0
  127. package/lib/module/assets/fonts/Inter-SemiBold.ttf +0 -0
  128. package/lib/module/components/FluentGlass.js +89 -0
  129. package/lib/module/components/FluentGlass.js.map +1 -0
  130. package/lib/module/components/FluentGlassAlert.js +121 -0
  131. package/lib/module/components/FluentGlassAlert.js.map +1 -0
  132. package/lib/module/components/FluentGlassBadge.js +119 -0
  133. package/lib/module/components/FluentGlassBadge.js.map +1 -0
  134. package/lib/module/components/FluentGlassBarChart.js +281 -0
  135. package/lib/module/components/FluentGlassBarChart.js.map +1 -0
  136. package/lib/module/components/FluentGlassBreadcrumb.js +150 -0
  137. package/lib/module/components/FluentGlassBreadcrumb.js.map +1 -0
  138. package/lib/module/components/FluentGlassButton.js +169 -0
  139. package/lib/module/components/FluentGlassButton.js.map +1 -0
  140. package/lib/module/components/FluentGlassCalendarWidget.js +68 -0
  141. package/lib/module/components/FluentGlassCalendarWidget.js.map +1 -0
  142. package/lib/module/components/FluentGlassCard.js +190 -0
  143. package/lib/module/components/FluentGlassCard.js.map +1 -0
  144. package/lib/module/components/FluentGlassCheckbox.js +115 -0
  145. package/lib/module/components/FluentGlassCheckbox.js.map +1 -0
  146. package/lib/module/components/FluentGlassClockWidget.js +74 -0
  147. package/lib/module/components/FluentGlassClockWidget.js.map +1 -0
  148. package/lib/module/components/FluentGlassCodeBlock.js +233 -0
  149. package/lib/module/components/FluentGlassCodeBlock.js.map +1 -0
  150. package/lib/module/components/FluentGlassContainer.js +47 -0
  151. package/lib/module/components/FluentGlassContainer.js.map +1 -0
  152. package/lib/module/components/FluentGlassCrossfade.js +112 -0
  153. package/lib/module/components/FluentGlassCrossfade.js.map +1 -0
  154. package/lib/module/components/FluentGlassDateInput.js +170 -0
  155. package/lib/module/components/FluentGlassDateInput.js.map +1 -0
  156. package/lib/module/components/FluentGlassDatePicker.js +265 -0
  157. package/lib/module/components/FluentGlassDatePicker.js.map +1 -0
  158. package/lib/module/components/FluentGlassDialog.js +163 -0
  159. package/lib/module/components/FluentGlassDialog.js.map +1 -0
  160. package/lib/module/components/FluentGlassDock.js +181 -0
  161. package/lib/module/components/FluentGlassDock.js.map +1 -0
  162. package/lib/module/components/FluentGlassDropdown.js +343 -0
  163. package/lib/module/components/FluentGlassDropdown.js.map +1 -0
  164. package/lib/module/components/FluentGlassEmailInput.js +38 -0
  165. package/lib/module/components/FluentGlassEmailInput.js.map +1 -0
  166. package/lib/module/components/FluentGlassInput.js +78 -0
  167. package/lib/module/components/FluentGlassInput.js.map +1 -0
  168. package/lib/module/components/FluentGlassLabeledInput.js +59 -0
  169. package/lib/module/components/FluentGlassLabeledInput.js.map +1 -0
  170. package/lib/module/components/FluentGlassLayout.js +101 -0
  171. package/lib/module/components/FluentGlassLayout.js.map +1 -0
  172. package/lib/module/components/FluentGlassPasswordInput.js +54 -0
  173. package/lib/module/components/FluentGlassPasswordInput.js.map +1 -0
  174. package/lib/module/components/FluentGlassPopover.js +70 -0
  175. package/lib/module/components/FluentGlassPopover.js.map +1 -0
  176. package/lib/module/components/FluentGlassResponsiveRow.js +71 -0
  177. package/lib/module/components/FluentGlassResponsiveRow.js.map +1 -0
  178. package/lib/module/components/FluentGlassScrollArea.js +95 -0
  179. package/lib/module/components/FluentGlassScrollArea.js.map +1 -0
  180. package/lib/module/components/FluentGlassSegmentedControl.js +120 -0
  181. package/lib/module/components/FluentGlassSegmentedControl.js.map +1 -0
  182. package/lib/module/components/FluentGlassSelect.js +149 -0
  183. package/lib/module/components/FluentGlassSelect.js.map +1 -0
  184. package/lib/module/components/FluentGlassSeparator.js +57 -0
  185. package/lib/module/components/FluentGlassSeparator.js.map +1 -0
  186. package/lib/module/components/FluentGlassSheet.js +183 -0
  187. package/lib/module/components/FluentGlassSheet.js.map +1 -0
  188. package/lib/module/components/FluentGlassSidebar.js +351 -0
  189. package/lib/module/components/FluentGlassSidebar.js.map +1 -0
  190. package/lib/module/components/FluentGlassSimpleCard.js +51 -0
  191. package/lib/module/components/FluentGlassSimpleCard.js.map +1 -0
  192. package/lib/module/components/FluentGlassSkeleton.js +46 -0
  193. package/lib/module/components/FluentGlassSkeleton.js.map +1 -0
  194. package/lib/module/components/FluentGlassSlider.js +191 -0
  195. package/lib/module/components/FluentGlassSlider.js.map +1 -0
  196. package/lib/module/components/FluentGlassStatWidget.js +128 -0
  197. package/lib/module/components/FluentGlassStatWidget.js.map +1 -0
  198. package/lib/module/components/FluentGlassStatusIndicator.js +84 -0
  199. package/lib/module/components/FluentGlassStatusIndicator.js.map +1 -0
  200. package/lib/module/components/FluentGlassSwitch.js +122 -0
  201. package/lib/module/components/FluentGlassSwitch.js.map +1 -0
  202. package/lib/module/components/FluentGlassTable.js +158 -0
  203. package/lib/module/components/FluentGlassTable.js.map +1 -0
  204. package/lib/module/components/FluentGlassTag.js +103 -0
  205. package/lib/module/components/FluentGlassTag.js.map +1 -0
  206. package/lib/module/components/FluentGlassTextInput.js +85 -0
  207. package/lib/module/components/FluentGlassTextInput.js.map +1 -0
  208. package/lib/module/components/FluentGlassTimeline.js +327 -0
  209. package/lib/module/components/FluentGlassTimeline.js.map +1 -0
  210. package/lib/module/components/FluentGlassWeatherWidget.js +67 -0
  211. package/lib/module/components/FluentGlassWeatherWidget.js.map +1 -0
  212. package/lib/module/components/index.js +45 -0
  213. package/lib/module/components/index.js.map +1 -0
  214. package/lib/module/fonts.js +26 -0
  215. package/lib/module/fonts.js.map +1 -0
  216. package/lib/module/hooks/useBreakpoint.js +54 -0
  217. package/lib/module/hooks/useBreakpoint.js.map +1 -0
  218. package/lib/module/index.js +30 -0
  219. package/lib/module/index.js.map +1 -0
  220. package/lib/module/theme/FluentGlassProvider.js +77 -0
  221. package/lib/module/theme/FluentGlassProvider.js.map +1 -0
  222. package/lib/module/theme/defaultTheme.js +51 -0
  223. package/lib/module/theme/defaultTheme.js.map +1 -0
  224. package/lib/module/theme/resolvers.js +110 -0
  225. package/lib/module/theme/resolvers.js.map +1 -0
  226. package/lib/module/theme/tokens.js +235 -0
  227. package/lib/module/theme/tokens.js.map +1 -0
  228. package/lib/module/theme/typography.js +45 -0
  229. package/lib/module/theme/typography.js.map +1 -0
  230. package/lib/module/theme/useTheme.js +18 -0
  231. package/lib/module/theme/useTheme.js.map +1 -0
  232. package/lib/module/types/components.js +4 -0
  233. package/lib/module/types/components.js.map +1 -0
  234. package/lib/module/types/theme.js +4 -0
  235. package/lib/module/types/theme.js.map +1 -0
  236. package/lib/module/utils/colors.js +55 -0
  237. package/lib/module/utils/colors.js.map +1 -0
  238. package/lib/module/utils/responsive.js +116 -0
  239. package/lib/module/utils/responsive.js.map +1 -0
  240. package/lib/typescript/components/FluentGlass.d.ts +25 -0
  241. package/lib/typescript/components/FluentGlass.d.ts.map +1 -0
  242. package/lib/typescript/components/FluentGlassAlert.d.ts +13 -0
  243. package/lib/typescript/components/FluentGlassAlert.d.ts.map +1 -0
  244. package/lib/typescript/components/FluentGlassBadge.d.ts +22 -0
  245. package/lib/typescript/components/FluentGlassBadge.d.ts.map +1 -0
  246. package/lib/typescript/components/FluentGlassBarChart.d.ts +30 -0
  247. package/lib/typescript/components/FluentGlassBarChart.d.ts.map +1 -0
  248. package/lib/typescript/components/FluentGlassBreadcrumb.d.ts +22 -0
  249. package/lib/typescript/components/FluentGlassBreadcrumb.d.ts.map +1 -0
  250. package/lib/typescript/components/FluentGlassButton.d.ts +27 -0
  251. package/lib/typescript/components/FluentGlassButton.d.ts.map +1 -0
  252. package/lib/typescript/components/FluentGlassCalendarWidget.d.ts +13 -0
  253. package/lib/typescript/components/FluentGlassCalendarWidget.d.ts.map +1 -0
  254. package/lib/typescript/components/FluentGlassCard.d.ts +30 -0
  255. package/lib/typescript/components/FluentGlassCard.d.ts.map +1 -0
  256. package/lib/typescript/components/FluentGlassCheckbox.d.ts +14 -0
  257. package/lib/typescript/components/FluentGlassCheckbox.d.ts.map +1 -0
  258. package/lib/typescript/components/FluentGlassClockWidget.d.ts +11 -0
  259. package/lib/typescript/components/FluentGlassClockWidget.d.ts.map +1 -0
  260. package/lib/typescript/components/FluentGlassCodeBlock.d.ts +11 -0
  261. package/lib/typescript/components/FluentGlassCodeBlock.d.ts.map +1 -0
  262. package/lib/typescript/components/FluentGlassContainer.d.ts +22 -0
  263. package/lib/typescript/components/FluentGlassContainer.d.ts.map +1 -0
  264. package/lib/typescript/components/FluentGlassCrossfade.d.ts +24 -0
  265. package/lib/typescript/components/FluentGlassCrossfade.d.ts.map +1 -0
  266. package/lib/typescript/components/FluentGlassDateInput.d.ts +18 -0
  267. package/lib/typescript/components/FluentGlassDateInput.d.ts.map +1 -0
  268. package/lib/typescript/components/FluentGlassDatePicker.d.ts +9 -0
  269. package/lib/typescript/components/FluentGlassDatePicker.d.ts.map +1 -0
  270. package/lib/typescript/components/FluentGlassDialog.d.ts +18 -0
  271. package/lib/typescript/components/FluentGlassDialog.d.ts.map +1 -0
  272. package/lib/typescript/components/FluentGlassDock.d.ts +19 -0
  273. package/lib/typescript/components/FluentGlassDock.d.ts.map +1 -0
  274. package/lib/typescript/components/FluentGlassDropdown.d.ts +23 -0
  275. package/lib/typescript/components/FluentGlassDropdown.d.ts.map +1 -0
  276. package/lib/typescript/components/FluentGlassEmailInput.d.ts +17 -0
  277. package/lib/typescript/components/FluentGlassEmailInput.d.ts.map +1 -0
  278. package/lib/typescript/components/FluentGlassInput.d.ts +12 -0
  279. package/lib/typescript/components/FluentGlassInput.d.ts.map +1 -0
  280. package/lib/typescript/components/FluentGlassLabeledInput.d.ts +19 -0
  281. package/lib/typescript/components/FluentGlassLabeledInput.d.ts.map +1 -0
  282. package/lib/typescript/components/FluentGlassLayout.d.ts +11 -0
  283. package/lib/typescript/components/FluentGlassLayout.d.ts.map +1 -0
  284. package/lib/typescript/components/FluentGlassPasswordInput.d.ts +15 -0
  285. package/lib/typescript/components/FluentGlassPasswordInput.d.ts.map +1 -0
  286. package/lib/typescript/components/FluentGlassPopover.d.ts +17 -0
  287. package/lib/typescript/components/FluentGlassPopover.d.ts.map +1 -0
  288. package/lib/typescript/components/FluentGlassResponsiveRow.d.ts +25 -0
  289. package/lib/typescript/components/FluentGlassResponsiveRow.d.ts.map +1 -0
  290. package/lib/typescript/components/FluentGlassScrollArea.d.ts +16 -0
  291. package/lib/typescript/components/FluentGlassScrollArea.d.ts.map +1 -0
  292. package/lib/typescript/components/FluentGlassSegmentedControl.d.ts +15 -0
  293. package/lib/typescript/components/FluentGlassSegmentedControl.d.ts.map +1 -0
  294. package/lib/typescript/components/FluentGlassSelect.d.ts +23 -0
  295. package/lib/typescript/components/FluentGlassSelect.d.ts.map +1 -0
  296. package/lib/typescript/components/FluentGlassSeparator.d.ts +13 -0
  297. package/lib/typescript/components/FluentGlassSeparator.d.ts.map +1 -0
  298. package/lib/typescript/components/FluentGlassSheet.d.ts +11 -0
  299. package/lib/typescript/components/FluentGlassSheet.d.ts.map +1 -0
  300. package/lib/typescript/components/FluentGlassSidebar.d.ts +44 -0
  301. package/lib/typescript/components/FluentGlassSidebar.d.ts.map +1 -0
  302. package/lib/typescript/components/FluentGlassSimpleCard.d.ts +19 -0
  303. package/lib/typescript/components/FluentGlassSimpleCard.d.ts.map +1 -0
  304. package/lib/typescript/components/FluentGlassSkeleton.d.ts +14 -0
  305. package/lib/typescript/components/FluentGlassSkeleton.d.ts.map +1 -0
  306. package/lib/typescript/components/FluentGlassSlider.d.ts +31 -0
  307. package/lib/typescript/components/FluentGlassSlider.d.ts.map +1 -0
  308. package/lib/typescript/components/FluentGlassStatWidget.d.ts +17 -0
  309. package/lib/typescript/components/FluentGlassStatWidget.d.ts.map +1 -0
  310. package/lib/typescript/components/FluentGlassStatusIndicator.d.ts +16 -0
  311. package/lib/typescript/components/FluentGlassStatusIndicator.d.ts.map +1 -0
  312. package/lib/typescript/components/FluentGlassSwitch.d.ts +13 -0
  313. package/lib/typescript/components/FluentGlassSwitch.d.ts.map +1 -0
  314. package/lib/typescript/components/FluentGlassTable.d.ts +50 -0
  315. package/lib/typescript/components/FluentGlassTable.d.ts.map +1 -0
  316. package/lib/typescript/components/FluentGlassTag.d.ts +18 -0
  317. package/lib/typescript/components/FluentGlassTag.d.ts.map +1 -0
  318. package/lib/typescript/components/FluentGlassTextInput.d.ts +21 -0
  319. package/lib/typescript/components/FluentGlassTextInput.d.ts.map +1 -0
  320. package/lib/typescript/components/FluentGlassTimeline.d.ts +27 -0
  321. package/lib/typescript/components/FluentGlassTimeline.d.ts.map +1 -0
  322. package/lib/typescript/components/FluentGlassWeatherWidget.d.ts +13 -0
  323. package/lib/typescript/components/FluentGlassWeatherWidget.d.ts.map +1 -0
  324. package/lib/typescript/components/index.d.ts +43 -0
  325. package/lib/typescript/components/index.d.ts.map +1 -0
  326. package/lib/typescript/fonts.d.ts +13 -0
  327. package/lib/typescript/fonts.d.ts.map +1 -0
  328. package/lib/typescript/hooks/useBreakpoint.d.ts +26 -0
  329. package/lib/typescript/hooks/useBreakpoint.d.ts.map +1 -0
  330. package/lib/typescript/index.d.ts +18 -0
  331. package/lib/typescript/index.d.ts.map +1 -0
  332. package/lib/typescript/theme/FluentGlassProvider.d.ts +21 -0
  333. package/lib/typescript/theme/FluentGlassProvider.d.ts.map +1 -0
  334. package/lib/typescript/theme/defaultTheme.d.ts +10 -0
  335. package/lib/typescript/theme/defaultTheme.d.ts.map +1 -0
  336. package/lib/typescript/theme/resolvers.d.ts +55 -0
  337. package/lib/typescript/theme/resolvers.d.ts.map +1 -0
  338. package/lib/typescript/theme/tokens.d.ts +27 -0
  339. package/lib/typescript/theme/tokens.d.ts.map +1 -0
  340. package/lib/typescript/theme/typography.d.ts +27 -0
  341. package/lib/typescript/theme/typography.d.ts.map +1 -0
  342. package/lib/typescript/theme/useTheme.d.ts +12 -0
  343. package/lib/typescript/theme/useTheme.d.ts.map +1 -0
  344. package/lib/typescript/types/components.d.ts +32 -0
  345. package/lib/typescript/types/components.d.ts.map +1 -0
  346. package/lib/typescript/types/theme.d.ts +79 -0
  347. package/lib/typescript/types/theme.d.ts.map +1 -0
  348. package/lib/typescript/utils/colors.d.ts +3 -0
  349. package/lib/typescript/utils/colors.d.ts.map +1 -0
  350. package/lib/typescript/utils/responsive.d.ts +62 -0
  351. package/lib/typescript/utils/responsive.d.ts.map +1 -0
  352. package/package.json +90 -0
  353. package/src/assets/fonts/Inter-Black.ttf +0 -0
  354. package/src/assets/fonts/Inter-Bold.ttf +0 -0
  355. package/src/assets/fonts/Inter-ExtraBold.ttf +0 -0
  356. package/src/assets/fonts/Inter-Medium.ttf +0 -0
  357. package/src/assets/fonts/Inter-Regular.ttf +0 -0
  358. package/src/assets/fonts/Inter-SemiBold.ttf +0 -0
  359. package/src/components/FluentGlass.tsx +103 -0
  360. package/src/components/FluentGlassAlert.tsx +126 -0
  361. package/src/components/FluentGlassBadge.tsx +109 -0
  362. package/src/components/FluentGlassBarChart.tsx +295 -0
  363. package/src/components/FluentGlassBreadcrumb.tsx +173 -0
  364. package/src/components/FluentGlassButton.tsx +169 -0
  365. package/src/components/FluentGlassCalendarWidget.tsx +55 -0
  366. package/src/components/FluentGlassCard.tsx +186 -0
  367. package/src/components/FluentGlassCheckbox.tsx +138 -0
  368. package/src/components/FluentGlassClockWidget.tsx +61 -0
  369. package/src/components/FluentGlassCodeBlock.tsx +241 -0
  370. package/src/components/FluentGlassContainer.tsx +63 -0
  371. package/src/components/FluentGlassCrossfade.tsx +122 -0
  372. package/src/components/FluentGlassDateInput.tsx +182 -0
  373. package/src/components/FluentGlassDatePicker.tsx +224 -0
  374. package/src/components/FluentGlassDialog.tsx +153 -0
  375. package/src/components/FluentGlassDock.tsx +194 -0
  376. package/src/components/FluentGlassDropdown.tsx +382 -0
  377. package/src/components/FluentGlassEmailInput.tsx +46 -0
  378. package/src/components/FluentGlassInput.tsx +77 -0
  379. package/src/components/FluentGlassLabeledInput.tsx +63 -0
  380. package/src/components/FluentGlassLayout.tsx +89 -0
  381. package/src/components/FluentGlassPasswordInput.tsx +59 -0
  382. package/src/components/FluentGlassPopover.tsx +74 -0
  383. package/src/components/FluentGlassResponsiveRow.tsx +76 -0
  384. package/src/components/FluentGlassScrollArea.tsx +110 -0
  385. package/src/components/FluentGlassSegmentedControl.tsx +140 -0
  386. package/src/components/FluentGlassSelect.tsx +139 -0
  387. package/src/components/FluentGlassSeparator.tsx +54 -0
  388. package/src/components/FluentGlassSheet.tsx +183 -0
  389. package/src/components/FluentGlassSidebar.tsx +349 -0
  390. package/src/components/FluentGlassSimpleCard.tsx +59 -0
  391. package/src/components/FluentGlassSkeleton.tsx +69 -0
  392. package/src/components/FluentGlassSlider.tsx +202 -0
  393. package/src/components/FluentGlassStatWidget.tsx +107 -0
  394. package/src/components/FluentGlassStatusIndicator.tsx +82 -0
  395. package/src/components/FluentGlassSwitch.tsx +130 -0
  396. package/src/components/FluentGlassTable.tsx +145 -0
  397. package/src/components/FluentGlassTag.tsx +98 -0
  398. package/src/components/FluentGlassTextInput.tsx +87 -0
  399. package/src/components/FluentGlassTimeline.tsx +335 -0
  400. package/src/components/FluentGlassWeatherWidget.tsx +54 -0
  401. package/src/components/index.ts +42 -0
  402. package/src/fonts.ts +24 -0
  403. package/src/hooks/useBreakpoint.ts +55 -0
  404. package/src/index.ts +97 -0
  405. package/src/theme/FluentGlassProvider.tsx +82 -0
  406. package/src/theme/defaultTheme.ts +44 -0
  407. package/src/theme/resolvers.ts +115 -0
  408. package/src/theme/tokens.ts +200 -0
  409. package/src/theme/typography.ts +41 -0
  410. package/src/theme/useTheme.ts +17 -0
  411. package/src/types/components.ts +47 -0
  412. package/src/types/theme.ts +82 -0
  413. package/src/utils/colors.ts +55 -0
  414. package/src/utils/responsive.ts +110 -0
@@ -0,0 +1,335 @@
1
+ import React from 'react';
2
+ // Removed static COLORS import
3
+ import { StyleSheet, View, Text } from 'react-native';
4
+ import Animated, {
5
+ useSharedValue,
6
+ useAnimatedStyle,
7
+ withSpring,
8
+ withRepeat,
9
+ withTiming,
10
+ } from 'react-native-reanimated';
11
+ import FluentGlass from './FluentGlass';
12
+ import useTheme from '../theme/useTheme';
13
+
14
+ /**
15
+ * FluentGlassTimeline (Component)
16
+ * Glassmorphism timeline with vertical and horizontal variants.
17
+ *
18
+ * Props:
19
+ * items - Array of { title, description, date, status, icon }
20
+ * status: 'completed' | 'active' | 'pending'
21
+ * variant - 'vertical' | 'horizontal' (default: 'vertical')
22
+ * style - Container style override
23
+ * style - Container style override
24
+ */
25
+ import { ViewStyle, StyleProp } from 'react-native';
26
+ import { ThemeColors, ThemeTypography } from '../types/theme';
27
+
28
+ export interface TimelineItem {
29
+ title: string;
30
+ description?: string;
31
+ date?: string;
32
+ status: 'completed' | 'active' | 'pending';
33
+ icon?: string | React.ReactNode;
34
+ }
35
+
36
+ export interface FluentGlassTimelineProps {
37
+ items?: TimelineItem[];
38
+ variant?: 'vertical' | 'horizontal';
39
+ style?: StyleProp<ViewStyle>;
40
+ }
41
+
42
+ // ─── Indicator Circle ───
43
+ function TimelineIndicator({ status, size = 32, colors }: { status: string, size?: number, colors: ThemeColors }) {
44
+ const pulseScale = useSharedValue(1);
45
+
46
+ React.useEffect(() => {
47
+ if (status === 'active') {
48
+ pulseScale.value = withRepeat(
49
+ withTiming(1.15, { duration: 1200 }),
50
+ -1,
51
+ true
52
+ );
53
+ } else {
54
+ pulseScale.value = withSpring(1);
55
+ }
56
+ }, [status]);
57
+
58
+ const pulseStyle = useAnimatedStyle(() => ({
59
+ transform: [{ scale: pulseScale.value }],
60
+ }));
61
+
62
+ const isCompleted = status === 'completed';
63
+ const isActive = status === 'active';
64
+ const isPending = status === 'pending';
65
+
66
+ return (
67
+ <Animated.View style={pulseStyle}>
68
+ <View
69
+ style={[
70
+ styles.indicator,
71
+ {
72
+ width: size,
73
+ height: size,
74
+ borderRadius: size / 2,
75
+ borderColor: isCompleted || isActive ? colors.accent : (isPending ? `${colors.textSecondary}4D` : colors.border),
76
+ backgroundColor: isCompleted ? colors.accent : (isActive ? `${colors.secondary}26` : (isPending ? `${colors.textSecondary}1A` : 'transparent'))
77
+ },
78
+ ]}
79
+ >
80
+ {isCompleted ? (
81
+ <Text style={[styles.checkmark, { color: colors.background }]}>✓</Text>
82
+ ) : (
83
+ <View
84
+ style={[
85
+ styles.innerDot,
86
+ {
87
+ width: size * 0.35,
88
+ height: size * 0.35,
89
+ borderRadius: (size * 0.35) / 2,
90
+ backgroundColor: isActive ? colors.accent : (isPending ? `${colors.textSecondary}4D` : 'transparent')
91
+ },
92
+ ]}
93
+ />
94
+ )}
95
+ </View>
96
+ </Animated.View>
97
+ );
98
+ }
99
+
100
+ // ─── Connecting Line ───
101
+ function TimelineLine({ status, direction = 'vertical', colors }: { status: string, direction?: 'vertical' | 'horizontal', colors: ThemeColors }) {
102
+ const isCompleted = status === 'completed';
103
+ const isVertical = direction === 'vertical';
104
+
105
+ return (
106
+ <View
107
+ style={[
108
+ isVertical ? styles.lineVertical : styles.lineHorizontal,
109
+ { backgroundColor: isCompleted ? colors.accent : `${colors.textSecondary}26` }
110
+ ]}
111
+ />
112
+ );
113
+ }
114
+
115
+ // ─── Vertical Timeline ───
116
+ function VerticalTimeline({ items, style, colors, typography }: { items: TimelineItem[], style?: StyleProp<ViewStyle>, colors: ThemeColors, typography: ThemeTypography }) {
117
+ return (
118
+ <View style={[styles.verticalContainer, style]}>
119
+ {items.map((item, index) => {
120
+ const isLast = index === items.length - 1;
121
+ const isActive = item.status === 'active';
122
+
123
+ return (
124
+ <View key={index} style={styles.verticalItem}>
125
+ {/* Left: Indicator + Line */}
126
+ <View style={styles.verticalLeft}>
127
+ <TimelineIndicator status={item.status} size={36} colors={colors} />
128
+ {!isLast ? (
129
+ <TimelineLine
130
+ status={item.status}
131
+ direction="vertical"
132
+ colors={colors}
133
+ />
134
+ ) : null}
135
+ </View>
136
+
137
+ {/* Right: Card */}
138
+ <View style={styles.verticalRight}>
139
+ <FluentGlass
140
+ style={[
141
+ styles.verticalCard,
142
+ isActive && { borderColor: colors.accent }
143
+ ]}
144
+ intensity={isActive ? 25 : 15}
145
+ tint={isActive ? 'default' : 'dark'}
146
+ borderRadius={14}
147
+ borderOpacity={isActive ? 0.35 : 0.15}
148
+ >
149
+ <View style={styles.cardContent}>
150
+ <View style={styles.cardHeader}>
151
+ <Text
152
+ style={[
153
+ styles.cardTitle,
154
+ { fontFamily: typography.bold, color: item.status === 'pending' ? colors.textSecondary : colors.textPrimary }
155
+ ]}
156
+ >
157
+ {item.title}
158
+ </Text>
159
+ {item.date ? (
160
+ <Text style={[styles.cardDate, { fontFamily: typography.medium, color: colors.textSecondary }]}>
161
+ {item.date}
162
+ </Text>
163
+ ) : null}
164
+ </View>
165
+ {item.description ? (
166
+ <Text style={[styles.cardDescription, { color: colors.textSecondary }]}>
167
+ {item.description}
168
+ </Text>
169
+ ) : null}
170
+ </View>
171
+ </FluentGlass>
172
+ </View>
173
+ </View>
174
+ );
175
+ })}
176
+ </View>
177
+ );
178
+ }
179
+
180
+ // ─── Horizontal Timeline ───
181
+ function HorizontalTimeline({ items, style, colors, typography }: { items: TimelineItem[], style?: StyleProp<ViewStyle>, colors: ThemeColors, typography: ThemeTypography }) {
182
+ return (
183
+ <View style={[styles.horizontalContainer, style]}>
184
+ {items.map((item, index) => {
185
+ const isLast = index === items.length - 1;
186
+
187
+ return (
188
+ <View key={index} style={styles.horizontalItem}>
189
+ {/* Top: Indicator + Line */}
190
+ <View style={styles.horizontalTop}>
191
+ <TimelineIndicator status={item.status} size={40} colors={colors} />
192
+ {!isLast ? (
193
+ <TimelineLine
194
+ status={item.status}
195
+ direction="horizontal"
196
+ colors={colors}
197
+ />
198
+ ) : null}
199
+ </View>
200
+
201
+ {/* Bottom: Labels */}
202
+ <View style={styles.horizontalLabels}>
203
+ <Text
204
+ style={[
205
+ styles.horizontalTitle,
206
+ { fontFamily: typography.semiBold, color: item.status === 'pending' ? colors.textSecondary : colors.textPrimary }
207
+ ]}
208
+ numberOfLines={1}
209
+ >
210
+ {item.title}
211
+ </Text>
212
+ {item.description ? (
213
+ <Text
214
+ style={[styles.horizontalSubtitle, { color: colors.textSecondary }]}
215
+ numberOfLines={1}
216
+ >
217
+ {item.description}
218
+ </Text>
219
+ ) : null}
220
+ </View>
221
+ </View>
222
+ );
223
+ })}
224
+ </View>
225
+ );
226
+ }
227
+
228
+ // ─── Main Export ───
229
+ export default function FluentGlassTimeline({
230
+ items = [],
231
+ variant = 'vertical',
232
+ style,
233
+ }: FluentGlassTimelineProps) {
234
+ const { colors, typography } = useTheme();
235
+
236
+ // Pass colors down through context or cloning isn't great.
237
+ // We will wrap the children with the theme context implicitly since these are small components
238
+ // inside the same file, let's pass `colors` as a prop to internal helpers.
239
+ if (variant === 'horizontal') {
240
+ return <View accessible={true} accessibilityLabel="Timeline"><HorizontalTimeline items={items} style={style} colors={colors} typography={typography} /></View>;
241
+ }
242
+ return <View accessible={true} accessibilityLabel="Timeline"><VerticalTimeline items={items} style={style} colors={colors} typography={typography} /></View>;
243
+ }
244
+
245
+ // ─── Styles ───
246
+ const styles = StyleSheet.create({
247
+ // Indicator
248
+ indicator: {
249
+ alignItems: 'center',
250
+ justifyContent: 'center',
251
+ borderWidth: 2,
252
+ },
253
+ checkmark: {
254
+ fontSize: 16,
255
+ },
256
+ innerDot: {},
257
+ lineVertical: {
258
+ width: 2,
259
+ flex: 1,
260
+ marginVertical: 4,
261
+ },
262
+ lineHorizontal: {
263
+ height: 2,
264
+ flex: 1,
265
+ marginHorizontal: 4,
266
+ },
267
+
268
+ // ─── Vertical ───
269
+ verticalContainer: {},
270
+ verticalItem: {
271
+ flexDirection: 'row',
272
+ },
273
+ verticalLeft: {
274
+ alignItems: 'center',
275
+ width: 44,
276
+ marginRight: 12,
277
+ },
278
+ verticalRight: {
279
+ flex: 1,
280
+ paddingBottom: 20,
281
+ },
282
+ verticalCard: {
283
+ minHeight: 60,
284
+ },
285
+ // removed verticalCardActive
286
+ cardContent: {
287
+ padding: 14,
288
+ },
289
+ cardHeader: {
290
+ flexDirection: 'row',
291
+ justifyContent: 'space-between',
292
+ alignItems: 'center',
293
+ },
294
+ cardTitle: {
295
+ fontSize: 16,
296
+ },
297
+ cardDate: {
298
+ fontSize: 12,
299
+ },
300
+ cardDescription: {
301
+ fontSize: 14,
302
+ marginTop: 4,
303
+ lineHeight: 20,
304
+ },
305
+
306
+ // ─── Horizontal ───
307
+ horizontalContainer: {
308
+ flexDirection: 'row',
309
+ alignItems: 'flex-start',
310
+ },
311
+ horizontalItem: {
312
+ flex: 1,
313
+ alignItems: 'center',
314
+ },
315
+ horizontalTop: {
316
+ flexDirection: 'row',
317
+ alignItems: 'center',
318
+ width: '100%',
319
+ justifyContent: 'center',
320
+ },
321
+ horizontalLabels: {
322
+ alignItems: 'center',
323
+ marginTop: 10,
324
+ paddingHorizontal: 4,
325
+ },
326
+ horizontalTitle: {
327
+ fontSize: 14,
328
+ marginTop: 4,
329
+ },
330
+ horizontalSubtitle: {
331
+ fontSize: 12,
332
+ marginTop: 2,
333
+ textAlign: 'center',
334
+ },
335
+ });
@@ -0,0 +1,54 @@
1
+ import React from 'react';
2
+
3
+ import { StyleSheet, View, Text, StyleProp, ViewStyle } from 'react-native';
4
+ import FluentGlass from './FluentGlass';
5
+ import useTheme from '../theme/useTheme';
6
+ import { moderateScale } from '../utils/responsive';
7
+
8
+ export interface FluentGlassWeatherWidgetProps {
9
+ temp?: string;
10
+ condition?: string;
11
+ style?: StyleProp<ViewStyle>;
12
+ }
13
+
14
+ /**
15
+ * FluentGlassWeatherWidget (Atom/Molecule)
16
+ * Dashboard widget displaying temperature and condition.
17
+ */
18
+ export default function FluentGlassWeatherWidget({ temp = '24°', condition = 'Cloudy', style }: FluentGlassWeatherWidgetProps) {
19
+ const theme = useTheme();
20
+ const COLORS = theme.colors;
21
+ const typography = theme.typography;
22
+
23
+ return (
24
+ <FluentGlass accessible={true} accessibilityLabel={`${temp} ${condition}`} style={[styles.card, style]} intensity={25} borderRadius={20}>
25
+ <View style={styles.content}>
26
+ <Text style={[styles.label, { color: COLORS.textSecondary, fontFamily: typography.medium }]}>{condition}</Text>
27
+ <Text style={[styles.bigValue, { color: COLORS.textPrimary, fontFamily: typography.regular }]}>{temp}</Text>
28
+ </View>
29
+ </FluentGlass>
30
+ );
31
+ }
32
+
33
+ const styles = StyleSheet.create({
34
+ card: {
35
+ flex: 1,
36
+ minWidth: 100,
37
+ maxWidth: 140,
38
+ aspectRatio: 1,
39
+ },
40
+ content: {
41
+ flex: 1,
42
+ justifyContent: 'center',
43
+ alignItems: 'center',
44
+ },
45
+ label: {
46
+ fontSize: 12,
47
+ textTransform: 'uppercase',
48
+ marginBottom: 4,
49
+ },
50
+ bigValue: {
51
+ fontSize: moderateScale(28),
52
+ fontWeight: '300',
53
+ },
54
+ });
@@ -0,0 +1,42 @@
1
+ export { default as FluentGlass } from './FluentGlass';
2
+ export { default as FluentGlassLayout } from './FluentGlassLayout';
3
+ export { default as FluentGlassSimpleCard } from './FluentGlassSimpleCard';
4
+ export { default as FluentGlassButton } from './FluentGlassButton';
5
+ export { default as FluentGlassInput } from './FluentGlassInput';
6
+ export { default as FluentGlassSeparator } from './FluentGlassSeparator';
7
+ export { default as FluentGlassSkeleton } from './FluentGlassSkeleton';
8
+ export { default as FluentGlassScrollArea } from './FluentGlassScrollArea';
9
+ export { FluentGlassTable } from './FluentGlassTable';
10
+ export { default as FluentGlassSheet } from './FluentGlassSheet';
11
+ export { default as FluentGlassDialog } from './FluentGlassDialog';
12
+ export { default as FluentGlassSelect } from './FluentGlassSelect';
13
+ export { default as FluentGlassPopover } from './FluentGlassPopover';
14
+ export { default as FluentGlassDock } from './FluentGlassDock';
15
+ export { default as FluentGlassWeatherWidget } from './FluentGlassWeatherWidget';
16
+ export { default as FluentGlassCalendarWidget } from './FluentGlassCalendarWidget';
17
+ export { default as FluentGlassClockWidget } from './FluentGlassClockWidget';
18
+ export { default as FluentGlassStatWidget } from './FluentGlassStatWidget';
19
+ export { default as FluentGlassSegmentedControl } from './FluentGlassSegmentedControl';
20
+ export { default as FluentGlassBadge } from './FluentGlassBadge';
21
+ export { default as FluentGlassTag } from './FluentGlassTag';
22
+ export { default as FluentGlassStatusIndicator } from './FluentGlassStatusIndicator';
23
+ export { default as FluentGlassBreadcrumb } from './FluentGlassBreadcrumb';
24
+ export { default as FluentGlassCard } from './FluentGlassCard';
25
+ export { default as FluentGlassSlider } from './FluentGlassSlider';
26
+ export { default as FluentGlassSwitch } from './FluentGlassSwitch';
27
+ export { default as FluentGlassDropdown } from './FluentGlassDropdown';
28
+ export { default as FluentGlassCodeBlock } from './FluentGlassCodeBlock';
29
+ export { default as FluentGlassContainer } from './FluentGlassContainer';
30
+ export { default as FluentGlassCheckbox } from './FluentGlassCheckbox';
31
+ export { default as FluentGlassTimeline } from './FluentGlassTimeline';
32
+ export { default as FluentGlassAlert } from './FluentGlassAlert';
33
+ export { default as FluentGlassBarChart } from './FluentGlassBarChart';
34
+ export { default as FluentGlassDatePicker } from './FluentGlassDatePicker';
35
+ export { default as FluentGlassTextInput } from './FluentGlassTextInput';
36
+ export { default as FluentGlassLabeledInput } from './FluentGlassLabeledInput';
37
+ export { default as FluentGlassPasswordInput } from './FluentGlassPasswordInput';
38
+ export { default as FluentGlassEmailInput } from './FluentGlassEmailInput';
39
+ export { default as FluentGlassDateInput } from './FluentGlassDateInput';
40
+ export { default as FluentGlassResponsiveRow } from './FluentGlassResponsiveRow';
41
+ export { default as FluentGlassCrossfade } from './FluentGlassCrossfade';
42
+ export { default as FluentGlassSidebar, SIDEBAR_DEFAULTS } from './FluentGlassSidebar';
package/src/fonts.ts ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * FluentGlass Font Loader
3
+ *
4
+ * Utility to load Inter font files bundled with the library.
5
+ * Call loadFluentGlassFonts() before rendering, or use
6
+ * FluentGlassProvider which handles loading automatically.
7
+ */
8
+ import * as Font from 'expo-font';
9
+
10
+ export const FLUENTGLASS_FONTS = {
11
+ 'Inter-Regular': require('./assets/fonts/Inter-Regular.ttf'),
12
+ 'Inter-Medium': require('./assets/fonts/Inter-Medium.ttf'),
13
+ 'Inter-SemiBold': require('./assets/fonts/Inter-SemiBold.ttf'),
14
+ 'Inter-Bold': require('./assets/fonts/Inter-Bold.ttf'),
15
+ 'Inter-ExtraBold': require('./assets/fonts/Inter-ExtraBold.ttf'),
16
+ 'Inter-Black': require('./assets/fonts/Inter-Black.ttf'),
17
+ };
18
+
19
+ /**
20
+ * Load all FluentGlass fonts. Returns a promise that resolves when fonts are ready.
21
+ */
22
+ export function loadFluentGlassFonts() {
23
+ return Font.loadAsync(FLUENTGLASS_FONTS);
24
+ }
@@ -0,0 +1,55 @@
1
+ import { useState, useEffect } from 'react';
2
+ import { Dimensions } from 'react-native';
3
+
4
+ /**
5
+ * useBreakpoint — Hook para diseño responsive
6
+ *
7
+ * Breakpoints:
8
+ * mobile: < 600px
9
+ * tablet: 600px – 1023px
10
+ * desktop: ≥ 1024px
11
+ *
12
+ * Retorna:
13
+ * breakpoint - 'mobile' | 'tablet' | 'desktop'
14
+ * width - ancho actual de la pantalla
15
+ * columns - número recomendado de columnas (1, 2, 3)
16
+ * isMobile - boolean
17
+ * isTablet - boolean
18
+ * isDesktop - boolean
19
+ */
20
+ export interface BreakpointInfo {
21
+ breakpoint: 'mobile' | 'tablet' | 'desktop';
22
+ width: number;
23
+ columns: number;
24
+ isMobile: boolean;
25
+ isTablet: boolean;
26
+ isDesktop: boolean;
27
+ }
28
+
29
+ export default function useBreakpoint(): BreakpointInfo {
30
+ const [width, setWidth] = useState(Dimensions.get('window').width);
31
+
32
+ useEffect(() => {
33
+ const subscription = Dimensions.addEventListener('change', ({ window }: any) => {
34
+ setWidth(window.width);
35
+ });
36
+ return () => subscription?.remove();
37
+ }, []);
38
+
39
+ const isMobile = width < 600;
40
+ const isTablet = width >= 600 && width < 1024;
41
+ const isDesktop = width >= 1024;
42
+
43
+ let breakpoint: 'mobile' | 'tablet' | 'desktop' = 'mobile';
44
+ let columns = 1;
45
+
46
+ if (isDesktop) {
47
+ breakpoint = 'desktop';
48
+ columns = 3;
49
+ } else if (isTablet) {
50
+ breakpoint = 'tablet';
51
+ columns = 2;
52
+ }
53
+
54
+ return { breakpoint, width, columns, isMobile, isTablet, isDesktop };
55
+ }
package/src/index.ts ADDED
@@ -0,0 +1,97 @@
1
+ /**
2
+ * FluentGlass — Main Entry Point
3
+ *
4
+ * Usage:
5
+ * import { FluentGlassButton, FluentGlassCard } from 'fluentglass';
6
+ */
7
+
8
+ // ─── Components ─────────────────────────────────────────────
9
+ export {
10
+ FluentGlass,
11
+ FluentGlassLayout,
12
+ FluentGlassSimpleCard,
13
+ FluentGlassButton,
14
+ FluentGlassInput,
15
+ FluentGlassTextInput,
16
+ FluentGlassLabeledInput,
17
+ FluentGlassPasswordInput,
18
+ FluentGlassEmailInput,
19
+ FluentGlassDateInput,
20
+ FluentGlassSeparator,
21
+ FluentGlassSkeleton,
22
+ FluentGlassScrollArea,
23
+ FluentGlassTable,
24
+ FluentGlassSheet,
25
+ FluentGlassDialog,
26
+ FluentGlassSelect,
27
+ FluentGlassDock,
28
+ FluentGlassWeatherWidget,
29
+ FluentGlassCalendarWidget,
30
+ FluentGlassClockWidget,
31
+ FluentGlassStatWidget,
32
+ FluentGlassSegmentedControl,
33
+ FluentGlassBadge,
34
+ FluentGlassTag,
35
+ FluentGlassStatusIndicator,
36
+ FluentGlassBreadcrumb,
37
+ FluentGlassCard,
38
+ FluentGlassSlider,
39
+ FluentGlassSwitch,
40
+ FluentGlassDropdown,
41
+ FluentGlassCodeBlock,
42
+ FluentGlassContainer,
43
+ FluentGlassCheckbox,
44
+ FluentGlassTimeline,
45
+ FluentGlassAlert,
46
+ FluentGlassBarChart,
47
+ FluentGlassDatePicker,
48
+ FluentGlassPopover,
49
+ FluentGlassResponsiveRow,
50
+ FluentGlassCrossfade,
51
+ FluentGlassSidebar,
52
+ SIDEBAR_DEFAULTS,
53
+ } from './components';
54
+
55
+ // ─── Hooks ──────────────────────────────────────────────────
56
+ export { default as useBreakpoint } from './hooks/useBreakpoint';
57
+
58
+ // ─── Utilities ──────────────────────────────────────────────
59
+ export {
60
+ scale,
61
+ verticalScale,
62
+ moderateScale,
63
+ wp,
64
+ hp,
65
+ responsiveFontSize,
66
+ isSmallDevice,
67
+ isCompactDevice,
68
+ isTablet,
69
+ isLargeTablet,
70
+ SPACING,
71
+ } from './utils/responsive';
72
+
73
+ export { COLORS } from './utils/colors';
74
+
75
+ // ─── Theme System ───────────────────────────────────────────
76
+ export { default as FluentGlassProvider } from './theme/FluentGlassProvider';
77
+ export { default as useTheme } from './theme/useTheme';
78
+ export { default as defaultTheme } from './theme/defaultTheme';
79
+ export {
80
+ SIZE_SCALE,
81
+ SIZE_PRESETS,
82
+ COLOR_SCHEMES,
83
+ BLUR_PRESETS,
84
+ RADIUS_PRESETS,
85
+ ANIMATION_PRESETS,
86
+ } from './theme/tokens';
87
+ export {
88
+ resolveSize,
89
+ resolveColorScheme,
90
+ resolveBlur,
91
+ resolveRadius,
92
+ resolveBackwardCompat,
93
+ } from './theme/resolvers';
94
+
95
+ // ─── Typography ─────────────────────────────────────────────
96
+ export { FONT_FAMILIES, WEIGHT_TO_FAMILY, getFontFamily } from './theme/typography';
97
+ export { loadFluentGlassFonts } from './fonts';
@@ -0,0 +1,82 @@
1
+ /**
2
+ * FluentGlassProvider
3
+ *
4
+ * Wraps the app (or a subtree) with a custom theme.
5
+ * All FluentGlass components read from this context.
6
+ *
7
+ * Usage:
8
+ * <FluentGlassProvider theme={{ colors: { accent: '#FF6B6B' } }}>
9
+ * <App />
10
+ * </FluentGlassProvider>
11
+ *
12
+ * Without provider, components use defaultTheme automatically.
13
+ */
14
+
15
+ import React, { createContext, useMemo, useState, useEffect } from 'react';
16
+ import { View, ActivityIndicator } from 'react-native';
17
+ import defaultTheme from './defaultTheme';
18
+ import { loadFluentGlassFonts } from '../fonts';
19
+
20
+ export const ThemeContext = createContext(defaultTheme);
21
+
22
+ /**
23
+ * Deep merge two objects. Arrays are replaced, not merged.
24
+ * Only merges plain objects, not class instances.
25
+ */
26
+ function deepMerge(target: any, source: any) {
27
+ if (!source) return target;
28
+ const result = { ...target };
29
+
30
+ for (const key of Object.keys(source)) {
31
+ const targetVal = target[key];
32
+ const sourceVal = source[key];
33
+
34
+ if (
35
+ sourceVal &&
36
+ typeof sourceVal === 'object' &&
37
+ !Array.isArray(sourceVal) &&
38
+ targetVal &&
39
+ typeof targetVal === 'object' &&
40
+ !Array.isArray(targetVal)
41
+ ) {
42
+ result[key] = deepMerge(targetVal, sourceVal);
43
+ } else {
44
+ result[key] = sourceVal;
45
+ }
46
+ }
47
+
48
+ return result;
49
+ }
50
+
51
+ export default function FluentGlassProvider({ theme, children, loadFonts = true }: { theme?: any, children?: React.ReactNode, loadFonts?: boolean }) {
52
+ const [fontsLoaded, setFontsLoaded] = useState(!loadFonts);
53
+
54
+ useEffect(() => {
55
+ if (!loadFonts) return;
56
+ loadFluentGlassFonts()
57
+ .then(() => setFontsLoaded(true))
58
+ .catch((err) => {
59
+ console.warn('FluentGlass: Failed to load fonts, falling back to system fonts.', err);
60
+ setFontsLoaded(true); // render anyway with system fonts
61
+ });
62
+ }, [loadFonts]);
63
+
64
+ const mergedTheme = useMemo(
65
+ () => (theme ? deepMerge(defaultTheme, theme) : defaultTheme),
66
+ [theme]
67
+ );
68
+
69
+ if (!fontsLoaded) {
70
+ return (
71
+ <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#020617' }}>
72
+ <ActivityIndicator color="#06B6D4" size="large" />
73
+ </View>
74
+ );
75
+ }
76
+
77
+ return (
78
+ <ThemeContext.Provider value={mergedTheme}>
79
+ {children}
80
+ </ThemeContext.Provider>
81
+ );
82
+ }