@rbxts/uiblox 0.2.0-alpha.37 → 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 (212) 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 +2 -0
  15. package/out/theme/styles/utilities/focusRing.luau +3 -0
  16. package/out/theme/styles/utilities/index.d.ts +1 -1
  17. package/out/theme/styles/utilities/init.luau +3 -1
  18. package/out/theme/themes/DarkTheme.luau +4 -0
  19. package/out/theme/themes/LightTheme.luau +4 -0
  20. package/out/theme/themes/createPalette.luau +15 -0
  21. package/out/ui/packages/accordion/components/Accordion.luau +84 -40
  22. package/out/ui/packages/accordion/components/Accordion.styles.luau +35 -17
  23. package/out/ui/packages/alert/components/Alert.luau +15 -11
  24. package/out/ui/packages/alert/components/Alert.styles.luau +37 -26
  25. package/out/ui/packages/appBar/components/AppBar.luau +35 -13
  26. package/out/ui/packages/appBar/components/AppBar.styles.luau +41 -35
  27. package/out/ui/packages/autocomplete/components/Autocomplete.luau +4 -0
  28. package/out/ui/packages/avatar/components/Avatar.d.ts +2 -0
  29. package/out/ui/packages/avatar/components/Avatar.luau +9 -2
  30. package/out/ui/packages/avatar/components/Avatar.styles.luau +7 -0
  31. package/out/ui/packages/avatarGroup/components/AvatarGroup.luau +9 -4
  32. package/out/ui/packages/avatarGroup/components/AvatarGroup.styles.luau +6 -1
  33. package/out/ui/packages/badge/components/Badge.luau +14 -11
  34. package/out/ui/packages/badge/components/Badge.styles.luau +5 -1
  35. package/out/ui/packages/bottomNavigation/components/BottomNavigation.styles.luau +4 -3
  36. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.luau +6 -2
  37. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.styles.luau +4 -0
  38. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.luau +20 -2
  39. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.styles.luau +72 -66
  40. package/out/ui/packages/button/components/Button.luau +61 -34
  41. package/out/ui/packages/button/components/buttonPaint.d.ts +16 -0
  42. package/out/ui/packages/button/components/buttonPaint.luau +70 -0
  43. package/out/ui/packages/buttonGroup/components/ButtonGroup.d.ts +1 -0
  44. package/out/ui/packages/buttonGroup/components/ButtonGroup.luau +17 -2
  45. package/out/ui/packages/card/components/Card.styles.luau +4 -2
  46. package/out/ui/packages/cframeEditor/components/CFrameEditor.luau +9 -1
  47. package/out/ui/packages/cframeEditor/components/CFrameEditor.styles.luau +50 -41
  48. package/out/ui/packages/checkbox/components/Checkbox.luau +5 -4
  49. package/out/ui/packages/checkbox/components/checkboxLook.d.ts +2 -2
  50. package/out/ui/packages/checkbox/components/checkboxLook.luau +2 -2
  51. package/out/ui/packages/chip/components/Chip.luau +16 -14
  52. package/out/ui/packages/chip/components/Chip.styles.luau +7 -4
  53. package/out/ui/packages/circularProgress/components/CircularProgress.luau +10 -3
  54. package/out/ui/packages/codeEditor/components/CodeEditor.d.ts +12 -0
  55. package/out/ui/packages/codeEditor/components/CodeEditor.luau +262 -0
  56. package/out/ui/packages/codeEditor/components/CodeEditor.styles.d.ts +6 -0
  57. package/out/ui/packages/codeEditor/components/CodeEditor.styles.luau +124 -0
  58. package/out/ui/packages/codeEditor/highlightCode.d.ts +11 -0
  59. package/out/ui/packages/codeEditor/highlightCode.luau +503 -0
  60. package/out/ui/packages/codeEditor/index.d.ts +2 -0
  61. package/out/ui/packages/codeEditor/init.luau +5 -0
  62. package/out/ui/packages/colorPicker/components/ColorPicker.luau +9 -1
  63. package/out/ui/packages/colorPicker/components/ColorPicker.styles.luau +74 -67
  64. package/out/ui/packages/colorPicker/components/ColorSequenceEditor.luau +12 -4
  65. package/out/ui/packages/colorPicker/components/NumberSequenceEditor.luau +12 -4
  66. package/out/ui/packages/dateRange/components/DateRangePicker.luau +31 -19
  67. package/out/ui/packages/dialog/components/Dialog.styles.luau +4 -2
  68. package/out/ui/packages/divider/components/Divider.luau +3 -1
  69. package/out/ui/packages/divider/components/Divider.styles.luau +1 -0
  70. package/out/ui/packages/drawer/components/Drawer.d.ts +1 -0
  71. package/out/ui/packages/drawer/components/Drawer.luau +43 -14
  72. package/out/ui/packages/drawer/components/Drawer.styles.luau +13 -5
  73. package/out/ui/packages/drawer/components/drawerPlacement.d.ts +2 -0
  74. package/out/ui/packages/drawer/components/drawerPlacement.luau +18 -0
  75. package/out/ui/packages/editorFace.d.ts +22 -0
  76. package/out/ui/packages/editorFace.luau +49 -0
  77. package/out/ui/packages/fab/components/Fab.luau +19 -6
  78. package/out/ui/packages/fab/components/Fab.styles.luau +4 -3
  79. package/out/ui/packages/fab/components/fabSize.d.ts +1 -1
  80. package/out/ui/packages/fontEditor/components/FontEditor.luau +13 -3
  81. package/out/ui/packages/fontEditor/components/FontEditor.styles.luau +36 -27
  82. package/out/ui/packages/gradientEditor/components/GradientEditor.luau +21 -13
  83. package/out/ui/packages/gradientEditor/components/GradientEditor.styles.luau +52 -44
  84. package/out/ui/packages/icon/components/DrawnGlyph.d.ts +11 -0
  85. package/out/ui/packages/icon/components/DrawnGlyph.luau +87 -0
  86. package/out/ui/packages/icon/components/Icon.d.ts +6 -2
  87. package/out/ui/packages/icon/components/Icon.luau +23 -3
  88. package/out/ui/packages/icon/components/Icon.styles.luau +3 -0
  89. package/out/ui/packages/icon/components/glyphs.d.ts +28 -0
  90. package/out/ui/packages/icon/components/glyphs.luau +64 -0
  91. package/out/ui/packages/icon/index.d.ts +1 -0
  92. package/out/ui/packages/iconButton/components/IconButton.d.ts +5 -2
  93. package/out/ui/packages/iconButton/components/IconButton.luau +83 -16
  94. package/out/ui/packages/iconButton/components/IconButton.styles.luau +4 -27
  95. package/out/ui/packages/iconButton/components/iconButtonBox.d.ts +11 -0
  96. package/out/ui/packages/iconButton/components/iconButtonBox.luau +48 -0
  97. package/out/ui/packages/iconButton/components/transportGlyph.d.ts +1 -0
  98. package/out/ui/packages/iconButton/components/transportGlyph.luau +4 -0
  99. package/out/ui/packages/imageList/components/ImageList.luau +11 -36
  100. package/out/ui/packages/imageList/components/ImageList.styles.luau +1 -0
  101. package/out/ui/packages/imageList/components/imageListLayout.d.ts +0 -2
  102. package/out/ui/packages/imageList/components/imageListLayout.luau +0 -8
  103. package/out/ui/packages/index.d.ts +1 -0
  104. package/out/ui/packages/init.luau +3 -0
  105. package/out/ui/packages/input/components/Input.luau +46 -29
  106. package/out/ui/packages/input/components/Input.styles.luau +8 -11
  107. package/out/ui/packages/input/components/fieldChrome.d.ts +5 -0
  108. package/out/ui/packages/input/components/fieldChrome.luau +11 -0
  109. package/out/ui/packages/layout/components/Box.luau +92 -13
  110. package/out/ui/packages/layout/components/Box.styles.d.ts +0 -2
  111. package/out/ui/packages/layout/components/Box.styles.luau +0 -9
  112. package/out/ui/packages/layout/components/Grid.luau +81 -16
  113. package/out/ui/packages/layout/components/Pad.d.ts +24 -0
  114. package/out/ui/packages/layout/components/Pad.luau +88 -0
  115. package/out/ui/packages/layout/components/Stack.luau +79 -13
  116. package/out/ui/packages/link/components/Link.luau +19 -13
  117. package/out/ui/packages/link/components/Link.styles.luau +10 -1
  118. package/out/ui/packages/listItem/components/ListItem.luau +61 -4
  119. package/out/ui/packages/listItem/components/ListItem.styles.d.ts +1 -0
  120. package/out/ui/packages/listItem/components/ListItem.styles.luau +28 -11
  121. package/out/ui/packages/listItem/components/listItemInk.d.ts +1 -1
  122. package/out/ui/packages/listItem/components/listItemLayout.d.ts +12 -2
  123. package/out/ui/packages/listItem/components/listItemLayout.luau +29 -2
  124. package/out/ui/packages/markdown/components/Markdown.luau +163 -50
  125. package/out/ui/packages/markdown/components/Markdown.styles.luau +125 -76
  126. package/out/ui/packages/markdown/components/MarkdownEditor.luau +215 -146
  127. package/out/ui/packages/markdown/components/MarkdownEditor.styles.d.ts +1 -0
  128. package/out/ui/packages/markdown/components/MarkdownEditor.styles.luau +153 -83
  129. package/out/ui/packages/markdown/index.d.ts +1 -1
  130. package/out/ui/packages/markdown/parseMarkdown.d.ts +9 -1
  131. package/out/ui/packages/markdown/parseMarkdown.luau +350 -29
  132. package/out/ui/packages/menu/components/Menu.d.ts +1 -1
  133. package/out/ui/packages/menu/components/Menu.luau +12 -11
  134. package/out/ui/packages/menu/components/Menu.styles.luau +6 -1
  135. package/out/ui/packages/menu/components/menuIcon.d.ts +1 -1
  136. package/out/ui/packages/numberInput/components/NumberInput.luau +19 -4
  137. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.luau +9 -1
  138. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.styles.luau +23 -16
  139. package/out/ui/packages/pager/components/Pager.luau +15 -13
  140. package/out/ui/packages/pager/components/Pager.styles.luau +5 -0
  141. package/out/ui/packages/pagination/components/Pagination.styles.luau +4 -1
  142. package/out/ui/packages/paper/components/Paper.luau +17 -11
  143. package/out/ui/packages/paper/components/Paper.styles.luau +12 -5
  144. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.luau +9 -1
  145. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.styles.luau +24 -19
  146. package/out/ui/packages/popover/components/Popover.d.ts +1 -1
  147. package/out/ui/packages/popover/components/Popover.luau +6 -4
  148. package/out/ui/packages/popover/components/Popover.styles.luau +6 -0
  149. package/out/ui/packages/popup/components/Popup.d.ts +2 -0
  150. package/out/ui/packages/popup/components/Popup.luau +64 -2
  151. package/out/ui/packages/popup/components/placement.luau +6 -4
  152. package/out/ui/packages/progressBar/components/ProgressBar.luau +1 -1
  153. package/out/ui/packages/progressBar/components/ProgressBar.styles.luau +3 -2
  154. package/out/ui/packages/radioGroup/components/RadioGroup.luau +2 -1
  155. package/out/ui/packages/rating/components/Rating.luau +45 -3
  156. package/out/ui/packages/rating/components/Rating.styles.luau +1 -1
  157. package/out/ui/packages/rayEditor/components/RayEditor.luau +9 -1
  158. package/out/ui/packages/rayEditor/components/RayEditor.styles.luau +17 -11
  159. package/out/ui/packages/rectEditor/components/RectEditor.luau +9 -1
  160. package/out/ui/packages/rectEditor/components/RectEditor.styles.luau +49 -42
  161. package/out/ui/packages/select/components/Select.d.ts +2 -0
  162. package/out/ui/packages/select/components/Select.luau +148 -106
  163. package/out/ui/packages/select/components/Select.styles.d.ts +2 -0
  164. package/out/ui/packages/select/components/Select.styles.luau +29 -5
  165. package/out/ui/packages/shadow/components/Shadow.luau +188 -19
  166. package/out/ui/packages/sidebar/components/Sidebar.styles.luau +1 -0
  167. package/out/ui/packages/skeleton/components/Skeleton.luau +4 -0
  168. package/out/ui/packages/slider/components/RangeSlider.luau +6 -5
  169. package/out/ui/packages/slider/components/Slider.luau +11 -16
  170. package/out/ui/packages/sparkline/components/Sparkline.luau +7 -5
  171. package/out/ui/packages/speedDial/components/SpeedDial.luau +4 -1
  172. package/out/ui/packages/speedDial/components/SpeedDial.styles.luau +5 -0
  173. package/out/ui/packages/speedDial/components/speedDialLabel.d.ts +1 -1
  174. package/out/ui/packages/splitPane/components/splitLook.d.ts +1 -1
  175. package/out/ui/packages/stepper/components/Stepper.styles.luau +9 -6
  176. package/out/ui/packages/switch/components/Switch.luau +2 -2
  177. package/out/ui/packages/switch/components/switchLook.d.ts +3 -3
  178. package/out/ui/packages/switch/components/switchLook.luau +4 -10
  179. package/out/ui/packages/table/components/Table.d.ts +1 -0
  180. package/out/ui/packages/table/components/Table.luau +92 -53
  181. package/out/ui/packages/table/components/Table.styles.luau +23 -6
  182. package/out/ui/packages/table/components/tableColumns.d.ts +2 -0
  183. package/out/ui/packages/table/components/tableColumns.luau +2 -0
  184. package/out/ui/packages/tabs/components/Tabs.luau +7 -4
  185. package/out/ui/packages/tabs/components/Tabs.styles.luau +12 -11
  186. package/out/ui/packages/tabs/components/tabIndicator.d.ts +7 -0
  187. package/out/ui/packages/tabs/components/tabIndicator.luau +21 -0
  188. package/out/ui/packages/text/components/Text.d.ts +2 -0
  189. package/out/ui/packages/text/components/Text.luau +12 -2
  190. package/out/ui/packages/timeField/components/TimeField.luau +11 -7
  191. package/out/ui/packages/timeline/components/Timeline.luau +35 -32
  192. package/out/ui/packages/timeline/components/Timeline.styles.luau +19 -10
  193. package/out/ui/packages/toast/components/Toast.luau +168 -72
  194. package/out/ui/packages/toast/components/Toast.styles.luau +36 -19
  195. package/out/ui/packages/toast/components/toastPlace.d.ts +4 -0
  196. package/out/ui/packages/toast/components/toastPlace.luau +13 -0
  197. package/out/ui/packages/toast/enums/ToastVariants.d.ts +2 -1
  198. package/out/ui/packages/toast/enums/ToastVariants.luau +1 -0
  199. package/out/ui/packages/toggleButton/components/ToggleButton.luau +43 -4
  200. package/out/ui/packages/toggleButton/components/ToggleButton.styles.luau +1 -1
  201. package/out/ui/packages/tooltip/components/Tooltip.styles.luau +2 -2
  202. package/out/ui/packages/treeView/components/TreeView.luau +12 -13
  203. package/out/ui/packages/treeView/components/TreeView.styles.luau +6 -0
  204. package/out/ui/packages/typography/components/Typography.d.ts +2 -0
  205. package/out/ui/packages/typography/components/Typography.luau +8 -0
  206. package/out/ui/packages/typography/components/Typography.styles.luau +3 -1
  207. package/out/ui/packages/udimEditor/components/UDimEditor.luau +9 -1
  208. package/out/ui/packages/udimEditor/components/UDimEditor.styles.luau +25 -18
  209. package/out/ui/packages/vectorEditor/components/VectorEditor.luau +17 -3
  210. package/out/ui/packages/vectorEditor/components/VectorEditor.styles.luau +30 -16
  211. package/out/ui/packages/virtualList/components/VirtualList.styles.luau +1 -0
  212. package/package.json +69 -67
