From 1933c588cae199d05a88d06d3c61ea67e132e805 Mon Sep 17 00:00:00 2001 From: Megha <100185149+Megha-Dev-19@users.noreply.github.com> Date: Thu, 16 Jan 2025 02:06:49 +0530 Subject: [PATCH 1/7] Setup widgets and bootstrap account (#214) (#217) Everything works fine on testing instances, so we can merge it for production instances --------- Co-authored-by: Andrew --- .../{dry-run.yml => production-dry-run.yml} | 6 +- ...e-instances.yml => release-production.yml} | 10 +- .github/workflows/release-staging.yml | 34 ++++ .github/workflows/staging-dry-run.yml | 29 +++ .../aliases.mainnet.json | 3 + .../bos.config.json | 6 + .../bootstrap.treasury-factory.near/data.json | 3 + instances/bootstrap.treasury-factory.near/src | 1 + .../widget/app.jsx | 108 +++++++++++ .../widget/config/data.jsx | 27 +++ .../aliases.mainnet.json | 3 + .../bos.config.json | 6 + .../data.json | 3 + .../test-bootstrap.treasury-factory.near/src | 1 + .../widget | 1 + .../aliases.mainnet.json | 14 ++ .../bos.config.json | 6 + .../data.json | 3 + .../test-widgets.treasury-factory.near/src | 1 + .../test-widgets.treasury-factory.near/widget | 1 + .../treasury-devdao.near/aliases.mainnet.json | 12 +- instances/treasury-devdao.near/widget/app.jsx | 22 +-- .../widget/config/css.jsx | 5 - .../widget/config/data.jsx | 2 +- .../aliases.mainnet.json | 4 +- .../aliases.mainnet.json | 2 +- .../treasury-infinex.near/widget/app.jsx | 22 +-- .../widget/config/css.jsx | 5 - .../widget/config/data.jsx | 2 +- .../aliases.mainnet.json | 2 +- .../treasury-templar.near/widget/app.jsx | 22 +-- .../widget/config/css.jsx | 5 - .../widget/config/data.jsx | 5 + .../aliases.mainnet.json | 2 +- .../widget/app.jsx | 22 +-- .../widget/config/css.jsx | 5 - .../widget/config/data.jsx | 2 +- .../aliases.mainnet.json | 2 +- .../treasury-testing.near/widget/app.jsx | 22 +-- .../widget/config/css.jsx | 5 - .../widget/config/data.jsx | 2 +- .../widgets.treasury-factory.near/.gitignore | 2 + .../aliases.mainnet.json | 14 ++ .../bos.config.json | 6 + .../widgets.treasury-factory.near/data.json | 3 + instances/widgets.treasury-factory.near/src | 1 + .../widget/app.jsx | 97 ++++++++++ .../widget/components/AccountInput.jsx | 0 .../widget/components/Approvers.jsx | 0 .../widget/components/BalanceBanner.jsx | 0 .../widget/components/Date.jsx | 0 .../widget/components/DropDown.jsx | 3 +- .../DropDownWithSearchAndManualRequest.jsx | 0 .../widget/components/HistoryStatus.jsx | 0 .../widget/components/Icons.jsx | 0 .../widget/components/Input.jsx | 0 .../components/InsufficientBannerModal.jsx | 0 .../widget/components/Modal.jsx | 4 +- .../widget/components/Navbar.jsx | 13 +- .../widget/components/OffCanvas.jsx | 0 .../widget/components/OverlayTrigger.jsx | 0 .../widget/components/Pagination.jsx | 28 +-- .../widget/components/ProposalStatus.jsx | 0 .../widget/components/ReceiverAccount.jsx | 0 .../widget/components/SettingsDropdown.jsx | 6 +- .../components/SidebarAndMainLayout.jsx | 0 .../widget/components/StakedNearIframe.jsx | 0 .../widget/components/Tabs.jsx | 0 .../widget/components/TokenAmount.jsx | 2 +- .../widget/components/TokenIcon.jsx | 0 .../widget/components/TokensDropdown.jsx | 0 .../widget/components/TransactionLoader.jsx | 0 .../ValidatorsDropDownWithSearch.jsx | 0 .../widget/components/VoteActions.jsx | 30 +-- .../widget/components/Votes.jsx | 0 .../widget/components/templates/AppLayout.jsx | 171 +++++++++++++++--- .../widget/lib/common.jsx | 0 .../widget/lib/modal.jsx | 0 .../widget/lib/skeleton.jsx | 0 .../widget/pages/.DS_Store | Bin 0 -> 8196 bytes .../widget/pages/asset-exchange/History.jsx | 0 .../pages/asset-exchange/PendingRequests.jsx | 0 .../widget/pages/asset-exchange/index.jsx | 0 .../widget/pages/dashboard/Chart.jsx | 16 +- .../widget/pages/dashboard/Portfolio.jsx | 49 ++--- .../pages/dashboard/TransactionHistory.jsx | 10 +- .../widget/pages/dashboard/index.jsx | 0 .../pages/payments/CreatePaymentRequest.jsx | 6 +- .../widget/pages/payments/History.jsx | 0 .../widget/pages/payments/PendingRequests.jsx | 0 .../widget/pages/payments/Table.jsx | 0 .../widget/pages/payments/index.jsx | 0 .../widget/pages/proposals-feed/History.jsx | 0 .../pages/proposals-feed/PendingRequests.jsx | 0 .../widget/pages/proposals-feed/Table.jsx | 2 +- .../widget/pages/proposals-feed/index.jsx | 0 .../settings/DeleteModalConfirmation.jsx | 4 +- .../widget/pages/settings/MembersEditor.jsx | 14 +- .../widget/pages/settings/MembersPage.jsx | 2 +- .../widget/pages/settings/RoleSelector.jsx | 0 .../widget/pages/settings/Theme.jsx | 11 +- .../widget/pages/settings/Thresholds.jsx | 6 +- .../pages/settings/VotingDurationPage.jsx | 8 +- .../widget/pages/settings/feed/History.jsx | 0 .../pages/settings/feed/PendingRequests.jsx | 0 .../pages/settings/feed/SettingsDropdown.jsx | 2 +- .../widget/pages/settings/feed/Table.jsx | 7 +- .../widget/pages/settings/feed/index.jsx | 0 .../widget/pages/settings/index.jsx | 0 .../pages/stake-delegation/CreateButton.jsx | 4 +- .../stake-delegation/CreateStakeRequest.jsx | 2 +- .../stake-delegation/CreateUnstakeRequest.jsx | 2 +- .../CreateWithdrawRequest.jsx | 2 +- .../widget/pages/stake-delegation/History.jsx | 0 .../stake-delegation/PendingRequests.jsx | 0 .../stake-delegation/SettingsDropdown.jsx | 2 +- .../widget/pages/stake-delegation/Table.jsx | 0 .../widget/pages/stake-delegation/Type.jsx | 0 .../pages/stake-delegation/Validator.jsx | 0 .../pages/stake-delegation/WalletDropdown.jsx | 0 .../widget/pages/stake-delegation/index.jsx | 0 package.json | 12 ++ .../payments/create-payment-request.spec.js | 11 +- .../tests/payments/vote-on-request.spec.js | 6 +- .../settings/create-member-request.spec.js | 4 +- .../tests/settings/request-feed.spec.js | 7 +- .../stake-delegation/stake-delegation.spec.js | 37 +++- playwright-tests/tests/web4/web4.spec.js | 7 +- 128 files changed, 767 insertions(+), 284 deletions(-) rename .github/workflows/{dry-run.yml => production-dry-run.yml} (85%) rename .github/workflows/{release-instances.yml => release-production.yml} (82%) create mode 100644 .github/workflows/release-staging.yml create mode 100644 .github/workflows/staging-dry-run.yml create mode 100644 instances/bootstrap.treasury-factory.near/aliases.mainnet.json create mode 100644 instances/bootstrap.treasury-factory.near/bos.config.json create mode 100644 instances/bootstrap.treasury-factory.near/data.json create mode 120000 instances/bootstrap.treasury-factory.near/src create mode 100644 instances/bootstrap.treasury-factory.near/widget/app.jsx create mode 100644 instances/bootstrap.treasury-factory.near/widget/config/data.jsx create mode 100644 instances/test-bootstrap.treasury-factory.near/aliases.mainnet.json create mode 100644 instances/test-bootstrap.treasury-factory.near/bos.config.json create mode 100644 instances/test-bootstrap.treasury-factory.near/data.json create mode 120000 instances/test-bootstrap.treasury-factory.near/src create mode 120000 instances/test-bootstrap.treasury-factory.near/widget create mode 100644 instances/test-widgets.treasury-factory.near/aliases.mainnet.json create mode 100644 instances/test-widgets.treasury-factory.near/bos.config.json create mode 100644 instances/test-widgets.treasury-factory.near/data.json create mode 120000 instances/test-widgets.treasury-factory.near/src create mode 120000 instances/test-widgets.treasury-factory.near/widget delete mode 100644 instances/treasury-devdao.near/widget/config/css.jsx delete mode 100644 instances/treasury-infinex.near/widget/config/css.jsx delete mode 100644 instances/treasury-templar.near/widget/config/css.jsx delete mode 100644 instances/treasury-testing-infinex.near/widget/config/css.jsx delete mode 100644 instances/treasury-testing.near/widget/config/css.jsx create mode 100644 instances/widgets.treasury-factory.near/.gitignore create mode 100644 instances/widgets.treasury-factory.near/aliases.mainnet.json create mode 100644 instances/widgets.treasury-factory.near/bos.config.json create mode 100644 instances/widgets.treasury-factory.near/data.json create mode 120000 instances/widgets.treasury-factory.near/src create mode 100644 instances/widgets.treasury-factory.near/widget/app.jsx rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/AccountInput.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/Approvers.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/BalanceBanner.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/Date.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/DropDown.jsx (98%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/DropDownWithSearchAndManualRequest.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/HistoryStatus.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/Icons.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/Input.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/InsufficientBannerModal.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/Modal.jsx (96%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/Navbar.jsx (94%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/OffCanvas.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/OverlayTrigger.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/Pagination.jsx (66%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/ProposalStatus.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/ReceiverAccount.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/SettingsDropdown.jsx (97%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/SidebarAndMainLayout.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/StakedNearIframe.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/Tabs.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/TokenAmount.jsx (98%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/TokenIcon.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/TokensDropdown.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/TransactionLoader.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/ValidatorsDropDownWithSearch.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/VoteActions.jsx (94%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/Votes.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/components/templates/AppLayout.jsx (74%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/lib/common.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/lib/modal.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/lib/skeleton.jsx (100%) create mode 100644 instances/widgets.treasury-factory.near/widget/pages/.DS_Store rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/asset-exchange/History.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/asset-exchange/PendingRequests.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/asset-exchange/index.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/dashboard/Chart.jsx (96%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/dashboard/Portfolio.jsx (91%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/dashboard/TransactionHistory.jsx (98%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/dashboard/index.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/payments/CreatePaymentRequest.jsx (99%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/payments/History.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/payments/PendingRequests.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/payments/Table.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/payments/index.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/proposals-feed/History.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/proposals-feed/PendingRequests.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/proposals-feed/Table.jsx (99%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/proposals-feed/index.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/DeleteModalConfirmation.jsx (98%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/MembersEditor.jsx (96%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/MembersPage.jsx (99%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/RoleSelector.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/Theme.jsx (97%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/Thresholds.jsx (99%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/VotingDurationPage.jsx (98%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/feed/History.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/feed/PendingRequests.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/feed/SettingsDropdown.jsx (98%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/feed/Table.jsx (99%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/feed/index.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/settings/index.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/CreateButton.jsx (98%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/CreateStakeRequest.jsx (99%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/CreateUnstakeRequest.jsx (99%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/CreateWithdrawRequest.jsx (99%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/History.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/PendingRequests.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/SettingsDropdown.jsx (98%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/Table.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/Type.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/Validator.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/WalletDropdown.jsx (100%) rename instances/{treasury-devdao.near => widgets.treasury-factory.near}/widget/pages/stake-delegation/index.jsx (100%) diff --git a/.github/workflows/dry-run.yml b/.github/workflows/production-dry-run.yml similarity index 85% rename from .github/workflows/dry-run.yml rename to .github/workflows/production-dry-run.yml index 310f8843..e121e899 100644 --- a/.github/workflows/dry-run.yml +++ b/.github/workflows/production-dry-run.yml @@ -1,4 +1,4 @@ -name: Dry-run +name: Dry-run production on: pull_request: @@ -12,11 +12,11 @@ jobs: matrix: target_account: - dry_run_command: npm run dry-run:devdao - - dry_run_command: npm run dry-run:testing - dry_run_command: npm run dry-run:infinex - - dry_run_command: npm run dry-run:infinex-testing - dry_run_command: npm run dry-run:templar - dry_run_command: npm run dry-run:treasury-factory + - dry_run_command: npm run dry-run:widgets + - dry_run_command: npm run dry-run:bootstrap steps: - name: Checkout repository uses: actions/checkout@v4 diff --git a/.github/workflows/release-instances.yml b/.github/workflows/release-production.yml similarity index 82% rename from .github/workflows/release-instances.yml rename to .github/workflows/release-production.yml index e3336f28..f3a6a007 100644 --- a/.github/workflows/release-instances.yml +++ b/.github/workflows/release-production.yml @@ -1,4 +1,4 @@ -name: Deploy Components to Mainnet - Devhub and Testing +name: Deploy Components to Production on: push: @@ -13,16 +13,16 @@ jobs: target_account: - environment: treasury-devdao.near deploy_command: npm run deploy:devdao - - environment: treasury-testing.near - deploy_command: npm run deploy:testing - environment: treasury-infinex.near deploy_command: npm run deploy:infinex - - environment: treasury-testing-infinex.near - deploy_command: npm run deploy:infinex-testing - environment: treasury-templar.near deploy_command: npm run deploy:templar - environment: treasury-factory.near deploy_command: npm run deploy:treasury-factory + - environment: widgets.treasury-factory.near + deploy_command: npm run deploy:widgets + - environment: bootstrap.treasury-factory.near + deploy_command: npm run deploy:bootstrap environment: ${{ matrix.target_account.environment }} steps: - name: Checkout repository diff --git a/.github/workflows/release-staging.yml b/.github/workflows/release-staging.yml new file mode 100644 index 00000000..6a48ba94 --- /dev/null +++ b/.github/workflows/release-staging.yml @@ -0,0 +1,34 @@ +name: Deploy Components to Staging + +on: + push: + branches: [staging] + +jobs: + deploy-widgets: + name: Deploy + runs-on: ubuntu-latest + strategy: + matrix: + target_account: + - environment: treasury-testing.near + deploy_command: npm run deploy:testing + - environment: treasury-testing-infinex.near + deploy_command: npm run deploy:infinex-testing + - environment: test-widgets.treasury-factory.near + deploy_command: npm run deploy:test-widgets + - environment: test-bootstrap.treasury-factory.near + deploy_command: npm run deploy:test-bootstrap + environment: ${{ matrix.target_account.environment }} + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + npm ci + curl --proto '=https' --tlsv1.2 -LsSf https://github.com/bos-cli-rs/bos-cli-rs/releases/download/v0.3.15/bos-cli-installer.sh | sh + + - name: Deploy widgets + run: | + ${{ matrix.target_account.deploy_command }} -- '${{ vars.NEAR_SOCIAL_ACCOUNT_ID }}' sign-as '${{ vars.NEAR_SOCIAL_ACCOUNT_ID }}' network-config mainnet sign-with-plaintext-private-key --signer-public-key '${{ vars.NEAR_SOCIAL_ACCOUNT_PUBLIC_KEY }}' --signer-private-key '${{ secrets.NEAR_SOCIAL_ACCOUNT_PRIVATE_KEY }}' send diff --git a/.github/workflows/staging-dry-run.yml b/.github/workflows/staging-dry-run.yml new file mode 100644 index 00000000..1517e391 --- /dev/null +++ b/.github/workflows/staging-dry-run.yml @@ -0,0 +1,29 @@ +name: Dry-run staging + +on: + pull_request: + branches: [staging] + +jobs: + deploy-widgets: + name: Diff from PR + runs-on: ubuntu-latest + strategy: + matrix: + target_account: + - dry_run_command: npm run dry-run:testing + - dry_run_command: npm run dry-run:infinex-testing + - dry_run_command: npm run dry-run:test-widgets + - dry_run_command: npm run dry-run:test-bootstrap + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install dependencies + run: | + npm ci + curl --proto '=https' --tlsv1.2 -LsSf https://github.com/bos-cli-rs/bos-cli-rs/releases/download/v0.3.15/bos-cli-installer.sh | sh + + - name: Dry-run widgets + run: | + ${{ matrix.target_account.dry_run_command }} diff --git a/instances/bootstrap.treasury-factory.near/aliases.mainnet.json b/instances/bootstrap.treasury-factory.near/aliases.mainnet.json new file mode 100644 index 00000000..b1b322aa --- /dev/null +++ b/instances/bootstrap.treasury-factory.near/aliases.mainnet.json @@ -0,0 +1,3 @@ +{ + "REPL_BASE_DEPLOYMENT_ACCOUNT": "widgets.treasury-factory.near" +} diff --git a/instances/bootstrap.treasury-factory.near/bos.config.json b/instances/bootstrap.treasury-factory.near/bos.config.json new file mode 100644 index 00000000..0a4dffc2 --- /dev/null +++ b/instances/bootstrap.treasury-factory.near/bos.config.json @@ -0,0 +1,6 @@ +{ + "account": "bootstrap.treasury-factory.near", + "aliasPrefix": "REPL", + "aliasesContainsPrefix": true, + "aliases": ["./aliases.mainnet.json"] +} diff --git a/instances/bootstrap.treasury-factory.near/data.json b/instances/bootstrap.treasury-factory.near/data.json new file mode 100644 index 00000000..39378419 --- /dev/null +++ b/instances/bootstrap.treasury-factory.near/data.json @@ -0,0 +1,3 @@ +{ + "bootstrap.treasury-factory.near": {} +} diff --git a/instances/bootstrap.treasury-factory.near/src b/instances/bootstrap.treasury-factory.near/src new file mode 120000 index 00000000..0301008c --- /dev/null +++ b/instances/bootstrap.treasury-factory.near/src @@ -0,0 +1 @@ +widget \ No newline at end of file diff --git a/instances/bootstrap.treasury-factory.near/widget/app.jsx b/instances/bootstrap.treasury-factory.near/widget/app.jsx new file mode 100644 index 00000000..8afd242e --- /dev/null +++ b/instances/bootstrap.treasury-factory.near/widget/app.jsx @@ -0,0 +1,108 @@ +/** + * This is the main entry point for the Treasury application. + * Page route gets passed in through params, along with all other page props. + */ + +const { page, ...passProps } = props; + +// Import our modules +const { AppLayout } = VM.require( + "${REPL_BASE_DEPLOYMENT_ACCOUNT}/widget/components.templates.AppLayout" +) || { AppLayout: () => <> }; + +const instance = context.widgetSrc?.split("/")[0] ?? "treasury-testing.near"; +const treasuryDaoID = + instance.split(".near")[0] ?? "testing-astradao" + "sputnik-dao.near"; +const { Theme } = VM.require(`${instance}/widget/config.css`) || { + Theme: () => <>, +}; + +if (!page) { + // If no page is specified, we default to the feed page TEMP + page = "dashboard"; +} + +const propsToSend = { ...passProps, instance: instance }; + +// This is our navigation, rendering the page based on the page parameter +function Page() { + const routes = page.split("."); + switch (routes[0]) { + case "dashboard": { + return ( + + ); + } + // ?page=settings + case "settings": { + return ( + + ); + } + case "payments": { + return ( + + ); + } + + case "stake-delegation": { + return ( + + ); + } + + case "asset-exchange": { + return ( + + ); + } + + case "proposals-feed": { + return ( + + ); + } + + default: { + // TODO: 404 page + return

404

; + } + } +} + +return ( + + + + + +); diff --git a/instances/bootstrap.treasury-factory.near/widget/config/data.jsx b/instances/bootstrap.treasury-factory.near/widget/config/data.jsx new file mode 100644 index 00000000..f056ef20 --- /dev/null +++ b/instances/bootstrap.treasury-factory.near/widget/config/data.jsx @@ -0,0 +1,27 @@ +const sputnikAccount = + context.widgetSrc?.split("/")[0].split(".near")[0] ?? + "testing-astradao" + "sputnik-dao.near"; +return { + navbarLinks: [ + { + title: "Dashboard", + href: "?page=dashboard", + }, + { + title: "Payments", + href: "?page=payments", + }, + { + title: "Stake Delegation", + href: "?page=stake-delegation", + }, + { + title: "Settings", + href: "?page=settings", + }, + ], + treasuryDaoID: sputnikAccount, + showProposalSelection: false, + showKYC: false, + showReferenceProposal: false, +}; diff --git a/instances/test-bootstrap.treasury-factory.near/aliases.mainnet.json b/instances/test-bootstrap.treasury-factory.near/aliases.mainnet.json new file mode 100644 index 00000000..46f4af04 --- /dev/null +++ b/instances/test-bootstrap.treasury-factory.near/aliases.mainnet.json @@ -0,0 +1,3 @@ +{ + "REPL_BASE_DEPLOYMENT_ACCOUNT": "test-widgets.treasury-factory.near" +} diff --git a/instances/test-bootstrap.treasury-factory.near/bos.config.json b/instances/test-bootstrap.treasury-factory.near/bos.config.json new file mode 100644 index 00000000..69c4e945 --- /dev/null +++ b/instances/test-bootstrap.treasury-factory.near/bos.config.json @@ -0,0 +1,6 @@ +{ + "account": "test-bootstrap.treasury-factory.near", + "aliasPrefix": "REPL", + "aliasesContainsPrefix": true, + "aliases": ["./aliases.mainnet.json"] +} diff --git a/instances/test-bootstrap.treasury-factory.near/data.json b/instances/test-bootstrap.treasury-factory.near/data.json new file mode 100644 index 00000000..750309a7 --- /dev/null +++ b/instances/test-bootstrap.treasury-factory.near/data.json @@ -0,0 +1,3 @@ +{ + "test-bootstrap.treasury-factory.near": {} +} diff --git a/instances/test-bootstrap.treasury-factory.near/src b/instances/test-bootstrap.treasury-factory.near/src new file mode 120000 index 00000000..0301008c --- /dev/null +++ b/instances/test-bootstrap.treasury-factory.near/src @@ -0,0 +1 @@ +widget \ No newline at end of file diff --git a/instances/test-bootstrap.treasury-factory.near/widget b/instances/test-bootstrap.treasury-factory.near/widget new file mode 120000 index 00000000..1415ebea --- /dev/null +++ b/instances/test-bootstrap.treasury-factory.near/widget @@ -0,0 +1 @@ +../../instances/bootstrap.treasury-factory.near/widget \ No newline at end of file diff --git a/instances/test-widgets.treasury-factory.near/aliases.mainnet.json b/instances/test-widgets.treasury-factory.near/aliases.mainnet.json new file mode 100644 index 00000000..21939138 --- /dev/null +++ b/instances/test-widgets.treasury-factory.near/aliases.mainnet.json @@ -0,0 +1,14 @@ +{ + "REPL_DEVHUB": "devhub.near", + "REPL_DEVHUB_CONTRACT": "devhub.near", + "REPL_BASE_DEPLOYMENT_ACCOUNT": "test-widgets.treasury-factory.near", + "REPL_INSTANCE": "treasury-testing.near", + "REPL_TREASURY": "testing-astradao.sputnik-dao.near", + "REPL_NEAR": "near", + "REPL_MOB": "mob.near", + "REPL_SOCIAL_CONTRACT": "social.near", + "REPL_RPC_URL": "https://rpc.mainnet.near.org", + "REPL_PROPOSALS_CACHE_URL": "https://devhub-cache-api-rs.fly.dev", + "REPL_PIKESPEAK_KEY": "36f2b87a-7ee6-40d8-80b9-5e68e587a5b5", + "REPL_NEARBLOCKS_KEY": "DA2570E26C0242FF897A463F4DCAACA6" +} diff --git a/instances/test-widgets.treasury-factory.near/bos.config.json b/instances/test-widgets.treasury-factory.near/bos.config.json new file mode 100644 index 00000000..84f0f9e7 --- /dev/null +++ b/instances/test-widgets.treasury-factory.near/bos.config.json @@ -0,0 +1,6 @@ +{ + "account": "test-widgets.treasury-factory.near", + "aliasPrefix": "REPL", + "aliasesContainsPrefix": true, + "aliases": ["./aliases.mainnet.json"] +} diff --git a/instances/test-widgets.treasury-factory.near/data.json b/instances/test-widgets.treasury-factory.near/data.json new file mode 100644 index 00000000..a4be7473 --- /dev/null +++ b/instances/test-widgets.treasury-factory.near/data.json @@ -0,0 +1,3 @@ +{ + "test-widgets.treasury-factory.near": {} +} diff --git a/instances/test-widgets.treasury-factory.near/src b/instances/test-widgets.treasury-factory.near/src new file mode 120000 index 00000000..0301008c --- /dev/null +++ b/instances/test-widgets.treasury-factory.near/src @@ -0,0 +1 @@ +widget \ No newline at end of file diff --git a/instances/test-widgets.treasury-factory.near/widget b/instances/test-widgets.treasury-factory.near/widget new file mode 120000 index 00000000..01a7eab2 --- /dev/null +++ b/instances/test-widgets.treasury-factory.near/widget @@ -0,0 +1 @@ +../../instances/widgets.treasury-factory.near/widget \ No newline at end of file diff --git a/instances/treasury-devdao.near/aliases.mainnet.json b/instances/treasury-devdao.near/aliases.mainnet.json index 87bb42eb..d6cb7988 100644 --- a/instances/treasury-devdao.near/aliases.mainnet.json +++ b/instances/treasury-devdao.near/aliases.mainnet.json @@ -1,14 +1,6 @@ { - "REPL_DEVHUB": "devhub.near", - "REPL_DEVHUB_CONTRACT": "devhub.near", - "REPL_BASE_DEPLOYMENT_ACCOUNT": "treasury-devdao.near", + "REPL_BASE_DEPLOYMENT_ACCOUNT": "widgets.treasury-factory.near", "REPL_INSTANCE": "treasury-devdao.near", "REPL_TREASURY": "devdao.sputnik-dao.near", - "REPL_NEAR": "near", - "REPL_MOB": "mob.near", - "REPL_SOCIAL_CONTRACT": "social.near", - "REPL_RPC_URL": "https://rpc.mainnet.near.org", - "REPL_PROPOSALS_CACHE_URL": "https://devhub-cache-api-rs.fly.dev", - "REPL_PIKESPEAK_KEY": "36f2b87a-7ee6-40d8-80b9-5e68e587a5b5", - "REPL_NEARBLOCKS_KEY": "DA2570E26C0242FF897A463F4DCAACA6" + "REPL_PROPOSALS_CACHE_URL": "https://devhub-cache-api-rs.fly.dev" } diff --git a/instances/treasury-devdao.near/widget/app.jsx b/instances/treasury-devdao.near/widget/app.jsx index d2fcc990..593402b9 100644 --- a/instances/treasury-devdao.near/widget/app.jsx +++ b/instances/treasury-devdao.near/widget/app.jsx @@ -13,10 +13,6 @@ const { AppLayout } = VM.require( const instance = "${REPL_INSTANCE}"; const treasuryDaoID = "${REPL_TREASURY}"; -const { Theme } = VM.require(`${instance}/widget/config.css`) || { - Theme: () => <>, -}; - if (!page) { // If no page is specified, we default to the feed page TEMP page = "dashboard"; @@ -84,14 +80,12 @@ function Page() { } return ( - - - - - + + + ); diff --git a/instances/treasury-devdao.near/widget/config/css.jsx b/instances/treasury-devdao.near/widget/config/css.jsx deleted file mode 100644 index aae9f279..00000000 --- a/instances/treasury-devdao.near/widget/config/css.jsx +++ /dev/null @@ -1,5 +0,0 @@ -const Theme = styled.div` - --theme-color: #05a36e; -`; - -return { Theme }; diff --git a/instances/treasury-devdao.near/widget/config/data.jsx b/instances/treasury-devdao.near/widget/config/data.jsx index 7363bb9d..c7819ecf 100644 --- a/instances/treasury-devdao.near/widget/config/data.jsx +++ b/instances/treasury-devdao.near/widget/config/data.jsx @@ -1,5 +1,4 @@ return { - appName: "Treasury", navbarLinks: [ { title: "Dashboard", @@ -49,4 +48,5 @@ return { ), + themeColor: "#05a36e", }; diff --git a/instances/treasury-factory.near/aliases.mainnet.json b/instances/treasury-factory.near/aliases.mainnet.json index cad46c6f..d432ed42 100644 --- a/instances/treasury-factory.near/aliases.mainnet.json +++ b/instances/treasury-factory.near/aliases.mainnet.json @@ -2,9 +2,9 @@ "REPL_DEVHUB": "devhub.near", "REPL_DEVHUB_CONTRACT": "devhub.near", "REPL_BASE_DEPLOYMENT_ACCOUNT": "treasury-factory.near", - "REPL_DEVDAO_ACCOUNT": "treasury-devdao.near", + "REPL_DEVDAO_ACCOUNT": "widgets.treasury-factory.near", "REPL_SPUTNIK_FACTORY_ACCOUNT": "sputnik-dao.near", - "REPL_FACTORY_REFERENCE_ACCOUNT": "treasury-testing.near", + "REPL_FACTORY_REFERENCE_ACCOUNT": "bootstrap.treasury-factory.near", "REPL_NEAR": "near", "REPL_MOB": "mob.near", "REPL_SOCIAL_CONTRACT": "social.near", diff --git a/instances/treasury-infinex.near/aliases.mainnet.json b/instances/treasury-infinex.near/aliases.mainnet.json index d47a3ccd..01bb3c6b 100644 --- a/instances/treasury-infinex.near/aliases.mainnet.json +++ b/instances/treasury-infinex.near/aliases.mainnet.json @@ -1,5 +1,5 @@ { - "REPL_BASE_DEPLOYMENT_ACCOUNT": "treasury-devdao.near", + "REPL_BASE_DEPLOYMENT_ACCOUNT": "widgets.treasury-factory.near", "REPL_INSTANCE": "treasury-infinex.near", "REPL_TREASURY": "infinex.sputnik-dao.near" } diff --git a/instances/treasury-infinex.near/widget/app.jsx b/instances/treasury-infinex.near/widget/app.jsx index 4859aafb..116d3b6d 100644 --- a/instances/treasury-infinex.near/widget/app.jsx +++ b/instances/treasury-infinex.near/widget/app.jsx @@ -13,10 +13,6 @@ const { AppLayout } = VM.require( const instance = "${REPL_INSTANCE}"; const treasuryDaoID = "${REPL_TREASURY}"; -const { Theme } = VM.require(`${instance}/widget/config.css`) || { - Theme: () => <>, -}; - if (!page) { // If no page is specified, we default to the feed page TEMP page = "dashboard"; @@ -95,14 +91,12 @@ function Page() { } return ( - - - - - + + + ); diff --git a/instances/treasury-infinex.near/widget/config/css.jsx b/instances/treasury-infinex.near/widget/config/css.jsx deleted file mode 100644 index f7a131f3..00000000 --- a/instances/treasury-infinex.near/widget/config/css.jsx +++ /dev/null @@ -1,5 +0,0 @@ -const Theme = styled.div` - --theme-color: #f76218; -`; - -return { Theme }; diff --git a/instances/treasury-infinex.near/widget/config/data.jsx b/instances/treasury-infinex.near/widget/config/data.jsx index 3e00da4d..ff1baf30 100644 --- a/instances/treasury-infinex.near/widget/config/data.jsx +++ b/instances/treasury-infinex.near/widget/config/data.jsx @@ -1,5 +1,4 @@ return { - appName: "Treasury", navbarLinks: [ { title: "Dashboard", @@ -41,4 +40,5 @@ return { ), lockupContract: "77fa9d86aca49e758a4cb72628972a0f3135d168.lockup.near", + themeColor: "#f76218", }; diff --git a/instances/treasury-templar.near/aliases.mainnet.json b/instances/treasury-templar.near/aliases.mainnet.json index f2df3011..b8a533d8 100644 --- a/instances/treasury-templar.near/aliases.mainnet.json +++ b/instances/treasury-templar.near/aliases.mainnet.json @@ -1,5 +1,5 @@ { - "REPL_BASE_DEPLOYMENT_ACCOUNT": "treasury-devdao.near", + "REPL_BASE_DEPLOYMENT_ACCOUNT": "widgets.treasury-factory.near", "REPL_INSTANCE": "treasury-templar.near", "REPL_TREASURY": "templar.sputnik-dao.near" } diff --git a/instances/treasury-templar.near/widget/app.jsx b/instances/treasury-templar.near/widget/app.jsx index d2fcc990..593402b9 100644 --- a/instances/treasury-templar.near/widget/app.jsx +++ b/instances/treasury-templar.near/widget/app.jsx @@ -13,10 +13,6 @@ const { AppLayout } = VM.require( const instance = "${REPL_INSTANCE}"; const treasuryDaoID = "${REPL_TREASURY}"; -const { Theme } = VM.require(`${instance}/widget/config.css`) || { - Theme: () => <>, -}; - if (!page) { // If no page is specified, we default to the feed page TEMP page = "dashboard"; @@ -84,14 +80,12 @@ function Page() { } return ( - - - - - + + + ); diff --git a/instances/treasury-templar.near/widget/config/css.jsx b/instances/treasury-templar.near/widget/config/css.jsx deleted file mode 100644 index 42f7499e..00000000 --- a/instances/treasury-templar.near/widget/config/css.jsx +++ /dev/null @@ -1,5 +0,0 @@ -const Theme = styled.div` - --theme-color: #8942d9; -`; - -return { Theme }; diff --git a/instances/treasury-templar.near/widget/config/data.jsx b/instances/treasury-templar.near/widget/config/data.jsx index b167d3ff..07ead66e 100644 --- a/instances/treasury-templar.near/widget/config/data.jsx +++ b/instances/treasury-templar.near/widget/config/data.jsx @@ -9,6 +9,10 @@ return { title: "Payments", href: "?page=payments", }, + { + title: "Stake Delegation", + href: "?page=stake-delegation", + }, { title: "Settings", href: "?page=settings", @@ -24,4 +28,5 @@ return { style={{ height: 40, width: 40 }} /> ), + themeColor: "#8942d9", }; diff --git a/instances/treasury-testing-infinex.near/aliases.mainnet.json b/instances/treasury-testing-infinex.near/aliases.mainnet.json index 9be6df57..55883ba4 100644 --- a/instances/treasury-testing-infinex.near/aliases.mainnet.json +++ b/instances/treasury-testing-infinex.near/aliases.mainnet.json @@ -1,5 +1,5 @@ { - "REPL_BASE_DEPLOYMENT_ACCOUNT": "treasury-devdao.near", + "REPL_BASE_DEPLOYMENT_ACCOUNT": "test-widgets.treasury-factory.near", "REPL_INSTANCE": "treasury-testing-infinex.near", "REPL_TREASURY": "testing-treasury.sputnik-dao.near" } diff --git a/instances/treasury-testing-infinex.near/widget/app.jsx b/instances/treasury-testing-infinex.near/widget/app.jsx index 4859aafb..116d3b6d 100644 --- a/instances/treasury-testing-infinex.near/widget/app.jsx +++ b/instances/treasury-testing-infinex.near/widget/app.jsx @@ -13,10 +13,6 @@ const { AppLayout } = VM.require( const instance = "${REPL_INSTANCE}"; const treasuryDaoID = "${REPL_TREASURY}"; -const { Theme } = VM.require(`${instance}/widget/config.css`) || { - Theme: () => <>, -}; - if (!page) { // If no page is specified, we default to the feed page TEMP page = "dashboard"; @@ -95,14 +91,12 @@ function Page() { } return ( - - - - - + + + ); diff --git a/instances/treasury-testing-infinex.near/widget/config/css.jsx b/instances/treasury-testing-infinex.near/widget/config/css.jsx deleted file mode 100644 index f7a131f3..00000000 --- a/instances/treasury-testing-infinex.near/widget/config/css.jsx +++ /dev/null @@ -1,5 +0,0 @@ -const Theme = styled.div` - --theme-color: #f76218; -`; - -return { Theme }; diff --git a/instances/treasury-testing-infinex.near/widget/config/data.jsx b/instances/treasury-testing-infinex.near/widget/config/data.jsx index 6c4a210e..feff99d7 100644 --- a/instances/treasury-testing-infinex.near/widget/config/data.jsx +++ b/instances/treasury-testing-infinex.near/widget/config/data.jsx @@ -1,5 +1,4 @@ return { - appName: "Treasury", navbarLinks: [ { title: "Dashboard", @@ -42,4 +41,5 @@ return { ), isTesting: true, + themeColor: "#f76218", }; diff --git a/instances/treasury-testing.near/aliases.mainnet.json b/instances/treasury-testing.near/aliases.mainnet.json index 107856f4..bdf6d258 100644 --- a/instances/treasury-testing.near/aliases.mainnet.json +++ b/instances/treasury-testing.near/aliases.mainnet.json @@ -1,5 +1,5 @@ { - "REPL_BASE_DEPLOYMENT_ACCOUNT": "treasury-devdao.near", + "REPL_BASE_DEPLOYMENT_ACCOUNT": "test-widgets.treasury-factory.near", "REPL_INSTANCE": "treasury-testing.near", "REPL_TREASURY": "testing-astradao.sputnik-dao.near", "REPL_PROPOSALS_CACHE_URL": "https://devhub-cache-api-rs.fly.dev" diff --git a/instances/treasury-testing.near/widget/app.jsx b/instances/treasury-testing.near/widget/app.jsx index d2fcc990..593402b9 100644 --- a/instances/treasury-testing.near/widget/app.jsx +++ b/instances/treasury-testing.near/widget/app.jsx @@ -13,10 +13,6 @@ const { AppLayout } = VM.require( const instance = "${REPL_INSTANCE}"; const treasuryDaoID = "${REPL_TREASURY}"; -const { Theme } = VM.require(`${instance}/widget/config.css`) || { - Theme: () => <>, -}; - if (!page) { // If no page is specified, we default to the feed page TEMP page = "dashboard"; @@ -84,14 +80,12 @@ function Page() { } return ( - - - - - + + + ); diff --git a/instances/treasury-testing.near/widget/config/css.jsx b/instances/treasury-testing.near/widget/config/css.jsx deleted file mode 100644 index aae9f279..00000000 --- a/instances/treasury-testing.near/widget/config/css.jsx +++ /dev/null @@ -1,5 +0,0 @@ -const Theme = styled.div` - --theme-color: #05a36e; -`; - -return { Theme }; diff --git a/instances/treasury-testing.near/widget/config/data.jsx b/instances/treasury-testing.near/widget/config/data.jsx index 186bc703..7df3c557 100644 --- a/instances/treasury-testing.near/widget/config/data.jsx +++ b/instances/treasury-testing.near/widget/config/data.jsx @@ -1,5 +1,4 @@ return { - appName: "Treasury", navbarLinks: [ { title: "Dashboard", @@ -50,4 +49,5 @@ return { ), + themeColor: "#05a36e", }; diff --git a/instances/widgets.treasury-factory.near/.gitignore b/instances/widgets.treasury-factory.near/.gitignore new file mode 100644 index 00000000..a7e8e215 --- /dev/null +++ b/instances/widgets.treasury-factory.near/.gitignore @@ -0,0 +1,2 @@ +build +dist \ No newline at end of file diff --git a/instances/widgets.treasury-factory.near/aliases.mainnet.json b/instances/widgets.treasury-factory.near/aliases.mainnet.json new file mode 100644 index 00000000..d06e4301 --- /dev/null +++ b/instances/widgets.treasury-factory.near/aliases.mainnet.json @@ -0,0 +1,14 @@ +{ + "REPL_DEVHUB": "devhub.near", + "REPL_DEVHUB_CONTRACT": "devhub.near", + "REPL_BASE_DEPLOYMENT_ACCOUNT": "widgets.treasury-factory.near", + "REPL_INSTANCE": "treasury-testing.near", + "REPL_TREASURY": "testing-astradao.sputnik-dao.near", + "REPL_NEAR": "near", + "REPL_MOB": "mob.near", + "REPL_SOCIAL_CONTRACT": "social.near", + "REPL_RPC_URL": "https://rpc.mainnet.near.org", + "REPL_PROPOSALS_CACHE_URL": "https://devhub-cache-api-rs.fly.dev", + "REPL_PIKESPEAK_KEY": "36f2b87a-7ee6-40d8-80b9-5e68e587a5b5", + "REPL_NEARBLOCKS_KEY": "DA2570E26C0242FF897A463F4DCAACA6" +} diff --git a/instances/widgets.treasury-factory.near/bos.config.json b/instances/widgets.treasury-factory.near/bos.config.json new file mode 100644 index 00000000..83bb93c1 --- /dev/null +++ b/instances/widgets.treasury-factory.near/bos.config.json @@ -0,0 +1,6 @@ +{ + "account": "widgets.treasury-factory.near", + "aliasPrefix": "REPL", + "aliasesContainsPrefix": true, + "aliases": ["./aliases.mainnet.json"] +} diff --git a/instances/widgets.treasury-factory.near/data.json b/instances/widgets.treasury-factory.near/data.json new file mode 100644 index 00000000..8b833b01 --- /dev/null +++ b/instances/widgets.treasury-factory.near/data.json @@ -0,0 +1,3 @@ +{ + "widgets.treasury-factory.near": {} +} diff --git a/instances/widgets.treasury-factory.near/src b/instances/widgets.treasury-factory.near/src new file mode 120000 index 00000000..0301008c --- /dev/null +++ b/instances/widgets.treasury-factory.near/src @@ -0,0 +1 @@ +widget \ No newline at end of file diff --git a/instances/widgets.treasury-factory.near/widget/app.jsx b/instances/widgets.treasury-factory.near/widget/app.jsx new file mode 100644 index 00000000..d2fcc990 --- /dev/null +++ b/instances/widgets.treasury-factory.near/widget/app.jsx @@ -0,0 +1,97 @@ +/** + * This is the main entry point for the Treasury application. + * Page route gets passed in through params, along with all other page props. + */ + +const { page, ...passProps } = props; + +// Import our modules +const { AppLayout } = VM.require( + "${REPL_BASE_DEPLOYMENT_ACCOUNT}/widget/components.templates.AppLayout" +) || { AppLayout: () => <> }; + +const instance = "${REPL_INSTANCE}"; +const treasuryDaoID = "${REPL_TREASURY}"; + +const { Theme } = VM.require(`${instance}/widget/config.css`) || { + Theme: () => <>, +}; + +if (!page) { + // If no page is specified, we default to the feed page TEMP + page = "dashboard"; +} + +const propsToSend = { ...passProps, instance: instance }; + +// This is our navigation, rendering the page based on the page parameter +function Page() { + const routes = page.split("."); + switch (routes[0]) { + case "dashboard": { + return ( + + ); + } + // ?page=settings + case "settings": { + return ( + + ); + } + case "payments": { + return ( + + ); + } + + case "stake-delegation": { + return ( + + ); + } + + case "asset-exchange": { + return ( + + ); + } + + default: { + // TODO: 404 page + return

404

; + } + } +} + +return ( + + + + + +); diff --git a/instances/treasury-devdao.near/widget/components/AccountInput.jsx b/instances/widgets.treasury-factory.near/widget/components/AccountInput.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/AccountInput.jsx rename to instances/widgets.treasury-factory.near/widget/components/AccountInput.jsx diff --git a/instances/treasury-devdao.near/widget/components/Approvers.jsx b/instances/widgets.treasury-factory.near/widget/components/Approvers.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/Approvers.jsx rename to instances/widgets.treasury-factory.near/widget/components/Approvers.jsx diff --git a/instances/treasury-devdao.near/widget/components/BalanceBanner.jsx b/instances/widgets.treasury-factory.near/widget/components/BalanceBanner.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/BalanceBanner.jsx rename to instances/widgets.treasury-factory.near/widget/components/BalanceBanner.jsx diff --git a/instances/treasury-devdao.near/widget/components/Date.jsx b/instances/widgets.treasury-factory.near/widget/components/Date.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/Date.jsx rename to instances/widgets.treasury-factory.near/widget/components/Date.jsx diff --git a/instances/treasury-devdao.near/widget/components/DropDown.jsx b/instances/widgets.treasury-factory.near/widget/components/DropDown.jsx similarity index 98% rename from instances/treasury-devdao.near/widget/components/DropDown.jsx rename to instances/widgets.treasury-factory.near/widget/components/DropDown.jsx index dc8fe7a0..cee817ff 100644 --- a/instances/treasury-devdao.near/widget/components/DropDown.jsx +++ b/instances/widgets.treasury-factory.near/widget/components/DropDown.jsx @@ -16,12 +16,13 @@ const StyledDropdown = styled.div` width: 100%; text-align: left; padding-inline: 10px; + padding-right: 25px; } .dropdown-toggle:after { position: absolute; top: 45%; - right: 5%; + right: 10px; } .text-sm { diff --git a/instances/treasury-devdao.near/widget/components/DropDownWithSearchAndManualRequest.jsx b/instances/widgets.treasury-factory.near/widget/components/DropDownWithSearchAndManualRequest.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/DropDownWithSearchAndManualRequest.jsx rename to instances/widgets.treasury-factory.near/widget/components/DropDownWithSearchAndManualRequest.jsx diff --git a/instances/treasury-devdao.near/widget/components/HistoryStatus.jsx b/instances/widgets.treasury-factory.near/widget/components/HistoryStatus.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/HistoryStatus.jsx rename to instances/widgets.treasury-factory.near/widget/components/HistoryStatus.jsx diff --git a/instances/treasury-devdao.near/widget/components/Icons.jsx b/instances/widgets.treasury-factory.near/widget/components/Icons.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/Icons.jsx rename to instances/widgets.treasury-factory.near/widget/components/Icons.jsx diff --git a/instances/treasury-devdao.near/widget/components/Input.jsx b/instances/widgets.treasury-factory.near/widget/components/Input.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/Input.jsx rename to instances/widgets.treasury-factory.near/widget/components/Input.jsx diff --git a/instances/treasury-devdao.near/widget/components/InsufficientBannerModal.jsx b/instances/widgets.treasury-factory.near/widget/components/InsufficientBannerModal.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/InsufficientBannerModal.jsx rename to instances/widgets.treasury-factory.near/widget/components/InsufficientBannerModal.jsx diff --git a/instances/treasury-devdao.near/widget/components/Modal.jsx b/instances/widgets.treasury-factory.near/widget/components/Modal.jsx similarity index 96% rename from instances/treasury-devdao.near/widget/components/Modal.jsx rename to instances/widgets.treasury-factory.near/widget/components/Modal.jsx index a058c59c..89ab9c35 100644 --- a/instances/treasury-devdao.near/widget/components/Modal.jsx +++ b/instances/widgets.treasury-factory.near/widget/components/Modal.jsx @@ -129,7 +129,9 @@ return (
-
{getTitle(page ?? "dashboard")}
+
{getTitle(page ?? "dashboard")}
{isTesting && Testing}
@@ -167,11 +171,8 @@ return ( ))} - - + + setShowMenu(!showMenu)}> diff --git a/instances/treasury-devdao.near/widget/components/OffCanvas.jsx b/instances/widgets.treasury-factory.near/widget/components/OffCanvas.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/OffCanvas.jsx rename to instances/widgets.treasury-factory.near/widget/components/OffCanvas.jsx diff --git a/instances/treasury-devdao.near/widget/components/OverlayTrigger.jsx b/instances/widgets.treasury-factory.near/widget/components/OverlayTrigger.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/OverlayTrigger.jsx rename to instances/widgets.treasury-factory.near/widget/components/OverlayTrigger.jsx diff --git a/instances/treasury-devdao.near/widget/components/Pagination.jsx b/instances/widgets.treasury-factory.near/widget/components/Pagination.jsx similarity index 66% rename from instances/treasury-devdao.near/widget/components/Pagination.jsx rename to instances/widgets.treasury-factory.near/widget/components/Pagination.jsx index 97b2e0d5..7c39031b 100644 --- a/instances/treasury-devdao.near/widget/components/Pagination.jsx +++ b/instances/widgets.treasury-factory.near/widget/components/Pagination.jsx @@ -3,9 +3,13 @@ const onPrevClick = props.onPrevClick ?? (() => {}); const onRowsChange = props.onRowsChange ?? (() => {}); const totalPages = props.totalPages; const totalLength = props.totalLength; +const paginationOptions = [ + { label: 10, value: 10 }, + { label: 20, value: 20 }, + { label: 30, value: 30 }, +]; const rowsPerPage = props.rowsPerPage; const page = props.currentPage; - const currentPage = page + 1; const currenPageLimit = totalLength <= currentPage * rowsPerPage @@ -16,27 +20,29 @@ return (
Rows per Page: - + o.value === rowsPerPage), + onUpdate: ({ value }) => onRowsChange(value), + }} + />
Showing: {currentPage * rowsPerPage - rowsPerPage + 1} - {currenPageLimit}{" "} of {totalLength} +
{isOpen && (
diff --git a/instances/treasury-devdao.near/widget/components/SidebarAndMainLayout.jsx b/instances/widgets.treasury-factory.near/widget/components/SidebarAndMainLayout.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/SidebarAndMainLayout.jsx rename to instances/widgets.treasury-factory.near/widget/components/SidebarAndMainLayout.jsx diff --git a/instances/treasury-devdao.near/widget/components/StakedNearIframe.jsx b/instances/widgets.treasury-factory.near/widget/components/StakedNearIframe.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/StakedNearIframe.jsx rename to instances/widgets.treasury-factory.near/widget/components/StakedNearIframe.jsx diff --git a/instances/treasury-devdao.near/widget/components/Tabs.jsx b/instances/widgets.treasury-factory.near/widget/components/Tabs.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/Tabs.jsx rename to instances/widgets.treasury-factory.near/widget/components/Tabs.jsx diff --git a/instances/treasury-devdao.near/widget/components/TokenAmount.jsx b/instances/widgets.treasury-factory.near/widget/components/TokenAmount.jsx similarity index 98% rename from instances/treasury-devdao.near/widget/components/TokenAmount.jsx rename to instances/widgets.treasury-factory.near/widget/components/TokenAmount.jsx index 228ab13c..15360b1b 100644 --- a/instances/treasury-devdao.near/widget/components/TokenAmount.jsx +++ b/instances/widgets.treasury-factory.near/widget/components/TokenAmount.jsx @@ -20,7 +20,7 @@ let amount = amountWithDecimals; if (amountWithoutDecimals !== undefined) { amount = Big(amountWithoutDecimals) .div(Big(10).pow(ftMetadata.decimals ?? 1)) - .toString(); + .toFixed(2); } return ( diff --git a/instances/treasury-devdao.near/widget/components/TokenIcon.jsx b/instances/widgets.treasury-factory.near/widget/components/TokenIcon.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/TokenIcon.jsx rename to instances/widgets.treasury-factory.near/widget/components/TokenIcon.jsx diff --git a/instances/treasury-devdao.near/widget/components/TokensDropdown.jsx b/instances/widgets.treasury-factory.near/widget/components/TokensDropdown.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/TokensDropdown.jsx rename to instances/widgets.treasury-factory.near/widget/components/TokensDropdown.jsx diff --git a/instances/treasury-devdao.near/widget/components/TransactionLoader.jsx b/instances/widgets.treasury-factory.near/widget/components/TransactionLoader.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/TransactionLoader.jsx rename to instances/widgets.treasury-factory.near/widget/components/TransactionLoader.jsx diff --git a/instances/treasury-devdao.near/widget/components/ValidatorsDropDownWithSearch.jsx b/instances/widgets.treasury-factory.near/widget/components/ValidatorsDropDownWithSearch.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/ValidatorsDropDownWithSearch.jsx rename to instances/widgets.treasury-factory.near/widget/components/ValidatorsDropDownWithSearch.jsx diff --git a/instances/treasury-devdao.near/widget/components/VoteActions.jsx b/instances/widgets.treasury-factory.near/widget/components/VoteActions.jsx similarity index 94% rename from instances/treasury-devdao.near/widget/components/VoteActions.jsx rename to instances/widgets.treasury-factory.near/widget/components/VoteActions.jsx index 850389b4..7b9edd2b 100644 --- a/instances/treasury-devdao.near/widget/components/VoteActions.jsx +++ b/instances/widgets.treasury-factory.near/widget/components/VoteActions.jsx @@ -112,33 +112,11 @@ useEffect(() => { }, [isTxnCreated]); const Container = styled.div` - .reject-btn { - background-color: var(--other-primary); - border-radius: 5px; - color: white; - - &:hover { - background-color: var(--other-primary); - color: white; - } - } - .remove-btn { background: none; border: none; color: red; } - - .approve-btn { - background-color: var(--other-green); - border-radius: 5px; - color: white; - - &:hover { - background-color: var(--other-green); - color: white; - } - } `; useEffect(() => { @@ -238,7 +216,7 @@ return ( src={`${REPL_DEVHUB}/widget/devhub.components.molecule.Button`} props={{ classNames: { - root: "approve-btn p-2", + root: "btn btn-success", }, label: "Approve", loading: isTxnCreated && vote === actions.APPROVE, @@ -267,7 +245,7 @@ return ( src={`${REPL_DEVHUB}/widget/devhub.components.molecule.Button`} props={{ classNames: { - root: "reject-btn p-2", + root: "btn btn-secondary", }, label: "Reject", loading: isTxnCreated && vote === actions.REJECT, @@ -294,12 +272,12 @@ return ( props={{ ActionButton: () => ( diff --git a/instances/treasury-devdao.near/widget/components/Votes.jsx b/instances/widgets.treasury-factory.near/widget/components/Votes.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/components/Votes.jsx rename to instances/widgets.treasury-factory.near/widget/components/Votes.jsx diff --git a/instances/treasury-devdao.near/widget/components/templates/AppLayout.jsx b/instances/widgets.treasury-factory.near/widget/components/templates/AppLayout.jsx similarity index 74% rename from instances/treasury-devdao.near/widget/components/templates/AppLayout.jsx rename to instances/widgets.treasury-factory.near/widget/components/templates/AppLayout.jsx index c8daafef..f0ee0f16 100644 --- a/instances/treasury-devdao.near/widget/components/templates/AppLayout.jsx +++ b/instances/widgets.treasury-factory.near/widget/components/templates/AppLayout.jsx @@ -2,6 +2,97 @@ const { BalanceBanner } = VM.require( `${REPL_BASE_DEPLOYMENT_ACCOUNT}/widget/components.BalanceBanner` ) || { BalanceBanner: () => <> }; +function hexToHsl(hex) { + // Remove # if present + hex = hex ?? ""; + hex = hex.startsWith("#") ? hex.slice(1) : hex; + + // Extract RGB components + const r = parseInt(hex.slice(0, 2), 16); + const g = parseInt(hex.slice(2, 4), 16); + const b = parseInt(hex.slice(4, 6), 16); + + // Normalize RGB values + const rNorm = r / 255; + const gNorm = g / 255; + const bNorm = b / 255; + + const max = Math.max(rNorm, gNorm, bNorm); + const min = Math.min(rNorm, gNorm, bNorm); + const delta = max - min; + + let h = 0; + let s = 0; + const l = (max + min) / 2; + + if (delta !== 0) { + s = l < 0.5 ? delta / (max + min) : delta / (2 - max - min); + + if (max === rNorm) { + h = (gNorm - bNorm) / delta + (gNorm < bNorm ? 6 : 0); + } else if (max === gNorm) { + h = (bNorm - rNorm) / delta + 2; + } else { + h = (rNorm - gNorm) / delta + 4; + } + + h *= 60; + } + + return [Math.round(h), Math.round(s * 100), Math.round(l * 100)]; +} + +// Function to convert HSL to HEX +function hslToHex(h, s, l) { + s /= 100; + l /= 100; + + const c = (1 - Math.abs(2 * l - 1)) * s; + const x = c * (1 - Math.abs(((h / 60) % 2) - 1)); + const m = l - c / 2; + + let r = 0, + g = 0, + b = 0; + + if (h >= 0 && h < 60) { + r = c; + g = x; + b = 0; + } else if (h >= 60 && h < 120) { + r = x; + g = c; + b = 0; + } else if (h >= 120 && h < 180) { + r = 0; + g = c; + b = x; + } else if (h >= 180 && h < 240) { + r = 0; + g = x; + b = c; + } else if (h >= 240 && h < 300) { + r = x; + g = 0; + b = c; + } else if (h >= 300 && h < 360) { + r = c; + g = 0; + b = x; + } + + r = Math.round((r + m) * 255); + g = Math.round((g + m) * 255); + b = Math.round((b + m) * 255); + + const toHex = (value) => { + const hex = value.toString(16); + return hex.length === 1 ? `0${hex}` : hex; + }; + + return `#${toHex(r)}${toHex(g)}${toHex(b)}`; +} + const AppHeader = ({ page, instance }) => ( ( ); function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { + const { themeColor } = VM.require(`${instance}/widget/config.data`) || { + themeColor: "", + }; + const config = treasuryDaoID ? useCache( () => Near.asyncView(treasuryDaoID, "get_config"), @@ -26,8 +121,22 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { const gatewayURL = data?.body?.headers?.Origin ?? ""; const isDarkTheme = metadata.theme === "dark"; - const getColors = (isDarkTheme) => ` - ${metadata.primaryColor ? `--theme-color: ${metadata.primaryColor};` : ""} + if (!config) { + return <>; + } + + const primaryColor = metadata?.primaryColor + ? metadata?.primaryColor + : themeColor; + // Convert HEX to HSL + const [h, s, l] = hexToHsl(primaryColor); + + // Calculate hover color (darken by reducing lightness) + const hoverColor = hslToHex(h, s, Math.max(l - 10, 0)); + + const getColors = (isDarkTheme, themeColor, hoverColor) => ` + --theme-color: ${themeColor}; + --theme-color-dark: ${hoverColor}; --bg-header-color: ${isDarkTheme ? "#222222" : "#2C3E50"}; --bg-page-color: ${isDarkTheme ? "#222222" : "#FFFFFF"}; --bg-system-color: ${isDarkTheme ? "#131313" : "#f4f4f4"}; @@ -50,11 +159,10 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { // bootstrap theme color --bs-body-bg: var(--bg-page-color); --bs-border-color: var(--border-color); - --bs-dropdown-link-hover-color: var(--grey-04); `; const ParentContainer = styled.div` - ${() => getColors(isDarkTheme)} + ${() => getColors(isDarkTheme, primaryColor, hoverColor)} width: 100%; background: var(--bg-system-color) !important; ${() => @@ -105,6 +213,12 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { color: inherit !important; } + .dropdown-item:hover, + .dropdown-item:focus { + background-color: var(--grey-04) !important; + color: inherit !important; + } + .offcanvas { background-color: var(--bg-page-color) !important; color: var(--text-color) !important; @@ -149,7 +263,7 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { border: none !important; &:hover { - background: var(--theme-color-dark); + background: var(--theme-color-dark) !important; } i { @@ -215,6 +329,23 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { .theme-btn.btn:hover { color: white !important; + background: var(--theme-color-dark) !important; + } + + .btn-outline-secondary { + border-color: var(--border-color) !important; + color: var(--text-color) !important; + border-width: 1px !important; + + i { + color: var(--text-color) !important; + } + + &:hover { + color: var(--text-color) !important; + border-color: var(--border-color) !important; + background: var(--grey-035) !important; + } } .toast-container { @@ -269,8 +400,8 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { .badge { padding: 6px 8px; - background: #f7dbff; - color: var(--theme-color); + background: var(--grey-035); + color: var(--text-color); rounded: 8px; font-weight: 500; font-size: 12px; @@ -291,18 +422,12 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { } } - h6, - .h6, - h5, - .h5, - h4, - .h4, - h3, - .h3, - h2, - .h2, h1, - .h1 { + h2, + h3, + h4, + h5, + h6 { color: var(--text-color) !important; } @@ -384,12 +509,8 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { color: inherit !important; } - .text-delete { + .text-red { color: var(--other-red) !important; - - i { - color: var(--other-red) !important; - } } .btn-outline.btn:hover { @@ -421,9 +542,7 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { } `; - return !config ? ( - <> - ) : ( + return ( diff --git a/instances/treasury-devdao.near/widget/lib/common.jsx b/instances/widgets.treasury-factory.near/widget/lib/common.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/lib/common.jsx rename to instances/widgets.treasury-factory.near/widget/lib/common.jsx diff --git a/instances/treasury-devdao.near/widget/lib/modal.jsx b/instances/widgets.treasury-factory.near/widget/lib/modal.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/lib/modal.jsx rename to instances/widgets.treasury-factory.near/widget/lib/modal.jsx diff --git a/instances/treasury-devdao.near/widget/lib/skeleton.jsx b/instances/widgets.treasury-factory.near/widget/lib/skeleton.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/lib/skeleton.jsx rename to instances/widgets.treasury-factory.near/widget/lib/skeleton.jsx diff --git a/instances/widgets.treasury-factory.near/widget/pages/.DS_Store b/instances/widgets.treasury-factory.near/widget/pages/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e803861792b3cc7ef9e58cefad6f2fb5eb3ebb15 GIT binary patch literal 8196 zcmeI1F-yZh6vyAGLqrir$9#c;)zKwN1qC<7*|v#RY@1>$C@5rib#rug6V%Dc$wBZ7 z_%+=8zq>Qdnb_Jz6yM3+OE2%A{_oc_murbgtsI4AqB$b+P&v*{p(!YQo@=g**&Y@v z=!tq%qKJ;EPK{i)bO-?2sj^!PW#l;Tb2?&RV`8F_lQMEr_MMg8 zp(y?C(D^!@RA8dCLO=-Q3Gm*1hN{%XU*zoHtJJ1Fikf@n&3fGG80py4u>4kBsnnWr z4SC+qTX`$Id|V!`2}jm+8d+cSY;Tf6J(331D8|ttg|7RX+v2RO=k=w956=bHYsG!1 zgEL)!uk6pG4qTm33#8j%-F4mF@vSYFll69yq}~eh`pyRBxxSv+*9?3ef>;N&3x`d# zCEA6{=rh4>epVcqpY^+To%$W3>3jdK#vO;Ao}QhVfM4c$P3nBM^@8zg0!=KA5+id7w_G;d7`a>-+pA_5BT9 zpYc-eVbS9u?G2bBxwB_?VK8s|X(uhSn4aqJ_NHGz$ZiReL*F9I|MX@tO!5_ku}_5H5^ literal 0 HcmV?d00001 diff --git a/instances/treasury-devdao.near/widget/pages/asset-exchange/History.jsx b/instances/widgets.treasury-factory.near/widget/pages/asset-exchange/History.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/asset-exchange/History.jsx rename to instances/widgets.treasury-factory.near/widget/pages/asset-exchange/History.jsx diff --git a/instances/treasury-devdao.near/widget/pages/asset-exchange/PendingRequests.jsx b/instances/widgets.treasury-factory.near/widget/pages/asset-exchange/PendingRequests.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/asset-exchange/PendingRequests.jsx rename to instances/widgets.treasury-factory.near/widget/pages/asset-exchange/PendingRequests.jsx diff --git a/instances/treasury-devdao.near/widget/pages/asset-exchange/index.jsx b/instances/widgets.treasury-factory.near/widget/pages/asset-exchange/index.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/asset-exchange/index.jsx rename to instances/widgets.treasury-factory.near/widget/pages/asset-exchange/index.jsx diff --git a/instances/treasury-devdao.near/widget/pages/dashboard/Chart.jsx b/instances/widgets.treasury-factory.near/widget/pages/dashboard/Chart.jsx similarity index 96% rename from instances/treasury-devdao.near/widget/pages/dashboard/Chart.jsx rename to instances/widgets.treasury-factory.near/widget/pages/dashboard/Chart.jsx index 4b67294d..142bf8f4 100644 --- a/instances/treasury-devdao.near/widget/pages/dashboard/Chart.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/dashboard/Chart.jsx @@ -54,11 +54,11 @@ const metadata = JSON.parse(atob(config.metadata ?? "")); const isDarkTheme = metadata.theme === "dark"; const bgPageColor = isDarkTheme ? "#222222" : "#FFFFFF"; -const borderColor = isDarkTheme ? "#3B3B3B" : "#000"; +const borderColor = isDarkTheme ? "#CACACA" : "#000"; const iconColor = isDarkTheme ? "#CACACA" : "#060606"; const textColor = isDarkTheme ? "#CACACA" : "#1B1B18"; const fillStyle = isDarkTheme - ? "rgba(27, 27, 24, 0.1)" + ? "rgba(34, 34, 34, 0.7)" : "rgba(255, 255, 255, 0.7)"; const code = ` @@ -95,9 +95,15 @@ const code = ` let hoverX = null; let gradient = ctx.createLinearGradient(0, 0, 0, 350); - gradient.addColorStop(0, "rgba(0,0,0, 0.3)") - gradient.addColorStop(0.3, "rgba(0,0,0, 0.1)") - gradient.addColorStop(1, "rgba(0,0,0, 0)") + if (${isDarkTheme}) { + gradient.addColorStop(0, "rgba(255,255,255, 0.2)") + gradient.addColorStop(0.3, "rgba(255,255,255, 0.1)") + gradient.addColorStop(1, "rgba(255,255,255, 0)") + } else { + gradient.addColorStop(0, "rgba(0,0,0, 0.3)") + gradient.addColorStop(0.3, "rgba(0,0,0, 0.1)") + gradient.addColorStop(1, "rgba(0,0,0, 0)") + } // Plugin for drawing the tracking line const trackingLinePlugin = { diff --git a/instances/treasury-devdao.near/widget/pages/dashboard/Portfolio.jsx b/instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx similarity index 91% rename from instances/treasury-devdao.near/widget/pages/dashboard/Portfolio.jsx rename to instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx index 72ed2ab0..70080c2b 100644 --- a/instances/treasury-devdao.near/widget/pages/dashboard/Portfolio.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx @@ -101,7 +101,12 @@ const BalanceDisplay = ({ hideBorder, }) => { return ( -
+
showExpand && setIsExpanded(!isExpanded)} + >
@@ -134,17 +139,12 @@ const BalanceDisplay = ({
{showExpand && ( -
setIsExpanded(!isExpanded)} - > - -
+ )}
@@ -169,7 +169,13 @@ const PortfolioCard = ({ }) => { return (
-
+
showExpand && setIsExpanded(!isExpanded)} + >
{showExpand && ( -
setIsExpanded(!isExpanded)} - > - -
+ )}
diff --git a/instances/treasury-devdao.near/widget/pages/dashboard/TransactionHistory.jsx b/instances/widgets.treasury-factory.near/widget/pages/dashboard/TransactionHistory.jsx similarity index 98% rename from instances/treasury-devdao.near/widget/pages/dashboard/TransactionHistory.jsx rename to instances/widgets.treasury-factory.near/widget/pages/dashboard/TransactionHistory.jsx index dd08c948..c7526d3e 100644 --- a/instances/treasury-devdao.near/widget/pages/dashboard/TransactionHistory.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/dashboard/TransactionHistory.jsx @@ -229,12 +229,6 @@ const Container = styled.div` table { overflow-x: auto; } - - .show-more-btn { - border: 1px solid var(--border-color) !important; - text-align: center; - background: none; - } `; function formatAccount(text) { @@ -397,13 +391,13 @@ return ( {showMoreLoading ? ( loader ) : ( -
+
{!hideViewMore && ( diff --git a/instances/treasury-devdao.near/widget/pages/dashboard/index.jsx b/instances/widgets.treasury-factory.near/widget/pages/dashboard/index.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/dashboard/index.jsx rename to instances/widgets.treasury-factory.near/widget/pages/dashboard/index.jsx diff --git a/instances/treasury-devdao.near/widget/pages/payments/CreatePaymentRequest.jsx b/instances/widgets.treasury-factory.near/widget/pages/payments/CreatePaymentRequest.jsx similarity index 99% rename from instances/treasury-devdao.near/widget/pages/payments/CreatePaymentRequest.jsx rename to instances/widgets.treasury-factory.near/widget/pages/payments/CreatePaymentRequest.jsx index 7457706c..92c09ba6 100644 --- a/instances/treasury-devdao.near/widget/pages/payments/CreatePaymentRequest.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/payments/CreatePaymentRequest.jsx @@ -227,10 +227,6 @@ const Container = styled.div` color: var(--theme-color) !important; } - .btn:hover { - color: black !important; - } - .warning { background-color: rgba(255, 158, 0, 0.1); color: #ff9e00; @@ -631,7 +627,7 @@ return ( src={`${REPL_DEVHUB}/widget/devhub.components.molecule.Button`} props={{ classNames: { - root: "btn-outline shadow-none border-0", + root: "btn btn-outline-secondary shadow-none no-transparent", }, label: "Cancel", onClick: () => { diff --git a/instances/treasury-devdao.near/widget/pages/payments/History.jsx b/instances/widgets.treasury-factory.near/widget/pages/payments/History.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/payments/History.jsx rename to instances/widgets.treasury-factory.near/widget/pages/payments/History.jsx diff --git a/instances/treasury-devdao.near/widget/pages/payments/PendingRequests.jsx b/instances/widgets.treasury-factory.near/widget/pages/payments/PendingRequests.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/payments/PendingRequests.jsx rename to instances/widgets.treasury-factory.near/widget/pages/payments/PendingRequests.jsx diff --git a/instances/treasury-devdao.near/widget/pages/payments/Table.jsx b/instances/widgets.treasury-factory.near/widget/pages/payments/Table.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/payments/Table.jsx rename to instances/widgets.treasury-factory.near/widget/pages/payments/Table.jsx diff --git a/instances/treasury-devdao.near/widget/pages/payments/index.jsx b/instances/widgets.treasury-factory.near/widget/pages/payments/index.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/payments/index.jsx rename to instances/widgets.treasury-factory.near/widget/pages/payments/index.jsx diff --git a/instances/treasury-devdao.near/widget/pages/proposals-feed/History.jsx b/instances/widgets.treasury-factory.near/widget/pages/proposals-feed/History.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/proposals-feed/History.jsx rename to instances/widgets.treasury-factory.near/widget/pages/proposals-feed/History.jsx diff --git a/instances/treasury-devdao.near/widget/pages/proposals-feed/PendingRequests.jsx b/instances/widgets.treasury-factory.near/widget/pages/proposals-feed/PendingRequests.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/proposals-feed/PendingRequests.jsx rename to instances/widgets.treasury-factory.near/widget/pages/proposals-feed/PendingRequests.jsx diff --git a/instances/treasury-devdao.near/widget/pages/proposals-feed/Table.jsx b/instances/widgets.treasury-factory.near/widget/pages/proposals-feed/Table.jsx similarity index 99% rename from instances/treasury-devdao.near/widget/pages/proposals-feed/Table.jsx rename to instances/widgets.treasury-factory.near/widget/pages/proposals-feed/Table.jsx index 37d72e5f..2a8e0b79 100644 --- a/instances/treasury-devdao.near/widget/pages/proposals-feed/Table.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/proposals-feed/Table.jsx @@ -277,7 +277,7 @@ const ProposalsComponent = () => { src={`${REPL_DEVHUB}/widget/devhub.components.molecule.Button`} props={{ classNames: { - root: "border p-2", + root: "btn btn-outline-secondary shadow-none", }, label: "Details", onClick: () => { diff --git a/instances/treasury-devdao.near/widget/pages/proposals-feed/index.jsx b/instances/widgets.treasury-factory.near/widget/pages/proposals-feed/index.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/proposals-feed/index.jsx rename to instances/widgets.treasury-factory.near/widget/pages/proposals-feed/index.jsx diff --git a/instances/treasury-devdao.near/widget/pages/settings/DeleteModalConfirmation.jsx b/instances/widgets.treasury-factory.near/widget/pages/settings/DeleteModalConfirmation.jsx similarity index 98% rename from instances/treasury-devdao.near/widget/pages/settings/DeleteModalConfirmation.jsx rename to instances/widgets.treasury-factory.near/widget/pages/settings/DeleteModalConfirmation.jsx index 015993fa..d7c5579c 100644 --- a/instances/treasury-devdao.near/widget/pages/settings/DeleteModalConfirmation.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/settings/DeleteModalConfirmation.jsx @@ -249,7 +249,9 @@ return (
-
+
{(selectedMember || memberAlreadyExists) && ( - - Delete - - ), + label: "Delete", + onClick: () => setShowDeleteModal(true), disabled: isTxnCreated || !username, }} @@ -313,7 +309,7 @@ return ( src={`${REPL_DEVHUB}/widget/devhub.components.molecule.Button`} props={{ classNames: { - root: "btn-outline shadow-none border-0", + root: "btn btn-outline-secondary shadow-none no-transparent", }, label: "Cancel", onClick: () => { diff --git a/instances/treasury-devdao.near/widget/pages/settings/MembersPage.jsx b/instances/widgets.treasury-factory.near/widget/pages/settings/MembersPage.jsx similarity index 99% rename from instances/treasury-devdao.near/widget/pages/settings/MembersPage.jsx rename to instances/widgets.treasury-factory.near/widget/pages/settings/MembersPage.jsx index 9468485e..0d2761f3 100644 --- a/instances/treasury-devdao.near/widget/pages/settings/MembersPage.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/settings/MembersPage.jsx @@ -217,7 +217,7 @@ const Members = () => { src={`${REPL_BASE_DEPLOYMENT_ACCOUNT}/widget/components.InsufficientBannerModal`} props={{ ActionButton: () => ( - + ), checkForDeposit: true, treasuryDaoID, diff --git a/instances/treasury-devdao.near/widget/pages/settings/RoleSelector.jsx b/instances/widgets.treasury-factory.near/widget/pages/settings/RoleSelector.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/settings/RoleSelector.jsx rename to instances/widgets.treasury-factory.near/widget/pages/settings/RoleSelector.jsx diff --git a/instances/treasury-devdao.near/widget/pages/settings/Theme.jsx b/instances/widgets.treasury-factory.near/widget/pages/settings/Theme.jsx similarity index 97% rename from instances/treasury-devdao.near/widget/pages/settings/Theme.jsx rename to instances/widgets.treasury-factory.near/widget/pages/settings/Theme.jsx index 0d0e67ae..f551b297 100644 --- a/instances/treasury-devdao.near/widget/pages/settings/Theme.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/settings/Theme.jsx @@ -5,6 +5,9 @@ const { encodeToMarkdown, hasPermission } = VM.require( hasPermission: () => {}, }; +const { href } = VM.require("${REPL_DEVHUB}/widget/core.lib.url") || { + href: () => {}, +}; const { TransactionLoader } = VM.require( `${REPL_BASE_DEPLOYMENT_ACCOUNT}/widget/components.TransactionLoader` ) || { TransactionLoader: () => <> }; @@ -14,7 +17,9 @@ if (!instance) { return <>; } -const { treasuryDaoID } = VM.require(`${instance}/widget/config.data`); +const { treasuryDaoID, themeColor } = VM.require( + `${instance}/widget/config.data` +); const hasCreatePermission = hasPermission( treasuryDaoID, @@ -329,7 +334,7 @@ function onSubmitClick() { function setDefault() { setImage(metadata?.flagLogo ?? defaultImage); - setColor(metadata?.primaryColor ?? defaultColor); + setColor(metadata?.primaryColor ?? themeColor ?? defaultColor); setSelectedTheme( ThemeOptions.find((i) => i.value === metadata?.theme) ?? ThemeOptions[0] ); @@ -437,7 +442,7 @@ return ( src={`${REPL_DEVHUB}/widget/devhub.components.molecule.Button`} props={{ classNames: { - root: "btn-outline shadow-none border-0", + root: "btn btn-outline-secondary shadow-none no-transparent", }, label: "Cancel", onClick: setDefault, diff --git a/instances/treasury-devdao.near/widget/pages/settings/Thresholds.jsx b/instances/widgets.treasury-factory.near/widget/pages/settings/Thresholds.jsx similarity index 99% rename from instances/treasury-devdao.near/widget/pages/settings/Thresholds.jsx rename to instances/widgets.treasury-factory.near/widget/pages/settings/Thresholds.jsx index ad0f39b3..5adf6fb6 100644 --- a/instances/treasury-devdao.near/widget/pages/settings/Thresholds.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/settings/Thresholds.jsx @@ -178,7 +178,7 @@ const Container = styled.div` } .dropdown-toggle:after { - top: 20% !important; + top: 30% !important; } `; @@ -381,7 +381,7 @@ return ( ))}
-
+
Voting Policy
@@ -472,7 +472,7 @@ return ( src={`${REPL_DEVHUB}/widget/devhub.components.molecule.Button`} props={{ classNames: { - root: "btn-outline shadow-none border-0", + root: "btn btn-outline-secondary shadow-none no-transparent", }, label: "Cancel", onClick: () => { diff --git a/instances/treasury-devdao.near/widget/pages/settings/VotingDurationPage.jsx b/instances/widgets.treasury-factory.near/widget/pages/settings/VotingDurationPage.jsx similarity index 98% rename from instances/treasury-devdao.near/widget/pages/settings/VotingDurationPage.jsx rename to instances/widgets.treasury-factory.near/widget/pages/settings/VotingDurationPage.jsx index b31f7237..f04437f1 100644 --- a/instances/treasury-devdao.near/widget/pages/settings/VotingDurationPage.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/settings/VotingDurationPage.jsx @@ -449,7 +449,9 @@ return (
diff --git a/instances/treasury-devdao.near/widget/pages/settings/feed/Table.jsx b/instances/widgets.treasury-factory.near/widget/pages/settings/feed/Table.jsx similarity index 99% rename from instances/treasury-devdao.near/widget/pages/settings/feed/Table.jsx rename to instances/widgets.treasury-factory.near/widget/pages/settings/feed/Table.jsx index 8f720c14..05e1c96a 100644 --- a/instances/treasury-devdao.near/widget/pages/settings/feed/Table.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/settings/feed/Table.jsx @@ -54,6 +54,7 @@ const columnsVisibility = JSON.parse( const Container = styled.div` font-size: 13px; min-height: 60vh; + display: flex; td { padding: 0.5rem; @@ -305,7 +306,7 @@ const ProposalsComponent = () => { src={`${REPL_DEVHUB}/widget/devhub.components.molecule.Button`} props={{ classNames: { - root: "border p-2", + root: "btn btn-outline-secondary shadow-none", }, label: "Details", onClick: () => { @@ -395,13 +396,13 @@ return ( proposals === null || settingsApproverGroup === null || policy === null ? ( -
+
) : ( -
+
{showDetailsProposalKind && ( { tabIndex="0" onBlur={() => setCreateBtnOpen(false)} > - +
{ diff --git a/instances/treasury-devdao.near/widget/pages/stake-delegation/CreateUnstakeRequest.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/CreateUnstakeRequest.jsx similarity index 99% rename from instances/treasury-devdao.near/widget/pages/stake-delegation/CreateUnstakeRequest.jsx rename to instances/widgets.treasury-factory.near/widget/pages/stake-delegation/CreateUnstakeRequest.jsx index 9fa39ba2..16b050db 100644 --- a/instances/treasury-devdao.near/widget/pages/stake-delegation/CreateUnstakeRequest.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/CreateUnstakeRequest.jsx @@ -591,7 +591,7 @@ return ( src={`${REPL_DEVHUB}/widget/devhub.components.molecule.Button`} props={{ classNames: { - root: "btn-outline shadow-none border-0", + root: "btn btn-outline-secondary shadow-none no-transparent", }, label: "Cancel", onClick: () => { diff --git a/instances/treasury-devdao.near/widget/pages/stake-delegation/CreateWithdrawRequest.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/CreateWithdrawRequest.jsx similarity index 99% rename from instances/treasury-devdao.near/widget/pages/stake-delegation/CreateWithdrawRequest.jsx rename to instances/widgets.treasury-factory.near/widget/pages/stake-delegation/CreateWithdrawRequest.jsx index 4196a40f..09e4aae4 100644 --- a/instances/treasury-devdao.near/widget/pages/stake-delegation/CreateWithdrawRequest.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/CreateWithdrawRequest.jsx @@ -477,7 +477,7 @@ return ( src={`${REPL_DEVHUB}/widget/devhub.components.molecule.Button`} props={{ classNames: { - root: "btn-outline shadow-none border-0", + root: "btn btn-outline-secondary shadow-none no-transparent", }, label: "Cancel", onClick: () => { diff --git a/instances/treasury-devdao.near/widget/pages/stake-delegation/History.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/History.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/stake-delegation/History.jsx rename to instances/widgets.treasury-factory.near/widget/pages/stake-delegation/History.jsx diff --git a/instances/treasury-devdao.near/widget/pages/stake-delegation/PendingRequests.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/PendingRequests.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/stake-delegation/PendingRequests.jsx rename to instances/widgets.treasury-factory.near/widget/pages/stake-delegation/PendingRequests.jsx diff --git a/instances/treasury-devdao.near/widget/pages/stake-delegation/SettingsDropdown.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/SettingsDropdown.jsx similarity index 98% rename from instances/treasury-devdao.near/widget/pages/stake-delegation/SettingsDropdown.jsx rename to instances/widgets.treasury-factory.near/widget/pages/stake-delegation/SettingsDropdown.jsx index cc4be62b..4f2582fd 100644 --- a/instances/treasury-devdao.near/widget/pages/stake-delegation/SettingsDropdown.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/SettingsDropdown.jsx @@ -115,7 +115,7 @@ return ( onBlur={() => setIsOpen(false)} >
diff --git a/instances/treasury-devdao.near/widget/pages/stake-delegation/Table.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/Table.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/stake-delegation/Table.jsx rename to instances/widgets.treasury-factory.near/widget/pages/stake-delegation/Table.jsx diff --git a/instances/treasury-devdao.near/widget/pages/stake-delegation/Type.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/Type.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/stake-delegation/Type.jsx rename to instances/widgets.treasury-factory.near/widget/pages/stake-delegation/Type.jsx diff --git a/instances/treasury-devdao.near/widget/pages/stake-delegation/Validator.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/Validator.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/stake-delegation/Validator.jsx rename to instances/widgets.treasury-factory.near/widget/pages/stake-delegation/Validator.jsx diff --git a/instances/treasury-devdao.near/widget/pages/stake-delegation/WalletDropdown.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/WalletDropdown.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/stake-delegation/WalletDropdown.jsx rename to instances/widgets.treasury-factory.near/widget/pages/stake-delegation/WalletDropdown.jsx diff --git a/instances/treasury-devdao.near/widget/pages/stake-delegation/index.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/index.jsx similarity index 100% rename from instances/treasury-devdao.near/widget/pages/stake-delegation/index.jsx rename to instances/widgets.treasury-factory.near/widget/pages/stake-delegation/index.jsx diff --git a/package.json b/package.json index 93cb2ca7..016f2c46 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,10 @@ "bw:build:infinex": "npm run bw:build:instance --instance=treasury-infinex.near", "bw:build:infinex-testing": "npm run bw:build:instance --instance=treasury-testing-infinex.near", "bw:build:templar": "npm run bw:build:instance --instance=treasury-templar.near", + "bw:build:widgets": "npm run bw:build:instance --instance=widgets.treasury-factory.near", + "bw:build:test-widgets": "npm run bw:build:instance --instance=test-widgets.treasury-factory.near", + "bw:build:bootstrap": "npm run bw:build:instance --instance=bootstrap.treasury-factory.near", + "bw:build:test-bootstrap": "npm run bw:build:instance --instance=test-bootstrap.treasury-factory.near", "build:sandbox": "cd sandboxrpc && cargo build", "gateway": "bw ws dev -g web4/public_html", "dry-run:instances": "cd ./build/$npm_config_instance && bos components diff $npm_config_instance network-config mainnet", @@ -53,6 +57,14 @@ "dry-run:infinex": "npm run bw:build:infinex && npm run dry-run:instances --instance=treasury-infinex.near", "deploy:templar": "npm run bw:build:templar && cd ./build/treasury-templar.near && bos components deploy", "dry-run:templar": "npm run bw:build:templar && npm run dry-run:instances --instance=treasury-templar.near", + "deploy:test-bootstrap": "npm run bw:build:test-bootstrap && cd ./build/test-bootstrap.treasury-factory.near && bos components deploy", + "dry-run:test-bootstrap": "npm run bw:build:test-bootstrap && npm run dry-run:instances --instance=test-bootstrap.treasury-factory.near", + "deploy:bootstrap": "npm run bw:build:bootstrap && cd ./build/bootstrap.treasury-factory.near && bos components deploy", + "dry-run:bootstrap": "npm run bw:build:bootstrap && npm run dry-run:instances --instance=bootstrap.treasury-factory.near", + "deploy:test-widgets": "npm run bw:build:test-widgets && cd ./build/test-widgets.treasury-factory.near && bos components deploy", + "dry-run:test-widgets": "npm run bw:build:test-widgets && npm run dry-run:instances --instance=test-widgets.treasury-factory.near", + "deploy:widgets": "npm run bw:build:widgets && cd ./build/widgets.treasury-factory.near && bos components deploy", + "dry-run:widgets": "npm run bw:build:widgets && npm run dry-run:instances --instance=widgets.treasury-factory.near", "test": "npx playwright test", "test:watch:codespaces": "npm test -- --ui-host=0.0.0.0" }, diff --git a/playwright-tests/tests/payments/create-payment-request.spec.js b/playwright-tests/tests/payments/create-payment-request.spec.js index aceceed4..634a6556 100644 --- a/playwright-tests/tests/payments/create-payment-request.spec.js +++ b/playwright-tests/tests/payments/create-payment-request.spec.js @@ -626,9 +626,9 @@ test.describe("admin with function access keys", function () { await totalAmountField.pressSequentially("20"); await totalAmountField.blur(); } - const submitBtn = page.getByRole("button", { name: "Submit" }); - await expect(submitBtn).toBeAttached({ timeout: 10_000 }); - await submitBtn.scrollIntoViewIfNeeded({ timeout: 10_000 }); + const submitBtn = await page.getByRole("button", { name: "Submit" }); + await expect(submitBtn).toBeEnabled({ timeout: 20_000 }); + await submitBtn.scrollIntoViewIfNeeded({ timeout: 20_000 }); await submitBtn.click(); const expectedTransactionModalObject = instanceConfig.showProposalSelection @@ -761,9 +761,12 @@ test.describe("admin with function access keys", function () { await expect( page.getByRole("cell", { name: `${newProposalId}`, exact: true }) ).toBeVisible({ timeout: 10_000 }); + const widgetsAccount = + (instanceAccount.includes("testing") ? "test-widgets" : "widgets") + + ".treasury-factory.near"; const firstRow = page .locator( - 'tr[data-component="treasury-devdao.near/widget/pages.payments.Table"]' + `tr[data-component="${widgetsAccount}/widget/pages.payments.Table"]` ) .nth(1); await expect(firstRow).toContainText( diff --git a/playwright-tests/tests/payments/vote-on-request.spec.js b/playwright-tests/tests/payments/vote-on-request.spec.js index aedde02a..f34af3aa 100644 --- a/playwright-tests/tests/payments/vote-on-request.spec.js +++ b/playwright-tests/tests/payments/vote-on-request.spec.js @@ -74,10 +74,14 @@ async function voteOnProposal({ }, }); + const widgetsAccount = + (instanceAccount.includes("testing") === true + ? "test-widgets" + : "widgets") + ".treasury-factory.near"; await page.goto(`/${instanceAccount}/widget/app?page=payments`); await setDontAskAgainCacheValues({ page, - widgetSrc: "treasury-devdao.near/widget/components.VoteActions", + widgetSrc: `${widgetsAccount}/widget/components.VoteActions`, contractId, methodName: "act_proposal", }); diff --git a/playwright-tests/tests/settings/create-member-request.spec.js b/playwright-tests/tests/settings/create-member-request.spec.js index 8e64d5f5..abe80642 100644 --- a/playwright-tests/tests/settings/create-member-request.spec.js +++ b/playwright-tests/tests/settings/create-member-request.spec.js @@ -441,7 +441,7 @@ test.describe("User is logged in", function () { accountInput.fill("megha19.near"); await accountInput.blur(); await expect(page.getByText("This user is already a member")).toBeVisible(); - await expect(page.getByRole("button", { name: " Delete" })).toBeVisible(); + await expect(page.getByRole("button", { name: "Delete" })).toBeVisible(); }); test("should update existing member permissions", async ({ page }) => { @@ -610,7 +610,7 @@ test.describe("User is logged in", function () { .locator(".offcanvas-body") .getByText("Create Requests", { exact: true }) ).toBeVisible(); - await page.getByRole("button", { name: " Delete" }).click(); + await page.getByRole("button", { name: "Delete" }).click(); await expect( page.getByRole("heading", { name: "Are you sure?" }) ).toBeVisible(); diff --git a/playwright-tests/tests/settings/request-feed.spec.js b/playwright-tests/tests/settings/request-feed.spec.js index 70574f41..fdb389a3 100644 --- a/playwright-tests/tests/settings/request-feed.spec.js +++ b/playwright-tests/tests/settings/request-feed.spec.js @@ -103,9 +103,14 @@ async function voteOnProposal({ }); await page.goto(`/${instanceAccount}/widget/app?page=settings`); + const widgetsAccount = + (instanceAccount.includes("testing") === true + ? "test-widgets" + : "widgets") + ".treasury-factory.near"; + await setDontAskAgainCacheValues({ page, - widgetSrc: "treasury-devdao.near/widget/components.VoteActions", + widgetSrc: `${widgetsAccount}/widget/components.VoteActions`, contractId, methodName: "act_proposal", }); diff --git a/playwright-tests/tests/stake-delegation/stake-delegation.spec.js b/playwright-tests/tests/stake-delegation/stake-delegation.spec.js index 759550aa..1bae8674 100644 --- a/playwright-tests/tests/stake-delegation/stake-delegation.spec.js +++ b/playwright-tests/tests/stake-delegation/stake-delegation.spec.js @@ -377,13 +377,18 @@ async function voteOnProposal({ }); await page.goto(`/${instanceAccount}/widget/app?page=stake-delegation`); + const widgetsAccount = + (instanceAccount.includes("testing") === true + ? "test-widgets" + : "widgets") + ".treasury-factory.near"; await setDontAskAgainCacheValues({ page, - widgetSrc: "treasury-devdao.near/widget/components.VoteActions", + widgetSrc: `${widgetsAccount}/widget/components.VoteActions`, contractId, methodName: "act_proposal", }); + await expect( await page.locator("div").filter({ hasText: /^Stake Delegation$/ }) ).toBeVisible({ timeout: 20_000 }); @@ -816,14 +821,24 @@ test.describe("Withdraw request", function () { }); }); -async function openLockupStakingForm({ page, daoAccount, lockupContract }) { +async function openLockupStakingForm({ + page, + daoAccount, + lockupContract, + instanceAccount, +}) { const createRequestButton = await page.getByText("Create Request", { exact: true, }); await createRequestButton.click(); + const widgetsAccount = + (instanceAccount.includes("testing") === true + ? "test-widgets" + : "widgets") + ".treasury-factory.near"; + await page .locator( - 'div[data-component="treasury-devdao.near/widget/pages.stake-delegation.CreateButton"] .option', + `div[data-component="${widgetsAccount}/widget/pages.stake-delegation.CreateButton"] .option`, { hasText: "Stake" } ) .first() @@ -907,9 +922,15 @@ test.describe("Lockup staking", function () { page, daoAccount, lockupContract, + instanceAccount, }) => { test.setTimeout(120_000); - await openLockupStakingForm({ page, daoAccount, lockupContract }); + await openLockupStakingForm({ + page, + daoAccount, + lockupContract, + instanceAccount, + }); await fillValidatorAccount({ page, }); @@ -1019,9 +1040,15 @@ test.describe("Lockup staking", function () { page, daoAccount, lockupContract, + instanceAccount, }) => { test.setTimeout(120_000); - await openLockupStakingForm({ page, daoAccount, lockupContract }); + await openLockupStakingForm({ + page, + daoAccount, + lockupContract, + instanceAccount, + }); await page.waitForTimeout(20_000); const poolSelector = page.locator(".custom-select").first(); await expect(poolSelector).toBeVisible({ timeout: 20_000 }); diff --git a/playwright-tests/tests/web4/web4.spec.js b/playwright-tests/tests/web4/web4.spec.js index 6f798ecb..286eeaad 100644 --- a/playwright-tests/tests/web4/web4.spec.js +++ b/playwright-tests/tests/web4/web4.spec.js @@ -18,10 +18,15 @@ test("should go directly to app widget for instance", async ({ await route.continue({ url: baseURL }); }); await page.goto(pageOrigin); + const widgetsAccount = + (instanceAccount.includes("testing") === true + ? "test-widgets" + : "widgets") + ".treasury-factory.near"; + await expect( await page .locator( - 'div[data-component="treasury-devdao.near/widget/components.Navbar"]' + `div[data-component="${widgetsAccount}/widget/components.Navbar"]` ) .first() ).toContainText(daoAccount); From d7dc04e47c207df308afc74d83e1b725a4bb0643 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 15 Jan 2025 23:39:18 +0200 Subject: [PATCH 2/7] web4 typo in url link (#219) --- .../widget/components/create-treasury/SummaryStep.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx b/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx index 43e010a8..88a25562 100644 --- a/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx +++ b/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx @@ -372,7 +372,7 @@ return ( />
From 9800a05129672b8be4b9059aa83c113955b0485d Mon Sep 17 00:00:00 2001 From: rubycop Date: Sat, 18 Jan 2025 14:31:45 +0200 Subject: [PATCH 3/7] Treasuury creation UI fixes --- .../create-treasury/AddMembersStep.jsx | 8 ++- .../create-treasury/CreateAppAccountStep.jsx | 38 +++++++++++++ .../CreateSputnikAccountStep.jsx | 4 +- .../create-treasury/SummaryStep.jsx | 55 ++++++------------- .../widget/pages/treasury/Create.jsx | 4 -- .../tests/page.treasury-factory.near.spec.js | 7 --- 6 files changed, 61 insertions(+), 55 deletions(-) diff --git a/instances/treasury-factory.near/widget/components/create-treasury/AddMembersStep.jsx b/instances/treasury-factory.near/widget/components/create-treasury/AddMembersStep.jsx index b2629b7e..98858943 100644 --- a/instances/treasury-factory.near/widget/components/create-treasury/AddMembersStep.jsx +++ b/instances/treasury-factory.near/widget/components/create-treasury/AddMembersStep.jsx @@ -159,13 +159,15 @@ return (
Back 0 ? "" : "disabled" + }`} + href={`/${REPL_BASE_DEPLOYMENT_ACCOUNT}/widget/app?page=create-treasury&step=3`} > Next diff --git a/instances/treasury-factory.near/widget/components/create-treasury/CreateAppAccountStep.jsx b/instances/treasury-factory.near/widget/components/create-treasury/CreateAppAccountStep.jsx index 20d7848d..4a91dc8a 100644 --- a/instances/treasury-factory.near/widget/components/create-treasury/CreateAppAccountStep.jsx +++ b/instances/treasury-factory.near/widget/components/create-treasury/CreateAppAccountStep.jsx @@ -2,6 +2,30 @@ const { formFields, setFormFields } = props; const [alertMsg, setAlertMsg] = useState(null); +const AccountDisplay = ({ label, prefix, tooltipInfo, noBorder }) => { + return ( +
+
+
+
+ {label} + {tooltipInfo}} + > + + +
+
+
{formFields.accountName}
+
{prefix}
+
+
+
+
+ ); +}; + return ( <>
@@ -28,6 +52,20 @@ return ( }} /> +
+ + +
+ {(alertMsg[".near"] || alertMsg[".sputnik-dao.near"]) && (

Add Sputnik DAO Display Name

- Enter the display name for your treasury's Sputnik DAO account. The - funds for your treasury will be held in{" "} - {formFields.accountName}.sputnik-dao.near. + Enter the display name for your treasury's Sputnik DAO account.

diff --git a/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx b/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx index 88a25562..6a9dfc41 100644 --- a/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx +++ b/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx @@ -84,11 +84,17 @@ const PERMISSIONS = { const storageAccountName = useMemo(() => Storage.privateGet("accountName")); -useEffect(() => { - if (storageAccountName) { - setShowCongratsModal(true); - } -}, [storageAccountName]); +const checkAccountCreation = async () => { + const web4 = Near.view(`${formFields.accountName}.near`, "web4_get", { + request: { path: "/" }, + }); + + if (web4) setShowCongratsModal(true); +}; + +useEffect(async () => { + checkAccountCreation(); +}, []); function filterMemberByPermission(permission) { return formFields.members @@ -99,8 +105,8 @@ function filterMemberByPermission(permission) { function createDao() { const createDaoConfig = { config: { - name: `${formFields.sputnikAccountName}`, - purpose: `creating ${formFields.sputnikAccountName} treasury`, + name: `${formFields.accountName}`, + purpose: `creating ${formFields.accountName} treasury`, metadata: "", }, policy: { @@ -167,9 +173,7 @@ function createDao() { }, ]); - setTimeout(() => { - Storage.privateSet("accountName", formFields.accountName); - }, 1000); + Storage.privateSet("accountName", formFields.accountName); } const CongratsItem = ({ title, link }) => ( @@ -277,31 +281,13 @@ return (
- -
-
-
- -
- {formFields.sputnikAccountName - ? `${formFields.sputnikAccountName}` - : "-"} -
-
- - - -
-

Members and permissions

@@ -339,11 +325,7 @@ return ( @@ -377,10 +359,7 @@ return (
), - onClose: () => { - setShowCongratsModal(false); - Storage.privateSet("accountName", null); - }, + onClose: () => setShowCongratsModal(false), }} /> )} diff --git a/instances/treasury-factory.near/widget/pages/treasury/Create.jsx b/instances/treasury-factory.near/widget/pages/treasury/Create.jsx index c47d2c2a..6290032a 100644 --- a/instances/treasury-factory.near/widget/pages/treasury/Create.jsx +++ b/instances/treasury-factory.near/widget/pages/treasury/Create.jsx @@ -20,10 +20,6 @@ const STEPS = [ src={`${widgetBasePath}.CreateAppAccountStep`} props={{ formFields, setFormFields }} />, - , Date: Sat, 18 Jan 2025 14:39:46 +0200 Subject: [PATCH 4/7] fmt fixes --- .../components/create-treasury/CreateAppAccountStep.jsx | 2 +- .../components/create-treasury/CreateSputnikAccountStep.jsx | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/instances/treasury-factory.near/widget/components/create-treasury/CreateAppAccountStep.jsx b/instances/treasury-factory.near/widget/components/create-treasury/CreateAppAccountStep.jsx index 4a91dc8a..fd9fa404 100644 --- a/instances/treasury-factory.near/widget/components/create-treasury/CreateAppAccountStep.jsx +++ b/instances/treasury-factory.near/widget/components/create-treasury/CreateAppAccountStep.jsx @@ -17,7 +17,7 @@ const AccountDisplay = ({ label, prefix, tooltipInfo, noBorder }) => {
-
{formFields.accountName}
+
{formFields.accountName}
{prefix}
diff --git a/instances/treasury-factory.near/widget/components/create-treasury/CreateSputnikAccountStep.jsx b/instances/treasury-factory.near/widget/components/create-treasury/CreateSputnikAccountStep.jsx index 00f635d9..8b4b018a 100644 --- a/instances/treasury-factory.near/widget/components/create-treasury/CreateSputnikAccountStep.jsx +++ b/instances/treasury-factory.near/widget/components/create-treasury/CreateSputnikAccountStep.jsx @@ -14,9 +14,7 @@ return ( <>

Add Sputnik DAO Display Name

-

- Enter the display name for your treasury's Sputnik DAO account. -

+

Enter the display name for your treasury's Sputnik DAO account.

From 5d29ec7c15964088bbb42c18e683e6ad6e9eb4e7 Mon Sep 17 00:00:00 2001 From: rubycop Date: Sat, 18 Jan 2025 14:55:48 +0200 Subject: [PATCH 5/7] post hook fixes --- .../widget/components/create-treasury/SummaryStep.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx b/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx index 6a9dfc41..09786dbb 100644 --- a/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx +++ b/instances/treasury-factory.near/widget/components/create-treasury/SummaryStep.jsx @@ -85,7 +85,8 @@ const PERMISSIONS = { const storageAccountName = useMemo(() => Storage.privateGet("accountName")); const checkAccountCreation = async () => { - const web4 = Near.view(`${formFields.accountName}.near`, "web4_get", { + console.log(storageAccountName); + const web4 = Near.view(`${storageAccountName}.near`, "web4_get", { request: { path: "/" }, }); @@ -93,8 +94,8 @@ const checkAccountCreation = async () => { }; useEffect(async () => { - checkAccountCreation(); -}, []); + if (storageAccountName) checkAccountCreation(); +}, [storageAccountName]); function filterMemberByPermission(permission) { return formFields.members From 8b90357fec6e2e8b15c95f0df34cfcbff199186c Mon Sep 17 00:00:00 2001 From: rubycop Date: Sat, 18 Jan 2025 18:43:11 +0200 Subject: [PATCH 6/7] table fixes --- .../widget/components/TokenAmount.jsx | 4 ++-- .../widget/components/TokenIcon.jsx | 6 +++--- .../widget/components/templates/AppLayout.jsx | 6 +++++- .../widget/pages/dashboard/Portfolio.jsx | 4 +++- .../widget/pages/payments/Table.jsx | 4 ++++ .../widget/pages/stake-delegation/Table.jsx | 4 ++++ 6 files changed, 21 insertions(+), 7 deletions(-) diff --git a/instances/widgets.treasury-factory.near/widget/components/TokenAmount.jsx b/instances/widgets.treasury-factory.near/widget/components/TokenAmount.jsx index 15360b1b..3bca6c66 100644 --- a/instances/widgets.treasury-factory.near/widget/components/TokenAmount.jsx +++ b/instances/widgets.treasury-factory.near/widget/components/TokenAmount.jsx @@ -33,9 +33,9 @@ return ( })} {isNEAR ? ( - + ) : ( - + )}
{/* TODO later */} diff --git a/instances/widgets.treasury-factory.near/widget/components/TokenIcon.jsx b/instances/widgets.treasury-factory.near/widget/components/TokenIcon.jsx index aa219e2d..e581520c 100644 --- a/instances/widgets.treasury-factory.near/widget/components/TokenIcon.jsx +++ b/instances/widgets.treasury-factory.near/widget/components/TokenIcon.jsx @@ -16,11 +16,11 @@ if (!isNEAR) { } return ( -
+
{isNEAR ? ( - + ) : ( - + )} {ftMetadata.symbol}
diff --git a/instances/widgets.treasury-factory.near/widget/components/templates/AppLayout.jsx b/instances/widgets.treasury-factory.near/widget/components/templates/AppLayout.jsx index f0ee0f16..dcc732aa 100644 --- a/instances/widgets.treasury-factory.near/widget/components/templates/AppLayout.jsx +++ b/instances/widgets.treasury-factory.near/widget/components/templates/AppLayout.jsx @@ -289,7 +289,7 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { .custom-truncate { display: -webkit-box; - -webkit-line-clamp: 3; + -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; @@ -440,6 +440,10 @@ function AppLayout({ page, instance, children, treasuryDaoID, accountId }) { border-color: var(--border-color) !important; color: var(--text-color) !important; margin-bottom: 20px; + + .amount { + font-size: 14px; + } } .table td:first-child { diff --git a/instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx b/instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx index 70080c2b..acd7f2ed 100644 --- a/instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx @@ -184,7 +184,9 @@ const PortfolioCard = ({
{Icon ? : }
-
{symbol}
+
+ {symbol} +
${Big(price ?? "0").toFixed(2)}
diff --git a/instances/widgets.treasury-factory.near/widget/pages/payments/Table.jsx b/instances/widgets.treasury-factory.near/widget/pages/payments/Table.jsx index 75f16ed4..493a9558 100644 --- a/instances/widgets.treasury-factory.near/widget/pages/payments/Table.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/payments/Table.jsx @@ -66,6 +66,10 @@ const Container = styled.div` background: inherit; } + thead td { + text-wrap: nowrap; + } + table { overflow-x: auto; } diff --git a/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/Table.jsx b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/Table.jsx index 27c1a10a..4f8051a2 100644 --- a/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/Table.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/stake-delegation/Table.jsx @@ -92,6 +92,10 @@ const Container = styled.div` table { overflow-x: auto; + + thead td { + text-wrap: nowrap; + } } .text-warning { From 01cd74948f0a96b50a255977d2c9fda664c9138c Mon Sep 17 00:00:00 2001 From: rubycop Date: Mon, 20 Jan 2025 15:00:10 +0200 Subject: [PATCH 7/7] fmt --- .../widget/pages/dashboard/Portfolio.jsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx b/instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx index acd7f2ed..d1fe2262 100644 --- a/instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx +++ b/instances/widgets.treasury-factory.near/widget/pages/dashboard/Portfolio.jsx @@ -184,7 +184,10 @@ const PortfolioCard = ({
{Icon ? : }
-
+
{symbol}