@rbxts/react-clean-ui 1.1.0 → 1.2.4

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 (110) 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 -6
  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 +8 -3
  9. package/out/Components/Decorator/Gradient.d.ts +8 -0
  10. package/out/Components/Decorator/Gradient.luau +23 -0
  11. package/out/Components/Decorator/Padding.d.ts +3 -1
  12. package/out/Components/Decorator/Padding.luau +11 -6
  13. package/out/Components/Decorator/index.d.ts +1 -0
  14. package/out/Components/Decorator/init.luau +3 -0
  15. package/out/Components/Input/Button.d.ts +1 -0
  16. package/out/Components/Input/Button.luau +49 -34
  17. package/out/Components/Input/Checkbox.d.ts +1 -0
  18. package/out/Components/Input/Checkbox.luau +28 -18
  19. package/out/Components/Input/HoverButton.d.ts +1 -0
  20. package/out/Components/Input/HoverButton.luau +44 -42
  21. package/out/Components/Input/Increment.d.ts +1 -0
  22. package/out/Components/Input/Increment.luau +10 -3
  23. package/out/Components/Input/Input.d.ts +3 -1
  24. package/out/Components/Input/Input.luau +89 -68
  25. package/out/Components/Input/Select.d.ts +11 -1
  26. package/out/Components/Input/Select.luau +315 -39
  27. package/out/Components/Input/Slider.luau +44 -53
  28. package/out/Components/Input/Switch.d.ts +9 -0
  29. package/out/Components/Input/Switch.luau +145 -0
  30. package/out/Components/Input/index.d.ts +1 -0
  31. package/out/Components/Input/init.luau +3 -0
  32. package/out/Components/Interaction/Modal.d.ts +14 -0
  33. package/out/Components/Interaction/Modal.luau +262 -0
  34. package/out/Components/Interaction/Toast.d.ts +2 -1
  35. package/out/Components/Interaction/Toast.luau +53 -28
  36. package/out/Components/Interaction/Tooltip.luau +36 -25
  37. package/out/Components/Interaction/index.d.ts +1 -0
  38. package/out/Components/Interaction/init.luau +3 -0
  39. package/out/Components/Layout/Accordion.d.ts +1 -0
  40. package/out/Components/Layout/Accordion.luau +51 -55
  41. package/out/Components/Layout/Column.d.ts +1 -0
  42. package/out/Components/Layout/Column.luau +11 -6
  43. package/out/Components/Layout/Container.d.ts +3 -0
  44. package/out/Components/Layout/Container.luau +26 -17
  45. package/out/Components/Layout/Draggable.luau +25 -3
  46. package/out/Components/Layout/Fieldset.d.ts +1 -0
  47. package/out/Components/Layout/Fieldset.luau +14 -42
  48. package/out/Components/Layout/FlexItem.luau +7 -0
  49. package/out/Components/Layout/Grid.d.ts +10 -0
  50. package/out/Components/Layout/Grid.luau +172 -0
  51. package/out/Components/Layout/Group.d.ts +1 -0
  52. package/out/Components/Layout/Group.luau +48 -60
  53. package/out/Components/Layout/HStack.d.ts +4 -0
  54. package/out/Components/Layout/HStack.luau +17 -10
  55. package/out/Components/Layout/Pagination.d.ts +32 -0
  56. package/out/Components/Layout/Pagination.luau +400 -0
  57. package/out/Components/Layout/Row.d.ts +1 -0
  58. package/out/Components/Layout/Row.luau +20 -48
  59. package/out/Components/Layout/Scroller.d.ts +1 -0
  60. package/out/Components/Layout/Scroller.luau +26 -34
  61. package/out/Components/Layout/Table.d.ts +31 -0
  62. package/out/Components/Layout/Table.luau +342 -0
  63. package/out/Components/Layout/Tabs.d.ts +20 -10
  64. package/out/Components/Layout/Tabs.luau +113 -119
  65. package/out/Components/Layout/VStack.d.ts +3 -0
  66. package/out/Components/Layout/VStack.luau +17 -10
  67. package/out/Components/Layout/index.d.ts +3 -0
  68. package/out/Components/Layout/init.luau +9 -0
  69. package/out/Components/Navigation/Menu.d.ts +1 -0
  70. package/out/Components/Navigation/Menu.luau +12 -3
  71. package/out/Components/Surface/Box.d.ts +3 -1
  72. package/out/Components/Surface/Box.luau +15 -4
  73. package/out/Components/Surface/Card.d.ts +1 -0
  74. package/out/Components/Surface/Card.luau +56 -154
  75. package/out/Components/Surface/Icon.d.ts +1 -0
  76. package/out/Components/Surface/Icon.luau +25 -16
  77. package/out/Components/Surface/ProgressBar.d.ts +14 -0
  78. package/out/Components/Surface/ProgressBar.luau +230 -0
  79. package/out/Components/Surface/index.d.ts +1 -0
  80. package/out/Components/Surface/init.luau +3 -0
  81. package/out/Components/Typography/Text.d.ts +1 -0
  82. package/out/Components/Typography/Text.luau +57 -53
  83. package/out/Contexts/index.d.ts +1 -0
  84. package/out/Contexts/init.luau +3 -0
  85. package/out/Contexts/modal.context.d.ts +15 -0
  86. package/out/Contexts/modal.context.luau +23 -0
  87. package/out/Contexts/toast.context.d.ts +1 -0
  88. package/out/Helpers/color.helper.luau +28 -0
  89. package/out/Helpers/css.helper.d.ts +4 -1
  90. package/out/Helpers/css.helper.luau +76 -6
  91. package/out/Helpers/gui.helper.luau +0 -3
  92. package/out/Helpers/size.helper.luau +0 -2
  93. package/out/Helpers/spacing.helper.luau +0 -3
  94. package/out/Helpers/typography.helper.luau +0 -2
  95. package/out/Interfaces/css.types.d.ts +7 -0
  96. package/out/Interfaces/css.types.luau +0 -20
  97. package/out/Providers/app.provider.luau +2 -1
  98. package/out/Providers/index.d.ts +1 -0
  99. package/out/Providers/init.luau +3 -0
  100. package/out/Providers/modal.provider.d.ts +6 -0
  101. package/out/Providers/modal.provider.luau +86 -0
  102. package/out/Providers/overlay.provider.luau +1 -0
  103. package/out/Providers/registry.provider.luau +0 -2
  104. package/out/Theme/theme.style.d.ts +2 -1
  105. package/out/Theme/theme.template.d.ts +126 -1
  106. package/out/Theme/themes/dark.theme.luau +225 -0
  107. package/out/Theme/themes/default.theme.luau +210 -0
  108. package/out/Theme/themes/sandstone.theme.luau +173 -0
  109. package/out/Theme/themes/wooden.theme.luau +195 -0
  110. package/package.json +1 -1
