@@ -19,26 +19,13 @@ export const Rendered = renderToString(
1919 < p > Contents</ p >
2020 </ div >
2121 < div class = "right" >
22- < a
23- class = "github"
24- target = "_blank"
25- rel = "noopener noreferrer"
26- href = "https://github.com/papes1ns/spin.dev"
27- >
28- < svg
29- xmlns = "http://www.w3.org/2000/svg"
30- width = "24"
31- height = "24"
32- viewBox = "0 0 24 24"
33- >
34- < path
35- fill = "currentColor"
36- d = "M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2"
37- > </ path >
38- </ svg >
39- </ a >
4022 < div class = "search-container" >
41- < input type = "text" id = "search" placeholder = "Filter contents" />
23+ < input
24+ type = "text"
25+ id = "search"
26+ placeholder = "Filter contents"
27+ autofocus
28+ />
4229 < span class = "search-shortcut" > ⌘K</ span >
4330 </ div >
4431 </ div >
@@ -82,8 +69,9 @@ export const Rendered = renderToString(
8269 < td >
8370 < strong > { content . title } </ strong >
8471 { content . description && (
85- < div style = "font-size: 0.9em; color: #666; margin-top: 4px;" >
86- { content . description . slice ( 0 , 45 ) } ...
72+ < div class = "content-description" >
73+ { content . description . slice ( 0 , 45 ) }
74+ { content . description . length > 45 ? "..." : "" }
8775 </ div >
8876 ) }
8977 </ td >
@@ -98,20 +86,13 @@ export const Rendered = renderToString(
9886 ) }
9987 </ td >
10088 < td >
101- { ( ( ) => {
102- try {
103- return new URL ( content . url ) . hostname . replace (
104- "www." ,
105- ""
106- ) ;
107- } catch {
108- return "-" ;
109- }
110- } ) ( ) }
89+ { new URL ( content . url ) . hostname . replace ( "www." , "" ) }
11190 </ td >
11291 < td >
11392 { content . estimated_time_minutes !== undefined
114- ? `${ content . estimated_time_minutes } min`
93+ ? `${ content . estimated_time_minutes } min${
94+ content . estimated_time_minutes > 1 ? "s" : ""
95+ } `
11596 : "-" }
11697 </ td >
11798 < td >
@@ -130,73 +111,89 @@ export const Rendered = renderToString(
130111 </ tbody >
131112 </ table >
132113
133- < footer id = "site-footer" >
134- < div >
135- < a href = "#" id = "open-terms" >
136- Terms & Privacy
114+ < footer class = "site-footer" >
115+ < div class = "footer-left" >
116+ < div class = "footer-item" >
117+ < a
118+ class = "github"
119+ target = "_blank"
120+ rel = "noopener noreferrer"
121+ href = "https://github.com/papes1ns/spin.dev"
122+ >
123+ < svg
124+ xmlns = "http://www.w3.org/2000/svg"
125+ width = "24"
126+ height = "24"
127+ viewBox = "0 0 24 24"
128+ >
129+ < path
130+ fill = "currentColor"
131+ d = "M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2"
132+ > </ path >
133+ </ svg >
134+ </ a >
135+ </ div >
136+ < div class = "footer-item" >
137+ Version:{ " " }
138+ { await Bun . file (
139+ path . join ( import . meta. dir , ".." , ".." , ".." , "VERSION" )
140+ ) . text ( ) }
141+ </ div >
142+ </ div >
143+ < div class = "footer-right" >
144+ < a href = "#" id = "open-terms" role = "modal" >
145+ Terms and Privacy
137146 </ a >
138147 </ div >
139148 </ footer >
140149
141150 < div id = "terms-modal" class = "modal" >
142151 < div class = "modal-content terms" >
143- < h2 > Terms & Privacy</ h2 >
144- < ul >
145- < li >
146- < strong > Privacy</ strong >
147- This is a static site hosted on Cloudflare. Cloudflare sets cookies
148- to keep the service protected. By using the site you are opting in
149- to Cloudflare's privacy policy. You can read more about their
150- < a href = "https://www.cloudflare.com/privacypolicy/" target = "_blank" >
151- privacy policy
152- </ a >
153- . PII is not collected, ever.
154- </ li >
155- < li >
156- < strong > API</ strong >
152+ < h2 > Terms and Privacy</ h2 >
153+ < section >
154+ < h3 > Terms</ h3 >
155+ < p >
157156 If you wish for content to be removed or want to consume the{ " " }
158157 < a href = "/api.json" target = "_blank" >
159- API
158+ /api.json
160159 </ a >
161160 , please contact me at{ " " }
162161 < a href = "mailto:hello@natepapes.com" target = "_blank" >
163162 hello@natepapes.com
164163 </ a >
165164 , otherwise follow the rules in the{ " " }
166165 < a href = "/robots.txt" target = "_blank" >
167- robots.txt
166+ / robots.txt
168167 </ a > { " " }
169- file please.
170- </ li >
171- < li >
172- < strong > Open Source</ strong >
173- This site is open source. You can find the source code on{ " " }
174- < a href = "https://github.com/papes1ns/spin.dev" target = "_blank" >
175- github.com/papes1ns/spin.dev
176- </ a >
177- .
178- </ li >
179- < li >
180- < strong > MERLN</ strong >
181- This site embodies an experimental open source software project I
182- coined as a, MERLN, expanded means{ " " }
183- < em > Metadata Enriched RSS Linker Node</ em > . Built for education on
184- fair use and ethical practices in the ethos based in open science.
185- </ li >
186- < li >
187- < strong > Acknowledgements</ strong >
168+ file.
169+ </ p >
170+ </ section >
171+ < section >
172+ < h3 > Privacy</ h3 >
173+ < p > PII is not collected.</ p >
174+ < p > Cloudflare sets cookies to keep the service protected.</ p >
175+ </ section >
176+ < section >
177+ < h3 > Acknowledgements</ h3 >
178+ < p >
188179 This project was forked from the{ " " }
189180 < a href = "https://models.dev" target = "_blank" >
190- model .dev
181+ models .dev
191182 </ a > { " " }
192183 project built by the{ " " }
193184 < a href = "https://sst.dev" target = "_blank" >
194185 SST team
195186 </ a >
196- . They are raising the bar in open source IaC and AI cli tools for
197- developers.
198- </ li >
199- </ ul >
187+ .
188+ </ p >
189+ </ section >
190+ < section >
191+ < h3 > Metadata-Enriched RSS Linker Node (MERLN)</ h3 >
192+ < p >
193+ This MERLN is built for education on fair use and ethical practices
194+ based on an open science ethos.
195+ </ p >
196+ </ section >
200197 < button id = "close-terms" > Close</ button >
201198 </ div >
202199 </ div >
0 commit comments