@portosaur/theme 0.2.0 → 0.3.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.
@@ -1,253 +1,16 @@
1
- /* Catppuccin colors */
2
- @import url("./catppuccin.css");
3
-
4
- /* Bootstrap (some prebuilt) */
5
- @import url(./bootstrap.css);
6
-
7
- /* === Component overrides === */
8
-
9
- html {
10
- scroll-behavior: smooth;
11
- color: var(--ifm-font-color-base);
12
- background-color: var(--ifm-footer-background-color) !important;
13
- }
14
-
15
- .main-wrapper {
16
- background-color: var(--ifm-background-color) !important;
17
- }
18
-
19
- .navbar {
20
- background-color: var(--ifm-navbar-background-color) !important;
21
- }
22
-
23
- /* Reduce gap between navbar items */
24
- .navbar__items .navbar__item {
25
- padding-left: 0.5rem;
26
- padding-right: 0.5rem;
27
- margin-left: 0;
28
- margin-right: 0;
29
- }
30
-
31
- .navbar__link {
32
- font-size: 0.95rem;
33
- }
34
-
35
- ._navbar-more-items {
36
- padding-left: 8px;
37
- margin-left: -7px;
38
- border-left: 1.5px solid var(--ifm-background-surface-color) !important;
39
- }
40
-
41
- ._nav-protosaurus-version {
42
- opacity: 64%;
43
- margin-top: 10px;
44
- border-top: 1.2px solid var(--ifm-background-color) !important;
45
- }
46
-
47
- @media (max-width: 768px) {
48
- ._navbar-more-items {
49
- border-left: 0 !important;
50
- padding-left: 13px !important;
51
- margin-left: 0 !important;
52
- }
53
- }
54
-
55
- /* Search local styles */
56
- :root {
57
- --search-local-modal-background: var(--ifm-background-color);
58
- --search-local-modal-shadow: 0 2px 8px 0 var(--ifm-shadow-color);
59
- --search-local-hit-background: var(--ifm-card-background-color);
60
- --search-local-hit-shadow: 0 1px 3px 0 var(--ifm-shadow-color);
61
- --search-local-hit-color: var(--ifm-font-color-base);
62
- --search-local-highlight-color: var(--ifm-color-primary);
63
- --search-local-muted-color: var(--ifm-font-color-base);
64
- --search-local-hit-active-color: var(--ifm-background-color);
65
- --search-local-input-active-border-color: var(--ifm-color-primary);
66
- }
67
-
68
- /* Hide keyboard shortcut hint */
69
- .searchHintContainer_Pkmr {
70
- display: none !important;
71
- }
72
-
73
- .navbar__search-input {
74
- width: 130px;
75
- font-size: 0.85rem;
76
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23cdd6f4' d='M6.02945,10.20327a4.17382,4.17382,0,1,1,4.17382-4.17382A4.15609,4.15609,0,0,1,6.02945,10.20327Zm9.69195,4.2199L10.8989,9.59979A5.88021,5.88021,0,0,0,12.058,6.02856,6.00467,6.00467,0,1,0,9.59979,10.8989l4.82338,4.82338a.89729.89729,0,0,0,1.29912,0,.89749.89749,0,0,0-.00087-1.29909Z'/%3E%3C/svg%3E");
77
- }
78
-
79
- [data-theme="light"] .navbar__search-input {
80
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%234c4f69' d='M6.02945,10.20327a4.17382,4.17382,0,1,1,4.17382-4.17382A4.15609,4.15609,0,0,1,6.02945,10.20327Zm9.69195,4.2199L10.8989,9.59979A5.88021,5.88021,0,0,0,12.058,6.02856,6.00467,6.00467,0,1,0,9.59979,10.8989l4.82338,4.82338a.89729.89729,0,0,0,1.29912,0,.89749.89749,0,0,0-.00087-1.29909Z'/%3E%3C/svg%3E");
81
- }
82
-
83
- .footer {
84
- background-color: var(--ifm-footer-background-color) !important;
85
- padding-top: 0rem !important;
86
- padding-bottom: 0.15rem !important;
87
- margin: 0 !important;
88
- }
89
-
90
- .footer__copyright {
91
- margin-top: 0 !important;
92
- padding-top: 0 !important;
93
- font-size: 0.8rem;
94
- }
95
-
96
- .cardDescription_PWke {
97
- color: var(--ifm-font-color-base) !important;
98
- opacity: 0.6;
99
- }
100
-
101
- .hide-this {
102
- display: none !important;
103
- }
104
-
105
- /* Docs Styling */
106
-
107
- /* .docs-wrapper {
108
- background-color:darksalmon !important;
109
- } article {
110
- background-color: red !important;
111
- } .markdown {
112
- background-color: blue !important;
113
- } .hide-this {
114
- display: none !important;
115
- }
116
- */
117
-
118
- .breadcrumbs__link {
119
- font-size: 0.7rem;
120
- padding: 0.1rem 0.2rem !important;
121
- opacity: 76%;
122
- }
123
-
124
- .breadcrumbs__item--active .breadcrumbs__link {
125
- border: none !important;
126
- background-color: transparent !important;
127
- }
128
-
129
- .markdown h1 {
130
- text-align: center;
131
- color: var(--ifm-color-primary);
132
- margin-top: 0.3rem;
133
- margin-bottom: 2.7rem !important;
134
- }
135
-
136
- .markdown h2 {
137
- color: var(--ifm-color-primary);
138
- }
139
-
140
- .markdown img {
141
- display: block;
142
- margin: 0 auto;
143
- padding: 1px;
144
- border: 2px solid var(--ifm-background-surface-color);
145
- border-radius: 14px;
146
- }
147
-
148
- mark {
149
- background-color: rgba(var(--ctp-peach-rgb), 0.2);
150
- color: var(--ifm-font-color-base);
151
- padding: 0.17rem 0.27rem;
152
- border-radius: 0.2rem;
153
- border-bottom: 1px solid var(--ifm-color-primary);
154
- }
155
-
156
- .pagination-nav__link {
157
- border: 1px solid var(--ifm-background-color);
158
- background-color: var(--ifm-background-surface-color);
159
- }
160
-
161
- .pagination-nav__link:hover {
162
- border: 1px solid var(--ifm-color-primary);
163
- border-color: var(--ifm-color-primary);
164
- }
165
-
166
- .table-of-contents__link--active {
167
- font-weight: bold;
168
- }
169
-
170
- /* Reduced motion preferences */
171
- @media (prefers-reduced-motion: reduce) {
172
- html {
173
- scroll-behavior: auto;
174
- }
175
- }
176
-
177
- .center {
178
- display: flex;
179
- justify-content: center;
180
- align-items: center;
181
- }
182
-
183
- /* === Global Entrance Animations === */
184
-
185
- @keyframes fadeIn {
186
- from {
187
- opacity: 0;
188
- }
189
- to {
190
- opacity: 1;
191
- }
192
- }
193
-
194
- @keyframes slideUp {
195
- from {
196
- opacity: 0;
197
- transform: translateY(30px);
198
- }
199
- to {
200
- opacity: 1;
201
- transform: translateY(0);
202
- }
203
- }
204
-
205
- @keyframes slideInLeft {
206
- from {
207
- opacity: 0;
208
- transform: translateX(-40px);
209
- }
210
- to {
211
- opacity: 1;
212
- transform: translateX(0);
213
- }
214
- }
215
-
216
- @keyframes slideInRight {
217
- from {
218
- opacity: 0;
219
- transform: translateX(40px);
220
- }
221
- to {
222
- opacity: 1;
223
- transform: translateX(0);
224
- }
225
- }
226
-
227
- @keyframes scaleIn {
228
- from {
229
- opacity: 0;
230
- transform: scale(0.95);
231
- }
232
- to {
233
- opacity: 1;
234
- transform: scale(1);
235
- }
236
- }
237
-
238
- @keyframes skillAppear {
239
- to {
240
- opacity: 1;
241
- transform: translateY(0);
242
- }
243
- }
244
-
245
- /* Base reveal state */
246
- .reveal-on-scroll {
247
- opacity: 0;
248
- transition: opacity 0.3s ease;
249
- }
250
-
251
- .reveal-on-scroll.isVisible {
252
- opacity: 1;
253
- }
1
+ /* ----- Core Theme Variables ----- */
2
+ @import url("./overrides/variables.css");
3
+
4
+ /* ----- Global Fonts ----- */
5
+ @import "@fontsource/alata";
6
+
7
+ /* ----- Global Styles ----- */
8
+ @import url("./animations.css");
9
+
10
+ /* ------ Component Overrides ------ */
11
+ @import url("./overrides/base.css");
12
+ @import url("./overrides/navbar.css");
13
+ @import url("./overrides/footer.css");
14
+ @import url("./overrides/search.css");
15
+ @import url("./overrides/pagination.css");
16
+ @import url("./overrides/markdown.css");
@@ -0,0 +1,37 @@
1
+ /* === Base HTML and Utility Overrides === */
2
+
3
+ html {
4
+ scroll-behavior: smooth;
5
+ color: var(--ifm-font-color-base);
6
+ background-color: var(--ifm-footer-background-color) !important;
7
+ }
8
+
9
+ /* Reduced motion preferences */
10
+ @media (prefers-reduced-motion: reduce) {
11
+ html {
12
+ scroll-behavior: auto;
13
+ }
14
+ }
15
+
16
+ .main-wrapper {
17
+ background-color: var(--ifm-background-color) !important;
18
+ }
19
+
20
+ .center {
21
+ display: flex;
22
+ justify-content: center;
23
+ align-items: center;
24
+ }
25
+
26
+ th {
27
+ text-align: center !important;
28
+ }
29
+
30
+ [class*="cardDescription_"] {
31
+ color: var(--ifm-font-color-base) !important;
32
+ opacity: 0.6;
33
+ }
34
+
35
+ .hide-this {
36
+ display: none !important;
37
+ }
@@ -0,0 +1,14 @@
1
+ /* === Footer Overrides === */
2
+
3
+ .footer {
4
+ background-color: var(--ifm-footer-background-color) !important;
5
+ padding-top: 0rem !important;
6
+ padding-bottom: 0.15rem !important;
7
+ margin: 0 !important;
8
+ }
9
+
10
+ .footer__copyright {
11
+ margin-top: 0 !important;
12
+ padding-top: 0 !important;
13
+ font-size: 0.8rem;
14
+ }
@@ -0,0 +1,62 @@
1
+ /* === Markdown Content Styling === */
2
+
3
+ .markdown {
4
+ --ifm-font-family-base:
5
+ "Lexend Variable", system-ui, -apple-system, sans-serif;
6
+ font-family: var(--ifm-font-family-base);
7
+ }
8
+
9
+ .breadcrumbs__link {
10
+ font-size: 0.7rem;
11
+ padding: 0.1rem 0.2rem !important;
12
+ opacity: 76%;
13
+ }
14
+
15
+ .breadcrumbs__item--active .breadcrumbs__link {
16
+ border: none !important;
17
+ background-color: transparent !important;
18
+ }
19
+
20
+ .markdown h1 {
21
+ text-align: center;
22
+ color: var(--ifm-color-primary);
23
+ margin-top: 0.3rem;
24
+ margin-bottom: 2.7rem !important;
25
+ }
26
+
27
+ .markdown h2 {
28
+ color: var(--ifm-color-primary);
29
+ }
30
+
31
+ .markdown big {
32
+ display: inline-block;
33
+ font-size: 1.5rem;
34
+ margin-bottom: 0.65rem;
35
+ margin-top: 0.6rem;
36
+ }
37
+
38
+ .markdown li big,
39
+ .markdown p big {
40
+ margin-top: inherit;
41
+ margin-bottom: inherit;
42
+ }
43
+
44
+ .markdown img {
45
+ display: block;
46
+ margin: 0 auto;
47
+ padding: 1px;
48
+ border: 2px solid var(--ifm-background-surface-color);
49
+ border-radius: 14px;
50
+ }
51
+
52
+ mark {
53
+ background-color: rgba(var(--ctp-peach-rgb), 0.2);
54
+ color: var(--ifm-font-color-base);
55
+ padding: 0.17rem 0.27rem;
56
+ border-radius: 0.2rem;
57
+ border-bottom: 1px solid var(--ifm-color-primary);
58
+ }
59
+
60
+ .table-of-contents__link--active {
61
+ font-weight: bold;
62
+ }
@@ -0,0 +1,37 @@
1
+ /* === Navbar Overrides === */
2
+
3
+ .navbar {
4
+ background-color: var(--ifm-navbar-background-color) !important;
5
+ }
6
+
7
+ /* Reduce gap between navbar items */
8
+ .navbar__items .navbar__item {
9
+ padding-left: 0.5rem;
10
+ padding-right: 0.5rem;
11
+ margin-left: 0;
12
+ margin-right: 0;
13
+ }
14
+
15
+ .navbar__link {
16
+ font-size: 0.95rem;
17
+ }
18
+
19
+ ._navbar-more-items {
20
+ padding-left: 8px;
21
+ margin-left: -7px;
22
+ border-left: 1.5px solid var(--ifm-background-surface-color) !important;
23
+ }
24
+
25
+ ._nav-protosaurus-version {
26
+ opacity: 64%;
27
+ margin-top: 10px;
28
+ border-top: 1.2px solid var(--ifm-background-color) !important;
29
+ }
30
+
31
+ @media (max-width: 768px) {
32
+ ._navbar-more-items {
33
+ border-left: 0 !important;
34
+ padding-left: 13px !important;
35
+ margin-left: 0 !important;
36
+ }
37
+ }
@@ -0,0 +1,64 @@
1
+ /* === Pagination Overrides === */
2
+
3
+ .pagination-nav {
4
+ margin-top: 1.5rem !important;
5
+ }
6
+
7
+ .pagination-nav__label {
8
+ font-size: 1.1rem;
9
+ display: flex;
10
+ align-items: center;
11
+ }
12
+
13
+ .pagination-nav__link--prev .pagination-nav__label {
14
+ justify-content: flex-start;
15
+ text-align: left;
16
+ }
17
+
18
+ .pagination-nav__link--next .pagination-nav__label {
19
+ justify-content: flex-end;
20
+ text-align: right;
21
+ }
22
+
23
+ .pagination-nav__link--prev .pagination-nav__label::before {
24
+ content: "«" !important;
25
+ margin-right: 0.5rem;
26
+ flex-shrink: 0;
27
+ font-size: 1.6rem;
28
+ line-height: 1;
29
+ }
30
+
31
+ .pagination-nav__link--next .pagination-nav__label::after {
32
+ content: "»" !important;
33
+ margin-left: 0.5rem;
34
+ flex-shrink: 0;
35
+ font-size: 1.6rem;
36
+ line-height: 1;
37
+ }
38
+
39
+ .pagination-nav__link {
40
+ border: 1px solid var(--ifm-background-color);
41
+ background-color: var(--ifm-background-surface-color);
42
+ }
43
+
44
+ .pagination-nav__link:hover {
45
+ border: 1px solid var(--ifm-color-primary);
46
+ border-color: var(--ifm-color-primary);
47
+ }
48
+
49
+ /* Stack prev/next nav buttons vertically on mobile */
50
+ @media (max-width: 768px) {
51
+ .pagination-nav {
52
+ grid-template-columns: 1fr !important;
53
+ gap: 0.15rem !important;
54
+ }
55
+
56
+ .pagination-nav__link--prev {
57
+ text-align: left !important;
58
+ }
59
+
60
+ .pagination-nav__link--next {
61
+ grid-column: 1 !important;
62
+ text-align: right !important;
63
+ }
64
+ }
@@ -0,0 +1,28 @@
1
+ /* === Local Search Plugin Overrides === */
2
+
3
+ :root {
4
+ --search-local-modal-background: var(--ifm-background-color);
5
+ --search-local-modal-shadow: 0 2px 8px 0 var(--ifm-shadow-color);
6
+ --search-local-hit-background: var(--ifm-card-background-color);
7
+ --search-local-hit-shadow: 0 1px 3px 0 var(--ifm-shadow-color);
8
+ --search-local-hit-color: var(--ifm-font-color-base);
9
+ --search-local-highlight-color: var(--ifm-color-primary);
10
+ --search-local-muted-color: var(--ifm-font-color-base);
11
+ --search-local-hit-active-color: var(--ifm-background-color);
12
+ --search-local-input-active-border-color: var(--ifm-color-primary);
13
+ }
14
+
15
+ /* Hide keyboard shortcut hint */
16
+ .searchHintContainer_Pkmr {
17
+ display: none !important;
18
+ }
19
+
20
+ .navbar__search-input {
21
+ width: 130px;
22
+ font-size: 0.85rem;
23
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%23cdd6f4' d='M6.02945,10.20327a4.17382,4.17382,0,1,1,4.17382-4.17382A4.15609,4.15609,0,0,1,6.02945,10.20327Zm9.69195,4.2199L10.8989,9.59979A5.88021,5.88021,0,0,0,12.058,6.02856,6.00467,6.00467,0,1,0,9.59979,10.8989l4.82338,4.82338a.89729.89729,0,0,0,1.29912,0,.89749.89749,0,0,0-.00087-1.29909Z'/%3E%3C/svg%3E");
24
+ }
25
+
26
+ [data-theme="light"] .navbar__search-input {
27
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath fill='%234c4f69' d='M6.02945,10.20327a4.17382,4.17382,0,1,1,4.17382-4.17382A4.15609,4.15609,0,0,1,6.02945,10.20327Zm9.69195,4.2199L10.8989,9.59979A5.88021,5.88021,0,0,0,12.058,6.02856,6.00467,6.00467,0,1,0,9.59979,10.8989l4.82338,4.82338a.89729.89729,0,0,0,1.29912,0,.89749.89749,0,0,0-.00087-1.29909Z'/%3E%3C/svg%3E");
28
+ }
@@ -4,7 +4,7 @@
4
4
  **/