@@ -1,7 +1,16 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
2
  local TS = _G[script]
3
3
  local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
+ local _theme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme")
5
+ local resolveSx = _theme.resolveSx
6
+ local useTheme = _theme.useTheme
4
7
  local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
8
+ local _Pad = TS.import(script, script.Parent, "Pad")
9
+ local automaticAxes = _Pad.automaticAxes
10
+ local Pad = _Pad.Pad
11
+ local padActive = _Pad.padActive
12
+ local styleAutomaticSize = _Pad.styleAutomaticSize
13
+ local withoutPad = _Pad.withoutPad
5
14
  local useStackStyles = TS.import(script, script.Parent, "Stack.styles").default
6
15
  local function Stack(props)
7
16
  local _binding = props
@@ -16,6 +25,8 @@ local function Stack(props)
16
25
  local sx = _binding.sx
17
26
  local id = _binding.id
18
27
  local ref = _binding.ref
28
+ local _binding_1 = useTheme()
29
+ local theme = _binding_1.theme
19
30
  local styles = useStackStyles({
20
31
  direction = direction,
21
32
  spacing = spacing,
@@ -24,19 +35,74 @@ local function Stack(props)
24
35
  alignItems = alignItems,
25
36
  justifyContent = justifyContent,
26
37
  })
