portosaurus 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/bin/portosaurus.mjs +14 -327
  2. package/package.json +16 -11
  3. package/src/cli/build.mjs +43 -0
  4. package/src/cli/dev.mjs +31 -0
  5. package/src/cli/init.mjs +135 -0
  6. package/src/cli/serve.mjs +30 -0
  7. package/src/core/buildDocuConfig.mjs +664 -0
  8. package/src/core/{themePlugin.mjs → plugins/themePlugin.mjs} +1 -1
  9. package/src/template/.github/workflows/deploy.yml +52 -0
  10. package/src/template/.nojekyll +0 -0
  11. package/src/template/README.md +58 -0
  12. package/src/template/blog/authors.yml +1 -1
  13. package/src/template/blog/welcome.md +1 -1
  14. package/src/template/config.js +40 -23
  15. package/src/template/package.json +20 -0
  16. package/src/template/static/img/svg/icon-blog.svg +2 -0
  17. package/src/template/static/img/svg/icon-note.svg +2 -0
  18. package/src/{components → theme/components}/AboutSection/index.js +22 -13
  19. package/src/{components → theme/components}/AboutSection/styles.module.css +59 -48
  20. package/src/{components → theme/components}/ContactSection/index.js +31 -24
  21. package/src/{components → theme/components}/ContactSection/styles.module.css +31 -26
  22. package/src/{components → theme/components}/ExperienceSection/index.js +12 -7
  23. package/src/{components → theme/components}/ExperienceSection/styles.module.css +23 -20
  24. package/src/{components → theme/components}/HeroSection/index.js +9 -11
  25. package/src/{components → theme/components}/HeroSection/styles.module.css +44 -32
  26. package/src/{components → theme/components}/NoteIndex/index.js +10 -3
  27. package/src/{components → theme/components}/Preview/components/PreviewHeader.js +14 -8
  28. package/src/{components → theme/components}/Preview/components/Triggers/Pv.js +32 -7
  29. package/src/{components → theme/components}/Preview/components/Triggers/SrcPv.js +1 -5
  30. package/src/theme/components/Preview/index.js +3 -0
  31. package/src/{components → theme/components}/ProjectsSection/index.js +279 -224
  32. package/src/{components → theme/components}/ProjectsSection/styles.module.css +21 -17
  33. package/src/{components → theme/components}/ScrollToTop/index.js +18 -21
  34. package/src/{components → theme/components}/ScrollToTop/styles.module.css +10 -9
  35. package/src/theme/components/SocialLinks/index.js +125 -0
  36. package/src/{components → theme/components}/SocialLinks/styles.module.css +9 -7
  37. package/src/{components → theme/components}/Tooltip/index.js +4 -1
  38. package/src/theme/config/iconMappings.js +465 -0
  39. package/src/theme/config/metaTags.js +239 -0
  40. package/src/theme/config/prism.js +179 -0
  41. package/src/theme/config/sidebar.js +17 -0
  42. package/src/{css → theme/css}/bootstrap.css +0 -1
  43. package/src/theme/css/catppuccin.css +618 -0
  44. package/src/{css → theme/css}/custom.css +3 -9
  45. package/src/{css → theme/css}/tasks.css +43 -37
  46. package/src/theme/{MDXComponents.js → overrides/MDXComponents.js} +3 -3
  47. package/src/theme/{Root.js → overrides/Root.js} +2 -4
  48. package/src/{pages → theme/pages}/index.js +23 -39
  49. package/src/theme/pages/notes.js +83 -0
  50. package/src/{pages → theme/pages}/tasks.js +115 -56
  51. package/src/{core/client-utils → theme/utils}/HashNavigation.js +60 -49
  52. package/src/{core/client-utils → theme/utils}/updateTitle.js +21 -25
  53. package/src/{core/build-utils → utils/build}/cssUtils.mjs +5 -3
  54. package/src/{core/build-utils → utils/build}/generateFavicon.mjs +44 -12
  55. package/src/{core/build-utils → utils/build}/generateRobotsTxt.mjs +4 -3
  56. package/src/{core/build-utils → utils/build}/iconExtractor.mjs +7 -3
  57. package/src/utils/build/imageDownloader.mjs +159 -0
  58. package/src/{core/build-utils → utils/build}/imageProcessor.mjs +5 -6
  59. package/src/utils/helpers.mjs +153 -0
  60. package/src/utils/logger.mjs +53 -0
  61. package/src/utils/packageManager.mjs +88 -0
  62. package/src/components/Preview/index.js +0 -3
  63. package/src/components/SocialLinks/index.js +0 -130
  64. package/src/config/iconMappings.js +0 -329
  65. package/src/config/metaTags.js +0 -240
  66. package/src/config/prism.js +0 -179
  67. package/src/config/sidebar.js +0 -20
  68. package/src/core/build-utils/imageDownloader.mjs +0 -98
  69. package/src/core/createDocuConf.mjs +0 -490
  70. package/src/core/defaults.mjs +0 -67
  71. package/src/core/logger.mjs +0 -17
  72. package/src/core/packageManager.mjs +0 -72
  73. package/src/css/catppuccin.css +0 -632
  74. package/src/pages/notes.js +0 -87
  75. /package/src/template/notes/{welcome.md → welcome.mdx} +0 -0
  76. /package/src/{components → theme/components}/NoteIndex/styles.module.css +0 -0
  77. /package/src/{components → theme/components}/Preview/components/FeedbackStates.js +0 -0
  78. /package/src/{components → theme/components}/Preview/components/FileTabs.js +0 -0
  79. /package/src/{components → theme/components}/Preview/components/Triggers/index.js +0 -0
  80. /package/src/{components → theme/components}/Preview/components/ViewerWindow.js +0 -0
  81. /package/src/{components → theme/components}/Preview/hooks/useDeepLinkHash.js +0 -0
  82. /package/src/{components → theme/components}/Preview/hooks/useDockLayout.js +0 -0
  83. /package/src/{components → theme/components}/Preview/hooks/useFileFetch.js +0 -0
  84. /package/src/{components → theme/components}/Preview/renderers/CodeRenderer.js +0 -0
  85. /package/src/{components → theme/components}/Preview/renderers/ImageRenderer.js +0 -0
  86. /package/src/{components → theme/components}/Preview/renderers/PdfRenderer.js +0 -0
  87. /package/src/{components → theme/components}/Preview/renderers/WebRenderer.js +0 -0
  88. /package/src/{components → theme/components}/Preview/state/index.js +0 -0
  89. /package/src/{components → theme/components}/Preview/styles.module.css +0 -0
  90. /package/src/{components → theme/components}/Preview/utils/index.js +0 -0
  91. /package/src/{components → theme/components}/Tooltip/styles.module.css +0 -0
