@rbxts/uiblox 0.1.52 → 0.2.0-alpha.0

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 (491) hide show
  1. package/README.md +67 -2
  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/context/ThemeProvider.d.ts +3 -0
  25. package/out/theme/context/ThemeProvider.luau +15 -8
  26. package/out/theme/context/themeScope.d.ts +5 -0
  27. package/out/theme/context/themeScope.luau +7 -0
  28. package/out/theme/hooks/useTheme.luau +15 -14
  29. package/out/theme/interfaces/density/controlMetrics.d.ts +21 -0
  30. package/out/theme/interfaces/density/controlMetrics.luau +67 -0
  31. package/out/theme/interfaces/density/index.d.ts +1 -0
  32. package/out/theme/interfaces/density/init.luau +7 -0
  33. package/out/theme/interfaces/index.d.ts +1 -0
  34. package/out/theme/interfaces/init.luau +3 -0
  35. package/out/theme/interfaces/palette/Palette.d.ts +39 -18
  36. package/out/theme/interfaces/palette/colors/index.d.ts +0 -1
  37. package/out/theme/interfaces/palette/index.d.ts +1 -0
  38. package/out/theme/interfaces/theme/Theme.d.ts +13 -0
  39. package/out/theme/interfaces/theme/ThemeConstants.d.ts +0 -18
  40. package/out/theme/styles/index.d.ts +1 -2
  41. package/out/theme/styles/init.luau +3 -1
  42. package/out/theme/styles/types/index.d.ts +0 -1
  43. package/out/theme/styles/utilities/classNames.d.ts +3 -2
  44. package/out/theme/styles/utilities/classNames.luau +7 -173
  45. package/out/theme/styles/utilities/componentStyles.d.ts +7 -0
  46. package/out/theme/styles/utilities/componentStyles.luau +31 -0
  47. package/out/theme/styles/utilities/componentTheme.d.ts +20 -0
  48. package/out/theme/styles/utilities/componentTheme.luau +53 -0
  49. package/out/theme/styles/utilities/createStyles.d.ts +1 -2
  50. package/out/theme/styles/utilities/index.d.ts +5 -1
  51. package/out/theme/styles/utilities/init.luau +7 -1
  52. package/out/theme/styles/utilities/interaction.d.ts +13 -0
  53. package/out/theme/styles/utilities/interaction.luau +68 -0
  54. package/out/theme/styles/utilities/makeStyles.luau +14 -15
  55. package/out/theme/styles/utilities/styleCache.d.ts +2 -0
  56. package/out/theme/styles/utilities/styleCache.luau +68 -0
  57. package/out/theme/styles/utilities/variants.d.ts +19 -0
  58. package/out/theme/styles/utilities/variants.luau +59 -0
  59. package/out/theme/themes/DarkTheme.luau +4 -57
  60. package/out/theme/themes/LightTheme.luau +4 -57
  61. package/out/theme/themes/createPalette.d.ts +3 -0
  62. package/out/theme/themes/createPalette.luau +111 -0
  63. package/out/theme/themes/index.d.ts +1 -0
  64. package/out/theme/themes/init.luau +3 -0
  65. package/out/theme/types/types.d.ts +1 -0
  66. package/out/theme/utilites/colorMath.d.ts +8 -0
  67. package/out/theme/utilites/colorMath.luau +35 -0
  68. package/out/theme/utilites/index.d.ts +1 -0
  69. package/out/theme/utilites/init.luau +6 -0
  70. package/out/ui/enums/Icons.d.ts +5 -1
  71. package/out/ui/enums/Icons.luau +4 -0
  72. package/out/ui/index.d.ts +12 -0
  73. package/out/ui/init.luau +5 -0
  74. package/out/ui/packages/accordion/components/Accordion.d.ts +11 -0
  75. package/out/ui/packages/accordion/components/Accordion.luau +93 -0
  76. package/out/ui/packages/accordion/components/Accordion.styles.d.ts +4 -0
  77. package/out/ui/packages/accordion/components/Accordion.styles.luau +65 -0
  78. package/out/ui/packages/accordion/components/accordionOpen.d.ts +1 -0
  79. package/out/ui/packages/accordion/components/accordionOpen.luau +10 -0
  80. package/out/ui/packages/accordion/index.d.ts +2 -0
  81. package/out/ui/packages/accordion/init.luau +5 -0
  82. package/out/ui/packages/assetField/components/AssetField.d.ts +10 -0
  83. package/out/ui/packages/assetField/components/AssetField.luau +75 -0
  84. package/out/ui/packages/assetField/components/AssetField.styles.d.ts +2 -0
  85. package/out/ui/packages/assetField/components/AssetField.styles.luau +33 -0
  86. package/out/ui/packages/assetField/components/assetPreviewUri.d.ts +1 -0
  87. package/out/ui/packages/assetField/components/assetPreviewUri.luau +25 -0
  88. package/out/ui/packages/assetField/index.d.ts +2 -0
  89. package/out/ui/packages/assetField/init.luau +5 -0
  90. package/out/ui/packages/autocomplete/components/Autocomplete.d.ts +5 -0
  91. package/out/ui/packages/autocomplete/components/Autocomplete.luau +45 -0
  92. package/out/ui/packages/autocomplete/components/autocompleteSearchable.d.ts +1 -0
  93. package/out/ui/packages/autocomplete/components/autocompleteSearchable.luau +7 -0
  94. package/out/ui/packages/autocomplete/index.d.ts +2 -0
  95. package/out/ui/packages/autocomplete/init.luau +5 -0
  96. package/out/ui/packages/avatar/components/Avatar.d.ts +8 -0
  97. package/out/ui/packages/avatar/components/Avatar.luau +69 -0
  98. package/out/ui/packages/avatar/components/Avatar.styles.d.ts +4 -0
  99. package/out/ui/packages/avatar/components/Avatar.styles.luau +39 -0
  100. package/out/ui/packages/avatar/components/avatarText.d.ts +1 -0
  101. package/out/ui/packages/avatar/components/avatarText.luau +17 -0
  102. package/out/ui/packages/avatar/index.d.ts +3 -0
  103. package/out/ui/packages/avatar/init.luau +6 -0
  104. package/out/ui/packages/badge/components/Badge.d.ts +10 -0
  105. package/out/ui/packages/badge/components/Badge.luau +69 -0
  106. package/out/ui/packages/badge/components/Badge.styles.d.ts +2 -0
  107. package/out/ui/packages/badge/components/Badge.styles.luau +38 -0
  108. package/out/ui/packages/badge/components/badgeValue.d.ts +1 -0
  109. package/out/ui/packages/badge/components/badgeValue.luau +7 -0
  110. package/out/ui/packages/badge/index.d.ts +3 -0
  111. package/out/ui/packages/badge/init.luau +6 -0
  112. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.d.ts +11 -0
  113. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.luau +82 -0
  114. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.styles.d.ts +2 -0
  115. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.styles.luau +47 -0
  116. package/out/ui/packages/breadcrumbs/components/breadcrumbItems.d.ts +1 -0
  117. package/out/ui/packages/breadcrumbs/components/breadcrumbItems.luau +7 -0
  118. package/out/ui/packages/breadcrumbs/index.d.ts +2 -0
  119. package/out/ui/packages/breadcrumbs/init.luau +5 -0
  120. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.d.ts +9 -0
  121. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.luau +234 -0
  122. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.styles.d.ts +2 -0
  123. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.styles.luau +98 -0
  124. package/out/ui/packages/brickColorPicker/components/brickColorCatalog.d.ts +1 -0
  125. package/out/ui/packages/brickColorPicker/components/brickColorCatalog.luau +26 -0
  126. package/out/ui/packages/brickColorPicker/components/brickColorFilter.d.ts +2 -0
  127. package/out/ui/packages/brickColorPicker/components/brickColorFilter.luau +26 -0
  128. package/out/ui/packages/brickColorPicker/index.d.ts +3 -0
  129. package/out/ui/packages/brickColorPicker/init.luau +8 -0
  130. package/out/ui/packages/button/components/Button.d.ts +4 -0
  131. package/out/ui/packages/button/components/Button.luau +90 -37
  132. package/out/ui/packages/button/components/Button.styles.luau +18 -32
  133. package/out/ui/packages/button/components/activation.d.ts +1 -0
  134. package/out/ui/packages/button/components/activation.luau +7 -0
  135. package/out/ui/packages/button/components/buttonLook.d.ts +12 -0
  136. package/out/ui/packages/button/components/buttonLook.luau +55 -0
  137. package/out/ui/packages/button/types/ButtonSize.d.ts +1 -1
  138. package/out/ui/packages/card/components/Card.d.ts +11 -0
  139. package/out/ui/packages/card/components/Card.luau +74 -0
  140. package/out/ui/packages/card/components/Card.styles.d.ts +2 -0
  141. package/out/ui/packages/card/components/Card.styles.luau +66 -0
  142. package/out/ui/packages/card/index.d.ts +2 -0
  143. package/out/ui/packages/card/init.luau +5 -0
  144. package/out/ui/packages/cframeEditor/components/CFrameEditor.d.ts +8 -0
  145. package/out/ui/packages/cframeEditor/components/CFrameEditor.luau +89 -0
  146. package/out/ui/packages/cframeEditor/components/CFrameEditor.styles.d.ts +2 -0
  147. package/out/ui/packages/cframeEditor/components/CFrameEditor.styles.luau +46 -0
  148. package/out/ui/packages/cframeEditor/components/cframeValue.d.ts +3 -0
  149. package/out/ui/packages/cframeEditor/components/cframeValue.luau +15 -0
  150. package/out/ui/packages/cframeEditor/index.d.ts +2 -0
  151. package/out/ui/packages/cframeEditor/init.luau +5 -0
  152. package/out/ui/packages/checkbox/components/Checkbox.d.ts +11 -0
  153. package/out/ui/packages/checkbox/components/Checkbox.luau +136 -0
  154. package/out/ui/packages/checkbox/components/Checkbox.styles.d.ts +6 -0
  155. package/out/ui/packages/checkbox/components/Checkbox.styles.luau +69 -0
  156. package/out/ui/packages/checkbox/components/checkboxLook.d.ts +5 -0
  157. package/out/ui/packages/checkbox/components/checkboxLook.luau +52 -0
  158. package/out/ui/packages/checkbox/components/nextChecked.d.ts +1 -0
  159. package/out/ui/packages/checkbox/components/nextChecked.luau +7 -0
  160. package/out/ui/packages/checkbox/index.d.ts +2 -0
  161. package/out/ui/packages/checkbox/init.luau +5 -0
  162. package/out/ui/packages/chip/components/Chip.d.ts +9 -0
  163. package/out/ui/packages/chip/components/Chip.luau +63 -0
  164. package/out/ui/packages/chip/components/Chip.styles.d.ts +5 -0
  165. package/out/ui/packages/chip/components/Chip.styles.luau +47 -0
  166. package/out/ui/packages/chip/index.d.ts +2 -0
  167. package/out/ui/packages/chip/init.luau +5 -0
  168. package/out/ui/packages/circularProgress/components/CircularProgress.d.ts +11 -0
  169. package/out/ui/packages/circularProgress/components/CircularProgress.luau +109 -0
  170. package/out/ui/packages/circularProgress/index.d.ts +2 -0
  171. package/out/ui/packages/circularProgress/init.luau +5 -0
  172. package/out/ui/packages/colorPicker/components/ColorPicker.d.ts +8 -0
  173. package/out/ui/packages/colorPicker/components/ColorPicker.luau +512 -0
  174. package/out/ui/packages/colorPicker/components/ColorPicker.styles.d.ts +2 -0
  175. package/out/ui/packages/colorPicker/components/ColorPicker.styles.luau +145 -0
  176. package/out/ui/packages/colorPicker/components/ColorSequenceEditor.d.ts +8 -0
  177. package/out/ui/packages/colorPicker/components/ColorSequenceEditor.luau +190 -0
  178. package/out/ui/packages/colorPicker/components/NumberSequenceEditor.d.ts +8 -0
  179. package/out/ui/packages/colorPicker/components/NumberSequenceEditor.luau +240 -0
  180. package/out/ui/packages/colorPicker/components/colorValue.d.ts +22 -0
  181. package/out/ui/packages/colorPicker/components/colorValue.luau +157 -0
  182. package/out/ui/packages/colorPicker/components/sequenceValue.d.ts +26 -0
  183. package/out/ui/packages/colorPicker/components/sequenceValue.luau +307 -0
  184. package/out/ui/packages/colorPicker/index.d.ts +11 -0
  185. package/out/ui/packages/colorPicker/init.luau +37 -0
  186. package/out/ui/packages/dialog/components/Dialog.d.ts +11 -0
  187. package/out/ui/packages/dialog/components/Dialog.luau +56 -0
  188. package/out/ui/packages/dialog/components/Dialog.styles.d.ts +2 -0
  189. package/out/ui/packages/dialog/components/Dialog.styles.luau +55 -0
  190. package/out/ui/packages/dialog/index.d.ts +2 -0
  191. package/out/ui/packages/dialog/init.luau +5 -0
  192. package/out/ui/packages/divider/components/Divider.luau +6 -0
  193. package/out/ui/packages/divider/components/Divider.styles.luau +4 -4
  194. package/out/ui/packages/drawer/components/Drawer.d.ts +11 -0
  195. package/out/ui/packages/drawer/components/Drawer.luau +77 -0
  196. package/out/ui/packages/drawer/components/Drawer.styles.d.ts +2 -0
  197. package/out/ui/packages/drawer/components/Drawer.styles.luau +40 -0
  198. package/out/ui/packages/drawer/components/drawerPlacement.d.ts +2 -0
  199. package/out/ui/packages/drawer/components/drawerPlacement.luau +7 -0
  200. package/out/ui/packages/drawer/index.d.ts +3 -0
  201. package/out/ui/packages/drawer/init.luau +5 -0
  202. package/out/ui/packages/enumPicker/components/EnumPicker.d.ts +11 -0
  203. package/out/ui/packages/enumPicker/components/EnumPicker.luau +42 -0
  204. package/out/ui/packages/enumPicker/components/enumOptions.d.ts +5 -0
  205. package/out/ui/packages/enumPicker/components/enumOptions.luau +28 -0
  206. package/out/ui/packages/enumPicker/index.d.ts +2 -0
  207. package/out/ui/packages/enumPicker/init.luau +5 -0
  208. package/out/ui/packages/fontEditor/components/FontEditor.d.ts +8 -0
  209. package/out/ui/packages/fontEditor/components/FontEditor.luau +223 -0
  210. package/out/ui/packages/fontEditor/components/FontEditor.styles.d.ts +2 -0
  211. package/out/ui/packages/fontEditor/components/FontEditor.styles.luau +56 -0
  212. package/out/ui/packages/fontEditor/components/fontValue.d.ts +10 -0
  213. package/out/ui/packages/fontEditor/components/fontValue.luau +81 -0
  214. package/out/ui/packages/fontEditor/index.d.ts +4 -0
  215. package/out/ui/packages/fontEditor/init.luau +10 -0
  216. package/out/ui/packages/gradientEditor/components/GradientEditor.d.ts +10 -0
  217. package/out/ui/packages/gradientEditor/components/GradientEditor.luau +156 -0
  218. package/out/ui/packages/gradientEditor/components/GradientEditor.styles.d.ts +2 -0
  219. package/out/ui/packages/gradientEditor/components/GradientEditor.styles.luau +37 -0
  220. package/out/ui/packages/gradientEditor/components/gradientPatch.d.ts +8 -0
  221. package/out/ui/packages/gradientEditor/components/gradientPatch.luau +17 -0
  222. package/out/ui/packages/gradientEditor/components/gradientValue.d.ts +9 -0
  223. package/out/ui/packages/gradientEditor/components/gradientValue.luau +23 -0
  224. package/out/ui/packages/gradientEditor/index.d.ts +2 -0
  225. package/out/ui/packages/gradientEditor/init.luau +5 -0
  226. package/out/ui/packages/icon/components/Icon.luau +6 -0
  227. package/out/ui/packages/icon/components/Icon.styles.luau +3 -3
  228. package/out/ui/packages/iconButton/components/IconButton.d.ts +3 -0
  229. package/out/ui/packages/iconButton/components/IconButton.luau +53 -5
  230. package/out/ui/packages/iconButton/components/IconButton.styles.luau +3 -3
  231. package/out/ui/packages/index.d.ts +46 -0
  232. package/out/ui/packages/init.luau +138 -0
  233. package/out/ui/packages/input/components/Input.d.ts +6 -1
  234. package/out/ui/packages/input/components/Input.luau +137 -54
  235. package/out/ui/packages/input/components/Input.styles.d.ts +3 -1
  236. package/out/ui/packages/input/components/Input.styles.luau +74 -52
  237. package/out/ui/packages/input/components/inputDraft.d.ts +1 -0
  238. package/out/ui/packages/input/components/inputDraft.luau +17 -0
  239. package/out/ui/packages/input/components/inputInsets.d.ts +4 -0
  240. package/out/ui/packages/input/components/inputInsets.luau +10 -0
  241. package/out/ui/packages/layout/components/Grid.luau +8 -2
  242. package/out/ui/packages/layout/components/List.luau +8 -2
  243. package/out/ui/packages/listItem/components/ListItem.d.ts +9 -0
  244. package/out/ui/packages/listItem/components/ListItem.luau +67 -0
  245. package/out/ui/packages/listItem/components/ListItem.styles.d.ts +5 -0
  246. package/out/ui/packages/listItem/components/ListItem.styles.luau +64 -0
  247. package/out/ui/packages/listItem/index.d.ts +2 -0
  248. package/out/ui/packages/listItem/init.luau +5 -0
  249. package/out/ui/packages/loadingStroke/components/LoadingStroke.luau +27 -22
  250. package/out/ui/packages/menu/components/Menu.d.ts +14 -0
  251. package/out/ui/packages/menu/components/Menu.luau +60 -0
  252. package/out/ui/packages/menu/components/Menu.styles.d.ts +2 -0
  253. package/out/ui/packages/menu/components/Menu.styles.luau +26 -0
  254. package/out/ui/packages/menu/index.d.ts +2 -0
  255. package/out/ui/packages/menu/init.luau +5 -0
  256. package/out/ui/packages/modal/components/Modal.d.ts +9 -0
  257. package/out/ui/packages/modal/components/Modal.luau +97 -0
  258. package/out/ui/packages/modal/components/Modal.styles.d.ts +2 -0
  259. package/out/ui/packages/modal/components/Modal.styles.luau +47 -0
  260. package/out/ui/packages/modal/components/dismissInput.d.ts +1 -0
  261. package/out/ui/packages/modal/components/dismissInput.luau +8 -0
  262. package/out/ui/packages/modal/components/focusTrap.d.ts +2 -0
  263. package/out/ui/packages/modal/components/focusTrap.luau +22 -0
  264. package/out/ui/packages/modal/index.d.ts +2 -0
  265. package/out/ui/packages/modal/init.luau +5 -0
  266. package/out/ui/packages/motion/duration.d.ts +2 -0
  267. package/out/ui/packages/motion/duration.luau +17 -0
  268. package/out/ui/packages/motion/index.d.ts +5 -0
  269. package/out/ui/packages/motion/init.luau +16 -0
  270. package/out/ui/packages/motion/loop.d.ts +1 -0
  271. package/out/ui/packages/motion/loop.luau +18 -0
  272. package/out/ui/packages/motion/play.d.ts +1 -0
  273. package/out/ui/packages/motion/play.luau +23 -0
  274. package/out/ui/packages/motion/resolveReduced.d.ts +1 -0
  275. package/out/ui/packages/motion/resolveReduced.luau +10 -0
  276. package/out/ui/packages/motion/unit.d.ts +8 -0
  277. package/out/ui/packages/motion/unit.luau +80 -0
  278. package/out/ui/packages/numberInput/components/NumberInput.d.ts +14 -0
  279. package/out/ui/packages/numberInput/components/NumberInput.luau +44 -0
  280. package/out/ui/packages/numberInput/components/numberValue.d.ts +2 -0
  281. package/out/ui/packages/numberInput/components/numberValue.luau +29 -0
  282. package/out/ui/packages/numberInput/index.d.ts +2 -0
  283. package/out/ui/packages/numberInput/init.luau +5 -0
  284. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.d.ts +8 -0
  285. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.luau +96 -0
  286. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.styles.d.ts +2 -0
  287. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.styles.luau +41 -0
  288. package/out/ui/packages/numberRangeEditor/components/numberRangeValue.d.ts +4 -0
  289. package/out/ui/packages/numberRangeEditor/components/numberRangeValue.luau +16 -0
  290. package/out/ui/packages/numberRangeEditor/index.d.ts +2 -0
  291. package/out/ui/packages/numberRangeEditor/init.luau +5 -0
  292. package/out/ui/packages/pagination/components/Pagination.d.ts +9 -0
  293. package/out/ui/packages/pagination/components/Pagination.luau +72 -0
  294. package/out/ui/packages/pagination/components/Pagination.styles.d.ts +2 -0
  295. package/out/ui/packages/pagination/components/Pagination.styles.luau +39 -0
  296. package/out/ui/packages/pagination/components/pageRange.d.ts +1 -0
  297. package/out/ui/packages/pagination/components/pageRange.luau +24 -0
  298. package/out/ui/packages/pagination/index.d.ts +2 -0
  299. package/out/ui/packages/pagination/init.luau +5 -0
  300. package/out/ui/packages/paper/components/Paper.d.ts +8 -0
  301. package/out/ui/packages/paper/components/Paper.luau +31 -0
  302. package/out/ui/packages/paper/components/Paper.styles.d.ts +4 -0
  303. package/out/ui/packages/paper/components/Paper.styles.luau +32 -0
  304. package/out/ui/packages/paper/index.d.ts +2 -0
  305. package/out/ui/packages/paper/init.luau +5 -0
  306. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.d.ts +8 -0
  307. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.luau +85 -0
  308. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.styles.d.ts +2 -0
  309. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.styles.luau +46 -0
  310. package/out/ui/packages/physicalPropertiesEditor/components/physicalParts.d.ts +3 -0
  311. package/out/ui/packages/physicalPropertiesEditor/components/physicalParts.luau +14 -0
  312. package/out/ui/packages/physicalPropertiesEditor/index.d.ts +2 -0
  313. package/out/ui/packages/physicalPropertiesEditor/init.luau +5 -0
  314. package/out/ui/packages/popup/components/Popup.d.ts +13 -0
  315. package/out/ui/packages/popup/components/Popup.luau +131 -0
  316. package/out/ui/packages/popup/components/Portal.d.ts +7 -0
  317. package/out/ui/packages/popup/components/Portal.luau +15 -0
  318. package/out/ui/packages/popup/components/placement.d.ts +9 -0
  319. package/out/ui/packages/popup/components/placement.luau +41 -0
  320. package/out/ui/packages/popup/components/portalTarget.d.ts +1 -0
  321. package/out/ui/packages/popup/components/portalTarget.luau +13 -0
  322. package/out/ui/packages/popup/index.d.ts +4 -0
  323. package/out/ui/packages/popup/init.luau +6 -0
  324. package/out/ui/packages/preloader/components/Preloader.luau +6 -0
  325. package/out/ui/packages/preloader/components/Preloader.styles.luau +3 -3
  326. package/out/ui/packages/progressBar/components/ProgressBar.d.ts +8 -1
  327. package/out/ui/packages/progressBar/components/ProgressBar.luau +61 -11
  328. package/out/ui/packages/progressBar/components/ProgressBar.styles.luau +2 -2
  329. package/out/ui/packages/progressBar/index.d.ts +2 -3
  330. package/out/ui/packages/progressBar/init.luau +3 -4
  331. package/out/ui/packages/radioGroup/components/RadioGroup.d.ts +16 -0
  332. package/out/ui/packages/radioGroup/components/RadioGroup.luau +112 -0
  333. package/out/ui/packages/radioGroup/components/RadioGroup.styles.d.ts +6 -0
  334. package/out/ui/packages/radioGroup/components/RadioGroup.styles.luau +66 -0
  335. package/out/ui/packages/radioGroup/index.d.ts +2 -0
  336. package/out/ui/packages/radioGroup/init.luau +5 -0
  337. package/out/ui/packages/rayEditor/components/RayEditor.d.ts +8 -0
  338. package/out/ui/packages/rayEditor/components/RayEditor.luau +83 -0
  339. package/out/ui/packages/rayEditor/components/RayEditor.styles.d.ts +2 -0
  340. package/out/ui/packages/rayEditor/components/RayEditor.styles.luau +37 -0
  341. package/out/ui/packages/rayEditor/components/rayParts.d.ts +1 -0
  342. package/out/ui/packages/rayEditor/components/rayParts.luau +10 -0
  343. package/out/ui/packages/rayEditor/index.d.ts +2 -0
  344. package/out/ui/packages/rayEditor/init.luau +5 -0
  345. package/out/ui/packages/rectEditor/components/RectEditor.d.ts +8 -0
  346. package/out/ui/packages/rectEditor/components/RectEditor.luau +85 -0
  347. package/out/ui/packages/rectEditor/components/RectEditor.styles.d.ts +2 -0
  348. package/out/ui/packages/rectEditor/components/RectEditor.styles.luau +46 -0
  349. package/out/ui/packages/rectEditor/components/rectValue.d.ts +3 -0
  350. package/out/ui/packages/rectEditor/components/rectValue.luau +14 -0
  351. package/out/ui/packages/rectEditor/index.d.ts +2 -0
  352. package/out/ui/packages/rectEditor/init.luau +5 -0
  353. package/out/ui/packages/scroll/dragScroll.d.ts +8 -0
  354. package/out/ui/packages/scroll/dragScroll.luau +51 -0
  355. package/out/ui/packages/scroll/index.d.ts +2 -0
  356. package/out/ui/packages/scroll/init.luau +5 -0
  357. package/out/ui/packages/scroll/useDragScroll.d.ts +5 -0
  358. package/out/ui/packages/scroll/useDragScroll.luau +127 -0
  359. package/out/ui/packages/select/components/Select.d.ts +15 -0
  360. package/out/ui/packages/select/components/Select.luau +432 -0
  361. package/out/ui/packages/select/components/Select.styles.d.ts +6 -0
  362. package/out/ui/packages/select/components/Select.styles.luau +104 -0
  363. package/out/ui/packages/select/components/optionLabel.d.ts +1 -0
  364. package/out/ui/packages/select/components/optionLabel.luau +7 -0
  365. package/out/ui/packages/select/components/selectFilter.d.ts +4 -0
  366. package/out/ui/packages/select/components/selectFilter.luau +27 -0
  367. package/out/ui/packages/select/components/selectFocus.d.ts +4 -0
  368. package/out/ui/packages/select/components/selectFocus.luau +16 -0
  369. package/out/ui/packages/select/components/selectGroups.d.ts +18 -0
  370. package/out/ui/packages/select/components/selectGroups.luau +38 -0
  371. package/out/ui/packages/select/components/selectKey.d.ts +4 -0
  372. package/out/ui/packages/select/components/selectKey.luau +14 -0
  373. package/out/ui/packages/select/components/selectMotion.d.ts +2 -0
  374. package/out/ui/packages/select/components/selectMotion.luau +12 -0
  375. package/out/ui/packages/select/components/selectMulti.d.ts +5 -0
  376. package/out/ui/packages/select/components/selectMulti.luau +26 -0
  377. package/out/ui/packages/select/components/selectTypeahead.d.ts +4 -0
  378. package/out/ui/packages/select/components/selectTypeahead.luau +58 -0
  379. package/out/ui/packages/select/components/stepChoice.d.ts +3 -0
  380. package/out/ui/packages/select/components/stepChoice.luau +24 -0
  381. package/out/ui/packages/select/index.d.ts +3 -0
  382. package/out/ui/packages/select/init.luau +8 -0
  383. package/out/ui/packages/shadow/components/Shadow.styles.luau +3 -3
  384. package/out/ui/packages/sidebar/components/Sidebar.luau +6 -0
  385. package/out/ui/packages/sidebar/components/Sidebar.styles.luau +3 -3
  386. package/out/ui/packages/skeleton/components/Skeleton.d.ts +15 -0
  387. package/out/ui/packages/skeleton/components/Skeleton.luau +224 -0
  388. package/out/ui/packages/skeleton/components/Skeleton.styles.d.ts +2 -0
  389. package/out/ui/packages/skeleton/components/Skeleton.styles.luau +27 -0
  390. package/out/ui/packages/skeleton/components/skeletonMotion.d.ts +3 -0
  391. package/out/ui/packages/skeleton/components/skeletonMotion.luau +17 -0
  392. package/out/ui/packages/skeleton/index.d.ts +3 -0
  393. package/out/ui/packages/skeleton/init.luau +7 -0
  394. package/out/ui/packages/slider/components/Slider.d.ts +13 -0
  395. package/out/ui/packages/slider/components/Slider.luau +204 -0
  396. package/out/ui/packages/slider/components/Slider.styles.d.ts +6 -0
  397. package/out/ui/packages/slider/components/Slider.styles.luau +47 -0
  398. package/out/ui/packages/slider/components/sliderNudge.d.ts +4 -0
  399. package/out/ui/packages/slider/components/sliderNudge.luau +39 -0
  400. package/out/ui/packages/slider/index.d.ts +2 -0
  401. package/out/ui/packages/slider/init.luau +5 -0
  402. package/out/ui/packages/snackbar/components/Snackbar.d.ts +11 -0
  403. package/out/ui/packages/snackbar/components/Snackbar.luau +41 -0
  404. package/out/ui/packages/snackbar/index.d.ts +2 -0
  405. package/out/ui/packages/snackbar/init.luau +5 -0
  406. package/out/ui/packages/splitPane/components/SplitPane.d.ts +14 -0
  407. package/out/ui/packages/splitPane/components/SplitPane.luau +241 -0
  408. package/out/ui/packages/splitPane/components/SplitPane.styles.d.ts +2 -0
  409. package/out/ui/packages/splitPane/components/SplitPane.styles.luau +59 -0
  410. package/out/ui/packages/splitPane/components/splitLook.d.ts +5 -0
  411. package/out/ui/packages/splitPane/components/splitLook.luau +49 -0
  412. package/out/ui/packages/splitPane/components/splitSize.d.ts +10 -0
  413. package/out/ui/packages/splitPane/components/splitSize.luau +46 -0
  414. package/out/ui/packages/splitPane/index.d.ts +2 -0
  415. package/out/ui/packages/splitPane/init.luau +5 -0
  416. package/out/ui/packages/stateMatrix.d.ts +30 -0
  417. package/out/ui/packages/stateMatrix.luau +1369 -0
  418. package/out/ui/packages/stepper/components/Stepper.d.ts +7 -0
  419. package/out/ui/packages/stepper/components/Stepper.luau +62 -0
  420. package/out/ui/packages/stepper/components/Stepper.styles.d.ts +2 -0
  421. package/out/ui/packages/stepper/components/Stepper.styles.luau +39 -0
  422. package/out/ui/packages/stepper/components/stepState.d.ts +2 -0
  423. package/out/ui/packages/stepper/components/stepState.luau +13 -0
  424. package/out/ui/packages/stepper/index.d.ts +3 -0
  425. package/out/ui/packages/stepper/init.luau +6 -0
  426. package/out/ui/packages/switch/components/Switch.d.ts +11 -0
  427. package/out/ui/packages/switch/components/Switch.luau +170 -0
  428. package/out/ui/packages/switch/components/Switch.styles.d.ts +6 -0
  429. package/out/ui/packages/switch/components/Switch.styles.luau +62 -0
  430. package/out/ui/packages/switch/components/switchLook.d.ts +10 -0
  431. package/out/ui/packages/switch/components/switchLook.luau +63 -0
  432. package/out/ui/packages/switch/index.d.ts +2 -0
  433. package/out/ui/packages/switch/init.luau +5 -0
  434. package/out/ui/packages/table/components/Table.d.ts +9 -0
  435. package/out/ui/packages/table/components/Table.luau +135 -0
  436. package/out/ui/packages/table/components/Table.styles.d.ts +2 -0
  437. package/out/ui/packages/table/components/Table.styles.luau +70 -0
  438. package/out/ui/packages/table/components/rowSelected.d.ts +1 -0
  439. package/out/ui/packages/table/components/rowSelected.luau +7 -0
  440. package/out/ui/packages/table/index.d.ts +2 -0
  441. package/out/ui/packages/table/init.luau +5 -0
  442. package/out/ui/packages/tabs/components/Tabs.d.ts +10 -0
  443. package/out/ui/packages/tabs/components/Tabs.luau +113 -0
  444. package/out/ui/packages/tabs/components/Tabs.styles.d.ts +2 -0
  445. package/out/ui/packages/tabs/components/Tabs.styles.luau +55 -0
  446. package/out/ui/packages/tabs/index.d.ts +2 -0
  447. package/out/ui/packages/tabs/init.luau +5 -0
  448. package/out/ui/packages/toast/components/Toast.luau +6 -0
  449. package/out/ui/packages/toast/components/Toast.styles.luau +23 -10
  450. package/out/ui/packages/tooltip/components/Tooltip.d.ts +7 -0
  451. package/out/ui/packages/tooltip/components/Tooltip.luau +119 -0
  452. package/out/ui/packages/tooltip/components/Tooltip.styles.d.ts +2 -0
  453. package/out/ui/packages/tooltip/components/Tooltip.styles.luau +43 -0
  454. package/out/ui/packages/tooltip/index.d.ts +2 -0
  455. package/out/ui/packages/tooltip/init.luau +5 -0
  456. package/out/ui/packages/treeView/components/TreeView.d.ts +1 -0
  457. package/out/ui/packages/treeView/components/TreeView.luau +201 -225
  458. package/out/ui/packages/treeView/components/TreeView.styles.luau +6 -34
  459. package/out/ui/packages/treeView/components/treeRows.d.ts +23 -0
  460. package/out/ui/packages/treeView/components/treeRows.luau +147 -0
  461. package/out/ui/packages/treeView/interfaces/Branch.d.ts +3 -0
  462. package/out/ui/packages/treeView/interfaces/Leaf.d.ts +2 -0
  463. package/out/ui/packages/typography/components/Typography.luau +6 -0
  464. package/out/ui/packages/typography/components/Typography.styles.luau +8 -11
  465. package/out/ui/packages/udimEditor/components/UDimEditor.d.ts +8 -0
  466. package/out/ui/packages/udimEditor/components/UDimEditor.luau +127 -0
  467. package/out/ui/packages/udimEditor/components/UDimEditor.styles.d.ts +2 -0
  468. package/out/ui/packages/udimEditor/components/UDimEditor.styles.luau +50 -0
  469. package/out/ui/packages/udimEditor/index.d.ts +2 -0
  470. package/out/ui/packages/udimEditor/init.luau +5 -0
  471. package/out/ui/packages/vectorEditor/components/VectorEditor.d.ts +10 -0
  472. package/out/ui/packages/vectorEditor/components/VectorEditor.luau +87 -0
  473. package/out/ui/packages/vectorEditor/components/VectorEditor.styles.d.ts +2 -0
  474. package/out/ui/packages/vectorEditor/components/VectorEditor.styles.luau +41 -0
  475. package/out/ui/packages/vectorEditor/components/vectorValue.d.ts +10 -0
  476. package/out/ui/packages/vectorEditor/components/vectorValue.luau +49 -0
  477. package/out/ui/packages/vectorEditor/index.d.ts +4 -0
  478. package/out/ui/packages/vectorEditor/init.luau +11 -0
  479. package/out/ui/packages/virtualList/components/VirtualList.d.ts +23 -0
  480. package/out/ui/packages/virtualList/components/VirtualList.luau +178 -0
  481. package/out/ui/packages/virtualList/components/VirtualList.styles.d.ts +2 -0
  482. package/out/ui/packages/virtualList/components/VirtualList.styles.luau +29 -0
  483. package/out/ui/packages/virtualList/components/virtualWindow.d.ts +10 -0
  484. package/out/ui/packages/virtualList/components/virtualWindow.luau +66 -0
  485. package/out/ui/packages/virtualList/index.d.ts +2 -0
  486. package/out/ui/packages/virtualList/init.luau +5 -0
  487. package/package.json +7 -3
  488. package/out/theme/interfaces/palette/colors/Colors.d.ts +0 -42
  489. package/out/theme/interfaces/palette/colors/Colors.luau +0 -2
  490. package/out/theme/styles/types/ConditionalStylesMap.d.ts +0 -2
  491. package/out/theme/styles/types/ConditionalStylesMap.luau +0 -2
