@mbao01/common 0.0.4 → 0.0.6

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 (84) hide show
  1. package/README.md +1 -2
  2. package/dist/types/components/Badge/Badge.d.ts +1 -1
  3. package/dist/types/components/Badge/constants.d.ts +5 -5
  4. package/dist/types/components/Badge/types.d.ts +3 -7
  5. package/dist/types/components/Breadcrumbs/Breadcrumbs.d.ts +3 -0
  6. package/dist/types/components/Breadcrumbs/index.d.ts +1 -0
  7. package/dist/types/components/Breadcrumbs/types.d.ts +2 -0
  8. package/dist/types/components/Button/Button.d.ts +11 -2
  9. package/dist/types/components/Button/constants.d.ts +7 -8
  10. package/dist/types/components/Button/types.d.ts +6 -12
  11. package/dist/types/components/Card/Card.d.ts +10 -8
  12. package/dist/types/components/Card/constants.d.ts +6 -0
  13. package/dist/types/components/Card/types.d.ts +3 -18
  14. package/dist/types/components/Description/Description.d.ts +7 -0
  15. package/dist/types/components/Description/index.d.ts +1 -0
  16. package/dist/types/components/Description/types.d.ts +3 -0
  17. package/dist/types/components/Loading/Loading.d.ts +2 -0
  18. package/dist/types/components/Loading/constants.d.ts +5 -0
  19. package/dist/types/components/Loading/index.d.ts +1 -0
  20. package/dist/types/components/Loading/types.d.ts +3 -0
  21. package/dist/types/components/Skeleton/Skeleton.d.ts +2 -0
  22. package/dist/types/components/Skeleton/constants.d.ts +6 -0
  23. package/dist/types/components/Skeleton/index.d.ts +1 -0
  24. package/dist/types/components/Skeleton/types.d.ts +3 -0
  25. package/dist/types/components/Text/Text.d.ts +2 -4
  26. package/dist/types/components/Text/constants.d.ts +4 -5
  27. package/dist/types/components/Text/types.d.ts +4 -9
  28. package/dist/types/components/Tooltip/Tooltip.d.ts +14 -2
  29. package/dist/types/components/Tooltip/constants.d.ts +6 -5
  30. package/dist/types/components/Tooltip/index.d.ts +1 -1
  31. package/dist/types/components/Tooltip/types.d.ts +5 -10
  32. package/dist/types/index.d.ts +9 -2
  33. package/dist/types/libs/cva.d.ts +1 -0
  34. package/dist/types/libs/index.d.ts +1 -0
  35. package/dist/types/utilities/cn.d.ts +2 -0
  36. package/dist/types/utilities/getSubpaths/getSubpaths.d.ts +6 -0
  37. package/dist/types/utilities/getSubpaths/index.d.ts +1 -0
  38. package/dist/types/utilities/index.d.ts +2 -0
  39. package/package.json +12 -5
  40. package/plugin.js +1 -3
  41. package/src/components/Badge/Badge.tsx +4 -14
  42. package/src/components/Badge/constants.ts +28 -30
  43. package/src/components/Badge/types.ts +4 -17
  44. package/src/components/Breadcrumbs/Breadcrumbs.tsx +13 -0
  45. package/src/components/Breadcrumbs/index.ts +1 -0
  46. package/src/components/Breadcrumbs/types.ts +3 -0
  47. package/src/components/Button/Button.tsx +51 -37
  48. package/src/components/Button/constants.ts +39 -43
  49. package/src/components/Button/types.ts +7 -25
  50. package/src/components/Card/Card.tsx +16 -23
  51. package/src/components/Card/constants.ts +22 -0
  52. package/src/components/Card/types.ts +4 -18
  53. package/src/components/Description/Description.tsx +34 -0
  54. package/src/components/Description/index.ts +1 -0
  55. package/src/components/Description/types.ts +5 -0
  56. package/src/components/Loading/Loading.tsx +18 -0
  57. package/src/components/Loading/constants.ts +30 -0
  58. package/src/components/Loading/index.ts +1 -0
  59. package/src/components/Loading/types.ts +5 -0
  60. package/src/components/Skeleton/Skeleton.tsx +22 -0
  61. package/src/components/Skeleton/constants.ts +40 -0
  62. package/src/components/Skeleton/index.ts +1 -0
  63. package/src/components/Skeleton/types.ts +5 -0
  64. package/src/components/Text/Text.tsx +24 -9
  65. package/src/components/Text/constants.ts +26 -28
  66. package/src/components/Text/types.ts +9 -20
  67. package/src/components/Tooltip/Tooltip.tsx +36 -11
  68. package/src/components/Tooltip/constants.ts +32 -31
  69. package/src/components/Tooltip/index.ts +1 -1
  70. package/src/components/Tooltip/types.ts +13 -22
  71. package/src/index.ts +12 -2
  72. package/src/libs/cva.ts +1 -0
  73. package/src/libs/index.ts +1 -0
  74. package/src/utilities/cn.ts +6 -0
  75. package/src/utilities/getSubpaths/getSubpaths.ts +34 -0
  76. package/src/utilities/getSubpaths/index.ts +1 -0
  77. package/src/utilities/index.ts +2 -0
  78. package/vitest-setup.ts +11 -1
  79. package/dist/types/components/Detail/Detail.d.ts +0 -2
  80. package/dist/types/components/Detail/index.d.ts +0 -1
  81. package/dist/types/components/Detail/types.d.ts +0 -5
  82. package/src/components/Detail/Detail.tsx +0 -10
  83. package/src/components/Detail/index.ts +0 -1
  84. package/src/components/Detail/types.ts +0 -6
