@rbxts/uiblox 0.2.0-alpha.2 → 0.2.0-alpha.20

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 (234) hide show
  1. package/README.md +2 -0
  2. package/out/theme/constants/NumberConstants.d.ts +2 -0
  3. package/out/theme/constants/NumberConstants.luau +3 -0
  4. package/out/theme/interfaces/spacing/Shape.d.ts +3 -0
  5. package/out/theme/interfaces/typography/FontSizes.d.ts +1 -1
  6. package/out/theme/interfaces/typography/FontSizes.luau +15 -8
  7. package/out/theme/interfaces/typography/ThemeTypography.d.ts +3 -0
  8. package/out/theme/interfaces/typography/Variants.d.ts +14 -15
  9. package/out/theme/interfaces/typography/Variants.luau +68 -18
  10. package/out/theme/themes/DarkTheme.luau +4 -0
  11. package/out/theme/themes/LightTheme.luau +4 -0
  12. package/out/ui/packages/accordion/components/Accordion.d.ts +2 -0
  13. package/out/ui/packages/accordion/components/Accordion.luau +36 -16
  14. package/out/ui/packages/accordion/components/Accordion.styles.d.ts +1 -0
  15. package/out/ui/packages/accordion/components/Accordion.styles.luau +16 -4
  16. package/out/ui/packages/accordion/components/accordionOpen.d.ts +1 -0
  17. package/out/ui/packages/accordion/components/accordionOpen.luau +4 -0
  18. package/out/ui/packages/alert/components/Alert.d.ts +2 -0
  19. package/out/ui/packages/alert/components/Alert.luau +40 -27
  20. package/out/ui/packages/alert/components/Alert.styles.d.ts +2 -0
  21. package/out/ui/packages/alert/components/Alert.styles.luau +17 -8
  22. package/out/ui/packages/appBar/components/AppBar.d.ts +2 -1
  23. package/out/ui/packages/appBar/components/AppBar.luau +5 -0
  24. package/out/ui/packages/appBar/components/AppBar.styles.d.ts +2 -0
  25. package/out/ui/packages/appBar/components/AppBar.styles.luau +6 -2
  26. package/out/ui/packages/autocomplete/components/Autocomplete.luau +8 -0
  27. package/out/ui/packages/avatar/components/Avatar.d.ts +2 -0
  28. package/out/ui/packages/avatar/components/Avatar.luau +20 -12
  29. package/out/ui/packages/avatar/components/Avatar.styles.d.ts +2 -0
  30. package/out/ui/packages/avatar/components/Avatar.styles.luau +5 -1
  31. package/out/ui/packages/backdrop/components/Backdrop.d.ts +10 -0
  32. package/out/ui/packages/backdrop/components/Backdrop.luau +58 -0
  33. package/out/ui/packages/backdrop/components/Backdrop.styles.d.ts +4 -0
  34. package/out/ui/packages/backdrop/components/Backdrop.styles.luau +24 -0
  35. package/out/ui/packages/backdrop/index.d.ts +2 -0
  36. package/out/ui/packages/backdrop/init.luau +5 -0
  37. package/out/ui/packages/badge/components/Badge.d.ts +3 -0
  38. package/out/ui/packages/badge/components/Badge.luau +23 -8
  39. package/out/ui/packages/badge/components/Badge.styles.d.ts +5 -1
  40. package/out/ui/packages/badge/components/Badge.styles.luau +20 -8
  41. package/out/ui/packages/bottomNavigation/components/BottomNavigation.d.ts +1 -0
  42. package/out/ui/packages/bottomNavigation/components/BottomNavigation.luau +8 -2
  43. package/out/ui/packages/bottomNavigation/components/BottomNavigation.styles.d.ts +3 -1
  44. package/out/ui/packages/bottomNavigation/components/BottomNavigation.styles.luau +6 -2
  45. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.d.ts +1 -0
  46. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.luau +58 -24
  47. package/out/ui/packages/breadcrumbs/components/breadcrumbItems.d.ts +9 -0
  48. package/out/ui/packages/breadcrumbs/components/breadcrumbItems.luau +68 -0
  49. package/out/ui/packages/breadcrumbs/index.d.ts +1 -0
  50. package/out/ui/packages/breadcrumbs/init.luau +3 -0
  51. package/out/ui/packages/brickColorPicker/components/brickColorCatalog.luau +1 -1
  52. package/out/ui/packages/button/components/Button.luau +9 -5
  53. package/out/ui/packages/card/components/Card.d.ts +1 -0
  54. package/out/ui/packages/card/components/Card.luau +2 -0
  55. package/out/ui/packages/checkbox/components/checkboxLook.d.ts +1 -1
  56. package/out/ui/packages/chip/components/Chip.d.ts +6 -1
  57. package/out/ui/packages/chip/components/Chip.luau +49 -2
  58. package/out/ui/packages/chip/components/Chip.styles.d.ts +6 -0
  59. package/out/ui/packages/chip/components/Chip.styles.luau +55 -10
  60. package/out/ui/packages/circularProgress/components/CircularProgress.luau +13 -2
  61. package/out/ui/packages/dialog/components/Dialog.d.ts +1 -1
  62. package/out/ui/packages/dialog/components/Dialog.luau +27 -18
  63. package/out/ui/packages/divider/components/Divider.d.ts +1 -0
  64. package/out/ui/packages/divider/components/Divider.luau +48 -0
  65. package/out/ui/packages/divider/components/Divider.styles.luau +29 -0
  66. package/out/ui/packages/divider/components/dividerLabel.d.ts +1 -0
  67. package/out/ui/packages/divider/components/dividerLabel.luau +10 -0
  68. package/out/ui/packages/drawer/components/Drawer.d.ts +1 -0
  69. package/out/ui/packages/drawer/components/Drawer.luau +4 -1
  70. package/out/ui/packages/drawer/components/Drawer.styles.d.ts +3 -1
  71. package/out/ui/packages/drawer/components/Drawer.styles.luau +3 -2
  72. package/out/ui/packages/fab/components/Fab.d.ts +3 -0
  73. package/out/ui/packages/fab/components/Fab.luau +62 -25
  74. package/out/ui/packages/fab/components/Fab.styles.d.ts +3 -0
  75. package/out/ui/packages/fab/components/Fab.styles.luau +33 -3
  76. package/out/ui/packages/fab/components/fabSize.d.ts +1 -0
  77. package/out/ui/packages/fab/components/fabSize.luau +4 -0
  78. package/out/ui/packages/fab/index.d.ts +1 -1
  79. package/out/ui/packages/fab/init.luau +1 -0
  80. package/out/ui/packages/formText/components/FormHelperText.d.ts +8 -0
  81. package/out/ui/packages/formText/components/FormHelperText.luau +44 -0
  82. package/out/ui/packages/formText/components/FormLabel.d.ts +9 -0
  83. package/out/ui/packages/formText/components/FormLabel.luau +46 -0
  84. package/out/ui/packages/formText/components/FormText.styles.d.ts +5 -0
  85. package/out/ui/packages/formText/components/FormText.styles.luau +33 -0
  86. package/out/ui/packages/formText/index.d.ts +4 -0
  87. package/out/ui/packages/formText/init.luau +6 -0
  88. package/out/ui/packages/iconButton/components/IconButton.luau +7 -2
  89. package/out/ui/packages/iconButton/components/IconButton.styles.luau +3 -0
  90. package/out/ui/packages/imageList/components/ImageList.d.ts +14 -0
  91. package/out/ui/packages/imageList/components/ImageList.luau +100 -0
  92. package/out/ui/packages/imageList/components/ImageList.styles.d.ts +6 -0
  93. package/out/ui/packages/imageList/components/ImageList.styles.luau +73 -0
  94. package/out/ui/packages/imageList/components/imageListLayout.d.ts +4 -0
  95. package/out/ui/packages/imageList/components/imageListLayout.luau +31 -0
  96. package/out/ui/packages/imageList/index.d.ts +2 -0
  97. package/out/ui/packages/imageList/init.luau +5 -0
  98. package/out/ui/packages/index.d.ts +7 -0
  99. package/out/ui/packages/init.luau +21 -0
  100. package/out/ui/packages/input/components/Input.d.ts +1 -0
  101. package/out/ui/packages/input/components/Input.luau +8 -3
  102. package/out/ui/packages/layout/components/Box.d.ts +11 -0
  103. package/out/ui/packages/layout/components/Box.luau +49 -0
  104. package/out/ui/packages/layout/components/Box.styles.d.ts +7 -0
  105. package/out/ui/packages/layout/components/Box.styles.luau +34 -0
  106. package/out/ui/packages/layout/components/Container.d.ts +10 -0
  107. package/out/ui/packages/layout/components/Container.luau +54 -0
  108. package/out/ui/packages/layout/components/Container.styles.d.ts +6 -0
  109. package/out/ui/packages/layout/components/Container.styles.luau +41 -0
  110. package/out/ui/packages/layout/components/Grid.d.ts +1 -1
  111. package/out/ui/packages/layout/components/Stack.d.ts +12 -0
  112. package/out/ui/packages/layout/components/Stack.luau +49 -0
  113. package/out/ui/packages/layout/components/Stack.styles.d.ts +8 -0
  114. package/out/ui/packages/layout/components/Stack.styles.luau +72 -0
  115. package/out/ui/packages/layout/components/boxPad.d.ts +14 -0
  116. package/out/ui/packages/layout/components/boxPad.luau +59 -0
  117. package/out/ui/packages/layout/components/containerWidth.d.ts +2 -0
  118. package/out/ui/packages/layout/components/containerWidth.luau +17 -0
  119. package/out/ui/packages/layout/components/stackAlign.d.ts +8 -0
  120. package/out/ui/packages/layout/components/stackAlign.luau +29 -0
  121. package/out/ui/packages/layout/index.d.ts +10 -0
  122. package/out/ui/packages/layout/init.luau +4 -0
  123. package/out/ui/packages/link/components/Link.d.ts +11 -0
  124. package/out/ui/packages/link/components/Link.luau +83 -0
  125. package/out/ui/packages/link/components/Link.styles.d.ts +8 -0
  126. package/out/ui/packages/link/components/Link.styles.luau +59 -0
  127. package/out/ui/packages/link/index.d.ts +3 -0
  128. package/out/ui/packages/link/init.luau +5 -0
  129. package/out/ui/packages/listItem/components/ListItem.d.ts +2 -0
  130. package/out/ui/packages/listItem/components/ListItem.luau +22 -1
  131. package/out/ui/packages/listItem/components/ListItem.styles.d.ts +1 -0
  132. package/out/ui/packages/listItem/components/ListItem.styles.luau +16 -5
  133. package/out/ui/packages/loadingStroke/components/LoadingStroke.d.ts +2 -0
  134. package/out/ui/packages/loadingStroke/components/LoadingStroke.luau +23 -19
  135. package/out/ui/packages/menu/components/Menu.d.ts +5 -0
  136. package/out/ui/packages/menu/components/Menu.luau +54 -23
  137. package/out/ui/packages/menu/components/Menu.styles.luau +5 -1
  138. package/out/ui/packages/modal/components/Modal.d.ts +1 -1
  139. package/out/ui/packages/modal/components/Modal.luau +55 -37
  140. package/out/ui/packages/motion/index.d.ts +1 -1
  141. package/out/ui/packages/motion/init.luau +1 -0
  142. package/out/ui/packages/motion/unit.d.ts +5 -0
  143. package/out/ui/packages/motion/unit.luau +23 -0
  144. package/out/ui/packages/numberInput/components/NumberInput.d.ts +1 -0
  145. package/out/ui/packages/numberInput/components/NumberInput.luau +2 -0
  146. package/out/ui/packages/pagination/components/Pagination.d.ts +4 -1
  147. package/out/ui/packages/pagination/components/Pagination.luau +41 -22
  148. package/out/ui/packages/pagination/components/Pagination.styles.d.ts +4 -1
  149. package/out/ui/packages/pagination/components/Pagination.styles.luau +19 -4
  150. package/out/ui/packages/pagination/components/pageRange.d.ts +2 -1
  151. package/out/ui/packages/pagination/components/pageRange.luau +91 -8
  152. package/out/ui/packages/pagination/index.d.ts +1 -0
  153. package/out/ui/packages/pagination/init.luau +1 -0
  154. package/out/ui/packages/paper/components/Paper.d.ts +2 -1
  155. package/out/ui/packages/paper/components/Paper.luau +14 -3
  156. package/out/ui/packages/paper/components/Paper.styles.d.ts +1 -1
  157. package/out/ui/packages/paper/components/Paper.styles.luau +6 -0
  158. package/out/ui/packages/popup/index.d.ts +1 -0
  159. package/out/ui/packages/popup/init.luau +1 -0
  160. package/out/ui/packages/radioGroup/components/RadioGroup.d.ts +1 -0
  161. package/out/ui/packages/radioGroup/components/RadioGroup.luau +4 -2
  162. package/out/ui/packages/radioGroup/components/RadioGroup.styles.d.ts +1 -0
  163. package/out/ui/packages/radioGroup/components/RadioGroup.styles.luau +4 -1
  164. package/out/ui/packages/rating/components/Rating.d.ts +11 -0
  165. package/out/ui/packages/rating/components/Rating.luau +101 -0
  166. package/out/ui/packages/rating/components/Rating.styles.d.ts +6 -0
  167. package/out/ui/packages/rating/components/Rating.styles.luau +44 -0
  168. package/out/ui/packages/rating/index.d.ts +2 -0
  169. package/out/ui/packages/rating/init.luau +5 -0
  170. package/out/ui/packages/select/components/Select.d.ts +5 -0
  171. package/out/ui/packages/select/components/Select.luau +48 -24
  172. package/out/ui/packages/select/components/Select.styles.luau +1 -1
  173. package/out/ui/packages/skeleton/components/Skeleton.luau +3 -2
  174. package/out/ui/packages/skeleton/components/Skeleton.styles.luau +7 -2
  175. package/out/ui/packages/skeleton/components/skeletonMotion.luau +1 -1
  176. package/out/ui/packages/skeleton/components/skeletonTone.d.ts +20 -0
  177. package/out/ui/packages/skeleton/components/skeletonTone.luau +14 -0
  178. package/out/ui/packages/slider/components/Slider.d.ts +3 -0
  179. package/out/ui/packages/slider/components/Slider.luau +32 -3
  180. package/out/ui/packages/slider/components/Slider.styles.d.ts +2 -0
  181. package/out/ui/packages/slider/components/Slider.styles.luau +14 -1
  182. package/out/ui/packages/slider/components/sliderMarks.d.ts +1 -0
  183. package/out/ui/packages/slider/components/sliderMarks.luau +37 -0
  184. package/out/ui/packages/snackbar/components/Snackbar.d.ts +2 -0
  185. package/out/ui/packages/snackbar/components/Snackbar.luau +5 -0
  186. package/out/ui/packages/snackbar/components/snackbarAction.d.ts +1 -0
  187. package/out/ui/packages/snackbar/components/snackbarAction.luau +10 -0
  188. package/out/ui/packages/speedDial/components/SpeedDial.d.ts +19 -0
  189. package/out/ui/packages/speedDial/components/SpeedDial.luau +101 -0
  190. package/out/ui/packages/speedDial/components/SpeedDial.styles.d.ts +5 -0
  191. package/out/ui/packages/speedDial/components/SpeedDial.styles.luau +31 -0
  192. package/out/ui/packages/speedDial/index.d.ts +3 -0
  193. package/out/ui/packages/speedDial/init.luau +5 -0
  194. package/out/ui/packages/splitPane/components/splitLook.d.ts +1 -1
  195. package/out/ui/packages/stateMatrix.d.ts +2 -0
  196. package/out/ui/packages/stateMatrix.luau +809 -252
  197. package/out/ui/packages/stepper/components/Stepper.d.ts +1 -0
  198. package/out/ui/packages/stepper/components/Stepper.luau +7 -1
  199. package/out/ui/packages/stepper/components/Stepper.styles.d.ts +3 -1
  200. package/out/ui/packages/stepper/components/Stepper.styles.luau +6 -2
  201. package/out/ui/packages/switch/components/Switch.d.ts +2 -0
  202. package/out/ui/packages/switch/components/Switch.luau +5 -0
  203. package/out/ui/packages/switch/components/Switch.styles.d.ts +2 -0
  204. package/out/ui/packages/switch/components/Switch.styles.luau +7 -2
  205. package/out/ui/packages/switch/components/switchLook.d.ts +1 -1
  206. package/out/ui/packages/table/components/Table.d.ts +1 -0
  207. package/out/ui/packages/table/components/Table.luau +4 -1
  208. package/out/ui/packages/table/components/Table.styles.d.ts +3 -1
  209. package/out/ui/packages/table/components/Table.styles.luau +10 -6
  210. package/out/ui/packages/tabs/components/Tabs.d.ts +3 -0
  211. package/out/ui/packages/tabs/components/Tabs.luau +12 -3
  212. package/out/ui/packages/tabs/components/Tabs.styles.d.ts +5 -1
  213. package/out/ui/packages/tabs/components/Tabs.styles.luau +26 -10
  214. package/out/ui/packages/tabs/components/tabsOrientation.d.ts +2 -0
  215. package/out/ui/packages/tabs/components/tabsOrientation.luau +7 -0
  216. package/out/ui/packages/tabs/index.d.ts +1 -0
  217. package/out/ui/packages/tabs/init.luau +1 -0
  218. package/out/ui/packages/toast/components/Toast.d.ts +2 -0
  219. package/out/ui/packages/toast/components/Toast.luau +26 -1
  220. package/out/ui/packages/toast/components/Toast.styles.luau +22 -4
  221. package/out/ui/packages/toggleButton/components/ToggleButton.d.ts +19 -0
  222. package/out/ui/packages/toggleButton/components/ToggleButton.luau +135 -0
  223. package/out/ui/packages/toggleButton/components/ToggleButton.styles.d.ts +7 -0
  224. package/out/ui/packages/toggleButton/components/ToggleButton.styles.luau +65 -0
  225. package/out/ui/packages/toggleButton/index.d.ts +2 -0
  226. package/out/ui/packages/toggleButton/init.luau +7 -0
  227. package/out/ui/packages/typography/components/Typography.styles.luau +4 -5
  228. package/out/ui/packages/virtualList/components/EmptyListHint.d.ts +6 -0
  229. package/out/ui/packages/virtualList/components/EmptyListHint.luau +32 -0
  230. package/out/ui/packages/virtualList/components/EmptyListHint.styles.d.ts +5 -0
  231. package/out/ui/packages/virtualList/components/EmptyListHint.styles.luau +26 -0
  232. package/out/ui/packages/virtualList/index.d.ts +2 -0
  233. package/out/ui/packages/virtualList/init.luau +1 -0
  234. package/package.json +2 -2
