@firecms/ui 3.0.0-alpha.72 → 3.0.0-alpha.74

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 (46) hide show
  1. package/dist/components/Alert.d.ts +2 -1
  2. package/dist/components/CenteredView.d.ts +1 -2
  3. package/dist/components/Checkbox.d.ts +2 -1
  4. package/dist/index.es.js +7481 -7440
  5. package/dist/index.es.js.map +1 -1
  6. package/dist/index.umd.js +10 -10
  7. package/dist/index.umd.js.map +1 -1
  8. package/dist/styles.d.ts +5 -5
  9. package/dist/util/chip_colors.d.ts +1 -0
  10. package/dist/util/hash.d.ts +1 -0
  11. package/dist/util/index.d.ts +1 -0
  12. package/dist/util/key_to_icon_component.d.ts +1 -0
  13. package/package.json +2 -2
  14. package/src/components/Alert.tsx +25 -7
  15. package/src/components/Autocomplete.tsx +2 -2
  16. package/src/components/Avatar.tsx +4 -4
  17. package/src/components/Badge.tsx +1 -1
  18. package/src/components/BooleanSwitch.tsx +4 -4
  19. package/src/components/Button.tsx +1 -1
  20. package/src/components/Card.tsx +0 -1
  21. package/src/components/CenteredView.tsx +1 -3
  22. package/src/components/Checkbox.tsx +26 -9
  23. package/src/components/Chip.tsx +9 -5
  24. package/src/components/DateTimeField.tsx +4 -4
  25. package/src/components/Dialog.tsx +2 -3
  26. package/src/components/IconButton.tsx +3 -3
  27. package/src/components/Menu.tsx +1 -1
  28. package/src/components/MultiSelect.tsx +4 -4
  29. package/src/components/Popover.tsx +1 -1
  30. package/src/components/SearchBar.tsx +4 -3
  31. package/src/components/Select.tsx +6 -6
  32. package/src/components/Sheet.tsx +1 -1
  33. package/src/components/Skeleton.tsx +1 -1
  34. package/src/components/Spinner.tsx +1 -1
  35. package/src/components/Table.tsx +7 -7
  36. package/src/components/Tabs.tsx +8 -8
  37. package/src/components/TextField.tsx +2 -2
  38. package/src/components/Tooltip.tsx +2 -2
  39. package/src/components/Typography.tsx +1 -1
  40. package/src/components/common/SelectInputLabel.tsx +1 -1
  41. package/src/scripts/saveIconFiles.ts +3 -9
  42. package/src/styles.ts +5 -5
  43. package/src/util/chip_colors.ts +8 -0
  44. package/src/util/hash.ts +11 -0
  45. package/src/util/index.ts +1 -0
  46. package/src/util/key_to_icon_component.ts +11 -0
@@ -19,7 +19,7 @@ export function Tabs({
19
19
 
20
20
  return <TabsPrimitive.Root value={value} onValueChange={onValueChange}>
21
21
  <TabsPrimitive.List className={cn(
22
- "flex text-sm font-medium text-center text-gray-800 dark:text-gray-200",
22
+ "flex text-sm font-medium text-center text-slate-800 dark:text-slate-200",
23
23
  className)
24
24
  }>
25
25
  {children}
@@ -46,15 +46,15 @@ export function Tab({
46
46
  "border-b-2 border-transparent",
47
47
  "data-[state=active]:border-secondary",
48
48
  disabled
49
- ? "text-gray-400 dark:text-gray-500"
50
- : cn("text-gray-700 dark:text-gray-300",
51
- "data-[state=active]:text-gray-900 data-[state=active]:dark:text-gray-100",
52
- "hover:text-gray-800 dark:hover:text-gray-200"),
53
- // disabled ? "text-gray-400 dark:text-gray-500" : "data-[state=active]:text-primary",
54
- // "data-[state=active]:bg-gray-50 data-[state=active]:dark:bg-gray-800",
49
+ ? "text-slate-400 dark:text-slate-500"
50
+ : cn("text-slate-700 dark:text-slate-300",
51
+ "data-[state=active]:text-slate-900 data-[state=active]:dark:text-slate-100",
52
+ "hover:text-slate-800 dark:hover:text-slate-200"),
53
+ // disabled ? "text-slate-400 dark:text-slate-500" : "data-[state=active]:text-primary",
54
+ // "data-[state=active]:bg-slate-50 data-[state=active]:dark:bg-slate-800",
55
55
  className)}>
56
56
  <div className={cn("uppercase inline-block p-2 px-4 m-2 rounded",
57
- "hover:bg-gray-100 dark:hover:bg-gray-800")}>
57
+ "hover:bg-slate-100 dark:hover:bg-slate-800")}>
58
58
  {children}
