@vite-mf-monorepo/ui 0.1.1 → 0.3.0
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.
- package/dist/Button/index.js +3 -1
- package/dist/MovieCard.utils-CpNUUs8O.d.ts +58 -0
- package/dist/chunk-5NW3IDX2.js +42 -0
- package/dist/chunk-5NW3IDX2.js.map +1 -0
- package/dist/chunk-FDLKS7BI.js +44 -0
- package/dist/chunk-FDLKS7BI.js.map +1 -0
- package/dist/chunk-JDBRVX5O.js +397 -0
- package/dist/chunk-JDBRVX5O.js.map +1 -0
- package/dist/chunk-JPJYJLAP.js +38 -0
- package/dist/chunk-JPJYJLAP.js.map +1 -0
- package/dist/chunk-WYIIOTWJ.js +49 -0
- package/dist/chunk-WYIIOTWJ.js.map +1 -0
- package/dist/chunk-Y5GP5OWN.js +3 -0
- package/dist/chunk-Y5GP5OWN.js.map +1 -0
- package/dist/index.d.ts +4 -106
- package/dist/index.js +36 -449
- package/dist/index.js.map +1 -1
- package/dist/next/index.d.ts +48 -0
- package/dist/next/index.js +120 -0
- package/dist/next/index.js.map +1 -0
- package/dist/react-router/index.d.ts +19 -0
- package/dist/react-router/index.js +8 -0
- package/dist/react-router/index.js.map +1 -0
- package/package.json +24 -2
- package/dist/chunk-GNBS5RLB.js +0 -85
- package/dist/chunk-GNBS5RLB.js.map +0 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Skeleton_default } from '../chunk-JPJYJLAP.js';
|
|
2
|
+
import { getMovieCardLinkClasses, MovieCardContent } from '../chunk-JDBRVX5O.js';
|
|
3
|
+
import { getButtonClasses, iconSizeMap, getButtonDisabledClasses } from '../chunk-FDLKS7BI.js';
|
|
4
|
+
import '../chunk-JI3OVXCK.js';
|
|
5
|
+
import { Icon_default } from '../chunk-JHRISQQJ.js';
|
|
6
|
+
import Link from 'next/link';
|
|
7
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
8
|
+
import Image from 'next/image';
|
|
9
|
+
import { useState } from 'react';
|
|
10
|
+
|
|
11
|
+
function Button(props) {
|
|
12
|
+
const {
|
|
13
|
+
variant = "primary",
|
|
14
|
+
size = "md",
|
|
15
|
+
icon,
|
|
16
|
+
iconPosition = "left",
|
|
17
|
+
className,
|
|
18
|
+
children
|
|
19
|
+
} = props;
|
|
20
|
+
const classes = getButtonClasses({ variant, size, iconPosition, className });
|
|
21
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22
|
+
icon && /* @__PURE__ */ jsx(Icon_default, { name: icon, size: iconSizeMap[size] }),
|
|
23
|
+
children
|
|
24
|
+
] });
|
|
25
|
+
if (props.as === "link") {
|
|
26
|
+
const {
|
|
27
|
+
as: _2,
|
|
28
|
+
variant: _v2,
|
|
29
|
+
size: _s2,
|
|
30
|
+
icon: _i2,
|
|
31
|
+
iconPosition: _ip2,
|
|
32
|
+
className: _c2,
|
|
33
|
+
children: _ch2,
|
|
34
|
+
...linkProps
|
|
35
|
+
} = props;
|
|
36
|
+
return /* @__PURE__ */ jsx(Link, { className: classes, ...linkProps, children: content });
|
|
37
|
+
}
|
|
38
|
+
const {
|
|
39
|
+
as: _,
|
|
40
|
+
variant: _v,
|
|
41
|
+
size: _s,
|
|
42
|
+
icon: _i,
|
|
43
|
+
iconPosition: _ip,
|
|
44
|
+
className: _c,
|
|
45
|
+
children: _ch,
|
|
46
|
+
...buttonProps
|
|
47
|
+
} = props;
|
|
48
|
+
return /* @__PURE__ */ jsx("button", { className: getButtonDisabledClasses(classes), ...buttonProps, children: content });
|
|
49
|
+
}
|
|
50
|
+
var Button_default = Button;
|
|
51
|
+
function HeroImage({ backdropPath, title }) {
|
|
52
|
+
const [loading, setLoading] = useState(true);
|
|
53
|
+
const src = backdropPath ? `https://image.tmdb.org/t/p/original${backdropPath}` : void 0;
|
|
54
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
55
|
+
loading && /* @__PURE__ */ jsx(
|
|
56
|
+
Skeleton_default,
|
|
57
|
+
{
|
|
58
|
+
"data-testid": "hero-image-skeleton",
|
|
59
|
+
variant: "rectangle",
|
|
60
|
+
width: "ui:relative ui:w-full ui:h-full ui:hero-height ui:z-0",
|
|
61
|
+
aspectRatio: "21/9",
|
|
62
|
+
rounded: false
|
|
63
|
+
}
|
|
64
|
+
),
|
|
65
|
+
src && /* @__PURE__ */ jsx(
|
|
66
|
+
Image,
|
|
67
|
+
{
|
|
68
|
+
src,
|
|
69
|
+
alt: title ?? "Unknown",
|
|
70
|
+
fill: true,
|
|
71
|
+
priority: true,
|
|
72
|
+
sizes: "100vw",
|
|
73
|
+
className: "ui:relative ui:h-full ui:w-full ui:object-cover ui:object-center ui:z-0",
|
|
74
|
+
onLoad: () => {
|
|
75
|
+
setLoading(false);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
/* @__PURE__ */ jsx("div", { className: "ui:absolute ui:inset-0 ui:bg-gradient-to-t ui:from-black/80 ui:via-black/40 ui:to-transparent ui:z-1 ui:top-0 ui:left-0 ui:right-0 ui:bottom-0" })
|
|
80
|
+
] });
|
|
81
|
+
}
|
|
82
|
+
var HeroImage_default = HeroImage;
|
|
83
|
+
function MovieCard({
|
|
84
|
+
id,
|
|
85
|
+
title,
|
|
86
|
+
posterUrl,
|
|
87
|
+
voteAverage,
|
|
88
|
+
year,
|
|
89
|
+
className,
|
|
90
|
+
imageLoading = "lazy",
|
|
91
|
+
as = "card",
|
|
92
|
+
...rest
|
|
93
|
+
}) {
|
|
94
|
+
const href = "href" in rest ? rest.href : void 0;
|
|
95
|
+
const onClick = "onClick" in rest ? rest.onClick : void 0;
|
|
96
|
+
const isInteractive = as === "link" || as === "button";
|
|
97
|
+
const cardContent = /* @__PURE__ */ jsx(
|
|
98
|
+
MovieCardContent,
|
|
99
|
+
{
|
|
100
|
+
id,
|
|
101
|
+
title,
|
|
102
|
+
posterUrl,
|
|
103
|
+
voteAverage,
|
|
104
|
+
year,
|
|
105
|
+
className,
|
|
106
|
+
imageLoading,
|
|
107
|
+
isInteractive,
|
|
108
|
+
onClick: as === "button" ? onClick : void 0
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
if (as === "link" && href) {
|
|
112
|
+
return /* @__PURE__ */ jsx(Link, { href, className: getMovieCardLinkClasses(), children: cardContent });
|
|
113
|
+
}
|
|
114
|
+
return cardContent;
|
|
115
|
+
}
|
|
116
|
+
var MovieCard_default = MovieCard;
|
|
117
|
+
|
|
118
|
+
export { Button_default as Button, HeroImage_default as HeroImage, MovieCard_default as MovieCard };
|
|
119
|
+
//# sourceMappingURL=index.js.map
|
|
120
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/next/Button/Button.tsx","../../src/next/HeroImage/HeroImage.tsx","../../src/next/MovieCard/MovieCard.tsx"],"names":["_","_v","_s","_i","_ip","_c","_ch","jsxs","Fragment","jsx","Link"],"mappings":"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","file":"index.js","sourcesContent":["import Link from 'next/link'\n\nimport {\n getButtonClasses,\n getButtonDisabledClasses,\n iconSizeMap,\n} from '../../Button/Button.utils'\nimport { Icon } from '../../Icon'\n\nimport type { NextButtonProps } from './Button.types'\n\nfunction Button(props: Readonly<NextButtonProps>) {\n const {\n variant = 'primary',\n size = 'md',\n icon,\n iconPosition = 'left',\n className,\n children,\n } = props\n\n const classes = getButtonClasses({ variant, size, iconPosition, className })\n\n const content = (\n <>\n {icon && <Icon name={icon} size={iconSizeMap[size]} />}\n {children}\n </>\n )\n\n if (props.as === 'link') {\n const {\n as: _,\n variant: _v,\n size: _s,\n icon: _i,\n iconPosition: _ip,\n className: _c,\n children: _ch,\n ...linkProps\n } = props\n\n return (\n <Link className={classes} {...linkProps}>\n {content}\n </Link>\n )\n }\n\n const {\n as: _,\n variant: _v,\n size: _s,\n icon: _i,\n iconPosition: _ip,\n className: _c,\n children: _ch,\n ...buttonProps\n } = props\n\n return (\n <button className={getButtonDisabledClasses(classes)} {...buttonProps}>\n {content}\n </button>\n )\n}\n\nexport default Button\n","import Image from 'next/image'\nimport { useState } from 'react'\n\nimport { Skeleton } from '../../Skeleton'\n\nexport interface NextHeroImageProps {\n /** Backdrop path from TMDB API (e.g. \"/abc123.jpg\") */\n backdropPath?: string | null\n /** Alt text for the image */\n title?: string | null\n}\n\nfunction HeroImage({ backdropPath, title }: Readonly<NextHeroImageProps>) {\n const [loading, setLoading] = useState(true)\n\n const src = backdropPath\n ? `https://image.tmdb.org/t/p/original${backdropPath}`\n : undefined\n\n return (\n <>\n {loading && (\n <Skeleton\n data-testid=\"hero-image-skeleton\"\n variant=\"rectangle\"\n width=\"ui:relative ui:w-full ui:h-full ui:hero-height ui:z-0\"\n aspectRatio=\"21/9\"\n rounded={false}\n />\n )}\n {src && (\n <Image\n src={src}\n alt={title ?? 'Unknown'}\n fill\n priority\n sizes=\"100vw\"\n className=\"ui:relative ui:h-full ui:w-full ui:object-cover ui:object-center ui:z-0\"\n onLoad={() => {\n setLoading(false)\n }}\n />\n )}\n {/* Gradient Overlay */}\n <div className=\"ui:absolute ui:inset-0 ui:bg-gradient-to-t ui:from-black/80 ui:via-black/40 ui:to-transparent ui:z-1 ui:top-0 ui:left-0 ui:right-0 ui:bottom-0\" />\n </>\n )\n}\n\nexport default HeroImage\n","import Link from 'next/link'\n\nimport { getMovieCardLinkClasses } from '../../MovieCard/MovieCard.utils'\nimport MovieCardContent from '../../MovieCard/MovieCardContent'\n\nimport type { NextMovieCardProps } from './MovieCard.types'\n\nfunction MovieCard({\n id,\n title,\n posterUrl,\n voteAverage,\n year,\n className,\n imageLoading = 'lazy',\n as = 'card',\n ...rest\n}: Readonly<NextMovieCardProps>) {\n const href = 'href' in rest ? rest.href : undefined\n const onClick = 'onClick' in rest ? rest.onClick : undefined\n\n const isInteractive = as === 'link' || as === 'button'\n\n const cardContent = (\n <MovieCardContent\n id={id}\n title={title}\n posterUrl={posterUrl}\n voteAverage={voteAverage}\n year={year}\n className={className}\n imageLoading={imageLoading}\n isInteractive={isInteractive}\n onClick={as === 'button' ? onClick : undefined}\n />\n )\n\n if (as === 'link' && href) {\n return (\n <Link href={href} className={getMovieCardLinkClasses()}>\n {cardContent}\n </Link>\n )\n }\n\n return cardContent\n}\n\nexport default MovieCard\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { Button, ButtonAsButton, ButtonAsLink, ButtonProps } from '../Button/index.js';
|
|
2
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import { M as MovieCardAsCard, a as MovieCardBaseProps, b as MovieCardAsButton } from '../MovieCard.utils-CpNUUs8O.js';
|
|
4
|
+
import '../Icon/index.js';
|
|
5
|
+
import 'react';
|
|
6
|
+
import 'react-router-dom';
|
|
7
|
+
|
|
8
|
+
interface MovieCardAsLink extends MovieCardBaseProps {
|
|
9
|
+
/** Render as React Router Link */
|
|
10
|
+
as: 'link';
|
|
11
|
+
/** Navigation path (required when as="link") */
|
|
12
|
+
to: string;
|
|
13
|
+
onClick?: never;
|
|
14
|
+
}
|
|
15
|
+
type MovieCardProps = MovieCardAsCard | MovieCardAsLink | MovieCardAsButton;
|
|
16
|
+
|
|
17
|
+
declare function MovieCard({ id, title, posterUrl, voteAverage, year, className, imageLoading, as, ...rest }: Readonly<MovieCardProps>): react_jsx_runtime.JSX.Element;
|
|
18
|
+
|
|
19
|
+
export { MovieCard, MovieCardAsButton, MovieCardAsCard, type MovieCardAsLink, MovieCardBaseProps, type MovieCardProps };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { MovieCard_default as MovieCard } from '../chunk-5NW3IDX2.js';
|
|
2
|
+
export { Button_default as Button } from '../chunk-WYIIOTWJ.js';
|
|
3
|
+
import '../chunk-JDBRVX5O.js';
|
|
4
|
+
import '../chunk-FDLKS7BI.js';
|
|
5
|
+
import '../chunk-JI3OVXCK.js';
|
|
6
|
+
import '../chunk-JHRISQQJ.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vite-mf-monorepo/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Design system components for vite-mf-monorepo",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -16,6 +16,18 @@
|
|
|
16
16
|
"default": "./dist/index.js"
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
|
+
"./react-router": {
|
|
20
|
+
"import": {
|
|
21
|
+
"types": "./dist/react-router/index.d.ts",
|
|
22
|
+
"default": "./dist/react-router/index.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"./next": {
|
|
26
|
+
"import": {
|
|
27
|
+
"types": "./dist/next/index.d.ts",
|
|
28
|
+
"default": "./dist/next/index.js"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
19
31
|
"./*": {
|
|
20
32
|
"import": {
|
|
21
33
|
"types": "./dist/*/index.d.ts",
|
|
@@ -31,10 +43,19 @@
|
|
|
31
43
|
"dist"
|
|
32
44
|
],
|
|
33
45
|
"peerDependencies": {
|
|
46
|
+
"next": ">=14",
|
|
34
47
|
"react": "19.2.4",
|
|
35
48
|
"react-dom": "19.2.4",
|
|
36
49
|
"react-router-dom": "7.5.2"
|
|
37
50
|
},
|
|
51
|
+
"peerDependenciesMeta": {
|
|
52
|
+
"react-router-dom": {
|
|
53
|
+
"optional": true
|
|
54
|
+
},
|
|
55
|
+
"next": {
|
|
56
|
+
"optional": true
|
|
57
|
+
}
|
|
58
|
+
},
|
|
38
59
|
"devDependencies": {
|
|
39
60
|
"@tailwindcss/postcss": "4.1.0",
|
|
40
61
|
"@testing-library/jest-dom": "6.6.3",
|
|
@@ -47,6 +68,7 @@
|
|
|
47
68
|
"autoprefixer": "10.4.21",
|
|
48
69
|
"conventional-changelog": "7.2.0",
|
|
49
70
|
"jsdom": "26.0.0",
|
|
71
|
+
"next": "^16.2.0",
|
|
50
72
|
"postcss": "8.5.3",
|
|
51
73
|
"react-router-dom": "7.5.2",
|
|
52
74
|
"tailwindcss": "4.1.0",
|
|
@@ -57,7 +79,7 @@
|
|
|
57
79
|
"dependencies": {
|
|
58
80
|
"@heroicons/react": "^2.2.0",
|
|
59
81
|
"clsx": "2.1.1",
|
|
60
|
-
"@vite-mf-monorepo/shared": "0.0.
|
|
82
|
+
"@vite-mf-monorepo/shared": "0.0.5"
|
|
61
83
|
},
|
|
62
84
|
"scripts": {
|
|
63
85
|
"build:css": "tailwindcss -i ./src/styles.css -o ./dist/styles.css",
|
package/dist/chunk-GNBS5RLB.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { Icon_default } from './chunk-JHRISQQJ.js';
|
|
2
|
-
import clsx from 'clsx';
|
|
3
|
-
import { Link } from 'react-router-dom';
|
|
4
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
5
|
-
|
|
6
|
-
var iconSizeMap = {
|
|
7
|
-
sm: 16,
|
|
8
|
-
md: 20,
|
|
9
|
-
lg: 24
|
|
10
|
-
};
|
|
11
|
-
function Button(props) {
|
|
12
|
-
const {
|
|
13
|
-
variant = "primary",
|
|
14
|
-
size = "md",
|
|
15
|
-
icon,
|
|
16
|
-
iconPosition = "left",
|
|
17
|
-
className,
|
|
18
|
-
children
|
|
19
|
-
} = props;
|
|
20
|
-
const classes = clsx(
|
|
21
|
-
"ui:inline-flex ui:items-center ui:justify-center ui:cursor-pointer ui:gap-2 ui:font-roboto ui:font-medium ui:transition-colors",
|
|
22
|
-
"ui:rounded ui:border ui:border-transparent",
|
|
23
|
-
"ui:focus:outline-none ui:focus:ring-2 ui:focus:ring-ring ui:focus:ring-offset-2",
|
|
24
|
-
{
|
|
25
|
-
"ui:flex-row": iconPosition === "left",
|
|
26
|
-
"ui:flex-row-reverse": iconPosition === "right"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"ui:bg-primary ui:text-primary-foreground ui:hover:bg-primary/90": variant === "primary",
|
|
30
|
-
"ui:bg-secondary ui:text-secondary-foreground ui:hover:bg-secondary/80": variant === "secondary",
|
|
31
|
-
"ui:bg-destructive ui:text-destructive-foreground ui:hover:bg-destructive/90": variant === "destructive",
|
|
32
|
-
"ui:border-input ui:bg-background ui:hover:bg-accent ui:hover:text-accent-foreground": variant === "outline",
|
|
33
|
-
"ui:hover:bg-accent ui:hover:text-accent-foreground": variant === "ghost"
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
"ui:h-8 ui:px-3 ui:text-sm": size === "sm",
|
|
37
|
-
"ui:h-10 ui:px-4 ui:text-base": size === "md",
|
|
38
|
-
"ui:h-12 ui:px-6 ui:text-lg": size === "lg"
|
|
39
|
-
},
|
|
40
|
-
className
|
|
41
|
-
);
|
|
42
|
-
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
43
|
-
icon && /* @__PURE__ */ jsx(Icon_default, { name: icon, size: iconSizeMap[size] }),
|
|
44
|
-
children
|
|
45
|
-
] });
|
|
46
|
-
if (props.as === "link") {
|
|
47
|
-
const {
|
|
48
|
-
as: _2,
|
|
49
|
-
variant: _v2,
|
|
50
|
-
size: _s2,
|
|
51
|
-
icon: _i2,
|
|
52
|
-
iconPosition: _ip2,
|
|
53
|
-
className: _c2,
|
|
54
|
-
children: _ch2,
|
|
55
|
-
...linkProps
|
|
56
|
-
} = props;
|
|
57
|
-
return /* @__PURE__ */ jsx(Link, { className: classes, ...linkProps, children: content });
|
|
58
|
-
}
|
|
59
|
-
const {
|
|
60
|
-
as: _,
|
|
61
|
-
variant: _v,
|
|
62
|
-
size: _s,
|
|
63
|
-
icon: _i,
|
|
64
|
-
iconPosition: _ip,
|
|
65
|
-
className: _c,
|
|
66
|
-
children: _ch,
|
|
67
|
-
...buttonProps
|
|
68
|
-
} = props;
|
|
69
|
-
return /* @__PURE__ */ jsx(
|
|
70
|
-
"button",
|
|
71
|
-
{
|
|
72
|
-
className: clsx(
|
|
73
|
-
classes,
|
|
74
|
-
"ui:disabled:pointer-events-none ui:disabled:opacity-50"
|
|
75
|
-
),
|
|
76
|
-
...buttonProps,
|
|
77
|
-
children: content
|
|
78
|
-
}
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
var Button_default = Button;
|
|
82
|
-
|
|
83
|
-
export { Button_default };
|
|
84
|
-
//# sourceMappingURL=chunk-GNBS5RLB.js.map
|
|
85
|
-
//# sourceMappingURL=chunk-GNBS5RLB.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Button/Button.tsx"],"names":["_","_v","_s","_i","_ip","_c","_ch"],"mappings":";;;;;AAOA,IAAM,WAAA,GAAc;AAAA,EAClB,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI,EAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,SAAS,OAAO,KAAA,EAA8B;AAC5C,EAAA,MAAM;AAAA,IACJ,OAAA,GAAU,SAAA;AAAA,IACV,IAAA,GAAO,IAAA;AAAA,IACP,IAAA;AAAA,IACA,YAAA,GAAe,MAAA;AAAA,IACf,SAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,OAAA,GAAU,IAAA;AAAA,IACd,gIAAA;AAAA,IACA,4CAAA;AAAA,IACA,iFAAA;AAAA,IACA;AAAA,MACE,eAAe,YAAA,KAAiB,MAAA;AAAA,MAChC,uBAAuB,YAAA,KAAiB;AAAA,KAC1C;AAAA,IACA;AAAA,MACE,mEACE,OAAA,KAAY,SAAA;AAAA,MACd,yEACE,OAAA,KAAY,WAAA;AAAA,MACd,+EACE,OAAA,KAAY,aAAA;AAAA,MACd,uFACE,OAAA,KAAY,SAAA;AAAA,MACd,sDAAsD,OAAA,KAAY;AAAA,KACpE;AAAA,IACA;AAAA,MACE,6BAA6B,IAAA,KAAS,IAAA;AAAA,MACtC,gCAAgC,IAAA,KAAS,IAAA;AAAA,MACzC,8BAA8B,IAAA,KAAS;AAAA,KACzC;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,0BACJ,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,IAAA,wBAAS,YAAA,EAAA,EAAK,IAAA,EAAM,MAAM,IAAA,EAAM,WAAA,CAAY,IAAI,CAAA,EAAG,CAAA;AAAA,IACnD;AAAA,GAAA,EACH,CAAA;AAGF,EAAA,IAAI,KAAA,CAAM,OAAO,MAAA,EAAQ;AACvB,IAAA,MAAM;AAAA,MACJ,EAAA,EAAIA,EAAAA;AAAA,MACJ,OAAA,EAASC,GAAAA;AAAA,MACT,IAAA,EAAMC,GAAAA;AAAA,MACN,IAAA,EAAMC,GAAAA;AAAA,MACN,YAAA,EAAcC,IAAAA;AAAA,MACd,SAAA,EAAWC,GAAAA;AAAA,MACX,QAAA,EAAUC,IAAAA;AAAA,MACV,GAAG;AAAA,KACL,GAAI,KAAA;AAEJ,IAAA,2BACG,IAAA,EAAA,EAAK,SAAA,EAAW,OAAA,EAAU,GAAG,WAC3B,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM;AAAA,IACJ,EAAA,EAAI,CAAA;AAAA,IACJ,OAAA,EAAS,EAAA;AAAA,IACT,IAAA,EAAM,EAAA;AAAA,IACN,IAAA,EAAM,EAAA;AAAA,IACN,YAAA,EAAc,GAAA;AAAA,IACd,SAAA,EAAW,EAAA;AAAA,IACX,QAAA,EAAU,GAAA;AAAA,IACV,GAAG;AAAA,GACL,GAAI,KAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,IAAA;AAAA,QACT,OAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG,WAAA;AAAA,MAEH,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AAEA,IAAO,cAAA,GAAQ","file":"chunk-GNBS5RLB.js","sourcesContent":["import clsx from 'clsx'\nimport { Link } from 'react-router-dom'\n\nimport { Icon } from '../Icon'\n\nimport type { ButtonProps } from './Button.types'\n\nconst iconSizeMap = {\n sm: 16,\n md: 20,\n lg: 24,\n} as const\n\nfunction Button(props: Readonly<ButtonProps>) {\n const {\n variant = 'primary',\n size = 'md',\n icon,\n iconPosition = 'left',\n className,\n children,\n } = props\n\n const classes = clsx(\n 'ui:inline-flex ui:items-center ui:justify-center ui:cursor-pointer ui:gap-2 ui:font-roboto ui:font-medium ui:transition-colors',\n 'ui:rounded ui:border ui:border-transparent',\n 'ui:focus:outline-none ui:focus:ring-2 ui:focus:ring-ring ui:focus:ring-offset-2',\n {\n 'ui:flex-row': iconPosition === 'left',\n 'ui:flex-row-reverse': iconPosition === 'right',\n },\n {\n 'ui:bg-primary ui:text-primary-foreground ui:hover:bg-primary/90':\n variant === 'primary',\n 'ui:bg-secondary ui:text-secondary-foreground ui:hover:bg-secondary/80':\n variant === 'secondary',\n 'ui:bg-destructive ui:text-destructive-foreground ui:hover:bg-destructive/90':\n variant === 'destructive',\n 'ui:border-input ui:bg-background ui:hover:bg-accent ui:hover:text-accent-foreground':\n variant === 'outline',\n 'ui:hover:bg-accent ui:hover:text-accent-foreground': variant === 'ghost',\n },\n {\n 'ui:h-8 ui:px-3 ui:text-sm': size === 'sm',\n 'ui:h-10 ui:px-4 ui:text-base': size === 'md',\n 'ui:h-12 ui:px-6 ui:text-lg': size === 'lg',\n },\n className\n )\n\n const content = (\n <>\n {icon && <Icon name={icon} size={iconSizeMap[size]} />}\n {children}\n </>\n )\n\n if (props.as === 'link') {\n const {\n as: _,\n variant: _v,\n size: _s,\n icon: _i,\n iconPosition: _ip,\n className: _c,\n children: _ch,\n ...linkProps\n } = props\n\n return (\n <Link className={classes} {...linkProps}>\n {content}\n </Link>\n )\n }\n\n const {\n as: _,\n variant: _v,\n size: _s,\n icon: _i,\n iconPosition: _ip,\n className: _c,\n children: _ch,\n ...buttonProps\n } = props\n\n return (\n <button\n className={clsx(\n classes,\n 'ui:disabled:pointer-events-none ui:disabled:opacity-50'\n )}\n {...buttonProps}\n >\n {content}\n </button>\n )\n}\n\nexport default Button\n"]}
|