@@ -0,0 +1,29 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local function stackIsRow(direction)
3
+ return direction == "row"
4
+ end
5
+ local function stackGap(spacing)
6
+ return if spacing == nil then 1 else spacing
7
+ end
8
+ local function stackUsesFlex(justify)
9
+ return justify == "space-between" or justify == "space-around" or justify == "space-evenly"
10
+ end
11
+ local function stackAlignKey(align)
12
+ if align == "center" or align == "end" then
13
+ return align
14
+ end
15
+ return "start"
16
+ end
17
+ local function stackJustifyKey(justify)
18
+ if justify == "center" or justify == "end" or justify == "space-between" or justify == "space-around" or justify == "space-evenly" then
19
+ return justify
20
+ end
21
+ return "start"
22
+ end
23
+ return {
24
+ stackIsRow = stackIsRow,
25
+ stackGap = stackGap,
26
+ stackUsesFlex = stackUsesFlex,
27
+ stackAlignKey = stackAlignKey,
28
+ stackJustifyKey = stackJustifyKey,
29
+ }
@@ -4,3 +4,13 @@ export * from "./components/Grid";
4
4
  export { default as List } from "./components/List";
5
5
  export { ListProps } from "./components/List";
6
6
  export * from "./components/List";
7
+ export { default as Stack } from "./components/Stack";
8
+ export { StackProps } from "./components/Stack";
9
+ export { StackAlign, StackDirection, StackJustify } from "./components/stackAlign";
10
+ export { default as Box } from "./components/Box";
11
+ export { BoxProps } from "./components/Box";
12
+ export { BoxPad } from "./components/boxPad";
13
+ export { BoxBg } from "./components/Box.styles";
14
+ export { default as Container } from "./components/Container";
15
+ export { ContainerProps } from "./components/Container";
16
+ export { ContainerMaxWidth, containerMaxPx } from "./components/containerWidth";
@@ -9,4 +9,8 @@ exports.List = TS.import(script, script, "components", "List").default
9
9
  for _k, _v in TS.import(script, script, "components", "List") or {} do