@@ -1,40 +1,54 @@
1
- import c from "clsx";
2
- import { getButtonClasses } from "./constants";
1
+ import React from "react";
2
+ import { Slot } from "@radix-ui/react-slot";
3
3
  import { type ButtonProps } from "./types";
4
+ import { getButtonClasses } from "./constants";
5
+ import { Loading } from "../Loading";
6
+ import { cn } from "../../utilities";
7
+
8
+ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
9
+ (
10
+ {
11
+ as,
12
+ className,
13
+ outline,
14
+ children,
15
+ isLoading,
16
+ variant,
17
+ size,
18
+ wide,
19
+ ...props
20
+ },
21
+ ref
22
+ ) => {
23
+ const Comp = as ? Slot : "button";
24
+ const SlotChild = as ? as : React.Fragment;
25
+
26
+ return (
27
+ <Comp
28
+ ref={ref}
29
+ className={cn(
30
+ getButtonClasses({ size, wide, outline, variant, isLoading }),
31
+ className
32
+ )}
33
+ {...props}
34
+ >
35
+ {/* slot merges it's prop into it's immediate child */}
36
+ <SlotChild>
37
+ {children}
38
+ {isLoading ? (
39
+ <span
40
+ className="absolute left-0 top-0 flex h-full w-full items-center justify-center bg-[inherit]"
41
+ data-testid="loading"
42
+ >
43
+ <Loading />
44
+ </span>
45
+ ) : null}
46
+ </SlotChild>
47
+ </Comp>
48
+ );
49
+ }
50
+ );
4
51
 
5
- export const Button = (props: ButtonProps) => {
6
- const {
7
- className,
8
- outline,
9
- label,
10
- disabled,
11
- onClick,
12
- loading,
13
- variant,
14
- size,
15
- wide,
16
- ...rest
17
- } = props;
52
+ Button.displayName = "Button";
18
53
 
19
- return (
20
- <button
21
- {...rest}
22
- onClick={onClick}
23
- disabled={disabled}
24
- className={c(
25
- getButtonClasses({ size, wide, outline, variant, loading }),
26
- className
27
- )}
28
- >
29
- {label}
30
- {loading ? (
31
- <span
32
- className="absolute left-0 top-0 flex h-full w-full items-center justify-center bg-[inherit]"
33
- data-testid="loading"
34
- >
35
- <span className="loading loading-spinner" />
36
- </span>
37
- ) : null}
38
- </button>
39
- );
40
- };
54
+ export { Button };
@@ -1,44 +1,40 @@
1
- import c from 'clsx';
2
- import type { ButtonSize, ButtonVariant } from './types';
1
+ import { cva } from "../../libs";
3
2
 
