@rbxts/uiblox 0.1.53 → 0.2.0-alpha.1

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 (515) hide show
  1. package/README.md +107 -28
  2. package/out/foundation/guard.d.ts +3 -0
  3. package/out/foundation/guard.luau +23 -0
  4. package/out/foundation/index.d.ts +1 -0
  5. package/out/foundation/init.luau +8 -0
  6. package/out/hooks/breakpoints.d.ts +10 -0
  7. package/out/hooks/breakpoints.luau +60 -0
  8. package/out/hooks/index.d.ts +4 -0
  9. package/out/hooks/init.luau +10 -0
  10. package/out/hooks/useBreakpoints.d.ts +6 -0
  11. package/out/hooks/useBreakpoints.luau +39 -0
  12. package/out/hooks/useReducedMotion.d.ts +1 -0
  13. package/out/hooks/useReducedMotion.luau +12 -0
  14. package/out/index.d.ts +3 -0
  15. package/out/init.luau +9 -0
  16. package/out/interaction/index.d.ts +4 -0
  17. package/out/interaction/init.luau +9 -0
  18. package/out/interaction/pointerRoute.d.ts +6 -0
  19. package/out/interaction/pointerRoute.luau +35 -0
  20. package/out/interaction/usePointer.d.ts +11 -0
  21. package/out/interaction/usePointer.luau +99 -0
  22. package/out/theme/constants/ColorConstants.d.ts +0 -3
  23. package/out/theme/constants/ColorConstants.luau +0 -96
  24. package/out/theme/constants/NumberConstants.d.ts +1 -1
  25. package/out/theme/constants/NumberConstants.luau +3 -4
  26. package/out/theme/context/ThemeProvider.d.ts +3 -0
  27. package/out/theme/context/ThemeProvider.luau +15 -8
  28. package/out/theme/context/themeScope.d.ts +5 -0
  29. package/out/theme/context/themeScope.luau +7 -0
  30. package/out/theme/hooks/useTheme.luau +15 -14
  31. package/out/theme/interfaces/density/controlMetrics.d.ts +21 -0
  32. package/out/theme/interfaces/density/controlMetrics.luau +67 -0
  33. package/out/theme/interfaces/density/index.d.ts +1 -0
  34. package/out/theme/interfaces/density/init.luau +7 -0
  35. package/out/theme/interfaces/index.d.ts +1 -0
  36. package/out/theme/interfaces/init.luau +3 -0
  37. package/out/theme/interfaces/palette/Palette.d.ts +39 -18
  38. package/out/theme/interfaces/palette/colors/index.d.ts +0 -1
  39. package/out/theme/interfaces/palette/index.d.ts +1 -0
  40. package/out/theme/interfaces/theme/Theme.d.ts +13 -0
  41. package/out/theme/interfaces/theme/ThemeConstants.d.ts +0 -18
  42. package/out/theme/interfaces/typography/FontSizes.d.ts +1 -1
  43. package/out/theme/interfaces/typography/FontSizes.luau +7 -7
  44. package/out/theme/styles/index.d.ts +1 -2
  45. package/out/theme/styles/init.luau +3 -1
  46. package/out/theme/styles/types/index.d.ts +0 -1
  47. package/out/theme/styles/utilities/classNames.d.ts +3 -2
  48. package/out/theme/styles/utilities/classNames.luau +7 -173
  49. package/out/theme/styles/utilities/componentStyles.d.ts +7 -0
  50. package/out/theme/styles/utilities/componentStyles.luau +31 -0
  51. package/out/theme/styles/utilities/componentTheme.d.ts +20 -0
  52. package/out/theme/styles/utilities/componentTheme.luau +53 -0
  53. package/out/theme/styles/utilities/createStyles.d.ts +1 -2
  54. package/out/theme/styles/utilities/index.d.ts +5 -1
  55. package/out/theme/styles/utilities/init.luau +9 -1
  56. package/out/theme/styles/utilities/makeStyles.luau +14 -15
  57. package/out/theme/styles/utilities/resolveStyle.d.ts +32 -0
  58. package/out/theme/styles/utilities/resolveStyle.luau +66 -0
  59. package/out/theme/styles/utilities/styleCache.d.ts +2 -0
  60. package/out/theme/styles/utilities/styleCache.luau +68 -0
  61. package/out/theme/styles/utilities/variants.d.ts +19 -0
  62. package/out/theme/styles/utilities/variants.luau +59 -0
  63. package/out/theme/themes/DarkTheme.luau +4 -57
  64. package/out/theme/themes/LightTheme.luau +4 -57
  65. package/out/theme/themes/createPalette.d.ts +3 -0
  66. package/out/theme/themes/createPalette.luau +111 -0
  67. package/out/theme/themes/index.d.ts +1 -0
  68. package/out/theme/themes/init.luau +3 -0
  69. package/out/theme/types/types.d.ts +1 -0
  70. package/out/theme/utilites/colorMath.d.ts +8 -0
  71. package/out/theme/utilites/colorMath.luau +35 -0
  72. package/out/theme/utilites/index.d.ts +1 -0
  73. package/out/theme/utilites/init.luau +6 -0
  74. package/out/ui/enums/Icons.d.ts +5 -1
  75. package/out/ui/enums/Icons.luau +4 -0
  76. package/out/ui/index.d.ts +12 -0
  77. package/out/ui/init.luau +5 -0
  78. package/out/ui/packages/accordion/components/Accordion.d.ts +11 -0
  79. package/out/ui/packages/accordion/components/Accordion.luau +93 -0
  80. package/out/ui/packages/accordion/components/Accordion.styles.d.ts +4 -0
  81. package/out/ui/packages/accordion/components/Accordion.styles.luau +65 -0
  82. package/out/ui/packages/accordion/components/accordionOpen.d.ts +1 -0
  83. package/out/ui/packages/accordion/components/accordionOpen.luau +10 -0
  84. package/out/ui/packages/accordion/index.d.ts +2 -0
  85. package/out/ui/packages/accordion/init.luau +5 -0
  86. package/out/ui/packages/appBar/components/AppBar.d.ts +10 -0
  87. package/out/ui/packages/appBar/components/AppBar.luau +77 -0
  88. package/out/ui/packages/appBar/components/AppBar.styles.d.ts +6 -0
  89. package/out/ui/packages/appBar/components/AppBar.styles.luau +66 -0
  90. package/out/ui/packages/appBar/index.d.ts +3 -0
  91. package/out/ui/packages/appBar/init.luau +5 -0
  92. package/out/ui/packages/assetField/components/AssetField.d.ts +10 -0
  93. package/out/ui/packages/assetField/components/AssetField.luau +75 -0
  94. package/out/ui/packages/assetField/components/AssetField.styles.d.ts +2 -0
  95. package/out/ui/packages/assetField/components/AssetField.styles.luau +33 -0
  96. package/out/ui/packages/assetField/components/assetPreviewUri.d.ts +1 -0
  97. package/out/ui/packages/assetField/components/assetPreviewUri.luau +25 -0
  98. package/out/ui/packages/assetField/index.d.ts +2 -0
  99. package/out/ui/packages/assetField/init.luau +5 -0
  100. package/out/ui/packages/autocomplete/components/Autocomplete.d.ts +5 -0
  101. package/out/ui/packages/autocomplete/components/Autocomplete.luau +47 -0
  102. package/out/ui/packages/autocomplete/components/autocompleteSearchable.d.ts +1 -0
  103. package/out/ui/packages/autocomplete/components/autocompleteSearchable.luau +7 -0
  104. package/out/ui/packages/autocomplete/index.d.ts +2 -0
  105. package/out/ui/packages/autocomplete/init.luau +5 -0
  106. package/out/ui/packages/avatar/components/Avatar.d.ts +8 -0
  107. package/out/ui/packages/avatar/components/Avatar.luau +69 -0
  108. package/out/ui/packages/avatar/components/Avatar.styles.d.ts +4 -0
  109. package/out/ui/packages/avatar/components/Avatar.styles.luau +39 -0
  110. package/out/ui/packages/avatar/components/avatarText.d.ts +1 -0
  111. package/out/ui/packages/avatar/components/avatarText.luau +17 -0
  112. package/out/ui/packages/avatar/index.d.ts +3 -0
  113. package/out/ui/packages/avatar/init.luau +6 -0
  114. package/out/ui/packages/badge/components/Badge.d.ts +10 -0
  115. package/out/ui/packages/badge/components/Badge.luau +69 -0
  116. package/out/ui/packages/badge/components/Badge.styles.d.ts +2 -0
  117. package/out/ui/packages/badge/components/Badge.styles.luau +38 -0
  118. package/out/ui/packages/badge/components/badgeValue.d.ts +1 -0
  119. package/out/ui/packages/badge/components/badgeValue.luau +7 -0
  120. package/out/ui/packages/badge/index.d.ts +3 -0
  121. package/out/ui/packages/badge/init.luau +6 -0
  122. package/out/ui/packages/bottomNavigation/components/BottomNavigation.d.ts +10 -0
  123. package/out/ui/packages/bottomNavigation/components/BottomNavigation.luau +86 -0
  124. package/out/ui/packages/bottomNavigation/components/BottomNavigation.styles.d.ts +2 -0
  125. package/out/ui/packages/bottomNavigation/components/BottomNavigation.styles.luau +58 -0
  126. package/out/ui/packages/bottomNavigation/index.d.ts +2 -0
  127. package/out/ui/packages/bottomNavigation/init.luau +5 -0
  128. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.d.ts +11 -0
  129. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.luau +82 -0
  130. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.styles.d.ts +2 -0
  131. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.styles.luau +47 -0
  132. package/out/ui/packages/breadcrumbs/components/breadcrumbItems.d.ts +1 -0
  133. package/out/ui/packages/breadcrumbs/components/breadcrumbItems.luau +7 -0
  134. package/out/ui/packages/breadcrumbs/index.d.ts +2 -0
  135. package/out/ui/packages/breadcrumbs/init.luau +5 -0
  136. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.d.ts +9 -0
  137. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.luau +234 -0
  138. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.styles.d.ts +2 -0
  139. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.styles.luau +98 -0
  140. package/out/ui/packages/brickColorPicker/components/brickColorCatalog.d.ts +1 -0
  141. package/out/ui/packages/brickColorPicker/components/brickColorCatalog.luau +26 -0
  142. package/out/ui/packages/brickColorPicker/components/brickColorFilter.d.ts +2 -0
  143. package/out/ui/packages/brickColorPicker/components/brickColorFilter.luau +26 -0
  144. package/out/ui/packages/brickColorPicker/index.d.ts +3 -0
  145. package/out/ui/packages/brickColorPicker/init.luau +8 -0
  146. package/out/ui/packages/button/components/Button.d.ts +4 -0
  147. package/out/ui/packages/button/components/Button.luau +86 -34
  148. package/out/ui/packages/button/components/Button.styles.luau +15 -35
  149. package/out/ui/packages/button/components/activation.d.ts +1 -0
  150. package/out/ui/packages/button/components/activation.luau +7 -0
  151. package/out/ui/packages/button/components/buttonLook.d.ts +12 -0
  152. package/out/ui/packages/button/components/buttonLook.luau +55 -0
  153. package/out/ui/packages/button/types/ButtonSize.d.ts +1 -1
  154. package/out/ui/packages/card/components/Card.d.ts +11 -0
  155. package/out/ui/packages/card/components/Card.luau +74 -0
  156. package/out/ui/packages/card/components/Card.styles.d.ts +2 -0
  157. package/out/ui/packages/card/components/Card.styles.luau +66 -0
  158. package/out/ui/packages/card/index.d.ts +2 -0
  159. package/out/ui/packages/card/init.luau +5 -0
  160. package/out/ui/packages/cframeEditor/components/CFrameEditor.d.ts +8 -0
  161. package/out/ui/packages/cframeEditor/components/CFrameEditor.luau +89 -0
  162. package/out/ui/packages/cframeEditor/components/CFrameEditor.styles.d.ts +2 -0
  163. package/out/ui/packages/cframeEditor/components/CFrameEditor.styles.luau +46 -0
  164. package/out/ui/packages/cframeEditor/components/cframeValue.d.ts +3 -0
  165. package/out/ui/packages/cframeEditor/components/cframeValue.luau +15 -0
  166. package/out/ui/packages/cframeEditor/index.d.ts +2 -0
  167. package/out/ui/packages/cframeEditor/init.luau +5 -0
  168. package/out/ui/packages/checkbox/components/Checkbox.d.ts +11 -0
  169. package/out/ui/packages/checkbox/components/Checkbox.luau +136 -0
  170. package/out/ui/packages/checkbox/components/Checkbox.styles.d.ts +6 -0
  171. package/out/ui/packages/checkbox/components/Checkbox.styles.luau +69 -0
  172. package/out/ui/packages/checkbox/components/checkboxLook.d.ts +5 -0
  173. package/out/ui/packages/checkbox/components/checkboxLook.luau +52 -0
  174. package/out/ui/packages/checkbox/components/nextChecked.d.ts +1 -0
  175. package/out/ui/packages/checkbox/components/nextChecked.luau +7 -0
  176. package/out/ui/packages/checkbox/index.d.ts +2 -0
  177. package/out/ui/packages/checkbox/init.luau +5 -0
  178. package/out/ui/packages/chip/components/Chip.d.ts +9 -0
  179. package/out/ui/packages/chip/components/Chip.luau +63 -0
  180. package/out/ui/packages/chip/components/Chip.styles.d.ts +5 -0
  181. package/out/ui/packages/chip/components/Chip.styles.luau +47 -0
  182. package/out/ui/packages/chip/index.d.ts +2 -0
  183. package/out/ui/packages/chip/init.luau +5 -0
  184. package/out/ui/packages/circularProgress/components/CircularProgress.d.ts +11 -0
  185. package/out/ui/packages/circularProgress/components/CircularProgress.luau +109 -0
  186. package/out/ui/packages/circularProgress/index.d.ts +2 -0
  187. package/out/ui/packages/circularProgress/init.luau +5 -0
  188. package/out/ui/packages/colorPicker/components/ColorPicker.d.ts +8 -0
  189. package/out/ui/packages/colorPicker/components/ColorPicker.luau +512 -0
  190. package/out/ui/packages/colorPicker/components/ColorPicker.styles.d.ts +2 -0
  191. package/out/ui/packages/colorPicker/components/ColorPicker.styles.luau +145 -0
  192. package/out/ui/packages/colorPicker/components/ColorSequenceEditor.d.ts +8 -0
  193. package/out/ui/packages/colorPicker/components/ColorSequenceEditor.luau +190 -0
  194. package/out/ui/packages/colorPicker/components/NumberSequenceEditor.d.ts +8 -0
  195. package/out/ui/packages/colorPicker/components/NumberSequenceEditor.luau +240 -0
  196. package/out/ui/packages/colorPicker/components/colorValue.d.ts +22 -0
  197. package/out/ui/packages/colorPicker/components/colorValue.luau +157 -0
  198. package/out/ui/packages/colorPicker/components/sequenceValue.d.ts +26 -0
  199. package/out/ui/packages/colorPicker/components/sequenceValue.luau +307 -0
  200. package/out/ui/packages/colorPicker/index.d.ts +11 -0
  201. package/out/ui/packages/colorPicker/init.luau +37 -0
  202. package/out/ui/packages/dialog/components/Dialog.d.ts +11 -0
  203. package/out/ui/packages/dialog/components/Dialog.luau +56 -0
  204. package/out/ui/packages/dialog/components/Dialog.styles.d.ts +2 -0
  205. package/out/ui/packages/dialog/components/Dialog.styles.luau +55 -0
  206. package/out/ui/packages/dialog/index.d.ts +2 -0
  207. package/out/ui/packages/dialog/init.luau +5 -0
  208. package/out/ui/packages/divider/components/Divider.luau +6 -0
  209. package/out/ui/packages/divider/components/Divider.styles.luau +4 -4
  210. package/out/ui/packages/drawer/components/Drawer.d.ts +11 -0
  211. package/out/ui/packages/drawer/components/Drawer.luau +77 -0
  212. package/out/ui/packages/drawer/components/Drawer.styles.d.ts +2 -0
  213. package/out/ui/packages/drawer/components/Drawer.styles.luau +40 -0
  214. package/out/ui/packages/drawer/components/drawerPlacement.d.ts +2 -0
  215. package/out/ui/packages/drawer/components/drawerPlacement.luau +7 -0
  216. package/out/ui/packages/drawer/index.d.ts +3 -0
  217. package/out/ui/packages/drawer/init.luau +5 -0
  218. package/out/ui/packages/enumPicker/components/EnumPicker.d.ts +11 -0
  219. package/out/ui/packages/enumPicker/components/EnumPicker.luau +42 -0
  220. package/out/ui/packages/enumPicker/components/enumOptions.d.ts +5 -0
  221. package/out/ui/packages/enumPicker/components/enumOptions.luau +28 -0
  222. package/out/ui/packages/enumPicker/index.d.ts +2 -0
  223. package/out/ui/packages/enumPicker/init.luau +5 -0
  224. package/out/ui/packages/fab/components/Fab.d.ts +13 -0
  225. package/out/ui/packages/fab/components/Fab.luau +128 -0
  226. package/out/ui/packages/fab/components/Fab.styles.d.ts +7 -0
  227. package/out/ui/packages/fab/components/Fab.styles.luau +40 -0
  228. package/out/ui/packages/fab/components/fabSize.d.ts +3 -0
  229. package/out/ui/packages/fab/components/fabSize.luau +29 -0
  230. package/out/ui/packages/fab/index.d.ts +3 -0
  231. package/out/ui/packages/fab/init.luau +8 -0
  232. package/out/ui/packages/fontEditor/components/FontEditor.d.ts +8 -0
  233. package/out/ui/packages/fontEditor/components/FontEditor.luau +223 -0
  234. package/out/ui/packages/fontEditor/components/FontEditor.styles.d.ts +2 -0
  235. package/out/ui/packages/fontEditor/components/FontEditor.styles.luau +56 -0
  236. package/out/ui/packages/fontEditor/components/fontValue.d.ts +10 -0
  237. package/out/ui/packages/fontEditor/components/fontValue.luau +81 -0
  238. package/out/ui/packages/fontEditor/index.d.ts +4 -0
  239. package/out/ui/packages/fontEditor/init.luau +10 -0
  240. package/out/ui/packages/gradientEditor/components/GradientEditor.d.ts +10 -0
  241. package/out/ui/packages/gradientEditor/components/GradientEditor.luau +156 -0
  242. package/out/ui/packages/gradientEditor/components/GradientEditor.styles.d.ts +2 -0
  243. package/out/ui/packages/gradientEditor/components/GradientEditor.styles.luau +37 -0
  244. package/out/ui/packages/gradientEditor/components/gradientPatch.d.ts +8 -0
  245. package/out/ui/packages/gradientEditor/components/gradientPatch.luau +17 -0
  246. package/out/ui/packages/gradientEditor/components/gradientValue.d.ts +9 -0
  247. package/out/ui/packages/gradientEditor/components/gradientValue.luau +23 -0
  248. package/out/ui/packages/gradientEditor/index.d.ts +2 -0
  249. package/out/ui/packages/gradientEditor/init.luau +5 -0
  250. package/out/ui/packages/icon/components/Icon.luau +6 -0
  251. package/out/ui/packages/icon/components/Icon.styles.luau +7 -7
  252. package/out/ui/packages/iconButton/components/IconButton.d.ts +3 -0
  253. package/out/ui/packages/iconButton/components/IconButton.luau +53 -5
  254. package/out/ui/packages/iconButton/components/IconButton.styles.luau +7 -7
  255. package/out/ui/packages/index.d.ts +49 -0
  256. package/out/ui/packages/init.luau +147 -0
  257. package/out/ui/packages/input/components/Input.d.ts +8 -1
  258. package/out/ui/packages/input/components/Input.luau +180 -60
  259. package/out/ui/packages/input/components/Input.styles.d.ts +3 -1
  260. package/out/ui/packages/input/components/Input.styles.luau +79 -53
  261. package/out/ui/packages/input/components/inputDraft.d.ts +1 -0
  262. package/out/ui/packages/input/components/inputDraft.luau +17 -0
  263. package/out/ui/packages/input/components/inputInsets.d.ts +4 -0
  264. package/out/ui/packages/input/components/inputInsets.luau +10 -0
  265. package/out/ui/packages/layout/components/Grid.luau +8 -2
  266. package/out/ui/packages/layout/components/List.luau +8 -2
  267. package/out/ui/packages/listItem/components/ListItem.d.ts +9 -0
  268. package/out/ui/packages/listItem/components/ListItem.luau +67 -0
  269. package/out/ui/packages/listItem/components/ListItem.styles.d.ts +5 -0
  270. package/out/ui/packages/listItem/components/ListItem.styles.luau +64 -0
  271. package/out/ui/packages/listItem/index.d.ts +2 -0
  272. package/out/ui/packages/listItem/init.luau +5 -0
  273. package/out/ui/packages/loadingStroke/components/LoadingStroke.luau +11 -2
  274. package/out/ui/packages/menu/components/Menu.d.ts +14 -0
  275. package/out/ui/packages/menu/components/Menu.luau +60 -0
  276. package/out/ui/packages/menu/components/Menu.styles.d.ts +2 -0
  277. package/out/ui/packages/menu/components/Menu.styles.luau +26 -0
  278. package/out/ui/packages/menu/index.d.ts +2 -0
  279. package/out/ui/packages/menu/init.luau +5 -0
  280. package/out/ui/packages/modal/components/Modal.d.ts +9 -0
  281. package/out/ui/packages/modal/components/Modal.luau +97 -0
  282. package/out/ui/packages/modal/components/Modal.styles.d.ts +2 -0
  283. package/out/ui/packages/modal/components/Modal.styles.luau +47 -0
  284. package/out/ui/packages/modal/components/dismissInput.d.ts +1 -0
  285. package/out/ui/packages/modal/components/dismissInput.luau +8 -0
  286. package/out/ui/packages/modal/components/focusTrap.d.ts +2 -0
  287. package/out/ui/packages/modal/components/focusTrap.luau +22 -0
  288. package/out/ui/packages/modal/index.d.ts +2 -0
  289. package/out/ui/packages/modal/init.luau +5 -0
  290. package/out/ui/packages/motion/duration.d.ts +2 -0
  291. package/out/ui/packages/motion/duration.luau +17 -0
  292. package/out/ui/packages/motion/index.d.ts +5 -0
  293. package/out/ui/packages/motion/init.luau +16 -0
  294. package/out/ui/packages/motion/loop.d.ts +1 -0
  295. package/out/ui/packages/motion/loop.luau +18 -0
  296. package/out/ui/packages/motion/play.d.ts +1 -0
  297. package/out/ui/packages/motion/play.luau +23 -0
  298. package/out/ui/packages/motion/resolveReduced.d.ts +1 -0
  299. package/out/ui/packages/motion/resolveReduced.luau +10 -0
  300. package/out/ui/packages/motion/unit.d.ts +8 -0
  301. package/out/ui/packages/motion/unit.luau +80 -0
  302. package/out/ui/packages/numberInput/components/NumberInput.d.ts +16 -0
  303. package/out/ui/packages/numberInput/components/NumberInput.luau +48 -0
  304. package/out/ui/packages/numberInput/components/numberValue.d.ts +2 -0
  305. package/out/ui/packages/numberInput/components/numberValue.luau +29 -0
  306. package/out/ui/packages/numberInput/index.d.ts +2 -0
  307. package/out/ui/packages/numberInput/init.luau +5 -0
  308. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.d.ts +8 -0
  309. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.luau +96 -0
  310. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.styles.d.ts +2 -0
  311. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.styles.luau +41 -0
  312. package/out/ui/packages/numberRangeEditor/components/numberRangeValue.d.ts +4 -0
  313. package/out/ui/packages/numberRangeEditor/components/numberRangeValue.luau +16 -0
  314. package/out/ui/packages/numberRangeEditor/index.d.ts +2 -0
  315. package/out/ui/packages/numberRangeEditor/init.luau +5 -0
  316. package/out/ui/packages/pagination/components/Pagination.d.ts +9 -0
  317. package/out/ui/packages/pagination/components/Pagination.luau +72 -0
  318. package/out/ui/packages/pagination/components/Pagination.styles.d.ts +2 -0
  319. package/out/ui/packages/pagination/components/Pagination.styles.luau +39 -0
  320. package/out/ui/packages/pagination/components/pageRange.d.ts +1 -0
  321. package/out/ui/packages/pagination/components/pageRange.luau +24 -0
  322. package/out/ui/packages/pagination/index.d.ts +2 -0
  323. package/out/ui/packages/pagination/init.luau +5 -0
  324. package/out/ui/packages/paper/components/Paper.d.ts +8 -0
  325. package/out/ui/packages/paper/components/Paper.luau +31 -0
  326. package/out/ui/packages/paper/components/Paper.styles.d.ts +4 -0
  327. package/out/ui/packages/paper/components/Paper.styles.luau +32 -0
  328. package/out/ui/packages/paper/index.d.ts +2 -0
  329. package/out/ui/packages/paper/init.luau +5 -0
  330. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.d.ts +8 -0
  331. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.luau +85 -0
  332. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.styles.d.ts +2 -0
  333. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.styles.luau +46 -0
  334. package/out/ui/packages/physicalPropertiesEditor/components/physicalParts.d.ts +3 -0
  335. package/out/ui/packages/physicalPropertiesEditor/components/physicalParts.luau +14 -0
  336. package/out/ui/packages/physicalPropertiesEditor/index.d.ts +2 -0
  337. package/out/ui/packages/physicalPropertiesEditor/init.luau +5 -0
  338. package/out/ui/packages/popup/components/Popup.d.ts +13 -0
  339. package/out/ui/packages/popup/components/Popup.luau +131 -0
  340. package/out/ui/packages/popup/components/Portal.d.ts +7 -0
  341. package/out/ui/packages/popup/components/Portal.luau +15 -0
  342. package/out/ui/packages/popup/components/placement.d.ts +9 -0
  343. package/out/ui/packages/popup/components/placement.luau +41 -0
  344. package/out/ui/packages/popup/components/portalTarget.d.ts +1 -0
  345. package/out/ui/packages/popup/components/portalTarget.luau +13 -0
  346. package/out/ui/packages/popup/index.d.ts +4 -0
  347. package/out/ui/packages/popup/init.luau +6 -0
  348. package/out/ui/packages/preloader/components/Preloader.luau +6 -0
  349. package/out/ui/packages/preloader/components/Preloader.styles.luau +3 -3
  350. package/out/ui/packages/progressBar/components/ProgressBar.d.ts +8 -1
  351. package/out/ui/packages/progressBar/components/ProgressBar.luau +61 -11
  352. package/out/ui/packages/progressBar/components/ProgressBar.styles.luau +2 -2
  353. package/out/ui/packages/progressBar/index.d.ts +2 -3
  354. package/out/ui/packages/progressBar/init.luau +3 -4
  355. package/out/ui/packages/radioGroup/components/RadioGroup.d.ts +16 -0
  356. package/out/ui/packages/radioGroup/components/RadioGroup.luau +112 -0
  357. package/out/ui/packages/radioGroup/components/RadioGroup.styles.d.ts +6 -0
  358. package/out/ui/packages/radioGroup/components/RadioGroup.styles.luau +66 -0
  359. package/out/ui/packages/radioGroup/index.d.ts +2 -0
  360. package/out/ui/packages/radioGroup/init.luau +5 -0
  361. package/out/ui/packages/rayEditor/components/RayEditor.d.ts +8 -0
  362. package/out/ui/packages/rayEditor/components/RayEditor.luau +83 -0
  363. package/out/ui/packages/rayEditor/components/RayEditor.styles.d.ts +2 -0
  364. package/out/ui/packages/rayEditor/components/RayEditor.styles.luau +37 -0
  365. package/out/ui/packages/rayEditor/components/rayParts.d.ts +1 -0
  366. package/out/ui/packages/rayEditor/components/rayParts.luau +10 -0
  367. package/out/ui/packages/rayEditor/index.d.ts +2 -0
  368. package/out/ui/packages/rayEditor/init.luau +5 -0
  369. package/out/ui/packages/rectEditor/components/RectEditor.d.ts +8 -0
  370. package/out/ui/packages/rectEditor/components/RectEditor.luau +85 -0
  371. package/out/ui/packages/rectEditor/components/RectEditor.styles.d.ts +2 -0
  372. package/out/ui/packages/rectEditor/components/RectEditor.styles.luau +46 -0
  373. package/out/ui/packages/rectEditor/components/rectValue.d.ts +3 -0
  374. package/out/ui/packages/rectEditor/components/rectValue.luau +14 -0
  375. package/out/ui/packages/rectEditor/index.d.ts +2 -0
  376. package/out/ui/packages/rectEditor/init.luau +5 -0
  377. package/out/ui/packages/scroll/dragScroll.d.ts +8 -0
  378. package/out/ui/packages/scroll/dragScroll.luau +51 -0
  379. package/out/ui/packages/scroll/index.d.ts +2 -0
  380. package/out/ui/packages/scroll/init.luau +5 -0
  381. package/out/ui/packages/scroll/useDragScroll.d.ts +5 -0
  382. package/out/ui/packages/scroll/useDragScroll.luau +127 -0
  383. package/out/ui/packages/select/components/Select.d.ts +16 -0
  384. package/out/ui/packages/select/components/Select.luau +455 -0
  385. package/out/ui/packages/select/components/Select.styles.d.ts +6 -0
  386. package/out/ui/packages/select/components/Select.styles.luau +104 -0
  387. package/out/ui/packages/select/components/optionLabel.d.ts +1 -0
  388. package/out/ui/packages/select/components/optionLabel.luau +7 -0
  389. package/out/ui/packages/select/components/selectFilter.d.ts +4 -0
  390. package/out/ui/packages/select/components/selectFilter.luau +27 -0
  391. package/out/ui/packages/select/components/selectFocus.d.ts +4 -0
  392. package/out/ui/packages/select/components/selectFocus.luau +16 -0
  393. package/out/ui/packages/select/components/selectGroups.d.ts +18 -0
  394. package/out/ui/packages/select/components/selectGroups.luau +38 -0
  395. package/out/ui/packages/select/components/selectKey.d.ts +4 -0
  396. package/out/ui/packages/select/components/selectKey.luau +14 -0
  397. package/out/ui/packages/select/components/selectMotion.d.ts +2 -0
  398. package/out/ui/packages/select/components/selectMotion.luau +12 -0
  399. package/out/ui/packages/select/components/selectMulti.d.ts +5 -0
  400. package/out/ui/packages/select/components/selectMulti.luau +26 -0
  401. package/out/ui/packages/select/components/selectTypeahead.d.ts +4 -0
  402. package/out/ui/packages/select/components/selectTypeahead.luau +58 -0
  403. package/out/ui/packages/select/components/stepChoice.d.ts +3 -0
  404. package/out/ui/packages/select/components/stepChoice.luau +24 -0
  405. package/out/ui/packages/select/index.d.ts +3 -0
  406. package/out/ui/packages/select/init.luau +8 -0
  407. package/out/ui/packages/shadow/components/Shadow.styles.luau +3 -3
  408. package/out/ui/packages/sidebar/components/Sidebar.luau +6 -0
  409. package/out/ui/packages/sidebar/components/Sidebar.styles.luau +5 -5
  410. package/out/ui/packages/skeleton/components/Skeleton.d.ts +15 -0
  411. package/out/ui/packages/skeleton/components/Skeleton.luau +224 -0
  412. package/out/ui/packages/skeleton/components/Skeleton.styles.d.ts +2 -0
  413. package/out/ui/packages/skeleton/components/Skeleton.styles.luau +27 -0
  414. package/out/ui/packages/skeleton/components/skeletonMotion.d.ts +3 -0
  415. package/out/ui/packages/skeleton/components/skeletonMotion.luau +17 -0
  416. package/out/ui/packages/skeleton/index.d.ts +3 -0
  417. package/out/ui/packages/skeleton/init.luau +7 -0
  418. package/out/ui/packages/slider/components/Slider.d.ts +13 -0
  419. package/out/ui/packages/slider/components/Slider.luau +204 -0
  420. package/out/ui/packages/slider/components/Slider.styles.d.ts +6 -0
  421. package/out/ui/packages/slider/components/Slider.styles.luau +47 -0
  422. package/out/ui/packages/slider/components/sliderNudge.d.ts +4 -0
  423. package/out/ui/packages/slider/components/sliderNudge.luau +39 -0
  424. package/out/ui/packages/slider/index.d.ts +2 -0
  425. package/out/ui/packages/slider/init.luau +5 -0
  426. package/out/ui/packages/snackbar/components/Snackbar.d.ts +11 -0
  427. package/out/ui/packages/snackbar/components/Snackbar.luau +41 -0
  428. package/out/ui/packages/snackbar/index.d.ts +2 -0
  429. package/out/ui/packages/snackbar/init.luau +5 -0
  430. package/out/ui/packages/splitPane/components/SplitPane.d.ts +14 -0
  431. package/out/ui/packages/splitPane/components/SplitPane.luau +241 -0
  432. package/out/ui/packages/splitPane/components/SplitPane.styles.d.ts +2 -0
  433. package/out/ui/packages/splitPane/components/SplitPane.styles.luau +59 -0
  434. package/out/ui/packages/splitPane/components/splitLook.d.ts +5 -0
  435. package/out/ui/packages/splitPane/components/splitLook.luau +49 -0
  436. package/out/ui/packages/splitPane/components/splitSize.d.ts +10 -0
  437. package/out/ui/packages/splitPane/components/splitSize.luau +46 -0
  438. package/out/ui/packages/splitPane/index.d.ts +2 -0
  439. package/out/ui/packages/splitPane/init.luau +5 -0
  440. package/out/ui/packages/stateMatrix.d.ts +30 -0
  441. package/out/ui/packages/stateMatrix.luau +1471 -0
  442. package/out/ui/packages/stepper/components/Stepper.d.ts +7 -0
  443. package/out/ui/packages/stepper/components/Stepper.luau +62 -0
  444. package/out/ui/packages/stepper/components/Stepper.styles.d.ts +2 -0
  445. package/out/ui/packages/stepper/components/Stepper.styles.luau +39 -0
  446. package/out/ui/packages/stepper/components/stepState.d.ts +2 -0
  447. package/out/ui/packages/stepper/components/stepState.luau +13 -0
  448. package/out/ui/packages/stepper/index.d.ts +3 -0
  449. package/out/ui/packages/stepper/init.luau +6 -0
  450. package/out/ui/packages/switch/components/Switch.d.ts +11 -0
  451. package/out/ui/packages/switch/components/Switch.luau +170 -0
  452. package/out/ui/packages/switch/components/Switch.styles.d.ts +6 -0
  453. package/out/ui/packages/switch/components/Switch.styles.luau +62 -0
  454. package/out/ui/packages/switch/components/switchLook.d.ts +10 -0
  455. package/out/ui/packages/switch/components/switchLook.luau +63 -0
  456. package/out/ui/packages/switch/index.d.ts +2 -0
  457. package/out/ui/packages/switch/init.luau +5 -0
  458. package/out/ui/packages/table/components/Table.d.ts +9 -0
  459. package/out/ui/packages/table/components/Table.luau +135 -0
  460. package/out/ui/packages/table/components/Table.styles.d.ts +2 -0
  461. package/out/ui/packages/table/components/Table.styles.luau +70 -0
  462. package/out/ui/packages/table/components/rowSelected.d.ts +1 -0
  463. package/out/ui/packages/table/components/rowSelected.luau +7 -0
  464. package/out/ui/packages/table/index.d.ts +2 -0
  465. package/out/ui/packages/table/init.luau +5 -0
  466. package/out/ui/packages/tabs/components/Tabs.d.ts +10 -0
  467. package/out/ui/packages/tabs/components/Tabs.luau +113 -0
  468. package/out/ui/packages/tabs/components/Tabs.styles.d.ts +2 -0
  469. package/out/ui/packages/tabs/components/Tabs.styles.luau +55 -0
  470. package/out/ui/packages/tabs/index.d.ts +2 -0
  471. package/out/ui/packages/tabs/init.luau +5 -0
  472. package/out/ui/packages/toast/components/Toast.luau +6 -0
  473. package/out/ui/packages/toast/components/Toast.styles.luau +23 -10
  474. package/out/ui/packages/tooltip/components/Tooltip.d.ts +7 -0
  475. package/out/ui/packages/tooltip/components/Tooltip.luau +119 -0
  476. package/out/ui/packages/tooltip/components/Tooltip.styles.d.ts +2 -0
  477. package/out/ui/packages/tooltip/components/Tooltip.styles.luau +43 -0
  478. package/out/ui/packages/tooltip/index.d.ts +2 -0
  479. package/out/ui/packages/tooltip/init.luau +5 -0
  480. package/out/ui/packages/treeView/components/TreeView.d.ts +1 -0
  481. package/out/ui/packages/treeView/components/TreeView.luau +201 -225
  482. package/out/ui/packages/treeView/components/TreeView.styles.luau +9 -37
  483. package/out/ui/packages/treeView/components/treeRows.d.ts +23 -0
  484. package/out/ui/packages/treeView/components/treeRows.luau +147 -0
  485. package/out/ui/packages/treeView/interfaces/Branch.d.ts +3 -0
  486. package/out/ui/packages/treeView/interfaces/Leaf.d.ts +2 -0
  487. package/out/ui/packages/typography/components/Typography.luau +6 -0
  488. package/out/ui/packages/typography/components/Typography.styles.luau +8 -11
  489. package/out/ui/packages/udimEditor/components/UDimEditor.d.ts +8 -0
  490. package/out/ui/packages/udimEditor/components/UDimEditor.luau +127 -0
  491. package/out/ui/packages/udimEditor/components/UDimEditor.styles.d.ts +2 -0
  492. package/out/ui/packages/udimEditor/components/UDimEditor.styles.luau +50 -0
  493. package/out/ui/packages/udimEditor/index.d.ts +2 -0
  494. package/out/ui/packages/udimEditor/init.luau +5 -0
  495. package/out/ui/packages/vectorEditor/components/VectorEditor.d.ts +10 -0
  496. package/out/ui/packages/vectorEditor/components/VectorEditor.luau +87 -0
  497. package/out/ui/packages/vectorEditor/components/VectorEditor.styles.d.ts +2 -0
  498. package/out/ui/packages/vectorEditor/components/VectorEditor.styles.luau +41 -0
  499. package/out/ui/packages/vectorEditor/components/vectorValue.d.ts +10 -0
  500. package/out/ui/packages/vectorEditor/components/vectorValue.luau +49 -0
  501. package/out/ui/packages/vectorEditor/index.d.ts +4 -0
  502. package/out/ui/packages/vectorEditor/init.luau +11 -0
  503. package/out/ui/packages/virtualList/components/VirtualList.d.ts +23 -0
  504. package/out/ui/packages/virtualList/components/VirtualList.luau +178 -0
  505. package/out/ui/packages/virtualList/components/VirtualList.styles.d.ts +2 -0
  506. package/out/ui/packages/virtualList/components/VirtualList.styles.luau +29 -0
  507. package/out/ui/packages/virtualList/components/virtualWindow.d.ts +10 -0
  508. package/out/ui/packages/virtualList/components/virtualWindow.luau +66 -0
  509. package/out/ui/packages/virtualList/index.d.ts +2 -0
  510. package/out/ui/packages/virtualList/init.luau +5 -0
  511. package/package.json +7 -3
  512. package/out/theme/interfaces/palette/colors/Colors.d.ts +0 -42
  513. package/out/theme/interfaces/palette/colors/Colors.luau +0 -2
  514. package/out/theme/styles/types/ConditionalStylesMap.d.ts +0 -2
  515. package/out/theme/styles/types/ConditionalStylesMap.luau +0 -2
