@firecms/ui 3.0.0-canary.15 → 3.0.0-canary.150

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/README.md +3 -3
  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/DialogTitle.d.ts +9 -0
  12. package/dist/components/ExpandablePanel.d.ts +2 -1
  13. package/dist/components/FileUpload.d.ts +1 -1
  14. package/dist/components/InputLabel.d.ts +2 -2
  15. package/dist/components/Label.d.ts +4 -1
  16. package/dist/components/Markdown.d.ts +1 -0
  17. package/dist/components/Menu.d.ts +6 -2
  18. package/dist/components/Menubar.d.ts +79 -0
  19. package/dist/components/MultiSelect.d.ts +32 -16
  20. package/dist/components/Popover.d.ts +2 -1
  21. package/dist/components/RadioGroup.d.ts +26 -3
  22. package/dist/components/Select.d.ts +6 -10
  23. package/dist/components/Separator.d.ts +2 -1
  24. package/dist/components/Sheet.d.ts +6 -0
  25. package/dist/components/Slider.d.ts +21 -0
  26. package/dist/components/Table.d.ts +10 -10
  27. package/dist/components/Tabs.d.ts +4 -2
  28. package/dist/components/TextField.d.ts +1 -1
  29. package/dist/components/TextareaAutosize.d.ts +3 -34
  30. package/dist/components/Tooltip.d.ts +6 -2
  31. package/dist/components/Typography.d.ts +5 -4
  32. package/dist/components/index.d.ts +3 -1
  33. package/dist/hooks/index.d.ts +3 -0
  34. package/dist/icons/Icon.d.ts +3 -3
  35. package/dist/index.css +73 -0
  36. package/dist/index.d.ts +1 -0
  37. package/dist/index.es.js +13410 -14466
  38. package/dist/index.es.js.map +1 -1
  39. package/dist/index.umd.js +19802 -857
  40. package/dist/index.umd.js.map +1 -1
  41. package/dist/styles.d.ts +9 -9
  42. package/dist/util/{cn.d.ts → cls.d.ts} +4 -0
  43. package/dist/util/index.d.ts +1 -3
  44. package/package.json +112 -118
  45. package/src/components/Alert.tsx +4 -4
  46. package/src/components/Autocomplete.tsx +7 -5
  47. package/src/components/Avatar.tsx +40 -26
  48. package/src/components/Badge.tsx +2 -2
  49. package/src/components/BooleanSwitch.tsx +19 -19
  50. package/src/components/BooleanSwitchWithLabel.tsx +20 -11
  51. package/src/components/Button.tsx +30 -23
  52. package/src/components/Card.tsx +4 -3
  53. package/src/components/CenteredView.tsx +25 -15
  54. package/src/components/Checkbox.tsx +16 -14
  55. package/src/components/Chip.tsx +10 -7
  56. package/src/components/CircularProgress.tsx +3 -3
  57. package/src/components/Collapse.tsx +4 -2
  58. package/src/components/Container.tsx +2 -2
  59. package/src/components/DateTimeField.tsx +142 -921
  60. package/src/components/DebouncedTextField.tsx +1 -0
  61. package/src/components/Dialog.tsx +17 -7
  62. package/src/components/DialogActions.tsx +3 -3
  63. package/src/components/DialogContent.tsx +2 -2
  64. package/src/components/DialogTitle.tsx +35 -0
  65. package/src/components/ExpandablePanel.tsx +20 -12
  66. package/src/components/FileUpload.tsx +8 -10
  67. package/src/components/IconButton.tsx +6 -10
  68. package/src/components/InfoLabel.tsx +2 -2
  69. package/src/components/InputLabel.tsx +11 -9
  70. package/src/components/Label.tsx +17 -4
  71. package/src/components/Markdown.tsx +15 -3
  72. package/src/components/Menu.tsx +49 -31
  73. package/src/components/Menubar.tsx +322 -0
  74. package/src/components/MultiSelect.tsx +342 -168
  75. package/src/components/Paper.tsx +2 -2
  76. package/src/components/Popover.tsx +19 -15
  77. package/src/components/RadioGroup.tsx +41 -9
  78. package/src/components/SearchBar.tsx +12 -11
  79. package/src/components/Select.tsx +99 -126
  80. package/src/components/Separator.tsx +10 -4
  81. package/src/components/Sheet.tsx +53 -31
  82. package/src/components/Skeleton.tsx +9 -6
  83. package/src/components/Slider.tsx +109 -0
  84. package/src/components/Table.tsx +52 -35
  85. package/src/components/Tabs.tsx +19 -15
  86. package/src/components/TextField.tsx +16 -18
  87. package/src/components/TextareaAutosize.tsx +4 -3
  88. package/src/components/Tooltip.tsx +33 -16
  89. package/src/components/Typography.tsx +42 -26
  90. package/src/components/common/SelectInputLabel.tsx +3 -3
  91. package/src/components/index.tsx +3 -1
  92. package/src/hooks/index.ts +3 -0
  93. package/src/icons/Icon.tsx +46 -43
  94. package/src/icons/icon_keys.ts +114 -1301
  95. package/src/index.css +73 -0
  96. package/src/index.ts +1 -0
  97. package/src/scripts/generateIconKeys.ts +20 -11
  98. package/src/styles.ts +9 -9
  99. package/src/util/cls.ts +14 -0
  100. package/src/util/index.ts +1 -3
  101. package/tailwind.config.js +42 -26
  102. package/dist/components/Spinner.d.ts +0 -1
  103. package/src/components/Spinner.tsx +0 -18
  104. package/src/util/cn.ts +0 -6
  105. /package/dist/{util → hooks}/useDebounceValue.d.ts +0 -0
  106. /package/dist/{util → hooks}/useInjectStyles.d.ts +0 -0
  107. /package/dist/{util → hooks}/useOutsideAlerter.d.ts +0 -0
  108. /package/src/{util → hooks}/useDebounceValue.tsx +0 -0
  109. /package/src/{util → hooks}/useInjectStyles.tsx +0 -0
  110. /package/src/{util → hooks}/useOutsideAlerter.tsx +0 -0