59
59
  </div>
60
60
  </TabsPrimitive.Trigger>;
@@ -100,7 +100,7 @@ export function TextField<T extends string | number>({
100
100
  className={cn(
101
101
  invisible ? focusedInvisibleMixin : focusedMixin,
102
102
  "rounded-md resize-none w-full outline-none p-[32px] text-base bg-transparent min-h-[64px] px-3 pt-[28px]",
103
- disabled && "border border-transparent outline-none opacity-50 text-gray-600 dark:text-gray-500"
103
+ disabled && "border border-transparent outline-none opacity-50 text-slate-600 dark:text-slate-500"
104
104
  )}
105
105
  />
106
106
  : <input
@@ -118,7 +118,7 @@ export function TextField<T extends string | number>({
118
118
  label ? (size === "medium" ? "pt-[28px] pb-2" : "pt-4 pb-2") : "py-2",
119
119
  focused ? "text-text-primary dark:text-text-primary-dark" : "",
120
120
  endAdornment ? "pr-10" : "pr-3",
121
- disabled && "border border-transparent outline-none opacity-50 dark:opacity-50 text-gray-800 dark:text-gray-200",
121
+ disabled && "border border-transparent outline-none opacity-50 dark:opacity-50 text-slate-800 dark:text-slate-200",
122
122
  inputClassName
123
123
  )}
124
124
  placeholder={focused || hasValue || !label ? placeholder : undefined}
@@ -44,12 +44,12 @@ export const Tooltip = ({
44
44
  <TooltipPrimitive.Content
45
45
  className={cn("TooltipContent",
46
46
  "max-w-lg leading-relaxed",
47
- "z-50 rounded px-3 py-2 text-xs leading-none bg-gray-700 dark:bg-gray-800 bg-opacity-90 font-medium text-gray-50 shadow-2xl select-none duration-400 ease-in transform opacity-100",
47
+ "z-50 rounded px-3 py-2 text-xs leading-none bg-slate-700 dark:bg-slate-800 bg-opacity-90 font-medium text-slate-50 shadow-2xl select-none duration-400 ease-in transform opacity-100",
48
48
  tooltipClassName)}
49
49
  sideOffset={sideOffset === undefined ? 4 : sideOffset}
50
50
  side={side}>
51
51
  {title}
52
- {/*<TooltipPrimitive.Arrow className="fill-gray-600"/>*/}
52
+ {/*<TooltipPrimitive.Arrow className="fill-slate-600"/>*/}
53
53
  </TooltipPrimitive.Content>
54
54
  </TooltipPrimitive.Portal>
55
55
  </TooltipPrimitive.Root>
@@ -54,7 +54,7 @@ const variantToClasses = {
54
54
  subtitle2: "text-base font-headers font-medium",
55
55
  body1: "text-base",
56
56
  body2: "text-sm",
57
- label: "text-sm font-medium text-gray-500",
57
+ label: "text-sm font-medium text-slate-500",
58
58
  inherit: "text-inherit",
59
59
  caption: "text-xs",
60
60
  button: "text-sm font-medium"
@@ -3,7 +3,7 @@ import { cn } from "../../util";
3
3
 
4
4
  export function SelectInputLabel({ children, error }: { children: React.ReactNode, error?: boolean }) {
5
5
  return <div className={cn("text-sm font-medium ml-3.5 mb-1",
6
- error ? "text-red-500 dark:text-red-600" : "text-gray-500 dark:text-gray-300",)}>
6
+ error ? "text-red-500 dark:text-red-600" : "text-slate-500 dark:text-slate-300",)}>
7
7
  {children}
8
8
  </div>;
9
9
  }
@@ -7,8 +7,10 @@ import fs from "fs";
7
7
  import path from "path";
8
8
 
9
9
  import { fileURLToPath } from "url";
10
+ import { keyToIconComponent } from "../util/key_to_icon_component.ts";
10
11
  // import { iconKeys } from "../icons/icon_keys.ts";
11
12
 
13
+
12
14
  export function saveIconFiles(iconKeys: string[]) {
13
15
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
16
 
@@ -19,15 +21,7 @@ export function saveIconFiles(iconKeys: string[]) {
19
21
 
20
22
  // for each key, generate a file with an Icon ts component
21
23
  iconKeys.forEach((key: string) => {
22
-
23
- const startsWithNumber = key.match(/^\d/);
24
-
25
- // convert key to came case
26
- const componentName = (startsWithNumber ? "_" : "") +
27
- key.split("_").map((word: string) => {
28
- return word.charAt(0).toUpperCase() + word.slice(1);
29
- }).join("") +
30
- "Icon";
24
+ const componentName = keyToIconComponent(key);
31
25
 
32
26
  const iconComponent = `import React from "react";
33
27
  import { Icon, IconProps } from "../Icon";
package/src/styles.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  export const focusedMixin = "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-opacity-75 focus-visible:ring-offset-2 focus-visible:ring-offset-transparent";
2
- export const focusedInvisibleMixin = "focus:bg-opacity-70 focus:bg-gray-100 focus:dark:bg-gray-800 focus:dark:bg-opacity-60";
2
+ export const focusedInvisibleMixin = "focus:bg-opacity-70 focus:bg-slate-100 focus:dark:bg-gray-800 focus:dark:bg-opacity-60";
3
3
  export const focusedClasses = "z-30 outline-none ring-2 ring-primary ring-opacity-75 ring-offset-2 ring-offset-transparent ";
4
- export const fieldBackgroundMixin = "bg-opacity-70 bg-gray-100 dark:bg-gray-800 dark:bg-opacity-60 transition duration-150 ease-in-out";
5
- export const fieldBackgroundInvisibleMixin = "bg-opacity-0 bg-gray-100 dark:bg-gray-800 dark:bg-opacity-0 transition duration-150 ease-in-out";
6
- export const fieldBackgroundDisabledMixin = "bg-opacity-100 dark:bg-opacity-90";
7
- export const fieldBackgroundHoverMixin = "hover:bg-opacity-90 dark:hover:bg-opacity-90";
4
+ export const fieldBackgroundMixin = "bg-opacity-50 bg-slate-200 dark:bg-gray-800 dark:bg-opacity-60 transition duration-150 ease-in-out";
5
+ export const fieldBackgroundInvisibleMixin = "bg-opacity-0 bg-slate-100 dark:bg-gray-800 dark:bg-opacity-0 transition duration-150 ease-in-out";
6
+ export const fieldBackgroundDisabledMixin = "bg-opacity-80 dark:bg-opacity-90";
7
+ export const fieldBackgroundHoverMixin = "hover:bg-opacity-70 dark:hover:bg-opacity-90";
8
8
  export const defaultBorderMixin = "border-gray-100 dark:border-gray-800 dark:border-opacity-80";
9
9
  export const paperMixin = "bg-white rounded-md dark:bg-gray-950 border dark:border-gray-800 dark:border-opacity-90 border-gray-100";
10
10
  export const cardMixin = "bg-white rounded-md dark:bg-gray-950 dark:border-gray-800 dark:border-opacity-50 transition duration-200 ease-in-out m-1 -p-1 border border-transparent";
@@ -1,4 +1,5 @@
1
1
  import { ChipColorKey, ChipColorScheme } from "../components";
2
+ import { hashString } from "./hash";
2
3
 
3
4
  export const CHIP_COLORS: Record<string, ChipColorScheme> = {
4
5
  blueLighter: { color: "#cfdfff", text: "#102046" },
@@ -49,3 +50,10 @@ export const CHIP_COLORS: Record<string, ChipColorScheme> = {
49
50
  export function getColorSchemeForKey(key: ChipColorKey): ChipColorScheme {
50
51
  return CHIP_COLORS[key];
51
52
  }
53
+
54
+ export function getColorSchemeForSeed(seed: string): ChipColorScheme {
55
+ const hash: number = hashString(seed);
56
+ const colorKeys = Object.keys(CHIP_COLORS);
57
+ const index = hash % colorKeys.length;
58
+ return CHIP_COLORS[colorKeys[index]];
59
+ }
@@ -0,0 +1,11 @@
1
+ export function hashString(str: string): number {
2
+ let hash = 0;
3
+ let i;
4
+ let chr;
5
+ for (i = 0; i < str.length; i++) {
6
+ chr = str.charCodeAt(i);
7
+ hash = ((hash << 5) - hash) + chr;
8
+ hash |= 0; // Convert to 32bit integer
9
+ }
10
+ return Math.abs(hash);
11
+ }
package/src/util/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from "./cn";
2
2
  export * from "./debounce";
3
3
  export * from "./chip_colors";
4
+ export * from "./key_to_icon_component";
4
5
  export * from "./useInjectStyles";
5
6
  export * from "./useOutsideAlerter";
@@ -0,0 +1,11 @@
1
+ export function keyToIconComponent(key: string) {
2
+ const startsWithNumber = key.match(/^\d/);
3
+
4
+ // convert key to came case
5
+ const componentName = (startsWithNumber ? "_" : "") +
6
+ key.split("_").map((word: string) => {
7
+ return word.charAt(0).toUpperCase() + word.slice(1);
8
+ }).join("") +
9
+ "Icon";
10
+ return componentName;
11
+ }