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
@@ -1,130 +0,0 @@
1
- import { useState, useEffect, useMemo, useCallback } from 'react';
2
- import styles from './styles.module.css';
3
- import { FaQuestionCircle } from 'react-icons/fa';
4
-
5
- import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
6
- import useIsBrowser from '@docusaurus/useIsBrowser';
7
-
8
- import Tooltip from '@site/src/components/Tooltip';
9
- import { iconMap } from '@site/src/config/iconMappings';
10
-
11
-
12
- // Default icon & icon
13
- const DEFAULT_ICON = FaQuestionCircle;
14
- const DEFAULT_COLOR = 'var(--ifm-color-primary)';
15
-
16
-
17
- export default function SocialIcons({ showAll = false }) {
18
- const { siteConfig } = useDocusaurusContext();
19
- const { customFields } = siteConfig;
20
- const isBrowser = useIsBrowser();
21
-
22
- const [animationDelays, setAnimationDelays] = useState({});
23
-
24
- const allSocialLinks = customFields.socialLinks.links || [];
25
-
26
- // FIX: `to prevent unnecessary recalculations`
27
- const socialLinks = useMemo(() => {
28
- return showAll
29
- ? allSocialLinks
30
- : allSocialLinks.filter(link => link.pin);
31
- }, [allSocialLinks, showAll]);
32
-
33
- // Calculate delays based on screen size
34
- const calculateDelays = useCallback(() => {
35
- if (!isBrowser) return {};
36
-
37
- const isTablet = window.innerWidth <= 768;
38
- const isMobile = window.innerWidth <= 480;
39
- const delays = {};
40
-
41
- const baseDelay = isMobile ? 0.7 : (isTablet ? 0.9 : 1.3);
42
- const incrementDelay = 0.1;
43
-
44
- socialLinks.forEach((_, index) => {
45
- delays[index] = `${baseDelay + (index * incrementDelay)}s`;
46
- });
47
-
48
- return delays;
49
- }, [isBrowser, socialLinks]);
50
-
51
- useEffect(() => {
52
- if (!isBrowser) return;
53
-
54
- // Set initial delays
55
- setAnimationDelays(calculateDelays());
56
-
57
- const handleResize = () => {
58
- setAnimationDelays(calculateDelays());
59
- };
60
-
61
- window.addEventListener('resize', handleResize);
62
- return () => window.removeEventListener('resize', handleResize);
63
- }, [isBrowser, calculateDelays]);
64
-
65
-
66
- // Get icon component and color
67
- const getIconDetails = (iconName) => {
68
-
69
- if (!iconName) {
70
- return {
71
- icon: DEFAULT_ICON,
72
- color: DEFAULT_COLOR
73
- };
74
- }
75
-
76
- const formattedIconName = iconName.toLowerCase();
77
- const iconDetails = iconMap[formattedIconName];
78
-
79
- if (!iconDetails) {
80
- return {
81
- icon: DEFAULT_ICON,
82
- color: DEFAULT_COLOR
83
- };
84
- }
85
-
86
- return {
87
- icon: iconDetails.icon,
88
- color: iconDetails.color || DEFAULT_COLOR
89
- };
90
- };
91
-
92
- if (socialLinks.length === 0) {
93
- return null;
94
- }
95
-
96
- return (
97
- <div className={styles.socialIcons}>
98
- {
99
- socialLinks.map((social, index) => {
100
- const { icon: IconComponent, color: iconColor } = getIconDetails(social.icon);
101
- const href = social.url || '#';
102
- const displayColor = social.color || iconColor;
103
-
104
- return (
105
- <Tooltip
106
- key={index}
107
- msg={social.desc || social.icon || 'Link'}
108
- position="top"
109
- color={displayColor}
110
- underline={false}
111
- >
112
- <a
113
- href={href}
114
- target="_blank"
115
- rel="noopener noreferrer"
116
- className={styles.socialLink}
117
- style={{
118
- '--hover-color': displayColor,
119
- animationDelay: animationDelays[index] || '0s'
120
- }}
121
- aria-label={social.icon || 'social link'}
122
- >
123
- <IconComponent size={24} />
124
- </a>
125
- </Tooltip>
126
- );
127
- })}
128
- </div>
129
- );
130
- }
@@ -1,329 +0,0 @@
1
- import { TbBrandCSharp, TbBrandVscode, TbBrandOnedrive, TbBrandAzure, TbBrandBing, TbBrandGithubCopilot } from "react-icons/tb";
2
- import { GrVirtualMachine } from "react-icons/gr";
3
- import { DiRasberryPi } from "react-icons/di";
4
- import { PiGithubLogoFill, PiMicrosoftExcelLogoDuotone, PiMicrosoftOutlookLogo, PiMicrosoftPowerpointLogo, PiMicrosoftWordLogo } from "react-icons/pi";
5
- import { BiLogoPostgresql, BiLogoWindows } from "react-icons/bi";
6
- import { BsFiletypeXlsx, BsFiletypeDocx, BsFiletypePpt, BsMicrosoftTeams } from "react-icons/bs";
7
- import { TiVendorMicrosoft } from "react-icons/ti";
8
-
9
- import {
10
- SiPython, SiJavascript, SiCplusplus, SiRust, SiGo, SiTypescript, SiReact, SiMysql, SiGnubash,
11
- SiLinux, SiLinuxfoundation, SiArchlinux, SiAlmalinux, SiAlpinelinux, SiKalilinux, SiLinuxmint,
12
- SiRockylinux, SiVoidlinux, SiUbuntu, SiKubuntu, SiUbuntumate, SiDebian, SiRedhat, SiGithub,
13
- SiMastodon, SiInstagram, SiFacebook, SiYoutube, SiTwitch, SiDiscord, SiReddit,
14
- SiStackoverflow, SiLeetcode, SiHackerrank, SiCodeforces, SiMatrix, SiGmail, SiProtonmail, SiSignal, SiReplit,
15
- SiZoom, SiNotion, SiObsidian, SiMarkdown, SiSubstack, SiThreads, SiOpenai, SiDocker, SiPodman,
16
- SiLinuxcontainers, SiVmware, SiXing, SiKaggle, SiCodesandbox,
17
- SiGooglechrome, SiFirefox, SiSafari, SiBrave, SiOpera, SiTorbrowser, SiVivaldi, SiZendesk,
18
- SiImdb, SiMyanimelist, SiAnilist, SiLetterboxd, SiCrunchyroll, SiKitsu, SiSimkl,
19
- SiMongodb, SiSqlite, SiMariadb, SiInfluxdb, SiRedis, SiCouchbase, SiApachecassandra,
20
- SiFirebase, SiNeo4J, SiElasticsearch, SiGraphql, SiGoogledrive
21
- } from 'react-icons/si';
22
-
23
- import {
24
- FaJava, FaEnvelope, FaRss, FaGitAlt, FaTwitter, FaTelegramPlane, FaMedium, FaPhp,
25
- FaGlobe, FaDev, FaPinterest, FaWhatsapp, FaSlack, FaSkype, FaSnapchatGhost, FaTiktok, FaSteam,
26
- FaGitlab, FaBitbucket, FaKeybase, FaCodepen, FaJsSquare, FaHackerNews, FaVimeoV, FaFlickr,
27
- FaDribbble, FaBehance, FaPatreon, FaPaypal, FaEthereum, FaBitcoin, FaLaptopCode, FaCode,
28
- FaBlogger, FaWordpress, FaHashtag, FaUserCircle, FaUserSecret, FaBug, FaRobot, FaHtml5, FaCss3Alt,
29
- FaFedora, FaInternetExplorer, FaEdge, FaTv, FaFilm, FaVideo, FaPodcast,
30
- FaSearch, FaCog, FaEdit, FaHome, FaInfoCircle, FaLink, FaDownload,
31
- FaUpload, FaSave, FaTrash, FaExclamationTriangle, FaExclamationCircle, FaCheckCircle,
32
- FaQuestionCircle, FaClock, FaComments, FaBell, FaDatabase,
33
- FaCalendar, FaCheckSquare, FaBookmark, FaStar, FaHeart, FaClipboard, FaEnvelopeOpen,
34
- FaMicrosoft, FaGoogleDrive, FaLinkedin
35
- } from "react-icons/fa";
36
-
37
-
38
-
39
- //--------- Icon mappings ---------
40
-
41
- export const iconMap = {
42
-
43
- // Programming languages
44
- python: { icon: SiPython, color: '#3776AB' },
45
- javascript: { icon: SiJavascript, color: '#F7DF1E' },
46
- jssquare: { icon: FaJsSquare, color: '#F7DF1E' },
47
- typescript: { icon: SiTypescript, color: '#3178C6' },
48
- cpp: { icon: SiCplusplus, color: '#00599C' },
49
- csharp: { icon: TbBrandCSharp, color: '#239120' },
50
- rust: { icon: SiRust, color: '#ffffff' },
51
- go: { icon: SiGo, color: '#00ADD8' },
52
- java: { icon: FaJava, color: '#007396' },
53
- php: { icon: FaPhp, color: '#777BB4' },
54
- html: { icon: FaHtml5, color: '#E34F26' },
55
- css: { icon: FaCss3Alt, color: '#1572B6' },
56
- sql: { icon: SiMysql, color: '#4479A1' },
57
- postgresql: { icon: BiLogoPostgresql, color: '#336791' },
58
- postgres: { icon: BiLogoPostgresql, color: '#336791' },
59
- oraclesql: { icon: FaDatabase, color: '#F80000' },
60
- oracle: { icon: FaDatabase, color: '#F80000' },
61
- database: { icon: FaDatabase, color: '#47A248' },
62
- db: { icon: FaDatabase, color: '#47A248' },
63
- dbms: { icon: FaDatabase, color: '#47A248' },
64
- mysql: { icon: SiMysql, color: '#4479A1' },
65
- mariadb: { icon: SiMariadb, color: '#003545' },
66
- sqlite: { icon: SiSqlite, color: '#003B57' },
67
- mongodb: { icon: SiMongodb, color: '#47A248' },
68
- mongo: { icon: SiMongodb, color: '#47A248' },
69
- nosql: { icon: SiMongodb, color: '#47A248' },
70
- redis: { icon: SiRedis, color: '#DC382D' },
71
- couchbase: { icon: SiCouchbase, color: '#EA2328' },
72
- cassandra: { icon: SiApachecassandra, color: '#1287B1' },
73
- dynamodb: { icon: FaDatabase, color: '#4053D6' },
74
- firebase: { icon: SiFirebase, color: '#FFCA28' },
75
- firestore: { icon: SiFirebase, color: '#FFCA28' },
76
- mssql: { icon: FaDatabase, color: '#CC2927' },
77
- sqlserver: { icon: FaDatabase, color: '#CC2927' },
78
- microsoftsqlserver: { icon: FaDatabase, color: '#CC2927' },
79
- neo4j: { icon: SiNeo4J, color: '#008CC1' },
80
- graphdb: { icon: SiNeo4J, color: '#008CC1' },
81
- elasticsearch: { icon: SiElasticsearch, color: '#005571' },
82
- graphql: { icon: SiGraphql, color: '#E10098' },
83
- influxdb: { icon: SiInfluxdb, color: '#22ADF6' },
84
- timeseries: { icon: SiInfluxdb, color: '#22ADF6' },
85
-
86
- // Competitive programming platforms
87
- leetcode: { icon: SiLeetcode, color: '#FFA116' },
88
- hackerrank: { icon: SiHackerrank, color: '#2EC866' },
89
- codeforces: { icon: SiCodeforces, color: '#1F8ACB' },
90
- replit: { icon: SiReplit, color: '#FA5302' },
91
-
92
-
93
-
94
-
95
-
96
- // Operating systems and containers
97
- linux: { icon: SiLinux, color: '#FCC624' },
98
- linuxfoundation: { icon: SiLinuxfoundation, color: '#000000' },
99
- arch: { icon: SiArchlinux, color: '#1793D1' },
100
- archlinux: { icon: SiArchlinux, color: '#1793D1' },
101
- ubuntu: { icon: SiUbuntu, color: '#E95420' },
102
- kubuntu: { icon: SiKubuntu, color: '#0078D6' },
103
- ubuntumate: { icon: SiUbuntumate, color: '#2C001E' },
104
- debian: { icon: SiDebian, color: '#A80030' },
105
- redhat: { icon: SiRedhat, color: '#EE0000' },
106
- fedora: { icon: FaFedora, color: '#294172' },
107
- kalilinux: { icon: SiKalilinux, color: '#557C94' },
108
- linuxmint: { icon: SiLinuxmint, color: '#87CF3E' },
109
- voidlinux: { icon: SiVoidlinux, color: '#8BC1A2' },
110
- alpinelinux: { icon: SiAlpinelinux, color: '#0D597F' },
111
- alpine: { icon: SiAlpinelinux, color: '#0D597F' },
112
- almalinux: { icon: SiAlmalinux, color: '#1793D1' },
113
- rockylinux: { icon: SiRockylinux, color: '#000000' },
114
- raspberry: { icon: DiRasberryPi, color: '#C51A4A' },
115
- raspberryPi: { icon: DiRasberryPi, color: '#C51A4A' },
116
- raspberrypi: { icon: DiRasberryPi, color: '#C51A4A' },
117
- raspberryPiZero: { icon: DiRasberryPi, color: '#C51A4A' },
118
- raspian: { icon: DiRasberryPi, color: '#C51A4A' },
119
- docker: { icon: SiDocker, color: '#2496ED' },
120
- podman: { icon: SiPodman, color: '#2496ED' },
121
- container: { icon: SiLinuxcontainers, color: '#2496ED' },
122
- containers: { icon: SiLinuxcontainers, color: '#2496ED' },
123
- linuxcontainers: { icon: SiLinuxcontainers, color: '#2496ED' },
124
- vm: { icon: GrVirtualMachine, color: '#000000' },
125
- vmware: { icon: SiVmware, color: '#F3801D' },
126
-
127
-
128
- // Shells and tools
129
- shell: { icon: SiGnubash, color: '#4EAA25' },
130
- bash: { icon: SiGnubash, color: '#4EAA25' },
131
- react: { icon: SiReact, color: '#61DAFB' },
132
-
133
-
134
- // Social platforms
135
- github: { icon: SiGithub, color: '#585b70' },
136
- githubalt: { icon: PiGithubLogoFill, color: '#585b70' },
137
- git: { icon: FaGitAlt, color: '#F05032' },
138
- gitlab: { icon: FaGitlab, color: '#FC6D26' },
139
- bitbucket: { icon: FaBitbucket, color: '#0052CC' },
140
- linkedin: { icon: FaLinkedin, color: '#0A66C2' },
141
- twitter: { icon: FaTwitter, color: '#1DA1F2' },
142
- x: { icon: FaTwitter, color: '#1DA1F2' },
143
- mastodon: { icon: SiMastodon, color: '#6364FF' },
144
- instagram: { icon: SiInstagram, color: '#E4405F' },
145
- insta: { icon: SiInstagram, color: '#E4405F' },
146
- facebook: { icon: SiFacebook, color: '#1877F2' },
147
- fb: { icon: SiFacebook, color: '#1877F2' },
148
- youtube: { icon: SiYoutube, color: '#FF0000' },
149
- yt: { icon: SiYoutube, color: '#FF0000' },
150
- twitch: { icon: SiTwitch, color: '#9146FF' },
151
- discord: { icon: SiDiscord, color: '#5865F2' },
152
- discordapp: { icon: SiDiscord, color: '#5865F2' },
153
- reddit: { icon: SiReddit, color: '#FF4500' },
154
- stackoverflow: { icon: SiStackoverflow, color: '#F58025' },
155
- pinterest: { icon: FaPinterest, color: '#E60023' },
156
- snapchat: { icon: FaSnapchatGhost, color: '#FFFC00' },
157
- tiktok: { icon: FaTiktok, color: '#000000' },
158
- threads: { icon: SiThreads, color: '#000000' },
159
-
160
-
161
- // Utility icons
162
- note: { icon: SiObsidian, color: '#7C3AED' },
163
- notes: { icon: SiObsidian, color: '#7C3AED' },
164
- document: { icon: SiNotion, color: '#000000' },
165
- docs: { icon: SiNotion, color: '#000000' },
166
- calendar: { icon: FaCalendar, color: '#4285F4' },
167
- task: { icon: FaCheckSquare, color: '#00BCD4' },
168
- todo: { icon: FaCheckSquare, color: '#00BCD4' },
169
- bookmark: { icon: FaBookmark, color: '#FFC107' },
170
- star: { icon: FaStar, color: '#FFC107' },
171
- favorite: { icon: FaHeart, color: '#E91E63' },
172
- clipboard: { icon: FaClipboard, color: '#795548' },
173
- search: { icon: FaSearch, color: '#607D8B' },
174
- settings: { icon: FaCog, color: '#546E7A' },
175
- config: { icon: FaCog, color: '#546E7A' },
176
- edit: { icon: FaEdit, color: '#2196F3' },
177
- home: { icon: FaHome, color: '#8BC34A' },
178
- info: { icon: FaInfoCircle, color: '#2196F3' },
179
- link: { icon: FaLink, color: '#9C27B0' },
180
- url: { icon: FaLink, color: '#9C27B0' },
181
- download: { icon: FaDownload, color: '#00BCD4' },
182
- upload: { icon: FaUpload, color: '#FF9800' },
183
- save: { icon: FaSave, color: '#4CAF50' },
184
- delete: { icon: FaTrash, color: '#F44336' },
185
- remove: { icon: FaTrash, color: '#F44336' },
186
- warning: { icon: FaExclamationTriangle, color: '#FF9800' },
187
- error: { icon: FaExclamationCircle, color: '#F44336' },
188
- success: { icon: FaCheckCircle, color: '#4CAF50' },
189
- help: { icon: FaQuestionCircle, color: '#2196F3' },
190
- time: { icon: FaClock, color: '#607D8B' },
191
- clock: { icon: FaClock, color: '#607D8B' },
192
- chat: { icon: FaComments, color: '#03A9F4' },
193
- message: { icon: FaEnvelopeOpen, color: '#03A9F4' },
194
- notification: { icon: FaBell, color: '#FF9800' },
195
- alert: { icon: FaBell, color: '#FF9800' },
196
-
197
- // Messaging platforms
198
- telegram: { icon: FaTelegramPlane, color: '#26A5E4' },
199
- tg: { icon: FaTelegramPlane, color: '#26A5E4' },
200
- whatsapp: { icon: FaWhatsapp, color: '#25D366' },
201
- wp: { icon: FaWhatsapp, color: '#25D366' },
202
- slack: { icon: FaSlack, color: '#4A154B' },
203
- skype: { icon: FaSkype, color: '#00AFF0' },
204
- matrix: { icon: SiMatrix, color: '#000000' },
205
- signal: { icon: SiSignal, color: '#3A76F0' },
206
- zoom: { icon: SiZoom, color: '#2D8CFF' },
207
-
208
-
209
- // Email platforms
210
- email: { icon: FaEnvelope, color: '#EA4335' },
211
- mail: { icon: FaEnvelope, color: '#EA4335' },
212
- contact: { icon: FaEnvelope, color: '#EA4335' },
213
- gmail: { icon: SiGmail, color: '#EA4335' },
214
- protonmail: { icon: SiProtonmail, color: '#8B89CC' },
215
-
216
-
217
- // Blog/writing platforms
218
- medium: { icon: FaMedium, color: '#000000' },
219
- blog: { icon: FaBlogger, color: '#FF5722' },
220
- wordpress: { icon: FaWordpress, color: '#21759B' },
221
- substack: { icon: SiSubstack, color: '#FF6719' },
222
- dev: { icon: FaDev, color: '#0A0A0A' },
223
- rss: { icon: FaRss, color: '#FFA500' },
224
-
225
-
226
- // Creative platforms
227
- dribbble: { icon: FaDribbble, color: '#EA4C89' },
228
- behance: { icon: FaBehance, color: '#1769FF' },
229
- flickr: { icon: FaFlickr, color: '#0063DC' },
230
- vimeo: { icon: FaVimeoV, color: '#1AB7EA' },
231
-
232
-
233
- // Payment/donation
234
- patreon: { icon: FaPatreon, color: '#F96854' },
235
- paypal: { icon: FaPaypal, color: '#00457C' },
236
- ethereum: { icon: FaEthereum, color: '#3C3C3D' },
237
- bitcoin: { icon: FaBitcoin, color: '#F7931A' },
238
-
239
-
240
- // Professional
241
- xing: { icon: SiXing, color: '#006567' },
242
- kaggle: { icon: SiKaggle, color: '#20BEFF' },
243
-
244
-
245
- // Knowledge/note-taking
246
- notion: { icon: SiNotion, color: '#000000' },
247
- obsidian: { icon: SiObsidian, color: '#7C3AED' },
248
- markdown: { icon: SiMarkdown, color: '#000000' },
249
-
250
-
251
- // Misc
252
- hackernews: { icon: FaHackerNews, color: '#FF6600' },
253
- hn: { icon: FaHackerNews, color: '#FF6600' },
254
- keybase: { icon: FaKeybase, color: '#33A0FF' },
255
- openai: { icon: SiOpenai, color: '#412991' },
256
- code: { icon: FaCode, color: '#007ACC' },
257
- programming: { icon: FaLaptopCode, color: '#333333' },
258
- user: { icon: FaUserCircle, color: '#4285F4' },
259
- anonymous: { icon: FaUserSecret, color: '#666666' },
260
- debug: { icon: FaBug, color: '#E91E63' },
261
- bot: { icon: FaRobot, color: '#00BCD4' },
262
- steam: { icon: FaSteam, color: '#000000' },
263
- hashtag: { icon: FaHashtag, color: '#ffffff' },
264
- codesandbox: { icon: SiCodesandbox, color: '#151515' },
265
- codepen: { icon: FaCodepen, color: '#000000' },
266
- website: { icon: FaGlobe, color: '#4285F4' },
267
- web: { icon: FaGlobe, color: '#4285F4' },
268
-
269
- // Content and anime tracking
270
- imdb: { icon: SiImdb, color: '#F5C518' },
271
- tvdb: { icon: FaTv, color: '#4BB7AA' },
272
- themoviedb: { icon: FaFilm, color: '#01B4E4' },
273
- tmdb: { icon: FaFilm, color: '#01B4E4' },
274
- myanimelist: { icon: SiMyanimelist, color: '#2E51A2' },
275
- mal: { icon: SiMyanimelist, color: '#2E51A2' },
276
- anilist: { icon: SiAnilist, color: '#02A9FF' },
277
- simkl: { icon: SiSimkl, color: '#ffffff' },
278
- letterboxd: { icon: SiLetterboxd, color: '#00A13D' },
279
- trakt: { icon: FaVideo, color: '#ED1C24' },
280
- crunchyroll: { icon: SiCrunchyroll, color: '#F78B24' },
281
- kitsu: { icon: SiKitsu, color: '#F75239' },
282
- animenewsnetwork: { icon: FaPodcast, color: '#AA0000' },
283
- ann: { icon: FaPodcast, color: '#AA0000' },
284
-
285
- // Browsers
286
- chrome: { icon: SiGooglechrome, color: '#4285F4' },
287
- googlechrome: { icon: SiGooglechrome, color: '#4285F4' },
288
- firefox: { icon: SiFirefox, color: '#FF7139' },
289
- safari: { icon: SiSafari, color: '#000000' },
290
- edge: { icon: FaEdge, color: '#0078D7' },
291
- microsoftedge: { icon: FaEdge, color: '#0078D7' },
292
- brave: { icon: SiBrave, color: '#FB542B' },
293
- opera: { icon: SiOpera, color: '#FF1B2D' },
294
- tor: { icon: SiTorbrowser, color: '#7D4698' },
295
- torbrowser: { icon: SiTorbrowser, color: '#7D4698' },
296
- vivaldi: { icon: SiVivaldi, color: '#EF3939' },
297
- ie: { icon: FaInternetExplorer, color: '#0076D6' },
298
- internetexplorer: { icon: FaInternetExplorer, color: '#0076D6' },
299
- "zen-browser": { icon: SiZendesk, color: '#00363D' },
300
- zenbrowser: { icon: SiZendesk, color: '#00363D' },
301
- zen: { icon: SiZendesk, color: '#00363D' },
302
-
303
- // Microsoft
304
- windows: { icon: BiLogoWindows, color: '#0078D6' },
305
- windows10: { icon: TiVendorMicrosoft, color: '#F25022' },
306
- microsoft: { icon: FaMicrosoft, color: '#F25022' },
307
- office: { icon: TiVendorMicrosoft, color: '#D83B01' },
308
- excel: { icon: PiMicrosoftExcelLogoDuotone, color: '#217346' },
309
- excelduotone: { icon: PiMicrosoftExcelLogoDuotone, color: '#217346' },
310
- word: { icon: PiMicrosoftWordLogo, color: '#2B579A' },
311
- powerpoint: { icon: PiMicrosoftPowerpointLogo, color: '#D83B01' },
312
- powerpointlogo: { icon: PiMicrosoftPowerpointLogo, color: '#D83B01' },
313
- teams: { icon: BsMicrosoftTeams, color: '#6264A7' },
314
- teamsalt: { icon: BsMicrosoftTeams, color: '#6264A7' },
315
- onedrive: { icon: TbBrandOnedrive, color: '#0078D4' },
316
- azure: { icon: TbBrandAzure, color: '#0089D6' },
317
- bing: { icon: TbBrandBing, color: '#008373' },
318
- vscode: { icon: TbBrandVscode, color: '#007ACC' },
319
- outlook: { icon: PiMicrosoftOutlookLogo, color: '#0078D4' },
320
- fileword: { icon: BsFiletypeDocx, color: '#2B579A' },
321
- fileexcel: { icon: BsFiletypeXlsx, color: '#217346' },
322
- filepowerpoint: { icon: BsFiletypePpt, color: '#D83B01' },
323
- githubcopilot: { icon: TbBrandGithubCopilot, color: '#000000' },
324
-
325
- // Google products
326
- googledrive: { icon: FaGoogleDrive, color: '#0F9D58' },
327
- gdrive: { icon: SiGoogledrive, color: '#0F9D58' }
328
-
329
- };
@@ -1,240 +0,0 @@
1
- import { getCssVar } from "../utils/cssUtils.js";
2
-
3
- const backgroundColor = getCssVar('--ifm-background-color');
4
-
5
- export const metaTags = [
6
-
7
- // Theme color meta tags
8
- {
9
- tagName: 'meta',
10
- attributes: {
11
- name: 'msapplication-TileColor',
12
- content: backgroundColor,
13
- },
14
- },
15
- {
16
- tagName: 'meta',
17
- attributes: {
18
- name: 'theme-color',
19
- content: backgroundColor,
20
- },
21
- },
22
-
23
- // Android Chrome icons
24
- {
25
- tagName: 'link',
26
- attributes: {
27
- rel: 'icon',
28
- type: 'image/png',
29
- sizes: '36x36',
30
- href: '/favicon/android-chrome-36x36.png',
31
- },
32
- },
33
- {
34
- tagName: 'link',
35
- attributes: {
36
- rel: 'icon',
37
- type: 'image/png',
38
- sizes: '48x48',
39
- href: '/favicon/android-chrome-48x48.png',
40
- },
41
- },
42
- {
43
- tagName: 'link',
44
- attributes: {
45
- rel: 'icon',
46
- type: 'image/png',
47
- sizes: '72x72',
48
- href: '/favicon/android-chrome-72x72.png',
49
- },
50
- },
51
- {
52
- tagName: 'link',
53
- attributes: {
54
- rel: 'icon',
55
- type: 'image/png',
56
- sizes: '96x96',
57
- href: '/favicon/android-chrome-96x96.png',
58
- },
59
- },
60
- {
61
- tagName: 'link',
62
- attributes: {
63
- rel: 'icon',
64
- type: 'image/png',
65
- sizes: '144x144',
66
- href: '/favicon/android-chrome-144x144.png',
67
- },
68
- },
69
- {
70
- tagName: 'link',
71
- attributes: {
72
- rel: 'icon',
73
- type: 'image/png',
74
- sizes: '192x192',
75
- href: '/favicon/android-chrome-192x192.png',
76
- },
77
- },
78
- {
79
- tagName: 'link',
80
- attributes: {
81
- rel: 'icon',
82
- type: 'image/png',
83
- sizes: '256x256',
84
- href: '/favicon/android-chrome-256x256.png',
85
- },
86
- },
87
- {
88
- tagName: 'link',
89
- attributes: {
90
- rel: 'icon',
91
- type: 'image/png',
92
- sizes: '384x384',
93
- href: '/favicon/android-chrome-384x384.png',
94
- },
95
- },
96
- {
97
- tagName: 'link',
98
- attributes: {
99
- rel: 'icon',
100
- type: 'image/png',
101
- sizes: '512x512',
102
- href: '/favicon/android-chrome-512x512.png',
103
- },
104
- },
105
-
106
- // Apple touch icons
107
- {
108
- tagName: 'link',
109
- attributes: {
110
- rel: 'apple-touch-icon',
111
- sizes: '57x57',
112
- href: '/favicon/apple-touch-icon-57x57.png',
113
- },
114
- },
115
- {
116
- tagName: 'link',
117
- attributes: {
118
- rel: 'apple-touch-icon',
119
- sizes: '60x60',
120
- href: '/favicon/apple-touch-icon-60x60.png',
121
- },
122
- },
123
- {
124
- tagName: 'link',
125
- attributes: {
126
- rel: 'apple-touch-icon',
127
- sizes: '72x72',
128
- href: '/favicon/apple-touch-icon-72x72.png',
129
- },
130
- },
131
- {
132
- tagName: 'link',
133
- attributes: {
134
- rel: 'apple-touch-icon',
135
- sizes: '76x76',
136
- href: '/favicon/apple-touch-icon-76x76.png',
137
- },
138
- },
139
- {
140
- tagName: 'link',
141
- attributes: {
142
- rel: 'apple-touch-icon',
143
- sizes: '114x114',
144
- href: '/favicon/apple-touch-icon-114x114.png',
145
- },
146
- },
147
- {
148
- tagName: 'link',
149
- attributes: {
150
- rel: 'apple-touch-icon',
151
- sizes: '120x120',
152
- href: '/favicon/apple-touch-icon-120x120.png',
153
- },
154
- },
155
- {
156
- tagName: 'link',
157
- attributes: {
158
- rel: 'apple-touch-icon',
159
- sizes: '144x144',
160
- href: '/favicon/apple-touch-icon-144x144.png',
161
- },
162
- },
163
- {
164
- tagName: 'link',
165
- attributes: {
166
- rel: 'apple-touch-icon',
167
- sizes: '152x152',
168
- href: '/favicon/apple-touch-icon-152x152.png',
169
- },
170
- },
171
- {
172
- tagName: 'link',
173
- attributes: {
174
- rel: 'apple-touch-icon',
175
- sizes: '167x167',
176
- href: '/favicon/apple-touch-icon-167x167.png',
177
- },
178
- },
179
- {
180
- tagName: 'link',
181
- attributes: {
182
- rel: 'apple-touch-icon',
183
- sizes: '180x180',
184
- href: '/favicon/apple-touch-icon-180x180.png',
185
- },
186
- },
187
- {
188
- tagName: 'link',
189
- attributes: {
190
- rel: 'apple-touch-icon',
191
- sizes: '1024x1024',
192
- href: '/favicon/apple-touch-icon-1024x1024.png',
193
- },
194
- },
195
- {
196
- tagName: 'link',
197
- attributes: {
198
- rel: 'apple-touch-icon-precomposed',
199
- href: '/favicon/apple-touch-icon-precomposed.png',
200
- },
201
- },
202
-
203
- // Standard favicons
204
- {
205
- tagName: 'link',
206
- attributes: {
207
- rel: 'icon',
208
- type: 'image/png',
209
- sizes: '16x16',
210
- href: '/favicon/favicon-16x16.png',
211
- },
212
- },
213
- {
214
- tagName: 'link',
215
- attributes: {
216
- rel: 'icon',
217
- type: 'image/png',
218
- sizes: '32x32',
219
- href: '/favicon/favicon-32x32.png',
220
- },
221
- },
222
- {
223
- tagName: 'link',
224
- attributes: {
225
- rel: 'icon',
226
- type: 'image/png',
227
- sizes: '48x48',
228
- href: '/favicon/favicon-48x48.png',
229
- },
230
- },
231
-
232
- // Web manifest
233
- {
234
- tagName: 'link',
235
- attributes: {
236
- rel: 'manifest',
237
- href: '/favicon/manifest.webmanifest',
238
- },
239
- }
240
- ];