27
- local _attributes = {}
28
- local _condition = id
29
- if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
30
- _condition = "Stack"
31
- end
32
- _attributes.key = _condition
33
- _attributes.hostRef = ref
34
- _attributes.base = styles.root
35
- _attributes.className = className
36
- _attributes.sx = sx
37
- local _attributes_1 = table.clone(styles.list)
38
- setmetatable(_attributes_1, nil)
39
- return React.createElement(SxHost, _attributes, React.createElement("uilistlayout", _attributes_1), children)
38
+ local pad = resolveSx(theme, sx).padding
39
+ local _result = pad
40
+ if _result ~= nil then
41
+ _result = _result.PaddingLeft.Offset
42
+ end
43
+ local _condition = _result
44
+ if _condition == nil then
45
+ _condition = 0
46
+ end
47
+ local left = _condition
48
+ local _result_1 = pad
49
+ if _result_1 ~= nil then
50
+ _result_1 = _result_1.PaddingRight.Offset
51
+ end
52
+ local _condition_1 = _result_1
53
+ if _condition_1 == nil then
54
+ _condition_1 = 0
55
+ end
56
+ local right = _condition_1
57
+ local _result_2 = pad
58
+ if _result_2 ~= nil then
59
+ _result_2 = _result_2.PaddingTop.Offset
60
+ end
61
+ local _condition_2 = _result_2
62
+ if _condition_2 == nil then
63
+ _condition_2 = 0
64
+ end
65
+ local top = _condition_2
66
+ local _result_3 = pad
67
+ if _result_3 ~= nil then
68
+ _result_3 = _result_3.PaddingBottom.Offset
69
+ end
70
+ local _condition_3 = _result_3
71
+ if _condition_3 == nil then
72
+ _condition_3 = 0
73
+ end
74
+ local bottom = _condition_3
75
+ local inset = padActive(left, right, top, bottom)
76
+ local _result_4 = sx
77
+ if _result_4 ~= nil then
78
+ _result_4 = _result_4.AutomaticSize
79
+ end
80
+ local _condition_4 = _result_4
81
+ if _condition_4 == nil then
82
+ _condition_4 = styleAutomaticSize(styles.root)
83
+ end
84
+ local auto = automaticAxes(_condition_4)
85
+ local _attributes = table.clone(styles.list)
86
+ setmetatable(_attributes, nil)
87
+ local body = (React.createElement(React.Fragment, nil, React.createElement("uilistlayout", _attributes), children))
88
+ local _attributes_1 = {}
89
+ local _condition_5 = id
90
+ if not (_condition_5 ~= 0 and _condition_5 == _condition_5 and _condition_5 ~= "" and _condition_5) then
91
+ _condition_5 = "Stack"
92
+ end
93
+ _attributes_1.key = _condition_5
94
+ _attributes_1.hostRef = ref
95
+ _attributes_1.base = styles.root
96
+ _attributes_1.className = className
97
+ _attributes_1.sx = if inset then withoutPad(sx) else sx
98
+ return React.createElement(SxHost, _attributes_1, if inset then (React.createElement(Pad, {
99
+ left = left,
100
+ right = right,
101
+ top = top,
102
+ bottom = bottom,
103
+ autoX = auto.x,
104
+ autoY = auto.y,
105
+ }, body)) else body)
40
106
  end
