@rbxts/uiblox 0.2.0-alpha.36 → 0.2.0-alpha.38

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 (395) hide show
  1. package/README.md +1 -18
  2. package/out/theme/constants/NumberConstants.d.ts +10 -0
  3. package/out/theme/constants/NumberConstants.luau +12 -0
  4. package/out/theme/interfaces/density/controlMetrics.luau +2 -2
  5. package/out/theme/interfaces/palette/Palette.d.ts +7 -0
  6. package/out/theme/interfaces/spacing/Shape.d.ts +6 -0
  7. package/out/theme/interfaces/theme/Theme.d.ts +6 -0
  8. package/out/theme/interfaces/typography/FontFamilies.luau +1 -0
  9. package/out/theme/interfaces/typography/FontFamilyOptions.d.ts +1 -1
  10. package/out/theme/interfaces/typography/FontSizeOptions.d.ts +1 -1
  11. package/out/theme/interfaces/typography/FontSizes.luau +2 -0
  12. package/out/theme/interfaces/typography/Variants.d.ts +3 -1
  13. package/out/theme/interfaces/typography/Variants.luau +25 -1
  14. package/out/theme/styles/utilities/focusRing.d.ts +7 -0
  15. package/out/theme/styles/utilities/focusRing.luau +14 -0
  16. package/out/theme/styles/utilities/index.d.ts +1 -0
  17. package/out/theme/styles/utilities/init.luau +3 -0
  18. package/out/theme/styles/utilities/resolveSx.d.ts +6 -1
  19. package/out/theme/styles/utilities/resolveSx.luau +53 -12
  20. package/out/theme/themes/DarkTheme.luau +4 -0
  21. package/out/theme/themes/LightTheme.luau +4 -0
  22. package/out/theme/themes/createPalette.luau +15 -0
  23. package/out/ui/packages/accordion/components/Accordion.d.ts +1 -0
  24. package/out/ui/packages/accordion/components/Accordion.luau +112 -32
  25. package/out/ui/packages/accordion/components/Accordion.styles.luau +70 -32
  26. package/out/ui/packages/accordion/components/accordionNote.d.ts +2 -0
  27. package/out/ui/packages/accordion/components/accordionNote.luau +11 -0
  28. package/out/ui/packages/alert/components/Alert.d.ts +2 -0
  29. package/out/ui/packages/alert/components/Alert.luau +39 -12
  30. package/out/ui/packages/alert/components/Alert.styles.luau +44 -22
  31. package/out/ui/packages/alert/components/alertAction.d.ts +2 -0
  32. package/out/ui/packages/alert/components/alertAction.luau +11 -0
  33. package/out/ui/packages/appBar/components/AppBar.d.ts +1 -0
  34. package/out/ui/packages/appBar/components/AppBar.luau +88 -22
  35. package/out/ui/packages/appBar/components/AppBar.styles.luau +41 -11
  36. package/out/ui/packages/appBar/components/appBarSubtitle.d.ts +2 -0
  37. package/out/ui/packages/appBar/components/appBarSubtitle.luau +11 -0
  38. package/out/ui/packages/autocomplete/components/Autocomplete.luau +4 -0
  39. package/out/ui/packages/avatar/components/Avatar.d.ts +2 -0
  40. package/out/ui/packages/avatar/components/Avatar.luau +9 -2
  41. package/out/ui/packages/avatar/components/Avatar.styles.luau +7 -0
  42. package/out/ui/packages/avatarGroup/components/AvatarGroup.d.ts +14 -0
  43. package/out/ui/packages/avatarGroup/components/AvatarGroup.luau +107 -0
  44. package/out/ui/packages/avatarGroup/components/AvatarGroup.styles.d.ts +6 -0
  45. package/out/ui/packages/avatarGroup/components/AvatarGroup.styles.luau +55 -0
  46. package/out/ui/packages/avatarGroup/components/avatarGroupCut.d.ts +2 -0
  47. package/out/ui/packages/avatarGroup/components/avatarGroupCut.luau +11 -0
  48. package/out/ui/packages/avatarGroup/index.d.ts +3 -0
  49. package/out/ui/packages/avatarGroup/init.luau +6 -0
  50. package/out/ui/packages/badge/components/Badge.luau +14 -11
  51. package/out/ui/packages/badge/components/Badge.styles.luau +5 -1
  52. package/out/ui/packages/bottomNavigation/components/BottomNavigation.d.ts +4 -1
  53. package/out/ui/packages/bottomNavigation/components/BottomNavigation.luau +19 -1
  54. package/out/ui/packages/bottomNavigation/components/BottomNavigation.styles.luau +24 -3
  55. package/out/ui/packages/bottomNavigation/components/navBadge.d.ts +2 -0
  56. package/out/ui/packages/bottomNavigation/components/navBadge.luau +14 -0
  57. package/out/ui/packages/bottomNavigation/index.d.ts +1 -1
  58. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.luau +21 -6
  59. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.styles.luau +10 -0
  60. package/out/ui/packages/breadcrumbs/components/breadcrumbItems.d.ts +2 -0
  61. package/out/ui/packages/breadcrumbs/components/breadcrumbItems.luau +8 -0
  62. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.luau +20 -2
  63. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.styles.luau +72 -66
  64. package/out/ui/packages/button/components/Button.d.ts +2 -0
  65. package/out/ui/packages/button/components/Button.luau +112 -36
  66. package/out/ui/packages/button/components/Button.styles.luau +2 -0
  67. package/out/ui/packages/button/components/buttonLook.d.ts +2 -0
  68. package/out/ui/packages/button/components/buttonLook.luau +11 -0
  69. package/out/ui/packages/button/components/buttonPaint.d.ts +16 -0
  70. package/out/ui/packages/button/components/buttonPaint.luau +70 -0
  71. package/out/ui/packages/buttonGroup/components/ButtonGroup.d.ts +14 -0
  72. package/out/ui/packages/buttonGroup/components/ButtonGroup.luau +117 -0
  73. package/out/ui/packages/buttonGroup/components/ButtonGroup.styles.d.ts +5 -0
  74. package/out/ui/packages/buttonGroup/components/ButtonGroup.styles.luau +57 -0
  75. package/out/ui/packages/buttonGroup/components/buttonGroupEdge.d.ts +2 -0
  76. package/out/ui/packages/buttonGroup/components/buttonGroupEdge.luau +16 -0
  77. package/out/ui/packages/buttonGroup/index.d.ts +3 -0
  78. package/out/ui/packages/buttonGroup/init.luau +6 -0
  79. package/out/ui/packages/card/components/Card.d.ts +1 -0
  80. package/out/ui/packages/card/components/Card.luau +21 -2
  81. package/out/ui/packages/card/components/Card.styles.d.ts +3 -1
  82. package/out/ui/packages/card/components/Card.styles.luau +20 -9
  83. package/out/ui/packages/card/components/cardWidth.d.ts +10 -0
  84. package/out/ui/packages/card/components/cardWidth.luau +36 -0
  85. package/out/ui/packages/cframeEditor/components/CFrameEditor.luau +18 -5
  86. package/out/ui/packages/cframeEditor/components/CFrameEditor.styles.luau +50 -32
  87. package/out/ui/packages/cframeEditor/components/cframeValue.d.ts +1 -0
  88. package/out/ui/packages/cframeEditor/components/cframeValue.luau +13 -0
  89. package/out/ui/packages/checkbox/components/Checkbox.luau +7 -5
  90. package/out/ui/packages/checkbox/components/Checkbox.styles.luau +2 -0
  91. package/out/ui/packages/checkbox/components/checkboxLook.d.ts +2 -2
  92. package/out/ui/packages/checkbox/components/checkboxLook.luau +2 -2
  93. package/out/ui/packages/chip/components/Chip.luau +16 -14
  94. package/out/ui/packages/chip/components/Chip.styles.d.ts +2 -1
  95. package/out/ui/packages/chip/components/Chip.styles.luau +15 -9
  96. package/out/ui/packages/chip/components/chipTone.d.ts +3 -0
  97. package/out/ui/packages/chip/components/chipTone.luau +11 -0
  98. package/out/ui/packages/circularProgress/components/CircularProgress.luau +10 -3
  99. package/out/ui/packages/codeEditor/components/CodeEditor.d.ts +12 -0
  100. package/out/ui/packages/codeEditor/components/CodeEditor.luau +262 -0
  101. package/out/ui/packages/codeEditor/components/CodeEditor.styles.d.ts +6 -0
  102. package/out/ui/packages/codeEditor/components/CodeEditor.styles.luau +124 -0
  103. package/out/ui/packages/codeEditor/highlightCode.d.ts +11 -0
  104. package/out/ui/packages/codeEditor/highlightCode.luau +503 -0
  105. package/out/ui/packages/codeEditor/index.d.ts +2 -0
  106. package/out/ui/packages/codeEditor/init.luau +5 -0
  107. package/out/ui/packages/collapse/components/Collapse.d.ts +8 -0
  108. package/out/ui/packages/collapse/components/Collapse.luau +34 -0
  109. package/out/ui/packages/collapse/components/Collapse.styles.d.ts +2 -0
  110. package/out/ui/packages/collapse/components/Collapse.styles.luau +20 -0
  111. package/out/ui/packages/collapse/components/collapseOpen.d.ts +1 -0
  112. package/out/ui/packages/collapse/components/collapseOpen.luau +7 -0
  113. package/out/ui/packages/collapse/index.d.ts +3 -0
  114. package/out/ui/packages/collapse/init.luau +6 -0
  115. package/out/ui/packages/colorPicker/components/ColorPicker.luau +9 -1
  116. package/out/ui/packages/colorPicker/components/ColorPicker.styles.luau +74 -67
  117. package/out/ui/packages/colorPicker/components/ColorSequenceEditor.luau +16 -6
  118. package/out/ui/packages/colorPicker/components/NumberSequenceEditor.luau +16 -6
  119. package/out/ui/packages/colorPicker/components/sequenceValue.d.ts +2 -0
  120. package/out/ui/packages/colorPicker/components/sequenceValue.luau +8 -0
  121. package/out/ui/packages/colorPicker/index.d.ts +1 -1
  122. package/out/ui/packages/colorPicker/init.luau +2 -0
  123. package/out/ui/packages/copyButton/components/CopyButton.d.ts +8 -0
  124. package/out/ui/packages/copyButton/components/CopyButton.luau +32 -0
  125. package/out/ui/packages/copyButton/components/copyInvoke.d.ts +2 -0
  126. package/out/ui/packages/copyButton/components/copyInvoke.luau +12 -0
  127. package/out/ui/packages/copyButton/index.d.ts +3 -0
  128. package/out/ui/packages/copyButton/init.luau +6 -0
  129. package/out/ui/packages/cover/components/Cover.d.ts +8 -0
  130. package/out/ui/packages/cover/components/Cover.luau +47 -0
  131. package/out/ui/packages/cover/components/coverFill.d.ts +2 -0
  132. package/out/ui/packages/cover/components/coverFill.luau +14 -0
  133. package/out/ui/packages/cover/index.d.ts +3 -0
  134. package/out/ui/packages/cover/init.luau +6 -0
  135. package/out/ui/packages/dateRange/components/DateRangePicker.d.ts +3 -0
  136. package/out/ui/packages/dateRange/components/DateRangePicker.luau +186 -95
  137. package/out/ui/packages/dateRange/dateRangeValue.d.ts +5 -0
  138. package/out/ui/packages/dateRange/dateRangeValue.luau +34 -0
  139. package/out/ui/packages/dateRange/index.d.ts +1 -1
  140. package/out/ui/packages/dateRange/init.luau +3 -0
  141. package/out/ui/packages/dialog/components/Dialog.d.ts +1 -0
  142. package/out/ui/packages/dialog/components/Dialog.luau +55 -6
  143. package/out/ui/packages/dialog/components/Dialog.styles.luau +9 -5
  144. package/out/ui/packages/dialog/components/dialogWidth.d.ts +7 -0
  145. package/out/ui/packages/dialog/components/dialogWidth.luau +35 -0
  146. package/out/ui/packages/divider/components/Divider.luau +60 -13
  147. package/out/ui/packages/divider/components/Divider.styles.luau +1 -0
  148. package/out/ui/packages/divider/components/dividerLabel.d.ts +2 -0
  149. package/out/ui/packages/divider/components/dividerLabel.luau +11 -0
  150. package/out/ui/packages/drawer/components/Drawer.d.ts +2 -0
  151. package/out/ui/packages/drawer/components/Drawer.luau +51 -7
  152. package/out/ui/packages/drawer/components/Drawer.styles.luau +13 -5
  153. package/out/ui/packages/drawer/components/drawerPlacement.d.ts +15 -1
  154. package/out/ui/packages/drawer/components/drawerPlacement.luau +46 -0
  155. package/out/ui/packages/editorFace.d.ts +22 -0
  156. package/out/ui/packages/editorFace.luau +49 -0
  157. package/out/ui/packages/fab/components/Fab.luau +19 -6
  158. package/out/ui/packages/fab/components/Fab.styles.luau +4 -3
  159. package/out/ui/packages/fontEditor/components/FontEditor.luau +13 -3
  160. package/out/ui/packages/fontEditor/components/FontEditor.styles.luau +36 -27
  161. package/out/ui/packages/gradientEditor/components/GradientEditor.luau +21 -13
  162. package/out/ui/packages/gradientEditor/components/GradientEditor.styles.luau +52 -44
  163. package/out/ui/packages/icon/components/DrawnGlyph.d.ts +11 -0
  164. package/out/ui/packages/icon/components/DrawnGlyph.luau +87 -0
  165. package/out/ui/packages/icon/components/Icon.d.ts +6 -2
  166. package/out/ui/packages/icon/components/Icon.luau +23 -3
  167. package/out/ui/packages/icon/components/Icon.styles.luau +3 -0
  168. package/out/ui/packages/icon/components/glyphs.d.ts +28 -0
  169. package/out/ui/packages/icon/components/glyphs.luau +64 -0
  170. package/out/ui/packages/icon/index.d.ts +1 -0
  171. package/out/ui/packages/iconButton/components/IconButton.d.ts +6 -1
  172. package/out/ui/packages/iconButton/components/IconButton.luau +112 -11
  173. package/out/ui/packages/iconButton/components/IconButton.styles.luau +4 -27
  174. package/out/ui/packages/iconButton/components/iconButtonBox.d.ts +11 -0
  175. package/out/ui/packages/iconButton/components/iconButtonBox.luau +48 -0
  176. package/out/ui/packages/iconButton/components/transportGlyph.d.ts +10 -0
  177. package/out/ui/packages/iconButton/components/transportGlyph.luau +77 -0
  178. package/out/ui/packages/imageList/components/ImageList.d.ts +4 -0
  179. package/out/ui/packages/imageList/components/ImageList.luau +28 -7
  180. package/out/ui/packages/imageList/components/ImageList.styles.d.ts +1 -0
  181. package/out/ui/packages/imageList/components/ImageList.styles.luau +17 -10
  182. package/out/ui/packages/imageList/components/imageListLayout.d.ts +8 -0
  183. package/out/ui/packages/imageList/components/imageListLayout.luau +36 -0
  184. package/out/ui/packages/index.d.ts +12 -0
  185. package/out/ui/packages/init.luau +36 -0
  186. package/out/ui/packages/input/components/Input.d.ts +4 -0
  187. package/out/ui/packages/input/components/Input.luau +74 -37
  188. package/out/ui/packages/input/components/Input.styles.d.ts +1 -0
  189. package/out/ui/packages/input/components/Input.styles.luau +45 -18
  190. package/out/ui/packages/input/components/clampText.d.ts +2 -0
  191. package/out/ui/packages/input/components/clampText.luau +16 -0
  192. package/out/ui/packages/input/components/fieldChrome.d.ts +5 -0
  193. package/out/ui/packages/input/components/fieldChrome.luau +11 -0
  194. package/out/ui/packages/input/components/multilineHeight.d.ts +1 -0
  195. package/out/ui/packages/input/components/multilineHeight.luau +11 -0
  196. package/out/ui/packages/layout/components/Box.luau +92 -13
  197. package/out/ui/packages/layout/components/Box.styles.d.ts +0 -2
  198. package/out/ui/packages/layout/components/Box.styles.luau +0 -9
  199. package/out/ui/packages/layout/components/Grid.luau +81 -16
  200. package/out/ui/packages/layout/components/Pad.d.ts +24 -0
  201. package/out/ui/packages/layout/components/Pad.luau +88 -0
  202. package/out/ui/packages/layout/components/Stack.luau +79 -13
  203. package/out/ui/packages/link/components/Link.luau +17 -7
  204. package/out/ui/packages/link/components/Link.styles.d.ts +0 -1
  205. package/out/ui/packages/link/components/Link.styles.luau +3 -5
  206. package/out/ui/packages/listItem/components/ListItem.d.ts +6 -0
  207. package/out/ui/packages/listItem/components/ListItem.luau +155 -40
  208. package/out/ui/packages/listItem/components/ListItem.styles.d.ts +4 -0
  209. package/out/ui/packages/listItem/components/ListItem.styles.luau +70 -31
  210. package/out/ui/packages/listItem/components/listItemInk.d.ts +3 -0
  211. package/out/ui/packages/listItem/components/listItemInk.luau +14 -0
  212. package/out/ui/packages/listItem/components/listItemLayout.d.ts +22 -0
  213. package/out/ui/packages/listItem/components/listItemLayout.luau +68 -0
  214. package/out/ui/packages/markdown/components/Markdown.d.ts +2 -0
  215. package/out/ui/packages/markdown/components/Markdown.luau +244 -46
  216. package/out/ui/packages/markdown/components/Markdown.styles.luau +125 -51
  217. package/out/ui/packages/markdown/components/MarkdownEditor.luau +215 -146
  218. package/out/ui/packages/markdown/components/MarkdownEditor.styles.d.ts +1 -0
  219. package/out/ui/packages/markdown/components/MarkdownEditor.styles.luau +153 -83
  220. package/out/ui/packages/markdown/index.d.ts +2 -2
  221. package/out/ui/packages/markdown/init.luau +2 -0
  222. package/out/ui/packages/markdown/parseMarkdown.d.ts +30 -2
  223. package/out/ui/packages/markdown/parseMarkdown.luau +453 -25
  224. package/out/ui/packages/menu/components/Menu.d.ts +4 -1
  225. package/out/ui/packages/menu/components/Menu.luau +76 -28
  226. package/out/ui/packages/menu/components/Menu.styles.luau +6 -1
  227. package/out/ui/packages/menu/components/menuIcon.d.ts +6 -0
  228. package/out/ui/packages/menu/components/menuIcon.luau +32 -0
  229. package/out/ui/packages/numberInput/components/NumberInput.d.ts +1 -0
  230. package/out/ui/packages/numberInput/components/NumberInput.luau +82 -1
  231. package/out/ui/packages/numberInput/components/numberValue.d.ts +2 -0
  232. package/out/ui/packages/numberInput/components/numberValue.luau +10 -0
  233. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.luau +9 -1
  234. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.styles.luau +23 -16
  235. package/out/ui/packages/pager/components/Pager.d.ts +11 -0
  236. package/out/ui/packages/pager/components/Pager.luau +114 -0
  237. package/out/ui/packages/pager/components/Pager.styles.d.ts +2 -0
  238. package/out/ui/packages/pager/components/Pager.styles.luau +66 -0
  239. package/out/ui/packages/pager/components/pagerStep.d.ts +3 -0
  240. package/out/ui/packages/pager/components/pagerStep.luau +24 -0
  241. package/out/ui/packages/pager/index.d.ts +3 -0
  242. package/out/ui/packages/pager/init.luau +9 -0
  243. package/out/ui/packages/pagination/components/Pagination.styles.luau +4 -1
  244. package/out/ui/packages/paper/components/Paper.luau +17 -11
  245. package/out/ui/packages/paper/components/Paper.styles.luau +12 -5
  246. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.luau +14 -1
  247. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.styles.luau +24 -19
  248. package/out/ui/packages/physicalPropertiesEditor/components/physicalParts.d.ts +5 -0
  249. package/out/ui/packages/physicalPropertiesEditor/components/physicalParts.luau +22 -0
  250. package/out/ui/packages/popover/components/Popover.d.ts +12 -0
  251. package/out/ui/packages/popover/components/Popover.luau +52 -0
  252. package/out/ui/packages/popover/components/Popover.styles.d.ts +2 -0
  253. package/out/ui/packages/popover/components/Popover.styles.luau +32 -0
  254. package/out/ui/packages/popover/index.d.ts +2 -0
  255. package/out/ui/packages/popover/init.luau +5 -0
  256. package/out/ui/packages/popup/components/Popup.d.ts +2 -0
  257. package/out/ui/packages/popup/components/Popup.luau +64 -2
  258. package/out/ui/packages/popup/components/placement.luau +6 -4
  259. package/out/ui/packages/progressBar/components/ProgressBar.luau +1 -1
  260. package/out/ui/packages/progressBar/components/ProgressBar.styles.luau +3 -2
  261. package/out/ui/packages/radioGroup/components/RadioGroup.d.ts +4 -1
  262. package/out/ui/packages/radioGroup/components/RadioGroup.luau +53 -9
  263. package/out/ui/packages/radioGroup/components/RadioGroup.styles.luau +26 -2
  264. package/out/ui/packages/radioGroup/components/radioHint.d.ts +2 -0
  265. package/out/ui/packages/radioGroup/components/radioHint.luau +11 -0
  266. package/out/ui/packages/radioGroup/index.d.ts +1 -1
  267. package/out/ui/packages/rating/components/Rating.d.ts +1 -1
  268. package/out/ui/packages/rating/components/Rating.luau +48 -4
  269. package/out/ui/packages/rating/components/Rating.styles.luau +1 -1
  270. package/out/ui/packages/rating/components/ratingCommit.d.ts +2 -0
  271. package/out/ui/packages/rating/components/ratingCommit.luau +11 -0
  272. package/out/ui/packages/rayEditor/components/RayEditor.luau +9 -1
  273. package/out/ui/packages/rayEditor/components/RayEditor.styles.luau +17 -11
  274. package/out/ui/packages/rectEditor/components/RectEditor.luau +9 -1
  275. package/out/ui/packages/rectEditor/components/RectEditor.styles.luau +49 -42
  276. package/out/ui/packages/scroll/components/ScrollView.luau +76 -7
  277. package/out/ui/packages/select/components/Select.d.ts +2 -0
  278. package/out/ui/packages/select/components/Select.luau +164 -105
  279. package/out/ui/packages/select/components/Select.styles.d.ts +2 -0
  280. package/out/ui/packages/select/components/Select.styles.luau +30 -9
  281. package/out/ui/packages/select/components/selectWidth.d.ts +2 -0
  282. package/out/ui/packages/select/components/selectWidth.luau +15 -0
  283. package/out/ui/packages/shadow/components/Shadow.luau +202 -21
  284. package/out/ui/packages/sidebar/components/Sidebar.styles.luau +1 -0
  285. package/out/ui/packages/skeleton/components/Skeleton.luau +4 -0
  286. package/out/ui/packages/slider/components/RangeSlider.d.ts +16 -0
  287. package/out/ui/packages/slider/components/RangeSlider.luau +232 -0
  288. package/out/ui/packages/slider/components/RangeSlider.styles.d.ts +7 -0
  289. package/out/ui/packages/slider/components/RangeSlider.styles.luau +48 -0
  290. package/out/ui/packages/slider/components/Slider.d.ts +1 -0
  291. package/out/ui/packages/slider/components/Slider.luau +53 -25
  292. package/out/ui/packages/slider/components/Slider.styles.d.ts +1 -0
  293. package/out/ui/packages/slider/components/Slider.styles.luau +19 -5
  294. package/out/ui/packages/slider/components/rangeValue.d.ts +21 -0
  295. package/out/ui/packages/slider/components/rangeValue.luau +77 -0
  296. package/out/ui/packages/slider/components/sliderLabel.d.ts +4 -0
  297. package/out/ui/packages/slider/components/sliderLabel.luau +30 -0
  298. package/out/ui/packages/slider/index.d.ts +3 -0
  299. package/out/ui/packages/slider/init.luau +6 -0
  300. package/out/ui/packages/snackbar/components/Snackbar.d.ts +1 -0
  301. package/out/ui/packages/snackbar/components/Snackbar.luau +2 -0
  302. package/out/ui/packages/sparkline/components/Sparkline.d.ts +3 -0
  303. package/out/ui/packages/sparkline/components/Sparkline.luau +72 -8
  304. package/out/ui/packages/sparkline/index.d.ts +1 -1
  305. package/out/ui/packages/sparkline/init.luau +6 -1
  306. package/out/ui/packages/sparkline/sparklineLayout.d.ts +17 -0
  307. package/out/ui/packages/sparkline/sparklineLayout.luau +132 -8
  308. package/out/ui/packages/speedDial/components/SpeedDial.d.ts +1 -0
  309. package/out/ui/packages/speedDial/components/SpeedDial.luau +59 -9
  310. package/out/ui/packages/speedDial/components/SpeedDial.styles.d.ts +1 -0
  311. package/out/ui/packages/speedDial/components/SpeedDial.styles.luau +50 -3
  312. package/out/ui/packages/speedDial/components/speedDialLabel.d.ts +4 -0
  313. package/out/ui/packages/speedDial/components/speedDialLabel.luau +16 -0
  314. package/out/ui/packages/splitPane/components/splitLook.d.ts +1 -1
  315. package/out/ui/packages/stateMatrix.d.ts +1 -0
  316. package/out/ui/packages/stateMatrix.luau +9 -0
  317. package/out/ui/packages/stepper/components/Stepper.d.ts +2 -0
  318. package/out/ui/packages/stepper/components/Stepper.luau +35 -7
  319. package/out/ui/packages/stepper/components/Stepper.styles.luau +12 -6
  320. package/out/ui/packages/stepper/components/stepState.d.ts +4 -2
  321. package/out/ui/packages/stepper/components/stepState.luau +12 -1
  322. package/out/ui/packages/stepper/index.d.ts +1 -1
  323. package/out/ui/packages/stepper/init.luau +3 -1
  324. package/out/ui/packages/switch/components/Switch.luau +2 -2
  325. package/out/ui/packages/switch/components/Switch.styles.luau +2 -5
  326. package/out/ui/packages/switch/components/switchLook.d.ts +3 -3
  327. package/out/ui/packages/switch/components/switchLook.luau +4 -10
  328. package/out/ui/packages/table/components/Table.d.ts +1 -0
  329. package/out/ui/packages/table/components/Table.luau +99 -57
  330. package/out/ui/packages/table/components/Table.styles.luau +23 -6
  331. package/out/ui/packages/table/components/tableColumns.d.ts +2 -0
  332. package/out/ui/packages/table/components/tableColumns.luau +2 -0
  333. package/out/ui/packages/table/components/tableSort.d.ts +2 -0
  334. package/out/ui/packages/table/components/tableSort.luau +95 -0
  335. package/out/ui/packages/table/index.d.ts +1 -0
  336. package/out/ui/packages/table/init.luau +1 -0
  337. package/out/ui/packages/tabs/components/Tabs.luau +77 -6
  338. package/out/ui/packages/tabs/components/Tabs.styles.luau +12 -11
  339. package/out/ui/packages/tabs/components/tabIndicator.d.ts +7 -0
  340. package/out/ui/packages/tabs/components/tabIndicator.luau +21 -0
  341. package/out/ui/packages/tabs/components/tabScroll.d.ts +2 -0
  342. package/out/ui/packages/tabs/components/tabScroll.luau +18 -0
  343. package/out/ui/packages/text/components/Text.d.ts +9 -0
  344. package/out/ui/packages/text/components/Text.luau +64 -0
  345. package/out/ui/packages/text/components/textBox.d.ts +12 -0
  346. package/out/ui/packages/text/components/textBox.luau +21 -0
  347. package/out/ui/packages/text/index.d.ts +2 -0
  348. package/out/ui/packages/text/init.luau +5 -0
  349. package/out/ui/packages/timeField/components/TimeField.d.ts +13 -0
  350. package/out/ui/packages/timeField/components/TimeField.luau +106 -0
  351. package/out/ui/packages/timeField/index.d.ts +4 -0
  352. package/out/ui/packages/timeField/init.luau +9 -0
  353. package/out/ui/packages/timeField/timeValue.d.ts +8 -0
  354. package/out/ui/packages/timeField/timeValue.luau +49 -0
  355. package/out/ui/packages/timeline/components/Timeline.d.ts +12 -0
  356. package/out/ui/packages/timeline/components/Timeline.luau +102 -0
  357. package/out/ui/packages/timeline/components/Timeline.styles.d.ts +2 -0
  358. package/out/ui/packages/timeline/components/Timeline.styles.luau +115 -0
  359. package/out/ui/packages/timeline/components/timelineRail.d.ts +4 -0
  360. package/out/ui/packages/timeline/components/timelineRail.luau +15 -0
  361. package/out/ui/packages/timeline/index.d.ts +3 -0
  362. package/out/ui/packages/timeline/init.luau +8 -0
  363. package/out/ui/packages/toast/components/Toast.d.ts +1 -0
  364. package/out/ui/packages/toast/components/Toast.luau +200 -57
  365. package/out/ui/packages/toast/components/Toast.styles.luau +40 -20
  366. package/out/ui/packages/toast/components/toastPlace.d.ts +16 -0
  367. package/out/ui/packages/toast/components/toastPlace.luau +44 -0
  368. package/out/ui/packages/toast/enums/ToastVariants.d.ts +2 -1
  369. package/out/ui/packages/toast/enums/ToastVariants.luau +1 -0
  370. package/out/ui/packages/toggleButton/components/ToggleButton.luau +43 -4
  371. package/out/ui/packages/toggleButton/components/ToggleButton.styles.luau +1 -1
  372. package/out/ui/packages/tooltip/components/Tooltip.d.ts +1 -0
  373. package/out/ui/packages/tooltip/components/Tooltip.luau +109 -31
  374. package/out/ui/packages/tooltip/components/Tooltip.styles.luau +31 -1
  375. package/out/ui/packages/tooltip/components/tooltipBox.d.ts +4 -0
  376. package/out/ui/packages/tooltip/components/tooltipBox.luau +12 -0
  377. package/out/ui/packages/tooltip/components/tooltipPointer.d.ts +2 -0
  378. package/out/ui/packages/tooltip/components/tooltipPointer.luau +11 -0
  379. package/out/ui/packages/treeView/components/TreeView.luau +12 -13
  380. package/out/ui/packages/treeView/components/TreeView.styles.luau +6 -0
  381. package/out/ui/packages/typography/components/Typography.d.ts +2 -0
  382. package/out/ui/packages/typography/components/Typography.luau +8 -0
  383. package/out/ui/packages/typography/components/Typography.styles.luau +3 -1
  384. package/out/ui/packages/udimEditor/components/UDimEditor.luau +9 -1
  385. package/out/ui/packages/udimEditor/components/UDimEditor.styles.luau +25 -18
  386. package/out/ui/packages/vectorEditor/components/VectorEditor.luau +18 -3
  387. package/out/ui/packages/vectorEditor/components/VectorEditor.styles.luau +30 -16
  388. package/out/ui/packages/virtualList/components/VirtualList.styles.luau +1 -0
  389. package/out/ui/packages/weekGrid/components/WeekGrid.d.ts +24 -0
  390. package/out/ui/packages/weekGrid/components/WeekGrid.luau +187 -0
  391. package/out/ui/packages/weekGrid/components/weekColumns.d.ts +9 -0
  392. package/out/ui/packages/weekGrid/components/weekColumns.luau +25 -0
  393. package/out/ui/packages/weekGrid/index.d.ts +3 -0
  394. package/out/ui/packages/weekGrid/init.luau +8 -0
  395. package/package.json +2 -2
