@rbxts/react-clean-ui 1.0.36 → 1.1.0

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 (91) hide show
  1. package/out/Components/Decorator/Corners.luau +5 -1
  2. package/out/Components/Decorator/Padding.luau +1 -1
  3. package/out/Components/Input/Button.d.ts +9 -0
  4. package/out/Components/Input/Button.luau +155 -46
  5. package/out/Components/Input/Checkbox.luau +22 -6
  6. package/out/Components/Input/Increment.d.ts +11 -0
  7. package/out/Components/Input/Increment.luau +107 -0
  8. package/out/Components/Input/Increment.step.d.ts +1 -0
  9. package/out/Components/Input/Increment.step.luau +25 -0
  10. package/out/Components/Input/Input.d.ts +4 -3
  11. package/out/Components/Input/Input.luau +115 -18
  12. package/out/Components/Input/Input.validation.d.ts +4 -0
  13. package/out/Components/Input/Input.validation.luau +42 -0
  14. package/out/Components/Input/Select.d.ts +4 -3
  15. package/out/Components/Input/Select.luau +23 -18
  16. package/out/Components/Input/Slider.d.ts +1 -1
  17. package/out/Components/Input/Slider.luau +68 -34
  18. package/out/Components/Input/index.d.ts +1 -0
  19. package/out/Components/Input/init.luau +3 -0
  20. package/out/Components/Layout/Accordion.d.ts +4 -4
  21. package/out/Components/Layout/Accordion.luau +75 -23
  22. package/out/Components/Layout/Container.d.ts +4 -2
  23. package/out/Components/Layout/Container.luau +12 -3
  24. package/out/Components/Layout/Draggable.luau +1 -1
  25. package/out/Components/Layout/Fieldset.d.ts +1 -1
  26. package/out/Components/Layout/Fieldset.luau +40 -6
  27. package/out/Components/Layout/FlexItem.d.ts +2 -1
  28. package/out/Components/Layout/FlexItem.luau +1 -0
  29. package/out/Components/Layout/Group.luau +30 -8
  30. package/out/Components/Layout/HStack.luau +1 -0
  31. package/out/Components/Layout/Row.luau +43 -9
  32. package/out/Components/Layout/Scroller.d.ts +1 -0
  33. package/out/Components/Layout/Scroller.luau +20 -5
  34. package/out/Components/Layout/Tabs.d.ts +5 -3
  35. package/out/Components/Layout/Tabs.luau +48 -16
  36. package/out/Components/Navigation/Menu.d.ts +1 -1
  37. package/out/Components/Navigation/Menu.luau +2 -0
  38. package/out/Components/Surface/Box.d.ts +4 -2
  39. package/out/Components/Surface/Box.luau +25 -22
  40. package/out/Components/Surface/Card.d.ts +12 -6
  41. package/out/Components/Surface/Card.luau +456 -26
  42. package/out/Components/Surface/Icon.luau +42 -4
  43. package/out/Components/Typography/Text.d.ts +1 -0
  44. package/out/Components/Typography/Text.luau +119 -10
  45. package/out/Contexts/row.context.d.ts +1 -1
  46. package/out/Contexts/theme.context.d.ts +2 -2
  47. package/out/Helpers/color.helper.d.ts +5 -3
  48. package/out/Helpers/color.helper.luau +62 -34
  49. package/out/Helpers/create-ui-story.d.ts +2 -2
  50. package/out/Helpers/create-ui-story.luau +33 -1
  51. package/out/Helpers/css.helper.d.ts +28 -2
  52. package/out/Helpers/css.helper.luau +208 -0
  53. package/out/Helpers/index.d.ts +1 -0
  54. package/out/Helpers/init.luau +3 -0
  55. package/out/Helpers/size.helper.d.ts +3 -1
  56. package/out/Helpers/size.helper.luau +10 -9
  57. package/out/Helpers/spacing.helper.d.ts +5 -4
  58. package/out/Helpers/spacing.helper.luau +102 -18
  59. package/out/Helpers/typography.helper.d.ts +2 -2
  60. package/out/Interfaces/css.types.d.ts +30 -0
  61. package/out/Interfaces/css.types.luau +21 -0
  62. package/out/Interfaces/element.props.d.ts +61 -0
  63. package/out/Interfaces/element.props.luau +1 -0
  64. package/out/Interfaces/index.d.ts +5 -3
  65. package/out/Interfaces/init.luau +1 -7
  66. package/out/Interfaces/responsive.types.d.ts +26 -0
  67. package/out/Interfaces/semantics.d.ts +3 -0
  68. package/out/Interfaces/semantics.luau +2 -0
  69. package/out/Providers/app.provider.d.ts +2 -2
  70. package/out/Providers/theme.provider.d.ts +2 -2
  71. package/out/Theme/index.d.ts +1 -0
  72. package/out/Theme/theme.factory.d.ts +3 -3
  73. package/out/Theme/theme.style.d.ts +48 -0
  74. package/out/Theme/theme.style.luau +1 -0
  75. package/out/Theme/theme.template.d.ts +34 -26
  76. package/out/Theme/themes/dark.theme.d.ts +1 -1
  77. package/out/Theme/themes/dark.theme.luau +28 -0
  78. package/out/Theme/themes/default.theme.d.ts +2 -2
  79. package/out/Theme/themes/default.theme.luau +11 -1
  80. package/out/Theme/themes/index.d.ts +1 -0
  81. package/out/Theme/themes/init.luau +3 -0
  82. package/out/Theme/themes/sandstone.theme.d.ts +1 -1
  83. package/out/Theme/themes/sandstone.theme.luau +25 -0
  84. package/out/Theme/themes/wooden.theme.d.ts +1 -0
  85. package/out/Theme/themes/wooden.theme.luau +554 -0
  86. package/out/index.d.ts +8 -8
  87. package/package.json +19 -7
  88. package/out/Interfaces/clean.element.props.d.ts +0 -114
  89. /package/out/{Interfaces/userinput.d.ts → Helpers/input.helper.d.ts} +0 -0
  90. /package/out/{Interfaces/userinput.luau → Helpers/input.helper.luau} +0 -0
  91. /package/out/Interfaces/{clean.element.props.luau → responsive.types.luau} +0 -0
