@firecms/ui 3.0.0-canary.16 → 3.0.0-canary.160

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 (111) hide show
  1. package/README.md +60 -150
  2. package/dist/components/Avatar.d.ts +1 -0
  3. package/dist/components/BooleanSwitch.d.ts +1 -1
  4. package/dist/components/BooleanSwitchWithLabel.d.ts +4 -1
  5. package/dist/components/Button.d.ts +1 -1
  6. package/dist/components/CenteredView.d.ts +4 -2
  7. package/dist/components/Checkbox.d.ts +3 -2
  8. package/dist/components/Chip.d.ts +3 -2
  9. package/dist/components/DateTimeField.d.ts +5 -7
  10. package/dist/components/Dialog.d.ts +4 -1
  11. package/dist/components/DialogContent.d.ts +2 -1
  12. package/dist/components/DialogTitle.d.ts +10 -0
  13. package/dist/components/ExpandablePanel.d.ts +2 -1
  14. package/dist/components/FileUpload.d.ts +2 -2
  15. package/dist/components/InputLabel.d.ts +2 -2
  16. package/dist/components/Label.d.ts +4 -1
  17. package/dist/components/Markdown.d.ts +1 -0
  18. package/dist/components/Menu.d.ts +6 -2
  19. package/dist/components/Menubar.d.ts +79 -0
  20. package/dist/components/MultiSelect.d.ts +32 -16
  21. package/dist/components/Popover.d.ts +2 -1
  22. package/dist/components/RadioGroup.d.ts +26 -3
  23. package/dist/components/Select.d.ts +8 -11
  24. package/dist/components/Separator.d.ts +2 -1
  25. package/dist/components/Sheet.d.ts +6 -0
  26. package/dist/components/Slider.d.ts +21 -0
  27. package/dist/components/Table.d.ts +10 -10
  28. package/dist/components/Tabs.d.ts +4 -2
  29. package/dist/components/TextField.d.ts +1 -1
  30. package/dist/components/TextareaAutosize.d.ts +3 -34
  31. package/dist/components/Tooltip.d.ts +6 -2
  32. package/dist/components/Typography.d.ts +5 -4
  33. package/dist/components/index.d.ts +3 -1
  34. package/dist/hooks/index.d.ts +3 -0
  35. package/dist/icons/Icon.d.ts +3 -3
  36. package/dist/index.css +73 -0
  37. package/dist/index.d.ts +1 -0
  38. package/dist/index.es.js +50174 -20590
  39. package/dist/index.es.js.map +1 -1
  40. package/dist/index.umd.js +50441 -857
  41. package/dist/index.umd.js.map +1 -1
  42. package/dist/styles.d.ts +9 -9
  43. package/dist/util/{cn.d.ts → cls.d.ts} +4 -0
  44. package/dist/util/index.d.ts +1 -3
  45. package/package.json +119 -118
  46. package/src/components/Alert.tsx +4 -4
  47. package/src/components/Autocomplete.tsx +7 -5
  48. package/src/components/Avatar.tsx +41 -26
  49. package/src/components/Badge.tsx +2 -2
  50. package/src/components/BooleanSwitch.tsx +14 -13
  51. package/src/components/BooleanSwitchWithLabel.tsx +17 -8
  52. package/src/components/Button.tsx +31 -23
  53. package/src/components/Card.tsx +4 -3
  54. package/src/components/CenteredView.tsx +26 -15
  55. package/src/components/Checkbox.tsx +16 -14
  56. package/src/components/Chip.tsx +13 -10
  57. package/src/components/CircularProgress.tsx +3 -3
  58. package/src/components/Collapse.tsx +4 -2
  59. package/src/components/Container.tsx +3 -2
  60. package/src/components/DateTimeField.tsx +144 -921
  61. package/src/components/DebouncedTextField.tsx +1 -0
  62. package/src/components/Dialog.tsx +17 -7
  63. package/src/components/DialogActions.tsx +3 -3
  64. package/src/components/DialogContent.tsx +7 -3
  65. package/src/components/DialogTitle.tsx +41 -0
  66. package/src/components/ExpandablePanel.tsx +20 -12
  67. package/src/components/FileUpload.tsx +11 -13
  68. package/src/components/IconButton.tsx +7 -11
  69. package/src/components/InfoLabel.tsx +2 -2
  70. package/src/components/InputLabel.tsx +12 -9
  71. package/src/components/Label.tsx +18 -4
  72. package/src/components/Markdown.tsx +15 -3
  73. package/src/components/Menu.tsx +50 -31
  74. package/src/components/Menubar.tsx +322 -0
  75. package/src/components/MultiSelect.tsx +341 -167
  76. package/src/components/Paper.tsx +2 -2
  77. package/src/components/Popover.tsx +19 -15
  78. package/src/components/RadioGroup.tsx +42 -9
  79. package/src/components/SearchBar.tsx +12 -11
  80. package/src/components/Select.tsx +142 -130
  81. package/src/components/Separator.tsx +10 -4
  82. package/src/components/Sheet.tsx +53 -31
  83. package/src/components/Skeleton.tsx +9 -6
  84. package/src/components/Slider.tsx +110 -0
  85. package/src/components/Table.tsx +54 -35
  86. package/src/components/Tabs.tsx +17 -15
  87. package/src/components/TextField.tsx +25 -23
  88. package/src/components/TextareaAutosize.tsx +4 -3
  89. package/src/components/Tooltip.tsx +33 -16
  90. package/src/components/Typography.tsx +42 -26
  91. package/src/components/common/SelectInputLabel.tsx +3 -3
  92. package/src/components/index.tsx +3 -1
  93. package/src/hooks/index.ts +3 -0
  94. package/src/{util → hooks}/useDebounceValue.tsx +2 -0
  95. package/src/{util → hooks}/useInjectStyles.tsx +1 -0
  96. package/src/{util → hooks}/useOutsideAlerter.tsx +2 -0
  97. package/src/icons/Icon.tsx +48 -43
  98. package/src/icons/icon_keys.ts +114 -1301
  99. package/src/index.css +73 -0
  100. package/src/index.ts +1 -0
  101. package/src/scripts/generateIconKeys.ts +20 -11
  102. package/src/styles.ts +9 -9
  103. package/src/util/cls.ts +14 -0
  104. package/src/util/index.ts +1 -3
  105. package/tailwind.config.js +42 -26
  106. package/dist/components/Spinner.d.ts +0 -1
  107. package/src/components/Spinner.tsx +0 -18
  108. package/src/util/cn.ts +0 -6
  109. /package/dist/{util → hooks}/useDebounceValue.d.ts +0 -0
  110. /package/dist/{util → hooks}/useInjectStyles.d.ts +0 -0
  111. /package/dist/{util → hooks}/useOutsideAlerter.d.ts +0 -0