@@ -7,6 +7,7 @@ local useRef = _react.useRef
7
7
  local useState = _react.useState
8
8
  local _services = TS.import(script, TS.getModule(script, "@rbxts", "services"))
9
9
  local GuiService = _services.GuiService
10
+ local TextService = _services.TextService
10
11
  local UserInputService = _services.UserInputService
11
12
  local useReducedMotion = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "hooks").useReducedMotion
12
13
  local _theme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme")
@@ -16,6 +17,7 @@ local useTheme = _theme.useTheme
16
17
  local canActivate = TS.import(script, script.Parent.Parent.Parent, "button", "components", "activation").canActivate
17
18
  local spinnerPixels = TS.import(script, script.Parent.Parent.Parent, "button", "components", "buttonLook").spinnerPixels
18
19
  local CircularProgress = TS.import(script, script.Parent.Parent.Parent, "circularProgress").CircularProgress
20
+ local Icon = TS.import(script, script.Parent.Parent.Parent, "icon").Icon
19
21
  local Input = TS.import(script, script.Parent.Parent.Parent, "input").Input
20
22
  local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
21
23
  local Popup = TS.import(script, script.Parent.Parent.Parent, "popup").Popup
@@ -37,6 +39,8 @@ local _selectMulti = TS.import(script, script.Parent, "selectMulti")
37
39
  local includesChoice = _selectMulti.includesChoice
