@rbxts/react-clean-ui 1.0.38 → 1.2.2

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 (97) hide show
  1. package/out/Components/Chart/BarChart.d.ts +1 -0
  2. package/out/Components/Chart/BarChart.luau +149 -112
  3. package/out/Components/Chart/Pie.d.ts +1 -0
  4. package/out/Components/Chart/Pie.luau +21 -5
  5. package/out/Components/Decorator/BoxShadow.d.ts +1 -0
  6. package/out/Components/Decorator/BoxShadow.luau +12 -5
  7. package/out/Components/Decorator/Corners.d.ts +1 -0
  8. package/out/Components/Decorator/Corners.luau +12 -3
  9. package/out/Components/Decorator/Padding.d.ts +3 -1
  10. package/out/Components/Decorator/Padding.luau +12 -7
  11. package/out/Components/Input/Button.d.ts +1 -0
  12. package/out/Components/Input/Button.luau +44 -33
  13. package/out/Components/Input/Checkbox.d.ts +1 -0
  14. package/out/Components/Input/Checkbox.luau +23 -17
  15. package/out/Components/Input/HoverButton.d.ts +1 -0
  16. package/out/Components/Input/HoverButton.luau +44 -40
  17. package/out/Components/Input/Increment.d.ts +1 -0
  18. package/out/Components/Input/Increment.luau +10 -3
  19. package/out/Components/Input/Input.d.ts +3 -1
  20. package/out/Components/Input/Input.luau +96 -87
  21. package/out/Components/Input/Input.validation.d.ts +1 -0
  22. package/out/Components/Input/Input.validation.luau +21 -0
  23. package/out/Components/Input/Select.d.ts +9 -0
  24. package/out/Components/Input/Select.luau +311 -34
  25. package/out/Components/Input/Slider.luau +44 -29
  26. package/out/Components/Input/Switch.d.ts +9 -0
  27. package/out/Components/Input/Switch.luau +147 -0
  28. package/out/Components/Input/index.d.ts +1 -0
  29. package/out/Components/Input/init.luau +3 -0
  30. package/out/Components/Interaction/Modal.d.ts +14 -0
  31. package/out/Components/Interaction/Modal.luau +276 -0
  32. package/out/Components/Interaction/Toast.d.ts +2 -1
  33. package/out/Components/Interaction/Toast.luau +53 -28
  34. package/out/Components/Interaction/Tooltip.luau +36 -24
  35. package/out/Components/Interaction/index.d.ts +1 -0
  36. package/out/Components/Interaction/init.luau +3 -0
  37. package/out/Components/Layout/Accordion.d.ts +4 -3
  38. package/out/Components/Layout/Accordion.luau +68 -21
  39. package/out/Components/Layout/Column.d.ts +1 -0
  40. package/out/Components/Layout/Column.luau +11 -6
  41. package/out/Components/Layout/Container.d.ts +1 -0
  42. package/out/Components/Layout/Container.luau +22 -16
  43. package/out/Components/Layout/Draggable.luau +25 -3
  44. package/out/Components/Layout/Fieldset.d.ts +1 -0
  45. package/out/Components/Layout/Fieldset.luau +14 -8
  46. package/out/Components/Layout/FlexItem.luau +7 -0
  47. package/out/Components/Layout/Group.d.ts +1 -0
  48. package/out/Components/Layout/Group.luau +14 -9
  49. package/out/Components/Layout/HStack.d.ts +4 -0
  50. package/out/Components/Layout/HStack.luau +17 -9
  51. package/out/Components/Layout/Pagination.d.ts +32 -0
  52. package/out/Components/Layout/Pagination.luau +405 -0
  53. package/out/Components/Layout/Row.d.ts +1 -0
  54. package/out/Components/Layout/Row.luau +22 -16
  55. package/out/Components/Layout/Scroller.d.ts +1 -0
  56. package/out/Components/Layout/Scroller.luau +22 -15
  57. package/out/Components/Layout/Table.d.ts +31 -0
  58. package/out/Components/Layout/Table.luau +342 -0
  59. package/out/Components/Layout/Tabs.d.ts +22 -11
  60. package/out/Components/Layout/Tabs.luau +139 -122
  61. package/out/Components/Layout/VStack.d.ts +3 -0
  62. package/out/Components/Layout/VStack.luau +17 -10
  63. package/out/Components/Layout/index.d.ts +2 -0
  64. package/out/Components/Layout/init.luau +6 -0
  65. package/out/Components/Navigation/Menu.d.ts +1 -0
  66. package/out/Components/Navigation/Menu.luau +14 -3
  67. package/out/Components/Surface/Box.d.ts +1 -0
  68. package/out/Components/Surface/Box.luau +29 -27
  69. package/out/Components/Surface/Card.d.ts +7 -2
  70. package/out/Components/Surface/Card.luau +106 -65
  71. package/out/Components/Surface/Icon.d.ts +1 -0
  72. package/out/Components/Surface/Icon.luau +25 -16
  73. package/out/Components/Typography/Text.d.ts +1 -0
  74. package/out/Components/Typography/Text.luau +57 -47
  75. package/out/Contexts/index.d.ts +1 -0
  76. package/out/Contexts/init.luau +3 -0
  77. package/out/Contexts/modal.context.d.ts +15 -0
  78. package/out/Contexts/modal.context.luau +26 -0
  79. package/out/Contexts/toast.context.d.ts +1 -0
  80. package/out/Helpers/spacing.helper.d.ts +3 -2
  81. package/out/Helpers/spacing.helper.luau +102 -18
  82. package/out/Interfaces/css.types.d.ts +2 -0
  83. package/out/Interfaces/css.types.luau +4 -0
  84. package/out/Interfaces/index.d.ts +4 -4
  85. package/out/Interfaces/init.luau +0 -12
  86. package/out/Providers/app.provider.luau +2 -1
  87. package/out/Providers/index.d.ts +1 -0
  88. package/out/Providers/init.luau +3 -0
  89. package/out/Providers/modal.provider.d.ts +6 -0
  90. package/out/Providers/modal.provider.luau +86 -0
  91. package/out/Providers/overlay.provider.luau +1 -0
  92. package/out/Theme/theme.template.d.ts +99 -3
  93. package/out/Theme/themes/dark.theme.luau +103 -0
  94. package/out/Theme/themes/default.theme.luau +130 -0
  95. package/out/Theme/themes/sandstone.theme.luau +103 -0
  96. package/out/Theme/themes/wooden.theme.luau +235 -2
  97. package/package.json +2 -2
