@rbxts/react-clean-ui 1.0.14 → 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 (64) 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.d.ts +27 -0
  4. package/out/Components/Chart/Pie.luau +281 -0
  5. package/out/Components/Chart/index.d.ts +2 -0
  6. package/out/Components/Chart/init.luau +10 -0
  7. package/out/Components/Decorator/BoxShadow.d.ts +2 -1
  8. package/out/Components/Decorator/BoxShadow.luau +51 -28
  9. package/out/Components/Input/Select.d.ts +6 -14
  10. package/out/Components/Input/Select.luau +111 -151
  11. package/out/Components/Input/Slider.d.ts +3 -37
  12. package/out/Components/Input/Slider.luau +271 -300
  13. package/out/Components/Interaction/Toast.d.ts +1 -1
  14. package/out/Components/Interaction/Toast.luau +4 -4
  15. package/out/Components/Interaction/Tooltip.d.ts +1 -1
  16. package/out/Components/Interaction/Tooltip.luau +8 -1
  17. package/out/Components/Layout/Accordion.d.ts +34 -0
  18. package/out/Components/Layout/Accordion.luau +430 -0
  19. package/out/Components/Layout/Column.d.ts +2 -8
  20. package/out/Components/Layout/Column.luau +28 -48
  21. package/out/Components/Layout/Container.luau +21 -5
  22. package/out/Components/Layout/Draggable.d.ts +7 -31
  23. package/out/Components/Layout/Draggable.luau +190 -214
  24. package/out/Components/Layout/Fieldset.d.ts +8 -18
  25. package/out/Components/Layout/Fieldset.luau +42 -84
  26. package/out/Components/Layout/Group.d.ts +7 -14
  27. package/out/Components/Layout/Group.luau +111 -129
  28. package/out/Components/Layout/HStack.d.ts +2 -1
  29. package/out/Components/Layout/HStack.luau +1 -2
  30. package/out/Components/Layout/Row.d.ts +2 -11
  31. package/out/Components/Layout/Row.luau +46 -71
  32. package/out/Components/Layout/Tabs.d.ts +10 -18
  33. package/out/Components/Layout/Tabs.luau +85 -104
  34. package/out/Components/Layout/VStack.d.ts +4 -1
  35. package/out/Components/Layout/VStack.luau +2 -2
  36. package/out/Components/Layout/index.d.ts +1 -0
  37. package/out/Components/Layout/init.luau +3 -0
  38. package/out/Components/Navigation/Menu.d.ts +6 -10
  39. package/out/Components/Navigation/Menu.luau +38 -65
  40. package/out/Components/Surface/Box.d.ts +2 -2
  41. package/out/Components/Surface/Card.d.ts +8 -11
  42. package/out/Components/Surface/Card.luau +40 -48
  43. package/out/Components/Surface/Icon.d.ts +1 -1
  44. package/out/Components/Surface/Icon.luau +1 -0
  45. package/out/Components/Surface/index.d.ts +0 -1
  46. package/out/Components/Surface/init.luau +0 -3
  47. package/out/Components/Typography/Text.luau +26 -13
  48. package/out/Components/index.d.ts +1 -0
  49. package/out/Components/init.luau +3 -0
  50. package/out/Helpers/create-ui-story.d.ts +6 -4
  51. package/out/Helpers/create-ui-story.luau +15 -4
  52. package/out/Helpers/css.helper.d.ts +2 -1
  53. package/out/Helpers/css.helper.luau +25 -0
  54. package/out/Helpers/size.helper.luau +1 -1
  55. package/out/Interfaces/clean.element.props.d.ts +7 -2
  56. package/out/Providers/registry.provider.d.ts +1 -0
  57. package/out/Providers/registry.provider.luau +5 -0
  58. package/out/Theme/theme.template.d.ts +72 -1
  59. package/out/Theme/themes/dark.theme.luau +47 -0
  60. package/out/Theme/themes/default.theme.luau +116 -1
  61. package/out/Theme/themes/sandstone.theme.luau +59 -0
  62. package/package.json +4 -2
  63. package/out/Components/Surface/Panel.d.ts +0 -4
  64. package/out/Components/Surface/Panel.luau +0 -33
@@ -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,
@@ -5,3 +5,4 @@ export * from './Input/';
5
5
  export * from './Typography/Text';
6
6
  export * from './Navigation/Menu';
7
7
  export * from './Interaction';