10
10
  exports[_k] = _v
11
11
  end
12
+ exports.Stack = TS.import(script, script, "components", "Stack").default
13
+ exports.Box = TS.import(script, script, "components", "Box").default
14
+ exports.Container = TS.import(script, script, "components", "Container").default
15
+ exports.containerMaxPx = TS.import(script, script, "components", "containerWidth").containerMaxPx
12
16
  return exports
@@ -0,0 +1,11 @@
1
+ import { CustomizedProps } from "../../../../theme/index";
2
+ import { LinkColor, LinkUnderline } from "./Link.styles";
3
+ export interface LinkProps {
4
+ text: string;
5
+ color?: LinkColor;
6
+ underline?: LinkUnderline;
7
+ disabled?: boolean;
8
+ onActivated?: () => void;
9
+ }
10
+ declare function Link(props: CustomizedProps<TextButton, LinkProps>): JSX.Element;
11
+ export default Link;
@@ -0,0 +1,83 @@
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 useState = _react.useState
6
+ local canActivate = TS.import(script, script.Parent.Parent.Parent, "button", "components", "activation").canActivate
7
+ local useLinkStyles = TS.import(script, script.Parent, "Link.styles").default
8
+ local function Link(props)
9
+ local _binding = props
10
+ local text = _binding.text
11
+ local color = _binding.color
12
+ if color == nil then
13
+ color = "primary"
14
+ end
15
+ local underline = _binding.underline
16
+ if underline == nil then
17
+ underline = "always"
18
+ end
19
+ local disabled = _binding.disabled
20
+ local onActivated = _binding.onActivated
21
+ local className = _binding.className
22
+ local sx = _binding.sx
23
+ local id = _binding.id
24
+ local ref = _binding.ref
25
+ local hover, setHover = useState(false)
26
+ local showUnderline = underline == "always" or (underline == "hover" and hover)
27
+ local styles = useLinkStyles({
28
+ color = color,
29
+ disabled = disabled,
30
+ showUnderline = showUnderline,
31
+ })
32
+ local active = canActivate(disabled)
33
+ local _attributes = {}
34
+ local _condition = id
35
+ if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
36
+ _condition = "Link"
37
+ end
38
+ _attributes.key = _condition
39
+ _attributes.ref = ref
40
+ for _k, _v in styles.root do
41
+ _attributes[_k] = _v
42
+ end
43
+ if className then
44
+ for _k, _v in className do
45
+ _attributes[_k] = _v
46
+ end
47
+ end
48
+ if sx then
49
+ for _k, _v in sx do
50
+ _attributes[_k] = _v
51
+ end
52
+ end
53
+ _attributes.Text = text
54
+ _attributes.Active = active
55
+ _attributes.Selectable = active
56
+ _attributes.Event = {
57
+ Activated = function()
58
+ if active then
59
+ local _result = onActivated
60
+ if _result ~= nil then
61
+ _result()
62
+ end
63
+ end
64
+ end,
65
+ MouseEnter = function()
66
+ return setHover(true)
67
+ end,
68
+ MouseLeave = function()
69
+ return setHover(false)
70
+ end,
71
+ }
72
+ local _attributes_1 = {
73
+ key = "Underline",
74
+ }
75
+ for _k, _v in styles.underline do
76
+ _attributes_1[_k] = _v
77
+ end
78
+ return React.createElement("textbutton", _attributes, React.createElement("frame", _attributes_1))
79
+ end
80
+ local default = Link
81
+ return {
82
+ default = default,
83
+ }
@@ -0,0 +1,8 @@
1
+ export type LinkColor = "primary" | "inherit" | "error";
2
+ export type LinkUnderline = "always" | "hover" | "none";
3
+ declare const useLinkStyles: (props: {
4
+ color?: LinkColor;
5
+ disabled?: boolean;
6
+ showUnderline?: boolean;
7
+ }) => import("../../../../theme/index").ClassNameMap<string>;
8
+ export default useLinkStyles;
@@ -0,0 +1,59 @@
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 componentStyles = _theme.componentStyles
5
+ local createStyles = _theme.createStyles
6
+ local function linkColor(theme, color, disabled)
7
+ if disabled then
8
+ return theme.palette.text.disabled
9
+ end
10
+ if color == "error" then
11
+ return theme.palette.status.error.main
12
+ end
13
+ if color == "inherit" then
14
+ return theme.palette.text.primary
15
+ end
16
+ return theme.palette.primary.main
17
+ end
18
+ local useLinkStyles = componentStyles("Link", function(theme, _param)
19
+ local color = _param.color
20
+ if color == nil then
21
+ color = "primary"
22
+ end
23
+ local disabled = _param.disabled
24
+ if disabled == nil then
25
+ disabled = false
26
+ end
27
+ local showUnderline = _param.showUnderline
28
+ if showUnderline == nil then
29
+ showUnderline = true
30
+ end
31
+ local ink = linkColor(theme, color, disabled)
32
+ return createStyles({
33
+ root = {
34
+ AutomaticSize = Enum.AutomaticSize.XY,
35
+ Size = UDim2.fromScale(0, 0),
36
+ BackgroundTransparency = 1,
37
+ BorderSizePixel = 0,
38
+ AutoButtonColor = false,
39
+ Active = not disabled,
40
+ Selectable = not disabled,
41
+ TextColor3 = ink,
42
+ Font = theme.typography.fontFamilies.default,
43
+ TextSize = theme.typography.fontSizes.body,
44
+ TextXAlignment = Enum.TextXAlignment.Left,
45
+ },
46
+ underline = {
47
+ Size = UDim2.new(1, 0, 0, 1),
48
+ Position = UDim2.new(0, 0, 1, 0),
49
+ AnchorPoint = Vector2.new(0, 1),
50
+ BackgroundColor3 = ink,
51
+ BackgroundTransparency = if showUnderline then 0 else 1,
52
+ BorderSizePixel = 0,
53
+ },
54
+ })
55
+ end)
56
+ local default = useLinkStyles
57
+ return {
58
+ default = default,
59
+ }
@@ -0,0 +1,3 @@
1
+ export { default as Link } from "./components/Link";
2
+ export { LinkProps } from "./components/Link";
3
+ export { LinkColor, LinkUnderline } from "./components/Link.styles";
@@ -0,0 +1,5 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ local TS = _G[script]
3
+ local exports = {}
4
+ exports.Link = TS.import(script, script, "components", "Link").default
5
+ return exports
@@ -3,6 +3,8 @@ export interface ListItemProps {
3
3
  secondary?: string;
4
4
  selected?: boolean;
5
5
  disabled?: boolean;
6
+ dense?: boolean;
7
+ divider?: boolean;
6
8
  onActivated?: () => void;
7
9
  }