@@ -103,50 +103,61 @@ local function TooltipPopup(props)
103
103
  until true
104
104
  local intent = ColorHelper:getIntentColors(theme, props.intent, "default", theme.components.tooltip.intents)
105
105
  local padding = SpacingHelper:ResolveNumberPadding(SpacingHelper:GetPadding(theme, props.spacing, theme.components.tooltip.spacing))
106
+ local _attributes = {}
107
+ local _condition = props.name
108
+ if _condition == nil then
109
+ _condition = "Tooltip"
110
+ end
111
+ _attributes.key = _condition
112
+ _attributes.Position = UDim2.fromOffset(position.X, position.Y)
113
+ _attributes.AnchorPoint = anchor
114
+ _attributes.Size = UDim2.fromOffset(0, 0)
115
+ _attributes.AutomaticSize = Enum.AutomaticSize.XY
116
+ _attributes.GroupTransparency = groupTransparency
117
+ _attributes.BackgroundTransparency = 1
106
118
  local _exp_1 = React.createElement(Padding, {
107
119
  resolvedPadding = resolvedPadding,
108
120
  })
109
- local _attributes = table.clone(props)
110
- setmetatable(_attributes, nil)
111
- _attributes.value = theme.components.tooltip.boxShadow
112
- local _exp_2 = React.createElement(BoxShadow, _attributes)
121
+ local _attributes_1 = table.clone(props)
122
+ setmetatable(_attributes_1, nil)
123
+ _attributes_1.value = theme.components.tooltip.boxShadow
124
+ local _exp_2 = React.createElement(BoxShadow, _attributes_1)
113
125
  local _exp_3 = React.createElement(Corners, {
114
126
  radius = theme.components.button.cornerRadius,
115
127
  })
116
- local _attributes_1 = table.clone(props)
117
- setmetatable(_attributes_1, nil)
118
- _attributes_1.resolvedPadding = padding
119
- local _exp_4 = React.createElement(Padding, _attributes_1)
120
- local _attributes_2 = {}
121
- local _condition = props["border-thickness"]
122
- if _condition == nil then
123
- _condition = theme.components.box.borderThickness
128
+ local _attributes_2 = table.clone(props)
129
+ setmetatable(_attributes_2, nil)
130
+ _attributes_2.resolvedPadding = padding
131
+ local _exp_4 = React.createElement(Padding, _attributes_2)
132
+ local _attributes_3 = {
133
+ key = "Stroke",
134
+ }
135
+ local _condition_1 = props["border-thickness"]
136
+ if _condition_1 == nil then
137
+ _condition_1 = theme.components.box.borderThickness
124
138
  end
125
- _attributes_2.Thickness = _condition
126
- _attributes_2.BorderStrokePosition = Enum.BorderStrokePosition.Inner
127
- _attributes_2.Color = props["border-color"] or intent.borderColor
128
- local _exp_5 = React.createElement("uistroke", _attributes_2)
139
+ _attributes_3.Thickness = _condition_1
140
+ _attributes_3.BorderStrokePosition = Enum.BorderStrokePosition.Inner
141
+ _attributes_3.Color = props["border-color"] or intent.borderColor
142
+ local _exp_5 = React.createElement("uistroke", _attributes_3)
129
143
  local _content = props.content