41
107
  local default = Stack
42
108
  return {
@@ -6,16 +6,6 @@ local useState = _react.useState
6
6
  local canActivate = TS.import(script, script.Parent.Parent.Parent, "button", "components", "activation").canActivate
7
7
  local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
8
8
  local useLinkStyles = TS.import(script, script.Parent, "Link.styles").default
9
- local function escapeRich(text)
10
- local out = text
11
- for _, _binding in { { "&", "&amp;" }, { "<", "&lt;" }, { ">", "&gt;" } } do
12
- local from = _binding[1]
13
- local to = _binding[2]
14
- local replaced = string.gsub(out, from, to)
15
- out = replaced
16
- end
17
- return out
18
- end
19
9
  local function Link(props)
20
10
  local _binding = props
21
11
  local text = _binding.text
@@ -35,12 +25,12 @@ local function Link(props)
35
25
  local ref = _binding.ref
36
26
  local hover, setHover = useState(false)
37
27
  local showUnderline = underline == "always" or (underline == "hover" and hover)
28
+ local reserve = underline ~= "none"
38
29
  local styles = useLinkStyles({
39
30
  color = color,
40
31
  disabled = disabled,
41
32
  })
42
33
  local active = canActivate(disabled)
43
- local label = escapeRich(text)
44
34
  local _attributes = {
45
35
  tag = "textbutton",
46
36
  }
@@ -57,7 +47,7 @@ local function Link(props)
57
47
  disabled = disabled,
58
48
  hover = hover,
59
49
  }