@@ -0,0 +1,127 @@
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 useState = _react.useState
7
+ local UserInputService = TS.import(script, TS.getModule(script, "@rbxts", "services")).UserInputService
8
+ local _dragScroll = TS.import(script, script.Parent, "dragScroll")
9
+ local DRAG_SCROLL_THRESHOLD = _dragScroll.DRAG_SCROLL_THRESHOLD
10
+ local canvasScrollMax = _dragScroll.canvasScrollMax
11
+ local isDragScrollPress = _dragScroll.isDragScrollPress
12
+ local nextCanvasPosition = _dragScroll.nextCanvasPosition
13
+ local pointerInFrame = _dragScroll.pointerInFrame
14
+ local scrollAxis = _dragScroll.scrollAxis
15
+ local shouldBeginDragScroll = _dragScroll.shouldBeginDragScroll
16
+ local function useDragScroll(frame)
17
+ local dragging, setDragging = useState(false)
18
+ local tookRef = useRef(false)
19
+ local draggingRef = useRef(false)
20
+ useEffect(function()
21
+ if not frame then
22
+ return nil
23
+ end
24
+ local tracking = false
25
+ local startPointer = Vector2.new(0, 0)
26
+ local startCanvas = Vector2.new(0, 0)
27
+ local restBar = frame.ScrollBarImageTransparency
28
+ local activeInput = {
29
+ current = nil,
30
+ }
31
+ local finish = function(consumed)
32
+ if not tracking and not draggingRef.current then
33
+ return nil
34
+ end
35
+ tracking = false
36
+ activeInput.current = nil
37
+ if draggingRef.current then
38
+ draggingRef.current = false
39
+ setDragging(false)
40
+ frame.ScrollBarImageTransparency = restBar
41
+ tookRef.current = consumed
42
+ end
43
+ end
44
+ local began = UserInputService.InputBegan:Connect(function(input)
45
+ -- Gui rows mark input processed; still allow content drag from those hits.
46
+ if not isDragScrollPress(input) or not frame.ScrollingEnabled then
47
+ return nil
48
+ end
49
+ if not pointerInFrame(frame, input.Position) then
50
+ return nil
51
+ end
52
+ local box = UserInputService:GetFocusedTextBox()
53
+ if box and pointerInFrame(box, input.Position) then
54
+ return nil
55
+ end
56
+ local max = canvasScrollMax(frame)
57
+ local axis = scrollAxis(frame.ScrollingDirection)
58
+ if axis == "x" and max.X <= 0 then
59
+ return nil
60
+ end
61
+ if axis == "y" and max.Y <= 0 then
62
+ return nil
63
+ end
64
+ if axis == "xy" and max.X <= 0 and max.Y <= 0 then
65
+ return nil
66
+ end
67
+ tracking = true
68
+ tookRef.current = false
69
+ activeInput.current = input
70
+ startPointer = Vector2.new(input.Position.X, input.Position.Y)
71
+ startCanvas = frame.CanvasPosition
72
+ restBar = frame.ScrollBarImageTransparency
73
+ end)
74
+ local changed = UserInputService.InputChanged:Connect(function(input)
75
+ if not tracking or activeInput.current == nil then
76
+ return nil
77
+ end
78
+ if input.UserInputType ~= Enum.UserInputType.MouseMovement and input.UserInputType ~= Enum.UserInputType.Touch then
79
+ return nil
80
+ end
81
+ local pointer = Vector2.new(input.Position.X, input.Position.Y)
82
+ local axis = scrollAxis(frame.ScrollingDirection)
83
+ if not draggingRef.current then
84
+ if not shouldBeginDragScroll(startPointer, pointer, axis, DRAG_SCROLL_THRESHOLD) then
85
+ return nil
86
+ end
87
+ draggingRef.current = true
88
+ setDragging(true)
89
+ frame.ScrollBarImageTransparency = 0
90
+ end
91
+ frame.CanvasPosition = nextCanvasPosition(startCanvas, startPointer, pointer, axis, canvasScrollMax(frame))
92
+ end)
93
+ local ended = UserInputService.InputEnded:Connect(function(input)
94
+ local press = activeInput.current
95
+ if press == nil then
96
+ return nil
97
+ end
98
+ if input ~= press and input.UserInputType ~= press.UserInputType then
99
+ return nil
100
+ end
101
+ finish(draggingRef.current)
102
+ end)
103
+ return function()
104
+ began:Disconnect()
105
+ changed:Disconnect()
106
+ ended:Disconnect()
107
+ if draggingRef.current then
108
+ frame.ScrollBarImageTransparency = restBar
109
+ end
110
+ draggingRef.current = false
111
+ tracking = false
112
+ end
113
+ end, { frame })
114
+ return {
115
+ dragging = dragging,
116
+ suppressClick = function()
117
+ if not tookRef.current then
118
+ return false
119
+ end
120
+ tookRef.current = false
121
+ return true
122
+ end,
123
+ }
124
+ end
125
+ return {
126
+ useDragScroll = useDragScroll,
127
+ }
@@ -0,0 +1,15 @@
1
+ import { ControlSize, CustomizedProps } from "../../../../theme/index";
2
+ import { ChoiceOption } from "../../radioGroup/index";
3
+ export interface SelectProps<T> {
4
+ value: T;
5
+ values?: ReadonlyArray<T>;
6
+ options: ChoiceOption<T>[];
7
+ onChange: (value: T) => void;
8
+ disabled?: boolean;
9
+ placeholder?: string;
10
+ searchable?: boolean;
11
+ reducedMotion?: boolean;
12
+ size?: ControlSize;
13
+ }
14
+ declare function Select<T>(props: CustomizedProps<Frame, SelectProps<T>>): JSX.Element;
15
+ export default Select;
@@ -0,0 +1,432 @@
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 React = _react
5
+ local useEffect = _react.useEffect
6
+ local useRef = _react.useRef
7
+ local useState = _react.useState
8
+ local _services = TS.import(script, TS.getModule(script, "@rbxts", "services"))
9
+ local GuiService = _services.GuiService
10
+ local UserInputService = _services.UserInputService
11
+ local useReducedMotion = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "hooks").useReducedMotion
12
+ local _theme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme")
13
+ local controlMetrics = _theme.controlMetrics
14
+ local cx = _theme.cx
15
+ local useTheme = _theme.useTheme
16
+ local canActivate = TS.import(script, script.Parent.Parent.Parent, "button", "components", "activation").canActivate
17
+ local Input = TS.import(script, script.Parent.Parent.Parent, "input").Input
18
+ local playProperty = TS.import(script, script.Parent.Parent.Parent, "motion").playProperty
19
+ local Popup = TS.import(script, script.Parent.Parent.Parent, "popup").Popup
20
+ local Shadow = TS.import(script, script.Parent.Parent.Parent, "shadow").Shadow
21
+ local VirtualList = TS.import(script, script.Parent.Parent.Parent, "virtualList").VirtualList
22
+ local useSelectStyles = TS.import(script, script.Parent, "Select.styles").default
23
+ local optionLabel = TS.import(script, script.Parent, "optionLabel").optionLabel
24
+ local _selectFilter = TS.import(script, script.Parent, "selectFilter")
25
+ local filterChoices = _selectFilter.filterChoices
26
+ local usesSelectSearch = _selectFilter.usesSelectSearch
27
+ local canFocusGui = TS.import(script, script.Parent, "selectFocus").canFocusGui
28
+ local _selectGroups = TS.import(script, script.Parent, "selectGroups")
29
+ local groupRows = _selectGroups.groupRows
30
+ local rowForOption = _selectGroups.rowForOption
31
+ local shouldHandleSelectKey = TS.import(script, script.Parent, "selectKey").shouldHandleSelectKey
32
+ local menuHold = TS.import(script, script.Parent, "selectMotion").menuHold
33
+ local _selectMulti = TS.import(script, script.Parent, "selectMulti")
34
+ local includesChoice = _selectMulti.includesChoice
35
+ local selectionLabel = _selectMulti.selectionLabel
36
+ local typeaheadChoice = TS.import(script, script.Parent, "selectTypeahead").typeaheadChoice
37
+ local stepChoice = TS.import(script, script.Parent, "stepChoice").stepChoice
38
+ local function Select(props)
39
+ local _binding = props
40
+ local value = _binding.value
41
+ local values = _binding.values
42
+ local options = _binding.options
43
+ local onChange = _binding.onChange
44
+ local disabled = _binding.disabled
45
+ local placeholder = _binding.placeholder
46
+ if placeholder == nil then
47
+ placeholder = ""
48
+ end
49
+ local searchable = _binding.searchable
50
+ local reducedProp = _binding.reducedMotion
51
+ local size = _binding.size
52
+ local className = _binding.className
53
+ local sx = _binding.sx
54
+ local id = _binding.id
55
+ local ref = _binding.ref
56
+ local reducedMotion = useReducedMotion(reducedProp)
57
+ local styles = useSelectStyles({
58
+ size = size,
59
+ })
60
+ local _binding_1 = useTheme()
61
+ local theme = _binding_1.theme
62
+ local row = controlMetrics(theme.density, size).height
63
+ local active = canActivate(disabled)
64
+ local anchor, setAnchor = useState()
65
+ local open, setOpen = useState(false)
66
+ local held, setHeld = useState(false)
67
+ local focused, setFocused = useState(false)
68
+ local highlight, setHighlight = useState(-1)
69
+ local query, setQuery = useState("")
70
+ local recent = useRef()
71
+ local typed = useRef()
72
+ local onKeyRef = useRef()
73
+ local listRef = useRef()
74
+ local menuRef = useRef()
75
+ -- ▼ ReadonlyArray.find ▼
76
+ local _callback = function(option)
77
+ return option.value == value
78
+ end
79
+ local _result
80
+ for _i, _v in options do
81
+ if _callback(_v, _i - 1, options) == true then
82
+ _result = _v
83
+ break
84
+ end
85
+ end
86
+ -- ▲ ReadonlyArray.find ▲
87
+ local current = _result
88
+ local shown = open and active
89
+ local search = usesSelectSearch(#options, searchable)
90
+ local filtered = filterChoices(options, query)
91
+ local rows = groupRows(filtered)
92
+ local menuHeight = math.min(#rows * row, theme.spacing.calc(16)) + (if search then row else 0)
93
+ local close = function()
94
+ setOpen(false)
95
+ setQuery("")
96
+ if canFocusGui(anchor) then
97
+ GuiService.SelectedObject = anchor
98
+ end
99
+ end
100
+ local openMenu = function()
101
+ setQuery("")
102
+ -- ▼ ReadonlyArray.findIndex ▼
103
+ local _callback_1 = function(option)
104
+ return option.value == value and not option.disabled
105
+ end
106
+ local _result_1 = -1
107
+ for _i, _v in options do
108
+ if _callback_1(_v, _i - 1, options) == true then
109
+ _result_1 = _i - 1
110
+ break
111
+ end
112
+ end
113
+ -- ▲ ReadonlyArray.findIndex ▲
114
+ local index = _result_1
115
+ setHighlight(if index >= 0 then index else stepChoice(options, -1, 1))
116
+ setOpen(true)
117
+ end
118
+ local choose = function(index, fromPointer)
119
+ if fromPointer == nil then
120
+ fromPointer = false
121
+ end
122
+ local _condition = fromPointer
123
+ if _condition then
124
+ local _result_1 = listRef.current
125
+ if _result_1 ~= nil then
126
+ _result_1 = _result_1.suppressClick()
127
+ end
128
+ _condition = _result_1
129
+ end
130
+ if _condition then
131
+ return nil
132
+ end
133
+ local choice = filtered[index + 1]
134
+ if choice == nil or choice.disabled then
135
+ return nil
136
+ end
137
+ if values == nil then
138
+ close()
139
+ if choice.value ~= value then
140
+ onChange(choice.value)
141
+ end
142
+ return nil
143
+ end
144
+ onChange(choice.value)
145
+ end
146
+ local onKey = function(input, fromControl)
147
+ local now = os.clock()
148
+ if shown and (input.KeyCode == Enum.KeyCode.Escape or input.KeyCode == Enum.KeyCode.ButtonB) then
149
+ close()
150
+ return nil
151
+ end
152
+ if not shouldHandleSelectKey(shown, focused, fromControl, UserInputService:GetFocusedTextBox() ~= nil, input.KeyCode.Name, now, recent.current) then
153
+ return nil
154
+ end
155
+ recent.current = {
156
+ key = input.KeyCode.Name,
157
+ at = now,
158
+ }
159
+ local key = input.KeyCode
160
+ if not shown then
161
+ if active and key == Enum.KeyCode.Down then
162
+ openMenu()
163
+ end
164
+ elseif key == Enum.KeyCode.Up then
165
+ setHighlight(stepChoice(filtered, highlight, -1))
166
+ elseif key == Enum.KeyCode.Down then
167
+ setHighlight(stepChoice(filtered, highlight, 1))
168
+ elseif key == Enum.KeyCode.Return or key == Enum.KeyCode.KeypadEnter then
169
+ choose(highlight)
170
+ elseif #key.Name == 1 then
171
+ local letter = string.lower(key.Name)
172
+ local previous = typed.current
173
+ local text = if previous ~= nil and now - previous.at < 0.5 then `{previous.text}{letter}` else letter
174
+ typed.current = {
175
+ text = text,
176
+ at = now,
177
+ }
178
+ setHighlight(typeaheadChoice(filtered, highlight, text))
179
+ end
180
+ end
181
+ onKeyRef.current = onKey
182
+ useEffect(function()
183
+ if not shown and not focused then
184
+ return nil
185
+ end
186
+ local connection = UserInputService.InputBegan:Connect(function(input)
187
+ local _result_1 = onKeyRef.current
188
+ if _result_1 ~= nil then
189
+ _result_1 = _result_1(input, false)
190
+ end
191
+ return _result_1
192
+ end)
193
+ return function()
194
+ return connection:Disconnect()
195
+ end
196
+ end, { shown, focused })
197
+ useEffect(function()
198
+ if not shown or not anchor then
199
+ return nil
200
+ end
201
+ return function()
202
+ if canFocusGui(anchor) then
203
+ GuiService.SelectedObject = anchor
204
+ end
205
+ end
206
+ end, { shown, anchor })
207
+ useEffect(function()
208
+ if not shown or highlight < 0 then
209
+ return nil
210
+ end
211
+ local _result_1 = listRef.current
212
+ if _result_1 ~= nil then
213
+ _result_1.ensureVisible(rowForOption(rows, highlight))
214
+ end
215
+ end, { shown, highlight })
216
+ useEffect(function()
217
+ if shown then
218
+ setHeld(true)
219
+ end
220
+ end, { shown })
221
+ useEffect(function()
222
+ local menu = menuRef.current
223
+ if not menu or not held then
224
+ return nil
225
+ end
226
+ local stop = playProperty(menu, {
227
+ GroupTransparency = if shown then 0 else 1,
228
+ }, 0.12, reducedMotion)
229
+ local seconds = menuHold(shown, reducedMotion)
230
+ if seconds == 0 then
231
+ if not shown then
232
+ setHeld(false)
233
+ end
234
+ return stop
235
+ end
236
+ local wait = task.delay(seconds, function()
237
+ return setHeld(false)
238
+ end)
239
+ return function()
240
+ stop()
241
+ task.cancel(wait)
242
+ end
243
+ end, { shown, held, reducedMotion })
244
+ local _attributes = {}
245
+ local _condition = id
246
+ if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
247
+ _condition = "Select"
248
+ end
249
+ _attributes.key = _condition
250
+ _attributes.ref = ref
251
+ for _k, _v in styles.root do
252
+ _attributes[_k] = _v
253
+ end
254
+ if className then
255
+ for _k, _v in className do
256
+ _attributes[_k] = _v
257
+ end
258
+ end
259
+ if sx then
260
+ for _k, _v in sx do
261
+ _attributes[_k] = _v
262
+ end
263
+ end
264
+ local _attributes_1 = {
265
+ key = "Trigger",
266
+ ref = setAnchor,
267
+ }
268
+ for _k, _v in cx(styles.trigger, current == nil and styles.placeholder, not active and {
269
+ TextTransparency = 0.5,
270
+ }) do
271
+ _attributes_1[_k] = _v
272
+ end
273
+ local _result_1
274
+ if values ~= nil then
275
+ _result_1 = selectionLabel(options, values, placeholder)
276
+ else
277
+ local _result_2 = current
278
+ if _result_2 ~= nil then
279
+ _result_2 = _result_2.label
280
+ end
281
+ local _condition_1 = _result_2
282
+ if _condition_1 == nil then
283
+ _condition_1 = placeholder
284
+ end
285
+ _result_1 = _condition_1
286
+ end
287
+ _attributes_1.Text = _result_1
288
+ _attributes_1.Active = active
289
+ _attributes_1.Selectable = active
290
+ _attributes_1.Event = {
291
+ Activated = function()
292
+ if shown then
293
+ close()
294
+ elseif active then
295
+ openMenu()
296
+ end
297
+ end,
298
+ SelectionGained = function()
299
+ return setFocused(true)
300
+ end,
301
+ SelectionLost = function()
302
+ return setFocused(false)
303
+ end,
304
+ InputBegan = function(_, input)
305
+ return onKey(input, true)
306
+ end,
307
+ }
308
+ local _attributes_2 = table.clone(styles.padding)
309
+ setmetatable(_attributes_2, nil)
310
+ local _exp = React.createElement("uipadding", _attributes_2)
311
+ local _attributes_3 = table.clone(styles.corner)
312
+ setmetatable(_attributes_3, nil)
313
+ local _exp_1 = React.createElement("uicorner", _attributes_3)
314
+ local _attributes_4 = table.clone(cx(styles.stroke, focused and styles.focusStroke))
315
+ setmetatable(_attributes_4, nil)
316
+ local _exp_2 = React.createElement("textbutton", _attributes_1, _exp, _exp_1, React.createElement("uistroke", _attributes_4))
317
+ local _condition_1 = (shown or held)
318
+ if _condition_1 then
319
+ local _attributes_5 = {
320
+ key = "Menu",
321
+ }
322
+ for _k, _v in styles.menu do
323
+ _attributes_5[_k] = _v
324
+ end
325
+ local _exp_3 = React.createElement(Shadow)
326
+ local _attributes_6 = table.clone(styles.corner)
327
+ setmetatable(_attributes_6, nil)
328
+ local _exp_4 = React.createElement("uicorner", _attributes_6)
329
+ local _attributes_7 = table.clone(styles.stroke)
330
+ setmetatable(_attributes_7, nil)
331
+ local _exp_5 = React.createElement("uistroke", _attributes_7)
332
+ local _exp_6 = React.createElement("uilistlayout", {
333
+ FillDirection = Enum.FillDirection.Vertical,
334
+ SortOrder = Enum.SortOrder.LayoutOrder,
335
+ })
336
+ local _condition_2 = search
337
+ if _condition_2 then
338
+ local _attributes_8 = {
339
+ key = "Search",
340
+ }
341
+ for _k, _v in styles.search do
342
+ _attributes_8[_k] = _v
343
+ end
344
+ _attributes_8.LayoutOrder = 1
345
+ _condition_2 = (React.createElement("frame", _attributes_8, React.createElement(Input, {
346
+ text = query,
347
+ placeholder = "Search",
348
+ width = UDim.new(1, 0),
349
+ onInput = function(text)
350
+ setQuery(text)
351
+ setHighlight(0)
352
+ end,
353
+ })))
354
+ end
355
+ _condition_1 = (React.createElement(Popup, {
356
+ anchor = anchor,
357
+ preferredHeight = menuHeight,
358
+ onDismiss = close,
359
+ onInput = function(input)
360
+ return onKey(input, true)
361
+ end,
362
+ }, React.createElement("canvasgroup", {
363
+ ref = menuRef,
364
+ Size = UDim2.fromScale(1, 1),
365
+ BackgroundTransparency = 1,
366
+ GroupTransparency = 1,
367
+ }, React.createElement("frame", _attributes_5, _exp_3, _exp_4, _exp_5, _exp_6, _condition_2, React.createElement("frame", {
368
+ key = "ListHost",
369
+ Size = UDim2.new(1, 0, 1, if search then -row else 0),
370
+ BackgroundTransparency = 1,
371
+ LayoutOrder = 2,
372
+ }, React.createElement(VirtualList, {
373
+ key = "Options",
374
+ items = rows,
375
+ getKey = function(row, index)
376
+ return `{row.kind}-{row.label}-{index}`
377
+ end,
378
+ itemHeight = row,
379
+ listRef = listRef,
380
+ className = styles.list,
381
+ renderItem = function(row)
382
+ if row.kind == "header" then
383
+ local _attributes_8 = table.clone(styles.group)
384
+ setmetatable(_attributes_8, nil)
385
+ _attributes_8.Text = row.label
386
+ local _attributes_9 = table.clone(styles.padding)
387
+ setmetatable(_attributes_9, nil)
388
+ return React.createElement("textlabel", _attributes_8, React.createElement("uipadding", _attributes_9))
389
+ end
390
+ local index = row.optionIndex
391
+ local picked = if values ~= nil then includesChoice(values, filtered[index + 1].value) else filtered[index + 1].value == value
392
+ local _attributes_8 = {
393
+ ref = function(button)
394
+ if button and index == highlight and canFocusGui(button) then
395
+ GuiService.SelectedObject = button
396
+ end
397
+ end,
398
+ }
399
+ for _k, _v in cx(styles.option, picked and styles.selected, index == highlight and styles.highlighted, row.disabled == true and styles.disabledOption) do
400
+ _attributes_8[_k] = _v
401
+ end
402
+ _attributes_8.Text = optionLabel(row.label, picked)
403
+ _attributes_8.Active = row.disabled ~= true
404
+ _attributes_8.Selectable = row.disabled ~= true
405
+ _attributes_8.Event = {
406
+ Activated = function()
407
+ return choose(index, true)
408
+ end,
409
+ MouseEnter = function()
410
+ if row.disabled ~= true then
411
+ setHighlight(index)
412
+ end
413
+ end,
414
+ SelectionGained = function()
415
+ return setHighlight(index)
416
+ end,
417
+ InputBegan = function(_, input)
418
+ return onKey(input, true)
419
+ end,
420
+ }
421
+ local _attributes_9 = table.clone(styles.padding)
422
+ setmetatable(_attributes_9, nil)
423
+ return React.createElement("textbutton", _attributes_8, React.createElement("uipadding", _attributes_9))
424
+ end,
425
+ }))))))
426
+ end
427
+ return React.createElement("frame", _attributes, _exp_2, _condition_1)
428
+ end
429
+ local default = Select
430
+ return {
431
+ default = default,
432
+ }
@@ -0,0 +1,6 @@
1
+ import { ControlSize } from "../../../../theme/index";
2
+ export interface SelectStyleProps {
3
+ size?: ControlSize;
4
+ }
5
+ declare const useSelectStyles: (props: SelectStyleProps) => import("../../../../theme/index").ClassNameMap<string>;
6
+ export default useSelectStyles;
@@ -0,0 +1,104 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local TS = _G[script]
3
+ local _theme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme")
4
+ local controlMetrics = _theme.controlMetrics
5
+ local createStyles = _theme.createStyles
6
+ local componentStyles = _theme.componentStyles
7
+ local useSelectStyles = componentStyles("Select", function(theme, _param)
8
+ local size = _param.size
9
+ local metrics = controlMetrics(theme.density, size)
10
+ return createStyles({
11
+ root = {
12
+ Size = UDim2.fromOffset(theme.spacing.calc(8), metrics.height),
13
+ BackgroundTransparency = 1,
14
+ BorderSizePixel = 0,
15
+ },
16
+ trigger = {
17
+ Size = UDim2.fromScale(1, 1),
18
+ BackgroundColor3 = theme.palette.surface.input,
19
+ BorderSizePixel = 0,
20
+ AutoButtonColor = false,
21
+ TextColor3 = theme.palette.text.primary,
22
+ Font = theme.typography.fontFamilies.default,
23
+ TextSize = metrics.font,
24
+ TextXAlignment = Enum.TextXAlignment.Left,
25
+ TextTruncate = Enum.TextTruncate.AtEnd,
26
+ },
27
+ placeholder = {
28
+ TextColor3 = theme.palette.text.secondary,
29
+ },
30
+ padding = {
31
+ PaddingLeft = UDim.new(0, theme.padding.calc(1.5)),
32
+ PaddingRight = UDim.new(0, theme.padding.calc(1.5)),
33
+ },
34
+ menu = {
35
+ Size = UDim2.fromScale(1, 1),
36
+ BackgroundColor3 = theme.palette.surface.elevated,
37
+ BorderSizePixel = 0,
38
+ ZIndex = 20001,
39
+ },
40
+ search = {
41
+ Size = UDim2.new(1, 0, 0, theme.spacing.calc(2)),
42
+ BackgroundTransparency = 1,
43
+ ZIndex = 20002,
44
+ },
45
+ list = {
46
+ Size = UDim2.fromScale(1, 1),
47
+ BackgroundColor3 = theme.palette.surface.elevated,
48
+ BorderSizePixel = 0,
49
+ ScrollBarThickness = theme.padding.default,
50
+ ScrollBarImageColor3 = theme.palette.text.secondary,
51
+ ScrollingDirection = Enum.ScrollingDirection.Y,
52
+ ZIndex = 20001,
53
+ },
54
+ option = {
55
+ Size = UDim2.fromScale(1, 1),
56
+ BackgroundColor3 = theme.palette.action.hover,
57
+ BackgroundTransparency = 1,
58
+ BorderSizePixel = 0,
59
+ AutoButtonColor = false,
60
+ TextColor3 = theme.palette.text.primary,
61
+ Font = theme.typography.fontFamilies.default,
62
+ TextSize = metrics.font,
63
+ TextXAlignment = Enum.TextXAlignment.Left,
64
+ TextTruncate = Enum.TextTruncate.AtEnd,
65
+ ZIndex = 20002,
66
+ },
67
+ highlighted = {
68
+ BackgroundTransparency = 0,
69
+ },
70
+ selected = {
71
+ BackgroundColor3 = theme.palette.action.selected,
72
+ BackgroundTransparency = 0,
73
+ },
74
+ group = {
75
+ Size = UDim2.fromScale(1, 1),
76
+ BackgroundTransparency = 1,
77
+ BorderSizePixel = 0,
78
+ TextColor3 = theme.palette.text.secondary,
79
+ Font = theme.typography.fontFamilies.default,
80
+ TextSize = metrics.font,
81
+ TextXAlignment = Enum.TextXAlignment.Left,
82
+ ZIndex = 20002,
83
+ },
84
+ disabledOption = {
85
+ TextTransparency = 0.5,
86
+ },
87
+ corner = {
88
+ CornerRadius = UDim.new(0, theme.shape.borderRadius),
89
+ },
90
+ stroke = {
91
+ Color = theme.palette.border,
92
+ ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
93
+ },
94
+ focusStroke = {
95
+ Color = theme.palette.focus,
96
+ Thickness = 2,
97
+ ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
98
+ },
99
+ })
100
+ end)
101
+ local default = useSelectStyles
102
+ return {
103
+ default = default,
104
+ }
@@ -0,0 +1 @@
1
+ export declare function optionLabel(label: string, picked: boolean): string;
@@ -0,0 +1,7 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local function optionLabel(label, picked)
3
+ return if picked then `✓ {label}` else label
4
+ end
5
+ return {
6
+ optionLabel = optionLabel,
7
+ }
@@ -0,0 +1,4 @@
1
+ export declare function filterChoices<T extends {
2
+ label: string;
3
+ }>(options: T[], query: string): T[];
4
+ export declare function usesSelectSearch(count: number, searchable?: boolean): boolean;