130
- return React.createElement("canvasgroup", {
131
- Position = UDim2.fromOffset(position.X, position.Y),
132
- AnchorPoint = anchor,
133
- Size = UDim2.fromOffset(0, 0),
134
- AutomaticSize = Enum.AutomaticSize.XY,
135
- GroupTransparency = groupTransparency,
136
- BackgroundTransparency = 1,
137
- }, React.createElement("frame", {
144
+ return React.createElement("canvasgroup", _attributes, React.createElement("frame", {
145
+ key = "ShadowPadding",
138
146
  Size = UDim2.fromOffset(0, 0),
139
147
  AutomaticSize = Enum.AutomaticSize.XY,
140
148
  BackgroundTransparency = 1,
141
149
  }, _exp_1, React.createElement("frame", {
150
+ key = "Content",
142
151
  Size = UDim2.fromOffset(0, 0),
143
152
  AutomaticSize = Enum.AutomaticSize.XY,
144
153
  BackgroundColor3 = intent.backgroundColor,
145
154
  BackgroundTransparency = intent.backgroundTransparency,
146
155
  }, _exp_2, _exp_3, _exp_4, _exp_5, if type(_content) == "string" then React.createElement(Text, {
156
+ name = "TooltipText",
147
157
  text = props.content,
148
158
  TextColor3 = intent.textColor,
149
159
  }) else props.content)), pointerSize > 0 and React.createElement("frame", {
160
+ key = "Pointer",
150
161
  Size = UDim2.fromOffset(pointerSize, pointerSize),
151
162
  AnchorPoint = pointerAnchor,
152
163
  Position = pointerPosition,
@@ -156,6 +167,7 @@ local function TooltipPopup(props)
156
167
  BackgroundTransparency = intent.backgroundTransparency,
157
168
  Rotation = 45,
158
169
  }, React.createElement("uigradient", {
170
+ key = "Gradient",
159
171
  Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.4999, 1), NumberSequenceKeypoint.new(0.5, 0), NumberSequenceKeypoint.new(1, 0) }),
160
172
  Rotation = pointerRotation,
161
173
  })))
@@ -1,2 +1,3 @@
1
+ export * from './Modal';
1
2
  export * from './Toast';
2
3
  export * from './Tooltip';
@@ -1,6 +1,9 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
2
  local TS = _G[script]
3
3
  local exports = {}
4
+ for _k, _v in TS.import(script, script, "Modal") or {} do
5
+ exports[_k] = _v
6
+ end
4
7
  for _k, _v in TS.import(script, script, "Toast") or {} do
5
8
  exports[_k] = _v
6
9
  end
@@ -1,18 +1,18 @@
1
1
  import React from "@rbxts/react";
2
- import { IconName, ScalableElementProps } from "../../Interfaces";
2
+ import { IconName, PaddingProps, ScalableElementProps } from "../../Interfaces";
3
3
  interface AccordionItemProps {
4
4
  children?: React.ReactNode;
5
5
  value: string;
6
6
  disabled?: boolean;
7
7
  }
8
8
  declare function AccordionItem(_props: AccordionItemProps): undefined;