package/README.md CHANGED
@@ -2,39 +2,16 @@
2
2
 
3
3
  # uiblox-rbxts
4
4
 
5
- > This package is a work in progress.
6
-
7
5
  UI library and theming for roblox-ts projects.
8
6
 
9
- ## Background
10
-
11
- Roblox has their own internal design system, coined "uiblox-web", that it uses for its new
12
- web-facing products. This system offers reusable components, implemented in
13
- React Typescript, that are derived from material UI (MUI). As well, it offers a
14
- common theme/pallete for consistent UI/UX.
15
-
16
- Anyone is able to view their design system as
17
- [UIBlox-Web](https://uiblox.roblox.com). You can see that they leverage
18
- [Storybook](https://storybook.js.org), a UI component explorer for frontend
19
- developers, to render component previews.
20
-
21
- Design systems all help engineers cut down on implementation time and ensure
22
- consitent UX across products.
23
-
24
7
  ## Overview
25
8
 
26
- So what is uiblox-rbxts? Simply put, its my stab at a design system that mimics
27
- uiblox-web for games written using roblox-ts.
9
+ Uiblox is a roblox-ts UI kit: semantic themes, `makeStyles` / `createStyles`, and typed React components for Studio and games. Public APIs aim for familiar Material UI–style capability (props and behavior), implemented independently for Roblox Instances, input modes, and performance.
28
10
 
29
- UIBlox-rbxts aims to provide extensible components that can be reusable by
30
- anyone who installs this npm package. It also offers a theme and styling system
31
- that aids UI/UX consistentency.
32
-
33
- How does it do this? Well, there are two main exports from this package:
11
+ Main exports from `@rbxts/uiblox`:
34
12
 
35
13
  - @rbxts/uiblox -> theme
36
14
  - An extensible Theme type + default Dark (default) and Light themes
37
- - ... Light theme palette is a WIP
38
15
  - makeStyles/createStyles utilities to serve up Instance-extended property
39
16
  tables that can be applied to your React Components
40
17
  - ThemeProvider which can wrap your application and uses Reflex to tell
@@ -47,9 +24,45 @@ How does it do this? Well, there are two main exports from this package:
47
24
 
48
25
  ### Installation
49
26
 
50
- Install the package to get started.
27
+ ```
28
+ npm install @rbxts/uiblox
29
+ ```
30
+
31
+ ## Quickstart
51
32
 
52
- `npm install @rbxts/uiblox`
33
+ 1. Wrap your app (or a subtree) in `ThemeProvider` with `DarkTheme` or `LightTheme`.
34
+ 2. Build styles with `makeStyles` / `createStyles` (or `componentStyles`) and spread them onto Instances.
35
+ 3. For hover/press/focus/disabled (and list `_first` / `_last`), put `_hover`-style keys on the style table and call `resolveStyle(style, state)` before spreading.
36
+ 4. Use packaged components from `@rbxts/uiblox` (`Button`, `Input`, `Select`, …).
37
+ 5. Preview components in [Storyblox](https://github.com/bjlarouche/storyblox) with `*.stories` modules.
38
+
39
+ ```tsx
40
+ import React from "@rbxts/react";
41
+ import { Button, DarkTheme, ThemeProvider } from "@rbxts/uiblox";
42
+
43
+ export function App() {
44
+ return (
45
+ <ThemeProvider theme={DarkTheme}>
46
+ <Button text="Continue" onLeftClick={() => {}} />
47
+ </ThemeProvider>
48
+ );
49
+ }
50
+ ```
51
+
52
+ ## Parity checklist
53
+
54
+ Capability parity, not pixel parity. For each public component, expect:
55
+
56
+ - [ ] Typed controlled props where interaction needs state
57
+ - [ ] Theme tokens (light/dark) via `ThemeProvider`
58
+ - [ ] Style slots / variants through the styling helpers
59
+ - [ ] Disabled / loading / error when the control type warrants it
60
+ - [ ] Mouse, touch, and gamepad-friendly activation where interactive
61
+ - [ ] Cleanup and focused unit checks in-repo
62
+ - [ ] `stateMatrix` rows for visual capture planning
63
+ - [ ] A Storyblox story (dev fixtures OK)
64
+
65
+ Skipped on purpose: browser-only addons (MDX, iframes, hosted visual-review clouds).
53
66
 
54
67
  ## Example
55
68
 
@@ -196,6 +209,73 @@ const useMyComponentStyles = makeStyles<MyComponentProps>((theme: Theme, props:
196
209
  export default useMyComponentStyles;
197
210
  ```
198
211
 
212
+ ### Style precedence
213
+
214
+ Components spread their own styles first, then `className`, then the props that
215
+ carry state. Later always wins:
216
+
217
+ 1. Component styles from the theme
218
+ 2. `className` (merge several with `cx(a, condition && b)`; later args win, falsy
219
+ args are skipped)
220
+ 3. State props the component owns: `Active`, `Selectable`, `Text`, and the
221
+ value-driven sizes/positions of Slider, SplitPane, and so on
222
+
223
+ So `className` can restyle anything except a control's state. Pass `disabled`
224
+ instead of overriding `Active`.
225
+
226
+ ### Controls
227
+
228
+ Inputs are controlled: `{ value, onChange, disabled? }`. They call `onChange`
229
+ only when the value actually changes, and never while disabled.
230
+
231
+ | Component | Value | Notes |
232
+ | --- | --- | --- |
233
+ | Checkbox | `boolean` | `mixed` shows indeterminate; activating commits `true` |
234
+ | Switch | `boolean` | |
235
+ | RadioGroup / Select / Tabs | `T` from `options: { label, value: T, disabled? }[]` | compared by identity; disabled options are skipped |
236
+ | NumberInput | `number` | commits on focus lost or Enter; clamps to `min`/`max`, snaps to `step` |
237
+ | Slider | `number` | `onChange` while dragging, `onCommit` on release |
238
+ | SplitPane | first pane size (px) | display clamps to `min`/`max`; Escape cancels a drag |
239
+ | Input | `text` | `onInput` while typing, `onTextChanged` on commit |
240
+
241
+ Select and Tooltip render through `Popup`, which portals into the nearest
242
+ `LayerCollector` so clipping parents do not cut them off. The popup follows its
243
+ anchor when that anchor moves or resizes, and Select closes if the anchor leaves
244
+ the layer. Select handles Up, Down, Enter, and Escape while it is open or
245
+ selected, including when the pointer is not over it.
246
+
247
+ ### Loading
248
+
249
+ `Skeleton` covers a block that is still loading. `variant` is `text`,
250
+ `rectangular`, `rounded`, or `circular`. `width` and `height` are pixels.
251
+ `lines` and `gap` stack text rows. `SkeletonText` is the text variant.
252
+ `animation` is `pulse`, `shimmer`, or `false`. `reducedMotion` holds the block
253
+ still. A later theme preference can set that prop for you.
254
+
255
+ `CircularProgress` spins while `value` is omitted. A `value` from 0 to 1 draws
256
+ an arc and stops the spin. `size`, `thickness`, and `color` restyle the ring.
257
+ `LinearProgress` is the existing `ProgressBar`: pass `value` from 0 to 1 or
258
+ `progress` from 0 to 100. `indeterminate` slides the bar. `disabled` and
259
+ `reducedMotion` stop the motion and fade the fill.
260
+
261
+ `Button` and `IconButton` take `loading`. The control ignores clicks, hover,
262
+ and focus while loading, and its size stays put. `loadingLabel` replaces the
263
+ caption. `loadingPosition` is `start`, `center`, or `end`. `reducedMotion`
264
+ keeps the spinner still.
265
+
266
+ ### State captures
267
+
268
+ `stateMatrix` is the gallery list for Storyblox. Each row is one shot: `theme`
269
+ (`Dark` or `Light`), `width`, and `pointer` (`rest`, `hover`, `press`, or
270
+ `focus`). `open` means the Select list is showing. `options` and `disabledOption`
271
+ build RadioGroup, Select, and Tabs. `selected` and `filter` are TreeView.
272
+ `value`, `text`, `disabled`, `loading`, `mixed`, `hasError`, and `placeholder`
273
+ are that control's props. `variant`, `animation` (`pulse`, `shimmer`, or
274
+ `false`), `reducedMotion`, and `indeterminate` cover skeleton and progress
275
+ shots. Those shots stay still when `animation` is `false` or `reducedMotion`
276
+ is set. Hover, press, and focus rows are only there when the
277
+ control actually changes.
278
+
199
279
  ### Client
200
280
 
201
281
  Some sample logic for mounting app when player spawns (on client).
@@ -247,7 +327,6 @@ new AppLoader().Mount();
247
327
  # Future work
248
328
 
249
329
  - More UI packages
250
- - Finish palette for LightTheme
251
330
 
252
331
  # See Also
253
332
 
@@ -0,0 +1,3 @@
1
+ export declare function isFiniteNumber(value: unknown): value is number;
2
+ export declare function finiteOr(value: unknown, fallback: number): number;
3
+ export declare function positiveDimension(value: unknown, fallback: number): number;
@@ -0,0 +1,23 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local function isFiniteNumber(value)
3
+ local _value = value
4
+ if typeof(_value) ~= "number" then
5
+ return false
6
+ end
7
+ local number = value
8
+ return number == number and number < math.huge and number > -math.huge
9
+ end
10
+ local function finiteOr(value, fallback)
11
+ return if isFiniteNumber(value) then value else fallback
12
+ end
13
+ local function positiveDimension(value, fallback)
14
+ if not isFiniteNumber(value) or value <= 0 then
15
+ return fallback
16
+ end
17
+ return value
18
+ end
19
+ return {
20
+ isFiniteNumber = isFiniteNumber,
21
+ finiteOr = finiteOr,
22
+ positiveDimension = positiveDimension,
23
+ }
@@ -0,0 +1 @@
1
+ export { isFiniteNumber, finiteOr, positiveDimension } from "./guard";
@@ -0,0 +1,8 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local TS = _G[script]
3
+ local exports = {}
4
+ local _guard = TS.import(script, script, "guard")
5
+ exports.isFiniteNumber = _guard.isFiniteNumber
6
+ exports.finiteOr = _guard.finiteOr
7
+ exports.positiveDimension = _guard.positiveDimension
8
+ return exports
@@ -0,0 +1,10 @@
1
+ export type BreakpointName = "phone" | "tablet" | "desktop";
2
+ export type OrientationName = "portrait" | "landscape";
3
+ export declare function breakpointName(width: number): BreakpointName;
4
+ export declare function orientationName(width: number, height: number): OrientationName;
5
+ export type Responsive<T> = T | {
6
+ phone?: T;
7
+ tablet?: T;
8
+ desktop?: T;
9
+ };
10
+ export declare function resolveResponsive<T>(value: Responsive<T> | undefined, width: number): T | undefined;
@@ -0,0 +1,60 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local function usable(value)
3
+ local _value = value
4
+ local _condition = typeof(_value) ~= "number"
5
+ if not _condition then
6
+ _condition = value ~= value or value >= math.huge or value <= -math.huge or value <= 0
7
+ end
8
+ if _condition then
9
+ return 0
10
+ end
11
+ return value
12
+ end
13
+ local function breakpointName(width)
14
+ local size = usable(width)
15
+ if size < 600 then
16
+ return "phone"
17
+ end
18
+ if size < 960 then
19
+ return "tablet"
20
+ end
21
+ return "desktop"
22
+ end
23
+ local function orientationName(width, height)
24
+ return if usable(height) > usable(width) then "portrait" else "landscape"
25
+ end
26
+ local function resolveResponsive(value, width)
27
+ local _condition = value == nil
28
+ if not _condition then
29
+ local _value = value
30
+ _condition = typeof(_value) ~= "table"
31
+ end
32
+ if _condition then
33
+ return value
34
+ end
35
+ local record = value
36
+ local name = breakpointName(width)
37
+ if name == "desktop" then
38
+ local _condition_1 = record.desktop
39
+ if _condition_1 == nil then
40
+ _condition_1 = record.tablet
41
+ if _condition_1 == nil then
42
+ _condition_1 = record.phone
43
+ end
44
+ end
45
+ return _condition_1
46
+ end
47
+ if name == "tablet" then
48
+ local _condition_1 = record.tablet
49
+ if _condition_1 == nil then
50
+ _condition_1 = record.phone
51
+ end
52
+ return _condition_1
53
+ end
54
+ return record.phone
55
+ end
56
+ return {
57
+ breakpointName = breakpointName,
58
+ orientationName = orientationName,
59
+ resolveResponsive = resolveResponsive,
60
+ }
@@ -0,0 +1,4 @@
1
+ export { breakpointName, orientationName, resolveResponsive } from "./breakpoints";
2
+ export { BreakpointName, OrientationName, Responsive } from "./breakpoints";
3
+ export { useBreakpoints } from "./useBreakpoints";
4
+ export { useReducedMotion } from "./useReducedMotion";
@@ -0,0 +1,10 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local TS = _G[script]
3
+ local exports = {}
4
+ local _breakpoints = TS.import(script, script, "breakpoints")
5
+ exports.breakpointName = _breakpoints.breakpointName
6
+ exports.orientationName = _breakpoints.orientationName
7
+ exports.resolveResponsive = _breakpoints.resolveResponsive
8
+ exports.useBreakpoints = TS.import(script, script, "useBreakpoints").useBreakpoints
9
+ exports.useReducedMotion = TS.import(script, script, "useReducedMotion").useReducedMotion
10
+ return exports
@@ -0,0 +1,6 @@
1
+ export declare function useBreakpoints(host?: GuiObject): {
2
+ width: number;
3
+ height: number;
4
+ name: import("./breakpoints").BreakpointName;
5
+ orientation: import("./breakpoints").OrientationName;
6
+ };
@@ -0,0 +1,39 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local TS = _G[script]
3
+ local _react = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
+ local useEffect = _react.useEffect
5
+ local useState = _react.useState
6
+ local _breakpoints = TS.import(script, script.Parent, "breakpoints")
7
+ local breakpointName = _breakpoints.breakpointName
8
+ local orientationName = _breakpoints.orientationName
9
+ local function useBreakpoints(host)
10
+ local size, setSize = useState({
11
+ width = 0,
12
+ height = 0,
13
+ })
14
+ useEffect(function()
15
+ if host == nil then
16
+ return nil
17
+ end
18
+ local read = function()
19
+ return setSize({
20
+ width = host.AbsoluteSize.X,
21
+ height = host.AbsoluteSize.Y,
22
+ })
23
+ end
24
+ read()
25
+ local connection = host:GetPropertyChangedSignal("AbsoluteSize"):Connect(read)
26
+ return function()
27
+ return connection:Disconnect()
28
+ end
29
+ end, { host })
30
+ return {
31
+ width = size.width,
32
+ height = size.height,
33
+ name = breakpointName(size.width),
34
+ orientation = orientationName(size.width, size.height),
35
+ }
36
+ end
37
+ return {
38
+ useBreakpoints = useBreakpoints,
39
+ }
@@ -0,0 +1 @@
1
+ export declare function useReducedMotion(override?: boolean): boolean;
@@ -0,0 +1,12 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local TS = _G[script]
3
+ local useTheme = TS.import(script, script.Parent.Parent, "theme").useTheme
4
+ local resolveReduced = TS.import(script, script.Parent.Parent, "ui", "packages", "motion", "resolveReduced").resolveReduced
5
+ local function useReducedMotion(override)
6
+ local _binding = useTheme()
7
+ local theme = _binding.theme
8
+ return resolveReduced(override, theme.reducedMotion)
9
+ end
10
+ return {
11
+ useReducedMotion = useReducedMotion,
12
+ }
package/out/index.d.ts CHANGED
@@ -1,2 +1,5 @@
1
1
  export * from "./theme/index";
2
2
  export * from "./ui/index";
3
+ export * from "./interaction/index";
4
+ export * from "./foundation/index";
5
+ export * from "./hooks/index";
package/out/init.luau CHANGED
@@ -7,4 +7,13 @@ end
7
7
  for _k, _v in TS.import(script, script, "ui") or {} do
8
8
  exports[_k] = _v
9
9
  end
10
+ for _k, _v in TS.import(script, script, "interaction") or {} do
11
+ exports[_k] = _v
12
+ end
13
+ for _k, _v in TS.import(script, script, "foundation") or {} do
14
+ exports[_k] = _v
15
+ end
16
+ for _k, _v in TS.import(script, script, "hooks") or {} do
17
+ exports[_k] = _v
18
+ end
10
19
  return exports
@@ -0,0 +1,4 @@
1
+ export { usePointer } from "./usePointer";
2
+ export { PointerHandlers, UsePointerOptions } from "./usePointer";
3
+ export { pointerRoute, isKeyKind, shouldTakeKey } from "./pointerRoute";
4
+ export { PointerRoute } from "./pointerRoute";
@@ -0,0 +1,9 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local TS = _G[script]
3
+ local exports = {}
4
+ exports.usePointer = TS.import(script, script, "usePointer").usePointer
5
+ local _pointerRoute = TS.import(script, script, "pointerRoute")
6
+ exports.pointerRoute = _pointerRoute.pointerRoute
7
+ exports.isKeyKind = _pointerRoute.isKeyKind
8
+ exports.shouldTakeKey = _pointerRoute.shouldTakeKey
9
+ return exports
@@ -0,0 +1,6 @@
1
+ export type PointerRoute = "local" | "global";
2
+ /** Global pointer replaces local GuiObject events. Never both. */
3
+ export declare function pointerRoute(globalPointer?: boolean): PointerRoute;
4
+ export declare function isKeyKind(name: string): boolean;
5
+ /** Processed keys are ignored unless the caller opts into them. */
6
+ export declare function shouldTakeKey(gameProcessed: boolean, captureProcessed?: boolean): boolean;
@@ -0,0 +1,35 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ --* Global pointer replaces local GuiObject events. Never both.
3
+ local function pointerRoute(globalPointer)
4
+ return if globalPointer == true then "global" else "local"
5
+ end
6
+ local GAMEPADS = {
7
+ ["Gamepad1"] = true,
8
+ ["Gamepad2"] = true,
9
+ ["Gamepad3"] = true,
10
+ ["Gamepad4"] = true,
11
+ ["Gamepad5"] = true,
12
+ ["Gamepad6"] = true,
13
+ ["Gamepad7"] = true,
14
+ ["Gamepad8"] = true,
15
+ }
16
+ local function isKeyKind(name)
17
+ local _condition = name == "Keyboard"
18
+ if not _condition then
19
+ local _name = name
20
+ _condition = GAMEPADS[_name] ~= nil
21
+ end
22
+ return _condition
23
+ end
24
+ --* Processed keys are ignored unless the caller opts into them.
25
+ local function shouldTakeKey(gameProcessed, captureProcessed)
26
+ if captureProcessed == nil then
27
+ captureProcessed = false
28
+ end
29
+ return captureProcessed or not gameProcessed
30
+ end
31
+ return {
32
+ pointerRoute = pointerRoute,
33
+ isKeyKind = isKeyKind,
34
+ shouldTakeKey = shouldTakeKey,
35
+ }
@@ -0,0 +1,11 @@
1
+ export interface PointerHandlers {
2
+ onDown?: (position: Vector2) => void;
3
+ onUp?: (position: Vector2) => void;
4
+ onKey?: (input: InputObject) => void;
5
+ }
6
+ export interface UsePointerOptions {
7
+ globalPointer?: boolean;
8
+ keyboard?: boolean;
9
+ captureProcessed?: boolean;
10
+ }
11
+ export declare function usePointer(target: GuiObject | undefined, handlers: PointerHandlers, options?: UsePointerOptions): void;
@@ -0,0 +1,99 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local TS = _G[script]
3
+ local _react = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
+ local useEffect = _react.useEffect
5
+ local useRef = _react.useRef
6
+ local UserInputService = TS.import(script, TS.getModule(script, "@rbxts", "services")).UserInputService
7
+ local _pointerRoute = TS.import(script, script.Parent, "pointerRoute")
8
+ local isKeyKind = _pointerRoute.isKeyKind
9
+ local pointerRoute = _pointerRoute.pointerRoute
10
+ local shouldTakeKey = _pointerRoute.shouldTakeKey
11
+ local function isPointerButton(input)
12
+ local kind = input.UserInputType
13
+ return kind == Enum.UserInputType.MouseButton1 or kind == Enum.UserInputType.Touch
14
+ end
15
+ local function positionOf(input)
16
+ return Vector2.new(input.Position.X, input.Position.Y)
17
+ end
18
+ local function usePointer(target, handlers, options)
19
+ if options == nil then
20
+ options = {}
21
+ end
22
+ local current = useRef(handlers)
23
+ current.current = handlers
24
+ local route = pointerRoute(options.globalPointer)
25
+ local captureProcessed = options.captureProcessed == true
26
+ useEffect(function()
27
+ if route ~= "local" or not target then
28
+ return nil
29
+ end
30
+ local began = target.InputBegan:Connect(function(input)
31
+ if isPointerButton(input) then
32
+ local _result = current.current.onDown
33
+ if _result ~= nil then
34
+ _result(positionOf(input))
35
+ end
36
+ end
37
+ end)
38
+ local ended = target.InputEnded:Connect(function(input)
39
+ if isPointerButton(input) then
40
+ local _result = current.current.onUp
41
+ if _result ~= nil then
42
+ _result(positionOf(input))
43
+ end
44
+ end
45
+ end)
46
+ return function()
47
+ began:Disconnect()
48
+ ended:Disconnect()
49
+ end
50
+ end, { target, route })
51
+ useEffect(function()
52
+ if route ~= "global" then
53
+ return nil
54
+ end
55
+ local began = UserInputService.InputBegan:Connect(function(input)
56
+ if isPointerButton(input) then
57
+ local _result = current.current.onDown
58
+ if _result ~= nil then
59
+ _result(positionOf(input))
60
+ end
61
+ end
62
+ end)
63
+ local ended = UserInputService.InputEnded:Connect(function(input)
64
+ if isPointerButton(input) then
65
+ local _result = current.current.onUp
66
+ if _result ~= nil then
67
+ _result(positionOf(input))
68
+ end
69
+ end
70
+ end)
71
+ return function()
72
+ began:Disconnect()
73
+ ended:Disconnect()
74
+ end
75
+ end, { route })
76
+ useEffect(function()
77
+ if options.keyboard ~= true then
78
+ return nil
79
+ end
80
+ local connection = UserInputService.InputBegan:Connect(function(input, gameProcessed)
81
+ if not isKeyKind(input.UserInputType.Name) then
82
+ return nil
83
+ end
84
+ if not shouldTakeKey(gameProcessed, captureProcessed) then
85
+ return nil
86
+ end
87
+ local _result = current.current.onKey
88
+ if _result ~= nil then
89
+ _result(input)
90
+ end
91
+ end)
92
+ return function()
93
+ return connection:Disconnect()
94
+ end
95
+ end, { options.keyboard, captureProcessed })
96
+ end
97
+ return {
98
+ usePointer = usePointer,
99
+ }
@@ -1,5 +1,2 @@
1
- import { Colors } from "../interfaces/palette/colors/index";
2
1
  import { Borders } from "../interfaces/spacing/index";
3
- export declare const DARK_THEME_COLORS: Colors;
4
- export declare const LIGHT_THEME_COLORS: Colors;
5
2
  export declare const DEFAULT_BORDERS: Borders;
@@ -1,104 +1,8 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
- local TS = _G[script]
3
- local _colors = TS.import(script, script.Parent.Parent, "interfaces", "palette", "colors")
4
- local Blue = _colors.Blue
5
- local Common = _colors.Common
6
- local Gray = _colors.Gray
7
- local Green = _colors.Green
8
- local Purple = _colors.Purple
9
- local Red = _colors.Red
10
- local Yellow = _colors.Yellow
11
- -- dark theme
12
- local DARK_THEME_COLORS = {
13
- backgroundDefault = Common.Black,
14
- backgroundContrast = Gray[110],
15
- backgroundMuted = Gray[90],
16
- backgroundUIDefault = Gray[90],
17
- backgroundUIMuted = Gray[100],
18
- backgroundUIContrast = Gray[100],
19
- UIDefault = Gray[70],
20
- UIMuted = Gray[100],
21
- UIEmphasis = Gray[80],
22
- textDefault = Common.White,
23
- textMuted = Gray[50],
24
- textEmphasis = Common.White,
25
- iconDefault = Common.White,
26
- iconEmphasis = Common.White,
27
- iconOnHover = Common.White,
28
- systemPrimaryDefault = Common.White,
29
- systemPrimaryOnHover = Gray[40],
30
- systemPrimaryContent = Common.Black,
31
- contextualPrimaryDefault = Green[50],
32
- contextualPrimaryOnHover = Green[40],
33
- contextualPrimaryContent = Common.Black,
34
- secondaryDefault = Common.White,
35
- secondaryOnHover = Gray[40],
36
- secondaryContent = Common.White,
37
- divider = Gray[70],
38
- overlay = Common.Black,
39
- dropShadow = Common.Black,
40
- navigationBar = Gray[110],
41
- badge = Common.White,
42
- badgeContent = Common.Black,
43
- placeholder = Gray[100],
44
- online = Green[50],
45
- offline = Gray[50],
46
- alert = Red[60],
47
- success = Green[50],
48
- accent = Purple[50],
49
- link = Blue[50],
50
- caution = Yellow[50],
51
- text = Common.White,
52
- background = Common.Black,
53
- }
54
- local LIGHT_THEME_COLORS = {
55
- backgroundDefault = Common.White,
56
- backgroundContrast = Gray[40],
57
- backgroundMuted = Gray[30],
58
- backgroundUIDefault = Gray[30],
59
- backgroundUIMuted = Gray[50],
60
- backgroundUIContrast = Gray[50],
61
- UIDefault = Gray[70],
62
- UIMuted = Gray[50],
63
- UIEmphasis = Gray[80],
64
- textDefault = Common.Black,
65
- textMuted = Gray[50],
66
- textEmphasis = Common.Black,
67
- iconDefault = Common.Black,
68
- iconEmphasis = Common.Black,
69
- iconOnHover = Common.Black,
70
- systemPrimaryDefault = Common.Black,
71
- systemPrimaryOnHover = Gray[40],
72
- systemPrimaryContent = Common.White,
73
- contextualPrimaryDefault = Green[60],
74
- contextualPrimaryOnHover = Green[40],
75
- contextualPrimaryContent = Common.White,
76
- secondaryDefault = Common.Black,
77
- secondaryOnHover = Gray[40],
78
- secondaryContent = Common.Black,
79
- divider = Gray[70],
80
- overlay = Common.White,
81
- dropShadow = Common.White,
82
- navigationBar = Gray[40],
83
- badge = Common.Black,
84
- badgeContent = Common.White,
85
- placeholder = Gray[50],
86
- online = Green[60],
87
- offline = Gray[50],
88
- alert = Red[60],
89
- success = Green[60],
90
- accent = Purple[50],
91
- link = Blue[50],
92
- caution = Yellow[50],
93
- text = Common.Black,
94
- background = Common.White,
95
- }
96
2
  local DEFAULT_BORDERS = {
97
3
  default = 1,
98
4
  divider = 2,
99
5
  }
100
6
  return {
101
- DARK_THEME_COLORS = DARK_THEME_COLORS,
102
- LIGHT_THEME_COLORS = LIGHT_THEME_COLORS,
103
7
  DEFAULT_BORDERS = DEFAULT_BORDERS,
104
8
  }
@@ -1,5 +1,5 @@
1
1
  import { IconSizes } from "../interfaces/index";
2
- export declare const SPACING_BASE = 12;
2
+ export declare const SPACING_BASE = 8;
3
3
  export declare const PADDING_BASE = 4;
4
4
  export declare const BORDER_RADIUS = 4;
5
5
  export declare const CONTENT_WIDTH = 1024;