@knowcode/doc-builder 1.9.1 → 1.9.3

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 (49) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/CLAUDE.md +35 -0
  3. package/README.md +1 -0
  4. package/assets/css/notion-style.css +2 -2
  5. package/html/README.html +151 -33
  6. package/html/auth.js +4 -3
  7. package/html/css/notion-style.css +394 -13
  8. package/html/documentation-index.html +134 -10
  9. package/html/guides/authentication-default-change.html +132 -7
  10. package/html/guides/authentication-guide.html +143 -19
  11. package/html/guides/claude-workflow-guide.html +139 -22
  12. package/html/guides/documentation-standards.html +135 -11
  13. package/html/guides/html-embedding-guide.html +451 -0
  14. package/html/guides/image-modal-guide.html +134 -10
  15. package/html/guides/phosphor-icons-guide.html +152 -27
  16. package/html/guides/private-directory-authentication-troubleshooting.html +545 -0
  17. package/html/guides/private-directory-authentication.html +132 -7
  18. package/html/guides/public-site-deployment.html +132 -7
  19. package/html/guides/search-engine-verification-guide.html +132 -7
  20. package/html/guides/seo-guide.html +132 -7
  21. package/html/guides/seo-optimization-guide.html +161 -38
  22. package/html/guides/troubleshooting-guide.html +143 -19
  23. package/html/guides/windows-setup-guide.html +163 -38
  24. package/html/image-modal-test.html +127 -8
  25. package/html/index.html +151 -33
  26. package/html/js/auth.js +119 -39
  27. package/html/js/main.js +259 -25
  28. package/html/private/cache-control-anti-pattern.html +137 -12
  29. package/html/private/launch/README.html +146 -15
  30. package/html/private/launch/auth-cleanup-summary.html +155 -24
  31. package/html/private/launch/bubble-plugin-specification.html +138 -7
  32. package/html/private/launch/go-to-market-strategy.html +140 -9
  33. package/html/private/launch/launch-announcements.html +154 -24
  34. package/html/private/launch/vercel-deployment-auth-setup.html +140 -9
  35. package/html/private/next-steps-walkthrough.html +139 -14
  36. package/html/private/supabase-auth-implementation-completed.html +145 -21
  37. package/html/private/supabase-auth-implementation-plan.html +138 -14
  38. package/html/private/supabase-auth-integration-plan.html +144 -21
  39. package/html/private/supabase-auth-setup-guide.html +141 -16
  40. package/html/private/test-private-doc.html +132 -7
  41. package/html/private/user-management-tooling.html +132 -7
  42. package/html/prompts/markdown-document-standards.html +136 -12
  43. package/html/sitemap.xml +70 -46
  44. package/html/vercel-cli-setup-guide.html +130 -11
  45. package/html/vercel-first-time-setup-guide.html +127 -8
  46. package/lib/config.js +2 -0
  47. package/lib/emoji-mapper.js +2 -0
  48. package/lib/supabase-auth.js +4 -3
  49. package/package.json +1 -1
@@ -289,7 +289,8 @@ pre code {
289
289
  }
290
290
  }
291
291
 