9
- interface AccordionHeaderProps {
9
+ interface AccordionHeaderProps extends PaddingProps {
10
10
  children?: React.ReactNode | string;
11
11
  icon?: IconName;
12
12
  text?: string;
13
13
  }
14
14
  declare function AccordionHeader(_props: AccordionHeaderProps): undefined;
15
- interface AccordionContentProps {
15
+ interface AccordionContentProps extends PaddingProps {
16
16
  children?: React.ReactNode;
17
17
  text?: string;
18
18
  }
@@ -24,6 +24,7 @@ export interface AccordionProps extends ScalableElementProps {
24
24
  defaultValue?: string;
25
25
  value?: string;
26
26
  onValueChange?: (value: string | undefined) => void;
27
+ name?: string;
27
28
  }
28
29
  type AccordionComponent = React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<ImageLabel>> & {
29
30
  Item: typeof AccordionItem;
@@ -5,6 +5,7 @@ local useTween = TS.import(script, TS.getModule(script, "@rbxts", "react-ripple"
5
5
  local CleanThemeContext = TS.import(script, script.Parent.Parent.Parent, "Contexts").CleanThemeContext
6
6
  local _Helpers = TS.import(script, script.Parent.Parent.Parent, "Helpers")
7
7
  local ColorHelper = _Helpers.ColorHelper
8
+ local CssHelper = _Helpers.CssHelper
8
9
  local SizeHelper = _Helpers.SizeHelper
9
10
  local SpacingHelper = _Helpers.SpacingHelper
10
11
  local TypographyHelper = _Helpers.TypographyHelper
@@ -75,15 +76,17 @@ local function AccordionHeaderVisual(props)
75
76
  return props.header.children
76
77
  end
77
78
  local _exp = React.createElement(Padding, {
78
- resolvedPadding = SpacingHelper:GetResolvedPadding(theme, {}, theme.components.accordion.header.spacing),
79
+ resolvedPadding = SpacingHelper:GetResolvedPadding(theme, props.header, theme.components.accordion.header.spacing, theme.components.accordion.header.padding),
79
80
  })
80
81
  local _exp_1 = props.header.icon ~= nil and React.createElement(Icon, {
82
+ name = "AccordionHeaderIcon",
81
83
  icon = props.header.icon,
82
84
  color = colors.textColor,
83
85
  })
84
86
  local _result_1
85
87
  if props.header.text ~= nil then
86
88
  _result_1 = React.createElement(Text, {
89
+ name = "AccordionHeaderText",
87
90
  text = props.header.text,
88
91
  TextColor3 = colors.textColor,
89
92
  typography = TypographyHelper:getTypography(theme, nil, colors.typography or theme.components.accordion.header.typography),
@@ -91,6 +94,7 @@ local function AccordionHeaderVisual(props)
91
94
  else
92
95
  local _children = props.header.children
93
96
  _result_1 = if type(_children) == "string" then React.createElement(Text, {
97
+ name = "AccordionHeaderText",
94
98
  text = props.header.children,
95
99
  TextColor3 = colors.textColor,
96
100
  typography = TypographyHelper:getTypography(theme, nil, colors.typography or theme.components.accordion.header.typography),
@@ -101,9 +105,13 @@ local function AccordionHeaderVisual(props)
101
105
  Wraps = false,
102
106
  HorizontalFlex = Enum.UIFlexAlignment.Fill,
103
107
  }, _exp_1, React.createElement(Container, {
108
+ name = "AccordionHeaderTextContainer",
104
109
  Size = UDim2.new(1, theme.components.accordion.header.indicatorSize, 0, 0),
105
110
  AutomaticSize = Enum.AutomaticSize.Y,
106
- }, _result_1), React.createElement(Container, nil, React.createElement(Icon, {
111
+ }, _result_1), React.createElement(Container, {
112
+ name = "AccordionChevronContainer",
113
+ }, React.createElement(Icon, {
114
+ name = "AccordionChevronIcon",
107
115
  icon = "chevron-down",
108
116
  color = if props.disabled then colors.textColor else theme.components.accordion.header.indicatorColor,
109
117
  Size = UDim2.fromOffset(theme.components.accordion.header.indicatorSize, theme.components.accordion.header.indicatorSize),
@@ -148,9 +156,13 @@ local function RenderedAccordionItem(props)
148
156
  local defaultColors = ColorHelper:getIntentColors(theme, "primary", if props.disabled then "disabled" else "default", theme.components.accordion.header.intents)
149
157
  local hoverColors = ColorHelper:getIntentColors(theme, "primary", "hover", theme.components.accordion.header.intents)
150
158
  local focusColors = ColorHelper:getIntentColors(theme, "primary", "focus", theme.components.accordion.header.intents)
159
+ local defaultBackgroundImage = CssHelper:resolveBackgroundImage(defaultColors.backgroundImage)
160
+ local hoverBackgroundImage = CssHelper:resolveBackgroundImage(hoverColors.backgroundImage)
161
+ local focusBackgroundImage = CssHelper:resolveBackgroundImage(focusColors.backgroundImage)
151
162
  local _condition = not props.first
152
163
  if _condition then
153
164
  local _attributes = {
165
+ key = "Divider",
154
166
  BackgroundColor3 = theme.components.accordion.borderColor,
155
167
  BackgroundTransparency = 0,
156
168
  BorderSizePixel = 0,
@@ -161,6 +173,7 @@ local function RenderedAccordionItem(props)
161
173
  _condition = (React.createElement("frame", _attributes))
162
174
  end
163
175
  local _attributes = {
176
+ name = `AccordionHeaderButton-{props.value}`,
164
177
  isSelected = props.open,
165
178
  }
166
179
  local _object = {
@@ -169,7 +182,6 @@ local function RenderedAccordionItem(props)
169
182
  AutoButtonColor = false,
170
183
  AutomaticSize = Enum.AutomaticSize.Y,
171
184
  Size = UDim2.fromScale(1, 0),
172
- ImageTransparency = 1,
173
185
  BackgroundColor3 = defaultColors.backgroundColor,
174
186
  }
175
187
  local _left = "BackgroundTransparency"
@@ -179,6 +191,13 @@ local function RenderedAccordionItem(props)
179
191
  end
180
192
  _object[_left] = _condition_1
181
193
  _object.BorderSizePixel = 0
194
+ _object.Image = defaultBackgroundImage.Image
195
+ _object.ImageColor3 = defaultBackgroundImage.ImageColor3
196
+ _object.ImageTransparency = defaultBackgroundImage.ImageTransparency
197
+ _object.ScaleType = defaultBackgroundImage.ScaleType
198
+ _object.SliceCenter = defaultBackgroundImage.SliceCenter
199
+ _object.SliceScale = defaultBackgroundImage.SliceScale
200
+ _object.TileSize = defaultBackgroundImage.TileSize
182
201
  _object.Event = {
183
202
  Activated = props.onActivate,
184
203
  }
@@ -192,6 +211,13 @@ local function RenderedAccordionItem(props)
192
211
  _condition_2 = 0
193
212
  end
194
213
  _object_1[_left_1] = _condition_2
214
+ _object_1.Image = hoverBackgroundImage.Image
215
+ _object_1.ImageColor3 = hoverBackgroundImage.ImageColor3
216
+ _object_1.ImageTransparency = hoverBackgroundImage.ImageTransparency
217
+ _object_1.ScaleType = hoverBackgroundImage.ScaleType
218
+ _object_1.SliceCenter = hoverBackgroundImage.SliceCenter
219
+ _object_1.SliceScale = hoverBackgroundImage.SliceScale
220
+ _object_1.TileSize = hoverBackgroundImage.TileSize
195
221
  _attributes.hover = _object_1
196
222
  local _object_2 = {
197
223
  BackgroundColor3 = focusColors.backgroundColor,
@@ -202,12 +228,21 @@ local function RenderedAccordionItem(props)
202
228
  _condition_3 = 0
203
229
  end
204
230
  _object_2[_left_2] = _condition_3
231
+ _object_2.Image = focusBackgroundImage.Image
232
+ _object_2.ImageColor3 = focusBackgroundImage.ImageColor3
233
+ _object_2.ImageTransparency = focusBackgroundImage.ImageTransparency
234
+ _object_2.ScaleType = focusBackgroundImage.ScaleType
235
+ _object_2.SliceCenter = focusBackgroundImage.SliceCenter
236
+ _object_2.SliceScale = focusBackgroundImage.SliceScale
237
+ _object_2.TileSize = focusBackgroundImage.TileSize
205
238
  _attributes.focus = _object_2
206
239
  return React.createElement(Container, {
240
+ name = `AccordionItem-{props.value}`,
207
241
  width = "100%",
208
242
  }, React.createElement(VStack, {
209
243
  spacing = "None",
210
244
  }, _condition, React.createElement(HoverButton, _attributes, props.first and (React.createElement("uicorner", {
245
+ key = "Corners",
211
246
  TopLeftRadius = SizeHelper:toUDim(theme.components.accordion.cornerRadius),
212
247
  TopRightRadius = SizeHelper:toUDim(theme.components.accordion.cornerRadius),
213
248
  BottomLeftRadius = UDim.new(0, 0),
@@ -218,6 +253,7 @@ local function RenderedAccordionItem(props)
218
253
  duration = props.duration,
219
254
  open = props.open,
220
255
  })), mounted and (React.createElement("frame", {
256
+ key = "ContentClip",
221
257
  BackgroundTransparency = 1,
222
258
  ClipsDescendants = true,
223
259
  Size = height:map(function(value)
@@ -226,6 +262,7 @@ local function RenderedAccordionItem(props)
226
262
  return _exp + _arg0
227
263
  end),
228
264
  }, React.createElement("frame", {
265
+ key = "Content",
229
266
  BackgroundColor3 = theme.components.accordion.content.backgroundColor,
230
267
  BackgroundTransparency = theme.components.accordion.content.backgroundTransparency,
231
268
  Size = UDim2.fromScale(1, 0),
@@ -244,8 +281,9 @@ local function RenderedAccordionItem(props)
244
281
  end,
245
282
  },
246
283
  }, React.createElement(Padding, {
247
- resolvedPadding = SpacingHelper:GetResolvedPadding(theme, {}, theme.components.accordion.content.spacing),
284
+ resolvedPadding = SpacingHelper:GetResolvedPadding(theme, props.contentProps, theme.components.accordion.content.spacing, theme.components.accordion.content.padding),
248
285
  }), if props.contentText ~= nil then React.createElement(Text, {
286
+ name = "AccordionContentText",
249
287
  text = props.contentText,
250
288
  }) else props.content)))))
251
289
  end
@@ -264,6 +302,7 @@ local Accordion = React.forwardRef(function(props, ref)
264
302
  return nil
265
303
  end
266
304
  local header
305
+ local contentProps
267
306
  local contentText
268
307
  local content
269
308
  React.Children.forEach(item.props.children, function(itemChild)
@@ -274,7 +313,7 @@ local Accordion = React.forwardRef(function(props, ref)
274
313
  header = itemChild.props
275
314
  end
276
315
  if itemChild.type == AccordionContent and content == nil then
277
- local contentProps = itemChild.props
316
+ contentProps = itemChild.props
278
317
  contentText = contentProps.text
279
318
  content = contentProps.children
280
319
  end
@@ -292,6 +331,7 @@ local Accordion = React.forwardRef(function(props, ref)
292
331
  end
293
332
  _object[_left] = _condition
294
333
  _object.header = header
334
+ _object.contentProps = contentProps or {}
295
335
  _object.contentText = contentText
296
336
  _object.content = content
297
337
  table.insert(parsed, _object)
@@ -380,10 +420,22 @@ local Accordion = React.forwardRef(function(props, ref)
380
420
  _result(nextValues[1])
381
421
  end
382
422
  end
423
+ local _attributes = {
424
+ ref = ref,
425
+ }
426
+ local _condition = props.name
427
+ if _condition == nil then
428
+ _condition = "Accordion"
429
+ end
430
+ _attributes.name = _condition
431
+ _attributes.width = "100%"
432
+ _attributes.height = "100%"
433
+ _attributes.ClipsDescendants = true
383
434
  local _exp = React.createElement(Corners, {
384
435
  radius = theme.components.accordion.cornerRadius,
385
436
  })
386
437
  local _exp_1 = React.createElement("uistroke", {
438
+ key = "Stroke",
387
439
  Color = theme.components.accordion.borderColor,
388
440
  Thickness = theme.components.accordion.borderThickness,
389
441
  BorderStrokePosition = Enum.BorderStrokePosition.Outer,
@@ -391,35 +443,30 @@ local Accordion = React.forwardRef(function(props, ref)
391
443
  -- ▼ ReadonlyArray.map ▼
392
444
  local _newValue_2 = table.create(#items)
393
445
  local _callback_2 = function(item, index)
394
- local _attributes = {
446
+ local _attributes_1 = {
395
447
  key = item.value,
396
448
  }
397
449
  for _k, _v in item do
398
- _attributes[_k] = _v
450
+ _attributes_1[_k] = _v
399
451
  end
400
- _attributes.first = index == 0
452
+ _attributes_1.first = index == 0
401
453
  local _value = item.value
402
- _attributes.open = table.find(openValues, _value) ~= nil
403
- local _condition = props.animationDuration
404
- if _condition == nil then
405
- _condition = theme.components.accordion.animation.duration
454
+ _attributes_1.open = table.find(openValues, _value) ~= nil
455
+ local _condition_1 = props.animationDuration
456
+ if _condition_1 == nil then
457
+ _condition_1 = theme.components.accordion.animation.duration
406
458
  end
407
- _attributes.duration = _condition
408
- _attributes.onActivate = function()
459
+ _attributes_1.duration = _condition_1
460
+ _attributes_1.onActivate = function()
409
461
  return activate(item)
410
462
  end
411
- return React.createElement(RenderedAccordionItem, _attributes)
463
+ return React.createElement(RenderedAccordionItem, _attributes_1)
412
464
  end
413
465
  for _k, _v in items do
414
466
  _newValue_2[_k] = _callback_2(_v, _k - 1, items)
415
467
  end
416
468
  -- ▲ ReadonlyArray.map ▲
417
- return React.createElement(Container, {
418
- ref = ref,
419
- width = "100%",
420
- height = "100%",
421
- ClipsDescendants = true,
422
- }, _exp, _exp_1, React.createElement(VStack, {
469
+ return React.createElement(Container, _attributes, _exp, _exp_1, React.createElement(VStack, {
423
470
  Padding = UDim.new(0, SpacingHelper:GetPadding(theme, props.scale, theme.components.accordion.spacing)),
424
471
  }, _newValue_2))
425
472
  end)
@@ -2,6 +2,7 @@ import React from "@rbxts/react";
2
2
  import { ResponsiveGridSpan } from "../../Interfaces/";
3
3
  interface ColumnProps {
4
4
  span?: ResponsiveGridSpan | number | `${number}`;
5
+ name?: string;
5
6
  }
6
7
  export declare const Column: React.ForwardRefExoticComponent<ColumnProps & React.RefAttributes<Frame>>;
7
8
  export {};
@@ -28,12 +28,17 @@ local Column = React.forwardRef(function(props, ref)
28
28
  local padding = context.padding
29
29
  local widthScale = fraction + ((fraction - 1) * padding.Scale)
30
30
  local widthOffset = (fraction - 1) * padding.Offset
31
- return React.createElement("frame", {
32
- ref = ref,
33
- Size = UDim2.new(widthScale, widthOffset, 0, 0),
34
- AutomaticSize = Enum.AutomaticSize.Y,
35
- BackgroundTransparency = 1,
36
- }, props.children)
31
+ local _attributes = {}
32
+ local _condition = props.name
33
+ if _condition == nil then
34
+ _condition = "Column"
35
+ end
36
+ _attributes.key = _condition
37
+ _attributes.ref = ref
38
+ _attributes.Size = UDim2.new(widthScale, widthOffset, 0, 0)
39
+ _attributes.AutomaticSize = Enum.AutomaticSize.Y
40
+ _attributes.BackgroundTransparency = 1
41
+ return React.createElement("frame", _attributes, props.children)
37
42
  end)
38
43
  return {
39
44
  Column = Column,
@@ -4,5 +4,6 @@ import { CssBackgroundImage } from "../../Theme";
4
4
  export interface ContainerProps extends SizeElementProps, PositionElementProps, ZIndexElementProps, React.InstanceProps<ImageLabel> {
5
5
  group?: boolean;
6
6
  backgroundImage?: Partial<CssBackgroundImage>;
7
+ name?: string;
7
8
  }
8
9
  export declare const Container: React.ForwardRefExoticComponent<Omit<ContainerProps, "ref"> & React.RefAttributes<ImageLabel>>;
@@ -13,20 +13,24 @@ local Container = React.forwardRef(function(props, ref)
13
13
  local isAutoSizeActive = autoSize ~= Enum.AutomaticSize.None and autoSize ~= "None"
14
14
  local centerViaLayout = props.center == true and props.Position == nil and props.AnchorPoint == nil and isAutoSizeActive
15
15
  local backgroundImage = CssHelper:resolveBackgroundImage(props.backgroundImage)
16
- local _attributes = {
17
- ref = ref,
18
- Archivable = props.Archivable,
19
- Tag = props.Tag,
20
- Active = props.Active,
21
- AnchorPoint = if centerViaLayout then Vector2.zero else SizeHelper:GetAnchor(props),
22
- AutomaticSize = autoSize,
23
- BackgroundColor3 = props.BackgroundColor3,
24
- }
25
- local _condition = props.BackgroundTransparency
16
+ local _attributes = {}
17
+ local _condition = props.name
26
18
  if _condition == nil then
27
- _condition = 1
19
+ _condition = "Container"
28
20
  end
29
- _attributes.BackgroundTransparency = _condition
21
+ _attributes.key = _condition
22
+ _attributes.ref = ref
23
+ _attributes.Archivable = props.Archivable
24
+ _attributes.Tag = props.Tag
25
+ _attributes.Active = props.Active
26
+ _attributes.AnchorPoint = if centerViaLayout then Vector2.zero else SizeHelper:GetAnchor(props)
27
+ _attributes.AutomaticSize = autoSize
28
+ _attributes.BackgroundColor3 = props.BackgroundColor3
29
+ local _condition_1 = props.BackgroundTransparency
30
+ if _condition_1 == nil then
31
+ _condition_1 = 1
32
+ end
33
+ _attributes.BackgroundTransparency = _condition_1
30
34
  _attributes.BorderColor3 = props.BorderColor3
31
35
  _attributes.BorderMode = props.BorderMode
32
36
  _attributes.BorderSizePixel = props.BorderSizePixel
@@ -53,11 +57,11 @@ local Container = React.forwardRef(function(props, ref)
53
57
  _result_1 = _result_1.X
54
58
  end
55
59
  end
56
- local _condition_1 = _result_1
57
- if _condition_1 == nil then
58
- _condition_1 = 0
60
+ local _condition_2 = _result_1
61
+ if _condition_2 == nil then
62
+ _condition_2 = 0
59
63
  end
60
- _result = _condition_1
64
+ _result = _condition_2
61
65
  else
62
66
  _result = 0
63
67
  end
@@ -83,11 +87,13 @@ local Container = React.forwardRef(function(props, ref)
83
87
  return content
84
88
  end
85
89
  return React.createElement("frame", {
90
+ key = if props.name ~= nil then `{props.name}CenterWrapper` else "ContainerCenterWrapper",
86
91
  Size = UDim2.fromScale(1, 1),
87
92
  BackgroundTransparency = 1,
88
93
  ZIndex = props.ZIndex,
89
94
  LayoutOrder = props.LayoutOrder,
90
95
  }, React.createElement("uilistlayout", {
96
+ key = "CenterLayout",
91
97
  FillDirection = Enum.FillDirection.Horizontal,
92
98
  HorizontalAlignment = Enum.HorizontalAlignment.Center,
93
99
  VerticalAlignment = Enum.VerticalAlignment.Center,
@@ -13,6 +13,23 @@ local OverlayConsumer = _Contexts.OverlayConsumer
13
13
  local createPortal = TS.import(script, TS.getModule(script, "@rbxts", "react-roblox")).createPortal
14
14
  local Corners = TS.import(script, script.Parent.Parent, "Decorator").Corners
15
15
  local CustomInputService = TS.import(script, script.Parent.Parent.Parent, "Helpers").CustomInputService
16
+ local function isInteractiveDescendantAtInput(handle, input)
17
+ local point = Vector2.new(input.Position.X, input.Position.Y)
18
+ local _exp = GuiHelper:getGuiObjectsAtPosition(handle, point)
19
+ -- ▼ ReadonlyArray.some ▼
20
+ local _result = false
21
+ local _callback = function(guiObject)
22
+ return guiObject ~= handle and guiObject:IsDescendantOf(handle) and (guiObject:IsA("GuiButton") or guiObject:IsA("TextBox"))
23
+ end
24
+ for _k, _v in _exp do
25
+ if _callback(_v, _k - 1, _exp) then
26
+ _result = true
27
+ break
28
+ end
29
+ end
30
+ -- ▲ ReadonlyArray.some ▲
31
+ return _result
32
+ end
16
33
  local function DragHandle(_param)
17
34
  local children = _param.children
18
35
  local draggable = React.useContext(DraggableContext)
@@ -53,7 +70,7 @@ local function DragHandle(_param)
53
70
  _result(instance, input)
54
71
  end
55
72
  end
56
- if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
73
+ if (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) and not isInteractiveDescendantAtInput(instance, input) then
57
74
  draggable.beginDrag(input, instance)
58
75
  end
59
76
  end
@@ -62,11 +79,16 @@ local function DragHandle(_param)
62
79
  end
63
80
  local function Placeholder(props)
64
81
  local theme = React.useContext(CleanThemeContext)
65
- local _attributes = table.clone(props)
66
- setmetatable(_attributes, nil)
82
+ local _attributes = {
83
+ key = "DraggablePlaceholder",
84
+ }
85
+ for _k, _v in props do
86
+ _attributes[_k] = _v
87
+ end
67
88
  _attributes.BackgroundTransparency = theme.components.draggable.placeholder.backgroundTransparency
68
89
  _attributes.BackgroundColor3 = theme.components.draggable.placeholder.backgroundColor
69
90
  return React.createElement("frame", _attributes, React.createElement("uistroke", {
91
+ key = "Stroke",
70
92
  Thickness = theme.components.draggable.placeholder.borderThickness,
71
93
  BorderStrokePosition = Enum.BorderStrokePosition.Inner,
72
94
  Color = theme.components.draggable.placeholder.borderColor,
@@ -10,6 +10,7 @@ interface FieldsetProps extends BreakPointElementProps {
10
10
  disabled?: boolean;
11
11
  checkbox?: boolean;
12
12
  wrap?: Breakpoint;
13
+ name?: string;
13
14
  }
14
15
  interface FieldsetSlotProps {
15
16
  children?: React.ReactNode;
@@ -16,6 +16,7 @@ local function FieldsetLabel(props)
16
16
  ShrinkRatio = 0,
17
17
  GrowRatio = 0,
18
18
  }, React.createElement("imagebutton", {
19
+ key = "FieldsetLabelButton",
19
20
  Size = UDim2.fromOffset(0, 0),
20
21
  BackgroundTransparency = 1,
21
22
  AutomaticSize = Enum.AutomaticSize.XY,
@@ -65,16 +66,21 @@ local Fieldset = React.forwardRef(function(props, ref)
65
66
  local breakpoints = props.breakpoints or theme.breakpoints
66
67
  local breakpoint = BreakpointHelper:getBreakpoint(width, breakpoints)
67
68
  local wrap = BreakpointHelper:compare(breakpoint, "<=", props.wrap or "lg")
69
+ local _attributes = {}
70
+ local _condition = props.name
71
+ if _condition == nil then
72
+ _condition = "Fieldset"
73
+ end
74
+ _attributes.name = _condition
75
+ _attributes.ref = ref
76
+ _attributes.Change = {
77
+ AbsoluteSize = function(instance)
78
+ setWidth(instance.AbsoluteSize.X)
79
+ end,
80
+ }
68
81
  return React.createElement(FieldsetContext.Provider, {
69
82
  value = fieldsetContext,
70
- }, React.createElement(Container, {
71
- ref = ref,
72
- Change = {
73
- AbsoluteSize = function(instance)
74
- setWidth(instance.AbsoluteSize.X)
75
- end,
76
- },
77
- }, React.createElement(HStack, {
83
+ }, React.createElement(Container, _attributes, React.createElement(HStack, {
78
84
  Wraps = wrap,
79
85
  valign = "Center",
80
86
  HorizontalFlex = Enum.UIFlexAlignment.Fill,
@@ -6,11 +6,18 @@ local FlexItem = React.forwardRef(function(props, ref)
6
6
  local _attributes = table.clone(props)
7
7
  setmetatable(_attributes, nil)
8
8
  _attributes.ref = ref
9
+ local _condition = props.name
10
+ if _condition == nil then
11
+ _condition = "FlexItem"
12
+ end
13
+ _attributes.name = _condition
9
14
  return React.createElement(Container, _attributes, React.createElement("uiflexitem", {
15
+ key = "FlexItemConstraint",
10
16
  FlexMode = props.mode or "Grow",
11
17
  GrowRatio = props.GrowRatio,
12
18
  ShrinkRatio = props.ShrinkRatio,
13
19
  }), React.createElement("uilistlayout", {
20
+ key = "FlexItemLayout",
14
21
  HorizontalFlex = props.HorizontalFlex,
15
22
  FillDirection = Enum.FillDirection.Horizontal,
16
23
  HorizontalAlignment = props.align,
@@ -11,6 +11,7 @@ interface GroupElementProps {
11
11
  enabled?: boolean;
12
12
  padding?: ResolvedPadding;
13
13
  children?: React.ReactNode;
14
+ name?: string;
14
15
  }
15
16
  declare function GroupElement(props: GroupElementProps): boolean | ReadonlyMap<React.Key, React.ReactNode> | {
16
17
  readonly [key: string]: React.ReactNode;
@@ -71,15 +71,20 @@ local function GroupElement(props)
71
71
  _condition_4 = 0
72
72
  end
73
73
  local verticalPadding = _condition_3 + _condition_4
74
- return React.createElement("frame", {
75
- BackgroundTransparency = 1,
76
- AutomaticSize = Enum.AutomaticSize.XY,
77
- Change = {
78
- AbsoluteSize = function(instance)
79
- context.reportSize(id, Vector2.new(instance.AbsoluteSize.X + horizontalPadding, instance.AbsoluteSize.Y + verticalPadding))
80
- end,
81
- },
82
- }, props.children)
74
+ local _attributes = {}
75
+ local _condition_5 = props.name
76
+ if _condition_5 == nil then
77
+ _condition_5 = "GroupElement"
78
+ end
79
+ _attributes.key = _condition_5
80
+ _attributes.BackgroundTransparency = 1
81
+ _attributes.AutomaticSize = Enum.AutomaticSize.XY
82
+ _attributes.Change = {
83
+ AbsoluteSize = function(instance)
84
+ context.reportSize(id, Vector2.new(instance.AbsoluteSize.X + horizontalPadding, instance.AbsoluteSize.Y + verticalPadding))
85
+ end,
86
+ }
87
+ return React.createElement("frame", _attributes, props.children)
83
88
  end
84
89
  local function getMaxVector2(map)
85
90
  local max