1+ <!DOCTYPE html>
2+ < html lang ="en ">
3+ < head >
4+ < meta charset ="utf-8 " />
5+ < base href ="%PUBLIC_URL%/ " />
6+ < link rel ="icon " type ="image/png " href ="%PUBLIC_URL%/favicon.png " />
7+ < link rel ="icon " type ="image/png " sizes ="32x32 " href ="%PUBLIC_URL%/favicon.png " />
8+ < link rel ="icon " type ="image/png " sizes ="16x16 " href ="%PUBLIC_URL%/favicon.png " />
9+ < meta name ="viewport " content ="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover " />
10+ < meta name ="apple-mobile-web-app-capable " content ="yes " />
11+ < meta name ="apple-mobile-web-app-status-bar-style " content ="black-translucent " />
12+ < meta name ="mobile-web-app-capable " content ="yes " />
13+ < meta name ="theme-color " content ="#87CEEB " />
14+
15+ <!-- PWA Meta Tags -->
16+ < meta name ="application-name " content ="Bitcoin Spreadsheet " />
17+ < meta name ="apple-mobile-web-app-title " content ="BitSpread " />
18+ < meta name ="format-detection " content ="telephone=no " />
19+ < meta name ="msapplication-TileColor " content ="#87CEEB " />
20+ < meta name ="msapplication-tap-highlight " content ="no " />
21+ < meta
22+ name ="description "
23+ content ="Bitcoin Blockchain Spreadsheet - A decentralized spreadsheet application on Bitcoin "
24+ />
25+
26+ <!-- Open Graph / Facebook -->
27+ < meta property ="og:type " content ="website " />
28+ < meta property ="og:url " content ="https://bitcoin-spreadsheets.vercel.app/ " />
29+ < meta property ="og:title " content ="Bitcoin Spreadsheet " />
30+ < meta property ="og:description " content ="Bitcoin Blockchain Spreadsheet - A decentralized spreadsheet application on Bitcoin " />
31+ < meta property ="og:image " content ="%PUBLIC_URL%/bitcoin-spreadsheets-icon.png " />
32+
33+ <!-- Twitter -->
34+ < meta property ="twitter:card " content ="summary_large_image " />
35+ < meta property ="twitter:url " content ="https://bitcoin-spreadsheets.vercel.app/ " />
36+ < meta property ="twitter:title " content ="Bitcoin Spreadsheet " />
37+ < meta property ="twitter:description " content ="Bitcoin Blockchain Spreadsheet - A decentralized spreadsheet application on Bitcoin " />
38+ < meta property ="twitter:image " content ="%PUBLIC_URL%/bitcoin-spreadsheets-icon.png " />
39+
40+ <!-- Discord / WhatsApp / Other Social Media -->
41+ < meta property ="og:site_name " content ="Bitcoin Spreadsheet " />
42+ < meta property ="og:image:width " content ="1200 " />
43+ < meta property ="og:image:height " content ="630 " />
44+ < link rel ="apple-touch-icon " href ="%PUBLIC_URL%/bitcoin-watercolor-icon.png " />
45+ < link rel ="manifest " href ="%PUBLIC_URL%/manifest.json " />
46+
47+ <!-- Preconnect to Bitcoin network for better performance -->
48+ < link rel ="preconnect " href ="https://api.whatsonchain.com " />
49+
50+ < title > Bitcoin Spreadsheets</ title >
51+
52+ <!-- Custom fonts -->
53+ < link href ="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap " rel ="stylesheet ">
54+
55+ < style >
56+ /* Loading spinner styles */
57+ .loading-spinner {
58+ display : inline-block;
59+ width : 40px ;
60+ height : 40px ;
61+ border : 2px solid rgba (255 , 255 , 255 , 0.1 );
62+ border-radius : 50% ;
63+ border-top-color : rgba (255 , 255 , 255 , 0.3 );
64+ animation : spin 1s ease-in-out infinite;
65+ }
66+
67+ @keyframes spin {
68+ to { transform : rotate (360deg ); }
69+ }
70+
71+ /* Initial loading screen */
72+ # initial-loader {
73+ position : fixed;
74+ top : 0 ;
75+ left : 0 ;
76+ width : 100% ;
77+ height : 100% ;
78+ background : # 000000 ;
79+ display : flex;
80+ flex-direction : column;
81+ justify-content : center;
82+ align-items : center;
83+ color : white;
84+ font-family : 'Inter' , sans-serif;
85+ z-index : 9999 ;
86+ transition : opacity 0.5s ease-out;
87+ }
88+
89+ # initial-loader .hide {
90+ opacity : 0 ;
91+ pointer-events : none;
92+ }
93+
94+ # initial-loader h1 {
95+ margin : 0 0 20px 0 ;
96+ font-size : 2.5rem ;
97+ font-weight : 300 ;
98+ }
99+
100+ # initial-loader p {
101+ margin : 0 ;
102+ opacity : 0.8 ;
103+ font-size : 1.1rem ;
104+ }
105+ </ style >
106+ </ head >
107+ < body >
108+ <!-- Initial loading screen -->
109+ < div id ="initial-loader ">
110+ < div class ="loading-spinner "> </ div >
111+ < h1 > Bitcoin Spreadsheet</ h1 >
112+ < p > Loading...</ p >
113+ </ div >
114+
115+ < noscript > You need to enable JavaScript to run this app.</ noscript >
116+ < div id ="root "> </ div >
117+
118+ <!-- Loading screen script -->
119+ < script >
120+ // Hide loading screen when React app loads
121+ window . addEventListener ( 'load' , function ( ) {
122+ setTimeout ( function ( ) {
123+ const loader = document . getElementById ( 'initial-loader' ) ;
124+ if ( loader ) {
125+ loader . classList . add ( 'hide' ) ;
126+ setTimeout ( function ( ) {
127+ loader . style . display = 'none' ;
128+ } , 500 ) ;
129+ }
130+ } , 1000 ) ;
131+ } ) ;
132+ </ script >
133+ </ body >
134+ </ html >
0 commit comments