4
- const BUTTON_SIZE = {
5
- xs: c('btn-xs'),
6
- sm: c('btn-sm'),
7
- md: c('btn-md'),
8
- lg: c('btn-lg'),
9
- } satisfies Record<ButtonSize, string>;
10
-
11
- const BUTTON_VARIANTS = {
12
- accent: c('btn-accent'),
13
- default: c('btn-default'),
14
- error: c('btn-error'),
15
- ghost: c('btn-ghost'),
16
- info: c('btn-info'),
17
- link: c('btn-link'),
18
- neutral: c('btn-neutral'),
19
- primary: c('btn-primary'),
20
- secondary: c('btn-secondary'),
21
- success: c('btn-success'),
22
- warning: c('btn-warning'),
23
- } satisfies Record<ButtonVariant, string>;
24
-
25
- export const getButtonClasses = ({
26
- size,
27
- wide,
28
- loading,
29
- outline,
30
- variant,
31
- }: {
32
- size?: ButtonSize;
33
- wide?: boolean;
34
- loading?: boolean;
35
- outline?: boolean;
36
- variant?: ButtonVariant;
37
- }) => {
38
- return c('btn', BUTTON_VARIANTS[variant!], BUTTON_SIZE[size!], {
39
- 'btn-outline': outline,
40
- 'btn-wide': wide,
41
- 'relative overflow-hidden': loading,
42
- 'min-h-fit h-10': !size,
43
- });
44
- };
3
+ export const getButtonClasses = cva("btn", {
4
+ variants: {
5
+ variant: {
6
+ accent: "btn-accent",
7
+ default: "btn-default",
8
+ error: "btn-error",
9
+ ghost: "btn-ghost",
10
+ info: "btn-info",
11
+ link: "btn-link",
12
+ neutral: "btn-neutral",
13
+ primary: "btn-primary",
14
+ secondary: "btn-secondary",
15
+ success: "btn-success",
16
+ warning: "btn-warning",
17
+ },
18
+ outline: {
19
+ true: "btn-outline",
20
+ },
21
+ wide: {
22
+ true: "btn-wide",
23
+ },
24
+ size: {
25
+ xs: "btn-xs",
26
+ sm: "btn-sm",
27
+ md: "btn-md",
28
+ lg: "btn-lg",
29
+ },
30
+ isLoading: {
31
+ true: "relative overflow-hidden",
32
+ },
33
+ },
34
+ compoundVariants: [
35
+ {
36
+ size: undefined,
37
+ className: "min-h-fit h-10",
38
+ },
39
+ ],
40
+ });
@@ -1,26 +1,8 @@
1
- import type { ButtonHTMLAttributes, ReactNode } from 'react';
1
+ import { type VariantProps } from "../../libs";
2
+ import { type ButtonHTMLAttributes } from "react";
3
+ import { getButtonClasses } from "./constants";
2
4
 
