Skip to content

Commit a9786eb

Browse files
committed
Changed component names. Added documentation.
1 parent 01552e9 commit a9786eb

File tree

9 files changed

+83
-32
lines changed

9 files changed

+83
-32
lines changed

README.md

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,62 @@
1-
# Mersui Widget (library)
1+
# MerSui
2+
Basically "Buy Me a Coffee" button with payments in SUI.
23

3-
## Local development
4+
## Installation
45

5-
To play with the library locally, run the following command:
6+
```bash
7+
pnpm add mersui || yarn add mersui || npm install mersui
8+
```
9+
10+
## Usage
11+
12+
Wrap your main app component with the `MersuiProvider` component.
13+
14+
```tsx
15+
import { MersuiProvider } from "mersui";
16+
17+
function App() {
18+
return (
19+
<MersuiProvider>
20+
<YourApp />
21+
</MersuiProvider>
22+
);
23+
}
24+
```
25+
26+
Then, use the `MersuiWidget` component to render the button.
27+
28+
```tsx
29+
import { MersuiWidget } from "mersui";
30+
31+
function App() {
32+
return (
33+
<div>
34+
<MersuiWidget recipientAddress="0x..." buttonLabel="Support" />
35+
</div>
36+
);
37+
}
38+
```
39+
40+
### Props
41+
42+
| Prop | Type | Default | Description |
43+
| ------------------- | -------- | ------- | ----------- |
44+
| buttonLabel | string | - | Button label |
45+
| recipientAddress | string | - | Sui address of the recipient |
46+
| containerClassName | string | - | Optional class name for the button container |
47+
| buttonClassName | string | - | Optional class name for the button |
48+
| statusClassName | string | - | Optional class name for the status message. The `status-success` and `status-error` classes are automatically added for your convinience. |
49+
50+
## Pyth Integration
51+
52+
MerSui uses Pyth's Sponsored Feed for SUI/USD to properly calculate the transaction amount in SUI.
53+
54+
## Development
55+
56+
The `src` folder contains a demo app that you can use to play with the library locally.
657

758
```bash
859
pnpm dev
960
```
1061

62+
The `lib` folder contains tsource code of the library.

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="UTF-8" />
55
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
7-
<title>Mersui Widget: Playground</title>
7+
<title>MerSui Widget: Playground</title>
88
</head>
99
<body>
1010
<div id="root"></div>
File renamed without changes.

lib/components/MersuiProvider.tsx renamed to lib/components/MerSuiProvider.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,17 @@ import "@mysten/dapp-kit/dist/index.css";
77
import { getFullnodeUrl } from "@mysten/sui/client";
88
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
99
import { FC, PropsWithChildren } from "react";
10-
import "./MersuiProvider.css";
10+
import "./MerSuiProvider.css";
1111

1212
const { networkConfig } = createNetworkConfig({
13-
localnet: { url: getFullnodeUrl('localnet') },
14-
devnet: { url: getFullnodeUrl('devnet') },
15-
testnet: { url: getFullnodeUrl('testnet') },
16-
mainnet: { url: getFullnodeUrl('mainnet') },
13+
localnet: { url: getFullnodeUrl("localnet") },
14+
devnet: { url: getFullnodeUrl("devnet") },
15+
testnet: { url: getFullnodeUrl("testnet") },
16+
mainnet: { url: getFullnodeUrl("mainnet") },
1717
});
1818
const queryClient = new QueryClient();
1919