@@ -12,6 +12,7 @@ local Corners = _Decorator.Corners
12
12
  local Padding = _Decorator.Padding
13
13
  local _Helpers = TS.import(script, script.Parent.Parent.Parent, "Helpers")
14
14
  local ColorHelper = _Helpers.ColorHelper
15
+ local CssHelper = _Helpers.CssHelper
15
16
  local SpacingHelper = _Helpers.SpacingHelper
16
17
  local TypographyHelper = _Helpers.TypographyHelper
17
18
  local _HoverButton = TS.import(script, script.Parent.Parent, "Input", "HoverButton")
@@ -45,9 +46,9 @@ local function TabButtonContent(props)
45
46
  end
46
47
  local intent = ColorHelper:getIntentColors(theme, "primary", _result_1, theme.components.tabs.button.intents)
47
48
  return React.createElement(React.Fragment, nil, React.createElement(Corners, {
48
- radius = theme.components.tabs.button.cornerRadius,
49
+ radius = theme.components.tabs.list.cornerRadius,
49
50
  }), React.createElement(Padding, {
50
- resolvedPadding = SpacingHelper:GetResolvedPadding(theme, {}, theme.components.tabs.button.spacing),
51
+ resolvedPadding = SpacingHelper:GetResolvedPadding(theme, props, theme.components.tabs.button.spacing, theme.components.tabs.button.padding),
51
52
  }), React.createElement(BoxShadow, {
52
53
  value = intent.boxShadow,
53
54
  }), React.createElement(Text, {
@@ -98,25 +99,47 @@ local Tabs = React.forwardRef(function(props, ref)
98
99
  local buttonDefault = ColorHelper:getIntentColors(theme, "primary", "default", theme.components.tabs.button.intents)
99
100
  local buttonHover = ColorHelper:getIntentColors(theme, "primary", "hover", theme.components.tabs.button.intents)
100
101
  local buttonFocus = ColorHelper:getIntentColors(theme, "primary", "focus", theme.components.tabs.button.intents)
102
+ local buttonDefaultBackgroundImage = CssHelper:resolveBackgroundImage(buttonDefault.backgroundImage)
103
+ local buttonHoverBackgroundImage = CssHelper:resolveBackgroundImage(buttonHover.backgroundImage)
104
+ local buttonFocusBackgroundImage = CssHelper:resolveBackgroundImage(buttonFocus.backgroundImage)
105
+ local _attributes = {
106
+ ref = ref,
107
+ BackgroundColor3 = theme.components.tabs.list.backgroundColor,
108
+ width = "100%",
109
+ }
110
+ local _condition = theme.components.tabs.list.backgroundTransparency
111
+ if _condition == nil then
112
+ _condition = 0
113
+ end
114
+ _attributes.BackgroundTransparency = _condition
115
+ _attributes.backgroundImage = theme.components.tabs.list.backgroundImage
101
116
  local _exp = React.createElement(Corners, {
102
117
  radius = theme.components.tabs.list.cornerRadius,
103
118
  })
104
119
  local _exp_1 = React.createElement(Padding, {
105
- resolvedPadding = SpacingHelper:GetResolvedPadding(theme, {}, theme.components.tabs.list.spacing),
120
+ resolvedPadding = SpacingHelper:GetResolvedPadding(theme, {}, theme.components.tabs.list.spacing, theme.components.tabs.list.padding),
106
121
  })
107
122
  -- ▼ ReadonlyArray.map ▼
108
123
  local _newValue = table.create(#tabs)
109
124
  local _callback = function(tab, index)
125
+ local _attributes_1 = table.clone(tab.title)
126
+ setmetatable(_attributes_1, nil)
110
127
  return React.createElement(HoverButton, {
111
128
  isSelected = selected == index,
112
129
  default = {
113
130
  Size = UDim2.fromScale(0, 0),
114
131
  AutomaticSize = Enum.AutomaticSize.XY,
115
- ImageTransparency = 1,
116
132
  BackgroundColor3 = buttonDefault.backgroundColor,
117
133
  BackgroundTransparency = buttonDefault.backgroundTransparency,
118
134
  BorderSizePixel = 0,
119
135
  AutoButtonColor = false,
136
+ Image = buttonDefaultBackgroundImage.Image,
137
+ ImageColor3 = buttonDefaultBackgroundImage.ImageColor3,
138
+ ImageTransparency = buttonDefaultBackgroundImage.ImageTransparency,
139
+ ScaleType = buttonDefaultBackgroundImage.ScaleType,
140
+ SliceCenter = buttonDefaultBackgroundImage.SliceCenter,
141
+ SliceScale = buttonDefaultBackgroundImage.SliceScale,
142
+ TileSize = buttonDefaultBackgroundImage.TileSize,
120
143
  Event = {
121
144
  Activated = function()
122
145
  setSelected(index)
@@ -126,41 +149,50 @@ local Tabs = React.forwardRef(function(props, ref)
126
149
  hover = {
127
150
  BackgroundColor3 = buttonHover.backgroundColor,
128
151
  BackgroundTransparency = buttonHover.backgroundTransparency,
152
+ Image = buttonHoverBackgroundImage.Image,
153
+ ImageColor3 = buttonHoverBackgroundImage.ImageColor3,
154
+ ImageTransparency = buttonHoverBackgroundImage.ImageTransparency,
155
+ ScaleType = buttonHoverBackgroundImage.ScaleType,
156
+ SliceCenter = buttonHoverBackgroundImage.SliceCenter,
157
+ SliceScale = buttonHoverBackgroundImage.SliceScale,
158
+ TileSize = buttonHoverBackgroundImage.TileSize,
129
159
  },
130
160
  focus = {
131
161
  BackgroundColor3 = buttonFocus.backgroundColor,
132
162
  BackgroundTransparency = buttonFocus.backgroundTransparency,
163
+ Image = buttonFocusBackgroundImage.Image,
164
+ ImageColor3 = buttonFocusBackgroundImage.ImageColor3,
165
+ ImageTransparency = buttonFocusBackgroundImage.ImageTransparency,
166
+ ScaleType = buttonFocusBackgroundImage.ScaleType,
167
+ SliceCenter = buttonFocusBackgroundImage.SliceCenter,
168
+ SliceScale = buttonFocusBackgroundImage.SliceScale,
169
+ TileSize = buttonFocusBackgroundImage.TileSize,
133
170
  },
134
- }, React.createElement(TabButtonContent, {
135
- text = tab.title.text,
136
- }))
171
+ }, React.createElement(TabButtonContent, _attributes_1))
137
172
  end
138
173
  for _k, _v in tabs do
139
174
  _newValue[_k] = _callback(_v, _k - 1, tabs)
140
175
  end
141
176
  -- ▲ ReadonlyArray.map ▲
142
- local _exp_2 = React.createElement(Container, {
143
- ref = ref,
144
- BackgroundColor3 = theme.components.tabs.list.backgroundColor,
145
- width = "100%",
146
- BackgroundTransparency = 0,
147
- }, _exp, _exp_1, React.createElement(HStack, nil, _newValue))
177
+ local _exp_2 = React.createElement(Container, _attributes, _exp, _exp_1, React.createElement(HStack, nil, _newValue))
148
178
  local _exp_3 = React.createElement("uistroke", {
149
179
  Thickness = theme.components.tabs.borderThickness,
150
180
  BorderStrokePosition = Enum.BorderStrokePosition.Inner,
151
181
  Color = theme.components.tabs.borderColor,
152
182
  })
153
183
  local _exp_4 = React.createElement(Padding, {
154
- resolvedPadding = SpacingHelper:GetResolvedPadding(theme, {}, theme.components.tabs.spacing),
184
+ resolvedPadding = SpacingHelper:GetResolvedPadding(theme, {}, theme.components.tabs.spacing, theme.components.tabs.padding),
155
185
  })
156
186
  local _exp_5 = React.createElement(Corners, {
157
- radius = theme.components.tabs.list.cornerRadius,
187
+ radius = theme.components.tabs.cornerRadius,
158
188
  })
159
189
  local _result = selectedTab
160
190
  if _result ~= nil then
161
191
  _result = _result.content
162
192
  end
163
- return React.createElement(VStack, nil, _exp_2, React.createElement(Container, nil, _exp_3, _exp_4, _exp_5, _result))
193
+ return React.createElement(VStack, nil, _exp_2, React.createElement(Container, {
194
+ backgroundImage = props.backgroundImage or theme.components.tabs.backgroundImage,
195
+ }, _exp_3, _exp_4, _exp_5, _result))
164
196
  end)
165
197
  Tabs.Title = TabTitle
166
198
  Tabs.Tab = Tab
@@ -8,7 +8,7 @@ interface MenuProps {
8
8
  title: string;
9
9
  collapsed?: boolean;
10
10
  }
11
- type MenuComponent = React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<Frame>> & {
11
+ type MenuComponent = React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<ImageLabel>> & {
12
12
  Item: typeof MenuItem;
13
13
  };
14
14
  declare const Menu: MenuComponent;
@@ -40,6 +40,7 @@ local Menu = React.forwardRef(function(props, ref)
40
40
  valign = "Center",
41
41
  }, React.createElement(Button, {
42
42
  icon = "bars",
43
+ LayoutOrder = 1,
43
44
  Event = {
44
45
  Activated = function()
45
46
  setCollapsed(not collapsed)
@@ -48,6 +49,7 @@ local Menu = React.forwardRef(function(props, ref)
48
49
  }), not collapsed and React.createElement(Text, {
49
50
  text = props.title,
50
51
  variant = "heading",
52
+ LayoutOrder = 2,
51
53
  }))), React.createElement(FlexItem, {
52
54
  mode = "Fill",
53
55
  }, React.createElement(Scroller, {
@@ -1,7 +1,9 @@
1
1
  import React from "@rbxts/react";
2
2
  import { BackgroundElementProps, PositionElementProps, ShadowElementProps, SizeElementProps, SpacedElementProps, ZIndexElementProps } from "../../Interfaces/";
3
- export interface BoxProps extends SpacedElementProps, ShadowElementProps, BackgroundElementProps, ZIndexElementProps, SizeElementProps, PositionElementProps, React.InstanceProps<Frame> {
3
+ import { CssBackgroundImage } from "../../Theme";
4
+ export interface BoxProps extends SpacedElementProps, ShadowElementProps, BackgroundElementProps, ZIndexElementProps, SizeElementProps, PositionElementProps, React.InstanceProps<ImageLabel> {
4
5
  'border-thickness'?: number;
5
6
  'border-color'?: Color3;
7
+ 'background-image'?: CssBackgroundImage;
6
8
  }
7
- export declare const Box: React.ForwardRefExoticComponent<Omit<BoxProps, "ref"> & React.RefAttributes<Frame>>;
9
+ export declare const Box: React.ForwardRefExoticComponent<Omit<BoxProps, "ref"> & React.RefAttributes<ImageLabel>>;
@@ -7,9 +7,16 @@ local Padding = _Decorator.Padding
7
7
  local Corners = _Decorator.Corners
8
8
  local BoxShadow = _Decorator.BoxShadow
9
9
  local Container = TS.import(script, script.Parent.Parent, "Layout").Container
10
- local SizeHelper = TS.import(script, script.Parent.Parent.Parent, "Helpers").SizeHelper
10
+ local _Helpers = TS.import(script, script.Parent.Parent.Parent, "Helpers")
11
+ local SizeHelper = _Helpers.SizeHelper
12
+ local SpacingHelper = _Helpers.SpacingHelper
11
13
  local Box = React.forwardRef(function(props, ref)
12
14
  local theme = React.useContext(CleanThemeContext)
15
+ local _condition = props["border-thickness"]
16
+ if _condition == nil then
17
+ _condition = theme.components.box.borderThickness
18
+ end
19
+ local borderThickness = _condition
13
20
  local _attributes = {
14
21
  ref = ref,
15
22
  }
@@ -17,31 +24,27 @@ local Box = React.forwardRef(function(props, ref)
17
24
  _attributes[_k] = _v
18
25
  end
19
26
  _attributes.Size = SizeHelper:GetSize(props, UDim2.fromScale(1, 1))
20
- _attributes.AutomaticSize = Enum.AutomaticSize.XY
21
- local _condition = props.BackgroundTransparency
22
- if _condition == nil then
23
- _condition = theme.components.box.backgroundTransparency
27
+ _attributes.AutomaticSize = SizeHelper:GetAutoSize(props)
28
+ local _condition_1 = props.BackgroundTransparency
29
+ if _condition_1 == nil then
30
+ _condition_1 = theme.components.box.backgroundTransparency
24
31
  end
25
- _attributes.BackgroundTransparency = _condition
32
+ _attributes.BackgroundTransparency = _condition_1
26
33
  _attributes.BackgroundColor3 = props.BackgroundColor3 or theme.components.box.backgroundColor
27
34
  _attributes.ZIndex = props.ZIndex
28
35
  _attributes.Event = props.Event
29
- local _attributes_1 = {}
30
- local _condition_1 = props["border-thickness"]
31
- if _condition_1 == nil then
32
- _condition_1 = theme.components.box.borderThickness
33
- end
34
- _attributes_1.Thickness = _condition_1
35
- _attributes_1.BorderStrokePosition = Enum.BorderStrokePosition.Inner
36
- _attributes_1.Color = props["border-color"] or theme.components.box.borderColor
37
- local _exp = React.createElement("uistroke", _attributes_1)
38
- local _attributes_2 = table.clone(props)
39
- setmetatable(_attributes_2, nil)
40
- _attributes_2.value = theme.components.box.boxShadow
41
- local _exp_1 = React.createElement(BoxShadow, _attributes_2)
42
- local _attributes_3 = table.clone(props)
43
- setmetatable(_attributes_3, nil)
44
- return React.createElement(Container, _attributes, _exp, _exp_1, React.createElement(Padding, _attributes_3), React.createElement(Corners, {
36
+ _attributes.backgroundImage = props["background-image"] or theme.components.box.backgroundImage
37
+ local _exp = borderThickness > 0 and (React.createElement("uistroke", {
38
+ Thickness = borderThickness,
39
+ BorderStrokePosition = Enum.BorderStrokePosition.Inner,
40
+ Color = props["border-color"] or theme.components.box.borderColor,
41
+ }))
42
+ local _attributes_1 = table.clone(props)
43
+ setmetatable(_attributes_1, nil)
44
+ _attributes_1.value = theme.components.box.boxShadow
45
+ return React.createElement(Container, _attributes, _exp, React.createElement(BoxShadow, _attributes_1), React.createElement(Padding, {
46
+ resolvedPadding = SpacingHelper:GetResolvedPadding(theme, props, theme.components.box.spacing, theme.components.box.padding),
47
+ }), React.createElement(Corners, {
45
48
  radius = theme.components.box.cornerRadius,
46
49
  }), props.children)
47
50
  end)
@@ -1,19 +1,25 @@
1
1
  import React from "@rbxts/react";
2
2
  import { BoxProps } from "./Box";
3
- import { IntentElementProps } from "../../Interfaces";
4
- interface CardHeaderProps extends IntentElementProps {
3
+ import { CssPadding, IntentElementProps, PositionElementProps, ResolvedPadding, SpacedElementProps, ZIndexElementProps } from "../../Interfaces";
4
+ interface CardHeaderProps extends IntentElementProps, PositionElementProps, ZIndexElementProps, SpacedElementProps {
5
5
  children?: React.ReactNode;
6
+ overlay?: boolean;
7
+ padding?: CssPadding;
8
+ resolvedPadding?: ResolvedPadding;
6
9
  }
7
- export declare const CardHeader: React.ForwardRefExoticComponent<CardHeaderProps & React.RefAttributes<Frame>>;
10
+ export declare const CardHeader: React.ForwardRefExoticComponent<CardHeaderProps & React.RefAttributes<ImageLabel>>;
8
11
  interface CardBodyProps extends BoxProps {
9
12
  }
10
- export declare const CardBody: React.ForwardRefExoticComponent<Omit<CardBodyProps, "ref"> & React.RefAttributes<Frame>>;
13
+ export declare const CardBody: React.ForwardRefExoticComponent<Omit<CardBodyProps, "ref"> & React.RefAttributes<ImageLabel>>;
11
14
  interface CardFooterProps extends BoxProps, IntentElementProps {
15
+ overlay?: boolean;
16
+ padding?: CssPadding;
17
+ resolvedPadding?: ResolvedPadding;
12
18
  }
13
- export declare const CardFooter: React.ForwardRefExoticComponent<Omit<CardFooterProps, "ref"> & React.RefAttributes<Frame>>;
19
+ export declare const CardFooter: React.ForwardRefExoticComponent<Omit<CardFooterProps, "ref"> & React.RefAttributes<ImageLabel>>;
14
20
  interface CardProps extends BoxProps, IntentElementProps {
15
21
  }
16
- type CardComponent = React.ForwardRefExoticComponent<CardProps & React.RefAttributes<Frame>> & {
22
+ type CardComponent = React.ForwardRefExoticComponent<CardProps & React.RefAttributes<ImageLabel>> & {
17
23
  Header: typeof CardHeader;
18
24
  Footer: typeof CardFooter;
19
25
  Body: typeof CardBody;