60
- _attributes.Text = if showUnderline then `<u>{label}</u>` else label
50
+ _attributes.Text = text
61
51
  _attributes.Active = active
62
52
  _attributes.Selectable = active
63
53
  _attributes.Event = {
@@ -76,7 +66,23 @@ local function Link(props)
76
66
  return setHover(false)
77
67
  end,
78
68
  }
79
- return React.createElement(SxHost, _attributes)
69
+ local _result
70
+ if reserve then
71
+ local _attributes_1 = table.clone(styles.reserve)
72
+ setmetatable(_attributes_1, nil)
73
+ local _exp = React.createElement("uipadding", _attributes_1)
74
+ local _attributes_2 = {
75
+ key = "Underline",
76
+ }
77
+ for _k, _v in styles.underline do
78
+ _attributes_2[_k] = _v
79
+ end
80
+ _attributes_2.BackgroundTransparency = if showUnderline then 0 else 1
81
+ _result = (React.createElement(React.Fragment, nil, _exp, React.createElement("frame", _attributes_2)))
82
+ else
83
+ _result = nil
84
+ end
85
+ return React.createElement(SxHost, _attributes, _result)
80
86
  end
81
87
  local default = Link
82
88
  return {
@@ -34,12 +34,21 @@ local useLinkStyles = componentStyles("Link", function(theme, _param)
34
34
  AutoButtonColor = false,
35
35
  Active = not disabled,
36
36
  Selectable = not disabled,
37
- RichText = true,
38
37
  TextColor3 = ink,
39
38
  Font = theme.typography.fontFamilies.default,
40
39
  TextSize = theme.typography.fontSizes.body,
41
40
  TextXAlignment = Enum.TextXAlignment.Left,
42
41
  },
42
+ underline = {
43
+ Size = UDim2.new(1, 0, 0, 1),
44
+ Position = UDim2.new(0, 0, 1, 0),
45
+ AnchorPoint = Vector2.new(0, 1),
46
+ BackgroundColor3 = ink,
47
+ BorderSizePixel = 0,
48
+ },
49
+ reserve = {
50
+ PaddingBottom = UDim.new(0, 1),
51
+ },
43
52
  })