@@ -1,12 +1,11 @@
1
+ "use client";
1
2
  import React from "react";
2
-
3
- import { focusedMixin } from "../styles";
4
- import { cn } from "../util";
3
+ import { cls } from "../util";
5
4
 
6
5
  export type ButtonProps<P extends React.ElementType> =
7
6
  Omit<(P extends "button" ? React.ButtonHTMLAttributes<HTMLButtonElement> : React.ComponentProps<P>), "onClick">
8
7
  & {
9
- variant?: "filled" | "outlined" | "text";
8
+ variant?: "filled" | "neutral" | "outlined" | "text";
10
9
  disabled?: boolean;
11
10
  color?: "primary" | "secondary" | "text" | "error";
12
11
  size?: "small" | "medium" | "large" | "xl" | "2xl";
@@ -32,33 +31,42 @@ const ButtonInner = React.forwardRef<
32
31
  }: ButtonProps<any>, ref) => {
33
32
 
34
33
  const baseClasses =
35
- "h-fit rounded-md uppercase inline-flex items-center justify-center p-2 px-4 text-sm font-medium focus:outline-none transition ease-in-out duration-150 gap-2";
34
+ "typography-button h-fit rounded-md whitespace-nowrap inline-flex items-center justify-center p-2 px-4 focus:outline-none transition ease-in-out duration-150 gap-2";
36
35
 
37
- const buttonClasses = cn({
36
+ const buttonClasses = cls({
38
37
  "w-full": fullWidth,
39
38
  "w-fit": !fullWidth,
39
+
40
40
  // Filled Variants
41
- "border border-transparent bg-primary hover:bg-primary-dark focus:ring-primary shadow hover:ring-1 hover:ring-primary text-white": variant === "filled" && color === "primary" && !disabled,
42
- "border border-transparent bg-secondary hover:bg-secondary-dark focus:ring-secondary shadow hover:ring-1 hover:ring-secondary text-white": variant === "filled" && color === "secondary" && !disabled,
43
- "border border-transparent bg-red-500 hover:bg-red-500 focus:ring-red-500 shadow hover:ring-1 hover:ring-red-600 text-white": variant === "filled" && color === "error" && !disabled,
44
- "border border-transparent bg-slate-200 hover:bg-slate-300 focus:ring-slate-400 shadow hover:ring-1 hover:ring-slate-400 text-text-primary dark:text-text-primary-dark": variant === "filled" && color === "text" && !disabled,
41
+ "border border-primary bg-primary hover:bg-primary-dark focus:ring-primary shadow hover:ring-1 hover:ring-primary text-white hover:text-white": variant === "filled" && color === "primary" && !disabled,
42
+ "border border-secondary bg-secondary hover:bg-secondary-dark focus:ring-secondary shadow hover:ring-1 hover:ring-secondary text-white hover:text-white": variant === "filled" && color === "secondary" && !disabled,
43
+ "border border-red-500 bg-red-500 hover:bg-red-500 focus:ring-red-500 shadow hover:ring-1 hover:ring-red-600 text-white hover:text-white": variant === "filled" && color === "error" && !disabled,
44
+ "border border-surface-accent-200 bg-surface-accent-200 hover:bg-surface-accent-300 focus:ring-surface-accent-400 shadow hover:ring-1 hover:ring-surface-accent-400 text-text-primary hover:text-text-primary dark:text-text-primary-dark hover:dark:text-text-primary-dark": variant === "filled" && color === "text" && !disabled,
45
+
45
46
  // Text Variants
46
- "border border-transparent text-primary hover:bg-slate-200 dark:hover:bg-gray-900": variant === "text" && color === "primary" && !disabled,
47
- "border border-transparent text-secondary hover:bg-secondary-bg": variant === "text" && color === "secondary" && !disabled,
48
- "border border-transparent text-red-500 hover:bg-red-500 hover:bg-opacity-10": variant === "text" && color === "error" && !disabled,
49
- "border border-transparent text-text-primary dark:text-text-primary-dark hover:bg-slate-200 hover:dark:bg-gray-700": variant === "text" && color === "text" && !disabled,
47
+ "border border-transparent text-primary hover:text-primary hover:bg-surface-accent-200 dark:hover:bg-surface-900": variant === "text" && color === "primary" && !disabled,
48
+ "border border-transparent text-secondary hover:text-secondary hover:bg-secondary-bg": variant === "text" && color === "secondary" && !disabled,
49
+ "border border-transparent text-red-500 hover:text-red-500 hover:bg-red-500 hover:bg-opacity-10": variant === "text" && color === "error" && !disabled,
50
+ "border border-transparent text-text-primary hover:text-text-primary dark:text-text-primary-dark hover:dark:text-text-primary-dark hover:bg-surface-accent-200 hover:dark:bg-surface-700": variant === "text" && color === "text" && !disabled,
51
+
50
52
  // Outlined Variants
51
- "border border-primary text-primary hover:bg-primary-bg": variant === "outlined" && color === "primary" && !disabled,
52
- "border border-secondary text-secondary hover:bg-secondary-bg": variant === "outlined" && color === "secondary" && !disabled,
53
- "border border-red-500 text-red-500 hover:bg-red-500": variant === "outlined" && color === "error" && !disabled,
54
- "border border-slate-400 text-text-primary dark:text-text-primary-dark hover:bg-slate-200": variant === "outlined" && color === "text" && !disabled,
53
+ "border border-primary text-primary hover:text-primary hover:bg-primary-bg": variant === "outlined" && color === "primary" && !disabled,
54
+ "border border-secondary text-secondary hover:text-secondary hover:bg-secondary-bg": variant === "outlined" && color === "secondary" && !disabled,
55
+ "border border-red-500 text-red-500 hover:text-red-500 hover:bg-red-500 hover:text-white": variant === "outlined" && color === "error" && !disabled,
56
+ "border border-surface-accent-400 text-text-primary hover:text-text-primary dark:text-text-primary-dark hover:bg-surface-accent-200": variant === "outlined" && color === "text" && !disabled,
57
+
58
+ // Neutral Variants
59
+ "border border-transparent bg-surface-100 hover:bg-surface-accent-200 text-text-primary dark:bg-surface-800 dark:hover:bg-surface-accent-700 dark:text-white": variant === "neutral" && (color === "primary" || color === "text") && !disabled,
60
+ "border border-transparent bg-surface-100 hover:bg-surface-accent-200 text-text-secondary dark:bg-surface-800 dark:hover:bg-surface-accent-700 dark:text-white": variant === "neutral" && color === "secondary" && !disabled,
61
+ "border border-transparent bg-surface-100 hover:bg-surface-accent-200 text-error dark:bg-surface-800 dark:hover:bg-surface-accent-700 dark:text-error": variant === "neutral" && color === "error" && !disabled,
62
+
55
63
  // Disabled states for all variants
56
64
  "border border-transparent opacity-50": variant === "text" && disabled,
57
- "border border-gray-500 opacity-50": variant === "outlined" && disabled,
58
- "border border-gray-500 bg-gray-500 opacity-50": variant === "filled" && disabled,
65
+ "border border-surface-500 opacity-50": variant === "outlined" && disabled,
66
+ "border border-surface-500 bg-surface-500 opacity-50": (variant === "filled" || variant === "neutral") && disabled,
59
67
  });
60
68
 
61
- const sizeClasses = cn(
69
+ const sizeClasses = cls(
62
70
  {
63
71
  "py-1 px-2": size === "small",
64
72
  "py-2 px-4": size === "medium",
@@ -73,7 +81,7 @@ const ButtonInner = React.forwardRef<
73
81
  <Component
74
82
  ref={ref}
75
83
  onClick={props.onClick}
76
- className={cn(focusedMixin, startIcon ? "pl-3" : "", baseClasses, buttonClasses, sizeClasses, className)}
84
+ className={cls(startIcon ? "pl-3" : "", baseClasses, buttonClasses, sizeClasses, className)}
77
85
  {...(props as React.ComponentPropsWithRef<any>)}>
78
86
  {startIcon}
79
87
  {children}
@@ -85,7 +93,7 @@ const ButtonInner = React.forwardRef<
85
93
  <button ref={ref as any}
86
94
  type={props.type ?? "button"}
87
95
  onClick={props.onClick}
88
- className={cn(focusedMixin, startIcon ? "pl-3" : "", baseClasses, buttonClasses, sizeClasses, className)}
96
+ className={cls(startIcon ? "pl-3" : "", baseClasses, buttonClasses, sizeClasses, className)}
89
97
  disabled={disabled}
90
98
  {...props as React.ButtonHTMLAttributes<HTMLButtonElement>}>
91
99
  {startIcon}
@@ -1,6 +1,7 @@
1
+ "use client";
1
2
  import React, { useCallback } from "react";
2
- import { cardClickableMixin, cardMixin, focusedMixin } from "../styles";
3
- import { cn } from "../util";
3
+ import { cardClickableMixin, cardMixin } from "../styles";
4
+ import { cls } from "../util";
4
5
 
5
6
  type CardProps = {
6
7
  children: React.ReactNode;
@@ -29,7 +30,7 @@ const Card = React.forwardRef<HTMLDivElement, CardProps>(({
29
30
  role={onClick ? "button" : undefined}
30
31
  tabIndex={onClick ? 0 : undefined}
31
32
  onClick={onClick}
32
- className={cn(cardMixin, onClick && focusedMixin, onClick && cardClickableMixin, className)}
33
+ className={cls(cardMixin, onClick && cardClickableMixin, className)}
33
34
  style={style}
34
35
  {...props}>
35
36
  {children}
@@ -1,24 +1,35 @@
1
+ "use client";
1
2
  import React from "react";
2
3
  import { Container } from "./Container";
3
- import { cn } from "../util";
4
+ import { cls } from "../util";
4
5
 
5
- export function CenteredView({
6
- children,
7
- maxWidth,
8
- className,
9
- fullScreen
10
- }: {
6
+ export type CenteredViewProps = {
11
7
  children: React.ReactNode;
12
8
  maxWidth?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl";
9
+ outerClassName?: string;
13
10
  className?: string;
14
11
  fullScreen?: boolean;
15
- }) {
12
+ };
16
13
 
17
- return <div className={cn("flex flex-col flex-grow", fullScreen ? "h-screen" : "h-full")}>
18
- <Container className={cn("m-auto", className)}
19
- maxWidth={maxWidth}>
20
- {children}
21
- </Container>
22
- </div>
14
+ export const CenteredView = React.forwardRef<HTMLDivElement, CenteredViewProps>(({
15
+ children,
16
+ maxWidth,
17
+ outerClassName,
18
+ className,
19
+ fullScreen,
20
+ ...rest
21
+ }, ref) => { // Notice how the ref is now received as the second argument
23
22
 
24
- }
23
+ return (
24
+ <div ref={ref}
25
+ className={cls("flex flex-col flex-grow", fullScreen ? "h-screen" : "h-full", outerClassName)}
26
+ {...rest}>
27
+ <Container className={cls("m-auto", className)} maxWidth={maxWidth}>
28
+ {children}
29
+ </Container>
30
+ </div>
31
+ );
32
+
33
+ });
34
+
35
+ CenteredView.displayName = "CenteredView";
@@ -2,15 +2,16 @@ import React from "react";
2
2
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
3
3
 
4
4
  import { Icon } from "../icons";
5
- import { cn } from "../util";
5
+ import { cls } from "../util";
6
6
 
7
7
  export interface CheckboxProps {
8
8
  checked: boolean;
9
+ id?: string;
9
10
  disabled?: boolean;
10
11
  indeterminate?: boolean;
11
12
  onCheckedChange?: (checked: boolean) => void;
12
13
  padding?: boolean;
13
- size?: "tiny" | "small" | "medium" | "large";
14
+ size?: "smallest" | "small" | "medium" | "large";
14
15
  color?: "primary" | "secondary";
15
16
  }
16
17
 
@@ -18,20 +19,20 @@ const sizeClasses = {
18
19
  large: "w-6 h-6 rounded flex items-center justify-center",
19
20
  medium: "w-5 h-5 rounded flex items-center justify-center",
20
21
  small: "w-4 h-4 rounded flex items-center justify-center",
21
- tiny: "w-4 h-4 rounded flex items-center justify-center"
22
+ smallest: "w-4 h-4 rounded flex items-center justify-center"
22
23
  };
23
24
 
24
25
  const outerSizeClasses = {
25
26
  medium: "w-10 h-10",
26
27
  small: "w-8 h-8",
27
28
  large: "w-12 h-12 ",
28
- tiny: "w-6 h-6"
29
+ smallest: "w-6 h-6"
29
30
  }
30
31
  const paddingClasses = {
31
32
  medium: "p-2",
32
33
  small: "p-2",
33
34
  large: "p-2",
34
- tiny: ""
35
+ smallest: ""
35
36
  }
36
37
 
37
38
  const colorClasses = {
@@ -40,6 +41,7 @@ const colorClasses = {
40
41
  }
41
42
 
42
43
  export const Checkbox = ({
44
+ id,
43
45
  checked,
44
46
  indeterminate = false,
45
47
  padding = true,
@@ -55,34 +57,34 @@ export const Checkbox = ({
55
57
  ? 20
56
58
  : size === "small"
57
59
  ? 16
58
- : size === "tiny"
60
+ : size === "smallest"
59
61
  ? 14
60
62
  : 24;
61
63
  return (
62
64
  <CheckboxPrimitive.Root
63
- asChild
65
+ id={id}
64
66
  checked={indeterminate || isChecked}
65
67
  disabled={disabled}
66
68
  onCheckedChange={disabled ? undefined : onCheckedChange}>
67
69
 
68
- <div className={cn(
70
+ <div className={cls(
69
71
  padding ? paddingClasses[size] : "",
70
72
  outerSizeClasses[size],
71
73
  "inline-flex items-center justify-center text-sm font-medium focus:outline-none transition-colors ease-in-out duration-150",
72
- onCheckedChange ? "rounded-full hover:bg-slate-200 hover:bg-opacity-75 dark:hover:bg-slate-700 dark:hover:bg-opacity-75" : "",
74
+ onCheckedChange ? "rounded-full hover:bg-surface-accent-200 hover:bg-opacity-75 dark:hover:bg-surface-accent-700 dark:hover:bg-opacity-75" : "",
73
75
  onCheckedChange ? "cursor-pointer" : "cursor-default"
74
76
  )}>
75
77
  <div
76
- className={cn(
78
+ className={cls(
77
79
  "border-2 relative transition-colors ease-in-out duration-150",
78
80
  sizeClasses[size],
79
81
  disabled
80
- ? (indeterminate || isChecked ? "bg-slate-400 dark:bg-slate-600" : "bg-slate-400 dark:bg-slate-600")
81
- : (indeterminate || isChecked ? colorClasses[color] : "bg-white dark:bg-slate-900"),
82
- (indeterminate || isChecked) ? "text-slate-100 dark:text-slate-900" : "",
82
+ ? (indeterminate || isChecked ? "bg-surface-accent-400 dark:bg-surface-accent-600" : "bg-surface-accent-400 dark:bg-surface-accent-600")
83
+ : (indeterminate || isChecked ? colorClasses[color] : "bg-white dark:bg-surface-900"),
84
+ (indeterminate || isChecked) ? "text-surface-accent-100 dark:text-surface-accent-900" : "",
83
85
  disabled
84
86
  ? "border-transparent"
85
- : (indeterminate || isChecked ? "border-transparent" : "border-slate-800 dark:border-slate-200")
87
+ : (indeterminate || isChecked ? "border-transparent" : "border-surface-accent-800 dark:border-surface-accent-200")
86
88
  )}>
87
89
  <CheckboxPrimitive.Indicator asChild>
88
90
  {indeterminate
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { CHIP_COLORS, cn, getColorSchemeForKey } from "../util";
2
+ import { CHIP_COLORS, cls, getColorSchemeForKey } from "../util";
3
3
 
4
4
  export type ChipColorScheme = {
5
5
  color: string;
@@ -11,18 +11,19 @@ export type ChipColorKey = keyof typeof CHIP_COLORS;
11
11
  export interface ChipProps {
12
12
  className?: string;
13
13
  children: React.ReactNode;
14
- size?: "tiny" | "small" | "medium";
14
+ size?: "small" | "medium" | "large";
15
15
  colorScheme?: ChipColorScheme | ChipColorKey;
16
16
  error?: boolean;
17
17
  outlined?: boolean;
18
18
  onClick?: () => void;
19
19
  icon?: React.ReactNode;
20
+ style?: React.CSSProperties;
20
21
  }
21
22
 
22
23
  const sizeClassNames = {
23
- tiny: "px-2 py-0.5 text-sm",
24
- small: "px-3 py-1 text-sm",
25
- medium: "px-4 py-1.5 text-sm"
24
+ small: "px-2 py-0.5 text-sm",
25
+ medium: "px-3 py-1 text-sm",
26
+ large: "px-4 py-1.5 text-sm"
26
27
  }
27
28
 
28
29
  /**
@@ -35,18 +36,19 @@ export function Chip({
35
36
  outlined,
36
37
  onClick,
37
38
  icon,
38
- size = "medium",
39
- className
39
+ size = "large",
40
+ className,
41
+ style
40
42
  }: ChipProps) {
41
43
 
42
44
  const usedColorScheme = typeof colorScheme === "string" ? getColorSchemeForKey(colorScheme) : colorScheme;
43
45
  return (
44
46
  <div
45
- className={cn("rounded-lg w-fit h-fit font-regular inline-flex gap-1",
47
+ className={cls("rounded-lg max-w-full w-max h-fit font-regular inline-flex gap-1",
46
48
  "text-ellipsis",
47
- onClick ? "cursor-pointer hover:bg-slate-300 hover:dark:bg-slate-700" : "",
49
+ onClick ? "cursor-pointer hover:bg-surface-accent-300 hover:dark:bg-surface-accent-700" : "",
48
50
  sizeClassNames[size],
49
- error || !usedColorScheme ? "bg-slate-200 dark:bg-slate-800 text-slate-800 dark:text-white" : "",
51
+ error || !usedColorScheme ? "bg-surface-accent-200 dark:bg-surface-accent-800 text-surface-accent-800 dark:text-white" : "",
50
52
  error ? "text-red-500 dark:text-red-400" : "",
51
53
  className)}
52
54
  onClick={onClick}
@@ -54,6 +56,7 @@ export function Chip({
54
56
  backgroundColor: error || !usedColorScheme ? undefined : usedColorScheme.color,
55
57
  color: error || !usedColorScheme ? undefined : usedColorScheme.text,
56
58
  overflow: "hidden",
59
+ ...style
57
60
  // display: "-webkit-box",
58
61
  // WebkitLineClamp: 1,
59
62
  // WebkitBoxOrient: "vertical",
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { cn } from "../util";
2
+ import { cls } from "../util";
3
3
 
4
4
  export type CircularProgressProps = {
5
5
  size?: "small" | "medium" | "large",
@@ -31,11 +31,11 @@ export function CircularProgress({
31
31
 
32
32
  return (
33
33
  <div
34
- className={cn(
34
+ className={cls(
35
35
  sizeClasses,
36
36
  borderClasses,
37
37
  "inline-block animate-spin rounded-full border-solid border-current border-r-transparent align-[-0.125em] motion-reduce:animate-[spin_1.5s_linear_infinite]",
38
- "text-primary-dark dark:text-primary",
38
+ "text-primary dark:text-primary",
39
39
  className)}
40
40
  role="status">
41
41
  <span
@@ -1,7 +1,9 @@
1
+ "use client";
1
2
  import React from "react";
2
3
  import * as Collapsible from "@radix-ui/react-collapsible";
3
4
 
4
- import { cn, useInjectStyles } from "../util";
5
+ import { cls } from "../util";
6
+ import { useInjectStyles } from "../hooks";
5
7
 
6
8
  interface CollapseProps {
7
9
  children?: React.ReactNode;
@@ -53,7 +55,7 @@ export function Collapse({
53
55
  className={className}>
54
56
 
55
57
  <Collapsible.Content
56
- className={cn(`CollapseContent-${duration}`)}
58
+ className={cls(`CollapseContent-${duration}`)}
57
59
  >
58
60
  {children}
59
61
  </Collapsible.Content>
@@ -1,5 +1,6 @@
1
+ "use client";
1
2
  import React, { ForwardRefRenderFunction } from "react";
2
- import { cn } from "../util";
3
+ import { cls } from "../util";
3
4
 
4
5
  export type ContainerProps = {
5
6
  children: React.ReactNode;
@@ -37,7 +38,7 @@ const ContainerInner: ForwardRefRenderFunction<HTMLDivElement, ContainerProps> =
37
38
  return (
38
39
  <div
39
40
  ref={ref}
40
- className={cn("mx-auto px-3 md:px-4 lg-px-6",
41
+ className={cls("mx-auto px-3 md:px-4 lg-px-6",
41
42
  classForMaxWidth,
42
43
  className)}
43
44
  style={style}>