@rbxts/uiblox 0.2.0-alpha.25 → 0.2.0-alpha.27

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 (109) hide show
  1. package/README.md +27 -109
  2. package/out/ui/packages/accordion/components/Accordion.luau +12 -16
  3. package/out/ui/packages/alert/components/Alert.luau +9 -16
  4. package/out/ui/packages/appBar/components/AppBar.luau +9 -16
  5. package/out/ui/packages/assetField/components/AssetField.luau +12 -16
  6. package/out/ui/packages/avatar/components/Avatar.luau +9 -16
  7. package/out/ui/packages/backdrop/components/Backdrop.luau +9 -16
  8. package/out/ui/packages/badge/components/Badge.luau +9 -16
  9. package/out/ui/packages/bottomNavigation/components/BottomNavigation.luau +12 -16
  10. package/out/ui/packages/breadcrumbs/components/Breadcrumbs.luau +9 -16
  11. package/out/ui/packages/brickColorPicker/components/BrickColorPicker.luau +12 -16
  12. package/out/ui/packages/button/components/Button.luau +20 -18
  13. package/out/ui/packages/card/components/Card.d.ts +2 -1
  14. package/out/ui/packages/card/components/Card.luau +8 -0
  15. package/out/ui/packages/cframeEditor/components/CFrameEditor.luau +12 -16
  16. package/out/ui/packages/checkbox/components/Checkbox.luau +16 -16
  17. package/out/ui/packages/chip/components/Chip.luau +13 -16
  18. package/out/ui/packages/circularProgress/components/CircularProgress.luau +16 -16
  19. package/out/ui/packages/colorPicker/components/ColorPicker.luau +12 -16
  20. package/out/ui/packages/colorPicker/components/ColorSequenceEditor.luau +12 -16
  21. package/out/ui/packages/colorPicker/components/NumberSequenceEditor.luau +12 -16
  22. package/out/ui/packages/dialog/components/Dialog.d.ts +2 -1
  23. package/out/ui/packages/dialog/components/Dialog.luau +21 -10
  24. package/out/ui/packages/divider/components/Divider.luau +20 -33
  25. package/out/ui/packages/drawer/components/Drawer.d.ts +2 -1
  26. package/out/ui/packages/drawer/components/Drawer.luau +18 -5
  27. package/out/ui/packages/fab/components/Fab.luau +31 -26
  28. package/out/ui/packages/fab/components/Fab.styles.luau +6 -0
  29. package/out/ui/packages/fontEditor/components/FontEditor.luau +12 -16
  30. package/out/ui/packages/formText/components/FormHelperText.luau +12 -16
  31. package/out/ui/packages/formText/components/FormLabel.luau +12 -16
  32. package/out/ui/packages/gradientEditor/components/GradientEditor.luau +12 -16
  33. package/out/ui/packages/host/components/SxHost.d.ts +18 -0
  34. package/out/ui/packages/host/components/SxHost.luau +197 -0
  35. package/out/ui/packages/host/hostPaint.d.ts +11 -0
  36. package/out/ui/packages/host/hostPaint.luau +33 -0
  37. package/out/ui/packages/host/hostRules.d.ts +15 -0
  38. package/out/ui/packages/host/hostRules.luau +92 -0
  39. package/out/ui/packages/host/index.d.ts +3 -0
  40. package/out/ui/packages/host/init.luau +13 -0
  41. package/out/ui/packages/icon/components/Icon.luau +9 -16
  42. package/out/ui/packages/iconButton/components/IconButton.luau +16 -16
  43. package/out/ui/packages/imageList/components/ImageList.luau +9 -16
  44. package/out/ui/packages/imageList/components/ImageList.styles.luau +4 -3
  45. package/out/ui/packages/input/components/Input.luau +14 -16
  46. package/out/ui/packages/layout/components/Box.luau +6 -15
  47. package/out/ui/packages/layout/components/Container.luau +6 -15
  48. package/out/ui/packages/layout/components/FlexItem.luau +6 -15
  49. package/out/ui/packages/layout/components/Grid.luau +6 -15
  50. package/out/ui/packages/layout/components/List.luau +9 -16
  51. package/out/ui/packages/layout/components/Stack.luau +6 -15
  52. package/out/ui/packages/link/components/Link.luau +13 -16
  53. package/out/ui/packages/listItem/components/ListItem.d.ts +2 -1
  54. package/out/ui/packages/listItem/components/ListItem.luau +23 -4
  55. package/out/ui/packages/loadingStroke/components/LoadingStroke.d.ts +5 -1
  56. package/out/ui/packages/loadingStroke/components/loadingStrokeSx.d.ts +11 -0
  57. package/out/ui/packages/loadingStroke/components/loadingStrokeSx.luau +2 -0
  58. package/out/ui/packages/markdown/components/Markdown.luau +9 -16
  59. package/out/ui/packages/markdown/components/MarkdownEditor.luau +9 -16
  60. package/out/ui/packages/menu/components/Menu.d.ts +2 -1
  61. package/out/ui/packages/menu/components/Menu.luau +23 -12
  62. package/out/ui/packages/modal/components/Modal.d.ts +2 -1
  63. package/out/ui/packages/modal/components/Modal.luau +29 -5
  64. package/out/ui/packages/numberInput/components/NumberInput.d.ts +1 -0
  65. package/out/ui/packages/numberInput/components/NumberInput.luau +14 -3
  66. package/out/ui/packages/numberInput/components/numberValue.d.ts +1 -0
  67. package/out/ui/packages/numberInput/components/numberValue.luau +45 -0
  68. package/out/ui/packages/numberRangeEditor/components/NumberRangeEditor.luau +12 -16
  69. package/out/ui/packages/pagination/components/Pagination.luau +12 -16
  70. package/out/ui/packages/paper/components/Paper.d.ts +2 -1
  71. package/out/ui/packages/paper/components/Paper.luau +21 -12
  72. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.luau +63 -38
  73. package/out/ui/packages/physicalPropertiesEditor/components/PhysicalPropertiesEditor.styles.luau +21 -7
  74. package/out/ui/packages/physicalPropertiesEditor/components/physicalParts.d.ts +2 -0
  75. package/out/ui/packages/physicalPropertiesEditor/components/physicalParts.luau +14 -0
  76. package/out/ui/packages/popup/components/Popup.d.ts +2 -1
  77. package/out/ui/packages/popup/components/Popup.luau +35 -18
  78. package/out/ui/packages/preloader/components/Preloader.luau +9 -16
  79. package/out/ui/packages/progressBar/components/ProgressBar.luau +12 -16
  80. package/out/ui/packages/radioGroup/components/RadioGroup.luau +12 -16
  81. package/out/ui/packages/rating/components/Rating.luau +12 -16
  82. package/out/ui/packages/rayEditor/components/RayEditor.luau +12 -16
  83. package/out/ui/packages/rectEditor/components/RectEditor.luau +86 -43
  84. package/out/ui/packages/rectEditor/components/RectEditor.styles.luau +30 -7
  85. package/out/ui/packages/select/components/Select.luau +13 -16
  86. package/out/ui/packages/shadow/components/Shadow.d.ts +2 -1
  87. package/out/ui/packages/shadow/components/Shadow.luau +39 -17
  88. package/out/ui/packages/shadow/components/Shadow.styles.luau +7 -2
  89. package/out/ui/packages/sidebar/components/Sidebar.luau +9 -16
  90. package/out/ui/packages/skeleton/components/Skeleton.luau +19 -28
  91. package/out/ui/packages/slider/components/Slider.luau +16 -17
  92. package/out/ui/packages/speedDial/components/SpeedDial.luau +12 -16
  93. package/out/ui/packages/splitPane/components/SplitPane.luau +12 -16
  94. package/out/ui/packages/stateMatrix.luau +1209 -725
  95. package/out/ui/packages/stepper/components/Stepper.luau +9 -16
  96. package/out/ui/packages/switch/components/Switch.luau +16 -16
  97. package/out/ui/packages/table/components/Table.luau +9 -16
  98. package/out/ui/packages/tabs/components/Tabs.luau +12 -16
  99. package/out/ui/packages/toast/components/Toast.luau +16 -13
  100. package/out/ui/packages/toggleButton/components/ToggleButton.luau +24 -32
  101. package/out/ui/packages/tooltip/components/Tooltip.luau +9 -16
  102. package/out/ui/packages/treeView/components/TreeView.luau +9 -16
  103. package/out/ui/packages/typography/components/Typography.luau +13 -14
  104. package/out/ui/packages/udimEditor/components/UDimEditor.luau +12 -16
  105. package/out/ui/packages/vectorEditor/components/VectorEditor.luau +12 -16
  106. package/out/ui/packages/virtualList/components/EmptyListHint.d.ts +2 -1
  107. package/out/ui/packages/virtualList/components/EmptyListHint.luau +15 -4
  108. package/out/ui/packages/virtualList/components/VirtualList.luau +9 -16
  109. package/package.json +2 -2
