@blueshift-gg/ui-components 0.1.41 → 0.1.42
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/Alert.d.mts +1 -2
- package/dist/Alert.d.ts +1 -2
- package/dist/Avatar.d.mts +1 -1
- package/dist/Avatar.d.ts +1 -1
- package/dist/Badge.d.mts +3 -2
- package/dist/Badge.d.ts +3 -2
- package/dist/Badge.js +18 -13
- package/dist/Badge.js.map +1 -1
- package/dist/Badge.mjs +19 -14
- package/dist/Badge.mjs.map +1 -1
- package/dist/Banner.d.mts +1 -1
- package/dist/Banner.d.ts +1 -1
- package/dist/Button.d.mts +2 -4
- package/dist/Button.d.ts +2 -4
- package/dist/Button.js +31 -16
- package/dist/Button.js.map +1 -1
- package/dist/Button.mjs +33 -18
- package/dist/Button.mjs.map +1 -1
- package/dist/Difficulty.d.mts +10 -0
- package/dist/Difficulty.d.ts +10 -0
- package/dist/{icons/Difficulty.js → Difficulty.js} +3 -3
- package/dist/Difficulty.js.map +1 -0
- package/dist/{icons/Difficulty.mjs → Difficulty.mjs} +3 -3
- package/dist/Difficulty.mjs.map +1 -0
- package/dist/Dropdown.d.mts +6 -6
- package/dist/Dropdown.d.ts +6 -6
- package/dist/Dropdown.js +20 -29
- package/dist/Dropdown.js.map +1 -1
- package/dist/Dropdown.mjs +22 -31
- package/dist/Dropdown.mjs.map +1 -1
- package/dist/{Icon-CwFBZAPq.d.ts → Icon-N0gdQwEm.d.mts} +2 -10
- package/dist/{Icon-DZiidxwK.d.mts → Icon-N0gdQwEm.d.ts} +2 -10
- package/dist/Icon.d.mts +1 -2
- package/dist/Icon.d.ts +1 -2
- package/dist/Icon.js +1 -2
- package/dist/Icon.js.map +1 -1
- package/dist/Icon.mjs +1 -2
- package/dist/Icon.mjs.map +1 -1
- package/dist/Input.d.mts +2 -1
- package/dist/Input.d.ts +2 -1
- package/dist/Slider.d.mts +1 -2
- package/dist/Slider.d.ts +1 -2
- package/dist/Tabs.d.mts +1 -2
- package/dist/Tabs.d.ts +1 -2
- package/dist/Toast.d.mts +1 -2
- package/dist/Toast.d.ts +1 -2
- package/dist/icons/Anchor.d.mts +1 -2
- package/dist/icons/Anchor.d.ts +1 -2
- package/dist/icons/ArrowLeft.d.mts +1 -2
- package/dist/icons/ArrowLeft.d.ts +1 -2
- package/dist/icons/ArrowRight.d.mts +1 -2
- package/dist/icons/ArrowRight.d.ts +1 -2
- package/dist/icons/Assembly.d.mts +1 -2
- package/dist/icons/Assembly.d.ts +1 -2
- package/dist/icons/Backpack.d.mts +1 -2
- package/dist/icons/Backpack.d.ts +1 -2
- package/dist/icons/Brave.d.mts +1 -2
- package/dist/icons/Brave.d.ts +1 -2
- package/dist/icons/Challenge.d.mts +1 -2
- package/dist/icons/Challenge.d.ts +1 -2
- package/dist/icons/Chevron.d.mts +1 -2
- package/dist/icons/Chevron.d.ts +1 -2
- package/dist/icons/ChevronLeft.d.mts +1 -2
- package/dist/icons/ChevronLeft.d.ts +1 -2
- package/dist/icons/ChevronRight.d.mts +1 -2
- package/dist/icons/ChevronRight.d.ts +1 -2
- package/dist/icons/Claim.d.mts +1 -2
- package/dist/icons/Claim.d.ts +1 -2
- package/dist/icons/Claimed.d.mts +1 -2
- package/dist/icons/Claimed.d.ts +1 -2
- package/dist/icons/Close.d.mts +1 -2
- package/dist/icons/Close.d.ts +1 -2
- package/dist/icons/Code.d.mts +1 -2
- package/dist/icons/Code.d.ts +1 -2
- package/dist/icons/Copy.d.mts +1 -2
- package/dist/icons/Copy.d.ts +1 -2
- package/dist/icons/Developer.d.mts +1 -2
- package/dist/icons/Developer.d.ts +1 -2
- package/dist/icons/Disconnect.d.mts +1 -2
- package/dist/icons/Disconnect.d.ts +1 -2
- package/dist/icons/Discord.d.mts +1 -2
- package/dist/icons/Discord.d.ts +1 -2
- package/dist/icons/Dollar.d.mts +1 -2
- package/dist/icons/Dollar.d.ts +1 -2
- package/dist/icons/DoubleArrow.d.mts +1 -2
- package/dist/icons/DoubleArrow.d.ts +1 -2
- package/dist/icons/EVM.d.mts +1 -2
- package/dist/icons/EVM.d.ts +1 -2
- package/dist/icons/Email.d.mts +1 -2
- package/dist/icons/Email.d.ts +1 -2
- package/dist/icons/Error.d.mts +1 -2
- package/dist/icons/Error.d.ts +1 -2
- package/dist/icons/Expand.d.mts +1 -2
- package/dist/icons/Expand.d.ts +1 -2
- package/dist/icons/External.d.mts +1 -2
- package/dist/icons/External.d.ts +1 -2
- package/dist/icons/Filter.d.mts +1 -2
- package/dist/icons/Filter.d.ts +1 -2
- package/dist/icons/Firmware.d.mts +1 -2
- package/dist/icons/Firmware.d.ts +1 -2
- package/dist/icons/Flag.d.mts +1 -2
- package/dist/icons/Flag.d.ts +1 -2
- package/dist/icons/Flame.d.mts +1 -2
- package/dist/icons/Flame.d.ts +1 -2
- package/dist/icons/Flexible.d.mts +1 -2
- package/dist/icons/Flexible.d.ts +1 -2
- package/dist/icons/Free.d.mts +1 -2
- package/dist/icons/Free.d.ts +1 -2
- package/dist/icons/General.d.mts +1 -2
- package/dist/icons/General.d.ts +1 -2
- package/dist/icons/Github.d.mts +1 -2
- package/dist/icons/Github.d.ts +1 -2
- package/dist/icons/Globe.d.mts +1 -2
- package/dist/icons/Globe.d.ts +1 -2
- package/dist/icons/GridView.d.mts +1 -2
- package/dist/icons/GridView.d.ts +1 -2
- package/dist/icons/Heart.d.mts +1 -2
- package/dist/icons/Heart.d.ts +1 -2
- package/dist/icons/Info.d.mts +1 -2
- package/dist/icons/Info.d.ts +1 -2
- package/dist/icons/Language.d.mts +1 -2
- package/dist/icons/Language.d.ts +1 -2
- package/dist/icons/Lessons.d.mts +1 -2
- package/dist/icons/Lessons.d.ts +1 -2
- package/dist/icons/Link.d.mts +1 -2
- package/dist/icons/Link.d.ts +1 -2
- package/dist/icons/ListView.d.mts +1 -2
- package/dist/icons/ListView.d.ts +1 -2
- package/dist/icons/Loading.d.mts +1 -2
- package/dist/icons/Loading.d.ts +1 -2
- package/dist/icons/Locked.d.mts +1 -2
- package/dist/icons/Locked.d.ts +1 -2
- package/dist/icons/Logs.d.mts +1 -2
- package/dist/icons/Logs.d.ts +1 -2
- package/dist/icons/Mentor.d.mts +1 -2
- package/dist/icons/Mentor.d.ts +1 -2
- package/dist/icons/Metamask.d.mts +1 -2
- package/dist/icons/Metamask.d.ts +1 -2
- package/dist/icons/Minimize.d.mts +1 -2
- package/dist/icons/Minimize.d.ts +1 -2
- package/dist/icons/Modular.d.mts +1 -2
- package/dist/icons/Modular.d.ts +1 -2
- package/dist/icons/NFT.d.mts +1 -2
- package/dist/icons/NFT.d.ts +1 -2
- package/dist/icons/Online.d.mts +1 -2
- package/dist/icons/Online.d.ts +1 -2
- package/dist/icons/Password.d.mts +1 -2
- package/dist/icons/Password.d.ts +1 -2
- package/dist/icons/Path.d.mts +1 -2
- package/dist/icons/Path.d.ts +1 -2
- package/dist/icons/Perks.d.mts +1 -2
- package/dist/icons/Perks.d.ts +1 -2
- package/dist/icons/Phantom.d.mts +1 -2
- package/dist/icons/Phantom.d.ts +1 -2
- package/dist/icons/Play.d.mts +1 -2
- package/dist/icons/Play.d.ts +1 -2
- package/dist/icons/Product.d.mts +1 -2
- package/dist/icons/Product.d.ts +1 -2
- package/dist/icons/Progress.d.mts +1 -2
- package/dist/icons/Progress.d.ts +1 -2
- package/dist/icons/Protocol.d.mts +1 -2
- package/dist/icons/Protocol.d.ts +1 -2
- package/dist/icons/Refresh.d.mts +1 -2
- package/dist/icons/Refresh.d.ts +1 -2
- package/dist/icons/Rewards.d.mts +1 -2
- package/dist/icons/Rewards.d.ts +1 -2
- package/dist/icons/Rust.d.mts +1 -2
- package/dist/icons/Rust.d.ts +1 -2
- package/dist/icons/Search.d.mts +1 -2
- package/dist/icons/Search.d.ts +1 -2
- package/dist/icons/SmartContract.d.mts +1 -2
- package/dist/icons/SmartContract.d.ts +1 -2
- package/dist/icons/Solana.d.mts +1 -2
- package/dist/icons/Solana.d.ts +1 -2
- package/dist/icons/Solflare.d.mts +1 -2
- package/dist/icons/Solflare.d.ts +1 -2
- package/dist/icons/Success.d.mts +1 -2
- package/dist/icons/Success.d.ts +1 -2
- package/dist/icons/SuccessCircle.d.mts +1 -2
- package/dist/icons/SuccessCircle.d.ts +1 -2
- package/dist/icons/Table.d.mts +1 -2
- package/dist/icons/Table.d.ts +1 -2
- package/dist/icons/Target.d.mts +1 -2
- package/dist/icons/Target.d.ts +1 -2
- package/dist/icons/Training.d.mts +1 -2
- package/dist/icons/Training.d.ts +1 -2
- package/dist/icons/Typescript.d.mts +1 -2
- package/dist/icons/Typescript.d.ts +1 -2
- package/dist/icons/Unclaimed.d.mts +1 -2
- package/dist/icons/Unclaimed.d.ts +1 -2
- package/dist/icons/Upload.d.mts +1 -2
- package/dist/icons/Upload.d.ts +1 -2
- package/dist/icons/User.d.mts +1 -2
- package/dist/icons/User.d.ts +1 -2
- package/dist/icons/Wallet.d.mts +1 -2
- package/dist/icons/Wallet.d.ts +1 -2
- package/dist/icons/WalletSmall.d.mts +1 -2
- package/dist/icons/WalletSmall.d.ts +1 -2
- package/dist/icons/Warning.d.mts +1 -2
- package/dist/icons/Warning.d.ts +1 -2
- package/dist/icons/X.d.mts +1 -2
- package/dist/icons/X.d.ts +1 -2
- package/dist/icons/index.d.mts +1 -2
- package/dist/icons/index.d.ts +1 -2
- package/dist/icons/index.js +0 -2
- package/dist/icons/index.js.map +1 -1
- package/dist/icons/index.mjs +0 -2
- package/dist/icons/index.mjs.map +1 -1
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +5 -0
- package/dist/index.mjs +1 -0
- package/package.json +1 -1
- package/dist/icons/Difficulty.d.mts +0 -3
- package/dist/icons/Difficulty.d.ts +0 -3
- package/dist/icons/Difficulty.js.map +0 -1
- package/dist/icons/Difficulty.mjs.map +0 -1
package/dist/Alert.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { MotionProps } from 'motion/react';
|
|
3
|
-
import { a as IconProps } from './Icon-
|
|
4
|
-
import './utils/colours.mjs';
|
|
3
|
+
import { a as IconProps } from './Icon-N0gdQwEm.mjs';
|
|
5
4
|
|
|
6
5
|
type AlertProps = {
|
|
7
6
|
title: string;
|
package/dist/Alert.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { MotionProps } from 'motion/react';
|
|
3
|
-
import { a as IconProps } from './Icon-
|
|
4
|
-
import './utils/colours.js';
|
|
3
|
+
import { a as IconProps } from './Icon-N0gdQwEm.js';
|
|
5
4
|
|
|
6
5
|
type AlertProps = {
|
|
7
6
|
title: string;
|
package/dist/Avatar.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { a as IconProps } from './Icon-
|
|
2
|
+
import { a as IconProps } from './Icon-N0gdQwEm.mjs';
|
|
3
3
|
import { CrosshairCornersProps } from './CrossHair.mjs';
|
|
4
4
|
import { MotionProps } from 'motion/react';
|
|
5
5
|
import { BrandColour } from './utils/colours.mjs';
|
package/dist/Avatar.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { a as IconProps } from './Icon-
|
|
2
|
+
import { a as IconProps } from './Icon-N0gdQwEm.js';
|
|
3
3
|
import { CrosshairCornersProps } from './CrossHair.js';
|
|
4
4
|
import { MotionProps } from 'motion/react';
|
|
5
5
|
import { BrandColour } from './utils/colours.js';
|
package/dist/Badge.d.mts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { BrandColour } from './utils/colours.mjs';
|
|
3
|
-
import { a as IconProps } from './Icon-
|
|
3
|
+
import { a as IconProps } from './Icon-N0gdQwEm.mjs';
|
|
4
4
|
import { CrosshairCornersProps } from './CrossHair.mjs';
|
|
5
5
|
import { MotionProps } from 'motion/react';
|
|
6
|
+
import { ReactNode } from 'react';
|
|
6
7
|
|
|
7
8
|
type BadgeProps = {
|
|
8
9
|
className?: string;
|
|
9
10
|
label?: string;
|
|
10
11
|
variant?: BrandColour;
|
|
11
|
-
icon?: IconProps;
|
|
12
|
+
icon?: IconProps | ReactNode;
|
|
12
13
|
iconPosition?: "left" | "right";
|
|
13
14
|
crosshair?: CrosshairCornersProps;
|
|
14
15
|
size?: "xs" | "sm" | "md";
|
package/dist/Badge.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { BrandColour } from './utils/colours.js';
|
|
3
|
-
import { a as IconProps } from './Icon-
|
|
3
|
+
import { a as IconProps } from './Icon-N0gdQwEm.js';
|
|
4
4
|
import { CrosshairCornersProps } from './CrossHair.js';
|
|
5
5
|
import { MotionProps } from 'motion/react';
|
|
6
|
+
import { ReactNode } from 'react';
|
|
6
7
|
|
|
7
8
|
type BadgeProps = {
|
|
8
9
|
className?: string;
|
|
9
10
|
label?: string;
|
|
10
11
|
variant?: BrandColour;
|
|
11
|
-
icon?: IconProps;
|
|
12
|
+
icon?: IconProps | ReactNode;
|
|
12
13
|
iconPosition?: "left" | "right";
|
|
13
14
|
crosshair?: CrosshairCornersProps;
|
|
14
15
|
size?: "xs" | "sm" | "md";
|
package/dist/Badge.js
CHANGED
|
@@ -6,6 +6,7 @@ var Icon = require('./Icon');
|
|
|
6
6
|
var classNames = require('classnames');
|
|
7
7
|
var CrossHair = require('./CrossHair');
|
|
8
8
|
var react = require('motion/react');
|
|
9
|
+
var react$1 = require('react');
|
|
9
10
|
|
|
10
11
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
12
|
|
|
@@ -32,8 +33,8 @@ const Badge = ({
|
|
|
32
33
|
size === "xs" && "text-xs leading-[100%]",
|
|
33
34
|
!label && "!p-2 !justify-center",
|
|
34
35
|
!icon && "!py-1 !px-2",
|
|
35
|
-
iconPosition === "left" && label && icon && "pl-1.5 pr-2",
|
|
36
|
-
iconPosition === "right" && label && icon && "pl-2 pr-1.5",
|
|
36
|
+
iconPosition === "left" && label && !!icon && "pl-1.5 pr-2",
|
|
37
|
+
iconPosition === "right" && label && !!icon && "pl-2 pr-1.5",
|
|
37
38
|
crosshair?.variant === "bordered" && label && iconPosition === "left" && "pl-2.5 pr-3",
|
|
38
39
|
crosshair?.variant === "bordered" && label && iconPosition === "right" && "pl-3 pr-2.5",
|
|
39
40
|
className
|
|
@@ -50,27 +51,31 @@ const Badge = ({
|
|
|
50
51
|
animationDuration: crosshair?.animationDuration || 1.5,
|
|
51
52
|
size: crosshair?.size || 4
|
|
52
53
|
},
|
|
53
|
-
icon?.name
|
|
54
|
+
react$1.isValidElement(icon) ? "custom-icon" : icon?.name
|
|
54
55
|
) }),
|
|
55
|
-
icon && iconPosition === "left" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
56
|
+
icon && iconPosition === "left" && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: react$1.isValidElement(icon) ? icon : /* @__PURE__ */ jsxRuntime.jsx(
|
|
56
57
|
Icon.Icon,
|
|
57
58
|
{
|
|
58
59
|
name: icon.name,
|
|
59
|
-
className: classNames__default.default(
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
className: classNames__default.default(
|
|
61
|
+
icon.className,
|
|
62
|
+
"flex-shrink-0 text-current"
|
|
63
|
+
),
|
|
64
|
+
size: icon.size || 14
|
|
62
65
|
}
|
|
63
|
-
),
|
|
66
|
+
) }),
|
|
64
67
|
label && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono", children: label }),
|
|
65
|
-
icon && iconPosition === "right" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
68
|
+
icon && iconPosition === "right" && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: react$1.isValidElement(icon) ? icon : /* @__PURE__ */ jsxRuntime.jsx(
|
|
66
69
|
Icon.Icon,
|
|
67
70
|
{
|
|
68
71
|
name: icon.name,
|
|
69
|
-
className: classNames__default.default(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
+
className: classNames__default.default(
|
|
73
|
+
icon.className,
|
|
74
|
+
"flex-shrink-0 text-current"
|
|
75
|
+
),
|
|
76
|
+
size: icon.size || 14
|
|
72
77
|
}
|
|
73
|
-
)
|
|
78
|
+
) })
|
|
74
79
|
]
|
|
75
80
|
}
|
|
76
81
|
);
|
package/dist/Badge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Badge.tsx"],"names":["jsxs","motion","BRAND_COLOURS","classNames","jsx","CrosshairCorners","Icon"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/Badge.tsx"],"names":["jsxs","motion","BRAND_COLOURS","classNames","jsx","CrosshairCorners","isValidElement","Icon"],"mappings":";;;;;;;;;;;;;;AAoBO,MAAM,QAAQ,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,GAAe,MAAA;AAAA,EACf,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP;AACF,CAAA,KAAkB;AAChB,EAAA,uBACEA,eAAA;AAAA,IAACC,YAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,OAAO,EAAE,KAAA,EAAOC,qBAAA,CAAc,OAAA,IAAW,WAAW,CAAA,EAAE;AAAA,MACtD,SAAA,EAAWC,2BAAA;AAAA,QACT,oMAAA;AAAA,QACA,SAAS,IAAA,IAAQ,eAAA;AAAA,QACjB,SAAS,IAAA,IAAQ,wBAAA;AAAA,QACjB,SAAS,IAAA,IAAQ,wBAAA;AAAA,QACjB,CAAC,KAAA,IAAS,sBAAA;AAAA,QACV,CAAC,IAAA,IAAQ,aAAA;AAAA,QACT,YAAA,KAAiB,MAAA,IAAU,KAAA,IAAS,CAAC,CAAC,IAAA,IAAQ,aAAA;AAAA,QAC9C,YAAA,KAAiB,OAAA,IAAW,KAAA,IAAS,CAAC,CAAC,IAAA,IAAQ,aAAA;AAAA,QAC/C,SAAA,EAAW,OAAA,KAAY,UAAA,IACrB,KAAA,IACA,iBAAiB,MAAA,IACjB,aAAA;AAAA,QACF,SAAA,EAAW,OAAA,KAAY,UAAA,IACrB,KAAA,IACA,iBAAiB,OAAA,IACjB,aAAA;AAAA,QACF;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAAC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWD,2BAAA,CAAW,+BAA+B,CAAA,EACxD,QAAA,kBAAAC,cAAA;AAAA,UAACC,0BAAA;AAAA,UAAA;AAAA,YAEC,SAAS,SAAA,EAAW,OAAA;AAAA,YACpB,SAAA,EAAWF,2BAAA,CAAW,cAAA,EAAgB,SAAA,EAAW,SAAS,CAAA;AAAA,YAC1D,SAAS,SAAA,EAAW,OAAA;AAAA,YACpB,cAAA,EAAgB,WAAW,cAAA,IAAkB,CAAA;AAAA,YAC7C,iBAAA,EAAmB,WAAW,iBAAA,IAAqB,GAAA;AAAA,YACnD,IAAA,EAAM,WAAW,IAAA,IAAQ;AAAA,WAAA;AAAA,UANpBG,sBAAA,CAAe,IAAI,CAAA,GAAI,aAAA,GAAiB,IAAA,EAAoB;AAAA,SAOnE,EACF,CAAA;AAAA,QACC,QAAQ,YAAA,KAAiB,MAAA,0DAErB,QAAA,EAAAA,sBAAA,CAAe,IAAI,IAClB,IAAA,mBAEAF,cAAA;AAAA,UAACG,SAAA;AAAA,UAAA;AAAA,YACC,MAAO,IAAA,CAAmB,IAAA;AAAA,YAC1B,SAAA,EAAWJ,2BAAA;AAAA,cACR,IAAA,CAAmB,SAAA;AAAA,cACpB;AAAA,aACF;AAAA,YACA,IAAA,EAAO,KAAmB,IAAA,IAAQ;AAAA;AAAA,SACpC,EAEJ,CAAA;AAAA,QAED,KAAA,oBAASC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QAC5C,QAAQ,YAAA,KAAiB,OAAA,0DAErB,QAAA,EAAAE,sBAAA,CAAe,IAAI,IAClB,IAAA,mBAEAF,cAAA;AAAA,UAACG,SAAA;AAAA,UAAA;AAAA,YACC,MAAO,IAAA,CAAmB,IAAA;AAAA,YAC1B,SAAA,EAAWJ,2BAAA;AAAA,cACR,IAAA,CAAmB,SAAA;AAAA,cACpB;AAAA,aACF;AAAA,YACA,IAAA,EAAO,KAAmB,IAAA,IAAQ;AAAA;AAAA,SACpC,EAEJ;AAAA;AAAA;AAAA,GAEJ;AAEJ","file":"Badge.js","sourcesContent":["\"use client\";\n\nimport { BRAND_COLOURS, BrandColour } from \"./utils/colours\";\nimport { Icon, IconProps } from \"./Icon\";\nimport classNames from \"classnames\";\nimport { CrosshairCorners, CrosshairCornersProps } from \"./CrossHair\";\nimport { motion, MotionProps } from \"motion/react\";\nimport { isValidElement, ReactNode } from \"react\";\n\nexport type BadgeProps = {\n className?: string;\n label?: string;\n variant?: BrandColour;\n icon?: IconProps | ReactNode;\n iconPosition?: \"left\" | \"right\";\n crosshair?: CrosshairCornersProps;\n size?: \"xs\" | \"sm\" | \"md\";\n animation?: MotionProps;\n};\n\nexport const Badge = ({\n className,\n variant,\n icon,\n crosshair,\n iconPosition = \"left\",\n label,\n size = \"sm\",\n animation,\n}: BadgeProps) => {\n return (\n <motion.div\n style={{ color: BRAND_COLOURS[variant ?? \"Secondary\"] }}\n className={classNames(\n \"shadow-[inset_0px_0px_6px] bg-card-solid/50 shadow-current/25 relative transition-all duration-100 ease-glide gradient-border before:bg-current/8 min-h-[24px] flex items-center gap-x-[5px] py-1\",\n size === \"md\" && \"!py-2 text-sm\",\n size === \"sm\" && \"text-sm leading-[16px]\",\n size === \"xs\" && \"text-xs leading-[100%]\",\n !label && \"!p-2 !justify-center\",\n !icon && \"!py-1 !px-2\",\n iconPosition === \"left\" && label && !!icon && \"pl-1.5 pr-2\",\n iconPosition === \"right\" && label && !!icon && \"pl-2 pr-1.5\",\n crosshair?.variant === \"bordered\" &&\n label &&\n iconPosition === \"left\" &&\n \"pl-2.5 pr-3\",\n crosshair?.variant === \"bordered\" &&\n label &&\n iconPosition === \"right\" &&\n \"pl-3 pr-2.5\",\n className,\n )}\n {...animation}\n >\n <div className={classNames(\"text-current absolute inset-0\")}>\n <CrosshairCorners\n key={isValidElement(icon) ? \"custom-icon\" : (icon as IconProps)?.name}\n variant={crosshair?.variant}\n className={classNames(\"text-current\", crosshair?.className)}\n corners={crosshair?.corners}\n animationDelay={crosshair?.animationDelay || 0}\n animationDuration={crosshair?.animationDuration || 1.5}\n size={crosshair?.size || 4}\n />\n </div>\n {icon && iconPosition === \"left\" && (\n <>\n {isValidElement(icon) ? (\n icon\n ) : (\n <Icon\n name={(icon as IconProps).name}\n className={classNames(\n (icon as IconProps).className,\n \"flex-shrink-0 text-current\",\n )}\n size={(icon as IconProps).size || 14}\n />\n )}\n </>\n )}\n {label && <span className=\"font-mono\">{label}</span>}\n {icon && iconPosition === \"right\" && (\n <>\n {isValidElement(icon) ? (\n icon\n ) : (\n <Icon\n name={(icon as IconProps).name}\n className={classNames(\n (icon as IconProps).className,\n \"flex-shrink-0 text-current\",\n )}\n size={(icon as IconProps).size || 14}\n />\n )}\n </>\n )}\n </motion.div>\n );\n};\n"]}
|
package/dist/Badge.mjs
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { BRAND_COLOURS } from './utils/colours';
|
|
3
3
|
import { Icon } from './Icon';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
5
|
import { CrosshairCorners } from './CrossHair';
|
|
6
6
|
import { motion } from 'motion/react';
|
|
7
|
+
import { isValidElement } from 'react';
|
|
7
8
|
|
|
8
9
|
const Badge = ({
|
|
9
10
|
className,
|
|
@@ -26,8 +27,8 @@ const Badge = ({
|
|
|
26
27
|
size === "xs" && "text-xs leading-[100%]",
|
|
27
28
|
!label && "!p-2 !justify-center",
|
|
28
29
|
!icon && "!py-1 !px-2",
|
|
29
|
-
iconPosition === "left" && label && icon && "pl-1.5 pr-2",
|
|
30
|
-
iconPosition === "right" && label && icon && "pl-2 pr-1.5",
|
|
30
|
+
iconPosition === "left" && label && !!icon && "pl-1.5 pr-2",
|
|
31
|
+
iconPosition === "right" && label && !!icon && "pl-2 pr-1.5",
|
|
31
32
|
crosshair?.variant === "bordered" && label && iconPosition === "left" && "pl-2.5 pr-3",
|
|
32
33
|
crosshair?.variant === "bordered" && label && iconPosition === "right" && "pl-3 pr-2.5",
|
|
33
34
|
className
|
|
@@ -44,27 +45,31 @@ const Badge = ({
|
|
|
44
45
|
animationDuration: crosshair?.animationDuration || 1.5,
|
|
45
46
|
size: crosshair?.size || 4
|
|
46
47
|
},
|
|
47
|
-
icon?.name
|
|
48
|
+
isValidElement(icon) ? "custom-icon" : icon?.name
|
|
48
49
|
) }),
|
|
49
|
-
icon && iconPosition === "left" && /* @__PURE__ */ jsx(
|
|
50
|
+
icon && iconPosition === "left" && /* @__PURE__ */ jsx(Fragment, { children: isValidElement(icon) ? icon : /* @__PURE__ */ jsx(
|
|
50
51
|
Icon,
|
|
51
52
|
{
|
|
52
53
|
name: icon.name,
|
|
53
|
-
className: classNames(
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
className: classNames(
|
|
55
|
+
icon.className,
|
|
56
|
+
"flex-shrink-0 text-current"
|
|
57
|
+
),
|
|
58
|
+
size: icon.size || 14
|
|
56
59
|
}
|
|
57
|
-
),
|
|
60
|
+
) }),
|
|
58
61
|
label && /* @__PURE__ */ jsx("span", { className: "font-mono", children: label }),
|
|
59
|
-
icon && iconPosition === "right" && /* @__PURE__ */ jsx(
|
|
62
|
+
icon && iconPosition === "right" && /* @__PURE__ */ jsx(Fragment, { children: isValidElement(icon) ? icon : /* @__PURE__ */ jsx(
|
|
60
63
|
Icon,
|
|
61
64
|
{
|
|
62
65
|
name: icon.name,
|
|
63
|
-
className: classNames(
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
className: classNames(
|
|
67
|
+
icon.className,
|
|
68
|
+
"flex-shrink-0 text-current"
|
|
69
|
+
),
|
|
70
|
+
size: icon.size || 14
|
|
66
71
|
}
|
|
67
|
-
)
|
|
72
|
+
) })
|
|
68
73
|
]
|
|
69
74
|
}
|
|
70
75
|
);
|
package/dist/Badge.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Badge.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/Badge.tsx"],"names":[],"mappings":";;;;;;;;AAoBO,MAAM,QAAQ,CAAC;AAAA,EACpB,SAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA,GAAe,MAAA;AAAA,EACf,KAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP;AACF,CAAA,KAAkB;AAChB,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,OAAO,EAAE,KAAA,EAAO,aAAA,CAAc,OAAA,IAAW,WAAW,CAAA,EAAE;AAAA,MACtD,SAAA,EAAW,UAAA;AAAA,QACT,oMAAA;AAAA,QACA,SAAS,IAAA,IAAQ,eAAA;AAAA,QACjB,SAAS,IAAA,IAAQ,wBAAA;AAAA,QACjB,SAAS,IAAA,IAAQ,wBAAA;AAAA,QACjB,CAAC,KAAA,IAAS,sBAAA;AAAA,QACV,CAAC,IAAA,IAAQ,aAAA;AAAA,QACT,YAAA,KAAiB,MAAA,IAAU,KAAA,IAAS,CAAC,CAAC,IAAA,IAAQ,aAAA;AAAA,QAC9C,YAAA,KAAiB,OAAA,IAAW,KAAA,IAAS,CAAC,CAAC,IAAA,IAAQ,aAAA;AAAA,QAC/C,SAAA,EAAW,OAAA,KAAY,UAAA,IACrB,KAAA,IACA,iBAAiB,MAAA,IACjB,aAAA;AAAA,QACF,SAAA,EAAW,OAAA,KAAY,UAAA,IACrB,KAAA,IACA,iBAAiB,OAAA,IACjB,aAAA;AAAA,QACF;AAAA,OACF;AAAA,MACC,GAAG,SAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,UAAA,CAAW,+BAA+B,CAAA,EACxD,QAAA,kBAAA,GAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YAEC,SAAS,SAAA,EAAW,OAAA;AAAA,YACpB,SAAA,EAAW,UAAA,CAAW,cAAA,EAAgB,SAAA,EAAW,SAAS,CAAA;AAAA,YAC1D,SAAS,SAAA,EAAW,OAAA;AAAA,YACpB,cAAA,EAAgB,WAAW,cAAA,IAAkB,CAAA;AAAA,YAC7C,iBAAA,EAAmB,WAAW,iBAAA,IAAqB,GAAA;AAAA,YACnD,IAAA,EAAM,WAAW,IAAA,IAAQ;AAAA,WAAA;AAAA,UANpB,cAAA,CAAe,IAAI,CAAA,GAAI,aAAA,GAAiB,IAAA,EAAoB;AAAA,SAOnE,EACF,CAAA;AAAA,QACC,QAAQ,YAAA,KAAiB,MAAA,oCAErB,QAAA,EAAA,cAAA,CAAe,IAAI,IAClB,IAAA,mBAEA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,MAAO,IAAA,CAAmB,IAAA;AAAA,YAC1B,SAAA,EAAW,UAAA;AAAA,cACR,IAAA,CAAmB,SAAA;AAAA,cACpB;AAAA,aACF;AAAA,YACA,IAAA,EAAO,KAAmB,IAAA,IAAQ;AAAA;AAAA,SACpC,EAEJ,CAAA;AAAA,QAED,KAAA,oBAAS,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QAC5C,QAAQ,YAAA,KAAiB,OAAA,oCAErB,QAAA,EAAA,cAAA,CAAe,IAAI,IAClB,IAAA,mBAEA,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,MAAO,IAAA,CAAmB,IAAA;AAAA,YAC1B,SAAA,EAAW,UAAA;AAAA,cACR,IAAA,CAAmB,SAAA;AAAA,cACpB;AAAA,aACF;AAAA,YACA,IAAA,EAAO,KAAmB,IAAA,IAAQ;AAAA;AAAA,SACpC,EAEJ;AAAA;AAAA;AAAA,GAEJ;AAEJ","file":"Badge.mjs","sourcesContent":["\"use client\";\n\nimport { BRAND_COLOURS, BrandColour } from \"./utils/colours\";\nimport { Icon, IconProps } from \"./Icon\";\nimport classNames from \"classnames\";\nimport { CrosshairCorners, CrosshairCornersProps } from \"./CrossHair\";\nimport { motion, MotionProps } from \"motion/react\";\nimport { isValidElement, ReactNode } from \"react\";\n\nexport type BadgeProps = {\n className?: string;\n label?: string;\n variant?: BrandColour;\n icon?: IconProps | ReactNode;\n iconPosition?: \"left\" | \"right\";\n crosshair?: CrosshairCornersProps;\n size?: \"xs\" | \"sm\" | \"md\";\n animation?: MotionProps;\n};\n\nexport const Badge = ({\n className,\n variant,\n icon,\n crosshair,\n iconPosition = \"left\",\n label,\n size = \"sm\",\n animation,\n}: BadgeProps) => {\n return (\n <motion.div\n style={{ color: BRAND_COLOURS[variant ?? \"Secondary\"] }}\n className={classNames(\n \"shadow-[inset_0px_0px_6px] bg-card-solid/50 shadow-current/25 relative transition-all duration-100 ease-glide gradient-border before:bg-current/8 min-h-[24px] flex items-center gap-x-[5px] py-1\",\n size === \"md\" && \"!py-2 text-sm\",\n size === \"sm\" && \"text-sm leading-[16px]\",\n size === \"xs\" && \"text-xs leading-[100%]\",\n !label && \"!p-2 !justify-center\",\n !icon && \"!py-1 !px-2\",\n iconPosition === \"left\" && label && !!icon && \"pl-1.5 pr-2\",\n iconPosition === \"right\" && label && !!icon && \"pl-2 pr-1.5\",\n crosshair?.variant === \"bordered\" &&\n label &&\n iconPosition === \"left\" &&\n \"pl-2.5 pr-3\",\n crosshair?.variant === \"bordered\" &&\n label &&\n iconPosition === \"right\" &&\n \"pl-3 pr-2.5\",\n className,\n )}\n {...animation}\n >\n <div className={classNames(\"text-current absolute inset-0\")}>\n <CrosshairCorners\n key={isValidElement(icon) ? \"custom-icon\" : (icon as IconProps)?.name}\n variant={crosshair?.variant}\n className={classNames(\"text-current\", crosshair?.className)}\n corners={crosshair?.corners}\n animationDelay={crosshair?.animationDelay || 0}\n animationDuration={crosshair?.animationDuration || 1.5}\n size={crosshair?.size || 4}\n />\n </div>\n {icon && iconPosition === \"left\" && (\n <>\n {isValidElement(icon) ? (\n icon\n ) : (\n <Icon\n name={(icon as IconProps).name}\n className={classNames(\n (icon as IconProps).className,\n \"flex-shrink-0 text-current\",\n )}\n size={(icon as IconProps).size || 14}\n />\n )}\n </>\n )}\n {label && <span className=\"font-mono\">{label}</span>}\n {icon && iconPosition === \"right\" && (\n <>\n {isValidElement(icon) ? (\n icon\n ) : (\n <Icon\n name={(icon as IconProps).name}\n className={classNames(\n (icon as IconProps).className,\n \"flex-shrink-0 text-current\",\n )}\n size={(icon as IconProps).size || 14}\n />\n )}\n </>\n )}\n </motion.div>\n );\n};\n"]}
|
package/dist/Banner.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { MotionProps } from 'motion/react';
|
|
3
|
-
import { a as IconProps } from './Icon-
|
|
3
|
+
import { a as IconProps } from './Icon-N0gdQwEm.mjs';
|
|
4
4
|
import { TooltipProps } from './Tooltip.mjs';
|
|
5
5
|
import { BrandColour } from './utils/colours.mjs';
|
|
6
6
|
|
package/dist/Banner.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { MotionProps } from 'motion/react';
|
|
3
|
-
import { a as IconProps } from './Icon-
|
|
3
|
+
import { a as IconProps } from './Icon-N0gdQwEm.js';
|
|
4
4
|
import { TooltipProps } from './Tooltip.js';
|
|
5
5
|
import { BrandColour } from './utils/colours.js';
|
|
6
6
|
|
package/dist/Button.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { MotionProps } from 'motion/react';
|
|
3
3
|
import { CrosshairCornersProps } from './CrossHair.mjs';
|
|
4
|
-
import {
|
|
5
|
-
import { c as IconName } from './Icon-DZiidxwK.mjs';
|
|
4
|
+
import { c as IconName } from './Icon-N0gdQwEm.mjs';
|
|
6
5
|
|
|
7
6
|
type ButtonProps = {
|
|
8
7
|
className?: string;
|
|
@@ -12,8 +11,7 @@ type ButtonProps = {
|
|
|
12
11
|
name: IconName;
|
|
13
12
|
className?: string;
|
|
14
13
|
size?: number;
|
|
15
|
-
|
|
16
|
-
};
|
|
14
|
+
} | React.ReactNode;
|
|
17
15
|
iconPosition?: "left" | "right";
|
|
18
16
|
hideLabel?: boolean;
|
|
19
17
|
label?: string;
|
package/dist/Button.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { MotionProps } from 'motion/react';
|
|
3
3
|
import { CrosshairCornersProps } from './CrossHair.js';
|
|
4
|
-
import {
|
|
5
|
-
import { c as IconName } from './Icon-CwFBZAPq.js';
|
|
4
|
+
import { c as IconName } from './Icon-N0gdQwEm.js';
|
|
6
5
|
|
|
7
6
|
type ButtonProps = {
|
|
8
7
|
className?: string;
|
|
@@ -12,8 +11,7 @@ type ButtonProps = {
|
|
|
12
11
|
name: IconName;
|
|
13
12
|
className?: string;
|
|
14
13
|
size?: number;
|
|
15
|
-
|
|
16
|
-
};
|
|
14
|
+
} | React.ReactNode;
|
|
17
15
|
iconPosition?: "left" | "right";
|
|
18
16
|
hideLabel?: boolean;
|
|
19
17
|
label?: string;
|
package/dist/Button.js
CHANGED
|
@@ -67,12 +67,12 @@ const Button = ({
|
|
|
67
67
|
size === "md" && hideLabel && "h-[42px] w-[42px] justify-center !pr-0 !pl-0",
|
|
68
68
|
size === "sm" && hideLabel && "h-[36px] w-[36px] justify-center !pr-0 !pl-0",
|
|
69
69
|
// Icon offsets
|
|
70
|
-
size === "lg" && icon && iconPosition === "right" && "pl-6 pr-[22px]",
|
|
71
|
-
size === "lg" && icon && iconPosition === "left" && "pl-[22px] pr-6",
|
|
72
|
-
size === "md" && icon && iconPosition === "right" && "pl-4 pr-[18px]",
|
|
73
|
-
size === "md" && icon && iconPosition === "left" && "pl-[18px] pr-4",
|
|
74
|
-
size === "sm" && icon && iconPosition === "right" && "pl-3 pr-[14px]",
|
|
75
|
-
size === "sm" && icon && iconPosition === "left" && "pl-[14px] pr-3",
|
|
70
|
+
size === "lg" && !!icon && iconPosition === "right" && "pl-6 pr-[22px]",
|
|
71
|
+
size === "lg" && !!icon && iconPosition === "left" && "pl-[22px] pr-6",
|
|
72
|
+
size === "md" && !!icon && iconPosition === "right" && "pl-4 pr-[18px]",
|
|
73
|
+
size === "md" && !!icon && iconPosition === "left" && "pl-[18px] pr-4",
|
|
74
|
+
size === "sm" && !!icon && iconPosition === "right" && "pl-3 pr-[14px]",
|
|
75
|
+
size === "sm" && !!icon && iconPosition === "left" && "pl-[14px] pr-3",
|
|
76
76
|
className
|
|
77
77
|
),
|
|
78
78
|
...animation,
|
|
@@ -103,15 +103,24 @@ const Button = ({
|
|
|
103
103
|
)
|
|
104
104
|
}
|
|
105
105
|
),
|
|
106
|
-
icon && iconPosition === "left" && size !== "xs" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
106
|
+
icon && iconPosition === "left" && size !== "xs" && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: react.isValidElement(icon) ? loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
107
107
|
Icon.Icon,
|
|
108
108
|
{
|
|
109
|
-
size: icon.size,
|
|
110
|
-
name:
|
|
111
|
-
className:
|
|
112
|
-
difficulties: icon.difficulties
|
|
109
|
+
size: icon.props.size || 18,
|
|
110
|
+
name: "Loading",
|
|
111
|
+
className: "flex-shrink-0"
|
|
113
112
|
}
|
|
114
|
-
)
|
|
113
|
+
) : icon : (
|
|
114
|
+
/* Icon config object */
|
|
115
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
116
|
+
Icon.Icon,
|
|
117
|
+
{
|
|
118
|
+
size: icon.size,
|
|
119
|
+
name: loading ? "Loading" : icon.name,
|
|
120
|
+
className: classNames__default.default(icon.className, "flex-shrink-0")
|
|
121
|
+
}
|
|
122
|
+
)
|
|
123
|
+
) }),
|
|
115
124
|
children && children,
|
|
116
125
|
!hideLabel && label && /* @__PURE__ */ jsxRuntime.jsx(
|
|
117
126
|
DecryptedText__default.default,
|
|
@@ -121,15 +130,21 @@ const Button = ({
|
|
|
121
130
|
text: label
|
|
122
131
|
}
|
|
123
132
|
),
|
|
124
|
-
icon && iconPosition === "right" && size !== "xs" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
133
|
+
icon && iconPosition === "right" && size !== "xs" && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: react.isValidElement(icon) ? loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
134
|
+
Icon.Icon,
|
|
135
|
+
{
|
|
136
|
+
size: icon.props.size || 18,
|
|
137
|
+
name: "Loading",
|
|
138
|
+
className: "flex-shrink-0"
|
|
139
|
+
}
|
|
140
|
+
) : icon : /* @__PURE__ */ jsxRuntime.jsx(
|
|
125
141
|
Icon.Icon,
|
|
126
142
|
{
|
|
127
143
|
size: icon.size,
|
|
128
144
|
name: loading ? "Loading" : icon.name,
|
|
129
|
-
className: classNames__default.default(icon.className, "flex-shrink-0")
|
|
130
|
-
difficulties: icon.difficulties
|
|
145
|
+
className: classNames__default.default(icon.className, "flex-shrink-0")
|
|
131
146
|
}
|
|
132
|
-
)
|
|
147
|
+
) })
|
|
133
148
|
]
|
|
134
149
|
}
|
|
135
150
|
);
|
package/dist/Button.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Button.tsx"],"names":["useState","jsxs","motion","classNames","jsx","CrosshairCorners","Icon","DecryptedText"],"mappings":"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","file":"Button.js","sourcesContent":["\"use client\";\n\nimport { motion, MotionProps } from \"motion/react\";\nimport classNames from \"classnames\";\nimport { Icon } from \"./Icon\";\nimport { CrosshairCorners, type CrosshairCornersProps } from \"./CrossHair\";\nimport DecryptedText from \"./DecryptText\";\nimport { useState } from \"react\";\nimport { courseDifficulty } from \"./utils/colours\";\nimport { IconName } from \"./icons\";\n\nexport type ButtonProps = {\n className?: string;\n disabled?: boolean;\n children?: React.ReactNode;\n icon?: {\n name: IconName;\n className?: string;\n size?: number;\n difficulties?: Array<keyof typeof courseDifficulty>;\n };\n iconPosition?: \"left\" | \"right\";\n hideLabel?: boolean;\n label?: string;\n loading?: boolean;\n onClick?: () => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"link\";\n crosshairProps?: CrosshairCornersProps;\n useHoverEffect?: boolean;\n animation?: MotionProps;\n useDecryptAnimation?: boolean;\n};\n\nexport const Button = ({\n label,\n variant = \"primary\",\n size = \"lg\",\n className = \"\",\n onClick,\n disabled = false,\n icon,\n iconPosition = \"left\",\n loading = false,\n crosshairProps = {\n variant: \"corners\",\n },\n hideLabel,\n animation,\n useHoverEffect = true,\n onMouseEnter,\n onMouseLeave,\n children,\n useDecryptAnimation = true,\n}: ButtonProps) => {\n const [isHovering, setIsHovering] = useState(false);\n return (\n <motion.button\n disabled={disabled}\n onClick={onClick}\n onMouseEnter={() => {\n setIsHovering(true);\n onMouseEnter?.();\n }}\n onMouseLeave={() => {\n setIsHovering(false);\n onMouseLeave?.();\n }}\n className={classNames(\n // Animation\n \"relative enabled:cursor-pointer group enabled:active:scale-[0.97] transition-all duration-100 ease-glide font-mono\",\n // Base Styles\n \"disabled:opacity-40 flex items-center justify-center gap-x-2 leading-[18px]\",\n // Themes\n variant === \"primary\" &&\n \"bg-primary-button text-background gradient-border before:bg-primary-button-border\",\n variant === \"secondary\" &&\n \"bg-card-foreground text-shade-secondary gradient-border before:bg-secondary-button-border\",\n variant === \"outline\" &&\n \"bg-transparent text-shade-secondary gradient-border before:bg-border hover:before:bg-border-light hover:text-shade-primary\",\n variant === \"link\" && \"text-shade-secondary hover:text-shade-primary\",\n // Sizes\n size === \"lg\" && \"py-4 pl-6 pr-6 text-base\",\n size === \"md\" && \"py-3 pl-4 pr-4 text-sm\",\n size === \"sm\" && \"py-2 pl-3 pr-3 text-sm leading-[20px]\",\n size === \"xs\" && \"text-[10px] px-3 py-1.5\",\n size === \"lg\" &&\n hideLabel &&\n \"h-[50px] w-[50px] justify-center !pr-0 !pl-0\",\n size === \"md\" &&\n hideLabel &&\n \"h-[42px] w-[42px] justify-center !pr-0 !pl-0\",\n size === \"sm\" &&\n hideLabel &&\n \"h-[36px] w-[36px] justify-center !pr-0 !pl-0\",\n // Icon offsets\n size === \"lg\" && icon && iconPosition === \"right\" && \"pl-6 pr-[22px]\",\n size === \"lg\" && icon && iconPosition === \"left\" && \"pl-[22px] pr-6\",\n size === \"md\" && icon && iconPosition === \"right\" && \"pl-4 pr-[18px]\",\n size === \"md\" && icon && iconPosition === \"left\" && \"pl-[18px] pr-4\",\n size === \"sm\" && icon && iconPosition === \"right\" && \"pl-3 pr-[14px]\",\n size === \"sm\" && icon && iconPosition === \"left\" && \"pl-[14px] pr-3\",\n className,\n )}\n {...animation}\n >\n {crosshairProps && variant !== \"outline\" && variant !== \"link\" && (\n <div\n className={classNames(\n \"will-change-transform absolute transition-all duration-50 ease-glide inset-0\",\n variant === \"secondary\" && \"text-shade-mute\",\n variant === \"primary\" && \"text-background\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n \"inset-0.5 group-enabled:group-active:inset-1 group-enabled:group-hover:text-shade-primary group-enabled:group-active:text-current\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size === \"lg\" &&\n \"group-enabled:group-hover:inset-[-4px]\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size === \"md\" &&\n \"group-enabled:group-hover:inset-[-3px]\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size !== \"lg\" &&\n size !== \"md\" &&\n \"group-enabled:group-hover:inset-[-2px]\",\n crosshairProps.variant === \"cross\" &&\n useHoverEffect &&\n \"-inset-1 text-shade-primary\",\n crosshairProps.variant === \"bordered\" &&\n useHoverEffect &&\n \"inset-0.5 group-enabled:group-active:inset-1 group-enabled:group-hover:inset-[-4px] group-enabled:group-hover:text-shade-primary group-enabled:group-active:text-current\",\n )}\n >\n <CrosshairCorners\n size={size === \"xs\" ? 3 : size === \"sm\" ? 4 : 6}\n animationDelay={0}\n variant={crosshairProps.variant}\n animationDuration={1.5}\n {...crosshairProps}\n />\n </div>\n )}\n {icon && iconPosition === \"left\" && size !== \"xs\" && (\n <Icon\n size={icon.size}\n name={loading ? \"Loading\" : icon.name}\n className={classNames(icon.className, \"flex-shrink-0\")}\n difficulties={icon.difficulties}\n />\n )}\n {children && children}\n {!hideLabel && label && (\n <DecryptedText\n speed={label.length / 0.6}\n isHovering={isHovering && !disabled && useDecryptAnimation}\n text={label}\n />\n )}\n {icon && iconPosition === \"right\" && size !== \"xs\" && (\n <Icon\n size={icon.size}\n name={loading ? \"Loading\" : icon.name}\n className={classNames(icon.className, \"flex-shrink-0\")}\n difficulties={icon.difficulties}\n />\n )}\n </motion.button>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/Button.tsx"],"names":["useState","jsxs","motion","classNames","jsx","CrosshairCorners","Fragment","isValidElement","Icon","DecryptedText"],"mappings":"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","file":"Button.js","sourcesContent":["\"use client\";\n\nimport { motion, MotionProps } from \"motion/react\";\nimport classNames from \"classnames\";\nimport { Icon } from \"./Icon\";\nimport { CrosshairCorners, type CrosshairCornersProps } from \"./CrossHair\";\nimport DecryptedText from \"./DecryptText\";\nimport { useState, isValidElement } from \"react\";\nimport { IconName } from \"./icons\";\n\nexport type ButtonProps = {\n className?: string;\n disabled?: boolean;\n children?: React.ReactNode;\n icon?:\n | {\n name: IconName;\n className?: string;\n size?: number;\n }\n | React.ReactNode;\n iconPosition?: \"left\" | \"right\";\n hideLabel?: boolean;\n label?: string;\n loading?: boolean;\n onClick?: () => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"link\";\n crosshairProps?: CrosshairCornersProps;\n useHoverEffect?: boolean;\n animation?: MotionProps;\n useDecryptAnimation?: boolean;\n};\n\nexport const Button = ({\n label,\n variant = \"primary\",\n size = \"lg\",\n className = \"\",\n onClick,\n disabled = false,\n icon,\n iconPosition = \"left\",\n loading = false,\n crosshairProps = {\n variant: \"corners\",\n },\n hideLabel,\n animation,\n useHoverEffect = true,\n onMouseEnter,\n onMouseLeave,\n children,\n useDecryptAnimation = true,\n}: ButtonProps) => {\n const [isHovering, setIsHovering] = useState(false);\n return (\n <motion.button\n disabled={disabled}\n onClick={onClick}\n onMouseEnter={() => {\n setIsHovering(true);\n onMouseEnter?.();\n }}\n onMouseLeave={() => {\n setIsHovering(false);\n onMouseLeave?.();\n }}\n className={classNames(\n // Animation\n \"relative enabled:cursor-pointer group enabled:active:scale-[0.97] transition-all duration-100 ease-glide font-mono\",\n // Base Styles\n \"disabled:opacity-40 flex items-center justify-center gap-x-2 leading-[18px]\",\n // Themes\n variant === \"primary\" &&\n \"bg-primary-button text-background gradient-border before:bg-primary-button-border\",\n variant === \"secondary\" &&\n \"bg-card-foreground text-shade-secondary gradient-border before:bg-secondary-button-border\",\n variant === \"outline\" &&\n \"bg-transparent text-shade-secondary gradient-border before:bg-border hover:before:bg-border-light hover:text-shade-primary\",\n variant === \"link\" && \"text-shade-secondary hover:text-shade-primary\",\n // Sizes\n size === \"lg\" && \"py-4 pl-6 pr-6 text-base\",\n size === \"md\" && \"py-3 pl-4 pr-4 text-sm\",\n size === \"sm\" && \"py-2 pl-3 pr-3 text-sm leading-[20px]\",\n size === \"xs\" && \"text-[10px] px-3 py-1.5\",\n size === \"lg\" &&\n hideLabel &&\n \"h-[50px] w-[50px] justify-center !pr-0 !pl-0\",\n size === \"md\" &&\n hideLabel &&\n \"h-[42px] w-[42px] justify-center !pr-0 !pl-0\",\n size === \"sm\" &&\n hideLabel &&\n \"h-[36px] w-[36px] justify-center !pr-0 !pl-0\",\n // Icon offsets\n size === \"lg\" && !!icon && iconPosition === \"right\" && \"pl-6 pr-[22px]\",\n size === \"lg\" && !!icon && iconPosition === \"left\" && \"pl-[22px] pr-6\",\n size === \"md\" && !!icon && iconPosition === \"right\" && \"pl-4 pr-[18px]\",\n size === \"md\" && !!icon && iconPosition === \"left\" && \"pl-[18px] pr-4\",\n size === \"sm\" && !!icon && iconPosition === \"right\" && \"pl-3 pr-[14px]\",\n size === \"sm\" && !!icon && iconPosition === \"left\" && \"pl-[14px] pr-3\",\n className,\n )}\n {...animation}\n >\n {crosshairProps && variant !== \"outline\" && variant !== \"link\" && (\n <div\n className={classNames(\n \"will-change-transform absolute transition-all duration-50 ease-glide inset-0\",\n variant === \"secondary\" && \"text-shade-mute\",\n variant === \"primary\" && \"text-background\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n \"inset-0.5 group-enabled:group-active:inset-1 group-enabled:group-hover:text-shade-primary group-enabled:group-active:text-current\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size === \"lg\" &&\n \"group-enabled:group-hover:inset-[-4px]\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size === \"md\" &&\n \"group-enabled:group-hover:inset-[-3px]\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size !== \"lg\" &&\n size !== \"md\" &&\n \"group-enabled:group-hover:inset-[-2px]\",\n crosshairProps.variant === \"cross\" &&\n useHoverEffect &&\n \"-inset-1 text-shade-primary\",\n crosshairProps.variant === \"bordered\" &&\n useHoverEffect &&\n \"inset-0.5 group-enabled:group-active:inset-1 group-enabled:group-hover:inset-[-4px] group-enabled:group-hover:text-shade-primary group-enabled:group-active:text-current\",\n )}\n >\n <CrosshairCorners\n size={size === \"xs\" ? 3 : size === \"sm\" ? 4 : 6}\n animationDelay={0}\n variant={crosshairProps.variant}\n animationDuration={1.5}\n {...crosshairProps}\n />\n </div>\n )}\n {icon && iconPosition === \"left\" && size !== \"xs\" && (\n <>\n {/* Check if icon is a ReactNode (not an object with 'name') */}\n {isValidElement(icon) ? (\n loading ? (\n <Icon\n size={(icon.props as any).size || 18}\n name=\"Loading\"\n className=\"flex-shrink-0\"\n />\n ) : (\n icon\n )\n ) : (\n /* Icon config object */\n <Icon\n size={(icon as any).size}\n name={loading ? \"Loading\" : (icon as any).name}\n className={classNames((icon as any).className, \"flex-shrink-0\")}\n />\n )}\n </>\n )}\n {children && children}\n {!hideLabel && label && (\n <DecryptedText\n speed={label.length / 0.6}\n isHovering={isHovering && !disabled && useDecryptAnimation}\n text={label}\n />\n )}\n {icon && iconPosition === \"right\" && size !== \"xs\" && (\n <>\n {isValidElement(icon) ? (\n loading ? (\n <Icon\n size={(icon.props as any).size || 18}\n name=\"Loading\"\n className=\"flex-shrink-0\"\n />\n ) : (\n icon\n )\n ) : (\n <Icon\n size={(icon as any).size}\n name={loading ? \"Loading\" : (icon as any).name}\n className={classNames((icon as any).className, \"flex-shrink-0\")}\n />\n )}\n </>\n )}\n </motion.button>\n );\n};\n"]}
|
package/dist/Button.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { motion } from 'motion/react';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import { Icon } from './Icon';
|
|
5
5
|
import { CrosshairCorners } from './CrossHair';
|
|
6
6
|
import DecryptedText from './DecryptText';
|
|
7
|
-
import { useState } from 'react';
|
|
7
|
+
import { useState, isValidElement } from 'react';
|
|
8
8
|
|
|
9
9
|
const Button = ({
|
|
10
10
|
label,
|
|
@@ -60,12 +60,12 @@ const Button = ({
|
|
|
60
60
|
size === "md" && hideLabel && "h-[42px] w-[42px] justify-center !pr-0 !pl-0",
|
|
61
61
|
size === "sm" && hideLabel && "h-[36px] w-[36px] justify-center !pr-0 !pl-0",
|
|
62
62
|
// Icon offsets
|
|
63
|
-
size === "lg" && icon && iconPosition === "right" && "pl-6 pr-[22px]",
|
|
64
|
-
size === "lg" && icon && iconPosition === "left" && "pl-[22px] pr-6",
|
|
65
|
-
size === "md" && icon && iconPosition === "right" && "pl-4 pr-[18px]",
|
|
66
|
-
size === "md" && icon && iconPosition === "left" && "pl-[18px] pr-4",
|
|
67
|
-
size === "sm" && icon && iconPosition === "right" && "pl-3 pr-[14px]",
|
|
68
|
-
size === "sm" && icon && iconPosition === "left" && "pl-[14px] pr-3",
|
|
63
|
+
size === "lg" && !!icon && iconPosition === "right" && "pl-6 pr-[22px]",
|
|
64
|
+
size === "lg" && !!icon && iconPosition === "left" && "pl-[22px] pr-6",
|
|
65
|
+
size === "md" && !!icon && iconPosition === "right" && "pl-4 pr-[18px]",
|
|
66
|
+
size === "md" && !!icon && iconPosition === "left" && "pl-[18px] pr-4",
|
|
67
|
+
size === "sm" && !!icon && iconPosition === "right" && "pl-3 pr-[14px]",
|
|
68
|
+
size === "sm" && !!icon && iconPosition === "left" && "pl-[14px] pr-3",
|
|
69
69
|
className
|
|
70
70
|
),
|
|
71
71
|
...animation,
|
|
@@ -96,15 +96,24 @@ const Button = ({
|
|
|
96
96
|
)
|
|
97
97
|
}
|
|
98
98
|
),
|
|
99
|
-
icon && iconPosition === "left" && size !== "xs" && /* @__PURE__ */ jsx(
|
|
99
|
+
icon && iconPosition === "left" && size !== "xs" && /* @__PURE__ */ jsx(Fragment, { children: isValidElement(icon) ? loading ? /* @__PURE__ */ jsx(
|
|
100
100
|
Icon,
|
|
101
101
|
{
|
|
102
|
-
size: icon.size,
|
|
103
|
-
name:
|
|
104
|
-
className:
|
|
105
|
-
difficulties: icon.difficulties
|
|
102
|
+
size: icon.props.size || 18,
|
|
103
|
+
name: "Loading",
|
|
104
|
+
className: "flex-shrink-0"
|
|
106
105
|
}
|
|
107
|
-
)
|
|
106
|
+
) : icon : (
|
|
107
|
+
/* Icon config object */
|
|
108
|
+
/* @__PURE__ */ jsx(
|
|
109
|
+
Icon,
|
|
110
|
+
{
|
|
111
|
+
size: icon.size,
|
|
112
|
+
name: loading ? "Loading" : icon.name,
|
|
113
|
+
className: classNames(icon.className, "flex-shrink-0")
|
|
114
|
+
}
|
|
115
|
+
)
|
|
116
|
+
) }),
|
|
108
117
|
children && children,
|
|
109
118
|
!hideLabel && label && /* @__PURE__ */ jsx(
|
|
110
119
|
DecryptedText,
|
|
@@ -114,15 +123,21 @@ const Button = ({
|
|
|
114
123
|
text: label
|
|
115
124
|
}
|
|
116
125
|
),
|
|
117
|
-
icon && iconPosition === "right" && size !== "xs" && /* @__PURE__ */ jsx(
|
|
126
|
+
icon && iconPosition === "right" && size !== "xs" && /* @__PURE__ */ jsx(Fragment, { children: isValidElement(icon) ? loading ? /* @__PURE__ */ jsx(
|
|
127
|
+
Icon,
|
|
128
|
+
{
|
|
129
|
+
size: icon.props.size || 18,
|
|
130
|
+
name: "Loading",
|
|
131
|
+
className: "flex-shrink-0"
|
|
132
|
+
}
|
|
133
|
+
) : icon : /* @__PURE__ */ jsx(
|
|
118
134
|
Icon,
|
|
119
135
|
{
|
|
120
136
|
size: icon.size,
|
|
121
137
|
name: loading ? "Loading" : icon.name,
|
|
122
|
-
className: classNames(icon.className, "flex-shrink-0")
|
|
123
|
-
difficulties: icon.difficulties
|
|
138
|
+
className: classNames(icon.className, "flex-shrink-0")
|
|
124
139
|
}
|
|
125
|
-
)
|
|
140
|
+
) })
|
|
126
141
|
]
|
|
127
142
|
}
|
|
128
143
|
);
|
package/dist/Button.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Button.tsx"],"names":[],"mappings":"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","file":"Button.mjs","sourcesContent":["\"use client\";\n\nimport { motion, MotionProps } from \"motion/react\";\nimport classNames from \"classnames\";\nimport { Icon } from \"./Icon\";\nimport { CrosshairCorners, type CrosshairCornersProps } from \"./CrossHair\";\nimport DecryptedText from \"./DecryptText\";\nimport { useState } from \"react\";\nimport { courseDifficulty } from \"./utils/colours\";\nimport { IconName } from \"./icons\";\n\nexport type ButtonProps = {\n className?: string;\n disabled?: boolean;\n children?: React.ReactNode;\n icon?: {\n name: IconName;\n className?: string;\n size?: number;\n difficulties?: Array<keyof typeof courseDifficulty>;\n };\n iconPosition?: \"left\" | \"right\";\n hideLabel?: boolean;\n label?: string;\n loading?: boolean;\n onClick?: () => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"link\";\n crosshairProps?: CrosshairCornersProps;\n useHoverEffect?: boolean;\n animation?: MotionProps;\n useDecryptAnimation?: boolean;\n};\n\nexport const Button = ({\n label,\n variant = \"primary\",\n size = \"lg\",\n className = \"\",\n onClick,\n disabled = false,\n icon,\n iconPosition = \"left\",\n loading = false,\n crosshairProps = {\n variant: \"corners\",\n },\n hideLabel,\n animation,\n useHoverEffect = true,\n onMouseEnter,\n onMouseLeave,\n children,\n useDecryptAnimation = true,\n}: ButtonProps) => {\n const [isHovering, setIsHovering] = useState(false);\n return (\n <motion.button\n disabled={disabled}\n onClick={onClick}\n onMouseEnter={() => {\n setIsHovering(true);\n onMouseEnter?.();\n }}\n onMouseLeave={() => {\n setIsHovering(false);\n onMouseLeave?.();\n }}\n className={classNames(\n // Animation\n \"relative enabled:cursor-pointer group enabled:active:scale-[0.97] transition-all duration-100 ease-glide font-mono\",\n // Base Styles\n \"disabled:opacity-40 flex items-center justify-center gap-x-2 leading-[18px]\",\n // Themes\n variant === \"primary\" &&\n \"bg-primary-button text-background gradient-border before:bg-primary-button-border\",\n variant === \"secondary\" &&\n \"bg-card-foreground text-shade-secondary gradient-border before:bg-secondary-button-border\",\n variant === \"outline\" &&\n \"bg-transparent text-shade-secondary gradient-border before:bg-border hover:before:bg-border-light hover:text-shade-primary\",\n variant === \"link\" && \"text-shade-secondary hover:text-shade-primary\",\n // Sizes\n size === \"lg\" && \"py-4 pl-6 pr-6 text-base\",\n size === \"md\" && \"py-3 pl-4 pr-4 text-sm\",\n size === \"sm\" && \"py-2 pl-3 pr-3 text-sm leading-[20px]\",\n size === \"xs\" && \"text-[10px] px-3 py-1.5\",\n size === \"lg\" &&\n hideLabel &&\n \"h-[50px] w-[50px] justify-center !pr-0 !pl-0\",\n size === \"md\" &&\n hideLabel &&\n \"h-[42px] w-[42px] justify-center !pr-0 !pl-0\",\n size === \"sm\" &&\n hideLabel &&\n \"h-[36px] w-[36px] justify-center !pr-0 !pl-0\",\n // Icon offsets\n size === \"lg\" && icon && iconPosition === \"right\" && \"pl-6 pr-[22px]\",\n size === \"lg\" && icon && iconPosition === \"left\" && \"pl-[22px] pr-6\",\n size === \"md\" && icon && iconPosition === \"right\" && \"pl-4 pr-[18px]\",\n size === \"md\" && icon && iconPosition === \"left\" && \"pl-[18px] pr-4\",\n size === \"sm\" && icon && iconPosition === \"right\" && \"pl-3 pr-[14px]\",\n size === \"sm\" && icon && iconPosition === \"left\" && \"pl-[14px] pr-3\",\n className,\n )}\n {...animation}\n >\n {crosshairProps && variant !== \"outline\" && variant !== \"link\" && (\n <div\n className={classNames(\n \"will-change-transform absolute transition-all duration-50 ease-glide inset-0\",\n variant === \"secondary\" && \"text-shade-mute\",\n variant === \"primary\" && \"text-background\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n \"inset-0.5 group-enabled:group-active:inset-1 group-enabled:group-hover:text-shade-primary group-enabled:group-active:text-current\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size === \"lg\" &&\n \"group-enabled:group-hover:inset-[-4px]\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size === \"md\" &&\n \"group-enabled:group-hover:inset-[-3px]\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size !== \"lg\" &&\n size !== \"md\" &&\n \"group-enabled:group-hover:inset-[-2px]\",\n crosshairProps.variant === \"cross\" &&\n useHoverEffect &&\n \"-inset-1 text-shade-primary\",\n crosshairProps.variant === \"bordered\" &&\n useHoverEffect &&\n \"inset-0.5 group-enabled:group-active:inset-1 group-enabled:group-hover:inset-[-4px] group-enabled:group-hover:text-shade-primary group-enabled:group-active:text-current\",\n )}\n >\n <CrosshairCorners\n size={size === \"xs\" ? 3 : size === \"sm\" ? 4 : 6}\n animationDelay={0}\n variant={crosshairProps.variant}\n animationDuration={1.5}\n {...crosshairProps}\n />\n </div>\n )}\n {icon && iconPosition === \"left\" && size !== \"xs\" && (\n <Icon\n size={icon.size}\n name={loading ? \"Loading\" : icon.name}\n className={classNames(icon.className, \"flex-shrink-0\")}\n difficulties={icon.difficulties}\n />\n )}\n {children && children}\n {!hideLabel && label && (\n <DecryptedText\n speed={label.length / 0.6}\n isHovering={isHovering && !disabled && useDecryptAnimation}\n text={label}\n />\n )}\n {icon && iconPosition === \"right\" && size !== \"xs\" && (\n <Icon\n size={icon.size}\n name={loading ? \"Loading\" : icon.name}\n className={classNames(icon.className, \"flex-shrink-0\")}\n difficulties={icon.difficulties}\n />\n )}\n </motion.button>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/Button.tsx"],"names":[],"mappings":"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","file":"Button.mjs","sourcesContent":["\"use client\";\n\nimport { motion, MotionProps } from \"motion/react\";\nimport classNames from \"classnames\";\nimport { Icon } from \"./Icon\";\nimport { CrosshairCorners, type CrosshairCornersProps } from \"./CrossHair\";\nimport DecryptedText from \"./DecryptText\";\nimport { useState, isValidElement } from \"react\";\nimport { IconName } from \"./icons\";\n\nexport type ButtonProps = {\n className?: string;\n disabled?: boolean;\n children?: React.ReactNode;\n icon?:\n | {\n name: IconName;\n className?: string;\n size?: number;\n }\n | React.ReactNode;\n iconPosition?: \"left\" | \"right\";\n hideLabel?: boolean;\n label?: string;\n loading?: boolean;\n onClick?: () => void;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\";\n variant?: \"primary\" | \"secondary\" | \"outline\" | \"link\";\n crosshairProps?: CrosshairCornersProps;\n useHoverEffect?: boolean;\n animation?: MotionProps;\n useDecryptAnimation?: boolean;\n};\n\nexport const Button = ({\n label,\n variant = \"primary\",\n size = \"lg\",\n className = \"\",\n onClick,\n disabled = false,\n icon,\n iconPosition = \"left\",\n loading = false,\n crosshairProps = {\n variant: \"corners\",\n },\n hideLabel,\n animation,\n useHoverEffect = true,\n onMouseEnter,\n onMouseLeave,\n children,\n useDecryptAnimation = true,\n}: ButtonProps) => {\n const [isHovering, setIsHovering] = useState(false);\n return (\n <motion.button\n disabled={disabled}\n onClick={onClick}\n onMouseEnter={() => {\n setIsHovering(true);\n onMouseEnter?.();\n }}\n onMouseLeave={() => {\n setIsHovering(false);\n onMouseLeave?.();\n }}\n className={classNames(\n // Animation\n \"relative enabled:cursor-pointer group enabled:active:scale-[0.97] transition-all duration-100 ease-glide font-mono\",\n // Base Styles\n \"disabled:opacity-40 flex items-center justify-center gap-x-2 leading-[18px]\",\n // Themes\n variant === \"primary\" &&\n \"bg-primary-button text-background gradient-border before:bg-primary-button-border\",\n variant === \"secondary\" &&\n \"bg-card-foreground text-shade-secondary gradient-border before:bg-secondary-button-border\",\n variant === \"outline\" &&\n \"bg-transparent text-shade-secondary gradient-border before:bg-border hover:before:bg-border-light hover:text-shade-primary\",\n variant === \"link\" && \"text-shade-secondary hover:text-shade-primary\",\n // Sizes\n size === \"lg\" && \"py-4 pl-6 pr-6 text-base\",\n size === \"md\" && \"py-3 pl-4 pr-4 text-sm\",\n size === \"sm\" && \"py-2 pl-3 pr-3 text-sm leading-[20px]\",\n size === \"xs\" && \"text-[10px] px-3 py-1.5\",\n size === \"lg\" &&\n hideLabel &&\n \"h-[50px] w-[50px] justify-center !pr-0 !pl-0\",\n size === \"md\" &&\n hideLabel &&\n \"h-[42px] w-[42px] justify-center !pr-0 !pl-0\",\n size === \"sm\" &&\n hideLabel &&\n \"h-[36px] w-[36px] justify-center !pr-0 !pl-0\",\n // Icon offsets\n size === \"lg\" && !!icon && iconPosition === \"right\" && \"pl-6 pr-[22px]\",\n size === \"lg\" && !!icon && iconPosition === \"left\" && \"pl-[22px] pr-6\",\n size === \"md\" && !!icon && iconPosition === \"right\" && \"pl-4 pr-[18px]\",\n size === \"md\" && !!icon && iconPosition === \"left\" && \"pl-[18px] pr-4\",\n size === \"sm\" && !!icon && iconPosition === \"right\" && \"pl-3 pr-[14px]\",\n size === \"sm\" && !!icon && iconPosition === \"left\" && \"pl-[14px] pr-3\",\n className,\n )}\n {...animation}\n >\n {crosshairProps && variant !== \"outline\" && variant !== \"link\" && (\n <div\n className={classNames(\n \"will-change-transform absolute transition-all duration-50 ease-glide inset-0\",\n variant === \"secondary\" && \"text-shade-mute\",\n variant === \"primary\" && \"text-background\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n \"inset-0.5 group-enabled:group-active:inset-1 group-enabled:group-hover:text-shade-primary group-enabled:group-active:text-current\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size === \"lg\" &&\n \"group-enabled:group-hover:inset-[-4px]\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size === \"md\" &&\n \"group-enabled:group-hover:inset-[-3px]\",\n crosshairProps.variant === \"corners\" &&\n useHoverEffect &&\n size !== \"lg\" &&\n size !== \"md\" &&\n \"group-enabled:group-hover:inset-[-2px]\",\n crosshairProps.variant === \"cross\" &&\n useHoverEffect &&\n \"-inset-1 text-shade-primary\",\n crosshairProps.variant === \"bordered\" &&\n useHoverEffect &&\n \"inset-0.5 group-enabled:group-active:inset-1 group-enabled:group-hover:inset-[-4px] group-enabled:group-hover:text-shade-primary group-enabled:group-active:text-current\",\n )}\n >\n <CrosshairCorners\n size={size === \"xs\" ? 3 : size === \"sm\" ? 4 : 6}\n animationDelay={0}\n variant={crosshairProps.variant}\n animationDuration={1.5}\n {...crosshairProps}\n />\n </div>\n )}\n {icon && iconPosition === \"left\" && size !== \"xs\" && (\n <>\n {/* Check if icon is a ReactNode (not an object with 'name') */}\n {isValidElement(icon) ? (\n loading ? (\n <Icon\n size={(icon.props as any).size || 18}\n name=\"Loading\"\n className=\"flex-shrink-0\"\n />\n ) : (\n icon\n )\n ) : (\n /* Icon config object */\n <Icon\n size={(icon as any).size}\n name={loading ? \"Loading\" : (icon as any).name}\n className={classNames((icon as any).className, \"flex-shrink-0\")}\n />\n )}\n </>\n )}\n {children && children}\n {!hideLabel && label && (\n <DecryptedText\n speed={label.length / 0.6}\n isHovering={isHovering && !disabled && useDecryptAnimation}\n text={label}\n />\n )}\n {icon && iconPosition === \"right\" && size !== \"xs\" && (\n <>\n {isValidElement(icon) ? (\n loading ? (\n <Icon\n size={(icon.props as any).size || 18}\n name=\"Loading\"\n className=\"flex-shrink-0\"\n />\n ) : (\n icon\n )\n ) : (\n <Icon\n size={(icon as any).size}\n name={loading ? \"Loading\" : (icon as any).name}\n className={classNames((icon as any).className, \"flex-shrink-0\")}\n />\n )}\n </>\n )}\n </motion.button>\n );\n};\n"]}
|