@@ -0,0 +1,465 @@
1
+ import {
2
+ TbBrandCSharp,
3
+ TbBrandVscode,
4
+ TbBrandOnedrive,
5
+ TbBrandAzure,
6
+ TbBrandBing,
7
+ TbBrandGithubCopilot,
8
+ } from "react-icons/tb";
9
+ import { GrVirtualMachine } from "react-icons/gr";
10
+ import { DiRasberryPi } from "react-icons/di";
11
+ import {
12
+ PiGithubLogoFill,
13
+ PiMicrosoftExcelLogoDuotone,
14
+ PiMicrosoftOutlookLogo,
15
+ PiMicrosoftPowerpointLogo,
16
+ PiMicrosoftWordLogo,
17
+ } from "react-icons/pi";
18
+ import { BiLogoPostgresql, BiLogoWindows } from "react-icons/bi";
19
+ import {
20
+ BsFiletypeXlsx,
21
+ BsFiletypeDocx,
22
+ BsFiletypePpt,
23
+ BsMicrosoftTeams,
24
+ } from "react-icons/bs";
25
+ import { TiVendorMicrosoft } from "react-icons/ti";
26
+
27
+ import {
28
+ SiPython,
29
+ SiJavascript,
30
+ SiCplusplus,
31
+ SiRust,
32
+ SiGo,
33
+ SiTypescript,
34
+ SiReact,
35
+ SiMysql,
36
+ SiGnubash,
37
+ SiLinux,
38
+ SiLinuxfoundation,
39
+ SiArchlinux,
40
+ SiAlmalinux,
41
+ SiAlpinelinux,
42
+ SiKalilinux,
43
+ SiLinuxmint,
44
+ SiRockylinux,
45
+ SiVoidlinux,
46
+ SiUbuntu,
47
+ SiKubuntu,
48
+ SiUbuntumate,
49
+ SiDebian,
50
+ SiRedhat,
51
+ SiGithub,
52
+ SiMastodon,
53
+ SiInstagram,
54
+ SiFacebook,
55
+ SiYoutube,
56
+ SiTwitch,
57
+ SiDiscord,
58
+ SiReddit,
59
+ SiStackoverflow,
60
+ SiLeetcode,
61
+ SiHackerrank,
62
+ SiCodeforces,
63
+ SiMatrix,
64
+ SiGmail,
65
+ SiProtonmail,
66
+ SiSignal,
67
+ SiReplit,
68
+ SiZoom,
69
+ SiNotion,
70
+ SiObsidian,
71
+ SiMarkdown,
72
+ SiSubstack,
73
+ SiThreads,
74
+ SiOpenai,
75
+ SiDocker,
76
+ SiPodman,
77
+ SiLinuxcontainers,
78
+ SiVmware,
79
+ SiXing,
80
+ SiKaggle,
81
+ SiCodesandbox,
82
+ SiGooglechrome,
83
+ SiFirefox,
84
+ SiSafari,
85
+ SiBrave,
86
+ SiOpera,
87
+ SiTorbrowser,
88
+ SiVivaldi,
89
+ SiZendesk,
90
+ SiImdb,
91
+ SiMyanimelist,
92
+ SiAnilist,
93
+ SiLetterboxd,
94
+ SiCrunchyroll,
95
+ SiKitsu,
96
+ SiSimkl,
97
+ SiMongodb,
98
+ SiSqlite,
99
+ SiMariadb,
100
+ SiInfluxdb,
101
+ SiRedis,
102
+ SiCouchbase,
103
+ SiApachecassandra,
104
+ SiFirebase,
105
+ SiNeo4J,
106
+ SiElasticsearch,
107
+ SiGraphql,
108
+ SiGoogledrive,
109
+ } from "react-icons/si";
110
+
111
+ import {
112
+ FaJava,
113
+ FaEnvelope,
114
+ FaRss,
115
+ FaGitAlt,
116
+ FaTwitter,
117
+ FaTelegramPlane,
118
+ FaMedium,
119
+ FaPhp,
120
+ FaGlobe,
121
+ FaDev,
122
+ FaPinterest,
123
+ FaWhatsapp,
124
+ FaSlack,
125
+ FaSkype,
126
+ FaSnapchatGhost,
127
+ FaTiktok,
128
+ FaSteam,
129
+ FaGitlab,
130
+ FaBitbucket,
131
+ FaKeybase,
132
+ FaCodepen,
133
+ FaJsSquare,
134
+ FaHackerNews,
135
+ FaVimeoV,
136
+ FaFlickr,
137
+ FaDribbble,
138
+ FaBehance,
139
+ FaPatreon,
140
+ FaPaypal,
141
+ FaEthereum,
142
+ FaBitcoin,
143
+ FaLaptopCode,
144
+ FaCode,
145
+ FaBlogger,
146
+ FaWordpress,
147
+ FaHashtag,
148
+ FaUserCircle,
149
+ FaUserSecret,
150
+ FaBug,
151
+ FaRobot,
152
+ FaHtml5,
153
+ FaCss3Alt,
154
+ FaFedora,
155
+ FaInternetExplorer,
156
+ FaEdge,
157
+ FaTv,
158
+ FaFilm,
159
+ FaVideo,
160
+ FaPodcast,
161
+ FaSearch,
162
+ FaCog,
163
+ FaEdit,
164
+ FaHome,
165
+ FaInfoCircle,
166
+ FaLink,
167
+ FaDownload,
168
+ FaUpload,
169
+ FaSave,
170
+ FaTrash,
171
+ FaExclamationTriangle,
172
+ FaExclamationCircle,
173
+ FaCheckCircle,
174
+ FaQuestionCircle,
175
+ FaClock,
176
+ FaComments,
177
+ FaBell,
178
+ FaDatabase,
179
+ FaCalendar,
180
+ FaCheckSquare,
181
+ FaBookmark,
182
+ FaStar,
183
+ FaHeart,
184
+ FaClipboard,
185
+ FaEnvelopeOpen,
186
+ FaMicrosoft,
187
+ FaGoogleDrive,
188
+ FaLinkedin,
189
+ } from "react-icons/fa";
190
+
191
+ //--------- Icon mappings ---------
192
+
193
+ export const iconMap = {
194
+ // Programming languages
195
+ python: { icon: SiPython, color: "#3776AB" },
196
+ javascript: { icon: SiJavascript, color: "#F7DF1E" },
197
+ jssquare: { icon: FaJsSquare, color: "#F7DF1E" },
198
+ typescript: { icon: SiTypescript, color: "#3178C6" },
199
+ cpp: { icon: SiCplusplus, color: "#00599C" },
200
+ csharp: { icon: TbBrandCSharp, color: "#239120" },
201
+ rust: { icon: SiRust, color: "#ffffff" },
202
+ go: { icon: SiGo, color: "#00ADD8" },
203
+ java: { icon: FaJava, color: "#007396" },
204
+ php: { icon: FaPhp, color: "#777BB4" },
205
+ html: { icon: FaHtml5, color: "#E34F26" },
206
+ css: { icon: FaCss3Alt, color: "#1572B6" },
207
+ sql: { icon: SiMysql, color: "#4479A1" },
208
+ postgresql: { icon: BiLogoPostgresql, color: "#336791" },
209
+ postgres: { icon: BiLogoPostgresql, color: "#336791" },
210
+ oraclesql: { icon: FaDatabase, color: "#F80000" },
211
+ oracle: { icon: FaDatabase, color: "#F80000" },
212
+ database: { icon: FaDatabase, color: "#47A248" },
213
+ db: { icon: FaDatabase, color: "#47A248" },
214
+ dbms: { icon: FaDatabase, color: "#47A248" },
215
+ mysql: { icon: SiMysql, color: "#4479A1" },
216
+ mariadb: { icon: SiMariadb, color: "#003545" },
217
+ sqlite: { icon: SiSqlite, color: "#003B57" },
218
+ mongodb: { icon: SiMongodb, color: "#47A248" },
219
+ mongo: { icon: SiMongodb, color: "#47A248" },
220
+ nosql: { icon: SiMongodb, color: "#47A248" },
221
+ redis: { icon: SiRedis, color: "#DC382D" },
222
+ couchbase: { icon: SiCouchbase, color: "#EA2328" },
223
+ cassandra: { icon: SiApachecassandra, color: "#1287B1" },
224
+ dynamodb: { icon: FaDatabase, color: "#4053D6" },
225
+ firebase: { icon: SiFirebase, color: "#FFCA28" },
226
+ firestore: { icon: SiFirebase, color: "#FFCA28" },
227
+ mssql: { icon: FaDatabase, color: "#CC2927" },
228
+ sqlserver: { icon: FaDatabase, color: "#CC2927" },
229
+ microsoftsqlserver: { icon: FaDatabase, color: "#CC2927" },
230
+ neo4j: { icon: SiNeo4J, color: "#008CC1" },
231
+ graphdb: { icon: SiNeo4J, color: "#008CC1" },
232
+ elasticsearch: { icon: SiElasticsearch, color: "#005571" },
233
+ graphql: { icon: SiGraphql, color: "#E10098" },
234
+ influxdb: { icon: SiInfluxdb, color: "#22ADF6" },
235
+ timeseries: { icon: SiInfluxdb, color: "#22ADF6" },
236
+
237
+ // Competitive programming platforms
238
+ leetcode: { icon: SiLeetcode, color: "#FFA116" },
239
+ hackerrank: { icon: SiHackerrank, color: "#2EC866" },
240
+ codeforces: { icon: SiCodeforces, color: "#1F8ACB" },
241
+ replit: { icon: SiReplit, color: "#FA5302" },
242
+
243
+ // Operating systems and containers
244
+ linux: { icon: SiLinux, color: "#FCC624" },
245
+ linuxfoundation: { icon: SiLinuxfoundation, color: "#000000" },
246
+ arch: { icon: SiArchlinux, color: "#1793D1" },
247
+ archlinux: { icon: SiArchlinux, color: "#1793D1" },
248
+ ubuntu: { icon: SiUbuntu, color: "#E95420" },
249
+ kubuntu: { icon: SiKubuntu, color: "#0078D6" },
250
+ ubuntumate: { icon: SiUbuntumate, color: "#2C001E" },
251
+ debian: { icon: SiDebian, color: "#A80030" },
252
+ redhat: { icon: SiRedhat, color: "#EE0000" },
253
+ fedora: { icon: FaFedora, color: "#294172" },
254
+ kalilinux: { icon: SiKalilinux, color: "#557C94" },
255
+ linuxmint: { icon: SiLinuxmint, color: "#87CF3E" },
256
+ voidlinux: { icon: SiVoidlinux, color: "#8BC1A2" },
257
+ alpinelinux: { icon: SiAlpinelinux, color: "#0D597F" },
258
+ alpine: { icon: SiAlpinelinux, color: "#0D597F" },
259
+ almalinux: { icon: SiAlmalinux, color: "#1793D1" },
260
+ rockylinux: { icon: SiRockylinux, color: "#000000" },
261
+ raspberry: { icon: DiRasberryPi, color: "#C51A4A" },
262
+ raspberryPi: { icon: DiRasberryPi, color: "#C51A4A" },
263
+ raspberrypi: { icon: DiRasberryPi, color: "#C51A4A" },
264
+ raspberryPiZero: { icon: DiRasberryPi, color: "#C51A4A" },
265
+ raspian: { icon: DiRasberryPi, color: "#C51A4A" },
266
+ docker: { icon: SiDocker, color: "#2496ED" },
267
+ podman: { icon: SiPodman, color: "#2496ED" },
268
+ container: { icon: SiLinuxcontainers, color: "#2496ED" },
269
+ containers: { icon: SiLinuxcontainers, color: "#2496ED" },
270
+ linuxcontainers: { icon: SiLinuxcontainers, color: "#2496ED" },
271
+ vm: { icon: GrVirtualMachine, color: "#000000" },
272
+ vmware: { icon: SiVmware, color: "#F3801D" },
273
+
274
+ // Shells and tools
275
+ shell: { icon: SiGnubash, color: "#4EAA25" },
276
+ bash: { icon: SiGnubash, color: "#4EAA25" },
277
+ react: { icon: SiReact, color: "#61DAFB" },
278
+
279
+ // Social platforms
280
+ github: { icon: SiGithub, color: "#585b70" },
281
+ githubalt: { icon: PiGithubLogoFill, color: "#585b70" },
282
+ git: { icon: FaGitAlt, color: "#F05032" },
283
+ gitlab: { icon: FaGitlab, color: "#FC6D26" },
284
+ bitbucket: { icon: FaBitbucket, color: "#0052CC" },
285
+ linkedin: { icon: FaLinkedin, color: "#0A66C2" },
286
+ twitter: { icon: FaTwitter, color: "#1DA1F2" },
287
+ x: { icon: FaTwitter, color: "#1DA1F2" },
288
+ mastodon: { icon: SiMastodon, color: "#6364FF" },
289
+ instagram: { icon: SiInstagram, color: "#E4405F" },
290
+ insta: { icon: SiInstagram, color: "#E4405F" },
291
+ facebook: { icon: SiFacebook, color: "#1877F2" },
292
+ fb: { icon: SiFacebook, color: "#1877F2" },
293
+ youtube: { icon: SiYoutube, color: "#FF0000" },
294
+ yt: { icon: SiYoutube, color: "#FF0000" },
295
+ twitch: { icon: SiTwitch, color: "#9146FF" },
296
+ discord: { icon: SiDiscord, color: "#5865F2" },
297
+ discordapp: { icon: SiDiscord, color: "#5865F2" },
298
+ reddit: { icon: SiReddit, color: "#FF4500" },
299
+ stackoverflow: { icon: SiStackoverflow, color: "#F58025" },
300
+ pinterest: { icon: FaPinterest, color: "#E60023" },
301
+ snapchat: { icon: FaSnapchatGhost, color: "#FFFC00" },
302
+ tiktok: { icon: FaTiktok, color: "#000000" },
303
+ threads: { icon: SiThreads, color: "#000000" },
304
+
305
+ // Utility icons
306
+ note: { icon: SiObsidian, color: "#7C3AED" },
307
+ notes: { icon: SiObsidian, color: "#7C3AED" },
308
+ document: { icon: SiNotion, color: "#000000" },
309
+ docs: { icon: SiNotion, color: "#000000" },
310
+ calendar: { icon: FaCalendar, color: "#4285F4" },
311
+ task: { icon: FaCheckSquare, color: "#00BCD4" },
312
+ todo: { icon: FaCheckSquare, color: "#00BCD4" },
313
+ bookmark: { icon: FaBookmark, color: "#FFC107" },
314
+ star: { icon: FaStar, color: "#FFC107" },
315
+ favorite: { icon: FaHeart, color: "#E91E63" },
316
+ clipboard: { icon: FaClipboard, color: "#795548" },
317
+ search: { icon: FaSearch, color: "#607D8B" },
318
+ settings: { icon: FaCog, color: "#546E7A" },
319
+ config: { icon: FaCog, color: "#546E7A" },
320
+ edit: { icon: FaEdit, color: "#2196F3" },
321
+ home: { icon: FaHome, color: "#8BC34A" },
322
+ info: { icon: FaInfoCircle, color: "#2196F3" },
323
+ link: { icon: FaLink, color: "#9C27B0" },
324
+ url: { icon: FaLink, color: "#9C27B0" },
325
+ download: { icon: FaDownload, color: "#00BCD4" },
326
+ upload: { icon: FaUpload, color: "#FF9800" },
327
+ save: { icon: FaSave, color: "#4CAF50" },
328
+ delete: { icon: FaTrash, color: "#F44336" },
329
+ remove: { icon: FaTrash, color: "#F44336" },
330
+ warning: { icon: FaExclamationTriangle, color: "#FF9800" },
331
+ error: { icon: FaExclamationCircle, color: "#F44336" },
332
+ success: { icon: FaCheckCircle, color: "#4CAF50" },
333
+ help: { icon: FaQuestionCircle, color: "#2196F3" },
334
+ time: { icon: FaClock, color: "#607D8B" },
335
+ clock: { icon: FaClock, color: "#607D8B" },
336
+ chat: { icon: FaComments, color: "#03A9F4" },
337
+ message: { icon: FaEnvelopeOpen, color: "#03A9F4" },
338
+ notification: { icon: FaBell, color: "#FF9800" },
339
+ alert: { icon: FaBell, color: "#FF9800" },
340
+
341
+ // Messaging platforms
342
+ telegram: { icon: FaTelegramPlane, color: "#26A5E4" },
343
+ tg: { icon: FaTelegramPlane, color: "#26A5E4" },
344
+ whatsapp: { icon: FaWhatsapp, color: "#25D366" },
345
+ wp: { icon: FaWhatsapp, color: "#25D366" },
346
+ slack: { icon: FaSlack, color: "#4A154B" },
347
+ skype: { icon: FaSkype, color: "#00AFF0" },
348
+ matrix: { icon: SiMatrix, color: "#000000" },
349
+ signal: { icon: SiSignal, color: "#3A76F0" },
350
+ zoom: { icon: SiZoom, color: "#2D8CFF" },
351
+
352
+ // Email platforms
353
+ email: { icon: FaEnvelope, color: "#EA4335" },
354
+ mail: { icon: FaEnvelope, color: "#EA4335" },
355
+ contact: { icon: FaEnvelope, color: "#EA4335" },
356
+ gmail: { icon: SiGmail, color: "#EA4335" },
357
+ protonmail: { icon: SiProtonmail, color: "#8B89CC" },
358
+
359
+ // Blog/writing platforms
360
+ medium: { icon: FaMedium, color: "#000000" },
361
+ blog: { icon: FaBlogger, color: "#FF5722" },
362
+ wordpress: { icon: FaWordpress, color: "#21759B" },
363
+ substack: { icon: SiSubstack, color: "#FF6719" },
364
+ dev: { icon: FaDev, color: "#0A0A0A" },
365
+ rss: { icon: FaRss, color: "#FFA500" },
366
+
367
+ // Creative platforms
368
+ dribbble: { icon: FaDribbble, color: "#EA4C89" },
369
+ behance: { icon: FaBehance, color: "#1769FF" },
370
+ flickr: { icon: FaFlickr, color: "#0063DC" },
371
+ vimeo: { icon: FaVimeoV, color: "#1AB7EA" },
372
+
373
+ // Payment/donation
374
+ patreon: { icon: FaPatreon, color: "#F96854" },
375
+ paypal: { icon: FaPaypal, color: "#00457C" },
376
+ ethereum: { icon: FaEthereum, color: "#3C3C3D" },
377
+ bitcoin: { icon: FaBitcoin, color: "#F7931A" },
378
+
379
+ // Professional
380
+ xing: { icon: SiXing, color: "#006567" },
381
+ kaggle: { icon: SiKaggle, color: "#20BEFF" },
382
+
383
+ // Knowledge/note-taking
384
+ notion: { icon: SiNotion, color: "#000000" },
385
+ obsidian: { icon: SiObsidian, color: "#7C3AED" },
386
+ markdown: { icon: SiMarkdown, color: "#000000" },
387
+
388
+ // Misc
389
+ hackernews: { icon: FaHackerNews, color: "#FF6600" },
390
+ hn: { icon: FaHackerNews, color: "#FF6600" },
391
+ keybase: { icon: FaKeybase, color: "#33A0FF" },
392
+ openai: { icon: SiOpenai, color: "#412991" },
393
+ code: { icon: FaCode, color: "#007ACC" },
394
+ programming: { icon: FaLaptopCode, color: "#333333" },
395
+ user: { icon: FaUserCircle, color: "#4285F4" },
396
+ anonymous: { icon: FaUserSecret, color: "#666666" },
397
+ debug: { icon: FaBug, color: "#E91E63" },
398
+ bot: { icon: FaRobot, color: "#00BCD4" },
399
+ steam: { icon: FaSteam, color: "#000000" },
400
+ hashtag: { icon: FaHashtag, color: "#ffffff" },
401
+ codesandbox: { icon: SiCodesandbox, color: "#151515" },
402
+ codepen: { icon: FaCodepen, color: "#000000" },
403
+ website: { icon: FaGlobe, color: "#4285F4" },
404
+ web: { icon: FaGlobe, color: "#4285F4" },
405
+
406
+ // Content and anime tracking
407
+ imdb: { icon: SiImdb, color: "#F5C518" },
408
+ tvdb: { icon: FaTv, color: "#4BB7AA" },
409
+ themoviedb: { icon: FaFilm, color: "#01B4E4" },
410
+ tmdb: { icon: FaFilm, color: "#01B4E4" },
411
+ myanimelist: { icon: SiMyanimelist, color: "#2E51A2" },
412
+ mal: { icon: SiMyanimelist, color: "#2E51A2" },
413
+ anilist: { icon: SiAnilist, color: "#02A9FF" },
414
+ simkl: { icon: SiSimkl, color: "#ffffff" },
415
+ letterboxd: { icon: SiLetterboxd, color: "#00A13D" },
416
+ trakt: { icon: FaVideo, color: "#ED1C24" },
417
+ crunchyroll: { icon: SiCrunchyroll, color: "#F78B24" },
418
+ kitsu: { icon: SiKitsu, color: "#F75239" },
419
+ animenewsnetwork: { icon: FaPodcast, color: "#AA0000" },
420
+ ann: { icon: FaPodcast, color: "#AA0000" },
421
+
422
+ // Browsers
423
+ chrome: { icon: SiGooglechrome, color: "#4285F4" },
424
+ googlechrome: { icon: SiGooglechrome, color: "#4285F4" },
425
+ firefox: { icon: SiFirefox, color: "#FF7139" },
426
+ safari: { icon: SiSafari, color: "#000000" },
427
+ edge: { icon: FaEdge, color: "#0078D7" },
428
+ microsoftedge: { icon: FaEdge, color: "#0078D7" },
429
+ brave: { icon: SiBrave, color: "#FB542B" },
430
+ opera: { icon: SiOpera, color: "#FF1B2D" },
431
+ tor: { icon: SiTorbrowser, color: "#7D4698" },
432
+ torbrowser: { icon: SiTorbrowser, color: "#7D4698" },
433
+ vivaldi: { icon: SiVivaldi, color: "#EF3939" },
434
+ ie: { icon: FaInternetExplorer, color: "#0076D6" },
435
+ internetexplorer: { icon: FaInternetExplorer, color: "#0076D6" },
436
+ "zen-browser": { icon: SiZendesk, color: "#00363D" },
437
+ zenbrowser: { icon: SiZendesk, color: "#00363D" },
438
+ zen: { icon: SiZendesk, color: "#00363D" },
439
+
440
+ // Microsoft
441
+ windows: { icon: BiLogoWindows, color: "#0078D6" },
442
+ windows10: { icon: TiVendorMicrosoft, color: "#F25022" },
443
+ microsoft: { icon: FaMicrosoft, color: "#F25022" },
444
+ office: { icon: TiVendorMicrosoft, color: "#D83B01" },
445
+ excel: { icon: PiMicrosoftExcelLogoDuotone, color: "#217346" },
446
+ excelduotone: { icon: PiMicrosoftExcelLogoDuotone, color: "#217346" },
447
+ word: { icon: PiMicrosoftWordLogo, color: "#2B579A" },
448
+ powerpoint: { icon: PiMicrosoftPowerpointLogo, color: "#D83B01" },
449
+ powerpointlogo: { icon: PiMicrosoftPowerpointLogo, color: "#D83B01" },
450
+ teams: { icon: BsMicrosoftTeams, color: "#6264A7" },
451
+ teamsalt: { icon: BsMicrosoftTeams, color: "#6264A7" },
452
+ onedrive: { icon: TbBrandOnedrive, color: "#0078D4" },
453
+ azure: { icon: TbBrandAzure, color: "#0089D6" },
454
+ bing: { icon: TbBrandBing, color: "#008373" },
455
+ vscode: { icon: TbBrandVscode, color: "#007ACC" },
456
+ outlook: { icon: PiMicrosoftOutlookLogo, color: "#0078D4" },
457
+ fileword: { icon: BsFiletypeDocx, color: "#2B579A" },
458
+ fileexcel: { icon: BsFiletypeXlsx, color: "#217346" },
459
+ filepowerpoint: { icon: BsFiletypePpt, color: "#D83B01" },
460
+ githubcopilot: { icon: TbBrandGithubCopilot, color: "#000000" },
461
+
462
+ // Google products
463
+ googledrive: { icon: FaGoogleDrive, color: "#0F9D58" },
464
+ gdrive: { icon: SiGoogledrive, color: "#0F9D58" },
465
+ };
@@ -0,0 +1,239 @@
1
+ import { getCssVar } from "../utils/cssUtils.js";
2
+
3
+ const backgroundColor = getCssVar("--ifm-background-color");
4
+
5
+ export const metaTags = [
6
+ // Theme color meta tags
7
+ {
8
+ tagName: "meta",
9
+ attributes: {
10
+ name: "msapplication-TileColor",
11
+ content: backgroundColor,
12
+ },
13
+ },
14
+ {
15
+ tagName: "meta",
16
+ attributes: {
17
+ name: "theme-color",
18
+ content: backgroundColor,
19
+ },
20
+ },
21
+
22
+ // Android Chrome icons
23
+ {
24
+ tagName: "link",
25
+ attributes: {
26
+ rel: "icon",
27
+ type: "image/png",
28
+ sizes: "36x36",
29
+ href: "/favicon/android-chrome-36x36.png",
30
+ },
31
+ },
32
+ {
33
+ tagName: "link",
34
+ attributes: {
35
+ rel: "icon",
36
+ type: "image/png",
37
+ sizes: "48x48",
38
+ href: "/favicon/android-chrome-48x48.png",
39
+ },
40
+ },
41
+ {
42
+ tagName: "link",
43
+ attributes: {
44
+ rel: "icon",
45
+ type: "image/png",
46
+ sizes: "72x72",
47
+ href: "/favicon/android-chrome-72x72.png",
48
+ },
49
+ },
50
+ {
51
+ tagName: "link",
52
+ attributes: {
53
+ rel: "icon",
54
+ type: "image/png",
55
+ sizes: "96x96",
56
+ href: "/favicon/android-chrome-96x96.png",
57
+ },
58
+ },
59
+ {
60
+ tagName: "link",
61
+ attributes: {
62
+ rel: "icon",
63
+ type: "image/png",
64
+ sizes: "144x144",
65
+ href: "/favicon/android-chrome-144x144.png",
66
+ },
67
+ },
68
+ {
69
+ tagName: "link",
70
+ attributes: {
71
+ rel: "icon",
72
+ type: "image/png",
73
+ sizes: "192x192",
74
+ href: "/favicon/android-chrome-192x192.png",
75
+ },
76
+ },
77
+ {
78
+ tagName: "link",
79
+ attributes: {
80
+ rel: "icon",
81
+ type: "image/png",
82
+ sizes: "256x256",
83
+ href: "/favicon/android-chrome-256x256.png",
84
+ },
85
+ },
86
+ {
87
+ tagName: "link",
88
+ attributes: {
89
+ rel: "icon",
90
+ type: "image/png",
91
+ sizes: "384x384",
92
+ href: "/favicon/android-chrome-384x384.png",
93
+ },
94
+ },
95
+ {
96
+ tagName: "link",
97
+ attributes: {
98
+ rel: "icon",
99
+ type: "image/png",
100
+ sizes: "512x512",
101
+ href: "/favicon/android-chrome-512x512.png",
102
+ },
103
+ },
104
+
105
+ // Apple touch icons
106
+ {
107
+ tagName: "link",
108
+ attributes: {
109
+ rel: "apple-touch-icon",
110
+ sizes: "57x57",
111
+ href: "/favicon/apple-touch-icon-57x57.png",
112
+ },
113
+ },
114
+ {
115
+ tagName: "link",
116
+ attributes: {
117
+ rel: "apple-touch-icon",
118
+ sizes: "60x60",
119
+ href: "/favicon/apple-touch-icon-60x60.png",
120
+ },
121
+ },
122
+ {
123
+ tagName: "link",
124
+ attributes: {
125
+ rel: "apple-touch-icon",
126
+ sizes: "72x72",
127
+ href: "/favicon/apple-touch-icon-72x72.png",
128
+ },
129
+ },
130
+ {
131
+ tagName: "link",
132
+ attributes: {
133
+ rel: "apple-touch-icon",
134
+ sizes: "76x76",
135
+ href: "/favicon/apple-touch-icon-76x76.png",
136
+ },
137
+ },
138
+ {
139
+ tagName: "link",
140
+ attributes: {
141
+ rel: "apple-touch-icon",
142
+ sizes: "114x114",
143
+ href: "/favicon/apple-touch-icon-114x114.png",
144
+ },
145
+ },
146
+ {
147
+ tagName: "link",
148
+ attributes: {
149
+ rel: "apple-touch-icon",
150
+ sizes: "120x120",
151
+ href: "/favicon/apple-touch-icon-120x120.png",
152
+ },
153
+ },
154
+ {
155
+ tagName: "link",
156
+ attributes: {
157
+ rel: "apple-touch-icon",
158
+ sizes: "144x144",
159
+ href: "/favicon/apple-touch-icon-144x144.png",
160
+ },
161
+ },
162
+ {
163
+ tagName: "link",
164
+ attributes: {
165
+ rel: "apple-touch-icon",
166
+ sizes: "152x152",
167
+ href: "/favicon/apple-touch-icon-152x152.png",
168
+ },
169
+ },
170
+ {
171
+ tagName: "link",
172
+ attributes: {
173
+ rel: "apple-touch-icon",
174
+ sizes: "167x167",
175
+ href: "/favicon/apple-touch-icon-167x167.png",
176
+ },
177
+ },
178
+ {
179
+ tagName: "link",
180
+ attributes: {
181
+ rel: "apple-touch-icon",
182
+ sizes: "180x180",
183
+ href: "/favicon/apple-touch-icon-180x180.png",
184
+ },
185
+ },
186
+ {
187
+ tagName: "link",
188
+ attributes: {
189
+ rel: "apple-touch-icon",
190
+ sizes: "1024x1024",
191
+ href: "/favicon/apple-touch-icon-1024x1024.png",
192
+ },
193
+ },
194
+ {
195
+ tagName: "link",
196
+ attributes: {
197
+ rel: "apple-touch-icon-precomposed",
198
+ href: "/favicon/apple-touch-icon-precomposed.png",
199
+ },
200
+ },
201
+
202
+ // Standard favicons
203
+ {
204
+ tagName: "link",
205
+ attributes: {
206
+ rel: "icon",
207
+ type: "image/png",
208
+ sizes: "16x16",
209
+ href: "/favicon/favicon-16x16.png",
210
+ },
211
+ },
212
+ {
213
+ tagName: "link",
214
+ attributes: {
215
+ rel: "icon",
216
+ type: "image/png",
217
+ sizes: "32x32",
218
+ href: "/favicon/favicon-32x32.png",
219
+ },
220
+ },
221
+ {
222
+ tagName: "link",
223
+ attributes: {
224
+ rel: "icon",
225
+ type: "image/png",
226
+ sizes: "48x48",
227
+ href: "/favicon/favicon-48x48.png",
228
+ },
229
+ },
230
+
231
+ // Web manifest
232
+ {
233
+ tagName: "link",
234
+ attributes: {
235
+ rel: "manifest",
236
+ href: "/favicon/manifest.webmanifest",
237
+ },
238
+ },
239
+ ];