@@ -1,8 +1,8 @@
1
1
  import React, { ReactEventHandler } from "react";
2
- import { focusedMixin } from "../styles";
3
- import { cn } from "../util";
2
+ import { cls } from "../util";
4
3
 
5
- export type TextProps<C extends React.ElementType> = {
4
+ export type TypographyVariant = keyof typeof typographyVariants;
5
+ export type TypographyProps<C extends React.ElementType = "span"> = {
6
6
  align?: "center" | "inherit" | "justify" | "left" | "right";
7
7
  children?: React.ReactNode;
8
8
  className?: string;
@@ -10,14 +10,14 @@ export type TextProps<C extends React.ElementType> = {
10
10
  gutterBottom?: boolean;
11
11
  noWrap?: boolean;
12
12
  paragraph?: boolean;
13
- variant?: keyof typeof defaultVariantMapping;
13
+ variant?: TypographyVariant;
14
14
  variantMapping?: { [key: string]: string };
15
15
  color?: "inherit" | "initial" | "primary" | "secondary" | "disabled" | "error";
16
16
  onClick?: ReactEventHandler<HTMLElement>;
17
17
  style?: React.CSSProperties;
18
18
  } & React.ComponentPropsWithoutRef<C>;
19
19
 
20
- const defaultVariantMapping = {
20
+ const typographyVariants = {
21
21
  h1: "h1",
22
22
  h2: "h2",
23
23
  h3: "h3",
@@ -43,24 +43,41 @@ const colorToClasses = {
43
43
  error: "text-red-600 dark:text-red-500"
44
44
  };
45
45
 
46
+ const gutterBottomClasses = {
47
+ h1: "mb-5",
48
+ h2: "mb-4",
49
+ h3: "mb-4",
50
+ h4: "mb-4",
51
+ h5: "mb-3",
52
+ h6: "mb-3",
53
+ subtitle1: "mb-3",
54
+ subtitle2: "mb-3",
55
+ body1: "mb-3",
56
+ body2: "mb-3",
57
+ inherit: "mb-3",
58
+ caption: "mb-2",
59
+ button: "mb-2",
60
+ label: "mb-2"
61
+ };
62
+
46
63
  const variantToClasses = {
47
- h1: "text-6xl font-headers font-light",
48
- h2: "text-5xl font-headers font-light",
49
- h3: "text-4xl font-headers font-normal",
50
- h4: "text-3xl font-headers font-normal",
51
- h5: "text-2xl font-headers font-normal",
52
- h6: "text-xl font-headers font-medium",
53
- subtitle1: "text-lg font-headers font-medium",
54
- subtitle2: "text-base font-headers font-medium",
55
- body1: "text-base",
56
- body2: "text-sm",
57
- label: "text-sm font-medium text-slate-500",
58
- inherit: "text-inherit",
59
- caption: "text-xs",
60
- button: "text-sm font-medium"
64
+ h1: "typography-h1",
65
+ h2: "typography-h2",
66
+ h3: "typography-h3",
67
+ h4: "typography-h4",
68
+ h5: "typography-h5",
69
+ h6: "typography-h6",
70
+ subtitle1: "typography-subtitle1",
71
+ subtitle2: "typography-subtitle2",
72
+ body1: "typography-body1",
73
+ body2: "typography-body2",
74
+ label: "typography-label",
75
+ inherit: "typography-inherit",
76
+ caption: "typography-caption",
77
+ button: "typography-button"
61
78
  };
62
79
 
63
- export function Typography<C extends React.ElementType>(
80
+ export function Typography<C extends React.ElementType = "span">(
64
81
  {
65
82
  align = "inherit",
66
83
  color = "primary",
@@ -71,23 +88,22 @@ export function Typography<C extends React.ElementType>(
71
88
  noWrap = false,
72
89
  paragraph = false,
73
90
  variant = "body1",
74
- variantMapping = defaultVariantMapping,
91
+ variantMapping = typographyVariants,
75
92
  style,
76
93
  onClick,
77
94
  ...other
78
- }: TextProps<C>
95
+ }: TypographyProps<C>
79
96
  ) {
80
97
  const Component =
81
98
  component ||
82
- (paragraph ? "p" : variantMapping[variant] || defaultVariantMapping[variant]) ||
99
+ (paragraph ? "p" : variantMapping[variant] || typographyVariants[variant]) ||
83
100
  "span";
84
101
 
85
- const classes = cn(
86
- focusedMixin,
102
+ const classes = cls(
87
103
  variantToClasses[variant],
88
104
  color ? colorToClasses[color] : "",
89
105
  align !== "inherit" && `text-${align}`,
90
- gutterBottom && "mb-[0.35em]",
106
+ gutterBottom && gutterBottomClasses[variant],
91
107
  noWrap && "truncate",
92
108
  paragraph && "mb-3",
93
109
  className
@@ -1,9 +1,9 @@
1
1
  import React from "react";
2
- import { cn } from "../../util";
2
+ import { cls } from "../../util";
3
3
 
4
4
  export function SelectInputLabel({ children, error }: { children: React.ReactNode, error?: boolean }) {
5
- return <div className={cn("text-sm font-medium ml-3.5 mb-1",
6
- error ? "text-red-500 dark:text-red-600" : "text-slate-500 dark:text-slate-300",)}>
5
+ return <div className={cls("text-sm font-medium ml-3.5 mb-1",
6
+ error ? "text-red-500 dark:text-red-600" : "text-surface-accent-500 dark:text-surface-accent-300",)}>
7
7
  {children}
8
8
  </div>;
9
9
  }
@@ -15,6 +15,7 @@ export * from "./DateTimeField";
15
15
  export * from "./Dialog";
16
16
  export * from "./DialogActions";
17
17
  export * from "./DialogContent";
18
+ export * from "./DialogTitle";
18
19
  export * from "./ExpandablePanel";
19
20
  export * from "./FileUpload";
20
21
  export * from "./IconButton";
@@ -24,14 +25,15 @@ export * from "./Label";
24
25
  export * from "./LoadingButton";
25
26
  export * from "./Markdown";
26
27
  export * from "./Menu";
28
+ export * from "./Menubar";
27
29
  export * from "./MultiSelect";
28
30
  export * from "./Paper";
29
31
  export * from "./RadioGroup";
30
32
  export * from "./SearchBar";
31
33
  export * from "./Select";
32
34
  export * from "./Separator";
35
+ export * from "./Slider";
33
36
  export * from "./Sheet";
34
- export * from "./Spinner";
35
37
  export * from "./TextareaAutosize";
36
38
  export * from "./TextField";
37
39
  export * from "./Tooltip";
@@ -0,0 +1,3 @@
1
+ export * from "./useInjectStyles";
2
+ export * from "./useOutsideAlerter";
3
+ export * from "./useDebounceValue";
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
- import "@material-design-icons/font/filled.css";
3
- import { cn } from "../util";
2
+ import { cls } from "../util";
3
+ import 'material-icons/iconfont/filled.css';
4
4
 
5
5
  export type IconColor = "inherit" | "primary" | "secondary" | "disabled" | "error" | "success" | "warning";
6
6
  export type IconProps = {
@@ -8,7 +8,7 @@ export type IconProps = {
8
8
  color?: IconColor,
9
9
  className?: string,
10
10
  onClick?: (e: React.SyntheticEvent) => void,
11
- style?: React.CSSProperties
11
+ style?: React.CSSProperties,
12
12
  }
13
13
 
14
14
  const colorClassesMapping: Record<IconColor, string> = {
@@ -17,47 +17,50 @@ const colorClassesMapping: Record<IconColor, string> = {
17
17
  success: "text-green-500",
18
18
  warning: "text-yellow-500",
19
19
  secondary: "text-secondary",
20
- disabled: "text-disabled dark:text-disabled-dark",
20
+ disabled: "text-text-disabled dark:text-text-disabled-dark",
21
21
  error: "text-red-500"
22
22
  }
23
23
 
24
- export function Icon({
25
- iconKey,
26
- size = "medium",
27
- color,
28
- className,
29
- onClick,
30
- style
31
- }: IconProps & { iconKey: string }) {
32
- let sizeInPx: number;
33
- switch (size) {
34
- case "smallest":
35
- sizeInPx = 16;
36
- break;
37
- case "small":
38
- sizeInPx = 20;
39
- break;
40
- case "medium":
41
- sizeInPx = 24;
42
- break;
43
- case "large":
44
- sizeInPx = 28;
45
- break
46
- default:
47
- sizeInPx = size;
48
- }
49
- if (!sizeInPx) sizeInPx = 24;
24
+ export const Icon = React.forwardRef<HTMLSpanElement, IconProps & { iconKey: string }>(
25
+ ({
26
+ iconKey,
27
+ size = "medium",
28
+ color,
29
+ className,
30
+ onClick,
31
+ style
32
+ }, ref) => {
33
+ let sizeInPx: number;
34
+ switch (size) {
35
+ case "smallest":
36
+ sizeInPx = 16;
37
+ break;
38
+ case "small":
39
+ sizeInPx = 20;
40
+ break;
41
+ case "medium":
42
+ sizeInPx = 24;
43
+ break;
44
+ case "large":
45
+ sizeInPx = 28;
46
+ break
47
+ default:
48
+ sizeInPx = typeof size === "number" ? size : 24;
49
+ }
50
50
 
51
- return <span
52
- style={{
53
- fontSize: `${sizeInPx}px`,
54
- display: "block",
55
- ...style
56
- }}
57
- className={
58
- cn("material-icons",
59
- color ? colorClassesMapping[color] : "",
60
- "select-none",
61
- className)}
62
- onClick={onClick}>{iconKey}</span>
63
- }
51
+ return <span
52
+ ref={ref} // Attach the ref to the span
53
+ style={{
54
+ fontSize: `${sizeInPx}px`,
55
+ display: "block",
56
+ ...style
57
+ }}
58
+ className={
59
+ cls("material-icons",
60
+ color ? colorClassesMapping[color] : "",
61
+ "select-none",
62
+ className)}
63
+ onClick={onClick}>{iconKey}</span>
64
+ });
65
+
66
+ Icon.displayName = "Icon";