38
40
  local selectionLabel = _selectMulti.selectionLabel
39
41
  local typeaheadChoice = TS.import(script, script.Parent, "selectTypeahead").typeaheadChoice
42
+ local fieldChrome = TS.import(script, script.Parent.Parent.Parent, "input", "components", "fieldChrome").fieldChrome
43
+ local selectWidth = TS.import(script, script.Parent, "selectWidth").selectWidth
40
44
  local stepChoice = TS.import(script, script.Parent, "stepChoice").stepChoice
41
45
  local function Select(props)
42
46
  local _binding = props
@@ -60,6 +64,11 @@ local function Select(props)
60
64
  local empty = _binding.empty
61
65
  local reducedProp = _binding.reducedMotion
62
66
  local size = _binding.size
67
+ local hasError = _binding.hasError
68
+ if hasError == nil then
69
+ hasError = false
70
+ end
71
+ local helperText = _binding.helperText
63
72
  local className = _binding.className
64
73
  local sx = _binding.sx
65
74
  local id = _binding.id
@@ -67,10 +76,14 @@ local function Select(props)
67
76
  local reducedMotion = useReducedMotion(reducedProp)
68
77
  local styles = useSelectStyles({
69
78
  size = size,
79
+ hasError = hasError,
80
+ helperText = helperText,
70
81
  })
