@knowcode/doc-builder 1.8.7 → 1.9.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/.claude/settings.local.json +2 -1
- package/CHANGELOG.md +27 -0
- package/assets/css/notion-style.css +141 -0
- package/assets/js/main.js +76 -0
- package/html/README.html +10 -3
- package/html/css/notion-style.css +141 -0
- package/html/documentation-index.html +10 -3
- package/html/guides/authentication-default-change.html +10 -3
- package/html/guides/authentication-guide.html +10 -3
- package/html/guides/claude-workflow-guide.html +10 -3
- package/html/guides/documentation-standards.html +10 -3
- package/html/guides/phosphor-icons-guide.html +10 -3
- package/html/guides/private-directory-authentication.html +10 -3
- package/html/guides/public-site-deployment.html +10 -3
- package/html/guides/search-engine-verification-guide.html +10 -3
- package/html/guides/seo-guide.html +10 -3
- package/html/guides/seo-optimization-guide.html +10 -3
- package/html/guides/troubleshooting-guide.html +10 -3
- package/html/guides/windows-setup-guide.html +10 -3
- package/html/image-modal-test.html +305 -0
- package/html/index.html +10 -3
- package/html/js/main.js +76 -0
- package/html/private/cache-control-anti-pattern.html +10 -3
- package/html/private/launch/README.html +10 -3
- package/html/private/launch/auth-cleanup-summary.html +10 -3
- package/html/private/launch/bubble-plugin-specification.html +10 -3
- package/html/private/launch/go-to-market-strategy.html +10 -3
- package/html/private/launch/launch-announcements.html +10 -3
- package/html/private/launch/vercel-deployment-auth-setup.html +10 -3
- package/html/private/next-steps-walkthrough.html +11 -4
- package/html/private/supabase-auth-implementation-completed.html +10 -3
- package/html/private/supabase-auth-implementation-plan.html +10 -3
- package/html/private/supabase-auth-integration-plan.html +10 -3
- package/html/private/supabase-auth-setup-guide.html +10 -3
- package/html/private/test-private-doc.html +10 -3
- package/html/private/user-management-tooling.html +10 -3
- package/html/prompts/markdown-document-standards.html +409 -0
- package/html/sitemap.xml +56 -44
- package/html/vercel-cli-setup-guide.html +10 -3
- package/html/vercel-first-time-setup-guide.html +10 -3
- package/lib/core-builder.js +1 -0
- package/lib/emoji-mapper.js +13 -0
- package/package/assets/css/notion-style.css +432 -135
- package/package/assets/js/main.js +259 -25
- package/package.json +1 -1
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
--container-padding-mobile: 20px;
|
|
127
127
|
--container-padding-desktop: 40px;
|
|
128
128
|
--header-height: 40px;
|
|
129
|
-
--breadcrumb-height:
|
|
129
|
+
--breadcrumb-height: 40px;
|
|
130
130
|
--sidebar-width: 280px;
|
|
131
131
|
}
|
|
132
132
|
|
|
@@ -158,6 +158,9 @@ h1 {
|
|
|
158
158
|
font-size: var(--text-4xl);
|
|
159
159
|
font-weight: var(--font-bold);
|
|
160
160
|
margin-bottom: var(--space-6);
|
|
161
|
+
margin-left: calc(-1 * var(--space-8));
|
|
162
|
+
margin-right: calc(-1 * var(--space-8));
|
|
163
|
+
padding: 0 var(--space-8);
|
|
161
164
|
}
|
|
162
165
|
|
|
163
166
|
h2 {
|
|
@@ -286,7 +289,8 @@ pre code {
|
|
|
286
289
|
}
|
|
287
290
|
}
|
|
288
291
|
|
|
289
|
-
.logout-btn
|
|
292
|
+
.logout-btn,
|
|
293
|
+
.auth-btn {
|
|
290
294
|
background: none;
|
|
291
295
|
border: none;
|
|
292
296
|
font-size: var(--text-lg);
|
|
@@ -309,40 +313,41 @@ pre code {
|
|
|
309
313
|
transform: translateY(-1px);
|
|
310
314
|
}
|
|
311
315
|
|
|
316
|
+
.auth-btn:hover {
|
|
317
|
+
background: var(--color-bg-tertiary);
|
|
318
|
+
opacity: 1;
|
|
319
|
+
color: var(--color-text-primary);
|
|
320
|
+
transform: translateY(-1px);
|
|
321
|
+
}
|
|
322
|
+
|
|
312
323
|
/* Sidebar */
|
|
313
324
|
.sidebar {
|
|
314
|
-
position:
|
|
315
|
-
left: 0;
|
|
316
|
-
top: calc(var(--header-height) + var(--breadcrumb-height));
|
|
317
|
-
bottom: 0;
|
|
325
|
+
position: relative;
|
|
318
326
|
width: var(--sidebar-width);
|
|
319
327
|
background: var(--color-bg-secondary);
|
|
320
328
|
border-right: 1px solid var(--color-border-default);
|
|
321
329
|
overflow: hidden;
|
|
322
|
-
transition:
|
|
330
|
+
transition: width var(--duration-normal), transform 0.3s ease, margin-left 0.3s ease;
|
|
323
331
|
min-width: 200px;
|
|
324
332
|
max-width: 500px;
|
|
325
333
|
user-select: none;
|
|
326
334
|
display: flex;
|
|
327
335
|
flex-direction: column;
|
|
328
336
|
z-index: 100;
|
|
337
|
+
flex-shrink: 0;
|
|
338
|
+
height: 100%;
|
|
329
339
|
}
|
|
330
340
|
|
|
331
|
-
/*
|
|
332
|
-
|
|
333
|
-
|
|
341
|
+
/* Desktop sidebar closed state */
|
|
342
|
+
@media (min-width: 769px) {
|
|
343
|
+
.sidebar.closed {
|
|
344
|
+
transform: translateX(-100%);
|
|
345
|
+
margin-left: calc(var(--sidebar-width) * -1);
|
|
346
|
+
}
|
|
334
347
|
}
|
|
335
348
|
|
|
336
|
-
|
|
337
|
-
padding: var(--space-4);
|
|
338
|
-
border-bottom: 1px solid var(--color-border-default);
|
|
339
|
-
margin-bottom: var(--space-4);
|
|
340
|
-
}
|
|
349
|
+
/* Banner adjustment no longer needed with relative positioning */
|
|
341
350
|
|
|
342
|
-
/* Sidebar Breadcrumbs */
|
|
343
|
-
.sidebar-breadcrumbs {
|
|
344
|
-
margin-bottom: var(--space-3);
|
|
345
|
-
}
|
|
346
351
|
|
|
347
352
|
.sidebar-home-link {
|
|
348
353
|
display: inline-flex;
|
|
@@ -454,26 +459,7 @@ pre code {
|
|
|
454
459
|
color: var(--color-text-primary);
|
|
455
460
|
}
|
|
456
461
|
|
|
457
|
-
/* Breadcrumbs */
|
|
458
|
-
.breadcrumbs {
|
|
459
|
-
background: var(--color-bg-default);
|
|
460
|
-
border-bottom: 1px solid var(--color-border-default);
|
|
461
|
-
padding: var(--space-2) 0;
|
|
462
|
-
position: fixed;
|
|
463
|
-
top: calc(var(--header-height) + 3.5rem);
|
|
464
|
-
left: 0;
|
|
465
|
-
right: 0;
|
|
466
|
-
z-index: 900;
|
|
467
|
-
transition: top var(--duration-normal);
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
.breadcrumbs.banner-visible {
|
|
471
|
-
top: calc(var(--header-height) + 3.5rem);
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
.breadcrumbs:not(.banner-visible) {
|
|
475
|
-
top: var(--header-height);
|
|
476
|
-
}
|
|
462
|
+
/* Breadcrumbs - definition moved to line 888 to avoid duplication */
|
|
477
463
|
|
|
478
464
|
.breadcrumb-item {
|
|
479
465
|
display: inline-flex;
|
|
@@ -516,56 +502,12 @@ pre code {
|
|
|
516
502
|
margin-top: calc(var(--header-height) + var(--breadcrumb-height) + 3.5rem);
|
|
517
503
|
}
|
|
518
504
|
|
|
519
|
-
/* Sidebar */
|
|
520
|
-
.sidebar {
|
|
521
|
-
width: var(--sidebar-width);
|
|
522
|
-
background: var(--color-bg-secondary);
|
|
523
|
-
border-right: 1px solid var(--color-border-default);
|
|
524
|
-
display: flex;
|
|
525
|
-
flex-direction: column;
|
|
526
|
-
position: relative;
|
|
527
|
-
}
|
|
528
|
-
|
|
529
505
|
.sidebar-header {
|
|
530
506
|
padding: var(--space-3);
|
|
531
507
|
border-bottom: 1px solid var(--color-border-default);
|
|
532
|
-
margin-bottom:
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
/* Already defined above, but ensure consistency */
|
|
536
|
-
.sidebar-breadcrumbs {
|
|
537
|
-
margin-bottom: var(--space-3);
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
.filter-box {
|
|
541
|
-
position: relative;
|
|
542
|
-
display: flex;
|
|
543
|
-
align-items: center;
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
.filter-input {
|
|
547
|
-
width: 100%;
|
|
548
|
-
padding: var(--space-2) var(--space-8) var(--space-2) var(--space-3);
|
|
549
|
-
border: 1px solid var(--color-border-default);
|
|
550
|
-
border-radius: var(--radius-md);
|
|
551
|
-
background: var(--color-bg-default);
|
|
552
|
-
color: var(--color-text-primary);
|
|
553
|
-
font-size: var(--text-sm);
|
|
554
|
-
transition: all var(--duration-fast);
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
.filter-input:focus {
|
|
558
|
-
outline: none;
|
|
559
|
-
border-color: var(--color-border-focus);
|
|
560
|
-
box-shadow: 0 0 0 2px var(--color-accent-blue-bg);
|
|
508
|
+
margin-bottom: 0;
|
|
561
509
|
}
|
|
562
510
|
|
|
563
|
-
.filter-icon {
|
|
564
|
-
position: absolute;
|
|
565
|
-
right: var(--space-3);
|
|
566
|
-
color: var(--color-text-tertiary);
|
|
567
|
-
pointer-events: none;
|
|
568
|
-
}
|
|
569
511
|
|
|
570
512
|
/* Navigation */
|
|
571
513
|
.navigation {
|
|
@@ -725,18 +667,6 @@ pre code {
|
|
|
725
667
|
}
|
|
726
668
|
|
|
727
669
|
/* Main Content */
|
|
728
|
-
.main-wrapper {
|
|
729
|
-
display: flex;
|
|
730
|
-
padding-top: calc(var(--header-height) + var(--breadcrumb-height));
|
|
731
|
-
min-height: 100vh;
|
|
732
|
-
transition: padding-top var(--duration-normal);
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
/* Adjust layout when banner is visible */
|
|
736
|
-
.main-wrapper.banner-visible {
|
|
737
|
-
padding-top: calc(var(--header-height) + var(--breadcrumb-height) + 3.5rem);
|
|
738
|
-
}
|
|
739
|
-
|
|
740
670
|
.content {
|
|
741
671
|
flex: 1;
|
|
742
672
|
padding: 40px var(--space-8);
|
|
@@ -768,12 +698,65 @@ th {
|
|
|
768
698
|
background: var(--color-bg-secondary);
|
|
769
699
|
border-bottom: 1px solid var(--color-border-default);
|
|
770
700
|
color: var(--color-text-primary);
|
|
701
|
+
vertical-align: top !important;
|
|
771
702
|
}
|
|
772
703
|
|
|
773
704
|
td {
|
|
774
705
|
padding: var(--space-3) var(--space-4);
|
|
775
706
|
border-bottom: 1px solid var(--color-border-default);
|
|
776
707
|
color: var(--color-text-primary);
|
|
708
|
+
vertical-align: top !important;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
/* Ensure all table cell content is top-aligned */
|
|
712
|
+
table th,
|
|
713
|
+
table td {
|
|
714
|
+
vertical-align: top !important;
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
/* Ensure nested elements in table cells don't affect alignment */
|
|
718
|
+
table td > *,
|
|
719
|
+
table th > * {
|
|
720
|
+
vertical-align: top;
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
/* Remove top margin from first element in table cells */
|
|
724
|
+
td > *:first-child,
|
|
725
|
+
th > *:first-child {
|
|
726
|
+
margin-top: 0 !important;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
/* Remove bottom margin from last element in table cells */
|
|
730
|
+
td > *:last-child,
|
|
731
|
+
th > *:last-child {
|
|
732
|
+
margin-bottom: 0 !important;
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
/* Specifically target common block elements that might be first in cells */
|
|
736
|
+
td > h1:first-child,
|
|
737
|
+
td > h2:first-child,
|
|
738
|
+
td > h3:first-child,
|
|
739
|
+
td > h4:first-child,
|
|
740
|
+
td > h5:first-child,
|
|
741
|
+
td > h6:first-child,
|
|
742
|
+
td > p:first-child,
|
|
743
|
+
td > ul:first-child,
|
|
744
|
+
td > ol:first-child,
|
|
745
|
+
td > blockquote:first-child,
|
|
746
|
+
td > pre:first-child,
|
|
747
|
+
th > h1:first-child,
|
|
748
|
+
th > h2:first-child,
|
|
749
|
+
th > h3:first-child,
|
|
750
|
+
th > h4:first-child,
|
|
751
|
+
th > h5:first-child,
|
|
752
|
+
th > h6:first-child,
|
|
753
|
+
th > p:first-child,
|
|
754
|
+
th > ul:first-child,
|
|
755
|
+
th > ol:first-child,
|
|
756
|
+
th > blockquote:first-child,
|
|
757
|
+
th > pre:first-child {
|
|
758
|
+
margin-top: 0 !important;
|
|
759
|
+
padding-top: 0 !important;
|
|
777
760
|
}
|
|
778
761
|
|
|
779
762
|
tr:last-child td {
|
|
@@ -966,10 +949,18 @@ tr:hover {
|
|
|
966
949
|
right: 0;
|
|
967
950
|
height: var(--breadcrumb-height);
|
|
968
951
|
z-index: 900;
|
|
969
|
-
transition: background-color var(--duration-normal);
|
|
952
|
+
transition: top var(--duration-normal), background-color var(--duration-normal);
|
|
970
953
|
gap: var(--space-2);
|
|
971
954
|
}
|
|
972
955
|
|
|
956
|
+
.breadcrumbs.banner-visible {
|
|
957
|
+
top: calc(var(--header-height) + 3.5rem);
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
.breadcrumbs:not(.banner-visible) {
|
|
961
|
+
top: var(--header-height);
|
|
962
|
+
}
|
|
963
|
+
|
|
973
964
|
.breadcrumb-item {
|
|
974
965
|
display: flex;
|
|
975
966
|
align-items: center;
|
|
@@ -1009,10 +1000,7 @@ tr:hover {
|
|
|
1009
1000
|
opacity: 1;
|
|
1010
1001
|
}
|
|
1011
1002
|
|
|
1012
|
-
/*
|
|
1013
|
-
.breadcrumbs.banner-visible {
|
|
1014
|
-
top: calc(var(--header-height) + 3.5rem);
|
|
1015
|
-
}
|
|
1003
|
+
/* Banner visibility handled in main breadcrumbs definition */
|
|
1016
1004
|
|
|
1017
1005
|
/* Menu Toggle (Mobile) */
|
|
1018
1006
|
.menu-toggle {
|
|
@@ -1023,26 +1011,73 @@ tr:hover {
|
|
|
1023
1011
|
cursor: pointer;
|
|
1024
1012
|
color: var(--color-text-primary);
|
|
1025
1013
|
padding: var(--space-2);
|
|
1014
|
+
border-radius: var(--radius-small);
|
|
1015
|
+
transition: all var(--duration-fast) var(--easing-out);
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
.menu-toggle:hover {
|
|
1019
|
+
background: var(--color-bg-secondary);
|
|
1020
|
+
color: var(--color-text-primary);
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
/* Show menu toggle on desktop when menu starts closed or is closed */
|
|
1024
|
+
@media (min-width: 769px) {
|
|
1025
|
+
body.menu-starts-closed .menu-toggle {
|
|
1026
|
+
display: block;
|
|
1027
|
+
}
|
|
1026
1028
|
}
|
|
1027
1029
|
|
|
1028
1030
|
/* Responsive Design */
|
|
1029
|
-
|
|
1031
|
+
/* Keep sidebar visible on tablets, hide only on mobile */
|
|
1032
|
+
|
|
1033
|
+
@media (max-width: 768px) {
|
|
1034
|
+
.header-content {
|
|
1035
|
+
padding: 0 var(--space-4);
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
/* Hide sidebar on mobile */
|
|
1030
1039
|
.sidebar {
|
|
1040
|
+
position: fixed;
|
|
1041
|
+
top: calc(var(--header-height) + var(--breadcrumb-height));
|
|
1042
|
+
left: 0;
|
|
1043
|
+
height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
|
|
1044
|
+
z-index: 1002; /* Above header and floating button */
|
|
1031
1045
|
transform: translateX(-100%);
|
|
1032
1046
|
transition: transform var(--duration-normal) var(--easing-out);
|
|
1047
|
+
box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15); /* Add shadow for depth */
|
|
1033
1048
|
}
|
|
1034
1049
|
|
|
1035
1050
|
.sidebar.open {
|
|
1036
1051
|
transform: translateX(0);
|
|
1037
1052
|
}
|
|
1038
1053
|
|
|
1054
|
+
/* Mobile menu overlay */
|
|
1055
|
+
.sidebar-overlay {
|
|
1056
|
+
display: none;
|
|
1057
|
+
position: fixed;
|
|
1058
|
+
top: 0;
|
|
1059
|
+
left: 0;
|
|
1060
|
+
right: 0;
|
|
1061
|
+
bottom: 0;
|
|
1062
|
+
background: rgba(0, 0, 0, 0.5);
|
|
1063
|
+
z-index: 1001; /* Below sidebar but above content */
|
|
1064
|
+
opacity: 0;
|
|
1065
|
+
transition: opacity var(--duration-normal);
|
|
1066
|
+
}
|
|
1067
|
+
|
|
1068
|
+
.sidebar-overlay.active {
|
|
1069
|
+
display: block;
|
|
1070
|
+
opacity: 1;
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1039
1073
|
.main-wrapper {
|
|
1040
1074
|
margin-left: 0;
|
|
1075
|
+
margin-top: var(--header-height); /* Only account for fixed header on mobile */
|
|
1041
1076
|
}
|
|
1042
1077
|
|
|
1043
1078
|
.content {
|
|
1044
1079
|
margin-left: 0;
|
|
1045
|
-
padding: var(--space-
|
|
1080
|
+
padding: var(--space-3) var(--space-4); /* Reduced top/bottom padding on mobile */
|
|
1046
1081
|
}
|
|
1047
1082
|
|
|
1048
1083
|
.menu-toggle {
|
|
@@ -1050,34 +1085,19 @@ tr:hover {
|
|
|
1050
1085
|
}
|
|
1051
1086
|
}
|
|
1052
1087
|
|
|
1053
|
-
@media (max-width: 768px) {
|
|
1054
|
-
.header-content {
|
|
1055
|
-
padding: 0 var(--space-4);
|
|
1056
|
-
}
|
|
1057
|
-
|
|
1058
|
-
/* Adjust mobile layout when banner is visible */
|
|
1059
|
-
.main-wrapper.banner-visible {
|
|
1060
|
-
padding-top: calc(var(--header-height) + var(--breadcrumb-height) + 4rem);
|
|
1061
|
-
}
|
|
1062
|
-
|
|
1063
|
-
.sidebar.banner-visible {
|
|
1064
|
-
top: calc(var(--header-height) + var(--breadcrumb-height) + 4rem);
|
|
1065
|
-
}
|
|
1066
|
-
}
|
|
1067
|
-
|
|
1068
1088
|
/* Mermaid Diagrams */
|
|
1069
1089
|
.mermaid {
|
|
1070
1090
|
background: var(--color-bg-secondary);
|
|
1071
1091
|
padding: var(--space-4);
|
|
1072
1092
|
border-radius: var(--radius-lg);
|
|
1073
1093
|
overflow-x: auto;
|
|
1074
|
-
margin: var(--space-
|
|
1094
|
+
margin: var(--space-2) 0;
|
|
1075
1095
|
}
|
|
1076
1096
|
|
|
1077
1097
|
/* Mermaid Full Screen Viewer */
|
|
1078
1098
|
.mermaid-container {
|
|
1079
1099
|
position: relative;
|
|
1080
|
-
margin: var(--space-
|
|
1100
|
+
margin: var(--space-3) 0;
|
|
1081
1101
|
border: 1px solid var(--color-border-default);
|
|
1082
1102
|
border-radius: var(--radius-lg);
|
|
1083
1103
|
overflow: hidden;
|
|
@@ -1139,7 +1159,7 @@ tr:hover {
|
|
|
1139
1159
|
}
|
|
1140
1160
|
|
|
1141
1161
|
.mermaid-wrapper {
|
|
1142
|
-
padding: var(--space-
|
|
1162
|
+
padding: var(--space-3);
|
|
1143
1163
|
overflow: auto;
|
|
1144
1164
|
max-height: 600px;
|
|
1145
1165
|
}
|
|
@@ -1661,6 +1681,62 @@ tr:hover {
|
|
|
1661
1681
|
|
|
1662
1682
|
/* Remove custom positioning variables - tooltips always go right */
|
|
1663
1683
|
|
|
1684
|
+
/* Floating Menu Button */
|
|
1685
|
+
.floating-menu-toggle {
|
|
1686
|
+
position: fixed;
|
|
1687
|
+
bottom: var(--space-6);
|
|
1688
|
+
right: var(--space-6);
|
|
1689
|
+
width: 56px;
|
|
1690
|
+
height: 56px;
|
|
1691
|
+
border-radius: 50%;
|
|
1692
|
+
background: var(--color-accent-blue);
|
|
1693
|
+
color: white;
|
|
1694
|
+
border: none;
|
|
1695
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
1696
|
+
display: flex;
|
|
1697
|
+
align-items: center;
|
|
1698
|
+
justify-content: center;
|
|
1699
|
+
font-size: 1.25rem;
|
|
1700
|
+
cursor: pointer;
|
|
1701
|
+
z-index: 1001; /* Above sidebar */
|
|
1702
|
+
opacity: 0;
|
|
1703
|
+
transform: scale(0.8) translateY(20px);
|
|
1704
|
+
transition: all var(--duration-normal) var(--easing-out);
|
|
1705
|
+
-webkit-tap-highlight-color: transparent;
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1708
|
+
.floating-menu-toggle.visible {
|
|
1709
|
+
opacity: 1;
|
|
1710
|
+
transform: scale(1) translateY(0);
|
|
1711
|
+
}
|
|
1712
|
+
|
|
1713
|
+
.floating-menu-toggle:hover {
|
|
1714
|
+
transform: scale(1.1) translateY(0);
|
|
1715
|
+
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 3px 6px rgba(0, 0, 0, 0.15);
|
|
1716
|
+
}
|
|
1717
|
+
|
|
1718
|
+
.floating-menu-toggle:active {
|
|
1719
|
+
transform: scale(0.95) translateY(0);
|
|
1720
|
+
}
|
|
1721
|
+
|
|
1722
|
+
.floating-menu-toggle i {
|
|
1723
|
+
transition: transform var(--duration-fast) var(--easing-out);
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1726
|
+
.floating-menu-toggle:hover i {
|
|
1727
|
+
transform: rotate(90deg);
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
/* Dark mode styles for floating button */
|
|
1731
|
+
.dark-mode .floating-menu-toggle {
|
|
1732
|
+
background: var(--color-accent-blue);
|
|
1733
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
1734
|
+
}
|
|
1735
|
+
|
|
1736
|
+
.dark-mode .floating-menu-toggle:hover {
|
|
1737
|
+
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4), 0 3px 6px rgba(0, 0, 0, 0.3);
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1664
1740
|
/* Mobile adjustments */
|
|
1665
1741
|
@media (max-width: 768px) {
|
|
1666
1742
|
/* Disable tooltips on mobile to prevent overlap issues */
|
|
@@ -1673,32 +1749,28 @@ tr:hover {
|
|
|
1673
1749
|
flex-direction: column;
|
|
1674
1750
|
height: auto;
|
|
1675
1751
|
min-height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
|
|
1752
|
+
margin-top: calc(var(--header-height) + var(--breadcrumb-height)); /* Account for both fixed elements */
|
|
1676
1753
|
}
|
|
1677
1754
|
|
|
1678
|
-
|
|
1679
|
-
width: 100%;
|
|
1680
|
-
max-height: 250px;
|
|
1681
|
-
border-right: none;
|
|
1682
|
-
border-bottom: 1px solid var(--color-border-default);
|
|
1683
|
-
}
|
|
1755
|
+
/* Sidebar positioning handled in earlier media query */
|
|
1684
1756
|
|
|
1685
1757
|
.content {
|
|
1686
|
-
padding: var(--space-4);
|
|
1758
|
+
padding: var(--space-3) var(--space-4); /* Consistent reduced padding on mobile */
|
|
1687
1759
|
}
|
|
1688
1760
|
|
|
1689
1761
|
.content-inner {
|
|
1690
1762
|
max-width: none;
|
|
1691
1763
|
}
|
|
1692
1764
|
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1765
|
+
h1 {
|
|
1766
|
+
margin-left: calc(-1 * var(--space-4));
|
|
1767
|
+
margin-right: calc(-1 * var(--space-4));
|
|
1768
|
+
padding: 0 var(--space-4);
|
|
1696
1769
|
}
|
|
1697
1770
|
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
}
|
|
1771
|
+
/* Keep preview banner fixed on mobile */
|
|
1772
|
+
|
|
1773
|
+
/* Keep breadcrumbs fixed on mobile to prevent double spacing */
|
|
1702
1774
|
}
|
|
1703
1775
|
|
|
1704
1776
|
/* Navigation Sections */
|
|
@@ -1911,4 +1983,229 @@ tr:hover {
|
|
|
1911
1983
|
background: #451a1a;
|
|
1912
1984
|
border-color: #7f1d1d;
|
|
1913
1985
|
color: #fca5a5;
|
|
1986
|
+
}
|
|
1987
|
+
|
|
1988
|
+
/* Phosphor Icons Alignment */
|
|
1989
|
+
.ph {
|
|
1990
|
+
display: inline-block;
|
|
1991
|
+
vertical-align: middle;
|
|
1992
|
+
line-height: 1;
|
|
1993
|
+
position: relative;
|
|
1994
|
+
top: -0.05em; /* Slight upward adjustment for better baseline alignment */
|
|
1995
|
+
}
|
|
1996
|
+
|
|
1997
|
+
/* Ensure icons in headings are properly aligned */
|
|
1998
|
+
h1 .ph, h2 .ph, h3 .ph, h4 .ph, h5 .ph, h6 .ph {
|
|
1999
|
+
font-size: 0.85em; /* Slightly smaller in headings */
|
|
2000
|
+
line-height: 1;
|
|
2001
|
+
top: -0.05em;
|
|
2002
|
+
}
|
|
2003
|
+
|
|
2004
|
+
/* Icons in lists need special handling */
|
|
2005
|
+
li .ph {
|
|
2006
|
+
margin-right: 0.3em;
|
|
2007
|
+
font-size: 1.1em;
|
|
2008
|
+
line-height: 1;
|
|
2009
|
+
vertical-align: middle;
|
|
2010
|
+
top: -0.05em;
|
|
2011
|
+
}
|
|
2012
|
+
|
|
2013
|
+
/* Icons in tables */
|
|
2014
|
+
td .ph, th .ph {
|
|
2015
|
+
line-height: 1;
|
|
2016
|
+
vertical-align: middle;
|
|
2017
|
+
top: -0.05em;
|
|
2018
|
+
}
|
|
2019
|
+
|
|
2020
|
+
/* Icons in navigation */
|
|
2021
|
+
.nav-item .ph,
|
|
2022
|
+
.nav-title .ph {
|
|
2023
|
+
vertical-align: middle;
|
|
2024
|
+
line-height: 1;
|
|
2025
|
+
top: 0; /* Navigation items are flex, so no adjustment needed */
|
|
2026
|
+
}
|
|
2027
|
+
|
|
2028
|
+
/* Icon size adjustments for better visual balance */
|
|
2029
|
+
.content p .ph {
|
|
2030
|
+
font-size: 1.1em; /* Slightly larger than text for visual balance */
|
|
2031
|
+
}
|
|
2032
|
+
|
|
2033
|
+
/* Special handling for inline code with icons */
|
|
2034
|
+
code .ph {
|
|
2035
|
+
font-size: 0.9em;
|
|
2036
|
+
vertical-align: middle;
|
|
2037
|
+
line-height: 1;
|
|
2038
|
+
top: 0;
|
|
2039
|
+
}
|
|
2040
|
+
|
|
2041
|
+
/* Additional fine-tuning for specific contexts */
|
|
2042
|
+
.content-inner .ph {
|
|
2043
|
+
/* Remove the transform as we're now using consistent vertical-align: middle */
|
|
2044
|
+
}
|
|
2045
|
+
|
|
2046
|
+
/* ============================================================================
|
|
2047
|
+
Private Navigation Visibility
|
|
2048
|
+
============================================================================ */
|
|
2049
|
+
|
|
2050
|
+
/* Hide private navigation sections by default */
|
|
2051
|
+
.private-nav {
|
|
2052
|
+
display: none;
|
|
2053
|
+
}
|
|
2054
|
+
|
|
2055
|
+
/* Show private navigation when user is authenticated */
|
|
2056
|
+
body.authenticated .private-nav {
|
|
2057
|
+
display: block;
|
|
2058
|
+
}
|
|
2059
|
+
|
|
2060
|
+
/* Smooth transition for authentication state changes */
|
|
2061
|
+
.nav-section {
|
|
2062
|
+
transition: opacity 0.2s ease-in-out;
|
|
2063
|
+
}
|
|
2064
|
+
|
|
2065
|
+
/* Optional: Add a lock icon to private sections */
|
|
2066
|
+
.private-nav .nav-title::after {
|
|
2067
|
+
content: ' 🔒';
|
|
2068
|
+
font-size: 0.8em;
|
|
2069
|
+
}
|
|
2070
|
+
|
|
2071
|
+
/* ============================================================================
|
|
2072
|
+
Image Modal System
|
|
2073
|
+
============================================================================ */
|
|
2074
|
+
|
|
2075
|
+
/* Style all content images to be clickable */
|
|
2076
|
+
.content img {
|
|
2077
|
+
cursor: pointer;
|
|
2078
|
+
transition: all var(--duration-normal) var(--easing-out);
|
|
2079
|
+
border-radius: var(--radius-md);
|
|
2080
|
+
max-width: 100%;
|
|
2081
|
+
height: auto;
|
|
2082
|
+
}
|
|
2083
|
+
|
|
2084
|
+
.content img:hover {
|
|
2085
|
+
opacity: 0.9;
|
|
2086
|
+
transform: scale(1.02);
|
|
2087
|
+
box-shadow: var(--shadow-lg);
|
|
2088
|
+
}
|
|
2089
|
+
|
|
2090
|
+
/* Modal overlay - hidden by default */
|
|
2091
|
+
.image-modal {
|
|
2092
|
+
display: none;
|
|
2093
|
+
position: fixed;
|
|
2094
|
+
top: 0;
|
|
2095
|
+
left: 0;
|
|
2096
|
+
width: 100%;
|
|
2097
|
+
height: 100%;
|
|
2098
|
+
background: rgba(0, 0, 0, 0.9);
|
|
2099
|
+
z-index: 10000;
|
|
2100
|
+
cursor: pointer;
|
|
2101
|
+
opacity: 0;
|
|
2102
|
+
transition: opacity var(--duration-normal) var(--easing-out);
|
|
2103
|
+
}
|
|
2104
|
+
|
|
2105
|
+
/* Show modal when active */
|
|
2106
|
+
.image-modal.active {
|
|
2107
|
+
display: flex;
|
|
2108
|
+
align-items: center;
|
|
2109
|
+
justify-content: center;
|
|
2110
|
+
opacity: 1;
|
|
2111
|
+
}
|
|
2112
|
+
|
|
2113
|
+
/* Modal content container */
|
|
2114
|
+
.image-modal-content {
|
|
2115
|
+
position: relative;
|
|
2116
|
+
max-width: 95%;
|
|
2117
|
+
max-height: 95%;
|
|
2118
|
+
margin: auto;
|
|
2119
|
+
cursor: default;
|
|
2120
|
+
}
|
|
2121
|
+
|
|
2122
|
+
/* Modal image */
|
|
2123
|
+
.image-modal-img {
|
|
2124
|
+
width: auto;
|
|
2125
|
+
height: auto;
|
|
2126
|
+
max-width: 100%;
|
|
2127
|
+
max-height: 100vh;
|
|
2128
|
+
border-radius: var(--radius-lg);
|
|
2129
|
+
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
|
|
2130
|
+
cursor: default;
|
|
2131
|
+
}
|
|
2132
|
+
|
|
2133
|
+
/* Close button */
|
|
2134
|
+
.image-modal-close {
|
|
2135
|
+
position: absolute;
|
|
2136
|
+
top: -50px;
|
|
2137
|
+
right: 0;
|
|
2138
|
+
background: rgba(255, 255, 255, 0.1);
|
|
2139
|
+
border: 2px solid rgba(255, 255, 255, 0.3);
|
|
2140
|
+
color: white;
|
|
2141
|
+
width: 40px;
|
|
2142
|
+
height: 40px;
|
|
2143
|
+
border-radius: 50%;
|
|
2144
|
+
cursor: pointer;
|
|
2145
|
+
display: flex;
|
|
2146
|
+
align-items: center;
|
|
2147
|
+
justify-content: center;
|
|
2148
|
+
font-size: 20px;
|
|
2149
|
+
font-weight: bold;
|
|
2150
|
+
transition: all var(--duration-fast) var(--easing-out);
|
|
2151
|
+
backdrop-filter: blur(10px);
|
|
2152
|
+
}
|
|
2153
|
+
|
|
2154
|
+
.image-modal-close:hover {
|
|
2155
|
+
background: rgba(255, 255, 255, 0.2);
|
|
2156
|
+
border-color: rgba(255, 255, 255, 0.5);
|
|
2157
|
+
transform: scale(1.1);
|
|
2158
|
+
}
|
|
2159
|
+
|
|
2160
|
+
/* Image caption in modal */
|
|
2161
|
+
.image-modal-caption {
|
|
2162
|
+
position: absolute;
|
|
2163
|
+
bottom: -50px;
|
|
2164
|
+
left: 0;
|
|
2165
|
+
right: 0;
|
|
2166
|
+
background: rgba(0, 0, 0, 0.7);
|
|
2167
|
+
color: white;
|
|
2168
|
+
padding: var(--space-3) var(--space-4);
|
|
2169
|
+
border-radius: var(--radius-md);
|
|
2170
|
+
font-size: var(--text-sm);
|
|
2171
|
+
text-align: center;
|
|
2172
|
+
backdrop-filter: blur(10px);
|
|
2173
|
+
}
|
|
2174
|
+
|
|
2175
|
+
/* Dark theme adjustments */
|
|
2176
|
+
[data-theme="dark"] .image-modal {
|
|
2177
|
+
background: rgba(0, 0, 0, 0.95);
|
|
2178
|
+
}
|
|
2179
|
+
|
|
2180
|
+
[data-theme="dark"] .image-modal-close {
|
|
2181
|
+
background: rgba(255, 255, 255, 0.15);
|
|
2182
|
+
border-color: rgba(255, 255, 255, 0.4);
|
|
2183
|
+
}
|
|
2184
|
+
|
|
2185
|
+
[data-theme="dark"] .image-modal-close:hover {
|
|
2186
|
+
background: rgba(255, 255, 255, 0.25);
|
|
2187
|
+
border-color: rgba(255, 255, 255, 0.6);
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
/* Mobile responsive adjustments */
|
|
2191
|
+
@media (max-width: 768px) {
|
|
2192
|
+
.image-modal-content {
|
|
2193
|
+
max-width: 98%;
|
|
2194
|
+
max-height: 98%;
|
|
2195
|
+
}
|
|
2196
|
+
|
|
2197
|
+
.image-modal-close {
|
|
2198
|
+
top: -40px;
|
|
2199
|
+
width: 35px;
|
|
2200
|
+
height: 35px;
|
|
2201
|
+
font-size: 18px;
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2204
|
+
.image-modal-caption {
|
|
2205
|
+
bottom: -40px;
|
|
2206
|
+
font-size: var(--text-xs);
|
|
2207
|
+
padding: var(--space-2) var(--space-3);
|
|
2208
|
+
}
|
|
2209
|
+
}
|
|
2210
|
+
opacity: 0.6;
|
|
1914
2211
|
}
|