@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
@@ -23,7 +23,52 @@ end
23
23
  local function parseNumberDraft(text, min, max, step)
24
24
  return commitNumber(tonumber(text), min, max, step)
25
25
  end
26
+ local function formatNumber(value, places)
27
+ if places == nil then
28
+ places = 4
29
+ end
30
+ if value ~= value or value == math.huge or value == -math.huge then
31
+ return tostring(value)
32
+ end
33
+ local scale = 10 ^ places
34
+ local scaled = math.floor(math.abs(value) * scale + 0.5)
35
+ if scaled == 0 then
36
+ return "0"
37
+ end
38
+ local sign = if value < 0 then "-" else ""
39
+ local whole = math.floor(scaled / scale)
40
+ local frac = scaled % scale
41
+ if frac == 0 then
42
+ return `{sign}{whole}`
43
+ end
44
+ local digits = ""
45
+ local rest = frac
46
+ while rest > 0 do
47
+ digits = `{rest % 10}{digits}`
48
+ rest = math.floor(rest / 10)
49
+ end
50
+ while #digits < places do
51
+ digits = `0{digits}`
52
+ end
53
+ while true do
54
+ local _condition = #digits > 0
55
+ if _condition then
56
+ local _digits = digits
57
+ local _arg0 = #digits
58
+ local _arg1 = #digits
59
+ _condition = string.sub(_digits, _arg0, _arg1) == "0"
60
+ end
61
+ if not _condition then
62
+ break
63
+ end
64
+ local _digits = digits
65
+ local _arg1 = #digits - 1
66
+ digits = string.sub(_digits, 1, _arg1)
67
+ end
68
+ return `{sign}{whole}.{digits}`
69
+ end
26
70
  return {
27
71
  commitNumber = commitNumber,
28
72
  parseNumberDraft = parseNumberDraft,
73
+ formatNumber = formatNumber,
29
74
  }
@@ -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 NumberInput = TS.import(script, script.Parent.Parent.Parent, "numberInput").NumberInput
5
6
  local useNumberRangeEditorStyles = TS.import(script, script.Parent, "NumberRangeEditor.styles").default
6
7
  local writeNumberRange = TS.import(script, script.Parent, "numberRangeValue").writeNumberRange
@@ -18,26 +19,21 @@ local function NumberRangeEditor(props)
18
19
  local parts = writeNumberRange(value.Min, value.Max, field, amount)
19
20
  onChange(NumberRange.new(parts.Min, parts.Max))
20
21
  end
21
- local _attributes = {}
22
+ local _attributes = {
23
+ tag = "frame",
24
+ }
22
25
  local _condition = id
23
26
  if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
24
27
  _condition = "NumberRangeEditor"
25
28
  end
26
29
  _attributes.key = _condition
27
- _attributes.ref = ref
28
- for _k, _v in styles.root do
29
- _attributes[_k] = _v
30
- end
31
- if className then
32
- for _k, _v in className do
33
- _attributes[_k] = _v
34
- end
35
- end
36
- if sx then
37
- for _k, _v in sx do
38
- _attributes[_k] = _v
39
- end
40
- end
30
+ _attributes.hostRef = ref
31
+ _attributes.base = styles.root
32
+ _attributes.className = className
33
+ _attributes.sx = sx
34
+ _attributes.state = {
35
+ disabled = disabled,
36
+ }
41
37
  local _attributes_1 = table.clone(styles.row)
42
38
  setmetatable(_attributes_1, nil)
43
39
  local _exp = React.createElement("uilistlayout", _attributes_1)
@@ -81,7 +77,7 @@ local function NumberRangeEditor(props)
81
77
  local _exp_5 = React.createElement("textlabel", _attributes_8)
82
78
  local _attributes_9 = table.clone(styles.field)
83
79
  setmetatable(_attributes_9, nil)