71
82
  local _binding_1 = useTheme()
72
83
  local theme = _binding_1.theme
73
- local row = controlMetrics(theme.density, size).height
84
+ local metrics = controlMetrics(theme.density, size)
85
+ local mark = metrics.icon
86
+ local row = metrics.height
74
87
  local active = canActivate(disabled, loading)
75
88
  local anchor, setAnchor = useState()
76
89
  local open, setOpen = useState(defaultOpen == true and not loading)
@@ -104,6 +117,19 @@ local function Select(props)
104
117
  local rows = groupRows(filtered)
105
118
  local listHeight = if #rows == 0 then row else math.min(#rows * row, theme.spacing.calc(16))
106
119
  local menuHeight = listHeight + (if search then row else 0)
120
+ local font = theme.typography.fontFamilies.default or Enum.Font.SourceSans
121
+ local textSize = metrics.font
122
+ local widest = 0
123
+ for _, line in rows do
124
+ local shown = if line.kind == "header" then line.label else optionLabel(line.label, if values ~= nil then includesChoice(values, filtered[line.optionIndex + 1].value) else filtered[line.optionIndex + 1].value == value)
125
+ local bounds = TextService:GetTextSize(shown, textSize, font, Vector2.new(10000, 100))
126
+ if bounds.X > widest then
127
+ widest = bounds.X
128
+ end
129
+ end
130
+ local pad = fieldChrome(metrics.height, theme.padding.calc(1)).padX * 2
131
+ local floor = if anchor ~= nil then anchor.AbsoluteSize.X else 0
132
+ local popupWidth = if #rows == 0 then 0 else selectWidth(widest, pad, floor)
107
133
  local _condition_1 = empty