20-
export const MersuiProvider: FC<PropsWithChildren> = ({ children }) => {
20+
export const MerSuiProvider: FC<PropsWithChildren> = ({ children }) => {
2121
return (
2222
<QueryClientProvider client={queryClient}>
2323
<SuiClientProvider networks={networkConfig} defaultNetwork="localnet">

lib/components/MersuiWidget.tsx renamed to lib/components/MerSuiWidget.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ import {
1919
TRANSACTION_AMOUNT_FALLBACK,
2020
} from "../constants";
2121

22-
interface IMersuiWidget {
22+
interface IMerSuiWidget {
2323
recipientAddress: string;
2424
buttonLabel?: string;
2525
containerClassName?: string;
2626
buttonClassName?: string;
2727
statusClassName?: string;
2828
}
2929

30-
export const MersuiWidget: FC<IMersuiWidget> = ({
30+
export const MerSuiWidget: FC<IMerSuiWidget> = ({
3131
recipientAddress,
3232
buttonLabel,
3333
containerClassName,
@@ -81,7 +81,7 @@ export const MersuiWidget: FC<IMersuiWidget> = ({
8181

8282
if (currentAccount) {
8383
return (
84-
<MersuiButton
84+
<MerSuiButton
8585
onClick={() => performTransaction()}
8686
connected={true}
8787
status={status}
@@ -90,27 +90,27 @@ export const MersuiWidget: FC<IMersuiWidget> = ({
9090
statusClassName={statusClassName}
9191
>
9292
{buttonLabel || DEFAULT_BUTTON_LABEL} ${AMOUNT_USD}
93-
</MersuiButton>
93+
</MerSuiButton>
9494
);
9595
}
9696

9797
return (
9898
<ConnectModal
9999
trigger={
100-
<MersuiButton
100+
<MerSuiButton
101101
disabled={!!currentAccount}
102102
containerClassName={containerClassName}
103103
buttonClassName={buttonClassName}
104104
statusClassName={statusClassName}
105105
>
106106
{buttonLabel || DEFAULT_BUTTON_LABEL} ${AMOUNT_USD}
107-
</MersuiButton>
107+
</MerSuiButton>
108108
}
109109
/>
110110
);
111111
};
112112

113-
interface IMersuiButton {
113+
interface IMerSuiButton {
114114
disabled?: boolean;
115115
onClick?: MouseEventHandler<HTMLButtonElement>;
116116
connected?: boolean;
@@ -120,7 +120,7 @@ interface IMersuiButton {
120120
statusClassName?: string;
121121
}
122122

123-
const MersuiButton: FC<PropsWithChildren<IMersuiButton>> = ({
123+
const MerSuiButton: FC<PropsWithChildren<IMerSuiButton>> = ({
124124
disabled,
125125
onClick,
126126
children,

lib/main.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export { MersuiProvider } from "./components/MersuiProvider";
2-
export { MersuiWidget } from "./components/MersuiWidget";
1+
export { MerSuiProvider } from "./components/MerSuiProvider";
2+
export { MerSuiWidget } from "./components/MerSuiWidget";

package.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
{
2-
"name": "mersui-widget",
3-
"private": true,
4-
"version": "0.0.0",
2+
"name": "mersui",
3+
"version": "0.1.0",
54
"type": "module",
65
"main": "dist/main.js",
76
"types": "dist/main.d.ts",

src/App.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { MersuiWidget } from "../lib/main";
1+
import { MerSuiWidget } from "../lib/main";
22
import "./App.css";
33

44
function App() {
55
return (
66
<>
7-
<h1 className="text-4xl">Mersui Widget</h1>
7+
<h1 className="text-4xl">MerSui Widget</h1>
88
<div className="card">
9-
<MersuiWidget
9+
<MerSuiWidget
1010
recipientAddress={import.meta.env.VITE_TARGET_ADDRESS}
1111
buttonLabel="Support"
1212
/>

src/main.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import { StrictMode } from 'react'
2-
import { createRoot } from 'react-dom/client'
3-
import { MersuiProvider } from "../lib/components/MersuiProvider.tsx";
4-
import App from './App.tsx'
1+
import { StrictMode } from "react";
2+
import { createRoot } from "react-dom/client";
3+
import { MerSuiProvider } from "../lib/components/MerSuiProvider.tsx";
4+
import App from "./App.tsx";
55
import "./index.css";
66

77
createRoot(document.getElementById("root")!).render(
88
<StrictMode>
9-
<MersuiProvider>
9+
<MerSuiProvider>
1010
<App />
11-
</MersuiProvider>
11+
</MerSuiProvider>
1212
</StrictMode>
1313
);

0 commit comments

Comments
 (0)