Skip to content

Commit bcd40e3

Browse files
authored
update file structure (#233)
## Goal The goal of this PR is to update the file structure to something more readable Closes #211 ## Discussion - created atoms, features, and pages sub directories - grouped features component into feature specific sub directories - an **atom** is something like a button, card or modal - very general - a **feature** is a component or group of components that make up an app-specific feature. Rule of thumb to be included in a feature directory is if you are a child component that is only used in that specific feature. If a child component is used in more than one page or feature and not an atom, they become their own feature. - **pages** are used for components that define a whole page's content but are used conditionally on the same path. ## Checklist - [ ] PR Self-Review and Commenting - [ ] Docs updated - [ ] Tests added ## How To Test the Changes 1. Clone the pr branch 2. `npm run dev` 3. check that the app still runs as expected 4. navigate through the file structure
1 parent 46d9b3d commit bcd40e3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+149
-163
lines changed

src/components/BecomeAProvider.svelte

Lines changed: 0 additions & 47 deletions
This file was deleted.

src/components/KeySelection.svelte

Lines changed: 0 additions & 29 deletions
This file was deleted.

src/components/AddToClipboard.svelte renamed to src/components/atoms/AddToClipboard.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts">
2-
import CopyIcon from '../lib/assets/CopyIcon.svelte';
2+
import CopyIcon from '$lib/assets/CopyIcon.svelte';
33
44
let origFill = '#000';
55
@@ -37,5 +37,5 @@
3737

3838
<div class="{classes} flex flex-col">
3939
<CopyIcon {fill} {handleClick} {handleMouseEnter} {handleMouseLeave} />
40-
<span class="top-f24 absolute text-xs {!isClicked && 'hidden'}">Copied</span>
40+
<span class="top-f24 absolute text-xs whitespace-nowrap {!isClicked && 'hidden'}">Copied</span>
4141
</div>
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<script lang="ts">
2+
import BackHomeButton from '$atoms/BackHomeButton.svelte';
3+
import { NetworkType } from '$lib/stores/networksStore';
4+
import { user } from '$lib/stores/userStore';
5+
import CreateMsa from './CreateMsa.svelte';
6+
import CreateProvider from './CreateProvider.svelte';
7+
import RequestToBeProvider from './RequestToBeProvider.svelte';
8+
9+
interface Props {
10+
hasRequestedToBeProvider: boolean;
11+
}
12+
13+
let { hasRequestedToBeProvider = $bindable(), ...rest }: Props = $props();
14+
</script>
15+
16+
{#if $user && $user?.address !== ''}
17+
{#if $user?.msaId === 0}
18+
<CreateMsa />
19+
{:else if $user?.network?.id === NetworkType.MAINNET}
20+
<RequestToBeProvider bind:hasRequestedToBeProvider />
21+
{:else}
22+
<CreateProvider />
23+
{/if}
24+
{:else}
25+
<BackHomeButton cancelText="Back" />
26+
{/if}

src/components/CreateMsa.svelte renamed to src/components/features/BecomeProviderNextSteps/CreateMsa.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
import { user } from '$lib/stores/userStore';
1010
import { getMsaInfo } from '$lib/polkadotApi';
1111
import LoadingIcon from '$lib/assets/LoadingIcon.svelte';
12-
import ActivityLogPreviewItem from './ActivityLogPreviewItem.svelte';
1312
import { activityLog } from '$lib/stores/activityLogStore';
14-
import BackToRootButton from '$components/BackHomeButton.svelte';
13+
import BackToRootButton from '$atoms/BackHomeButton.svelte';
14+
import ActivityLogPreviewItem from '$features/ActivityLogItem/ActivityLogItem.svelte';
1515
1616
let recentActivityItem: Activity | undefined = $state();
1717
let recentTxnId: Activity['txnId'] | undefined = $state();

src/components/CreateProvider.svelte renamed to src/components/features/BecomeProviderNextSteps/CreateProvider.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
import { TxnStatus, type Activity, type MsaInfo } from '$lib/storeTypes';
1010
import LoadingIcon from '$lib/assets/LoadingIcon.svelte';
1111
import { activityLog } from '$lib/stores/activityLogStore';
12-
import ActivityLogPreviewItem from './ActivityLogPreviewItem.svelte';
13-
import BackHomeButton from '$components/BackHomeButton.svelte';
12+
import ActivityLogPreviewItem from '../ActivityLogItem/ActivityLogItem.svelte';
13+
import BackHomeButton from '$atoms/BackHomeButton.svelte';
1414
import { Button } from '@frequency-chain/style-guide';
1515
import { goto } from '$app/navigation';
1616
// TODO: uncomment on transition to svelte 5

src/components/RequestToBeProvider.svelte renamed to src/components/features/BecomeProviderNextSteps/RequestToBeProvider.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import { createMailto, getExtension, providerNameToHuman } from '$lib/utils';
77
import { user } from '$lib/stores/userStore';
88
import { activityLog } from '$lib/stores/activityLogStore';
9-
import ActivityLogPreviewItem from './ActivityLogPreviewItem.svelte';
10-
import BackHomeButton from '$components/BackHomeButton.svelte';
9+
import BackHomeButton from '$atoms/BackHomeButton.svelte';
1110
import LoadingIcon from '$lib/assets/LoadingIcon.svelte';
1211
import { getMsaInfo } from '$lib/polkadotApi';
12+
import ActivityLogPreviewItem from '$features/ActivityLogItem/ActivityLogItem.svelte';
1313
1414
let { hasRequestedToBeProvider = $bindable(), ...props } = $props();
1515

src/components/Capacity.svelte renamed to src/components/features/Capacity/Capacity.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import { activityLog } from '$lib/stores/activityLogStore';
55
import { defaultCapacityDetails, getCapacityInfo, type CapacityDetails } from '$lib/polkadotApi';
66
import { balanceToHuman } from '$lib/utils.js';
7-
import ListCard from './ListCard.svelte';
7+
import ListCard from '../../atoms/ListCard.svelte';
88
import Stake from './Stake.svelte';
99
import { Button } from '@frequency-chain/style-guide';
1010

src/components/Stake.svelte renamed to src/components/features/Capacity/Stake.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts">
2-
import Modal from './Modal.svelte';
2+
import Modal from '../../atoms/Modal.svelte';
33
import StakeForm from './StakeForm.svelte';
44
import { storeChainInfo } from '$lib/stores';
55

src/components/StakeForm.svelte renamed to src/components/features/Capacity/StakeForm.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import type { ApiPromise } from '@polkadot/api';
66
import { DOLLARS, submitStake } from '$lib/connections';
77
import { formatAccount, getExtension } from '$lib/utils';
8-
import DropDownMenu from './DropDownMenu.svelte';
8+
import DropDownMenu from '../../atoms/DropDownMenu.svelte';
99
import { type Account, allAccountsStore } from '$lib/stores/accountsStore';
1010
import { Button } from '@frequency-chain/style-guide';
1111

src/components/ConnectProvider.svelte renamed to src/components/features/Header/ConnectProvider.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
2-
import Modal from '../components/Modal.svelte';
3-
import LoginForm from './LoginForm.svelte';
2+
import Modal from '../../atoms/Modal.svelte';
3+
import LoginForm from '../LoginForm/LoginForm.svelte';
44
interface Props {
55
close?: () => void;
66
isOpen?: boolean;

src/components/LoginForm.svelte renamed to src/components/features/LoginForm/LoginForm.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import { clearLog } from '$lib/stores/activityLogStore';
44
import { user } from '$lib/stores/userStore';
55
import { Button } from '@frequency-chain/style-guide';
6-
import SelectNetworkAndAccount from './SelectNetworkAndAccount.svelte';
6+
import SelectNetworkAndAccount from '../SelectNetworkAndAccount/SelectNetworkAndAccount.svelte';
77
88
// Props
99
interface Props {

src/components/Nav.svelte renamed to src/components/features/Nav/Nav.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script lang="ts">
22
import { logout } from '$lib/stores';
33
import { isLoggedIn } from '$lib/stores';
4-
import NavItem from '$components/NavItem.svelte';
4+
import NavItem from './NavItem.svelte';
55
66
let url = $state();
77

src/components/ActivityLogPreview.svelte renamed to src/components/features/ProfileOverview/ActivityLogPreview.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script lang="ts">
2-
import ActivityLogPreviewItem from './ActivityLogPreviewItem.svelte';
2+
import ActivityLogPreviewItem from '../ActivityLogItem/ActivityLogItem.svelte';
33
import { activityLog } from '$lib/stores/activityLogStore';
44
import type { Activity } from '$lib/storeTypes';
55

src/components/Profile.svelte renamed to src/components/features/ProfileOverview/Profile.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
22
import { user } from '$lib/stores/userStore';
3-
import AddToClipboard from './AddToClipboard.svelte';
3+
import AddToClipboard from '../../atoms/AddToClipboard.svelte';
44
</script>
55

66
<div class="flex flex-col items-center gap-2 md:min-w-[300px] md:flex-row md:gap-4">

src/components/DashboardHeader.svelte renamed to src/components/features/ProfileOverview/ProfileOverview.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
2-
import Profile from '$components/Profile.svelte';
3-
import ActivityLogPreview from '$components/ActivityLogPreview.svelte';
2+
import Profile from '$features/ProfileOverview/Profile.svelte';
3+
import ActivityLogPreview from '$features/ProfileOverview/ActivityLogPreview.svelte';
44
</script>
55

66
<div class="content-block flex flex-col justify-between gap-2 break-all md:gap-16 lg:flex-row">

src/components/AddAccountId.svelte renamed to src/components/features/Provider/AddAccountId.svelte

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script lang="ts">
2-
import AddKeyRequirements from './AddKeyRequirements.svelte';
3-
import Modal from './Modal.svelte';
2+
import Modal from '../../atoms/Modal.svelte';
43
import { user } from '$lib/stores/userStore';
54
import { type Account } from '$lib/stores/accountsStore';
6-
import AddAccountIdForm from '$components/AddAccountIdForm.svelte';
5+
import AddAccountIdForm from './AddAccountIdForm.svelte';
6+
import AddAccountIdRequirements from './AddAccountIdRequirements.svelte';
77
88
interface Props {
99
isOpen: boolean;
@@ -33,7 +33,7 @@
3333

3434
<span class="border-b-divider min-w-full border-b"></span>
3535

36-
<AddKeyRequirements />
36+
<AddAccountIdRequirements />
3737
</div>
3838
{/snippet}
3939
</Modal>

src/components/AddAccountIdForm.svelte renamed to src/components/features/Provider/AddAccountIdForm.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script lang="ts">
22
import { Account, unusedKeyAccountsStore } from '$lib/stores/accountsStore.js';
33
import { formatAccount, getExtension } from '$lib/utils.js';
4-
import DropDownMenu from '$components/DropDownMenu.svelte';
4+
import DropDownMenu from '$atoms/DropDownMenu.svelte';
55
import { Button } from '@frequency-chain/style-guide';
66
import { user } from '$lib/stores/userStore.js';
77
import { submitAddAccountId } from '$lib/connections.js';

src/components/Provider.svelte renamed to src/components/features/Provider/Provider.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import { balanceToHuman } from '$lib/utils';
88
import { getBalances } from '$lib/polkadotApi';
99
import type { AccountBalances } from '$lib/polkadotApi';
10-
import ListCard from './ListCard.svelte';
10+
import ListCard from '../../atoms/ListCard.svelte';
1111
import AddAccountId from './AddAccountId.svelte';
1212
import { Button } from '@frequency-chain/style-guide';
1313

src/components/SelectNetworkAndAccount.svelte renamed to src/components/features/SelectNetworkAndAccount/SelectNetworkAndAccount.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import { Account, fetchAccountsForNetwork, type Accounts } from '$lib/stores/accountsStore';
77
import type { ApiPromise } from '@polkadot/api';
88
import type { web3Enable, web3Accounts } from '@polkadot/extension-dapp';
9-
import DropDownMenu from '$components/DropDownMenu.svelte';
9+
import DropDownMenu from '$atoms/DropDownMenu.svelte';
1010
import { formatNetwork, formatAccount, isValidURL } from '$lib/utils';
1111
import { createApi } from '$lib/polkadotApi';
1212

src/components/Dashboard.svelte renamed to src/components/pages/Dashboard.svelte

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
<script lang="ts">
22
import { run } from 'svelte/legacy';
33
4-
import Capacity from '$components/Capacity.svelte';
5-
import Provider from '$components/Provider.svelte';
6-
import DashboardHeader from '$components/DashboardHeader.svelte';
7-
import ChainStatus from '$components/ChainStatus.svelte';
4+
import Capacity from '$features/Capacity/Capacity.svelte';
5+
import Provider from '$features/Provider/Provider.svelte';
6+
import ProfileOverview from '$features/ProfileOverview/ProfileOverview.svelte';
87
import { fetchAccountsForNetwork } from '$lib/stores/accountsStore';
98
import { user } from '$lib/stores/userStore';
109
import type { ApiPromise } from '@polkadot/api';
1110
import { dotApi } from '$lib/stores';
1211
import { onMount } from 'svelte';
1312
import type { web3Enable, web3Accounts } from '@polkadot/extension-dapp';
13+
import ChainStatus from '$features/ChainStatus/ChainStatus.svelte';
1414
1515
let thisWeb3Accounts: typeof web3Accounts | undefined = $state();
1616
let thisWeb3Enable: typeof web3Enable | undefined = $state();
@@ -31,7 +31,7 @@
3131
</script>
3232

3333
<div class="max-w-dashboard column w-full" id="dashboard">
34-
<DashboardHeader />
34+
<ProfileOverview />
3535

3636
<ChainStatus />
3737

src/components/ProviderLogin.svelte renamed to src/components/pages/ProviderLogin.svelte

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script lang="ts">
2-
import BlockSection from '$components/BlockSection.svelte';
3-
import LoginForm from './LoginForm.svelte';
4-
import HowToTransact from '$components/HowToTransact.svelte';
2+
import BlockSection from '$atoms/BlockSection.svelte';
3+
import LoginForm from '$features/LoginForm/LoginForm.svelte';
4+
import HowToTransact from '$features/HowToTransact/HowToTransact.svelte';
55
import { Button } from '@frequency-chain/style-guide';
66
import { goto } from '$app/navigation';
77
</script>

src/routes/+layout.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
2-
import Header from '../components/Header.svelte';
3-
import Nav from '../components/Nav.svelte';
2+
import Header from '$features/Header/Header.svelte';
3+
import Nav from '$features/Nav/Nav.svelte';
44
import { logInPromise, dotApi, storeChainInfo } from '$lib/stores';
55
import { getToken } from '$lib/polkadotApi';
66
import { getBlockNumber, getEpoch } from '$lib/connections';

src/routes/[[network=networks]]/+page.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
2-
import Dashboard from '$components/Dashboard.svelte';
3-
import ProviderLogin from '$components/ProviderLogin.svelte';
2+
import Dashboard from '$pages/Dashboard.svelte';
3+
import ProviderLogin from '$pages/ProviderLogin.svelte';
44
import { pageContent, PageContent } from '$lib/stores/pageContentStore';
55
</script>
66

src/routes/activity-log/+page.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<script lang="ts">
2-
import ActivityLogPreviewItem from '../../components/ActivityLogPreviewItem.svelte';
32
import { activityLog } from '$lib/stores/activityLogStore';
4-
import BlockSection from '$components/BlockSection.svelte';
3+
import BlockSection from '$atoms/BlockSection.svelte';
54
import type { Activity } from '$lib/storeTypes';
5+
import ActivityLogPreviewItem from '$features/ActivityLogItem/ActivityLogItem.svelte';
66
77
let activityItems: Activity[] = $derived($activityLog);
88
</script>
Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
<script lang="ts">
2-
import BecomeAProvider from '$components/BecomeAProvider.svelte';
2+
import { user } from '$lib/stores/userStore';
3+
import { nonProviderAccountsStore } from '$lib/stores/accountsStore';
4+
import BlockSection from '$atoms/BlockSection.svelte';
5+
import SelectNetworkAndAccount from '$features/SelectNetworkAndAccount/SelectNetworkAndAccount.svelte';
6+
import BecomeProviderNextSteps from '$features/BecomeProviderNextSteps/BecomeProviderNextSteps.svelte';
7+
8+
let hasRequestedToBeProvider = $state(false);
39
</script>
410

5-
<BecomeAProvider />
11+
<BlockSection id="become-a-provider" title="Become a Provider">
12+
<form class="column gap-f16">
13+
{#if hasRequestedToBeProvider === false}
14+
<SelectNetworkAndAccount
15+
bind:newUser={$user}
16+
accounts={$nonProviderAccountsStore}
17+
accountSelectorTitle="Select an Account Id"
18+
accountSelectorPlaceholder="Select an Account Id"
19+
noAccountsFoundErrorMsg="No accounts found. Add an Account Id to your wallet."
20+
/>
21+
{/if}
22+
<BecomeProviderNextSteps bind:hasRequestedToBeProvider />
23+
</form>
24+
</BlockSection>
25+
26+
<BlockSection title="More Info">
27+
<div class="text-sm">
28+
For developer and testing convenience, on Testnet, anyone with an MSA who wishes to become a Provider may simply
29+
submit a createProvider transaction.<br /><br />This action will register the MSA Id that is controlled by the
30+
selected Transaction Signing Address above. Any Account Id that has been added to the MSA can submit the
31+
transaction.
32+
</div>
33+
</BlockSection>

src/routes/faq/+page.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script lang="ts">
2-
import FAQItem from '$components/FAQItem.svelte';
3-
import HowToTransact from '$components/HowToTransact.svelte';
2+
import FAQItem from '$atoms/FAQItem.svelte';
3+
import HowToTransact from '$features/HowToTransact/HowToTransact.svelte';
44
</script>
55

66
{#snippet question1()}

0 commit comments

Comments
 (0)