8
10
  declare function ListItem(props: ListItemProps): JSX.Element;
@@ -14,10 +14,19 @@ local function ListItem(props)
14
14
  if disabled == nil then
15
15
  disabled = false
16
16
  end
17
+ local dense = _binding.dense
18
+ if dense == nil then
19
+ dense = false
20
+ end
21
+ local divider = _binding.divider
22
+ if divider == nil then
23
+ divider = false
24
+ end
17
25
  local onActivated = _binding.onActivated
18
26
  local styles = useListItemStyles({
19
27
  selected = selected,
20
28
  disabled = disabled,
29
+ dense = dense,
21
30
  })
22
31
  local _attributes = {
23
32
  key = "ListItem",
@@ -59,7 +68,19 @@ local function ListItem(props)
59
68
  else
60
69
  _result = nil
61
70
  end
62
- return React.createElement("textbutton", _attributes, _exp, _exp_1, _exp_2, _result)
71
+ local _result_1
72
+ if divider == true then
73
+ local _attributes_4 = {
74
+ key = "Divider",
75
+ }
76
+ for _k, _v in styles.divider do
77
+ _attributes_4[_k] = _v
78
+ end
79
+ _result_1 = React.createElement("frame", _attributes_4)
80
+ else
81
+ _result_1 = nil
82
+ end
83
+ return React.createElement("textbutton", _attributes, _exp, _exp_1, _exp_2, _result, _result_1)
63
84
  end
64
85
  local default = ListItem
65
86
  return {
@@ -1,5 +1,6 @@
1
1
  declare const useListItemStyles: (props: {
2
2
  selected?: boolean;
3
3
  disabled?: boolean;
4
+ dense?: boolean;
4
5
  }) => import("../../../../theme/index").ClassNameMap<string>;
5
6
  export default useListItemStyles;
@@ -12,6 +12,11 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
12
12
  if disabled == nil then
13
13
  disabled = false
14
14
  end
15
+ local dense = _param.dense
16
+ if dense == nil then
17
+ dense = false
18
+ end
19
+ local pad = theme.padding.calc(if dense == true then 0.5 else 1)
15
20
  return createStyles({
16
21
  root = {
17
22
  Size = UDim2.new(1, 0, 0, 0),
@@ -25,10 +30,10 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
25
30
  Selectable = not disabled,
26
31
  },
27
32
  padding = {
28
- PaddingTop = UDim.new(0, theme.padding.calc(1)),
29
- PaddingBottom = UDim.new(0, theme.padding.calc(1)),
30
- PaddingLeft = UDim.new(0, theme.padding.calc(1)),
31
- PaddingRight = UDim.new(0, theme.padding.calc(1)),
33
+ PaddingTop = UDim.new(0, pad),
34
+ PaddingBottom = UDim.new(0, pad),
35
+ PaddingLeft = UDim.new(0, pad),
36
+ PaddingRight = UDim.new(0, pad),
32
37
  },
33
38
  list = {
34
39
  FillDirection = Enum.FillDirection.Vertical,
@@ -41,7 +46,7 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
41
46
  BackgroundTransparency = 1,
42
47
  BorderSizePixel = 0,
43
48
  Font = theme.typography.fontFamilies.default,
44
- TextSize = theme.typography.fontSizes.body,
49
+ TextSize = if dense == true then theme.typography.fontSizes.caption else theme.typography.fontSizes.body,
45
50
  TextColor3 = if disabled then theme.palette.text.disabled else theme.palette.text.primary,
46
51
  TextXAlignment = Enum.TextXAlignment.Left,
47
52
  },
@@ -56,6 +61,12 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
56
61
  TextColor3 = theme.palette.text.secondary,
57
62
  TextXAlignment = Enum.TextXAlignment.Left,
58
63
  },
64
+ divider = {
65
+ LayoutOrder = 3,
66
+ Size = UDim2.new(1, 0, 0, 1),
67
+ BackgroundColor3 = theme.palette.divider,
68
+ BorderSizePixel = 0,
69
+ },
59
70
  })
60
71
  end)
