@firecms/ui 3.0.0-beta.8 → 3.0.0-beta.9

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 (59) hide show
  1. package/dist/components/BooleanSwitch.d.ts +1 -1
  2. package/dist/components/Checkbox.d.ts +1 -1
  3. package/dist/components/Chip.d.ts +3 -2
  4. package/dist/components/DateTimeField.d.ts +2 -3
  5. package/dist/components/Dialog.d.ts +4 -1
  6. package/dist/components/Menu.d.ts +4 -1
  7. package/dist/components/Menubar.d.ts +19 -9
  8. package/dist/components/MultiSelect.d.ts +31 -16
  9. package/dist/components/Popover.d.ts +2 -1
  10. package/dist/components/RadioGroup.d.ts +1 -0
  11. package/dist/components/Select.d.ts +5 -9
  12. package/dist/components/Separator.d.ts +2 -1
  13. package/dist/components/Sheet.d.ts +4 -0
  14. package/dist/components/Table.d.ts +10 -10
  15. package/dist/components/Tooltip.d.ts +6 -2
  16. package/dist/components/_MultiSelect.d.ts +0 -0
  17. package/dist/icons/Icon.d.ts +1 -1
  18. package/dist/index.css +77 -0
  19. package/dist/index.es.js +13036 -13690
  20. package/dist/index.es.js.map +1 -1
  21. package/dist/index.umd.js +19684 -49
  22. package/dist/index.umd.js.map +1 -1
  23. package/dist/styles.d.ts +3 -3
  24. package/package.json +109 -106
  25. package/src/components/Avatar.tsx +0 -2
  26. package/src/components/BooleanSwitch.tsx +11 -11
  27. package/src/components/BooleanSwitchWithLabel.tsx +4 -4
  28. package/src/components/Button.tsx +6 -8
  29. package/src/components/Card.tsx +2 -2
  30. package/src/components/Checkbox.tsx +5 -5
  31. package/src/components/Chip.tsx +7 -4
  32. package/src/components/DateTimeField.tsx +30 -41
  33. package/src/components/Dialog.tsx +11 -2
  34. package/src/components/ExpandablePanel.tsx +3 -3
  35. package/src/components/FileUpload.tsx +1 -2
  36. package/src/components/IconButton.tsx +1 -3
  37. package/src/components/InputLabel.tsx +4 -2
  38. package/src/components/Menu.tsx +38 -26
  39. package/src/components/Menubar.tsx +42 -7
  40. package/src/components/MultiSelect.tsx +333 -164
  41. package/src/components/Popover.tsx +15 -13
  42. package/src/components/RadioGroup.tsx +1 -0
  43. package/src/components/SearchBar.tsx +1 -2
  44. package/src/components/Select.tsx +98 -119
  45. package/src/components/Separator.tsx +10 -4
  46. package/src/components/Sheet.tsx +39 -22
  47. package/src/components/Skeleton.tsx +1 -1
  48. package/src/components/Table.tsx +48 -30
  49. package/src/components/Tabs.tsx +2 -3
  50. package/src/components/TextField.tsx +2 -6
  51. package/src/components/Tooltip.tsx +26 -11
  52. package/src/components/Typography.tsx +14 -16
  53. package/src/components/_MultiSelect.tsx +222 -0
  54. package/src/icons/Icon.tsx +2 -2
  55. package/src/icons/icon_keys.ts +114 -1301
  56. package/src/index.css +77 -0
  57. package/src/scripts/generateIconKeys.ts +20 -10
  58. package/src/styles.ts +3 -3
  59. package/tailwind.config.js +3 -3