3
- export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg';
4
-
5
- export type ButtonVariant =
6
- | 'default'
7
- | 'neutral'
8
- | 'primary'
9
- | 'secondary'
10
- | 'accent'
11
- | 'ghost'
12
- | 'link'
13
- | 'info'
14
- | 'success'
15
- | 'warning'
16
- | 'error';
17
-
18
- export type ButtonProps = {
19
- size?: ButtonSize;
20
- wide?: boolean;
21
- label: ReactNode;
22
- loading?: boolean;
23
- outline?: boolean;
24
- variant?: ButtonVariant;
25
- disabled?: boolean;
26
- } & ButtonHTMLAttributes<HTMLButtonElement>;
5
+ export type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> &
6
+ VariantProps<typeof getButtonClasses> & {
7
+ as?: keyof Pick<JSX.IntrinsicElements, "a" | "span" | "p">;
8
+ };
@@ -1,5 +1,4 @@
1
- import c from "clsx";
2
- import {
1
+ import type {
3
2
  CardContentProps,
4
3
  CardDescriptionProps,
5
4
  CardFooterProps,
@@ -7,6 +6,8 @@ import {
7
6
  CardImageProps,
8
7
  CardProps,
9
8
  } from "./types";
9
+ import { cn } from "../../utilities";
10
+ import { getCardClasses } from "./constants";
10
11
 
11
12
  const Card = ({
12
13
  compact,
@@ -17,15 +18,8 @@ const Card = ({
17
18
  ...props
18
19
  }: CardProps) => (
19
20
  <div
20
- className={c(
21
- "card",
22
- {
23
- "card-bordered": bordered,
24
- "card-compact": compact,
25
- "card-normal": !compact,
26
- "image-full": overlay,
27
- "card-side": horizontal,
28
- },
21
+ className={cn(
22
+ getCardClasses({ bordered, compact, horizontal, overlay }),
29
23
  className
30
24
  )}
31
25
  {...props}
@@ -33,15 +27,15 @@ const Card = ({
33
27
  );
34
28
 
35
29
  const CardHeader = ({ className, ...props }: CardHeaderProps) => (
36
- <h3 className={c("card-title", className)} {...props} />
30
+ <h3 className={cn("card-title", className)} {...props} />
37
31
  );
38
32
 
39
33
  const CardDescription = ({ className, ...props }: CardDescriptionProps) => (
40
- <p className={c("text-sm text-muted-foreground", className)} {...props} />
34
+ <p className={cn("text-sm text-muted-foreground", className)} {...props} />
41
35
  );
42
36
 
43
37
  const CardContent = ({ className, ...props }: CardContentProps) => (
44
- <div className={c("card-body p-6 pt-0", className)} {...props} />
38
+ <div className={cn("card-body p-6 pt-0", className)} {...props} />
45
39
  );
46
40
 
47
41
  const CardImage = ({ className, src, alt, ...props }: CardImageProps) => (
@@ -51,14 +45,13 @@ const CardImage = ({ className, src, alt, ...props }: CardImageProps) => (
51
45
  );
52
46
 
53
47
  const CardFooter = ({ className, ...props }: CardFooterProps) => (
54
- <div className={c("card-actions", className)} {...props} />
48
+ <div className={cn("card-actions", className)} {...props} />
55
49
  );
56
50
 
57
- export {
58
- Card,
59
- CardHeader,
60
- CardFooter,
61
- CardDescription,
62
- CardContent,
63
- CardImage,
64
- };
51
+ Card.Header = CardHeader;
52
+ Card.Content = CardContent;
53
+ Card.Description = CardDescription;
54
+ Card.Image = CardImage;
55
+ Card.Footer = CardFooter;
56
+
57
+ export { Card };
@@ -0,0 +1,22 @@
1
+ import { cva } from "../../libs";
2
+
3
+ export const getCardClasses = cva("card", {
4
+ variants: {
5
+ bordered: {
6
+ true: "card-bordered",
7
+ },
8
+ compact: {
9
+ true: "card-compact",
10
+ false: "card-normal",
11
+ },
12
+ horizontal: {
13
+ true: "card-side",
14
+ },
15
+ overlay: {
16
+ true: "image-full",
17
+ },
18
+ },
19
+ defaultVariants: {
20
+ compact: false,
21
+ },
22
+ });
@@ -1,23 +1,9 @@
1
1
  import React from "react";
2
+ import { type VariantProps } from "../../libs";
3
+ import { getCardClasses } from "./constants";
2
4
 
3
- export type CardProps = {
4
- /**
5
- * applies smaller padding to the card.
6
- */
7
- compact?: boolean;
8
- /**
9
- * applies border to the card.
10
- */
11
- bordered?: boolean;
12
- /**
13
- * shows the card horizontally with image to the right or left of it.
14
- */
15
- horizontal?: boolean;
16
- /**
17
- * overlay is used to make the image full width with the content on top.
18
- */
19
- overlay?: boolean;
20
- } & React.HTMLAttributes<HTMLDivElement>;
5
+ export type CardProps = React.HTMLAttributes<HTMLDivElement> &
6
+ VariantProps<typeof getCardClasses>;
21
7
 
22
8
  export type CardContentProps = React.HTMLAttributes<HTMLDivElement>;
23
9
  export type CardImageProps = React.ImgHTMLAttributes<HTMLImageElement>;
@@ -0,0 +1,34 @@
1
+ import type {
2
+ DescriptionProps,
3
+ DescriptionTermProps,
4
+ DescriptionDetailProps,
5
+ } from "./types";
6
+ import { cn } from "../../utilities";
7
+
8
+ const Description = (props: DescriptionProps) => {
9
+ return <dl role="list" {...props} />;
10
+ };
11
+
12
+ const DescriptionTerm = ({ className, ...props }: DescriptionTermProps) => {
13
+ return (
14
+ <dt
15
+ role="listitem"
16
+ className={cn("py-2 text-sm font-semibold", className)}
17
+ {...props}
18
+ />
19
+ );
20
+ };
21
+
22
+ const DescriptionDetail = ({ className, ...props }: DescriptionDetailProps) => {
23
+ return (
24
+ <dd
25
+ className={cn("text-base [&:not(:last-child)]:mb-1", className)}
26
+ {...props}
27
+ />
28
+ );
29
+ };
30
+
31
+ Description.Term = DescriptionTerm;
32
+ Description.Detail = DescriptionDetail;
33
+
34
+ export { Description };
@@ -0,0 +1 @@
1
+ export { Description } from "./Description";
@@ -0,0 +1,5 @@
1
+ export type DescriptionProps = React.HTMLAttributes<HTMLDListElement>;
2
+
3
+ export type DescriptionTermProps = React.HTMLAttributes<HTMLElement>;
4
+
5
+ export type DescriptionDetailProps = React.HTMLAttributes<HTMLElement>;
@@ -0,0 +1,18 @@
1
+ import { getLoadingClasses } from "./constants";
2
+ import { type LoadingProps } from "./types";
3
+ import { cn } from "../../utilities";
4
+
5
+ export const Loading = ({
6
+ size,
7
+ intent,
8
+ variant,
9
+ className,
10
+ ...props
11
+ }: LoadingProps) => {
12
+ return (
13
+ <span
14
+ className={cn(getLoadingClasses({ intent, size, variant }), className)}
15
+ {...props}
16
+ />
17
+ );
18
+ };
@@ -0,0 +1,30 @@
1
+ import { cva } from "../../libs";
2
+
3
+ export const getLoadingClasses = cva("loading", {
4
+ variants: {
5
+ variant: {
6
+ spinner: "loading-spinner",
7
+ dots: "loading-dots",
8
+ ring: "loading-ring",
9
+ ball: "loading-ball",
10
+ bars: "loading-bars",
11
+ infinity: "loading-infinity",
12
+ },
13
+ intent: {
14
+ primary: "text-primary",
15
+ secondary: "text-secondary",
16
+ accent: "text-accent",
17
+ neutral: "text-neutral",
18
+ info: "text-info",
19
+ success: "text-success",
20
+ warning: "text-warning",
21
+ error: "text-error",
22
+ },
23
+ size: {
24
+ xs: "loading-xs",
25
+ sm: "loading-sm",
26
+ md: "loading-md",
27
+ lg: "loading-lg",
28
+ },
29
+ },
30
+ });
@@ -0,0 +1 @@
1
+ export { Loading } from "./Loading";
@@ -0,0 +1,5 @@
1
+ import { type VariantProps } from "../../libs";
2
+ import { getLoadingClasses } from "./constants";
3
+
4
+ export type LoadingProps = React.HTMLAttributes<HTMLSpanElement> &
5
+ VariantProps<typeof getLoadingClasses>;
@@ -0,0 +1,22 @@
1
+ import { type SkeletonProps } from "./types";
2
+ import { getSkeletonClasses } from "./constants";
3
+ import { cn } from "../../utilities";
4
+
5
+ export const Skeleton = ({
6
+ round,
7
+ width,
8
+ height,
9
+ variant,
10
+ className,
11
+ ...props
12
+ }: SkeletonProps) => {
13
+ return (
14
+ <div
15
+ className={cn(
16
+ getSkeletonClasses({ width, height, round, variant }),
17
+ className
18
+ )}
19
+ {...props}
20
+ />
21
+ );
22
+ };
@@ -0,0 +1,40 @@
1
+ import { cva } from "../../libs";
2
+
3
+ export const getSkeletonClasses = cva("skeleton", {
4
+ variants: {
5
+ variant: { pulse: "animate-pulse" },
6
+ width: {
7
+ 2: "w-2",
8
+ 4: "w-4",
9
+ 8: "w-8",
10
+ 12: "w-12",
11
+ 16: "w-16",
12
+ 24: "w-24",
13
+ 32: "w-32",
14
+ 48: "w-48",
15
+ 64: "w-64",
16
+ full: "w-full",
17
+ },
18
+ height: {
19
+ 2: "h-2",
20
+ 4: "h-4",
21
+ 8: "h-8",
22
+ 12: "h-12",
23
+ 16: "h-16",
24
+ 24: "h-24",
25
+ 32: "h-32",
26
+ 48: "h-48",
27
+ 64: "h-64",
28
+ full: "h-full",
29
+ },
30
+ round: {
31
+ true: "rounded-full",
32
+ false: "rounded-md",
33
+ },
34
+ },
35
+ defaultVariants: {
36
+ width: "full",
37
+ height: 4,
38
+ round: false,
39
+ },
40
+ });
@@ -0,0 +1 @@
1
+ export { Skeleton } from "./Skeleton";
@@ -0,0 +1,5 @@
1
+ import { type VariantProps } from "../../libs";
2
+ import { getSkeletonClasses } from "./constants";
3
+
4
+ export type SkeletonProps = React.HTMLAttributes<HTMLDivElement> &
5
+ VariantProps<typeof getSkeletonClasses>;
@@ -1,12 +1,27 @@
1
- import c from 'clsx';
2
- import { createElement } from 'react';
3
- import { type TextProps } from './types';
4
- import { getTextClasses } from './constants';
1
+ import React from "react";
2
+ import { type TextProps } from "./types";
3
+ import { getTextClasses } from "./constants";
4
+ import { cn } from "../../utilities";
5
+ import { Slot } from "@radix-ui/react-slot";
5
6
 
6
- export const Text = ({ as = 'span', size, variant, children, className }: TextProps) => {
7
- return createElement(
8
- as,
9
- { className: c(getTextClasses({ size, variant }), className) },
10
- children
7
+ export const Text = ({
8
+ as,
9
+ size,
10
+ variant,
11
+ children,
12
+ className,
13
+ ...props
14
+ }: TextProps) => {
15
+ const Comp = as ? Slot : "span";
16
+ const SlotChild = as ? as : React.Fragment;
17
+
18
+ return (
19
+ <Comp
20
+ className={cn(getTextClasses({ size, variant }), className)}
21
+ {...props}
22
+ >
23
+ {/* slot merges it's prop into it's immediate child */}
24
+ <SlotChild>{children}</SlotChild>
25
+ </Comp>
11
26
  );
12
27
  };
@@ -1,29 +1,27 @@
1
- import c from 'clsx';
2
- import type { TextSize, TextVariant } from './types';
1
+ import { cva } from "../../libs";
3
2
 
4
- const TEXT_SIZE = {
5
- xs: c('text-xs'),
6
- sm: c('text-sm'),
7
- base: c('text-base'),
8
- lg: c('text-lg'),
9
- xl: c('text-xl'),
10
- '2xl': c('text-2xl'),
11
- '3xl': c('text-3xl'),
12
- '4xl': c('text-4xl'),
13
- '5xl': c('text-5xl'),
14
- } satisfies Record<TextSize, string>;
15
-
16
- const TEXT_VARIANT = {
17
- info: c('text-info'),
18
- error: c('text-error'),
19
- success: c('text-success'),
20
- warning: c('text-warning'),
21
- primary: c('text-primary'),
22
- secondary: c('text-secondary'),
23
- accent: c('text-accent'),
24
- neutral: c('text-neutral'),
25
- } satisfies Record<TextVariant, string>;
26
-
27
- export const getTextClasses = ({ size, variant }: { size?: TextSize; variant?: TextVariant }) => {
28
- return c(TEXT_VARIANT[variant!], TEXT_SIZE[size!]);
29
- };
3
+ export const getTextClasses = cva("", {
4
+ variants: {
5
+ variant: {
6
+ info: "text-info",
7
+ error: "text-error",
8
+ success: "text-success",
9
+ warning: "text-warning",
10
+ primary: "text-primary",
11
+ secondary: "text-secondary",
12
+ accent: "text-accent",
13
+ neutral: "text-neutral",
14
+ },
15
+ size: {
16
+ xs: "text-xs",
17
+ sm: "text-sm",
18
+ base: "text-base",
19
+ lg: "text-lg",
20
+ xl: "text-xl",
21
+ "2xl": "text-2xl",
22
+ "3xl": "text-3xl",
23
+ "4xl": "text-4xl",
24
+ "5xl": "text-5xl",
25
+ },
26
+ },
27
+ });
@@ -1,21 +1,10 @@
1
- export type TextSize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';
1
+ import { type VariantProps } from "../../libs";
2
+ import { getTextClasses } from "./constants";
2
3
 
3
- export type TextTag = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'p' | 'span';
4
-
5
- export type TextVariant =
6
- | 'info'
7
- | 'error'
8
- | 'success'
9
- | 'warning'
10
- | 'primary'
11
- | 'secondary'
12
- | 'accent'
13
- | 'neutral';
14
-
15
- export type TextProps = {
16
- as?: TextTag;
17
- size?: TextSize;
18
- variant?: TextVariant;
19
- children: React.ReactNode;
20
- className?: string;
21
- };
4
+ export type TextProps = React.HTMLAttributes<HTMLSpanElement> &
5
+ VariantProps<typeof getTextClasses> & {
6
+ as?: keyof Pick<
7
+ JSX.IntrinsicElements,
8
+ "h1" | "h2" | "h3" | "h4" | "h5" | "p"
9
+ >;
10
+ };