27 | No page found at {url}
.
28 |
{cowsay}65 | } 66 | -------------------------------------------------------------------------------- /src/npm-fastui-prebuilt/src/main.scss: -------------------------------------------------------------------------------- 1 | $primary: black; 2 | $secondary: white; 3 | $link-color: #0d6efd; // bootstrap primary 4 | 5 | @import 'bootstrap/scss/bootstrap'; 6 | 7 | html, 8 | body, 9 | #root { 10 | height: 100%; 11 | } 12 | 13 | #root { 14 | display: flex; 15 | flex-direction: column; 16 | } 17 | 18 | .page { 19 | // margin-top because the top is sticky 20 | margin-top: 70px; 21 | } 22 | 23 | :root { 24 | --bs-font-sans-serif: 'IBM Plex Sans', sans-serif; 25 | --bs-code-color: rgb(31, 35, 40); 26 | // 27 | } 28 | @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,400;0,500;1,400&display=swap'); 29 | 30 | body { 31 | margin-bottom: 60px; 32 | } 33 | 34 | .bg-body { 35 | --bs-bg-opacity: 0.6; 36 | backdrop-filter: blur(8px); 37 | } 38 | 39 | h1, 40 | h2, 41 | h3, 42 | h4, 43 | h5, 44 | h6 { 45 | scroll-margin-top: 60px; 46 | } 47 | 48 | .transition-overlay { 49 | position: fixed; 50 | top: 0; 51 | left: 0; 52 | width: 0; 53 | height: 0; 54 | pointer-events: none; 55 | background-color: white; 56 | z-index: 9999; 57 | opacity: 0; 58 | transition: opacity 0.4s ease-in-out; 59 | &.transitioning { 60 | opacity: 0.8; 61 | pointer-events: auto; 62 | width: 100%; 63 | height: 100%; 64 | } 65 | } 66 | 67 | .fastui-markdown code { 68 | padding: 0.2em 0.4em; 69 | margin: 0; 70 | font-size: 85%; 71 | white-space: break-spaces; 72 | background-color: rgba(175, 184, 193, 0.2); 73 | border-radius: 6px; 74 | } 75 | 76 | // custom spinner from https://cssloaders.github.io/ 77 | .fastui-spinner-animation, 78 | .fastui-spinner-animation:before, 79 | .fastui-spinner-animation:after { 80 | border-radius: 50%; 81 | width: 2.5em; 82 | height: 2.5em; 83 | animation-fill-mode: both; 84 | animation: spinner-dots 1.8s infinite ease-in-out; 85 | } 86 | .fastui-spinner-animation { 87 | top: -2.5em; 88 | color: var(--bs-dark); 89 | font-size: 7px; 90 | position: relative; 91 | text-indent: -9999em; 92 | transform: translateZ(0); 93 | animation-delay: -0.16s; 94 | &:before, 95 | &:after { 96 | content: ''; 97 | position: absolute; 98 | top: 0; 99 | } 100 | &:before { 101 | left: -3.5em; 102 | animation-delay: -0.32s; 103 | } 104 | &:after { 105 | left: 3.5em; 106 | } 107 | } 108 | @keyframes spinner-dots { 109 | 0%, 110 | 80%, 111 | 100% { 112 | box-shadow: 0 2.5em 0 -1.3em; 113 | } 114 | 40% { 115 | box-shadow: 0 2.5em 0 0; 116 | } 117 | } 118 | 119 | // make sure alerts aren't hidden behind the navbar 120 | .error-alert { 121 | position: relative; 122 | top: 60px; 123 | } 124 | 125 | .btn-secondary { 126 | --bs-btn-border-color: #dee2e6; 127 | } 128 | -------------------------------------------------------------------------------- /src/npm-fastui-prebuilt/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom/client' 3 | 4 | import App from './App' 5 | import './main.scss' 6 | 7 | ReactDOM.createRoot(document.getElementById('root')!).render( 8 |