292
- .logout-btn {
292
+ .logout-btn,
293
+ .auth-btn {
293
294
  background: none;
294
295
  border: none;
295
296
  font-size: var(--text-lg);
@@ -312,6 +313,13 @@ pre code {
312
313
  transform: translateY(-1px);
313
314
  }
314
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
+
315
323
  /* Sidebar */
316
324
  .sidebar {
317
325
  position: relative;
@@ -319,7 +327,7 @@ pre code {
319
327
  background: var(--color-bg-secondary);
320
328
  border-right: 1px solid var(--color-border-default);
321
329
  overflow: hidden;
322
- transition: width var(--duration-normal);
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;
@@ -330,6 +338,14 @@ pre code {
330
338
  height: 100%;
331
339
  }
332
340
 
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
+ }
347
+ }
348
+
333
349
  /* Banner adjustment no longer needed with relative positioning */
334
350
 
335
351
 
@@ -682,12 +698,65 @@ th {
682
698
  background: var(--color-bg-secondary);
683
699
  border-bottom: 1px solid var(--color-border-default);
684
700
  color: var(--color-text-primary);
701
+ vertical-align: top !important;
685
702
  }
686
703
 
687
704
  td {
688
705
  padding: var(--space-3) var(--space-4);
689
706
  border-bottom: 1px solid var(--color-border-default);
690
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;
691
760
  }
692
761
 
693
762
  tr:last-child td {
@@ -942,6 +1011,20 @@ tr:hover {
942
1011
  cursor: pointer;
943
1012
  color: var(--color-text-primary);
944
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
+ }
945
1028
  }
946
1029
 
947
1030
  /* Responsive Design */
@@ -954,19 +1037,39 @@ tr:hover {
954
1037
 
955
1038
  /* Hide sidebar on mobile */
956
1039
  .sidebar {
957
- position: absolute;
1040
+ position: fixed;
958
1041
  top: calc(var(--header-height) + var(--breadcrumb-height));
959
1042
  left: 0;
960
1043
  height: calc(100vh - var(--header-height) - var(--breadcrumb-height));
961
- z-index: 999;
1044
+ z-index: 1002; /* Above header and floating button */
962
1045
  transform: translateX(-100%);
963
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 */
964
1048
  }
965
1049
 
966
1050
  .sidebar.open {
967
1051
  transform: translateX(0);
968
1052
  }
969
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
+
970
1073
  .main-wrapper {
971
1074
  margin-left: 0;
972
1075
  margin-top: var(--header-height); /* Only account for fixed header on mobile */
@@ -974,7 +1077,7 @@ tr:hover {
974
1077
 
975
1078
  .content {
976
1079
  margin-left: 0;
977
- padding: var(--space-6) var(--space-4);
1080
+ padding: var(--space-3) var(--space-4); /* Reduced top/bottom padding on mobile */
978
1081
  }
979
1082
 
980
1083
  .menu-toggle {
@@ -988,13 +1091,13 @@ tr:hover {
988
1091
  padding: var(--space-4);
989
1092
  border-radius: var(--radius-lg);
990
1093
  overflow-x: auto;
991
- margin: var(--space-4) 0;
1094
+ margin: var(--space-2) 0;
992
1095
  }
993
1096
 
994
1097
  /* Mermaid Full Screen Viewer */
995
1098
  .mermaid-container {
996
1099
  position: relative;
997
- margin: var(--space-6) 0;
1100
+ margin: var(--space-3) 0;
998
1101
  border: 1px solid var(--color-border-default);
999
1102
  border-radius: var(--radius-lg);
1000
1103
  overflow: hidden;
@@ -1056,7 +1159,7 @@ tr:hover {
1056
1159
  }
1057
1160
 
1058
1161
  .mermaid-wrapper {
1059
- padding: var(--space-6);
1162
+ padding: var(--space-3);
1060
1163
  overflow: auto;
1061
1164
  max-height: 600px;
1062
1165
  }
@@ -1578,6 +1681,62 @@ tr:hover {
1578
1681
 
1579
1682
  /* Remove custom positioning variables - tooltips always go right */
1580
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
+
1581
1740
  /* Mobile adjustments */
1582
1741
  @media (max-width: 768px) {
1583
1742
  /* Disable tooltips on mobile to prevent overlap issues */
@@ -1596,7 +1755,7 @@ tr:hover {
1596
1755
  /* Sidebar positioning handled in earlier media query */
1597
1756
 
1598
1757
  .content {
1599
- padding: var(--space-4);
1758
+ padding: var(--space-3) var(--space-4); /* Consistent reduced padding on mobile */
1600
1759
  }
1601
1760
 
1602
1761
  .content-inner {
@@ -1609,10 +1768,7 @@ tr:hover {
1609
1768
  padding: 0 var(--space-4);
1610
1769
  }
1611
1770
 
1612
- .preview-banner {
1613
- position: relative;
1614
- top: 0;
1615
- }
1771
+ /* Keep preview banner fixed on mobile */
1616
1772
 
1617
1773
  /* Keep breadcrumbs fixed on mobile to prevent double spacing */
1618
1774
  }
@@ -1827,4 +1983,229 @@ tr:hover {
1827
1983
  background: #451a1a;
1828
1984
  border-color: #7f1d1d;
1829
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 has private access */
2056
+ body.has-private-access .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;
1830
2211
  }