@rbxts/react-clean-ui 1.0.19 → 1.0.36

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 (31) hide show
  1. package/out/Components/Chart/BarChart.d.ts +47 -0
  2. package/out/Components/Chart/BarChart.luau +880 -0
  3. package/out/Components/Chart/Pie.luau +12 -12
  4. package/out/Components/Chart/index.d.ts +1 -0
  5. package/out/Components/Chart/init.luau +3 -0
  6. package/out/Components/Interaction/Toast.d.ts +1 -1
  7. package/out/Components/Interaction/Toast.luau +4 -4
  8. package/out/Components/Interaction/Tooltip.d.ts +1 -1
  9. package/out/Components/Interaction/Tooltip.luau +8 -1
  10. package/out/Components/Layout/Accordion.d.ts +34 -0
  11. package/out/Components/Layout/Accordion.luau +430 -0
  12. package/out/Components/Layout/Container.luau +21 -5
  13. package/out/Components/Layout/HStack.d.ts +2 -1
  14. package/out/Components/Layout/HStack.luau +1 -2
  15. package/out/Components/Layout/VStack.d.ts +4 -1
  16. package/out/Components/Layout/VStack.luau +2 -2
  17. package/out/Components/Layout/index.d.ts +1 -0
  18. package/out/Components/Layout/init.luau +3 -0
  19. package/out/Components/Surface/Box.d.ts +2 -2
  20. package/out/Components/Surface/Card.luau +16 -4
  21. package/out/Components/Surface/Icon.d.ts +1 -1
  22. package/out/Components/Surface/Icon.luau +1 -0
  23. package/out/Components/Typography/Text.luau +26 -13
  24. package/out/Helpers/create-ui-story.d.ts +6 -4
  25. package/out/Helpers/create-ui-story.luau +15 -4
  26. package/out/Interfaces/clean.element.props.d.ts +2 -2
  27. package/out/Theme/theme.template.d.ts +67 -10
  28. package/out/Theme/themes/dark.theme.luau +45 -1
  29. package/out/Theme/themes/default.theme.luau +111 -11
  30. package/out/Theme/themes/sandstone.theme.luau +56 -10
  31. package/package.json +4 -2