@@ -3,7 +3,7 @@ export type BooleanSwitchProps = {
3
3
  value: boolean | null;
4
4
  className?: string;
5
5
  disabled?: boolean;
6
- size?: "small" | "medium" | "large";
6
+ size?: "smallest" | "small" | "medium";
7
7
  } & ({
8
8
  allowIndeterminate: true;
9
9
  onValueChange?: (newValue: boolean | null) => void;
@@ -5,7 +5,7 @@ export interface CheckboxProps {
5
5
  indeterminate?: boolean;
6
6
  onCheckedChange?: (checked: boolean) => void;
7
7
  padding?: boolean;
8
- size?: "tiny" | "small" | "medium" | "large";
8
+ size?: "smallest" | "small" | "medium" | "large";
9
9
  color?: "primary" | "secondary";
10
10
  }
11
11
  export declare const Checkbox: ({ id, checked, indeterminate, padding, disabled, size, onCheckedChange, color }: CheckboxProps) => import("react/jsx-runtime").JSX.Element;
@@ -8,14 +8,15 @@ export type ChipColorKey = keyof typeof CHIP_COLORS;
8
8
  export interface ChipProps {
9
9
  className?: string;
10
10
  children: React.ReactNode;
11
- size?: "tiny" | "small" | "medium";
11
+ size?: "smallest" | "small" | "medium";
12
12
  colorScheme?: ChipColorScheme | ChipColorKey;
13
13
  error?: boolean;
14
14
  outlined?: boolean;
15
15
  onClick?: () => void;
16
16
  icon?: React.ReactNode;
17
+ style?: React.CSSProperties;
17
18
  }
18
19
  /**
19
20
  * @group Preview components
20
21
  */
21
- export declare function Chip({ children, colorScheme, error, outlined, onClick, icon, size, className }: ChipProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare function Chip({ children, colorScheme, error, outlined, onClick, icon, size, className, style }: ChipProps): import("react/jsx-runtime").JSX.Element;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  interface DateTimeFieldProps {
3
- value?: Date;
4
- onChange: (date: Date | undefined) => void;
3
+ value?: Date | null;
4
+ onChange?: (date: Date | null) => void;
5
5
  mode?: "date" | "date_time";
6
6
  disabled?: boolean;
7
7
  clearable?: boolean;
@@ -12,7 +12,6 @@ interface DateTimeFieldProps {
12
12
  style?: React.CSSProperties;
13
13
  inputClassName?: string;
14
14
  invisible?: boolean;
15
- preventOpenOnFocus?: boolean;
16
15
  locale?: string;
17
16
  }
18
17
  export declare const DateTimeField: React.FC<DateTimeFieldProps>;
@@ -11,6 +11,9 @@ export type DialogProps = {
11
11
  maxWidth?: keyof typeof widthClasses;
12
12
  modal?: boolean;
13
13
  onOpenAutoFocus?: (e: Event) => void;
14
+ onEscapeKeyDown?: (e: KeyboardEvent) => void;
15
+ onPointerDownOutside?: (e: Event) => void;
16
+ onInteractOutside?: (e: Event) => void;
14
17
  };
15
18
  declare const widthClasses: {
16
19
  xs: string;
@@ -26,5 +29,5 @@ declare const widthClasses: {
26
29
  "7xl": string;
27
30
  full: string;
28
31
  };
29
- export declare const Dialog: ({ open, onOpenChange, children, className, fullWidth, fullHeight, fullScreen, scrollable, maxWidth, modal, onOpenAutoFocus }: DialogProps) => import("react/jsx-runtime").JSX.Element;
32
+ export declare const Dialog: ({ open, onOpenChange, children, className, fullWidth, fullHeight, fullScreen, scrollable, maxWidth, modal, onOpenAutoFocus, onEscapeKeyDown, onPointerDownOutside, onInteractOutside }: DialogProps) => import("react/jsx-runtime").JSX.Element;
30
33
  export {};
@@ -6,8 +6,11 @@ export type MenuProps = {
6
6
  defaultOpen?: boolean;
7
7
  onOpenChange?(open: boolean): void;
8
8
  portalContainer?: HTMLElement | null;
9
+ side?: "top" | "right" | "bottom" | "left";
10
+ align?: "start" | "center" | "end";
9
11
  };
10
- export declare function Menu({ children, trigger, open, defaultOpen, onOpenChange, portalContainer }: MenuProps): import("react/jsx-runtime").JSX.Element;
12
+ declare const Menu: React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<HTMLButtonElement>>;
13
+ export { Menu };
11
14
  export type MenuItemProps = {
12
15
  children: React.ReactNode;
13
16
  dense?: boolean;
@@ -1,26 +1,31 @@
1
- export declare function Menubar({ children, className }: {
1
+ import * as React from "react";
2
+ export declare function Menubar({ children, onSelect, className }: {
2
3
  children: React.ReactNode;
4
+ onSelect?: (event: React.SyntheticEvent) => void;
3
5
  className?: string;
4
6
  }): import("react/jsx-runtime").JSX.Element;
5
7
  export declare function MenubarMenu({ children, }: {
6
8
  children: React.ReactNode;
7
9
  }): import("react/jsx-runtime").JSX.Element;
8
- export declare function MenubarTrigger({ children, className }: {
10
+ export declare function MenubarTrigger({ children, onSelect, className }: {
9
11
  children: React.ReactNode;
12
+ onSelect?: (event: React.SyntheticEvent) => void;
10
13
  className?: string;
11
14
  }): import("react/jsx-runtime").JSX.Element;
12
15
  export declare function MenubarPortal({ children, }: {
13
16
  children: React.ReactNode;
14
17
  }): import("react/jsx-runtime").JSX.Element;
15
- export declare function MenubarContent({ children, className, align, sideOffset, alignOffset, ...rest }: {
18
+ export declare function MenubarContent({ children, className, align, sideOffset, alignOffset, onSelect, ...rest }: {
16
19
  children: React.ReactNode;
17
20
  className?: string;
21
+ onSelect?: (event: React.SyntheticEvent) => void;
18
22
  align?: "start" | "center" | "end";
19
23
  sideOffset?: number;
20
24
  alignOffset?: number;
21
25
  }): import("react/jsx-runtime").JSX.Element;
22
- export declare function MenubarItem({ children, leftPadding, className, disabled, ...rest }: {
26
+ export declare function MenubarItem({ children, leftPadding, className, disabled, onSelect, ...rest }: {
23
27
  children: React.ReactNode;
28
+ onSelect?: (event: Event) => void;
24
29
  leftPadding?: boolean;
25
30
  className?: string;
26
31
  disabled?: boolean;
@@ -32,17 +37,20 @@ export declare function MenubarSeparator({ children, className, ...rest }: {
32
37
  export declare function MenubarSub({ children, ...rest }: {
33
38
  children?: React.ReactNode;
34
39
  }): import("react/jsx-runtime").JSX.Element;
35
- export declare function MenubarSubTrigger({ children, className, ...rest }: {
40
+ export declare function MenubarSubTrigger({ children, className, onSelect, ...rest }: {
36
41
  children?: React.ReactNode;
42
+ onSelect?: (event: React.SyntheticEvent) => void;
37
43
  className?: string;
38
44
  }): import("react/jsx-runtime").JSX.Element;
39
- export declare function MenubarSubContent({ children, alignOffset, className, ...rest }: {
45
+ export declare function MenubarSubContent({ children, alignOffset, className, onSelect, ...rest }: {
40
46
  children?: React.ReactNode;
47
+ onSelect?: (event: React.SyntheticEvent) => void;
41
48
  alignOffset?: number;
42
49
  className?: string;
43
50
  }): import("react/jsx-runtime").JSX.Element;
44
- export declare function MenubarCheckboxItem({ children, checked, onCheckedChange, className, ...rest }: {
51
+ export declare function MenubarCheckboxItem({ children, checked, onCheckedChange, className, onSelect, ...rest }: {
45
52
  children?: React.ReactNode;
53
+ onSelect?: (event: Event) => void;
46
54
  checked?: boolean;
47
55
  onCheckedChange?: () => void;
48
56
  className?: string;
@@ -51,14 +59,16 @@ export declare function MenubarItemIndicator({ children, className, ...rest }: {
51
59
  children?: React.ReactNode;
52
60
  className?: string;
53
61
  }): import("react/jsx-runtime").JSX.Element;
54
- export declare function MenubarRadioGroup({ children, className, value, onValueChange, ...rest }: {
62
+ export declare function MenubarRadioGroup({ children, className, value, onValueChange, onSelect, ...rest }: {
55
63
  children?: React.ReactNode;
64
+ onSelect?: (event: React.SyntheticEvent) => void;
56
65
  value?: string;
57
66
  onValueChange?: (value: string) => void;
58
67
  className?: string;
59
68
  }): import("react/jsx-runtime").JSX.Element;
60
- export declare function MenubarRadioItem({ children, className, value, ...rest }: {
69
+ export declare function MenubarRadioItem({ children, className, value, onSelect, ...rest }: {
61
70
  children?: React.ReactNode;
71
+ onSelect?: (event: Event) => void;
62
72
  value: string;
63
73
  className?: string;
64
74
  }): import("react/jsx-runtime").JSX.Element;
@@ -1,35 +1,50 @@
1
1
  import * as React from "react";
2
- export type MultiSelectProps = {
2
+ import { ChangeEvent } from "react";
3
+ interface MultiSelectContextProps {
4
+ fieldValue?: string[];
5
+ onItemClick: (v: string) => void;
6
+ }
7
+ export declare const MultiSelectContext: React.Context<MultiSelectContextProps>;
8
+ /**
9
+ * Props for MultiSelect component
10
+ */
11
+ interface MultiSelectProps {
12
+ /**
13
+ * The modality of the popover. When set to true, interaction with outside elements
14
+ * will be disabled and only popover content will be visible to screen readers.
15
+ * Optional, defaults to false.
16
+ */
17
+ modalPopover?: boolean;
18
+ /**
19
+ * Additional class names to apply custom styles to the multi-select component.
20
+ * Optional, can be used to add custom styles.
21
+ */
22
+ className?: string;
3
23
  open?: boolean;
4
24
  name?: string;
5
25
  id?: string;
6
26
  onOpenChange?: (open: boolean) => void;
7
27
  value?: string[];
8
- containerClassName?: string;
9
- className?: string;
10
28
  inputClassName?: string;
11
- onMultiValueChange?: (updatedValue: string[]) => void;
29
+ onChange?: React.EventHandler<ChangeEvent<HTMLSelectElement>>;
30
+ onValueChange?: (updatedValue: string[]) => void;
12
31
  placeholder?: React.ReactNode;
13
- renderValue?: (values: string, index: number) => React.ReactNode;
14
- renderValues?: (values: string[]) => React.ReactNode;
15
32
  size?: "small" | "medium";
16
- label?: React.ReactNode;
33
+ useChips?: boolean;
34
+ label?: React.ReactNode | string;
17
35
  disabled?: boolean;
18
36
  error?: boolean;
19
37
  position?: "item-aligned" | "popper";
20
38
  endAdornment?: React.ReactNode;
39
+ multiple?: boolean;
40
+ includeClear?: boolean;
21
41
  inputRef?: React.RefObject<HTMLButtonElement>;
22
42
  padding?: boolean;
23
- includeFocusOutline?: boolean;
24
- children?: React.ReactNode;
25
- };
26
- interface MultiSelectContextProps {
27
- fieldValue?: string[];
28
- setInputValue: (v: string) => void;
29
- onValueChangeInternal: (v: string) => void;
43
+ invisible?: boolean;
44
+ children: React.ReactNode;
45
+ renderValues?: (values: string[]) => React.ReactNode;
30
46
  }
31
- export declare const MultiSelectContext: React.Context<MultiSelectContextProps>;
32
- export declare function MultiSelect({ value, open, onMultiValueChange, size, label, disabled, renderValue, renderValues, includeFocusOutline, containerClassName, className, children, error }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
47
+ export declare const MultiSelect: React.ForwardRefExoticComponent<MultiSelectProps & React.RefAttributes<HTMLButtonElement>>;
33
48
  export interface MultiSelectItemProps {
34
49
  value: string;
35
50
  children?: React.ReactNode;
@@ -17,5 +17,6 @@ export interface PopoverProps {
17
17
  enabled?: boolean;
18
18
  modal?: boolean;
19
19
  className?: string;
20
+ portalContainer?: HTMLElement | null;
20
21
  }
21
- export declare function Popover({ trigger, children, open, onOpenChange, side, sideOffset, align, alignOffset, arrowPadding, sticky, hideWhenDetached, avoidCollisions, enabled, modal, className }: PopoverProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare function Popover({ trigger, children, open, onOpenChange, side, sideOffset, align, alignOffset, arrowPadding, sticky, hideWhenDetached, avoidCollisions, enabled, modal, portalContainer, className }: PopoverProps): import("react/jsx-runtime").JSX.Element;
@@ -22,6 +22,7 @@ export interface RadioGroupItemProps {
22
22
  checked?: boolean;
23
23
  required?: boolean;
24
24
  className?: string;
25
+ disabled?: boolean;
25
26
  }
26
27
  declare const RadioGroupItem: React.ForwardRefExoticComponent<RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>>;
27
28
  export { RadioGroup, RadioGroupItem };
@@ -1,32 +1,28 @@
1
- import React from "react";
1
+ import React, { ChangeEvent } from "react";
2
2
  export type SelectProps = {
3
3
  open?: boolean;
4
4
  name?: string;
5
5
  id?: string;
6
6
  onOpenChange?: (open: boolean) => void;
7
- value?: string | string[];
7
+ value?: string;
8
8
  className?: string;
9
9
  inputClassName?: string;
10
- onChange?: React.EventHandler<React.ChangeEvent<HTMLSelectElement>>;
10
+ onChange?: React.EventHandler<ChangeEvent<HTMLSelectElement>>;
11
11
  onValueChange?: (updatedValue: string) => void;
12
- onMultiValueChange?: (updatedValue: string[]) => void;
13
12
  placeholder?: React.ReactNode;
14
- renderValue?: (value: string, index: number) => React.ReactNode;
15
- renderValues?: (values: string[]) => React.ReactNode;
13
+ renderValue?: (value: string) => React.ReactNode;
16
14
  size?: "small" | "medium";
17
15
  label?: React.ReactNode | string;
18
16
  disabled?: boolean;
19
17
  error?: boolean;
20
18
  position?: "item-aligned" | "popper";
21
19
  endAdornment?: React.ReactNode;
22
- multiple?: boolean;
23
20
  inputRef?: React.RefObject<HTMLButtonElement>;
24
21
  padding?: boolean;
25
- includeFocusOutline?: boolean;
26
22
  invisible?: boolean;
27
23
  children?: React.ReactNode;
28
24
  };
29
- export declare function Select({ inputRef, open, name, id, onOpenChange, value, onChange, onValueChange, onMultiValueChange, className, inputClassName, placeholder, renderValue, renderValues, label, size, includeFocusOutline, error, disabled, padding, position, endAdornment, multiple, invisible, children, ...props }: SelectProps): import("react/jsx-runtime").JSX.Element;
25
+ export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLDivElement>>;
30
26
  export type SelectItemProps = {
31
27
  value: string;
32
28
  children?: React.ReactNode;
@@ -1,4 +1,5 @@
1
- export declare function Separator({ orientation, decorative }: {
1
+ export declare function Separator({ orientation, decorative, className }: {
2
2
  orientation: "horizontal" | "vertical";
3
3
  decorative?: boolean;
4
+ className?: string;
4
5
  }): import("react/jsx-runtime").JSX.Element;
@@ -2,9 +2,13 @@ import React from "react";
2
2
  interface SheetProps {
3
3
  children: React.ReactNode;
4
4
  open: boolean;
5
+ title?: string;
5
6
  side?: "top" | "bottom" | "left" | "right";
7
+ darkBackground?: boolean;
6
8
  transparent?: boolean;
7
9
  onOpenChange?: (open: boolean) => void;
10
+ className?: string;
11
+ overlayClassName?: string;
8
12
  }
9
13
  export declare const Sheet: React.FC<SheetProps>;
10
14
  export {};
@@ -3,25 +3,25 @@ export type TableProps = {
3
3
  children: React.ReactNode;
4
4
  className?: string;
5
5
  style?: React.CSSProperties;
6
- };
7
- export declare const Table: ({ children, className, style }: TableProps) => import("react/jsx-runtime").JSX.Element;
6
+ } & React.TableHTMLAttributes<HTMLTableElement>;
7
+ export declare const Table: ({ children, className, style, ...rest }: TableProps) => import("react/jsx-runtime").JSX.Element;
8
8
  export type TableBodyProps = {
9
9
  children?: React.ReactNode;
10
10
  className?: string;
11
- };
12
- export declare const TableBody: ({ children, className }: TableBodyProps) => import("react/jsx-runtime").JSX.Element;
11
+ } & React.HTMLAttributes<HTMLTableSectionElement>;
12
+ export declare const TableBody: ({ children, className, ...rest }: TableBodyProps) => import("react/jsx-runtime").JSX.Element;
13
13
  export type TableHeaderProps = {
14
14
  children?: React.ReactNode;
15
15
  className?: string;
16
- };
17
- export declare const TableHeader: ({ children, className }: TableHeaderProps) => import("react/jsx-runtime").JSX.Element;
16
+ } & React.HTMLAttributes<HTMLTableSectionElement>;
17
+ export declare const TableHeader: ({ children, className, ...rest }: TableHeaderProps) => import("react/jsx-runtime").JSX.Element;
18
18
  export type TableRowProps = {
19
19
  children?: React.ReactNode;
20
20
  className?: string;
21
21
  onClick?: React.MouseEventHandler<any>;
22
22
  style?: React.CSSProperties;
23
- };
24
- export declare const TableRow: ({ children, className, onClick, style }: TableRowProps) => import("react/jsx-runtime").JSX.Element;
23
+ } & React.HTMLAttributes<HTMLTableRowElement>;
24
+ export declare const TableRow: ({ children, className, onClick, style, ...rest }: TableRowProps) => import("react/jsx-runtime").JSX.Element;
25
25
  export type TableCellProps = {
26
26
  children?: React.ReactNode;
27
27
  header?: boolean;
@@ -30,5 +30,5 @@ export type TableCellProps = {
30
30
  style?: React.CSSProperties;
31
31
  align?: "left" | "center" | "right";
32
32
  colspan?: number;
33
- };
34
- export declare const TableCell: ({ children, header, scope, align, className, style, colspan }: TableCellProps) => import("react/jsx-runtime").JSX.Element;
33
+ } & React.HTMLAttributes<HTMLTableCellElement>;
34
+ export declare const TableCell: ({ children, header, scope, align, className, style, colspan, ...rest }: TableCellProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,15 +1,19 @@
1
1
  import React from "react";
2
2
  export type TooltipProps = {
3
3
  open?: boolean;
4
+ defaultOpen?: boolean;
4
5
  onOpenChange?: (open: boolean) => void;
5
6
  side?: "top" | "bottom" | "left" | "right";
6
7
  align?: "start" | "center" | "end";
7
8
  sideOffset?: number;
8
9
  title?: string | React.ReactNode;
9
10
  delayDuration?: number;
10
- className?: string;
11
+ asChild?: boolean;
11
12
  tooltipClassName?: string;
13
+ tooltipStyle?: React.CSSProperties;
12
14
  children: React.ReactNode;
15
+ className?: string;
16
+ container?: HTMLElement;
13
17
  style?: React.CSSProperties;
14
18
  };
15
- export declare const Tooltip: ({ open, side, delayDuration, sideOffset, align, onOpenChange, title, className, style, tooltipClassName, children }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
19
+ export declare const Tooltip: ({ open, defaultOpen, side, delayDuration, sideOffset, align, onOpenChange, title, tooltipClassName, tooltipStyle, children, asChild, container, className, style }: TooltipProps) => import("react/jsx-runtime").JSX.Element;
File without changes
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import "@material-design-icons/font/filled.css";
2
+ import 'material-icons/iconfont/filled.css';
3
3
  export type IconColor = "inherit" | "primary" | "secondary" | "disabled" | "error" | "success" | "warning";
4
4
  export type IconProps = {
5
5
  size?: "smallest" | "small" | "medium" | "large" | number;
package/dist/index.css ADDED
@@ -0,0 +1,77 @@
1
+ /* Chrome, Safari and Opera */
2
+ .no-scrollbar::-webkit-scrollbar {
3
+ display: none;
4
+ }
5
+
6
+ .no-scrollbar {
7
+ -ms-overflow-style: none; /* IE and Edge */
8
+ scrollbar-width: none; /* Firefox */
9
+ }
10
+
11
+ .typography-h1 {
12
+ @apply text-6xl font-headers font-light;
13
+ }
14
+
15
+ .typography-h2 {
16
+ @apply text-5xl font-headers font-light;
17
+ }
18
+
19
+ .typography-h3 {
20
+ @apply text-4xl font-headers font-normal;
21
+ }
22
+
23
+ .typography-h4 {
24
+ @apply text-3xl font-headers font-normal;
25
+ }
26
+
27
+ .typography-h5 {
28
+ @apply text-2xl font-headers font-normal;
29
+ }
30
+
31
+ .typography-h6 {
32
+ @apply text-xl font-headers font-medium;
33
+ }
34
+
35
+ .typography-subtitle1 {
36
+ @apply text-lg font-headers font-medium;
37
+ }
38
+
39
+ .typography-subtitle2 {
40
+ @apply text-base font-headers font-medium;
41
+ }
42
+
43
+ .typography-body1 {
44
+ }
45
+
46
+ .typography-body2 {
47
+ @apply text-sm;
48
+ }
49
+
50
+ .typography-caption {
51
+ @apply text-xs;
52
+ }
53
+
54
+ .typography-label {
55
+ @apply text-sm font-medium;
56
+ }
57
+
58
+ .typography-inherit {
59
+ @apply text-inherit;
60
+ }
61
+
62
+ .typography-button {
63
+ @apply text-sm font-medium;
64
+ }
65
+
66
+
67
+ :focus-visible {
68
+ @apply 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
69
+ }
70
+
71
+ a {
72
+ @apply text-blue-600 dark:text-blue-400 dark:hover:text-blue-600 hover:text-blue-800
73
+ }
74
+
75
+ body {
76
+ @apply w-full min-h-screen bg-gray-50 dark:bg-gray-900 flex flex-col items-center justify-center;
77
+ }