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.
- package/bin/portosaurus.mjs +14 -327
- package/package.json +16 -11
- package/src/cli/build.mjs +43 -0
- package/src/cli/dev.mjs +31 -0
- package/src/cli/init.mjs +135 -0
- package/src/cli/serve.mjs +30 -0
- package/src/core/buildDocuConfig.mjs +664 -0
- package/src/core/{themePlugin.mjs → plugins/themePlugin.mjs} +1 -1
- package/src/template/.github/workflows/deploy.yml +52 -0
- package/src/template/.nojekyll +0 -0
- package/src/template/README.md +58 -0
- package/src/template/blog/authors.yml +1 -1
- package/src/template/blog/welcome.md +1 -1
- package/src/template/config.js +40 -23
- package/src/template/package.json +20 -0
- package/src/template/static/img/svg/icon-blog.svg +2 -0
- package/src/template/static/img/svg/icon-note.svg +2 -0
- package/src/{components → theme/components}/AboutSection/index.js +22 -13
- package/src/{components → theme/components}/AboutSection/styles.module.css +59 -48
- package/src/{components → theme/components}/ContactSection/index.js +31 -24
- package/src/{components → theme/components}/ContactSection/styles.module.css +31 -26
- package/src/{components → theme/components}/ExperienceSection/index.js +12 -7
- package/src/{components → theme/components}/ExperienceSection/styles.module.css +23 -20
- package/src/{components → theme/components}/HeroSection/index.js +9 -11
- package/src/{components → theme/components}/HeroSection/styles.module.css +44 -32
- package/src/{components → theme/components}/NoteIndex/index.js +10 -3
- package/src/{components → theme/components}/Preview/components/PreviewHeader.js +14 -8
- package/src/{components → theme/components}/Preview/components/Triggers/Pv.js +32 -7
- package/src/{components → theme/components}/Preview/components/Triggers/SrcPv.js +1 -5
- package/src/theme/components/Preview/index.js +3 -0
- package/src/{components → theme/components}/ProjectsSection/index.js +279 -224
- package/src/{components → theme/components}/ProjectsSection/styles.module.css +21 -17
- package/src/{components → theme/components}/ScrollToTop/index.js +18 -21
- package/src/{components → theme/components}/ScrollToTop/styles.module.css +10 -9
- package/src/theme/components/SocialLinks/index.js +125 -0
- package/src/{components → theme/components}/SocialLinks/styles.module.css +9 -7
- package/src/{components → theme/components}/Tooltip/index.js +4 -1
- package/src/theme/config/iconMappings.js +465 -0
- package/src/theme/config/metaTags.js +239 -0
- package/src/theme/config/prism.js +179 -0
- package/src/theme/config/sidebar.js +17 -0
- package/src/{css → theme/css}/bootstrap.css +0 -1
- package/src/theme/css/catppuccin.css +618 -0
- package/src/{css → theme/css}/custom.css +3 -9
- package/src/{css → theme/css}/tasks.css +43 -37
- package/src/theme/{MDXComponents.js → overrides/MDXComponents.js} +3 -3
- package/src/theme/{Root.js → overrides/Root.js} +2 -4
- package/src/{pages → theme/pages}/index.js +23 -39
- package/src/theme/pages/notes.js +83 -0
- package/src/{pages → theme/pages}/tasks.js +115 -56
- package/src/{core/client-utils → theme/utils}/HashNavigation.js +60 -49
- package/src/{core/client-utils → theme/utils}/updateTitle.js +21 -25
- package/src/{core/build-utils → utils/build}/cssUtils.mjs +5 -3
- package/src/{core/build-utils → utils/build}/generateFavicon.mjs +44 -12
- package/src/{core/build-utils → utils/build}/generateRobotsTxt.mjs +4 -3
- package/src/{core/build-utils → utils/build}/iconExtractor.mjs +7 -3
- package/src/utils/build/imageDownloader.mjs +159 -0
- package/src/{core/build-utils → utils/build}/imageProcessor.mjs +5 -6
- package/src/utils/helpers.mjs +153 -0
- package/src/utils/logger.mjs +53 -0
- package/src/utils/packageManager.mjs +88 -0
- package/src/components/Preview/index.js +0 -3
- package/src/components/SocialLinks/index.js +0 -130
- package/src/config/iconMappings.js +0 -329
- package/src/config/metaTags.js +0 -240
- package/src/config/prism.js +0 -179
- package/src/config/sidebar.js +0 -20
- package/src/core/build-utils/imageDownloader.mjs +0 -98
- package/src/core/createDocuConf.mjs +0 -490
- package/src/core/defaults.mjs +0 -67
- package/src/core/logger.mjs +0 -17
- package/src/core/packageManager.mjs +0 -72
- package/src/css/catppuccin.css +0 -632
- package/src/pages/notes.js +0 -87
- /package/src/template/notes/{welcome.md → welcome.mdx} +0 -0
- /package/src/{components → theme/components}/NoteIndex/styles.module.css +0 -0
- /package/src/{components → theme/components}/Preview/components/FeedbackStates.js +0 -0
- /package/src/{components → theme/components}/Preview/components/FileTabs.js +0 -0
- /package/src/{components → theme/components}/Preview/components/Triggers/index.js +0 -0
- /package/src/{components → theme/components}/Preview/components/ViewerWindow.js +0 -0
- /package/src/{components → theme/components}/Preview/hooks/useDeepLinkHash.js +0 -0
- /package/src/{components → theme/components}/Preview/hooks/useDockLayout.js +0 -0
- /package/src/{components → theme/components}/Preview/hooks/useFileFetch.js +0 -0
- /package/src/{components → theme/components}/Preview/renderers/CodeRenderer.js +0 -0
- /package/src/{components → theme/components}/Preview/renderers/ImageRenderer.js +0 -0
- /package/src/{components → theme/components}/Preview/renderers/PdfRenderer.js +0 -0
- /package/src/{components → theme/components}/Preview/renderers/WebRenderer.js +0 -0
- /package/src/{components → theme/components}/Preview/state/index.js +0 -0
- /package/src/{components → theme/components}/Preview/styles.module.css +0 -0
- /package/src/{components → theme/components}/Preview/utils/index.js +0 -0
- /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
|
-
};
|
package/src/config/metaTags.js
DELETED
|
@@ -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
|
-
];
|