@portosaur/theme 0.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 (76) hide show
  1. package/README.md +13 -0
  2. package/assets/img/icon-old.png +0 -0
  3. package/assets/img/icon.png +0 -0
  4. package/assets/img/project-blank.png +0 -0
  5. package/assets/img/social-card.jpeg +0 -0
  6. package/assets/img/svg/icon-blog.svg +2 -0
  7. package/assets/img/svg/icon-close.svg +3 -0
  8. package/assets/img/svg/icon-dock.svg +4 -0
  9. package/assets/img/svg/icon-link.svg +5 -0
  10. package/assets/img/svg/icon-note.svg +2 -0
  11. package/assets/img/svg/icon-popup.svg +1 -0
  12. package/assets/img/svg/icon-save.svg +5 -0
  13. package/assets/img/svg/icon.svg +240 -0
  14. package/assets/img/svg/project-blank.svg +140 -0
  15. package/assets/sample-resume.pdf +0 -0
  16. package/package.json +41 -0
  17. package/plugins/README.md +8 -0
  18. package/src/index.d.ts +11 -0
  19. package/src/index.mjs +14 -0
  20. package/src/plugins/theme.mjs +13 -0
  21. package/theme/DocCategoryGeneratedIndexPage/index.jsx +15 -0
  22. package/theme/MDXComponents.jsx +19 -0
  23. package/theme/README.md +9 -0
  24. package/theme/Root.jsx +11 -0
  25. package/theme/components/AboutSection/index.jsx +264 -0
  26. package/theme/components/AboutSection/styles.module.css +309 -0
  27. package/theme/components/ContactSection/index.jsx +188 -0
  28. package/theme/components/ContactSection/styles.module.css +343 -0
  29. package/theme/components/ExperienceSection/index.jsx +119 -0
  30. package/theme/components/ExperienceSection/styles.module.css +183 -0
  31. package/theme/components/HeroSection/index.jsx +198 -0
  32. package/theme/components/HeroSection/styles.module.css +484 -0
  33. package/theme/components/NavArrow/index.jsx +124 -0
  34. package/theme/components/NavArrow/styles.module.css +107 -0
  35. package/theme/components/NoteIndex/index.jsx +182 -0
  36. package/theme/components/NoteIndex/styles.module.css +167 -0
  37. package/theme/components/Preview/components/FeedbackStates.jsx +200 -0
  38. package/theme/components/Preview/components/FileTabs.jsx +41 -0
  39. package/theme/components/Preview/components/PreviewContent.jsx +104 -0
  40. package/theme/components/Preview/components/PreviewHeader.jsx +411 -0
  41. package/theme/components/Preview/components/Triggers/Pv.jsx +253 -0
  42. package/theme/components/Preview/components/Triggers/SrcPv.jsx +55 -0
  43. package/theme/components/Preview/components/Triggers/index.jsx +2 -0
  44. package/theme/components/Preview/components/ViewerWindow.jsx +489 -0
  45. package/theme/components/Preview/hooks/useAdaptiveSizing.jsx +90 -0
  46. package/theme/components/Preview/hooks/useDeepLinkHash.jsx +24 -0
  47. package/theme/components/Preview/hooks/useDockLayout.jsx +86 -0
  48. package/theme/components/Preview/hooks/useFileFetch.jsx +38 -0
  49. package/theme/components/Preview/hooks/useTouchZoom.jsx +98 -0
  50. package/theme/components/Preview/index.jsx +3 -0
  51. package/theme/components/Preview/renderers/CodeRenderer.jsx +124 -0
  52. package/theme/components/Preview/renderers/ImageRenderer.jsx +74 -0
  53. package/theme/components/Preview/renderers/PdfRenderer.jsx +93 -0
  54. package/theme/components/Preview/renderers/WebRenderer.jsx +59 -0
  55. package/theme/components/Preview/state/index.jsx +177 -0
  56. package/theme/components/Preview/styles.module.css +776 -0
  57. package/theme/components/Preview/utils/index.jsx +62 -0
  58. package/theme/components/ProjectsSection/index.jsx +790 -0
  59. package/theme/components/ProjectsSection/styles.module.css +900 -0
  60. package/theme/components/SocialLinks/index.jsx +115 -0
  61. package/theme/components/SocialLinks/styles.module.css +57 -0
  62. package/theme/components/Tooltip/index.jsx +104 -0
  63. package/theme/components/Tooltip/styles.module.css +168 -0
  64. package/theme/config/iconMappings.jsx +427 -0
  65. package/theme/config/prism.jsx +72 -0
  66. package/theme/config/sidebar.jsx +11 -0
  67. package/theme/css/bootstrap.css +5 -0
  68. package/theme/css/catppuccin.css +618 -0
  69. package/theme/css/custom.css +253 -0
  70. package/theme/css/tasks.css +874 -0
  71. package/theme/hooks/useScrollReveal.jsx +20 -0
  72. package/theme/pages/index.jsx +104 -0
  73. package/theme/pages/notes.jsx +131 -0
  74. package/theme/pages/tasks.jsx +989 -0
  75. package/theme/utils/HashNavigation.jsx +185 -0
  76. package/theme/utils/updateTitle.jsx +65 -0