8
+ export * from './Chart/';
@@ -22,4 +22,7 @@ end
22
22
  for _k, _v in TS.import(script, script, "Interaction") or {} do
23
23
  exports[_k] = _v
24
24
  end
25
+ for _k, _v in TS.import(script, script, "Chart") or {} do
26
+ exports[_k] = _v
27
+ end
25
28
  return exports
@@ -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,4 +1,4 @@
1
- import { CssShadow, CssSize } from "../Interfaces/clean.element.props";
1
+ import { CssBoxShadow, CssShadow, CssSize } from "../Interfaces/clean.element.props";
2
2
  interface ParsedShadow {
3
3
  offset: UDim2;
4
4
  blurRadius: UDim;
@@ -8,5 +8,6 @@ export declare class CssHelper {
8
8
  static parseCssShadow(value: CssShadow): ParsedShadow | undefined;
9
9
  private static isZero;
10
10
  static parseCssSize(value: CssSize): UDim;
11
+ static ResolveShadow(shadow: CssBoxShadow): React.InstanceProps<UIShadow>;
11
12
  }
12
13
  export {};
@@ -108,6 +108,31 @@ do
108
108
  end
109
109
  return UDim.new(0, _condition)
110
110
  end
111
+ function CssHelper:ResolveShadow(shadow)
112
+ local offset = self:parseCssShadow(shadow.shadow)
113
+ local _object = {}
114
+ local _left = "Offset"
115
+ local _result = offset
116
+ if _result ~= nil then
117
+ _result = _result.offset
118
+ end
119
+ _object[_left] = _result
120
+ local _left_1 = "BlurRadius"
121
+ local _result_1 = offset
122
+ if _result_1 ~= nil then
123
+ _result_1 = _result_1.blurRadius
124
+ end
125
+ _object[_left_1] = _result_1
126
+ local _left_2 = "Spread"
127
+ local _result_2 = offset
128
+ if _result_2 ~= nil then
129
+ _result_2 = _result_2.spread
130
+ end
131
+ _object[_left_2] = _result_2
132
+ _object.Color = shadow.color
133
+ _object.Transparency = shadow.transparency
134
+ return _object
135
+ end
111
136
  end
112
137
  return {
113
138
  CssHelper = CssHelper,
@@ -65,7 +65,7 @@ do
65
65
  if props.width == "Auto" then
66
66
  return Enum.AutomaticSize.X
67
67
  end
68
- local _condition = props.Size
68
+ local _condition = props.Size ~= nil
69
69
  if not _condition then
70
70
  local _condition_1 = props.width
71
71
  if _condition_1 ~= 0 and _condition_1 == _condition_1 and _condition_1 ~= "" and _condition_1 then
@@ -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"];
@@ -47,6 +47,11 @@ export type CssBreakpointSize = {
47
47
  };
48
48
  export type CssQuad = CssSize | `${CssSize} ${CssSize}` | `${CssSize} ${CssSize} ${CssSize}` | `${CssSize} ${CssSize} ${CssSize} ${CssSize}`;
49
49
  export type CssShadow = CssQuad;
50
+ export type CssBoxShadow = {
51
+ shadow: CssShadow;
52
+ color: Color3;
53
+ transparency: number;
54
+ };
50
55
  export type CssPadding = CssQuad;
51
56
  export type ResponsiveCssSize = CssSize | CssBreakpointSize;
52
57
  export interface ZIndexElementProps {
@@ -68,7 +73,7 @@ export interface ScalableElementProps {
68
73
  export interface PositionElementProps {
69
74
  Position?: UDim2 | Binding<UDim2>;
70
75
  AnchorPoint?: Vector2 | Binding<Vector2> | undefined;
71
- center?: CssSize | boolean;
76
+ center?: boolean;
72
77
  top?: CssSize;
73
78
  left?: CssSize;
74
79
  right?: CssSize;
@@ -20,6 +20,7 @@ export interface RegistryContextValue {
20
20
  unregister: <T extends defined>(guiObject: GuiObject, key: RegistryKey<T>) => void;
21
21
  get: <T extends defined>(guiObject: GuiObject, key: RegistryKey<T>) => T | undefined;
22
22
  getAll: <T extends defined>(key: RegistryKey<T>) => T[];
23
+ GetNextId: () => string;
23
24
  }
24
25
  export declare const RegistryContext: React.Context<RegistryContextValue | undefined>;
25
26
  export interface RegistryProviderProps {
@@ -1,6 +1,7 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
2
  local TS = _G[script]
3
3
  local React = TS.import(script, TS.getModule(script, "@rbxts", "react"))
4
+ local HttpService = TS.import(script, TS.getModule(script, "@rbxts", "services")).HttpService
4
5
  -- This registry is used to keep a global map of GuiObjects => React components
5
6
  -- For example Droppable zones use this to register themselves
6
7
  local DroppableRegistryKey = {
@@ -72,11 +73,15 @@ local function RegistryProvider(props)
72
73
  end
73
74
  return result
74
75
  end
76
+ local GetNextId = function()
77
+ return HttpService:GenerateGUID(false)
78
+ end
75
79
  local contextValue = {
76
80
  register = register,
77
81
  unregister = unregister,
78
82
  get = get,
79
83
  getAll = getAll,
84
+ GetNextId = GetNextId,
80
85
  }
81
86
  return React.createElement(RegistryContext.Provider, {
82
87
  value = contextValue,
@@ -1,4 +1,4 @@
1
- import { CssShadow, CssSize, Breakpoint, BreakpointValue, ScaleSizeValue, ScaleSize, Intent, IconSet, TextVariant, ButtonFlag, PositionElementProps } from "../Interfaces/";
1
+ import { CssShadow, CssSize, Breakpoint, BreakpointValue, ScaleSizeValue, ScaleSize, Intent, IconSet, TextVariant, ButtonFlag, PositionElementProps, CssBoxShadow } from "../Interfaces/";
2
2
  export interface TypographyStyle {
3
3
  font: Enum.Font;
4
4
  size: Enum.FontSize;
@@ -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,6 +209,56 @@ export interface CleanTheme {
188
209
  cornerRadius: CssSize;
189
210
  intents?: Partial<Record<Intent, Partial<IntentScheme>>>;
190
211
  };
212
+ charts: {
213
+ colors: Color3[];
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: {
228
+ spacing?: ScaleSizeValue<number>;
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
+ };
260
+ };
261
+ };
191
262
  };
192
263
  icons: Partial<IconSet>;
193
264
  iconSize: ScaleSizeValue<number>;
@@ -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,6 +365,24 @@ local DarkTheme = createTheme({
336
365
  header = {},
337
366
  body = {},
338
367
  },
368
+ charts = {
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
+ },
385
+ },
339
386
  },
340
387
  icons = {
341
388
  ["shopping-cart"] = 112388431913339,
@@ -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,6 +526,63 @@ local DefaultTheme = {
468
526
  },
469
527
  },
470
528
  },
529
+ charts = {
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") },
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,
556
+ cornerRadius = 4,
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,
583
+ },
584
+ },
585
+ },
471
586
  },
472
587
  icons = {
473
588
  ["shopping-cart"] = 112388431913339,
@@ -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,6 +365,36 @@ local SandstoneTheme = createTheme({
336
365
  header = {},
337
366
  body = {},
338
367
  },
368
+ charts = {
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") },
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
+ },
396
+ },
397
+ },
339
398
  },
340
399
  icons = {
341
400
  ["shopping-cart"] = 112388431913339,
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@rbxts/react-clean-ui",
3
- "version": "1.0.14",
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",
@@ -1,4 +0,0 @@
1
- import React, { Component } from "@rbxts/react";
2
- export declare class Panel extends Component {
3
- render(): React.ReactNode;
4
- }
@@ -1,33 +0,0 @@
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 React = _react
5
- local Component = _react.Component
6
- local ReactComponent = _react.ReactComponent
7
- local Box = TS.import(script, script.Parent, "Box").Box
8
- local VStack = TS.import(script, script.Parent.Parent, "Layout", "VStack").VStack
9
- local Panel
10
- do
11
- local super = Component
12
- Panel = setmetatable({}, {
13
- __tostring = function()
14
- return "Panel"
15
- end,
16
- __index = super,
17
- })
18
- Panel.__index = Panel
19
- function Panel.new(...)
20
- local self = setmetatable({}, Panel)
21
- return self:constructor(...) or self
22
- end
23
- function Panel:constructor(...)
24
- super.constructor(self, ...)
25
- end
26
- function Panel:render()
27
- return React.createElement(Box, nil, React.createElement(VStack))
28
- end
29
- Panel = ReactComponent(Panel) or Panel
30
- end
31
- return {
32
- Panel = Panel,
33
- }