61
72
  local default = useListItemStyles
@@ -1,6 +1,8 @@
1
1
  import { CustomizedProps } from "../../../../theme/index";
2
2
  export interface LoadingStrokeProps {
3
3
  animating?: boolean;
4
+ color?: Color3;
5
+ thickness?: number;
4
6
  }
5
7
  declare function LoadingStroke(props: CustomizedProps<UIStroke, LoadingStrokeProps>): JSX.Element;
6
8
  export default LoadingStroke;
@@ -4,37 +4,41 @@ local _react = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
4
  local React = _react
5
5
  local useEffect = _react.useEffect
6
6
  local useRef = _react.useRef
7
- local TweenService = TS.import(script, TS.getModule(script, "@rbxts", "services")).TweenService
7
+ local useTheme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme").useTheme
8
+ local loopProperty = TS.import(script, script.Parent.Parent.Parent, "motion").loopProperty
8
9
  local function LoadingStroke(props)
9
10
  local _binding = props
10
11
  local animating = _binding.animating
11
12
  if animating == nil then
12
13
  animating = false
13
14
  end
15
+ local color = _binding.color
16
+ local thickness = _binding.thickness
17
+ if thickness == nil then
18
+ thickness = 2
19
+ end
14
20
  local className = _binding.className
15
21
  local sx = _binding.sx