@@ -37,7 +37,6 @@ do
37
37
  function TypographyHelper:getClosestTypography(typography, scale)
38
38
  local _scale = scale
39
39
  local scaleIndex = (table.find(ScaleSizes, _scale) or 0) - 1
40
- -- Prefer the exact scale, then progressively smaller scales.
41
40
  do
42
41
  local index = scaleIndex
43
42
  local _shouldIncrement = false
@@ -56,7 +55,6 @@ do
56
55
  end
57
56
  end
58
57
  end
59
- -- If no smaller scale exists, use the nearest larger scale.
60
58
  do
61
59
  local index = scaleIndex + 1
62
60
  local _shouldIncrement = false
@@ -28,3 +28,10 @@ export type CssBoxShadow = {
28
28
  export type CssPadding = CssQuad;
29
29
  export type ScaledCssPadding = CssPadding | ScaleSizeValue<CssPadding>;
30
30
  export type ResponsiveCssSize = CssSize | CssBreakpointSize;
31
+ export type CssBackgroundGradient = {
32
+ colors: Color3[] | ColorSequence;
33
+ stops?: number[];
34
+ rotation?: number;
35
+ offset?: Vector2;
36
+ transparency?: number | NumberSequence;
37
+ };
@@ -1,21 +1 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
- -- The one CSS calc() shape supported on top of CssSize: a percent term
3
- -- plus/minus a pixel term (e.g. "100% - 50px"), which maps directly onto
4
- -- UDim(scale, offset) — no general calc() parser needed for anything beyond
5
- -- this two-term form. Deliberately kept as its own type rather than folded
6
- -- directly into CssSize: CssSize is composed multiple times over in CssQuad/
7
- -- CssDual (a 4-term CssQuad is `${CssSize} ${CssSize} ${CssSize} ${CssSize}`),
8
- -- so widening CssSize itself multiplies out through every one of those
9
- -- combinations — doing so was observed to blow past TypeScript's template-
10
- -- literal complexity limit ("union type that is too complex to represent")
11
- -- at unrelated call sites that spread a large props object containing
12
- -- several CssQuad-shaped fields (e.g. Button.tsx's `<BoxShadow {...props} />`).
13
- -- Use CssCalcSize only where a calc() term is actually needed (currently
14
- -- just CssPosition.width) rather than everywhere CssSize appears.
15
- -- absolute pixel corner coordinates for Rect.new(minX, minY, maxX, maxY)-style slicing,
16
- -- e.g. Roblox's SliceCenter — not a CSS border-image-slice edge-inset shorthand, since
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).
@@ -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,
@@ -1,3 +1,4 @@
1
+ export * from './modal.provider';
1
2
  export * from './overlay.provider';
2
3
  export * from './registry.provider';
3
4
  export * from './theme.provider';
@@ -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,6 @@
1
+ import React from "@rbxts/react";
2
+ interface ModalProviderProps {
3
+ children?: React.ReactNode;
4
+ }
5
+ export declare function ModalProvider(props: ModalProviderProps): React.JSX.Element;
6
+ export {};
@@ -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
+ }
@@ -11,6 +11,7 @@ local function OverlayProvider(props)
11
11
  overlay = overlay,
