@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.
- package/out/Components/Chart/BarChart.d.ts +1 -0
- package/out/Components/Chart/BarChart.luau +149 -112
- package/out/Components/Chart/Pie.d.ts +1 -0
- package/out/Components/Chart/Pie.luau +21 -5
- package/out/Components/Decorator/BoxShadow.d.ts +1 -0
- package/out/Components/Decorator/BoxShadow.luau +12 -5
- package/out/Components/Decorator/Corners.d.ts +1 -0
- package/out/Components/Decorator/Corners.luau +12 -3
- package/out/Components/Decorator/Padding.d.ts +3 -1
- package/out/Components/Decorator/Padding.luau +12 -7
- package/out/Components/Input/Button.d.ts +1 -0
- package/out/Components/Input/Button.luau +44 -33
- package/out/Components/Input/Checkbox.d.ts +1 -0
- package/out/Components/Input/Checkbox.luau +23 -17
- package/out/Components/Input/HoverButton.d.ts +1 -0
- package/out/Components/Input/HoverButton.luau +44 -40
- package/out/Components/Input/Increment.d.ts +1 -0
- package/out/Components/Input/Increment.luau +10 -3
- package/out/Components/Input/Input.d.ts +3 -1
- package/out/Components/Input/Input.luau +96 -87
- package/out/Components/Input/Input.validation.d.ts +1 -0
- package/out/Components/Input/Input.validation.luau +21 -0
- package/out/Components/Input/Select.d.ts +9 -0
- package/out/Components/Input/Select.luau +311 -34
- package/out/Components/Input/Slider.luau +44 -29
- package/out/Components/Input/Switch.d.ts +9 -0
- package/out/Components/Input/Switch.luau +147 -0
- package/out/Components/Input/index.d.ts +1 -0
- package/out/Components/Input/init.luau +3 -0
- package/out/Components/Interaction/Modal.d.ts +14 -0
- package/out/Components/Interaction/Modal.luau +276 -0
- package/out/Components/Interaction/Toast.d.ts +2 -1
- package/out/Components/Interaction/Toast.luau +53 -28
- package/out/Components/Interaction/Tooltip.luau +36 -24
- package/out/Components/Interaction/index.d.ts +1 -0
- package/out/Components/Interaction/init.luau +3 -0
- package/out/Components/Layout/Accordion.d.ts +4 -3
- package/out/Components/Layout/Accordion.luau +68 -21
- package/out/Components/Layout/Column.d.ts +1 -0
- package/out/Components/Layout/Column.luau +11 -6
- package/out/Components/Layout/Container.d.ts +1 -0
- package/out/Components/Layout/Container.luau +22 -16
- package/out/Components/Layout/Draggable.luau +25 -3
- package/out/Components/Layout/Fieldset.d.ts +1 -0
- package/out/Components/Layout/Fieldset.luau +14 -8
- package/out/Components/Layout/FlexItem.luau +7 -0
- package/out/Components/Layout/Group.d.ts +1 -0
- package/out/Components/Layout/Group.luau +14 -9
- package/out/Components/Layout/HStack.d.ts +4 -0
- package/out/Components/Layout/HStack.luau +17 -9
- package/out/Components/Layout/Pagination.d.ts +32 -0
- package/out/Components/Layout/Pagination.luau +405 -0
- package/out/Components/Layout/Row.d.ts +1 -0
- package/out/Components/Layout/Row.luau +22 -16
- package/out/Components/Layout/Scroller.d.ts +1 -0
- package/out/Components/Layout/Scroller.luau +22 -15
- package/out/Components/Layout/Table.d.ts +31 -0
- package/out/Components/Layout/Table.luau +342 -0
- package/out/Components/Layout/Tabs.d.ts +22 -11
- package/out/Components/Layout/Tabs.luau +139 -122
- package/out/Components/Layout/VStack.d.ts +3 -0
- package/out/Components/Layout/VStack.luau +17 -10
- package/out/Components/Layout/index.d.ts +2 -0
- package/out/Components/Layout/init.luau +6 -0
- package/out/Components/Navigation/Menu.d.ts +1 -0
- package/out/Components/Navigation/Menu.luau +14 -3
- package/out/Components/Surface/Box.d.ts +1 -0
- package/out/Components/Surface/Box.luau +29 -27
- package/out/Components/Surface/Card.d.ts +7 -2
- package/out/Components/Surface/Card.luau +106 -65
- package/out/Components/Surface/Icon.d.ts +1 -0
- package/out/Components/Surface/Icon.luau +25 -16
- package/out/Components/Typography/Text.d.ts +1 -0
- package/out/Components/Typography/Text.luau +57 -47
- package/out/Contexts/index.d.ts +1 -0
- package/out/Contexts/init.luau +3 -0
- package/out/Contexts/modal.context.d.ts +15 -0
- package/out/Contexts/modal.context.luau +26 -0
- package/out/Contexts/toast.context.d.ts +1 -0
- package/out/Helpers/spacing.helper.d.ts +3 -2
- package/out/Helpers/spacing.helper.luau +102 -18
- package/out/Interfaces/css.types.d.ts +2 -0
- package/out/Interfaces/css.types.luau +4 -0
- package/out/Interfaces/index.d.ts +4 -4
- package/out/Interfaces/init.luau +0 -12
- package/out/Providers/app.provider.luau +2 -1
- package/out/Providers/index.d.ts +1 -0
- package/out/Providers/init.luau +3 -0
- package/out/Providers/modal.provider.d.ts +6 -0
- package/out/Providers/modal.provider.luau +86 -0
- package/out/Providers/overlay.provider.luau +1 -0
- package/out/Theme/theme.template.d.ts +99 -3
- package/out/Theme/themes/dark.theme.luau +103 -0
- package/out/Theme/themes/default.theme.luau +130 -0
- package/out/Theme/themes/sandstone.theme.luau +103 -0
- package/out/Theme/themes/wooden.theme.luau +235 -2
- package/package.json +2 -2
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
-- Compiled with roblox-ts v3.0.0
|
|
2
|
+
local TS = _G[script]
|
|
3
|
+
local CssHelper = TS.import(script, script.Parent, "css.helper").CssHelper
|
|
2
4
|
local SpacingHelper
|
|
3
5
|
do
|
|
4
6
|
SpacingHelper = setmetatable({}, {
|
|
@@ -13,35 +15,117 @@ do
|
|
|
13
15
|
end
|
|
14
16
|
function SpacingHelper:constructor()
|
|
15
17
|
end
|
|
16
|
-
function SpacingHelper:GetResolvedPadding(theme, props, component)
|
|
17
|
-
local amount = self:GetPadding(theme, props.spacing, component)
|
|
18
|
-
return {
|
|
19
|
-
top = if props.top then self:GetPadding(theme, props.top) else amount,
|
|
20
|
-
bottom = if props.bottom then self:GetPadding(theme, props.bottom) else amount,
|
|
21
|
-
left = if props.left then self:GetPadding(theme, props.left) else amount,
|
|
22
|
-
right = if props.right then self:GetPadding(theme, props.right) else amount,
|
|
23
|
-
}
|
|
24
|
-
end
|
|
25
18
|
function SpacingHelper:GetPadding(theme, spacing, component)
|
|
26
19
|
if spacing == "None" then
|
|
27
20
|
return 0
|
|
28
21
|
end
|
|
29
|
-
local
|
|
30
|
-
local _result
|
|
31
|
-
if
|
|
32
|
-
|
|
22
|
+
local key = spacing or theme.default.spacing
|
|
23
|
+
local _result = component
|
|
24
|
+
if _result ~= nil then
|
|
25
|
+
_result = _result[key]
|
|
26
|
+
end
|
|
27
|
+
local _condition = _result
|
|
28
|
+
if _condition == nil then
|
|
29
|
+
_condition = theme.spacing[key]
|
|
33
30
|
if _condition == nil then
|
|
34
31
|
_condition = 0
|
|
35
32
|
end
|
|
36
|
-
|
|
33
|
+
end
|
|
34
|
+
return _condition
|
|
35
|
+
end
|
|
36
|
+
function SpacingHelper:GetResolvedPadding(theme, props, componentSpacing, componentPadding, defaultSpacing)
|
|
37
|
+
if props.resolvedPadding ~= nil then
|
|
38
|
+
return props.resolvedPadding
|
|
39
|
+
end
|
|
40
|
+
local isNone = props.spacing == "None"
|
|
41
|
+
local key = if props.spacing ~= nil and props.spacing ~= "None" then props.spacing else (defaultSpacing or theme.default.spacing)
|
|
42
|
+
-- tier 3: a scale-indexed map picks the quad for the active key
|
|
43
|
+
-- (falling through to tiers 1/2 if that key isn't defined in the
|
|
44
|
+
-- map); a plain quad applies regardless of key.
|
|
45
|
+
local _result
|
|
46
|
+
if isNone or componentPadding == nil then
|
|
47
|
+
_result = nil
|
|
48
|
+
else
|
|
49
|
+
local _componentPadding = componentPadding
|
|
50
|
+
_result = if type(_componentPadding) == "table" then componentPadding[key] else componentPadding
|
|
51
|
+
end
|
|
52
|
+
local quadForKey = _result
|
|
53
|
+
local base = if quadForKey ~= nil then CssHelper:parseCssQuad(quadForKey) else self:ResolveNumberPadding(if isNone then 0 else self:GetPadding(theme, key, componentSpacing))
|
|
54
|
+
local instanceQuad = if props.padding ~= nil then CssHelper:parseCssQuad(props.padding) else nil
|
|
55
|
+
local _object = {}
|
|
56
|
+
local _left = "top"
|
|
57
|
+
local _result_1
|
|
58
|
+
if props.top ~= nil then
|
|
59
|
+
_result_1 = self:GetPadding(theme, props.top, componentSpacing)
|
|
37
60
|
else
|
|
38
|
-
local
|
|
61
|
+
local _result_2 = instanceQuad
|
|
62
|
+
if _result_2 ~= nil then
|
|
63
|
+
_result_2 = _result_2.top
|
|
64
|
+
end
|
|
65
|
+
local _condition = _result_2
|
|
39
66
|
if _condition == nil then
|
|
40
|
-
_condition =
|
|
67
|
+
_condition = base.top
|
|
68
|
+
end
|
|
69
|
+
_result_1 = _condition
|
|
70
|
+
end
|
|
71
|
+
_object[_left] = _result_1
|
|
72
|
+
local _left_1 = "bottom"
|
|
73
|
+
local _result_2
|
|
74
|
+
if props.bottom ~= nil then
|
|
75
|
+
_result_2 = self:GetPadding(theme, props.bottom, componentSpacing)
|
|
76
|
+
else
|
|
77
|
+
local _result_3 = instanceQuad
|
|
78
|
+
if _result_3 ~= nil then
|
|
79
|
+
_result_3 = _result_3.bottom
|
|
80
|
+
end
|
|
81
|
+
local _condition = _result_3
|
|
82
|
+
if _condition == nil then
|
|
83
|
+
_condition = base.bottom
|
|
84
|
+
end
|
|
85
|
+
_result_2 = _condition
|
|
86
|
+
end
|
|
87
|
+
_object[_left_1] = _result_2
|
|
88
|
+
local _left_2 = "left"
|
|
89
|
+
local _result_3
|
|
90
|
+
if props.left ~= nil then
|
|
91
|
+
_result_3 = self:GetPadding(theme, props.left, componentSpacing)
|
|
92
|
+
else
|
|
93
|
+
local _result_4 = instanceQuad
|
|
94
|
+
if _result_4 ~= nil then
|
|
95
|
+
_result_4 = _result_4.left
|
|
96
|
+
end
|
|
97
|
+
local _condition = _result_4
|
|
98
|
+
if _condition == nil then
|
|
99
|
+
_condition = base.left
|
|
41
100
|
end
|
|
42
|
-
|
|
101
|
+
_result_3 = _condition
|
|
102
|
+
end
|
|
103
|
+
_object[_left_2] = _result_3
|
|
104
|
+
local _left_3 = "right"
|
|
105
|
+
local _result_4
|
|
106
|
+
if props.right ~= nil then
|
|
107
|
+
_result_4 = self:GetPadding(theme, props.right, componentSpacing)
|
|
108
|
+
else
|
|
109
|
+
local _result_5 = instanceQuad
|
|
110
|
+
if _result_5 ~= nil then
|
|
111
|
+
_result_5 = _result_5.right
|
|
112
|
+
end
|
|
113
|
+
local _condition = _result_5
|
|
114
|
+
if _condition == nil then
|
|
115
|
+
_condition = base.right
|
|
116
|
+
end
|
|
117
|
+
_result_4 = _condition
|
|
118
|
+
end
|
|
119
|
+
_object[_left_3] = _result_4
|
|
120
|
+
return _object
|
|
121
|
+
end
|
|
122
|
+
function SpacingHelper:GetExplicitPadding(componentPadding, key)
|
|
123
|
+
if componentPadding == nil then
|
|
124
|
+
return nil
|
|
43
125
|
end
|
|
44
|
-
|
|
126
|
+
local _componentPadding = componentPadding
|
|
127
|
+
local quad = if type(_componentPadding) == "table" then componentPadding[key] else componentPadding
|
|
128
|
+
return if quad ~= nil then CssHelper:parseCssQuad(quad) else nil
|
|
45
129
|
end
|
|
46
130
|
function SpacingHelper:ResolveNumberPadding(value)
|
|
47
131
|
return {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ScaleSizeValue } from "./responsive.types";
|
|
1
2
|
export type CssUnit = "px" | "%";
|
|
2
3
|
export type CssSize = "Auto" | number | `${number}` | `${number}${CssUnit}`;
|
|
3
4
|
export type CssCalcSize = CssSize | `${number}% - ${number}px` | `${number}% + ${number}px`;
|
|
@@ -25,4 +26,5 @@ export type CssBoxShadow = {
|
|
|
25
26
|
transparency: number;
|
|
26
27
|
};
|
|
27
28
|
export type CssPadding = CssQuad;
|
|
29
|
+
export type ScaledCssPadding = CssPadding | ScaleSizeValue<CssPadding>;
|
|
28
30
|
export type ResponsiveCssSize = CssSize | CssBreakpointSize;
|
|
@@ -15,3 +15,7 @@
|
|
|
15
15
|
-- absolute pixel corner coordinates for Rect.new(minX, minY, maxX, maxY)-style slicing,
|
|
16
16
|
-- e.g. Roblox's SliceCenter — not a CSS border-image-slice edge-inset shorthand, since
|
|
17
17
|
-- Roblox has no intrinsic-image-size equivalent to derive corners from an inset alone
|
|
18
|
+
-- A CssPadding quad, or a scale-key-indexed map of quads (e.g. a component's
|
|
19
|
+
-- theme.components.X.padding tier, which can pick a different quad shape per
|
|
20
|
+
-- spacing scale key the same way theme.components.X.spacing does for the
|
|
21
|
+
-- numeric tier).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './css.types';
|
|
1
|
+
export type * from './css.types';
|
|
2
2
|
export * from './responsive.types';
|
|
3
|
-
export * from './element.props';
|
|
4
|
-
export * from './semantics';
|
|
5
|
-
export * from './icon';
|
|
3
|
+
export type * from './element.props';
|
|
4
|
+
export type * from './semantics';
|
|
5
|
+
export type * from './icon';
|
package/out/Interfaces/init.luau
CHANGED
|
@@ -1,19 +1,7 @@
|
|
|
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, "css.types") or {} do
|
|
5
|
-
exports[_k] = _v
|
|
6
|
-
end
|
|
7
4
|
for _k, _v in TS.import(script, script, "responsive.types") or {} do
|
|
8
5
|
exports[_k] = _v
|
|
9
6
|
end
|
|
10
|
-
for _k, _v in TS.import(script, script, "element.props") or {} do
|
|
11
|
-
exports[_k] = _v
|
|
12
|
-
end
|
|
13
|
-
for _k, _v in TS.import(script, script, "semantics") or {} do
|
|
14
|
-
exports[_k] = _v
|
|
15
|
-
end
|
|
16
|
-
for _k, _v in TS.import(script, script, "icon") or {} do
|
|
17
|
-
exports[_k] = _v
|
|
18
|
-
end
|
|
19
7
|
return exports
|
|
@@ -5,6 +5,7 @@ local ToastContainer = TS.import(script, script.Parent.Parent, "Components", "In
|
|
|
5
5
|
local RegistryProvider = TS.import(script, script.Parent, "registry.provider").RegistryProvider
|
|
6
6
|
local ThemeProvider = TS.import(script, script.Parent, "theme.provider").ThemeProvider
|
|
7
7
|
local OverlayProvider = TS.import(script, script.Parent, "overlay.provider").OverlayProvider
|
|
8
|
+
local ModalProvider = TS.import(script, script.Parent, "modal.provider").ModalProvider
|
|
8
9
|
local ToastProvider = TS.import(script, script.Parent, "toast.provider").ToastProvider
|
|
9
10
|
local function CleanUiProvider(_param)
|
|
10
11
|
local children = _param.children
|
|
@@ -15,7 +16,7 @@ local function CleanUiProvider(_param)
|
|
|
15
16
|
end
|
|
16
17
|
return React.createElement(RegistryProvider, nil, React.createElement(ThemeProvider, {
|
|
17
18
|
theme = theme,
|
|
18
|
-
}, React.createElement(OverlayProvider, nil, React.createElement(ToastProvider, nil, children, toasts and React.createElement(ToastContainer)))))
|
|
19
|
+
}, React.createElement(OverlayProvider, nil, React.createElement(ModalProvider, nil, React.createElement(ToastProvider, nil, children, toasts and React.createElement(ToastContainer))))))
|
|
19
20
|
end
|
|
20
21
|
return {
|
|
21
22
|
CleanUiProvider = CleanUiProvider,
|
package/out/Providers/index.d.ts
CHANGED
package/out/Providers/init.luau
CHANGED
|
@@ -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.provider") or {} do
|
|
5
|
+
exports[_k] = _v
|
|
6
|
+
end
|
|
4
7
|
for _k, _v in TS.import(script, script, "overlay.provider") or {} do
|
|
5
8
|
exports[_k] = _v
|
|
6
9
|
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
-- Compiled with roblox-ts v3.0.0
|
|
2
|
+
local TS = _G[script]
|
|
3
|
+
local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
|
|
4
|
+
local ModalStackContext = TS.import(script, script.Parent.Parent, "Contexts", "modal.context").ModalStackContext
|
|
5
|
+
local CustomInputService = TS.import(script, script.Parent.Parent, "Helpers", "input.helper").CustomInputService
|
|
6
|
+
local function ModalProvider(props)
|
|
7
|
+
local stack, setStack = React.useState({})
|
|
8
|
+
local stackRef = React.useRef(stack)
|
|
9
|
+
React.useEffect(function()
|
|
10
|
+
stackRef.current = stack
|
|
11
|
+
end, { stack })
|
|
12
|
+
local register = React.useCallback(function(layer)
|
|
13
|
+
setStack(function(current)
|
|
14
|
+
local _array = {}
|
|
15
|
+
local _length = #_array
|
|
16
|
+
local _currentLength = #current
|
|
17
|
+
table.move(current, 1, _currentLength, _length + 1, _array)
|
|
18
|
+
_length += _currentLength
|
|
19
|
+
_array[_length + 1] = layer
|
|
20
|
+
return _array
|
|
21
|
+
end)
|
|
22
|
+
end, {})
|
|
23
|
+
local unregister = React.useCallback(function(id)
|
|
24
|
+
setStack(function(current)
|
|
25
|
+
-- ▼ ReadonlyArray.filter ▼
|
|
26
|
+
local _newValue = {}
|
|
27
|
+
local _callback = function(layer)
|
|
28
|
+
return layer.id ~= id
|
|
29
|
+
end
|
|
30
|
+
local _length = 0
|
|
31
|
+
for _k, _v in current do
|
|
32
|
+
if _callback(_v, _k - 1, current) == true then
|
|
33
|
+
_length += 1
|
|
34
|
+
_newValue[_length] = _v
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
-- ▲ ReadonlyArray.filter ▲
|
|
38
|
+
return _newValue
|
|
39
|
+
end)
|
|
40
|
+
end, {})
|
|
41
|
+
local getLayerIndex = React.useCallback(function(id)
|
|
42
|
+
-- ▼ ReadonlyArray.findIndex ▼
|
|
43
|
+
local _callback = function(layer)
|
|
44
|
+
return layer.id == id
|
|
45
|
+
end
|
|
46
|
+
local _result = -1
|
|
47
|
+
for _i, _v in stack do
|
|
48
|
+
if _callback(_v, _i - 1, stack) == true then
|
|
49
|
+
_result = _i - 1
|
|
50
|
+
break
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
-- ▲ ReadonlyArray.findIndex ▲
|
|
54
|
+
return _result
|
|
55
|
+
end, { stack })
|
|
56
|
+
React.useEffect(function()
|
|
57
|
+
local connection = CustomInputService.InputBegan:Connect(function(input, gameProcessed)
|
|
58
|
+
if gameProcessed then
|
|
59
|
+
return nil
|
|
60
|
+
end
|
|
61
|
+
if input.KeyCode ~= Enum.KeyCode.Escape and input.KeyCode ~= Enum.KeyCode.ButtonB then
|
|
62
|
+
return nil
|
|
63
|
+
end
|
|
64
|
+
local top = stackRef.current[#stackRef.current]
|
|
65
|
+
if top ~= nil and top.closeOnEscape() then
|
|
66
|
+
top.requestClose()
|
|
67
|
+
end
|
|
68
|
+
end)
|
|
69
|
+
return function()
|
|
70
|
+
connection:Disconnect()
|
|
71
|
+
end
|
|
72
|
+
end, {})
|
|
73
|
+
local value = React.useMemo(function()
|
|
74
|
+
return {
|
|
75
|
+
register = register,
|
|
76
|
+
unregister = unregister,
|
|
77
|
+
getLayerIndex = getLayerIndex,
|
|
78
|
+
}
|
|
79
|
+
end, { register, unregister, getLayerIndex })
|
|
80
|
+
return React.createElement(ModalStackContext.Provider, {
|
|
81
|
+
value = value,
|
|
82
|
+
}, props.children)
|
|
83
|
+
end
|
|
84
|
+
return {
|
|
85
|
+
ModalProvider = ModalProvider,
|
|
86
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CssShadow, CssSize,
|
|
1
|
+
import { CssShadow, CssSize, ScaledCssPadding, Breakpoint, BreakpointValue, ScaleSizeValue, ScaleSize, Intent, IconSet, TextVariant, PositionElementProps, CssBoxShadow } from "../Interfaces/";
|
|
2
2
|
import { TypographyStyle, ScaledTypographyStyle, IntentScheme, IntentColors, InlineIntentColors, CssBackgroundImage, CssPosition } from "./theme.style";
|
|
3
3
|
export interface ThemeTemplate {
|
|
4
4
|
colors: {
|
|
@@ -48,7 +48,8 @@ export interface ThemeTemplate {
|
|
|
48
48
|
borderColor: Color3;
|
|
49
49
|
borderThickness: number;
|
|
50
50
|
cornerRadius: CssSize;
|
|
51
|
-
|
|
51
|
+
spacing?: ScaleSizeValue<number>;
|
|
52
|
+
padding?: ScaledCssPadding;
|
|
52
53
|
boxShadow?: CssShadow;
|
|
53
54
|
backgroundImage?: CssBackgroundImage;
|
|
54
55
|
intents?: Partial<Record<Intent, InlineIntentColors>>;
|
|
@@ -71,6 +72,7 @@ export interface ThemeTemplate {
|
|
|
71
72
|
typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
|
|
72
73
|
backgroundImage?: CssBackgroundImage;
|
|
73
74
|
placeholder?: Partial<TypographyStyle> | ScaledTypographyStyle;
|
|
75
|
+
iconColor?: Color3;
|
|
74
76
|
};
|
|
75
77
|
select: {
|
|
76
78
|
borderColor: Color3;
|
|
@@ -81,6 +83,18 @@ export interface ThemeTemplate {
|
|
|
81
83
|
typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
|
|
82
84
|
intents?: Partial<Record<Intent, InlineIntentColors>>;
|
|
83
85
|
maxDropDownHeight: number;
|
|
86
|
+
optGroup: {
|
|
87
|
+
textColor: Color3;
|
|
88
|
+
typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
|
|
89
|
+
backgroundColor?: Color3;
|
|
90
|
+
backgroundTransparency?: number;
|
|
91
|
+
spacing?: ScaleSizeValue<number>;
|
|
92
|
+
padding?: ScaledCssPadding;
|
|
93
|
+
};
|
|
94
|
+
search: {
|
|
95
|
+
spacing?: ScaleSizeValue<number>;
|
|
96
|
+
padding?: ScaledCssPadding;
|
|
97
|
+
};
|
|
84
98
|
};
|
|
85
99
|
checkbox: {
|
|
86
100
|
borderColor: Color3;
|
|
@@ -89,14 +103,42 @@ export interface ThemeTemplate {
|
|
|
89
103
|
cornerRadius: CssSize;
|
|
90
104
|
intents?: Partial<Record<Intent, InlineIntentColors>>;
|
|
91
105
|
spacing?: ScaleSizeValue<number>;
|
|
106
|
+
padding?: ScaledCssPadding;
|
|
92
107
|
backgroundImage?: CssBackgroundImage;
|
|
93
108
|
};
|
|
109
|
+
switch: {
|
|
110
|
+
width: CssSize;
|
|
111
|
+
height: CssSize;
|
|
112
|
+
cornerRadius: CssSize;
|
|
113
|
+
borderThickness: number;
|
|
114
|
+
disabledTransparency: number;
|
|
115
|
+
animation: {
|
|
116
|
+
duration: number;
|
|
117
|
+
};
|
|
118
|
+
track: {
|
|
119
|
+
backgroundColor: Color3;
|
|
120
|
+
backgroundTransparency: number;
|
|
121
|
+
borderColor: Color3;
|
|
122
|
+
intents?: Partial<Record<Intent, InlineIntentColors>>;
|
|
123
|
+
};
|
|
124
|
+
thumb: {
|
|
125
|
+
inset: CssSize;
|
|
126
|
+
cornerRadius: CssSize;
|
|
127
|
+
backgroundColor: Color3;
|
|
128
|
+
backgroundTransparency: number;
|
|
129
|
+
borderColor: Color3;
|
|
130
|
+
borderThickness: number;
|
|
131
|
+
boxShadow?: CssShadow;
|
|
132
|
+
};
|
|
133
|
+
};
|
|
94
134
|
tabs: {
|
|
95
135
|
borderColor: Color3;
|
|
96
136
|
backgroundColor: Color3;
|
|
137
|
+
backgroundImage?: CssBackgroundImage;
|
|
97
138
|
borderThickness: number;
|
|
98
139
|
cornerRadius: CssSize;
|
|
99
140
|
spacing?: ScaleSizeValue<number>;
|
|
141
|
+
padding?: ScaledCssPadding;
|
|
100
142
|
list: {
|
|
101
143
|
borderColor?: Color3;
|
|
102
144
|
backgroundColor?: Color3;
|
|
@@ -104,12 +146,32 @@ export interface ThemeTemplate {
|
|
|
104
146
|
borderThickness: number;
|
|
105
147
|
cornerRadius: CssSize;
|
|
106
148
|
spacing?: ScaleSizeValue<number>;
|
|
149
|
+
padding?: ScaledCssPadding;
|
|
107
150
|
backgroundImage?: CssBackgroundImage;
|
|
108
151
|
};
|
|
109
152
|
button: {
|
|
110
153
|
borderThickness: number;
|
|
111
154
|
cornerRadius: CssSize;
|
|
112
155
|
spacing?: ScaleSizeValue<number>;
|
|
156
|
+
padding?: ScaledCssPadding;
|
|
157
|
+
boxShadow?: CssShadow;
|
|
158
|
+
typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
|
|
159
|
+
intents?: Partial<Record<Intent, InlineIntentColors>>;
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
pagination: {
|
|
163
|
+
backgroundColor: Color3;
|
|
164
|
+
backgroundTransparency: number;
|
|
165
|
+
borderColor: Color3;
|
|
166
|
+
borderThickness: number;
|
|
167
|
+
cornerRadius: CssSize;
|
|
168
|
+
spacing?: ScaleSizeValue<number>;
|
|
169
|
+
padding?: ScaledCssPadding;
|
|
170
|
+
item: {
|
|
171
|
+
borderThickness: number;
|
|
172
|
+
cornerRadius: CssSize;
|
|
173
|
+
spacing?: ScaleSizeValue<number>;
|
|
174
|
+
padding?: ScaledCssPadding;
|
|
113
175
|
boxShadow?: CssShadow;
|
|
114
176
|
typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
|
|
115
177
|
intents?: Partial<Record<Intent, InlineIntentColors>>;
|
|
@@ -122,6 +184,7 @@ export interface ThemeTemplate {
|
|
|
122
184
|
spacing?: ScaleSizeValue<number>;
|
|
123
185
|
header: {
|
|
124
186
|
spacing?: ScaleSizeValue<number>;
|
|
187
|
+
padding?: ScaledCssPadding;
|
|
125
188
|
typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
|
|
126
189
|
intents?: Partial<Record<Intent, InlineIntentColors>>;
|
|
127
190
|
indicatorSize: number;
|
|
@@ -129,6 +192,7 @@ export interface ThemeTemplate {
|
|
|
129
192
|
};
|
|
130
193
|
content: {
|
|
131
194
|
spacing?: ScaleSizeValue<number>;
|
|
195
|
+
padding?: ScaledCssPadding;
|
|
132
196
|
backgroundColor: Color3;
|
|
133
197
|
backgroundTransparency: number;
|
|
134
198
|
};
|
|
@@ -136,23 +200,45 @@ export interface ThemeTemplate {
|
|
|
136
200
|
duration: number;
|
|
137
201
|
};
|
|
138
202
|
};
|
|
203
|
+
table: {
|
|
204
|
+
backgroundColor: Color3;
|
|
205
|
+
backgroundTransparency: number;
|
|
206
|
+
borderColor: Color3;
|
|
207
|
+
borderThickness: number;
|
|
208
|
+
cornerRadius: CssSize;
|
|
209
|
+
rowDividerColor: Color3;
|
|
210
|
+
rowDividerThickness: number;
|
|
211
|
+
header: {
|
|
212
|
+
backgroundColor: Color3;
|
|
213
|
+
backgroundTransparency: number;
|
|
214
|
+
typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
|
|
215
|
+
};
|
|
216
|
+
cell: {
|
|
217
|
+
spacing?: ScaleSizeValue<number>;
|
|
218
|
+
padding?: ScaledCssPadding;
|
|
219
|
+
typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
|
|
220
|
+
};
|
|
221
|
+
};
|
|
139
222
|
card: {
|
|
140
223
|
borderThickness: number;
|
|
141
224
|
cornerRadius: CssSize;
|
|
142
225
|
header: {
|
|
143
226
|
borderThickness?: number;
|
|
144
227
|
spacing?: ScaleSizeValue<number>;
|
|
228
|
+
padding?: ScaledCssPadding;
|
|
145
229
|
intents?: Partial<Record<Intent, InlineIntentColors>>;
|
|
146
230
|
position?: CssPosition;
|
|
147
231
|
};
|
|
148
232
|
footer: {
|
|
149
233
|
borderThickness?: number;
|
|
150
234
|
spacing?: ScaleSizeValue<number>;
|
|
235
|
+
padding?: ScaledCssPadding;
|
|
151
236
|
intents?: Partial<Record<Intent, InlineIntentColors>>;
|
|
152
237
|
position?: CssPosition;
|
|
153
238
|
};
|
|
154
239
|
body?: {
|
|
155
|
-
|
|
240
|
+
spacing?: ScaleSizeValue<number>;
|
|
241
|
+
padding?: ScaledCssPadding;
|
|
156
242
|
};
|
|
157
243
|
};
|
|
158
244
|
slider: {
|
|
@@ -206,6 +292,16 @@ export interface ThemeTemplate {
|
|
|
206
292
|
cornerRadius: CssSize;
|
|
207
293
|
intents?: Partial<Record<Intent, Partial<IntentScheme>>>;
|
|
208
294
|
};
|
|
295
|
+
modal: {
|
|
296
|
+
fadeDuration: number;
|
|
297
|
+
baseZIndex: number;
|
|
298
|
+
zIndexStep: number;
|
|
299
|
+
width?: CssSize;
|
|
300
|
+
backdrop: {
|
|
301
|
+
backgroundColor: Color3;
|
|
302
|
+
backgroundTransparency: number;
|
|
303
|
+
};
|
|
304
|
+
};
|
|
209
305
|
charts: {
|
|
210
306
|
colors: Color3[];
|
|
211
307
|
pie: {
|
|
@@ -214,6 +214,7 @@ local DarkTheme = createTheme({
|
|
|
214
214
|
placeholder = {
|
|
215
215
|
color = Color3.fromHex("#697386"),
|
|
216
216
|
},
|
|
217
|
+
iconColor = Color3.fromHex("#697386"),
|
|
217
218
|
},
|
|
218
219
|
select = {
|
|
219
220
|
dropDownBackgroundColor = Color3.fromHex("#20252E"),
|
|
@@ -238,6 +239,25 @@ local DarkTheme = createTheme({
|
|
|
238
239
|
},
|
|
239
240
|
},
|
|
240
241
|
},
|
|
242
|
+
optGroup = {
|
|
243
|
+
textColor = Color3.fromHex("#8892A6"),
|
|
244
|
+
spacing = {
|
|
245
|
+
xs = 4,
|
|
246
|
+
sm = 6,
|
|
247
|
+
md = 8,
|
|
248
|
+
lg = 10,
|
|
249
|
+
xl = 12,
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
search = {
|
|
253
|
+
spacing = {
|
|
254
|
+
xs = 4,
|
|
255
|
+
sm = 6,
|
|
256
|
+
md = 8,
|
|
257
|
+
lg = 10,
|
|
258
|
+
xl = 12,
|
|
259
|
+
},
|
|
260
|
+
},
|
|
241
261
|
},
|
|
242
262
|
checkbox = {
|
|
243
263
|
borderColor = Color3.fromHex("#3A4352"),
|
|
@@ -251,6 +271,30 @@ local DarkTheme = createTheme({
|
|
|
251
271
|
xl = 8,
|
|
252
272
|
},
|
|
253
273
|
},
|
|
274
|
+
switch = {
|
|
275
|
+
width = 40,
|
|
276
|
+
height = 22,
|
|
277
|
+
cornerRadius = "100%",
|
|
278
|
+
borderThickness = 1,
|
|
279
|
+
disabledTransparency = 0.5,
|
|
280
|
+
animation = {
|
|
281
|
+
duration = 0.15,
|
|
282
|
+
},
|
|
283
|
+
track = {
|
|
284
|
+
backgroundColor = Color3.fromHex("#2A303B"),
|
|
285
|
+
backgroundTransparency = 0,
|
|
286
|
+
borderColor = Color3.fromHex("#3A4352"),
|
|
287
|
+
},
|
|
288
|
+
thumb = {
|
|
289
|
+
inset = 2,
|
|
290
|
+
cornerRadius = "100%",
|
|
291
|
+
backgroundColor = Color3.fromHex("#E8EDF8"),
|
|
292
|
+
backgroundTransparency = 0,
|
|
293
|
+
borderColor = Color3.fromHex("#4B74C7"),
|
|
294
|
+
borderThickness = 1,
|
|
295
|
+
boxShadow = "0px 0px 2px 1px",
|
|
296
|
+
},
|
|
297
|
+
},
|
|
254
298
|
tabs = {
|
|
255
299
|
borderColor = Color3.fromHex("#343B49"),
|
|
256
300
|
backgroundColor = Color3.fromHex("#1B1F27"),
|
|
@@ -301,6 +345,57 @@ local DarkTheme = createTheme({
|
|
|
301
345
|
},
|
|
302
346
|
},
|
|
303
347
|
},
|
|
348
|
+
pagination = {
|
|
349
|
+
backgroundColor = Color3.fromHex("#14181F"),
|
|
350
|
+
backgroundTransparency = 0,
|
|
351
|
+
borderColor = Color3.fromHex("#343B49"),
|
|
352
|
+
borderThickness = 1,
|
|
353
|
+
cornerRadius = 8,
|
|
354
|
+
spacing = {
|
|
355
|
+
xs = 2,
|
|
356
|
+
sm = 4,
|
|
357
|
+
md = 6,
|
|
358
|
+
lg = 8,
|
|
359
|
+
xl = 12,
|
|
360
|
+
},
|
|
361
|
+
item = {
|
|
362
|
+
borderThickness = 0,
|
|
363
|
+
cornerRadius = 4,
|
|
364
|
+
spacing = {
|
|
365
|
+
xs = 1,
|
|
366
|
+
sm = 2,
|
|
367
|
+
md = 4,
|
|
368
|
+
lg = 6,
|
|
369
|
+
xl = 8,
|
|
370
|
+
},
|
|
371
|
+
intents = {
|
|
372
|
+
primary = {
|
|
373
|
+
default = {
|
|
374
|
+
backgroundTransparency = 1,
|
|
375
|
+
textColor = Color3.fromHex("#AAB3C2"),
|
|
376
|
+
},
|
|
377
|
+
hover = {
|
|
378
|
+
backgroundTransparency = 1,
|
|
379
|
+
textColor = Color3.fromHex("#FFFFFF"),
|
|
380
|
+
},
|
|
381
|
+
focus = {
|
|
382
|
+
textColor = Color3.fromHex("#FFFFFF"),
|
|
383
|
+
backgroundColor = Color3.fromHex("#2A303B"),
|
|
384
|
+
backgroundTransparency = 0,
|
|
385
|
+
boxShadow = "2px 2px 6px 0px",
|
|
386
|
+
typography = {
|
|
387
|
+
weight = Enum.FontWeight.Bold,
|
|
388
|
+
},
|
|
389
|
+
},
|
|
390
|
+
disabled = {
|
|
391
|
+
backgroundTransparency = 1,
|
|
392
|
+
borderColor = Color3.fromHex("#343B49"),
|
|
393
|
+
textColor = Color3.fromHex("#697386"),
|
|
394
|
+
},
|
|
395
|
+
},
|
|
396
|
+
},
|
|
397
|
+
},
|
|
398
|
+
},
|
|
304
399
|
accordion = {
|
|
305
400
|
borderColor = Color3.fromHex("#4B5568"),
|
|
306
401
|
header = {
|
|
@@ -330,6 +425,14 @@ local DarkTheme = createTheme({
|
|
|
330
425
|
backgroundColor = Color3.fromHex("#171B22"),
|
|
331
426
|
},
|
|
332
427
|
},
|
|
428
|
+
table = {
|
|
429
|
+
backgroundColor = Color3.fromHex("#171B22"),
|
|
430
|
+
borderColor = Color3.fromHex("#4B5568"),
|
|
431
|
+
rowDividerColor = Color3.fromHex("#343C4A"),
|
|
432
|
+
header = {
|
|
433
|
+
backgroundColor = Color3.fromHex("#252B36"),
|
|
434
|
+
},
|
|
435
|
+
},
|
|
333
436
|
draggable = {
|
|
334
437
|
placeholder = {
|
|
335
438
|
backgroundColor = Color3.fromHex("#2A303B"),
|