5
5
 
6
6
  /* Import fonts */
7
- @import url("https://fonts.googleapis.com/css2?family=Alata&family=DM+Serif+Display&display=swap");
7
+ @import "@fontsource-variable/lexend";
8
8
 
9
9
  :root {
10
10
  --ifm-heading-font-family: "Alata", system-ui, -apple-system, sans-serif;
@@ -7,6 +7,7 @@ import ProjectsSection from "../components/ProjectsSection/index.jsx";
7
7
  import ContactSection from "../components/ContactSection/index.jsx";
8
8
  import ExperienceSection from "../components/ExperienceSection/index.jsx";
9
9
  import NavArrow from "../components/NavArrow/index.jsx";
10
+ import ScrollToTop from "../components/ScrollToTop/index.jsx";
10
11
 
11
12
  export default function Home() {
12
13
  const { siteConfig } = useDocusaurusContext();
@@ -34,6 +35,7 @@ export default function Home() {
34
35
  <ExperienceSection id="experience" />
35
36
  <ContactSection id="contact" />
36
37
  <NavArrow />
38
+ <ScrollToTop />
37
39
  </main>
38
40
  </Layout>
39
41
  );
@@ -1,9 +1,9 @@
1
1
  import Layout from "@theme/Layout";
2
- import NoteCards from "../components/NoteIndex/index.jsx";
2
+ import NoteCards from "../components/NoteCards/index.jsx";
3
3
  import { usePluginData } from "@docusaurus/useGlobalData";
4
4
  import NavArrow from "../components/NavArrow/index.jsx";
5
5
  import HashNavigation from "../utils/HashNavigation.jsx";
6
-
6
+ import ScrollToTop from "../components/ScrollToTop/index.jsx";
7
7
  const style = {
8
8
  notesContainer: { padding: "2rem 0", maxWidth: "1200px", margin: "0 auto" },
9
9
  pageTitle: {
@@ -41,6 +41,7 @@ export default function Notes() {
41
41
  </header>
42
42
  <NoteCards />
43
43
  <NavArrow />
44
+ <ScrollToTop />
44
45
  <HashNavigation
45
46
  elementPrefix="note-"
46
47
  elementSelector=".note-card"