portosaurus 1.16.4 → 1.16.6
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/package.json +9 -1
- package/src/config/.exports.js +4 -0
- package/src/config/metaTags.js +1 -1
- package/src/config/sidebars.js +1 -1
- package/src/internal/src/components/ContactSection/index.js +12 -3
- package/src/internal/src/components/NoteIndex/index.js +1 -1
- package/src/internal/src/components/SocialLinks/index.js +2 -2
- package/src/internal/src/pages/index.js +17 -33
- package/src/internal/src/pages/notes.js +39 -43
- package/src/utils/.exports.js +14 -0
- package/src/utils/createDocuConf.js +10 -19
- package/src/{internal/src/utils → utils}/cssUtils.js +2 -2
- /package/src/{internal/src/utils → utils}/HashNavigation.js +0 -0
- /package/src/{internal/src/utils → utils}/filterEnabledItems.js +0 -0
- /package/src/{internal/src/utils → utils}/generateFavicon.js +0 -0
- /package/src/{internal/src/utils → utils}/generateRobotsTxt.js +0 -0
- /package/src/{internal/src/utils → utils}/iconExtractor.js +0 -0
- /package/src/{internal/src/utils → utils}/imageDownloader.js +0 -0
- /package/src/{internal/src/utils → utils}/imageProcessor.js +0 -0
- /package/src/{internal/src/utils → utils}/linkShortner.js +0 -0
- /package/src/{internal/src/utils → utils}/updateTitle.js +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "portosaurus",
|
|
3
|
-
"version": "1.16.
|
|
3
|
+
"version": "1.16.6",
|
|
4
4
|
"author": "soymadip",
|
|
5
5
|
"license": "GPL-3.0-only",
|
|
6
6
|
"description": "Complete portfolio cum personal website solution for your digital personality.",
|
|
@@ -21,6 +21,14 @@
|
|
|
21
21
|
"blog"
|
|
22
22
|
],
|
|
23
23
|
"type": "module",
|
|
24
|
+
"imports": {
|
|
25
|
+
"#config/*": "./src/config/*",
|
|
26
|
+
"#internal/*": "./src/internal/src/*"
|
|
27
|
+
},
|
|
28
|
+
"exports": {
|
|
29
|
+
"./utils": "./src/utils/.exports.js",
|
|
30
|
+
"./config": "./src/config/.exports.js"
|
|
31
|
+
},
|
|
24
32
|
"bin": {
|
|
25
33
|
"portosaurus": "bin/portosaurus.js"
|
|
26
34
|
},
|
package/src/config/metaTags.js
CHANGED
package/src/config/sidebars.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
|
2
1
|
import { FaQuestionCircle } from "react-icons/fa";
|
|
2
|
+
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
|
3
|
+
import { iconMap as defaultIconMap } from "portosaurus/config";
|
|
3
4
|
import styles from "./styles.module.css";
|
|
4
5
|
|
|
5
6
|
const sortEmail = (links) => {
|
|
@@ -24,7 +25,7 @@ const sortEmail = (links) => {
|
|
|
24
25
|
export default function ContactSection({ id, className, title, subtitle }) {
|
|
25
26
|
const { siteConfig } = useDocusaurusContext();
|
|
26
27
|
const { customFields } = siteConfig;
|
|
27
|
-
const
|
|
28
|
+
const userIconMap = customFields.iconMap || {};
|
|
28
29
|
|
|
29
30
|
let socialLinks = customFields.socialLinks.links || [];
|
|
30
31
|
|
|
@@ -54,7 +55,15 @@ export default function ContactSection({ id, className, title, subtitle }) {
|
|
|
54
55
|
aria-label="Social media and contact links"
|
|
55
56
|
>
|
|
56
57
|
{socialLinks.map((social, index) => {
|
|
57
|
-
const
|
|
58
|
+
const defaultIconData = defaultIconMap[social.icon] || {};
|
|
59
|
+
const userIconData = userIconMap[social.icon] || {};
|
|
60
|
+
|
|
61
|
+
// User can override color, but component must come from default (due to serialization)
|
|
62
|
+
const iconData = {
|
|
63
|
+
...defaultIconData,
|
|
64
|
+
...userIconData,
|
|
65
|
+
icon: defaultIconData.icon, // Enforce default component
|
|
66
|
+
};
|
|
58
67
|
|
|
59
68
|
const name = social.name || "?";
|
|
60
69
|
const Icon = iconData.icon || FaQuestionCircle;
|
|
@@ -4,7 +4,7 @@ import { usePluginData } from "@docusaurus/useGlobalData";
|
|
|
4
4
|
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
|
5
5
|
import DocCardList from "@theme/DocCardList";
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
import { iconMap } from "portosaurus/config";
|
|
8
8
|
|
|
9
9
|
import { FaBook } from "react-icons/fa";
|
|
10
10
|
import styles from "./styles.module.css";
|
|
@@ -11,11 +11,11 @@ import Tooltip from "@site/src/components/Tooltip";
|
|
|
11
11
|
const DEFAULT_ICON = FaQuestionCircle;
|
|
12
12
|
const DEFAULT_COLOR = "var(--ifm-color-primary)";
|
|
13
13
|
|
|
14
|
+
import { iconMap } from "portosaurus/config";
|
|
15
|
+
|
|
14
16
|
export default function SocialIcons({ showAll = false }) {
|
|
15
17
|
const { siteConfig } = useDocusaurusContext();
|
|
16
18
|
const { customFields } = siteConfig;
|
|
17
|
-
const { iconMap } = customFields.iconMap;
|
|
18
|
-
|
|
19
19
|
const isBrowser = useIsBrowser();
|
|
20
20
|
|
|
21
21
|
const [animationDelays, setAnimationDelays] = useState({});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Layout from "@theme/Layout";
|
|
2
2
|
import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
|
|
3
|
-
import UpdateTitle from
|
|
3
|
+
import UpdateTitle from "@site/src/utils/updateTitle";
|
|
4
4
|
|
|
5
5
|
// Import components
|
|
6
6
|
import HeroSection from "@site/src/components/HeroSection";
|
|
@@ -10,7 +10,6 @@ import ContactSection from "@site/src/components/ContactSection";
|
|
|
10
10
|
import ExperienceSection from "@site/src/components/ExperienceSection";
|
|
11
11
|
import ScrollToTop from "@site/src/components/ScrollToTop";
|
|
12
12
|
|
|
13
|
-
|
|
14
13
|
export default function Home() {
|
|
15
14
|
const { siteConfig } = useDocusaurusContext();
|
|
16
15
|
const { customFields } = siteConfig;
|
|
@@ -21,48 +20,35 @@ export default function Home() {
|
|
|
21
20
|
const experience = customFields.experience || {};
|
|
22
21
|
|
|
23
22
|
const sectionTitles = {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
me: `Home | ${siteConfig.title}`,
|
|
24
|
+
about: `About Me | ${siteConfig.title}`,
|
|
25
|
+
projects: `Projects | ${siteConfig.title}`,
|
|
26
|
+
experience: `Experience | ${siteConfig.title}`,
|
|
27
|
+
contact: `Contact | ${siteConfig.title}`,
|
|
29
28
|
};
|
|
30
|
-
|
|
29
|
+
|
|
31
30
|
const customStyles = `
|
|
32
31
|
/* For future */
|
|
33
32
|
`;
|
|
34
33
|
|
|
35
|
-
|
|
36
34
|
return (
|
|
37
|
-
<Layout
|
|
38
|
-
title="Me"
|
|
39
|
-
description="My portfolio website"
|
|
40
|
-
>
|
|
35
|
+
<Layout title="Me" description="My portfolio website">
|
|
41
36
|
{/* Custom styles */}
|
|
42
37
|
<style>{customStyles}</style>
|
|
43
|
-
|
|
44
|
-
<UpdateTitle
|
|
45
|
-
sections={sectionTitles}
|
|
46
|
-
defaultTitle={siteConfig.title}
|
|
47
|
-
/>
|
|
48
38
|
|
|
49
|
-
<
|
|
39
|
+
<UpdateTitle sections={sectionTitles} defaultTitle={siteConfig.title} />
|
|
50
40
|
|
|
41
|
+
<main>
|
|
51
42
|
{/* Hero Section */}
|
|
52
|
-
<HeroSection
|
|
53
|
-
id="me"
|
|
54
|
-
/>
|
|
43
|
+
<HeroSection id="me" />
|
|
55
44
|
|
|
56
45
|
{/* About Section */}
|
|
57
|
-
{
|
|
58
|
-
<AboutSection
|
|
59
|
-
id="about"
|
|
60
|
-
title="About Me"
|
|
61
|
-
/>
|
|
46
|
+
{aboutMe.enable !== false && (
|
|
47
|
+
<AboutSection id="about" title="About Me" />
|
|
62
48
|
)}
|
|
63
49
|
|
|
64
50
|
{/* Projects Section */}
|
|
65
|
-
{
|
|
51
|
+
{projects.enable !== false && (
|
|
66
52
|
<ProjectsSection
|
|
67
53
|
id="projects"
|
|
68
54
|
title="My Projects"
|
|
@@ -71,7 +57,7 @@ export default function Home() {
|
|
|
71
57
|
)}
|
|
72
58
|
|
|
73
59
|
{/* Experience Section */}
|
|
74
|
-
{
|
|
60
|
+
{experience.enable !== false && (
|
|
75
61
|
<ExperienceSection
|
|
76
62
|
id="experience"
|
|
77
63
|
title="Experience"
|
|
@@ -80,7 +66,7 @@ export default function Home() {
|
|
|
80
66
|
)}
|
|
81
67
|
|
|
82
68
|
{/* Contact Section */}
|
|
83
|
-
{
|
|
69
|
+
{socialLinks.enable !== false && (
|
|
84
70
|
<ContactSection
|
|
85
71
|
id="contact"
|
|
86
72
|
title="Get In Touch"
|
|
@@ -89,9 +75,7 @@ export default function Home() {
|
|
|
89
75
|
)}
|
|
90
76
|
|
|
91
77
|
{/* Scroll to top button */}
|
|
92
|
-
<ScrollToTop
|
|
93
|
-
hideDelay={3500}
|
|
94
|
-
/>
|
|
78
|
+
<ScrollToTop hideDelay={3500} />
|
|
95
79
|
</main>
|
|
96
80
|
</Layout>
|
|
97
81
|
);
|
|
@@ -1,82 +1,78 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import Layout from
|
|
3
|
-
import NoteCards from
|
|
4
|
-
import { usePluginData } from
|
|
5
|
-
import ScrollToTop from
|
|
6
|
-
import HashNavigation from
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Layout from "@theme/Layout";
|
|
3
|
+
import NoteCards from "@site/src/components/NoteIndex";
|
|
4
|
+
import { usePluginData } from "@docusaurus/useGlobalData";
|
|
5
|
+
import ScrollToTop from "../components/ScrollToTop";
|
|
6
|
+
import HashNavigation from "../utils/HashNavigation";
|
|
7
7
|
|
|
8
8
|
const style = {
|
|
9
|
-
|
|
10
9
|
notesContainer: {
|
|
11
|
-
padding:
|
|
12
|
-
maxWidth:
|
|
13
|
-
margin:
|
|
10
|
+
padding: "2rem 0",
|
|
11
|
+
maxWidth: "1200px",
|
|
12
|
+
margin: "0 auto",
|
|
14
13
|
},
|
|
15
14
|
|
|
16
15
|
pageTitle: {
|
|
17
|
-
fontSize:
|
|
18
|
-
textAlign:
|
|
19
|
-
marginBottom:
|
|
20
|
-
color:
|
|
21
|
-
animation:
|
|
16
|
+
fontSize: "2.5rem",
|
|
17
|
+
textAlign: "center",
|
|
18
|
+
marginBottom: "0.5rem",
|
|
19
|
+
color: "var(--ifm-color-primary)",
|
|
20
|
+
animation: "slideUp 0.5s ease-out forwards",
|
|
22
21
|
},
|
|
23
22
|
|
|
24
23
|
pageDescription: {
|
|
25
|
-
fontSize:
|
|
26
|
-
textAlign:
|
|
27
|
-
color:
|
|
28
|
-
marginBottom:
|
|
29
|
-
animation:
|
|
24
|
+
fontSize: "0.9rem",
|
|
25
|
+
textAlign: "center",
|
|
26
|
+
color: "var(--ifm-font-color-tertiary)",
|
|
27
|
+
marginBottom: "2rem",
|
|
28
|
+
animation: "slideUp 0.5s ease-out 0.2s forwards",
|
|
30
29
|
},
|
|
31
30
|
|
|
32
|
-
|
|
31
|
+
"@keyframes slideUp": {
|
|
33
32
|
from: {
|
|
34
33
|
opacity: 0,
|
|
35
|
-
transform:
|
|
34
|
+
transform: "translateY(20px)",
|
|
36
35
|
},
|
|
37
36
|
to: {
|
|
38
37
|
opacity: 1,
|
|
39
|
-
transform:
|
|
40
|
-
}
|
|
38
|
+
transform: "translateY(0)",
|
|
39
|
+
},
|
|
41
40
|
},
|
|
42
41
|
|
|
43
|
-
|
|
42
|
+
"@media (prefers-reduced-motion: reduce)": {
|
|
44
43
|
notesContainer: {
|
|
45
|
-
animation:
|
|
44
|
+
animation: "none !important",
|
|
46
45
|
},
|
|
47
46
|
pageTitle: {
|
|
48
|
-
animation:
|
|
47
|
+
animation: "none !important",
|
|
49
48
|
},
|
|
50
49
|
pageDescription: {
|
|
51
|
-
animation:
|
|
52
|
-
opacity: 1
|
|
53
|
-
}
|
|
54
|
-
}
|
|
50
|
+
animation: "none !important",
|
|
51
|
+
opacity: 1,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
55
54
|
};
|
|
56
55
|
|
|
57
56
|
export default function Notes() {
|
|
58
|
-
const { path: docsBasePath } = usePluginData(
|
|
59
|
-
|
|
57
|
+
const { path: docsBasePath } = usePluginData(
|
|
58
|
+
"docusaurus-plugin-content-docs",
|
|
59
|
+
);
|
|
60
|
+
const pathName = docsBasePath.replace("/", "");
|
|
60
61
|
const pageTitle = pathName.charAt(0).toUpperCase() + pathName.slice(1);
|
|
61
62
|
|
|
62
63
|
return (
|
|
63
|
-
<Layout
|
|
64
|
-
title={pageTitle}
|
|
65
|
-
description={`My ${pageTitle}`}
|
|
66
|
-
>
|
|
64
|
+
<Layout title={pageTitle} description={`My ${pageTitle}`}>
|
|
67
65
|
<main style={style.notesContainer}>
|
|
68
66
|
<div className="container">
|
|
69
67
|
<header className="text-center mb-4">
|
|
70
|
-
<h1 style={style.pageTitle}>
|
|
71
|
-
My Notes
|
|
72
|
-
</h1>
|
|
68
|
+
<h1 style={style.pageTitle}>My Notes</h1>
|
|
73
69
|
<p style={style.pageDescription}>
|
|
74
70
|
A collection of my self written notes & reference guides
|
|
75
71
|
</p>
|
|
76
72
|
</header>
|
|
77
|
-
<NoteCards/>
|
|
78
|
-
<ScrollToTop/>
|
|
79
|
-
<HashNavigation
|
|
73
|
+
<NoteCards />
|
|
74
|
+
<ScrollToTop />
|
|
75
|
+
<HashNavigation
|
|
80
76
|
elementPrefix="note-"
|
|
81
77
|
elementSelector=".note-card"
|
|
82
78
|
effectDuration={6000}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from "./appVersion.js";
|
|
2
|
+
export * from "./createDocuConf.js";
|
|
3
|
+
export * from "./logger.js";
|
|
4
|
+
export * from "./packageManager.js";
|
|
5
|
+
export * from "./HashNavigation.js";
|
|
6
|
+
export * from "./cssUtils.js";
|
|
7
|
+
export * from "./filterEnabledItems.js";
|
|
8
|
+
export * from "./generateFavicon.js";
|
|
9
|
+
export * from "./generateRobotsTxt.js";
|
|
10
|
+
export * from "./iconExtractor.js";
|
|
11
|
+
export * from "./imageDownloader.js";
|
|
12
|
+
export * from "./imageProcessor.js";
|
|
13
|
+
export * from "./linkShortner.js";
|
|
14
|
+
export * from "./updateTitle.js";
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
import path from "path";
|
|
4
4
|
import { fileURLToPath } from "url";
|
|
5
5
|
|
|
6
|
-
const require = createRequire(import.meta.url);
|
|
7
|
-
|
|
8
6
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
9
7
|
const packagePath = path.resolve(__dirname, "../../");
|
|
10
8
|
const internalUtils = path.resolve(packagePath, "src/internal/src/utils");
|
|
11
9
|
const packageConfig = path.resolve(packagePath, "src/config");
|
|
12
10
|
const packageCss = path.resolve(packagePath, "src/internal/src/css");
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const { useEnabled } = require(
|
|
21
|
-
path.resolve(internalUtils, "filterEnabledItems.js"),
|
|
22
|
-
);
|
|
23
|
-
const { downloadImage } = require(
|
|
24
|
-
path.resolve(internalUtils, "imageDownloader.js"),
|
|
25
|
-
);
|
|
12
|
+
import { catppuccinMocha, catppuccinLatte } from "#config/prism.js";
|
|
13
|
+
import { appVersion } from "./appVersion.js";
|
|
14
|
+
|
|
15
|
+
import { metaTags } from "#config/metaTags.js";
|
|
16
|
+
import { useEnabled } from "./filterEnabledItems.js";
|
|
17
|
+
import { downloadImage } from "./imageDownloader.js";
|
|
26
18
|
|
|
27
19
|
/**
|
|
28
20
|
* Resolves the site URL based on config value and environment.
|
|
@@ -187,7 +179,6 @@ export function createDocuConf(userConfig, projectRoot = process.cwd()) {
|
|
|
187
179
|
],
|
|
188
180
|
},
|
|
189
181
|
|
|
190
|
-
iconMap: iconMap,
|
|
191
182
|
metaTags: metaTags,
|
|
192
183
|
},
|
|
193
184
|
|
|
@@ -299,10 +290,10 @@ export function createDocuConf(userConfig, projectRoot = process.cwd()) {
|
|
|
299
290
|
}),
|
|
300
291
|
|
|
301
292
|
plugins: [
|
|
302
|
-
//
|
|
303
|
-
|
|
293
|
+
// path.resolve(internalUtils, "generateFavicon.js"),
|
|
294
|
+
path.resolve(__dirname, "./generateRobotsTxt.js"),
|
|
304
295
|
[
|
|
305
|
-
|
|
296
|
+
"@easyops-cn/docusaurus-search-local",
|
|
306
297
|
{
|
|
307
298
|
hashed: true,
|
|
308
299
|
indexDocs: true,
|
|
@@ -27,8 +27,8 @@ function getCssVar(varName) {
|
|
|
27
27
|
|
|
28
28
|
// Try to find variable in CSS files
|
|
29
29
|
const cssFiles = [
|
|
30
|
-
path.resolve(__dirname, "../css/custom.css"),
|
|
31
|
-
path.resolve(__dirname, "../css/catppuccin.css"),
|
|
30
|
+
path.resolve(__dirname, "../internal/src/css/custom.css"),
|
|
31
|
+
path.resolve(__dirname, "../internal/src/css/catppuccin.css"),
|
|
32
32
|
];
|
|
33
33
|
|
|
34
34
|
for (const cssPath of cssFiles) {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|