84
- return React.createElement("frame", _attributes, _exp, _exp_3, React.createElement("frame", _attributes_6, _exp_4, _exp_5, React.createElement("frame", _attributes_9, React.createElement(NumberInput, {
80
+ return React.createElement(SxHost, _attributes, _exp, _exp_3, React.createElement("frame", _attributes_6, _exp_4, _exp_5, React.createElement("frame", _attributes_9, React.createElement(NumberInput, {
85
81
  value = value.Max,
86
82
  disabled = disabled,
87
83
  width = UDim.new(1, 0),
@@ -3,6 +3,7 @@ local TS = _G[script]
3
3
  local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
4
  local cx = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme").cx
5
5
  local pageRange = TS.import(script, script.Parent, "pageRange").pageRange
6
+ local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
6
7
  local usePaginationStyles = TS.import(script, script.Parent, "Pagination.styles").default
7
8
  local function Pagination(props)
8
9
  local _binding = props
@@ -23,26 +24,21 @@ local function Pagination(props)
23
24
  variant = variant,
24
25
  })
25
26
  local tokens = pageRange(count, page, siblingCount, boundaryCount)
26
- local _attributes = {}
27
+ local _attributes = {
28
+ tag = "frame",
29
+ }
27
30
  local _condition = id
28
31
  if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
29
32
  _condition = "Pagination"
30
33
  end
31
34
  _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
35
+ _attributes.hostRef = ref
36
+ _attributes.base = styles.root
37
+ _attributes.className = className
38
+ _attributes.sx = sx
39
+ _attributes.state = {
40
+ disabled = disabled,
41
+ }
46
42
  local _attributes_1 = table.clone(styles.list)
47
43
  setmetatable(_attributes_1, nil)
48
44
  local _exp = React.createElement("uilistlayout", _attributes_1)
@@ -92,7 +88,7 @@ local function Pagination(props)
92
88
  _newValue[_k] = _callback(_v, _k - 1, tokens)
93
89
  end
94
90
  -- ▲ ReadonlyArray.map ▲
95
- return React.createElement("frame", _attributes, _exp, React.createElement(React.Fragment, nil, _newValue))
91
+ return React.createElement(SxHost, _attributes, _exp, React.createElement(React.Fragment, nil, _newValue))
96
92
  end
97
93
  local default = Pagination
98
94
  return {
@@ -1,9 +1,10 @@
1
1
  import React from "@rbxts/react";
2
+ import { CustomizedProps } from "../../../../theme/index";
2
3
  export type PaperElevation = "flat" | "raised" | "outlined";
3
4
  export interface PaperProps {
4
5
  elevation?: PaperElevation;
5
6
  square?: boolean;
6
7
  children?: React.ReactNode;
7
8
  }
8
- declare function Paper(props: PaperProps): JSX.Element;
9
+ declare function Paper(props: CustomizedProps<Frame, PaperProps>): JSX.Element;
9
10
  export default Paper;
@@ -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 usePaperStyles = TS.import(script, script.Parent, "Paper.styles").default
5
6
  local function Paper(props)
6
7
  local _binding = props
@@ -10,31 +11,39 @@ local function Paper(props)
10
11
  end
11
12
  local square = _binding.square
12
13
  local children = _binding.children
14
+ local className = _binding.className
15
+ local sx = _binding.sx
16
+ local id = _binding.id
17
+ local ref = _binding.ref
13
18
  local styles = usePaperStyles({
14
19
  elevation = elevation,
15
20
  })
16
- local _attributes = {
17
- key = "Paper",
18
- }
19
- for _k, _v in styles.root do
20
- _attributes[_k] = _v
21
+ local _attributes = {}
22
+ local _condition = id
23
+ if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
24
+ _condition = "Paper"
21
25
  end
26
+ _attributes.key = _condition
27
+ _attributes.hostRef = ref
28
+ _attributes.base = styles.root
29
+ _attributes.className = className
30
+ _attributes.sx = sx
22
31
  local _attributes_1 = table.clone(styles.padding)
23
32
  setmetatable(_attributes_1, nil)
24
33
  local _exp = React.createElement("uipadding", _attributes_1)
25
- local _condition = square ~= true
26
- if _condition then
34
+ local _condition_1 = square ~= true
35
+ if _condition_1 then
27
36
  local _attributes_2 = table.clone(styles.corner)
28
37
  setmetatable(_attributes_2, nil)
29
- _condition = React.createElement("uicorner", _attributes_2)
38
+ _condition_1 = React.createElement("uicorner", _attributes_2)
30
39
  end
31
- local _condition_1 = elevation == "outlined"
32
- if _condition_1 then
40
+ local _condition_2 = elevation == "outlined"
41
+ if _condition_2 then
33
42
  local _attributes_2 = table.clone(styles.stroke)
34
43
  setmetatable(_attributes_2, nil)
35
- _condition_1 = React.createElement("uistroke", _attributes_2)
44
+ _condition_2 = React.createElement("uistroke", _attributes_2)
36
45
  end
37
- return React.createElement("frame", _attributes, _exp, _condition, _condition_1, children)
46
+ return React.createElement(SxHost, _attributes, _exp, _condition_1, _condition_2, children)
38
47
  end
39
48
  local default = Paper
40
49
  return {
@@ -1,11 +1,13 @@
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 NumberInput = TS.import(script, script.Parent.Parent.Parent, "numberInput").NumberInput
5
6
  local usePhysicalPropertiesEditorStyles = TS.import(script, script.Parent, "PhysicalPropertiesEditor.styles").default
6
7
  local _physicalParts = TS.import(script, script.Parent, "physicalParts")
7
8
  local patchPhysicalParts = _physicalParts.patchPhysicalParts
8
- local physicalFields = _physicalParts.physicalFields
9
+ local physicalCaption = _physicalParts.physicalCaption
10
+ local physicalRows = _physicalParts.physicalRows
9
11
  local function PhysicalPropertiesEditor(props)
10
12
  local _binding = props
11
13
  local value = _binding.value
@@ -16,68 +18,91 @@ local function PhysicalPropertiesEditor(props)
16
18
  local id = _binding.id
17
19
  local ref = _binding.ref
18
20
  local styles = usePhysicalPropertiesEditorStyles()
19
- local amounts = { value.Density, value.Friction, value.Elasticity, value.FrictionWeight, value.ElasticityWeight }
21
+ local amounts = {
22
+ Density = value.Density,
23
+ Friction = value.Friction,
24
+ Elasticity = value.Elasticity,
25
+ FrictionWeight = value.FrictionWeight,
26
+ ElasticityWeight = value.ElasticityWeight,
27
+ }
20
28
  local commit = function(field, amount)
21
29
  local parts = patchPhysicalParts(value.Density, value.Friction, value.Elasticity, value.FrictionWeight, value.ElasticityWeight, field, amount)
22
30
  onChange(PhysicalProperties.new(parts[1], parts[2], parts[3], parts[4], parts[5]))
23
31
  end
24
- local _attributes = {}
32
+ local _attributes = {
33
+ tag = "frame",
34
+ }
25
35
  local _condition = id
26
36
  if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
27
37
  _condition = "PhysicalPropertiesEditor"
28
38
  end
29
39
  _attributes.key = _condition
30
- _attributes.ref = ref
31
- for _k, _v in styles.root do
32
- _attributes[_k] = _v
33
- end
34
- if className then
35
- for _k, _v in className do
36
- _attributes[_k] = _v
37
- end
38
- end
39
- if sx then
40
- for _k, _v in sx do
41
- _attributes[_k] = _v
42
- end
43
- end
40
+ _attributes.hostRef = ref
41
+ _attributes.base = styles.root
42
+ _attributes.className = className
43
+ _attributes.sx = sx
44
+ _attributes.state = {
45
+ disabled = disabled,
46
+ }
44
47
  local _attributes_1 = table.clone(styles.wrap)
45
48
  setmetatable(_attributes_1, nil)
46
49
  local _exp = React.createElement("uilistlayout", _attributes_1)
47
- local _exp_1 = physicalFields()
50
+ local _exp_1 = physicalRows()
48
51
  -- ▼ ReadonlyArray.map ▼
49
52
  local _newValue = table.create(#_exp_1)
50
- local _callback = function(field, index)
53
+ local _callback = function(row, rowIndex)
51
54
  local _attributes_2 = {
52
- key = field,
55
+ key = `Row-{rowIndex}`,
53
56
  }
54
- for _k, _v in styles.axis do
57
+ for _k, _v in styles.row do
55
58
  _attributes_2[_k] = _v
56
59
  end
57
- _attributes_2.LayoutOrder = index + 1
58
- local _attributes_3 = table.clone(styles.row)
60
+ _attributes_2.LayoutOrder = rowIndex + 1
61
+ local _attributes_3 = table.clone(styles.pair)
59
62
  setmetatable(_attributes_3, nil)
60
63
  local _exp_2 = React.createElement("uilistlayout", _attributes_3)
61
- local _attributes_4 = table.clone(styles.label)
62
- setmetatable(_attributes_4, nil)
63
- _attributes_4.Text = field
64
- local _exp_3 = React.createElement("textlabel", _attributes_4)
65
- local _attributes_5 = table.clone(styles.field)
66
- setmetatable(_attributes_5, nil)
67
- return React.createElement("frame", _attributes_2, _exp_2, _exp_3, React.createElement("frame", _attributes_5, React.createElement(NumberInput, {
68
- value = amounts[index + 1],
69
- disabled = disabled,
70
- width = UDim.new(1, 0),
71
- onChange = function(amount)
72
- return commit(field, amount)
73
- end,
74
- })))
64
+ -- ▼ ReadonlyArray.map ▼
65
+ local _newValue_1 = table.create(#row)
66
+ local _callback_1 = function(field, index)
67
+ local _attributes_4 = {
68
+ key = field,
69
+ }
70
+ for _k, _v in styles.cell do
71
+ _attributes_4[_k] = _v
72
+ end
73
+ _attributes_4.LayoutOrder = index + 1
74
+ local _attributes_5 = table.clone(styles.stack)
75
+ setmetatable(_attributes_5, nil)
76
+ local _exp_3 = React.createElement("uilistlayout", _attributes_5)
77
+ local _attributes_6 = table.clone(styles.label)
78
+ setmetatable(_attributes_6, nil)
79
+ _attributes_6.Text = physicalCaption(field)
80
+ _attributes_6.LayoutOrder = 1
81
+ local _exp_4 = React.createElement("textlabel", _attributes_6)
82
+ local _attributes_7 = table.clone(styles.field)
83
+ setmetatable(_attributes_7, nil)
84
+ _attributes_7.LayoutOrder = 2
85
+ return React.createElement("frame", _attributes_4, _exp_3, _exp_4, React.createElement("frame", _attributes_7, React.createElement(NumberInput, {
86
+ value = amounts[field],
87
+ places = 4,
88
+ disabled = disabled,
89
+ width = UDim.new(1, 0),
90
+ onChange = function(amount)
91
+ return commit(field, amount)
92
+ end,
93
+ })))
94
+ end
95
+ for _k, _v in row do
96
+ _newValue_1[_k] = _callback_1(_v, _k - 1, row)
97
+ end
98
+ -- ▲ ReadonlyArray.map ▲
99
+ return React.createElement("frame", _attributes_2, _exp_2, React.createElement(React.Fragment, nil, _newValue_1))
75
100
  end
76
101
  for _k, _v in _exp_1 do
77
102
  _newValue[_k] = _callback(_v, _k - 1, _exp_1)
78
103
  end
79
104
  -- ▲ ReadonlyArray.map ▲
80
- return React.createElement("frame", _attributes, _exp, React.createElement(React.Fragment, nil, _newValue))
105
+ return React.createElement(SxHost, _attributes, _exp, React.createElement(React.Fragment, nil, _newValue))
81
106
  end
82
107
  local default = PhysicalPropertiesEditor
83
108
  return {
@@ -1,9 +1,11 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
2
  local TS = _G[script]
3
3
  local _theme = TS.import(script, script.Parent.Parent.Parent.Parent.Parent, "theme")
4
+ local controlMetrics = _theme.controlMetrics
4
5
  local createStyles = _theme.createStyles
5
6
  local componentStyles = _theme.componentStyles
6
7
  local usePhysicalPropertiesEditorStyles = componentStyles("PhysicalPropertiesEditor", function(theme)
8
+ local gap = theme.padding.calc(1)
7
9
  return createStyles({
8
10
  root = {
9
11
  Size = UDim2.new(1, 0, 0, 0),
@@ -16,26 +18,38 @@ local usePhysicalPropertiesEditorStyles = componentStyles("PhysicalPropertiesEdi
16
18
  Padding = UDim.new(0, theme.padding.calc(0.5)),
17
19
  SortOrder = Enum.SortOrder.LayoutOrder,
18
20
  },
19
- row = {
21
+ pair = {
20
22
  FillDirection = Enum.FillDirection.Horizontal,
21
- Padding = UDim.new(0, theme.padding.calc(1)),
22
- VerticalAlignment = Enum.VerticalAlignment.Center,
23
+ Padding = UDim.new(0, gap),
23
24
  SortOrder = Enum.SortOrder.LayoutOrder,
24
25
  },
25
- axis = {
26
- Size = UDim2.new(1, 0, 0, theme.spacing.calc(2)),
26
+ row = {
27
+ Size = UDim2.new(1, 0, 0, 0),
28
+ AutomaticSize = Enum.AutomaticSize.Y,
29
+ BackgroundTransparency = 1,
30
+ },
31
+ cell = {
32
+ Size = UDim2.new(0.5, -gap / 2, 0, 0),
33
+ AutomaticSize = Enum.AutomaticSize.Y,
27
34
  BackgroundTransparency = 1,
28
35
  },
36
+ stack = {
37
+ FillDirection = Enum.FillDirection.Vertical,
38
+ Padding = UDim.new(0, theme.padding.calc(0.5)),
39
+ SortOrder = Enum.SortOrder.LayoutOrder,
40
+ },
29
41
  label = {
30
- Size = UDim2.new(0, theme.spacing.calc(7), 1, 0),
42
+ Size = UDim2.new(1, 0, 0, 0),
43
+ AutomaticSize = Enum.AutomaticSize.Y,
31
44
  BackgroundTransparency = 1,
32
45
  Font = theme.typography.fontFamilies.default,
33
46
  TextSize = theme.typography.fontSizes.caption,
34
47
  TextColor3 = theme.palette.text.secondary,
35
48
  TextXAlignment = Enum.TextXAlignment.Left,
49
+ TextTruncate = Enum.TextTruncate.AtEnd,
36
50
  },
37
51
  field = {
38
- Size = UDim2.new(1, -theme.spacing.calc(7), 1, 0),
52
+ Size = UDim2.new(1, 0, 0, controlMetrics(theme.density).height),
39
53
  BackgroundTransparency = 1,
40
54
  },
41
55
  })
@@ -1,3 +1,5 @@
1
1
  export type PhysicalField = "Density" | "Friction" | "Elasticity" | "FrictionWeight" | "ElasticityWeight";
2
2
  export declare function physicalFields(): PhysicalField[];
3
+ export declare function physicalCaption(field: PhysicalField): "Density" | "Friction" | "Elasticity" | "Friction wt" | "Elasticity wt";
4
+ export declare function physicalRows(): PhysicalField[][];
3
5
  export declare function patchPhysicalParts(density: number, friction: number, elasticity: number, frictionWeight: number, elasticityWeight: number, field: PhysicalField, amount: number): number[];
@@ -2,6 +2,18 @@
2
2
  local function physicalFields()
3
3
  return { "Density", "Friction", "Elasticity", "FrictionWeight", "ElasticityWeight" }
4
4
  end
5
+ local function physicalCaption(field)
6
+ if field == "FrictionWeight" then
7
+ return "Friction wt"
8
+ end
9
+ if field == "ElasticityWeight" then
10
+ return "Elasticity wt"
11
+ end
12
+ return field
13
+ end
14
+ local function physicalRows()
15
+ return { { "Density", "Friction" }, { "Elasticity", "FrictionWeight" }, { "ElasticityWeight" } }
16
+ end
5
17
  local function patchPhysicalParts(density, friction, elasticity, frictionWeight, elasticityWeight, field, amount)
6
18
  local parts = { density, friction, elasticity, frictionWeight, elasticityWeight }
7
19
  local index = if field == "Density" then 0 elseif field == "Friction" then 1 elseif field == "Elasticity" then 2 elseif field == "FrictionWeight" then 3 else 4
@@ -10,5 +22,7 @@ local function patchPhysicalParts(density, friction, elasticity, frictionWeight,
10
22
  end
11
23
  return {
12
24
  physicalFields = physicalFields,
25
+ physicalCaption = physicalCaption,
26
+ physicalRows = physicalRows,
13
27
  patchPhysicalParts = patchPhysicalParts,
14
28
  }
@@ -1,4 +1,5 @@
1
1
  import React from "@rbxts/react";
2
+ import { CustomizedProps } from "../../../../theme/index";
2
3
  export interface PopupProps {
3
4
  anchor?: GuiObject;
4
5
  /** Content height. Flips above the anchor and caps the shell. */
@@ -9,5 +10,5 @@ export interface PopupProps {
9
10
  onInput?: (input: InputObject) => void;
10
11
  children?: React.ReactNode;
11
12
  }
12
- declare function Popup(props: PopupProps): JSX.Element | undefined;
13
+ declare function Popup(props: CustomizedProps<Frame, PopupProps>): JSX.Element | undefined;
13
14
  export default Popup;
@@ -5,6 +5,7 @@ local React = _react
5
5
  local useEffect = _react.useEffect
6
6
  local useRef = _react.useRef
7
7
  local useState = _react.useState
8
+ local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
8
9
  local popupPlacement = TS.import(script, script.Parent, "placement").popupPlacement
9
10
  local Portal = TS.import(script, script.Parent, "Portal").default
10
11
  local portalTarget = TS.import(script, script.Parent, "portalTarget").portalTarget
@@ -16,6 +17,10 @@ local function Popup(props)
16
17
  local onDismiss = _binding.onDismiss
17
18
  local onInput = _binding.onInput
18
19
  local children = _binding.children
20
+ local className = _binding.className
21
+ local sx = _binding.sx
22
+ local id = _binding.id
23
+ local ref = _binding.ref
19
24
  local dismiss = useRef(onDismiss)
20
25
  dismiss.current = onDismiss
21
26
  local _, bump = useState(0)
@@ -88,14 +93,7 @@ local function Popup(props)
88
93
  end
89
94
  local place = popupPlacement(_exp, _exp_1, _exp_2, _exp_3, _exp_4, _exp_5, _exp_6, _exp_7, _condition, _condition_1)
90
95
  local capped = place.height > 0
91
- return React.createElement(Portal, {
92
- host = layer,
93
- }, React.createElement("frame", {
94
- key = "Popup",
95
- Size = UDim2.fromScale(1, 1),
96
- BackgroundTransparency = 1,
97
- ZIndex = 20000,
98
- }, onDismiss and (React.createElement("textbutton", {
96
+ local _exp_8 = onDismiss and (React.createElement("textbutton", {
99
97
  key = "Backdrop",
100
98
  Size = UDim2.fromScale(1, 1),
101
99
  BackgroundTransparency = 1,
@@ -113,17 +111,36 @@ local function Popup(props)
113
111
  return _result
114
112
  end,
115
113
  },
116
- })), React.createElement("frame", {
117
- key = "Content",
118
- Position = UDim2.fromOffset(place.x, place.y),
119
- AnchorPoint = Vector2.new(0, if place.above then 1 else 0),
120
- Size = if capped then UDim2.fromOffset(place.width, place.height) else UDim2.fromOffset(place.width, 0),
121
- AutomaticSize = if capped then Enum.AutomaticSize.None else Enum.AutomaticSize.Y,
122
- ClipsDescendants = capped,
114
+ }))
115
+ local _attributes = {
116
+ tag = "frame",
117
+ }
118
+ local _condition_2 = id
119
+ if not (_condition_2 ~= 0 and _condition_2 == _condition_2 and _condition_2 ~= "" and _condition_2) then
120
+ _condition_2 = "Content"
121
+ end
122
+ _attributes.key = _condition_2
123
+ _attributes.hostRef = ref
124
+ _attributes.base = {
123
125
  BackgroundTransparency = 1,
124
- Active = false,
125
- ZIndex = 20001,
126
- }, children)))
126
+ }
127
+ _attributes.className = className
128
+ _attributes.sx = sx
129
+ _attributes.Position = UDim2.fromOffset(place.x, place.y)
130
+ _attributes.AnchorPoint = Vector2.new(0, if place.above then 1 else 0)
131
+ _attributes.Size = if capped then UDim2.fromOffset(place.width, place.height) else UDim2.fromOffset(place.width, 0)
132
+ _attributes.AutomaticSize = if capped then Enum.AutomaticSize.None else Enum.AutomaticSize.Y
133
+ _attributes.ClipsDescendants = capped
134
+ _attributes.Active = false
135
+ _attributes.ZIndex = 20001
136
+ return React.createElement(Portal, {
137
+ host = layer,
138
+ }, React.createElement("frame", {
139
+ key = "Popup",
140
+ Size = UDim2.fromScale(1, 1),
141
+ BackgroundTransparency = 1,
142
+ ZIndex = 20000,
143
+ }, _exp_8, React.createElement(SxHost, _attributes, children)))
127
144
  end
128
145
  local default = Popup
129
146
  return {
@@ -9,6 +9,7 @@ local _pretty_react_hooks = TS.import(script, TS.getModule(script, "@rbxts", "pr
9
9
  local useAsyncEffect = _pretty_react_hooks.useAsyncEffect
10
10
  local useDeferState = _pretty_react_hooks.useDeferState
11
11
  local ContentProvider = TS.import(script, TS.getModule(script, "@rbxts", "services")).ContentProvider
12
+ local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
12
13
  local ProgressBar = TS.import(script, script.Parent.Parent.Parent, "progressBar").ProgressBar
13
14
  local usePreloaderStyles = TS.import(script, script.Parent, "Preloader.styles").default
14
15
  local function Preloader(props)
@@ -103,26 +104,18 @@ local function Preloader(props)
103
104
  children = children,
104
105
  })
105
106
  else
106
- local _attributes = {}
107
+ local _attributes = {
108
+ tag = "frame",
109
+ }
107
110
  local _condition = id
108
111
  if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
109
112
  _condition = "Preloader"
110
113
  end
111
114
  _attributes.key = _condition
112
- _attributes.ref = ref
113
- for _k, _v in container do
114
- _attributes[_k] = _v
115
- end
116
- if className then
117
- for _k, _v in className do
118
- _attributes[_k] = _v
119
- end
120
- end
121
- if sx then
122
- for _k, _v in sx do
123
- _attributes[_k] = _v
124
- end
125
- end
115
+ _attributes.hostRef = ref
116
+ _attributes.base = container
117
+ _attributes.className = className
118
+ _attributes.sx = sx
126
119
  local _exp = Adornment ~= nil and React.createElement(Adornment, {
127
120
  progress = percentage,
128
121
  })
@@ -142,7 +135,7 @@ local function Preloader(props)
142
135
  progress = percentage,
143
136
  })))
144
137
  end
145
- _result = (React.createElement("frame", _attributes, _exp, _condition_1, _condition_2))
138
+ _result = (React.createElement(SxHost, _attributes, _exp, _condition_1, _condition_2))
146
139
  end
147
140
  return React.createElement(React.Fragment, nil, _result)
148
141
  end
@@ -10,6 +10,7 @@ local _motion = TS.import(script, script.Parent.Parent.Parent, "motion")
10
10
  local loopProperty = _motion.loopProperty
11
11
  local progressSpin = _motion.progressSpin
12
12
  local progressUnit = _motion.progressUnit
13
+ local SxHost = TS.import(script, script.Parent.Parent.Parent, "host").SxHost
13
14
  local useProgressBarStyles = TS.import(script, script.Parent, "ProgressBar.styles").default
14
15
  local function ProgressBar(props)
15
16
  local _binding = props
@@ -53,26 +54,21 @@ local function ProgressBar(props)
53
54
  Position = UDim2.new(1, 0, 0.5, 0),
54
55
  }, 1.1)
55
56
  end, { motion, unit })
56
- local _attributes = {}
57
+ local _attributes = {
58
+ tag = "frame",
59
+ }
57
60
  local _condition = id
58
61
  if not (_condition ~= 0 and _condition == _condition and _condition ~= "" and _condition) then
59
62
  _condition = "ProgressBar"
60
63
  end
61
64
  _attributes.key = _condition
62
- _attributes.ref = ref
63
- for _k, _v in container do
64
- _attributes[_k] = _v
65
- end
66
- if className then
67
- for _k, _v in className do
68
- _attributes[_k] = _v
69
- end
70
- end
71
- if sx then
72
- for _k, _v in sx do
73
- _attributes[_k] = _v
74
- end
75
- end
65
+ _attributes.hostRef = ref
66
+ _attributes.base = container
67
+ _attributes.className = className
68
+ _attributes.sx = sx
69
+ _attributes.state = {
70
+ disabled = disabled,
71
+ }
76
72
  local _attributes_1 = {
77
73
  key = "Bar",
78
74
  }
@@ -113,7 +109,7 @@ local function ProgressBar(props)
113
109
  for _k, _v in corner do
114
110
  _attributes_7[_k] = _v
115
111
  end
116
- return React.createElement("frame", _attributes, React.createElement("frame", _attributes_1, _exp, _exp_1, React.createElement("frame", _attributes_4, _exp_2, React.createElement("frame", _attributes_6, React.createElement("uicorner", _attributes_7)))))
112
+ return React.createElement(SxHost, _attributes, React.createElement("frame", _attributes_1, _exp, _exp_1, React.createElement("frame", _attributes_4, _exp_2, React.createElement("frame", _attributes_6, React.createElement("uicorner", _attributes_7)))))
117
113
  end
118
114
  local default = ProgressBar
119
115
  return {