16
22
  local children = _binding.children
17
23
  local id = _binding.id
18
24
  local ref = _binding.ref
25
+ local _binding_1 = useTheme()
26
+ local theme = _binding_1.theme
19
27
  local gradientRef = useRef()
28
+ local stroke = color or theme.palette.primary.on
20
29
  useEffect(function()
21
- if gradientRef.current then
22
- if animating then
23
- local tween = TweenService:Create(gradientRef.current, TweenInfo.new(2, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, -1, false), {
24
- Rotation = 360,
25
- })
26
- tween:Play()
27
- return function()
28
- return tween:Destroy()
29
- end
30
- else
31
- gradientRef.current.Rotation = 0
32
- end
30
+ local gradient = gradientRef.current
31
+ if not gradient then
32
+ return nil
33
+ end
34
+ if animating then
35
+ gradient.Rotation = 0
36
+ return loopProperty(gradient, {
37
+ Rotation = 360,
38
+ }, 1.2)
33
39
  end
40
+ gradient.Rotation = 0
34
41
  end, { animating })
35
- -- Decorative shimmer; not a semantic text/surface token.
36
- local stroke = Color3.fromRGB(255, 255, 255)
37
- local mid = Color3.fromRGB(235, 235, 235)
38
42
  local _attributes = {}