@@ -5,12 +5,11 @@ local CleanThemeContext = TS.import(script, script.Parent.Parent.Parent, "Contex
5
5
  local SpacingHelper = TS.import(script, script.Parent.Parent.Parent, "Helpers").SpacingHelper
6
6
  local function HStack(props)
7
7
  local theme = React.useContext(CleanThemeContext)
8
- local padding = UDim.new(0, math.ceil(SpacingHelper:GetPadding(theme, props.spacing) / 2))
9
8
  return React.createElement(React.Fragment, nil, React.createElement("uilistlayout", {
10
9
  FillDirection = Enum.FillDirection.Horizontal,
11
10
  HorizontalFlex = props.HorizontalFlex,
12
11
  VerticalAlignment = props.valign,
13
- Padding = padding,
12
+ Padding = props.Padding or UDim.new(0, math.ceil(SpacingHelper:GetPadding(theme, props.spacing) / 2)),
14
13
  Wraps = if props.Wraps == nil then true else props.Wraps,
15
14
  Change = props.Change,
16
15
  Event = props.Event,
@@ -1,11 +1,14 @@
1
- import React from "@rbxts/react";
1
+ import React, { Binding } from "@rbxts/react";
2
2
  import { SpacedElementProps } from "../../Interfaces";
3
3
  interface VStackProps extends SpacedElementProps {
4
+ valign?: Enum.VerticalAlignment | "Center" | "Top" | "Bottom" | React.Binding<Enum.VerticalAlignment> | undefined;
4
5
  children?: React.ReactNode;
5
6
  HorizontalFlex?: Enum.UIFlexAlignment;
6
7
  VerticalFlex?: Enum.UIFlexAlignment;
8
+ VerticalAlignment?: Enum.VerticalAlignment;
7
9
  Event?: React.InstanceEvent<UIListLayout>;
8
10
  Change?: React.InstanceChangeEvent<UIListLayout>;
11
+ Padding?: UDim | Binding<UDim>;
9
12
  }
10
13
  export declare function VStack(props: VStackProps): React.JSX.Element;
11
14
  export {};
@@ -5,12 +5,12 @@ local CleanThemeContext = TS.import(script, script.Parent.Parent.Parent, "Contex
5
5
  local SpacingHelper = TS.import(script, script.Parent.Parent.Parent, "Helpers").SpacingHelper
6
6
  local function VStack(props)
7
7
  local theme = React.useContext(CleanThemeContext)
8
- local padding = UDim.new(0, SpacingHelper:GetPadding(theme, props.spacing))
9
8
  return React.createElement(React.Fragment, nil, React.createElement("uilistlayout", {
10
9
  FillDirection = Enum.FillDirection.Vertical,
11
10
  HorizontalFlex = props.HorizontalFlex or Enum.UIFlexAlignment.Fill,
12
11
  VerticalFlex = props.VerticalFlex,
13
- Padding = padding,
12
+ VerticalAlignment = props.VerticalAlignment or props.valign,
13
+ Padding = props.Padding or UDim.new(0, SpacingHelper:GetPadding(theme, props.spacing)),
14
14
  SortOrder = Enum.SortOrder.LayoutOrder,
15
15
  Change = props.Change,
16
16
  Event = props.Event,
@@ -1,4 +1,5 @@
1
1
  export * from './Column';
2
+ export * from './Accordion';
2
3
  export * from './Container';
3
4
  export * from './Draggable';
4
5
  export * from './Droppable';
@@ -4,6 +4,9 @@ local exports = {}
4
4
  for _k, _v in TS.import(script, script, "Column") or {} do
5
5
  exports[_k] = _v
6
6
  end
7
+ for _k, _v in TS.import(script, script, "Accordion") or {} do
8
+ exports[_k] = _v
9
+ end
7
10
  for _k, _v in TS.import(script, script, "Container") or {} do
8
11
  exports[_k] = _v
9
12
  end
@@ -1,6 +1,6 @@
1
1
  import React from "@rbxts/react";
2
- import { BackgroundElementProps, ShadowElementProps, SizeElementProps, SpacedElementProps, ZIndexElementProps } from "../../Interfaces/";
3
- export interface BoxProps extends SpacedElementProps, ShadowElementProps, BackgroundElementProps, ZIndexElementProps, SizeElementProps, React.InstanceProps<Frame> {
2
+ import { BackgroundElementProps, PositionElementProps, ShadowElementProps, SizeElementProps, SpacedElementProps, ZIndexElementProps } from "../../Interfaces/";
3
+ export interface BoxProps extends SpacedElementProps, ShadowElementProps, BackgroundElementProps, ZIndexElementProps, SizeElementProps, PositionElementProps, React.InstanceProps<Frame> {
4
4
  'border-thickness'?: number;
5
5
  'border-color'?: Color3;
6
6
  }
@@ -9,6 +9,7 @@ local VStack = _Layout.VStack
9
9
  local _Helpers = TS.import(script, script.Parent.Parent.Parent, "Helpers")
10
10
  local ColorHelper = _Helpers.ColorHelper
11
11
  local CssHelper = _Helpers.CssHelper
12
+ local SizeHelper = _Helpers.SizeHelper
12
13
  local SpacingHelper = _Helpers.SpacingHelper
13
14
  local CleanThemeContext = TS.import(script, script.Parent.Parent.Parent, "Contexts").CleanThemeContext
14
15
  local Padding = TS.import(script, script.Parent.Parent, "Decorator").Padding
@@ -48,11 +49,11 @@ local CardBody = React.forwardRef(function(props, ref)
48
49
  local padding = SpacingHelper:ResolveNumberPadding(SpacingHelper:GetPadding(theme, "md", theme.components.card.header.spacing))
49
50
  local _attributes = {
50
51
  ref = ref,
52
+ Size = SizeHelper:GetSize(props, UDim2.fromScale(0, 0)),
51
53
  }
52
54
  for _k, _v in props do
53
55
  _attributes[_k] = _v
54
56
  end
55
- _attributes.Size = UDim2.fromScale(0, 0)
56
57
  _attributes.AutomaticSize = Enum.AutomaticSize.XY
57
58
  return React.createElement(FlexItem, nil, React.createElement(Container, _attributes, React.createElement(Padding, {
58
59
  resolvedPadding = padding,
@@ -99,13 +100,24 @@ local Card = React.forwardRef(function(props, ref)
99
100
  local _attributes = table.clone(props)
100
101
  setmetatable(_attributes, nil)
101
102
  _attributes.ref = ref
103
+ _attributes.center = nil
102
104
  _attributes.spacing = "None"
103
105
  _attributes["border-color"] = intent.borderColor
104
- return React.createElement(CardContext.Provider, {
105
- value = contextValue,
106
- }, React.createElement(Box, _attributes, React.createElement(VStack, {
106
+ local cardBox = (React.createElement(Box, _attributes, React.createElement(VStack, {
107
107
  spacing = "None",
108
108
  }, props.children)))
109
+ local isCentered = props.center == true and props.Position == nil and props.AnchorPoint == nil
110
+ return React.createElement(CardContext.Provider, {
111
+ value = contextValue,
112
+ }, if isCentered then (React.createElement(Container, {
113
+ Size = UDim2.fromScale(1, 1),
114
+ ZIndex = props.ZIndex,
115
+ LayoutOrder = props.LayoutOrder,
116
+ }, React.createElement("uilistlayout", {
117
+ FillDirection = Enum.FillDirection.Horizontal,
118
+ HorizontalAlignment = Enum.HorizontalAlignment.Center,
119
+ VerticalAlignment = Enum.VerticalAlignment.Center,
120
+ }), cardBox)) else cardBox)
109
121
  end)
110
122
  Card.Header = CardHeader
111
123
  Card.Footer = CardFooter
@@ -1,6 +1,6 @@
1
1
  import React, { Binding } from "@rbxts/react";
2
2
  import { IconElementProps, ScalableElementProps } from "../../Interfaces/";
3
- export interface IconProps extends IconElementProps, ScalableElementProps {
3
+ export interface IconProps extends IconElementProps, ScalableElementProps, React.InstanceProps<ImageLabel> {
4
4
  color?: Color3;
5
5
  Size?: UDim2;
6
6
  spinning?: boolean;
@@ -54,6 +54,7 @@ function Icon(props)
54
54
  return React.createElement("imagelabel", {
55
55
  Rotation = props.Rotation,
56
56
  Size = props.Size or UDim2.fromOffset(size, size),
57
+ LayoutOrder = props.LayoutOrder,
57
58
  Image = if iconId == nil then nil else `rbxassetid://{iconId}`,
58
59
  BackgroundTransparency = 1,
59
60
  ImageColor3 = props.color or theme.colors.intents.primary.default.textColor,
@@ -6,22 +6,35 @@ local Text = React.forwardRef(function(props, ref)
6
6
  local theme = React.useContext(CleanThemeContext)
7
7
  local style = props.typography or theme.typography[props.variant or "body"]
8
8
  local weight = if props.weight == "bold" then Enum.FontWeight.Bold else props.weight or style.weight or Enum.FontWeight.Regular
9
- return React.createElement("textlabel", {
9
+ local textwrapped = props.TextWrap ~= false and props.TextWrapped ~= false
10
+ local _attributes = {
10
11
  ref = ref,
11
12
  Size = UDim2.fromScale(0, 0),
12
13
  AutomaticSize = Enum.AutomaticSize.XY,
13
- LineHeight = style.lineHeight,
14
- BackgroundTransparency = 1,
15
- TextXAlignment = props.align or (props.TextXAlignment or Enum.TextXAlignment.Left),
16
- TextColor3 = props.TextColor3 or theme.colors.intents.primary.default.textColor,
17
- Text = props.text,
18
- TextWrap = props.TextWrap == nil or props.TextWrap == true,
19
- FontFace = Font.fromName(style.font.Name, weight),
20
- FontSize = style.size,
21
- RichText = true,
22
- Event = props.Event,
23
- TextScaled = false,
24
- }, props.children)
14
+ AnchorPoint = props.AnchorPoint,
15
+ }
16
+ local _condition = props.LineHeight
17
+ if _condition == nil then
18
+ _condition = style.lineHeight
19
+ end
20
+ _attributes.LineHeight = _condition
21
+ local _condition_1 = props.BackgroundTransparency
22
+ if _condition_1 == nil then
23
+ _condition_1 = 1
24
+ end
25
+ _attributes.BackgroundTransparency = _condition_1
26
+ _attributes.TextXAlignment = props.align or (props.TextXAlignment or Enum.TextXAlignment.Left)
27
+ _attributes.TextColor3 = props.TextColor3 or theme.colors.intents.primary.default.textColor
28
+ _attributes.Text = props.text
29
+ _attributes.Position = props.Position
30
+ _attributes.TextWrap = textwrapped
31
+ _attributes.TextWrapped = textwrapped
32
+ _attributes.FontFace = Font.fromName(style.font.Name, weight)
33
+ _attributes.FontSize = style.size
34
+ _attributes.RichText = true
35
+ _attributes.Event = props.Event
36
+ _attributes.TextScaled = false
37
+ return React.createElement("textlabel", _attributes, props.children)
25
38
  end)
26
39
  return {
27
40
  Text = Text,
@@ -4,13 +4,15 @@ import { InferProps } from "@rbxts/ui-labs";
4
4
  declare const controls: {
5
5
  Theme: import("@rbxts/ui-labs/src/ControlTypings/Advanced").AdvancedTypes.Choose<"Default" | "Dark" | "Sandstone">;
6
6
  };
7
- type StoryProps = InferProps<typeof controls>;
8
- export declare function createStory(StoryComponent: (props: StoryProps) => React.ReactNode): {
7
+ type StoryControl = Parameters<typeof import("@rbxts/ui-labs").Ordered>[0];
8
+ type StoryControls = Record<string, StoryControl>;
9
+ type StoryProps<T extends StoryControls> = InferProps<typeof controls & T>;
10
+ export declare function createStory<T extends StoryControls = {}>(StoryComponent: (props: StoryProps<T>) => React.ReactNode, additionalControls?: T): {
9
11
  react: typeof React;
10
12
  reactRoblox: typeof ReactRoblox;
11
13
  controls: {
12
14
  Theme: import("@rbxts/ui-labs/src/ControlTypings/Advanced").AdvancedTypes.Choose<"Default" | "Dark" | "Sandstone">;
13
- };
14
- story: (props: StoryProps) => React.JSX.Element;
15
+ } & T;
16
+ story: (props: StoryProps<T>) => React.JSX.Element;
15
17
  };
16
18
  export {};
@@ -11,17 +11,28 @@ local CleanUiProvider = TS.import(script, script.Parent.Parent, "Providers", "ap
11
11
  local controls = {
12
12
  Theme = Choose({ "Default", "Dark", "Sandstone" }),
13
13
  }
14
- local function createStory(StoryComponent)
14
+ local function createStory(StoryComponent, additionalControls)
15
+ local _object = {}
16
+ if additionalControls then
17
+ for _k, _v in additionalControls do
18
+ _object[_k] = _v
19
+ end
20
+ end
21
+ for _k, _v in controls do
22
+ _object[_k] = _v
23
+ end
24
+ local storyControls = _object
15
25
  return {
16
26
  react = React,
17
27
  reactRoblox = ReactRoblox,
18
- controls = controls,
28
+ controls = storyControls,
19
29
  story = function(props)
30
+ local baseProps = props
20
31
  local theme = DefaultTheme
21
- if props.controls.Theme == "Dark" then
32
+ if baseProps.controls.Theme == "Dark" then
22
33
  theme = DarkTheme
23
34
  end
24
- if props.controls.Theme == "Sandstone" then
35
+ if baseProps.controls.Theme == "Sandstone" then
25
36
  theme = SandstoneTheme
26
37
  end
27
38
  local _attributes = table.clone(props)
@@ -1,6 +1,6 @@
1
1
  import { Binding } from "@rbxts/react";
2
2
  import { IconName } from "./icon";
3
- export type ButtonFlag = "default" | "hover" | "focus";
3
+ export type ButtonFlag = "default" | "hover" | "focus" | "disabled";
4
4
  export type CssUnit = "px" | "%";
5
5
  export type Breakpoint = "xs" | "sm" | "md" | "lg" | "xl";
6
6
  export declare const ScaleSizes: readonly ["xs", "sm", "md", "lg", "xl"];
@@ -73,7 +73,7 @@ export interface ScalableElementProps {
73
73
  export interface PositionElementProps {
74
74
  Position?: UDim2 | Binding<UDim2>;
75
75
  AnchorPoint?: Vector2 | Binding<Vector2> | undefined;
76
- center?: CssSize | boolean;
76
+ center?: boolean;
77
77
  top?: CssSize;
78
78
  left?: CssSize;
79
79
  right?: CssSize;
@@ -125,6 +125,27 @@ export interface CleanTheme {
125
125
  intents?: Partial<Record<Intent, InlineIntentColors>>;
126
126
  };
127
127
  };
128
+ accordion: {
129
+ borderColor: Color3;
130
+ borderThickness: number;
131
+ cornerRadius: CssSize;
132
+ spacing?: ScaleSizeValue<number>;
133
+ header: {
134
+ spacing?: ScaleSizeValue<number>;
135
+ typography?: Partial<TypographyStyle> | ScaledTypographyStyle;
136
+ intents?: Partial<Record<Intent, InlineIntentColors>>;
137
+ indicatorSize: number;
138
+ indicatorColor: Color3;
139
+ };
140
+ content: {
141
+ spacing?: ScaleSizeValue<number>;
142
+ backgroundColor: Color3;
143
+ backgroundTransparency: number;
144
+ };
145
+ animation: {
146
+ duration: number;
147
+ };
148
+ };
128
149
  card: {
129
150
  borderThickness: number;
130
151
  cornerRadius: CssSize;
@@ -188,18 +209,54 @@ export interface CleanTheme {
188
209
  cornerRadius: CssSize;
189
210
  intents?: Partial<Record<Intent, Partial<IntentScheme>>>;
190
211
  };
191
- pie: {
212
+ charts: {
192
213
  colors: Color3[];
193
- boxShadow?: CssBoxShadow;
194
- hoverDarken: number;
195
- labels: {
214
+ pie: {
215
+ boxShadow?: CssBoxShadow;
216
+ hoverDarken: number;
217
+ labels: {
218
+ spacing?: ScaleSizeValue<number>;
219
+ backgroundColor?: Color3;
220
+ backgroundTransparency?: number;
221
+ typography?: Partial<TypographyStyle>;
222
+ borderColor?: Color3;
223
+ borderThickness?: number;
224
+ cornerRadius?: CssSize;
225
+ };
226
+ };
227
+ bar: {
196
228
  spacing?: ScaleSizeValue<number>;
197
- backgroundColor?: Color3;
198
- backgroundTransparency?: number;
199
- typography?: Partial<TypographyStyle>;
200
- borderColor?: Color3;
201
- borderThickness?: number;
202
- cornerRadius?: CssSize;
229
+ unstackedTransparency: number;
230
+ borderColor: Color3;
231
+ borderThickness: number;
232
+ cornerRadius: CssSize;
233
+ tweenTime: number;
234
+ axis: {
235
+ color: Color3;
236
+ transparency: number;
237
+ thickness: number;
238
+ };
239
+ xAxis: {
240
+ size: number;
241
+ spacing: number;
242
+ tickColor: Color3;
243
+ tickTransparency: number;
244
+ tickThickness: number;
245
+ tickSize: number;
246
+ };
247
+ yAxis: {
248
+ size: number;
249
+ spacing: number;
250
+ tickColor: Color3;
251
+ tickTransparency: number;
252
+ tickThickness: number;
253
+ tickSize: number;
254
+ };
255
+ gridLines: {
256
+ color: Color3;
257
+ transparency: number;
258
+ thickness: number;
259
+ };
203
260
  };
204
261
  };
205
262
  };
@@ -273,6 +273,35 @@ local DarkTheme = createTheme({
273
273
  },
274
274
  },
275
275
  },
276
+ accordion = {
277
+ borderColor = Color3.fromHex("#4B5568"),
278
+ header = {
279
+ indicatorColor = Color3.fromHex("#C9CDD5"),
280
+ intents = {
281
+ primary = {
282
+ default = {
283
+ backgroundColor = Color3.fromHex("#252B36"),
284
+ textColor = Color3.fromHex("#E8EDF8"),
285
+ },
286
+ hover = {
287
+ backgroundColor = Color3.fromHex("#303949"),
288
+ textColor = Color3.fromHex("#FFFFFF"),
289
+ },
290
+ focus = {
291
+ backgroundColor = Color3.fromHex("#3A414D"),
292
+ textColor = Color3.fromHex("#FFFFFF"),
293
+ },
294
+ disabled = {
295
+ backgroundColor = Color3.fromHex("#1D222B"),
296
+ textColor = Color3.fromHex("#697386"),
297
+ },
298
+ },
299
+ },
300
+ },
301
+ content = {
302
+ backgroundColor = Color3.fromHex("#171B22"),
303
+ },
304
+ },
276
305
  draggable = {
277
306
  placeholder = {
278
307
  backgroundColor = Color3.fromHex("#2A303B"),
@@ -336,8 +365,23 @@ local DarkTheme = createTheme({
336
365
  header = {},
337
366
  body = {},
338
367
  },
339
- pie = {
368
+ charts = {
340
369
  colors = { Color3.fromHex("#4CC47A"), Color3.fromHex("#E35B5B"), Color3.fromHex("#F0B74A"), Color3.fromHex("#4D9EEA"), Color3.fromHex("#A676F0"), Color3.fromHex("#43C2BA"), Color3.fromHex("#F48A52"), Color3.fromHex("#E06AAE"), Color3.fromHex("#6FA8DC"), Color3.fromHex("#9CCC4A") },
370
+ bar = {
371
+ borderColor = Color3.fromHex("#111827"),
372
+ axis = {
373
+ color = Color3.fromHex("#AAB4C3"),
374
+ },
375
+ xAxis = {
376
+ tickColor = Color3.fromHex("#AAB4C3"),
377
+ },
378
+ yAxis = {
379
+ tickColor = Color3.fromHex("#AAB4C3"),
380
+ },
381
+ gridLines = {
382
+ color = Color3.fromHex("#6B7688"),
383
+ },
384
+ },
341
385
  },
342
386
  },
343
387
  icons = {
@@ -1,5 +1,5 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
- local font = Enum.Font.Gotham
2
+ local font = Enum.Font.Roboto
3
3
  local DefaultTheme = {
4
4
  colors = {
5
5
  intents = {
@@ -269,6 +269,64 @@ local DefaultTheme = {
269
269
  },
270
270
  },
271
271
  },
272
+ accordion = {
273
+ borderColor = Color3.fromHex("#D9DEE8"),
274
+ borderThickness = 1,
275
+ cornerRadius = 8,
276
+ spacing = {
277
+ xs = 0,
278
+ sm = 0,
279
+ md = 0,
280
+ lg = 0,
281
+ xl = 0,
282
+ },
283
+ header = {
284
+ spacing = {
285
+ xs = 4,
286
+ sm = 8,
287
+ md = 12,
288
+ lg = 16,
289
+ xl = 24,
290
+ },
291
+ indicatorSize = 14,
292
+ indicatorColor = Color3.fromHex("#4F4F4F"),
293
+ intents = {
294
+ primary = {
295
+ default = {
296
+ backgroundColor = Color3.fromHex("#F2F4F8"),
297
+ textColor = Color3.fromHex("#1D2433"),
298
+ },
299
+ hover = {
300
+ backgroundColor = Color3.fromHex("#E7EBF2"),
301
+ textColor = Color3.fromHex("#000000"),
302
+ },
303
+ focus = {
304
+ backgroundColor = Color3.fromHex("#E1E3E7"),
305
+ textColor = Color3.fromHex("#000000"),
306
+ },
307
+ disabled = {
308
+ backgroundColor = Color3.fromHex("#F5F5F5"),
309
+ backgroundTransparency = 0.35,
310
+ textColor = Color3.fromHex("#8A8A8A"),
311
+ },
312
+ },
313
+ },
314
+ },
315
+ content = {
316
+ spacing = {
317
+ xs = 4,
318
+ sm = 8,
319
+ md = 12,
320
+ lg = 16,
321
+ xl = 24,
322
+ },
323
+ backgroundColor = Color3.fromHex("#FFFFFF"),
324
+ backgroundTransparency = 0,
325
+ },
326
+ animation = {
327
+ duration = 0.2,
328
+ },
329
+ },
272
330
  draggable = {
273
331
  placeholder = {
274
332
  backgroundColor = Color3.fromHex("#D9DEE8"),
@@ -468,18 +526,60 @@ local DefaultTheme = {
468
526
  },
469
527
  },
470
528
  },
471
- pie = {
472
- hoverDarken = 0.2,
473
- boxShadow = {
474
- shadow = "0px 0px 8px 3px",
475
- color = Color3.fromHex("#000000"),
476
- transparency = 0.6,
477
- },
529
+ charts = {
478
530
  colors = { Color3.fromHex("#2E9D63"), Color3.fromHex("#D64545"), Color3.fromHex("#E7A92F"), Color3.fromHex("#3187C8"), Color3.fromHex("#8E5AD7"), Color3.fromHex("#2FA7A1"), Color3.fromHex("#F26D4F"), Color3.fromHex("#D94F9D"), Color3.fromHex("#6B7C93"), Color3.fromHex("#7CB342") },
479
- labels = {
531
+ pie = {
532
+ hoverDarken = 0.2,
533
+ boxShadow = {
534
+ shadow = "0px 0px 8px 3px",
535
+ color = Color3.fromHex("#000000"),
536
+ transparency = 0.6,
537
+ },
538
+ labels = {
539
+ cornerRadius = 4,
540
+ typography = {
541
+ weight = Enum.FontWeight.Bold,
542
+ },
543
+ },
544
+ },
545
+ bar = {
546
+ spacing = {
547
+ xs = 4,
548
+ sm = 8,
549
+ md = 12,
550
+ lg = 16,
551
+ xl = 20,
552
+ },
553
+ unstackedTransparency = 0,
554
+ borderColor = Color3.fromHex("#3A4352"),
555
+ borderThickness = 1,
480
556
  cornerRadius = 4,
481
- typography = {
482
- weight = Enum.FontWeight.Bold,
557
+ tweenTime = 0.5,
558
+ axis = {
559
+ color = Color3.fromHex("#3A4352"),
560
+ transparency = 0.5,
561
+ thickness = 2,
562
+ },
563
+ xAxis = {
564
+ size = 50,
565
+ spacing = 4,
566
+ tickColor = Color3.fromHex("#3A4352"),
567
+ tickTransparency = 0.5,
568
+ tickThickness = 2,
569
+ tickSize = 10,
570
+ },
571
+ yAxis = {
572
+ size = 50,
573
+ spacing = 4,
574
+ tickColor = Color3.fromHex("#3A4352"),
575
+ tickTransparency = 0.5,
576
+ tickThickness = 2,
577
+ tickSize = 10,
578
+ },
579
+ gridLines = {
580
+ color = Color3.fromHex("#6B7C93"),
581
+ transparency = 0.8,
582
+ thickness = 2,
483
583
  },
484
584
  },
485
585
  },
@@ -273,6 +273,35 @@ local SandstoneTheme = createTheme({
273
273
  },
274
274
  },
275
275
  },
276
+ accordion = {
277
+ borderColor = Color3.fromHex("#B9A98F"),
278
+ header = {
279
+ indicatorColor = Color3.fromHex("#496E68"),
280
+ intents = {
281
+ primary = {
282
+ default = {
283
+ backgroundColor = Color3.fromHex("#EFE5D3"),
284
+ textColor = Color3.fromHex("#4A4034"),
285
+ },
286
+ hover = {
287
+ backgroundColor = Color3.fromHex("#DFE8DC"),
288
+ textColor = Color3.fromHex("#244F4A"),
289
+ },
290
+ focus = {
291
+ backgroundColor = Color3.fromHex("#CFE1DC"),
292
+ textColor = Color3.fromHex("#183B37"),
293
+ },
294
+ disabled = {
295
+ backgroundColor = Color3.fromHex("#E8DFCF"),
296
+ textColor = Color3.fromHex("#9B8B73"),
297
+ },
298
+ },
299
+ },
300
+ },
301
+ content = {
302
+ backgroundColor = Color3.fromHex("#FFF9ED"),
303
+ },
304
+ },
276
305
  draggable = {
277
306
  placeholder = {
278
307
  backgroundColor = Color3.fromHex("#EFE5D3"),
@@ -336,17 +365,34 @@ local SandstoneTheme = createTheme({
336
365
  header = {},
337
366
  body = {},
338
367
  },
339
- pie = {
340
- boxShadow = {
341
- shadow = "0px 0px",
342
- color = Color3.fromHex("#FFFFFF"),
343
- transparency = 1,
344
- },
368
+ charts = {
345
369
  colors = { Color3.fromHex("#7A9E7E"), Color3.fromHex("#A66C5D"), Color3.fromHex("#B89A5A"), Color3.fromHex("#6E97A8"), Color3.fromHex("#8A729E"), Color3.fromHex("#6F9A90"), Color3.fromHex("#C97A4A"), Color3.fromHex("#C58A9A"), Color3.fromHex("#8F7B5E"), Color3.fromHex("#8C9B5E") },
346
- labels = {
347
- backgroundColor = Color3.fromHex("#FFF9ED"),
348
- backgroundTransparency = 0,
349
- borderColor = Color3.fromHex("#D8CDBA"),
370
+ pie = {
371
+ boxShadow = {
372
+ shadow = "0px 0px",
373
+ color = Color3.fromHex("#FFFFFF"),
374
+ transparency = 1,
375
+ },
376
+ labels = {
377
+ backgroundColor = Color3.fromHex("#FFF9ED"),
378
+ backgroundTransparency = 0,
379
+ borderColor = Color3.fromHex("#D8CDBA"),
380
+ },
381
+ },
382
+ bar = {
383
+ borderColor = Color3.fromHex("#5F5547"),
384
+ axis = {
385
+ color = Color3.fromHex("#5F5547"),
386
+ },
387
+ xAxis = {
388
+ tickColor = Color3.fromHex("#786B59"),
389
+ },
390
+ yAxis = {
391
+ tickColor = Color3.fromHex("#786B59"),
392
+ },
393
+ gridLines = {
394
+ color = Color3.fromHex("#8F7B5E"),
395
+ },
350
396
  },
351
397
  },
352
398
  },
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@rbxts/react-clean-ui",
3
- "version": "1.0.19",
3
+ "version": "1.0.36",
4
4
  "description": "",
5
5
  "main": "out/init.lua",
6
6
  "scripts": {
7
7
  "build": "rbxtsc",
8
8
  "watch": "rbxtsc -w",
9
- "prepublishOnly": "npm run build"
9
+ "prepublishOnly": "npm run build",
10
+ "screenshots": "node scripts/generate-screenshots.js"
10
11
  },
11
12
  "keywords": [],
12
13
  "author": "",
@@ -22,6 +23,7 @@
22
23
  },
23
24
  "devDependencies": {
24
25
  "@rbxts/compiler-types": "^3.0.0-types.0",
26
+ "@rbxts/react-screenshot-plugin": "^0.1.6",
25
27
  "@rbxts/types": "^1.0.938",
26
28
  "@typescript-eslint/eslint-plugin": "^8.63.0",
27
29
  "@typescript-eslint/parser": "^8.63.0",