44
53
  end)
45
54
  local default = useLinkStyles
@@ -1,9 +1,14 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
2
  local TS = _G[script]
3
- local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
3
+ local _react = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
+ local React = _react
5
+ local useEffect = _react.useEffect
6
+ local useState = _react.useState
7
+ local useTheme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme").useTheme
4
8
  local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
5
9
  local _listItemLayout = TS.import(script, script.Parent, "listItemLayout")
6
10
  local listItemCopyInset = _listItemLayout.listItemCopyInset
11
+ local listItemFill = _listItemLayout.listItemFill
7
12
  local listItemRowInset = _listItemLayout.listItemRowInset
8
13
  local listItemTrailInset = _listItemLayout.listItemTrailInset
9
14
  local useListItemStyles = TS.import(script, script.Parent, "ListItem.styles").default
@@ -45,16 +50,38 @@ local function ListItem(props)
45
50
  dense = dense,
46
51
  wrap = wrap,
47
52
  tone = tone,
53
+ divider = divider,
48
54
  })
55
+ local _binding_1 = useTheme()
56
+ local theme = _binding_1.theme
57
+ local hovering, setHovering = useState(false)
58
+ local down, setDown = useState(false)
59
+ local face = listItemFill({
60
+ disabled = disabled,
61
+ selected = selected,
62
+ hover = hovering and not disabled,
63
+ down = down and not disabled,
64
+ })
65
+ local fill = if face == "pressed" then theme.palette.action.pressed elseif face == "hover" then theme.palette.action.hover else theme.palette.action.selected
66
+ local pad = theme.padding.calc(if dense == true then 0.5 else 1)
49
67
  local lead = listItemCopyInset(leading ~= nil)
68
+ useEffect(function()
69
+ if not disabled then
70
+ return nil
71
+ end
72
+ setHovering(false)
73
+ setDown(false)
74
+ end, { disabled })
50
75
  local trail = listItemTrailInset(trailing ~= nil)
51
76
  local rowInset = listItemRowInset(leading ~= nil, trailing ~= nil)
77
+ local textSize = UDim2.new(1, if rowInset > 0 then 0 else -pad * 2, 0, 0)
52
78
  local _attributes = {
53
79
  key = "Primary",
54
80
  }
55
81
  for _k, _v in styles.primary do
56
82
  _attributes[_k] = _v
57
83
  end
84
+ _attributes.Size = textSize
58
85
  _attributes.Text = text
59
86
  local _exp = React.createElement("textlabel", _attributes)
60
87
  local _result
@@ -65,6 +92,7 @@ local function ListItem(props)
65
92
  for _k, _v in styles.secondary do
66
93
  _attributes_1[_k] = _v
67
94
  end
95
+ _attributes_1.Size = textSize
68
96
  _attributes_1.Text = secondary
69
97
  _result = (React.createElement("textlabel", _attributes_1))
70
98
  else
@@ -80,12 +108,18 @@ local function ListItem(props)
80
108
  end
81
109
  _attributes_1.key = _condition
82
110
  _attributes_1.hostRef = ref
83
- _attributes_1.base = styles.root
111
+ local _object = table.clone(styles.root)
112
+ setmetatable(_object, nil)
113
+ _object.BackgroundColor3 = fill
114
+ _object.BackgroundTransparency = if face == "clear" then 1 else 0
115
+ _attributes_1.base = _object
84
116
  _attributes_1.className = className
85
117
  _attributes_1.sx = sx
86
118
  _attributes_1.state = {
87
119
  disabled = disabled,
88
120
  selected = selected,
121
+ hover = hovering,
122
+ pressed = down,
89
123
  }
90
124
  _attributes_1.Text = ""
91
125
  _attributes_1.Active = not disabled
@@ -97,6 +131,23 @@ local function ListItem(props)
97
131
  onActivated()
98
132
  end
99
133
  end,
134
+ MouseEnter = function()
135
+ if not disabled then
136
+ setHovering(true)
137
+ end
138
+ end,
139
+ MouseLeave = function()
140
+ setHovering(false)
141
+ setDown(false)
142
+ end,
143
+ MouseButton1Down = function()
144
+ if not disabled then
145
+ setDown(true)
146
+ end
147
+ end,
148
+ MouseButton1Up = function()
149
+ return setDown(false)
150
+ end,
100
151
  }
101
152
  local _attributes_2 = table.clone(styles.padding)
102
153
  setmetatable(_attributes_2, nil)