39
43
  local _condition = id
40
44
  if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
@@ -43,7 +47,7 @@ local function LoadingStroke(props)
43
47
  _attributes.key = _condition
44
48
  _attributes.ref = ref
45
49
  _attributes.Color = stroke
46
- _attributes.Thickness = 2
50
+ _attributes.Thickness = thickness
47
51
  _attributes.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
48
52
  if className then
49
53
  for _k, _v in className do
@@ -57,9 +61,9 @@ local function LoadingStroke(props)
57
61
  end
58
62
  return React.createElement("uistroke", _attributes, React.createElement("uigradient", {
59
63
  ref = gradientRef,
60
- Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.5, 0), NumberSequenceKeypoint.new(1, 1) }),
64
+ Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.45, 0), NumberSequenceKeypoint.new(0.55, 0), NumberSequenceKeypoint.new(1, 1) }),
61
65
  Rotation = 0,
62
- Color = ColorSequence.new({ ColorSequenceKeypoint.new(0, stroke), ColorSequenceKeypoint.new(0.5, mid), ColorSequenceKeypoint.new(1, stroke) }),
66
+ Color = ColorSequence.new(stroke),
63
67
  }), children)
64
68
  end
65
69
  local default = LoadingStroke
@@ -1,3 +1,4 @@
1
+ import React from "@rbxts/react";
1
2
  export interface MenuItem {
2
3
  id: string;
3
4
  text: string;
@@ -9,6 +10,10 @@ export interface MenuProps {
9
10
  items: MenuItem[];
10
11
  onSelect: (id: string) => void;
11
12
  onClose: () => void;
13
+ emptyText?: string;
14
+ empty?: React.Element;
15
+ dense?: boolean;
16
+ selected?: string;
12
17
  }
13
18
  declare function Menu(props: MenuProps): JSX.Element | undefined;
14
19
  export default Menu;
@@ -3,8 +3,10 @@ local TS = _G[script]
3
3
  local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
4
  local ListItem = TS.import(script, script.Parent.Parent.Parent, "listItem").ListItem
5
5
  local Popup = TS.import(script, script.Parent.Parent.Parent, "popup").Popup
6
+ local EmptyListHint = TS.import(script, script.Parent.Parent.Parent, "virtualList").EmptyListHint
6
7
  local useMenuStyles = TS.import(script, script.Parent, "Menu.styles").default
7
8
  local ROW = 28
9
+ local ROW_DENSE = 22
8
10
  local function Menu(props)
9
11
  local _binding = props
10
12
  local anchor = _binding.anchor
@@ -12,10 +14,17 @@ local function Menu(props)
12
14
  local items = _binding.items
13
15
  local onSelect = _binding.onSelect
14
16
  local onClose = _binding.onClose
17
+ local emptyText = _binding.emptyText
18
+ local empty = _binding.empty
19
+ local dense = _binding.dense
20
+ local selected = _binding.selected
15
21
  local styles = useMenuStyles()
16
22
  if not open then
17
23
  return nil
18
24
  end
25
+ local vacant = #items == 0
26
+ local row = if dense == true then ROW_DENSE else ROW
27
+ local height = if vacant then row else #items * row
19
28
  local _attributes = {
20
29
  key = "Surface",
21
30
  }
@@ -25,34 +34,56 @@ local function Menu(props)
25
34
  local _attributes_1 = table.clone(styles.corner)
26
35
  setmetatable(_attributes_1, nil)
27
36
  local _exp = React.createElement("uicorner", _attributes_1)
28
- local _attributes_2 = table.clone(styles.list)
37
+ local _attributes_2 = table.clone(styles.stroke)
29
38
  setmetatable(_attributes_2, nil)
30
- local _exp_1 = React.createElement("uilistlayout", _attributes_2)
31
- -- ▼ ReadonlyArray.map ▼
32
- local _newValue = table.create(#items)
33
- local _callback = function(item)
34
- return React.createElement(ListItem, {
35
- key = item.id,
36
- text = item.text,
37
- disabled = item.disabled,
38
- onActivated = function()
39
- if item.disabled == true then
40
- return nil
41
- end
42
- onSelect(item.id)
43
- onClose()
44
- end,
45
- })
39
+ local _exp_1 = React.createElement("uistroke", _attributes_2)
40
+ local _attributes_3 = table.clone(styles.list)
41
+ setmetatable(_attributes_3, nil)
42
+ local _exp_2 = React.createElement("uilistlayout", _attributes_3)
43
+ local _result
44
+ if vacant then
45
+ local _condition = empty
46
+ if _condition == nil then
47
+ local _attributes_4 = {}
48
+ local _condition_1 = emptyText
49
+ if _condition_1 == nil then
50
+ _condition_1 = "No options"
51
+ end
52
+ _attributes_4.text = _condition_1
53
+ _attributes_4.height = row
54
+ _condition = React.createElement(EmptyListHint, _attributes_4)
55
+ end
56
+ _result = _condition
57
+ else
58
+ -- ▼ ReadonlyArray.map ▼
59
+ local _newValue = table.create(#items)
60
+ local _callback = function(item)
61
+ return React.createElement(ListItem, {
62
+ key = item.id,
63
+ text = item.text,
64
+ disabled = item.disabled,
65
+ dense = dense,
66
+ selected = item.id == selected,
67
+ onActivated = function()
68
+ if item.disabled == true then
69
+ return nil
70
+ end
71
+ onSelect(item.id)
72
+ onClose()
73
+ end,
74
+ })
75
+ end
76
+ for _k, _v in items do
77
+ _newValue[_k] = _callback(_v, _k - 1, items)
78
+ end
79
+ -- ▲ ReadonlyArray.map ▲
80
+ _result = _newValue
46
81
  end
47
- for _k, _v in items do
48
- _newValue[_k] = _callback(_v, _k - 1, items)
49
- end
50
- -- ▲ ReadonlyArray.map ▲
51
82
  return React.createElement(Popup, {
52
83
  anchor = anchor,
53
- preferredHeight = #items * ROW,
84
+ preferredHeight = height,
54
85
  onDismiss = onClose,
55
- }, React.createElement("frame", _attributes, _exp, _exp_1, _newValue))
86
+ }, React.createElement("frame", _attributes, _exp, _exp_1, _exp_2, _result))
56
87
  end
57
88
  local default = Menu
58
89
  return {
@@ -8,12 +8,16 @@ local useMenuStyles = componentStyles("Menu", function(theme)
8
8
  surface = {
9
9
  Size = UDim2.new(1, 0, 0, 0),
10
10
  AutomaticSize = Enum.AutomaticSize.Y,
11
- BackgroundColor3 = theme.palette.surface.paper,
11
+ BackgroundColor3 = theme.palette.surface.elevated,
12
12
  BorderSizePixel = 0,
13
13
  },
14
14
  corner = {
15
15
  CornerRadius = UDim.new(0, theme.shape.borderRadius),
16
16
  },
17
+ stroke = {
18
+ Color = theme.palette.border,
19
+ ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
20
+ },
17
21
  list = {
18
22
  FillDirection = Enum.FillDirection.Vertical,
19
23
  SortOrder = Enum.SortOrder.LayoutOrder,
@@ -5,5 +5,5 @@ export interface ModalProps {
5
5
  onClose: () => void;
6
6
  children?: React.ReactNode;
7
7
  }
8
- declare function Modal(props: ModalProps): JSX.Element | undefined;
8
+ declare function Modal(props: ModalProps): JSX.Element;
9
9
  export default Modal;