index.tsx 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import React from 'react';
  2. import { Route, Switch } from 'react-router';
  3. import { Link } from 'react-router-dom';
  4. import styled from 'styled-components';
  5. import { Breadcrumb } from 'semantic-ui-react';
  6. import { AppProps, I18nProps } from '@polkadot/react-components/types';
  7. import { TransportProvider } from '@polkadot/joy-utils/react/context';
  8. import { ProposalPreviewList, ProposalFromId, ChooseProposalType } from './Proposal';
  9. import './index.css';
  10. import translate from './translate';
  11. import NotDone from './NotDone';
  12. import {
  13. SignalForm,
  14. EvictStorageProviderForm,
  15. SpendingProposalForm,
  16. SetContentWorkingGroupLeadForm,
  17. SetContentWorkingGroupMintCapForm,
  18. SetCouncilParamsForm,
  19. SetStorageRoleParamsForm,
  20. SetMaxValidatorCountForm,
  21. RuntimeUpgradeForm,
  22. AddWorkingGroupOpeningForm
  23. } from './forms';
  24. interface Props extends AppProps, I18nProps {}
  25. const StyledHeader = styled.header`
  26. text-align: left;
  27. .ui.breadcrumb {
  28. padding: 1.4rem 0 0 .4rem;
  29. font-size: 1.4rem;
  30. }
  31. `;
  32. function App (props: Props): React.ReactElement<Props> {
  33. const { basePath } = props;
  34. return (
  35. <TransportProvider>
  36. <main className="proposal--App">
  37. <StyledHeader>
  38. <Breadcrumb>
  39. <Switch>
  40. <Route path={`${basePath}/new`}>
  41. <Breadcrumb.Section link as={Link} to={basePath}>Proposals</Breadcrumb.Section>
  42. <Breadcrumb.Divider icon="right angle" />
  43. <Breadcrumb.Section active>New proposal</Breadcrumb.Section>
  44. </Route>
  45. <Route>
  46. <Breadcrumb.Section active>Proposals</Breadcrumb.Section>
  47. </Route>
  48. </Switch>
  49. </Breadcrumb>
  50. </StyledHeader>
  51. <Switch>
  52. <Route exact path={`${basePath}/new`} component={ChooseProposalType} />
  53. <Route exact path={`${basePath}/new/text`} component={SignalForm} />
  54. <Route exact path={`${basePath}/new/runtime-upgrade`} component={RuntimeUpgradeForm} />
  55. <Route exact path={`${basePath}/new/set-election-parameters`} component={SetCouncilParamsForm} />
  56. <Route exact path={`${basePath}/new/spending`} component={SpendingProposalForm} />
  57. <Route exact path={`${basePath}/new/set-lead`} component={SetContentWorkingGroupLeadForm} />
  58. <Route
  59. exact
  60. path={`${basePath}/new/set-content-working-group-mint-capacity`}
  61. component={SetContentWorkingGroupMintCapForm}
  62. />
  63. <Route exact path={`${basePath}/new/evict-storage-provider`} component={EvictStorageProviderForm} />
  64. <Route exact path={`${basePath}/new/set-validator-count`} component={SetMaxValidatorCountForm} />
  65. <Route exact path={`${basePath}/new/set-storage-role-parameters`} component={SetStorageRoleParamsForm} />
  66. <Route exact path={`${basePath}/new/add-working-group-leader-opening`} component={AddWorkingGroupOpeningForm} />
  67. <Route exact path={`${basePath}/active`} component={NotDone} />
  68. <Route exact path={`${basePath}/finalized`} component={NotDone} />
  69. <Route exact path={`${basePath}/:id`} component={ProposalFromId} />
  70. <Route component={ProposalPreviewList} />
  71. </Switch>
  72. </main>
  73. </TransportProvider>
  74. );
  75. }
  76. export default translate(App);