@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.
@@ -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.1.1",
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.3"
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",
@@ -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"]}