@@ -123,7 +174,7 @@ local function ListItem(props)
123
174
  setmetatable(_attributes_4, nil)
124
175
  _result_1 = (React.createElement("frame", {
125
176
  key = "Body",
126
- Size = UDim2.new(1, 0, 0, 0),
177
+ Size = UDim2.new(1, -pad * 2, 0, 0),
127
178
  AutomaticSize = Enum.AutomaticSize.Y,
128
179
  BackgroundTransparency = 1,
129
180
  BorderSizePixel = 0,
@@ -153,7 +204,13 @@ local function ListItem(props)
153
204
  for _k, _v in styles.divider do
154
205
  _attributes_4[_k] = _v
155
206
  end
156
- _result_2 = React.createElement("frame", _attributes_4)
207
+ local _attributes_5 = {
208
+ key = "Line",
209
+ }
210
+ for _k, _v in styles.line do
211
+ _attributes_5[_k] = _v
212
+ end
213
+ _result_2 = (React.createElement("frame", _attributes_4, React.createElement("frame", _attributes_5)))
157
214
  else
158
215
  _result_2 = nil
159
216
  end
@@ -5,5 +5,6 @@ declare const useListItemStyles: (props: {
5
5
  dense?: boolean;
6
6
  wrap?: boolean;
7
7
  tone?: ListItemTone;
8
+ divider?: boolean;
8
9
  }) => import("../../../../theme/index").ClassNameMap<string>;
9
10
  export default useListItemStyles;
@@ -4,7 +4,9 @@ local _theme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "the
4
4
  local createStyles = _theme.createStyles
5
5
  local componentStyles = _theme.componentStyles
6
6
  local listItemInk = TS.import(script, script.Parent, "listItemInk").listItemInk
7
- local listItemLabelLayout = TS.import(script, script.Parent, "listItemLayout").listItemLabelLayout
7
+ local _listItemLayout = TS.import(script, script.Parent, "listItemLayout")
8
+ local listItemLabelLayout = _listItemLayout.listItemLabelLayout
9
+ local listItemSecondaryLayout = _listItemLayout.listItemSecondaryLayout
8
10
  local useListItemStyles = componentStyles("ListItem", function(theme, _param)
9
11
  local selected = _param.selected
10
12
  if selected == nil then
@@ -23,15 +25,23 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
23
25
  wrap = false
24
26
  end
25
27
  local tone = _param.tone
28
+ local divider = _param.divider
29
+ if divider == nil then
30
+ divider = false
31
+ end
26
32
  local pad = theme.padding.calc(if dense == true then 0.5 else 1)
27
- local label = listItemLabelLayout(wrap)
33
+ local primaryLayout = listItemLabelLayout(wrap)
34
+ local secondaryLayout = listItemSecondaryLayout()
28
35
  local ink = listItemInk(tone, disabled)
29
36
  local primaryColor = if ink == "error" then theme.palette.status.error.main elseif ink == "disabled" then theme.palette.text.disabled else theme.palette.text.primary
30
- local textBox = {
31
- AutomaticSize = if label.wrapped then Enum.AutomaticSize.Y else Enum.AutomaticSize.XY,
32
- Size = UDim2.new(label.widthScale, 0, 0, 0),
33
- TextWrapped = label.wrapped,
34
- }
37
+ local textBox = function(label)
38
+ return {
39
+ AutomaticSize = Enum.AutomaticSize.Y,
40
+ Size = UDim2.new(label.widthScale, 0, 0, 0),
41
+ TextWrapped = label.wrapped,
42
+ TextTruncate = if label.truncate then Enum.TextTruncate.AtEnd else Enum.TextTruncate.None,
43
+ }
44
+ end
35
45
  local _object = {
36
46
  root = {
37
47
  Size = UDim2.new(1, 0, 0, 0),
@@ -46,7 +56,7 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
46
56
  },
47
57
  padding = {
48
58
  PaddingTop = UDim.new(0, pad),
49
- PaddingBottom = UDim.new(0, pad),
59
+ PaddingBottom = UDim.new(0, if divider then 0 else pad),
50
60
  PaddingLeft = UDim.new(0, pad),
51
61
  PaddingRight = UDim.new(0, pad),
52
62
  },
@@ -59,7 +69,7 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
59
69
  local _object_1 = {
60
70
  LayoutOrder = 1,
61
71
  }
62
- for _k, _v in textBox do
72
+ for _k, _v in textBox(primaryLayout) do
63
73
  _object_1[_k] = _v
64
74
  end
65
75
  _object_1.BackgroundTransparency = 1
@@ -73,18 +83,25 @@ local useListItemStyles = componentStyles("ListItem", function(theme, _param)
73
83
  local _object_2 = {
74
84
  LayoutOrder = 2,
75
85
  }
76
- for _k, _v in textBox do
86
+ for _k, _v in textBox(secondaryLayout) do
77
87
  _object_2[_k] = _v
78
88
  end
79
89
  _object_2.BackgroundTransparency = 1
80
90
  _object_2.BorderSizePixel = 0
81
91
  _object_2.Font = theme.typography.fontFamilies.default
82
92
  _object_2.TextSize = theme.typography.fontSizes.caption
83
- _object_2.TextColor3 = theme.palette.text.secondary
93
+ _object_2.TextColor3 = if disabled then theme.palette.text.disabled else theme.palette.text.secondary
84
94
  _object_2.TextXAlignment = Enum.TextXAlignment.Left
85
95
  _object[_left_1] = _object_2
86
96
  _object.divider = {
87
97
  LayoutOrder = 3,
98
+ Size = UDim2.new(1, 0, 0, pad),
99
+ BackgroundTransparency = 1,
100
+ BorderSizePixel = 0,
101
+ }
102
+ _object.line = {
103
+ AnchorPoint = Vector2.new(0, 1),
104
+ Position = UDim2.fromScale(0, 1),
88
105
  Size = UDim2.new(1, 0, 0, 1),
89
106
  BackgroundColor3 = theme.palette.divider,
90
107
  BorderSizePixel = 0,
@@ -1,3 +1,3 @@
1
1
  export type ListItemTone = "danger";
2
2
  /** Primary label color. Disabled wins over a danger tone. */
3
- export declare function listItemInk(tone?: ListItemTone, disabled?: boolean): "primary" | "error" | "disabled";
3
+ export declare function listItemInk(tone?: ListItemTone, disabled?: boolean): "primary" | "disabled" | "error";
@@ -1,12 +1,22 @@
1
+ export type ListItemFill = "clear" | "hover" | "pressed" | "selected";
2
+ export declare function listItemFill(input: {
3
+ disabled: boolean;
4
+ selected: boolean;
5
+ hover: boolean;
6
+ down: boolean;
7
+ }): ListItemFill;
1
8
  export interface ListItemLabelLayout {
2
9
  widthScale: number;
3
10
  wrapped: boolean;
11
+ truncate: boolean;
4
12
  }
5
- /** Wrapped rows fill the list. Shrink-wrapped rows stay one line for menus. */
13
+ /** Primary fills the row. It stays one line unless wrap is set. */
6
14
  export declare function listItemLabelLayout(wrap?: boolean): ListItemLabelLayout;
15
+ /** Secondary wraps inside the same row. */
16
+ export declare function listItemSecondaryLayout(): ListItemLabelLayout;
7
17
  /** Pixels the title column yields when a leading avatar or icon is present. */
8
18
  export declare function listItemCopyInset(leading?: boolean): 0 | 40;
9
19
  /** Pixels reserved for a control on the far side of the row. */
10
- export declare function listItemTrailInset(trailing?: boolean): 48 | 0;
20
+ export declare function listItemTrailInset(trailing?: boolean): 0 | 48;
11
21
  /** Title column inset, including the gaps beside any side slots. */
12
22
  export declare function listItemRowInset(leading?: boolean, trailing?: boolean): number;
@@ -1,15 +1,40 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
- --* Wrapped rows fill the list. Shrink-wrapped rows stay one line for menus.
2
+ local function listItemFill(input)
3
+ if input.disabled then
4
+ return "clear"
5
+ end
6
+ if input.down then
7
+ return "pressed"
8
+ end
9
+ if input.hover then
10
+ return "hover"
11
+ end
12
+ if input.selected then
13
+ return "selected"
14
+ end
15
+ return "clear"
16
+ end
17
+ --* Primary fills the row. It stays one line unless wrap is set.
3
18
  local function listItemLabelLayout(wrap)
4
19
  if wrap == true then
5
20
  return {
6
21
  widthScale = 1,
7
22
  wrapped = true,
23
+ truncate = false,
8
24
  }
9
25
  end
10
26
  return {
11
- widthScale = 0,
27
+ widthScale = 1,
12
28
  wrapped = false,
29
+ truncate = true,
30
+ }
31
+ end
32
+ --* Secondary wraps inside the same row.
33
+ local function listItemSecondaryLayout()
34
+ return {
35
+ widthScale = 1,
36
+ wrapped = true,
37
+ truncate = false,
13
38
  }
14
39
  end
15
40
  --* Pixels the title column yields when a leading avatar or icon is present.
@@ -34,7 +59,9 @@ local function listItemRowInset(leading, trailing)
34
59
  return lead + trail + gaps
35
60
  end
36
61
  return {
62
+ listItemFill = listItemFill,
37
63
  listItemLabelLayout = listItemLabelLayout,
64
+ listItemSecondaryLayout = listItemSecondaryLayout,
38
65
  listItemCopyInset = listItemCopyInset,
39
66
  listItemTrailInset = listItemTrailInset,
40
67
  listItemRowInset = listItemRowInset,