@gearbox-protocol/permissionless-ui 1.9.3 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/cjs/components/auth/connect-required.cjs +38 -0
  2. package/dist/cjs/components/auth/index.cjs +2 -0
  3. package/dist/cjs/components/buttons/button/button.cjs +1 -1
  4. package/dist/cjs/components/buttons/navigation-button/navigation-button.cjs +1 -1
  5. package/dist/cjs/components/buttons/range-buttons/range-buttons.cjs +1 -0
  6. package/dist/cjs/components/dialog/dialog-content.cjs +1 -1
  7. package/dist/cjs/components/dropdown-menu/dropdown-menu-checkbox-item.cjs +1 -1
  8. package/dist/cjs/components/dropdown-menu/dropdown-menu-item.cjs +1 -1
  9. package/dist/cjs/components/dropdown-menu/dropdown-menu-radio-item.cjs +1 -1
  10. package/dist/cjs/components/filter/filter-checkbox-item.cjs +1 -1
  11. package/dist/cjs/components/filter/filter-dropdown-item.cjs +1 -1
  12. package/dist/cjs/components/filter/filter-modal-item.cjs +1 -1
  13. package/dist/cjs/components/filter/filter-radio-item.cjs +1 -1
  14. package/dist/cjs/components/index.cjs +2 -0
  15. package/dist/cjs/components/input/input.cjs +1 -1
  16. package/dist/cjs/components/navitem/navitem.cjs +5 -5
  17. package/dist/cjs/components/select/select.cjs +1 -1
  18. package/dist/cjs/components/tab-control/tab-control.cjs +1 -1
  19. package/dist/cjs/components/table/editable-grid-table.cjs +3 -2
  20. package/dist/cjs/components/table/editable-table.cjs +3 -2
  21. package/dist/cjs/components/tabs/tabs.cjs +1 -1
  22. package/dist/cjs/index.cjs +2 -0
  23. package/dist/esm/components/auth/connect-required.js +34 -0
  24. package/dist/esm/components/auth/index.js +1 -0
  25. package/dist/esm/components/buttons/button/button.js +1 -1
  26. package/dist/esm/components/buttons/navigation-button/navigation-button.js +1 -1
  27. package/dist/esm/components/buttons/range-buttons/range-buttons.js +1 -0
  28. package/dist/esm/components/dialog/dialog-content.js +1 -1
  29. package/dist/esm/components/dropdown-menu/dropdown-menu-checkbox-item.js +1 -1
  30. package/dist/esm/components/dropdown-menu/dropdown-menu-item.js +1 -1
  31. package/dist/esm/components/dropdown-menu/dropdown-menu-radio-item.js +1 -1
  32. package/dist/esm/components/filter/filter-checkbox-item.js +1 -1
  33. package/dist/esm/components/filter/filter-dropdown-item.js +1 -1
  34. package/dist/esm/components/filter/filter-modal-item.js +1 -1
  35. package/dist/esm/components/filter/filter-radio-item.js +1 -1
  36. package/dist/esm/components/index.js +1 -0
  37. package/dist/esm/components/input/input.js +1 -1
  38. package/dist/esm/components/navitem/navitem.js +5 -5
  39. package/dist/esm/components/select/select.js +1 -1
  40. package/dist/esm/components/tab-control/tab-control.js +1 -1
  41. package/dist/esm/components/table/editable-grid-table.js +3 -2
  42. package/dist/esm/components/table/editable-table.js +3 -2
  43. package/dist/esm/components/tabs/tabs.js +1 -1
  44. package/dist/esm/index.js +1 -0
  45. package/dist/types/components/auth/connect-required.d.ts +32 -0
  46. package/dist/types/components/auth/index.d.ts +1 -0
  47. package/package.json +1 -1
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const jsxRuntime = require('react/jsx-runtime');
6
+ const connectkit = require('connectkit');
7
+ const wagmi = require('wagmi');
8
+ require('../buttons/back-button/back-button.cjs');
9
+ const components_buttons_button_button = require('../buttons/button/button.cjs');
10
+ require('../buttons/copy-button/copy-button.cjs');
11
+ require('../buttons/external-button/external-button.cjs');
12
+ require('../buttons/filter-button/filter-button.cjs');
13
+ require('../buttons/navigation-button/navigation-button.cjs');
14
+ require('react');
15
+ require('clsx');
16
+ require('tailwind-merge');
17
+ require('sonner');
18
+ require('@gearbox-protocol/sdk');
19
+ const components_buttons_tabButton_tabButton = require('../buttons/tab-button/tab-button.cjs');
20
+
21
+ function ConnectRequired({
22
+ children,
23
+ owner,
24
+ ...customProps
25
+ }) {
26
+ const { setOpen } = connectkit.useModal();
27
+ const { isConnected, address } = wagmi.useAccount();
28
+ const ButtonComponent = Object.keys(customProps).length > 0 ? components_buttons_button_button.Button : components_buttons_tabButton_tabButton.TabButton;
29
+ if (isConnected && address) {
30
+ if (owner && address?.toLowerCase() !== owner.toLowerCase()) {
31
+ return /* @__PURE__ */ jsxRuntime.jsx(ButtonComponent, { ...customProps, disabled: true, children: "You are not the author" });
32
+ }
33
+ return children;
34
+ }
35
+ return /* @__PURE__ */ jsxRuntime.jsx(ButtonComponent, { ...customProps, onClick: () => setOpen(true), children: "Connect Wallet" });
36
+ }
37
+
38
+ exports.ConnectRequired = ConnectRequired;
@@ -2,10 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
+ const components_auth_connectRequired = require('./connect-required.cjs');
5
6
  const components_auth_signinRequired = require('./signin-required.cjs');