@@ -0,0 +1,183 @@
1
+ .experienceSection {
2
+ scroll-margin-top: var(--ifm-scroll-margin-top);
3
+ min-height: calc(100vh - 45px);
4
+ margin-bottom: 0;
5
+ width: 100%;
6
+ padding: 0.02rem 0 4.5rem;
7
+ background-color: var(--ifm-background-color);
8
+ display: flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ }
12
+
13
+ .experienceContainer {
14
+ max-width: 1300px;
15
+ margin: 0 auto;
16
+ padding: 0;
17
+ width: 100%;
18
+ position: relative;
19
+ z-index: 1;
20
+ }
21
+
22
+ .experienceHeader {
23
+ text-align: center;
24
+ margin-bottom: 2rem;
25
+ margin-top: -14rem;
26
+ }
27
+
28
+ .experienceTitle {
29
+ font-size: 2.5rem;
30
+ font-weight: 600;
31
+ color: var(--ifm-color-primary);
32
+ margin-bottom: 0.3rem;
33
+ animation: slideUp 0.5s ease-out forwards;
34
+ position: relative;
35
+ display: inline-block;
36
+ }
37
+
38
+ .experienceSubtitle {
39
+ font-size: 0.95rem;
40
+ color: var(--ifm-font-color-tertiary);
41
+ max-width: 600px;
42
+ margin: 0rem auto 0;
43
+ animation: slideUp 0.5s ease-out 0.2s forwards;
44
+ }
45
+
46
+ /* Notice Box Styles */
47
+ .noticeWrapper {
48
+ display: flex;
49
+ justify-content: center;
50
+ align-items: center;
51
+ margin-top: 9rem;
52
+ }
53
+
54
+ .noticeBox {
55
+ text-align: center;
56
+ padding: 2rem;
57
+ border-radius: var(--ifm-global-radius);
58
+ background-color: var(--ifm-shadow-color);
59
+ border: 1px solid var(--ifm-color-emphasis-300);
60
+ animation: fadeIn 0.5s ease-out 0.3s forwards;
61
+ opacity: 0;
62
+ transition:
63
+ transform 0.3s ease,
64
+ background-color 0.3s ease;
65
+ width: 100%;
66
+ max-width: 600px;
67
+ }
68
+
69
+ .noticeBox:hover {
70
+ transform: translateY(-3px);
71
+ background-color: var(--ifm-card-background-color);
72
+ }
73
+
74
+ .noticeText {
75
+ font-size: 2rem;
76
+ font-weight: 600;
77
+ color: var(--ifm-color-primary-dark);
78
+ margin-bottom: 0.8rem;
79
+ }
80
+
81
+ .noticeDesc {
82
+ font-size: 1rem;
83
+ color: var(--ifm-font-color-tertiary);
84
+ line-height: 1.4;
85
+ }
86
+
87
+ /* Animations */
88
+ @keyframes slideUp {
89
+ from {
90
+ opacity: 0;
91
+ transform: translateY(20px);
92
+ }
93
+ to {
94
+ opacity: 1;
95
+ transform: translateY(0);
96
+ }
97
+ }
98
+
99
+ @keyframes fadeIn {
100
+ from {
101
+ opacity: 0;
102
+ transform: translateY(20px);
103
+ }
104
+ to {
105
+ opacity: 1;
106
+ transform: translateY(0);
107
+ }
108
+ }
109
+
110
+ /* Responsive styles */
111
+ @media (max-width: 768px) {
112
+ .experienceSection {
113
+ scroll-margin-top: 70px;
114
+ padding: 0.5rem 0 4rem;
115
+ }
116
+
117
+ .experienceContainer {
118
+ padding: 0 1.5rem;
119
+ }
120
+
121
+ .experienceHeader {
122
+ margin-bottom: 1.5rem;
123
+ margin-top: -2.5rem;
124
+ }
125
+
126
+ .experienceTitle {
127
+ font-size: 2.2rem;
128
+ }
129
+
130
+ .experienceSubtitle {
131
+ font-size: 0.9rem;
132
+ }
133
+
134
+ .noticeText {
135
+ font-size: 1.8rem;
136
+ }
137
+ }
138
+
139
+ @media (max-width: 480px) {
140
+ .experienceSection {
141
+ scroll-margin-top: var(--ifm-scroll-margin-top-mobile);
142
+ padding: 0rem 0 3rem;
143
+ }
144
+
145
+ .experienceContainer {
146
+ padding: 0 1rem;
147
+ }
148
+
149
+ .experienceHeader {
150
+ margin-bottom: 1.2rem;
151
+ margin-top: -2rem;
152
+ }
153
+
154
+ .experienceTitle {
155
+ font-size: 1.9rem;
156
+ }
157
+
158
+ .experienceSubtitle {
159
+ font-size: 0.9rem;
160
+ max-width: 90%;
161
+ }
162
+
163
+ .noticeText {
164
+ font-size: 1.5rem;
165
+ }
166
+
167
+ .noticeDesc {
168
+ font-size: 0.9rem;
169
+ }
170
+ }
171
+
172
+ @media (prefers-reduced-motion: reduce) {
173
+ .experienceTitle,
174
+ .experienceSubtitle,
175
+ .noticeBox {
176
+ animation: none !important;
177
+ transition: none !important;
178
+ }
179
+
180
+ .noticeBox {
181
+ opacity: 1;
182
+ }
183
+ }
@@ -0,0 +1,198 @@
1
+ import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
2
+ import useBrokenLinks from "@docusaurus/useBrokenLinks";
3
+ import SocialLinks from "../SocialLinks/index.js";
4
+ import styles from "./styles.module.css";
5
+ export default function HeroSection({ id, className }) {
6
+ const { siteConfig } = useDocusaurusContext();
7
+ const brokenLinks = useBrokenLinks();
8
+ if (id) {
9
+ brokenLinks.collectAnchor(id);
10
+ }
11
+ const { customFields } = siteConfig;
12
+ const intro = customFields.heroSection.intro;
13
+ const title = customFields.heroSection.title;
14
+ const subtitle = customFields.heroSection.subtitle;
15
+ const profession = customFields.heroSection.profession;
16
+ const desc = customFields.heroSection.desc;
17
+ const profilePic = customFields.heroSection.profilePic;
18
+ const learnMoreButtonText = customFields.heroSection.learnMoreButtonTxt;
19
+ return jsxDEV_7x81h0kn(
20
+ "div",
21
+ {
22
+ id,
23
+ className: `${styles.hero} ${className || ""}`,
24
+ role: "region",
25
+ "aria-label": "Hero section",
26
+ children: jsxDEV_7x81h0kn(
27
+ "div",
28
+ {
29
+ className: styles.container,
30
+ children: [
31
+ jsxDEV_7x81h0kn(
32
+ "div",
33
+ {
34
+ className: styles.leftSection,
35
+ children: [
36
+ jsxDEV_7x81h0kn(
37
+ "p",
38
+ { className: styles.intro, children: intro },
39
+ undefined,
40
+ false,
41
+ undefined,
42
+ this,
43
+ ),
44
+ jsxDEV_7x81h0kn(
45
+ "h1",
46
+ {
47
+ className: styles.title,
48
+ children: [
49
+ title,
50
+ jsxDEV_7x81h0kn(
51
+ "span",
52
+ { className: styles.titleComma, children: "," },
53
+ undefined,
54
+ false,
55
+ undefined,
56
+ this,
57
+ ),
58
+ ],
59
+ },
60
+ undefined,
61
+ true,
62
+ undefined,
63
+ this,
64
+ ),
65
+ jsxDEV_7x81h0kn(
66
+ "div",
67
+ {
68
+ className: styles.subtitleWrapper,
69
+ children: [
70
+ jsxDEV_7x81h0kn(
71
+ "span",
72
+ { className: styles.subtitle, children: subtitle },
73
+ undefined,
74
+ false,
75
+ undefined,
76
+ this,
77
+ ),
78
+ jsxDEV_7x81h0kn(
79
+ "h2",
80
+ {
81
+ className: styles.profession,
82
+ children: profession,
83
+ },
84
+ undefined,
85
+ false,
86
+ undefined,
87
+ this,
88
+ ),
89
+ jsxDEV_7x81h0kn(
90
+ "span",
91
+ { className: styles.subtitle, children: "." },
92
+ undefined,
93
+ false,
94
+ undefined,
95
+ this,
96
+ ),
97
+ ],
98
+ },
99
+ undefined,
100
+ true,
101
+ undefined,
102
+ this,
103
+ ),
104
+ jsxDEV_7x81h0kn(
105
+ "p",
106
+ { className: styles.description, children: desc },
107
+ undefined,
108
+ false,
109
+ undefined,
110
+ this,
111
+ ),
112
+ jsxDEV_7x81h0kn(
113
+ "div",
114
+ {
115
+ className: styles.actionRow,
116
+ children: [
117
+ jsxDEV_7x81h0kn(
118
+ "div",
119
+ {
120
+ className: styles.cta,
121
+ children: jsxDEV_7x81h0kn(
122
+ "a",
123
+ {
124
+ href: "#about",
125
+ className: styles.ctaButton,
126
+ "aria-label": "Learn more about me",
127
+ children: learnMoreButtonText,
128
+ },
129
+ undefined,
130
+ false,
131
+ undefined,
132
+ this,
133
+ ),
134
+ },
135
+ undefined,
136
+ false,
137
+ undefined,
138
+ this,
139
+ ),
140
+ jsxDEV_7x81h0kn(
141
+ SocialLinks,
142
+ { links: customFields.heroSection.social },
143
+ undefined,
144
+ false,
145
+ undefined,
146
+ this,
147
+ ),
148
+ ],
149
+ },
150
+ undefined,
151
+ true,
152
+ undefined,
153
+ this,
154
+ ),
155
+ ],
156
+ },
157
+ undefined,
158
+ true,
159
+ undefined,
160
+ this,
161
+ ),
162
+ jsxDEV_7x81h0kn(
163
+ "div",
164
+ {
165
+ className: styles.rightSection,
166
+ children: jsxDEV_7x81h0kn(
167
+ "img",
168
+ {
169
+ src: `${profilePic}`,
170
+ alt: "profile",
171
+ className: styles.profilePic,
172
+ loading: "lazy",
173
+ },
174
+ undefined,
175
+ false,
176
+ undefined,
177
+ this,
178
+ ),
179
+ },
180
+ undefined,
181
+ false,
182
+ undefined,
183
+ this,
184
+ ),
185
+ ],
186
+ },
187
+ undefined,
188
+ true,
189
+ undefined,
190
+ this,
191
+ ),
192
+ },
193
+ undefined,
194
+ false,
195
+ undefined,
196
+ this,
197
+ );
198
+ }