108
134
  if _condition_1 == nil then
109
135
  local _attributes = {}
@@ -265,7 +291,7 @@ local function Select(props)
265
291
  key = "Trigger",
266
292
  ref = setAnchor,
267
293
  }
268
- for _k, _v in cx(styles.trigger, current == nil and styles.placeholder, not active and {
294
+ for _k, _v in cx(styles.trigger, current == nil and styles.placeholder, hasError and styles.errorText, not active and {
269
295
  TextTransparency = 0.5,
270
296
  }) do
271
297
  _attributes_1[_k] = _v
@@ -305,133 +331,166 @@ local function Select(props)
305
331
  return onKey(input, true)
306
332
  end,
307
333
  }
308
- local _attributes_2 = table.clone(cx(styles.padding, loading and {
309
- PaddingRight = UDim.new(0, theme.padding.calc(1.5) + spinnerPixels(size) + theme.padding.calc(1)),
334
+ local _attributes_2 = table.clone(cx(styles.padding, {
335
+ PaddingRight = UDim.new(0, theme.padding.calc(1) + (if loading then spinnerPixels(size) else mark) + theme.padding.calc(1)),
310
336
  }))
311
337
  setmetatable(_attributes_2, nil)
312
338
  local _exp = React.createElement("uipadding", _attributes_2)
313
339
  local _attributes_3 = table.clone(styles.corner)
314
340
  setmetatable(_attributes_3, nil)
315
341
  local _exp_1 = React.createElement("uicorner", _attributes_3)
316
- local _attributes_4 = table.clone(cx(styles.stroke, focused and styles.focusStroke))
342
+ local _exp_2 = styles.stroke
343
+ local _condition_3 = focused
344
+ if _condition_3 then
345
+ local _result_2
346
+ if hasError then
347
+ local _object = table.clone(styles.focusStroke)
348
+ setmetatable(_object, nil)
349
+ _object.Color = theme.palette.status.error.main
350
+ _result_2 = _object
351
+ else
352
+ _result_2 = styles.focusStroke
353
+ end
354
+ _condition_3 = _result_2
355
+ end
356
+ local _attributes_4 = table.clone(cx(_exp_2, _condition_3))
317
357
  setmetatable(_attributes_4, nil)
318
- local _exp_2 = React.createElement("textbutton", _attributes_1, _exp, _exp_1, React.createElement("uistroke", _attributes_4), loading and (React.createElement(CircularProgress, {
358
+ local _exp_3 = React.createElement("textbutton", _attributes_1, _exp, _exp_1, React.createElement("uistroke", _attributes_4), if loading then (React.createElement(CircularProgress, {
319
359
  size = spinnerPixels(size),
320
360
  thickness = 2,
321
361
  color = theme.palette.text.secondary,
322
362
  reducedMotion = reducedMotion,
323
363
  className = {
324
364
  AnchorPoint = Vector2.new(1, 0.5),
325
- Position = UDim2.new(1, -theme.padding.calc(1), 0.5, 0),
365
+ Position = UDim2.new(1, spinnerPixels(size) + theme.padding.calc(1), 0.5, 0),
366
+ },
367
+ })) else (React.createElement(Icon, {
368
+ id = "Chevron",
369
+ glyph = "chevronDown",
370
+ size = mark,
371
+ tint = theme.palette.text.secondary,
372
+ className = {
373
+ AnchorPoint = Vector2.new(1, 0.5),
374
+ Position = UDim2.new(1, mark + theme.padding.calc(1), 0.5, 0),
375
+ Rotation = if shown then 180 else 0,
326
376
  },
327
377
  })))
328
- local _condition_3 = shown
329
- if _condition_3 then
378
+ local _condition_4 = helperText ~= nil
379
+ if _condition_4 then
330
380
  local _attributes_5 = {
331
- key = "Menu",
381
+ key = "Helper",
332
382
  }
333
- for _k, _v in styles.menu do
383
+ for _k, _v in styles.helper do
334
384
  _attributes_5[_k] = _v
335
385
  end
336
- local _exp_3 = React.createElement(Shadow)
337
- local _attributes_6 = table.clone(styles.corner)
338
- setmetatable(_attributes_6, nil)
339
- local _exp_4 = React.createElement("uicorner", _attributes_6)
340
- local _attributes_7 = table.clone(styles.stroke)
341
- setmetatable(_attributes_7, nil)
342
- local _exp_5 = React.createElement("uistroke", _attributes_7)
343
- local _exp_6 = React.createElement("uilistlayout", {
344
- FillDirection = Enum.FillDirection.Vertical,
345
- SortOrder = Enum.SortOrder.LayoutOrder,
346
- })
347
- local _condition_4 = search
348
- if _condition_4 then
386
+ _attributes_5.Text = helperText
387
+ _condition_4 = React.createElement("textlabel", _attributes_5)
388
+ end
389
+ local _attributes_5 = {
390
+ key = "Menu",
391
+ }
392
+ for _k, _v in styles.menu do
393
+ _attributes_5[_k] = _v
394
+ end
395
+ local _exp_4 = React.createElement(Shadow)
396
+ local _attributes_6 = table.clone(styles.corner)
397
+ setmetatable(_attributes_6, nil)
398
+ local _exp_5 = React.createElement("uicorner", _attributes_6)
399
+ local _attributes_7 = table.clone(styles.stroke)
400
+ setmetatable(_attributes_7, nil)
401
+ local _exp_6 = React.createElement("uistroke", _attributes_7)
402
+ local _exp_7 = React.createElement("uilistlayout", {
403
+ FillDirection = Enum.FillDirection.Vertical,
404
+ SortOrder = Enum.SortOrder.LayoutOrder,
405
+ })
406
+ local _condition_5 = search
407
+ if _condition_5 then
408
+ local _attributes_8 = {
409
+ key = "Search",
410
+ }
411
+ for _k, _v in styles.search do
412
+ _attributes_8[_k] = _v
413
+ end
414
+ _attributes_8.LayoutOrder = 1
415
+ _condition_5 = (React.createElement("frame", _attributes_8, React.createElement(Input, {
416
+ text = query,
417
+ placeholder = "Search",
418
+ width = UDim.new(1, 0),
419
+ onInput = function(text)
420
+ setQuery(text)
421
+ setHighlight(0)
422
+ end,
423
+ })))
424
+ end
425
+ return React.createElement(SxHost, _attributes, _exp_3, _condition_4, React.createElement(Popup, {
426
+ open = shown,
427
+ anchor = anchor,
428
+ preferredHeight = menuHeight,
429
+ preferredWidth = popupWidth,
430
+ onDismiss = close,
431
+ onInput = function(input)
432
+ return onKey(input, true)
433
+ end,
434
+ }, React.createElement("frame", _attributes_5, _exp_4, _exp_5, _exp_6, _exp_7, _condition_5, React.createElement("frame", {
435
+ key = "ListHost",
436
+ Size = UDim2.new(1, 0, 1, if search then -row else 0),
437
+ BackgroundTransparency = 1,
438
+ LayoutOrder = 2,
439
+ }, React.createElement(VirtualList, {
440
+ key = "Options",
441
+ items = rows,
442
+ getKey = function(row, index)
443
+ return `{row.kind}-{row.label}-{index}`
444
+ end,
445
+ itemHeight = row,
446
+ listRef = listRef,
447
+ empty = emptyHint,
448
+ className = styles.list,
449
+ renderItem = function(row)
450
+ if row.kind == "header" then
451
+ local _attributes_8 = table.clone(styles.group)
452
+ setmetatable(_attributes_8, nil)
453
+ _attributes_8.Text = row.label
454
+ local _attributes_9 = table.clone(styles.padding)
455
+ setmetatable(_attributes_9, nil)
456
+ return React.createElement("textlabel", _attributes_8, React.createElement("uipadding", _attributes_9))
457
+ end
458
+ local index = row.optionIndex
459
+ local picked = if values ~= nil then includesChoice(values, filtered[index + 1].value) else filtered[index + 1].value == value
349
460
  local _attributes_8 = {
350
- key = "Search",
461
+ ref = function(button)
462
+ if button and index == highlight and canFocusGui(button) then
463
+ GuiService.SelectedObject = button
464
+ end
465
+ end,
351
466
  }
352
- for _k, _v in styles.search do
467
+ for _k, _v in cx(styles.option, picked and styles.selected, index == highlight and styles.highlighted, row.disabled == true and styles.disabledOption) do
353
468
  _attributes_8[_k] = _v
354
469
  end
355
- _attributes_8.LayoutOrder = 1
356
- _condition_4 = (React.createElement("frame", _attributes_8, React.createElement(Input, {
357
- text = query,
358
- placeholder = "Search",
359
- width = UDim.new(1, 0),
360
- onInput = function(text)
361
- setQuery(text)
362
- setHighlight(0)
470
+ _attributes_8.Text = optionLabel(row.label, picked)
471
+ _attributes_8.Active = row.disabled ~= true
472
+ _attributes_8.Selectable = row.disabled ~= true
473
+ _attributes_8.Event = {
474
+ Activated = function()
475
+ return choose(index, true)
363
476
  end,
364
- })))
365
- end
366
- _condition_3 = (React.createElement(Popup, {
367
- anchor = anchor,
368
- preferredHeight = menuHeight,
369
- onDismiss = close,
370
- onInput = function(input)
371
- return onKey(input, true)
372
- end,
373
- }, React.createElement("frame", _attributes_5, _exp_3, _exp_4, _exp_5, _exp_6, _condition_4, React.createElement("frame", {
374
- key = "ListHost",
375
- Size = UDim2.new(1, 0, 1, if search then -row else 0),
376
- BackgroundTransparency = 1,
377
- LayoutOrder = 2,
378
- }, React.createElement(VirtualList, {
379
- key = "Options",
380
- items = rows,
381
- getKey = function(row, index)
382
- return `{row.kind}-{row.label}-{index}`
383
- end,
384
- itemHeight = row,
385
- listRef = listRef,
386
- empty = emptyHint,
387
- className = styles.list,
388
- renderItem = function(row)
389
- if row.kind == "header" then
390
- local _attributes_8 = table.clone(styles.group)
391
- setmetatable(_attributes_8, nil)
392
- _attributes_8.Text = row.label
393
- local _attributes_9 = table.clone(styles.padding)
394
- setmetatable(_attributes_9, nil)
395
- return React.createElement("textlabel", _attributes_8, React.createElement("uipadding", _attributes_9))
396
- end
397
- local index = row.optionIndex
398
- local picked = if values ~= nil then includesChoice(values, filtered[index + 1].value) else filtered[index + 1].value == value
399
- local _attributes_8 = {
400
- ref = function(button)
401
- if button and index == highlight and canFocusGui(button) then
402
- GuiService.SelectedObject = button
403
- end
404
- end,
405
- }
406
- for _k, _v in cx(styles.option, picked and styles.selected, index == highlight and styles.highlighted, row.disabled == true and styles.disabledOption) do
407
- _attributes_8[_k] = _v
408
- end
409
- _attributes_8.Text = optionLabel(row.label, picked)
410
- _attributes_8.Active = row.disabled ~= true
411
- _attributes_8.Selectable = row.disabled ~= true
412
- _attributes_8.Event = {
413
- Activated = function()
414
- return choose(index, true)
415
- end,
416
- MouseEnter = function()
417
- if row.disabled ~= true then
418
- setHighlight(index)
419
- end
420
- end,
421
- SelectionGained = function()
422
- return setHighlight(index)
423
- end,
424
- InputBegan = function(_, input)
425
- return onKey(input, true)
426
- end,
427
- }
428
- local _attributes_9 = table.clone(styles.padding)
429
- setmetatable(_attributes_9, nil)
430
- return React.createElement("textbutton", _attributes_8, React.createElement("uipadding", _attributes_9))
431
- end,
432
- })))))
433
- end
434
- return React.createElement(SxHost, _attributes, _exp_2, _condition_3)
477
+ MouseEnter = function()
478
+ if row.disabled ~= true then
479
+ setHighlight(index)
480
+ end
481
+ end,
482
+ SelectionGained = function()
483
+ return setHighlight(index)
484
+ end,
485
+ InputBegan = function(_, input)
486
+ return onKey(input, true)
487
+ end,
488
+ }
489
+ local _attributes_9 = table.clone(styles.padding)
490
+ setmetatable(_attributes_9, nil)
491
+ return React.createElement("textbutton", _attributes_8, React.createElement("uipadding", _attributes_9))
492
+ end,
493
+ })))))
435
494
  end
436
495
  local default = Select
437
496
  return {
@@ -1,6 +1,8 @@
1
1
  import { ControlSize } from "../../../../theme/index";
2
2
  export interface SelectStyleProps {
3
3
  size?: ControlSize;
4
+ hasError?: boolean;
5
+ helperText?: string;
4
6
  }
5
7
  declare const useSelectStyles: (props: SelectStyleProps) => import("../../../../theme/index").ClassNameMap<string>;
6
8
  export default useSelectStyles;
@@ -4,17 +4,26 @@ local _theme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "the
4
4
  local controlMetrics = _theme.controlMetrics
5
5
  local createStyles = _theme.createStyles
6
6
  local componentStyles = _theme.componentStyles
7
+ local focusRing = _theme.focusRing
8
+ local fieldChrome = TS.import(script, script.Parent.Parent.Parent, "input", "components", "fieldChrome").fieldChrome
7
9
  local useSelectStyles = componentStyles("Select", function(theme, _param)
8
10
  local size = _param.size
11
+ local hasError = _param.hasError
12
+ if hasError == nil then
13
+ hasError = false
14
+ end
15
+ local helperText = _param.helperText
9
16
  local metrics = controlMetrics(theme.density, size)
17
+ local chrome = fieldChrome(metrics.height, theme.padding.calc(1))
18
+ local withHelper = helperText ~= nil
10
19
  return createStyles({
11
20
  root = {
12
- Size = UDim2.fromOffset(theme.spacing.calc(12), metrics.height),
21
+ Size = UDim2.fromOffset(theme.spacing.calc(12), if withHelper then chrome.height + metrics.height else chrome.height),
13
22
  BackgroundTransparency = 1,
14
23
  BorderSizePixel = 0,
15
24
  },
16
25
  trigger = {
17
- Size = UDim2.fromScale(1, 1),
26
+ Size = UDim2.new(1, 0, 0, chrome.height),
18
27
  BackgroundColor3 = theme.palette.surface.input,
19
28
  BorderSizePixel = 0,
20
29
  AutoButtonColor = false,
@@ -28,8 +37,8 @@ local useSelectStyles = componentStyles("Select", function(theme, _param)
28
37
  TextColor3 = theme.palette.text.secondary,
29
38
  },
30
39
  padding = {
31
- PaddingLeft = UDim.new(0, theme.padding.calc(1.5)),
32
- PaddingRight = UDim.new(0, theme.padding.calc(1.5)),
40
+ PaddingLeft = UDim.new(0, chrome.padX),
41
+ PaddingRight = UDim.new(0, chrome.padX),
33
42
  },
34
43
  menu = {
35
44
  Size = UDim2.fromScale(1, 1),
@@ -88,14 +97,26 @@ local useSelectStyles = componentStyles("Select", function(theme, _param)
88
97
  CornerRadius = UDim.new(0, theme.shape.borderRadius),
89
98
  },
90
99
  stroke = {
91
- Color = theme.palette.border,
100
+ Color = if hasError then theme.palette.status.error.main else theme.palette.border,
101
+ Transparency = 0,
102
+ Thickness = 1,
92
103
  ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
93
104
  },
94
- focusStroke = {
95
- Color = theme.palette.focus,
96
- Thickness = 2,
97
- ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
105
+ errorText = {
106
+ TextColor3 = theme.palette.status.error.main,
107
+ },
108
+ helper = {
109
+ Size = UDim2.new(1, 0, 0, theme.spacing.calc(2)),
110
+ Position = UDim2.new(0, 0, 1, 0),
111
+ AnchorPoint = Vector2.new(0, 1),
112
+ BackgroundTransparency = 1,
113
+ BorderSizePixel = 0,
114
+ TextColor3 = if hasError then theme.palette.status.error.main else theme.palette.text.secondary,
115
+ Font = theme.typography.fontFamilies.default,
116
+ TextSize = metrics.font,
117
+ TextXAlignment = Enum.TextXAlignment.Left,
98
118
  },
119
+ focusStroke = focusRing(theme.palette.focus),
99
120
  })
100
121
  end)
101
122
  local default = useSelectStyles
@@ -0,0 +1,2 @@
1
+ /** Grow past a narrow field so the option fits. Stay at least as wide as the field. */
2
+ export declare function selectWidth(text: number, pad: number, floor: number): number;
@@ -0,0 +1,15 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ --* Grow past a narrow field so the option fits. Stay at least as wide as the field.
3
+ local function selectWidth(text, pad, floor)
4
+ local need = text + pad
5
+ if need < 0 then
6
+ need = 0
7
+ end
8
+ if floor > need then
9
+ return floor
10
+ end
11
+ return need
12
+ end
13
+ return {
14
+ selectWidth = selectWidth,
15
+ }