6
7
  const components_auth_siweProvider = require('./siwe-provider.cjs');
7
8
 
8
9
 
9
10
 
11
+ exports.ConnectRequired = components_auth_connectRequired.ConnectRequired;
10
12
  exports.SignInRequired = components_auth_signinRequired.SignInRequired;
11
13
  exports.SIWEClientProvider = components_auth_siweProvider.SIWEClientProvider;
@@ -30,7 +30,7 @@ function _interopNamespaceDefault(e) {
30
30
  const React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
31
31
 
32
32
  const buttonVariants = classVarianceAuthority.cva(
33
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors cursor-pointer disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([style*='width']):not([style*='height'])]:size-4 [&_svg]:shrink-0 border border-transparent outline-none focus-visible:outline-none",
33
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([style*='width']):not([style*='height'])]:size-4 [&_svg]:shrink-0 border border-transparent outline-none focus-visible:outline-none",
34
34
  {
35
35
  variants: {
36
36
  variant: {
@@ -16,7 +16,7 @@ const NavigationButton = React.forwardRef(({ href, text, isActive, ...props }, r
16
16
  href,
17
17
  ref,
18
18
  className: utils_cn.cn(
19
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 relative",
19
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 relative",
20
20
  "text-decoration-none text-foreground hover:text-foreground hover:bg-secondary px-4 py-2",
21
21
  isActive ? "bg-secondary md:bg-transparent text-foreground" : ""
22
22
  ),
@@ -24,6 +24,7 @@ function RangeButtons({
24
24
  "text-xs leading-[14px] font-medium text-center",
25
25
  "rounded-md border cursor-pointer transition-colors",
26
26
  "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
27
+ "disabled:cursor-not-allowed disabled:opacity-50",
27
28
  r.value === range ? "bg-secondary border-secondary text-secondary-foreground" : "bg-muted border-muted text-muted-foreground hover:border-secondary",
28
29
  index < rangeList.length - 1 && "mr-1.5"
29
30
  ),
@@ -45,7 +45,7 @@ const DialogContent = React__namespace.forwardRef(({ className, children, ...pro
45
45
  ...props,
46
46
  children: [
47
47
  children,
48
- /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground cursor-pointer hover:text-foreground", children: [
48
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none disabled:cursor-not-allowed disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground cursor-pointer hover:text-foreground", children: [
49
49
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
50
50
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
51
51
  ] })
@@ -36,7 +36,7 @@ const DropdownMenuCheckboxItem = React__namespace.forwardRef(
36
36
  {
37
37
  ref,
38
38
  className: utils_cn.cn(
39
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:text-foreground hover:bg-secondary focus-visible:outline-none focus:bg-secondary focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
39
+ "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:text-foreground hover:bg-secondary focus-visible:outline-none focus:bg-secondary focus:text-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
40
40
  className
41
41
  ),
42
42
  checked,
@@ -34,7 +34,7 @@ const DropdownMenuItem = React__namespace.forwardRef(({ className, inset, ...pro
34
34
  {
35
35
  ref,
36
36
  className: utils_cn.cn(
37
- "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:text-foreground hover:bg-secondary focus-visible:outline-none focus:bg-secondary focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
37
+ "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:text-foreground hover:bg-secondary focus-visible:outline-none focus:bg-secondary focus:text-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
38
38
  inset && "pl-8",
39
39
  className
40
40
  ),
@@ -35,7 +35,7 @@ const DropdownMenuRadioItem = React__namespace.forwardRef(({ className, children
35
35
  {
36
36
  ref,
37
37
  className: utils_cn.cn(
38
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
38
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
39
39
  className
40
40
  ),
41
41
  ...props,
@@ -35,7 +35,7 @@ const FilterCheckboxItem = React__namespace.forwardRef(({ className, children, c
35
35
  {
36
36
  ref,
37
37
  className: utils_cn.cn(
38
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
38
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
39
39
  className
40
40
  ),
41
41
  checked,
@@ -34,7 +34,7 @@ const FilterDropdownItem = React__namespace.forwardRef(({ className, inset, ...p
34
34
  {
35
35
  ref,
36
36
  className: utils_cn.cn(
37
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
37
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
38
38
  inset && "pl-8",
39
39
  className
40
40
  ),
@@ -35,7 +35,7 @@ const FilterModalItem = React__namespace.forwardRef(({ className, active, disabl
35
35
  "flex cursor-pointer select-none items-center gap-2 rounded-sm px-3 py-2 text-sm outline-none transition-colors",
36
36
  "hover:bg-accent hover:text-accent-foreground",
37
37
  active && "bg-accent text-accent-foreground",
38
- disabled && "pointer-events-none opacity-50",
38
+ disabled && "cursor-not-allowed pointer-events-none opacity-50",
39
39
  className
40
40
  ),
41
41
  ...props
@@ -35,7 +35,7 @@ const FilterRadioItem = React__namespace.forwardRef(({ className, children, ...p
35
35
  {
36
36
  ref,
37
37
  className: utils_cn.cn(
38
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
38
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
39
39
  className
40
40
  ),
41
41
  ...props,
@@ -6,6 +6,7 @@ const components_alertDialog_alertDialog = require('./alert-dialog/alert-dialog.
6
6
  const components_assetLine_assetLine = require('./asset-line/asset-line.cjs');
7
7
  const components_assetsListCell_assetsListCell = require('./assets-list-cell/assets-list-cell.cjs');
8
8
  const components_assetsRatio_assetsRatio = require('./assets-ratio/assets-ratio.cjs');
9
+ const components_auth_connectRequired = require('./auth/connect-required.cjs');
9
10
  const components_auth_signinRequired = require('./auth/signin-required.cjs');
10
11
  const components_auth_siweProvider = require('./auth/siwe-provider.cjs');
11
12
  const components_badge_badge = require('./badge/badge.cjs');
@@ -152,6 +153,7 @@ exports.AlertDialogTrigger = components_alertDialog_alertDialog.AlertDialogTrigg
152
153
  exports.AssetLine = components_assetLine_assetLine.AssetLine;
153
154
  exports.AssetsListCell = components_assetsListCell_assetsListCell.AssetsListCell;
154
155
  exports.AssetsRatio = components_assetsRatio_assetsRatio.AssetsRatio;
156
+ exports.ConnectRequired = components_auth_connectRequired.ConnectRequired;
155
157
  exports.SignInRequired = components_auth_signinRequired.SignInRequired;
156
158
  exports.SIWEClientProvider = components_auth_siweProvider.SIWEClientProvider;
157
159
  exports.Badge = components_badge_badge.Badge;
@@ -10,7 +10,7 @@ require('sonner');
10
10
  require('@gearbox-protocol/sdk');
11
11
 
12
12
  const inputVariants = classVarianceAuthority.cva(
13
- "flex w-full rounded-md border border-input px-3 py-1 shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground/70 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm bg-[rgb(40,40,40)] text-foreground border-[rgb(100,100,100)] focus:bg-[rgb(40,40,40)] active:bg-[rgb(40,40,40)] [&:not(:placeholder-shown)]:bg-[rgb(40,40,40)] autofill:bg-[rgb(40,40,40)] [-webkit-autofill]:bg-[rgb(40,40,40)] [&:-webkit-autofill]:shadow-[0_0_0_1000px_rgb(40,40,40)_inset] [&:-webkit-autofill]:[text-fill-color:currentColor] outline-none",
13
+ "flex w-full rounded-md border border-input px-3 py-1 shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground/70 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm bg-[rgb(40,40,40)] text-foreground border-[rgb(100,100,100)] focus:bg-[rgb(40,40,40)] active:bg-[rgb(40,40,40)] [&:not(:placeholder-shown)]:bg-[rgb(40,40,40)] autofill:bg-[rgb(40,40,40)] [-webkit-autofill]:bg-[rgb(40,40,40)] [&:-webkit-autofill]:shadow-[0_0_0_1000px_rgb(40,40,40)_inset] [&:-webkit-autofill]:[text-fill-color:currentColor] outline-none [&::-webkit-search-cancel-button]:cursor-pointer",
14
14
  {
15
15
  variants: {
16
16
  size: {
@@ -31,15 +31,15 @@ function _interopNamespaceDefault(e) {
31
31
  const React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
32
32
 
33
33
  const navitemVariants = classVarianceAuthority.cva(
34
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 relative",
34
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 relative",
35
35
  {
36
36
  variants: {
37
37
  variant: {
38
- default: "text-decoration-none text-foreground hover:text-foreground hover:bg-secondary data-[active=true]:bg-transparent md:data-[active=true]:bg-transparent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-secondary",
39
- active: "text-foreground bg-transparent md:bg-secondary active:bg-transparent focus:bg-transparent md:active:bg-secondary md:focus:bg-secondary",
40
- ghost: "text-decoration-none text-muted-foreground hover:text-foreground hover:bg-secondary data-[active=true]:bg-transparent md:data-[active=true]:bg-transparent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-secondary",
38
+ default: "text-decoration-none text-foreground hover:text-foreground hover:bg-secondary data-[active=true]:bg-secondary md:data-[active=true]:bg-transparent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-secondary",
39
+ active: "text-foreground bg-secondary md:bg-transparent active:bg-transparent focus:bg-transparent md:active:bg-secondary md:focus:bg-secondary",
40
+ ghost: "text-decoration-none text-muted-foreground hover:text-foreground hover:bg-secondary data-[active=true]:bg-secondary md:data-[active=true]:bg-transparent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-secondary",
41
41
  link: "text-decoration-none text-muted-foreground hover:text-foreground underline-offset-4 hover:underline data-[active=true]:text-foreground data-[active=true]:underline active:bg-transparent focus:bg-transparent",
42
- pill: "text-decoration-none text-muted-foreground hover:text-foreground hover:bg-accent rounded-full data-[active=true]:bg-transparent md:data-[active=true]:bg-accent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-accent",
42
+ pill: "text-decoration-none text-muted-foreground hover:text-foreground hover:bg-accent rounded-full data-[active=true]:bg-secondary md:data-[active=true]:bg-accent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-accent",
43
43
  tab: "text-decoration-none text-muted-foreground hover:text-foreground border-b-2 border-transparent hover:border-border data-[active=true]:border-primary data-[active=true]:text-foreground rounded-none active:bg-transparent focus:bg-transparent"
44
44
  },
45
45
  size: {
@@ -136,7 +136,7 @@ const SelectItem = React__namespace.forwardRef(({ className, children, ...props
136
136
  {
137
137
  ref,
138
138
  className: utils_cn.cn(
139
- "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none hover:bg-secondary focus:bg-secondary data-[disabled]:pointer-events-none data-[disabled]:opacity-50 bg-transparent text-foreground border-[rgb(100,100,100)] cursor-pointer",
139
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none hover:bg-secondary focus:bg-secondary data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50 bg-transparent text-foreground border-[rgb(100,100,100)] cursor-pointer",
140
140
  className
141
141
  ),
142
142
  ...props,
@@ -106,7 +106,7 @@ function TabControl({
106
106
  "flex items-center bg-transparent border-none shrink-0",
107
107
  tabItemWrapPadding || "pb-3.5",
108
108
  variant === "equal" ? "flex-1 justify-center min-w-0" : !isLast && "mr-10 sm:mr-8",
109
- s || t.disabled ? "cursor-default" : "cursor-pointer",
109
+ s ? "cursor-default" : t.disabled ? "cursor-not-allowed" : "cursor-pointer",
110
110
  !t.disabled && "hover:text-foreground"
111
111
  ),
112
112
  style: tabItemWrapPadding ? { padding: tabItemWrapPadding } : void 0,
@@ -4,9 +4,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
- const components_auth_signinRequired = require('../auth/signin-required.cjs');
8
7
  require('connectkit');
9
- require('viem/siwe');
8
+ require('wagmi');
10
9
  require('../buttons/back-button/back-button.cjs');
11
10
  const components_buttons_button_button = require('../buttons/button/button.cjs');
12
11
  require('../buttons/copy-button/copy-button.cjs');
@@ -19,6 +18,8 @@ require('tailwind-merge');
19
18
  require('sonner');
20
19
  require('@gearbox-protocol/sdk');
21
20
  const components_buttons_tabButton_tabButton = require('../buttons/tab-button/tab-button.cjs');
21
+ const components_auth_signinRequired = require('../auth/signin-required.cjs');
22
+ require('viem/siwe');
22
23
  const components_tokenIcon_tokenIcon = require('../token-icon/token-icon.cjs');
23
24
  const components_table_gridTable = require('./grid-table.cjs');
24
25
  const components_table_updatedValue = require('./updated-value.cjs');
@@ -3,9 +3,8 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
- const components_auth_signinRequired = require('../auth/signin-required.cjs');
7
6
  require('connectkit');
8
- require('viem/siwe');
7
+ require('wagmi');
9
8
  require('../buttons/back-button/back-button.cjs');
10
9
  require('../buttons/button/button.cjs');
11
10
  require('../buttons/copy-button/copy-button.cjs');
@@ -18,6 +17,8 @@ require('tailwind-merge');
18
17
  require('sonner');
19
18
  require('@gearbox-protocol/sdk');
20
19
  const components_buttons_tabButton_tabButton = require('../buttons/tab-button/tab-button.cjs');
20
+ const components_auth_signinRequired = require('../auth/signin-required.cjs');
21
+ require('viem/siwe');
21
22
  const components_tokenIcon_tokenIcon = require('../token-icon/token-icon.cjs');
22
23
  const components_table_table = require('./table.cjs');
23
24
  const components_table_updatedValue = require('./updated-value.cjs');
@@ -47,7 +47,7 @@ const TabsTrigger = React__namespace.forwardRef(({ className, ...props }, ref) =
47
47
  {
48
48
  ref,
49
49
  className: utils_cn.cn(
50
- "inline-flex items-center justify-center whitespace-nowrap px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow rounded-none border-b-2 border-transparent px-2 py-2 text-gray-400 hover:text-foreground data-[state=active]:border-foreground data-[state=active]:bg-transparent data-[state=active]:text-foreground focus:outline-none cursor-pointer shrink-0",
50
+ "inline-flex items-center justify-center whitespace-nowrap px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow rounded-none border-b-2 border-transparent px-2 py-2 text-gray-400 hover:text-foreground data-[state=active]:border-foreground data-[state=active]:bg-transparent data-[state=active]:text-foreground focus:outline-none cursor-pointer shrink-0",
51
51
  className
52
52
  ),
53
53
  ...props
@@ -6,6 +6,7 @@ const components_alertDialog_alertDialog = require('./components/alert-dialog/al
6
6
  const components_assetLine_assetLine = require('./components/asset-line/asset-line.cjs');
7
7
  const components_assetsListCell_assetsListCell = require('./components/assets-list-cell/assets-list-cell.cjs');
8
8
  const components_assetsRatio_assetsRatio = require('./components/assets-ratio/assets-ratio.cjs');
9
+ const components_auth_connectRequired = require('./components/auth/connect-required.cjs');
9
10
  const components_auth_signinRequired = require('./components/auth/signin-required.cjs');
10
11
  const components_auth_siweProvider = require('./components/auth/siwe-provider.cjs');
11
12
  const components_badge_badge = require('./components/badge/badge.cjs');
@@ -172,6 +173,7 @@ exports.AlertDialogTrigger = components_alertDialog_alertDialog.AlertDialogTrigg
172
173
  exports.AssetLine = components_assetLine_assetLine.AssetLine;
173
174
  exports.AssetsListCell = components_assetsListCell_assetsListCell.AssetsListCell;
174
175
  exports.AssetsRatio = components_assetsRatio_assetsRatio.AssetsRatio;
176
+ exports.ConnectRequired = components_auth_connectRequired.ConnectRequired;
175
177
  exports.SignInRequired = components_auth_signinRequired.SignInRequired;
176
178
  exports.SIWEClientProvider = components_auth_siweProvider.SIWEClientProvider;
177
179
  exports.Badge = components_badge_badge.Badge;
@@ -0,0 +1,34 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useModal } from 'connectkit';
3
+ import { useAccount } from 'wagmi';
4
+ import '../buttons/back-button/back-button.js';
5
+ import { Button } from '../buttons/button/button.js';
6
+ import '../buttons/copy-button/copy-button.js';
7
+ import '../buttons/external-button/external-button.js';
8
+ import '../buttons/filter-button/filter-button.js';
9
+ import '../buttons/navigation-button/navigation-button.js';
10
+ import 'react';
11
+ import 'clsx';
12
+ import 'tailwind-merge';
13
+ import 'sonner';
14
+ import '@gearbox-protocol/sdk';
15
+ import { TabButton } from '../buttons/tab-button/tab-button.js';
16
+
17
+ function ConnectRequired({
18
+ children,
19
+ owner,
20
+ ...customProps
21
+ }) {
22
+ const { setOpen } = useModal();
23
+ const { isConnected, address } = useAccount();
24
+ const ButtonComponent = Object.keys(customProps).length > 0 ? Button : TabButton;
25
+ if (isConnected && address) {
26
+ if (owner && address?.toLowerCase() !== owner.toLowerCase()) {
27
+ return /* @__PURE__ */ jsx(ButtonComponent, { ...customProps, disabled: true, children: "You are not the author" });
28
+ }
29
+ return children;
30
+ }
31
+ return /* @__PURE__ */ jsx(ButtonComponent, { ...customProps, onClick: () => setOpen(true), children: "Connect Wallet" });
32
+ }
33
+
34
+ export { ConnectRequired };
@@ -1,2 +1,3 @@
1
+ export { ConnectRequired } from './connect-required.js';
1
2
  export { SignInRequired } from './signin-required.js';
2
3
  export { SIWEClientProvider } from './siwe-provider.js';
@@ -7,7 +7,7 @@ import 'sonner';
7
7
  import '@gearbox-protocol/sdk';
8
8
 
9
9
  const buttonVariants = cva(
10
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors cursor-pointer disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([style*='width']):not([style*='height'])]:size-4 [&_svg]:shrink-0 border border-transparent outline-none focus-visible:outline-none",
10
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors cursor-pointer disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([style*='width']):not([style*='height'])]:size-4 [&_svg]:shrink-0 border border-transparent outline-none focus-visible:outline-none",
11
11
  {
12
12
  variants: {
13
13
  variant: {
@@ -12,7 +12,7 @@ const NavigationButton = React__default.forwardRef(({ href, text, isActive, ...p
12
12
  href,
13
13
  ref,
14
14
  className: cn(
15
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 relative",
15
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 relative",
16
16
  "text-decoration-none text-foreground hover:text-foreground hover:bg-secondary px-4 py-2",
17
17
  isActive ? "bg-secondary md:bg-transparent text-foreground" : ""
18
18
  ),
@@ -20,6 +20,7 @@ function RangeButtons({
20
20
  "text-xs leading-[14px] font-medium text-center",
21
21
  "rounded-md border cursor-pointer transition-colors",
22
22
  "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
23
+ "disabled:cursor-not-allowed disabled:opacity-50",
23
24
  r.value === range ? "bg-secondary border-secondary text-secondary-foreground" : "bg-muted border-muted text-muted-foreground hover:border-secondary",
24
25
  index < rangeList.length - 1 && "mr-1.5"
25
26
  ),
@@ -21,7 +21,7 @@ const DialogContent = React.forwardRef(({ className, children, ...props }, ref)
21
21
  ...props,
22
22
  children: [
23
23
  children,
24
- /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground cursor-pointer hover:text-foreground", children: [
24
+ /* @__PURE__ */ jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none disabled:cursor-not-allowed disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground cursor-pointer hover:text-foreground", children: [
25
25
  /* @__PURE__ */ jsx(X, { className: "h-4 w-4" }),
26
26
  /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
27
27
  ] })
@@ -12,7 +12,7 @@ const DropdownMenuCheckboxItem = React.forwardRef(
12
12
  {
13
13
  ref,
14
14
  className: cn(
15
- "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:text-foreground hover:bg-secondary focus-visible:outline-none focus:bg-secondary focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
15
+ "relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors hover:text-foreground hover:bg-secondary focus-visible:outline-none focus:bg-secondary focus:text-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
16
16
  className
17
17
  ),
18
18
  checked,
@@ -10,7 +10,7 @@ const DropdownMenuItem = React.forwardRef(({ className, inset, ...props }, ref)
10
10
  {
11
11
  ref,
12
12
  className: cn(
13
- "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:text-foreground hover:bg-secondary focus-visible:outline-none focus:bg-secondary focus:text-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
13
+ "relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:text-foreground hover:bg-secondary focus-visible:outline-none focus:bg-secondary focus:text-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
14
14
  inset && "pl-8",
15
15
  className
16
16
  ),
@@ -11,7 +11,7 @@ const DropdownMenuRadioItem = React.forwardRef(({ className, children, ...props
11
11
  {
12
12
  ref,
13
13
  className: cn(
14
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
14
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
15
15
  className
16
16
  ),
17
17
  ...props,
@@ -11,7 +11,7 @@ const FilterCheckboxItem = React.forwardRef(({ className, children, checked, ...
11
11
  {
12
12
  ref,
13
13
  className: cn(
14
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
14
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
15
15
  className
16
16
  ),
17
17
  checked,
@@ -10,7 +10,7 @@ const FilterDropdownItem = React.forwardRef(({ className, inset, ...props }, ref
10
10
  {
11
11
  ref,
12
12
  className: cn(
13
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
13
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
14
14
  inset && "pl-8",
15
15
  className
16
16
  ),
@@ -12,7 +12,7 @@ const FilterModalItem = React.forwardRef(({ className, active, disabled, ...prop
12
12
  "flex cursor-pointer select-none items-center gap-2 rounded-sm px-3 py-2 text-sm outline-none transition-colors",
13
13
  "hover:bg-accent hover:text-accent-foreground",
14
14
  active && "bg-accent text-accent-foreground",
15
- disabled && "pointer-events-none opacity-50",
15
+ disabled && "cursor-not-allowed pointer-events-none opacity-50",
16
16
  className
17
17
  ),
18
18
  ...props
@@ -11,7 +11,7 @@ const FilterRadioItem = React.forwardRef(({ className, children, ...props }, ref
11
11
  {
12
12
  ref,
13
13
  className: cn(
14
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
14
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
15
15
  className
16
16
  ),
17
17
  ...props,
@@ -2,6 +2,7 @@ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent,
2
2
  export { AssetLine } from './asset-line/asset-line.js';
3
3
  export { AssetsListCell } from './assets-list-cell/assets-list-cell.js';
4
4
  export { AssetsRatio } from './assets-ratio/assets-ratio.js';
5
+ export { ConnectRequired } from './auth/connect-required.js';
5
6
  export { SignInRequired } from './auth/signin-required.js';
6
7
  export { SIWEClientProvider } from './auth/siwe-provider.js';
7
8
  export { Badge, badgeVariants } from './badge/badge.js';
@@ -6,7 +6,7 @@ import 'sonner';
6
6
  import '@gearbox-protocol/sdk';
7
7
 
8
8
  const inputVariants = cva(
9
- "flex w-full rounded-md border border-input px-3 py-1 shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground/70 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm bg-[rgb(40,40,40)] text-foreground border-[rgb(100,100,100)] focus:bg-[rgb(40,40,40)] active:bg-[rgb(40,40,40)] [&:not(:placeholder-shown)]:bg-[rgb(40,40,40)] autofill:bg-[rgb(40,40,40)] [-webkit-autofill]:bg-[rgb(40,40,40)] [&:-webkit-autofill]:shadow-[0_0_0_1000px_rgb(40,40,40)_inset] [&:-webkit-autofill]:[text-fill-color:currentColor] outline-none",
9
+ "flex w-full rounded-md border border-input px-3 py-1 shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground/70 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm bg-[rgb(40,40,40)] text-foreground border-[rgb(100,100,100)] focus:bg-[rgb(40,40,40)] active:bg-[rgb(40,40,40)] [&:not(:placeholder-shown)]:bg-[rgb(40,40,40)] autofill:bg-[rgb(40,40,40)] [-webkit-autofill]:bg-[rgb(40,40,40)] [&:-webkit-autofill]:shadow-[0_0_0_1000px_rgb(40,40,40)_inset] [&:-webkit-autofill]:[text-fill-color:currentColor] outline-none [&::-webkit-search-cancel-button]:cursor-pointer",
10
10
  {
11
11
  variants: {
12
12
  size: {
@@ -8,15 +8,15 @@ import 'sonner';
8
8
  import '@gearbox-protocol/sdk';
9
9
 
10
10
  const navitemVariants = cva(
11
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 relative",
11
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all cursor-pointer focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 relative",
12
12
  {
13
13
  variants: {
14
14
  variant: {
15
- default: "text-decoration-none text-foreground hover:text-foreground hover:bg-secondary data-[active=true]:bg-transparent md:data-[active=true]:bg-transparent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-secondary",
16
- active: "text-foreground bg-transparent md:bg-secondary active:bg-transparent focus:bg-transparent md:active:bg-secondary md:focus:bg-secondary",
17
- ghost: "text-decoration-none text-muted-foreground hover:text-foreground hover:bg-secondary data-[active=true]:bg-transparent md:data-[active=true]:bg-transparent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-secondary",
15
+ default: "text-decoration-none text-foreground hover:text-foreground hover:bg-secondary data-[active=true]:bg-secondary md:data-[active=true]:bg-transparent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-secondary",
16
+ active: "text-foreground bg-secondary md:bg-transparent active:bg-transparent focus:bg-transparent md:active:bg-secondary md:focus:bg-secondary",
17
+ ghost: "text-decoration-none text-muted-foreground hover:text-foreground hover:bg-secondary data-[active=true]:bg-secondary md:data-[active=true]:bg-transparent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-secondary",
18
18
  link: "text-decoration-none text-muted-foreground hover:text-foreground underline-offset-4 hover:underline data-[active=true]:text-foreground data-[active=true]:underline active:bg-transparent focus:bg-transparent",
19
- pill: "text-decoration-none text-muted-foreground hover:text-foreground hover:bg-accent rounded-full data-[active=true]:bg-transparent md:data-[active=true]:bg-accent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-accent",
19
+ pill: "text-decoration-none text-muted-foreground hover:text-foreground hover:bg-accent rounded-full data-[active=true]:bg-secondary md:data-[active=true]:bg-accent data-[active=true]:text-foreground active:bg-transparent focus:bg-transparent md:focus:bg-accent",
20
20
  tab: "text-decoration-none text-muted-foreground hover:text-foreground border-b-2 border-transparent hover:border-border data-[active=true]:border-primary data-[active=true]:text-foreground rounded-none active:bg-transparent focus:bg-transparent"
21
21
  },
22
22
  size: {
@@ -112,7 +112,7 @@ const SelectItem = React.forwardRef(({ className, children, ...props }, ref) =>
112
112
  {
113
113
  ref,
114
114
  className: cn(
115
- "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none hover:bg-secondary focus:bg-secondary data-[disabled]:pointer-events-none data-[disabled]:opacity-50 bg-transparent text-foreground border-[rgb(100,100,100)] cursor-pointer",
115
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none hover:bg-secondary focus:bg-secondary data-[disabled]:cursor-not-allowed data-[disabled]:pointer-events-none data-[disabled]:opacity-50 bg-transparent text-foreground border-[rgb(100,100,100)] cursor-pointer",
116
116
  className
117
117
  ),
118
118
  ...props,
@@ -102,7 +102,7 @@ function TabControl({
102
102
  "flex items-center bg-transparent border-none shrink-0",
103
103
  tabItemWrapPadding || "pb-3.5",
104
104
  variant === "equal" ? "flex-1 justify-center min-w-0" : !isLast && "mr-10 sm:mr-8",
105
- s || t.disabled ? "cursor-default" : "cursor-pointer",
105
+ s ? "cursor-default" : t.disabled ? "cursor-not-allowed" : "cursor-pointer",
106
106
  !t.disabled && "hover:text-foreground"
107
107
  ),
108
108
  style: tabItemWrapPadding ? { padding: tabItemWrapPadding } : void 0,
@@ -1,8 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { ExternalLink } from 'lucide-react';
3
- import { SignInRequired } from '../auth/signin-required.js';
4
3
  import 'connectkit';
5
- import 'viem/siwe';
4
+ import 'wagmi';
6
5
  import '../buttons/back-button/back-button.js';
7
6
  import { Button } from '../buttons/button/button.js';
8
7
  import '../buttons/copy-button/copy-button.js';
@@ -15,6 +14,8 @@ import 'tailwind-merge';
15
14
  import 'sonner';
16
15
  import '@gearbox-protocol/sdk';
17
16
  import { TabButton } from '../buttons/tab-button/tab-button.js';
17
+ import { SignInRequired } from '../auth/signin-required.js';
18
+ import 'viem/siwe';
18
19
  import { TokenIcon } from '../token-icon/token-icon.js';
19
20
  import { GridTableCell, GridTable } from './grid-table.js';
20
21
  import { UpdatedValue } from './updated-value.js';
@@ -1,7 +1,6 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { SignInRequired } from '../auth/signin-required.js';
3
2
  import 'connectkit';
4
- import 'viem/siwe';
3
+ import 'wagmi';
5
4
  import '../buttons/back-button/back-button.js';
6
5
  import '../buttons/button/button.js';
7
6
  import '../buttons/copy-button/copy-button.js';
@@ -14,6 +13,8 @@ import 'tailwind-merge';
14
13
  import 'sonner';
15
14
  import '@gearbox-protocol/sdk';
16
15
  import { TabButton } from '../buttons/tab-button/tab-button.js';
16
+ import { SignInRequired } from '../auth/signin-required.js';
17
+ import 'viem/siwe';
17
18
  import { TokenIcon } from '../token-icon/token-icon.js';
18
19
  import { TableCell, Table } from './table.js';
19
20
  import { UpdatedValue } from './updated-value.js';
@@ -23,7 +23,7 @@ const TabsTrigger = React.forwardRef(({ className, ...props }, ref) => /* @__PUR
23
23
  {
24
24
  ref,
25
25
  className: cn(
26
- "inline-flex items-center justify-center whitespace-nowrap px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow rounded-none border-b-2 border-transparent px-2 py-2 text-gray-400 hover:text-foreground data-[state=active]:border-foreground data-[state=active]:bg-transparent data-[state=active]:text-foreground focus:outline-none cursor-pointer shrink-0",
26
+ "inline-flex items-center justify-center whitespace-nowrap px-3 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow rounded-none border-b-2 border-transparent px-2 py-2 text-gray-400 hover:text-foreground data-[state=active]:border-foreground data-[state=active]:bg-transparent data-[state=active]:text-foreground focus:outline-none cursor-pointer shrink-0",
27
27
  className
28
28
  ),
29
29
  ...props
package/dist/esm/index.js CHANGED
@@ -2,6 +2,7 @@ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent,
2
2
  export { AssetLine } from './components/asset-line/asset-line.js';
3
3
  export { AssetsListCell } from './components/assets-list-cell/assets-list-cell.js';
4
4
  export { AssetsRatio } from './components/assets-ratio/assets-ratio.js';
5
+ export { ConnectRequired } from './components/auth/connect-required.js';
5
6
  export { SignInRequired } from './components/auth/signin-required.js';
6
7
  export { SIWEClientProvider } from './components/auth/siwe-provider.js';
7
8
  export { Badge, badgeVariants } from './components/badge/badge.js';
@@ -0,0 +1,32 @@
1
+ import { ReactNode } from '../../../node_modules/.pnpm/react@19.2.0/node_modules/react';
2
+ import { Address } from 'viem';
3
+ import { TabButtonProps } from '../buttons';
4
+ /**
5
+ * SignInRequired — component that requires SIWE authentication to display content.
6
+ *
7
+ * @usage
8
+ * Use SignInRequired to protect content that requires authentication:
9
+ * action buttons, editable content, owner-specific features, authenticated actions.
10
+ *
11
+ * Props:
12
+ * - `owner` — optional address that must match signed-in address to display content.
13
+ * - `children` — content displayed when authenticated (required).
14
+ * - All Button props are supported (variant, size, className, onClick, etc.).
15
+ *
16
+ * Behavior:
17
+ * - If user is connected: renders children (or "You are not the author" if owner mismatch).
18
+ * - If wallet connected but not signed in: shows "Sign In as {address}" button or "Try Again" if rejected.
19
+ * - If wallet not connected: shows "Connect Wallet" button.
20
+ *
21
+ * Note: Uses TabButton by default, but switches to Button if custom props are provided.
22
+ * Button text changes based on authentication state and loading status.
23
+ *
24
+ * Do NOT use SignInRequired:
25
+ * - for public content that doesn't require authentication (render content directly).
26
+ * - when you need different authentication flow (use appropriate authentication components).
27
+ */
28
+ export interface ConnectRequiredProps extends TabButtonProps {
29
+ owner?: Address;
30
+ children: ReactNode;
31
+ }
32
+ export declare function ConnectRequired({ children, owner, ...customProps }: ConnectRequiredProps): string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import('../../../node_modules/.pnpm/react@19.2.0/node_modules/react').ReactPortal | import('../../../node_modules/.pnpm/react@19.2.0/node_modules/react').ReactElement<unknown, string | import('../../../node_modules/.pnpm/react@19.2.0/node_modules/react').JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
@@ -1,2 +1,3 @@
1
+ export * from './connect-required';
1
2
  export * from './signin-required';
2
3
  export * from './siwe-provider';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/permissionless-ui",
3
- "version": "1.9.3",
3
+ "version": "1.10.0",
4
4
  "description": "Internal UI components",
5
5
  "license": "MIT",
6
6
  "main": "./dist/cjs/index.js",