@@ -1,6 +1,7 @@
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 SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
4
5
  local useFlexItemStyles = TS.import(script, script.Parent, "FlexItem.styles").default
5
6
  local function FlexItem(props)
6
7
  local _binding = props
@@ -25,23 +26,13 @@ local function FlexItem(props)
25
26
  _condition = "FlexItem"
26
27
  end
27
28
  _attributes.key = _condition
28
- _attributes.ref = ref
29
- for _k, _v in styles.root do
30
- _attributes[_k] = _v
31
- end
32
- if className then
33
- for _k, _v in className do
34
- _attributes[_k] = _v
35
- end
36
- end
37
- if sx then
38
- for _k, _v in sx do
39
- _attributes[_k] = _v
40
- end
41
- end
29
+ _attributes.hostRef = ref
30
+ _attributes.base = styles.root
31
+ _attributes.className = className
32
+ _attributes.sx = sx
42
33
  local _attributes_1 = table.clone(styles.flex)
43
34
  setmetatable(_attributes_1, nil)
44
- return React.createElement("frame", _attributes, React.createElement("uiflexitem", _attributes_1), children)
35
+ return React.createElement(SxHost, _attributes, React.createElement("uiflexitem", _attributes_1), children)
45
36
  end
46
37
  local default = FlexItem
