@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.
Files changed (217) hide show
  1. package/dist/Alert.d.mts +1 -2
  2. package/dist/Alert.d.ts +1 -2
  3. package/dist/Avatar.d.mts +1 -1
  4. package/dist/Avatar.d.ts +1 -1
  5. package/dist/Badge.d.mts +3 -2
  6. package/dist/Badge.d.ts +3 -2
  7. package/dist/Badge.js +18 -13
  8. package/dist/Badge.js.map +1 -1
  9. package/dist/Badge.mjs +19 -14
  10. package/dist/Badge.mjs.map +1 -1
  11. package/dist/Banner.d.mts +1 -1
  12. package/dist/Banner.d.ts +1 -1
  13. package/dist/Button.d.mts +2 -4
  14. package/dist/Button.d.ts +2 -4
  15. package/dist/Button.js +31 -16
  16. package/dist/Button.js.map +1 -1
  17. package/dist/Button.mjs +33 -18
  18. package/dist/Button.mjs.map +1 -1
  19. package/dist/Difficulty.d.mts +10 -0
  20. package/dist/Difficulty.d.ts +10 -0
  21. package/dist/{icons/Difficulty.js → Difficulty.js} +3 -3
  22. package/dist/Difficulty.js.map +1 -0
  23. package/dist/{icons/Difficulty.mjs → Difficulty.mjs} +3 -3
  24. package/dist/Difficulty.mjs.map +1 -0
  25. package/dist/Dropdown.d.mts +6 -6
  26. package/dist/Dropdown.d.ts +6 -6
  27. package/dist/Dropdown.js +20 -29
  28. package/dist/Dropdown.js.map +1 -1
  29. package/dist/Dropdown.mjs +22 -31
  30. package/dist/Dropdown.mjs.map +1 -1
  31. package/dist/{Icon-CwFBZAPq.d.ts → Icon-N0gdQwEm.d.mts} +2 -10
  32. package/dist/{Icon-DZiidxwK.d.mts → Icon-N0gdQwEm.d.ts} +2 -10
  33. package/dist/Icon.d.mts +1 -2
  34. package/dist/Icon.d.ts +1 -2
  35. package/dist/Icon.js +1 -2
  36. package/dist/Icon.js.map +1 -1
  37. package/dist/Icon.mjs +1 -2
  38. package/dist/Icon.mjs.map +1 -1
  39. package/dist/Input.d.mts +2 -1
  40. package/dist/Input.d.ts +2 -1
  41. package/dist/Slider.d.mts +1 -2
  42. package/dist/Slider.d.ts +1 -2
  43. package/dist/Tabs.d.mts +1 -2
  44. package/dist/Tabs.d.ts +1 -2
  45. package/dist/Toast.d.mts +1 -2
  46. package/dist/Toast.d.ts +1 -2
  47. package/dist/icons/Anchor.d.mts +1 -2
  48. package/dist/icons/Anchor.d.ts +1 -2
  49. package/dist/icons/ArrowLeft.d.mts +1 -2
  50. package/dist/icons/ArrowLeft.d.ts +1 -2
  51. package/dist/icons/ArrowRight.d.mts +1 -2
  52. package/dist/icons/ArrowRight.d.ts +1 -2
  53. package/dist/icons/Assembly.d.mts +1 -2
  54. package/dist/icons/Assembly.d.ts +1 -2
  55. package/dist/icons/Backpack.d.mts +1 -2
  56. package/dist/icons/Backpack.d.ts +1 -2
  57. package/dist/icons/Brave.d.mts +1 -2
  58. package/dist/icons/Brave.d.ts +1 -2
  59. package/dist/icons/Challenge.d.mts +1 -2
  60. package/dist/icons/Challenge.d.ts +1 -2
  61. package/dist/icons/Chevron.d.mts +1 -2
  62. package/dist/icons/Chevron.d.ts +1 -2
  63. package/dist/icons/ChevronLeft.d.mts +1 -2
  64. package/dist/icons/ChevronLeft.d.ts +1 -2
  65. package/dist/icons/ChevronRight.d.mts +1 -2
  66. package/dist/icons/ChevronRight.d.ts +1 -2
  67. package/dist/icons/Claim.d.mts +1 -2
  68. package/dist/icons/Claim.d.ts +1 -2
  69. package/dist/icons/Claimed.d.mts +1 -2
  70. package/dist/icons/Claimed.d.ts +1 -2
  71. package/dist/icons/Close.d.mts +1 -2
  72. package/dist/icons/Close.d.ts +1 -2
  73. package/dist/icons/Code.d.mts +1 -2
  74. package/dist/icons/Code.d.ts +1 -2
  75. package/dist/icons/Copy.d.mts +1 -2
  76. package/dist/icons/Copy.d.ts +1 -2
  77. package/dist/icons/Developer.d.mts +1 -2
  78. package/dist/icons/Developer.d.ts +1 -2
  79. package/dist/icons/Disconnect.d.mts +1 -2
  80. package/dist/icons/Disconnect.d.ts +1 -2
  81. package/dist/icons/Discord.d.mts +1 -2
  82. package/dist/icons/Discord.d.ts +1 -2
  83. package/dist/icons/Dollar.d.mts +1 -2
  84. package/dist/icons/Dollar.d.ts +1 -2
  85. package/dist/icons/DoubleArrow.d.mts +1 -2
  86. package/dist/icons/DoubleArrow.d.ts +1 -2
  87. package/dist/icons/EVM.d.mts +1 -2
  88. package/dist/icons/EVM.d.ts +1 -2
  89. package/dist/icons/Email.d.mts +1 -2
  90. package/dist/icons/Email.d.ts +1 -2
  91. package/dist/icons/Error.d.mts +1 -2
  92. package/dist/icons/Error.d.ts +1 -2
  93. package/dist/icons/Expand.d.mts +1 -2
  94. package/dist/icons/Expand.d.ts +1 -2
  95. package/dist/icons/External.d.mts +1 -2
  96. package/dist/icons/External.d.ts +1 -2
  97. package/dist/icons/Filter.d.mts +1 -2
  98. package/dist/icons/Filter.d.ts +1 -2
  99. package/dist/icons/Firmware.d.mts +1 -2
  100. package/dist/icons/Firmware.d.ts +1 -2
  101. package/dist/icons/Flag.d.mts +1 -2
  102. package/dist/icons/Flag.d.ts +1 -2
  103. package/dist/icons/Flame.d.mts +1 -2
  104. package/dist/icons/Flame.d.ts +1 -2
  105. package/dist/icons/Flexible.d.mts +1 -2
  106. package/dist/icons/Flexible.d.ts +1 -2
  107. package/dist/icons/Free.d.mts +1 -2
  108. package/dist/icons/Free.d.ts +1 -2
  109. package/dist/icons/General.d.mts +1 -2
  110. package/dist/icons/General.d.ts +1 -2
  111. package/dist/icons/Github.d.mts +1 -2
  112. package/dist/icons/Github.d.ts +1 -2
  113. package/dist/icons/Globe.d.mts +1 -2
  114. package/dist/icons/Globe.d.ts +1 -2
  115. package/dist/icons/GridView.d.mts +1 -2
  116. package/dist/icons/GridView.d.ts +1 -2
  117. package/dist/icons/Heart.d.mts +1 -2
  118. package/dist/icons/Heart.d.ts +1 -2
  119. package/dist/icons/Info.d.mts +1 -2
  120. package/dist/icons/Info.d.ts +1 -2
  121. package/dist/icons/Language.d.mts +1 -2
  122. package/dist/icons/Language.d.ts +1 -2
  123. package/dist/icons/Lessons.d.mts +1 -2
  124. package/dist/icons/Lessons.d.ts +1 -2
  125. package/dist/icons/Link.d.mts +1 -2
  126. package/dist/icons/Link.d.ts +1 -2
  127. package/dist/icons/ListView.d.mts +1 -2
  128. package/dist/icons/ListView.d.ts +1 -2
  129. package/dist/icons/Loading.d.mts +1 -2
  130. package/dist/icons/Loading.d.ts +1 -2
  131. package/dist/icons/Locked.d.mts +1 -2
  132. package/dist/icons/Locked.d.ts +1 -2
  133. package/dist/icons/Logs.d.mts +1 -2
  134. package/dist/icons/Logs.d.ts +1 -2
  135. package/dist/icons/Mentor.d.mts +1 -2
  136. package/dist/icons/Mentor.d.ts +1 -2
  137. package/dist/icons/Metamask.d.mts +1 -2
  138. package/dist/icons/Metamask.d.ts +1 -2
  139. package/dist/icons/Minimize.d.mts +1 -2
  140. package/dist/icons/Minimize.d.ts +1 -2
  141. package/dist/icons/Modular.d.mts +1 -2
  142. package/dist/icons/Modular.d.ts +1 -2
  143. package/dist/icons/NFT.d.mts +1 -2
  144. package/dist/icons/NFT.d.ts +1 -2
  145. package/dist/icons/Online.d.mts +1 -2
  146. package/dist/icons/Online.d.ts +1 -2
  147. package/dist/icons/Password.d.mts +1 -2
  148. package/dist/icons/Password.d.ts +1 -2
  149. package/dist/icons/Path.d.mts +1 -2
  150. package/dist/icons/Path.d.ts +1 -2
  151. package/dist/icons/Perks.d.mts +1 -2
  152. package/dist/icons/Perks.d.ts +1 -2
  153. package/dist/icons/Phantom.d.mts +1 -2
  154. package/dist/icons/Phantom.d.ts +1 -2
  155. package/dist/icons/Play.d.mts +1 -2
  156. package/dist/icons/Play.d.ts +1 -2
  157. package/dist/icons/Product.d.mts +1 -2
  158. package/dist/icons/Product.d.ts +1 -2
  159. package/dist/icons/Progress.d.mts +1 -2
  160. package/dist/icons/Progress.d.ts +1 -2
  161. package/dist/icons/Protocol.d.mts +1 -2
  162. package/dist/icons/Protocol.d.ts +1 -2
  163. package/dist/icons/Refresh.d.mts +1 -2
  164. package/dist/icons/Refresh.d.ts +1 -2
  165. package/dist/icons/Rewards.d.mts +1 -2
  166. package/dist/icons/Rewards.d.ts +1 -2
  167. package/dist/icons/Rust.d.mts +1 -2
  168. package/dist/icons/Rust.d.ts +1 -2
  169. package/dist/icons/Search.d.mts +1 -2
  170. package/dist/icons/Search.d.ts +1 -2
  171. package/dist/icons/SmartContract.d.mts +1 -2
  172. package/dist/icons/SmartContract.d.ts +1 -2
  173. package/dist/icons/Solana.d.mts +1 -2
  174. package/dist/icons/Solana.d.ts +1 -2
  175. package/dist/icons/Solflare.d.mts +1 -2
  176. package/dist/icons/Solflare.d.ts +1 -2
  177. package/dist/icons/Success.d.mts +1 -2
  178. package/dist/icons/Success.d.ts +1 -2
  179. package/dist/icons/SuccessCircle.d.mts +1 -2
  180. package/dist/icons/SuccessCircle.d.ts +1 -2
  181. package/dist/icons/Table.d.mts +1 -2
  182. package/dist/icons/Table.d.ts +1 -2
  183. package/dist/icons/Target.d.mts +1 -2
  184. package/dist/icons/Target.d.ts +1 -2
  185. package/dist/icons/Training.d.mts +1 -2
  186. package/dist/icons/Training.d.ts +1 -2
  187. package/dist/icons/Typescript.d.mts +1 -2
  188. package/dist/icons/Typescript.d.ts +1 -2
  189. package/dist/icons/Unclaimed.d.mts +1 -2
  190. package/dist/icons/Unclaimed.d.ts +1 -2
  191. package/dist/icons/Upload.d.mts +1 -2
  192. package/dist/icons/Upload.d.ts +1 -2
  193. package/dist/icons/User.d.mts +1 -2
  194. package/dist/icons/User.d.ts +1 -2
  195. package/dist/icons/Wallet.d.mts +1 -2
  196. package/dist/icons/Wallet.d.ts +1 -2
  197. package/dist/icons/WalletSmall.d.mts +1 -2
  198. package/dist/icons/WalletSmall.d.ts +1 -2
  199. package/dist/icons/Warning.d.mts +1 -2
  200. package/dist/icons/Warning.d.ts +1 -2
  201. package/dist/icons/X.d.mts +1 -2
  202. package/dist/icons/X.d.ts +1 -2
  203. package/dist/icons/index.d.mts +1 -2
  204. package/dist/icons/index.d.ts +1 -2
  205. package/dist/icons/index.js +0 -2
  206. package/dist/icons/index.js.map +1 -1
  207. package/dist/icons/index.mjs +0 -2
  208. package/dist/icons/index.mjs.map +1 -1
  209. package/dist/index.d.mts +3 -1
  210. package/dist/index.d.ts +3 -1
  211. package/dist/index.js +5 -0
  212. package/dist/index.mjs +1 -0
  213. package/package.json +1 -1
  214. package/dist/icons/Difficulty.d.mts +0 -3
  215. package/dist/icons/Difficulty.d.ts +0 -3
  216. package/dist/icons/Difficulty.js.map +0 -1
  217. 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-DZiidxwK.mjs';
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-CwFBZAPq.js';
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-DZiidxwK.mjs';
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-CwFBZAPq.js';
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-DZiidxwK.mjs';
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-CwFBZAPq.js';
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(icon.className, "flex-shrink-0 text-current"),
60
- size: icon.size || 14,
61
- difficulties: icon.difficulties
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(icon.className, "flex-shrink-0 text-current"),
70
- size: icon.size || 14,
71
- difficulties: icon.difficulties
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":";;;;;;;;;;;;;AAmBO,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,IAAA,IAAQ,aAAA;AAAA,QAC5C,YAAA,KAAiB,OAAA,IAAW,KAAA,IAAS,IAAA,IAAQ,aAAA;AAAA,QAC7C,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,UANpB,IAAA,EAAM;AAAA,SAOb,EACF,CAAA;AAAA,QACC,IAAA,IAAQ,iBAAiB,MAAA,oBACxBC,cAAA;AAAA,UAACE,SAAA;AAAA,UAAA;AAAA,YACC,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,SAAA,EAAWH,2BAAA,CAAW,IAAA,CAAK,SAAA,EAAW,4BAA4B,CAAA;AAAA,YAClE,IAAA,EAAM,KAAK,IAAA,IAAQ,EAAA;AAAA,YACnB,cAAc,IAAA,CAAK;AAAA;AAAA,SACrB;AAAA,QAED,KAAA,oBAASC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QAC5C,IAAA,IAAQ,iBAAiB,OAAA,oBACxBA,cAAA;AAAA,UAACE,SAAA;AAAA,UAAA;AAAA,YACC,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,SAAA,EAAWH,2BAAA,CAAW,IAAA,CAAK,SAAA,EAAW,4BAA4B,CAAA;AAAA,YAClE,IAAA,EAAM,KAAK,IAAA,IAAQ,EAAA;AAAA,YACnB,cAAc,IAAA,CAAK;AAAA;AAAA;AACrB;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\";\n\nexport type BadgeProps = {\n className?: string;\n label?: string;\n variant?: BrandColour;\n icon?: IconProps;\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={icon?.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 <Icon\n name={icon.name}\n className={classNames(icon.className, \"flex-shrink-0 text-current\")}\n size={icon.size || 14}\n difficulties={icon.difficulties}\n />\n )}\n {label && <span className=\"font-mono\">{label}</span>}\n {icon && iconPosition === \"right\" && (\n <Icon\n name={icon.name}\n className={classNames(icon.className, \"flex-shrink-0 text-current\")}\n size={icon.size || 14}\n difficulties={icon.difficulties}\n />\n )}\n </motion.div>\n );\n};\n"]}
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(icon.className, "flex-shrink-0 text-current"),
54
- size: icon.size || 14,
55
- difficulties: icon.difficulties
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(icon.className, "flex-shrink-0 text-current"),
64
- size: icon.size || 14,
65
- difficulties: icon.difficulties
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
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Badge.tsx"],"names":[],"mappings":";;;;;;;AAmBO,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,IAAA,IAAQ,aAAA;AAAA,QAC5C,YAAA,KAAiB,OAAA,IAAW,KAAA,IAAS,IAAA,IAAQ,aAAA;AAAA,QAC7C,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,IAAA,EAAM;AAAA,SAOb,EACF,CAAA;AAAA,QACC,IAAA,IAAQ,iBAAiB,MAAA,oBACxB,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,SAAA,EAAW,UAAA,CAAW,IAAA,CAAK,SAAA,EAAW,4BAA4B,CAAA;AAAA,YAClE,IAAA,EAAM,KAAK,IAAA,IAAQ,EAAA;AAAA,YACnB,cAAc,IAAA,CAAK;AAAA;AAAA,SACrB;AAAA,QAED,KAAA,oBAAS,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,QAC5C,IAAA,IAAQ,iBAAiB,OAAA,oBACxB,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YACC,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,SAAA,EAAW,UAAA,CAAW,IAAA,CAAK,SAAA,EAAW,4BAA4B,CAAA;AAAA,YAClE,IAAA,EAAM,KAAK,IAAA,IAAQ,EAAA;AAAA,YACnB,cAAc,IAAA,CAAK;AAAA;AAAA;AACrB;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\";\n\nexport type BadgeProps = {\n className?: string;\n label?: string;\n variant?: BrandColour;\n icon?: IconProps;\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={icon?.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 <Icon\n name={icon.name}\n className={classNames(icon.className, \"flex-shrink-0 text-current\")}\n size={icon.size || 14}\n difficulties={icon.difficulties}\n />\n )}\n {label && <span className=\"font-mono\">{label}</span>}\n {icon && iconPosition === \"right\" && (\n <Icon\n name={icon.name}\n className={classNames(icon.className, \"flex-shrink-0 text-current\")}\n size={icon.size || 14}\n difficulties={icon.difficulties}\n />\n )}\n </motion.div>\n );\n};\n"]}
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-DZiidxwK.mjs';
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-CwFBZAPq.js';
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 { courseDifficulty } from './utils/colours.mjs';
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
- difficulties?: Array<keyof typeof courseDifficulty>;
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 { courseDifficulty } from './utils/colours.js';
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
- difficulties?: Array<keyof typeof courseDifficulty>;
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: loading ? "Loading" : icon.name,
111
- className: classNames__default.default(icon.className, "flex-shrink-0"),
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
  );
@@ -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: loading ? "Loading" : icon.name,
104
- className: classNames(icon.className, "flex-shrink-0"),
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
  );
@@ -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"]}