├── .gitignore
├── pnpm-workspace.yaml
├── src
├── components
│ ├── Link
│ │ ├── Link.css
│ │ └── Link.tsx
│ ├── Page
│ │ ├── Page.css
│ │ └── Page.tsx
│ ├── RGB
│ │ ├── RGB.css
│ │ └── RGB.tsx
│ ├── App.tsx
│ ├── DisplayData
│ │ ├── DisplayData.css
│ │ └── DisplayData.tsx
│ └── Root.tsx
├── pages
│ ├── InitDataPage
│ │ ├── InitDataPage.css
│ │ └── InitDataPage.tsx
│ ├── IndexPage
│ │ ├── IndexPage.css
│ │ └── IndexPage.tsx
│ ├── TonConnectPage
│ │ ├── TonConnectPage.css
│ │ └── TonConnectPage.tsx
│ ├── ThemeParamsPage.tsx
│ └── LaunchParamsPage.tsx
├── tonconnect
│ ├── useTonConnectUI.ts
│ ├── TonConnectButton.tsx
│ ├── TonConnectUIContext.ts
│ ├── useTonWallet.ts
│ └── TonConnectUIProvider.tsx
├── index.css
├── index.tsx
├── helpers
│ └── publicUrl.ts
├── css
│ ├── bem.ts
│ └── classnames.ts
├── navigation
│ └── routes.tsx
├── init.ts
└── mockEnv.ts
├── .github
├── deployment-branches.png
└── workflows
│ └── github-pages-deploy.yml
├── public
└── tonconnect-manifest.json
├── tsconfig.node.json
├── .eslintrc.cjs
├── index.html
├── tsconfig.json
├── vite.config.ts
├── package.json
├── README.md
└── pnpm-lock.yaml
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | *.pem
3 | node_modules
4 | dist
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | ignoredBuiltDependencies:
2 | - esbuild
3 |
--------------------------------------------------------------------------------
/src/components/Link/Link.css:
--------------------------------------------------------------------------------
1 | .link {
2 | text-decoration: none;
3 | color: var(--tg-theme-link-color);
4 | }
--------------------------------------------------------------------------------
/.github/deployment-branches.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Telegram-Mini-Apps/solidjs-template/HEAD/.github/deployment-branches.png
--------------------------------------------------------------------------------
/public/tonconnect-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "url": "https://ton.vote",
3 | "name": "TON Vote",
4 | "iconUrl": "https://ton.vote/logo.png"
5 | }
--------------------------------------------------------------------------------
/src/components/Page/Page.css:
--------------------------------------------------------------------------------
1 | .page {
2 | padding: 0 10px;
3 | box-sizing: border-box;
4 | }
5 |
6 | .page__disclaimer {
7 | margin-bottom: 16px;
8 | }
--------------------------------------------------------------------------------
/src/pages/InitDataPage/InitDataPage.css:
--------------------------------------------------------------------------------
1 | .init-data-page__section + .init-data-page__section {
2 | margin-top: 12px;
3 | }
4 |
5 | .init-data-page__section-title {
6 | margin-bottom: 4px;
7 | }
--------------------------------------------------------------------------------
/src/components/RGB/RGB.css:
--------------------------------------------------------------------------------
1 | .rgb {
2 | display: inline-flex;
3 | align-items: center;
4 | gap: 5px;
5 | }
6 |
7 | .rgb__icon {
8 | width: 18px;
9 | aspect-ratio: 1;
10 | border: 1px solid #555;
11 | border-radius: 50%;
12 | }
--------------------------------------------------------------------------------
/tsconfig.node.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "composite": true,
4 | "skipLibCheck": true,
5 | "module": "ESNext",
6 | "moduleResolution": "bundler",
7 | "allowSyntheticDefaultImports": true
8 | },
9 | "include": ["vite.config.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/src/tonconnect/useTonConnectUI.ts:
--------------------------------------------------------------------------------
1 | import { useContext } from 'solid-js';
2 |
3 | import {
4 | TonConnectUIContext,
5 | type TonConnectUIContextType,
6 | } from '@/tonconnect/TonConnectUIContext.js';
7 |
8 | export function useTonConnectUI(): TonConnectUIContextType {
9 | const context = useContext(TonConnectUIContext);
10 | if (!context) {
11 | throw new Error('Unable to get TonConnectUIContext');
12 | }
13 | return context;
14 | }
15 |
--------------------------------------------------------------------------------
/src/pages/IndexPage/IndexPage.css:
--------------------------------------------------------------------------------
1 | .index-page__links {
2 | list-style: none;
3 | padding-left: 0;
4 | }
5 |
6 | .index-page__link {
7 | font-weight: bold;
8 | display: inline-flex;
9 | gap: 5px;
10 | }
11 |
12 | .index-page__link-item + .index-page__link-item {
13 | margin-top: 10px;
14 | }
15 |
16 | .index-page__link-icon {
17 | width: 20px;
18 | display: block;
19 | }
20 |
21 | .index-page__link-icon svg {
22 | display: block;
23 | }
--------------------------------------------------------------------------------
/src/components/App.tsx:
--------------------------------------------------------------------------------
1 | import { Navigate, Route, HashRouter } from '@solidjs/router';
2 | import { For } from 'solid-js';
3 |
4 | import { routes } from '@/navigation/routes.js';
5 |
6 | export function App() {
7 | return (
8 |
ErrorBoundary handled error:
16 |
17 |
18 |
19 |
20 | {v => v()}
21 |
22 |
23 | {v => v()}
24 |
25 |
26 |
27 |
28 | 14 | This page is a home page in this boilerplate. You can use the links below to visit other 15 | pages with their own functionality. 16 |
17 |