47
38
  return {
@@ -4,6 +4,7 @@ local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
4
  local _theme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme")
5
5
  local componentStyles = _theme.componentStyles
6
6
  local createStyles = _theme.createStyles
7
+ local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
7
8
  local _gridProps = TS.import(script, script.Parent, "gridProps")
8
9
  local gridCornerKey = _gridProps.gridCornerKey
9
10
  local gridMaxCells = _gridProps.gridMaxCells
@@ -112,27 +113,17 @@ local function Grid(props)
112
113
  _condition = "Grid"
113
114
  end
114
115
  _attributes.key = _condition
115
- _attributes.ref = ref
116
- for _k, _v in baseGrid do
117
- _attributes[_k] = _v
118
- end
119
- if className then
120
- for _k, _v in className do
121
- _attributes[_k] = _v
122
- end
123
- end
124
- if sx then
125
- for _k, _v in sx do
126
- _attributes[_k] = _v
127
- end
128
- end
116
+ _attributes.hostRef = ref
117
+ _attributes.base = baseGrid
118
+ _attributes.className = className
119
+ _attributes.sx = sx
129
120
  local _attributes_1 = {
130
121
  key = "GridLayout",
131
122
  }
132
123
  for _k, _v in baseLayout do
133
124
  _attributes_1[_k] = _v
134
125
  end
135
- return React.createElement("frame", _attributes, React.createElement("uigridlayout", _attributes_1), children)
126
+ return React.createElement(SxHost, _attributes, React.createElement("uigridlayout", _attributes_1), children)
136
127
  end
137
128
  local default = Grid
138
129
  return {
@@ -4,6 +4,7 @@ local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
4
  local _theme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme")
5
5
  local componentStyles = _theme.componentStyles
6
6
  local createStyles = _theme.createStyles
7
+ local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
7
8
  local useListStyles = componentStyles("List", function(_, props)
8
9
  return createStyles({
9
10
  baseList = {
@@ -75,33 +76,25 @@ local function List(props)
75
76
  })
76
77
  local baseList = _binding_1.baseList
77
78
  local baseLayout = _binding_1.baseLayout
78
- local _attributes = {}
79
+ local _attributes = {
80
+ tag = "frame",
81
+ }
79
82
  local _condition = id
80
83
  if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
81
84
  _condition = "List"
82
85
  end
83
86
  _attributes.key = _condition
84
- _attributes.ref = ref
85
- for _k, _v in baseList do
86
- _attributes[_k] = _v
87
- end
88
- if className then
89
- for _k, _v in className do
90
- _attributes[_k] = _v
91
- end
92
- end
93
- if sx then
94
- for _k, _v in sx do
95
- _attributes[_k] = _v
96
- end
97
- end
87
+ _attributes.hostRef = ref
88
+ _attributes.base = baseList
89
+ _attributes.className = className
90
+ _attributes.sx = sx
98
91
  local _attributes_1 = {
99
92
  key = "ListLayout",
100
93
  }
101
94
  for _k, _v in baseLayout do
102
95
  _attributes_1[_k] = _v
103
96
  end
104
- return React.createElement("frame", _attributes, React.createElement("uilistlayout", _attributes_1), children)
97
+ return React.createElement(SxHost, _attributes, React.createElement("uilistlayout", _attributes_1), children)
105
98
  end
106
99
  local default = List
107
100
  return {
@@ -1,6 +1,7 @@
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 SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
4
5
  local useStackStyles = TS.import(script, script.Parent, "Stack.styles").default
5
6
  local function Stack(props)
6
7
  local _binding = props
@@ -29,23 +30,13 @@ local function Stack(props)
29
30
  _condition = "Stack"
30
31
  end
31
32
  _attributes.key = _condition
32
- _attributes.ref = ref
33
- for _k, _v in styles.root do
34
- _attributes[_k] = _v
35
- end
36
- if className then
37
- for _k, _v in className do
38
- _attributes[_k] = _v
39
- end
40
- end
41
- if sx then
42
- for _k, _v in sx do
43
- _attributes[_k] = _v
44
- end
45
- end
33
+ _attributes.hostRef = ref
34
+ _attributes.base = styles.root
35
+ _attributes.className = className
36
+ _attributes.sx = sx
46
37
  local _attributes_1 = table.clone(styles.list)
47
38
  setmetatable(_attributes_1, nil)
48
- return React.createElement("frame", _attributes, React.createElement("uilistlayout", _attributes_1), children)
39
+ return React.createElement(SxHost, _attributes, React.createElement("uilistlayout", _attributes_1), children)
49
40
  end
50
41
  local default = Stack
51
42
  return {
@@ -4,6 +4,7 @@ local _react = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
4
  local React = _react
5
5
  local useState = _react.useState
6
6
  local canActivate = TS.import(script, script.Parent.Parent.Parent, "button", "components", "activation").canActivate
7
+ local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
7
8
  local useLinkStyles = TS.import(script, script.Parent, "Link.styles").default
8
9
  local function Link(props)
9
10
  local _binding = props
@@ -30,26 +31,22 @@ local function Link(props)
30
31
  showUnderline = showUnderline,
31
32
  })
32
33
  local active = canActivate(disabled)
33
- local _attributes = {}
34
+ local _attributes = {
35
+ tag = "textbutton",
36
+ }
34
37
  local _condition = id
35
38
  if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
36
39
  _condition = "Link"
37
40
  end
38
41
  _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
42
+ _attributes.hostRef = ref
43
+ _attributes.base = styles.root
44
+ _attributes.className = className
45
+ _attributes.sx = sx
46
+ _attributes.state = {
47
+ disabled = disabled,
48
+ hover = hover,
49
+ }
53
50
  _attributes.Text = text
54
51
  _attributes.Active = active
55
52
  _attributes.Selectable = active
@@ -75,7 +72,7 @@ local function Link(props)
75
72
  for _k, _v in styles.underline do
76
73
  _attributes_1[_k] = _v
77
74
  end
78
- return React.createElement("textbutton", _attributes, React.createElement("frame", _attributes_1))
75
+ return React.createElement(SxHost, _attributes, React.createElement("frame", _attributes_1))
79
76
  end
80
77
  local default = Link
81
78
  return {
@@ -1,3 +1,4 @@
1
+ import { CustomizedProps } from "../../../../theme/index";
1
2
  export interface ListItemProps {
2
3
  text: string;
3
4
  secondary?: string;
@@ -7,5 +8,5 @@ export interface ListItemProps {
7
8
  divider?: boolean;
8
9
  onActivated?: () => void;
9
10
  }
10
- declare function ListItem(props: ListItemProps): JSX.Element;
11
+ declare function ListItem(props: CustomizedProps<TextButton, ListItemProps>): JSX.Element;
11
12
  export default ListItem;
@@ -1,6 +1,7 @@
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 SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
4
5
  local useListItemStyles = TS.import(script, script.Parent, "ListItem.styles").default
5
6
  local function ListItem(props)
6
7
  local _binding = props
@@ -23,17 +24,35 @@ local function ListItem(props)
23
24
  divider = false
24
25
  end
25
26
  local onActivated = _binding.onActivated
27
+ local className = _binding.className
28
+ local sx = _binding.sx
29
+ local id = _binding.id
30
+ local ref = _binding.ref
26
31
  local styles = useListItemStyles({
27
32
  selected = selected,
28
33
  disabled = disabled,
29
34
  dense = dense,
30
35
  })
31
36
  local _attributes = {
32
- key = "ListItem",
37
+ tag = "textbutton",
33
38
  }
34
- for _k, _v in styles.root do
35
- _attributes[_k] = _v
39
+ local _condition = id
40
+ if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
41
+ _condition = "ListItem"
36
42
  end
43
+ _attributes.key = _condition
44
+ _attributes.hostRef = ref
45
+ _attributes.base = styles.root
46
+ _attributes.className = className
47
+ _attributes.sx = sx
48
+ _attributes.state = {
49
+ disabled = disabled,
50
+ selected = selected,
51
+ }
52
+ _attributes.Text = ""
53
+ _attributes.Active = not disabled
54
+ _attributes.Selectable = not disabled
55
+ _attributes.AutoButtonColor = false
37
56
  _attributes.Event = {
38
57
  Activated = function()
39
58
  if not disabled and onActivated ~= nil then
@@ -80,7 +99,7 @@ local function ListItem(props)
80
99
  else
81
100
  _result_1 = nil
82
101
  end
83
- return React.createElement("textbutton", _attributes, _exp, _exp_1, _exp_2, _result, _result_1)
102
+ return React.createElement(SxHost, _attributes, _exp, _exp_1, _exp_2, _result, _result_1)
84
103
  end
85
104
  local default = ListItem
86
105
  return {
@@ -1,8 +1,12 @@
1
1
  import { CustomizedProps } from "../../../../theme/index";
2
+ import { LoadingStrokeStyle } from "./loadingStrokeSx";
2
3
  export interface LoadingStrokeProps {
3
4
  animating?: boolean;
4
5
  color?: Color3;
5
6
  thickness?: number;
6
7
  }
7
- declare function LoadingStroke(props: CustomizedProps<UIStroke, LoadingStrokeProps>): JSX.Element;
8
+ declare function LoadingStroke(props: Omit<CustomizedProps<UIStroke, LoadingStrokeProps>, "sx" | "className"> & {
9
+ className?: LoadingStrokeStyle;
10
+ sx?: LoadingStrokeStyle;
11
+ }): JSX.Element;
8
12
  export default LoadingStroke;
@@ -0,0 +1,11 @@
1
+ import { WriteableStyle } from "../../../../theme/index";
2
+ export type LoadingStrokeStyle = WriteableStyle<UIStroke> & {
3
+ BackgroundColor3?: never;
4
+ BackgroundTransparency?: never;
5
+ Size?: never;
6
+ Position?: never;
7
+ AnchorPoint?: never;
8
+ BorderSizePixel?: never;
9
+ Text?: never;
10
+ TextColor3?: never;
11
+ };
@@ -0,0 +1,2 @@
1
+ -- Compiled with roblox-ts v3.0.0
2
+ return nil
@@ -2,6 +2,7 @@
2
2
  local TS = _G[script]
3
3
  local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
4
  local Divider = TS.import(script, script.Parent.Parent.Parent, "divider").Divider
5
+ local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
5
6
  local Orientations = TS.import(script, script.Parent.Parent.Parent.Parent, "enums").Orientations
6
7
  local _parseMarkdown = TS.import(script, script.Parent.Parent, "parseMarkdown")
7
8
  local inlinesToRichText = _parseMarkdown.inlinesToRichText
@@ -188,26 +189,18 @@ local function Markdown(props)
188
189
  local ref = _binding.ref
189
190
  local styles = useMarkdownStyles()
190
191
  local blocks = parseMarkdown(value)
191
- local _attributes = {}
192
+ local _attributes = {
193
+ tag = "frame",
194
+ }
192
195
  local _condition = id
193
196
  if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
194
197
  _condition = "Markdown"
195
198
  end
196
199
  _attributes.key = _condition
197
- _attributes.ref = ref
198
- for _k, _v in styles.root do
199
- _attributes[_k] = _v
200
- end
201
- if className then
202
- for _k, _v in className do
203
- _attributes[_k] = _v
204
- end
205
- end
206
- if sx then
207
- for _k, _v in sx do
208
- _attributes[_k] = _v
209
- end
210
- end
200
+ _attributes.hostRef = ref
201
+ _attributes.base = styles.root
202
+ _attributes.className = className
203
+ _attributes.sx = sx
211
204
  local _attributes_1 = table.clone(styles.layout)
212
205
  setmetatable(_attributes_1, nil)
213
206
  local _exp = React.createElement("uilistlayout", _attributes_1)
@@ -220,7 +213,7 @@ local function Markdown(props)
220
213
  _newValue[_k] = _callback(_v, _k - 1, blocks)
221
214
  end
222
215
  -- ▲ ReadonlyArray.map ▲
223
- return React.createElement("frame", _attributes, _exp, _newValue)
216
+ return React.createElement(SxHost, _attributes, _exp, _newValue)
224
217
  end
225
218
  local default = Markdown
226
219
  return {
@@ -7,6 +7,7 @@ local useRef = _react.useRef
7
7
  local useState = _react.useState
8
8
  local useTheme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme").useTheme
9
9
  local Button = TS.import(script, script.Parent.Parent.Parent, "button").Button
10
+ local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
10
11
  local IconButton = TS.import(script, script.Parent.Parent.Parent, "iconButton").IconButton
11
12
  local Icons = TS.import(script, script.Parent.Parent.Parent.Parent, "enums").Icons
12
13
  local ToggleButtonGroup = TS.import(script, script.Parent.Parent.Parent, "toggleButton").ToggleButtonGroup
@@ -90,26 +91,18 @@ local function MarkdownEditor(props)
90
91
  local previewNode = if preview ~= nil then preview(value) else React.createElement(Markdown, {
91
92
  value = value,
92
93
  })
93
- local _attributes = {}
94
+ local _attributes = {
95
+ tag = "frame",
96
+ }
94
97
  local _condition_1 = id
95
98
  if not (_condition_1 ~= 0 and _condition_1 == _condition_1 and _condition_1 ~= "" and _condition_1) then
96
99
  _condition_1 = "MarkdownEditor"
97
100
  end
98
101
  _attributes.key = _condition_1
99
- _attributes.ref = ref
100
- for _k, _v in styles.root do
101
- _attributes[_k] = _v
102
- end
103
- if className then
104
- for _k, _v in className do
105
- _attributes[_k] = _v
106
- end
107
- end
108
- if sx then
109
- for _k, _v in sx do
110
- _attributes[_k] = _v
111
- end
112
- end
102
+ _attributes.hostRef = ref
103
+ _attributes.base = styles.root
104
+ _attributes.className = className
105
+ _attributes.sx = sx
113
106
  local _attributes_1 = table.clone(styles.corner)
114
107
  setmetatable(_attributes_1, nil)
115
108
  local _exp = React.createElement("uicorner", _attributes_1)
@@ -314,7 +307,7 @@ local function MarkdownEditor(props)
314
307
  setmetatable(_attributes_9, nil)
315
308
  _condition_5 = (React.createElement("scrollingframe", _attributes_8, React.createElement("uipadding", _attributes_9), previewNode))
316
309
  end
317
- return React.createElement("frame", _attributes, _exp, _exp_1, _exp_2, _exp_4, _exp_5, React.createElement("frame", _attributes_7, _condition_2, _condition_3, _condition_4, _condition_5))
310
+ return React.createElement(SxHost, _attributes, _exp, _exp_1, _exp_2, _exp_4, _exp_5, React.createElement("frame", _attributes_7, _condition_2, _condition_3, _condition_4, _condition_5))
318
311
  end
319
312
  local default = MarkdownEditor
320
313
  return {
@@ -1,4 +1,5 @@
1
1
  import React from "@rbxts/react";
2
+ import { CustomizedProps } from "../../../../theme/index";
2
3
  export interface MenuItem {
3
4
  id: string;
4
5
  text: string;
@@ -15,5 +16,5 @@ export interface MenuProps {
15
16
  dense?: boolean;
16
17
  selected?: string;
17
18
  }
18
- declare function Menu(props: MenuProps): JSX.Element | undefined;
19
+ declare function Menu(props: CustomizedProps<Frame, MenuProps>): JSX.Element | undefined;
19
20
  export default Menu;
@@ -1,6 +1,7 @@
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 SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
4
5
  local ListItem = TS.import(script, script.Parent.Parent.Parent, "listItem").ListItem
5
6
  local Popup = TS.import(script, script.Parent.Parent.Parent, "popup").Popup
6
7
  local EmptyListHint = TS.import(script, script.Parent.Parent.Parent, "virtualList").EmptyListHint
@@ -18,6 +19,10 @@ local function Menu(props)
18
19
  local empty = _binding.empty
19
20
  local dense = _binding.dense
20
21
  local selected = _binding.selected
22
+ local className = _binding.className
23
+ local sx = _binding.sx
24
+ local id = _binding.id
25
+ local ref = _binding.ref
21
26
  local styles = useMenuStyles()
22
27
  if not open then
23
28
  return nil
@@ -26,11 +31,17 @@ local function Menu(props)
26
31
  local row = if dense == true then ROW_DENSE else ROW
27
32
  local height = if vacant then row else #items * row
28
33
  local _attributes = {
29
- key = "Surface",
34
+ tag = "frame",
30
35
  }
31
- for _k, _v in styles.surface do
32
- _attributes[_k] = _v
36
+ local _condition = id
37
+ if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
38
+ _condition = "Surface"
33
39
  end
40
+ _attributes.key = _condition
41
+ _attributes.hostRef = ref
42
+ _attributes.base = styles.surface
43
+ _attributes.className = className
44
+ _attributes.sx = sx
34
45
  local _attributes_1 = table.clone(styles.corner)
35
46
  setmetatable(_attributes_1, nil)
36
47
  local _exp = React.createElement("uicorner", _attributes_1)
@@ -42,18 +53,18 @@ local function Menu(props)
42
53
  local _exp_2 = React.createElement("uilistlayout", _attributes_3)
43
54
  local _result
44
55
  if vacant then
45
- local _condition = empty
46
- if _condition == nil then
56
+ local _condition_1 = empty
57
+ if _condition_1 == nil then
47
58
  local _attributes_4 = {}
48
- local _condition_1 = emptyText
49
- if _condition_1 == nil then
50
- _condition_1 = "No options"
59
+ local _condition_2 = emptyText
60
+ if _condition_2 == nil then
61
+ _condition_2 = "No options"
51
62
  end
52
- _attributes_4.text = _condition_1
63
+ _attributes_4.text = _condition_2
53
64
  _attributes_4.height = row
54
- _condition = React.createElement(EmptyListHint, _attributes_4)
65
+ _condition_1 = React.createElement(EmptyListHint, _attributes_4)
55
66
  end
56
- _result = _condition
67
+ _result = _condition_1
57
68
  else
58
69
  -- ▼ ReadonlyArray.map ▼
59
70
  local _newValue = table.create(#items)
@@ -83,7 +94,7 @@ local function Menu(props)
83
94
  anchor = anchor,
84
95
  preferredHeight = height,
85
96
  onDismiss = onClose,
86
- }, React.createElement("frame", _attributes, _exp, _exp_1, _exp_2, _result))
97
+ }, React.createElement(SxHost, _attributes, _exp, _exp_1, _exp_2, _result))
87
98
  end
88
99
  local default = Menu
89
100
  return {
@@ -1,9 +1,10 @@
1
1
  import React from "@rbxts/react";
2
+ import { CustomizedProps } from "../../../../theme/index";
2
3
  export interface ModalProps {
3
4
  host?: Instance;
4
5
  open: boolean;
5
6
  onClose: () => void;
6
7
  children?: React.ReactNode;
7
8
  }
8
- declare function Modal(props: ModalProps): JSX.Element;
9
+ declare function Modal(props: CustomizedProps<Frame, ModalProps>): JSX.Element;
9
10
  export default Modal;
@@ -8,6 +8,7 @@ local useState = _react.useState
8
8
  local _services = TS.import(script, TS.getModule(script, "@rbxts", "services"))
9
9
  local GuiService = _services.GuiService
10
10
  local UserInputService = _services.UserInputService
11
+ local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
11
12
  local _popup = TS.import(script, script.Parent.Parent.Parent, "popup")
12
13
  local Portal = _popup.Portal
13
14
  local portalTarget = _popup.portalTarget
@@ -22,6 +23,10 @@ local function Modal(props)
22
23
  local open = _binding.open
23
24
  local onClose = _binding.onClose
24
25
  local children = _binding.children
26
+ local className = _binding.className
27
+ local sx = _binding.sx
28
+ local id = _binding.id
29
+ local ref = _binding.ref
25
30
  local styles = useModalStyles()
26
31
  local close = useRef(onClose)
27
32
  local surface = useRef()
@@ -64,6 +69,7 @@ local function Modal(props)
64
69
  end
65
70
  end
66
71
  end, { open, layer })
72
+ local surfaceStyle = styles.surface
67
73
  local _exp = React.createElement("frame", {
68
74
  key = "ModalAnchor",
69
75
  ref = anchor,
@@ -92,12 +98,30 @@ local function Modal(props)
92
98
  }
93
99
  local _exp_1 = React.createElement("textbutton", _attributes_1)
94
100
  local _attributes_2 = {
95
- key = "Surface",
96
- ref = surface,
101
+ tag = "frame",
97
102
  }
98
- for _k, _v in styles.surface do
99
- _attributes_2[_k] = _v
103
+ local _condition_1 = id
104
+ if not (_condition_1 ~= 0 and _condition_1 == _condition_1 and _condition_1 ~= "" and _condition_1) then
105
+ _condition_1 = "Surface"
100
106
  end
107
+ _attributes_2.key = _condition_1
108
+ _attributes_2.hostRef = function(instance)
109
+ surface.current = instance
110
+ if ref == nil then
111
+ return nil
112
+ end
113
+ if type(ref) == "function" then
114
+ ref(instance)
115
+ return nil
116
+ end
117
+ ref.current = instance
118
+ end
119
+ _attributes_2.base = surfaceStyle
120
+ _attributes_2.className = className
121
+ _attributes_2.sx = sx
122
+ _attributes_2.AnchorPoint = surfaceStyle.AnchorPoint
123
+ _attributes_2.Position = surfaceStyle.Position
124
+ _attributes_2.ZIndex = surfaceStyle.ZIndex
101
125
  local _attributes_3 = table.clone(styles.padding)
102
126
  setmetatable(_attributes_3, nil)
103
127
  local _exp_2 = React.createElement("uipadding", _attributes_3)
@@ -105,7 +129,7 @@ local function Modal(props)
105
129
  setmetatable(_attributes_4, nil)
106
130
  _condition = (React.createElement(Portal, {
107
131
  host = layer,
108
- }, React.createElement("frame", _attributes, _exp_1, React.createElement("frame", _attributes_2, _exp_2, React.createElement("uicorner", _attributes_4), children))))
132
+ }, React.createElement("frame", _attributes, _exp_1, React.createElement(SxHost, _attributes_2, _exp_2, React.createElement("uicorner", _attributes_4), children))))
109
133
  end
110
134
  return React.createElement(React.Fragment, nil, _exp, _condition)
111
135
  end
@@ -5,6 +5,7 @@ export interface NumberInputProps {
5
5
  min?: number;
6
6
  max?: number;
7
7
  step?: number;
8
+ places?: number;
8
9
  disabled?: boolean;
9
10
  readOnly?: boolean;
10
11
  loading?: boolean;
@@ -2,7 +2,9 @@
2
2
  local TS = _G[script]
3
3
  local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
4
  local Input = TS.import(script, script.Parent.Parent.Parent, "input").Input
5
- local parseNumberDraft = TS.import(script, script.Parent, "numberValue").parseNumberDraft
5
+ local _numberValue = TS.import(script, script.Parent, "numberValue")
6
+ local formatNumber = _numberValue.formatNumber
7
+ local parseNumberDraft = _numberValue.parseNumberDraft
6
8
  local function NumberInput(props)
7
9
  local _binding = props
8
10
  local value = _binding.value
@@ -10,6 +12,7 @@ local function NumberInput(props)
10
12
  local min = _binding.min
11
13
  local max = _binding.max
12
14
  local step = _binding.step
15
+ local places = _binding.places
13
16
  local disabled = _binding.disabled
14
17
  local readOnly = _binding.readOnly
15
18
  local loading = _binding.loading
@@ -18,6 +21,7 @@ local function NumberInput(props)
18
21
  local size = _binding.size
19
22
  local reducedMotion = _binding.reducedMotion
20
23
  local className = _binding.className
24
+ local sx = _binding.sx
21
25
  local id = _binding.id
22
26
  local ref = _binding.ref
23
27
  local _attributes = {}
@@ -28,7 +32,8 @@ local function NumberInput(props)
28
32
  _attributes.id = _condition
29
33
  _attributes.ref = ref
30
34
  _attributes.className = className
31
- _attributes.text = tostring(value)
35
+ _attributes.sx = sx
36
+ _attributes.text = if places ~= nil then formatNumber(value, places) else tostring(value)
32
37
  _attributes.placeholder = placeholder
33
38
  _attributes.width = width
34
39
  _attributes.disabled = disabled
@@ -38,7 +43,13 @@ local function NumberInput(props)
38
43
  _attributes.reducedMotion = reducedMotion
39
44
  _attributes.onTextChanged = function(text)
40
45
  local committed = parseNumberDraft(text, min, max, step)
41
- if committed ~= nil and committed ~= value then
46
+ if committed == nil then
47
+ return nil
48
+ end
49
+ if places ~= nil and formatNumber(committed, places) == formatNumber(value, places) then
50
+ return nil
51
+ end
52
+ if committed ~= value then
42
53
  onChange(committed)
43
54
  end
44
55
  end
@@ -1,2 +1,3 @@
1
1
  export declare function commitNumber(value: number | undefined, min?: number, max?: number, step?: number): number | undefined;
2
2
  export declare function parseNumberDraft(text: string, min?: number, max?: number, step?: number): number | undefined;
3
+ export declare function formatNumber(value: number, places?: number): string;