@vite-mf-monorepo/ui 0.1.1 → 0.2.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-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 +35 -420
- package/dist/index.js.map +1 -1
- package/dist/next/index.d.ts +40 -0
- package/dist/next/index.js +85 -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,85 @@
|
|
|
1
|
+
import { getMovieCardLinkClasses, MovieCardContent } from '../chunk-JDBRVX5O.js';
|
|
2
|
+
import { getButtonClasses, iconSizeMap, getButtonDisabledClasses } from '../chunk-FDLKS7BI.js';
|
|
3
|
+
import '../chunk-JI3OVXCK.js';
|
|
4
|
+
import { Icon_default } from '../chunk-JHRISQQJ.js';
|
|
5
|
+
import Link from 'next/link';
|
|
6
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
7
|
+
|
|
8
|
+
function Button(props) {
|
|
9
|
+
const {
|
|
10
|
+
variant = "primary",
|
|
11
|
+
size = "md",
|
|
12
|
+
icon,
|
|
13
|
+
iconPosition = "left",
|
|
14
|
+
className,
|
|
15
|
+
children
|
|
16
|
+
} = props;
|
|
17
|
+
const classes = getButtonClasses({ variant, size, iconPosition, className });
|
|
18
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
19
|
+
icon && /* @__PURE__ */ jsx(Icon_default, { name: icon, size: iconSizeMap[size] }),
|
|
20
|
+
children
|
|
21
|
+
] });
|
|
22
|
+
if (props.as === "link") {
|
|
23
|
+
const {
|
|
24
|
+
as: _2,
|
|
25
|
+
variant: _v2,
|
|
26
|
+
size: _s2,
|
|
27
|
+
icon: _i2,
|
|
28
|
+
iconPosition: _ip2,
|
|
29
|
+
className: _c2,
|
|
30
|
+
children: _ch2,
|
|
31
|
+
...linkProps
|
|
32
|
+
} = props;
|
|
33
|
+
return /* @__PURE__ */ jsx(Link, { className: classes, ...linkProps, children: content });
|
|
34
|
+
}
|
|
35
|
+
const {
|
|
36
|
+
as: _,
|
|
37
|
+
variant: _v,
|
|
38
|
+
size: _s,
|
|
39
|
+
icon: _i,
|
|
40
|
+
iconPosition: _ip,
|
|
41
|
+
className: _c,
|
|
42
|
+
children: _ch,
|
|
43
|
+
...buttonProps
|
|
44
|
+
} = props;
|
|
45
|
+
return /* @__PURE__ */ jsx("button", { className: getButtonDisabledClasses(classes), ...buttonProps, children: content });
|
|
46
|
+
}
|
|
47
|
+
var Button_default = Button;
|
|
48
|
+
function MovieCard({
|
|
49
|
+
id,
|
|
50
|
+
title,
|
|
51
|
+
posterUrl,
|
|
52
|
+
voteAverage,
|
|
53
|
+
year,
|
|
54
|
+
className,
|
|
55
|
+
imageLoading = "lazy",
|
|
56
|
+
as = "card",
|
|
57
|
+
...rest
|
|
58
|
+
}) {
|
|
59
|
+
const href = "href" in rest ? rest.href : void 0;
|
|
60
|
+
const onClick = "onClick" in rest ? rest.onClick : void 0;
|
|
61
|
+
const isInteractive = as === "link" || as === "button";
|
|
62
|
+
const cardContent = /* @__PURE__ */ jsx(
|
|
63
|
+
MovieCardContent,
|
|
64
|
+
{
|
|
65
|
+
id,
|
|
66
|
+
title,
|
|
67
|
+
posterUrl,
|
|
68
|
+
voteAverage,
|
|
69
|
+
year,
|
|
70
|
+
className,
|
|
71
|
+
imageLoading,
|
|
72
|
+
isInteractive,
|
|
73
|
+
onClick: as === "button" ? onClick : void 0
|
|
74
|
+
}
|
|
75
|
+
);
|
|
76
|
+
if (as === "link" && href) {
|
|
77
|
+
return /* @__PURE__ */ jsx(Link, { href, className: getMovieCardLinkClasses(), children: cardContent });
|
|
78
|
+
}
|
|
79
|
+
return cardContent;
|
|
80
|
+
}
|
|
81
|
+
var MovieCard_default = MovieCard;
|
|
82
|
+
|
|
83
|
+
export { Button_default as Button, MovieCard_default as MovieCard };
|
|
84
|
+
//# sourceMappingURL=index.js.map
|
|
85
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/next/Button/Button.tsx","../../src/next/MovieCard/MovieCard.tsx"],"names":["_","_v","_s","_i","_ip","_c","_ch","jsx","Link"],"mappings":";;;;;;;AAWA,SAAS,OAAO,KAAA,EAAkC;AAChD,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,UAAU,gBAAA,CAAiB,EAAE,SAAS,IAAA,EAAM,YAAA,EAAc,WAAW,CAAA;AAE3E,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,CAAC,YAAO,SAAA,EAAW,wBAAA,CAAyB,OAAO,CAAA,EAAI,GAAG,aACvD,QAAA,EAAA,OAAA,EACH,CAAA;AAEJ;AAEA,IAAO,cAAA,GAAQ;AC5Df,SAAS,SAAA,CAAU;AAAA,EACjB,EAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,GAAe,MAAA;AAAA,EACf,EAAA,GAAK,MAAA;AAAA,EACL,GAAG;AACL,CAAA,EAAiC;AAC/B,EAAA,MAAM,IAAA,GAAO,MAAA,IAAU,IAAA,GAAO,IAAA,CAAK,IAAA,GAAO,MAAA;AAC1C,EAAA,MAAM,OAAA,GAAU,SAAA,IAAa,IAAA,GAAO,IAAA,CAAK,OAAA,GAAU,MAAA;AAEnD,EAAA,MAAM,aAAA,GAAgB,EAAA,KAAO,MAAA,IAAU,EAAA,KAAO,QAAA;AAE9C,EAAA,MAAM,8BACJC,GAAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,IAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,OAAA,EAAS,EAAA,KAAO,QAAA,GAAW,OAAA,GAAU;AAAA;AAAA,GACvC;AAGF,EAAA,IAAI,EAAA,KAAO,UAAU,IAAA,EAAM;AACzB,IAAA,uBACEA,IAACC,IAAAA,EAAA,EAAK,MAAY,SAAA,EAAW,uBAAA,IAC1B,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,WAAA;AACT;AAEA,IAAO,iBAAA,GAAQ","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 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.2.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"]}
|