12
12
  },
13
13
  }, props.children, React.createElement("frame", {
14
+ key = "OverlayProvider",
14
15
  ref = function(instance)
15
16
  setOverlay(instance)
16
17
  end,
@@ -2,8 +2,6 @@
2
2
  local TS = _G[script]
3
3
  local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
4
  local HttpService = TS.import(script, TS.getModule(script, "@rbxts", "services")).HttpService
5
- -- This registry is used to keep a global map of GuiObjects => React components
6
- -- For example Droppable zones use this to register themselves
7
5
  local DroppableRegistryKey = {
8
6
  name = "Droppable",
9
7
  }
@@ -1,5 +1,5 @@
1
1
  import { Binding } from "@rbxts/react";
2
- import { ScaleSize, CssShadow, ButtonFlag, CssDual, CssSliceInset, CssSize, CssCalcSize } from "../Interfaces/";
2
+ import { ScaleSize, CssShadow, ButtonFlag, CssDual, CssSliceInset, CssSize, CssCalcSize, CssBackgroundGradient } from "../Interfaces/";
3
3
  export interface TypographyStyle {
4
4
  font: Enum.Font;
5
5
  size: Enum.FontSize;
@@ -18,6 +18,7 @@ export interface IntentScheme {
18
18
  boxShadow?: CssShadow;
19
19
  typography?: Partial<TypographyStyle>;
20
20
  backgroundImage?: Partial<CssBackgroundImage>;
21
+ backgroundGradient?: Partial<CssBackgroundGradient>;
21
22
  }
22
23
  export interface IntentColors extends Partial<Record<ButtonFlag, IntentScheme>> {
23
24
  default: IntentScheme;
@@ -1,4 +1,4 @@
1
- import { CssShadow, CssSize, ScaledCssPadding, Breakpoint, BreakpointValue, ScaleSizeValue, ScaleSize, Intent, IconSet, TextVariant, PositionElementProps, CssBoxShadow } from "../Interfaces/";
1
+ import { CssShadow, CssSize, ScaledCssPadding, Breakpoint, BreakpointValue, ScaleSizeValue, ScaleSize, Intent, IconSet, TextVariant, PositionElementProps, CssBoxShadow, CssBackgroundGradient } from "../Interfaces/";
2
2
  import { TypographyStyle, ScaledTypographyStyle, IntentScheme, IntentColors, InlineIntentColors, CssBackgroundImage, CssPosition } from "./theme.style";
3
3
  export interface ThemeTemplate {
4
4
  colors: {
@@ -52,6 +52,7 @@ export interface ThemeTemplate {
52
52
  padding?: ScaledCssPadding;
53
53
  boxShadow?: CssShadow;
54
54
  backgroundImage?: CssBackgroundImage;
55
+ backgroundGradient?: CssBackgroundGradient;
55
56
  intents?: Partial<Record<Intent, InlineIntentColors>>;
56
57
  };
57
58
  button: {
@@ -71,17 +72,32 @@ export interface ThemeTemplate {
71
72
  cornerRadius: CssSize;
72
73
  typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
73
74
  backgroundImage?: CssBackgroundImage;
75
+ backgroundGradient?: CssBackgroundGradient;
74
76
  placeholder?: Partial<TypographyStyle> | ScaledTypographyStyle;
77
+ iconColor?: Color3;
75
78
  };
76
79
  select: {
77
80
  borderColor: Color3;
78
81
  borderThickness: number;
79
82
  cornerRadius: CssSize;
80
83
  backgroundImage?: CssBackgroundImage;
84
+ backgroundGradient?: CssBackgroundGradient;
81
85
  dropDownBackgroundColor: Color3;
82
86
  typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
83
87
  intents?: Partial<Record<Intent, InlineIntentColors>>;
84
88
  maxDropDownHeight: number;
89
+ optGroup: {
90
+ textColor: Color3;
91
+ typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
92
+ backgroundColor?: Color3;
93
+ backgroundTransparency?: number;
94
+ spacing?: ScaleSizeValue<number>;
95
+ padding?: ScaledCssPadding;
96
+ };
97
+ search: {
98
+ spacing?: ScaleSizeValue<number>;
99
+ padding?: ScaledCssPadding;
100
+ };
85
101
  };
86
102
  checkbox: {
87
103
  borderColor: Color3;
@@ -92,11 +108,38 @@ export interface ThemeTemplate {
92
108
  spacing?: ScaleSizeValue<number>;
93
109
  padding?: ScaledCssPadding;
94
110
  backgroundImage?: CssBackgroundImage;
111
+ backgroundGradient?: CssBackgroundGradient;
112
+ };
113
+ switch: {
114
+ width: CssSize;
115
+ height: CssSize;
116
+ cornerRadius: CssSize;
117
+ borderThickness: number;
118
+ disabledTransparency: number;
119
+ animation: {
120
+ duration: number;
121
+ };
122
+ track: {
123
+ backgroundColor: Color3;
124
+ backgroundTransparency: number;
125
+ borderColor: Color3;
126
+ intents?: Partial<Record<Intent, InlineIntentColors>>;
127
+ };
128
+ thumb: {
129
+ inset: CssSize;
130
+ cornerRadius: CssSize;
131
+ backgroundColor: Color3;
132
+ backgroundTransparency: number;
133
+ borderColor: Color3;
134
+ borderThickness: number;
135
+ boxShadow?: CssShadow;
136
+ };
95
137
  };
96
138
  tabs: {
97
139
  borderColor: Color3;
98
140
  backgroundColor: Color3;
99
141
  backgroundImage?: CssBackgroundImage;
142
+ backgroundGradient?: CssBackgroundGradient;
100
143
  borderThickness: number;
101
144
  cornerRadius: CssSize;
102
145
  spacing?: ScaleSizeValue<number>;
@@ -110,6 +153,7 @@ export interface ThemeTemplate {
110
153
  spacing?: ScaleSizeValue<number>;
111
154
  padding?: ScaledCssPadding;
112
155
  backgroundImage?: CssBackgroundImage;
156
+ backgroundGradient?: CssBackgroundGradient;
113
157
  };
114
158
  button: {
115
159
  borderThickness: number;
@@ -121,6 +165,24 @@ export interface ThemeTemplate {
121
165
  intents?: Partial<Record<Intent, InlineIntentColors>>;
122
166
  };
123
167
  };
168
+ pagination: {
169
+ backgroundColor: Color3;
170
+ backgroundTransparency: number;
171
+ borderColor: Color3;
172
+ borderThickness: number;
173
+ cornerRadius: CssSize;
174
+ spacing?: ScaleSizeValue<number>;
175
+ padding?: ScaledCssPadding;
176
+ item: {
177
+ borderThickness: number;
178
+ cornerRadius: CssSize;
179
+ spacing?: ScaleSizeValue<number>;
180
+ padding?: ScaledCssPadding;
181
+ boxShadow?: CssShadow;
182
+ typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
183
+ intents?: Partial<Record<Intent, InlineIntentColors>>;
184
+ };
185
+ };
124
186
  accordion: {
125
187
  borderColor: Color3;
126
188
  borderThickness: number;
@@ -144,6 +206,25 @@ export interface ThemeTemplate {
144
206
  duration: number;
145
207
  };
146
208
  };
209
+ table: {
210
+ backgroundColor: Color3;
211
+ backgroundTransparency: number;
212
+ borderColor: Color3;
213
+ borderThickness: number;
214
+ cornerRadius: CssSize;
215
+ rowDividerColor: Color3;
216
+ rowDividerThickness: number;
217
+ header: {
218
+ backgroundColor: Color3;
219
+ backgroundTransparency: number;
220
+ typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
221
+ };
222
+ cell: {
223
+ spacing?: ScaleSizeValue<number>;
224
+ padding?: ScaledCssPadding;
225
+ typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
226
+ };
227
+ };
147
228
  card: {
148
229
  borderThickness: number;
149
230
  cornerRadius: CssSize;
@@ -192,6 +273,40 @@ export interface ThemeTemplate {
192
273
  aspectRatio?: number;
193
274
  };
194
275
  };
276
+ progressBar: {
277
+ height: ScaleSizeValue<CssSize>;
278
+ animation: {
279
+ duration: number;
280
+ };
281
+ header: {
282
+ spacing?: ScaleSizeValue<number>;
283
+ label: {
284
+ typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
285
+ };
286
+ value: {
287
+ typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
288
+ };
289
+ };
290
+ track: {
291
+ backgroundColor: Color3;
292
+ backgroundTransparency: number;
293
+ borderColor: Color3;
294
+ borderThickness: number;
295
+ cornerRadius: CssSize;
296
+ backgroundImage?: CssBackgroundImage;
297
+ backgroundGradient?: CssBackgroundGradient;
298
+ };
299
+ fill: {
300
+ cornerRadius: CssSize;
301
+ intents?: Partial<Record<Intent, InlineIntentColors>>;
302
+ stripe?: {
303
+ enabled: boolean;
304
+ image?: Omit<Partial<CssBackgroundImage>, "size">;
305
+ duration?: number;
306
+ direction?: number;
307
+ };
308
+ };
309
+ };
195
310
  toast: {
196
311
  width: CssSize;
197
312
  fadeDuration: number;
@@ -217,6 +332,16 @@ export interface ThemeTemplate {
217
332
  cornerRadius: CssSize;
218
333
  intents?: Partial<Record<Intent, Partial<IntentScheme>>>;
219
334
  };
335
+ modal: {
336
+ fadeDuration: number;
337
+ baseZIndex: number;
338
+ zIndexStep: number;
339
+ width?: CssSize;
340
+ backdrop: {
341
+ backgroundColor: Color3;
342
+ backgroundTransparency: number;
343
+ };
344
+ };
220
345
  charts: {
221
346
  colors: Color3[];
222
347
  pie: {